=?iso-8859-2?q?MySQL_priorytet_w=B1tk=F3w?=
Jacek K. - 01-09-2007 00:16
=?iso-8859-2?q?MySQL_priorytet_w=B1tk=F3w?=
Witam
Mam problem, tworzę aplikację opartą na MySQL, i mam taki efekt, że jak jedna ze stacji zapuści zapytanie SQL na większej ilości danych - ponad 10 000 wierszy z joinami na inne mniejsze tabele MySQL blokuje wręcz inne wątki i efekt jest taki ze na kila sekund inne stacje muszą czekać aż to jedno zapytanie się zakończy. Czy jest możliwość takiego ustawienia MySQL-a aby na serwerze jednoprocesorowym MySQL zwalniał dużego SELECT-a na rzecz innych operacji.
Z góry dziękuję za rady i pomysły.
Jacek K. - 05-09-2007 00:21
=?iso-8859-2?q?Re:_MySQL_priorytet_w=B1tk=F3w?=
On 31 Sie, 12:12, "Jacek K." <maly_jace...@wp.pl> wrote: > Witam > > Mam problem, tworzę aplikację opartą na MySQL, i mam taki efekt, że > jak jedna ze stacji zapuści zapytanie SQL na większej ilości danych- > ponad 10 000 wierszy z joinami na inne mniejsze tabele MySQL blokuje > wręcz inne wątki i efekt jest taki ze na kila sekund inne stacje muszą > czekać aż to jedno zapytanie się zakończy. > Czy jest możliwość takiego ustawienia MySQL-a aby na serwerze > jednoprocesorowym MySQL zwalniał dużego SELECT-a na rzecz innych > operacji. >
Doszedłem, że select blokuje tablice. Z moich obserwacji to wygląda tak:
Mam zrobione aplikacje z użyciem zapytań w języku SQL w celach analitycznych oraz normalnie przełożoną aplikację z CA-Clipper na xHarbour z bibliotekami mediatora. Mediator to system umożliwiający do korzystania z baz z poziomy języka xBase, dokładnie jest to xHarbour, dokładnie mediator korzysta z baz z poziomu biblioteki iODBC i przesyła dane do aplikacji na końcówkach, zapewniając kompayybilność mechanizmów xBase ( CA-Clipper, xHarbour ).
I jak uruchomię zapytanie na tablicach liczących około 10 000 wierszy z relacjami to przez okres tworzenia wyniku zapytanie (około 2-3 minut) aplikacja standardowa do wpisywania danych nie może pracować - uaktualniać danych na tablicach zawartych w zapytaniu. To samo się dzieje jak uruchamiam zapytanie z MySql Query Browse, i próbuję pracować mam ten sam efekt.
W pierwszej wersji miałem tablice zapamiętywane w silniku MyISAM, w dokumentacji doczytałem, że ten silnik na czas zapytania, uaktualnienia blokuje całą tablicę, co by się zgadzało, gdyż wątek (tread) miał status "Locked".
Zmieniłem standardowy silnik na InnoDB, i niestety mimo że InnoDB nie blokuje całej tablicy a tylko pojedynczy wiersz, niestety nie poprawiło to zachowania - zmieniło tylko status oczekującego wątku na "statistics"
Jest jakiś pomysł?
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Gdzie MySQL 4.1, a gdzie 5.0?
[MS SQL] "set names" (mySQL) w MS SQL
oracle -> oracle lub oracle -> mysql replikacja - programy
[mysql 4.0] SELECT t1.id, t1.foo FROM t1 oraz COUNT t2 w jednym zapytaniu.
[MySQL] Zwrot tego, co pasuje i nie pasuje :-/
[pgsql] Dostosowanie składni MySQL 5.0 -> PGSQL 8.1
[mysql] galeria zdjec - numerowanie zdjec
[MySQL] Zapytanie z pliku , wynik do pliku
[mysql] CONCAT agregujący, ale nie GROUP_CONCAT()
mysql data 0000-00-00 na koniec
zanotowane.pldoc.pisz.plpdf.pisz.pllubiatowo.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|