Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Transakcja czy blokowanie tabel?
code46
post 8.06.2008, 21:05:34
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 21.04.2005

Ostrzeżenie: (0%)
-----


Po co stosuje się blokowanie tabel przy edycji/aktualizacji? Czy sama transakcja nie wystarczy?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
artega
post 8.06.2008, 21:55:32
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
code46
post 8.06.2008, 23:59:59
Post #3





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 21.04.2005

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
artega
post 9.06.2008, 20:13:28
Post #4





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
code46
post 10.06.2008, 06:45:16
Post #5





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 21.04.2005

Ostrzeżenie: (0%)
-----


Kiedy stosować blokowanie?
Go to the top of the page
+Quote Post
pyro
post 10.06.2008, 08:23:20
Post #6





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


np. podczas tworzenia kopii zapasowej bazy danych


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
artega
post 10.06.2008, 08:32:26
Post #7





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

Ostrzeżenie: (0%)
-----


Google na takie pytania też potrafi odpowiedzieć, sam zobacz.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 04:26