有一個表有上千W數(shù)據(jù), 用什么方法給這個表加一個字段最快?
1. alert
2. 建一個表和第一個表一樣,只是多了要加的字段,然后用多個INSERT INTO SELECT語句limit寫入
3. 就是導(dǎo)出多個文件,然后用loadfile
4. 其它?
試過2.5KW數(shù)據(jù), alert要156m。
INSERT INTO SELECT 100W要5m46s
兩個工具選擇:
http://www.percona.com/software/percona-toolkit
http://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html
第二個工具是比較好的選擇,可以線上改表結(jié)構(gòu),試試再給報告給大家
正在使用第二個工具,也就是"Facebook 針對 MySQL 開源 Online Schema Change 代碼"
參考文檔:
http://blog.chinaunix.net/uid-53720-id-3371360.html
http://blog.csdn.net/dbanote/article/details/18261377
正在測試環(huán)境測試,測試數(shù)據(jù)量大約是2500W左右,隨后有測試報告,沒什么問題就上生產(chǎn)環(huán)境了
pt-online-schema-change --alter "ADD category tinyint(4) NOT NULL DEFAULT '0'" D=庫名,t=表名 -uroot -p密碼 --dry-run
如果你的庫有主從結(jié)構(gòu),執(zhí)行上面的語句遇到如下問題:
Cannot connect to D=calsync,h=從庫的IP,p=...,u=root
No slaves found. See --recursion-method if host localhost.localdomain has slaves.
Not checking slave lag because no slaves were found and --check-slave-lag was not specified.
請?jiān)趶膸焐辖ㄒ粋€root帳號且密碼和上面的密碼一樣,且主庫機(jī)可以訪問
如果出現(xiàn)如下內(nèi)容:
Found 1 slaves:
localhost.localdomain
Will check slave lag on:
localhost.localdomain
恭喜主從的沒有問題了
bitsCN.com聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com