Skip to content

Commit 04c7367

Browse files
Added Query Store stats update
1 parent 85644e5 commit 04c7367

File tree

2 files changed

+82
-2
lines changed

2 files changed

+82
-2
lines changed

sqldb-tips/get-sqldb-tips-compat-level-100-only.sql

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,25 @@ DECLARE @QueryStoreTimeFrom datetimeoffset = IIF(
342342
@QueryStoreCustomTimeEnd
343343
);
344344

345+
-- Opportunistically update statistics on Query Store internal tables
346+
BEGIN TRY
347+
348+
UPDATE STATISTICS sys.plan_persist_context_settings;
349+
UPDATE STATISTICS sys.plan_persist_plan;
350+
UPDATE STATISTICS sys.plan_persist_plan_feedback;
351+
UPDATE STATISTICS sys.plan_persist_query;
352+
UPDATE STATISTICS sys.plan_persist_query_hints;
353+
UPDATE STATISTICS sys.plan_persist_query_template_parameterization;
354+
UPDATE STATISTICS sys.plan_persist_query_text;
355+
UPDATE STATISTICS sys.plan_persist_runtime_stats;
356+
UPDATE STATISTICS sys.plan_persist_runtime_stats_interval;
357+
UPDATE STATISTICS sys.plan_persist_wait_stats;
358+
359+
END TRY
360+
BEGIN CATCH
361+
RAISERROR('Query Store statistics not updated, possibly due to insufficient permissions', 10, 1);
362+
END CATCH;
363+
345364
-- query wait stats aggregated by query hash and wait category
346365
WITH
347366
query_wait_stats AS
@@ -1767,6 +1786,21 @@ IF EXISTS (SELECT 1 FROM @TipDefinition WHERE tip_id IN (1480,1490,1500) AND exe
17671786
BEGIN TRY
17681787

17691788
WITH
1789+
index_size AS
1790+
(
1791+
SELECT p.object_id,
1792+
p.index_id,
1793+
SUM(ps.used_page_count) * 8 / 1024. AS total_index_size_mb
1794+
FROM sys.partitions AS p
1795+
INNER JOIN sys.dm_db_partition_stats AS ps
1796+
ON p.partition_id = ps.partition_id
1797+
AND
1798+
p.object_id = ps.object_id
1799+
AND
1800+
p.index_id = ps.index_id
1801+
GROUP BY p.object_id,
1802+
p.index_id
1803+
),
17701804
candidate_index AS
17711805
(
17721806
SELECT QUOTENAME(OBJECT_SCHEMA_NAME(o.object_id)) COLLATE DATABASE_DEFAULT AS schema_name,
@@ -1776,10 +1810,15 @@ SELECT QUOTENAME(OBJECT_SCHEMA_NAME(o.object_id)) COLLATE DATABASE_DEFAULT AS sc
17761810
i.is_disabled,
17771811
i.fill_factor,
17781812
IIF(i.fill_factor > 0 AND i.fill_factor < @FillFactorThreshold, 1, 0) AS is_low_fill_factor,
1779-
IIF(i.type_desc = 'CLUSTERED' AND i.is_unique = 0, 1, 0) AS is_non_unique_clustered
1813+
IIF(i.type_desc = 'CLUSTERED' AND i.is_unique = 0, 1, 0) AS is_non_unique_clustered,
1814+
ins.total_index_size_mb
17801815
FROM sys.objects AS o
17811816
INNER JOIN sys.indexes AS i
17821817
ON o.object_id = i.object_id
1818+
INNER JOIN index_size AS ins
1819+
ON o.object_id = ins.object_id
1820+
AND
1821+
i.index_id = ins.index_id
17831822
WHERE o.is_ms_shipped = 0
17841823
AND
17851824
o.type_desc IN ('USER_TABLE','VIEW')
@@ -1796,6 +1835,7 @@ SELECT td.tip_id,
17961835
', object: ', object_name,
17971836
', index: ' + index_name,
17981837
IIF(ci.is_non_unique_clustered = 1 AND td.tip_id = 1500, '', CONCAT(', index type: ', index_type)),
1838+
', index size (MB): ', FORMAT(total_index_size_mb, '#,0.00'),
17991839
IIF(ci.is_low_fill_factor = 1 AND td.tip_id = 1490, CONCAT(', fill_factor: ', ci.fill_factor), '')
18001840
)
18011841
AS nvarchar(max)

sqldb-tips/get-sqldb-tips.sql

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,25 @@ DECLARE @QueryStoreTimeFrom datetimeoffset = IIF(
330330
@QueryStoreCustomTimeEnd
331331
);
332332

333+
-- Opportunistically update statistics on Query Store internal tables
334+
BEGIN TRY
335+
336+
UPDATE STATISTICS sys.plan_persist_context_settings;
337+
UPDATE STATISTICS sys.plan_persist_plan;
338+
UPDATE STATISTICS sys.plan_persist_plan_feedback;
339+
UPDATE STATISTICS sys.plan_persist_query;
340+
UPDATE STATISTICS sys.plan_persist_query_hints;
341+
UPDATE STATISTICS sys.plan_persist_query_template_parameterization;
342+
UPDATE STATISTICS sys.plan_persist_query_text;
343+
UPDATE STATISTICS sys.plan_persist_runtime_stats;
344+
UPDATE STATISTICS sys.plan_persist_runtime_stats_interval;
345+
UPDATE STATISTICS sys.plan_persist_wait_stats;
346+
347+
END TRY
348+
BEGIN CATCH
349+
RAISERROR('Query Store statistics not updated, possibly due to insufficient permissions', 10, 1);
350+
END CATCH;
351+
333352
-- query wait stats aggregated by query hash and wait category
334353
WITH
335354
query_wait_stats AS
@@ -1762,6 +1781,21 @@ IF EXISTS (SELECT 1 FROM @TipDefinition WHERE tip_id IN (1480,1490,1500) AND exe
17621781
BEGIN TRY
17631782

17641783
WITH
1784+
index_size AS
1785+
(
1786+
SELECT p.object_id,
1787+
p.index_id,
1788+
SUM(ps.used_page_count) * 8 / 1024. AS total_index_size_mb
1789+
FROM sys.partitions AS p
1790+
INNER JOIN sys.dm_db_partition_stats AS ps
1791+
ON p.partition_id = ps.partition_id
1792+
AND
1793+
p.object_id = ps.object_id
1794+
AND
1795+
p.index_id = ps.index_id
1796+
GROUP BY p.object_id,
1797+
p.index_id
1798+
),
17651799
candidate_index AS
17661800
(
17671801
SELECT QUOTENAME(OBJECT_SCHEMA_NAME(o.object_id)) COLLATE DATABASE_DEFAULT AS schema_name,
@@ -1771,10 +1805,15 @@ SELECT QUOTENAME(OBJECT_SCHEMA_NAME(o.object_id)) COLLATE DATABASE_DEFAULT AS sc
17711805
i.is_disabled,
17721806
i.fill_factor,
17731807
IIF(i.fill_factor > 0 AND i.fill_factor < @FillFactorThreshold, 1, 0) AS is_low_fill_factor,
1774-
IIF(i.type_desc = 'CLUSTERED' AND i.is_unique = 0, 1, 0) AS is_non_unique_clustered
1808+
IIF(i.type_desc = 'CLUSTERED' AND i.is_unique = 0, 1, 0) AS is_non_unique_clustered,
1809+
ins.total_index_size_mb
17751810
FROM sys.objects AS o
17761811
INNER JOIN sys.indexes AS i
17771812
ON o.object_id = i.object_id
1813+
INNER JOIN index_size AS ins
1814+
ON o.object_id = ins.object_id
1815+
AND
1816+
i.index_id = ins.index_id
17781817
WHERE o.is_ms_shipped = 0
17791818
AND
17801819
o.type_desc IN ('USER_TABLE','VIEW')
@@ -1791,6 +1830,7 @@ SELECT td.tip_id,
17911830
', object: ', object_name,
17921831
', index: ' + index_name,
17931832
IIF(ci.is_non_unique_clustered = 1 AND td.tip_id = 1500, '', CONCAT(', index type: ', index_type)),
1833+
', index size (MB): ', FORMAT(total_index_size_mb, '#,0.00'),
17941834
IIF(ci.is_low_fill_factor = 1 AND td.tip_id = 1490, CONCAT(', fill_factor: ', ci.fill_factor), '')
17951835
)
17961836
AS nvarchar(max)

0 commit comments

Comments
 (0)