取引を設定する

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をサポートします。詳細な説明については、 分離レベルを参照してください。

こちらもご覧ください