《如何設計高效透明的 DDL :OceanBase 最佳實踐_謝振江.pdf》由會員分享,可在線閱讀,更多相關《如何設計高效透明的 DDL :OceanBase 最佳實踐_謝振江.pdf(21頁珍藏版)》請在三個皮匠報告上搜索。
1、謝振江OceanBase高級技術專家如何設計高效透明的如何設計高效透明的DDLDDL:OceanBaseOceanBase最佳實踐最佳實踐使用傳統數據庫DDL功能碰到了什么問題?MySQL 關鍵業務的DDL變更通常在業務低峰期MySQL DDL操作耗時長數據量大:約240億行數據缺少并行能力某MySQL客戶,大表建索引耗時近3周OceanBase的DDL想做成什么樣的?透明高效的DDL透明 DDL執行時,對業務無感知 避免運維人員感知分布式環境的影響 單機數據庫有的標準功能都可以有 某些DDL可以是自動檔高效 不同DDL功能的速度預期不一樣 數據量大時,DDL速度也要快 集群節點數量多時,DD
2、L速度也要快分布式數據庫的DDL有哪些挑戰?DDL執行過程中保持業務在線1.完全無鎖變更:不阻塞在線事務讀寫可寫補全數據可讀可寫T80:(100,100)T90:(200,200)T110:(300,300)已提交事務數據表分區1T130:創建索引表T30:(1,1)T70:(2,2)T115:(3,3)數據表分區2(2)(1)(100)(200)補全數據全局索引分區1如果不做處理,T110和T115數據將丟失在線業務優先活躍事務DDL執行過程中宕機1.系統高可用:能恢復2.冪等:從任意狀態恢復后能繼續做P1 P2OBServerSQL引擎存儲引擎Tenant sys主表P1 索引P1Tena
3、nt 1ZONE_1P1 P2OBServerSQL引擎存儲引擎Tenant sys主表P1 索引 P1Tenant 1ZONE_2P1 P2OBServerSQL引擎存儲引擎Tenant sys主表P1 索引P1Tenant 1ZONE_3APP創建索引宕機如何做到DDL執行高效?1.create table t1(c1 bigint);2.alter table add column c2 bigint default 2;(2)(1)(100)(200)存儲引擎數據C2默認值為2(2,2)(1,2)(100,2)(200,2)查詢的數據可以不立即補全數據的DDL添加索引可寫補全數據可讀可
4、寫數據表數據索引表數據分布式OceanBase單機OceanBase排序+旁路寫入需要立即補全數據的DDLOceanBase 3.X DDL功能列操作添加列、刪除列、重命名列、重排列、設置列默認值、刪除列默認值、修改列約束為not null/null生成列操作添加虛擬生成列、刪除虛擬生成列、添加實體生成列、刪除實體生成列外鍵操作添加外鍵、刪除外鍵表操作修改行格式、修改塊大小、修改壓縮算法、重命名表分區操作添加分區、刪除分區、truncate分區索引操作創建索引、刪除索引、重命名索引重整數據重整數據DDLDDL的挑戰的挑戰t1修改前P1P2OBServerSQL引擎存儲引擎P3P4Tenant1
5、ZONE_1P1P2OBServerSQL引擎存儲引擎P3P4Tenant1ZONE_1P1P2OBServerSQL引擎存儲引擎P3P4Tenant1ZONE_1t1:3個hash分區t1:5個hash分區t1修改后DDL變更框架表鎖OceanBase 4.X DDL有哪些變化?支持通用數據重整的DDL變更主鍵操作添加主鍵;刪除主鍵;修改主鍵;修改列類型業務對字段長度擴充,如varchar變text等;業務需要對字段做長度約束,例如varchar變短等;業務需要做通用轉換,例如int到varchar,int到decimal等;修改分區規則數據量超過單機規模;負載量超過單機規模;業務規則需要新
6、的分區規則;支持復雜DDL操作的原子變更刪列操作與其他對象混合列操作互相混合修改列與主鍵操作混合4.X新支持的DDL功能功能OceanBase 4.0主鍵操作添加主鍵刪除主鍵修改主鍵修改列類型變長變短跨類型變更修改分區規則非分區表轉分區表分區表轉分區表轉換字符集支持添加自增列支持刪列與其他對象混合支持列操作混合支持修改列與添加主鍵混合支持更強的DDL操作的可觀測性DDL等事務結束步驟信息展示DDL數據補全的進度靈活的并行DDL配置表級并行SET _ENABLE_PARALLEL_DDL=ON;Session并行SET _FORCE_PARALLEL_DDL_DOP=XX;Hint并行CREAT
7、E/*+PARALLEL(hint)*/INDEX;性能對比 規格配置 數據來源:OLTP read write 數據量:50億行 測試機器配置:核數:96 磁盤:2*3.5T NVME盤 內存:700G測試方式:int列建索引0100002000030000400005000060000并行度4并行度8并行度16建索引耗時對比MYSQL 8.0.29DB-T ZSTDDB-T LZ4OceanBase 4.0 ZSTDOceanBase 4.0 LZT4123855330350694709459390573390934862558 246079831992724931509 1322Q&AGitHub:/oceanbase/服務號:OceanBase數據庫星球論壇: