DML無(wú)鎖變更
若您需要在不鎖表的前提下變更大量表數(shù)據(jù),您可使用數(shù)據(jù)管理DMS的無(wú)鎖變更。該功能通過(guò)將單個(gè)SQL拆分成多個(gè)批次執(zhí)行,以實(shí)現(xiàn)不鎖表進(jìn)行表數(shù)據(jù)變更,同時(shí)也可以減少DML操作對(duì)數(shù)據(jù)庫(kù)性能,空間等的影響。本文介紹在DMS中進(jìn)行無(wú)鎖數(shù)據(jù)變更的方法。
前提條件
支持的數(shù)據(jù)庫(kù)類型:
- MySQL:RDS MySQL、PolarDB MySQL版、MyBase MySQL、PolarDB分布式版、其他來(lái)源MySQL
- PostgreSQL:RDS PostgreSQL、PolarDB PostgreSQL版、MyBase PostgreSQL、其他來(lái)源PostgreSQL
- MariaDB:RDS MariaDB、其他來(lái)源MariaDB
- OceanBase MySQL模式
- PolarDB PostgreSQL版(兼容Oracle)
實(shí)例的管控模式為穩(wěn)定變更或安全協(xié)同。更多信息,請(qǐng)參見查看管控模式。
注意事項(xiàng)
DML無(wú)鎖變更僅支持單表、簡(jiǎn)單的SQL操作(例如UPDATE、DELETE等)。
操作步驟
- 登錄數(shù)據(jù)管理DMS 5.0。
在頂部菜單欄中,選擇 。
說(shuō)明若您使用的是極簡(jiǎn)模式控制臺(tái),請(qǐng)單擊左上角的圖標(biāo),在導(dǎo)航欄中選擇
。配置無(wú)鎖變更工單,配置完成后,單擊提交申請(qǐng)。部分參數(shù)信息說(shuō)明如下:
說(shuō)明以安全協(xié)同實(shí)例舉例配置。自由操作或穩(wěn)定變更管控模式的實(shí)例,在配置時(shí)僅需配置數(shù)據(jù)庫(kù)與變更SQL。
配置項(xiàng)
是否必填
說(shuō)明
數(shù)據(jù)庫(kù)
是
搜索并選擇目標(biāo)數(shù)據(jù)庫(kù)。
說(shuō)明您需要有目標(biāo)數(shù)據(jù)庫(kù)的變更權(quán)限。更多信息,請(qǐng)參見查看我的權(quán)限。
執(zhí)行方式
是
選擇工單的執(zhí)行方式:
審批通過(guò)后,提交者執(zhí)行。
審批通過(guò)后,自動(dòng)執(zhí)行。
最后一個(gè)審批人執(zhí)行。
說(shuō)明管理員可以在配置管理。
中,修改執(zhí)行方式列表。具體操作,請(qǐng)參見變更SQL
是
輸入DML(Data Manipulation Language),例如
UPDATE
、DELETE
、INSERT_SELECT
。說(shuō)明如果變更SQL輸入的是DDL,則您進(jìn)行的是DDL無(wú)鎖結(jié)構(gòu)變更任務(wù)。更多信息請(qǐng)參見通過(guò)無(wú)鎖變更工單實(shí)現(xiàn)無(wú)鎖結(jié)構(gòu)變更。
SQL文本
否
若變更SQL選擇了文本,才會(huì)出現(xiàn)該配置項(xiàng)。在SQL文本框中,輸入可直接執(zhí)行的SQL語(yǔ)句。
說(shuō)明多條SQL之間, 請(qǐng)用英文分號(hào)(;)隔開。
提交工單時(shí)會(huì)自動(dòng)校驗(yàn)SQL語(yǔ)法正確性,不正確則無(wú)法提交。
附件
否
若變更SQL選擇了附件,才會(huì)出現(xiàn)該配置項(xiàng)。上傳變更SQL附件。
說(shuō)明附件僅支持.txt、.zip和.sql的文件類型,最大不能超過(guò)15 MB。
回滾SQL
否
可直接執(zhí)行的SQL語(yǔ)句,變更腳本對(duì)應(yīng)的逆向腳本。
SQL文本
否
回滾SQL選擇了文本,才會(huì)出現(xiàn)該配置項(xiàng)。輸入回滾SQL,回滾SQL為變更SQL對(duì)應(yīng)的逆向腳本。
附件
否
回滾SQL選擇了附件,才會(huì)出現(xiàn)該配置項(xiàng)。單擊上傳文件,上傳回滾SQL附件。
說(shuō)明附件僅支持.txt、.zip和.sql的文件類型,最大不能超過(guò)15 MB。
變更相關(guān)人
否
設(shè)置的相關(guān)人員都可查看工單,并協(xié)同工作,非相關(guān)人員則不能查看工單(管理員、DBA除外)。
工單附件
否
上傳工單附件,補(bǔ)充當(dāng)前工單信息。
提交申請(qǐng)后,您可以開啟主備延遲檢查并確定閾值、修改SQL。
(可選)開啟主備延遲檢查、設(shè)置閾值。設(shè)置主備延遲檢查并確定閾值,以避免主備延遲過(guò)大,從而影響主備實(shí)例切換。
您可以在基本信息區(qū)域,單擊分批執(zhí)行配置,設(shè)置合理的主備延遲閾值(單位:秒)。如果主備延遲大于閾值時(shí),將中斷SQL執(zhí)行。
說(shuō)明目前僅支持RDS MySQL數(shù)據(jù)庫(kù)使用該功能。
(可選)修改SQL。
提交申請(qǐng)后,系統(tǒng)將自動(dòng)進(jìn)行SQL預(yù)檢查。如果預(yù)檢查失敗,您可以根據(jù)失敗原因修改SQL,修改后重試。
單擊提交審批。安全協(xié)同實(shí)例會(huì)根據(jù)設(shè)置的審批規(guī)則進(jìn)行審批,穩(wěn)定變更實(shí)例將自動(dòng)通過(guò)審批。
等待審批通過(guò)后,在工單詳情頁(yè)的執(zhí)行區(qū)域,單擊執(zhí)行變更。
說(shuō)明您可以在工單詳情頁(yè)的審批區(qū)域,查看審批進(jìn)展。
配置任務(wù)執(zhí)行參數(shù)。
配置項(xiàng)
說(shuō)明
執(zhí)行策略
立即執(zhí)行:系統(tǒng)默認(rèn),單擊確認(rèn)執(zhí)行后立即執(zhí)行工單任務(wù)。
定時(shí)執(zhí)行:選擇任務(wù)開始執(zhí)行時(shí)間。單擊確認(rèn)執(zhí)行后,在指定的時(shí)間執(zhí)行該任務(wù)。
指定結(jié)束時(shí)間
開啟:選擇任務(wù)結(jié)束時(shí)間。如果任務(wù)在指定結(jié)束時(shí)間之前沒有執(zhí)行完畢,則系統(tǒng)將不再繼續(xù)執(zhí)行未完成的SQL任務(wù),防止高峰期執(zhí)行任務(wù),影響業(yè)務(wù)運(yùn)作。
關(guān)閉:系統(tǒng)默認(rèn)。
單擊確定執(zhí)行。
說(shuō)明已暫停的任務(wù)重啟后,會(huì)重新開始執(zhí)行任務(wù)。
您可以在執(zhí)行區(qū)域,查看任務(wù)執(zhí)行狀態(tài)、任務(wù)設(shè)置、詳情和調(diào)度日志。
相關(guān)文檔
在進(jìn)行無(wú)鎖數(shù)據(jù)變更后,您還可能需要進(jìn)行如下操作:
在SQL窗口查詢表數(shù)據(jù)。具體操作,請(qǐng)參見查詢數(shù)據(jù)。
導(dǎo)出數(shù)據(jù)庫(kù)的表數(shù)據(jù)。具體操作,請(qǐng)參見數(shù)據(jù)庫(kù)導(dǎo)出。
導(dǎo)出SQL結(jié)果集。具體操作,請(qǐng)參見SQL結(jié)果集導(dǎo)出。
無(wú)鎖數(shù)據(jù)變更的相關(guān)API如下:
常見問(wèn)題
Q:無(wú)鎖數(shù)據(jù)變更是否支持復(fù)雜的SQL操作?
A:不支持。例如CREATE_INDEX和多表操作(例如DELETE語(yǔ)句中包含JOIN)。更多支持的SQL類型,請(qǐng)參見使用限制。