大數(shù)據(jù)就業(yè)實(shí)戰(zhàn)培訓(xùn) Oracle就業(yè)實(shí)戰(zhàn)培訓(xùn)
PostgreSQL從小白到專家,是從入門逐漸能力提升的一個(gè)系列教程,內(nèi)容包括對PG基礎(chǔ)的認(rèn)知、包括安裝使用、包括角色權(quán)限、包括維護(hù)管理、、等內(nèi)容,希望對熱愛PG、學(xué)習(xí)PG的同學(xué)們有幫助,歡迎持續(xù)關(guān)注CUUG PG技術(shù)大講堂。
Part 16:元組(行)結(jié)構(gòu)與dml操作
內(nèi)容1:PostgreSQL行結(jié)構(gòu)
內(nèi)容2:DML操作方式
內(nèi)容3:塊空間清理
· 元組(行)結(jié)構(gòu)
t_xmin保存插入此元組的事務(wù)的txid。
t_xmax保存刪除或更新此元組的事務(wù)的txid。如果此元組未被刪除或更新,則t_xmax設(shè)置為0,這意味著無效。
行頭信息
· 塊中的行結(jié)構(gòu)
工具介紹
· Pageinspect工具
PostgreSQL提供了一個(gè)擴(kuò)展pageinspect,它是一個(gè)貢獻(xiàn)模塊,用來顯示數(shù)據(jù)庫頁面的內(nèi)容。
該pageinspect模塊提供的功能允許我們從底層檢查數(shù)據(jù)庫頁面的內(nèi)容,這對于調(diào)試非常有用。所有這些功能只能由超級用戶使用
· 使用方法:
CREATE EXTENSION pageinspect;SELECT lp as tuple, t_xmin, t_xmax, t_field3 as t_cid, t_ctid FROM heap_page_items(get_raw_page('tbl', 0));
DML操作
· Insertion
· Deletion
· Update
執(zhí)行第一個(gè)更新命令時(shí),通過將txid 100設(shè)置為t_xmax,邏輯上刪除Tuple_1,然后插入Tuple_2。然后,將元組1的t_ctid重寫為指向元組2。
當(dāng)執(zhí)行第二個(gè)UPDATE命令時(shí),與第一個(gè)UPDATE命令一樣,Tuple_2在邏輯上被刪除,Tuple_3被插入。
塊空間清理
· Vacuum操作
塊中被刪除的行的是邏輯上刪除,物理上還保留在塊中,如果長時(shí)間不清理,會造成垃圾空間膨脹,設(shè)想,如果一個(gè)塊中有50%垃圾,那么就浪費(fèi)50%的存儲空間,如果讀到內(nèi)存,也會浪費(fèi)50%的內(nèi)存空間,所以需要定期的清理,而清理的工作由AutoVacuum來操作,或者我們也可以手動操作。
pg_freespacemap插件可以很好的監(jiān)測塊中空間的使用情況,可當(dāng)作full vacuum操作的參考信息。
以上就是Part 16 - PostgreSQL 元組(行)結(jié)構(gòu)與dml操作 的內(nèi)容,歡迎進(jìn)群一起探討交流QQ交流群:752027153微信交流群:聯(lián)系客服拉你進(jìn)微信PG交流群釘釘交流群:35822460,釘釘群專門有視頻講解