Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Transakcja czy blokowanie tabel?
Forum PHP.pl > Forum > Bazy danych > MySQL
code46
Po co stosuje się blokowanie tabel przy edycji/aktualizacji? Czy sama transakcja nie wystarczy?
artega
Różne silniki mają różne funkcje np. tabela na silniku MyISAM nie obsługuje transakcji ale posiada wyszukiwanie pełnotekstowe, czego w InnoDB nie znajdziesz a możesz użyć transakcji. Manual się przydaje.
code46
Nie o to mi chodzi. Jeśli będę wykonywał n-operacji sql w transakcji na tabeli X, których czas wykonywania będzie wynosił 30sekund to jeśli inny użytkownik w tym czasie poprosi o dane z tabeli X to zobaczy sprzed transakcji (transakcja jeszcze się nie zakończyła). A co jeśli w tym czasie dokona aktualizacji tabeli? I jak to będzie wyglądało jeśli przed odpaleniem transakcji zablokuję dostęp do odczytu i zapisu tabeli X - co wtedy użytkownik zobaczy? Błąd?
Jeśli zależy nam aby użytkownik nie mógł aktualizować tabeli jeśli trwa transakcja to jak to zrobić?
artega
Cytat
I jak to będzie wyglądało jeśli przed odpaleniem transakcji zablokuję dostęp do odczytu i zapisu tabeli X - co wtedy użytkownik zobaczy?

Jeżeli klient A wprowadzi blokade to klient B chcąc aktualizowć tą samą tabele w czasie blokady będzie musiał czekać w kolejce do jej zwolnienia.
Cytat
Jeśli zależy nam aby użytkownik nie mógł aktualizować tabeli jeśli trwa transakcja to jak to zrobić?

Blokowanie na poziomie tabeli odbywa się przez:
  1. LOCK TABLE tabela READ

InnoDB udostępnia dodatkowe rodzaje blokad na poziomie rekordów o których możesz przeczytać tutaj.
code46
Kiedy stosować blokowanie?
pyro
np. podczas tworzenia kopii zapasowej bazy danych
artega
Google na takie pytania też potrafi odpowiedzieć, sam zobacz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.