透過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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql的ALTER TABLE命令MySql
- alter table set unused column
- 【眼界】NLP 迎來了黃金時代
- create table,show tables,describe table,DROP TABLE,ALTER TABLE ,怎麼使用?
- alter table move與shrink space
- alter table nologging /*+APPEND PARALLEL(n)*/APPParallel
- alter table drop unused columns checkpoint
- react useRef的兩層用法,開眼界了React
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle
- 透視表pivot_table和交叉表crosstabROS
- ALTER TABLE修改列的不同方法
- MySQL-ALTER TABLE命令學習[20180503]MySql
- 教你如何透過vue實現echarts中的儀表盤VueEcharts
- 透過現實生活中一個例子來理解 JavaScript PromiseJavaScriptPromise
- 華為期待透過軟體開源來實現產業生態繁榮產業
- [20191129]ALTER TABLE MINIMIZE RECORDS_PER_BLOCK.txtBloC
- vxe-table 實現核取方塊多選透過滑鼠拖動選擇功能
- 透過ASM 反射實現IOCASM反射
- (三、四)Superset 1.3圖表篇——透視表-Pivot Table
- vxe-form table 實現摺疊表單ORM
- 能源公司 Turcomp 透過 NocoBase 實現敏捷、安全開發敏捷
- 如何透過前端表格控制元件實現自動化報表?前端控制元件
- 透過簡單實現 PHP 請求模擬賺了 50 元PHP
- 異構資料來源同步之表結構同步 → 透過 jdbc 實現,沒那麼簡單JDBC
- [重慶思莊每日技術分享]-在為表新增了列後執行ALTER TABLE SHRINK SPACE 提示ORA-8102
- android開發透過wireshark實現flutter應用抓包AndroidFlutter
- vxe-form table 表單實現簡歷模板ORM
- 聊點技術|100%降本增效!Bonree ONE 透過 Clickhouse實現了
- 透過API介面實現資料探勘?API
- 驅動開發:透過應用堆實現多次通訊
- 驅動開發:透過MDL對映實現多次通訊
- 通過 Swoole\Table 實現 Swoole 多程式資料共享
- 你們要的MyCat實現MySQL分庫分表來了MySql
- 未來十年內可透過AI能實現跟狗狗對話AI
- vxe-table 實現展開行的用法
- 當我第一次透過Kotlin和Compose來實現一個Canvas時, 我收穫了什麼?KotlinCanvas
- linux中透過systemctl建立服務並實現開機啟動Linux
- 透過 Radius 實現Dapr 雲原生應用程式開發協作