In-Memory Pengumpulan Sampah OLTP

Berlaku untuk: SQL Server (semua versi yang didukung) Azure SQL Managed Instance Database Azure SQL

Baris data dianggap kedaluarsa jika dihapus oleh transaksi yang tidak lagi aktif. Baris kedaluarsa memenuhi syarat untuk pengumpulan sampah. Berikut ini adalah karakteristik pengumpulan sampah dalam In-Memory OLTP:

  • Non-pemblokiran. Pengumpulan sampah didistribusikan dari waktu ke waktu dengan dampak minimal pada beban kerja.

  • Koperasi. Transaksi pengguna berpartisipasi dalam pengumpulan sampah dengan utas pengumpulan sampah utama.

  • Efisien. Transaksi pengguna mendelegasikan baris kedaluarsa di jalur akses (indeks) yang digunakan. Ini mengurangi pekerjaan yang diperlukan ketika baris akhirnya dihapus.

  • Responsif. Tekanan memori menyebabkan pengumpulan sampah yang agresif.

  • Dapat diskalakan. Setelah penerapan, transaksi pengguna melakukan bagian dari pekerjaan pengumpulan sampah. Semakin banyak aktivitas transaksi, semakin banyak transaksi yang mendelegasikan baris kedaluarsa.

Pengumpulan sampah dikendalikan oleh utas pengumpulan sampah utama. Utas pengumpulan sampah utama berjalan setiap menit, atau ketika jumlah transaksi yang dilakukan melebihi ambang batas internal. Tugas pengumpul sampah adalah untuk:

  • Identifikasi transaksi yang telah menghapus atau memperbarui sekumpulan baris dan telah berkomitmen sebelum transaksi aktif terlama.

  • Versi baris identitas yang dibuat oleh transaksi lama ini.

  • Kelompokkan baris lama ke dalam satu atau beberapa unit masing-masing 16 baris. Hal ini dilakukan untuk mendistribusikan pekerjaan pengumpul sampah ke unit yang lebih kecil.

  • Pindahkan unit kerja ini ke dalam antrean pengumpulan sampah, satu untuk setiap penjadwal. Lihat DMV pengumpul sampah untuk detailnya: sys.dm_xtp_gc_stats (Transact-SQL), sys.dm_db_xtp_gc_cycle_stats (Transact-SQL), dan sys.dm_xtp_gc_queue_stats (Transact-SQL).

Setelah transaksi pengguna berkomitmen, transaksi mengidentifikasi semua item antrean yang terkait dengan penjadwal yang dijalankannya dan kemudian merilis memori. Jika antrean pengumpulan sampah pada penjadwal kosong, ia mencari antrean yang tidak kosong di simpul NUMA saat ini. Jika ada aktivitas transaksi yang rendah dan ada tekanan memori, utas pengumpulan sampah utama dapat mengakses baris pengumpulan sampah dari antrean apa pun. Jika tidak ada aktivitas transaksi setelah (misalnya) menghapus sejumlah besar baris dan tidak ada tekanan memori, baris yang dihapus tidak akan menjadi sampah yang dikumpulkan sampai aktivitas transaksi dilanjutkan atau ada tekanan memori.

Lihat juga

Mengelola Memori untuk OLTP In-Memory