成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

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

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





前  言



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





分區(qū)索引



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




全局索引



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




本文作者:胡 杰

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/129600.html

相關(guān)文章

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

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

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

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

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

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

0條評(píng)論

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