Bagikan melalui


Mengoptimalkan performa untuk database cermin dari SQL Server

Artikel ini mencakup langkah-langkah penting untuk mengoptimalkan performa database sumber dan database cermin dari SQL Server di Microsoft Fabric.

Mengontrol performa pemindaian

Saat pencerminan diaktifkan pada tabel dalam database, proses pemindaian secara berkala menangkap perubahan dengan memanen log transaksi. Proses ini dimulai pada LSN dari transaksi yang telah dikomit tetapi belum direplikasi dan memindai transaksi yang direplikasi berikutnya sejumlah N-1, di mana N mewakili jumlah transaksi yang ditentukan menggunakan parameter @maxtrans di dalam sys.sp_change_feed_configure_parameters. Nilai maxtrans parameter menunjukkan jumlah maksimum transaksi yang akan diproses di setiap siklus pemindaian.

Dalam situasi di mana latensi pemindaian sangat tinggi, menggunakan nilai yang lebih tinggi maxtrans dapat menguntungkan, sedangkan dalam kasus yang melibatkan transaksi yang jarang direplikasi atau relatif besar, pengaturan yang lebih rendah maxtrans mungkin lebih disukai. Fitur transaksi maksimum dinamis menyederhanakan proses ini dengan secara otomatis menentukan nilai optimal maxtrans selama setiap pemindaian berdasarkan faktor lain seperti penggunaan log, latensi pemindaian, dan beban kerja. dynamicmaxtrans Ketika pengaturan umpan perubahan diaktifkan, Fabric secara dinamis menyesuaikan parameter maxtrans, memastikan performa pemindaian yang optimal.

Verifikasi pengaturan fitur transaksi maksimum dinamis dengan sys.sp_help_change_feed_settings, atau gunakan repl_logscan_dynamic_maxtrans peristiwa yang diperluas untuk memantau nilai runtime untuk setiap pemindaian.

Untuk mengaktifkan fitur transaksi maksimum dinamis, atur @dynamicmaxtrans ke 1. Contohnya:

USE <Mirrored database name>
GO
EXECUTE sys.sp_change_feed_configure_parameters
  @dynamicmaxtrans=1;

Untuk memodifikasi batas maksimum dan lebih rendah untuk fitur transaksi maksimum dinamis, gunakan @maxtrans dan @dynamicmaxtranslowerbound masing-masing. Contohnya:

USE <Mirrored database name>
GO
EXECUTE sys.sp_change_feed_configure_parameters
  @dynamicmaxtrans=1
, @dynamicmaxtranslowerbound=5
, @maxtrans=5000;

Pertimbangan untuk pengaturan transaksi maksimum dinamis

Fitur transaksi maksimum dinamis diaktifkan secara default di SQL Server 2025. Fitur transaksi maksimum dinamis diaktifkan dan tidak dapat dikelola atau dinonaktifkan di Azure SQL Database dan Azure SQL Managed Instance.

Ketika maxtrans dinamis diaktifkan, pencerminan memproses hingga 10.000 transaksi (secara default) atau nilai transaksi maksimum yang dikonfigurasi selama fase pemindaian log. Untuk mencegah fase ini berjalan terlalu lama, batas waktu tiga menit diberlakukan. Setiap transaksi yang diproses sebelum batas waktu habis diterbitkan ke database cermin, dan sisa transaksi akan diambil selama pemindaian berikutnya.

Nilai optimal untuk fitur transaksi maksimum dinamis bervariasi menurut beban kerja, latensi, dan faktor lainnya. Pertimbangkan untuk mengaktifkan fitur maxtrans dinamis ketika latensi lebih tinggi dari yang diinginkan dan transaction_count di setiap batch lebih besar dari pengaturan batas bawah (200, secara default). Ini dapat dipantau menggunakan latency kolom di sys.dm_change_feed_log_scan_sessions atau dengan menggunakan peristiwa repl_logscan_dynamic_maxtrans yang diperluas untuk melihat apakah current_maxtrans sudah mencapai maxtrans set. Jika latensi masih tinggi, pertimbangkan untuk maxtrans meningkatkan batas atas menggunakan sys.sp_help_change_feed_settings.

Gunakan peristiwa repl_logscan_dynamic_maxtrans yang diperluas untuk memantau apakah time-out sering terjadi. Bidang prev_phase2_scan_termination_reason akan memiliki nilai LogScanTerminationReason_MaxScanDurationReached ketika waktu habis dari pemindaian terjadi. Pertimbangkan untuk menurunkan maxtrans atau menonaktifkan maxtrans dinamis menggunakan sys.sp_help_change_feed_settings jika Anda sering melihat batas waktu.

Pengatur sumber daya untuk SQL Server pencerminan

Di SQL Server 2025, Anda dapat membuat kumpulan gubernur sumber daya untuk mengelola dan menutup beban kerja pencerminan Fabric di SQL Server Anda. Anda dapat menggunakan gubernur sumber daya untuk mengelola konsumsi sumber daya Mesin Database dan menerapkan kebijakan untuk beban kerja pengguna. Resource governor memungkinkan Anda memesan atau membatasi berbagai sumber daya server, termasuk jumlah CPU, memori, dan I/O fisik yang dapat digunakan beban kerja kueri pengguna. Dengan cara ini, Anda dapat melindungi beban kerja bisnis utama Anda dari tekanan yang disebabkan oleh pengumpulan data umpan perubahan dari Fabric Mirroring. Untuk informasi selengkapnya, lihat Gubernur sumber daya.

Untuk mulai mengonfigurasi grup beban kerja di SQL Server 2025 untuk pencerminan Fabric, gunakan contoh skrip dan instruksi berikut.

  • Anda dapat memilih nama apa pun untuk RESOURCE POOL.
  • Contoh skrip ini mengonfigurasi batas untuk persentase penggunaan CPU yang ditentukan agar pencerminan Fabric dapat dilakukan. Sampel berikut menggunakan 50 untuk 50 persen. Nilai ini adalah bandwidth CPU rata-rata maksimum yang dapat diterima semua permintaan di kumpulan sumber daya ketika ada ketidakcocokan CPU. Gunakan nilai yang lebih rendah untuk mengatur pencerminan Fabric lebih lanjut.
  • Nama WORKLOAD GROUP harus cocok dengan nilai dalam contoh skrip. Setiap grup beban kerja adalah untuk fase pencerminan tertentu. Setiap grup beban kerja dapat berada di kumpulan yang sama atau berbeda tergantung pada cara Anda merencanakan kumpulan dan beban kerja gubernur sumber daya Anda.
  • Sebelum mengonfigurasi gubernur sumber daya untuk pertama kalinya pada instans SQL Server Anda, tinjau dokumentasi, contoh, dan praktik terbaik gubernur sumber daya dengan cermat.
--Create resource pool for Fabric mirroring
CREATE RESOURCE POOL [ChangeFeedPool] WITH (MAX_CPU_PERCENT = 50);

--Create workload groups for Fabric mirroring. Do not modify.
CREATE WORKLOAD GROUP [x_ms_reserved_changefeed_snapshot_group] USING [ChangeFeedPool];
CREATE WORKLOAD GROUP [x_ms_reserved_changefeed_capture_group] USING [ChangeFeedPool];
CREATE WORKLOAD GROUP [x_ms_reserved_changefeed_publish_group] USING [ChangeFeedPool];
CREATE WORKLOAD GROUP [x_ms_reserved_changefeed_commit_group] USING [ChangeFeedPool];
CREATE WORKLOAD GROUP [x_ms_reserved_changefeed_notification_group] USING [ChangeFeedPool];

Untuk menerapkan perubahan dan mengaktifkan gubernur sumber daya, seperti biasa:

ALTER RESOURCE GOVERNOR RECONFIGURE