Azure SQL Yönetilen Örneği'de bellek içi teknolojileri kullanarak performansı iyileştirme

Şunlar için geçerlidir: Azure SQL Yönetilen Örneği

Bellek içi teknolojiler uygulamanızın performansını artırmanıza ve SQL yönetilen örneğinizin maliyetini azaltmanıza olanak tanır. Bellek içi OLTP, Azure SQL Yönetilen Örneği İş Açısından Kritik hizmet katmanında kullanılabilir.

Bellek içi teknolojiler ne zaman kullanılır?

Bellek içi teknolojileri kullanarak çeşitli iş yükleriyle performans geliştirmeleri elde edebilirsiniz:

  • İsteklerin çoğunun daha küçük veri kümesini okuduğu veya güncelleştirdiği işlemsel (çevrimiçi işlem işleme (OLTP)), örneğin oluşturma/okuma/güncelleştirme/silme (CRUD) işlemleri.
  • Sorguların çoğunun raporlama amacıyla karmaşık hesaplamalara ve ayrıca yük (veya toplu yükleme) işlemleri gerçekleştiren ve/veya mevcut tablolara veri değişiklikleri yazan düzenli olarak zamanlanmış işlemlere sahip olduğu analitik (çevrimiçi analitik işleme (OLAP)). OLAP iş yükleri genellikle OLTP iş yüklerinden düzenli aralıklarla güncelleştirilir.
  • Hem OLTP hem de OLAP sorgularının aynı veri kümesinde yürütüldüğü karma (karma işlem/analitik işleme (HTAP)).

Bellek içi teknolojiler, sorguların yerel derlemesini kullanarak veya temel alınan donanımda bulunan toplu işleme ve SIMD yönergeleri gibi gelişmiş işlemleri kullanarak işlenecek verileri bellekte tutarak bu iş yüklerinin performansını artırabilir.

Genel bakış

Azure SQL Yönetilen Örneği aşağıdaki bellek içi teknolojileri destekler:

  • Bellek içi OLTP saniye başına işlem sayısını artırır ve işlem işleme için gecikme süresini azaltır. Bellek içi OLTP'den yararlanan senaryolar şunlardır: alım satım ve oyun gibi yüksek aktarım hızına sahip işlem işlemleri, olaylardan veya IoT cihazlarından veri alımı, önbelleğe alma, veri yükü ve geçici tablo ve tablo değişkeni senaryoları.
  • Kümelenmiş columnstore dizinleri depolama ayak izinizi azaltır (10 kata kadar) ve raporlama ve analiz sorgularının performansını artırır. Bunu, veritabanınıza daha fazla veri sığdırmak ve performansı geliştirmek için veri reyonlarınızdaki olgu tablolarıyla kullanabilirsiniz. Ayrıca, verileri arşivleyip 10 kata kadar daha fazla veri sorgulamak için işlemsel veritabanınızdaki geçmiş verilerle de kullanabilirsiniz.
  • HTAP için kümelenmemiş columnstore dizinleri , pahalı bir ayıklama, dönüştürme ve yükleme (ETL) işlemi çalıştırmanıza ve veri ambarı doldurulmasını beklemenize gerek kalmadan işlemsel veritabanını doğrudan sorgulayarak işletmeniz hakkında gerçek zamanlı içgörüler elde etmenize yardımcı olur. Kümelenmemiş columnstore dizinleri OLTP veritabanında analiz sorgularının hızlı yürütülmesine olanak tanırken işletimsel iş yükü üzerindeki etkiyi azaltır.
  • HTAP için bellek için iyileştirilmiş kümelenmiş columnstore dizinleri , hızlı işlem gerçekleştirmenize ve analiz sorgularını aynı verilerde çok hızlı bir şekilde eşzamanlı olarak çalıştırmanıza olanak tanır.

Columnstore dizinleri ve bellek içi OLTP sırasıyla 2012 ve 2014'te SQL Server'a sunulmuştur. Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL Server, bellek içi teknolojilerin aynı uygulamasını paylaşır.

Not

Örnek veritabanını ve ostress.exe kullanarak AdventureWorksLT bellek içi OLTP teknolojisinin performans avantajlarını gösteren ayrıntılı bir adım adım öğretici için bkz. Azure SQL Yönetilen Örneği'de bellek içi örnek.

Bellek içi teknolojinin avantajları

Daha verimli sorgu ve işlem işlemleri nedeniyle bellek içi teknolojiler maliyeti azaltmanıza da yardımcı olur. Azure SQL Yönetilen Örneği İş Açısından Kritik hizmet katmanına girdikten sonra, performans kazançları elde etmek için sql yönetilen örneğini yükseltmeniz gerekmez. Bazı durumlarda, bellek içi teknolojilerde performans iyileştirmeleri görmeye devam ederken fiyatlandırma katmanını da düşürebilirsiniz.

Bu makalede, bellek içi OLTP ve columnstore dizinlerinin Azure SQL Yönetilen Örneği özgü yönleri açıklanır ve örnekler de bulunur:

  • Bu teknolojilerin depolama ve veri boyutu sınırları üzerindeki etkisini göreceksiniz.
  • Bu teknolojileri kullanan veritabanlarının farklı fiyatlandırma katmanları arasındaki hareketinin nasıl yönetileceğini göreceksiniz.
  • Bellek içi OLTP kullanımının yanı sıra columnstore dizinlerini gösteren iki örnek göreceksiniz.

SQL Server'da bellek içi OLTP hakkında daha fazla bilgi için bkz:

Bellek İçi OLTP

Bellek içi OLTP teknolojisi, tüm verileri bellekte tutarak son derece hızlı veri erişimi işlemleri sağlar. Ayrıca OLTP iş yükünün performansını artırmak için özel dizinler, sorguların yerel derlemesi ve mandalsız veri erişimi kullanır. Bellek içi OLTP verilerinizi düzenlemenin iki yolu vardır:

  • Her satırın ayrı bir bellek nesnesi olduğu bellek için iyileştirilmiş satır deposu biçimi. Bu, yüksek performanslı OLTP iş yükleri için iyileştirilmiş klasik bir bellek içi OLTP biçimidir. Bellek için iyileştirilmiş satır deposu biçiminde kullanılabilecek iki tür bellek için iyileştirilmiş tablo vardır:

    • Sunucu yeniden başlatıldıktan sonra belleğe yerleştirilen satırların korunduğu dayanıklı tablolar (SCHEMA_AND_DATA). Bu tür tablolar, bellek içi iyileştirmelerin ek avantajlarıyla geleneksel bir rowstore tablosu gibi davranır.
    • Satırların yeniden başlatıldıktan sonra korunmadığı, kalıcı olmayan tablolar (SCHEMA_ONLY). Bu tablo türü geçici veriler (örneğin, geçici tabloların değiştirilmesi) veya kalıcı bir tabloya (hazırlama tabloları olarak adlandırılır) taşımadan önce verileri hızla yüklemeniz gereken tablolar için tasarlanmıştır.
  • Verilerin sütunlu biçimde düzenlendiği bellek için iyileştirilmiş columnstore biçimi. Bu yapı, OLTP iş yükünüzün çalıştığı aynı veri yapısı üzerinde analiz sorguları çalıştırmanız gereken HTAP senaryoları için tasarlanmıştır.

Not

Bellek içi OLTP teknolojisi, bellekte tam olarak bulunabilen veri yapıları için tasarlanmıştır. Bellek içi veriler diske yüklenemediğinden, yeterli belleğe sahip SQL yönetilen örneği kullandığınızdan emin olun. Daha fazla bilgi için bkz . Bellek içi OLTP için veri boyutu ve depolama üst sınırı.

Bellek içi OLTP için veri boyutu ve depolama sınırı

Bellek içi OLTP, kullanıcı verilerini depolamak için kullanılan bellek için iyileştirilmiş tablolar içerir. Bu tablolar belleğe sığmak için gereklidir. Bu fikir, bellek içi OLTP depolama alanı olarak adlandırılır.

İş Açısından Kritik hizmet katmanı, sanal çekirdek sayısına göre belirlenen belirli miktarda Maksimum Bellek İçi OLTP belleği içerir.

Aşağıdaki öğeler bellek içi OLTP depolama sınırınıza doğru sayılır:

  • Bellek için iyileştirilmiş tablolarda ve tablo değişkenlerinde etkin kullanıcı veri satırları. Eski satır sürümleri büyük harfe doğru sayılmaz.
  • Bellek için iyileştirilmiş tablolardaki dizinler.
  • ALTER TABLE işlemlerinin operasyonel yükü.

Büyük harfe bastığınızda kota aşımı hatası alırsınız ve artık veri ekleyemez veya güncelleştiremezsiniz. Bu hatayı azaltmak için verileri silin veya veritabanının veya havuzun fiyatlandırma katmanını artırın.

Bellek içi OLTP depolama kullanımını izleme ve neredeyse sınırı aştığınızda uyarıları yapılandırma hakkında ayrıntılı bilgi için bkz . Bellek içi depolamayı izleme.

Donanım yapılandırmasını veya sanal çekirdek sayısını değiştirme

Donanım yapılandırmanızı veya sanal çekirdek sayınızı düşürmek SQL yönetilen örneğinizi olumsuz etkileyebilir.

Bellek için iyileştirilmiş tablolardaki veriler, donanım yapılandırmanız ve sanal çekirdek sayınız için bellek içi OLTP depolama sınırına sığmalıdır. Bellek içi OLTP depolama alanı yeterli olmayan bir ayara ölçeği azaltmayı denerseniz işlem başarısız olur.

Bellek içi nesnelerin mevcut olup olmadığını belirleme

SQL yönetilen örneğinizdeki belirli bir veritabanının bellek içi OLTP'yi destekleyip desteklemediğini anlamanın programlı bir yolu vardır. Aşağıdaki Transact-SQL sorgusunu yürütebilirsiniz:

SELECT DatabasePropertyEx(DB_NAME(), 'IsXTPSupported');

Sorgu döndürürse 1, bu veritabanında bellek içi OLTP desteklenir.

Aşağıdaki sorgular, bellek içi teknolojiyi kullanan tüm nesneleri tanımlar:

SELECT * FROM sys.tables WHERE is_memory_optimized=1
SELECT * FROM sys.table_types WHERE is_memory_optimized=1
SELECT * FROM sys.sql_modules WHERE uses_native_compilation=1

Bellek içi columnstore

Bellek içi columnstore teknolojisi, tablolarda büyük miktarda veri depolamanıza ve sorgulamanıza olanak tanır. Columnstore teknolojisi, geleneksel satır odaklı depolamaya göre OLAP iş yüklerinde 10 kata kadar sorgu performansı elde etmek için sütun tabanlı veri depolama biçimini ve toplu sorgu işlemeyi kullanır. Ayrıca sıkıştırılmamış veri boyutuna göre 10 kata kadar veri sıkıştırma kazancı elde edebilirsiniz.

Verilerinizi düzenlemek için kullanabileceğiniz iki tür columnstore modeli vardır:

  • Tablodaki tüm verilerin sütun biçiminde düzenlendiği kümelenmiş sütun deposu . Bu modelde, tablodaki tüm satırlar verileri yüksek oranda sıkıştıran ve tabloda hızlı analitik sorgular ve raporlar yürütmenizi sağlayan sütun biçiminde yerleştirilir. Verilerinizin doğasına bağlı olarak, verilerinizin boyutu 10x-100x azaltılabilir. Kümelenmiş columnstore modeli, diskte depolanmadan önce 100.000 satırdan büyük veri toplu işlemleri sıkıştırıldığından büyük miktarda verinin (toplu yükleme) hızlı alımını da sağlar. Bu model, klasik veri ambarı senaryoları için iyi bir seçimdir.
  • Verilerin geleneksel rowstore tablosunda depolandığı ve columnstore biçiminde analiz sorguları için kullanılan bir dizin bulunduğu kümelenmemiş columnstore. Bu model, Hibrit İşlem Analizi İşleme'yi (HTAP) etkinleştirir: İşlemsel bir iş yükünde yüksek performanslı gerçek zamanlı analiz çalıştırabilme özelliği. OLTP sorguları küçük bir satır kümesine erişmek için iyileştirilmiş rowstore tablosunda yürütülürken, OLAP sorguları taramalar ve analizler için daha iyi bir seçim olan columnstore dizininde yürütülür. Sorgu iyileştiricisi, sorguyu temel alan satır deposu veya sütun deposu biçimini dinamik olarak seçer. Özgün veri kümesi herhangi bir değişiklik yapılmadan özgün satır deposu tablosunda tutulduğundan, kümelenmemiş columnstore dizinleri verilerin boyutunu küçültmez. Ancak, ek columnstore dizininin boyutu eşdeğer B ağacı dizininden daha küçük büyüklük sırasına göre olmalıdır.

Not

Bellek içi columnstore teknolojisi yalnızca bellekte işleme için gereken verileri tutarken, belleğe sığamayan veriler diskte depolanır. Bu nedenle, bellek içi columnstore yapılarındaki veri miktarı kullanılabilir bellek miktarını aşabilir.

Columnstore dizinleri için veri boyutu ve depolama

Columnstore dizinleri belleğe sığmak için gerekli değildir. Bu nedenle, dizinlerin boyutundaki tek büyük harf, toplam veritabanı boyutu üst sınırıdır. Daha fazla bilgi için bkz. Azure SQL Yönetilen Örneği kaynak sınırları. Azure SQL Yönetilen Örneği tüm katmanlardaki columnstore dizinlerini destekler.

Kümelenmiş columnstore dizinlerini kullandığınızda, temel tablo depolaması için sütunlu sıkıştırma kullanılır. Bu sıkıştırma, kullanıcı verilerinizin depolama ayak izini önemli ölçüde azaltabilir ve bu da veritabanına daha fazla veri sığdırabileceğiniz anlamına gelir. Ayrıca sütunlu arşiv sıkıştırma ile sıkıştırma daha da artırılabilir. Elde edebilirsiniz sıkıştırma miktarı verilerin doğasına bağlıdır, ancak sıkıştırmanın 10 katı nadir değildir.

Örneğin, boyutu en fazla 1 terabayt (TB) olan bir veritabanınız varsa ve columnstore dizinlerini kullanarak sıkıştırmanın 10 katını elde ediyorsanız, veritabanına toplam 10 TB kullanıcı verisi sığdırabilirsiniz.

Kümelenmemiş columnstore dizinlerini kullandığınızda, temel tablo hala geleneksel satır deposu biçiminde depolanır. Bu nedenle, depolama tasarrufları kümelenmiş columnstore dizinleri kadar önemli değildir. Ancak, birçok geleneksel kümelenmemiş dizini tek bir columnstore diziniyle değiştiriyorsanız, tablonun depolama ayak izinde genel bir tasarruf görmeye devam edebilirsiniz.