MySQL中大數(shù)據(jù)表增加字段的實(shí)現(xiàn)思路
前言
增加字段相信大家應(yīng)該都不陌生,隨手就可以寫(xiě)出來(lái),給 MySQL 一張表加字段執(zhí)行如下 sql 就可以了:
ALTER TABLE tbl_tpl ADD title(255) DEFAULT '' COMMENT '標(biāo)題' AFTER id;
但是線上的一張表如果數(shù)據(jù)量很大呢,執(zhí)行加字段操作就會(huì)鎖表,這個(gè)過(guò)程可能需要很長(zhǎng)時(shí)間甚至導(dǎo)致服務(wù)崩潰,那么這樣操作就很有風(fēng)險(xiǎn)了。
那么,給 MySQL 大表加字段的思路如下:
① 創(chuàng)建一個(gè)臨時(shí)的新表,首先復(fù)制舊表的結(jié)構(gòu)(包含索引)
create table new_table like old_table;
② 給新表加上新增的字段
③ 把舊表的數(shù)據(jù)復(fù)制過(guò)來(lái)
insert into new_table(filed1,filed2…) select filed1,filed2,… from old_table
④ 刪除舊表,重命名新表的名字為舊表的名字
不過(guò)這里需要注意,執(zhí)行第三步的時(shí)候,可能這個(gè)過(guò)程也需要時(shí)間,這個(gè)時(shí)候有新的數(shù)據(jù)進(jìn)來(lái),所以原來(lái)的表如果有字段記錄了數(shù)據(jù)的寫(xiě)入時(shí)間就最好了,可以找到執(zhí)行這一步操作之后的數(shù)據(jù),并重復(fù)導(dǎo)入到新表,直到數(shù)據(jù)差異很小。不過(guò)還是會(huì)可能損失極少量的數(shù)據(jù)。
所以,如果表的數(shù)據(jù)特別大,同時(shí)又要保證數(shù)據(jù)完整,最好停機(jī)操作。
另外的方法:
1.在從庫(kù)進(jìn)行加字段操作,然后主從切換
2.使用第三方在線改字段的工具
一般情況下,十幾萬(wàn)的數(shù)據(jù)量,可以直接進(jìn)行加字段操作。
總結(jié)
以上就是關(guān)于在MySQL大表中加字段的實(shí)現(xiàn)思路,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
MySQL實(shí)現(xiàn)用逗號(hào)進(jìn)行拼接、以逗號(hào)進(jìn)行分割
這篇文章主要介紹了MySQL實(shí)現(xiàn)用逗號(hào)進(jìn)行拼接、以逗號(hào)進(jìn)行分割問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
詳解MySQL的limit用法和分頁(yè)查詢語(yǔ)句的性能分析
本篇文章主要介紹了詳解MySQL的limit用法和分頁(yè)查詢語(yǔ)句的性能分析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
windows環(huán)境中mysql忘記root密碼的解決方法詳解
本篇文章是對(duì)windows環(huán)境中mysql忘記root密碼的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Mysql Workbench查詢mysql數(shù)據(jù)庫(kù)方法
在本篇文章里小編給大家分享了個(gè)關(guān)于Mysql Workbench查詢mysql數(shù)據(jù)庫(kù)方法和步驟,有需要的朋友們學(xué)習(xí)下。2019-03-03
MySQL 8.0的關(guān)系數(shù)據(jù)庫(kù)新特性詳解

