2010-09-15 184 views
0

你們中的任何人都瞭解「pg_stat_get_db_xact_commit」在內部做了什麼嗎?即使應用程序處於空閒狀態並且沒有發送對db的請求,計數也會不斷增加。任何想法可能在後臺發生什麼?Postgres統計信息 - pg_stat_get_db_xact_commit

回答

1

您運行的是哪個版本的PostgreSQL?測試一個空閒的8.4.4安裝,即使重複調用後它也不會改變。我猜你正在運行8.3版本之前的版本,其中只讀命令生成事務id。

從Postgres的8.3版本說明:

使用非持久性事務ID爲只讀事務開銷和真空要求(弗洛裏安Pflug酒店)

非持久性事務ID不增加的減少全球交易櫃檯。因此,他們減少pg_clog上的負載並增加強制吸塵之間的時間,以防止事務ID環繞。其他性能改進也可以提高併發性。

因此,在8.3之前,只需運行「SELECT pg_stat_get_db_xact_commit(oid);」會增加計數器,導致下一個SELECT不同的結果,即使沒有其他運行。

+0

我看到..但是我運行的版本是8.4 – Rekha 2010-09-15 18:19:03

+0

我唯一的建議是(1)查看autovacuum是否正在運行,同時看到db_xact_commit數字增加並(2)打開日誌記錄將調試級別設置爲5,並在檢查db_xact_commit時監視日誌(基本上記錄所有可能的事情,然後執行取證)。 – 2010-09-15 22:16:10

+0

每次運行它時是否增加1?如果是這樣,你自己就會引發這個問題,因爲每個語句都在一個事務中,並且如果沒有創建一個,psql會爲你創建一個。 – 2012-10-03 01:21:38