mysql 一次更新大量数据,速度慢, cpu 占用高,有啥优化思路吗

2021-01-15 14:48:23 +08:00
 git00ll

mysql 服务器性能不是很好, 如果执行如下的 sql 语句

update table set status = 1 where order_id = "xxxxx"

order_id 上有索引,一次更新的数据量有 60w 条,需要耗时 60 秒左右,数据库 cpu 会到 80%以上。

排除升级机器,有啥好办法优化这种场景吗

5732 次点击
所在节点    MySQL
22 条回复
winglight2016
2021-01-16 13:58:27 +08:00
一分钟更新 60w 条记录,这个速度很慢吗?总共有多少记录需要更新?更新频次是多少?希望达到什么样的更新速度?及时性有什么要求?

lz 想做优化就先把约束条件都写下来,自然就有优化方向了,现在啥都没有,换高性能机器是最靠谱的办法。
siyemiaokube
2021-01-17 11:11:40 +08:00
一个可能的方法是把表拆分一下

不过 sql 其实本身不太适合大批量更新,如果你们只是需要根据 order_id 修改确定的属性、而几乎不需要根据其他的属性进行修改操作,那么,可以考虑更换别的数据结构。

不过在我的知识中,出现这种情况是因为设计的不好……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/745243

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX