Я пытаюсь понять детали того, как 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_ это? Транзакция должна быть неубывающей последовательностью чисел. Что это такое, даже когда оно увеличивается транзакциями в других базах данных. – wildplasser
Хотя вы можете только * подключить * к одной базе данных за раз, я думаю, что большое количество данных Postgres фактически управляется на уровне «кластера». Например, встроенная репликация может выполняться только на уровне кластера. – IMSoP