Latar Belakang:
Saya memiliki banyak basis data dengan sejumlah besar LIHAT, dan sejumlah besar SYNONYM. Sebagai contoh, satu db memiliki lebih dari 10k PANDANGAN dan 2 + juta SYNONYM.
Masalah Umum:
Permintaan yang melibatkan sys.objects
(dan tabel sistem secara umum) cenderung lambat. Pertanyaan yang melibatkan sys.synonyms
glasial. Saya bertanya-tanya apa yang bisa saya lakukan untuk meningkatkan kinerja.
Contoh Khusus
Perintah ini dijalankan oleh alat pihak ketiga. Ini lambat di kedua aplikasi, dan di SSMS:
exec sp_tables_rowset;2 NULL,NULL
Pertanyaan Saya :
Bagaimana saya bisa membuat ini berjalan lebih cepat?
Apa yang Saya Mencoba :
Jika SET STATISTICS IO ON
saya mendapatkan output ini:
(2201538 baris dipengaruhi)
Tabel 'sysobjrdb'. Pindai hitungan 1, bacaan logis 28, bacaan fisik 0, bacaan baca-depan 0, bacaan logis lob 0, bacaan fisik lob 0, bac baca baca depan 0.
Tabel 'sysschobjs'. Pindai hitungan 1, bacaan logis 53926, bacaan fisik 0, bacaan baca depan 0, bacaan logis lob 0, bacaan fisik lob 0, bacaan baca lob depan 0.
Saya telah dapat memperbarui statistik pada tabel sistem yang mendasarinya. Ini telah berhasil di lingkungan SQL 2008 R2 saya atau yang lebih baru:
UPDATE STATISTICS sys.sysobjrdb WITH FULLSCAN
UPDATE STATISTICS sys.sysschobjs WITH FULLSCAN
Saya juga sudah bisa melakukan pemeliharaan indeks. Ini berfungsi di SQL 2012 saya atau lingkungan yang lebih baru. Misalnya menjalankan sp_help 'sys.sysschobjs'
mengidentifikasi indeks di atas meja, dan dari sana saya membuat dan menjalankan perintah ini:
ALTER INDEX clst ON sys.sysschobjs REORGANIZE
ALTER INDEX nc1 ON sys.sysschobjs REORGANIZE
ALTER INDEX nc2 ON sys.sysschobjs REORGANIZE
ALTER INDEX nc3 ON sys.sysschobjs REORGANIZE
Memperbarui statistik dan menyusun ulang indeks membantu, tetapi tidak banyak.
sumber
Jawaban:
Jika Anda belum melakukannya, Anda bisa mendapatkan kinerja dengan memindahkan file data primer ke kumpulan spindel yang terpisah dari sisa data (lihat Arsitektur File dan Filegroup dan SQL Server: filegroup hanya untuk tabel sistem? ).
sumber