Kumpulan buffer hibrid

Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru

Kumpulan buffer hibrid memungkinkan objek kumpulan buffer untuk mereferensikan halaman data dalam file database yang berada di perangkat memori persisten (PMEM), alih-alih harus mengambil salinan halaman data dari disk dan menyimpannya dalam DRAM yang volatil. Fitur ini diperkenalkan pada SQL Server 2019 (15.x) dan lebih ditingkatkan pada SQL Server 2022 (16.x).

Diagram memperlihatkan kumpulan buffer, dengan dan tanpa kumpulan buffer hibrid diaktifkan.

Perangkat memori persisten (PMEM) dapat diatasi byte dan jika sistem file sadar memori persisten (DAX) akses langsung (seperti XFS, EXT4, atau NTFS) digunakan, file pada sistem file dapat diakses menggunakan API sistem file yang biasa di OS. Atau, SQL Server dapat melakukan apa yang dikenal sebagai operasi pemuatan dan penyimpanan terhadap peta memori file pada perangkat PMEM. Ini memungkinkan aplikasi sadar PMEM seperti SQL Server untuk mengakses file pada perangkat tanpa melintasi tumpukan penyimpanan tradisional.

Kumpulan buffer hibrid menggunakan kemampuan ini untuk melakukan operasi pemuatan dan penyimpanan terhadap file yang dipetakan memori, untuk menggunakan perangkat PMEM baik sebagai cache untuk kumpulan buffer dan lokasi penyimpanan untuk file database. Ini menciptakan situasi unik di mana bacaan logis dan bacaan fisik pada dasarnya menjadi operasi yang sama. Perangkat memori persisten dapat diakses melalui bus memori seperti DRAM volatil biasa.

Secara default, hanya halaman data bersih yang di-cache pada modul PMEM untuk kumpulan buffer hibrid. Agar halaman dimodifikasi dan ditandai sebagai kotor, halaman harus disalin dari perangkat PMEM ke kumpulan buffer DRAM, dimodifikasi dan akhirnya salinan halaman yang dimodifikasi ditulis dari DRAM kembali ke modul PMEM, di mana dapat ditandai sebagai bersih lagi. Proses ini terjadi menggunakan operasi latar belakang normal seperti titik pemeriksaan, atau penulis malas, seolah-olah modul PMEM adalah perangkat blok standar.

Fitur kumpulan buffer hibrid tersedia untuk Windows dan Linux. Perangkat PMEM harus menggunakan sistem file yang mendukung DAX (DirectAccess). XFS, EXT4, dan sistem file NTFS semuanya memiliki dukungan untuk ekstensi DAX, yang menyediakan akses ke sistem file langsung dari ruang pengguna. SQL Server akan mendeteksi apakah ada file data database yang berada di perangkat disk PMEM yang dikonfigurasi dengan tepat dan secara otomatis melakukan pemetaan memori yang diperlukan dari file database saat memulai database, atau setiap kali database dilampirkan, dipulihkan, atau dibuat.

Untuk informasi selengkapnya, lihat:

Aktifkan kumpulan buffer hibrid

SQL Server 2019 (15.x) memperkenalkan bahasa data dinamis (DDL) untuk mengontrol kumpulan buffer hibrid.

Contoh berikut mengaktifkan kumpulan buffer hibrid untuk instans SQL Server:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;

Secara default, kumpulan buffer hibrid dinonaktifkan pada cakupan instans. Agar perubahan pengaturan berlaku, instans SQL Server harus dimulai ulang. Mulai ulang diperlukan untuk memfasilitasi alokasi halaman hash yang memadai, untuk memperhitungkan total kapasitas PMEM di server.

Contoh berikut memungkinkan kumpulan buffer hibrid untuk database tertentu.

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;

Secara default, kumpulan buffer hibrid diaktifkan pada cakupan database.

Menonaktifkan kumpulan buffer hibrid

Contoh berikut menonaktifkan kumpulan buffer hibrid di tingkat instans:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;

Secara default, kumpulan buffer hibrid dinonaktifkan pada tingkat instans. Agar perubahan ini berlaku, instans harus dimulai ulang. Mulai ulang memastikan halaman hash yang cukup dialokasikan untuk kumpulan buffer, karena kapasitas PMEM di server sekarang perlu diperhitungkan.

Contoh berikut menonaktifkan kumpulan buffer hibrid untuk database tertentu.

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;

Secara default, kumpulan buffer hibrid diaktifkan pada cakupan database, dan dinonaktifkan di cakupan server.

Lihat konfigurasi kumpulan buffer hibrid

Perlihatkan nilai run time

Contoh berikut mengembalikan status konfigurasi kumpulan buffer hibrid saat ini dari instans.

SELECT * FROM
sys.server_memory_optimized_hybrid_buffer_pool_configuration;

Contoh berikut mencantumkan database dan pengaturan tingkat database untuk kumpulan buffer hibrid (is_memory_optimized_enabled).

Anda juga dapat memasang atau memformat modul PMEM tanpa DAX diaktifkan, dan memperlakukannya sebagai perangkat blok biasa (yaitu, melakukan I/O melalui kernel). Ketika dikonfigurasi dengan cara ini, tidak ada modul PMEM yang dapat digunakan oleh SQL Server untuk melakukan operasi yang dapat diatasi byte (artinya, semua panggilan akan menggunakan driver ruang kernel).

SELECT name, is_memory_optimized_enabled FROM sys.databases;

Kumpulan buffer hibrid dengan tulis langsung

Kumpulan buffer hibrid dengan perilaku Tulis Langsung mengurangi jumlah memcpy perintah yang perlu dilakukan pada data yang dimodifikasi atau halaman indeks yang berada di perangkat PMEM. Ini dilakukan dengan menggunakan buffer log tahan lama sebagai sarana untuk memodifikasi halaman tanpa harus menyalinnya ke salah satu kumpulan buffer DRAM. Sebaliknya, halaman dalam file database yang berada di perangkat PMEM dimodifikasi secara langsung tanpa perlu menyimpan cache di kumpulan buffer DRAM dan kemudian secara asinkron memerah ke disk. Perilaku ini masih mematuhi untuk menulis semantik pengelogan di depan (WAL), karena catatan (log) dalam buffer log transaksi yang bertahan telah ditulis, atau diperkeras, ke media tahan lama. Perolehan performa yang cukup besar telah diamati untuk beban kerja transaksional menggunakan kumpulan buffer hibrid dan buffer log yang bertahan bersama-sama dengan cara ini.

Untuk mengaktifkan mode tulis langsung, aktifkan kumpulan buffer hibrid dan buffer log yang bertahan untuk database dan aktifkan bendera pelacakan startup 809.

Praktik terbaik untuk kumpulan buffer hibrid

  • Saat memformat perangkat PMEM Anda di Windows, gunakan ukuran unit alokasi terbesar yang tersedia untuk NTFS (2 MB di Windows Server 2019 dan yang lebih baru) dan pastikan perangkat telah diformat untuk DAX (Akses Langsung).

  • Aktifkan halaman Kunci dalam kebijakan memori di Windows.

  • Ukuran file harus kelipatan 2 MB (modulo 2 MB harus sama dengan nol).

  • Jika pengaturan cakupan server untuk kumpulan buffer hibrid dinonaktifkan, fitur tersebut tidak akan digunakan oleh database pengguna apa pun.

  • Dengan pengaturan cakupan server untuk kumpulan buffer hibrid diaktifkan, Anda dapat menggunakan pengaturan lingkup database untuk menonaktifkan fitur untuk database pengguna individual.

  • Pada SQL Server 2019 (15.x) CU 3 (lihat KB4538118), penembolokan baca telah diaktifkan secara default, proses di mana halaman terpanas dilacak di kumpulan buffer hibrid, lalu secara otomatis dipromosikan ke kumpulan buffer DRAM untuk meningkatkan performa.

  • Pada SQL Server 2022 (16.x) CU 1, Tulis Langsung adalah perilaku default ketika kumpulan buffer hibrid dikombinasikan dengan buffer log yang bertahan. Ini harus meningkatkan performa untuk hampir semua beban kerja, tetapi selalu ada kemungkinan regresi dan CU harus diuji secara menyeluruh sebelum diterapkan. Jika Anda mengalami regresi karena perubahan perilaku ini, Anda dapat kembali ke perilaku sebelumnya menggunakan Bendera Pelacakan 898 start-up.

  • Dimulai dengan SQL Server 2022 (16.x) CU 1, Bendera Pelacakan 809 akan diabaikan oleh SQL Server saat startup. Bendera Pelacakan 809 dan Bendera Pelacakan 898 hanya berlaku untuk Windows, dan tidak berlaku untuk SQL Server di Linux. Bendera pelacakan hanya boleh digunakan ketika diarahkan untuk melakukannya oleh profesional Microsoft Server bersertifikat.