tidb数据库配置:8核cpu,8g内存,ssd固态硬盘。目前测试数据是每批次insert1000数据,qps最多只能达到15,也即是处理能力才2w/s。请教下如何提升qps?
但批次插入1000条数据,最高耗时2.5s
tidb数据库配置:8核cpu,8g内存,ssd固态硬盘。目前测试数据是每批次insert1000数据,qps最多只能达到15,也即是处理能力才2w/s。请教下如何提升qps?
CPU没了,你是一条sql里有1000个value?
瓶颈是CPU,不嫌麻烦的话可以试试7.5,官方数据里insert性能翻了一倍
有点不太理解,服务器是8核cpu,现在cpu利用率才80%。还有很多cpu资源吧
这只是dashboard自己采集的值,可以在主机上用dstat 1 命令输出直接的值,cpu不光user还有自身sys的使用,除非是超高并发压力,不然不可能长时间100%,85%已经算是满负载了
可以设置什么参数,放开数据库对系统的cpu使用吗。让数据库占用系统的cpu最大
提高qps最简单的方法就是拆分sql,并行执行insert
你的意思,单批次插入少点?但是最终的吞吐量=单次插入条数*qps。qps上去了,单次插入条数下去了,乘积还是差不多。
只有一个tidb节点吗? 看你这个集群像是个单机。
你的集群有拓扑的,几个tikv
看上去是CPU处理能力有限
搞成多线程试试,代码中使用多个线程异步执行插入操作
不要一次性insert包含多个value,并发去插入试试。好像这个点跟mysql不一样吧
对于Insert想到的几个问题 1、 insert很多个value时 会造成parse/compile时间占用过长,解决此问题可以试试 noprepare plancache特性并且降低value组数,这个Plan cache需要调整一个fix 来增加运行的value长度。不过是实验特性
https://docs.pingcap.com/zh/tidb/stable/optimizer-fix-controls
2、 大量insert时 IO会有压力,解决方式就是换快的硬盘和加tikv .如果IO没问题可以调整tikv几个线程增加向下的压力
3、tidb存算分离架构导致有些必然的性能损失。另外连接tidb时最好通过负载均衡连接多个插入
多加几个tidb-service节点