Pencocokan dan Pencampuran
Mencadangkan log transaksi tidak sama dengan memotong file log transaksi, dan memotong file log transaksi tidak sama dengan menyusutkan file log transaksi. Oh ya, dan mencadangkan file log transaksi tidak harus memicu pemotongan. Tergantung pada beban saat ini, mesin database mungkin memutuskan untuk menetapkan pos pemeriksaan, tetapi menunggu sedikit dengan pemotongan.
Menjelaskan
File log transaksi adalah tempat mesin database menyimpan modifikasi yang dibuat untuk data dalam database, terlepas dari apakah database dalam model pemulihan SEDERHANA atau dalam model pemulihan LENGKAP. (Penting)
Sekarang file log transaksi database bukan hanya satu wadah penyimpanan kontinu, tetapi kumpulan File Log Virtual (VLF) yang dibuat dalam urutan berurutan di dalam file Transaction Log (TLog). Ukuran VLF bervariasi tergantung pada versi SQL Server yang saat ini Anda gunakan dan juga pada ukuran awal yang Anda pilih selama pembuatan file TLog dan juga ukuran yang Anda pilih (jika ada) untuk pengaturan pertumbuhan otomatis File TLog.
Referensi:
- Perubahan penting pada algoritma pembuatan VLF di SQL Server 2014 (SQLSkills.com)
- Nomor urut VLF awal dan ukuran file log default (SQLSkills.com)
- Di dalam Mesin Penyimpanan: Lebih lanjut tentang sifat melingkar dari log
(SQLSkills. com)
... dan mungkin dalam urutan terbalik
Ketika data dimodifikasi dalam database, Mesin Database akan menulis perubahan ini ke dalam TLog dari database yang sesuai untuk menegakkan konsistensi transaksional. Ini juga dikenal sebagai ACID - Atomicity, Consistency, Isolasi, Durability . Transkripsi aktual dari perubahan ini disimpan dalam VLFs dari TLog (file). Ketika VLF penuh, transaksi terbaru akan disimpan dalam VLF berikutnya yang tersedia secara berurutan.
Pengecualian
Namun jika akhir file TLog tercapai, modifikasi akan disimpan dalam VLF pertama di awal file TLog. (dijelaskan dalam Inside the Storage Engine: Lebih lanjut tentang sifat melingkar dari log )
Ketika tidak ada VLF tersedia untuk menyimpan transaksi baru dan jika pengaturan pertumbuhan otomatis dikonfigurasi, Mesin Database akan menumbuhkan file TLog dengan jumlah yang ditentukan dan membuat VLF tambahan tergantung pada ukuran yang ditentukan dalam pengaturan pertumbuhan otomatis dan formula dijelaskan dalam perubahan penting pada algoritma penciptaan VLF di SQL Server 2014 . Transaksi selanjutnya dapat disimpan di VLF berikutnya di dalam file TLog.
Mencadangkan File TLog
Ketika Anda memicu cadangan file TLog semua yang Anda lakukan adalah memberitahu mesin database untuk
- lihat file TLog
- menentukan kapan pencadangan log transaksi terakhir terjadi (LSN: Log Sequence Number; untuk penelitian lebih lanjut)
- mengatur Checkpoint di file TLog ( Database Checkpoints (SQL Server) )
- menyimpan salinan cadangan dari file TLog pada disk / tape sambil melacak LSN sebelumnya dan yang dilakukan LSN tepat sebelum cadangan selesai
- transfer semua modifikasi ke "database"
- tandai VLFs sebagai dapat digunakan kembali
Sejauh ini tidak ada ruang yang telah dirilis di dalam file TLog untuk Mesin database untuk digunakan kembali ...
Pemotongan Otomatis File TLog
... tetapi jika Mesin Basis Data memiliki beberapa siklus untuk cadangan dan tidak berada di bawah tekanan yang sangat berat itu kadang-kadang akan melihat file TLog, perhatikan Pos Pemeriksaan dan lepaskan VLF untuk digunakan kembali. Ruang di dalam file TLog masih digunakan oleh VLF (ukuran yang sama, lokasi yang sama) tetapi mereka bebas untuk digunakan kembali.
Ini didokumentasikan dalam Pemotongan Log Transaksi :
Kecuali ketika tertunda karena alasan tertentu, pemotongan log terjadi secara otomatis sebagai berikut: - Di bawah model pemulihan sederhana, setelah pos pemeriksaan.
- Di bawah model pemulihan penuh atau model pemulihan yang dicatat secara massal, setelah cadangan log, jika pos pemeriksaan telah terjadi sejak cadangan sebelumnya. Untuk informasi lebih lanjut, lihat "Pemotongan log di bawah model pemulihan log penuh dan massal," nanti dalam topik ini.
Ada beberapa kasus ketika ini tidak terjadi:
Meskipun otomatis, pemotongan log dapat ditunda oleh berbagai faktor. Untuk informasi tentang apa yang dapat menunda pemotongan log, lihat Faktor-faktor yang Dapat Menunda Pemotongan log .
Visualisasi pemotongan log
Pemotongan log dapat diamati ketika Anda meminta ukuran TLog menggunakan pernyataan SQL atau laporan Space Database di UI SSMS. Anda mungkin mengamati bahwa ruang yang digunakan di dalam file TLog mungkin hanya 1% dari ukuran file TLog yang tersedia.
Menyusut atau Tidak Menyusut
Rekomendasi umum adalah untuk tidak mengecilkan file TLog, karena itu tumbuh karena alasan tertentu dan mungkin akan tumbuh lagi ke ukuran dulu. Tapi itu cerita untuk posting lain. Ada beberapa alasan bagus, salah satunya adalah ketika Anda membuat kembali ukuran VLF di dalam file TLog Anda.
Menjawab pertanyaan Anda
Sebaris tepat di bawah asumsi dan pertanyaan Anda
Pemahaman saya adalah bahwa membuat cadangan database:
- Memotong log transaksi, dan
Ini anggapan yang salah. Mencadangkan basis data Anda (LENGKAP, BERBEDA) tidak melakukan apa-apa dengan file TLog. Cadangan LENGKAP akan membuat keadaan konsisten dari basis data Anda bersama dengan transaksi yang dilakukan dari file TLog. Cadangan DIFF akan membuat status yang konsisten dari semua cadangan TLog sebelumnya sejak cadangan LENGKAP terakhir dari basis data Anda.
Namun, Cadangan TLOG akan membuat cadangan dari transaksi yang dilakukan dari file TLog, menetapkan pos pemeriksaan dan mungkin (saat tidak sedang dalam beban berat) melepaskan VLF untuk digunakan kembali.
Tidak, saat mempertimbangkan cadangan FULL dan DIFF. Tidak, ketika mempertimbangkan cadangan TLOG, tetapi akan membebaskan VLF di dalam file TLog, jika mesin database memiliki waktu luang.
Apa yang sebenarnya dilakukan pemotongan log ke file log (LDF)? Proses ini seharusnya mencegah disk menjadi penuh.
Memotong log memungkinkan VLF digunakan kembali. Itu saja.
Proses ini dapat bermanfaat mencegah file TLog dari menumbuhkan pengaturan pertumbuhan otomatis JIKA telah ditetapkan.
Jika tidak ada pengaturan pertumbuhan otomatis yang telah ditetapkan , karena proses rekayasa persyaratan Anda menentukan bahwa file TLog akan memiliki ukuran tetap, maka kasus terburuk di sini adalah bahwa TLog terisi karena tidak ada cadangan TLog yang terjadi dan karenanya tidak ada VLF yang dibebaskan. TLog tidak dapat tumbuh dan VLF tidak dibebaskan untuk memungkinkan transaksi lebih lanjut ditulis ke file TLog (atau VLF secara internal).