更新时间:2024-11-11 GMT+08:00

其他语句

表1 其他语法兼容介绍

序号

概述

详细语法说明

差异

1

事务相关语法

数据库默认隔离级别

M-Compatibility默认隔离级别为READ COMMITTED,MySQL默认隔离级别为REPEATABLE READ。

M-Compatibility隔离级别只有READ COMMITTED REPEATABLE READ生效。

2

事务相关语法

事务嵌套

M-Compatibility中嵌套事务不会自动提交,MySQL会自动提交。

3

事务相关语法

自动提交

M-Compatibility使用GaussDB存储,继承GaussDB事务机制,事务中执行DDL,DCL不会自动提交。MySQL在DDL、DCL、管理类语句,锁相关语句会自动提交。

4

事务相关语法

报错后需rollback

M-Compatibility事务中报错,需要执行rollback,MySQL无限制。

5

事务相关语法

锁机制

M-Compatibility锁机制只能在事务块中使用,MySQL无限制。

6

锁机制

锁机制

  • MySQL获取read锁后,当前会话无法进行写操作,M-Compatibility获取read锁后,当前会话可以进行写操作。
  • MySQL给表上锁后,读取其他表报错,M-Compatibility无限制。
  • MySQL同一会话中获取同一个表的锁,会自动释放上一个锁,并提交事务,M-Compatibility无该机制。
  • M-Compatibility中LOCK TABLE只能在一个事务块的内部有用,且无UNLOCK TABLE命令,锁总是在事务结束时释放。

7

PBE

PBE

  • 重复创建同名的PREPARE语句,M-Compatibility会报已经存在的错误,需要先删除已有statement,MySQL会覆盖旧的statement。
  • M-Compatibility和MySQL在SQL语句执行过程中对异常场景的报错阶段不同,例如解析层、执行层等;而PREPARE语句对预备语句只处理到解析层。因此PBE下对于异常场景,报错位置在PREPARE阶段还是EXECUTE阶段,M-Compatibility和MySQL存在可能差异。