Alat Penganalisis Praktik Terbaik untuk Microsoft SQL Server 2000 adalah alat manajemen basis data yang dikembangkan oleh tim pengembangan Microsoft SQL Server yang memungkinkan Anda mendeteksi apakah basis data yang dirancang mengikuti pedoman praktik terbaik untuk pengoperasian dan manajemen SQL Server. Pedoman ini diakui membantu meningkatkan kinerja dan efisiensi database serta membuat aplikasi lebih mudah dipelihara.
2. Mulai menggunakan SQL BPA Best Practices Analyzer
Setelah instalasi selesai,akan
ada dokumen Word dari Panduan Pengguna SQL Server Best Practices Analyzer. Cara menggunakannya dijelaskan dengan jelas
ke dalam SQL BPA
(2) Tambahkan analisis / instance SQL Server yang Terdeteksi
Anda harus memasukkan nama instance SQL Server di sini. Nama Ramah digunakan untuk dikaitkan dengan Grup Praktik Terbaik yang dibuat nanti (tetap sama dengan nama instance SQL Server ). Nilai default Daftar Database adalah *, yang berarti berisi semua database contoh SQL Server saat ini. Namun, BPA akan melewatkan deteksi database seperti 'master', 'tempdb', 'msdb', 'pubs', dan 'northwind'.
(3) Untuk mengelola Grup Praktik Terbaik,
Anda harus terlebih dahulu membuat Grup Praktik Terbaik, yang sebenarnya menggabungkan beberapa Aturan dan mengaitkannya dengan contoh SQL Server yang dimasukkan sebelumnya.
(4) Menganalisis instance SQL Server
dan memindahkan Grup Praktik Terbaik yang dibuat sebelumnya ke daftar Grup Praktik Terbaik yang akan Dieksekusi, sehingga dapat dijalankan sesuai dengan Aturan yang telah ditentukan sebelumnya dan menghasilkan Laporan untuk memberikan saran dan pedoman perbaikan.
3. Saya pikir Aturan yang disertakan dalam SQL BPA v1.0
adalah poin kuncinya, karena hanya dengan memahami pedoman praktik terbaik untuk pengoperasian dan manajemen SQL Server, kita dapat mencoba mengikuti Aturan ini saat mendesain database dan menulis skrip T-SQL. meningkatkan kinerja dan efisiensi SQL Server dan aplikasi.
Faktanya, semua Aturan ada di sini (Versi Bahasa Inggris) file:///C:/Program%20Files/Microsoft%20SQL%20Server%20Best%20Practices%20Analyzer/html/RuleInformation.html#_Rule:_Explicit_Index_Creation Harap perhatikan bahwa I gunakan SQL BPA diinstal di jalur default. Jika Anda mengubah jalur instalasi, itu tidak akan ada di sini.
Berikut beberapa Aturan yang saya minati:
(1)
Aturan desain basis data: Tabel tanpa Kunci Utama atau Batasan Unik
Periksa database untuk memastikan bahwa semua tabel memiliki Kunci Utama yang ditentukan atau kolom memiliki Batasan Unik yang ditentukan.
Aturan: Penamaan Objek Pengguna (penamaan objek pengguna)
mendeteksi objek pengguna yang diberi nama dengan awalan sp_, xp_, atau fn_ untuk menghindari konflik penamaan dengan objek bawaan SQL Server. Jika SQL Server menemukan bahwa prosedur tersimpan diawali dengan sp_, SQL Server akan menanyakan prosedur tersimpan terlebih dahulu di database master, yang memengaruhi kinerja.
Oleh karena itu, pedoman berikut harus diikuti:
Jangan gunakan awalan sp_ untuk memberi nama prosedur tersimpan yang ditentukan pengguna;
jangan gunakan awalan xp_ untuk memberi nama prosedur tersimpan tambahan yang ditentukan pengguna;
jangan gunakan awalan fn_ untuk memberi nama fungsi yang ditentukan pengguna
;.
Bahkan, Anda dapat menamainya dengan menggunakan awalan seperti usp_, uxp_, atau ufn_, dan u berarti ditentukan pengguna.
(2)
Aturan T-SQL: Kursor daftar kolom FOR UPDATE
mendeteksi klausa FOR UPDATE dalam prosedur, fungsi, tampilan, dan pemicu tersimpan. Ketika kursor mendefinisikan klausa FOR UPDATE, disarankan untuk menyediakan kolom kolom eksplisit. FOR UPDATE digunakan untuk menentukan kolom yang dapat diperbarui di kursor. Jika nama_kolom OF disediakan, hanya kolom terdaftar yang boleh diubah. Jika tidak ada daftar kolom yang ditentukan, semua kolom dapat diperbarui kecuali opsi konkurensi READ_ONLY ditentukan. SQL Server dapat mengoptimalkan operasi berdasarkan kolom tertentu.
Aturan: Penggunaan Kursor
memeriksa apakah kemampuan pembaruan kursor didefinisikan dengan benar dalam prosedur, fungsi, tampilan, dan pemicu yang tersimpan. Kegagalan akan dilaporkan dalam situasi berikut:
ketika kursor tidak menentukan klausa FOR UPDATE, namun diperbarui melalui kursor;
ketika kursor menentukan klausa FOR UPDATE, namun tidak diperbarui melalui kursor;
Namun, secara umum kami mencoba menghindari penggunaan kursor sisi server, karena ini menghabiskan sumber daya memori server dan mempengaruhi kinerja SQL Server. Kueri bertingkat atau pernyataan WHILE dapat digunakan sebagai pengganti kursor. Meskipun Anda menggunakan kursor, Anda harus memperhatikan penentuan beberapa opsi kursor, seperti FAST_FORWARD.
Aturan: Pembuatan Indeks Eksplisit
Disarankan untuk menggunakan CLUSTERED atau NONCLUSTERED untuk membuat indeks secara eksplisit.
Aturan: Daftar Kolom INSERT
mengharuskan saat menggunakan INSERT, daftar kolom harus disediakan secara eksplisit untuk meningkatkan pemeliharaan kode.
Aturan: Konfigurasi Pemicu Bersarang
mendeteksi pemicu yang tidak terpicu karena masalah konfigurasi dengan pemicu bersarang. Yang ini relatif jarang, jadi saya langsung posting.
Ketika opsi konfigurasi 'pemicu bersarang' diatur ke 0, setiap pemicu SETELAH yang ditentukan pada tabel/tampilan yang diperbarui di dalam pemicu INSTEAD OF tidak diaktifkan. Aturan ini:
1) Periksa nilai opsi konfigurasi dan keluar jika bukan 0.
2) Memindai semua pemicu INSTEAD OF dan menghasilkan daftar tabel/tampilan yang menjadi target DML dari dalam pemicu.
3) Memeriksa apakah ada target DML yang teridentifikasi yang memiliki pemicu SETELAH yang ditentukan pada target
tersebut kasus.
Aturan: Opsi NOCOUNT di Pemicu
mendeteksi pemicu dan memastikan bahwa SET NOCOUNT ON ditulis di depan pemicu.
SQL Server akan mengirimkan pesan 'selesai' setelah setiap pernyataan dieksekusi. Informasi ini dapat menyebabkan aplikasi yang memicu pemicu tersebut menimbulkan beberapa konsekuensi yang tidak diinginkan. Oleh karena itu, merupakan kebiasaan desain yang baik untuk menambahkan SET NOCOUNT ON di depan pelatuk.
Tentu saja, disarankan untuk menambahkan SET NOCOUNT ON di depan prosedur dan fungsi tersimpan. Dengan cara ini, jumlah baris yang terpengaruh oleh eksekusi serangkaian perintah SQL tidak akan dikirim kembali ke klien, sehingga mengurangi lalu lintas jaringan dan meningkatkan kinerja.
Aturan: Perbandingan NULL
mendeteksi perbandingan kesetaraan atau ketidaksetaraan yang melibatkan konstanta NULL dalam prosedur, fungsi, tampilan, dan pemicu yang tersimpan. Disarankan untuk menyetel ANSI_NULLS ke ON dan menggunakan kata kunci IS untuk membandingkan konstanta NULL.
Aturan: Hasil di Pemicu
memeriksa pemicu untuk memastikan bahwa pemicu tidak memiliki data yang dikembalikan ke pemanggil. Oleh karena itu, tidak disarankan untuk menggunakan pernyataan berikut dalam pemicu:
Pernyataan PRINT
SELECT (tanpa penugasan atau klausa INTO)
FETCH (tanpa penugasan)
Aturan: Cakupan Transaksi
mendeteksi rentang transaksi dalam prosedur tersimpan dan pemicu. Direkomendasikan agar awal dan akhir transaksi berada dalam struktur T-SQL yang sama.
Secara umum, cobalah untuk mempersempit cakupan transaksi sebanyak mungkin untuk menghindari memakan banyak sumber daya dan mempengaruhi kinerja SQL Server.
Aturan: SELECT *
mendeteksi penggunaan SELECT * dalam prosedur, fungsi, tampilan, dan pemicu tersimpan. Meskipun SELECT * lebih nyaman, hal ini akan mengurangi pemeliharaan program. Perubahan pada tabel atau tampilan dapat menyebabkan kesalahan atau perubahan kinerja.
Oleh karena itu, disarankan untuk secara eksplisit menentukan daftar bidang setelah pernyataan SELECT.
Aturan: Opsi SET
mendeteksi penggunaan pernyataan SET berikut dalam prosedur tersimpan dan pemicu.
Disarankan agar opsi berikut disetel ke ON:
ANSI_NULLS
ANSI_PADDING
ANSI_PERINGATAN
ARITHABORT
CONCAT_NULL_YIELDS_NULL
QUOTED_IDENTIFIER
merekomendasikan agar opsi berikut disetel ke OFF:
NUMERIC_ROUNDABOUT
Aturan: Penggunaan Tabel Temp
mendeteksi penggunaan tabel sementara dalam prosedur dan pemicu tersimpan. Saat membuat tabel sementara, CREATE INDEX perlu dibuat, dan setelah penggunaan selesai, tabel sementara harus dirilis.
Karena tabel sementara akan menghasilkan operasi IO disk dalam jumlah besar, disarankan untuk menggunakan variabel TABLE untuk menggantikan penggunaan tabel sementara.
Namun, karena keterbatasan pelaksanaan dan pemeliharaan informasi statistik secara bersamaan, tabel sementara tetap disarankan ketika sejumlah besar data dimasukkan ke dalam tabel sementara.
Aturan: TOP tanpa ORDER BY
mendeteksi kurangnya pernyataan ORDER BY TOP dalam prosedur, fungsi, tampilan, dan pemicu yang tersimpan. Saat menggunakan pernyataan TOP, disarankan untuk menentukan kondisi pengurutan. Jika tidak, hasil yang dihasilkan akan bergantung pada rencana eksekusi SQL dan menyebabkan perilaku yang tidak terduga.
Aturan: Penggunaan Tabel/Tampilan Skema yang Memenuhi Syarat
mendeteksi apakah pemilik ditentukan ketika tabel dan tampilan direferensikan dalam prosedur, fungsi, tampilan, dan pemicu yang tersimpan. Meskipun ketika mereferensikan objek tertentu di SQL Server, Anda tidak perlu menentukan server, database dan pemilik (skema), yang berarti Anda tidak memerlukan masalah server_name.database_name.owner_name.***, tetapi SQL Server merekomendasikan itu itu digunakan dalam prosedur tersimpan, fungsi, Saat mereferensikan tabel atau tampilan dalam tampilan atau pemicu, yang terbaik adalah menentukan pemilik tabel atau tampilan.
Ketika SQL Server menanyakan objek tabel/tampilan tanpa pemilik yang ditentukan, SQL Server terlebih dahulu menanyakan pemilik default, lalu dbo. Hal ini akan mengakibatkan biaya operasional tambahan untuk produk SQL Server. Dengan menentukan pemiliknya, Anda dapat meningkatkan kinerja SQL Server. (Pertama kali saya mendengar pernyataan ini)
4. Dokumen referensi dan
URL unduhan alat sumber daya terkait:
unduhan video: