Alat untuk Mengidentifikasi Indeks yang Dibutuhkan

8

Saya ingin membuat indeks terbaik untuk setiap tabel di database saya. Apakah ada permintaan atau alat dalam SQL Server untuk membantu proses ini?

mehdi lotfi
sumber
1
Ada beberapa indeks yang disarankan tetapi ini sangat terbatas dan masih harus dievaluasi oleh seseorang yang tahu apa yang mereka lakukan. Apakah Anda memiliki pertanyaan spesifik tentang pengindeksan?
JNK
1
Apakah ada kueri / tabel yang kinerjanya buruk? Sebagai JNK tersirat Anda harus benar-benar hanya menambahkan indeks ketika Anda tahu apa yang Anda lakukan (dan mengujinya terlepas). Kecuali Anda memiliki alasan untuk meyakini bahwa tabel membutuhkan indeks (tabel besar, kueri lambat, indeks berkerumun yang jelas), Anda tidak boleh hanya mencoba dan menambahkannya
Ben Brocka

Jawaban:

10

Ya, ada alat, seperti penasihat tuning engine database. Itu kapal dengan SQL Server dan melakukan beberapa hal yang cukup jahat:

  • Ini memungkinkan Anda untuk mempertimbangkan hanya beban kerja yang sangat kecil (bahkan satu permintaan). Yang kemudian akan menyarankan indeks yang dapat membantu beban kerja yang kecil saja, tanpa memperhatikan apa pun dengan sisa beban kerja (indeks membantu mempercepat beberapa pertanyaan, tetapi mereka dapat memperlambat yang lain, terutama menyisipkan / memperbarui / menghapus), apalagi sisanya. dari siklus bisnis.
  • Sering akan merekomendasikan indeks berlebihan yang hanya berbeda oleh kolom tambahan atau kolom tambahan.
  • Ini benar-benar, sangat, sangat suka memasukkan kolom - saya pikir itu mungkin jimat.

Pendekatan yang tepat untuk penyetelan indeks adalah dengan mempertimbangkan seluruh beban kerja Anda selama satu siklus bisnis lengkap. Terkadang lebih baik beralih ke alat pihak ke-3 daripada menemukan kembali roda. DBSophic membuat produk gratis yang disebut Qure Workload Analyzer yang saya pikir melakukan pekerjaan yang jauh lebih baik daripada DTA - tetapi alat berlisensi mereka (Qure Workload Optimizer) benar-benar fenomenal dalam fungsinya. Tahun lalu saya membuat blog tentang bagaimana alat ini bekerja ketika terintegrasi dengan SQL Sentry ).

Ada beberapa opsi lain juga, misalnya indeks yang hilang dilaporkan dalam DMV, dan Anda juga dapat menemukan indeks mana yang sedang ditulis (sehingga mereka mengambil ruang dan mempengaruhi operasi penyisipan / pembaruan / penghapusan) tetapi tidak pernah (atau jarang) ) digunakan oleh permintaan pengguna:

Tetapi ini juga perlu peringatan bahwa DMV hanya valid sejak SQL Server terakhir restart, dan bahwa mereka tidak perlu mencakup siklus bisnis yang tepat (dan karenanya mungkin kehilangan informasi penting

Aaron Bertrand
sumber
7

Alat yang Anda bicarakan ini disebut Database Engine Tuning Advisor (disingkat DTA). Ini dapat mengambil sejumlah input dan memberikan rekomendasi tentang hal-hal seperti indeks yang hilang. Perlu dicatat, bahwa ini hanya saran dan pertimbangan yang cermat harus diambil alih-alih mengikuti rekomendasi DTA secara membuta.

Tautan untuk Tutorial DTA

Perlu juga dicatat bahwa ada DMV bawaan untuk mengumpulkan jenis informasi tersebut:

Thomas Stringer
sumber