3
3
2
1
专栏/.../

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

 h5n1  发表于  2023-12-21
原创

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

增加索引

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秒

offline

中间加列(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文档

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

3
3
2
1

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论