TiDB v7.5.0 vs Oceanbase v4.2.1.1 : online ddl 吐血验证测试

原创
2023/12/21 00:00
阅读数 35

作者: h5n1 原文来源:https://tidb.net/blog/91b456a3

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

CREATE TABLE `sbtest1` (  `id` bigint(20) NOT NULL ,  `k` bigint(20) NOT NULL DEFAULT '0',  `c` varchar(120) NOT NULL DEFAULT '',  `pad` varchar(60) ,  PRIMARY KEY (`id`),  KEY `k_1` (`k`))  DEFAULT CHARSET='utf8'partition by range(id)( partition p1 values less than(1000001),partition p2 values less than(2000001),partition p3 values less than(3000001),partition pmax values less than(maxvalue));

 

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文档

-------------------------

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部