阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 12252阅读
  • 13回复

[对外分享]OceanBase和TiDB  Sysbench测试对比

级别: 论坛版主
发帖
62
云币
148

1. 环境准备


主机 CPU E5-2430 0 @ 2.20GHz *24
内存 8G *12
DISK SATA 2T *11 用LVM管理
网卡千兆

TiDB  7台机器:  PD(3台)+ TiKV(3台)+ TiDB(1台)
OB     7台机器: OBServer(6台)+ OBProxy(1台)

Sysbench 1.0
准备了 16个表,每个表1亿左右数据。 TiKV是动把leader分散到三个机器上。OB通过设置将16个表打散到六台机器上。


数据初始化 ./sysbench --test=./oltp_read_only.lua --mysql-host=***.***.82.173 --mysql-port=4001 --mysql-db=test --mysql-user="sbuser"  --mysql-password=sbtest --tables=16 --table_size=100000000 --threads=32 --time=300 --report-interval=5 --db-driver=mysql --db-ps-mode=disable --skip-trx=on --mysql-ignore-errors=6002,6004,4012,2013,4016 prepare
纯读场景 ./sysbench --test=./oltp_read_only.lua --mysql-host=***.***.82.173 --mysql-port=4001 --mysql-db=test --mysql-user="sbuser"  --mysql-password=sbtest --tables=16 --table_size=100000000 --threads=96 --time=600  --db-driver=mysql --db-ps-mode=disable --skip-trx=on --mysql-ignore-errors=6002,6004,4012,2013,4016 --secondary=on run
读写混合场景 ./sysbench --test=./oltp_read_write.lua --mysql-host=***.***.82.173 --mysql-port=4001 --mysql-db=test --mysql-user="sbuser"  --mysql-password=sbtest --tables=16 --table_size=100000000 --threads=32 --time=600 --report-interval=5 --db-driver=mysql --db-ps-mode=disable --skip-trx=on --mysql-ignore-errors=6002,6004,4012,2013,4016,1062 run
纯写场景 ./sysbench --test=./oltp_write_only.lua --mysql-host=***.***.82.173 --mysql-port=4001 --mysql-db=test --mysql-user="sbuser"  --mysql-password=sbtest --tables=16 --table_size=100000000 --threads=32 --time=600 --report-interval=5 --db-driver=mysql --db-ps-mode=disable --skip-trx=on --mysql-ignore-errors=6002,6004,4012,2013,4016,1062 run

TiDB 集群安装详情 参见其他帖子 TiDB集群手动安装
OB集群安装详情参见其他帖子 OceanBase集群手动安装


2. 纯读场景


报告 见图



备注:
1. 前期初始化1亿*16表数据跑了近8个小时。OB的写特点是写增量在内存里不落盘,待内存使用达到某个阀值后触发冻结、转储和大合并事件。因此OB初始化过程中发生多次冻结事件有部分数据写入失败回滚。
2. 纯读场景刚开始,多跑几次性能会逐步变好。TiKV内部使用rocksdb引擎,数据IO都是buffer io,主机的pagecache达到43G左右不再增长,8-16个并发的时候,推测数据在pagecache命中率很高,所以tikv节点的io压力比observer的IO压力小(OB都是direct io),rt更好,qps更高。而OB主机随着并发增加,运行时间变成,block cache的命中率从80%提升到97%后,OB的rt 逐渐下降,observer节点的io压力从早期的100%回落到80%左右。
3. 观察tikv 和observer机器的io特点。tikv 节点磁盘的平均每个读io的大小在30K左右,observer节点磁盘的平均每个读io大小在12K左右。observer的block cache hit 大小对observer性能影响比较大。磁盘的性能对tikv影响比较大。
4. 最早的时候ob租户只选了3台机器,且只有一台机器提供服务。后来误判性能跟不上,就直接将租户扩容到6台机器全部使用。


3. 读写混合场景


报告见图







4. 纯写场景


报告见图



备注:
1. 在128并发的时候,OB的QPS反而下降了,分析发现是此时 数据报错(主要是主键冲突)增多导致。




5. 总结


a. 对TiDB了解很浅,配置文件主要是参考网友方法搭建,可能存在某些参数不是最优。而这个机器的配置是为OceanBase做过定制。这方面对二者性能可能有些影响。如果有人有好的经验,欢迎指出来。
b. 机器的磁盘是SATA盘,属于生产环境下线的老机器。最新的机器都是普通ssd做raid 5.  这个SATA盘对TiDB的性能可能影响比较大,不过对OB影响不大。后面我会再换ssd机器做对比测试。
c. 早期做过16个表*1kw数据的测试,结论也是这样。这里每个表1亿的数据量,对OB的影响还是有一点,因为没有用分区表,所以对表的随机读取会触发很多磁盘io。当OB的block cache 命中率达到97%后,这部分影响基本消失。
d. TiDB的架构特点是计算与存储分离,OB的架构里没有做分离。6个observer节点作用一样,都承担sql运算和数据存储功能。从细节上来说这个对比很难做到公平,但从客户角度,同样提供7台机器,看总的性能输出还是有说服力的。







[ 此帖被mq4096在2018-10-11 09:23重新编辑 ]
级别: 新人
发帖
3
云币
3
只看该作者 沙发  发表于: 2018-10-10
ReOceanBase和TiDBSysbench测试对比
赞,什么时候跑下tpcc对比下
级别: 论坛版主
发帖
62
云币
148
只看该作者 板凳  发表于: 2018-10-10
回 1楼(苍穹之巅007) 的帖子
恩。TPCC将会在 OB 2.1版本后开始测试。 预计11月底可以。
级别: 论坛版主
发帖
62
云币
148
只看该作者 地板  发表于: 2018-10-10

上面OB使用了6台机器。考虑到TiDB是用三台存储节点提供服务。于是我把OB租户缩容到三台机器再重新测试一下。


测试脚本不变。
测试结论也不变。SATA盘性能确实不怎么好。当数据量非常大的时候,TiKV的主机Pagecache命中率和OBServer的Block cache命中率都不高的时候,都会有很多随机磁盘IO,磁盘的性能间接都会影响二者的RT和吞吐。


纯读场景



读写混合




纯写场景




[ 此帖被mq4096在2018-10-11 18:12重新编辑 ]
级别: 菜鸟
发帖
72
云币
103
只看该作者 4楼 发表于: 2018-10-22
感谢楼主的分享
[ 此帖被孜然炸鸡柳在2018-11-09 18:23重新编辑 ]
级别: 新人
发帖
3
云币
3
只看该作者 5楼 发表于: 2018-11-09
ReOceanBase和TiDBSysbench测试对比
性能测试中资源都未占满的情况下,其他吃CPU的进程会对测试结果有影响吗?
级别: 新人
发帖
2
云币
2
只看该作者 6楼 发表于: 2018-11-10
ReOceanBase和TiDBSysbench测试对比
级别: 新人
发帖
3
云币
3
只看该作者 7楼 发表于: 2018-11-14
ReOceanBase和TiDBSysbench测试对比
楼主能否贴一下测试的时候,sbuser的资源池是什么样的?
级别: 论坛版主
发帖
62
云币
148
只看该作者 8楼 发表于: 2018-11-26
回 7楼(klkyy2018) 的帖子
机器就是 https://bbs.aliyun.com/read/589394.html 这个里面提到的。 资源池规格最大不超过单机的资源大小。
级别: 程序猿
发帖
497
云币
745
只看该作者 9楼 发表于: 2018-11-27
谢谢分享。

[ 此帖被服务器云在2018-11-28 09:24重新编辑 ]
级别: 新人
发帖
4
云币
4
只看该作者 10楼 发表于: 03-17
回 2楼mq4096的帖子
老哥跑tpcc时候可以用OB2.1 vs TiDB 3.0对比下,看TiDB 3.0的release note里撸了新的引擎换了rocksdb。
级别: 论坛版主
发帖
62
云币
148
只看该作者 11楼 发表于: 03-19
回 10楼(EricSyh) 的帖子
恩,好。  记着了。
级别: 新人
发帖
2
云币
3
只看该作者 12楼 发表于: 03-21
ReOceanBase和TiDBSysbench测试对比
你好,我在用sysbench1.0测试oceanbase的时候报出如下错误,请问这是什么原因导致的,怎么解决呢
我的测试语句是:
../sysbench oltp_point_select.lua --mysql-host=xx.xxx.17.66 --mysql-port=8041 --mysql-user=xxxx --mysql-password=xxxx --mysql-db=obtest --tables=16 --table-size=1000000 --threads=64 --time=60 run
错误如下:
FATAL: mysql_stmt_prepare() failed
(last message repeated 3 times)
FATAL: MySQL error: 1235 "Not supported feature or function"
(last message repeated 2 times)
FATAL: mysql_stmt_prepare() failed
(last message repeated 1 times)
FATAL: MySQL error: 1235 "Not supported feature or function"
(last message repeated 2 times)
FATAL: `thread_init' function failed: ./oltp_common.lua:291: SQL API error
(last message repeated 5 times)
级别: 论坛版主
发帖
62
云币
148
只看该作者 13楼 发表于: 03-25
Re:回 12楼(zhm) 的帖子
请带上下面参数 试试


--db-ps-mode=disable  --mysql-ignore-errors=6002,6004,4012,2013,4016


1. OB 1.4还不支持prepare 接口,所以需要禁用。
2. 在导入数据过程中,OB有可能因为冻结合并发生内部切主或者kill事务(1.x版本问题,2.x没有),需要客户端自动重连。所以要加上 一些error的忽略。否则sysbench客户端会话直接中断退出了。


[ 此帖被mq4096在2019-03-25 18:18重新编辑 ]
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)