前回は、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を自動的にインストールする方法の詳細なチュートリアル
ここでは、Jenkins コンテナを例に 3 つの方法を紹介します。方法1コンテナをイメージにパッケ...
ソースからApacheをインストールする1. Apacheソースコードをアップロードして必要なソフト...
tomcat の web.xml を構成する場合、サーブレットは比較的重要な問題です。ここでは、サー...
この記事では、MySQL 5.7 zipアーカイブ版のインストールチュートリアルを参考までに紹介しま...
目次前提TypeScript と JavaScriptコードエディタの選択TypeScriptを学ぶ...
proxy_intercept_errors と recursive_error_pages を使...
cmdにnet start mysqlと入力すると、プロンプトが表示されます: サービス名が無効です...
まず、例を見てみましょう。記事テーブルにはタイプフィールドがあり、1 見出し、2 おすすめ、3 ホッ...
目次1. 現在のシステムにMySQLがインストールされているかどうかを確認する2. インストールされ...
1. 作成する [テーブル名] (フィールド1、フィールド2、...) 値 (値1、値2、...) ...
123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...
この方法は2021年2月7日に編集されました。私が使用しているバージョンは8.0.23です。事件の原...
node-media-server を使用するプロセスの一部を記録します。この記事の環境はWindo...
CSSでtext-align、margin: 0 autoを使用して中央揃えにするtext-alig...
Zabbix独自のWEBインターフェースを例に、Web監視の設定を行います。環境: zabbix4....