![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Załóżmy, że mamy jakąś tabelę do przechowywania tematów forum internetowego, w tej tabeli jest m. in. kolumna LICZBA zawierająca ilość odpowiedzi do danego tematu. Kiedy użytkownik dodaje odpowiedź do jakiegoś tematu i klika na formularzu Dodaj, to pobierana jest z tabeli ilość odpowiedzi na danym temat z kolumny LICZBA i wartość jest zwiększana o 1, np. przez wykonanie dwóch zapytań w PHP czy odpalenie triggera.
Czy może dojść do takiej sytuacji: LICZBA = 0 User 1 dodaje odpowiedź, następuje dla niego odczyt LICZBA = 0 w międzyczasie User 2 dodaje odpowiedź, następuje dla niego odczyt LICZBA = 0 zapis dla User 1 LICZBA = 0 + 1 = 1 zapis dla User 2 LICZBA = 0 + 1 = 1 finalnie LICZBA = 1 zamiast 2 - czy to możliwe czy nie ? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 380 Pomógł: 59 Dołączył: 24.04.2010 Skąd: London Ostrzeżenie: (0%) ![]() ![]() |
nie
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 183 Pomógł: 24 Dołączył: 4.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
nie j.w., MyISAM - table-lock, InnoDB row-lock
Ten post edytował kalmaceta 20.01.2011, 19:43:39 -------------------- kAlmAcetA
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ale row-lock to działa chyba dla UPDATE, a tu mamy:
odczyt 1 odczyt 2 UPDATE 1 UPDATE 2 Ten post edytował wiewiorek 20.01.2011, 20:01:06 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
-------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 353 Pomógł: 50 Dołączył: 28.07.2005 Skąd: Łaziska Górne Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej" "NIE kradnij, rząd nielubi konkurencji" |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.08.2025 - 23:29 |