機能の説明
TXSQLに新たな並列トランザクションスケジューリングアルゴリズム(Contention-Aware Transaction Scheduling,CATS)を追加し、直接ロック競合を自動的に感知して、トランザクションの優先順位に基づいてトランザクションをスケジューリングし実行できるようになりました。
MySQLの従来の並列トランザクションはFIFO(First-In-First-Out)ルールによってトランザクションの実行順を決定します。一方CATSトランザクションスケジューリングアルゴリズムの主な原理は、トランザクションのロック保持状況に基づいて並列トランザクションの競合状況を判断するとともに、トランザクション実行の優先順位を決定し、その後優先順位に従ってトランザクションの実行順を割り振ることで、システムのトランザクション処理のスループットを向上させるものです。
サポートするバージョン
カーネルバージョン MySQL 5.7 20190230およびそれ以降
カーネルバージョン MySQL 8.0 20200630およびそれ以降
ユースケース
主に並列性が高く、かつロック競合が比較的著しいケースに適します。
パフォーマンスデータ
並列性が高く、ロック競合が著しいケースで、TPSパフォーマンスが50%以上向上しました。
テスト方法:sysbench-oltp_read_writeシーン(分離レベルRR、テーブル数8、10MBデータ、paretoランダム化方式)
テスト環境:32コア128GBオンラインインスタンス
利用説明
MySQLバージョン5.7では、グローバルパラメータinnodb_trx_schedule_algorithmによってトランザクションスケジューリングのアルゴリズムを指定することができます。このパラメータのデフォルト値はautoです。
このアルゴリズムには次の3種類があります。
auto:自動。現在のシステム状況に基づいて自動的に調整します。ロック待機スレッド数が32を超えるとCATSスケジューリングアルゴリズムを使用し、それ以外の場合はFCFSアルゴリズムを使用します。
fcfs:先着順サービスアルゴリズム。
cats: 競合検知スケジューリングアルゴリズム。
|
innodb_trx_schedule_algorithm | | | | | |
説明:
ユーザーは現在、上記パラメータのパラメータ値を直接変更することはできません。変更する場合は、チケットを提出から変更することができます。 MySQL バージョン8.0ではautoアルゴリズムが常に用いられ、設定はできません。