Membuat Pemantauan Dasar Kinerja SQL Server

8

Untuk mendapatkan gambaran umum dan data yang dapat dibandingkan, tugas saya saat ini adalah membuat baseline kinerja untuk mendapatkan beberapa angka tentang berbagai contoh SQL Server produktif.

Pikiranku adalah:

  • Saya ingin menggunakan beberapa DMV
  • Saya ingin menyertakan jejak profiler (termasuk paket. Exec.)
  • Saya ingin memasukkan data perfmon

Jadi yang saya coba capai adalah pemantauan kinerja umum yang dapat dimulai dan dihentikan (juga dijadwal ulang) yang mengembalikan:

  1. Semua informasi yang diperlukan untuk mengidentifikasi keberhasilan tugas optimasi kinerja yang sedang berlangsung

  2. Pasangan agregat, tokoh sederhana yang membantu memvisualisasikan kemajuan jangka panjang .. esp. untuk manajemen ;-)

  3. Rencana eksekusi yang dapat dieksekusi kembali dalam jejak profiler untuk membandingkan perubahan antrian individu dan peningkatan berdasarkan tugas pengoptimalan indeks

Saya menemukan beberapa informasi yang menggambarkan pembuatan baseline kinerja. Kebanyakan dari mereka sangat rumit atau hanya fokus pada salah satu indikator kinerja yang diinginkan (kebanyakan data perfmon).

Sampel / deskripsi yang paling cocok adalah sebagai berikut: Membuat Baseline Kinerja untuk SQL Server

Pertanyaannya adalah:

Adakah yang punya pengalaman membuat monitor kinerja semacam ini dengan cara yang bisa dilakukan dengan cepat?

Magier
sumber
3
Sedikit informasi yang dapat Anda peroleh dari Brent Ozar Sp_Blitz beberapa tautan referensi lainnya Di Sini dan Di Sini
Shanky
3
Saya pikir jawaban singkatnya adalah: Tidak. Anda perlu meluangkan waktu untuk menguraikan apa yang Anda perlukan untuk kinerja dasar. Berdasarkan penilaian itu, Anda perlu mengumpulkan pertanyaan untuk mengumpulkan informasi dan membuat objek db untuk menyimpan informasi. Selain saran @ Shanky, Anda juga dapat menggunakan sp_whoisactive untuk mengumpulkan informasi yang berguna
tommyfly
6
Anda juga dapat mempertimbangkan alat pihak ke-3 yang melakukan baselining (dan banyak yang lainnya). Yang Anda usulkan adalah menciptakan kembali banyak pekerjaan yang sudah dilakukan orang lain. Tidak, mereka tidak gratis, tetapi juga bukan waktu Anda (dan manajemen akan sangat menyadari hal itu).
Aaron Bertrand
Hai Aaron, bisakah Anda menyediakan alat pihak ketiga yang melakukan ini
TheGameiswar
3
Pergi untuk SQLSentry . Saya memang menggunakannya dalam pekerjaan saya sebelumnya dan ini merupakan alat yang sangat baik + memiliki dukungan yang sangat baik dan orang-orang di komunitas seperti @AaronBertrand :-)
Kin Shah

Jawaban:

8

Lebih dari satu tahun kemudian saya ingin semua orang tahu pengalaman saya dan hasil akhir dari pertanyaan / topik ini.

Saya mulai membuat sesuatu sendiri. Awalnya saya mengikuti Artikel Kumpulkan dan simpan data historis kinerja SQL Server counter dengan CMV oleh Tim Ford untuk mendapatkan sesuatu dan memperpanjang ini dengan Data apa pun yang ingin saya kumpulkan. Jadi sekali sehari saya menjalankan beberapa prosedur tersimpan pada setiap Sql Server yang mengumpulkan beberapa informasi spesifik dari DMV dan menyimpan hasilnya di Server lokal di dalam database. Ini termasuk penggunaan indeks, indeks yang hilang, entri log tertentu seperti autogrow, pengaturan server, pengaturan database aplikasi, fragmentasi, eksekusi pekerjaan, info log transaksi, informasi file, statistik tunggu dan banyak lagi.

Selain itu saya menambahkan hasil eksekusi reguler sp_blitz Brent Ozar ke repositori ini untuk mengumpulkan indikasi tambahan yang berharga untuk bekerja, meningkatkan, dan melaporkan.

Semua data kemudian dikumpulkan dari sana ke server Sql pemantauan khusus dan dengan cara ini saya membuat toko bundel untuk informasi kinerja yang relevan tentang semua server saya dan menggunakan ini sebagai dasar untuk investigasi dan pelaporan.

Kemudian saya membuat lembar excel dan juga laporan menggunakan layanan pelaporan untuk menganalisis dan menafsirkan. Beberapa sampel:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Saya juga mengkonfigurasi beberapa pemantauan penghitung kinerja menggunakan TYPEPERF yang terinspirasi oleh artikel " Mengumpulkan Data Kinerja ke dalam Tabel SQL Server " oleh Fedor Georgiev.

Dari contoh SQL Monitoring saya, saya memicu typeperf untuk menjalankan dan mengumpulkan jumlah sampel yang dapat dikonfigurasi dengan sampel yang dapat dikonfigurasi dan menyimpan hasilnya dalam db pemantauan pusat saya.

Ini memungkinkan saya untuk mengamati nilai kinerja jangka panjang, contoh:

masukkan deskripsi gambar di sini

Setelah beberapa saat menggunakan ini untuk mengumpulkan informasi dasar, ternyata cukup banyak pekerjaan pemeliharaan yang harus dihabiskan untuk melihat pekerjaan yang gagal, prosedur de-buggin (misalnya dalam kasus DB diambil offline, beberapa skrip gagal), mempertahankan pengaturan setelah server diganti ...

Juga basis data yang mengumpulkan semua catatan itu sendiri membutuhkan pemeliharaan dan penyetelan kinerja, sehingga pekerjaan tambahan muncul untuk menjaga data bermanfaat ...

Yang akhirnya benar-benar hilang adalah kemampuan untuk melihat hal-hal yang terjadi secara langsung. Dalam Kasus Terbaik, saya akan dapat memberi tahu apa yang mungkin terjadi pada hari berikutnya setelah pengumpul data berlari. Semua detail juga hilang. Saya tidak memiliki akses ke grafik jalan buntu, saya tidak bisa melihat rencana permintaan kueri yang berjalan dalam jangka waktu yang mencurigakan ....

Semua itu membuat saya akan membebankan biaya kepada manajemen untuk mengeluarkan uang untuk solusi prefesional yang tidak dapat saya buat sendiri.

Pilihan terakhir adalah membeli SentryOne karena dibandingkan dengan yang lain, SentryOne meyakinkan dan memberikan banyak informasi yang diperlukan untuk mengidentifikasi poin rasa sakit kami.

Sebagai kesimpulan akhir, saya akan menyarankan siapa pun yang mencari jawaban untuk pertanyaan serupa untuk tidak mencoba membuat hal-hal sendiri selama Anda tidak memiliki lingkungan kecil dan pada dasarnya sehat di tempat. Jika Anda memiliki beberapa sistem dan banyak masalah, lebih baik segera mencari solusi profesional dan menggunakan bantuan vendor pada masalah Anda daripada menghabiskan banyak waktu dan uang untuk membuat sesuatu yang kurang bermanfaat. Namun, rute ini masih sangat menarik dan membuat saya belajar banyak hal yang tidak ingin saya lewatkan.

Saya harap Anda menemukan ini berguna setelah Anda lari ke utas pertanyaan ini.

EDIT 20 April 2017: Brent Ozar baru-baru ini memposting artikel berikut di facebook yang semacam pendekatan serupa yang diambil oleh Tim SQL Tiger: https://blogs.msdn.microsoft.com/sql_server_team/sql-server-performance-baselining -laporan-unleashed-for-enterprise-monitoring /

Magier
sumber
2
Saya senang Anda sampai pada kesimpulan yang sama, dan Anda benar, waktu Anda jauh lebih baik dihabiskan untuk memperbaiki masalah Anda yang sebenarnya daripada menciptakan kembali roda. Roda Anda tampaknya sangat mengkilap: D
ConstantineK
6

Berikut adalah beberapa artikel bagus dengan beberapa contoh praktis yang dapat Anda temukan di sini:

Cara mendeteksi masalah kinerja SQL Server menggunakan baseline - Bagian 1 - Pendahuluan

Bagaimana mendeteksi masalah kinerja SQL Server menggunakan baseline - Bagian 2 - Mengumpulkan metrik dan pelaporan

Cara mendeteksi masalah kinerja SQL Server menggunakan baseline - Bagian 3

Sementara Bagian 1 akan memberikan Anda beberapa pengetahuan dasar tentang apa baseline itu, di Bagian 2 Anda dapat menemukan info bagaimana melakukannya sendiri menggunakan metode "orang miskin" (gratis dan bagus untuk belajar)

Bagian 3 memberikan beberapa contoh tentang bagaimana Anda dapat membuat garis dasar dan bagaimana menggunakan garis dasar dalam pemecahan masalah beberapa masalah melalui ApexSQL Monitor

NikolaD
sumber
4

Sebagai DBA yang cukup baru dicetak di bawah senjata, saya telah menjalankan keseluruhan alat gratis dan melakukan beberapa eksperimen di ruang berbayar (DPA, SQL Sentry, dan Foglight) dan itu benar-benar tergantung pada apa yang Anda inginkan dari alat tersebut.

Dalam pengalaman saya, hal yang paling penting adalah tidak hanya mengkomunikasikan baseline kinerja (manajemen sangat tidak peduli kecuali ada seseorang untuk berteriak), tetapi menghasilkan sesuatu dalam format yang mudah dikonsumsi yang membuat prioritas jelas dan mampu melacak kinerja masalah dalam produksi.

Anda benar-benar dapat membangun keterampilan Anda dengan pergi rute gratis, dan alat untuk SQL Server sangat bagus.

Dengan ini dan beberapa database / tabel tambahan dan pekerjaan dan waktu Anda dapat membangun sistem pemantauan dasar (tetapi tidak cantik) ini adalah alat untuk DBA; kecuali Anda mahir dalam hal-hal BI, Anda akan kesulitan menemukan waktu untuk menghasilkan hal-hal ramah bisnis yang berguna darinya, meskipun aplikasi Ozar sp_blitz cukup keren.

Setelah menghabiskan sekitar satu tahun melakukan hal gratis dan menyelesaikan banyak masalah (tetapi tidak mendapatkan banyak pembelian), saya dapat menjelaskan, setelah masalah besar, bahwa perangkat lunak pemantauan kinerja adalah prioritas, dan kami akan membelinya datanglah neraka atau air yang tinggi.

Setelah mendemokan klien yang disebutkan sebelumnya, saya memilih DPA karena manajemen dapat dengan mudah mengkonsumsi hasilnya, meskipun saya pasti memiliki lisensi klien untuk SQL Sentry Plan Explorer Pro (bernilai 1000%) dan sangat suka menggunakan versi server, hanya saja tidak mengambilnya. cara yang sama.

Saya juga mencoba membuat SQLNexus bekerja pada satu titik tapi saya akhirnya bekerja lebih banyak daripada yang saya tertarik, mungkin sesuai dengan kebutuhan Anda.

ConstantineK
sumber
1

Untuk dengan cepat membuat baseline kinerja untuk mendapatkan beberapa angka tentang berbagai contoh sql produktif, saya akan menggunakan uji coba gratis alat pihak ke-3 seperti Solarwinds Database Performance Analyzer.

Poldba
sumber
1

Baca buku ini!!! Tacklebox SQL Server

Ini menunjukkan kepada Anda bagaimana menggunakan query SSIS dan TSQL untuk mengumpulkan informasi pemantauan pada semua contoh SQL Server di lingkungan Anda.

thundercougarfalcon
sumber
0

Saya mengikuti rute yang mirip dengan beberapa poster di atas, tetapi kemudian menemukan sesuatu yang dibuat oleh Microsoft.

Itu disebutkan secara singkat di atas, tetapi tidak ada tautan eksplisit yang diberikan. Microsoft Tiger Team mengembangkan 'Tiger Toolbix' yang dapat diunduh dari sini: https://github.com/Microsoft/tigertoolbox

Video Youtube menjelaskan Tiger Toolbox: https://www.youtube.com/watch?v=bx_NGNEz94k

Ada juga https://github.com/sqlcollaborative/dbareports

Asher
sumber