広告です。クリックいただけると励みになります。

人気記事(昨日)

    2025年06月20日

    スロークエリログとは

    logan-voss-ljRA5ETvkbA-unsplash.jpg

    質問

    スロークエリログとはなんですか


    解答

    「スロークエリログ(Slow Query Log)」とは、データベースにおいて実行に時間がかかったSQLクエリ(遅いクエリ)を記録するログです。
    主にMySQLやMariaDBで使われる機能ですが、他のRDBMS(PostgreSQLなど)にも似た機能があります。


    ◆ スロークエリログの目的

    * 遅いクエリを特定し、パフォーマンスを改善するため
    * インデックス不足、不要なJOIN、大量データのスキャンなどの原因を見つける

    ◆ ログに記録される主な情報(MySQLの例)

    * 実行時間(何秒かかったか)
    * 実行されたSQL文
    * ロック時間(テーブルをロックしていた時間)
    * 取得・スキャンした行数(Rows Examined)
    * 実行時のユーザーやホスト情報


    ◆ どうやって使うの?

    1. 有効化する(MySQLの例)

    ```sql

    SET GLOBAL slow_query_log = 1;
    SET GLOBAL long_query_time = 1; -- 1秒以上かかったクエリだけ記録

    ```

    2. ログファイルの場所を確認

    ```sql

    SHOW VARIABLES LIKE 'slow_query_log_file';

    ```

    3. ログの分析

    ログファイルはテキスト形式で読み取れますが、以下のようなツールで分析するのが一般的です:

    * `mysqldumpslow`(MySQLに付属)
    * `pt-query-digest`(Percona Toolkitの一部)


    ◆ 例(ログの内容)

    ```

    # Time: 2025-06-07T13:45:12.234567Z
    # User@Host: user[user] @ localhost []
    # Query_time: 3.456 Lock_time: 0.000 Rows_sent: 10 Rows_examined: 100000

    SELECT *
    FROM users
    WHERE email
    LIKE '%@example.com';

    ```

    この例では、`users`テーブルからメールアドレスをあいまい検索しているクエリが3.4秒かかっていることが分かります。
    インデックスが使われていない可能性があります。


    ◆ 注意点

    * 開発環境や本番環境で使い方が異なります。
    本番で有効にするとディスクI/Oが増える可能性があるので注意が必要です。

    * クエリチューニング(改善)の第一歩として非常に有効です。


    ◆ 補足:PostgreSQLの場合

    PostgreSQLではスロークエリログに相当する機能として、`log_min_duration_statement` という設定があります。

    ```sql

    SET log_min_duration_statement = 1000; -- 1秒以上かかるSQLだけログ

    ```









    これからはじめるPostgreSQL入門 [ 高塚遙 ]

    価格:3278円
    (2025/6/10 09:46時点)
    感想(0件)


    Accessのデータベースのツボとコツがゼッタイにわかる本 2021/2019/Microsoft 365対応 [ 立山秀利 ]

    価格:2420円
    (2025/5/18 14:46時点)
    感想(1件)


     



    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 08:00| Comment(0) | データベース | このブログの読者になる | 更新情報をチェックする
    この記事へのコメント
    コメントを書く
    コチラをクリックしてください