Jump to content
php.lv forumi

PostgreSQL lock


Wuu

Recommended Posts

PostgreSQL 9.4

Ir updeits, kurš ir ļoti svarīgs. Servera puse ir uzrakstīta, tā ka skeilojas horizontāli. Problēmu nesen atklāju, ka brīžiem, vairāki serveri cenšas updeitot vienu ierakstu, kurš ir ļoti strikti aprakstīts. Gandrīz nereāli, bet toties saskrienas.

Pirms paša updeita ir 3 pārbaudes, un pašā updeitā ir pārbaude, vai tiešām var veikt updeitu. Tik un tā saskrienas. Kā panākt, un aizlokot vienu rindu tabulā. Lai citas transakcijas gaida? Lūgums ar koda piemēru. No https://www.postgresql.org/docs/9.1/static/explicit-locking.html  šī es neko nesaprotu, vai tiešām ir grūti ielikt pāris piemērus? PG manuālus ir vienkārši drausmīgs. 

Edited by Wuu
Link to comment
Share on other sites

https://www.postgresql.org/docs/9.1/static/sql-begin.html

begin;
select * from users where id = 5395 for update;
update users set email = '[email protected]' where id = 5395;
commit;

Ja pareizi saprotu begin; commit; visu saliek vienā transakcijā, un ja nebūs nostrādājis commit's ieraksts ID = 5395 nebūs pieejams citām darbībām un tās gaidīs kamēr ieraksts būs atkal pieejams.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...