Navicatブログ

リレーショナルデータベースでのクエリ実行時間の測定 2023年12月15日 Robert Gravelle

データベース最適化の分野では、クエリの実行時間を理解し、監視することが重要です。データベース管理者、開発者、またはパフォーマンスチューニングに携わっている人であっても、クエリの実行にかかる時間を測定する方法を知っていれば、データベース操作の効率について貴重な洞察を得ることができます。この記事では、MySQL、PostgreSQL、Microsoft SQL Serverなどの一般的なリレーショナルデータベースでクエリの実行時間を測定するための様々な手法を探ります。

MySQL

SQLプロファイラーの使用:

        
SET profiling = 1;
-- Your SQL Query Goes Here
SHOW PROFILES;
        
    

この一連のコマンドにより、プロファイリングが有効になり、クエリが実行され、プロファイリングの結果が表示されます。実行時間(秒単位)を確認するためには、“持続時間“列を見てください。

profiling_results (131K)

合計期間を計算するためには、次のSQLクエリを使用できます:

        
SELECT SUM(Duration) AS TotalDuration
FROM information_schema.profiling
WHERE Query_ID > 1;
        
    
summing_duration (24K)

PostgreSQL

タイミングを有効にする:

PostgreSQLには、クエリの実行時間を測定する機能が組み込まれています。次のコマンドを実行すると、タイミングを有効にできます:

        
\timing
-- Your SQL Query Goes Here
        
    

これにより、クエリの実行にかかった時間がミリ秒単位で表示されます。

pg_stat_statementsの使用:

PostgreSQLには、実行されたSQLステートメントの詳細ビューを提供するpg_stat_statementsと呼ばれる拡張機能が付属しています。これを使用するためには、PostgreSQL設定でその拡張機能が有効になっていることを確認し、クエリを実行します:

        
SELECT total_time, calls, query
FROM pg_stat_statements
WHERE query = 'Your SQL Query Goes Here';
        
    

これにより、指定されたクエリの実行に費やされた合計時間に関する情報が得られます。

Microsoft SQL Server

SET STATISTICS TIMEの使用:

SQL Serverでは、SET STATISTICS TIME ONコマンドを使用して、セッションの時間統計を有効にすることができます。クエリを実行すると、“メッセージ”タブに合計時間を示すメッセージが表示されます:

        
SET STATISTICS TIME ON
-- Your SQL Query Goes Here
SET STATISTICS TIME OFF
        
    

sys.dm_exec_query_statsにクエリを実行する:

よりプログラム的なアプローチとして、sys.dm_exec_query_stats動的管理ビューに対してクエリを実行して、クエリの実行時間に関する情報を取得できます:

        
SELECT total_elapsed_time, execution_count, text
FROM sys.dm_exec_query_stats
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
WHERE text LIKE 'Your SQL Query Goes Here%';
        
    

このクエリは、合計経過時間とクエリが実行された回数に関する情報を取得します。

Oracle Database

SQL*Plus AUTOTRACEの使用:

Oracle Databaseには、SQL*Plus AUTOTRACE機能が用意されており、これを使用してSQL文の実行計画と統計を表示できます。これを有効にするためには、次のコマンドを使用します:

        
SET AUTOTRACE ON
-- Your SQL Query Goes Here
SET AUTOTRACE OFF
        
    

出力には、経過時間、CPU時間、その他の統計に関する情報が含まれます。

V$SQLにクエリを実行する:

さらに詳細な情報については、V$SQL動的パフォーマンスビューにクエリを実行できます:

        
SELECT elapsed_time, executions, sql_text
FROM V$SQL
WHERE sql_text LIKE 'Your SQL Query Goes Here%';
        
    

このクエリは、指定されたクエリの経過時間と実行回数に関する情報を取得します。

Navicatでの実行時間の表示

クエリの合計実行時間のみを表示する必要がある場合は、Navicat アプリケーションのメインウィンドウの下部で、その他の関連するクエリの詳細とともに確認できます:

query_information_in_navicat (46K)

結論

クエリ実行時間を理解し、最適化することは、高パフォーマンスのデータベースを維持するための基礎です。この記事で説明したツールとテクニックを活用すると、データベースのパフォーマンスに関する貴重な洞察が得られ、効率を高めるための事前の措置を講じることができます。MySQL、PostgreSQL、Microsoft SQL Server、Oracle Databaseのいずれを使用している場合でも、クエリの実行時間を測定および分析することは、データベースの専門家にとって価値のある取り組みです。

ブログのアーカイブ
シェア