当前位置: 首页 > news >正文

网站风格主要包括怎么做一个网站多少钱

网站风格主要包括,怎么做一个网站多少钱,做美食软件视频网站有哪些,企业营销方式有哪些文章目录 1、锁表问题2、pt-online-schema-change 原理3、pt-online-schema-change 实战3.1、准备数据3.2、安装工具3.3、模拟锁表3.4、解决锁表 1、锁表问题 在系统研发过程中,随着业务需求千变万化,避免不了调整线上MySQL DDL数据表的操作&#xff0c…

文章目录

  • 1、锁表问题
  • 2、pt-online-schema-change 原理
  • 3、pt-online-schema-change 实战
    • 3.1、准备数据
    • 3.2、安装工具
    • 3.3、模拟锁表
    • 3.4、解决锁表

1、锁表问题

在系统研发过程中,随着业务需求千变万化,避免不了调整线上MySQL DDL数据表的操作,也就是ALTER TABLE操作,例如:加个索引、加个字段等…

但是如果这张线上表是个大表,也就是说该表可能存在百万、千万、甚至上亿条数据,这时候DDL操作这个过程耗时非常久,并且这个执行阶段存在一个极端现象:锁表,锁表会带来很大的问题,那就是直接导致线上大表读写阻塞。这对大部分系统来说,是无法接受的。

现在有很多避免线上锁表的方案,例如:

  1. 停机执行(直接系统停机维护…不推荐 ❌)
  2. Online DDL(MySQL 5.6版本以上支持,不推荐 ❌)
  3. pt-online-schema-change(推荐 ✅)

本次主要介绍pt-online-schema-change,因为Online DDL这个方案争议还是比较多的,并不建议使用,具体原因参考其他文章,本文重点不在这里。

2、pt-online-schema-change 原理

参考文档:https://docs.percona.com/percona-toolkit/pt-online-schema-change.html

  1. 首先,根据原表创建新表,但是并不会拷贝原表中的数据,_new结尾
  2. 新表执行 DDL 语句,因为是空表,执行速度很快
  3. 原表加3个触发器,捕获变更(insert/update/delete),避免迁移过程中,新表数据不实时同步原表
  4. 批量拷贝原表数据到新表
  5. 数据一致后,会删除原表,留下新表作为生产表。这个过程通常是瞬时的,新表此时已经包含了所有的最新数据

3、pt-online-schema-change 实战

3.1、准备数据

本次我使用阿里云的 Ubuntu 22.04 服务器,上面安装了一台MySQL数据库,MySQL最好设置为innodb_autoinc_lock_mode=2,否则在高并发的写入情况下,很容易产生锁等待以及死锁,我先通过下述 SQL 脚本新增 700w 测试数据:

DELIMITER $$CREATE PROCEDURE generate_data()
BEGINDECLARE i INT DEFAULT 0;WHILE i < 7000000 DOINSERT INTO user (user_name, pass_word, create_time)VALUES (CONCAT('user_', UUID()), CONCAT('password_', FLOOR(RAND() * 10000)), CURDATE());SET i = i + 1;END WHILE;
END $$DELIMITER ;CALL generate_data();

3.2、安装工具

Percona Toolkit 是一个集合了多个实用工具的工具包,专门用于 MySQL 数据库的管理和优化,而 pt-online-schema-change 是其中一个非常有用的工具,所以这里安装 Percona Toolkit

apt install percona-toolkit

3.3、模拟锁表

先通过 Navicat 依次执行下述几个命令,模拟锁表现象发生,DDL操作前的事务没有提交,就会一直锁住:

# 1.耗时查询SQL(耗时几分钟)
select * from user# 2.给大表加字段
ALTER TABLE user ADD COLUMN email30 VARCHAR (255) COMMENT '用户邮箱'# 3.分页查询
select * from user limit 1,10

接着就通过命令查看,出现锁表现象:

SHOW FULL PROCESSLIST

在这里插入图片描述
DDL后续所有操作,都会被阻塞,没办法正常执行,会导致生产环境SQL直接卡死。

3.4、解决锁表

使用 pt-online-schema-change 进行 DDL 模版大概如下:

pt-online-schema-change --host=主机ip --user=MySQL账号 --password=MySQL密码 --alter "DDL语句" D=数据库名,t=表名 --print --execute

重新模拟锁表现象:

# 1.耗时查询SQL(耗时几分钟)
select * from user# 2.给大表加字段(注意⚠️:这个在服务器上执行,不要在Navicat上)
pt-online-schema-change --host=172.16.0.217 --user=root --password=root --alter "ADD COLUMN address VARCHAR(255) COMMENT '家庭住址'" D=pt-online-test,t=user --print --execute# 3.分页查询
select * from user limit 1,10

最后会发现,select * from user limit 1,10查询操作不会被阻塞(但是执行会变慢一些),当然pt-online-schema-change官方提供了许多参数细节,有兴趣可以访问官网自行查看。

http://www.dtcms.com/a/396949.html

相关文章:

  • 企业网站建设实训小结制作一个app
  • 全国教育平台网站建设西安建设网站平台
  • 网站备案信息核验单如何根据网址攻击网站
  • 中国外贸公司排名分析网站推广和优化的原因
  • 中国做类似 esty的网站微信登陆wordpress
  • 51个人网站怎么打开网站开启gzip
  • 化妆网站建设的目的广西建设信息网
  • 哪里教做网站的静态网页做的网站怎么发到网上
  • 自应式网站443是端口网站建设
  • 经营范围 网站建设wordpress主题、
  • 成都网站开发企业ic千库网
  • 怎样提高自己网站排名在线crm网站
  • 房屋中介网站建设代练网站建设视频
  • 惠来网站建设优化推广服务
  • 济南建设网站企业苗木推广做哪个网站好
  • 权威发布的含义备案查询seo查询
  • 海南省生态文明村建设促进会网站品牌创建和品牌建设区别
  • 网站运维公司有哪些qq网页版在线登录
  • 顺德网站wordpress 当前页面id
  • 做擦边球网站绥化市建设局官方网站
  • 网站动态页面打不开集团简介ppt优秀范例
  • 和一起做网店类似的网站网站建设及相关流程图
  • 直邮网站的推广活动怎么做seo策略怎么写举例
  • 学计算机网站建设软件开发工具包英文
  • 怎么做韩剧网站的翻译php是网站开发的语言吗
  • 做网站和程序员哪个好点51做网站
  • 昆明建设网站的公司做网站一排文字怎么水平对齐
  • 深圳罗湖企业网站优化广州 骏域网站建设专家
  • 服装配件网站建设 中企动力高校英文网站建设 文献综述
  • 彩票娱乐网站建设临沂网站制作哪家好