#この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューターphp mysql スロー クエリとは、比較的ゆっくり実行される SQL ステートメントをログに記録することを指します。スロー クエリ ログをオンにすると、MySQL は指定された時間を超えてクエリを実行するステートメントを記録できます。パフォーマンスのボトルネックを特定して分析することで、データベース システムのパフォーマンスが適切に最適化されます。
php mysql が遅いとは何ですかクエリ?
MySQL スロー クエリは、実行速度が遅い SQL ステートメントをログに記録します。この機能を使用するには、事前に有効にする必要があります。 1. はじめに スロー クエリ ログをオンにすると、MySQL は指定時間を超えたクエリを記録できるようになり、パフォーマンスのボトルネックを特定して分析することで、データベース システムのパフォーマンスをより適切に最適化できます。 2. パラメータの概要slow_query_log スロー クエリのオープン ステータスslow_query_log_file スロー クエリ ログが保存される場所 (このディレクトリには、MySQL 実行アカウントの書き込み権限が必要です)。通常は MySQL データ ストレージ ディレクトリに設定されます) long_query_time クエリが記録されるまでにかかる秒数。デフォルトは 10 秒です。3. スロー クエリを有効にする( 1) スロークエリ関連パラメータの表示mysql> show variables like 'slow_query%'; +---------------------------+-----------------------------------+ | Variable_name | Value | +---------------------------+-----------------------------------+ | slow_query_log | OFF | | slow_query_log_file | /usr/local/var/mysql/slow.log | +---------------------------+-----------------------------------+ mysql> show variables like 'long_query_time'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+
mysql> set global slow_query_log='ON';
mysql> set global slow_query_log_file='/usr/local/var/mysql/slow.log ';
mysql> set global long_query_time=1;
[mysqld] slow_query_log = ON slow_query_log_file = /usr/local/var/mysql/slow.log long_query_time = 1
service mysqld restart
# Time: 180918 19:06:21 # User@Host: proxy[proxy] @ [192.168.0.16] Id: 6707197 # Query_time: 1.015429 Lock_time: 0.000116 Rows_sent: 1 Rows_examined: 44438 SET timestamp=1537268781; select id, user_id, device_uuid, bd_client_id, bd_user_id, bd_tag, nodisturb_mode, nodisturb_start_time, nodisturb_end_time, binding_time, device_os_type, app_type, state from app_mobile_device where user_id = '78436' and app_type = 'YGY' order by binding_time desc; # User@Host: proxy[proxy] @ [192.168.0.16] Id: 6707236 # Query_time: 1.021662 Lock_time: 0.000083 Rows_sent: 1 Rows_examined: 44438 SET timestamp=1537268781; select id, user_id, device_uuid, bd_client_id, bd_user_id, bd_tag, nodisturb_mode, nodisturb_start_time, nodisturb_end_time, binding_time, device_os_type, app_type, state from app_mobile_device where user_id = '14433' and app_type = 'YGY' order by binding_time desc;
Rows_examined (遅いクエリによってスキャンされた行の数) 44438 -> ここから、問題が巨大であることがおそらくわかります 次にこれを入れますSQL ステートメントをデータベースに入力して実行し、EXPLAIN 分析を使用して実行計画を確認します。
EXPLAIN select id, user_id, device_uuid, bd_client_id, bd_user_id, bd_tag, nodisturb_mode, nodisturb_start_time, nodisturb_end_time, binding_time, device_os_type, app_type, state from app_mobile_device where user_id = '78436' and app_type = 'YGY' order by binding_time desc;
ALTER TABLE app_mobile_device ADD INDEX user_app_type_only ( `user_id` ,`app_type` )
#チェックされた行数が大幅に減少していることがわかります。
この時点で、スロークエリの使用と最適化は基本的に完了しました。 推奨学習: 「PHP ビデオ チュートリアル
」以上がphp mysqlのスロークエリとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。