bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

PGINDEX創(chuàng)建并行的原理是什么

本篇內(nèi)容介紹了“PG INDEX 創(chuàng)建并行的原理是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)公司基于成都重慶香港及美國等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動(dòng)大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務(wù)器托管報(bào)價(jià),主機(jī)托管價(jià)格性價(jià)比高,為金融證券行業(yè)中國電信云錦天府,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。

It's a long long story, 從 PG 8.3 引入了Heap-Only-Tuple, 主要的作用在用于減少更新所需的I/O數(shù)量,基于postgreql 的原理行的更新等于插入新的tuple,基于多版本控制MVCC, Postgres中的更新包括查找要更新的行,并將該行的新版本插入數(shù)據(jù)庫,引入的問題就是顯而易見的,索引,這就需要更多的I/O,數(shù)據(jù)要重新插入到表上的每個(gè)索引中。在插入的過程中需要先讀取每個(gè)相關(guān)的索引,新版本行的物理位置與舊版本的物理位置不同。那一個(gè)表中有的索引越多,更改的數(shù)據(jù)量越大,牽扯的索引的消耗就越大。

PG INDEX 創(chuàng)建并行的原理是什么

從上圖可以看,如果沒有HOT ,則索引頁面在更新后,需要另一個(gè)指針指向修改后的INDEX 數(shù)據(jù), 如果有了HOT 則不需要通過另外的指針 C 去指向修改后的索引,僅僅通過原有的指針,在原有的索引tuple1 上通過 t_cid來指向新的index的數(shù)據(jù)即可。在數(shù)據(jù)結(jié)構(gòu)中的樣子參看下圖

PG INDEX 創(chuàng)建并行的原理是什么

HOT的效率雖然高,但需要達(dá)到某些需求,才可以實(shí)現(xiàn),從上圖看

1  數(shù)據(jù)必須(tuple)必須在一個(gè)頁面

2  更新的數(shù)據(jù)中不能包含 INDEX 本身的數(shù)據(jù)

下面我們開始做相關(guān)的實(shí)驗(yàn),看看HOT 在實(shí)踐中是怎樣的

PG INDEX 創(chuàng)建并行的原理是什么

create table test (id int, name varchar(200), age float, datetime timestamp); 

insert into test select generate_series(1,10), random()*100, random()*1, now();  

create index idx_test_name on test (name);

create index idx_test_age on test (age);

create index idx_test_datetime on test (datetime);

通過 pageinspect 來對(duì)當(dāng)前的index 頁面進(jìn)行一個(gè)細(xì)節(jié)觀測(cè)

PG INDEX 創(chuàng)建并行的原理是什么

1 測(cè)試1  將name 中的 ID =1  的值進(jìn)行update 但更改的值和原來一樣

PG INDEX 創(chuàng)建并行的原理是什么

2  測(cè)試2 將datetime 中的 ID =1  的值進(jìn)行update 到新的值,可以注意到,只要更新到有索引的字段,無論是那個(gè),都會(huì)觸發(fā)所有的INDEX 的更新,圖中僅僅是更新了 id = 1 的 datetime值,但其他的索引也都進(jìn)行了更新,10行變成 11行

PG INDEX 創(chuàng)建并行的原理是什么

我們對(duì)表test 繼續(xù)  vacuum 

PG INDEX 創(chuàng)建并行的原理是什么

可以從下圖看到垃圾的版本的index tuple 已經(jīng)被回收了  (部分截圖由于屏幕原因,并未截圖完全)

PG INDEX 創(chuàng)建并行的原理是什么

 為什么更改同樣的值的時(shí)候,索引不會(huì)被更新因?yàn)?PG11 時(shí)引入了 recheck_on_update 作為創(chuàng)建索引的默認(rèn)值,這樣索引會(huì)檢測(cè)UPDATE 時(shí)的值是否與現(xiàn)有的值不同,相同就不會(huì)觸發(fā)更新索引tuple的操作。

講到這里其實(shí)還沒有到 INDEX CONCURRENTLY  ,上面僅僅是粗略的介紹了HOT.

實(shí)際上索引并行建立,需要三個(gè)phase 

1  開始在系統(tǒng)的catalog聲明我們要開始建立新的索引,此時(shí)索引對(duì)于老的事務(wù)來說是不可見的,對(duì)于新的事務(wù)是可見的。

2 開始創(chuàng)建索引,通過對(duì)表的 MVCC 快照,對(duì)表中產(chǎn)生快照的 MVCC 中的可見行,開始建立建立索引。

3 當(dāng)?shù)诙絼?chuàng)建索引成功后,其實(shí)在此刻與上次MVCC的之間間隔,有插入U(xiǎn)PDATE, DELETE的操作,這些是當(dāng)前新索引與當(dāng)前行的數(shù)據(jù)不一致的地方,此時(shí)會(huì)開始第二次MVCC ,在次MVCC做了快照,并修復(fù)新的索引后,后續(xù)就是開始維護(hù)索引,此時(shí)索引已經(jīng)可以正常的工作了。

但整體的并行的索引的創(chuàng)建工作并未結(jié)束,因?yàn)樾碌乃饕龑?duì)于老的事務(wù)是不可見的,所以不能推出工作,所以必須等待比這個(gè)索引老的事務(wù)都結(jié)束了才能進(jìn)行整體的索引可見和正常工作。

所以大事務(wù)和長時(shí)間運(yùn)行的事務(wù),都是并行索引創(chuàng)建并盡快完成的阻礙,另外需要兩次 MVCC 所以一般來說 并行索引的創(chuàng)建的時(shí)間也就比一般非并行創(chuàng)建享有獨(dú)占鎖方式創(chuàng)建索引的時(shí)間要長。

“PG INDEX 創(chuàng)建并行的原理是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

新聞標(biāo)題:PGINDEX創(chuàng)建并行的原理是什么
本文鏈接:http://vcdvsql.cn/article0/iigsoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站響應(yīng)式網(wǎng)站標(biāo)簽優(yōu)化網(wǎng)站設(shè)計(jì)自適應(yīng)網(wǎng)站手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司