MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

8.5.3 InnoDB の読み取り専用トランザクションの最適化

InnoDB では、読取り専用として認識されているトランザクションの transaction ID (TRX_ID フィールド) の設定に関連するオーバーヘッドを回避できます。 トランザクション ID は、書き込み操作またはロック読み取り (SELECT ... FOR UPDATE など) を実行する可能性のあるトランザクションにのみ必要です。 不要なトランザクション ID を排除すると、クエリーまたはデータ変更ステートメントが read view を構成するたびに参照される内部データ構造のサイズが削減されます。

InnoDB は、次の場合に読取り専用トランザクションを検出します:

したがって、レポートジェネレータなどの読取り集中型アプリケーションの場合は、START TRANSACTION READ ONLY および COMMIT 内でグループ化するか、SELECT ステートメントを実行する前に autocommit 設定をオンにするか、単にクエリーと混在するデータ変更ステートメントを回避することで、一連の InnoDB クエリーをチューニングできます。

START TRANSACTION および autocommit については、セクション13.3.1「START TRANSACTION、COMMIT および ROLLBACK ステートメント」を参照してください。

注記

自動コミット、非ロック、および読み取り専用 (AC-NL-RO) として承認されたトランザクションは、InnoDB の特定の内部データ構造から除外されるため、SHOW ENGINE INNODB STATUS の出力には表示されません。