作者: h5n1
1 测试环境
3台ARM服务器,同时部署TiDB和OceanBase。
TiDB: v7.5.0社区版,kv cache 32G ,CPU 48核(tidb+tikv+pd,numa),普通ssd。
Oceanbase: 4.2.1.1社区版,租户内存128G,48核,普通ssd。
2 测试内容
以Oceanbase 4.2.1官网文档为基准测试内容,验证TiDB和Oceanbase的online ddl能力。Sysbench初始化一张200万数据表,根据测试内容不同设置为不同分区,使用12个线程进行oltp_read_write等DML操作的同时执行DDL,观察DDL执行与TPS情况。
Oceanbase online ddl 说明:
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000252800
|
3 测试目的
1、 对tidb、oceanbase支持的online ddl进行验证对比。
2、 验证oceanbase 官网的offline ddl在tidb能否online。
4 测试结果
本次测试结果汇总如下,环境、版本差异可能会有不同结果,仅供参考。从测试结果看TiDB支持的online ddl操作类型更多,实际使用也更丝滑,对于仅数据字典修改的ddl操作ob的性能要优于tidb,tidb的执行时间更加稳定(可能和环境有关系)。OB在自增列和stored生成列上支持的操作比tidb多,对应分区表tidb支持更多灵活的ddl操作。
OB定义 | 操作 | TiDB | OceanBase | 备注 |
增加索引 | online,TPS降低约38%,15.02秒 | online,TPS降低67%,29.5秒 | ||
删除索引 | online,TPS正常,0.52秒 | online,TPS正常,0.81秒 | ||
重命名索引 | online,TPS正常,0.51秒 | online,TPS正常,0.12秒 | ||
混合索引操作 | online,TPS降低约40%,15.02秒 | online,TPS正常,22.9秒 | ||
末尾加列 | online,TPS正常,0.51秒 | online,TPS正常,2.96秒 | ||
添加 VIRTUAL 列 | online,添加后TPS降低约25%,0.51秒 | online,TPS正常,0.15秒 | ||
删除 VIRTUAL 列 | online,删除后TPS回升约25%,0.51秒 | 异常,TPS掉0,67.39秒 | ||
修改列为 NOT NULL | online,TPS正常,1.29秒 | online,TPS正常,0.125秒 | ||
修改列为 NULL | online,TPS正常,0.51秒 | online,TPS正常,0.2秒 | ||
设列默认值 | online,TPS正常,0.51秒 | online,TPS正常,0.14秒 | ||
删除列默认值 | online,TPS正常,0.52秒 | online,TPS正常,0.18秒 | ||
修改自增列值 | online,TPS正常,0.51秒 | online,TPS正常,0.19秒 | ||
重命名列 | online,TPS正常,0.52秒 | online,TPS正常,0.3秒 | ||
增加列类型长度或精度 | online,TPS正常,0.51秒 | 异常,TPS掉0,55.8秒 | ||
混合列操作 | online,TPS正常,2.29秒 | 异常,TPS掉0,54.7秒 | 有Offline操作则转为offline | |
增加外键、CHECK/NOT NULL 约束 | online,TPS正常,0.0秒 | online,TPS正常,1.25秒 | ||
重命名表 | 表名改了,应用报错,如何online? | |||
修改行格式 | 因架构差异,未测试 | |||
修改块大小 | 因架构差异,未测试 | |||
修改压缩算法 | 因架构差异,未测试 | |||
优化表空间 | 因架构差异,未测试 | |||
添加分区 | online,TPS正常,0.51秒 | online,TPS正常,0.17秒 | ||
中间加列(BEFORE/AFTER/FIRST) | online,TPS正常,0.51秒 | offline,TPS掉0,28秒 | ||
重排列(BEFORE/AFTER/FIRST) | online,TPS正常,0.52秒 | offline,TPS掉0,56.7秒 | ||
添加自增列 | 不支持添加自增列,支持删除自增列属性 | offline,TPS掉0,81秒 | ||
修改为自增列 | 不支持修改为自增列 | online,TPS正常,14秒 | ||
修改列类型 | 部分online(字段类型限制),TPS正常,0.51秒 | offline,TPS掉0,150秒 | ||
修改列为主键 | 聚簇表不支持修改,非聚簇表online | offline,TPS掉0,31.6秒 | ob社区版修改主键为drop\add方式。Tidb不能执行,drop/add分开执行 | |
添加/删除 STORED 生成列 | 不支持添加store生成列,支持online删除store生成列,0.52秒 | offline,TPS掉0,87秒(加)、50秒(删) | ||
删除列 | online,TPS正常,0.52秒 | offline,TPS掉0,58秒 | ||
混合列操作 | online,TPS正常,2.29秒 | 异常,TPS掉0,54.7秒 | ||
添加/删除主键 | 聚簇表不支持,非聚簇表online | offline,TPS掉0,193秒(加)、34秒(删) | ||
TRUNCATE 表 | online,TPS正常,0.52秒 | online,TPS掉4.3秒 | ||
转换字符集 | online,TPS正常,0.51秒 | online,TPS正常,0.11秒 | utf8转utf8mb4 | |
删除表 | 表删除了,应用报错,如何online? | |||
修改分区规则 | online,TPS降低约25%,162秒 | offline,TPS掉0,30.2秒 | tidb支持分区交换、转换、重组等更多操作 | |
删除分区 | online,TPS正常,0.51秒 | online,TPS正常,0.86秒 | ||
TRUNCATE 分区 | online,TPS正常,0.51秒 | online,TPS正常,0.47秒 |
--------------------------
具体测试详情: https://asktug.com/t/topic/1019469 查看pdf文档
-------------------------