Menampilkan paket kueri di Server Management Studio

9

Pertanyaan lain SQL server: Saya memiliki pertanyaan sederhana yang memberi saya SQL intensif paling CPU sejak penghitung diatur ulang:

select top 10  
    sum(qs.total_worker_time) as total_cpu_time,  
    sum(qs.execution_count) as total_execution_count, 

    qs.plan_handle, st.text  
from  
    sys.dm_exec_query_stats qs 
cross apply sys.dm_exec_sql_text(qs.plan_handle) as st
group by qs.plan_handle, st.text 
order by sum(qs.total_worker_time) desc

Pertanyaan 1: Apa sebenarnya itu plan_handle? Tampaknya bukan hash dari rencana, seperti di Oracle. Saya bertanya karena saya ingin dapat mendeteksi situasi di mana rencana pernyataan mengalami perubahan.

Pertanyaan 2: Setelah saya memiliki plan_handle, saya tertarik dengan rencana yang sebenarnya. Jadi saya lakukan, misalnya:

select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)

Di kolom query_plan saya mendapatkan tautan bahwa ketika saya mengklik menampilkan dokumen XML. Jika saya menyimpannya di disk sebagai apapun.sqlplan, saya dapat mengklik dua kali di Windows dan ditampilkan dengan benar di Management Studio. Tentunya harus ada cara untuk menghindari langkah ini ?!

Pertanyaan 3: Apakah ada cara untuk mengubah kembali XML ke format tekstual, seperti di masa lalu SET SHOWPLAN_TEXT? Saya ingin dapat melihatnya secara grafis, tetapi juga mengotomatiskannya dengan cara yang bermakna.

Terima kasih!

Gayus
sumber

Jawaban:

7

Saya menemukan tip berikut dalam buku SQL Server 2008 Internal dan Pemecahan Masalah oleh Wrox Press:

Jika Anda menggunakan SQL 2008 SSMS yang terhubung ke SQL 2005 Server, ketika Anda mengklik pada rencana permintaan XML itu akan memuat rencana permintaan grafis untuk Anda secara otomatis.

Saya memverifikasi itu berfungsi menggunakan kueri berikut dari buku yang sama:

select session_id, text, query_plan
from sys.dm_exec_requests
cross apply sys.dm_exec_sql_text(sql_handle)
cross apply sys.dm_exec_query_plan(plan_handle)

Juga, jika Anda belum melihatnya, lihat Plan Explorer gratis SQL Sentry. Anda harus menyimpan XML ke disk sebagai .sqlplan terlebih dahulu, tetapi ia menawarkan tampilan yang jauh lebih mudah untuk menggunakan Rencana Eksekusi SQL. Semoga seseorang akan datang dengan alat Diff Eksekusi Rencana Visual Visual suatu hari nanti. : D

Jeff
sumber
9

A1: plan_handle adalah hash untuk sekelompok pernyataan, atau batch.

A2: Tidak, dm_exec_query_plan mengembalikan rencana kueri dalam format XML, jadi Anda perlu mengkliknya untuk melihat grafik.

A3. Coba ini:

SELECT query_plan 
FROM sys.dm_exec_text_query_plan (0x06000100A27E7C1FA821B10600,0,-1);
SQLRockstar
sumber
1
Aku kembali <ShowPlanXML xmlns="http://schemas.microsoft.com...tetapi masih ada ada cara untuk menampilkannya secara langsung - saya harus menyimpannya ke disk sebagai .sqlplanfile pertama. Aneh. Terima kasih ya :)
Gayus