Uygulama performansınızı geliştirmek için Azure SQL Veritabanı'de Bellek İçi OLTP kullanma
Şunlar için geçerlidir: Azure SQL Veritabanı
Bellek İçi OLTP , veritabanı veya elastik havuzun hizmet hedefini artırmadan işlem işleme, veri alımı ve geçici veri senaryolarının performansını geliştirmek için kullanılabilir.
- Premium (DTU) ve İş Açısından Kritik (sanal çekirdek) hizmet katmanlarındaki veritabanları ve elastik havuzlar Bellek İçi OLTP'yi destekler.
- Hiper Ölçek hizmet katmanı, Bellek İçi OLTP nesnelerinin bir alt kümesini destekler, ancak bellek için iyileştirilmiş tablolar içermez. Daha fazla bilgi için bkz . Hiper Ölçek sınırlamaları.
Mevcut veritabanlarınızda Bellek İçi OLTP kullanmaya başlamak için bu adımları izleyin.
1. Adım: Premium veya İş Açısından Kritik katmanı veritabanı kullandığınızdan emin olun
Bellek İçi OLTP, aşağıdaki sorgunun sonucu (değil0
) olduğunda 1
desteklenir:
SELECT DATABASEPROPERTYEX(DB_NAME(), 'IsXTPSupported');
XTP, Bellek İçi OLTP özelliğinin resmi olmayan bir adı olan Aşırı İşlem İşleme anlamına gelir.
2. Adım: Bellek İçi OLTP'ye geçirilen nesneleri tanımlama
SQL Server Management Studio (SSMS), etkin bir iş yüküne sahip bir veritabanında çalıştırabileceğiniz bir İşlem Performansı Analizine Genel Bakış raporu içerir. Rapor, Bellek İçi OLTP'ye geçiş için aday olan tabloları ve saklı yordamları tanımlar.
Raporu SSMS'de oluşturmak için:
- Nesne Gezgini veritabanı düğümünüzü sağ tıklatın.
- Raporlar>Standart Raporları>İşlem Performansı Analizine Genel Bakış'ı seçin.
Bellek İçi OLTP'nin avantajlarını değerlendirme hakkında daha fazla bilgi için bkz . Bir tablonun veya saklı yordamın Bellek İçi OLTP'ye taşınıp taşınmadığını belirleme.
3. Adım: Benzer bir test veritabanı oluşturma
Raporun veritabanınızın bellek için iyileştirilmiş bir tabloya dönüştürülmesini sağlayacak bir tablosu olduğunu gösterdiğini varsayalım. İlk olarak test ederek göstergeyi onaylamak için test yapmanızı öneririz.
Üretim veritabanınızın test kopyasına ihtiyacınız vardır. Test veritabanı, üretim veritabanınızla aynı hizmet katmanı düzeyinde olmalıdır.
Testi kolaylaştırmak için test veritabanınızda aşağıdaki gibi ayarlamalar yapın:
SQL Server Management Studio (SSMS) kullanarak test veritabanına bağlanın.
Sorgularda seçeneğin
WITH (SNAPSHOT)
gerekli olmasını önlemek için, geçerli veritabanınınMEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT
seçeneğini aşağıdaki T-SQL deyiminde gösterildiği gibi ayarlayın:ALTER DATABASE CURRENT SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON;
4. Adım: Tabloları geçirme
Test etmek istediğiniz tablonun bellek için iyileştirilmiş bir kopyasını oluşturmanız ve doldurmanız gerekir. Aşağıdakilerden birini kullanarak oluşturabilirsiniz:
SSMS'de Bellek İyileştirme Sihirbazı
Bu geçiş seçeneğini kullanmak için:
SSMS ile test veritabanına bağlanın.
Nesne Gezgini tabloya sağ tıklayın ve ardından Bellek İyileştirme Danışmanı'nı seçin.
Tablo Belleği İyileştirici Danışmanı sihirbazı görüntülenir.
Sihirbazda, tablonun bellek için iyileştirilmiş tablolarda desteklenmeyen özelliklere sahip olup olmadığını görmek için Geçiş doğrulama 'yı (veya İleri düğmesini) seçin. Daha fazla bilgi için bkz.
- Bellek İyileştirme Danışmanı'ndaki bellek iyileştirme denetim listesi.
- Transact-SQL Yapıları Bellek İçi OLTP Tarafından Desteklenmiyor.
- Bellek İçi OLTP'ye geçiş.
Tabloda desteklenmeyen özellik yoksa, danışman sizin için gerçek şemayı ve veri geçişini gerçekleştirebilir.
El ile T-SQL
Bu geçiş seçeneğini kullanmak için:
- SSMS kullanarak test veritabanınıza bağlanın.
- Tablonuz için T-SQL betiğinin tamamını, kısıtlamalarını ve dizinlerini alın.
- SSMS'de tablo düğümünüzü sağ tıklatın.
- Yeni Sorgu penceresine>CREATE olarak>Betik Tablosu'nu seçin.
- Betik penceresinde deyimine
CREATE TABLE
ekleyinWITH (MEMORY_OPTIMIZED = ON)
. Daha fazla bilgi için bkz . Bellek için iyileştirilmiş tablolar için söz dizimi. - KÜMELENDİ dizini varsa, kümeLENMEMIŞ olarak değiştirin.
- sp_rename kullanarak mevcut tabloyu yeniden adlandırın.
- Düzenlenen
CREATE TABLE
betiğinizi çalıştırarak tablonun bellek için iyileştirilmiş yeni kopyasını oluşturun. - kullanarak
INSERT...SELECT * INTO
verileri bellek için iyileştirilmiş tablonuza kopyalayın:INSERT INTO [<new_memory_optimized_table>] SELECT * FROM [<old_disk_based_table>];
5. Adım (isteğe bağlı): Saklı yordamları geçirme
Bellek İçi OLTP, T-SQL performansını geliştirebilecek yerel olarak derlenmiş saklı yordamları da destekler.
Yerel olarak derlenmiş saklı yordamlarla ilgili dikkat edilmesi gerekenler
Yerel olarak derlenmiş bir saklı yordam, T-SQL WITH
yan tümcesinde aşağıdaki seçeneklere sahip olmalıdır:
- NATIVE_COMPILATION: yordamdaki Transact-SQL deyimlerinin tümünün verimli yürütme için yerel koda derleneceği anlamına gelir.
- SCHEMABINDING: Saklı yordamı bırakmadığınız sürece saklı yordamda başvurulan tabloların tanımlarının saklı yordamı etkileyecek şekilde değiştirilemeyeceği anlamına gelir.
Yerel olarak derlenmiş bir modülün işlem yönetimi için tek bir ATOMIC bloğu kullanması gerekir. Açık BEGIN TRANSACTION
veya ROLLBACK TRANSACTION
deyimler kullanılamaz. Kodunuz, örneğin bir iş kuralı ihlali algılarsa throw deyimiyle atomik bloğu sonlandırabilir.
Yerel olarak derlenmiş saklı yordam örneği
Yerel olarak derlenmiş bir saklı yordam oluşturmak için kullanılan T-SQL, aşağıdaki şablona benzer:
CREATE PROCEDURE schemaname.procedurename
@param1 type1, ...
WITH NATIVE_COMPILATION, SCHEMABINDING
AS
BEGIN ATOMIC WITH
(
TRANSACTION ISOLATION LEVEL = SNAPSHOT,
LANGUAGE = N'<desired sys.syslanuages.sysname value>'
)
...
END;
TRANSACTION_ISOLATION_LEVEL
için,SNAPSHOT
yerel olarak derlenmiş saklı yordamlar için en yaygın değerdir. Ancak, diğer değerlerin bir alt kümesi de desteklenir:REPEATABLE READ
SERIALIZABLE
- Değer
LANGUAGE
görünümdesys.syslanguages
, sütundaname
bulunmalıdır. Örneğin,N'us_english'
.
Yerel derlemeyi kullanmak için saklı yordamı geçirme
Geçiş adımları şunlardır:
CREATE PROCEDURE
Betiği normal (yorumlanmış) saklı yordama alın.- Üst bilgisini önceki şablonla eşleşecek şekilde yeniden yaz.
- Saklı yordam T-SQL kodunun yerel olarak derlenmiş saklı yordamlar için desteklenmeyen özellikleri kullanıp kullanmadığını belirleyin. Gerekirse geçici çözümler uygulayın. Daha fazla bilgi için bkz . Yerel olarak derlenmiş saklı yordamlar için geçiş sorunları.
- sp_rename kullanarak eski saklı yordamı yeniden adlandırın veya bırakın.
- Düzenlenen
CREATE PROCEDURE
T-SQL betiğinizi yürütür.
6. Adım: İş yükünüzü testte çalıştırma
Test veritabanınızda üretim veritabanınızda çalışan iş yüküne benzer bir iş yükü çalıştırın. Bu, tablolar ve saklı yordamlar için Bellek İçi OLTP'nin kullanılmasıyla elde edilen performans kazancını ortaya çıkarmalıdır.
İş yükünün başlıca öznitelikleri şunlardır:
- Eşzamanlı bağlantı sayısı.
- Okuma/yazma oranı.
Test iş yükünü uyarlamak ve çalıştırmak için RML Yardımcı Programları araç grubundaki aracı kullanmayı ostress.exe
göz önünde bulundurun. Daha fazla bilgi için bkz. Azure SQL Veritabanı'de bellek içi örnek.
Ağ gecikme süresini en aza indirmek için veritabanıyla aynı Azure bölgesinde komutunu çalıştırın ostress.exe
.
7. Adım: Uygulama sonrası izleme
Üretimde Bellek İçi OLTP uygulamanızın performans etkilerini izlemeyi göz önünde bulundurun:
- Bellek İçi OLTP depolama alanını izleyin.
- Dinamik yönetim görünümlerini kullanarak izleme.