文档首页/ 云数据库 GaussDB/ 与MySQL兼容性参考(集中式)/ 概述/ MySQL兼容性M-Compatibility模式概述
更新时间:2024-12-06 GMT+08:00

MySQL兼容性M-Compatibility模式概述

MySQL兼容性M-Compatibility模式主要介绍GaussDB数据库的MySQL兼容性M-Compatibility模式(即sql_compatibility='M')与MySQL 5.7数据库的兼容性对比信息。仅介绍505.1版本后新增的兼容性特性,特性的相关规格和约束建议在《M-Compatibility开发指南》中查看。

GaussDB数据库在数据类型、SQL功能和数据库对象等基本功能上与MySQL数据库兼容。

GaussDB的执行计划和优化、EXPLAIN显示结果与MySQL不同。

由于GaussDB数据库与MySQL数据库在底层框架实现上存在差异,GaussDB数据库与MySQL数据库仍存在部分差异。

  • M-Compatibility模式在语法、数据类型、元数据、协议等功能上对MySQL数据库有更好的兼容度,推荐使用。B模式由于架构限制无法很好的与MySQL兼容,后续不再演进,不推荐使用。
  • 由于M-Compatibility的底层架构与MySQL存在差异,对于information_schema和m_schema下与MySQL名称相同的Schema(具体请参见《M-Compatibility开发指南》中的“Schema”章节),其查询性能可能存在差异。例如count函数无法做执行上的优化,表现为SELECT *和SELECT count(*)语句耗时近似。

Database和Schema设计

MySQL的数据对象包括DATABASE、TABLE、INDEX、VIEW、TRIGGER、PROC等,MySQL的对象层次跟GaussDB的对应关系是从上至下且一对多包含关系。如下图所示:

图1 MySQL和GaussDB中Database和Schema之间的差异
  • 在MySQL中Database和Schema是同义词;而在GaussDB中,一个Database 下可以有多个Schema。在该特性中,每个MySQL中的Database都被映射到GaussDB的一个Schema。
  • 在MySQL中,INDEX从属于一个TABLE,但在GaussDB中,INDEX从属于一个Schema。这个差异导致INDEX名在GaussDB中要求在Schema内唯一,但在MySQL中仅要在在一个表内唯一。这个差异将作为当前约束予以保留。