Поиск…


Включить хранилище запросов в базе данных

В базе данных можно включить хранилище запросов, используя следующую команду:

ALTER DATABASE tpch SET QUERY_STORE = ON

SQL Server / Azure SQL Database будет собирать информацию о выполненных запросах и предоставлять информацию в представлениях sys.query_store:

  • sys.query_store_query
  • sys.query_store_query_text
  • sys.query_store_plan
  • sys.query_store_runtime_stats
  • sys.query_store_runtime_stats_interval
  • sys.database_query_store_options
  • sys.query_context_settings

Получить статистику выполнения для SQL-запросов / планов

Следующий запрос будет возвращать информацию о qeries, их планах и средней статистике относительно их продолжительности, времени процессора, физического и логического чтения io.

SELECT Txt.query_text_id, Txt.query_sql_text, Pl.plan_id,
        avg_duration, avg_cpu_time, 
        avg_physical_io_reads, avg_logical_io_reads
FROM sys.query_store_plan AS Pl  
JOIN sys.query_store_query AS Qry  
    ON Pl.query_id = Qry.query_id  
JOIN sys.query_store_query_text AS Txt  
    ON Qry.query_text_id = Txt.query_text_id
JOIN sys.query_store_runtime_stats Stats
    ON Pl.plan_id = Stats.plan_id

Удаление данных из хранилища запросов

Если вы хотите удалить какой-либо запрос или план запроса из хранилища запросов, вы можете использовать следующие команды:

EXEC sp_query_store_remove_query 4;
EXEC sp_query_store_remove_plan 3; 

Параметры для этих хранимых процедур - это идентификатор запроса / плана, полученный из системных представлений.

Вы также можете просто удалить статистику выполнения для конкретного плана, не удаляя план из магазина:

EXEC sp_query_store_reset_exec_stats 3;  

Параметр, указанный для этого идентификатора плана процедуры.

Форсирование плана запроса

Оптимизатор SQL Query выберет возможный план baes, который он может найти для некоторого запроса. Если вы можете найти какой-то план, который оптимально подходит для какого-либо запроса, вы можете заставить QO всегда использовать этот план, используя следующую хранимую процедуру:

EXEC sp_query_store_unforce_plan @query_id, @plan_id

С этого момента QO всегда будет использовать план, предоставленный для запроса.

Если вы хотите удалить эту привязку, вы можете использовать следующую хранимую процедуру:

EXEC sp_query_store_force_plan @query_id, @plan_id

С этого момента QO снова попытается найти лучший план.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow