Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Transakcje a PHP., Moje wczorajsze odkrycie :)
Black-Berry
post
Post #1





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Wczoraj odkryłem w MySql mechanizm transakcji. Działa to na prostej zasadzie. Łączy się zapytania w większą grupę którą można zatwierdzić albo cofnąć. Na przykład:

  1. BEGIN;
  2. SELECT * FROM TABLE WHERE id = 10 FOR UPDATE;
  3. UPDATE TABLE SET name = 'moje odkrycie' WHERE id = 10;
  4. COMMIT;

komenda 'FOR UPDATE' sprawia, że tablica 'table' jest zablokowana do odczytu dla innych połaczeń. Obejmując znacznikami BEGIN i COMMIT całą serię selectów i updatów dodających np nowy artykuł mam pewność, że admin i na przykąłd moderator klikając 'zapisz' w tej samej sekundzie nie skrzyżuja danych i nie rozwalą integralności bazy. Jescze trochę o tym czytam ale nie mogę doszukać się odpowiedzi na kilka pytań:

1. Czy dobrze główkuję?
2. Co jeśli moderatorowi braknie prądu? Czy to będzie oznaczało dead lock bo tabela z artykułami nigdy sie nie odblokuje? COMMIT nie nastąpi przecież nigdy.
3. Czy czegoś nie przeoczyłem?
4. Czy to jest tak, ze jesli mam mderatora i administratora i jesli oboje chcą dodać artykuł to czy faktycznie są to odrębne połączenia z bazą?

Ten post edytował Black-Berry 27.08.2008, 09:41:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SirZooro
post
Post #2





Grupa: Zarejestrowani
Postów: 243
Pomógł: 32
Dołączył: 14.06.2007

Ostrzeżenie: (0%)
-----


Ad.1. Tak.
Ad.2. W momencie zerwanie połączenia niezatwierdzone transakcje są wycofywane automatycznie (ROLLBACK).
Ad.3. Raczej nie. Ew. możesz jeszcze zrobić coś takiego że jak wykryjesz błąd w trakcie wysyłania zapytań, to wycofujesz transakcję.
Ad.4. Tak (no chyba że połączenie do bazy będzie ponownie użyte, ale to i tak będą osobne transakcje).
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 07:20