Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Któreś z kolei zapytanie jest strasznie wolne - mariadb
Forum PHP.pl > Forum > Bazy danych
Valantir
Witam wszystkich,
Ostatnio musiałem uruchomić proces, który:
a) wyszuka rekordy z tabeli (z jakimiś joinami)
cool.gif zrobi coś z tymi danymi
c) zaktualizuje te rekordy w tabeli

No i chodziło to na jednym procesie ale całość była niewydajna. W związku z tym rozdzieliłem wszystko na wiele podprocesów i zauważyłem dziwną anomalię...
Wszystkich procesów uruchamiam np. 30 i wszystkie wykonują się dość szybko - czas to od 0.02 do maks 0.2 sekundy. Jednak w pewnym momencie dochodzi do dziwnej sytuacji, a mianowicie jedno zapytanie (wszystkie są takie same) się przywiesza i trwa około 107 sekund. 4 inne trwają po 28 sekund. I nagle zapytania te odpuszczają (zwracają 0 rekordów, co jest rzeczą normalną). Reszta zapytań wykonuje się dość szybko.

Czy spotkał się ktoś z taką sytuacją lub wie, co może być przyczyną takiego zachowania?
trueblue
Deadlocki?
Valantir
Czy w tym momencie baza rzuciłaby jakimś błędem? Bo ja żadnego wyjątku nie dostaję. Poza tym wyciągając selectem dane dodaję warunek, który eliminuje możliwość działania dwóch procesów na tym samym rekordzie.
trueblue
To jest tabela InnoDB?

Zapytanie ma jakieś podselect?
Valantir
Tak, InnoDB. I tak, ma jeden podselect.
trueblue
Ten podselect w update i dotyczy samej tabeli co nadrzędny update?
Valantir
Problemy są z samym selectem.
Leci coś w stylu:

select x, y, z from (subselect z wherem i limitem) as t1 join t2 join t3 join t4 where x = 'test'

update potem leci ok
trueblue
A indeksy są pozakładane?
Valantir
Tak, indeksy są pozakładane - dlatego pierwsze zapytanie wykonuje się nawet w 0.02 sekundy. Razem jest uruchamianych około 27 procesów, z czego 23 lecą dość szybko (po wykonaniu selecta zapytanie zwraca 0 rekordów), a 4 wiszą - 3 z nich po około 70-80 sekundach się wykonuje, a czwarte po około 1300 sekundach...
trueblue
Pokaż wynik EXPLAIN SELECT ... jednego z tych wolnych zapytań.
Kiedy wykonujesz je "samodzielnie", to działa szybko?
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-2024 Invision Power Services, Inc.