云数据库 GAUSSDB-事务:transaction_isolation

时间:2024-11-13 14:45:07

transaction_isolation

参数说明设置当前事务的隔离级别。对于开启的新事务,隔离级别固定为default_transaction_isolation的值。该参数可在PDB级别设置。

参数类型:字符串

参数单位:

取值范围:

  • 通常情况下,支持以下字符串,对大小写和空格敏感。
    • 'serializable': GaussDB 目前功能上不支持此隔离级别,设置该隔离级别时,与'repeatable read'效果相同。
    • 'read committed':仅读取已提交事务的数据,无法读取未提交的数据。
    • 'read uncommitted':与'read committed'表现相同。
    • 'repeatable read':仅读取事务开始之前提交的数据,无法读取未提交的数据以及在事务执行期间由其他并发事务提交的修改。
    • 'default':设置为default_transaction_isolation所设的隔离级别。
  • 当dbcompatibility='M'且m_format_dev_version = 's2'时,还可以设置为以下字符串,对空格敏感。
    • 'SERIALIZABLE'(与'serializable'效果相同):GaussDB目前功能上不支持此隔离级别,设置该隔离级别时,与'REPEATABLE-READ'效果相同。
    • 'READ-COMMITTED'(与'read committed'效果相同):仅读取已提交的事务的数据,无法读取到未提交的数据。
    • 'READ-UNCOMMITTED'(与'read uncommitted'效果相同):与'READ-COMMITTED'表现相同。
    • 'REPEATABLE-READ'(与'repeatable read'效果相同):仅读取事务开始之前提交的数据,无法读取未提交的数据以及在事务执行期间由其它并发事务提交的修改。

默认值:'default'。在PDB场景内,若未设置该参数,则继承来自全局的设置。

  • default_transaction_isolation参数使用默认值'read committed'。通常情况下,通过show transaction_isolation;命令查询的结果为'read committed'。
  • 当dbcompatibility='M'且m_format_dev_version = 's2'时,因此default_transaction_isolation参数使用默认值的情况下,通过show transaction_isolation;命令查询的结果为'READ-COMMITTED'。

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

  • 当dbcompatibility='M'时,查询tx_isolation和查询transaction_isolation效果相同。
  • 当dbcompatibility='M'且m_format_dev_version = 's2'时,执行“SET [local|session|@@session.] transaction_isolation = value;”会修改会话级事务特性,即同时修改default_transaction_isolation参数值。
  • 当dbcompatibility='M'且m_format_dev_version = 's2'时,执行“SET @@transaction_isolation = value;”用来设置下一个事务的隔离级别,并且不允许在显式事务内使用;如果隐式事务报错,即单个SQL语句报错,继续保持下一个事务特性。
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0369.html