主要观点总结
文章主要介绍了在进行大数据量MySQL表更新时,如何优化主从同步的问题。文章从最初的直接update遇到的问题出发,介绍了深度分页问题以及如何通过优化SQL语句和脚本分批处理来解决该问题。同时,文章还介绍了其他相关问题如雪花算法主键、uuid的处理方式,以及mall项目的相关介绍。
关键观点总结
关键观点1: 直接update的问题
在进行大数据量的MySQL表更新时,直接执行sql语句可能会导致主从同步问题,产生大量的binlog,给从库带来写数据压力。
关键观点2: 深度分页问题
使用mysql的limit进行分批处理时,当数据量较大时,效率很低,类似于全表扫描。
关键观点3: 优化方案
通过优化SQL语句和脚本分批处理,使用关键字如/*!40001 SQL_NO_CACHE */和FORCE INDEX来优化查询效率,最终实现高效的全表更新。
关键观点4: 其他问题和解决方案
涉及到snowflake雪花算法或uuid等生成的主键处理方式,需要提前进行数据处理。同时介绍了mall项目的整体架构和全套视频教程的内容。
文章预览
mall学习教程官网: macrozheng.com 作者:呼呼虎 来源:juejin.cn/post/6897185211340029966 有些时候在进行一些业务迭代时需要我们对Mysql表中数据进行全表update,如果是在数据量比较小的情况下(万级别),可以直接执行sql语句,但是如果数据量达到一个量级后,就会出现一些问题,比如主从架构部署的Mysql,主从同步需要需要binlog来完成,而binlog格式如下,其中使用statement和row格式的主从同步之间binlog在update情况下的展示: 格式 内容 statement 记录同步在主库上执行的每一条sql,日志量较少,减少io,但是部分函数sql会出现问题比如random row 记录每一条数据被修改或者删除的详情,日志量在特定条件下很大,如批量delete、update mixed 以上两种方式混用,一般的语句修改使用statement记录,其他函数式使用row 我们当前线上mysql是使用row格式binlog来进行的主从同步,
………………………………