เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

Transcript of Bruce Momjian's 2020 talk "Unlocking the Postgres Lock Manager".

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

(เบซเบกเบฒเบเป€เบซเบ”: เบ„เปเบฒเบ–เบฒเบก SQL เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบเบชเบฐเป„เบฅเป‰เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ™เบตเป‰: http://momjian.us/main/writings/pgsql/locking.sql)

เบชเบฐเบšเบฒเบเบ”เบต! เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปƒเบ™เบฅเบฑเบ”เป€เบŠเบเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เบ‚เป‰เบญเบเบ‚เปเป‚เบ—เบ”เบ—เบตเปˆเบ‚เป‰เบญเบเบšเปเปˆเบชเบฒเบกเบฒเบ”เบกเบฒเปƒเบ™เบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เปเบ•เปˆเบ›เบตเบ™เบตเป‰ Ivan เปเบฅเบฐเบ‚เป‰เบญเบเบกเบตเปเบœเบ™เบเบฒเบ™เปƒเบซเบเปˆ. เบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒเบˆเบฐเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เป€เบฅเบทเป‰เบญเบเป†. เบ‚เป‰เบญเบเบกเบฑเบเบกเบฒเบฅเบฑเบ”เป€เบŠเบ. เบ‚เป‰เบญเบเบˆเบฐเป„เบ›เบขเป‰เบฝเบกเบขเบฒเบก Tyumen, Tver. เบ‚เป‰เบญเบเบ”เบตเปƒเบˆเบซเบผเบฒเบเบ—เบตเปˆเบ‚เป‰เบญเบเบˆเบฐเป„เบ”เป‰เป„เบ›เบขเป‰เบฝเบกเบขเบฒเบกเป€เบกเบทเบญเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เบ‚เป‰เบญเบเบŠเบทเปˆ Bruce Momjian. เบ‚เป‰เบญเบเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆ EnterpriseDB เปเบฅเบฐเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Postgres เบซเบผเบฒเบเบเบงเปˆเบฒ 23 เบ›เบต. เบ‚เป‰เบญเบเบญเบฒเป„เบชเบขเบนเปˆ Philadelphia, USA. เบ‚เป‰เบญเบเป€เบ”เบตเบ™เบ—เบฒเบ‡เบ›เบฐเบกเบฒเบ™ 90 เบกเบทเป‰เบ•เปเปˆเบ›เบต. เปเบฅเบฐเบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบ›เบฐเบกเบฒเบ™ 40 เบเบญเบ‡เบ›เบฐเบŠเบธเบก. เบ‚เบญเบ‡เบ‚เป‰เบญเบ เป€เบงเบฑเบšเป„เบŠเบ—เปŒ, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบฐเป„เบฅเป‰เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เบฒเบงเป‚เบซเบฅเบ”เบžเบงเบเบกเบฑเบ™เป„เบ”เป‰เบˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบชเปˆเบงเบ™เบ•เบปเบงเบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบกเบฑเบ™เบเบฑเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ›เบฐเบกเบฒเบ™ 30 เบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบต. เบเบฑเบ‡เบกเบตเบงเบดเบ”เบตเป‚เบญเปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™ blog เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ, เบซเบผเบฒเบเบเบงเปˆเบฒ 500. เบ™เบตเป‰เปเบกเปˆเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡. เปเบฅเบฐเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบเบฒเบ™เบ™เบตเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบŠเบทเป‰เบญเป€เบŠเบตเบ™เปƒเบซเป‰เบ—เปˆเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™.

เบ‚เป‰เบญเบเป€เบ„เบตเบเป€เบ›เบฑเบ™เบ„เบนเบชเบญเบ™, เบชเบฒเบ”เบชเบฐเบ”เบฒเบˆเบฒเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบˆเบฐเป€เบฅเบตเปˆเบกเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Postgres. เปเบฅเบฐโ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ”เบตโ€‹เปƒเบˆโ€‹เบซเบผเบฒเบโ€‹เบ—เบตเปˆโ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบˆเบฐโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบšเบญเบโ€‹เบ—เปˆเบฒเบ™โ€‹เปƒเบ™โ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบเปเบฒโ€‹เบฅเบฑเบ‡โ€‹เบˆเบฐโ€‹เบšเบญเบโ€‹เบ—เปˆเบฒเบ™โ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ™เบตเป‰เบกเบต 110 เบชเบฐเป„เบฅเป‰. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ, เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ, เปเบฅเบฐเบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เบซเบผเบฒเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ—เบตเปˆเบšเปเปˆเบžเปเปƒเบˆเบซเบผเบฒเบ. เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบšเปเปˆเปเบกเปˆเบ™เบซเบปเบงเบ‚เปเป‰เบ—เบตเปˆเบ™เบดเบเบปเบกเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบกเบฑเบ™เบซเบฒเบเป„เบ›เบšเบฒเบ‡เบšเปˆเบญเบ™. เบกเบฑเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบเบฒเบ™เป„เบ›เบซเบฒเบซเบกเปเบ›เบปเบงเปเบ‚เป‰เบง.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

  1. เบเบฒเบ™เบฅเบฑเบญเบเปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบชเปเบฒเบฅเบฑเบšเบซเบผเบฒเบเป†เบ„เบปเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบกเบตเบซเบผเบฒเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™. เบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบฐเบเบฑเบ”. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบทเป‰เบ™เบตเป‰เบ‚เป‰เบญเบเบˆเบฐเปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบžเบทเป‰เบ™เบ–เบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡.
  2. ID เบ—เบธเบฅเบฐเบเบณ. เบ™เบตเป‰เปเบกเปˆเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเป€เบšเบทเปˆเบญเบซเบผเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบต, เปเบ•เปˆเบžเบงเบเป€เบ‚เบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆ.
  3. เบ•เปเปˆเป„เบ›เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเบเบฑเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบžเบฒเบเบชเปˆเบงเบ™เบเบปเบ™เบˆเบฑเบเบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡.
  4. เปเบฅเบฐเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบซเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡. เปเบฅเบฐเบกเบฑเบ™เบˆเบฐเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ„เปเบฒเบชเบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฑเบšเบชเบปเบ™. เบกเบตโ€‹เบˆเบฑเบโ€‹เบ„เบปเบ™โ€‹เปƒเบ™โ€‹เบžเบงเบโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบฎเบนเป‰โ€‹เบงเปˆเบฒโ€‹เป€เบชเบฑเป‰เบ™โ€‹เบ—เบฒเบ‡โ€‹เบ™เบตเป‰โ€‹เบกเบฒโ€‹เบˆเบฒเบโ€‹เปƒเบช? เบชเบญเบ‡เบ„เบปเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเป€เบเบกเบ—เบตเปˆเบกเบตเบŠเบทเปˆเบงเปˆเบฒ Colossal Cave Adventure. เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบเบกเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบ™ 80s, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒ. เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เป‰เปเบฒ, เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ labyrinth, เปเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบกเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เปเบ•เปˆเป€เบ™เบทเป‰เบญเปƒเบ™เปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เบ—เบธเบเป†เบ„เบฑเป‰เบ‡. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบ‚เป‰เบญเบเบˆเบทเปˆเป€เบเบกเบ™เบตเป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบŠเบทเปˆเบ‚เบญเบ‡ locks เบ—เบตเปˆเบกเบฒเบซเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฒเบ Oracle. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เป‰เบญเบเบชเบฑเบšเบชเบปเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, SHARE UPDATE ECXLUSIVE. เบ•เปเปˆเป„เบ› SHARE RAW ECXLUSIVE. เบ”เป‰เบงเบเบ„เบงเบฒเบกเบŠเบทเปˆเบชเบฑเบ”, เบŠเบทเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เบซเบผเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เบšเบฒเบ‡เบ„เบปเบ™เบกเบตเบ„เปเบฒเบงเปˆเบฒ "เปเบšเปˆเบ‡เบ›เบฑเบ™", เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบˆเบฐเปเบเบ. เบšเบฒเบ‡เบญเบฑเบ™เบกเบตเบ„เบณเบงเปˆเบฒ "เบชเบฐเป€เบžเบฒเบฐ". เบšเบฒเบ‡เบญเบฑเบ™เบกเบตเบ—เบฑเบ‡เบชเบญเบ‡เบ„เบณเบ™เบตเป‰. เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบงเบดเบ—เบตเบเบฒเบ™เบฅเบฑเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ„เปเบฒเบงเปˆเบฒ "เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡" เบเบฑเบ‡เบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบ. เปเบฅเบฐเบ„เปเบฒเบงเปˆเบฒ "เปเบ–เบง" เปเบกเปˆเบ™เบชเบฒเบ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบเบฒเบ™เปเบˆเบเบขเบฒเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡, เบเบฒเบ™เปเบˆเบเบขเบฒเบเปเบ–เบง.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบšเบฑเบ™เบซเบฒเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเปƒเบ™ Postgres, เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบเบ—เบตเปˆเบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบงเบกเป€เบญเบปเบฒเปƒเบ™เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เปเบกเปˆเบ™ MVCC. เบ‚เป‰เบญเบเบกเบตเบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบซเบปเบงเบ‚เปเป‰เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‚เบญเบ‡เบ‚เป‰เบญเบ. เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ„เบดเบ”เบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ, MVCC เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เปเบฅเบฐเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบงเบดเบ”เบตเป‚เบญเป„เบ”เป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบชเบดเปˆเบ‡เบญเบทเปˆเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเปเบกเปˆเบ™ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ. เบ—เบธเบฅเบฐเบเปเบฒเบซเบผเบฒเบเบขเปˆเบฒเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบ•เบปเบงเบฅเบฐเบšเบธเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ. เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบงเปˆเบฒเบ—เบธเบฅเบฐเบเปเบฒเปเบกเปˆเบ™เบซเบเบฑเบ‡. Postgres เบกเบตเบชเบญเบ‡เบฅเบฐเบšเบปเบšเบ•เบปเบงเป€เบฅเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ. เบ‚เป‰เบญเบเบฎเบนเป‰เบงเปˆเบฒเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบชเบงเบเบ‡เบฒเบกเบซเบผเบฒเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบเบฑเบ‡เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒ slides เบˆเบฐเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบชเบตเปเบ”เบ‡เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

http://momjian.us/main/writings/pgsql/locking.sql

เปƒเบซเป‰เป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡. เปเบฒเบเป€เบฅเบเบ—เบธเบฅเบฐเบเบณเบ–เบทเบเป€เบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™เบชเบตเปเบ”เบ‡. เบŸเบฑเบ‡เบŠเบฑเบ™ SELECT pg_back เปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบกเบฑเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ‚เบญเบ‡เบ‚เป‰เบญเบเปเบฅเบฐ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ.

เบชเบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบญเบตเบ, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ™เบตเป‰เปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป„เบ›เบ—เบตเปˆเบฅเบดเป‰เบ‡เบ™เบตเป‰เปƒเบ™เบชเบตเบšเบปเบงเปเบฅเบฐเบ”เบฒเบงเป‚เบซเบฅเบ” SQL เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ™เบตเป‰. เปเบฅเบฐเบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบกเบฑเบ™เบขเบนเปˆเปƒเบ™ PSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเบˆเปเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ—เบฑเบ™เบ—เบต. เบกเบฑเบ™โ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบ”เบญเบโ€‹เป„เบกเป‰, เปเบ•เปˆโ€‹เบขเปˆเบฒเบ‡โ€‹เบซเบ™เป‰เบญเบโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบกเบฑเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบ™เบฒเบ‡. เปเบฅเบฐเบกเบต ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบญเบทเปˆเบ™เปƒเบ™ Postgres, เป€เบŠเบดเปˆเบ‡เป€เบญเบตเป‰เบ™เบงเปˆเบฒ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ virtual

เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบ, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเปƒเบˆเบเบฒเบ™เบฅเบฑเบญเบเปƒเบ™ Postgres.

ID เบ—เบธเบฅเบฐเบเบณเบชเบฐเป€เปเบทเบญเบ™เปเบกเปˆเบ™ ID เบ—เบธเบฅเบฐเบเบณเบ—เบตเปˆเบšเปเปˆเบกเบตเบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบ‚เป‰เบญเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ SELECT, เบชเปˆเบงเบ™เบซเบผเบฒเบเบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเบ›เปˆเบฝเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเบฅเบฑเบญเบเบซเบเบฑเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ SELECT เบ‡เปˆเบฒเบเป†, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเปƒเบซเป‰เบ—เบธเบฅเบฐเบเปเบฒเบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™ ID เบ„เบปเบ‡เบ—เบตเปˆ. เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเปƒเบซเป‰ ID virtual เบ‚เบญเบ‡เบ™เบฒเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™.

เปเบฅเบฐเบ™เบตเป‰เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” Postgres, เบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ virtual เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบญเบ‡เบ•เบปเบงเป€เบฅเบ. เบ•เบปเบงเป€เบฅเบเบ—เบณเบญเบดเบ”เบเปˆเบญเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเป€เบฅเบเปเบกเปˆเบ™ ID backend. เปเบฅเบฐเป€เบšเบทเป‰เบญเบ‡เบ‚เบงเบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบ„เบปเบฒเป€เบ•เบต.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ‚เป‰เบญเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป, เบกเบฑเบ™เบšเบญเบเบงเปˆเบฒ backend ID เปเบกเปˆเบ™ 2.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ–เป‰เบฒเบ‚เป‰เบญเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป„เบฅเบเบฐเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒ counter เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก 2/10, 2/11, 2/12, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบˆเบปเปˆเบ‡เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเบกเบตเบชเบญเบ‡เบ„เปเบฅเปเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบŠเป‰เบฒเบเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ virtual โ€“ 2/12. เปเบฅเบฐเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบ‚เบงเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ–เบฒเบงเบญเบ™. เปเบฅเบฐเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ™เบตเป‰เปเบกเปˆเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ. เปเบฅเบฐเบ—เบธเบฅเบฐเบเปเบฒเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบ”เบฑเบ”เปเบ›เบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบชเบฐเบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เปƒเบซเป‰เบกเบฑเบ™ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ–เบฒเบงเบญเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบ‚เป‰เบญเบเปเบฅเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ ((ANALYZE)), เบ„เปเบฒเบ–เบฒเบกเบ”เบฝเบงเบเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เป‰เบญเบเบกเบต ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ–เบฒเบงเบญเบ™. เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ. เบ‚เป‰เบญเบเบšเปเปˆเบกเบตเบšเบฑเบ”เบ›เบฐเบˆเบณเบ•เบปเบงเบ™เบตเป‰เบกเบฒเบเปˆเบญเบ™, เปเบ•เปˆเบ”เบฝเบงเบ™เบตเป‰เบ‚เป‰เบญเบเบกเบตเบกเบฑเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบชเบฐเบ™เบฑเป‰เบ™เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบญเบทเปˆเบ™, เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบญเบทเปˆเบ™. เปเบฒเบเป€เบฅเบเบ—เบธเบฅเบฐเบเบณเบชเบฐเป€เปเบทเบญเบ™เปเบกเปˆเบ™เบงเบฑเบ™เบ—เบต 2/13. เปเบฅเบฐเบ–เป‰เบฒเบ‚เป‰เบญเบเบ‚เป ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบเบฑเบ‡เบ„เบปเบ‡เบ„เป‰เบฒเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก, เบ‚เป‰เบญเบเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบกเบฑเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบกเบต ID เบ—เบธเบฅเบฐเบเบณเบชเบฐเป€เปเบทเบญเบ™ เปเบฅเบฐ ID เบ—เบธเบฅเบฐเบเบณเบ—เบตเปˆเบ„เบปเบ‡เบ„เป‰เบฒเบ‡. เบžเบฝเบ‡เปเบ•เปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบˆเบธเบ”เบ™เบตเป‰เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡ Postgres.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบžเบฒเบเบ—เบตเบชเบฒเบก. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบžเบฝเบ‡เปเบ•เปˆเบเปˆเบฒเบ‡เบœเปˆเบฒเบ™เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡ locks เปƒเบ™ Postgres. เบกเบฑเบ™เบšเปเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ. เบžเบฒเบเบชเบธเบ”เบ—เป‰เบฒเบเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ. เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเบดเปˆเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบ•เปเปˆเป„เบ›.

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบœเปˆเบฒเบ™เบžเบฒเบเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เปเบ•เปˆเบฅเบฐเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ lock. เปเบฅเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡, เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบšเบฒเบ‡เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฑเบญเบเปƒเบ™ Postgres.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เปเบšเบšเบชเบญเบšเบ–เบฒเบกเปเบฅเบฐเป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™ Postgres, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบญเบญเบเบ„เปเบฒเบ–เบฒเบกเปƒเบ™เบกเบธเบกเป€เบšเบดเปˆเบ‡เบฅเบฐเบšเบปเบš. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, pg_lock เบ–เบทเบเป€เบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™เบชเบตเปเบ”เบ‡. Pg_lock เปเบกเปˆเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบšเบญเบเบžเบงเบเป€เบฎเบปเบฒเบงเปˆเบฒเบฅเบฑเบญเบเปƒเบ”เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ Postgres.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™ pg_lock เบ”เป‰เบงเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฑเบšเบชเบปเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เบกเบธเบกเป€เบšเบดเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™ pg_locks. เปเบฅเบฐเบกเบฑเบ™เบเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบเบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ”เบตเบ‚เบถเป‰เบ™. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบฑเบ™เบเบปเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบฅเบฑเบญเบเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เป€เบŠเบ”เบŠเบฑเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเป€เบญเบ‡, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆ SQL เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบฅเบฐเบกเบฑเบ™เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบเปเบฒเบฅเบฑเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบšเบฑเบ™เบซเบฒเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบธเบกเป€เบšเบดเปˆเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบเบงเป‰เบฒเบ‡เบซเบผเบฒเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบญเบฑเบ™เบ—เบตเบชเบญเบ‡ - lockview2 .

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian เปเบฅเบฐเบกเบฑเบ™เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ‚เป‰เบญเบเป€เบซเบฑเบ™เบ–เบฑเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เปเบฅเบฐเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ‚เป‰เบญเบเป€เบซเบฑเบ™เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบ„เปเบฅเปเบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฑเบšเบชเบปเบ™, เบชเบฐเบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบกเบฑเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ Lockdemo. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เป€เบชเบฑเป‰เบ™เบซเบ™เบถเปˆเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบ•เปˆเบฒเบ‡เป†เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบฅเบฑเบญเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบ™เบถเปˆเบ‡เปเบ–เบง, เบซเบ™เบถเปˆเบ‡เบ–เบฑเบ™. เบ›เบฐเป€เบžเบ”เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบฅเบฑเบญเบเปเบกเปˆเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒ ACCESS SHARE. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบกเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบšเปเปˆเป„เบ”เป‰เบ‚เบฑเบ”เบเบฑเบš locks เบญเบทเปˆเบ™เป†.

เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ” lock เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ "lock table". เปเบฅเบฐเปเบ™เปˆเบ™เบญเบ™เบˆเบฐเบ•เบฑเบ™, i.e. เปƒเบ™เป‚เบซเบกเบ” ACCESS SHARE เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบตเบ”เบ•เบปเบงเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบฅเบฑเบญเบ. เปเบฅเบฐเบ–เป‰เบฒเบ‚เป‰เบญเบเปเบฅเปˆเบ™ PSQL เปƒเบ™เบžเบทเป‰เบ™เบซเบฅเบฑเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ—เบตเบชเบญเบ‡เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ‚เป‰เบญเบเบˆเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰? เบ‚เป‰เบญเบเป„เบ›เบซเบฒเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบญเบทเปˆเบ™เปเบฅเบฐเบšเบญเบเบกเบฑเบ™เบงเปˆเบฒ "เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ‚เป‰เบญเบเป€เบซเบฑเบ™ lockview เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ™เบตเป‰." เปเบฅเบฐเบ™เบตเป‰เบ‚เป‰เบญเบเบกเบต AccessShareLock เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ™เบตเป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบฎเป‰เบญเบ‡เบ‚เป. เปเบฅเบฐเบฅเบฒเบงเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบ•เบฑเบ™เป„เบ”เป‰เบ–เบทเบเบกเบญเบšเบซเบกเบฒเบ. เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™เบ„เปเบฅเปเบฒเบ—เบตเบชเบญเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบžเบงเบเป€เบ‚เบปเบฒเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ–เป‰เบฒเบ‚เป‰เบญเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ "SELECT", เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบต implicit (explicit) เป€เบžเบทเปˆเบญเบฎเป‰เบญเบ‡เบ‚เป AccessShareLock. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบ›เปˆเบญเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบเปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเปเบฅเบฐเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบเบฑเบšเบ„เบทเบ™เบกเบฒเบซเบผเบฒเบเปเบ–เบง. เปเบฅเบฐเบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™ AccessShareLock. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, SELECT เป‚เบ—เบซเบฒ AccessShareLock เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ‚เบฑเบ”เปเบเป‰เบ‡เบเบฑเบš virtually เบซเบเบฑเบ‡เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบฅเบฑเบญเบเบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบ‚เป‰เบญเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ SELECT เปเบฅเบฐเบกเบตเบชเบฒเบกเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™? เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบ‚เป‰เบญเบเปเบฅเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ”เบฝเบง, เบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเปเบฅเปˆเบ™เบชเบฒเบก: pg_class, pg_namespace เปเบฅเบฐ pg_attribute.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเป€เบšเบดเปˆเบ‡เปเบšเบšเบชเบญเบšเบ–เบฒเบก, เบ‚เป‰เบญเบเป€เบซเบฑเบ™ 9 AccessShareLocks เปƒเบ™เบชเบฒเบกเบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡? เบชเบฒเบกเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบกเปˆเบ™เป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบชเบตเบŸเป‰เบฒ: pg_attribute, pg_class, pg_namespace. เปเบ•เปˆเบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒเบ”เบฑเบ”เบชเบฐเบ™เบตเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบœเปˆเบฒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบเบฑเบ‡เบกเบต AccessShareLock.

เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฑเบญเบเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบšเปเปˆเป„เบ”เป‰เบ‚เบฑเบ”เปเบเป‰เบ‡เบเบฑเบšเบ„เบปเบ™เบญเบทเปˆเบ™. เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเป‰เบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปƒเบซเบกเปˆเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบเบกเบฑเบ™. เบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เบกเบฑเบ™เบˆเบฐเบซเบฒเบเป„เบ›เปƒเบ™เบ‚เบฐเบ™เบฐเบ™เบฑเป‰เบ™, เปเบฅเป‰เบงเบ™เบตเป‰เปเบกเปˆเบ™เบœเบดเบ”เบžเบฒเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ AccessShare เปเบกเปˆเบ™เบเบฒเบ™เบฅเบฑเบญเบเบฅเบฐเบ”เบฑเบšเบ•เปเปˆเบฒเบ—เบตเปˆเบšเบญเบเบžเบงเบเป€เบฎเบปเบฒเบงเปˆเบฒ "เบขเปˆเบฒเบงเบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ™เบตเป‰เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ‚เป‰เบญเบเป€เบฎเบฑเบ”เบงเบฝเบ". เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ™เบฒเบ‡เป€เบฎเบฑเบ”.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

ROW SHARE - lock เบ™เบตเป‰เปเบกเปˆเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปƒเบซเป‰โ€‹เป€เบฎเบปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡. SELECT ROW SHARE เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฑเบญเบเปเบ•เปˆเบฅเบฐเปเบ–เบงเป€เบ›เบฑเบ™เปเบ•เปˆเบฅเบฐเปเบ–เบง. เบงเบดเบ—เบตเบ™เบตเป‰เบšเปเปˆเบกเบตเปƒเบœเบชเบฒเบกเบฒเบ”เบฅเบถเบšเบžเบงเบเบกเบฑเบ™ เบซเบผเบทเบ›เปˆเบฝเบ™เบžเบงเบเบกเบฑเบ™เป„เบ”เป‰ เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเบณเบฅเบฑเบ‡เป€เบšเบดเปˆเบ‡เบžเบงเบเบกเบฑเบ™เบขเบนเปˆ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjianเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ SHARE LOCK เป€เบฎเบฑเบ”เบซเบเบฑเบ‡? เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปเบกเปˆเบ™ 681 เบชเปเบฒเบฅเบฑเบš SELECT. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ. เป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เบ—เบตเปˆเบ™เบตเป‰? เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบ•เบปเบงเป€เบฅเบเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก "Lock". เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปเบฅเบฐเบกเบฑเบ™เบšเบญเบเบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบชเบฐเบเบฑเบ”เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป‚เบซเบกเบ”เบชเบฐเป€เบžเบฒเบฐ. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เปเบกเปˆเบ™เบกเบฑเบ™เบšเบญเบเบงเปˆเบฒเบ‚เป‰เบญเบเบกเบตเปเบ–เบงเบ—เบตเปˆเบ–เบทเบเบฅเบฑเบญเบเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เป€เบ•เบฑเบเบ™เบดเบเบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เปเบ•เปˆโ€‹เบฅเบฒเบงโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบšเบญเบโ€‹เบงเปˆเบฒโ€‹เบขเบนเปˆโ€‹เปƒเบช. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบ™เบตเป‰เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบฅเบฑเบเบ™เป‰เบญเบเบ•เปเปˆเบกเบฒ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบงเปˆเบฒ lock เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบžเบงเบเป€เบฎเบปเบฒ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, lock exclusive เป€เบงเบปเป‰เบฒเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบฐเป€เบžเบฒเบฐ. เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฅเบถเบšเปเบ–เบงเบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ™เบตเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เป„เบ”เป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

SHARE EXCLUSIVE เปเบกเปˆเบ™เบเบฒเบ™เบฅเบฑเบญเบเบ—เบตเปˆเบเบฒเบงเบเบงเปˆเบฒ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบณเบชเบฑเปˆเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ (ANALYZE) เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

SHARE LOCK - เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฑเบญเบเปƒเบ™เป‚เบซเบกเบ”เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ. เปเบฅเบฐเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡ SHARE LOCK, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™. เปเบฅเบฐเบกเบฑเบ™เบฅเบฑเบญเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบฅเบฐเบงเบฒเบ‡ SHARE LOCK เปƒเบชเปˆเบกเบฑเบ™.

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, SHARE LOCK เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ„เบปเบ™เบญเบทเปˆเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป„เบ”เป‰, เปเบ•เปˆเบšเปเปˆเบกเบตเปƒเบœเบชเบฒเบกเบฒเบ”เบ”เบฑเบ”เปเบ›เบ‡เบกเบฑเบ™เป„เบ”เป‰. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เปเบ—เป‰เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ.

เบ–เป‰เบฒเบ‚เป‰เบญเบเบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบต concurrently เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบˆเบฐเบกเบตเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เบฅเบฑเบญเบเป€เบžเบฒเบฐเบงเปˆเบฒ, เบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบทเปˆ, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ”เบฑเบ”เบชเบฐเบ™เบต concurrently เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฑเบญเบ. เปเบฅเบฐเบ–เป‰เบฒเบ‚เป‰เบญเบเปƒเบŠเป‰ lock เบ›เบปเบเบเบฐเบ•เบด, เบ”เบฑเบ”เบชเบฐเบ™เบตเบ›เบปเบเบเบฐเบ•เบด, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบˆเบถเปˆเบ‡เบˆเบฐเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบ‚เบฝเบ™เบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™. เบ–เป‰เบฒเบ‚เป‰เบญเบเปƒเบŠเป‰เบ”เบฑเบ”เบชเบฐเบ™เบต concurrently, เบ‚เป‰เบญเบเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบเบฒเบ™เบฅเบฑเบญเบเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบšเปˆเบ‡เบ›เบฑเบ™เปเบ–เบงเปเบšเบšเบžเบดเป€เบชเบ” - เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ (เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡).

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบซเบผเบทเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบš, i.e., เป€เบญเบปเบฒเบเปเบฅเบฐเบ™เบตเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

lock EXCLUSIVE เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบšเปเปˆเบกเบตเปƒเบœเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป„เบ”เป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡ locks.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

ACCESS EXCLUSIVE, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบ›เบฑเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเบฐเบเบฑเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ” CLUSTER table, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ™เบตเป‰เบˆเบฐเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบšเปเปˆเบกเบตเปƒเบœเบˆเบฐเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เปเบฅเบฐเบกเบฑเบ™ locks เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เปเบ•เปˆเบเบฑเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบต.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ™เบตเป‰เปเบกเปˆเบ™เบซเบ™เป‰เบฒเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡, เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เบกเบฑเบ™ locks เปเบ–เบงเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบ”เบต.

เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฅเบฑเบญเบ, เบเปˆเบฝเบงเบเบฑเบš ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบš ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ virtual, เบเปˆเบฝเบงเบเบฑเบš ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ–เบฒเบงเบญเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบœเปˆเบฒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เบชเปˆเบงเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบ—เบตเปˆเบชเบธเบ”. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ. เปเบฅเบฐเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เบ‚เป‰เบญเบเปƒเบ™เบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ™เบตเป‰เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เป€เบˆเบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ”เบตเบ‚เบถเป‰เบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆ Postgres เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบžเบฐเบเบฒเบเบฒเบกเบชเบฐเบเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™. เบ‚เป‰เบญเบเบ„เบดเบ”เบงเปˆเบฒเบฅเบฒเบงเป€เบเบฑเปˆเบ‡เบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบชเบฐเบเบฑเบ”เบžเบฒเบเบชเปˆเบงเบ™เบ•เปˆเบฒเบ‡เป†.

เปƒเบซเป‰โ€‹เป€เบฎเบปเบฒโ€‹เบกเบฒโ€‹เป€เบšเบดเปˆเบ‡โ€‹เบšเบฒเบ‡โ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹เบชเบฐเป€เบžเบฒเบฐ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบฅเบฐเปเบ–เบงเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเปƒเบชเปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ‚เป‰เบญเบเบกเบต ExclusiveLock, Transaction ID เปเบฅเบฐ ExclusiveLock เบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เบ–เป‰เบฒเบ‚เป‰เบญเบเปƒเบชเปˆเบชเบญเบ‡เปเบ–เบงเบ•เบทเปˆเบกเบญเบตเบ? เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบฒเบกเปเบ–เบง. เปเบฅเบฐเบ‚เป‰เบญเบเปƒเบชเปˆเปเบ–เบงเบซเบ™เบถเปˆเบ‡เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบ™เบตเป‰เป€เบ›เบฑเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”. เปเบฅเบฐเบ–เป‰เบฒเบ‚เป‰เบญเบเปƒเบชเปˆเบชเบญเบ‡เปเบ–เบงเบ•เบทเปˆเบกเบญเบตเบ, เบชเบดเปˆเบ‡เบ—เบตเปˆเปเบ›เบเบ›เบฐเบซเบผเบฒเบ”เบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบฑเป‰เบ™? เบกเบตเบชเบดเปˆเบ‡เปเบ›เบเบ›เบฐเบซเบฅเบฒเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เป‰เบญเบเป„เบ”เป‰เป€เบžเบตเปˆเบกเบชเบฒเบกเปเบ–เบงเปƒเบชเปˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ™เบตเป‰, เปเบ•เปˆเบ‚เป‰เบญเบเบเบฑเบ‡เบกเบตเบชเบญเบ‡เปเบ–เบงเบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบฅเบฑเบญเบ. เปเบฅเบฐเบ™เบตเป‰เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡ Postgres.

เบซเบผเบฒเบเบ„เบปเบ™เบ„เบดเบ”เบงเปˆเบฒเบ–เป‰เบฒเบขเบนเปˆเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบˆเบปเป‰เบฒเบฅเบฑเบญเบ 100 เปเบ–เบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบˆเบปเป‰เบฒเบˆเบฐเบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡ 100 เบฅเบฒเบเบเบฒเบ™เบฅเบฑเบญเบ. เบ–เป‰เบฒเบ‚เป‰เบญเบเบšเบฅเบฑเบญเบ 1 เปเบ–เบงเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบ‚เป‰เบญเบเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™ 000 เบ„เปเบฒเบ–เบฒเบกเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เปเบฅเบฐเบ–เป‰เบฒเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบ™เบถเปˆเบ‡เบฅเป‰เบฒเบ™เบซเบผเบทเบซเบผเบฒเบเบ•เบทเป‰เป€เบžเบทเปˆเบญเบ•เบฑเบ™. เปเบ•เปˆเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เปเบ™เบงเบ™เบตเป‰, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบ”เบตเบซเบผเบฒเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบชเป‰เบฒเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเปเบ–เบงเปเบ•เปˆเบฅเบฐเบ„เบปเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบชเบฑเบšเบชเบปเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเปเบฒเบ™เบปเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ lock เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบชเบฒเบกเบฒเบ” overflow, เปเบ•เปˆ Postgres เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปเบ™เบงเบ™เบฑเป‰เบ™.

เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบ—เป‰เป†เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเป„เบฅเป‰เบ™เบตเป‰เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบงเปˆเบฒเบกเบตเบฅเบฐเบšเบปเบšเบญเบทเปˆเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™ MVCC เบ—เบตเปˆเบฅเบฑเบญเบเปเบ•เปˆเบฅเบฐเปเบ–เบง. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบฅเบฑเบญเบเบซเบผเบฒเบเบ•เบทเป‰เปเบ–เบง, Postgres เบšเปเปˆเป„เบ”เป‰เบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™เบžเบฑเบ™เบฅเป‰เบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบฅเบฑเบญเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เปเบฅเบฐเบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบตเปˆเบ”เบตเบซเบผเบฒเบเบ•เปเปˆเบœเบปเบ™เบœเบฐเบฅเบดเบ”.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบกเปˆเบ™เบซเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”? เบ‚เป‰เบญเบเบเปเบฒเบฅเบฑเบ‡เบ›เบฑเบšเบ›เบธเบ‡เปเบ–เบงเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เปเบฅเบฐเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒเบกเบฑเบ™เป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบญเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™. เบกเบฑเบ™เบฅเบฑเบญเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เปเบ•เปˆเบกเบฑเบ™เบเบฑเบ‡เบฅเบฑเบญเบเบ”เบฑเบ”เบŠเบฐเบ™เบต. เปเบฅเบฐเบฅเบฒเบงเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฑเบญเบเบ”เบฑเบ”เบŠเบฐเบ™เบตเป€เบžเบฒเบฐเบงเปˆเบฒเบกเบตเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ™เบตเป‰. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบšเปเปˆเบกเบตเปƒเบœเบ›เปˆเบฝเบ™เปเบ›เบ‡เบกเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเบเบฑเบ”เบกเบฑเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เบ–เป‰เบฒเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เบชเบญเบ‡เปเบ–เบง? เปเบฅเบฐโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป€เบซเบฑเบ™โ€‹เบงเปˆเบฒโ€‹เบฅเบฒเบงโ€‹เบ›เบฐเบžเบถเบ”โ€‹เปเบšเบšโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป€เบฎเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบชเบญเบ‡โ€‹เป€เบ—เบปเปˆเบฒโ€‹, เปเบ•เปˆโ€‹เบงเปˆเบฒโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบชเบฒเบ lockโ€‹.

เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเบชเบปเบ‡เป„เบชเบงเปˆเบฒ Postgres เป€เบฎเบฑเบ”เปเบ™เบงเบ™เบตเป‰เปเบ™เบงเปƒเบ”, เป€เบˆเบปเป‰เบฒเบˆเบฐเบ•เป‰เบญเบ‡เป„เบ”เป‰เบŸเบฑเบ‡เบเบฒเบ™เป‚เบญเป‰เบฅเบปเบกเบ‚เบญเบ‡เบ‚เป‰เบญเบเบขเบนเปˆ MVCC เป€เบžเบทเปˆเบญเบฎเบฝเบ™เบฎเบนเป‰เบงเปˆเบฒ Postgres เบžเบฒเบเปƒเบ™เปเบฒเบเป€เบ–เบดเบ‡เบชเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ—เบตเปˆเบกเบฑเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบ™เบงเปƒเบ”. เปเบฅเบฐ Postgres เบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบฅเบฑเบญเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เบกเบฑเบ™เป€เบฎเบฑเบ”เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเบเบงเปˆเบฒเปเบฅเบฐเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบถเบšเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡? เบ–เป‰เบฒเบ‚เป‰เบญเบเบฅเบถเบš, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบ–เบงเบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบ‚เป‰เบญเบเบเบฑเบ‡เบกเบตเบชเบญเบ‡เบ•เบปเบงเบชเบฐเบเบฑเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เปเบฅเบฐเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบถเบšเบžเบงเบเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบžเบงเบเบกเบฑเบ™เบเบฑเบ‡เบกเบตเบขเบนเปˆ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบชเปˆ 1 เป€เบชเบฑเป‰เบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบฅเบถเบšเบซเบผเบทเป€เบžเบตเปˆเบก 000 เป€เบชเบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบชเบฑเป‰เบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบ‚เป‰เบญเบเป€เบžเบตเปˆเบกเบซเบผเบทเบ›เปˆเบฝเบ™, เบžเบงเบเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบ‚เบฝเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเบžเบฒเบเปƒเบ™เบŠเบธเบ”เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡. เปเบฅเบฐเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฒเบเป€เบงเบปเป‰เบฒเบ‚เบญเบ‡ MVCC เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”. เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบฅเบฑเบญเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบฅเบฑเบญเบเบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบฅเบฐเบ—เปˆเบฒเบ™เบšเปเปˆเป€เบซเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเปเบ–เบงเปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบกเปˆเบ™เบซเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡?

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ–เป‰เบฒเบ‚เป‰เบญเบเบ„เบฅเบดเบ refresh, เบ‚เป‰เบญเบเบกเบตเบชเบญเบ‡เปเบ–เบงเบ–เบทเบเบฅเบฑเบญเบ. เปเบฅเบฐเบ–เป‰เบฒเบ‚เป‰เบญเบเป€เบฅเบทเบญเบเบžเบงเบเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบ„เบฅเบดเบเปƒเบชเปˆ "เบญเบฑเบšเป€เบ”เบ”เบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡," เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบเบฑเบ‡เบกเบตเบชเบญเบ‡เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบชเป‰เบฒเบ‡เบšเบฑเบ™เบ—เบถเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเปเบ–เบงเปเบ•เปˆเบฅเบฐเบ„เบปเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบซเบผเบธเบ”เบฅเบปเบ‡, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›. เปเบฅเบฐโ€‹เป€เบฎเบปเบฒโ€‹เบญเบฒเบ”โ€‹เบžเบปเบšโ€‹เบ•เบปเบงโ€‹เป€เบญเบ‡โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบชเบฐโ€‹เบžเบฒเบšโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบžเปโ€‹เปƒเบˆ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบชเบดเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเปเบšเปˆเบ‡เบ›เบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบ—เบฑเบ‡เบซเบกเบปเบ” 30 เป€เบ—เบทเปˆเบญ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบžเบงเบเป€เบฎเบปเบฒเบŸเบทเป‰เบ™เบŸเบนเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบฅเบถเบšเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบชเปˆเปเบ–เบงเบซเบ™เบถเปˆเบ‡เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบžเบถเบ”เบ•เบดเบเปเบฒเบญเบทเปˆเบ™เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเป€เบซเบฑเบ™เปƒเบ™ Postgres เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบซเบผเบฒเบเปเบฅเบฐเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ›เบธเบ‡เบซเบผเบทเป€เบฅเบทเบญเบ. เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™. เปเบฅเบฐเป€เบฅเบทเบญเบเบšเปเปˆเป„เบ”เป‰เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เปเบฅเบฐเบชเบดเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก. เบžเบงเบเป€เบฎเบปเบฒเบšเบญเบเบœเบนเป‰เบญเปˆเบฒเบ™เบงเปˆเบฒเบขเปˆเบฒเบ›เบดเบ”เบเบฑเป‰เบ™เบ™เบฑเบเบ‚เบฝเบ™, เปเบฅเบฐเบ™เบฑเบเบ‚เบฝเบ™เบšเปเปˆเป„เบ”เป‰เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบœเบนเป‰เบญเปˆเบฒเบ™.

เบ‚เป‰เบญเบเบˆเบฐเบชเบฐเปเบ”เบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰. เบ‚เป‰เบญเบเบˆเบฐเป€เบฅเบทเบญเบเบ”เบฝเบงเบ™เบตเป‰. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ” INSERT. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡ - 694. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡ ID เบ‚เบญเบ‡เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบŠเบเบ™เบตเป‰. เปเบฅเบฐเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ–เป‰เบฒเบ‚เป‰เบญเบเป€เบšเบดเปˆเบ‡ backend ID เบ‚เบญเบ‡เบ‚เป‰เบญเบเบ”เบฝเบงเบ™เบตเป‰, เบกเบฑเบ™เปเบกเปˆเบ™ 695.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™ 695 เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ–เป‰เบฒเบ‚เป‰เบญเบเบ›เบฑเบšเบ›เบธเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰, เบ‚เป‰เบญเบเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, 695 เปเบกเปˆเบ™เบเบฒเบ™เบฅเบฑเบญเบเบชเบฐเป€เบžเบฒเบฐ, เปเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบกเบตเบžเบถเบ”เบ•เบดเบเปเบฒเบ”เบฝเบงเบเบฑเบ™, เปเบ•เปˆเบšเปเปˆเบกเบตเบ‚เปเป‰เบ‚เบฑเบ”เปเบเปˆเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เป€เบŠเบดเปˆเบ‡เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบด.

เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒเบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบกเบฑเบ™เปเบกเปˆเบ™ ShareLock, เปเบฅเบฐเบขเบนเปˆเบ”เป‰เบฒเบ™เบฅเบธเปˆเบกเบกเบฑเบ™เปเบกเปˆเบ™ ExclusiveLock. เปเบฅเบฐเบ—เบฑเบ‡เบชเบญเบ‡เบ—เบธเบฅเบฐเบเปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบญเบญเบ.

เปเบฅเบฐเป€เบˆเบปเป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบŸเบฑเบ‡เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบ‚เป‰เบญเบเบขเบนเปˆ MVCC เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเบดเบ—เบตเบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, i.e. เป€เบฎเบฑเบ” SELECT เปเบฅเบฐ UPDATE เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบกเบฒเบฃเบตเป€เบŠเบฑเบ” เปเบฅเบฐเป€เบฎเบฑเบ”เบญเบตเบเบญเบฑเบ™เปœเบถเปˆเบ‡เบเบฒเบ™เบ”เบณเป€เบ™เบตเบ™เบเบฒเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบžเบฐเบเบฒเบเบฒเบกเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบชเบญเบ‡เบ„เบฑเป‰เบ‡เบžเป‰เบญเบกเบเบฑเบ™เปƒเบ™เปเบ–เบงเบ”เบฝเบงเบเบฑเบ™, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบšเบฅเบฑเบญเบ. เปเบฅเบฐเบˆเบทเปˆ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบœเบนเป‰เบญเปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ™เบฑเบเบ‚เบฝเบ™, เปเบฅเบฐเบ™เบฑเบเบ‚เบฝเบ™เบšเปเปˆเป„เบ”เป‰เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบœเบนเป‰เบญเปˆเบฒเบ™, เปเบ•เปˆเบ™เบฑเบเบ‚เบฝเบ™เบ„เบปเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ™เบฑเบเบ‚เบฝเบ™เบญเบทเปˆเบ™. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบกเบตเบชเบญเบ‡เบ„เบปเบ™เบ›เบฑเบšเบ›เบธเบ‡เปเบ–เบงเบ”เบฝเบงเบเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™. เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ™เบฑเป‰เบ™เบชเปเบฒเป€เบฅเบฑเบ”.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เบ‚เป‰เบญเบเบˆเบฐเป€เบšเบดเปˆเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ Lockdemo. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เปเบ–เบงเบซเบ™เบถเปˆเบ‡. เบ•เปเปˆเบ—เบธเบฅเบฐเบเบณ 698.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฑเบšเบ›เบธเบ‡เบ™เบตเป‰เป€เบ›เบฑเบ™ 2. 699 เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”. เปเบฅเบฐเบกเบฑเบ™เบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบซเบผเบทเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบเบฑเบ‡เบ„เป‰เบฒเบ‡เบขเบนเปˆเปเบฅเบฐเบฅเปเบ–เป‰เบฒเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบขเบทเบ™เบขเบฑเบ™เบซเบผเบทเบเบปเบเป€เบฅเบตเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบ•เปˆเป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบญเบทเปˆเบ™ - 2/51 เปเบกเปˆเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. 3/112 เปเบกเปˆเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเบชเบญเบ‡เบ—เบตเปˆเบกเบฒเบˆเบฒเบเบ—เบฒเบ‡เป€เบ—เบดเบ‡เบ—เบตเปˆเบ›เปˆเบฝเบ™เบ„เปˆเบฒเบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™ 3. เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™, เป€เบ—เบดเบ‡เป„เบ”เป‰เบฅเบฑเบญเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™ 699. เปเบ•เปˆ 3/112 เบšเปเปˆเป„เบ”เป‰เปƒเบซเป‰ lock. เบ–เบฑเบ™ Lock_mode เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบฅเปเบ–เป‰เบฒเบขเบนเปˆ. เบกเบฑเบ™เบ„เบฒเบ”เบงเปˆเบฒ 699. เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบšเปˆเบญเบ™เบ—เบตเปˆ 699 เปเบกเปˆเบ™, เบกเบฑเบ™เบชเบนเบ‡เบเบงเปˆเบฒ. เปเบฅเบฐเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เป„เบ”เป‰เป€เบฎเบฑเบ”เบซเบเบฑเบ‡? เบ™เบฒเบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เบฅเบฑเบญเบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆ Postgres เป€เบฎเบฑเบ”เบกเบฑเบ™. เบกเบฑเบ™เบšเบฅเบฑเบญเบ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเปเบ–เป‰เบฒเบœเบนเป‰เปƒเบ”เบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบขเบทเบ™เบขเบฑเบ™เบซเบผเบทเบเบปเบเป€เบฅเบตเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบกเบตเบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบเบฑเบ‡เบ„เป‰เบฒเบ‡เบขเบนเปˆ. เปเบฅเบฐเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป€เบชเบฑเป‰เบ™เปเบ›เบ.

เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบŠเป‰เบฒเบเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™ ID เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปƒเบ™เบ–เบฑเบ™เบ—เบตเบชเบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ virtual เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเปƒเบ™เบ—เบตเบชเบฒเบกเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™ lock_type. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเปเบ™เบงเปƒเบ”? เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบงเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เป€เบงเบปเป‰เบฒเปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบšเบฅเบฑเบญเบ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ. เปเบ•เปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเปเบ–เบงเบ—เบฑเบ‡เบซเบกเบปเบ”เบขเบนเปˆเบ—เบฒเบ‡เบฅเบธเปˆเบกเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบกเบตเบชเบญเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ locks เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เบกเบตเบเบฒเบ™เบฅเบฑเบญเบเบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบตเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เบšเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ›เบดเบ”เบเบฑเป‰เบ™เบ”เป‰เบงเบเบ•เบปเบงเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เปเบ–เบงเบ—เปเบฒเบญเบดเบ”เบซเบผเบทเบขเบนเปˆเบฅเบธเปˆเบกเบชเบธเบ”, เบšเปˆเบญเบ™เบ—เบตเปˆเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบขเบนเปˆ, เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบฅเปเบ–เป‰เบฒ 699 เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™.

เบ‚เป‰เบญเบเบˆเบฐเป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบชเบญเบ‡เบชเบดเปˆเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบžเป‰เบญเบกเป†เบเบฑเบ™. เบ—เปˆเบฒเบ™เบเบณเบฅเบฑเบ‡เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบฅเบฑเบญเบ ID เบ—เบธเบฅเบฐเบเบณเบขเบนเปˆเปƒเบ™เปเบ–เบงเบ—เบณเบญเบดเบ”เบ—เบตเปˆเบฅเบฑเบญเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡. เปเบฅเบฐเบ™เบฒเบ‡เบ•เบฑเบ™เบ•เบปเบ™เป€เบญเบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบ›เบฐเบŠเบฒเบŠเบปเบ™เบฅเปเบ–เป‰เบฒ.

เบ–เป‰เบฒเป€เบšเบดเปˆเบ‡เปƒเบ™เปเบ–เบงเบ—เบต 6, เบกเบฑเบ™เปเบกเปˆเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป€เบชเบฑเป‰เบ™เบ—เปเบฒเบญเบดเบ”. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ 699 เบ–เบทเบเบšเบฅเบฑเบญเบ. 700 เปเบกเปˆเบ™เบเบฑเบ‡เบฅเบฑเบญเบเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบขเบนเปˆเปƒเบ™เปเบ–เบงเบฅเบธเปˆเบกเบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบฅเปเบ–เป‰เบฒ 699 เป€เบžเบทเปˆเบญเบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเปƒเบ™ lock_type, tuple เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบ•เบปเบงเป€เบฅเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒ 0/10. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบฒ, เปเบฅเบฐเบเบฑเบ‡เป€เบ›เบฑเบ™เบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบ‚เบญเบ‡เปเบ–เบงเบชเบฐเป€เบžเบฒเบฐเบ™เบตเป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบงเปˆเบฒเบกเบฑเบ™เบเบฒเบเป€เบ›เบฑเบ™ 0/11 เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบ›เบฑเบšเบ›เบธเบ‡.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบ•เปˆเปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เปเบฅเป‰เบงเบกเบฑเบ™เปเบกเปˆเบ™ 0/10, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบตเบเบฒเบ™เบฅเปเบ–เป‰เบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ™เบตเป‰. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบŠเบธเบ”เบ—เบตเปˆเบ‚เป‰เบญเบเบฅเปเบ–เป‰เบฒเบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบขเบทเบ™เบขเบฑเบ™เบกเบฑเบ™เปเบฅเบฐเบเบปเบ” commit, เปเบฅเบฐเป€เบกเบทเปˆเบญเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบชเปเบฒเป€เบฅเบฑเบ”, เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ 700 เปเบกเปˆเบ™เบเบฒเบ™เบฅเบฑเบญเบเบญเบฑเบ™เบ”เบฝเบง, เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบฅเปเบ–เป‰เบฒเบœเบนเป‰เบญเบทเปˆเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒ. เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบฅเปเบ–เป‰เบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบชเปเบฒเป€เบฅเบฑเบ”. เป€เบกเบทเปˆเบญ 699 เปเบปเบ”, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบฅเปเบ–เป‰เบฒเบซเบเบฑเบ‡เบญเบตเบเบ•เปเปˆเป„เบ›. เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ 700 เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบต, เบกเบฑเบ™เบกเบต locks เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบดเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบ—เบฑเบ”เบชเบฐเบ™เบฐเบญเบทเปˆเบ™, เป€เบŠเบดเปˆเบ‡เป€เบงเบฅเบฒเบ™เบตเป‰เบˆเบฐเบชเบฐเบซเบ™เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ”เป‰เบงเบเบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™. เบ‚เป‰เบญเบเบšเปเปˆเบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ™เบตเป‰. เปเบ•เปˆเบ™เบตเป‰เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒเบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบฑเบ”เบชเบฐเบ™เบฐ recursive เบ—เบตเปˆเบเบฑเบ‡เบกเบตเบžเบฒเบเบญเบทเปˆเบ™. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เป€เบญเบปเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบเบฑเบšเบ„เบทเบ™เบกเบฒเบฎเปˆเบงเบกเบเบฑเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เปƒเบซเป‰เปƒเบŠเป‰เบญเบฑเบ™เบ™เบตเป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบชเบฒเบกเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบžเป‰เบญเบกเป†เบเบฑเบ™เปเบฅเบฐเป€เบงเบปเป‰เบฒเบงเปˆเบฒเปเบ–เบงเบ™เบตเป‰เปเบกเปˆเบ™เบชเบฒเบก. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เปˆเบฝเบ™ 3 เบซเบฒ 4.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡ 4. เปเบฅเบฐ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ 702.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบˆเบฐเบ›เปˆเบฝเบ™ 4 เบซเบฒ 5. เปเบฅเบฐ 5 เบซเบฒ 6, เปเบฅเบฐ 6 เบซเบฒ 7. เปเบฅเบฐเบ‚เป‰เบญเบเบˆเบฐเปเบ–เบงเบˆเปเบฒเบ™เบงเบ™เบ„เบปเบ™เบ—เบตเปˆเบˆเบฐเบฅเปเบ–เป‰เบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบซเบ™เบถเปˆเบ‡เบ™เบตเป‰เบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡. เปเบ–เบงเบ—เบณเบญเบดเบ”เปเบกเปˆเบ™เบซเบเบฑเบ‡? เบ™เบตเป‰เปเบกเปˆเบ™ 702. เบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฐเบซเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเบ™เบตเป‰เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™. เปเบกเปˆเบ™เบซเบเบฑเบ‡เบ‚เบฝเบ™เบขเบนเปˆเปƒเบ™เบ„เปเบฅเปเบฒเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบ? เบ‚เป‰เบญเบเบกเบตเป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ f. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบเบ—เบตเปˆ (5, 6, 7) เบšเปเปˆเบชเบฒเบกเบฒเบ”เบญเบฐเบ™เบธเบกเบฑเบ”เป„เบ”เป‰เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบฅเปเบ–เป‰เบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ ID 702 เบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡. เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เบ›เบดเบ”เบเบฑเป‰เบ™ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ. เปเบฅเบฐเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ 5 เบฅเบฑเบญเบ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ.

เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡ 704, เบขเบนเปˆเบ—เบตเปˆ 705, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบ–เบทเบเบ‚เบฝเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบกเบตเบซเบเบฑเบ‡เป€เบเบตเบ”เบ‚เบทเป‰เบ™. เบžเบงเบเป€เบ‚เบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ‚เบฝเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบกเบตเบซเบเบฑเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเป„เบ›เบ™เบญเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบฅเปเบ–เป‰เบฒเปƒเบซเป‰เบ„เบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบฎเบนเบšเปเบฅเบฐเบ•เบทเปˆเบ™เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเบกเบตเป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เปเบ–เบง.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบ„เป‰เบฒเบเบ„เบท. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบเปเบฒเบฅเบฑเบ‡เบฅเปเบ–เป‰เบฒเบชเบฒเบเบ—เบต 12.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบซเบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบ™เบตเป‰เปเบกเปˆเบ™ 0/12.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบกเบทเปˆเบญเบ—เบธเบฅเบฐเบเปเบฒเบ—เปเบฒเบญเบดเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบญเบฐเบ™เบธเบกเบฑเบ”, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ—เบตเปˆเบ™เบตเป‰เบงเบดเบ—เบตเบเบฒเบ™เบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เป€เบฎเบฑเบ”เบงเบฝเบ. เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡. เบžเบงเบเป€เบ‚เบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบเบฒเบเป€เบ›เบฑเบ™เบชเบฐเบญเบฒเบ”. เปเบฅเบฐเบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบžเบงเบเป€เบ‚เบปเบฒเบเบฑเบ‡เบฅเปเบ–เป‰เบฒเบขเบนเปˆ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™. 702 เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒ. เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ 703 เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฅเบฑเบญเบเปเบ–เบงเบ™เบตเป‰, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ 704 เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบฅเปเบ–เป‰เบฒ 703 เบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒ. เปเบฅเบฐ 705 เบเปเบฒเบฅเบฑเบ‡เบฅเปเบ–เป‰เบฒเบ™เบตเป‰เบ„เบทเบเบฑเบ™. เปเบฅเบฐโ€‹เป€เบกเบทเปˆเบญโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบฑเบ‡โ€‹เปเบปเบ”โ€‹เบ™เบตเป‰โ€‹เบชเบณโ€‹เป€เบฅเบฑเบ”โ€‹เปเบฅเป‰เบง, เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบเปโ€‹เบ—เบณโ€‹เบ„เบงเบฒเบกโ€‹เบชเบฐโ€‹เบญเบฒเบ”. เปเบฅเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบˆเบฐเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบ—เบธเบเบ„เบปเบ™เปเบกเปˆเบ™ line up. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ•เบดเบ”เบ‚เบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เบธเบเบ„เบปเบ™เบฅเปเบ–เป‰เบฒเบฅเบปเบ”เบ—เปเบฒเบญเบดเบ”. เบฅเบปเบ”เบ„เบฑเบ™เบ—เบณเบญเบดเบ”เบขเบธเบ” เปเบฅเบฐ เบ—เบธเบเบ„เบปเบ™เบ‚เบถเป‰เบ™เปเบ–เบงเป€เบ›เบฑเบ™เปเบ–เบงเบเบฒเบง. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบฅเบปเบ”เบ•เปเปˆเป„เบ›เบชเบฒเบกเบฒเบ”เบ‚เบฑเบšเบฅเบปเบ”เป„เบ›เบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒเปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ–เป‰เบฒเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบšเปเปˆเบชเบฑเบšเบชเบปเบ™เบžเบฝเบ‡เบžเปเบเบฑเบšเป€เบˆเบปเป‰เบฒ, เบ”เบฝเบงเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบงเบปเป‰เบฒเบเบฑเบšเป€เบˆเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบดเบ”เบ›เบฐเบ•เบน. เบ‚เป‰เบญเบเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบ„เบปเบ™เปƒเบ”เป„เบ”เป‰เบžเบปเบšเบเบฑเบšเบžเบงเบเบกเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบ—เบปเปˆเบงเป„เบ›เบžเปเบชเบปเบกเบ„เบงเบ™เปƒเบ™เบฅเบฐเบšเบปเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เปเบ•เปˆเบเบฒเบ™เบขเบธเบ”เบŠเบฐเบ‡เบฑเบเปเบกเปˆเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบซเบ™เบถเปˆเบ‡เบฅเปเบ–เป‰เบฒเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบญเบทเปˆเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡. เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบญเบทเปˆเบ™เบเปเบฒเบฅเบฑเบ‡เบฅเปเบ–เป‰เบฒเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡.

เปเบฅเบฐ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒ Ivan เป€เบงเบปเป‰เบฒเบงเปˆเบฒ: "เปƒเบซเป‰เบ‚เป‰เบญเบเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡," เปเบฅเบฐเบ‚เป‰เบญเบเป€เบงเบปเป‰เบฒเบงเปˆเบฒ: "เบšเปเปˆ, เบ‚เป‰เบญเบเบˆเบฐเปƒเบซเป‰เบกเบฑเบ™เบเบฑเบšเป€เบˆเบปเป‰เบฒเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบญเบปเบฒเบชเบดเปˆเบ‡เบญเบทเปˆเบ™เปƒเบซเป‰เบ‚เป‰เบญเบ." เปเบฅเบฐเบฅเบฒเบงเป€เบงเบปเป‰เบฒเบงเปˆเบฒ, "เบšเปเปˆ, เบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเป€เบญเบปเบฒเบกเบฑเบ™เปƒเบซเป‰เป€เบˆเบปเป‰เบฒเบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเบšเปเปˆเปƒเบซเป‰เบ‚เป‰เบญเบ." เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™ deadlock. เบ‚เป‰เบญเบเปเบ™เปˆเปƒเบˆเบงเปˆเบฒ Ivan เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เปเบ™เบงเบ™เบตเป‰, เปเบ•เปˆเป€เบˆเบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ„เบงเบฒเบกเบซเบกเบฒเบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบญเบ‡เบ„เบปเบ™เบ—เบตเปˆเบขเบฒเบเป„เบ”เป‰เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเปƒเบซเป‰เบกเบฑเบ™เป„เบ›เบˆเบปเบ™เบเบงเปˆเบฒเบ„เบปเบ™เบญเบทเปˆเบ™เบˆเบฐเปƒเบซเป‰เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™. เปเบฅเบฐเบšเปเปˆเบกเบตเบเบฒเบ™เปเบเป‰เป„เบ‚.

เปเบฅเบฐเบชเปเบฒเบ„เบฑเบ™, เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบงเบ”เบžเบปเบšเบ™เบตเป‰. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเบถเบšเบซเบผเบทเบ›เบดเบ”เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเบกเบฑเบ™เบˆเบฐเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบ•เบฐเบซเบผเบญเบ”เป„เบ›. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™. เปเบฅเบฐเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™, เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป„เบ”เป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเบญเบ‡ deadlocks. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบชเปˆ 50 เปเบฅเบฐ 80. เปƒเบ™เปเบ–เบงเบ—เปเบฒเบญเบดเบ”, เบ‚เป‰เบญเบเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบˆเบฒเบ 50 เบซเบฒ 50. เบ‚เป‰เบญเบเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเป€เบฅเบเบ—เบธเบฅเบฐเบเปเบฒ 710.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบˆเบฐเบ›เปˆเบฝเบ™ 80 เบซเบฒ 81, เปเบฅเบฐ 50 เบซเบฒ 51.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐ. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ 710 เบกเบตเปเบ–เบงเบ—เบตเปˆเบ–เบทเบเบšเบฅเบฑเบญเบ, เปเบฅเบฐ 711 เปเบกเปˆเบ™เบฅเปเบ–เป‰เบฒเบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ™เบตเป‰เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบ›เบฑเบšเบ›เบธเบ‡. 710 เป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบŠเบธเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปเบฅเบฐ 711 เบฅเปเบ–เป‰เบฒ 710 เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบชเปเบฒเป€เบฅเบฑเบ”.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐโ€‹เบกเบฑเบ™โ€‹เบเบฑเบ‡โ€‹เป€เบงเบปเป‰เบฒโ€‹เบงเปˆเบฒโ€‹เปƒเบ™โ€‹เปเบ–เบงโ€‹เปƒเบ”โ€‹เบเบฒเบ™โ€‹เบขเบธเบ”โ€‹เป€เบŠเบปเบฒโ€‹เบเบฒเบ™โ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™โ€‹. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เป€เบฅเบตเปˆเบกเปเบ›เบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบ›เบฑเบšเบ›เบธเบ‡ 80 เป€เบ›เบฑเบ™ 80.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆ deadlocks เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. 710 เปเบกเปˆเบ™เบฅเปเบ–เป‰เบฒเบ„เปเบฒเบ•เบญเบšเบˆเบฒเบ 711, เปเบฅเบฐ 711 เปเบกเปˆเบ™เบฅเปเบ–เป‰เบฒ 710. เปเบฅเบฐเบ™เบตเป‰เบˆเบฐเบšเปเปˆเบชเบดเป‰เบ™เบชเบธเบ”เบ”เบต. เปเบฅเบฐเบšเปเปˆเบกเบตเบ—เบฒเบ‡เบญเบญเบเบˆเบฒเบเบ™เบตเป‰. เปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเบˆเบฐเบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบเบฒเบ™เบ•เบญเบšเป‚เบ•เป‰เบˆเบฒเบเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบˆเบฐเบŠเบฑเบเบŠเป‰เบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ™เบฑเป‰เบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐ Postgres เบกเบตเบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เป€เบกเบทเปˆเบญเบชเบดเปˆเบ‡เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบทเป‰เบ™. เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ™เบตเป‰. เปเบฅเบฐเบˆเบฒเบเบ™เบตเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบฅเบฐเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเปเบฒเบฅเบฑเบ‡เบฅเปเบ–เป‰เบฒ SHARE LOCK เบˆเบฒเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบญเบทเปˆเบ™, i.e., เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบชเบฐเบเบฑเบ”เป‚เบ”เบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™ 711. เปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบฅเปเบ–เป‰เบฒเปƒเบซเป‰ SHARE LOCK เบˆเบฐเบ–เบทเบเบกเบญเบšเปƒเบซเป‰เบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง เปเบฅเบฐเบ–เบทเบเบšเบฅเบฑเบญเบเป‚เบ”เบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบขเบธเบ”เบŠเบฐเบ‡เบฑเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบกเบตเบเบฒเบ™เบ›เบดเบ”เบเบฑเป‰เบ™เบชเบฒเบกเบ—เบฒเบ‡เบšเป? เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰โ€‹เบšเปเปˆ? เปเบกเปˆเบ™เปเบฅเป‰เบง.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบžเบงเบเป€เบฎเบปเบฒเปƒเบชเปˆเบ•เบปเบงเป€เบฅเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™ 40 เบซเบฒ 40, เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™ 60 เบซเบฒ 61, 80 เบซเบฒ 81.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™ 80 เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ boom!

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐ 714 เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบฅเปเบ–เป‰เบฒ 715. 716th เปเบกเปˆเบ™เบฅเปเบ–เป‰เบฒ 715th. เปเบฅเบฐเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบšเปเปˆเบกเบตเบชเบญเบ‡เบ„เบปเบ™เบญเบตเบเปเบฅเป‰เบง, เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบกเบตเบชเบฒเบกเบ„เบปเบ™เปเบฅเป‰เบง. เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบˆเบฒเบเป€เบˆเบปเป‰เบฒ, เบ„เบปเบ™เบ™เบตเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบˆเบฒเบเบšเบธเบเบ„เบปเบ™เบ—เบตเบชเบฒเบก, เปเบฅเบฐเบšเบธเบเบ„เบปเบ™เบ—เบตเปˆเบชเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบˆเบฒเบเบ‚เป‰เบญเบ. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบชเบดเป‰เบ™เบชเบธเบ”เบเบฒเบ™เบฅเปเบ–เป‰เบฒเบชเบฒเบกเบ—เบฒเบ‡เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบฅเปเบ–เป‰เบฒเปƒเบซเป‰เบ„เบปเบ™เบญเบทเปˆเบ™เป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐ Postgres เบฎเบนเป‰เบงเปˆเบฒเบกเบฑเบ™เป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เปเบ–เบงเปƒเบ”. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบˆเบฐเปƒเบซเป‰เบ—เปˆเบฒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰, เป€เบŠเบดเปˆเบ‡เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบชเบฒเบก inputs เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™. เปเบฅเบฐเบšเปเปˆเบกเบตเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆ 20 เบฅเบฒเบเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบšเบฑเบ™เบซเบฒเบ•เปเปˆเป„เบ›เปเบกเปˆเบ™ serializable.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ–เป‰เบฒ lock serializable เบžเบดเป€เบชเบ”.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒ 719. เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบกเบฑเบ™เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ›เบปเบเบเบฐเบ•เบด.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบฅเบดเบเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบธเบฅเบฐเบเปเบฒเบˆเบฒเบ serializable.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ—เปˆเบฒเบ™เบฎเบฑเบšเบฎเบนเป‰เบงเปˆเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบกเบตเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡ SA lock - เบกเบฑเบ™เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ serializable.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ›เบฐเป€เบžเบ”เปƒเบซเบกเปˆเบ‚เบญเบ‡ lock เป€เบญเบตเป‰เบ™เบงเปˆเบฒ SARieadLock, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™ lock serial เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ serials.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบชเปˆเบ”เบฑเบ”เบŠเบฐเบ™เบตเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ”เบฑเบ”เบŠเบฐเบ™เบตเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบชเบฐเบ™เบฑเป‰เบ™เบ–เป‰เบฒเบ‚เป‰เบญเบเปƒเบชเปˆเป€เบฅเบ 2 เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เบ‚เป‰เบญเบเบกเบต 2. เปเบ•เปˆเบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”, เบ‚เป‰เบญเบเปƒเบชเปˆเบญเบตเบ 2 เป‚เบ•. เปเบฅเบฐเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒ 721 เบกเบต lock เบชเบฐเป€เบžเบฒเบฐ. เปเบ•เปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ 722 เบเปเบฒเบฅเบฑเบ‡เบฅเปเบ–เป‰เบฒ 721 เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบชเปˆ 2 เบˆเบปเบ™เบเปˆเบงเบฒเบกเบฑเบ™เบฎเบนเป‰เบงเปˆเบฒเบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เบเบฑเบš 721.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบเปˆเบญเบ.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบต 723.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบšเบฑเบ™เบ—เบถเบเบˆเบธเบ”เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ›เบฑเบšเบ›เบธเบ‡เบกเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปƒเบซเบกเปˆ. เบ™เบตเป‰เปเบกเปˆเบ™เบฎเบนเบšเปเบšเบšเบญเบทเปˆเบ™เบ‚เบญเบ‡เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบฅเบฐเบงเบฑเบ‡. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เบ„เบทเบ™เบญเบฑเบ™เบ™เบตเป‰, ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบˆเบฐเบซเบฒเบเป„เบ›. 724 เบเปเบฒเบฅเบฑเบ‡เบญเบญเบเป„เบ›. เปเบ•เปˆเบ”เบฝเบงเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบต 725.

เบชเบฐเบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบžเบฐเบเบฒเบเบฒเบกเป€เบฎเบฑเบ”เบซเบเบฑเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰? เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบžเบฐเบเบฒเบเบฒเบกเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡ locks เบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบžเบปเบšเป€เบซเบฑเบ™: เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™ locks serializable เบซเบผเบท SAVEPOINT, เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡ locks เบ—เบตเปˆเบˆเบฐเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ lock เป„เบ”เป‰.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡ locks explicit (explicit), เป€เบŠเบดเปˆเบ‡เบกเบต pg_advisory_lock.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบงเปˆเบฒเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเบเบฑเบ”เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เป€เบ›เบฑเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ. เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบกเบฑเบ™เป€เบงเบปเป‰เบฒเบงเปˆเบฒ "เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ" เป€เบ›เบฑเบ™เบชเบตเปเบ”เบ‡. เปเบฅเบฐเบ—เปˆเบฒเบ™เบžเป‰เบญเบกเบเบฑเบ™เบชเบฒเบกเบฒเบ”เบ›เบดเบ”เบเบฑเป‰เบ™เปเบšเบšเบ™เบตเป‰เบ”เป‰เบงเบ pg_advisory_unlock.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบชเบฐเบซเบผเบธเบš, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบ•เบทเปˆเบ™เป€เบ•เบฑเป‰เบ™. เบ‚เป‰เบญเบเบˆเบฐเบชเป‰เบฒเบ‡เบกเบธเบกเป€เบšเบดเปˆเบ‡เบญเบทเปˆเบ™. เปเบ•เปˆเบ‚เป‰เบญเบเบˆเบฐเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ pg_locks เบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ pg_stat_activity. เปเบฅเบฐเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ‚เป‰เบญเบเบˆเบถเปˆเบ‡เบขเบฒเบเป€เบฎเบฑเบ”เบญเบฑเบ™เบ™เบตเป‰? เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบšเบดเปˆเบ‡เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ›เบฐเบˆเบธเบšเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบฅเบฑเบญเบเบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบฅเปเบ–เป‰เบฒ. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบฅเบฑเบญเบเปเบฅเบฐเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบชเบญเบšเบ–เบฒเบก.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡ pg_stat_view.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ›เบฑเบšเบ›เบธเบ‡เปเบ–เบงเป‚เบ”เบเบซเบ™เบถเปˆเบ‡. เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™ 724. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ›เบฑเบšเบ›เบธเบ‡เปเบ–เบงเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบฑเบ™เบชเบฒเบก. เปเบฅเบฐเป€เบˆเบปเป‰เบฒเป€เบซเบฑเบ™เบซเบเบฑเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰? เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป, i. e. เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบ–เบฑเบ™เบŠเป‰เบฒเบ. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบ‚เบงเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบชเป‰เบฒเบ‡. เปเบฅเบฐเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™เป€เบžเบทเปˆเบญเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเปเบ•เปˆเบฅเบฐเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ—เบธเบเป†เบ„เบฑเป‰เบ‡เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบกเบฑเบ™เบซเบผเบทเบšเปเปˆ. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เบกเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ.

เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบเปเบกเปˆเบ™ pg_blocking_pids. เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบ„เบตเบเป„เบ”เป‰เบเบดเบ™เบเปˆเบฝเบงเบเบฑเบšเบ™เบฒเบ‡. เบฅเบฒเบงโ€‹เบเปเบฒโ€‹เบฅเบฑเบ‡โ€‹เป€เบฎเบฑเบ”โ€‹เบซเบเบฑเบ‡? เบกเบฑเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบšเบญเบเป„เบ”เป‰เบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ™เบตเป‰ 11740 ID เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบ—เบตเปˆเบกเบฑเบ™เบฅเปเบ–เป‰เบฒ. เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒ 11740 เปเบกเปˆเบ™เบฅเปเบ–เป‰เบฒ 724. เปเบฅเบฐ 724 เปเบกเปˆเบ™เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”. เปเบฅเบฐ 11306 เปเบกเปˆเบ™ ID เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบœเปˆเบฒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบฅเบฑเบญเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เปเบฅเบฐเบ‚เป‰เบญเบเบฎเบนเป‰เบงเปˆเบฒเบกเบฑเบ™เบชเบฑเบšเบชเบปเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ, เปเบ•เปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเปƒเบˆเบกเบฑเบ™. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบˆเบฐเบœเปˆเบฒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบฅเบฑเบญเบเบ™เบตเป‰เปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบกเบŠเบญเบเบซเบฒเบšเปˆเบญเบ™เบ—เบตเปˆ ID เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบตเป‰เบ–เบทเบเบกเบญเบšเปƒเบซเป‰เบฅเบฑเบญเบเบ—เบตเปˆเบกเบฑเบ™เบฅเปเบ–เป‰เบฒเบขเบนเปˆ. เปเบฅเบฐเบกเบฑเบ™เบเบฑเบ‡เบžเบฐเบเบฒเบเบฒเบกเบ„เบดเบ”เบญเบญเบเบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบ” ID เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเบฅเปเบ–เป‰เบฒเบเบฒเบ™เบฅเบฑเบญเบเบกเบต. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰ pg_blocking_pids.

เปเบฅเบฐเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป€เบžเบตเปˆเบกเบ™เบตเป‰เปƒเบ™เบฎเบธเปˆเบ™ 9.6, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰เบกเบตเบžเบฝเบ‡เปเบ•เปˆ 5 เบ›เบตเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™, เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบ. เปเบฅเบฐเบ”เบฝเบงเบเบฑเบ™เปƒเบŠเป‰เบเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเบชเบญเบ‡. เบกเบฑเบ™เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบขเบฒเบเป€เบงเบปเป‰เบฒเบเบฑเบšเป€เบˆเบปเป‰เบฒ. เปเบฅเบฐเบ•เบฒเบกเบ—เบตเปˆเบ‚เป‰เบญเบเบ„เบฒเบ”เป„เบงเป‰, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เป€เบงเบฅเบฒเบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบตเบชเบฐเป„เบฅเป‰เบซเบผเบฒเบ. เปเบฅเบฐเบชเบฐเป„เบฅเป‰เปเบกเปˆเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เบฒเบงเป‚เบซเบผเบ”. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบ‚เปเบ‚เบญเบšเปƒเบˆเบ—เปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบ‚เป‰เบญเบเปเบ™เปˆเปƒเบˆเบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบˆเบฐเป€เบžเบตเบ”เป€เบžเบตเบ™เบเบฑเบšเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบก, เบ‚เบญเบšเปƒเบˆเบซเบผเบฒเบเป†!

เบ„เปเบฒเบ–เบฒเบก:

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบ‚เป‰เบญเบเบžเบฐเบเบฒเบเบฒเบกเบ›เบฑเบšเบ›เบธเบ‡เปเบ–เบง, เปเบฅเบฐเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบžเบฐเบเบฒเบเบฒเบกเบฅเบถเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”. เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆ, เบ„เบงเบ™เบˆเบฐเบกเบตเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบฅเบฑเบญเบเบ„เบงเบฒเบกเบ•เบฑเป‰เบ‡เปƒเบˆ. เบกเบตเบชเบดเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบขเบนเปˆเปƒเบ™ Postgres เบšเป?

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปƒเบซเป‰เบเบฑเบšเบ„เบทเบ™เบชเบนเปˆเบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบซเบเบฑเบ‡, เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ” SELECT, เบžเบงเบเป€เบฎเบปเบฒเบญเบญเบ AccessShareLock. เปเบฅเบฐเบ™เบตเป‰เบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เปเบ–เบงเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบซเบผเบทเบฅเบถเบšเปเบ–เบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบœเบนเป‰เปƒเบ”เบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เบฅเบถเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบ–เบท AccessShareLock เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบซเบผเบฒเบเบเบงเปˆเบฒเปเบ–เบง. เปเบฅเบฐเป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เปเบฅเป‰เบง, เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบฅเบถเบšเบกเบฑเบ™เป„เบ”เป‰. เปเบ•เปˆเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ›เปˆเบฝเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป‚เบ”เบเบเบปเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบ‚เบปเบฒเบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰.

เปƒเบซเป‰เป€เบฎเบฑเบ”เบกเบฑเบ™เบญเบตเบเบ„เบฑเป‰เบ‡. เปƒเบซเป‰เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบฅเบถเบš. เปเบฅเบฐเบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบงเปˆเบฒเบกเบต lock เบชเบฐเป€เบžเบฒเบฐเบขเบนเปˆเปƒเบ™เปเบ–เบงเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”.

เบ™เบตเป‰เบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเป€เบ›เบฑเบ™ lock exclusive, เบชเบดเบ”?

เปเบกเปˆเบ™เปเบฅเป‰เบง, เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบกเบฑเบ™. เบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบš. เป€เบˆเบปเป‰เบฒเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบ–เป‰เบฒเบ‚เป‰เบญเบเป€เบฎเบฑเบ” SELECT เปเบฅเป‰เบงเบ‚เป‰เบญเบเบกเบต ShareExclusive เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™ Row Exclusive, เบกเบฑเบ™เบเบฒเบเป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒเบšเป? เปเบ•เปˆเป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เปเบ›เบเบ—เบตเปˆเบกเบฑเบ™เบšเปเปˆเป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒ. เบ™เบตเป‰เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบฅเบฑเบญเบ, เปเบ•เปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เป‰เบญเบเบกเบต lock เบ—เบตเปˆเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เบฅเบถเบš. เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฅเบฑเบญเบเบ™เบตเป‰เบกเบตเบญเปเบฒเบ™เบฒเบ”เบซเบผเบฒเบ, เบกเบฑเบ™เบเบฑเบ‡เบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เบฅเบถเบš. เบชเบฐเบ™เบฑเป‰เบ™เบกเบฑเบ™เบšเปเปˆเบ„เบทเบเบฑเบšเบงเปˆเบฒเบ‚เป‰เบญเบเบˆเบฐเบ‚เบถเป‰เบ™เป„เบ›. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบฑเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบกเบฑเบ™เป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเป€เบเบตเบ™เป„เบ›, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเบเบปเบเบชเบนเบ‡เบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡เบกเบฑเบ™, เบกเบฑเบ™เบเบฑเบ‡เบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ–เบทเบเบฅเบถเบš.

เบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบš. เบšเปเปˆโ€‹เบกเบตโ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบต lock escalation เบ—เบตเปˆโ€‹เบ™เบตเป‰โ€‹, เบšเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบเปเบฒโ€‹เบฅเบฑเบ‡โ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เปƒเบซเป‰โ€‹เป€เบ–เบดเบ‡โ€‹เบซเบ™เบถเปˆเบ‡ lock เป€เบžเบทเปˆเบญโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบ‚เบฑเป‰เบกโ€‹เปเบ‚เบ‡โ€‹. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบžเบตเปˆเบกเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เบ™เบตเป‰เปƒเบ™เบ—เบปเปˆเบงเบ„เบฐเบ™เบฐ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบ‚เบฑเบ”เปเบเป‰เบ‡เปƒเบ”เป†. เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบ”เบต. เบ‚เบญเบšเปƒเบˆเบซเบผเบฒเบเป†เบ—เบตเปˆเบ–เบฒเบกเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰!

เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ•เบฒเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เบˆเปเบฒเบ™เบงเบ™เบœเบนเป‰เปƒเบŠเป‰เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ?

Postgres เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ›เบดเบ”เบ—เป‰เบฒเบเป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เปเบฅเบฐเบกเบฑเบ™เบˆเบฐเบฅเบถเบšเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบงเบดเบ—เบตเบ”เบฝเบงเบ—เบตเปˆเบˆเบฐเบซเบผเบตเบเบฅเป‰เบฝเบ‡เบเบฒเบ™เบ›เบดเบ”เบเบฑเป‰เบ™เบ—เบตเปˆเบ•เบฒเบเปเบฅเป‰เบงเปเบกเปˆเบ™เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ„เบปเบ™เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบกเบฑเบเบˆเบฐเป€เบ›เบฑเบ™เป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ deadlocks ... เปƒเบซเป‰เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบชเบฐเบเบฑเบ”เบชเบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบซเบ™เบถเปˆเบ‡เบฅเบฑเบญเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ 1, เปเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบญเบทเปˆเบ™ locks 2, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ 1. เปเบฅเบฐเบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™ deadlocks เปเบกเปˆเบ™เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบกเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบฅเบฑเบญเบเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™เปƒเบ™เบ—เบปเปˆเบงเบ—เบธเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เปเบฅเบฐเบ™เบตเป‰เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบˆเบฐเบฅเบปเบšเบฅเป‰เบฒเบ‡ 80% เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ›เบฐเบŠเบฒเบŠเบปเบ™เบ‚เบฝเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เบฑเบ™เบžเบงเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบžเบปเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบขเบธเบ”.

เบ‚เปโ€‹เบ‚เบญเบšโ€‹เปƒเบˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบซเบผเบฒเบโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹! เบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบชเบนเบ™เบเบฒเบเบฒเบ”เป€เบ•เบฑเบกเปเบฅเบฐ, เบ–เป‰เบฒเบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเปƒเบˆเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เบชเบนเบ™เบเบฒเบเบฒเบ”เป€เบ•เบฑเบกเบˆเบฐเบšเบดเบ”เป€เบšเบทเบญเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบšเบฑเบ™เบ—เบถเบเปƒเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบ‚เบปเบฒเบฎเบฑเบเบชเบฒเบšเบฑเบ™เบ—เบถเบเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบชเบนเบ™เบเบฒเบเบฒเบ”เป€เบ•เบฑเบกเบˆเบถเปˆเบ‡เป€เบญเบปเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบฅเบฑเบญเบเปเบšเบšเบžเบดเป€เบชเบ”เบชเบฐเป€เบžเบฒเบฐ เปเบฅเบฐเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบกเบฑเบ™เบˆเบถเปˆเบ‡เบ‚เบฑเบ”เบเบฑเบšเบเบฒเบ™เบ”เบณเป€เบ™เบตเบ™เบเบฒเบ™เบ‚เบฝเบ™?

เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบ”เบต. เป€เบซเบ”เบœเบปเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบชเบนเบ™เบเบฒเบเบฒเบ”เป€เบ•เบฑเบกเป„เบ›เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เปเบฅเบฐเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบˆเบฐเปƒเบซเบกเปˆ. เบกเบฑเบ™ turns เบญเบญเบเบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเบซเบกเบปเบ”เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เปเบฅเบฐเบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบ„เบปเบ™เบญเปˆเบฒเบ™เบกเบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเป€เบšเบดเปˆเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปƒเบซเบกเปˆ. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ™เบตเป‰เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเป‰เบฒเบเบกเบฑเบ™เปเบฅเบฐเบ™เปเบฒเบ„เบปเบ™เป„เบ›เบซเบฒเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปƒเบซเบกเปˆ. เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเปƒเบซเป‰เบ—เบธเบเบ„เบปเบ™เบญเปˆเบฒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ™เบตเป‰เปƒเบซเป‰เบˆเบปเบš, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบฅเบฑเบญเบ.
เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบฅเบฑเบญเบเปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเปˆเบฒเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฑเบญเบเบชเบฐเป€เบžเบฒเบฐเป€เบžเบทเปˆเบญเบเป‰เบฒเบเบ—เบธเบเบ„เบปเบ™เป„เบ›เบซเบฒเบชเปเบฒเป€เบ™เบปเบฒเปƒเบซเบกเปˆ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เป„เบ”เป‰. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบกเบฑเบ™เบ”เป‰เบงเบเบงเบดเบ—เบตเบเบฒเบ™เบ”เบฑเบ”เบชเบฐเบ™เบตเบžเป‰เบญเบกเป†เบเบฑเบ™. เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”. เปเบฅเบฐเบ™เบตเป‰เบซเบผเบฒเบเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบš lock exclusive.

เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเป€เบงเบฅเบฒเบฅเบฑเบญเบเปƒเบชเปˆ Postgres เบšเป? เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เปƒเบ™ Oracle, เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™ "เป€เบฅเบทเบญเบเป€เบžเบทเปˆเบญเบญเบฑเบšเป€เบ”เบ”" เปเบฅเบฐเบฅเปเบ–เป‰เบฒ 50 เบงเบดเบ™เบฒเบ—เบตเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบญเบฑเบšเป€เบ”เบ”. เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบ”เบตเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เปเบ•เปˆเปƒเบ™ Postgres, เบ‚เป‰เบญเบเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบกเบฑเบ™เบ—เบฑเบ™เบ—เบตเปเบฅเบฐเบšเปเปˆเบฅเปเบ–เป‰เบฒเป€เบฅเบตเบ, เบซเบผเบทเบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบšเบฒเบ‡เป€เบงเบฅเบฒ.

เปเบกเปˆเบ™เปเบฅเป‰เบง, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเป€เบงเบฅเบฒเปเบปเบ”เป€เบงเบฅเบฒเปƒเบ™เบฅเบฑเบญเบเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ, เปƒเบ™เบฅเบฑเบญเบเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ. เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบญเบญเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบงเบดเบ—เบตเบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เบˆเบฐ ... เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบš lock เป„เบ”เป‰เบ—เบฑเบ™เบ—เบต. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒเบฅเบฑเบญเบเบซเบผเบทเบชเบดเปˆเบ‡เบญเบทเปˆเบ™เบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰. เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš syntactic. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ›เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบญเบฑเบ™เบ™เบตเป‰เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰.

เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ” slide 75 เป„เบ”เป‰เบšเป?

เปเบกเปˆเบ™เปเบฅเป‰เบง.

เบเบฒเบ™เบ›เบปเบ”เบฅเบฑเบญเบ Postgres Lock Manager. Bruce Momjian

เปเบฅเบฐเบ„เปเบฒเบ–เบฒเบกเบ‚เบญเบ‡เบ‚เป‰เบญเบเปเบกเปˆเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เบ—เบฑเบ‡เบชเบญเบ‡เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบกเบต 703?

เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆ. เบ‚เป‰เบญเบเบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆ, เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡ Postgres เป€เบฎเบฑเบ”เปเบšเบšเบ™เบตเป‰. เปเบ•เปˆเป€เบกเบทเปˆเบญ 703 เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบกเบต 702. เปเบฅเบฐเป€เบกเบทเปˆเบญ 704 เปเบฅเบฐ 705 เบ›เบฒเบเบปเบ”, เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡เบซเบเบฑเบ‡เป€เบžเบฒเบฐเบงเปˆเบฒเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เปเบฅเบฐ Postgres เป€เบฎเบฑเบ”เปเบšเบšเบ™เบตเป‰: เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบฅเบฑเบญเบเป„เบ”เป‰, เบกเบฑเบ™เบ‚เบฝเบ™เบงเปˆเบฒ "เบˆเบธเบ”เปƒเบ”เปƒเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เป€เบˆเบปเป‰เบฒ?", เป€เบžเบฒเบฐเบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบเปเบฒเบฅเบฑเบ‡เบฅเปเบ–เป‰เบฒเปƒเบœเบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบขเบนเปˆเปเบฅเป‰เบง. เบชเบฐเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เปˆเบญเบเปƒเบซเป‰เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบญเบฒเบเบฒเบ”, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบญเบฑเบšเป€เบ”เบ”เบกเบฑเบ™เป€เบฅเบตเบ. เปเบ•เปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบ—เบตเปˆเบ™เบตเป‰? เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆ 702 เบชเปเบฒเป€เบฅเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบฅเบฐ 703 เป„เบ”เป‰เบฎเบฑเบš lock เบ‚เบญเบ‡เบ•เบปเบ™, เบฅเบฐเบšเบปเบšเบเบฑเบšเบ„เบทเบ™เบกเบฒ. เปเบฅเบฐเบ™เบฒเบ‡เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบญเบ‡เบ„เบปเบ™เบ—เบตเปˆเบฅเปเบ–เป‰เบฒ. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบฎเปˆเบงเบกเบเบฑเบ™. เปเบฅเบฐเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบ—เบฑเบ‡เบชเบญเบ‡เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐ.

เบ‚เป‰เบญเบเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡ Postgres เป€เบฎเบฑเบ”เปเบšเบšเบ™เบตเป‰. เปเบ•เปˆเบกเบตเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ fโ€ฆ. เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ‚เป‰เบญเบเบงเปˆเบฒเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเบšเปƒเบ™เบžเบฒเบชเบฒเบฅเบฑเบ”เป€เบŠเบ. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เบธเบเบ„เบปเบ™เบฅเปเบ–เป‰เบฒ Castle เบซเบ™เบถเปˆเบ‡, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเบฐเบกเบตเป€เบˆเบปเป‰เบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ 20 เบ—เบตเปˆเบฅเปเบ–เป‰เบฒ Castle. เปเบฅเบฐเบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ”เบžเบงเบเป€เบ‚เบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ•เบทเปˆเบ™เบ™เบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™. เปเบฅเบฐเบ—เบธเบเบ„เบปเบ™เป€เบฅเบตเปˆเบกเบžเบฐเบเบฒเบเบฒเบกเป‚เบ•เป‰เบ•เบญเบš. เปเบ•เปˆเบฅเบฐเบšเบปเบšเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ—เบธเบเบ„เบปเบ™เบฅเปเบ–เป‰เบฒ 703. เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบฅเปเบ–เป‰เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฒเบเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบ—เบฑเบ™เบ—เบต. เปเบฅเบฐเบ–เป‰เบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเบกเปˆเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบ›เบฐเบเบปเบ”เบงเปˆเบฒเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡ 707, เบกเบฑเบ™เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡.

เปเบฅเบฐเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ‚เป‰เบญเบเป„เบ”เป‰เป€เบฎเบฑเบ”เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเป„เบ”เป‰เบงเปˆเบฒเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰ 702 เปเบกเปˆเบ™เบฅเปเบ–เป‰เบฒ 703, เปเบฅเบฐเบ—เบธเบเบ„เบปเบ™เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบˆเบฐเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบกเบฒเปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ™เบตเป‰. เปเบ•เปˆเบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบœเบนเป‰เบฎเบฑเบšเปƒเบŠเป‰เบ„เบปเบ™เบ—เปเบฒเบญเบดเบ”เบญเบญเบเป„เบ›, เบ—เบธเบเบ„เบปเบ™เบ—เบตเปˆเบฅเปเบ–เป‰เบฒเบขเบนเปˆเบเปˆเบญเบ™เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเป‚เบ—เป€เบ„เบฑเบ™เบ”เบฝเบงเบเบฑเบ™. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบšเป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบชเบฑเปˆเบ‡เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.

เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบชเบฐโ€‹เป€เบซเบกเบตโ€‹เป„เบ›โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบ™เบตเป‰โ€‹เป€เบ›เบฑเบ™โ€‹เบ›เบฐโ€‹เบเบปเบ”โ€‹เบเบฒเบ™โ€‹เปเบ›เบโ€‹เบซเบผเบฒเบโ€‹. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบšเบญเบเบžเบงเบเป€เบ‚เบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”. เปเบ•เปˆเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ‚เป‰เบญเบเบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เบฅเบฑเบญเบเปƒเบซเบกเปˆ, เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบœเบนเป‰เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบฅเปเบ–เป‰เบฒ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฑเบ”เปเบ–เบงเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบญเบฑเบ™เปƒเบซเบกเปˆเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเบžเบฝเบ‡เปเบ•เปˆเป„เบ”เป‰เบฎเบฑเบšเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เปเบ–เบงเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ„เบปเบ™เบ•เปเปˆเป„เบ›เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™. เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบ”เบตเบซเบผเบฒเบ. เบ‚เบญเบšเปƒเบˆเบซเบผเบฒเบเป†เบชเบณเบฅเบฑเบšเบ„เบณเบ–เบฒเบกเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ!

เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ‚เป‰เบญเบเบกเบตเป€เบซเบ”เบœเบปเบ™เบซเบผเบฒเบเป€เบกเบทเปˆเบญ 705 เบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒ 704.

เปเบ•เปˆเบšเบฑเบ™เบซเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰. เปƒเบ™เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบธเบเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบญเบทเปˆเบ™. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบธเบเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบญเบทเปˆเบ™เป†. เปเบ•เปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบฅเบฐเบšเบปเบš? เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™ 703 เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เป„เบ”เป‰เบšเบฅเบฑเบญเบ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆ Postgres เป€เบฎเบฑเบ”เบงเบฝเบ. เปเบฅเบฐ 703 เบ–เบทเบเบšเบฅเบฑเบญเบเป‚เบ”เบ ID เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ–เป‰เบฒเปƒเบœเบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเปเบ–เป‰เบฒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบ‚เบปเบฒเบˆเบฐเบฅเปเบ–เป‰เบฒ 703. เปเบฅเบฐ, เป‚เบ”เบเป€เบ™เบทเป‰เบญเปเบ—เป‰เปเบฅเป‰เบง, 703 เบชเปเบฒเป€เบฅเบฑเบ”. เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบชเปเบฒเป€เบฅเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบšเปเปˆเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบธเบ. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ›เบธเบ‡เปเบ•เปˆเบ‡เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ„เปˆเบญเบเป†. เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบ”เบ–เบทเบเบ›เบธเบเบเปˆเบญเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบ”เป†. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเบเปˆเบฒเบงเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ›เบธเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰. เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป€เบฅเบทเบญเบเป€เบญเบปเบฒเบซเบ™เบถเปˆเบ‡เป‚เบ”เบเบชเบธเปˆเบก. เบชเบฐเบ™เบฑเป‰เบ™เบžเบงเบเป€เบ‚เบปเบฒเบ—เบฑเบ‡เบชเบญเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ›เบธเบเบžเบงเบเป€เบ‚เบปเบฒเบ—เบฑเบ‡เบชเบญเบ‡.

เปเบฅเบฐเบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต CP-infinity. เปเบฅเบฐเป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ•เบทเปˆเบ™เบ‚เบถเป‰เบ™เปƒเบ™เบžเบฒเบเบซเบผเบฑเบ‡. เปเบฅเบฐเบ–เป‰เบฒ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบ›เบธเบเบ„เบปเบ™เบ•เปเปˆเบกเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบฅเปเบ–เป‰เบฒเบœเบนเป‰เบ—เบตเปˆเบžเบฝเบ‡เปเบ•เปˆเป„เบ”เป‰เบฎเบฑเบšเบ•เบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเปƒเบœเปเบ™เปˆเบ™เบญเบ™เบˆเบฐเบ–เบทเบเบ›เบธเบเบเปˆเบญเบ™. เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเป‰เบฒเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบฅเบฐเบฅเบฐเบšเบปเบšเบˆเบฐเบ›เบธเบเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ Random.

เบกเบต เบšเบปเบ”เบ„เบงเบฒเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฅเบฑเบญเบเป‚เบ”เบ Egor Rogov. เป€เบšเบดเปˆเบ‡, เบžเบงเบเป€เบ‚เบปเบฒเบเบฑเบ‡เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเปเบฅเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”. เบซเบปเบงเบ‚เปเป‰, เปเบ™เปˆเบ™เบญเบ™, เปเบกเปˆเบ™เบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ. เบ‚เบญเบšเปƒเบˆเบซเบผเบฒเบเป†, Bruce!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™