Master Pain
8.01.2010, 10:18:15
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
8.01.2010, 19:15:09
Transakcję wystarczą, jednak na Twoim miejscu jeśli zapytania są powiązane, zastosowałbym trigery lub funkcję.
Master Pain
9.01.2010, 13:10:10
Dziękuję
wlamywacz
9.01.2010, 17:32:31
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
12.01.2010, 10:03:10
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.