Upgrade to Pro — share decks privately, control downloads, hide ads and more …

XIDを周回させてみよう

 XIDを周回させてみよう

Avatar for ISHIDA Akio

ISHIDA Akio

August 09, 2011
Tweet

More Decks by ISHIDA Akio

Other Decks in Programming

Transcript

  1. トランザクションIDとは INSERT INTO r(i) VALUES(1); INSERT INTO r(i) VALUES(2); INSERT

    INTO r(i) VALUES(3); SELECT xmin, xmax, i FROM r; xmin xmax i 664 0 1 665 0 2 666 0 3
  2. トランザクションIDとは INSERT INTO r(i) VALUES(1); INSERT INTO r(i) VALUES(2); INSERT

    INTO r(i) VALUES(3); SELECT xmin, xmax, i FROM r; DELETE FROM r WHERE i = 1; UPDATE r SET i = 4 WHERE i = 2; xmin xmax i 664 667 1 665 668 2 666 0 3 668 0 4
  3. これがXIDを周回させる方法だ • データベースを停止 • pg_resetxlogでXIDを2^31に進める • pg_resetxlog -x 0x80000000 •

    standaloneモードで起動し、pg_database.datfrozenxidと pg_class.relfrozenxidを2^31に進める • データベースを起動 • ちまちまXIDを消費(SELECT txid_current())