SQL Server でパフォーマンスを計測したかったので調査してまとめました。
処理時間を計測する
処理を開始する前にシステム日時を取得し、処理完了後に開始日時とシステム日時の差を取得します。
DATEDIFF の引数を変えれば単位を変えることができます(例では ms)。
DECLARE @STARTDATETIME datetime2 = SYSDATETIME()
-- ここに計測したいSQLを書く
SELECT DATEDIFF(MILLISECOND, @STARTDATETIME, SYSDATETIME()) AS PROCESSING_TIME_MS
キャッシュを消す
SQL Server はデータバッファのキャッシュやクエリプランのキャッシュを再利用する賢いヤツなので純粋な処理時間を計測したい場合はキャッシュを消します。
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
処理を待機する
念のためキャッシュを消した後数秒待機させます。
WAITFOR DELAY '00:00:10'
スポンサー
まとめ
以上をまとめると処理時間を計測することができます。
-- キャッシュを消す
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
GO
-- キャッシュ消去後数秒待機する
WAITFOR DELAY '00:00:10'
-- 開始日時を取得する
DECLARE @STARTDATETIME datetime2 = SYSDATETIME()
-- ここに計測したいSQLを書く
-- 終了日時と開始日時の差から処理時間を取得する
SELECT DATEDIFF(MILLISECOND, @STARTDATETIME, SYSDATETIME()) AS PROCESSING_TIME_MSSQL Serverで処理時間を計測する
関連情報
SQL Server に関連する記事を以下にまとめています。
SQL Server のインストールや設定は PowerShell で自動化できます。
PowerShell に関連する記事を以下にまとめています。
テレワークしている方には以下の記事がおすすめです。
私のお気に入りは REALFORCE と R&F BELX のルイボスティーです。
エンジニア初心者向けに本当に使えるツールを紹介しています。
特に Notion はタスク管理に本当に便利です。