前回は、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を自動的にインストールする方法の詳細なチュートリアル
目次1. 問題2. 解決策2.1 ページングコンポーネント2.2 データベースデータを取得する関数:...
1. はじめにプロジェクトで要件に遭遇したら、データを検索してキーワードを強調表示します。要件を受け...
目次序文ターゲット最初のステップ:ステップ2:ステップ3:ステップ4:要約する序文現在主流のフレーム...
通常、クリック イベントは、メッセージ リマインダーのさまざまな状況に分割されます。これらが処理され...
この記事では、JavaScript Canvasで三目並べゲームを実装するための具体的なコードを参考...
vueプロジェクトをパッケージ化してサーバーにデプロイし、正常にログインできるが、ローカルで起動する...
1. VMware Workstation 64バージョンをダウンロードするhttps://www....
目次元に戻すログUNDOログの生成と破棄UNDOログの保存元に戻すログ機能トランザクションの原子性の...
最近、画像上に半透明の背景でテキストを表示する必要があるという要件に遭遇しました。その効果は次のよう...
目次Tomcat の紹介Tomcat の展開Web プロジェクトの作成tomcatの設定プロジェクト...
レイアウト部分: <div id="スライダー"> <!-- ...
目次1. ダウンロード2. インストールと解凍3. Tomcatを起動する4番目に、インストールが成...
今日、ある人がウェブサイト開発プロジェクトについて話をしてくれました。具体的な要件について話すと、「...
HTML フォーム タグのチュートリアル。このセクションでは、主に Web ページで INPUT タ...
ハイパーリンク。「リンク」とも呼ばれます。ハイパーリンクは、私たちが閲覧する Web ページのいたる...