校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > MySQL 大表添加一列的實(shí)現(xiàn)

MySQL 大表添加一列的實(shí)現(xiàn)

熱門標(biāo)簽:武漢網(wǎng)絡(luò)外呼系統(tǒng)服務(wù)商 電話外呼系統(tǒng)改號(hào) 百應(yīng)電話機(jī)器人優(yōu)勢(shì) 啥是企業(yè)400電話辦理 曲靖移動(dòng)外呼系統(tǒng)公司 南昌三維地圖標(biāo)注 外呼系統(tǒng)打電話上限是多少 怎樣在地圖標(biāo)注銷售區(qū)域 地圖標(biāo)注費(fèi)用是多少

問題參考自: https://www.zhihu.com/question/440231149 ,mysql中,一張表里有3億數(shù)據(jù),未分表,要求是在這個(gè)大表里添加一列數(shù)據(jù)。數(shù)據(jù)庫(kù)不能停,并且還有增刪改操作。請(qǐng)問如何操作?答案為個(gè)人原創(chuàng)

以前老版本 MySQL 添加一列的方式:

ALTER TABLE 你的表 ADD COLUMN 新列 char(128);

會(huì)造成鎖表,簡(jiǎn)易過程如下:

  • 新建一個(gè)和 Table1 完全同構(gòu)的 Table2
  • 對(duì)表 Table1 加寫鎖
  • 在表 Table2 上執(zhí)行 ALTER TABLE 你的表 ADD COLUMN 新列 char(128)
  • 將 Table1 中的數(shù)據(jù)拷貝到 Table2
  • 將 Table2 重命名為 Table1 并移除 Table1,釋放所有相關(guān)的鎖

如果數(shù)據(jù)量特別特別大,那么鎖表時(shí)間很長(zhǎng),期間所有表更新都會(huì)阻塞,線上業(yè)務(wù)不能正常執(zhí)行。

針對(duì) MySQL 5.6(不包含)之前的版本,通過觸發(fā)器將一個(gè)表的更新在另一個(gè)表上重復(fù),并進(jìn)行數(shù)據(jù)同步,當(dāng)數(shù)據(jù)同步完成時(shí),業(yè)務(wù)上修改表名為新表并發(fā)布。業(yè)務(wù)不會(huì)暫停。觸發(fā)器設(shè)置類似于:

create trigger person_trigger_update AFTER UPDATE on 原有表 for each row 
begin set @x = "trigger UPDATE";
Replace into 新表 SELECT * from 原有表 where 新表.id = 原有表.id;
END IF;
end;

MySQL 5.6(包含) 以后的版本引入了在線 DDL 的功能:

Alter table 你的表 , ALGORITHM [=] {DEFAULT|INSTANT|INPLACE|COPY}, LOCK [=] { DEFAULT| NONE| SHARED| EXCLUSIVE }

其中的參數(shù):

ALGORITHM:

  • DEFAULT:默認(rèn)方式,在 MySQL 8.0中,如果未顯示指定 ALGORITHM,那么會(huì)優(yōu)先選擇 INSTANT 算法,如果不行再使用 INPLACE 算法,如果不支持 INPLACE 算法則使用 COPY 的方式完成
  • INSTANT:8.0 中新添加的算法,添加列是立即返回。但是不能是虛擬列。這個(gè)原理很簡(jiǎn)單,對(duì)于新建一列,表所有原有數(shù)據(jù)并不是立刻發(fā)生變化,只是在表字典里面記錄下這個(gè)列和默認(rèn)值,對(duì)于默認(rèn)的 Dynamic 行格式(其實(shí)就是 Compressed 的變種),如果更新了這一列則原有數(shù)據(jù)標(biāo)記為刪除在末尾追加更新后的記錄。這樣做就是沒有提前預(yù)留出列空間,之后更新可能經(jīng)常會(huì)發(fā)生行記錄空間變動(dòng)。但是對(duì)于大多數(shù)業(yè)務(wù),都是最近的時(shí)間的記錄才會(huì)修改,所以問題不大。
  • INPLACE:在原表上直接進(jìn)行修改,不會(huì)拷貝臨時(shí)表,可以逐條記錄修改,不會(huì)產(chǎn)生大量的 undolog 以及 redolog,不會(huì)占用很多 buffer。可以避免重建表帶來(lái)的IO和CPU消耗,保證期間依然良好的性能和并發(fā)。
  • COPY:拷貝到臨時(shí)新表上進(jìn)行修改。由于記錄拷貝,會(huì)產(chǎn)生大量的 undolog 以及 redolog,并占用很多 buffer,對(duì)業(yè)務(wù)性能有影響。

LOCK:

  •  DEFAULT:和 ALGORITHM 的 DEFAULT 類似
  • NONE:無(wú)鎖,允許并發(fā)讀取和更新表
  • SHARED:共享鎖,允許讀取不允許更新
  • EXCLUSIVE:不允許讀取和更新

各個(gè)版本支持的在線 DDL 修改使用的算法的對(duì)比:

參考文檔:

MySQL 5.6:https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl-operations.htmlMySQL

5.7:https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.htmlMySQL

8.0:https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-operations.html

可以通過:

ALTER TABLE 你的表 ADD COLUMN 新列 char(128), ALGORITHM=INSTANT, LOCK=NONE;

類似的語(yǔ)句,實(shí)現(xiàn)在線增加字段。最好還是明確 ALGORITHM 以及 LOCK,這樣執(zhí)行 DDL 的時(shí)候能明確知道到底會(huì)對(duì)線上業(yè)務(wù)有多大影響

同時(shí),執(zhí)行在線 DDL 的過程大概是:


可以看出,在開始階段需要 metadata lock,metadata lock 是在 5.5 才引入到mysql,之前也有類似保護(hù)元數(shù)據(jù)的機(jī)制,只是沒有明確提出 metadata lock 概念而已。但是 5.5 之前版本(比如5.1)與5.5之后版本在保護(hù)元數(shù)據(jù)這塊有一個(gè)顯著的不同點(diǎn)是,5.1對(duì)于元數(shù)據(jù)的保護(hù)是語(yǔ)句級(jí)別的,5.5對(duì)于metadata的保護(hù)是事務(wù)級(jí)別的。所謂語(yǔ)句級(jí)別,即語(yǔ)句執(zhí)行完成后,無(wú)論事務(wù)是否提交或回滾,其表結(jié)構(gòu)可以被其他會(huì)話更新;而事務(wù)級(jí)別則是在事務(wù)結(jié)束后才釋放 metadata lock。

引入 metadata lock 后,主要解決了2個(gè)問題,一個(gè)是事務(wù)隔離問題,比如在可重復(fù)隔離級(jí)別下,會(huì)話A在2次查詢期間,會(huì)話B對(duì)表結(jié)構(gòu)做了修改,兩次查詢結(jié)果就會(huì)不一致,無(wú)法滿足可重復(fù)讀的要求;另外一個(gè)是數(shù)據(jù)復(fù)制的問題,比如會(huì)話A執(zhí)行了多條更新語(yǔ)句期間,另外一個(gè)會(huì)話B做了表結(jié)構(gòu)變更并且先提交,就會(huì)導(dǎo)致 slave 在重做時(shí),先重做 alter,再重做 update 時(shí)就會(huì)出現(xiàn)復(fù)制錯(cuò)誤的現(xiàn)象。

如果當(dāng)前有很多事務(wù)在執(zhí)行,并且有那種包含大查詢的事務(wù),例如:

START TRANSACTION;
select count(*) from 你的表

這樣類似的會(huì)執(zhí)行較長(zhǎng)時(shí)間的事務(wù),也會(huì)阻塞。

所以,原則上:

  • 避免大事務(wù)
  • 在業(yè)務(wù)低峰去做表結(jié)構(gòu)變化

到此這篇關(guān)于MySQL 大表添加一列的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)MySQL 大表添加一列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Innodb中mysql快速刪除2T的大表方法示例
  • MySQL大表中重復(fù)字段的高效率查詢方法
  • MySQL 刪除大表的性能問題解決方案
  • mysql千萬(wàn)級(jí)數(shù)據(jù)大表該如何優(yōu)化?
  • 從云數(shù)據(jù)遷移服務(wù)看MySQL大表抽取模式的原理解析

標(biāo)簽:資陽(yáng) 甘南 吉林 隨州 荊州 錦州 黑河 滄州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL 大表添加一列的實(shí)現(xiàn)》,本文關(guān)鍵詞  MySQL,大表,添加,一列,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL 大表添加一列的實(shí)現(xiàn)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL 大表添加一列的實(shí)現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    天天色天天操综合| 成人视屏免费看| 丰满白嫩尤物一区二区| 欧美手机在线视频| 国产精品天干天干在线综合| 男男视频亚洲欧美| 菠萝蜜视频在线观看一区| 日韩午夜在线播放| 亚洲一区二区五区| 99精品国产99久久久久久白柏| 日韩欧美综合在线| 一二三区精品视频| 91视频一区二区三区| 国产精品伦理在线| 成人免费毛片高清视频| 精品精品欲导航| 蜜桃视频一区二区| 一本一道久久a久久精品综合蜜臀| 久久精品视频一区二区| 精品一区二区三区免费| 欧美一区二区三区公司| 偷拍一区二区三区| 欧美丝袜丝nylons| 亚洲成人手机在线| 欧美日韩国产成人在线91| 亚洲精品国产第一综合99久久 | 视频一区视频二区在线观看| 色综合亚洲欧洲| 国产精品久久久久桃色tv| 岛国av在线一区| 久久精品欧美一区二区三区不卡 | 亚洲乱码日产精品bd| 成人动漫精品一区二区| 日韩午夜在线观看视频| 蜜桃视频在线观看一区| 欧美一级高清大全免费观看| 日韩av一区二区三区四区| 欧美精选一区二区| 日韩激情中文字幕| 精品国产1区二区| 国内不卡的二区三区中文字幕| 精品美女在线观看| 国产一区二区精品久久| 欧美极品aⅴ影院| 91麻豆swag| 亚洲三级在线观看| 91.成人天堂一区| 精久久久久久久久久久| 国产婷婷精品av在线| 91丝袜高跟美女视频| 亚洲一区二区中文在线| 91麻豆精品国产自产在线 | 久久精品国内一区二区三区| 精品久久久三级丝袜| 国产精品自拍在线| 亚洲欧美二区三区| 91精品国产综合久久蜜臀| 国内精品久久久久影院薰衣草| 国产日产亚洲精品系列| 在线日韩av片| 久久国产精品99精品国产| 日本一区二区三区在线不卡 | 精品影院一区二区久久久| 久久久99精品久久| 91久久国产最好的精华液| 日本中文字幕一区二区有限公司| 精品国产制服丝袜高跟| 色综合中文字幕国产 | 91丨porny丨中文| 天堂成人国产精品一区| 国产亚洲一本大道中文在线| 在线观看视频一区二区| 九九九久久久精品| 亚洲黄色av一区| www日韩大片| 欧美日韩mp4| 成人性视频网站| 日韩av网站免费在线| 国产精品无人区| 欧美成人综合网站| 91激情五月电影| 国产在线麻豆精品观看| 一区二区三区四区中文字幕| 欧美精品一级二级| 91黄视频在线观看| 国产成人综合网站| 美女国产一区二区| 一区二区日韩电影| 亚洲欧洲一区二区在线播放| 精品国产一区二区三区av性色| 色婷婷久久久久swag精品 | 国产欧美日韩不卡| 久久久久97国产精华液好用吗| 欧美在线观看18| 99久久婷婷国产精品综合| 国产资源精品在线观看| 免费不卡在线视频| 亚洲一区二区三区不卡国产欧美| 国产精品久久久久久久久免费丝袜| 欧美不卡一区二区三区| 欧美丰满一区二区免费视频| 91黄色免费观看| 91香蕉视频mp4| av在线不卡免费看| 成人美女在线视频| 国产综合成人久久大片91| 开心九九激情九九欧美日韩精美视频电影 | 91精品国产一区二区人妖| 欧美亚洲国产一区二区三区va | 91精品国产美女浴室洗澡无遮挡| 91久久精品网| 色综合婷婷久久| 99久久精品国产一区二区三区 | 国产在线精品国自产拍免费| 奇米综合一区二区三区精品视频| 午夜激情一区二区| 日韩福利视频导航| 日本在线观看不卡视频| 全部av―极品视觉盛宴亚洲| 舔着乳尖日韩一区| 青椒成人免费视频| 另类人妖一区二区av| 久99久精品视频免费观看| 久久成人麻豆午夜电影| 九九九精品视频| 麻豆91免费观看| 国产激情一区二区三区| 国产成人综合亚洲91猫咪| 丁香婷婷综合激情五月色| 99精品国产热久久91蜜凸| 色婷婷精品久久二区二区蜜臂av| 欧美午夜影院一区| 日韩欧美视频一区| 亚洲精品在线观| 国产精品免费网站在线观看| 国产精品第四页| 亚洲成人自拍一区| 国产综合色视频| 成人高清免费在线播放| 99re成人精品视频| 3d动漫精品啪啪一区二区竹菊| 日韩一二在线观看| 国产精品久久久久婷婷| 亚洲一区二三区| 国内精品久久久久影院一蜜桃| 福利电影一区二区| 欧美三级欧美一级| 国产亚洲欧美日韩日本| 中文一区一区三区高中清不卡| 亚洲欧美经典视频| 另类小说一区二区三区| 成人精品免费网站| 欧美另类videos死尸| 国产欧美一区二区精品忘忧草 | 激情国产一区二区| av激情成人网| 欧美一区二区三区视频免费 | 蜜臀av亚洲一区中文字幕| 国产高清精品在线| 欧美精品123区| 国产精品夫妻自拍| 韩国女主播一区| 欧美又粗又大又爽| 国产目拍亚洲精品99久久精品 | 亚洲欧美日韩国产成人精品影院| 日本一区中文字幕 | 一级日本不卡的影视| 国产一区二区三区在线观看免费视频 | 蜜臀av国产精品久久久久| av色综合久久天堂av综合| 欧美精品久久99| 亚洲欧美日韩久久| 高清不卡一二三区| 久久影音资源网| 日韩主播视频在线| 91精品91久久久中77777| 国产精品欧美久久久久无广告 | 久久天天做天天爱综合色| 亚洲一区二区高清| 91蜜桃免费观看视频| 久久精品一区四区| 狠狠色狠狠色合久久伊人| 3d动漫精品啪啪一区二区竹菊 | 制服丝袜一区二区三区| 亚洲精品欧美专区| 国产成人aaa| 久久久久国产精品免费免费搜索| 日韩激情中文字幕| 欧美狂野另类xxxxoooo| 亚洲成人免费在线| 欧美男女性生活在线直播观看| 亚洲色图视频网站| 99免费精品在线观看| 国产精品乱人伦中文| 国产风韵犹存在线视精品| 精品国精品自拍自在线| 国产在线视视频有精品| 久久久精品国产免费观看同学| 久久精品久久99精品久久| 日韩欧美电影在线|