ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL-在线处理大表数据 & 在线修改大表的表结构

2020-02-03 11:37:20  阅读:377  来源: 互联网

标签:rows 在线 MySQL 修改 SQL 主从 大表


文章目录


在这里插入图片描述


官方文档

https://dev.mysql.com/doc/

在这里插入图片描述

如果英文不好的话,可以参考 searchdoc 翻译的中文版本

http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html
在这里插入图片描述


概述

MySQL-获取有性能问题SQL的方法_慢查询 & 实时获取

MySQL- SQL执行计划 & 统计SQL执行每阶段的耗时

上面两篇文章我们知道了如何获取有问题的SQL,以及如何统计SQL每个阶段的耗时,这样我们去优化的时候就更加有针对性。

这里我们列举几个例子,来看下如何具体的优化SQL


示例

大表数据的分批处理

分批处理大表的数据,特别是主从复制的MySQL集群, 每处理一批最好留一点时间,给主从同步复制留一点时间。

举个例子 有个大表 1千万数据,我们要修改其中的100万, 那么最好分多个批次来更新,每次5000或者1万,根据自己服务器的性能合理的调整。

存过如下, 根据自己的业务调整。

DELIMITER $$
USE `artisan` $$
DROP PROCEDURE IF EXISTS `p_delete_rows` $$
CREATE DEFINER=`root@192.168.18.131` PROCEDURE `p_delete_rows`()
BEGIN
		DECLARE v_rows INT;
    SET v_rows = 1;
    WHILE  v_rows >0
		DO 
				DELETE FROM t_test where id >= 10000  AND  id <= 20000 LIMIT 5000;
        SELECT ROW_COUNT() INTO v_rows;
        SELECT SLEEP(5);
    END WHILE;
END$$
DELIMITER;

修改大表的表结构

当一个表中的数据量很大的时候,我们对表中的列的字段类型进行修改,比如改变字段的宽度时会锁表,从而影响业务。 其二 无法解决主从数据库延迟的问题

方案一 : 从表修改,主从切换

现在从服务器上修改,然后主从切换。 切换完以后在此修改新的从服务器。 需要主从切换


方案二: pt-online-schema-change

主服务器上

Step1 : 建立一个新表,将大表的数据同步过去
Step2: 老表上建立触发器,同步到新表
Step3:同步后老表上弄个排它锁
Step4: 新表重命名 ,删除老表

可以避免主从延迟,只不过操作复杂点,好在有第三方的工具可以使用 pt-online-schema-change

用法

pt-online-schema-change \
-- alter="MODIFY c VARCHAR(150) NOT NULL DEFAULT '' "
--user=xxxx--password=xxx D=数据库名, t=表名
--charset=utf8 --execute

– alter : 要操作的DML语句 ,上面的内容为举个例子 改变字段内藏毒

小小工匠 博客专家 发布了812 篇原创文章 · 获赞 2022 · 访问量 414万+ 他的留言板 关注

标签:rows,在线,MySQL,修改,SQL,主从,大表
来源: https://blog.csdn.net/yangshangwei/article/details/104152835

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有