Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Transakcje czy LOCK TABLE, czy oba?
Forum PHP.pl > Forum > Bazy danych
Master Pain
Witam

W kodzie mam działanie w danym momencie na kilku tabelach (kilkanaście i więcej zapytań), które muszą być wykonane w danym momencie i inny użytkownik nie może w trakcie działania skryptu (PHP) na nich pracować (poza pobieraniem danych) - jest to bardzo ważne. Wykorzystuję PDO i transakcje. Czy to wystarczy? Czy dodatkowo zastosować LOCK TABLE? Wiem, że zablokowanie tabeli da nam jakby 'pustą drogę' i zapytania wykonają się szybciej. Także rozważam dodanie tego do kodu. Ale czy jest to wymagane? Co się też stanie, jeżeli kod się, z jakiegoś powodu, wysypie w jakimś momencie, i nie wykonam UNLOCK na tabeli / tabelach? Czy zostaną automatycznie odblokowane po wykonaniu skryptu?

Pozdrawiam.
wlamywacz
Transakcję wystarczą, jednak na Twoim miejscu jeśli zapytania są powiązane, zastosowałbym trigery lub funkcję.
Master Pain
Dziękuję smile.gif
wlamywacz
Z własnego doświadczenia LOCK TABLE używa się w sytuacjach gdy wstawiane rekordy powiązane są z innymi rekordami w tej samej tabeli, a tutaj chodzi głównie o integralność między różnimy tabelami.
Master Pain
Witam

Tak też u mnie się dzieje. Dane są 'obrabiane' w obrębie jedenej tabeli (wiele rekordów) oraz kilku innych. Generalnie zakładam sytuację, że operuję na kilku tabelach na wielu danych (czyli 1 i więcej z danej tabeli), i nie może to być przerwane ani zmienione w trakcie operacji. To czy powinienem zastosować LT czy jest to opcjonalne - przypomnę, korzystam z transakcji (ale ponieważ mam wątpliwości, stąd moje pytanie).

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