[Akademi Server IT168] Log transaksi adalah bagian struktur database yang sangat penting namun sering diabaikan. Karena tidak seaktif skema di database, hanya sedikit orang yang memperhatikan log transaksi.
Log transaksi merupakan catatan perubahan database, dapat mencatat setiap operasi pada database dan menyimpan hasil pencatatannya pada file tersendiri. Untuk setiap proses transaksi, log transaksi memiliki catatan yang sangat lengkap, dan file data dapat dikembalikan ke keadaan sebelum transaksi berdasarkan catatan ini. Sejak awal tindakan transaksi, log transaksi berada dalam status pencatatan. Setiap operasi pada database selama transaksi berada dalam cakupan pencatatan. Pencatatan tidak selesai hingga pengguna mengklik kirim atau kembali. Setiap database memiliki setidaknya satu log transaksi dan satu file data.
Untuk alasan kinerja, SQL Server menyimpan perubahan pengguna dalam cache. Perubahan ini segera ditulis ke log transaksi, tapi tidak ke file data. Log transaksi menggunakan titik penandaan untuk menentukan apakah suatu transaksi telah menulis data dari cache ke file data. Ketika SQL Server dimulai ulang, ia akan memeriksa titik tanda terbaru di log dan menghapus catatan transaksi setelah titik tanda ini, karena catatan transaksi ini tidak benar-benar menulis data di cache ke file data. Hal ini mencegah transaksi yang terputus tersebut mengubah file data.
Memelihara log transaksi
Karena banyak orang yang sering lupa log transaksi, hal ini juga dapat membawa beberapa masalah pada sistem. Saat sistem terus berjalan, semakin banyak catatan log yang akan dicatat, dan ukuran file log juga akan semakin besar, yang pada akhirnya menyebabkan ruang disk yang tersedia tidak mencukupi. Kecuali jika log sering dibersihkan dalam pekerjaan sehari-hari, file log pada akhirnya akan menempati semua ruang yang tersedia di partisi. Konfigurasi default log adalah kapasitas tidak terbatas. Jika Anda bekerja dalam konfigurasi ini, log akan terus berkembang dan pada akhirnya menempati semua ruang yang tersedia. Kedua situasi tersebut dapat menyebabkan database berhenti bekerja.
Pencadangan log transaksi secara rutin dapat secara efektif mencegah file log memakan ruang disk yang berlebihan. Proses pencadangan memotong bagian log yang tidak diperlukan lagi. Cara pemotongannya adalah dengan terlebih dahulu menandai catatan lama sebagai tidak aktif, lalu menimpa log baru di lokasi log lama, sehingga mencegah log transaksi bertambah besar. Jika pencadangan log secara teratur tidak dapat dilakukan, yang terbaik adalah mengatur database ke "model pemulihan sederhana". Dalam mode ini, sistem akan memaksa log transaksi untuk secara otomatis terpotong setiap kali titik tanda dicatat, menimpa log lama dengan log baru.
Proses pemotongan terjadi ketika membuat cadangan atau menandai titik lama sebagai tidak aktif, yang memungkinkan catatan transaksi lama ditimpa, namun tidak mengurangi ruang disk sebenarnya yang ditempati oleh log transaksi. Sekalipun log tersebut tidak lagi digunakan, log tersebut masih akan menempati sejumlah ruang tertentu. Oleh karena itu, selama pemeliharaan, log transaksi juga perlu dikompresi. Log transaksi dikompresi dengan menghapus catatan yang tidak aktif, sehingga mengurangi ruang hard drive fisik yang ditempati oleh file log.
File log transaksi dari database saat ini dapat dikompresi dengan menggunakan pernyataan DBCC SHRINKDATABASE. Pernyataan DBCC SHRINKFILE digunakan untuk mengompresi file log transaksi yang ditentukan. Selain itu, operasi kompresi otomatis juga dapat diaktifkan di database. Ketika log dikompresi, catatan lama pertama-tama ditandai sebagai tidak aktif, dan kemudian catatan yang ditandai sebagai tidak aktif dihapus sepenuhnya. Tergantung pada metode kompresi yang digunakan, Anda mungkin tidak langsung melihat hasilnya. Idealnya, pekerjaan kompresi harus dilakukan selama periode ketika sistem tidak terlalu sibuk, jika tidak maka dapat mempengaruhi kinerja database.
Memulihkan
cadangan catatan transaksi basis data dapat digunakan untuk memulihkan basis data ke keadaan tertentu, tetapi cadangan catatan transaksi itu sendiri tidak cukup untuk menyelesaikan tugas pemulihan basis data, dan file data yang dicadangkan juga perlu berpartisipasi dalam pekerjaan pemulihan. Saat memulihkan database, langkah pertama adalah memulihkan file data. Jangan atur seluruh file data ke status selesai sampai seluruh file data telah dipulihkan, jika tidak, log transaksi tidak akan dipulihkan. Ketika pemulihan file data selesai, sistem akan mengembalikan database ke keadaan yang diinginkan pengguna melalui cadangan log transaksi. Jika ada cadangan beberapa file log setelah pencadangan database terakhir, program pencadangan akan memulihkannya secara berurutan sesuai dengan waktu pembuatannya.
Proses lain yang disebut pengiriman log dapat memberikan kemampuan pencadangan basis data yang lebih kuat. Ketika pengiriman log dikonfigurasi, ia dapat menyalin seluruh database ke server lain. Dalam hal ini, log transaksi juga dikirim secara berkala ke server cadangan untuk pemulihan data. Hal ini menjaga server dalam kondisi cadangan panas, memperbaruinya seiring perubahan data. Server lainnya disebut server monitor dan dapat digunakan untuk memantau sinyal pengiriman yang dikirim pada interval tertentu. Jika tidak ada sinyal yang diterima dalam waktu yang ditentukan, server pemantauan akan mencatat peristiwa ini ke log peristiwa. Mekanisme ini membuat pengiriman log sering digunakan dalam rencana pemulihan bencana.
Log transaksipengoptimalan kinerja
memainkan peran penting dalam database, dan juga memiliki dampak tertentu pada kinerja sistem secara keseluruhan. Melalui beberapa pilihan, kita dapat mengoptimalkan kinerja log transaksi. Karena log transaksi adalah proses penulisan disk yang berkelanjutan, tidak ada pembacaan yang terjadi selama proses ini. Oleh karena itu, menempatkan file log pada disk independen akan memainkan peran tertentu dalam mengoptimalkan kinerja.
Ukuran optimasi lainnya berkaitan dengan ukuran file log. Kita dapat mengatur ukuran file log agar tidak melebihi beberapa persen dari ruang hard disk, atau menentukan ukurannya. Jika disetel terlalu tinggi, maka akan membuang-buang ruang disk, dan jika disetel terlalu kecil, akan memaksa file log untuk terus mencoba memperluas, sehingga menyebabkan kinerja database menurun.
File Log Transaksi File Log Transaksi adalah file yang digunakan untuk mencatat pembaruan database, dengan ekstensi ldf.
Di SQL Server 7.0 dan SQL Server 2000, jika fitur pertumbuhan otomatis diatur, file log transaksi akan diperluas secara otomatis.
Secara umum, ukuran log transaksi stabil ketika dapat menampung jumlah maksimum transaksi yang terjadi antara pemotongan log transaksi, yang dipicu oleh pos pemeriksaan atau cadangan log transaksi.
Namun, dalam beberapa kasus, log transaksi bisa menjadi sangat besar sehingga kehabisan ruang atau penuh. Biasanya, ketika file log transaksi memenuhi ruang disk yang tersedia dan tidak dapat diperluas lagi, Anda akan menerima pesan kesalahan seperti berikut:
Kesalahan:9002, Keparahan:17, Status:2
File log untuk database '%.*ls' sudah penuh.
Selain pesan kesalahan ini, SQL Server mungkin menandai database sebagai SUSPECT karena kurangnya ruang ekstensi log transaksi. Untuk informasi tambahan tentang cara memulihkan situasi ini, lihat topik "Ruang Disk Rendah" di Bantuan Online SQL Server.
Selain itu, perluasan log transaksi dapat menyebabkan situasi berikut:
· File log transaksi yang sangat besar.
· Transaksi mungkin gagal dan mungkin mulai dibatalkan.
· Transaksi mungkin membutuhkan waktu lama untuk diselesaikan.
· Masalah kinerja mungkin terjadi.
· Penyumbatan dapat terjadi.
Penyebab Perluasan log transaksi dapat terjadi karena alasan atau situasi berikut:
· Transaksi yang tidak terikat · Transaksi yang sangat besar · Operasi: DBCC DBREINDEX dan CREATE INDEX
· Saat memulihkan dari cadangan log transaksi · Aplikasi klien tidak memproses semua hasil · Permintaan habis sebelum log transaksi selesai diperluas dan Anda menerima pesan kesalahan "Log Penuh" yang salah · Resolusi transaksi yang tidak direplikasi disebabkan oleh file log yang sedang full Ketika database SQL tidak dapat menulis ke file, ada dua metode yang tersedia:
Salah satu caranya: hapus log.
1. Buka penganalisis kueri dan masukkan perintah nama database TRANSAKSI DUMP DENGAN NO_LOG
2. Buka kembali Enterprise Manager--klik kanan database yang ingin dikompres--Semua tugas--Kecilkan database--Kecilkan file--Pilih file log--Pilih menyusut ke XXM dalam mode menyusut, dan a izin menyusut akan diberikan di sini. Untuk mencapai jumlah minimum M, langsung masukkan nomor ini dan konfirmasi.
Cara lain memiliki resiko tertentu, karena file log SQL SERVER tidak segera ditulis ke file database utama, jika tidak ditangani dengan baik akan menyebabkan hilangnya data.
1: Hapus LOG
Lepas database Enterprise Manager -> Server -> Database -> Klik kanan -> Lepas database 2: Hapus file LOG Lampirkan database Enterprise Manager -> Server -> Database -> Klik kanan -> Lampirkan database Metode ini menghasilkan LOG baru, ukurannya hanya Lebih dari 500K.
Catatan: Disarankan menggunakan cara pertama.
Jika kedepannya tidak ingin menjadi lebih besar.
Digunakan di bawah SQL2000:
Klik kanan pada database->Properties->Options->Failure Recovery-Model-Select-Simple Model.
Atau gunakan pernyataan SQL:
mengubah nama database database mengatur pemulihan sederhana
Selain itu, seperti yang ditunjukkan pada gambar di atas, properti database memiliki dua opsi, terkait dengan pertumbuhan log transaksi:
Potong pos pemeriksaan masuk
(Opsi ini digunakan di SQL7.0. Di SQL 2000, model pemulihan kesalahan dipilih sebagai model sederhana)
Ketika perintah CHECKPOINT dijalankan, isi file log transaksi akan dihapus jika melebihi 70% ukurannya. Selalu atur opsi ini ke True saat mengembangkan database.
Penyusutan otomatis
Periksa database secara teratur. Ketika ruang yang tidak terpakai pada file database atau file log melebihi 25% dari ukurannya, sistem akan secara otomatis mengurangi file tersebut untuk membuat ruang yang tidak terpakai sama dengan 25%. ketika dibuat, itu tidak akan terjadi. File yang diperkecil juga harus lebih besar atau sama dengan ukuran aslinya. Pengurangan file log transaksi hanya dapat dilakukan saat mencadangkannya atau ketika opsi Truncate log on checkpoint disetel ke True.
Catatan: Secara umum, properti default database yang dibuat oleh Li Cheng telah disetel, tetapi jika terjadi keadaan yang tidak terduga, properti database akan diubah. Harap hapus log dan periksa properti database di atas untuk mencegah log transaksi mengisi lagi.