【金猿技術(shù)展】數(shù)據(jù)庫子事務(wù)性能優(yōu)化方法——亞信安慧AntDB讓子事務(wù)“飛”起來的一種方案
【數(shù)據(jù)猿導(dǎo)讀】 該技術(shù)由亞信安慧投遞并參與“數(shù)據(jù)猿年度金猿策劃活動——2023大數(shù)據(jù)產(chǎn)業(yè)年度創(chuàng)新技術(shù)突破榜單及獎項”評選。

亞信安慧技術(shù)
該技術(shù)由亞信安慧投遞并參與“數(shù)據(jù)猿年度金猿策劃活動——2023大數(shù)據(jù)產(chǎn)業(yè)年度創(chuàng)新技術(shù)突破榜單及獎項”評選。
數(shù)據(jù)庫子事務(wù)的性能優(yōu)化是將磁盤文件中的父子關(guān)系交換到當(dāng)前進程獨占的本地內(nèi)存,子事務(wù)在處理時,優(yōu)先讀取本地內(nèi)存中緩存的事務(wù)信息,從共享內(nèi)存中讀取父子關(guān)系到本地的時候,以已經(jīng)提交的最大xmin作為標(biāo)記,保證最大xmin之前的事務(wù)已經(jīng)提交;最大xmin之后的父子關(guān)系已經(jīng)寫入共享內(nèi)存。
該技術(shù)方案通過本地內(nèi)存優(yōu)化數(shù)據(jù)庫中子事務(wù)的處理性能,并基于xmin確保子事務(wù) 優(yōu)化時主庫備庫的數(shù)據(jù)一致性,從而實現(xiàn)了數(shù)據(jù) 庫的性能優(yōu)化?;谠摷夹g(shù)方案,在多并發(fā)場景下,子事務(wù)的處理也能夠高效執(zhí)行。
技術(shù)說明
目前,在數(shù)據(jù)庫中,當(dāng)數(shù)據(jù)庫的子事務(wù)數(shù)量超過宏定義變量NUM_SUBTRANS_ BUFFERS子事務(wù)緩存(默認32page)指定的數(shù)量后,就發(fā)生磁盤同步。此時會產(chǎn)生子事務(wù)鎖, 它是一把獨占鎖,高并發(fā)訪問時就會出現(xiàn)性能問題(數(shù)據(jù)庫后臺等待事件表現(xiàn)為subtrans 或SubtransControlLock)。
默認子事務(wù)緩存占用32個buffer頁面,每個buffer大小為8k,即子事務(wù)緩存總大小為32*8k=256k。每個事務(wù)號占用4個字節(jié)大小,則緩存中最多可存儲256*1024/4=65536 個子事務(wù)。當(dāng)系統(tǒng)中子事務(wù)數(shù)量,超出65536時,PostgreSQL將最老的已被replay的子事務(wù)號,交換到磁盤文件保存。當(dāng)進程需要讀取或更新子事務(wù)時,去磁盤文件查詢時,必須先設(shè)置全局寫鎖,即SubTransCtl lock互斥鎖。如圖1所示,當(dāng)子事務(wù)的父事務(wù)號在緩存中不存在時,則獲取SubTransCtl lock互斥鎖,從磁盤中讀取文件到緩存后再釋放互斥鎖。該鎖全局唯一,且順序依次獲取釋放。因此,當(dāng)超出子事務(wù)緩存時,PostgreSQL性能緩慢。
圖1現(xiàn)有技術(shù)中數(shù)據(jù)庫子事務(wù)的查詢方式
“數(shù)據(jù)庫子事務(wù)的性能優(yōu)化方法”在進程第一次在共享內(nèi)存中讀取不到父事務(wù)號時,將磁盤文件中的父子關(guān)系交換到當(dāng)前進程獨占的本地內(nèi)存local_cache_ subtrans。local_cache_subtrans保存在客戶端連接中,即每個連接進程獨享一個私有內(nèi)存。子事務(wù)在處理時,優(yōu)先讀取本地內(nèi)存中緩存的事務(wù)信息:如果找到的話,就直接使用該事務(wù)信息;如果本地內(nèi)存local_cache_subtrans中緩存的事務(wù)信息不足的情況下,還是會繼續(xù)讀取磁盤文件中的內(nèi)容。
此外,還要同時兼顧數(shù)據(jù)庫的主庫和備庫數(shù)據(jù)的一致性。PostgreSQL內(nèi)部的數(shù)據(jù)一致性通過使用一種多版本模型(多版本并發(fā)控制,MVCC)來維護。這就意味著每個SQL 語句看到的都只是一小段時間之前的數(shù)據(jù)快照(一個數(shù)據(jù)庫版本),而不管底層數(shù)據(jù)的當(dāng)前狀態(tài)。這樣可以保護語句不會看到可能由其他在相同數(shù)據(jù)行上執(zhí)行更新的并發(fā)事務(wù)造成的不一致數(shù)據(jù),為每一個數(shù)據(jù)庫會話提供事務(wù)隔離。xmin是PostgreSQL原生存在的一個系統(tǒng)屬性,標(biāo)識插入該行版本的事務(wù)身份(事務(wù)ID)。一個行版本是一個行的一個特別版本,對一個邏輯行的每一次更新都將創(chuàng)建一個新的行版本。由于子事務(wù)的信息是從本地內(nèi)存中進行讀取,而數(shù)據(jù)庫的主庫和備庫的本地內(nèi)存是獨立申請的,為了保證主庫和備庫的數(shù)據(jù)一致性,需要對主庫和備庫上的數(shù)據(jù)可見性的處理邏輯同步進行調(diào)整:從共享內(nèi)存中讀取父子關(guān)系到本地的時候,以已經(jīng)提交的最大xmin作為標(biāo)記,保證最大xmin之前的事務(wù)已經(jīng)提交, 最大xmin之后的父子關(guān)系已經(jīng)寫入共享內(nèi)存。
基于以上優(yōu)化思路,數(shù)據(jù)庫子事務(wù)的性能優(yōu)化方法能夠有效提升數(shù)據(jù)庫性能,其主要流程如圖2所示,包括如下步驟:
圖2 數(shù)據(jù)庫子事務(wù)的性能優(yōu)化方法
步驟1,查詢子事務(wù)的父事務(wù)號;
步驟2,判斷父子關(guān)系是否存在于本地內(nèi)存中,當(dāng)存在時跳轉(zhuǎn)至步驟10,當(dāng)不存在時執(zhí)行步驟3;
步驟3,查找本進程所有快照中最大的xmin;
步驟4,判斷共享內(nèi)存中是否存在父子關(guān)系,當(dāng)不存在時執(zhí)行步驟6,當(dāng)存在時執(zhí)行 步驟9;
步驟5,獲取SubTransCtl lock互斥鎖;
步驟6,從磁盤中讀取文件到共享內(nèi)存,由于SubTransCtl lock互斥鎖的存在,此時該磁盤文件只能由唯一的一個進程來操作;步驟7,釋放SubTransCtl lock互斥鎖;
步驟8,復(fù)制共享內(nèi)存和磁盤文件中的所有事務(wù)父子關(guān)系到本地內(nèi)存,很顯然,在復(fù)制之后,針對本進程中其余子事務(wù)進行查詢時,則無需再次獲取SubTransCtl lock互斥鎖訪問磁盤文件。本地的內(nèi)存local_cache_subtrans大小可自定義設(shè)置,可容納的子事務(wù)數(shù)量可遠超于默認的NUM_SUBTRANS_BUFFERS數(shù)量,因此可以保證在本地內(nèi)存中獲取父子關(guān)系。
步驟9,標(biāo)記最大的xmin之前的事務(wù)可見,即對于最大xmin之前的事務(wù)有效;
步驟10,從本地內(nèi)存中取出父事務(wù)號;
步驟11,判斷步驟10取得的父事務(wù)號是否有效,當(dāng)無效時返回步驟1,當(dāng)有效時執(zhí)行步驟12;
步驟12,返回該父事務(wù)號,進行后續(xù)處理。
在數(shù)據(jù)庫主庫中申請子事務(wù)或提交事務(wù)時執(zhí)行數(shù)據(jù)庫子事務(wù)的性能優(yōu)化方法中各步驟操作,當(dāng)主庫子事務(wù)操作完成時將操作過程寫入WAL并同步到備庫。備庫中接收到主庫的WAL后,進行回放,實現(xiàn)數(shù)據(jù)庫子事務(wù)的性能優(yōu)化方法,完成與主庫同步,從而與主庫保持子事務(wù)可見一致性。
該技術(shù)方案通過本地內(nèi)存優(yōu)化了數(shù)據(jù)庫中子事務(wù)的處理性能,并基于xmin確保子 事務(wù)優(yōu)化時主庫備庫的數(shù)據(jù)一致性,從而實現(xiàn)了數(shù)據(jù)庫的性能優(yōu)化。基于本方案,在多并發(fā)場景下,子事務(wù)的處理也能夠高效執(zhí)行。
★專利申請?zhí)?公開號:CN 116244041 A
開發(fā)團隊
·帶隊負責(zé)人姓名:洪建輝
洪建輝,亞信安慧AntDB-T數(shù)據(jù)庫的研發(fā)帶頭人,曾在多家知名大中型企業(yè)擔(dān)任研發(fā)總監(jiān)、技術(shù)總監(jiān)和首席信息官等技術(shù)管理職務(wù),負責(zé)過多項國防領(lǐng)域國產(chǎn)數(shù)據(jù)庫項目,擁有20多年軟件研發(fā)和管理經(jīng)驗,10多年分布式數(shù)據(jù)庫和云數(shù)據(jù)庫研發(fā)經(jīng)驗。其帶頭研發(fā)的亞信安慧AntDB-T數(shù)據(jù)庫已廣泛應(yīng)用于我國24個省、市、自治區(qū)的通信運營商核心業(yè)務(wù)系統(tǒng),為推動通信行業(yè)基礎(chǔ)軟件國產(chǎn)化作出了重要貢獻。
團隊其他重要成員姓名:梁博、余秀明、馬珊珊
·隸屬機構(gòu):亞信安慧
湖南亞信安慧科技有限公司(簡稱“亞信安慧”)面向各行業(yè)提供數(shù)據(jù)庫、中間件等基礎(chǔ)軟件產(chǎn)品和相關(guān)服務(wù)。公司以“技術(shù)+生態(tài)”為長期戰(zhàn)略,將技術(shù)前瞻性、領(lǐng)先性視為企業(yè)根基與核心競爭力,將生態(tài)建設(shè)視為業(yè)務(wù)發(fā)展的加速器。
亞信安慧的拳頭產(chǎn)品AntDB數(shù)據(jù)庫,具備高性能、彈性擴展、高可靠等產(chǎn)品特性,服務(wù)24個省份的數(shù)億用戶,峰值每秒可處理百萬筆通信核心交易,廣泛應(yīng)用于通信、交通、金融、能源、郵政等行業(yè)。
相關(guān)評價
我們依托亞信安慧AntDB數(shù)據(jù)庫完成了核心賬務(wù)庫的升級改造,并獲評集團“創(chuàng)新應(yīng)用標(biāo)桿”,在進一步提升核心系統(tǒng)能力的同時,有力保障了數(shù)據(jù)和系統(tǒng)的安全、穩(wěn)定。
——某通信運營商省公司
亞信安慧AntDB數(shù)據(jù)庫為我們提供了統(tǒng)一的大數(shù)據(jù)匯聚能力、實時的分析處理、現(xiàn)代化的監(jiān)控和服務(wù),實現(xiàn)了多維度分析和強時效管理,為交通行業(yè)的精細化運營、管理決策提供了強力支撐。
——某行業(yè)客戶
來源:數(shù)據(jù)猿
刷新相關(guān)文章
我要評論
不容錯過的資訊
-
1數(shù)據(jù)要素風(fēng)起,大數(shù)據(jù)賽道進入大掘金時代
-
2【金猿案例展】銀聯(lián)商務(wù)——Apache Dori
-
3第二屆商業(yè)銀行CIO戰(zhàn)略大會將于2024年1月
-
4【金猿技術(shù)展】一種位置隱私保護的虛擬軌
-
5數(shù)據(jù)資產(chǎn)入表攻略:數(shù)錢數(shù)到手軟的秘訣!
-
6Jingdong launched Hongmeng native
-
7支付寶不姓“馬”!整改三年,螞蟻集團估
-
8【金猿產(chǎn)品展】ToBid聚合廣告平臺——聚
-
9【金猿技術(shù)展】云邊環(huán)境下——面向人員管
-
10【金猿投融展】永洪科技——釋放數(shù)據(jù)價值
大數(shù)據(jù)企業(yè)推薦more >
大家都在搜
