前回は、Explain 実行プランの表示、インデックスの分析など、MySQL での SQL クエリの最適化について説明しました。今日は、MySQL テーブルの読み取り、書き込み、インデックス作成、その他の操作を分析するための SQL ステートメントをいくつか紹介します。 では、早速コードを見てみましょう。 テーブルの読み取りと書き込みの負荷を反映します SELECT ファイル名 AS ファイル、 カウント_読み取り、 合計読み取りバイト数 AS 合計読み取り、 カウント書き込み、 合計書き込みバイト数 AS 合計書き込みバイト数、 (合計読み取りバイト数 + 合計書き込みバイト数) AS 合計 performance_schema.file_summary_by_instance から ORDER BY 合計読み取りバイト数 + 合計書き込みバイト数 DESC; ファイルの反映の遅延 SELECT (ファイル名) AS ファイル、 count_star AS合計、 CONCAT(ROUND(sum_timer_wait / 3600000000000000, 2), 'h') AS total_latency, カウント_読み取り、 CONCAT(ROUND(sum_timer_read / 1000000000000, 2), 's') AS read_latency、 カウント書き込み、 CONCAT(ROUND(sum_timer_write / 3600000000000000, 2), 'h') AS write_latency performance_schema.file_summary_by_instance から sum_timer_wait で順序付けして DESC を指定します。 テーブルの読み取りと書き込みのレイテンシ オブジェクトスキーマをテーブルスキーマとして選択し、 オブジェクト名 AS テーブル名、 count_star AS合計、 CONCAT(ROUND(sum_timer_wait / 3600000000000000, 2), 'h') を total_latency として、 CONCAT(ROUND((sum_timer_wait / count_star) / 1000000, 2), 'us') AS avg_latency, CONCAT(ROUND(max_timer_wait / 1000000000, 2), 'ms') AS max_latency performance_schema.objects_summary_global_by_type から sum_timer_wait で順序付けして DESC を指定します。 テーブル操作頻度の表示 オブジェクトスキーマをテーブルスキーマとして選択し、 オブジェクト名 AS テーブル名、 count_star AS rows_io_total、 count_read は rows_read として、 count_write は rows_write として、 count_fetch AS rows_fetchs、 count_insert AS rows_inserts、 count_update AS rows_updates、 count_delete は rows_deletes として、 CONCAT(ROUND(sum_timer_fetch / 3600000000000000, 2), 'h') AS fetch_latency、 CONCAT(ROUND(sum_timer_insert / 3600000000000000, 2), 'h') AS insert_latency、 CONCAT(ROUND(sum_timer_update / 3600000000000000, 2), 'h') AS update_latency、 CONCAT(ROUND(sum_timer_delete / 3600000000000000, 2), 'h') AS delete_latency performance_schema.table_io_waits_summary_by_table から ORDER BY sum_timer_wait DESC ; インデックスステータス OBJECT_SCHEMA を table_schema として選択します。 OBJECT_NAME AS テーブル名、 INDEX_NAMEをindex_nameとして、 COUNT_FETCH AS 行取得、 CONCAT(ROUND(SUM_TIMER_FETCH / 3600000000000000, 2), 'h') AS select_latency, COUNT_INSERT AS 行挿入、 CONCAT(ROUND(SUM_TIMER_INSERT / 3600000000000000, 2), 'h') AS insert_latency, COUNT_UPDATE AS 行更新、 CONCAT(ROUND(SUM_TIMER_UPDATE / 3600000000000000, 2), 'h') AS update_latency、 COUNT_DELETE AS 行削除、 CONCAT(ROUND(SUM_TIMER_DELETE / 3600000000000000, 2), 'h') AS delete_latency performance_schema.table_io_waits_summary_by_index_usage から index_name が NULL ではない場合 sum_timer_wait で順序付けして DESC を指定します。 完全なテーブルスキャン オブジェクトスキーマを選択します。 オブジェクト名、 count_read と rows_full_scanned の比較 performance_schema.table_io_waits_summary_by_index_usage から index_name が NULL の場合 かつ count_read > 0 count_read の順序で DESC を指定します。 未使用のインデックス オブジェクトスキーマを選択します。 オブジェクト名、 インデックス名 performance_schema.table_io_waits_summary_by_index_usage から index_name が NULL ではない場合 かつ count_star = 0 AND object_schema が ('mysql','v_monitor') にありません AND インデックス名 <> 'PRIMARY' ORDER BY object_schema, object_name; 悪いSQLの問題の概要 SELECT (DIGEST_TEXT) AS クエリ、 SCHEMA_NAME AS db、 IF(SUM_NO_GOOD_INDEX_USED > 0 OR SUM_NO_INDEX_USED > 0, '*', '') AS full_scan、 COUNT_STAR AS exec_count、 SUM_ERRORS AS err_count、 SUM_WARNINGS AS warn_count、 (SUM_TIMER_WAIT) 合計待ち時間として、 (MAX_TIMER_WAIT) として max_latency、 (AVG_TIMER_WAIT) avg_latencyとして、 (SUM_LOCK_TIME) AS lock_latency、 フォーマット(SUM_ROWS_SENT,0) AS rows_sent、 ROUND(IFNULL(SUM_ROWS_SENT / NULLIF(COUNT_STAR, 0), 0)) AS rows_sent_avg、 SUM_ROWS_EXAMINED AS 行数_検査済み、 ROUND(IFNULL(SUM_ROWS_EXAMINED / NULLIF(COUNT_STAR, 0), 0)) AS rows_examined_avg, SUM_CREATED_TMP_TABLES は tmp_tables として作成されます。 SUM_CREATED_TMP_DISK_TABLES は tmp_disk_tables として作成されます。 SUM_SORT_ROWS AS 行ソート、 SUM_SORT_MERGE_PASSES は sort_merge_passes として、 ダイジェスト AS ダイジェスト、 最初に見たのはfirst_seen、 LAST_SEEN は last_seen として performance_schema.events_statements_summary_by_digest d から ここで、d ORDER BY SUM_TIMER_WAIT DESC 制限 20; これらの SQL ステートメントを習得することで、データベース内のどのテーブルに問題があるかを簡単に把握し、最適化する方法を検討できるようになります。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: PXEを使用してCentOS7.6を自動的にインストールする方法の詳細なチュートリアル
序文この記事は主に、MySQL で浮動小数点型を文字型に変換するときに発生する問題を紹介します。これ...
この記事の主な内容は次のとおりです。 1. ブラウザのサポート2. 画像3. レスポンシブツール4....
最近、会社で DELL R730 サーバーを購入したのですが、偶然次のチュートリアルを見つけたので、...
docker-compose でコンテナ ポートを公開する方法は、ports と expose の ...
序文lvm (論理ボリューム マネージャー) 論理ボリューム管理は、Linux システムのニーズを満...
フレームセット ページは通常の Web ページとは多少異なります。依然として <HTML>...
問題の説明 (環境: windows7、MySql8.0)今日、MySql をインストールした後、M...
この方法は、CSS3のdrop-shadow filterを使用して、png画像の不透明部分に任意の...
目次1. ユニオンタイプ2. クロスオーバータイプ3. 型保護3.1 カスタム型保護3.2 保護の種...
達成すべき効果: 必要なもの1枚、2枚、3枚とスタイルが異なります。子要素の判定はjsで完結できます...
データベース接続のURLの詳細な説明と概要JDBC URL = プロトコル名 + サブプロトコル名 ...
<table id=" <%=var1%>">、var1...
皆さんはこのような状況に遭遇したことがあるでしょうか。プロジェクトや研究開発を行う際に、緊急にファイ...
目次CentOS rpm のインストールと Nginx の設定導入rpm パッケージのインストールサ...
導入この記事は、 React + antdをベースにして、完全な全屏demoを紹介します。その理由は...