Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Plan Explorer 3.0 Webinar – Contoh dan Tanya Jawab

Jumat lalu, saya memberikan webinar tentang Plan Explorer 3.0, fitur-fitur baru, dan mengapa kami memutuskan untuk menghilangkan edisi PRO dan memberikan semua fitur secara gratis . Jika Anda melewatkannya, Anda dapat menonton webinarnya di sini:

    Webinar Plan Explorer 3.0

Ada banyak pertanyaan bagus yang diajukan, dan saya akan mencoba menjawabnya di sini. Kami juga menanyakan beberapa pertanyaan kami sendiri pada poin yang berbeda selama presentasi, dan pengguna menanyakan detailnya, jadi saya akan mulai dengan pertanyaan survei. Kami memiliki puncak 502 peserta, dan saya akan menunjukkan pada grafik di bawah ini berapa banyak orang yang menjawab setiap pertanyaan. Karena pertanyaan pertama diajukan sebelum webinar dimulai secara teknis, lebih sedikit orang yang menjawabnya.

Pertanyaan Audiens

T:Apakah contoh kode tersedia?

J: Ya, tiga file sesi yang saya gunakan untuk demo tersedia di sini:

    Demo Webinar Plan Explorer 3.0

Anda dapat membukanya di versi terbaru Plan Explorer, tetapi jika Anda ingin menjalankan salah satu kueri lagi secara lokal, Anda memerlukan AdventureWorks2014 (dengan skrip yang diperbesar dari Jonathan Kehayias) dan/atau database sampel Wide World Importers yang baru.

T:Jadi semua yang ditampilkan hari ini ada di Plan Explorer yang baru, terpadu, dan gratis? Jika ya, apa model pendapatan baru perusahaan Anda?

J: Saya selalu terkejut ketika saya menemukan orang-orang yang berpikir bahwa yang kami tawarkan hanyalah Plan Explorer (saya melihatnya secara langsung, dan ada beberapa komentar serupa di posting blog Greg juga). Roti dan mentega asli kami ada di platform pemantauan kami, dan kami berharap pengalaman positif Anda dengan Plan Explorer akan mengarahkan Anda untuk mencoba solusi kami yang lain juga.

T:Kami masih menggunakan SQL Server 2008. Apakah ada keuntungan menggunakan PE vs SSMS?

J: Ya, meskipun Anda akan kehilangan beberapa fungsi (seperti Profil Kueri Langsung), ada lebih banyak informasi yang tersedia untuk Anda dibandingkan dengan SSMS, dan kami berupaya keras untuk membuat masalah tertentu lebih mudah ditemukan.

T:Akankah Live Query Profile berfungsi untuk SQL Server 2014?

J: Ya, selama Service Pack 1 diterapkan, karena fitur tersebut bergantung pada DMV yang ditambahkan di SQL Server 2014 SP1.

T:Apa batasan sehubungan dengan SQL Server 2012? Dapatkah saya menggunakan alat ini sama sekali?

J: Sangat. Batasan yang saya kemukakan selama webinar tentang SQL Server 2012 dan yang lebih rendah adalah bahwa mereka tidak dapat menangkap data Profil Kueri Langsung.

T:Apakah data hanya dikumpulkan untuk SQL Server 2014 dan lebih tinggi? Bagaimana jika SQL Server 2014 diinstal tetapi kompatibilitasnya disetel ke 2012?

J: Ya, Profil Kueri Langsung (dan bagan sumber daya) berfungsi di SQL Server 2014 (dengan setidaknya SP1), SQL Server 2016, dan Azure SQL Database. Itu tidak terpengaruh oleh tingkat kompatibilitas.

T:Versi SQL Server mana yang diperlukan untuk mendapatkan kembali informasi statistik tunggu?

J: Pengumpulan statistik tunggu bergantung pada sesi Acara yang Diperpanjang, jadi Anda harus menjalankan SQL Server 2008 atau lebih tinggi, dan mengeksekusi dalam konteks pengguna atau login dengan izin yang cukup untuk membuat dan melepaskan sesi Acara yang Diperpanjang (CONTROL SERVER di SQL Server 2008 dan 2008 R2, dan ALTER ANY EVENT SESSION di SQL Server 2012 dan yang lebih baru).

T:Bagaimana cara menampilkan Analisis Indeks atau bagan Profil Kueri Langsung?

J: Ada banyak variasi pada dua pertanyaan ini, dan dari suaranya, orang-orang secara aktif bermain dengan versi baru selama webinar, dan tidak melihat data Analisis Indeks atau data Profil Kueri Langsung. Jika Anda sudah memiliki paket yang diambil dari SSMS atau versi Plan Explorer yang lebih lama, tidak akan ada informasi untuk ditampilkan.

Untuk mengumpulkan Analisis Indeks data, Anda harus membuat perkiraan atau rencana aktual dari dalam Plan Explorer. Untuk melihat kolom dan kisi indeks, Anda harus memilih Operasi Terpilih:pada tarik-turun di bagian atas tab Analisis Indeks.

Untuk mengumpulkan Profil Kueri Langsung data, Anda harus membuat paket sebenarnya dari dalam Plan Explorer, dan dijalankan dengan 2014 SP1 atau lebih baik. Anda juga perlu memastikan bahwa Anda telah memilih opsi "Dengan Profil Kueri Langsung" (lihat gambar di sebelah kanan), dan tunggu hingga eksekusi kueri selesai sebelum grafik dirender. Di versi mendatang, grafik akan dirender secara real time, tetapi dalam rilis ini kami melakukannya setelah semua data dikumpulkan.

T:Apakah Live Query Profile berfungsi terhadap database kloning di SQL Server 2014 SP2?

J: Ya, ini akan berhasil, namun itu tidak akan memberikan banyak informasi karena basis data kloning kosong – Anda akan melihat perkiraan yang tepat dalam rencana, tetapi semua yang sebenarnya akan menjadi 0, dan metrik runtime tidak akan mewakili apa pun yang realistis atau kemacetan yang berarti. Kecuali jika Anda mengisi klon dengan data alternatif, seperti yang dipromosikan Erin Stellato di posting sebelumnya. Perhatikan juga bahwa jika Anda ingin rencana kueri mencerminkan ukuran data produksi nyata, Anda harus memastikan semua bentuk statistik otomatis dimatikan, jika tidak, mereka akan diperbarui saat Anda menjalankan kueri, dan kemudian semua perkiraan akan menjadi 0.

T:Apakah versi baru Plan Explorer berfungsi dengan SQL Server 2016?

J: Ya. Kami mendukung semua operator paket SQL Server 2016 baru dan perubahan showplan lainnya (lihat posting saya, "Dukungan Plan Explorer untuk SQL Server 2016"), dan add-in juga berfungsi dengan versi SSMS terbaru (lihat posting saya, "Mengumumkan Dukungan Add-In Plan Explorer untuk SSMS 2016").

T:Jadi, bahkan rencana eksekusi aktual di SSMS diberi label dengan estimasi biaya?

J: Ya itu betul. Saat Anda mengambil data Profil Kueri Langsung, kami dapat mengubah persentase biaya untuk semua operator, karena kami mengetahui dengan tingkat akurasi yang signifikan berapa banyak pekerjaan sebenarnya yang dilakukan setiap operasi (namun, kueri harus berjalan lebih lama dari ambang batas). Ini bisa sangat berguna jika Anda memecahkan masalah I/O, karena perkiraan sepertinya tidak pernah memperhitungkan kemacetan I/O. Siklus grafik berikut melalui perkiraan asli (kami selalu dapat menunjukkan kepada Anda apa yang akan dikatakan SSMS kepada Anda), aktual setelah penetapan biaya ulang, dan aktual setelah penetapan biaya ulang dan perubahan biaya menjadi "oleh I/O" dan lebar jalur menjadi "menurut ukuran data":

T:Saya biasa membuka paket yang dibuat oleh SSMS di Plan Explorer, tetapi dari apa yang baru saja ditunjukkan Aaron, apakah saya memahami dengan benar bahwa saya harus menjalankan kueri (sambil menyetel) dari Plan Explorer?

J: Saya menjawab pertanyaan ini di webinar, tetapi untuk lebih jelasnya, saya pikir ada dua langkah dalam evolusi kueri:(1) memastikan hasil yang benar, dan (2) pengoptimalan kinerja. Saya sangat percaya bahwa saat ini Anda harus menggunakan SSMS untuk (1) dan Plan Explorer untuk (2). Saya telah lama mempromosikan bahwa begitu orang yakin mereka memiliki hasil yang benar, mereka harus menyesuaikan dengan menghasilkan aktual rencana eksekusi dari dalam Plan Explorer, karena kami mengumpulkan lebih banyak informasi runtime untuk Anda. Informasi runtime ini sangat membantu jika Anda membagikan rencana Anda di situs Tanya Jawab kami, karena ini membuat semua metrik dan potensi kemacetan menjadi lebih jelas.

Q:Berapa persentase di bawah operator… misalnya 2,885% di bawah fungsi?

J: Persentase itu bukan biaya melainkan persentase baris yang benar-benar diproses dibandingkan dengan perkiraan. Dalam hal ini, SQL Server memperkirakan bahwa fungsi tersebut akan mengembalikan 10.000 baris, tetapi pada saat runtime ia kembali mendekati 300.000! Anda dapat melihat tooltip jika Anda mengarahkan kursor hanya pada % angka itu, dan Anda dapat melihat perbedaan estimasi jumlah baris di tooltip untuk operator, atau di kisi lain seperti Operasi Atas (fungsi mengembalikan jumlah baris yang berbeda sekarang daripada sebelumnya selama demo):

T:Dapatkah Anda meminimalkan atau menyembunyikan porsi pemutaran ulang untuk mendapatkan lebih banyak real estat untuk paket itu sendiri?

J: Ya, semua panel kami dapat disesuaikan; banyak memiliki push-pin yang beralih antara statis dan sembunyikan otomatis, sebagian besar panel dapat diseret (seperti di Visual Studio, SSMS, dll.), dan panel replay khususnya memiliki panah kecil di tengah atas yang memungkinkan Anda untuk menampilkan/menyembunyikan dengan cepat:

T:Dapatkah Anda melihat blok kode yang melanggar langsung dari rencana?

J: Saya tidak yakin apakah saya menafsirkan pertanyaan dengan benar, tetapi semua panel kami peka terhadap konteks, dan pernyataan untuk rencana yang saat ini sedang diperiksa ditampilkan di kisi Pernyataan dan di panel Data Teks:

Jika teks pernyataan tidak sepenuhnya terlihat karena panjangnya, Anda selalu dapat mengklik kanan sel itu dan memilih Salin Pernyataan ke Salin Teks Perintah, lalu beralih ke tab itu. Atau, jika Anda tidak ingin menimpa konten saat ini dari tab Teks Perintah, pilih Salin> Sel dan tempel ke sesi baru, SSMS, atau editor lain.

T:Bagaimana cara menghentikan "Dapatkan paket aktual" jika saya tidak sengaja memulai kueri 1 jam?

J: Jika kueri sedang berjalan, ada tombol Berhenti di bilah status, kiri bawah:

T:Bukankah lebih baik menggunakan DROP_EXISTING =ON daripada menjatuhkan indeks terlebih dahulu dan membuat yang baru?

J: Kami pasti memiliki rencana untuk membuat skrip indeks lebih kuat di masa mendatang, termasuk opsi seperti DROP_EXISTING dan ONLINE.

T:Apakah ini terkait dengan SentryOne?

J: Semua fungsi di Plan Explorer juga tersedia di SentryOne Client. Secara teknis Anda tidak perlu menginstal Plan Explorer jika Anda memiliki klien, kecuali bahwa pembaruan didorong pada jadwal yang berbeda, jadi dalam banyak kasus mungkin masuk akal untuk menginstal keduanya.

Ingatlah bahwa rencana yang kami kumpulkan untuk Anda selama aktivitas pemantauan adalah rencana perkiraan, karena tingginya biaya pengumpulan rencana aktual untuk semua kueri yang dijalankan di server. Ini berarti bahwa jika Anda menelusuri rencana yang dikumpulkan di klien, itu tidak akan memiliki informasi tambahan seperti Analisis Indeks dan data Profil Kueri Langsung. Anda selalu dapat menjalankan kueri lagi, secara interaktif, untuk mendapatkan data waktu proses tambahan tersebut.

T:Berapa overhead kinerja fitur baru ini?

J: Sebagian besar informasi yang kami kumpulkan tidak lebih mahal daripada jika Anda menjalankan kueri yang sama dan mengumpulkan data runtime yang sama dari Management Studio (misalnya dengan SHOWPLAN, STATISTICS TIME, dan STATISTICS IO aktif). Namun, sebagian besar dari ini diimbangi oleh perilaku default kami dalam membuang hasil, jadi kami tidak membebani server dengan upaya mengirimkan hasil ke aplikasi kami.

Untuk rencana yang sangat kompleks yang berjalan melawan database dengan skema yang sangat kompleks dan BANYAK indeks, pengumpulan indeks dan statistik bisa jadi kurang efisien, tetapi ini akan sangat tidak mungkin menyebabkan dampak nyata pada beban kerja yang ada. Ini tidak akan terpengaruh oleh jumlah baris dalam sebuah tabel, yang disebutkan dalam satu variasi pertanyaan ini.

Untuk kueri yang benar-benar berjalan lama atau intensif sumber daya, perhatian terbesar saya adalah koleksi Profil Kueri Langsung kami. Kami memiliki dua preferensi yang dapat membantu dalam hal ini:apakah akan menyertakan Profil Kueri Langsung dengan semua pembuatan rencana aktual secara default, dan interval untuk mengumpulkan data dari DMV. Sementara saya masih merasa overhead koleksi ini tidak boleh mendekati overhead kueri itu sendiri, Anda dapat mengubah setelan ini untuk membuat koleksi kurang agresif.

Itu semua mengatakan, dengan penafian bahwa segala sesuatu harus dilakukan dalam jumlah sedang, saya belum mengamati masalah apa pun yang terkait dengan overhead pengumpulan data, dan tidak akan ragu untuk menggunakan fungsionalitas penuh terhadap instance produksi.

T:Apakah ada sesuatu di sana untuk membantu membangun indeks yang difilter?

J: Saat ini kami tidak memiliki fungsi apa pun yang merekomendasikan indeks yang difilter, tetapi pasti ada di radar kami.

T:Adakah rencana untuk menambahkan fitur perbandingan paket kueri ke Plan Explorer?

J: Ya, ini tentu sudah ada di roadmap kami jauh sebelum fungsi ini diperkenalkan di SSMS. :-) Kami akan meluangkan waktu kami dan membuat set fitur yang diharapkan dari kami.

T:Bisakah Anda menggunakan paket SSIS untuk mengetahui kinerja sebuah paket?

J: Saya kira Anda bisa, jika Anda menjalankan paket atau pekerjaan melalui T-SQL terhadap server (Plan Explorer tidak memiliki kemampuan untuk meluncurkan hal-hal seperti paket SSIS secara langsung). Tetapi aplikasi hanya akan menampilkan aspek kinerja yang dibuat terlihat melalui SQL Server – jika ada inefisiensi dalam paket SSIS yang tidak terkait dengan eksekusi terhadap SQL Server (misalnya, infinite loop dalam tugas skrip), kami tidak akan dapat mengambilnya, karena kami tidak memiliki visibilitas dan tidak melakukan analisis kode apa pun.

T:Dapatkah Anda dengan cepat menunjukkan cara menggunakan fitur analisis kebuntuan?

J: Saya melewatkan pertanyaan ini selama webinar, tetapi saya berbicara tentang fungsi ini di Demo Kit saya, Jonathan Kehayias telah membuat blog tentangnya di sini, Steve Wright memiliki video tentangnya di YouTube, dan dokumentasi resmi dapat ditinjau di Panduan Pengguna PE.

T:Bisakah ini digunakan seperti Profiler? Dapatkah saya menganalisis seluruh beban kerja?

J: Plan Explorer dirancang untuk membantu menganalisis kueri individual dan rencana eksekusinya. Kami memiliki platform pemantauan berfitur lengkap untuk upaya cakupan yang lebih besar, dan ada juga beberapa alat analisis beban kerja pihak ketiga.

T:Saya sangat baru dalam penyetelan kueri – bisakah Anda menyarankan alat dan artikel untuk pemahaman yang lebih dalam?

J: Ada banyak sumber daya untuk menjadi lebih baik dalam penyetelan kueri:

  • Buku T-SQL apa pun oleh Itzik Ben-Gan, Grant Fritchey, atau Benjamin Nevarez;
  • Setiap entri blog oleh Paul White atau Rob Farley;
  • Tanya Jawab di sini di answer.sqlperformance.com atau lebih di dba.stackexchange.com;
  • Kueri penyetelan video di YouTube;
  • Demo Kit (dengan versi baru segera hadir!); dan,
  • Latihan . Dengan serius. Anda dapat membaca semua buku dan artikel yang Anda inginkan, tetapi tanpa pemecahan masalah kerja langsung yang praktis dan meningkatkan kueri bermasalah dengan masalah kinerja nyata, akan sulit untuk menjadi seorang ahli. IMHO.

Ringkasan

Terima kasih telah menghadiri webinar, dan terima kasih banyak atas semua pertanyaan bagusnya. Maaf saya tidak bisa membahas semuanya, tapi saya harap ini tetap membantu. Jika Anda memiliki pertanyaan yang tidak saya jawab di atas, jangan ragu untuk bertanya langsung kepada saya di [email protected].


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pencarian Tabel di Pekerjaan IRI yang Kompatibel dengan SortCL

  2. Penyembunyian Data Real-Time Menggunakan Pemicu

  3. Notasi ERD dalam Pemodelan Data

  4. Kasus penggunaan untuk sp_prepare / sp_prepexec

  5. Cara Menghapus Revisi Postingan menggunakan WP-CLI