Bagikan melalui


Menulis halaman di Mesin Database

Berlaku untuk:SQL ServerDatabase Azure SQLInstans Terkelola Azure SQLAzure Synapse AnalyticsSistem Platform Analitik (PDW)Database SQL di Microsoft Fabric

I/O dari satu instance Mesin Database mencakup proses penulisan logis dan fisik. Penulisan logis terjadi ketika data dimodifikasi di halaman dalam cache buffer. Penulisan fisik terjadi ketika halaman ditulis dari cache buffer ke disk.

Ketika halaman dimodifikasi di cache buffer, halaman tidak segera ditulis kembali ke disk; sebagai gantinya, halaman ditandai sebagai kotor. Ini berarti bahwa halaman dapat memiliki lebih dari satu tulisan logis yang dibuat sebelum ditulis secara fisik ke disk. Untuk setiap penulisan logis, catatan log transaksi disisipkan dalam cache log yang merekam modifikasi. Rekaman log harus ditulis ke disk sebelum halaman kotor terkait dihapus dari cache buffer dan ditulis ke disk.

SQL Server menggunakan teknik yang dikenal sebagai write-ahead logging (WAL) yang mencegah penulisan halaman kotor sebelum rekaman log terkait ditulis ke disk. Ini penting untuk pekerjaan manajer pemulihan yang benar. Untuk informasi selengkapnya, lihat Log transaksi write-ahead.

Cara SQL Server menulis halaman data yang dimodifikasi

Ilustrasi berikut menunjukkan proses untuk menulis halaman data yang dimodifikasi.

Cuplikan layar Writing_Pages.

Ketika manajer buffer menulis halaman, ia mencari halaman kotor yang berdekatan yang dapat disertakan dalam satu operasi penulisan terhimpun. Halaman yang berdekatan memiliki ID halaman berturut-turut dan berasal dari file yang sama; halaman tidak harus bersebelah dalam memori. Pencarian berlanjut ke depan dan mundur hingga salah satu peristiwa berikut terjadi:

  • Halaman bersih ditemukan.
  • 32 halaman telah ditemukan.
  • Halaman kotor ditemukan yang nomor urutan lognya (LSN) belum dihapus dalam log.
  • Halaman ditemukan yang tidak dapat segera dikaitkan.

Dengan cara ini, seluruh set halaman dapat ditulis ke disk dengan satu operasi pengumpulan-tulis.

Tepat sebelum halaman ditulis, bentuk perlindungan halaman yang ditentukan dalam database ditambahkan ke halaman.

  • Jika perlindungan halaman robek ditambahkan, halaman harus di-latch secara eksklusif (EX) untuk I/O. Ini karena perlindungan halaman yang robek memodifikasi halaman, membuatnya tidak cocok untuk dibaca utas lain.

  • Jika perlindungan halaman checksum ditambahkan, atau database tidak menggunakan perlindungan halaman, halaman dikaitkan dengan kait pembaruan (UP) untuk I/O. Kait ini mencegah orang lain memodifikasi halaman selama penulisan, tetapi masih memungkinkan pembaca untuk menggunakannya.

Untuk informasi selengkapnya tentang opsi perlindungan halaman I/O disk, lihat Manajemen buffer.

Bagaimana halaman kotor ditulis ke disk

Halaman kotor ditulis ke disk dengan salah satu dari tiga cara:

Proses penulisan lambat, penulisan cepat, dan titik pemeriksaan tidak menunggu operasi I/O selesai. Mereka selalu menggunakan I/O asinkron (atau overlapped) dan melanjutkan pekerjaan lain, kemudian memeriksa keberhasilan I/O tersebut. Ini memungkinkan SQL Server untuk memaksimalkan sumber daya CPU dan I/O untuk tugas yang sesuai.

Proses penulisan malas

Penulis malas adalah proses sistem yang menjaga buffer gratis tetap tersedia dengan menghapus halaman yang jarang digunakan dari cache buffer. Halaman kotor terlebih dahulu ditulis ke cakram.

Proses penulisan bersemangat

Proses tulis cepat menulis halaman data kotor yang terkait dengan operasi pencatatan minimal seperti penyisipan massal dan select into. Proses ini memungkinkan pembuatan dan penulisan halaman baru berlangsung secara paralel. Artinya, operasi panggilan tidak perlu menunggu sampai seluruh operasi selesai sebelum menulis halaman ke disk.

Proses titik pemeriksaan

Proses titik pemeriksaan secara berkala memindai cache buffer untuk buffer dengan halaman dari database tertentu dan menulis semua halaman kotor ke disk. Titik pemeriksaan menghemat waktu selama pemulihan nanti dengan membuat titik di mana semua halaman kotor dijamin telah ditulis ke disk.

Pengguna mungkin meminta operasi titik pemeriksaan dengan menggunakan CHECKPOINT perintah , atau Mesin Database mungkin menghasilkan titik pemeriksaan otomatis berdasarkan jumlah ruang log yang digunakan dan waktu berlalu sejak titik pemeriksaan terakhir. Selain itu, titik pemeriksaan dihasilkan ketika aktivitas tertentu terjadi. Misalnya, ketika data atau file log ditambahkan atau dihapus dari database, atau ketika instans SQL Server dihentikan.

Untuk informasi selengkapnya, lihat Titik pemeriksaan dan bagian aktif log.