Tentang Pelacakan Perubahan (SQL Server)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Artikel ini menjelaskan fitur pelacakan perubahan untuk SQL Server, yang merupakan solusi ringan yang menyediakan mekanisme pelacakan perubahan yang efisien untuk aplikasi.
Untuk memulai, tinjau Mengonfigurasi pelacakan perubahan.
Gambaran Umum
Sebelumnya, untuk memungkinkan aplikasi mengkueri perubahan pada data dalam database dan mengakses informasi yang terkait dengan perubahan, pengembang aplikasi harus menerapkan mekanisme pelacakan perubahan kustom. Mekanisme ini biasanya melibatkan banyak pekerjaan seperti kombinasi pemicu, kolom tanda waktu, tabel baru untuk menyimpan informasi pelacakan, dan proses pembersihan kustom. Fitur pelacakan perubahan SQL Server menyederhanakan proses ini, memudahkan untuk mengidentifikasi informasi yang terkait dengan perubahan tanpa perlu solusi kustom.
Berbagai jenis aplikasi memiliki persyaratan berbeda untuk seberapa banyak informasi yang aplikasi butuhkan tentang perubahan. Aplikasi dapat menggunakan pelacakan perubahan untuk menjawab pertanyaan berikut tentang perubahan yang telah dibuat pada tabel pengguna:
Baris apa yang telah berubah untuk tabel pengguna?
Hanya fakta bahwa baris telah berubah diperlukan, bukan berapa kali baris telah berubah atau nilai dari setiap perubahan menengah.
Data terbaru dapat diperoleh langsung dari tabel yang sedang dilacak.
Apakah baris berubah?
- Fakta bahwa baris telah berubah dan informasi tentang perubahan harus tersedia dan dicatat pada saat perubahan dilakukan dalam transaksi yang sama.
Catatan
Jika aplikasi memerlukan informasi tentang semua perubahan yang dibuat dan nilai perantara dari data yang diubah, menggunakan penangkapan data perubahan, alih-alih pelacakan perubahan, mungkin sesuai. Untuk informasi selengkapnya, lihat Tentang Mengubah Penangkapan Data (SQL Server).
Aplikasi Sinkronisasi Satu Arah dan Dua Arah
Aplikasi yang harus menyinkronkan data dengan instans SQL Server Database Engine harus dapat meminta perubahan. Pelacakan perubahan dapat digunakan sebagai fondasi untuk aplikasi sinkronisasi satu arah dan dua arah.
Aplikasi Sinkronisasi Satu Arah
Aplikasi sinkronisasi satu arah, seperti klien atau aplikasi penembolokan tingkat menengah, dapat dibangun dengan menggunakan pelacakan perubahan. Seperti yang ditunjukkan dalam ilustrasi berikut, aplikasi penembolokan memerlukan data untuk disimpan di Mesin Database dan disimpan di penyimpanan data lainnya. Aplikasi harus dapat menjaga cache tetap terbarui dengan perubahan apa pun yang telah dibuat pada tabel database. Tidak ada perubahan untuk diteruskan kembali ke Mesin Database.
Aplikasi Sinkronisasi Dua Arah
Aplikasi sinkronisasi dua arah juga dapat dibangun yang menggunakan pelacakan perubahan. Dalam skenario ini, data dalam instans Mesin Database disinkronkan dengan satu atau lebih penyimpanan data. Data di penyimpanan tersebut dapat diperbarui dan perubahan harus disinkronkan kembali ke Mesin Database.
Contoh yang baik dari aplikasi sinkronisasi dua arah adalah aplikasi yang kadang-kadang terhubung. Dalam jenis aplikasi ini, aplikasi klien meminta dan memperbarui penyimpanan lokal. Ketika koneksi tersedia antara klien dan server, aplikasi disinkronkan dengan server, dan mengubah aliran data di kedua arah.
Aplikasi sinkronisasi dua arah harus dapat mendeteksi konflik. Konflik akan terjadi jika data yang sama diubah di kedua penyimpanan data dalam waktu antara sinkronisasi. Dengan kemampuan untuk mendeteksi konflik, aplikasi dapat memastikan bahwa perubahan tidak hilang.
Cara Kerja Pelacakan Perubahan
Untuk mengonfigurasi pelacakan perubahan, Anda dapat menggunakan pernyataan DDL atau SQL Server Management Studio. Untuk informasi selengkapnya, lihat Mengaktifkan dan Menonaktifkan Pelacakan Perubahan. Untuk melacak perubahan, pelacakan perubahan harus terlebih dahulu diaktifkan untuk database lalu diaktifkan untuk tabel yang ingin Anda lacak dalam database tersebut. Definisi tabel tidak harus diubah dengan cara apa pun, dan tidak ada pemicu yang dibuat.
Setelah pelacakan perubahan dikonfigurasi untuk tabel, pernyataan DML apa pun yang memengaruhi baris dalam tabel akan menyebabkan informasi pelacakan perubahan untuk setiap baris yang diubah dicatat. Untuk mengkueri baris yang telah berubah dan untuk mendapatkan informasi tentang perubahan, Anda bisa menggunakan fungsi pelacakan perubahan.
Nilai kolom kunci utama adalah satu-satunya informasi dari tabel terlacak yang direkam dengan informasi perubahan. Nilai-nilai ini mengidentifikasi baris yang telah diubah. Guna mendapatkan data terbaru untuk baris tersebut, aplikasi dapat menggunakan nilai kolom kunci primer untuk menggabungkan tabel sumber dengan tabel yang dilacak.
Informasi tentang perubahan yang dilakukan pada setiap baris juga dapat diperoleh dengan menggunakan pelacakan perubahan. Misalnya, jenis operasi DML yang menyebabkan perubahan (menyisipkan, memperbarui, atau menghapus) atau kolom yang diubah sebagai bagian dari operasi pembaruan.
Semua operasi DML dilacak, meskipun nilai kolom tidak berubah. Misalnya, jika pernyataan pembaruan menetapkan kolom ke nilai yang sama dengan yang sudah dimilikinya, kolom masih dianggap telah berubah.
Pembersihan Pelacakan Perubahan
Informasi pelacakan perubahan untuk semua tabel (diaktifkan untuk Pelacakan Perubahan) disimpan di rowstore dalam memori. Data pelacakan perubahan yang terkait dengan setiap tabel yang diaktifkan untuk Pelacakan Perubahan dihapus pada setiap titik pemeriksaan dari rowstore dalam memori ke tabel internal pada disk yang sesuai. Selama titik pemeriksaan, rowstore dalam memori juga dihapus menyeluruh setelah baris dipindahkan ke tabel di disk.
Setiap tabel yang diaktifkan untuk Pelacakan Perubahan memiliki tabel internal di disk yang digunakan oleh fungsi Pelacakan Perubahan untuk menentukan versi perubahan dan baris yang telah berubah sejak versi tertentu. Setiap kali utas pembersihan otomatis bangun, utas ini memindai semua database pengguna pada instans SQL Server untuk mengidentifikasi database yang diaktifkan pelacakan perubahan. Berdasarkan pengaturan periode retensi database, setiap tabel internal di disk dibersihkan dari rekaman kedaluwarsanya.
Prosedur tersimpan ditambahkan dalam Paket Layanan untuk SQL Server 2014 (12.x) dan SQL Server 2016 (13.x) untuk melakukan pembersihan manual untuk tabel internal Pelacakan Perubahan internal. Informasi selengkapnya tentang prosedur tersimpan tersedia di KB173157.