亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Oceanbase新版本復(fù)合分區(qū)添加分區(qū)操作

不知名網(wǎng)友 / 4479人閱讀
Oceanbase新版本復(fù)合分區(qū)添加分區(qū)操作
點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。。?/strong>

問(wèn)題背景

某核心資源系統(tǒng)業(yè)務(wù)2021年遷移到國(guó)產(chǎn)數(shù)據(jù)庫(kù)OceanBase最早使用的版本是OceanBase 2.2.76,因OceanBase次版本不支持split partition功能只能順序的add分區(qū),每次添加拆分分區(qū)操作都是先刪除max分區(qū)然后add partition,在把max分區(qū)也add上,但是這種添加分區(qū)的方式不適合復(fù)合分區(qū)的情況,列入region+時(shí)間的復(fù)合RANGE分區(qū),分區(qū)里有多個(gè)部分地市的max分區(qū)。

這樣就不能通過(guò)刪除中間的max分區(qū)在add分區(qū)了,為此在遷移前oracle庫(kù)提前拆到2022年全年的分區(qū),遷移到ob庫(kù)不用在處理分區(qū),現(xiàn)在到了22年年底需要添加新的分區(qū)保障業(yè)務(wù)正常運(yùn)行,OceanBase開(kāi)發(fā)了新版本支持復(fù)合分區(qū)的add分區(qū)功能,此版本包括OceanBase 2.2.77(OceanBase 2.0的最終版本)和OceanBase 3.2.3.2,在新版本的測(cè)試環(huán)境測(cè)試驗(yàn)證分區(qū)的add功能。測(cè)試步驟如下,希望能有參考意義。

解釋:

分區(qū)技術(shù)(Partitioning)是 OceanBase 非常重要的分布式能力之一,它能解決大表的容量問(wèn)題和高并發(fā)訪問(wèn)時(shí)的性能問(wèn)題,主要思想就是將大表拆分為更多更小的結(jié)構(gòu)相同的獨(dú)立對(duì)象,即分區(qū)。普通的表只有一個(gè)分區(qū),可以看作分區(qū)表的特例。每個(gè)分區(qū)只能存在于一個(gè)節(jié)點(diǎn)內(nèi)部,分區(qū)表的不同分區(qū)可以分散在不同節(jié)點(diǎn)上。

限制:ob暫時(shí)不支持split partition,沒(méi)有這個(gè)功能對(duì)分區(qū)的添加剪切操作帶來(lái)了不便,希望后期添加這個(gè)功能。

測(cè)試過(guò)程

步驟1:第一步系統(tǒng)租戶root用戶下檢查參數(shù)是否打開(kāi),和max分區(qū)是否有數(shù)據(jù)

用ROOT租戶進(jìn)入查看 _enable_add_between_range_partitions參數(shù),默認(rèn)狀態(tài)為FALSE,使用如下語(yǔ)句:

select b.tenant_name,a.* from 
__all_virtual_tenant_parameter_info a,__all_tenant b where 
name = _enable_add_between_range_partitions and 
b.tenant_id > 1000 and a.tenant_id=b.tenant_id order by 
1,zone;,

結(jié)果如下圖:

步驟2:修改  _enable_add_between_range_partitions 為 TRUE

同樣也是在root租戶下執(zhí)行。

執(zhí)行命令:

alter system set _enable_add_between_range_partitions = True tenant=obzy02;

注意事項(xiàng):

tenant為上面查詢的結(jié)果,根據(jù)需要修改;處理完畢后將參數(shù)修改回 False。

執(zhí)行如圖:

obclient[root]>alter system set 
_enable_add_between_range_partitions = True 
tenant=obzy02;

Query OK, 0 rows affected (0.01 sec)

步驟3:再次查詢參數(shù)值,確認(rèn)已經(jīng)修改成功

同樣也是在root租戶下執(zhí)行。

執(zhí)行命令:

select * from __all_virtual_tenant_parameter_info where name 
= _enable_add_between_range_partitions and tenant_id >
1001;

或是步驟1里的語(yǔ)句,當(dāng)結(jié)果data_type字段改為true說(shuō)明功能啟用可以add復(fù)合分區(qū),可以執(zhí)行add 分區(qū)命令驗(yàn)證add分區(qū)。

結(jié)果如下圖:

步驟4:驗(yàn)證max分區(qū)是否有數(shù)據(jù)

因add分區(qū)的功能當(dāng)max分區(qū)有數(shù)據(jù)時(shí),可能會(huì)造成數(shù)據(jù)的遷移(數(shù)據(jù)可能會(huì)保留在max分區(qū),沒(méi)有遷移到拆除的分區(qū),這個(gè)需要驗(yàn)證,測(cè)試發(fā)現(xiàn)數(shù)據(jù)到了新加的分區(qū)上符合期望的情況)和全局索引的失效。

在root 租戶驗(yàn)證max分區(qū)是否有數(shù)據(jù),這個(gè)語(yǔ)句不完全準(zhǔn)確,部分max分區(qū)沒(méi)有查詢到,需要手工統(tǒng)計(jì)或是ob優(yōu)化下視圖便于按分區(qū)名查詢(在root租戶只能查到分區(qū)的id不能查到分區(qū)的名稱)。

查詢語(yǔ)句:

SELECT /*+READ_CONSISTENCY(WEAK),query_tzyeout(100000000)*/

c.tenant_name,

d.database_name,

b.table_name,

a.partition_id,

a.row_count,

round(a.required_size / 1024 / 1024 / 1024, 2) table_size_GB

from

(select tenant_id,table_id,max(partition_id) partition_id from __all_virtual_meta_table group by tenant_id,table_id) m,

__all_virtual_meta_table a,

__all_virtual_table b,

__all_tenant c,

__all_virtual_database d

WHERE a.ROLE = 1

AND instr(a.member_list, a.svr_ip) > 0

and m.tenant_id=a.tenant_id

and m.table_id=a.table_id

and m.partition_id=a.partition_id

AND a.tenant_id = b.tenant_id

AND a.table_id = b.table_id

AND b.tenant_id = c.tenant_id

AND b.database_id = d.database_id

and m.partition_id>17

and d.database_name not in(PRO_MUSER)

and b.table_name in(

CS_ZYEI_CUR,

CS_REC_ECASHLOAN_LOG,

ZY_ASYN_TASK,

ZY_ASYN_TASKHIS,

ZY_ASYN_TASK_BLOCK,

ZY_ASYN_TASK_BLOCKHIS,

ZY_ASYN_TASK_LOCK,

ZY_ASYN_TASK_PARAMTER

ORDER BY c.tenant_name, b.table_name, partition_id;

查詢結(jié)果:

步驟5:執(zhí)行add分區(qū)命令

此操作在業(yè)務(wù)租戶的業(yè)務(wù)用戶,或是業(yè)務(wù)租戶的sys用戶下執(zhí)行。

驗(yàn)證按月分區(qū),按地市+月份分區(qū)類型的表,步驟如下:

1)驗(yàn)證按月分區(qū)的表

obclient[SYS]>select t.table_owner,t.table_name,t.partition_name from dba_tab_partitions t where t.table_name=ZY_IF_CTRM_ORDER_HIS;

+-------------+-----------------------+----------------+

| TABLE_OWNER | TABLE_NAME | PARTITION_NAME |

+-------------+-----------------------+----------------+

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202201 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202202 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202203 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202204 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202205 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202206 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202207 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202208 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202209 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202210 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202211 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202212 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_MAX |

+-------------+-----------------------+----------------+

13 rows in set (0.87 sec)



obclient[SYS]>

2)驗(yàn)證max分區(qū)是否有數(shù)據(jù)

select count(1) from ZY.ZY_IF_CTRM_ORDER_HIS partition (P_MAX);



obclient[SYS]>select count(1) from ZY.ZY_IF_CTRM_ORDER_HIS partition (P_MAX);

+----------+

| COUNT(1) |

+----------+

| 0 |

+----------+

1 row in set (0.00 sec)

3)執(zhí)行分區(qū)添加語(yǔ)句

alter table ZY.ZY_IF_CTRM_ORDER_HIS add partition P_202301 
values less than (TO_DATE(202302, YYYYMM,
NLS_CALENDAR=GREGORIAN
))
;

obclient[SYS]>alter table ZY.ZY_IF_CTRM_ORDER_HIS add 
partition P_202301 values less than (TO_DATE(202302,
YYYYMM, NLS_CALENDAR=GREGORIAN
))
;

Query OK, 0 rows affected (0.20 sec)

4)通過(guò)語(yǔ)句驗(yàn)證添加的分區(qū)

obclient[SYS]>select t.table_owner,t.table_name,t.partition_name from dba_tab_partitions t where t.table_name=ZY_IF_CTRM_ORDER_HIS;

+-------------+-----------------------+----------------+

| TABLE_OWNER | TABLE_NAME | PARTITION_NAME |

+-------------+-----------------------+----------------+

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202201 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202202 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202203 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202204 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202205 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202206 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202207 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202208 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202209 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202210 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202211 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202212 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_202301 |

| ZY | ZY_IF_CTRM_ORDER_HIS | P_MAX |

+-------------+-----------------------+----------------+

14 rows in set (0.82 sec)



obclient[SYS]>

步驟6:在操作完檢查失效的索引

此步業(yè)務(wù)用戶下檢查,此命令可以查出失效索引和創(chuàng)建索引的的ddl命令,因?yàn)閛b暫時(shí)不支持失效索引的rebuild命了,索引失效了只能drop了重建。索引檢查失效索引并重建這一步是非常重要的檢查步驟。

使用命令:

select /*+ rule */t.owner,t.table_name,drop index ||t.owner||.||t.index_name||;,select 
dbms_metadata.get_ddl(
||INDEX||,||T.INDEX_NAME||,||||T.OWNER||) FROM DUAL UNION ALL

FROM Dba_Indexes t WHERE  t.status =UNUSABLE;

步驟7:在所有分區(qū)操作完后將參數(shù)關(guān)閉

此命令在root租戶下執(zhí)行,驗(yàn)證語(yǔ)句同步驟1

alter system set _enable_add_between_range_partitions = False tenant=obzy02;

至此ob庫(kù)分區(qū)添加共用驗(yàn)證完。

結(jié)語(yǔ):

復(fù)合分區(qū)add分區(qū)功能是ob不能split 分區(qū)的一個(gè)較大的補(bǔ)充,對(duì)分區(qū)的添加功能做了完善。
  • 1)此次分區(qū)add功能只是通過(guò)add partition命令實(shí)現(xiàn)了類似split partition的功能,完善了符合分區(qū)不能add分區(qū)的情況,但是還不能支持split partition 功能,希望后期支持。

  • 2)Ob的失效索引不支持rebuild命令,這個(gè)導(dǎo)致索引失效后操作較復(fù)雜,既增加了操作時(shí)間(不能編譯分區(qū)失效索引),又增加了操作難度(獲取建索引語(yǔ)句,并刪除索引重建難免有遺漏的可能帶來(lái)了sql效率降低的風(fēng)險(xiǎn)),建議后期增加此功能。

oceanbase處于發(fā)展階段,部分功能還不完善,希望后期越做越好。



本文作者:王宏明(上海新炬中北團(tuán)隊(duì))

本文來(lái)源:“IT那活兒”公眾號(hào)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/129091.html

相關(guān)文章

  • OceanBase 2.0讓百萬(wàn)支付不是夢(mèng)?

    摘要:端基于生成列進(jìn)行內(nèi)部分區(qū),不侵入業(yè)務(wù)??偨Y(jié)天貓雙全球狂歡節(jié)成交額超過(guò)億,成功經(jīng)受住了考驗(yàn),全面支撐了支付寶核心鏈路,平穩(wěn)抗住時(shí)的峰值壓力,夯實(shí)三年戰(zhàn)略百萬(wàn)支付的底盤能力。 小螞蟻說(shuō): 你們都很關(guān)心的 OB雙11大促實(shí)戰(zhàn)分享 專題來(lái)啦!本系列將為你系統(tǒng)性的介紹OceanBase支撐螞蟻雙11背后的技術(shù)原理和實(shí)戰(zhàn)分享。從平臺(tái)到架構(gòu),再到實(shí)現(xiàn),一起來(lái)探索螞蟻雙11這場(chǎng)神秘的技術(shù)之旅吧! sh...

    Kosmos 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<