トランザクションの設定

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-UNCOMMITTEDおよびSERIALIZABLEはサポートされていません。
  • 分離レベルREPEATABLE-READは、MySQL と部分的に互換性のあるスナップショット分離テクノロジを使用することで実現されます。
  • 悲観的トランザクションでは、TiDB は MySQL と互換性のある 2 つの分離レベル ( REPEATABLE-READREAD-COMMITTEDをサポートします。詳細については、 分離レベルを参照してください。

参照

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