1. はじめに table_cache は非常に重要な MySQL パフォーマンス パラメータであり、バージョン 5.1.3 以降では table_open_cache と呼ばれます。 table_cache は主にテーブルキャッシュの数を設定するために使用されます。各クライアント接続は少なくとも 1 つのテーブルにアクセスするため、このパラメータの値は max_connections に関連しています。 2. キャッシュメカニズム 接続がテーブルにアクセスすると、MySQL は現在キャッシュされているテーブルの数をチェックします。テーブルがキャッシュ内で開かれている場合は、クエリを高速化するためにキャッシュ内のテーブルに直接アクセスされます。テーブルがキャッシュされていない場合は、現在のテーブルがキャッシュに追加され、クエリが実行されます。 キャッシュ操作を実行する前に、table_open_cache を使用してキャッシュ テーブルの最大数を制限します。現在キャッシュされているテーブルが table_open_cache に達していない場合は、新しいテーブルが追加されます。この値に達した場合、MySQL は最後のクエリ時間、クエリ レート、およびキャッシュ テーブルのその他のルールに基づいて以前のキャッシュを解放します。 MySQL がテーブルにアクセスするたびに、テーブル バッファに空きがあれば、テーブルが開かれ、そこに配置されるため、テーブルの内容に高速にアクセスできます。 3. 判断方法 ピーク時のステータス値 Open_tables と Opened_tables を確認することで、table_open_cache の値を増やす必要があるかどうかを判断できます。 open_tables が table_open_cache と等しく、opened_tables が増加している場合は、table_open_cache の値を増やす必要があります (上記のステータス値は、SHOW GLOBAL STATUS LIKE 'Open%tables' を使用して取得できます)。 table_open_cache を盲目的に大きな値に設定することはできないことに注意してください。設定値が高すぎると、ファイル記述子が不足し、パフォーマンスが不安定になったり、接続に失敗したりする可能性があります。 開いているテーブル / 開いているテーブル >= 0.85 オープンテーブル / テーブルキャッシュ <= 0.95 4. 提案 最初はよくわからない場合は、MySQL データベースを一定期間本番環境に置き、その後パラメータ値を Opened_tables の値より大きくなるように調整し、比較的負荷が高い極端な状況でも Opened_tables よりわずかに大きい値であることを確認します。 mysql>flush tables; open_tables をクリアできます # service mysqld restart は opened_tables をクリアできます 以下はMySQL 5.6の手順です table_open_cache はテーブル キャッシュのサイズを指定します。 MySQL がテーブルにアクセスするたびに、テーブル バッファに空きがあれば、テーブルが開かれ、そこに配置されるため、テーブルの内容に高速にアクセスできます。 テスト環境: Tencent Cloud CDB、メモリ 4000M、コンソールで table_open_cache=512 を確認し、table_open_cache 設定が適切かどうか、最適化する必要があるかどうかを監視します。 '%table_open_cache%' のような変数を表示します。 「Open%tables」のようなグローバルステータスを表示します。 open_tables が table_open_cache と等しく、両方とも 512 であることがわかりました。これは、MySQL が新しいテーブルを収容するためにキャッシュされたテーブルを解放していることを示しています。この時点で、table_open_cache の値を増やす必要がある場合があります。4G メモリを搭載したマシンの場合は、2048 に設定することをお勧めします。 より適切な値: 開いているテーブル / 開いているテーブル >= 0.85 このパラメータについて確信が持てない場合は、非常に保守的な設定の提案があります。MySQL データベースを本番環境に一定期間配置して試用し、パラメータ値を Opened_tables の値よりも大きくなるように調整し、比較的負荷が高い極端な状況でも Opened_tables よりもわずかに大きいことを確認します。 以下もご興味があるかもしれません:
|
<<: Kubernetes オブジェクトボリュームの詳細な使用方法
>>: Mac VMware Fusion CentOS7 静的 IP 構成チュートリアル図
1. 事件の背景:仕事上、Ubuntu への vscode リモート接続を使用する必要があります。 ...
insert into employee values(null,'張三','...
MySQL を使用して中国語の文字を挿入すると、多くの友人から次のエラーが報告されます。 これは、文...
この記事のシナリオと組み合わせて、Nginx と Java 環境 (SpringBoot プロジェク...
今日の午後からVS2019をMySQLで使えるのではないかと思い、いろいろ環境構築を始めました。プロ...
序文簡単に言えば、tcpdump は、ネットワーク上のトラフィックをダンプし、ユーザーの定義に従って...
1.0 Redis の永続性Redis はメモリ内データベースです。サーバー プロセスが終了すると、...
序文今日は、デザインパターンのクリエーションパターンを見直していたところ、JS でシングルトンパター...
日常の開発では、データベースの追加、削除、変更、クエリが一般的に行われるため、Mysql で NUL...
序文今日、自作のコンポーネントを使っていたところ、突然、長い間忘れていたバブリングイベントに遭遇しま...
目次簡単な説明: 1. 取引の4つの特徴2. 複数の同時トランザクションによって発生する問題3. ト...
今夜、数日間悩まされていた問題を解決しました。本当に解決したかどうかはわかりませんが、解決されている...
目次1. 公式の足場を使って構築する2. プロジェクトディレクトリ分析3. TypeScript の...
具体的な方法:ステップ1: mysqlサービスを停止する /etc/init.d/mysqld を停...
CSS は Web ページで非常に重要な役割を果たします。近年の CSS の発展に伴い、疑似要素/疑...