sysbench花式采坑之二:自增值导致的主键冲突

上期《sysbench花式采坑之一:自增值导致的TPS不可靠》介绍到,在sysbench压测过程中,如果自增值不为1会导致性能测试值偏高的现象,其实在发现这个现象之前,在单实例性能测试时我还遇到了一个主键冲突的问题。

| MySQL单实例sysbench压测时出现主键冲突

《sysbench花式采坑之一:自增值导致的TPS不可靠》这篇文章里解释了sysbench关于插入的操作是先随机生一个id,然后通过这个id先删掉一行,再通过这个id插入一行。

# 在1和压测语句中指定的 oltp_table_size 中生成一个随机数i
i = sb_rand(1, oltp_table_size)
# 删除 id 为 i 的列
rs = db_query("DELETE FROM " .. table_name .. " WHERE id=" .. i)
c_val = sb_rand_str([[
###########-###########-###########-###########-###########-###########-###########-###########-###########-###########]])
pad_val = sb_rand_str([[
###########-###########-###########-###########-###########]])
# 插入 id 为 i 的列
rs = db_query("INSERT INTO " .. table_name .. " (id, k, c, pad) VALUES " .. string.format("(%d, %d, '%s', '%s')",i, sb_rand(1, oltp_table_size) , c_val, pad_val))

看一下sysbench oltp压测中SQL具体的内容。

# 打开general_log
mysql> set global general_log=1;
# 压测语句,指定num-threads为1
shell> sysbench --test=oltp --db-driver=mysql --mysql-table-engine=innodb --mysql-host=localhost --mysql-socket=/tmp/mysql-3306.sock --mysql-db=sbtest --mysql-user
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值