Online DDL 工具:pt-osc
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了北關(guān)免費建站歡迎大家使用!
對于 MySQL Online DDL 目前主流的有三種工具:
原生 Online DDL;
pt-osc(online-schema-change),
gh-ost
本文主要講解 pt-online-schema-change 的使用以及三種工具的簡單對比。
一、原理及限制
1.1 原理
1.?創(chuàng)建一個與原表結(jié)構(gòu)相同的空表,表名是?_new?后綴;
2. 修改步驟 1 創(chuàng)建的空表的表結(jié)構(gòu);
3. 在原表上加三個觸發(fā)器:delete/update/insert,用于 copy 數(shù)據(jù)過程中,將原表中要執(zhí)行的語句在新表中執(zhí)行;
4. 將原表數(shù)據(jù)以數(shù)據(jù)塊(chunk)的形式 copy 到新表;
5. rename 原表為 old 表,并把新表 rename 為原表名,然后刪除舊表;
6. 刪除觸發(fā)器。
update set命令用來修改表中的數(shù)據(jù)。update set命令格式:update 表名 set 字段=新值,… where 條件。
舉例如下:mysql update MyClass set name='Mary' where id=1;單表的MySQL UPDATE語句:UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [col_name2=expr2] [WHERE where_definition] [ORDER BY] [LIMIT row_count]。
多表的UPDATE語句:UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2] [WHERE where_definition]。
UPDATE語法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要給予哪些值。WHERE子句指定應(yīng)更新哪些行。如果沒有WHERE子句,則更新所有的行。如果指定了ORDER BY子句,則按照被指定的順序?qū)π羞M行更新。LIMIT子句用于給定一個限值,限制可以被更新的行的數(shù)目。
4.4
MySQL數(shù)據(jù)表的修改
在MySQL中,允許對創(chuàng)建好的數(shù)據(jù)表進行修改,修改時可以有以下幾種形式:修改表名、修改字段名、修改字段類型、修改字段排列位置、添加字段、刪除字段、添加字段約束、刪除約束等,它們一般都是使用“Alter table表名”命令,但后跟的具體參數(shù)不同,下面分別介紹其語句格式。
4.4.1修改表名
語句格式一:Alter table表名RENAME [TO] 新表名;
語句格式二:RENAME TABLE 表名 TO 新表名;
在上面語句格式中,“表名”為要更名的表,“新表名”為要更改成的表名,格式一中參數(shù)“TO”可以省略。
下面截圖中的“ALTER TABLE”語句將dept更名為t_dept。