ホームページ >データベース >mysql チュートリアル >mysql ストアド プロシージャが遅すぎる場合はどうすればよいですか?
mysql ストアド プロシージャが遅すぎる問題の解決策: まず my.cnf 設定ファイルを開き、次に設定 [long_query_time=1] を追加し、次に [tail -f /tmp/logs] を通じて SQL を監視します。 /mysqld.log] コマンド ; 最後に、ターゲットを絞った最適化を実行できます。
解決策:
(推奨チュートリアル: mysql ビデオ チュートリアル)
最初のステップ : 変更/etc/my.cnf ファイルで、[mysqld] を見つけて
#执行的sql log=/tmp/logs/mysqld.log #记录sql执行超过下面设置时间的sql log-slow-queries = /tmp/mysqlslowquery.log #执行时间大于等于1秒 long_query_time = 1
を追加します。その後、tail -f /tmp/logs/mysqld.log を実行して、実行されたすべての SQL を監視できます。同じ方法で mysqlslowquery を監視できます。 log は、実行時間がlong_query_time = 1 (秒)を超えるSQLステートメントです。
たとえば、最初のステップでは、特定のmysqlカスタム関数の実行速度が遅いことがわかりました func_getDevice(); の実行には15秒かかりましたが、この方法を知りません どの SQL ステートメントがパフォーマンスに影響しますか? 次に 2 番目のステップがあります。
ステップ 2: mysql コマンド ラインに入力し、
mysql> set profiling=1; mysql> select func_getDevice(1); mysql> show profiles; +----------+------------+-----------------------+ | Query_ID | Duration | Query | +----------+------------+-----------------------+ | 1 | 0.00250400 | select * from TDevice | +----------+------------+-----------------------+ 1 row in set (0.00 sec)
と入力します。この時点で、詳細な SQL 実行リストが表示されますが、デフォルトでは 15 件の SQL レコードのみが記録されます。メソッドをさらに設定すると、
mysql> set profiling_history_size=20; mysql> show variables like 'profiling%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | profiling | ON | | profiling_history_size | 15 | +------------------------+-------+ 2 rows in set (0.00 sec) mysql> select func_getDevice(1); mysql> show profiles;
を設定できます。このとき、Query_ID=1 select * from TDevice がパフォーマンスに影響するなど、どの SQL ステートメントがパフォーマンスに影響するかを正確に確認できます。
mysql> show profile for query 1;详细查看执行一条sql的耗时情况 +--------------------------------+----------+ | Status | Duration | +--------------------------------+----------+ | (initialization) | 0.000003 | | checking query cache for query | 0.000042 | | Opening tables | 0.00001 | | System lock | 0.000004 | | Table lock | 0.000025 | | init | 0.000009 | | optimizing | 0.000003 |
Checkテーブルのインデックスが合理的かどうか、ターゲットを絞った最適化によって効率が向上するかどうか。
関連する推奨事項: php トレーニング
以上がmysql ストアド プロシージャが遅すぎる場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。