中易网

如何提高mysql批量更新全表非索引字段的效率?

答案:2  悬赏:30  
解决时间 2021-04-09 19:43
【背景】mysql数据表,主键为字符串,100万条记录,jdbc连接优化参数:cachePrepStmts=true&useServerPrepStmts=true&rewriteBatchedStatements=true,硬件配置上佳(I7处理器,16G内存)

【需求】更新所有记录的非索引字段——int类型

【问题】在实际项目中批量更新的batch大小设置为2000,每次批量更新的耗时为1分53秒左右,请问是否正常?若不正常,可能是什么原因导致或者如何优化?

下边是简要的表结构。在做完某些运算后对doc_freq进行赋值
create table lemma (
id varchar(32) character set latin1 collate latin1_bin,
... ...
doc_freq integer not null,
primary key (id)
) character set utf8mb4 collate utf8mb4_bin;

为了测试方便,我将数据集大小从100万缩减为2000,结果如下:
有一条记录的id为'1001_',
select * from lemma where id='1001_'; 耗时小于0.001s
update lemma set doc_freq=18 where id='1001_'; 耗时:0.042s
问题一:更新时间比查询时间多很多
问题二:一次性更新2000条时间约等于单条更新时间之和,有没有针对mysql的优化方法?
最佳答案
不正常 希望有实际的表结构观看
全部回答
你好! 是有点多时间了,检查下更新时索引是否有被调用或者有中途表被锁的情况。 看楼下有好的解决办法没有 我的回答你还满意吗~~
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电脑的最大支持容量是啥意思,我的电脑最大支
昆明到西双版纳汽车票要提前买吗?
支付宝龙卡怎么办理?
旅游公交是什么
怀柔区劳动关系人民调解委员会怎么去啊,有知
水蜜桃挂满了枝头,沉甸甸的,把树枝都压弯了
用科学记数法表示
会计初级的经济法基础记忆口诀谁有?谢谢了
南航 A319.经济舱空姐坐在什么地方呀?坐在哪
三洋液晶电视一插电源就开机是怎么回事
#音乐#求关于“越南关荷调”(QUA HO)的各种
2011年 新坟不过社的社日是哪天啊 ,知道的说
碧蓝幻想 四象降临交换列表的第一个东西有什
花径园(西2门)在哪里啊,我有事要去这个地方
韩寒什么时候退学?当时他多少岁?
推荐资讯
英语翻译急需
软件生产有几个阶段
伊丁园清真餐厅在哪里啊,我有事要去这个地方
宠物店里的故事读后感
苏州宝玛数控怎么样啊
筑地青空三代目怎么样
秀发丝语地址在什么地方,想过去办事
金宫花园地址在哪,我要去那里办事
洗衣机安建不灵是什么原因
英文用希腊字体写吗
亚太驾校培训中心地址有知道的么?有点事想过
3dmax design 2012和design2013的序列号和密
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?