Katakanlah, untuk SQLServer2008R2 dan lebih tinggi, dengan basis data mode pemulihan penuh.
Saya selalu berpikir:
Ketika suatu transaksi dilakukan (COMMIT), transaksi tersebut ditulis ke dalam transaksi log in RAM.
Ketika CHECKPOINT terjadi (setelah beberapa waktu dan / atau beberapa transaksi dan kriteria lainnya), transaksi antara CHECKPOINT terakhir dan saat ini ditulis ke disk.
Ketika LOG CADANGAN terjadi, data ditulis ke file MDF.
Apakah saya benar? Beberapa kolega saya mengatakan saya salah, dan sulit untuk menemukan jawaban yang benar, bahkan dengan BOL.
Terima kasih!
sql-server
Patator
sumber
sumber
Jawaban:
Sayangnya ada sejumlah kesalahan dalam jawaban sejauh ini sehubungan dengan cara kerja COMMIT, jadi saya akan menambahkan satu lagi. Lihat Cara Kerjanya: Presentasi I / O SQL Server Bob Dorr untuk detail dan Dasar-Dasar I / O SQL Server 2000 . Inilah cara kerjanya:
Semua penulisan data yang sepenuhnya tercatat (perubahan) terjadi dalam urutan yang persis sama (lihat Memahami Bagaimana SQL Server mengeksekusi Kueri: Menulis Data ):
KOMIT melakukan hal berikut
CHECKPOINT melakukan yang berikut (disederhanakan), lihat Bagaimana cara kerja pos pemeriksaan dan apa yang dicatat :
Menulis bekerja secara berbeda untuk operasi yang dicatat minimal, lihat Operasi yang Dapat Dicatat Minimal . Secara kasar operasi yang ditebang secara minimal bertindak sebagai berikut (disederhanakan):
sumber
Transaksi ditulis ke log transaksi bahkan sebelum mengubah halaman atau data seperti yang diminta oleh permintaan. Ini disebut write ahead logging (WAL). Jika SQL Server lumpuh saat halaman sedang diperbarui dalam memori, WAL memastikan bahwa mesin DB dapat membaca log transaksi dan mengembalikan transaksi. Ini adalah properti ACID dari RDBMS.
Sebuah pos pemeriksaan membersihkan halaman-halaman kotor dari buffer ke disk. Berperilaku sedikit berbeda untuk tempdb . Halaman kotor adalah halaman yang telah berubah sejak dibaca dari disk. Proses pos pemeriksaan ini menciptakan tanda di log transaksi hingga pada titik di mana transaksi telah dilakukan. Setelah gagal, pemulihan tahu bahwa semua transaksi hingga tanda itu telah dilakukan. Anda dapat menerbitkan pos pemeriksaan secara manual dengan perintah TSQL.
Tidak, ketika log cadangan terjadi SQL Server menyalin informasi log transaksi dari file log database ke disk tempat Anda menulis cadangan. Operasi cadangan membaca data dari disk dan menulis data pada disk.
Saya ingin Anda membaca tautan di bawah ini
Memahami Logging dan pemulihan di SQL Server Sudah ditunjukkan oleh Mark
SQL Server 2008 Internal dan Buku pemecahan masalah
Arsitektur dan Manajemen Log Transaksi
sumber
Di bawah ini akan menjelaskan hal-hal untuk Anda:
Mengacu pada :
sumber