序文 この記事では主にMySQLのメモリ使用量に関する関連コンテンツを紹介し、皆さんの参考と学習のために共有します。詳しい紹介を見てみましょう。 使用バージョン: MySQL 5.7 公式ドキュメント performance_schemaでは、次のテーブルにメモリ使用量が記録されます。 mysql> '%memory%summary%' のようなテーブルを表示します。 +-------------------------------------------------+ | パフォーマンス スキーマ内のテーブル (%memory%summary%) | +-------------------------------------------------+ | アカウント別イベント名別メモリ要約 | | ホスト別イベント名別メモリ要約 | | スレッド別イベント名別メモリ要約 | | ユーザー別イベント名別メモリサマリー | | イベント名によるグローバル メモリ サマリー | +-------------------------------------------------+ 各メモリ統計テーブルには、次の統計列があります。 * COUNT_ALLOC、COUNT_FREE: メモリ割り当て関数とメモリ解放関数の呼び出し回数の合計 * SUM_NUMBER_OF_BYTES_ALLOC、SUM_NUMBER_OF_BYTES_FREE: 割り当てられたメモリブロックと解放されたメモリブロックの合計サイズ(バイト単位) * CURRENT_COUNT_USED: これは便利な列で、COUNT_ALLOC - COUNT_FREEに等しい * CURRENT_NUMBER_OF_BYTES_USED: 現在割り当てられているが解放されていないメモリ ブロックの統計サイズ。これは、SUM_NUMBER_OF_BYTES_ALLOC - SUM_NUMBER_OF_BYTES_FREE に等しい便利な列です。 * LOW_COUNT_USED、HIGH_COUNT_USED: CURRENT_COUNT_USED列の最低水準点と最高水準点に対応 * LOW_NUMBER_OF_BYTES_USED、HIGH_NUMBER_OF_BYTES_USED: CURRENT_NUMBER_OF_BYTES_USED列の最低水準点と最高水準点に対応します。 TRUNCATE TABLE ステートメントは、メモリ統計テーブルに対して許可されます。 truncate ステートメントを使用すると、次の動作が発生します。 * 通常、切り捨て操作では、統計情報のベースライン データがリセットされます (つまり、以前のデータがクリアされます) が、現在のサーバーのメモリ割り当て状態は変更されません。言い換えれば、メモリ統計を切り捨てても割り当てられたメモリは解放されない。 * COUNT_ALLOC 列と COUNT_FREE 列をリセットし、カウントを再開します (これは、リセットされた値をメモリ統計のベースライン データとして使用することと同じです) * SUM_NUMBER_OF_BYTES_ALLOC および SUM_NUMBER_OF_BYTES_FREE 列は、COUNT_ALLOC および COUNT_FREE 列と同様にリセットされます。 * LOW_COUNT_USEDとHIGH_COUNT_USEDはCURRENT_COUNT_USED列の値にリセットされます * LOW_NUMBER_OF_BYTES_USEDとHIGH_NUMBER_OF_BYTES_USEDはCURRENT_NUMBER_OF_BYTES_USED列の値にリセットされます * さらに、アカウント、ホスト、ユーザー、またはスレッドによって分類される依存アカウント、ホスト、ユーザー テーブル、または memory_summary_global_by_event_name テーブルで truncate を実行すると、これらのメモリ統計テーブルで truncate ステートメントが暗黙的に実行されます。 簡単に言えば、ユーザー、ホスト、スレッド、アカウント、およびグローバルディメンションに基づいてメモリを監視できます。同時に、ライブラリ sys はこれらのテーブルをさらにフォーマットし、ユーザーが各オブジェクトのメモリ オーバーヘッドを簡単に確認できるようにします。 mysql> sys.memory_global_by_current_bytes から event_name、current_alloc を選択し、制限 10 を設定します。 +-------------------------------------------------------------------------------+--------------+ | イベント名 | 現在の割り当て | +-------------------------------------------------------------------------------+--------------+ | メモリ/パフォーマンス スキーマ/イベント ステートメント履歴 | 13.66 MiB | | メモリ/パフォーマンス スキーマ/イベント ステートメント 履歴_long.sqltext | 9.77 MiB | | メモリ/パフォーマンス スキーマ/イベント ステートメント ヒストリー ロング.トークン | 9.77 MiB | | メモリ/パフォーマンス スキーマ/イベント ステートメント サマリー_by_digest.tokens | 9.77 MiB | | メモリ/パフォーマンス スキーマ/テーブル ハンドル | 9.06 MiB | | メモリ/パフォーマンス スキーマ/イベント ステートメント サマリー (スレッド別、イベント名別) | 8.67 MiB | | メモリ/sql/String::value | 6.02 MiB | | メモリ/パフォーマンス スキーマ/イベント名別のスレッドによるメモリ サマリー | 5.62 MiB | | メモリ/パフォーマンス スキーマ/イベント ステートメント サマリー_by_digest | 4.88 MiB | | メモリ/sql/TABLE | 4.35 MiB | +-------------------------------------------------------------------------------+--------------+ デフォルトでは、performance_schema は performance_schema のメモリ オーバーヘッドのみをカウントします。 MySQL のインストールに応じて、コード領域には performance_schema、sql、client、innodb、myisam、csv、memory、blackhole、archive、partition などが含まれる場合があります。 Innodb 関連のメモリ監視が有効になっているかどうかを確認します。デフォルトでは有効になっていません。 mysql> SELECT * FROM performance_schema.setup_instruments -> WHERE NAME LIKE '%memory%'; +------------------------------------------------------------------------------------------------+---------+-------+ | 名前 | 有効 | 時間指定 | +------------------------------------------------------------------------------------------------+---------+-------+ | メモリ/パフォーマンス スキーマ/ミューテックス インスタンス | はい | いいえ | | メモリ/パフォーマンス スキーマ/rwlock_instances | はい | いいえ | | メモリ/パフォーマンス スキーマ/条件インスタンス | はい | いいえ | | メモリ/パフォーマンス スキーマ/ファイル インスタンス | はい | いいえ | | メモリ/パフォーマンス スキーマ/ソケット インスタンス | はい | いいえ | | メモリ/パフォーマンス スキーマ/メタデータ ロック | はい | いいえ | | メモリ/パフォーマンス スキーマ/ファイル ハンドル | はい | いいえ | | メモリ/パフォーマンス スキーマ/アカウント | はい | いいえ | | メモリ/パフォーマンス スキーマ/イベント待機サマリー (アカウント別イベント名別) | はい | いいえ | | メモリ/パフォーマンス スキーマ/イベント ステージ サマリー (アカウント別イベント名別) | はい | いいえ | | メモリ/パフォーマンス スキーマ/イベント ステートメント サマリー (アカウント別イベント名別) | はい | いいえ | | メモリ/パフォーマンス スキーマ/イベント トランザクション サマリー (アカウント別、イベント名別) | はい | いいえ | | メモリ/パフォーマンス スキーマ/イベント名別のアカウントによるメモリ サマリー | はい | いいえ | | メモリ/パフォーマンス スキーマ/イベント ステージ サマリー グローバル by イベント名 | はい | いいえ | | メモリ/パフォーマンス スキーマ/イベント ステートメント サマリー グローバル by イベント名 | はい | いいえ | | メモリ/パフォーマンス スキーマ/メモリ サマリー グローバル_by_イベント名 | はい | いいえ | | メモリ/パフォーマンス スキーマ/ホスト | はい | いいえ | | メモリ/パフォーマンス スキーマ/イベント待機サマリー (ホスト別イベント名別) | はい | いいえ | | メモリ/パフォーマンス スキーマ/イベント ステージ サマリー (ホスト別、イベント名別) | はい | いいえ | | メモリ/パフォーマンス スキーマ/イベント ステートメント サマリー (ホスト別、イベント名別) | はい | いいえ | | メモリ/パフォーマンス スキーマ/イベント トランザクション サマリー_by_ホスト_by_イベント名 | はい | いいえ | 条件によって範囲を絞り込むことができます: mysql> SELECT * FROM performance_schema.setup_instruments WHERE NAME LIKE '%memory/innodb%'; +------------------------------------------+---------+-------+ | 名前 | 有効 | 時間指定 | +------------------------------------------+---------+-------+ | メモリ/InnoDB/アダプティブハッシュインデックス | いいえ | いいえ | | メモリ/innodb/buf_buf_pool | いいえ | いいえ | | メモリ/innodb/dict_stats_bg_recalc_pool_t | いいえ | いいえ | | メモリ/innodb/dict_stats_index_map_t | いいえ | いいえ | | メモリ/innodb/dict_stats_n_diff_on_level | いいえ | いいえ | | メモリ/InnoDB/その他 | いいえ | いいえ | | メモリ/innodb/row_log_buf | いいえ | いいえ | | メモリ/innodb/行マージソート | いいえ | いいえ | | メモリ/innodb/std | いいえ | いいえ | | メモリ/innodb/trx_sys_t::rw_trx_ids | いいえ | いいえ | すべての可能なオブジェクトに対してメモリ監視を実行します。そのため、以下の設定が必要です。 mysql> update performance_schema.setup_instruments set enabled = 'yes' where name like 'memory%'; クエリは正常、306 行が影響を受けました (0.00 秒) 一致した行: 376 変更された行: 306 警告: 0 ただし、メモリ統計をオンラインで開くこの方法は、新しく追加されたメモリ オブジェクトに対してのみ有効であり、データベースを再起動すると設定が復元されます。 グローバルライフサイクル内のオブジェクトのメモリ統計を実行する場合は、構成ファイルで設定してから再起動する必要があります。 [mysqld] パフォーマンス スキーマ インストルメント = 'メモリ/% = カウント' 同じ基礎データは、sys ライブラリの memory_global_by_current_bytes テーブルを使用して照会できます。このテーブルには、割り当てタイプ別に分類されたグローバル サーバー内の現在のメモリ使用量が表示されます。 mysql> SELECT * FROM sys.memory_global_by_current_bytes WHERE イベント名 LIKE 'memory/innodb/buf_buf_pool'\G ************************** 1. 行 **************************** イベント名: メモリ/innodb/buf_buf_pool 現在のカウント: 1 現在の割り当て: 131.06 MiB 現在の平均割り当て: 131.06 MiB 最高数: 1 上限割り当て: 131.06 MiB 高い平均割り当て: 131.06 MiB この sys スキーマ クエリは、current_alloc() コード領域によって現在割り当てられているメモリを集計します。 mysql> SELECT SUBSTRING_INDEX(イベント名,'/',2) AS コード領域、sys.format_bytes(SUM(current_alloc)) AS 現在の割り当て sys.x$memory_global_by_current_bytes から GROUP BY SUBSTRING_INDEX(イベント名,'/',2) ORDER BY SUM(current_alloc) DESC; +---------------------------+---------------+ | コード領域 | 現在の割り当て | +---------------------------+---------------+ | メモリ/innodb | 843.24 MiB | | メモリ/パフォーマンス スキーマ | 81.29 MiB | | メモリ/mysys | 8.20 MiB | | メモリ/sql | 2.47 MiB | | メモリ/メモリ | 174.01 KiB | | メモリ/myisam | 46.53 KiB | | メモリ/ブラックホール | 512 バイト | | メモリ/フェデレーション | 512 バイト | | メモリ/csv | 512 バイト | | メモリ/vio | 496 バイト | +---------------------------+---------------+ 要約する 上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: Linux のパスワードを紛失した場合にリセットする方法
>>: Vue コンポーネント ライブラリ ElementUI はテーブル読み込みツリー データのチュートリアルを実装します
Docker Hub公式サイト1. Pythonミラーを検索するdocker 検索 python 2...
目次序文現地調査ケースの再現要約する序文最近、友人が突然WeChatで連絡してきて、MySQLでデー...
この記事では、MySQL 8.0.12のインストールされていないバージョンを設定して起動するための具...
目次1. リクエストを取得する: 2. 投稿リクエスト: 3. 拡張と補足Vue スキャフォールディ...
序文この記事では、Linux で Squid プロキシ サーバーを設定することに関する関連コンテンツ...
コンテナはすでに作成されていますが、その起動パラメータ(データがマウントされる場所)を知る方法 #コ...
今日は、Docker イメージ、各レイヤーの内容を調べ、Docker/OCI イメージのサイズを縮小...
ログインを提供し、ユーザー情報データインターフェースを取得するapi/user.js内 '@...
目次MySQL の current_timestamp の落とし穴エラーを報告する私の解決策mysq...
まず、データベース テーブルを作成します。 テーブル `t_demo` を作成します ( `id` ...
目次1. 開発者プラットフォームの構成問題を解決する1. 開発者プラットフォームの構成1. 開発者プ...
最近、たまたまこの小さな要件に遭遇しました。昔、JS を使用してこれを処理したことを覚えていますが、...
参考までに、Javascript を使用して広告を閉じる方法に関するケース スタディを示します。詳細...
目次繰り返しレンダリングループを避ける副作用の除去についてReact16.8 の新しい useEff...
平行ボックスの余白 (二重余白の重なり) に関する面接の質問: 1 つのボックスに上余白があり、もう...