Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümleri
Karma arabellek havuzu, arabellek havuzu nesnelerinin diskten veri sayfalarının kopyalarını getirmek ve geçici DRAM'de önbelleğe almak yerine kalıcı bellek (PMEM) cihazlarında bulunan veritabanı dosyalarındaki veri sayfalarına başvurmasını sağlar. Bu özellik SQL Server 2019'da (15.x) kullanıma sunulmuştur ve SQL Server 2022'de (16.x) daha da geliştirilmiştir.
Kalıcı bellek (PMEM) cihazları bayt adreslenebilir ve doğrudan erişim (DAX) kalıcı bellek kullanan bir dosya sistemi (XFS, EXT4 veya NTFS gibi) kullanılırsa, dosya sistemindeki dosyalara işletim sistemindeki normal dosya sistemi API'leri kullanılarak erişilebilir. Alternatif olarak, SQL Server PMEM cihazındaki dosyaların bellek eşlemelerine karşı yükleme ve depolama işlemleri olarak bilinen işlemleri gerçekleştirebilir. Bu, SQL Server gibi PMEM kullanan uygulamaların geleneksel depolama yığınından geçmeden cihazdaki dosyalara erişmesini sağlar.
Karma arabellek havuzu, PMEM cihazını hem arabellek havuzu için önbellek hem de veritabanı dosyaları için depolama konumu olarak kullanmak üzere bellek eşlenen dosyalara karşı yük ve depolama işlemleri gerçekleştirmek için bu özelliği kullanır. Bu, hem mantıksal hem de fiziksel okumanın temelde aynı işlem haline geldiği benzersiz bir durum oluşturur. Kalıcı bellek cihazlarına normal geçici DRAM gibi bellek veri yolu üzerinden erişilebilir.
Varsayılan olarak, karma arabellek havuzu için PMEM modülünde yalnızca temiz veri sayfaları önbelleğe alınır. Bir sayfanın değiştirilmesi ve kirli olarak işaretlenmesi için, PMEM cihazından bir DRAM arabellek havuzuna kopyalanması, değiştirilmesi ve daha sonra değiştirilen sayfanın bir kopyası DRAM'den PMEM modülüne geri yazılır ve bu noktada yeniden temiz olarak işaretlenebilir. Bu işlem, PMEM modülü standart bir blok cihazıymış gibi denetim noktası veya gecikmeli yazıcı gibi normal arka plan işlemleri kullanılarak gerçekleşir.
Karma arabellek havuzu özelliği hem Windows hem de Linux için kullanılabilir. PMEM cihazının DAX'ı (DirectAccess) destekleyen bir dosya sistemi kullanması gerekir. XFS, EXT4 ve NTFS dosya sistemlerinin tümü, dosya sistemine doğrudan kullanıcı alanından erişim sağlayan DAX uzantıları için desteğe sahiptir. SQL Server, veritabanı veri dosyalarının uygun şekilde yapılandırılmış bir PMEM disk cihazında bulunup bulunmayacağını algılar ve veritabanı başlatıldığında veya bir veritabanı eklendiğinde, geri yüklendiğinde veya oluşturulduğunda veritabanı dosyalarının gerekli bellek eşlemesini otomatik olarak gerçekleştirir.
Daha fazla bilgi için bakınız:
- Windows üzerinde SQL Server (SQL Server 2022 (16.x) ve sonraki sürümler için kalıcı bellek (PMEM) yapılandırın.
- Linux üzerinde SQL Server için kalıcı bellek (PMEM) yapılandırın.
Karma arabellek havuzunu etkinleştirme
SQL Server 2019 (15.x), karma arabellek havuzunu denetlemek için dinamik veri dilini (DDL) tanıtır.
Aşağıdaki örnek, BIR SQL Server örneği için karma arabellek havuzunu etkinleştirir:
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;
Varsayılan olarak, karma arabellek havuzu örnek kapsamında devre dışı bırakılır. Ayar değişikliğinin etkili olması için SQL Server örneğinin yeniden başlatılması gerekir. Sunucudaki toplam PMEM kapasitesini hesaba katmak için yeterli karma sayfa ayırmayı kolaylaştırmak için yeniden başlatma gerekir.
Aşağıdaki örnek, belirli bir veritabanı için karma arabellek havuzunu etkinleştirir.
ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;
Varsayılan olarak, karma arabellek havuzu veritabanı kapsamında etkinleştirilir.
Karma arabellek havuzunu devre dışı bırakma
Aşağıdaki örnek, örnek düzeyinde karma arabellek havuzunu devre dışı bırakır:
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;
Varsayılan olarak, karma arabellek havuzu örnek düzeyinde devre dışı bırakılır. Bu değişikliğin etkili olması için örneğin yeniden başlatılması gerekir. Sunucudaki PMEM kapasitesinin artık hesaba katılması gerektiğinden, yeniden başlatma arabellek havuzu için yeterli karma sayfanın ayrılmasını sağlar.
Aşağıdaki örnek, belirli bir veritabanı için karma arabellek havuzunu devre dışı bırakır.
ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;
Varsayılan olarak, karma arabellek havuzu veritabanı kapsamında etkinleştirilir ve sunucu kapsamında devre dışı bırakılır.
Karma arabellek havuzu yapılandırmasını görüntüleme
Çalışma zamanı değerini göster
Aşağıdaki örnek, örneğin geçerli karma arabellek havuzu yapılandırma durumunu döndürür.
SELECT * FROM sys.server_memory_optimized_hybrid_buffer_pool_configuration;
Aşağıdaki örnek, veritabanlarını ve karma arabellek havuzuis_memory_optimized_enabled () için veritabanı düzeyi ayarını listeler.
Ayrıca PMEM modülünü DAX etkinleştirilmeden bağlayabilir veya biçimlendirebilir ve bunu normal bir blok cihazı olarak değerlendirebilirsiniz (yani çekirdek üzerinden G/Ç gerçekleştirin). Bu şekilde yapılandırıldığında, BAYT adreslenebilir işlemleri gerçekleştirmek için SQL Server tarafından hiçbir PMEM modülü kullanılamaz (diğer bir ifadeyle, tüm çağrılar çekirdek alanı sürücülerini kullanır).
SELECT name, is_memory_optimized_enabled
FROM sys.databases;
Hibrit arabellek havuzu doğrudan yazma ile
Doğrudan Yazma davranışına sahip karma arabellek havuzu, PMEM cihazlarında bulunan değiştirilmiş verilerde veya dizin sayfalarında gerçekleştirilmesi gereken komutların memcpy sayısını azaltır. Bunu, dayanıklı kalıcı günlük arabelleği kullanarak sayfayı DRAM arabellek havuzlarından birine kopyalamak zorunda kalmadan değiştirmek için bir araç olarak yapar. Bunun yerine, PMEM cihazlarında bulunan veritabanı dosyalarındaki sayfalar, DRAM arabellek havuzunda önbelleğe alınmadan doğrudan değiştirilir ve daha sonra zaman uyumsuz olarak diske boşaltılır. Kalıcı işlem günlüğü arabelleğindeki (günlük) kayıtlar dayanıklı medyaya yazıldığından veya sağlamlaştırıldığından, bu davranış yine de önceden günlüğe kaydetme (WAL) semantiğine bağlı kalır. Karma arabellek havuzu ve kalıcı günlük arabelleği kullanan işlem iş yükleri için bu şekilde önemli performans kazanımları gözlemlendi.
Doğrudan yazma modunu etkinleştirmek için, bir veritabanı için karma arabellek havuzunu ve kalıcı günlük arabelleği'ni etkinleştirin ve başlangıç izleme bayrağı 809'ı etkinleştirin.
Karma arabellek havuzu için en iyi yöntemler
Windows'da PMEM cihazınızı biçimlendirirken NTFS için kullanılabilen en büyük ayırma birimi boyutunu (Windows Server 2019 ve sonraki sürümlerde 2 MB) kullanın ve cihazın DAX (Doğrudan Erişim) için biçimlendirildiğinden emin olun.
Windows'da Sayfaları bellekte kilitle ilkesini etkinleştirin.
Dosya boyutları 2 MB'ın katı olmalıdır (modül 2 MB sıfıra eşit olmalıdır).
Karma arabellek havuzu için sunucu kapsamlı ayarı devre dışı bırakılırsa, özellik herhangi bir kullanıcı veritabanı tarafından kullanılmaz.
Karma arabellek havuzu için sunucu kapsamlı ayarı etkinleştirildiğinde, tek tek kullanıcı veritabanları için özelliği devre dışı bırakmak için veritabanı kapsamlı ayarını kullanabilirsiniz.
SQL Server 2019 (15.x) CU 3 (bkz. KB4538118) itibarıyla okuma önbelleği varsayılan olarak etkinleştirilmiştir; karma arabellek havuzunda en popüler sayfaların izlendiği ve ardından performansı artırmak için otomatik olarak DRAM arabellek havuzuna yükseltildiği bir işlemdir.
SQL Server 2022 (16.x) CU 1 itibarıyla, karma arabellek havuzu kalıcı günlük arabelleği ile birleştirildiğinde doğrudan yazma varsayılan davranıştır. Bu, neredeyse tüm iş yükleri için performansı geliştirmelidir, ancak her zaman bir regresyon olasılığı vardır ve CU uygulanmadan önce kapsamlı bir şekilde test edilmelidir. Bu davranış değişikliği nedeniyle regresyonla karşılaşırsanız başlangıç izleme bayrağı 898'i kullanarak önceki davranışa geri dönebilirsiniz.
SQL Server 2022 (16.x) CU 1'den başlayarak , izleme bayrağı 809 başlangıçta SQL Server tarafından yoksayılır. Hem izleme bayrağı 809 hem de izleme bayrağı 898 yalnızca Windows için geçerlidir ve Linux üzerinde SQL Server için geçerli değildir. İzleme bayrakları yalnızca sertifikalı bir Microsoft Server uzmanı tarafından yönlendirildiğinde kullanılmalıdır.