TXSQLに新たな並列トランザクションスケジューリングアルゴリズム(Contention-Aware Transaction Scheduling,CATS)を追加し、直接ロック競合を自動的に感知して、トランザクションの優先順位に基づいてトランザクションをスケジューリングし実行できるようになりました。
MySQLの従来の並列トランザクションはFIFO(First-In-First-Out)ルールによってトランザクションの実行順を決定します。一方CATSトランザクションスケジューリングアルゴリズムの主な原理は、トランザクションのロック保持状況に基づいて並列トランザクションの競合状況を判断するとともに、トランザクション実行の優先順位を決定し、その後優先順位に従ってトランザクションの実行順を割り振ることで、システムのトランザクション処理のスループットを向上させるものです。
主に並列性が高く、かつロック競合が比較的著しいケースに適します。
並列性が高く、ロック競合が著しいケースで、TPSパフォーマンスが50%以上向上しました。
スレッド数 | FCFS(FIFO) | CATS | パフォーマンス向上 |
---|---|---|---|
128 | 11999 | 12005 | 0% |
256 | 6609 | 10137 | 53% |
512 | 3453 | 9365 | 171% |
1024 | 2196 | 7015 | 219% |
MySQLバージョン5.7では、グローバルパラメータinnodb_trx_schedule_algorithmによってトランザクションスケジューリングのアルゴリズムを指定することができます。このパラメータのデフォルト値はautoです。
このアルゴリズムには次の3種類があります。
パラメータ名 | 動的 | タイプ | デフォルト | パラメータ値範囲 | 説明 |
---|---|---|---|---|---|
innodb_trx_schedule_algorithm | yes | string | auto | [auto,fcfs,cats] | トランザクション待機スケジューリングアルゴリズム |
説明:ユーザーは現在、上記パラメータのパラメータ値を直接変更することはできません。変更する場合は、チケットを提出から変更することができます。
MySQL バージョン8.0ではautoアルゴリズムが常に用いられ、設定はできません。
この記事はお役に立ちましたか?