顾美玲勾引管家|日韩黄色成人|国产精品theporn动漫|欧美日日日|国产精品探花在线

專業只做數據庫實訓和認證的品牌機構

微信公眾號新浪微博
免費咨詢電話:400-0909-964
當前位置: 網站首頁 > pg大講堂 > PostgreSQL技術大講堂 - 第19講:凍結TXIDS概述

PostgreSQL技術大講堂 - 第19講:凍結TXIDS概述

文章來源: 更新時間:2023/6/15 16:17:49

在線老師點擊咨詢:

最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!

我要咨詢

PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內容包括對PG基礎的認知、包括安裝使用、包括角色權限、包括維護管理、、等內容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續關注CUUG PG技術大講堂。

第19講:凍結TXIDS

內容1:PostgreSQL TXID介紹

內容2:PostgreSQL TXID使用原理使用

內容3:凍結TXID來解決TXID環繞問題

內容4:如何凍結TIXD


TXID介紹

· 事務id(txid)

當一個事務開始時,PostgreSQL中的事務管理系統會為該事務分配一個唯一標識符,即事務ID(txid).PostgreSQL中的txid被定義為一個32位的無符號整數,也就是說,它能記錄大約42億個事務。通常txid對我們是透明的,但是我們可以利用PostgreSQL內部的函數來獲取當前事務的txid。

testdb=# BEGIN;

BEGIN

testdb=# SELECT txid_current();

txid_current

--------------

100

(1 row)

請注意,BEGIN命令沒有指定txid。在PostgreSQL中,當第一個命令在BEGIN命令執行之后執行時,事務管理器會分配一個tixd,然后它的事務開始。


TXID使用原理

· TXID結構

TxID=2的32次方=42億

前21億個TxID是“過去的”

后21億個TxID是“未來的”


TXID環繞

· TXID環繞

假設元組tuple_1的txid為100,即tuple_1的t_xmin為100。服務器已經運行很長一段時間了,Tuple_1沒有被修改。當前的txid是21億+100,執行SELECT命令。此時,Tuple_1可見,因為txid 100是過去的。接著,又執行相同的SELECT命令,此時當前的txid就變成是21億+101了,根據行可見性規則判斷Tuple_1就不再可見,因為txid 100變成是未來的了。


凍結TXID

· 解決TXID環繞問題的方法—凍結TXID

解決事務環繞問題的方法是凍結,其做法是把21億以前事務所修改的行做一個標記位(即凍結),根據行可見性規則,凡是被標識位凍結行在判斷的時候就不依賴t_xmin了,讓行數據變成可見。

若TXID使用過一輪以后,被凍結的行如果被新事務修改,則原來的標記位就會消除(即解凍),此時此行是否可見,就要根據行可見性規則進行判斷。


凍結處理

· 凍結處理有兩種模式

lazy mode (惰性模式)

eager mode (急切模式)

· Lazy Mode

凍結極限txid定義如下:

freezeLimit_txid=(OldestXmin-vacuum_freeze_min_age)

AutoVacuum操作會進行凍結操作,每分鐘都會執行一次,被選中的表都會進行vacuum操作,包含凍結txid內容。

· Eager Mode

當滿足以下條件時,執行緊急模式:

pg_database.datfrozenxid<(OldestXmin-vacuum_freeze_table_age)

· pg_database.datfrozenxid 和pg_class.relfrozenxid(s)之間的凍結對比

· 如何顯示被凍結的對象信息

testdb=# VACUUM table_1;

VACUUM

testdb=# SELECT n.nspname as "Schema", c.relname as "Name", c.relfrozenxid

FROM pg_catalog.pg_class c

LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace

WHERE c.relkind IN ('r','')

AND n.nspname <> 'information_schema' AND n.nspname !~ '^pg_toast'

AND pg_catalog.pg_table_is_visible(c.oid)

ORDER BY c.relfrozenxid::text::bigint DESC;

Schema | Name | relfrozenxid

------------+-------------------------+--------------

public | table_1 | 100002000

public | table_2 | 1846

pg_catalog | pg_database | 1827

pg_catalog | pg_user_mapping | 1821

pg_catalog | pg_largeobject | 1821

· 顯示被凍結的數據庫信息

testdb=# SELECT datname, datfrozenxid FROM pg_database WHERE datname = 'testdb';

datname | datfrozenxid

---------+--------------

testdb | 1821

(1 row)

· 使用VM提高凍結效率


以上就是Part 19 - 凍結TXIDS 的內容,歡迎進群一起探討交流,往期視頻,聯系cuug

QQ交流群:752027153

微信交流群:聯系客服拉你進微信PG交流群

釘釘交流群:35822460,釘釘群專門有視頻講解

本文地址:http://m.mudan321.com/pgdjt/34306667841.html 轉載請注明!


PostgreSQL入門到精通 100+ 個學習資料

Oracle培訓機構

金牌講師<>

冉乃綱-老師CUUG金牌講師
冉老師 CUUG金牌講師 Oracle及RedHat高級講師、Unix/Linux 資深專家...[詳細了解老師]

免費咨詢上課流程 客服在線中

陳衛星-老師CUUG金牌講師
陳老師 CUUG金牌講師 精通Oracle管理、備份恢復、性能優化 11年Ora...[詳細了解老師]

免費咨詢上課流程 客服在線中

選學校如何選擇適合自己的學校

CUUG -CHINA UNIX USER GROUP,是國際UNIX組織UNIFORUM的中國代表,是國內悠久的專業UNIX培訓機構,被譽為中國UNIX 的搖籃。多年來,以提高教學質量為本,強調素質教育,積極引進、消化國外的新技術,有效的結合中國....[詳情]

一站式服務(從入學到就業一幫到底)

入學

學習

就業

實操

食宿
地址:北京市海淀區田村山南路35號院17號樓
課程咨詢: 400-0909-964
企業服務:137 1818 8639(陳經理)
部分信息來源于網絡,如有錯誤請聯系指正!
版權所有@北京神腦資訊技術有限公司 (CUUG,中國UNIX用戶協會) Copyright 2016 ALL Rights Reserved 京ICP備11008061號-1