トランザクションの設定

SET TRANSACTIONステートメントを使用すると、現在の分離レベルをGLOBALまたはSESSIONに基づいて変更できます。この構文はSET transaction_isolation='new-value'の代替であり、MySQL と SQL 標準の両方との互換性のために組み込まれています。

あらすじ

SetStmt
SETVariableAssignmentListPASSWORDFORUsername=PasswordOptGLOBALSESSIONTRANSACTIONTransactionCharsCONFIGIdentifierstringLitConfigItemNameEqOrAssignmentEqSetExpr
TransactionChars
ISOLATIONLEVELIsolationLevelREADWRITEREADONLYAsOfClause
IsolationLevel
REPEATABLEREADREADCOMMITTEDUNCOMMITTEDSERIALIZABLE
AsOfClause
ASOFTIMESTAMPExpression

mysql> SHOW SESSION VARIABLES LIKE 'transaction_isolation'; +-----------------------+-----------------+ | Variable_name | Value | +-----------------------+-----------------+ | transaction_isolation | REPEATABLE-READ | +-----------------------+-----------------+ 1 row in set (0.00 sec) mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; Query OK, 0 rows affected (0.00 sec) mysql> SHOW SESSION VARIABLES LIKE 'transaction_isolation'; +-----------------------+----------------+ | Variable_name | Value | +-----------------------+----------------+ | transaction_isolation | READ-COMMITTED | +-----------------------+----------------+ 1 row in set (0.01 sec) mysql> SET SESSION transaction_isolation = 'REPEATABLE-READ'; Query OK, 0 rows affected (0.00 sec) mysql> SHOW SESSION VARIABLES LIKE 'transaction_isolation'; +-----------------------+-----------------+ | Variable_name | Value | +-----------------------+-----------------+ | transaction_isolation | REPEATABLE-READ | +-----------------------+-----------------+ 1 row in set (0.00 sec)

MySQLの互換性

  • TiDB は、構文のみでトランザクションを読み取り専用として設定する機能をサポートしています。
  • 分離レベルREAD-UNCOMMITTEDSERIALIZABLEはサポートされていません。
  • 分離レベルREPEATABLE-READ 、MySQL と部分的に互換性のあるスナップショット分離テクノロジーを使用することで実現されます。
  • 悲観的トランザクションでは、TiDB は MySQL と互換性のある 2 つの分離レベル ( REPEATABLE-READREAD-COMMITTEDをサポートします。詳細な説明については、 分離レベルを参照してください。

こちらも参照

このページは役に立ちましたか?