应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段

  1。问题:怎么给线上表加字段?
  工作中最常遇到的问题,怎么给线上频繁使用的大表添加字段?
  比如:给下面的用户表(user)添加年龄(age)字段。CREATETABLEuser(idintNOTNULLAUTOINCREMENTCOMMENT主键,namevarchar(100)DEFAULTNULLCOMMENT姓名,PRIMARYKEY(id))ENGINEInnoDBCOMMENT用户表;
  有同学会说,这还不简单,直接加不加完了,用下面的命令:ALTERTABLEuserADDageintNOTNULLDEFAULT0COMMENT年龄;
  添加完,再查看一下表结构:CREATETABLEuser(idintNOTNULLAUTOINCREMENTCOMMENT主键,namevarchar(100)DEFAULTNULLCOMMENT姓名,ageintNOTNULLDEFAULT0COMMENT年龄,PRIMARYKEY(id))ENGINEInnoDBCOMMENT用户表;
  这不是添加成功了吗?有什么呀!
  是的,线下数据库怎么整都行,但是如果在线上数据库这样操作,整个服务都有宕机的风险!自己也离毕业不远了。
  不是危言耸听,我们找个case测试一下:
  Session1启动了一个事务,没有提交。Session2执行添加列的操作,被阻塞。更严重的是,Session3执行简单查询的语句也被阻塞了。2。线上服务宕机的原因
  为什么会出现这种情况呢?
  原因是在执行查询语句的时候,MySQL自动加了MDL锁(metadatalock,即元数据锁)。
  不行的话,我们可以再执行一下showprocesslist命令,查看有哪些正在执行的进程:
  可以清楚的看到Session2和Session3的语句正在等待MDL锁,Waitingfortablemetadatalock。
  MDL锁的作用是什么?
  为了保证并发操作下数据的一致性。
  如果一个事务正在执行中,另一个在这时修改了表结构,不但可能导致当前事务出现不可重复读的问题,还有可能连事务都无法提交。
  什么时候会加MDL锁?
  MDL锁是MySQL自动隐式加锁,无需我们手动操作。
  在我们执行DDL语句的时候,MySQL自动添加MDL读锁。
  在我们执行DML语句的时候,MySQL自动添加MDL写锁。
  读锁与读锁之间不互斥,读锁与写锁、写锁与写锁之间互斥。
  注意:MDL锁是表锁,会对整张表加锁。
  普及额外的小知识点,什么是DML和DDL:
  DML(DataManipulationLanguage)数据操纵语言:
  适用范围:对表数据进行操作,比如insert、delete、select、update等。
  DDL(DataDefinitionLanguage)数据定义语言:
  适用范围:对表结构进行操作,比如create、drop、alter、rename、truncate等。3。如何优雅的给线上表加字段
  既然修改表结构的时候,MySQL会自动添加表锁,并且是写锁,会阻塞后续的所有读写请求,造成非常严重的后果。
  还有没有办法能优雅的给线上表添加字段呢?
  当然有,从MySQL5。6版本开始增加了OnlineDDL,作用就是在执行DDL的时候,允许并发执行DML。简单翻译就是修改表结构的时候,也能同时支持并发执行增删查改操作。
  从MySQL8。0版本开始又优化了OnlineDDL,支持快速添加列,可以实现给大表秒级加字段。
  具体用法就是在DDL语句后面增加两个参数ALGORITHM和LOCK。
  比如下面这样:ALTERTABLEuserADDageintNOTNULLDEFAULT0COMMENT年龄,ALGORITHMInplace,LOCKNONE;
  这两个参数分别是干嘛用的?有哪些选项呢?
  ALGORITHM可以指定使用哪种算法执行DDL,可选项有:Copy:拷贝方式,MySQL5。6之前DDL的执行方式,过程就是先创建新表,修改新表结构,把旧表数据复制到新表,删除旧表,重命名新表。执行过程非常耗时,产生大量的磁盘IO和占用CPU,还有使Bufferpoll失效,而且需要锁住旧表,性能较差,现在基本很少使用。Inplace:原地修改,MySQL5。6开始引入的,优点是不会在Server层发生表数据拷贝,过程中允许并发执行DML操作。过程就是先添加MDL写锁,执行初始化操作,然后降级为MDL读锁,执行DDL操作(比较耗时,允许并发执行DML操作),升级为MDL写锁,完成DDL操作。Instant:快速修改,MySQL8。0开始引入的,可以实现快速给大表添加字段。
  性能依次是,InstantInplaceCopy。
  LOCK可以指定执行过程中,是否加锁,可选项有:NONE不加锁,允许DML操作。SHARED加读锁,允许读操作,禁止DML操作。DEFAULT默认锁模式,在满足DDL操作前提下,默认锁模式会允许尽可能多的读操作和DML操作。EXCLUSIVE加写锁,禁止读操作和DML操作。
  OnlineDDL并不是支持所有DDL操作,看一下到底支持哪些操作?
  操作
  Instant
  Inplace
  RebuildsTable
  允许并发DML
  仅修改元数据
  添加列
  Yes
  Yes
  No
  Yes
  No
  删除列
  No
  Yes
  Yes
  Yes
  No
  重命名列
  No
  Yes
  No
  Yes
  Yes
  更改列顺序
  No
  Yes
  Yes
  Yes
  No
  设置列默认值
  Yes
  Yes
  No
  Yes
  Yes
  更改列数据类型
  No
  No
  Yes
  No
  No
  设置VARCHAR列大小
  No
  Yes
  No
  Yes
  Yes
  删除列默认值
  Yes
  Yes
  No
  Yes
  Yes
  更改自动增量值
  No
  Yes
  No
  Yes
  No
  设置列为null
  No
  Yes
  Yes
  Yes
  No
  设置列notnull
  No
  Yes
  Yes
  Yes
  No
  像最常见的添加列就可以使用Instant,而像删除列、重命名列、更改列数据类型就只能使用Inplace了。

不断拓展LOL衍生宇宙的拳头,会是下一个暴雪吗?如果时间回到两年前,大概每个人的印象里,拳头的唯一游戏就是火爆全球的《英雄联盟》,或许还有一款尚在襁褓中,后来被无数人诟病画质堪比PS2的《瓦罗兰特》。只靠着一个游戏带火……光遇测试服出现三大BUG,泡泡尾迹很漂亮,飞船功能上线光遇:测试服出现三大BUG,泡泡尾迹很漂亮,飞船功能上线前言:大家好,我是阿瑶,每天为你发布游戏领域最新情报。在光遇的游戏里,每次更新都会出现BUG,国服、国……婚期正式官宣!26岁赵继伟获丈母娘认可,伴郎团阵容很豪华CBA联赛结束后,赵继伟凭借出色的表现赢得了决赛中最有价值的球员。当然好消息不止于此,赵继伟获得联赛荣誉后,又迎来了结婚的消息。赵继伟和他的妻子王君瑞将在2022年5月18日在……常吃这些水果,对心脏最好,你吃对了吗?心脏是人体内最重要的内脏器官,如果心脏出现功能减退或者病变就会严重危害人体健康有可能让人因此而失去生命。所以平时我们就需要多吃一些对心脏有益的食物。经过科学研究表明,很多水果对……有一种思念,不言不语,刻骨铭心文安冬悦01。hr连续几天下雨,气温也降了许多,心情不好不坏,只是有些想你。想你,却不会找你,只是一个人遥忆往昔。时间过得真快,转眼又是好些年。我们的故事就像……工信部再约谈7家新能源车企,此前北汽比亚迪等25家被约谈(图视觉中国)10月18日消息,工信部发布对新能源汽车监督检查有关违规企业作出处理公告。公告显示,为规范新能源汽车产业发展,提升生产一致性水平,工信部装备工业一司约……1。5亿白花了!CBA土豪队露原形,MVP空砍279,李春江CBA焦点比赛,上海队对阵北京队,两支强队碰面。上海新赛季阵容豪华,傲视整个联盟,算是CBA的薪金王了。而林书豪虽然还无法登场,但北京依然实力很强。两队上半场就打得很激烈,火花……5178点七周年,A股重返5178点还要等多少年?A股2015年那一轮杠杆牛市,造富了不少的投资者,但同时也让大量的投资者亏损累累。与A股市场历年来的牛市行情相比,那一轮牛市泡沫破裂的杀伤力更大,最主要的原因是杠杆工具被……雪花飘零的日子(二)郝有花(图片来自网络)疫情的方向盘突然逆转来的,还未来的一夜之间如雪花纷纷而至好的,坏的,轮番上演风,如一只迷途的羔羊形单影只地伫立在……北京4岁滑雪小将驰骋高级雪道今年4岁的王辰予家住北京市延庆区。18个月大时,他就在爸爸王飞鹏的带领下第一次体验滑雪,从此以后便喜欢上了滑雪运动。王辰予的爸爸王飞鹏和妈妈李崭都是资深的滑雪爱好者。妈妈……空腹血糖5。6,需要控制饮食吗?是糖尿病吗?医生说分清2种情如果空腹血糖是5。6这个水平,血糖正常吗?是否需要控制饮食呢?但即便是这种正常的情况也会被分为几种不同的情况。下面张大夫就给朋友们具体来讲解一下。第一种情况,按照普通健康……KPL输出榜久诚稳居第1,被内涵为无效输出,首轮淘汰有何用KPL季后赛第一轮比赛已经全部结束了,胜者组和败者组首轮比赛都是非常精彩的,也出现了一个比较相似的现象,那就是比赛都打得很快。四场比赛基本上都在23个小时内完成,没有出现巅峰对……
布莱登保罗成核心?山东男篮连胜结束季前赛,驶入高速狂飙?山东男篮刚刚结束的CBA季前赛,山东男篮两连胜,78:76绝杀四川,86:73大胜卫冕冠军辽宁,得到了练兵,也为新赛季的开启打了个好头。两场季前赛也是为主教练磨合阵容,磨……泰国旅游出奇招,单身男子的福利,妻子随叫随到?泰国这几年受到了国内众多游客的喜爱,人们纷纷在空闲的时间段,来到泰国旅游观光。(此处已添加小程序,请到今日头条客户端查看)其实泰国给众人的感觉是这个国家包罗万象,而它有吸……陕西咸阳5。3亿建造关中民窖,曾经的示范工程,如今人去楼空由于自然景观、建筑及其文化内涵的特色,乡村旅游已成为人们假日周边游、休闲游的首选。陕西省作为国内的旅游大省著名景点众多,其中,三原县近几年来,利用其独特的地理、生态、人文等优势……一场秋雨一场寒,心血管患者需要注意什么关爱心脏防患未然秋雨淅淅沥沥,不像落在地上,倒像落在心里。一场秋雨过后气温明显降低,医院急诊及心血管门诊患者逐渐多了起来,而且医院急救车的出诊次数也明显增加起来,心血管疾病也到……34岁王思聪冲上日本热搜!与日本17岁女星有染,疑涉及金钱交曝中国富豪与日女星发生关系10月份,有网友突然爆料,知名大咖王思聪在日本大火,并且冲上了日本的热搜。看到这样的消息,很多人又以为王思聪又为国争光了,能够在日本媒体面……不止是华为的鸿蒙?阿里也亮出了底牌,成功突围芯片制裁对于华为来说,经历了重重磨难之后,终于走出了被美国卡脖子的阴影,这无疑是最好的结果。然而这也给华为带来了很多挑战,如果不能改变美国打压华为的做法,华为将无法在5G技术上取得突破……还能这样?梅州弃权,山东泰山躺赢登顶中超,领先三镇3分北京时间12月26日,中超联赛官方宣布,河北队、天津津门虎、梅州客家三支球队第33轮弃权,他们的对手沧州雄狮、大连人、山东泰山被判30获胜,全取三分。山东泰山躺赢拿到3分……8岁女童学舞蹈下腰导致瘫痪,这些兴趣班,不到年龄千万别学双减政策实施后,孩子课补得少了,但各种兴趣班上的多了。小区的一个孩子,周末要上4个兴趣班,娃上学路上都在打瞌睡。很多家长也是殷切希望自家的孩子能有个一技之长,但给孩子报兴……北向资金高比例持有股票名单2379只股获北向资金持有,合计持股量1097。54亿股,持股市值为2。17万亿元。以持股量占比统计,44只股北向资金持有总股本的比例超过一成,持股量占流通股比例在10以上的有……新能源汽车国补退出倒计时,果断出手还是再等等?财政补贴政策一直被视为是推动新能源汽车产业发展的最重要的一环,事实也的确如此。2010年,国内启动新能源汽车补贴政策,接下来12年的新能源汽车产业高速发展我们都有目共睹。中国一……春秋航空新增恢复17条国内航线来源:【交汇点新闻客户端】交汇点讯10月30日起,民航业进入冬春航季。春秋航空此次换季将新开17条航线,复航6条航线。主要出发城市集中在大连、沈阳、石家庄、扬州(泰州)等……10月1日至11月20日,北宫国家森林公园严格实行免费预约制新京报讯9月27日,北宫国家森林公园发布国庆节、彩叶观赏期游园须知。全文如下:尊敬的游客:北宫国家森林公园为了保障您的游园质量,进一步强化疫情防控措施,结合《北京市……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网