首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当更新的字段值是随机的时,为什么TiDB性能下降了10次?

问当更新的字段值是随机的时,为什么TiDB性能下降了10次?
EN

Stack Overflow用户
提问于 2019-04-30 02:50:03
回答 1查看 493关注 0票数 2

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

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

update语句创建代码如下:

代码语言:javascript
复制
  @Override
  public String createUpdateStatement(StatementType updateType) {
    String[] fieldKeys = updateType.getFieldString().split(",");
    StringBuilder update = new StringBuilder("UPDATE ");
    update.append(updateType.getTableName());
    update.append(" SET ");
    for (int i = 0; i < fieldKeys.length; i++) {
      update.append(fieldKeys[i]);
      String randStr = RandomCharStr();  // 1) 3K tps with 300ms latency
      //String randStr = "Hardcode-Field-Value";  // 2) 20K tps with 20ms latency
      update.append(" = '" + randStr + "'");
      if (i < fieldKeys.length - 1) {
        update.append(", ");
      }
    }
    // update.append(fieldKey);
    update.append(" WHERE ");
    update.append(JdbcDBClient.PRIMARY_KEY);
    update.append(" = ?");
    return update.toString();
  }

我们如何解释这一绩效差距?是由于DistSQL查询缓存造成的吗,如本帖子中所讨论的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-02 07:51:29

我设法从这篇文章(当我运行乘法时,相同的事务返回不同的结果。)和pr (https://github.com/pingcap/tidb/issues/7644)中找到了这一点。这是因为如果更新的字段与前面的值相同,TiDB将不会执行txn。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55913334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档