ホームページ  >  記事  >  データベース  >  MySQL 同時実行パラメータのチューニングを見てみましょう

MySQL 同時実行パラメータのチューニングを見てみましょう

coldplay.xixi
coldplay.xixi転載
2021-02-03 09:22:412346ブラウズ

MySQL 同時実行パラメータのチューニングを見てみましょう

無料学習の推奨事項: mysql ビデオ チュートリアル

Mysql 同時実行パラメーターの調整

実装の観点から見ると、MySQL Server はバックグラウンド スレッドとカスタマー サービス スレッドを含むマルチスレッド構造です。マルチスレッドによりサーバー リソースが効果的に利用され、データベースの同時実行パフォーマンスが向上します。 Mysql では、同時接続とスレッドを制御する主なパラメータには、max_connections、back_log、thread_cache_size、table_open_cahce などがあります。

1. max_connections

max_connections を使用して、MySQL データベースに許可される最大接続数を制御します。デフォルト値は 151 です。 ステータス変数 connection_errors_max_connections が 0 ではなく、増加し続ける場合は、データベース接続の数が最大許容値に達したため、継続的に接続リクエストが失敗していることを意味します。このため、max_connections の値を増やすことを検討できます。
説明: 同時接続リクエストの数が 151 を超えると、クライアントのリクエストを処理するための利用可能な接続がなくなります。これらの後続の接続は待機状態になります。 MySQL 接続が解放されるのを待っています。アイドル状態の接続がない場合、リクエストはタイムアウトになります。

Mysql サポートされる接続の最大数は、スレッド ライブラリの品質など、多くの要因によって異なります。特定のオペレーティング システム プラットフォーム、メモリ サイズ、接続ごとの負荷、CPU 処理速度、予想される応答時間など。 Linux プラットフォームでは、パフォーマンスの良いサーバーであれば 500 ~ 1000 の接続をサポートすることは難しくありませんが、サーバーのパフォーマンスに基づいて評価し、設定する必要があります。

2. back_log

back_log パラメータは、MySQL が TCP ポートをリッスンするときに設定されるバックログ リクエストのスタック サイズを制御します。 MySql 接続数が max_connections に達すると、新しいリクエストはスタックに保存され、特定の接続がリソースを解放するのを待ちます。スタックの数は back_log です。待機中の接続数が back_log を超えると、接続リソースは付与されませんエラー が報告されます。バージョン 5.6.6 より前のデフォルト値は 50 で、それ以降のバージョンのデフォルト値は 50 (max_connections / 5) ですが、最大値は 900 を超えることはありません。 説明: クライアントが同時に送信したリクエスト数が 151 を超えると、後続のリクエストは待ち状態になります。その後、待機中の接続の数が back_log に達する可能性があります。これらの新しいリクエストはスタックに保存されます。接続が解放されるのを待ちます。スタックの数は back_log によって設定されます。

データベースが短期間に大量の接続リクエストを処理する必要がある場合は、back_log の値を適切に増やすことを検討できます。

3. table_open_cache

このパラメータは、すべての SQL ステートメント実行スレッドによってオープンできるテーブル キャッシュの数を制御するために使用されます。 SQL 実行スレッドは、少なくとも 1 つのテーブル キャッシュを開く必要があります。このパラメータの値は、設定された接続の最大数 max_connections と、各接続の関連クエリの実行に関連するテーブルの最大数に従って設定する必要があります :

max_connections x N; 注: これは特定のセッションに対するものではなく、すべてのクライアント実行スレッドに対するものです。テーブルキャッシュ数とは、各SQL文で操作するテーブルの数であり、例えば、SQL文では通常、少なくとも1つのテーブルを操作します。 1つのテーブルを操作する場合は1つのテーブルキャッシュが存在し、複数のテーブルを操作する場合は複数のテーブルキャッシュが存在します。

mysql> show variables like 'table_open_cache%';+----------------------------+-------+| Variable_name              | Value |+----------------------------+-------+| table_open_cache           | 431   || table_open_cache_instances | 16    |+----------------------------+-------+2 rows in set (0.06 sec)

4, thread_cache_size

データベースへの接続を高速化するために、MySQL は再利用のために一定数のカスタマー サービス スレッドをキャッシュします。 thread_cache_size パラメータを通じて制御できます。 MySQL キャッシュ クライアント サービス スレッドの数。 説明: MySQL サーバー上でスレッド プールを開くのと同じで、クライアントからリクエストがあった場合、スレッド プール内のスレッドを取り出してタスク処理を実行します。

mysql> show variables like 'thread_cache_size%';+-------------------+-------+| Variable_name     | Value |+-------------------+-------+| thread_cache_size | 8     |+-------------------+-------+1 row in set (0.00 sec)
合計 8 個のスレッド情報がキャッシュされます。

5. innodb_lock_wait_timeout

このパラメータは、InnoDB トランザクションが行ロックを待機する時間を設定するために使用されます。デフォルト値は 50ms で、設定可能です必要に応じて動的に。素早いフィードバックが必要なビジネス システムの場合は、トランザクションの長期中断を避けるために行ロックの待機時間を短く調整できます。バックグラウンドで実行されているバッチ処理プログラムの場合は、行ロックの待機時間を大きく調整して、長時間にわたるトランザクションの停止を回避できます。ロールバック操作が発生しました。

注: 応答が速いビジネス システムでは、行ロックが取得できなかった場合、エラーを直接報告するだけでよく、トランザクションの応答を長時間待つ必要はありません。 。

ご覧のとおり、デフォルトのタイムアウトは 50ms

mysql> show variables like 'innodb_lock_wait_timeout%';+--------------------------+-------+| Variable_name            | Value |+--------------------------+-------+| innodb_lock_wait_timeout | 50    |+--------------------------+-------+1 row in set (0.01 sec)

| 値 | ------------------------ -- - ------- | innodb_lock_wait_timeout | 50 | ------------------------ ------- 1 行セット内 (0.01 秒)

その他の関連する無料学習の推奨事項:mysql チュートリアル(ビデオ)

以上がMySQL 同時実行パラメータのチューニングを見てみましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。