Advertisement

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 限制更新记录的数量

复制代码
记录操作者
复制代码

全部评论 (0)

还没有任何评论哟~