![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Witajcie.
(temat wisiał niespełna dobę w dziale Forum/Bazy danych/MySQL jednak postanowiłem go przenieść tutaj. Mimo, że jest to mniej odpowiedni temat to w niewielkim stopniu pasuje a jest tutaj większy ruch). Teoretycznie wszystkiego mógłbym się dowiedzieć chociażby z manuala, googla itp. ale postanowiłem napisać ponieważ przy aktualnym projekcie potrzebuje mieć pewność co do niektórych rzeczy. Słowo wstępu. Przeważnie korzystam z Doctrine ORM. Pojawiła się sytuacja, która zmusza mnie do skorzystania z blokowania tabel (przynajmniej tak mi się wydaje) a to co znalazłem w manualu Doctrina na temat blokowania nic mi nie pomogło, dlatego kod nieco się przeplata. (1) - Zasada działania blokowania tabel... Muszę w pewniej tabeli wykonać pewne akcie związane z usunięciem starych rekordów i dodaniem nowych. Ważne jest aby w trakcie wykonywania tych akcji nikt nie mógł nawet czytać z tej tabeli a gdyby jednak próbował to najlepiej jakby jego przeglądarka chwileczkę poczekała na zwolnienie blokady. w tym celu zaprodukowałem taki kod:
Czy jest on w porządku pod każdym względem? Czy spełnia przynajmniej to zadanie o które mi chodzi? (2) - Dlaczego wykonanie powyższego kodu (testuje go od 3 dni) daje czasami taki efekt, że: Dosłownie klikam "zapisz" co powoduje wykonanie się tego kodu i od tej pory przeglądarka czeka na odpowiedź z servera nawet kilka godzin? Można odświeżać, usuwać kod itp - nic nie pomaga. Czy dzieje się tak dlatego, że została zablokowana tabela (z której korzysta każda część skryptu) i cały czas czeka na jej odblokowanie? (opcjonalnie) - Czy mogę ten efekt uzyskać bez przeplatania? Wykorzystując tylko Doctrine? Miałem jeszcze jakieś pytania ale wyleciały mi z głowy... |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 18 Dołączył: 4.09.2010 Skąd: warszawa Ostrzeżenie: (0%) ![]() ![]() |
Pojawiła się sytuacja, która zmusza mnie do skorzystania z blokowania tabel (przynajmniej tak mi się wydaje) moim zdaniem źle kombinujesz. istnieje bardzo niewielka szansa, że faktycznie blokowanie tabeli jest w twoim przypadku prawidłowym rozwiązaniem problemu. ponieważ nie napisałeś nic więcej PO CO robisz blokowanie, skupiając się na JAK to zrobić, to proponuję abyś naświetlił szerzej kontekst. a jako zadanie domowe;), pogooglaj w tematach: - transakcje - blokowanie tabeli a wydajność - silniki mysql, różnice/zalety - granularity locking |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 11:11 |