透過alter table 來實現重建表,同事大呼開眼界了
1、應用背景
2、重建表
alter table tableName engine=innodb
1、假設原表是A,新建一個表table B,和表A的表結構保持一致; 2、按照主鍵順序,將表A的資料一行一行的讀出來,插入到表B裡面; 3、交換表A和表B的名稱。
3、重建實現最佳化
alter table tableName engine=innodb
1、建立一個臨時檔案,掃描表A主鍵的所有資料頁; 2、用資料頁中表A的記錄生產B+樹,儲存到臨時檔案中; 3、生產臨時檔案的過程中,將所有對A的操作記錄在一個日誌檔案(row log)中,對應的是圖中state2的狀態; 4、臨時檔案生成後,將日誌檔案中的操作應用到臨時檔案,得到一個邏輯資料上與表A相同的資料檔案,對應的就是圖中state3的狀態; 5、用臨時檔案替換表A的資料檔案。
4、答疑解惑
Q2、假設我們有一個1TB的表,磁碟只有1.2TB,那麼還可以做inplace的DDL呢?
Q3、inplace 方案進行的表重建操作,都是Online DDL麼?
Q4、某個表的大小是1TB,進行alter table A engine=Innodb之後,表的空間沒有縮小,反而增大了一點,這是為什麼?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024420/viewspace-2938068/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 表、索引遷移表空間alter table move索引
- Alter table for ORACLEOracle
- alter table move 和 alter table shrink space的區別
- react useRef的兩層用法,開眼界了React
- 華為期待透過軟體開源來實現產業生態繁榮產業
- mysql的ALTER TABLE命令MySql
- oracle alter table詳解Oracle
- alter table using indexIndex
- alter table table_name move ; 在自身表空間move是如何操作的?
- 教你如何透過vue實現echarts中的儀表盤VueEcharts
- 透過現實生活中一個例子來理解 JavaScript PromiseJavaScriptPromise
- 透視表pivot_table和交叉表crosstabROS
- 透過alert日誌重建引數檔案
- 透過ASM 反射實現IOCASM反射
- v$lock之alter table drop column與alter table set unused column區別系列五
- 透過簡單實現 PHP 請求模擬賺了 50 元PHP
- 優化同事發過來的一個sql優化SQL
- 異構資料來源同步之表結構同步 → 透過 jdbc 實現,沒那麼簡單JDBC
- 如何透過前端表格控制元件實現自動化報表?前端控制元件
- 能源公司 Turcomp 透過 NocoBase 實現敏捷、安全開發敏捷
- alter table語法增補(一)
- ALTER TABLE MOVE | SHRINK SPACE區別
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle
- 驅動開發:透過應用堆實現多次通訊
- 驅動開發:透過MDL對映實現多次通訊
- android開發透過wireshark實現flutter應用抓包AndroidFlutter
- 透過API介面實現資料探勘?API
- 透過列舉enum實現單例單例
- 你們要的MyCat實現MySQL分庫分表來了MySql
- 聊點技術|100%降本增效!Bonree ONE 透過 Clickhouse實現了
- ALTER TABLE MOVE和SHRINK SPACE區別
- 如何透過java5註解實現域物件與表的對映Java物件
- 未來十年內可透過AI能實現跟狗狗對話AI
- vue透過ollama介面呼叫開源模型實現人機對話Vue模型
- 重建控制檔案--alter database backup controlfile to traceDatabase
- eBay透過事件溯源實現持續交付事件
- 如何透過代理IP實現Facebook群控?
- 透過tab鍵實現命令補齊 (轉)