【TiDB 使用环境】测试环境
【TiDB 版本】8.5.1
【操作系统】openEuler x86
【部署方式】单机(tidb,pd,tikv都只有1个实例)
【集群数据量】
【集群节点数】
【问题复现路径】
【遇到的问题:问题现象及影响】
在单机场景下,对tidb和mariadb做性能对比测试,发现tidb在绝大多数增删改查操作都比mariadb
差好多,当基础数据量到了大约50万条后,除了批量插入(如单条insert插入1000条记录)和复杂的慢查
询操作性能优于mariadb,其它普通的增删改查操作性能依然很差,
请问这个测试结果是否合理?
【资源配置】128G内存,16核cpu, tidb和mariadb都没有开启特别的优化选项
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
分布式数据库和单机数据库在数据量小的情况下有性能差距很正常,分布式数据库的优势在可扩展性和大数据量下的表现
这个之前也有了解,为什么基础数据量也不算大(50万条)时,tidb的批量插入和复杂慢查询操作依然有优势?可以认为是SQL处理引擎和存储引擎的优化能力弥补了进程间通信开销吗?
这个肯定啊,分布式数据库的网络交互就要比单体数据库要多的多,一个 Raft 三副本,一个多组件 PD、TIKV、TIDB 之间的网络开销
TIKV 底层是 RocksDB,对插入和更新应该友好,对读不太友好,一般单体数据库的引擎都是 B+树,这种数据结构有利于读取,不利于插入。
其实你这么比,没有意义,分布式数据要解决的是你的 SQL 并发和存储,单体满足不了的
要上规模对比才有意义,TiDB的长处本来也不在这些地方
单机场景下确实慢,虽然RocksDB理论上写入更快,但是tidb还有分布式锁开销,以及 raft engine的开销。
不过只要内存大,tidb复杂sql查询明显比mysql快,多表join这种场景