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

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

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

# 与 MySQL 兼容性对比

更新时间：2026-04-07 20:57:19

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.5/zh-CN/100.learn-more-about-oceanbase/500.compatibility-with-mysql.md)  

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

OceanBase 数据库的 MySQL 模式兼容 MySQL 5.7/8.0 的绝大部分功能和语法。由于产品架构不同，或者客户需求不大，有些功能并没有被支持。本节主要从以下几方面介绍 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` 和 `STRING`。

  #### 说明

  对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持文本数据类型 `STRING`。
 - 枚举类型：`ENUM`。
 - 集合类型：`SET`。
 - JSON 数据类型
 - 空间数据类型
 - 高效压缩位图数据类型
 - 数组数据类型
 - 向量数据类型

## SQL 语法

    支持   不支持

**SELECT**

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

**INSERT**

- 支持单行和多行插入数据，同时支持指定分区插入数据。
 - 支持 `INSERT INTO ... SELECT ...` 语句。

**UPDATE**

- 支持单列和多列更新数据。
 - 支持使用子查询更新数据。
 - 支持集合更新数据。

**DELETE**

- 支持单表和多表删除。

**TRUNCATE**

- 支持完全清空指定表。

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

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

## 过程性语言

OceanBase 数据库兼容了大部分 MySQL 数据库的 PL 功能，主要支持的 PL 功能如下：

- 数据类型
 - 存储过程
 - 自定义函数
 - 触发器
 - 异常处理

此外，OceanBase 数据库特有的 MySQL PL 系统包，包括 `DBMS_RESOURCE_MANAGER`、`DBMS_STATS`、`DBMS_UDR`、`DBMS_XPLAN` 和 `DBMS_WORKLOAD_REPOSITORY` 等。

更多 PL 功能的详细信息，请参见 [PL 参考](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013356)。

## 系统视图

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

更多系统视图的说明信息请参考《参考指南》文档中 [系统视图](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013005) 章节。

## 字符集

OceanBase 数据库支持的字符集如下：

- binary
 - utf8mb4/utf8mb3

  #### 说明

  `utf8mb3` 是 `utf8mb4` 的别名。
 - gbk
 - utf16
 - utf16le
 - gb18030
 - latin1
 - gb18030_2022
 - ascii
 - tis620
 - sjis
 - big5
 - dec8
 - gb2312
 - ujis
 - euckr
 - eucjpms
 - cp932
 - cp850
 - hp8
 - macroman
 - swe7

#### 说明

对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持字符集：`gb2312`、`ujis`、`euckr`、`eucjpms`、`cp932`、`cp850`、`hp8`、`macroman` 和 `swe7`。

## 字符序

OceanBase 数据库支持的字符序如下表所示。

| 字符序 | 所属字符集 | 说明 |
| --- | --- | --- |
| utf8mb4_general_ci | utf8mb4 | 使用通用排序规则。 |
| utf8mb4_bin | utf8mb4 | 使用二进制排序规则。 |
| utf8mb4_unicode_ci | utf8mb4 | 使用基于 Unicode Collation Algorithm (UCA) 的排序规则。 |
| utf8mb4_unicode_520_ci | utf8mb4 | 使用 Unicode 5.2.0 版本的排序规则。它遵循 Unicode 码点排序，并忽略字符的大小写差异。 |
| utf8mb4_croatian_ci | utf8mb4 | 使用克罗地亚文（Croatian）的排序规则。`utf8mb4_croatian_ci` 兼容 `utf8_croatian_ci`。 |
| utf8mb4_czech_ci | utf8mb4 | 使用捷克文（Czech）的排序规则。 |
| utf8mb4_0900_ai_ci | utf8mb4 | 使用 Unicode 9.0.0 版本的字符排序规则和顺序，同时忽略了字符的大小写差异，将大写字母和小写字母视为相同的字符。 |
| binary | binary | 使用二进制排序规则。 |
| gbk_chinese_ci | gbk | 使用中文语言排序规则。 |
| gbk_bin | gbk | 使用二进制排序规则。 |
| utf16_general_ci | utf16 | 使用通用排序规则。 |
| utf16_bin | utf16 | 使用二进制排序规则。 |
| utf16_unicode_ci | utf16 | 使用基于 Unicode Collation Algorithm (UCA) 的排序规则。 |
| utf8mb4_german2_ci | utf16le | 使用德语排序规则。 |
| utf8mb4_croatian_ci | utf16le | 使用克罗地亚语排序规则。 |
| gb18030_chinese_ci | gb18030 | 使用中文语言排序规则。 |
| gb18030_bin | gb18030 | 使用二进制排序规则。 |
| latin1_swedish_ci | latin1 | 使用瑞典语/芬兰语排序规则。 |
| latin1_german1_ci | latin1 | 用于德国（German）语言环境下的 latin1 字符集的排序规则。 |
| latin1_danish_ci | latin1 | 用于丹麦（Danish）语言环境下的 latin1 字符集的排序规则。 |
| latin1_german2_ci | latin1 | 用于德语环境，适用于需要按照字典顺序进行字符比较的应用场景。 |
| latin1_general_ci | latin1 | 用于需要不区分大小写且支持重音符号的场景，如某些欧洲语言的数据库设计。 |
| latin1_general_cs | latin1 | 用于区分大小写的通用排序规则，支持多种语言（如西欧语言）。 |
| latin1_spanish_ci | latin1 | 用于西班牙（Spanish）语言环境的排序规则。 |
| latin1_bin | latin1 | latin1 使用二进制排序规则。 |
| gb18030_2022_bin | gb18030_2022 | 使用二进制排序规则。 |
| gb18030_2022_chinese_ci | gb18030_2022 | 使用拼音排序规则。不区分大小写。MySQL 模式下该字符集的默认字符序。 |
| gb18030_2022_chinese_cs | gb18030_2022 | 使用拼音排序规则。区分大小写。 |
| gb18030_2022_radical_ci | gb18030_2022 | 使用部首笔画排序规则。不区分大小写。 |
| gb18030_2022_radical_cs | gb18030_2022 | 使用部首笔画排序规则。区分大小写。 |
| gb18030_2022_stroke_ci | gb18030_2022 | 使用笔画排序规则。不区分大小写。 |
| gb18030_2022_stroke_cs | gb18030_2022 | 使用笔画排序规则。区分大小写。 |
| ascii_bin | ascii | 使用二进制排序规则。 |
| ascii_general_ci | ascii | 使用基于字母的不区分大小写的排序规则。它忽略了字符的大小写差异，将大写字母和小写字母视为相同的字符。 |
| tis620_bin | tis620 | 使用二进制排序规则。 |
| tis620_thai_ci | tis620 | 使用泰语排序规则，不区分大小写。 |
| sjis_japanese_ci | sjis | 使用日语排序规则。 |
| dec8_swedish_ci | dec8 | 使用瑞典语排序规则。 |
| gb2312_chinese_ci | gb2312 | 使用 GB2312 字符集，按照中文排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| gb2312_bin | gb2312 | 使用 GB2312 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| ujis_japanese_ci | ujis | 使用 UJIS 字符集，按照日语排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| ujis_bin | ujis | 使用 UJIS 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| euckr_korean_ci | euckr | 使用 EUCKR 字符集，按照韩语排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| euckr_bin | euckr | 使用 EUCKR 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| eucjpms_japanese_ci | eucjpms | 使用 EUCJPMS 字符集，按照日语排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| eucjpms_bin | eucjpms | 使用 EUCJPMS 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| cp932_japanese_ci | cp932 | 使用 CP932 字符集，按照日语排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| cp932_bin | cp932 | 使用 CP932 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| cp850_general_ci | cp850 | 使用 CP850 字符集，按照通用排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| cp850_bin | cp850 | 使用 CP850 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| hp8_english_ci | hp8 | 使用 HP8 字符集，按照英语排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| hp8_bin | hp8 | 使用 HP8 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| macroman_general_ci | macroman | 使用 MacRoman 字符集，按照通用排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| macroman_bin | macroman | 使用 MacRoman 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| swe7_swedish_ci | swe7 | 使用 SWE7 字符集，按照瑞典语排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| swe7_bin | swe7 | 使用 SWE7 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |

## 函数

    支持   不支持

OceanBase 数据库所支持的分析（窗口）函数是 MySQL 数据库的超集，即 MySQL 数据库的分析（窗口）函数 OceanBase 数据库都支持。

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

- 字符串函数：`LOAD_FILE()` 和 `MATCH()`。
 - XML 函数：`ExtractValue()` 和 `UpdateXML()`。
 - 其他函数：`MASTER_POS_WAIT()`。

## 分区支持

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

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

  #### 注意

     - 不支持二级分区类型是 Hash 或 Key 类型的场景新增和删除二级分区。
     - 对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持新增二级分区。

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

## 备份恢复

OceanBase 数据库兼容了部分 MySQL 数据库的备份恢复特性。

    支持   不支持

- 支持全量备份和增量备份。
 - 支持热备份。
 - 支持表级和数据库级恢复。
 - 支持指定路径的恢复。
 - 支持日志归档和备份数据的校验。

- 不支持集群级别的备份恢复。
 - 不支持冷备份。
 - 不支持租户内部部分数据库以及表级的备份。

## 存储引擎

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

## 优化器

OceanBase 数据库兼容了部分 MySQL 数据库的优化器功能。有关优化器的详细信息，请参见 [SQL 调优指南](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013317)。

    支持   不支持

- 查看执行计划的命令

     - 输出的列信息仅包含 `ID`、`OPERATOR`、`NAME`、`EST. ROWS` 和 `COST` 以及算子的详细信息。
 - 查看统计信息

     - 支持执行 `ANALYZE 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 数据库并不支持。

     - 不支持使用 `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) 咨询热线
