Jdbc 当更新的字段值是随机的时,为什么TiDB性能会下降10倍?

Jdbc 当更新的字段值是随机的时,为什么TiDB性能会下降10倍?,jdbc,tidb,tikv,Jdbc,Tidb,Tikv,我设置了TiDB、TiKV和PD集群,以便使用MySQL驱动程序连接的YCSB工具对它们进行基准测试。 集群由TiDB、TiKV和PD各5个实例组成。 每个节点运行一个TiDB、TiKV和PD实例 但是,当我在update语句中处理YCSB代码时,我注意到如果updated字段的值是固定的和硬编码的,则总吞吐量约为30K tps,延迟约为30ms。如果更新的字段值是随机的,则总吞吐量约为2k tps,延迟约为300ms update语句创建代码如下所示: @凌驾 公共字符串createUpda

我设置了TiDB、TiKV和PD集群,以便使用MySQL驱动程序连接的YCSB工具对它们进行基准测试。 集群由TiDB、TiKV和PD各5个实例组成。 每个节点运行一个TiDB、TiKV和PD实例

但是,当我在update语句中处理YCSB代码时,我注意到如果updated字段的值是固定的和硬编码的,则总吞吐量约为30K tps,延迟约为30ms。如果更新的字段值是随机的,则总吞吐量约为2k tps,延迟约为300ms

update语句创建代码如下所示:


@凌驾
公共字符串createUpdateStatement(语句类型updateType){
String[]fieldKeys=updateType.getFieldString().split(“,”);
StringBuilder更新=新的StringBuilder(“更新”);
append(updateType.getTableName());
更新。追加(“集合”);
对于(int i=0;i
我们如何解释这一性能差距?
这是由于DistSQL查询缓存造成的吗?正如本文所讨论的那样?

我从这篇文章()和pr()中找到了答案。 这是因为如果更新的字段与以前的值相同,TiDB将不执行txn