Friday, 27. December 2019
Wie verfolge ich den Fortschritt des Befehls CREATE INDEX?
Benedikt
Inhaber & Geschäftsführer
Wie können Sie den Fortschritt überprüfen beim Erstellen eines Indexes?
- !! Sie müssen
SET STATISTICS PROFILE ON
hinzufügen. oderSET STATISTICS XML ON;
In dem Abfrage-Batch, der denCREATE INDEX
ausführt (und vor derCREATE INDEX
-Anweisung steht, falls dies nicht offensichtlich war), werden in dieser DMV für diese SPID / session_id keine Zeilen angezeigt !! - Der IN-Operator wird verwendet, um die Indexeinfügezeile herauszufiltern, die, falls enthalten, die TotalRows-Werte erhöht, wodurch die Berechnungen verzerrt werden, da in dieser Zeile keine verarbeiteten Zeilen angezeigt werden.
- Die hier angezeigte Zeilenzahl (dh TotalRows) ist doppelt so hoch wie die Zeilenzahl der Tabelle, da zwei Schritte ausgeführt werden, von denen jeder für alle Zeilen ausgeführt wird: der erste ist ein “Table Scan” oder “Clustered Index Scan” und der zweite ist die “Sortierung”. Sie sehen “Table Scan”, wenn Sie einen Clustered Index oder einen NonClustered Index auf einem Heap erstellen. Sie sehen “Clustered Index Scan”, wenn Sie einen NonClustered Index für einen Clustered Index erstellen.
DECLARE @SPID INT = 51;
;WITH agg AS
(
SELECT SUM(qp.[row_count]) AS [RowsProcessed],
SUM(qp.[estimate_row_count]) AS [TotalRows],
MAX(qp.last_active_time) - MIN(qp.first_active_time) AS [ElapsedMS],
MAX(IIF(qp.[close_time] = 0 AND qp.[first_row_time] > 0,
[physical_operator_name],
N'<Transition>')) AS [CurrentStep]
FROM sys.dm_exec_query_profiles qp
WHERE qp.[physical_operator_name] IN (N'Table Scan', N'Clustered Index Scan',
N'Index Scan', N'Sort')
AND qp.[session_id] = @SPID
), comp AS
(
SELECT *,
([TotalRows] - [RowsProcessed]) AS [RowsLeft],
([ElapsedMS] / 1000.0) AS [ElapsedSeconds]
FROM agg
)
SELECT [CurrentStep],
[TotalRows],
[RowsProcessed],
[RowsLeft],
CONVERT(DECIMAL(5, 2),
(([RowsProcessed] * 1.0) / [TotalRows]) * 100) AS [PercentComplete],
[ElapsedSeconds],
(([ElapsedSeconds] / [RowsProcessed]) * [RowsLeft]) AS [EstimatedSecondsLeft],
DATEADD(SECOND,
(([ElapsedSeconds] / [RowsProcessed]) * [RowsLeft]),
GETDATE()) AS [EstimatedCompletionTime]
FROM comp;
Unsere Expert:innen stehen Ihnen bei allen Fragen rund um Ihre IT Infrastruktur zur Seite.
Kontaktieren Sie uns gerne über das
Kontaktformular und vereinbaren ein unverbindliches
Beratungsgespräch mit unseren Berater:innen zur
Bedarfsevaluierung. Gemeinsam optimieren wir Ihre
Umgebung und steigern Ihre Performance!
Wir freuen uns auf Ihre Kontaktaufnahme!
Taunusstraße 72
55118 Mainz
info@madafa.de
+49 6131 3331612
55118 Mainz
info@madafa.de
+49 6131 3331612
Bürozeiten
Montag bis Donnerstag:
9:00 - 17:00 Uhr MEZ
Freitags:
9:30 - 14:00 Uhr MEZ
Wir sind Ihre SQL Expert:innen!
Noch Fragen? - Wir haben immer die passende Antwort für Sie!