成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Oracle2PG系列之分區(qū)索引與全局索引

IT那活兒 / 1649人閱讀
Oracle2PG系列之分區(qū)索引與全局索引

點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!





前  言



最近碰到個(gè)案例,某Oracle數(shù)據(jù)庫遷移到PG的過程中,發(fā)現(xiàn)部分表的分區(qū)索引以及分區(qū)表的全局索引在PG中不支持,具體如下文所示。





分區(qū)索引



由于Oracle環(huán)境的軟件設(shè)計(jì)問題,開發(fā)商使用了大量的序列,而這些序列字段往往也是標(biāo)志性查詢條件,DBA通常都會為這種序列字段創(chuàng)建索引,這里指btree索引。
由于序列值的遞增性,導(dǎo)致總是btree索引頁的最右側(cè)頁進(jìn)行分裂,在入庫高峰期這個(gè)索引分裂往往就是系統(tǒng)瓶頸,優(yōu)化方式也較為簡單,將該字段建立倒序、hash分區(qū)索引等等,這也是Oracle環(huán)境中的分區(qū)索引較多的原因,網(wǎng)上案例較多這里就不再展開。
Oracle分區(qū)索引示例:
圖中創(chuàng)建tb_idxpart的普通表,i1字段進(jìn)行hash打散到4個(gè)分區(qū)索引中,語法也相對簡單。
筆者曾遇到過一個(gè)單表800G的索引失效案例,當(dāng)時(shí)由于資源限制,創(chuàng)建普通索引耗時(shí)過長影響范圍大,將該索引改造成分區(qū)索引后,逐個(gè)分區(qū)rebuild恢復(fù)正常。
示例如下:
分區(qū)索引能縮短索引創(chuàng)建時(shí)間、降低索引層數(shù)控制單分區(qū)容量以及降低爭用等等好處,是一個(gè)很不錯(cuò)的功能,在最新的PG14中目前還不支持普通表的分區(qū)索引。
PG語法樹參考:




全局索引



一般來說,我們在使用分區(qū)表時(shí),都建議將索引同樣建成local分區(qū)索引,上文說的普通表的分區(qū)索引好處這里同樣有效,有一種情況需要注意,比如電話信息表,以城市作為分區(qū)鍵,其中電話號碼字段為主鍵或唯一鍵以保證電話號碼生成的唯一性。如下:
圖中當(dāng)我們在城市340中生成18299999999后,再次在其它城市生成18299999999時(shí), 提示號碼已存在無法生成。而在PG數(shù)據(jù)庫中,其只支持聯(lián)合分區(qū)鍵的主鍵或唯一鍵,具體如下:
可以看到創(chuàng)建唯一索引時(shí),提示必須包含分區(qū)鍵,按提示聯(lián)合分區(qū)鍵進(jìn)行唯一索引創(chuàng)建。
測試在不同的城市生成了相同的電話號碼,這肯定是不合邏輯的。
原因是帶分區(qū)鍵的聯(lián)合唯一鍵或主鍵已經(jīng)不是實(shí)際場景中需要的唯一鍵或主鍵,也就背離了約束初衷,目前最新的PG14中該問題還無法解決,需要在應(yīng)用程序的邏輯層中解決,本文就到此為止。




本文作者:胡 杰

本文來源:IT那活兒(上海新炬王翦團(tuán)隊(duì))

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129600.html

相關(guān)文章

  • 關(guān)于MySQL的知識點(diǎn)面試常見問題都在這里

    摘要:但是這將嚴(yán)重影響程序的性能。垂直分區(qū)的優(yōu)點(diǎn)在于可以使得行數(shù)據(jù)變小,在查詢時(shí)減少讀取的數(shù),減少次數(shù)。此外,垂直分區(qū)可以簡化表的結(jié)構(gòu),易于維護(hù)。垂直分區(qū)的缺點(diǎn)在于主鍵會出現(xiàn)冗余,需要管理冗余列,并會引起操作,可以通過在應(yīng)用層進(jìn)行來解決。 Java面試通關(guān)手冊(Java學(xué)習(xí)指南,歡迎Star,會一直完善下去,歡迎建議和指導(dǎo)):https://github.com/Snailclimb/Jav...

    LeoHsiun 評論0 收藏0
  • Amazon DynamoDB 入門5:索引創(chuàng)建及管理

    摘要:上一節(jié)我們介紹了項(xiàng)目的添加修改獲取刪除操作,這一節(jié)將介紹索引的創(chuàng)建及管理。創(chuàng)建索引在關(guān)系數(shù)據(jù)庫中,索引是一個(gè)數(shù)據(jù)結(jié)構(gòu),可對表中的不同的列執(zhí)行快速查詢。但是,全局二級索引僅支持最終一致性。無論使用的是關(guān)系數(shù)據(jù)庫還是,在創(chuàng)建索引時(shí)都應(yīng)謹(jǐn)慎。 上一節(jié)我們介紹了項(xiàng)目的添加、修改、獲取、刪除(CRUD)操作,這一節(jié)將介紹索引的創(chuàng)建及管理。 創(chuàng)建索引 在關(guān)系數(shù)據(jù)庫中,索引是一個(gè)數(shù)據(jù)結(jié)構(gòu),可對表中的...

    bitkylin 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<