TiDB 基于PK的update速度慢

【TiDB 使用环境】生产环境
【TiDB 版本】v7.5.5
【操作系统】centos 7.5
【部署方式】物理服务器
【集群数据量】单副本20T
【集群节点数】48个
【问题复现路径】
【遇到的问题:问题现象及影响】

表结构:
create table tab (col1 int, col2 int, col3 varchar, primary key(col1,col2))

SQL语句:
1、update tab set col3 = xxx where col1 = xxx and col2 = xxx;
2、update tab set col3 = xxx where col1 = xxx and col2 in (400个整型值);

通过与原生MySQL对比发现,这两类更新请求性能比原生MySQL要慢一倍以上,社区小伙伴们有遇到过这类的问题么?

tidb执行单条dml确实会慢些,并发高了才比mysql有优势。
分布式dml开销大很多

这个表有多少数据呢

tidb分布式事务,考虑数据一致性和多副本同步,单条单行数据,性能本来就不会比其它非分布式数据库快,甚至由于考虑的方面更多,速度可能稍慢。
分布式数据库,高并发处理方面才是它的优点和长处。

要在海量数据下对比

千万级别

1 个赞

分布式数据库天生比单机数据库慢,这是现实,它的优势是扩展、大数据处理等

:thinking:点查点写不应该这么慢才对,analyze表一下试试,或者explain analyze看一下执行计划,是不是没有走point get

数据量大么

看下执行计划,看看时间耗费在那儿了

1 个赞

把 database 慢查询完整执行计划上传一下,上面记录了详细时间消耗。

1 个赞

最好是能提供一下执行计划

点查也会比mysql慢很多,毕竟tidb到tikv有延时