---
title: "MySQL 兼容性对比 | OceanBase 文档中心"
description: MySQL 兼容性对比 本节主要介绍 OceanBase 数据库的 MySQL 模式与原生 MySQL 数据库的兼容性对比信息。 OceanBase 数据库的 MySQL 模式兼容 MySQL 5.7 的绝大部分功能和语法。由于产品架构不同，或者客户需求不大，有些功能并没有被支持。本节主要从以下几方面介绍 Ocean…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 3.2.3 企业版 LTS

# MySQL 兼容性对比

更新时间：2024-11-27 17:20:56

本节主要介绍 OceanBase 数据库的 MySQL 模式与原生 MySQL 数据库的兼容性对比信息。

OceanBase 数据库的 MySQL 模式兼容 MySQL 5.7 的绝大部分功能和语法。由于产品架构不同，或者客户需求不大，有些功能并没有被支持。本节主要从以下几方面介绍 OceanBase 数据库的 MySQL 模式与原生 MySQL 数据库的不同：

- 数据类型
 - SQL 语法
 - 系统视图
 - 字符集和字符序
 - 函数与表达式
 - 分区支持
 - 备份恢复
 - 存储引擎
 - 优化器
 - 暂不支持的功能

## 数据类型

OceanBase 数据库支持的数据类型有：

- 数值类型

     - 整数类型：`BOOL`/`BOOLEAN`/`TINYINT`、`SMALLINT`、`MEDIUMINT`、`INT`/`INTEGER` 和 `BIGINT`。
     - 定点类型：`DECIMAL` 和 `NUMERIC`。
     - 浮点类型：`FLOAT` 和 `DOUBLE`。
     - Bit-Value 类型：`BIT`。
 - 日期时间类型：`DATETIME`、`TIMESTAMP`、`DATE`、`TIME` 和 `YEAR`。
 - 字符类型：`CHAR`、`VARCHAR`、`BINARY` 和 `VARBINARY`。
 - 大对象类型：`TINYBLOB`、`BLOB`、`MEDIUMBLOB` 和 `LONGBLOB`。
 - 文本类型：`TINYTEXT`、`TEXT`、`MEDIUMTEXT` 和 `LONGTEXT`。
 - 枚举类型：`ENUM`。
 - 集合类型：`SET`。
 - JSON 数据类型。

与 MySQL 数据库对比，OceanBase 数据库暂不支持空间数据类型，其他类别的数据类型支持情况是等于或大于 MySQL 数据库的。

## SQL 语法

### SELECT

- 支持大部分查询功能，包括支持单、多表查询；支持子查询；支持内联接、半联接以及外联接；支持分组、聚合；常见的概率、线性回归等数据挖掘函数等。
 - 支持对多个 `SELECT` 查询的结果进行 `UNION`、`UNION ALL`、`MINUS`、`EXCEPT` 或 `INTERSECT` 等集合操作。
 - 支持通过如下方式查看执行计划：

  ```sql
  EXPLAIN [explain_type] dml_statement;
  explain_type：
      BASIC
    | OUTLINE
    | EXTENDED
    | EXTENDED_NOADDR
    | PARTITIONS
    | FORMAT = {TRADITIONAL| JSON}

  dml_statement:
      SELECT statement
    | DELETE statement
    | INSERT statement
    | REPLACE statement
    | UPDATE statement

  ```
 - 不支持 `SELECT ... FOR SHARE ...` 语法。

### INSERT

- 支持单行和多行插入，以及指定分区插入。
 - 支持 `INSERT INTO ... SELECT ...` 语句。
 - 不支持直接对子查询进行插入操作。

### UPDATE

- 支持单列和多列更新。
 - 支持使用子查询。
 - 支持集合更新。
 - 不支持直接对子查询进行更新值操作。

### DELETE

- 支持单表和多表删除。
 - 不支持直接对子查询进行删除操作。

### TRUNCATE

- 支持完全清空指定表。
 - 不支持在进行事务处理和表锁定的过程中操作。

## 系统视图

OceanBase 数据库实现了 information_schema 和 mysql 这两个内部数据库中的大部分视图，但是由于架构不同，OceanBase 数据库并不保证所有视图均能实现以及视图中所有的列含义与 MySQL 相同。

更多系统视图的说明信息请参考 [系统视图](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355414) 章节。

## 字符集和字符序

OceanBase 数据库兼容 MySQL 数据库的部分字符集和字符序，具体支持情况如下：

- 字符集：binary、utf8mb4、gbk、utf16 和 gb18030。
 - 字符序：utf8mb4_general_ci、utf8mb4_bin、binary、gbk_chinese_ci、gbk_bin、utf16_general_ci、utf16_bin、utf8mb4_unicode_ci、utf16_unicode_ci、gb18030_chinese_ci 和 gb18030_bin。

#### 说明

OceanBase 数据库 V3.x 版本暂不支持 `gb18030_2022` 字符集。如需使用 `gb18030_2022` 字符集，请部署 V4.2.0 或更高版本的 OceanBase 数据库。

## 函数

与 MySQL 数据库对比，OceanBase 数据库的 MySQL 模式不支持如下函数：

- 字符串函数：`CHARACTER_LENGTH()`、`FROM_BASE64()`、`LOAD_FILE()`、`MATCH()`、`OCTET_LENGTH()`、`SOUNDEX()` 和 `TO_BASE64()`。

- XML 函数：`ExtractValue()` 和 `UpdateXML()`。
 - 加密和压缩函数：`COMPRESS()`、`RANDOM_BYTES()`、`SHA1(), SHA(`)、`SHA2()`、`UNCOMPRESS()`、`UNCOMPRESSED_LENGTH()` 和 `VALIDATE_PASSWORD_STRENGTH()`。
 - 锁定函数：`GET_LOCK()`、`IS_FREE_LOCK()`、`IS_USED_LOCK()`、`RELEASE_ALL_LOCKS()` 和 `RELEASE_LOCK()`。
 - 其他函数：`MASTER_POS_WAIT()` 和 `NAME_CONST()` 。

另外，OceanBase 数据库的 MySQL 模式不支持空间分析函数和性能模式函数。OceanBase 数据库所支持的分析（窗口）函数是 MySQL 数据库的超集，即 MySQL 数据库的分析（窗口）函数都支持。

## 分区支持

OceanBase 数据库与 MySQL 数据库对分区的支持差异如下：

- OceanBase 数据库支持一级分区，模板化和非模板化二级分区；MySQL 数据库不支持非模板化二级分区。
 - OceanBase 数据库的二级分区支持 Hash、Key、Range、Range Columns、List 和 List Columns 分区；MySQL 数据库的二级分区仅支持 Hash 分区和 Key 分区。
 - OceanBase 数据库支持模版化和非模版化二级分区表组；MySQL 数据库不支持非模板化二级分区表组。

更多分区的说明及使用请参见 [分区概述](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000357048) 章节。

## 备份恢复

OceanBase 数据库兼容了部分 MySQL 数据库的备份恢复特性，主要支持情况如下：

- 支持全量备份和增量备份。
 - 支持备份数据的备份。
 - 支持备份数据的校验。
 - 仅支持热备份，不支持冷备份。
 - 仅支持表级恢复，不支持表级备份。
 - 不支持租户内部部分数据库的备份恢复。

## 存储引擎

与 MySQL 数据库基于数据块的 InnoDB 和 MyISAM 引擎不同，OceanBase 数据库使用的是基于 LSM-Tree 架构的存储引擎。

## 优化器

OceanBase 数据库在优化器方面与 MySQL 数据库的区别，主要表现在以下几个方面：

- 查看执行计划的命令

     - 输出的列信息仅包含 `ID`、`OPERATOR`、`NAME`、`EST. ROWS` 和 `COST` 以及算子的详细信息。
     - 不支持使用 `SHOW WARNINGS` 显示额外的信息。
 - 查看统计信息

     - 支持执行 `ANALYZE TABLE` 语句查询数据字典表存储有关列值的直方图统计信息。
     - 支持通过内部表 `__all_meta_table` 查看表统计信息和列统计信息。
 - 查询改写优化

     - 支持外联接优化
     - 支持外联接简化
     - 支持块嵌套循环和批量 Key 访问联接
     - 支持条件过滤
     - 支持常量叠算优化
     - 支持 `IS NULL` 优化 (索引不存储 `NULL` 值)
     - 支持 `ORDER BY` 优化
     - 支持 `GROUP BY` 优化
     - 支持 `DISTINCT` 消除
     - 支持 `LIMIT` 下压
     - 支持 Window 函数优化
     - 支持避免全表扫描
     - 支持谓词下压
 - Optimizer Hint 机制

     - 支持联接顺序 Optimizer Hints
     - 支持表级别的 Optimizer Hints
     - 支持索引级别的 Optimizer Hints
     - 语法支持 `INDEX` Hint、`FULL` Hint、`ORDERED` Hint 和 `LEADING` Hint 等。
 - 兼容 MySQL 数据库的并行执行能力包括并行查询、并行复制和并行写入等，且 OceanBase 数据库已经支持并行算子，包括并行聚集、并行联接、并行分组以及并行排序等。
 - OceanBase 数据库还支持计划缓存和预编译，MySQL 数据库并不支持。

更多优化器的详细信息请参见 [SQL 调优指南](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355075)。

## 暂不支持的功能

- 主键列不支持 `INT` 转为 `BIGINT` 数据类型。
 - 暂不支持空间数据类型。
 - 不支持 `SELECT ... FOR SHARE ...` 语法。
 - 不支持空间分析函数和性能模式函数。
 - 对于备份恢复功能，不支持表级备份，不支持租户内部部分数据库的备份恢复。
 - 对于优化器，查看执行计划的命令不支持使用 `SHOW WARNINGS` 显示额外的信息。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
