Một câu hỏi khác về máy chủ SQL: Tôi có một truy vấn đơn giản cung cấp cho tôi SQL chuyên sâu nhất về CPU kể từ khi bộ đếm được đặt lại:
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
Câu 1: Chính xác thì cái plan_handle
gì? Nó dường như không phải là một hàm băm của kế hoạch, giống như trong Oracle. Tôi hỏi bởi vì tôi muốn có thể phát hiện ra tình huống trong đó kế hoạch của một tuyên bố có thay đổi.
Câu hỏi 2: Khi tôi có plan_handle, tôi quan tâm đến kế hoạch thực tế. Vì vậy, tôi làm, ví dụ:
select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)
Trong cột query_plan tôi nhận được một liên kết mà khi tôi nhấp vào sẽ hiển thị một tài liệu XML. Nếu tôi lưu nó trên đĩa dưới dạng any.sqlplan, tôi có thể nhấp đúp vào nó trong Windows và nó sẽ hiển thị chính xác trong Management Studio. Chắc chắn phải có cách tránh bước này?!
Câu hỏi 3: Có cách nào để chuyển đổi lại XML thành định dạng văn bản, như trong những ngày xưa của SET SHOWPLAN_TEXT không? Tôi muốn có thể xem chúng bằng đồ họa, nhưng cũng tự động hóa việc phân biệt chúng theo một cách có ý nghĩa nào đó.
Cảm ơn!
<ShowPlanXML xmlns="http://schemas.microsoft.com...
nhưng vẫn không có cách nào để hiển thị trực tiếp - trước tiên tôi cần lưu nó vào đĩa dưới dạng.sqlplan
tệp. Kỳ dị. Cảm ơn tho ':)