阿里雲資料管理DMS的無鎖變更功能主要原理和適用場景介紹
阿里雲資料管理DMS的無鎖變更功能支援DML無鎖變更與DDL無鎖變更。
大表變更
當您進行大表更新時,可能會因單條SQL影響多條行數而出現日誌超過引數閥值而執行失敗,或因SQL不走索引導致鎖表等。
結構變更
在MySQL5.5以及之前的版本中,MySQL的DDL僅提供Table-Copy和In-Place(MySQL5.5開始提供)兩種執行演算法。
MySQL5.6及後續版本提供了Innodb-OnlineDDL能力
覆蓋了大範圍的DDL型別(新增列、刪除列、列名修改、新增索引、修改索引等),但仍然有些常見的DDL型別無法
覆蓋(修改列的型別、修改列的長度、修改字符集等)。
為解決上述問題,DMS提供無鎖變更功能,支援DML無鎖變更與DDL無鎖變更,您可以透過該功能執行變更
操作,規避大量風險。
當業務累積了大量資料時,需要對線上資料與歷史資料進行分隔管理,或定期清除表中資料。常見的現象有:
單條SQL影響行數非常多(會出現日誌超過引數閥值而執行失敗)
SQL不使用索引(會導致鎖表,增加資料庫負載甚至導致業務故障)
此類問題通常可透過分批執行的方法解決,但是仍存在風險,例如:
研發寫程式分批處理,如果分批的方式不當,例如直接用 LIMIT 進行分批,可能仍會鎖表;若分批執
行的頻率沒有很好控制,會造成主備延遲過大。這些都會對資料庫造成影響,進而影響業務。
DBA提取目標資料手動拆分:人工拆分非常繁瑣,工作量大,且易出錯,並且很難進行動態調整。
主要原理
1. 建立臨時表:CREATE TABLE tmp_table_table LIKE table_name
2. 變更臨時表結構: ALTER TABLE tmp_table_table XXXX
3. 全量複製資料:INSERT IGNORE INTO tmp_table_table (SELECT %s FROM table_name FORCE INDEX
(%s) WHERE xxx
4. 增量資料Binlog同步: UPDATE/INSERT/DELETE tmp_table_name
5. 切換新舊錶: RENAME TABLE table_name to old_tmp_table_table, tmp_table_name to
table_name
適用場景
變更資料庫表結構。
變更表的字符集、校驗集,調整時區等。
規避Optimize Table操作回收表空間、降低碎片率時引起的鎖表
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2848605/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TokuDB的優缺點和適用場景介紹
- 輪換代理介紹及適用場景介紹
- Hbase原理的介紹和使用場景分析
- Spark Streaming 的原理以及應用場景介紹Spark
- RabbitMQ的應用場景以及基本原理介紹MQ
- RabbitMQ 的應用場景以及基本原理介紹MQ
- 閉鎖和柵欄的區分以及適用場景
- 大資料分析: SAP Sybase IQ功能特性及適用場景大資料
- 裸金屬伺服器備份功能讓資料更安全,適用哪些業務場景呢伺服器
- SPM適用的場景和示例
- MongoDB的優勢和適用場景MongoDB
- 變更資料捕獲CDC幾種應用場景 - RTInsights
- 小議“悲觀鎖和樂觀鎖”的原理、場景、示例
- 基於Apache Hudi構建資料湖的典型應用場景介紹Apache
- Streaming特性和適用場景
- 常用鎖原理的介紹(上)
- Zookeeper 介紹及典型應用場景
- 智慧醫療的主要應用場景和資料標註的關係 | 景聯文科技
- Spark適用於哪些場景?不適用於哪些場景?Spark
- Redis中5種資料結構的使用場景介紹Redis資料結構
- MyISAM和InnoDB的主要區別和應用場景
- 雲端計算日常運用場景介紹!
- JAVA集合框架中的常用集合及其特點、適用場景、實現原理簡介Java框架
- MySQL資料庫鎖介紹MySql資料庫
- postgresql資料庫鎖介紹SQL資料庫
- 阿里雲資料管理DMS企業版釋出年度重大更新 多項功能全面升級阿里
- 本地索引和全域性索引的適用場景索引
- CDN適用哪些場景?
- Hive簡介、應用場景及架構原理Hive架構
- Redis - 介紹與使用場景Redis
- 智慧安防的主要應用場景和資料採集標註解決方案 | 景聯文科技
- Java多執行緒的悲觀鎖與樂觀鎖及各自適用場景Java執行緒
- Redis Manager 主要功能介紹Redis
- ClickHouse 與 MySQL 資料庫適用場景對比總結MySql資料庫
- 特定的閂鎖和互斥場景
- Laravel-Binlog 擴充套件(用於實時監聽 MySQL 資料變更、資料同步等場景)Laravel套件MySql
- 資料管理DMS:自建MySQL資料庫全量SQL診斷功能釋出啦!MySql資料庫
- Fiddler(一)Fiddler介紹及應用場景