MySQL 大数据操作注意事项
MySQL大数据操作注意事项包括以下几点:1)删除操作需分批处理,避免一次性大量删除导致系统压力;2)使用EVENT定时执行删除操作,分批处理数据;3)在电商领域,价格调整需谨慎处理,测试环境通过后才能部署到生产环境;4)大表创建索引需经历manage keys和copy to tmp table过程,删除索引同样需要此过程;5)OPTIMIZE操作将表复制到临时表后删除;6)切换引擎(如MyISAM到InnoDB)需经历多步过程;7)确保SELECT操作优先级,避免阻塞;8)记录操作者以确保数据安全和可追溯性。
MySQL 大数据操作注意事项
http://netkiller.github.io/journal/mysql.parallel.html
关于 delete
直接删除整个mytable表肯定会出大问题,建议分批进行删除操作,尽量减少每次删除操作处理的记录数量。delete操作可以并行执行,这样就可以同时执行多个delete操作。

手工分批删除
通过 where 条件和 limit 限制条数,缩小删除结果集,分多笔执行,手工删除。
自动定时执行,分批删除数据
需求:数据需要删除100万条数据,直接删除会对系统造成压力,导致主库阻塞。
解决方案:分批删除,使用 event 定时执行删除 SQL 直到删完位置。
开启 EVENT
准备数据备份、删除和回撤所需的三条SQL
通过 where 缩小结果集
上面条SQL在测试环境验证无误后,编写定时删除 EVENT
EVENT 在测试环境运行无误才能在生产环境执行。
通过设置 limit 参数,可以有效控制每次删除的数量。用于监控 EVENT 执行状态,这里会记录一条事件日志。
数据删除完毕之后回收 EVENT
关于 update
在电商领域,调价问题较为常见。经常需要对一批商品的价格进行调整,程序猿只需编写一条语句即可完成操作,这样的效率确实令人惊叹!
在开发,测试环境是可以通过测试的,一旦部署到生产环境,必死无疑
关于创建索引
创建大规模表的索引耗时很久,通常需要涉及管理键并复制到临时表的过程。
删除索引,也需要经理 copy to tmp table 过程,漫长的等待
所以数据设计要深思熟虑,做到提前未雨绸缪,不要亡羊补牢
关于 OPTIMIZE
优化过程是执行复制到临时表操作后删除当前表,最后将临时表重命名为目标表。
关于切换引擎
转换ENGINE从MyISAM到InnoDB的过程中,经历了创建临时表、复制数据至临时表以及重命名表等多个阶段,整个过程耗时较长。
copy to tmp table 过程
此时我们查看mysql data目录会看到临时表文件
确保SELECT不被受阻
采取多种措施确保select操作能够顺利进行,只要select操作能够持续访问前端网站,就能保持80%的功能正常运行。select操作一旦出现阻塞,整个系统的功能都将受到影响。
保证 select 操作优先于其他操作
update的时候增加 LOW_PRIORITY 参数,可以降低更新语句的优先级。
my.cnf
或者启动是添加--low-priority-updates参数
全局开启
适用于本次会话连接
使用 limit 限制更新记录的数量
记录操作者
