我想了解postgres如何處理交易的細節;我注意到,當在psql上執行以下命令時,我得到一個txid,它位於518526處,而不是象0或1這樣的低數字,這正是我期望會發生的事情。爲什麼postgres tx id不是從1開始的新創建的數據庫?
postgres=# CREATE DATABASE test;
CREATE DATABASE
postgres=# \connect test;
You are now connected to database "test" as user "postgres".
test=# begin;
BEGIN
test=# select txid_current();
txid_current
--------------
518526
(1 row)
在第二psql的控制檯I型
postgres=# CREATE DATABASE test3;
CREATE DATABASE
postgres=# \connect test3
You are now connected to database "test3" as user "postgres".
test3=# begin;
BEGIN
test3=# select txid_current();
txid_current
--------------
518528
(1 row)
所以它看起來像在Postgres的服務器上的所有數據庫的下一個TxID添加似乎是在所有數據庫共享。爲什麼postgres不是基於每個數據庫的基礎上跨數據庫使用txid?
爲什麼_should_ it? transaction_id應該是一個非遞減的數字序列。即使在其他數據庫中的事務增加時也是如此。 – wildplasser
儘管您一次只能*連接到一個數據庫,但我認爲大量的Postgres數據實際上是在「集羣」級別進行管理的。例如,本地複製只能在每個羣集級別上完成。 – IMSoP