MySQL Enterprise Thread Pool は、商用製品である MySQL Enterprise Edition に含まれる拡張機能です。 商用製品の詳細は、https://www.mysql.com/products/ を参照してください。
MySQL Enterprise Edition には、サーバープラグインを使用して実装される MySQL Enterprise Thread Pool が含まれています。 MySQL サーバーのデフォルトのスレッド処理モデルでは、クライアント接続ごとに 1 つのスレッドを使用してステートメントが実行されます。 より多くのクライアントがサーバーに接続してステートメントを実行すると、全体的なパフォーマンスが低下します。 スレットプールプラグインは、オーバーヘッドを軽減し、パフォーマンスを向上するように設計されている代替のスレッド処理モデルを提供します。 このプラグインは、多数のクライアント接続に対してステートメント実行スレッドを効率的に管理することによってサーバーのパフォーマンスを向上させるスレッドプールを実装します。
スレッドプールは、接続ごとに 1 つのスレッドを使用するモデルのいくつかの問題に対処します:
スレッドが多すぎると、高度な並列実行ワークロードで CPU キャッシュがほとんど役に立たなくなります。 スレッドプールはスレッドスタックの再利用を促進し、CPU キャッシュのフットプリントを最小にします。
並列で実行しているスレッド数が多すぎると、コンテキストスイッチングのオーバーヘッドが高くなります。 これにより、オペレーティングシステムスケジューラへの課題も示されます。 スレッドプールは、アクティブスレッドの数を制御して、それが処理可能で、MySQL を実行しているサーバーホストに適切なレベルで MySQL サーバー内の並列性を維持します。
並列で実行するトランザクションが多すぎると、リソースの競合が増加します。
InnoDB
では、これにより中央の相互排他ロックの保持に費やされる時間が多くなります。 スレッドプールは、あまり多く並列で実行しないように、トランザクションが開始するタイミングを制御します。