Jump to content
php.lv forumi

Recommended Posts

Posted (edited)

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
Posted
select * from users where id = 5395 for update;
update users set email = 'cooolmail@mailinator.com' where id = 5395;

Šādi? Kā lai notestē, ka tiešām strādā?

Posted

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

begin;
select * from users where id = 5395 for update;
update users set email = 'cooolmail@mailinator.com' 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.

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...