Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Któreś z kolei zapytanie jest strasznie wolne - mariadb
Valantir
post 12.07.2020, 13:36:33
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 6.09.2011
Skąd: Olsztyn

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


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?


--------------------
Pomogłem? Kliknij "Pomógł".
Go to the top of the page
+Quote Post
trueblue
post 12.07.2020, 13:50:08
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Deadlocki?


--------------------
Go to the top of the page
+Quote Post
Valantir
post 12.07.2020, 14:11:22
Post #3





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 6.09.2011
Skąd: Olsztyn

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


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.

Ten post edytował Valantir 12.07.2020, 14:45:59


--------------------
Pomogłem? Kliknij "Pomógł".
Go to the top of the page
+Quote Post
trueblue
post 12.07.2020, 15:01:11
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


To jest tabela InnoDB?

Zapytanie ma jakieś podselect?


--------------------
Go to the top of the page
+Quote Post
Valantir
post 12.07.2020, 15:40:50
Post #5





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 6.09.2011
Skąd: Olsztyn

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


Tak, InnoDB. I tak, ma jeden podselect.


--------------------
Pomogłem? Kliknij "Pomógł".
Go to the top of the page
+Quote Post
trueblue
post 12.07.2020, 15:47:21
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Ten podselect w update i dotyczy samej tabeli co nadrzędny update?


--------------------
Go to the top of the page
+Quote Post
Valantir
post 12.07.2020, 16:10:16
Post #7





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 6.09.2011
Skąd: Olsztyn

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


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


--------------------
Pomogłem? Kliknij "Pomógł".
Go to the top of the page
+Quote Post
trueblue
post 12.07.2020, 16:35:51
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


A indeksy są pozakładane?


--------------------
Go to the top of the page
+Quote Post
Valantir
post 13.07.2020, 20:25:21
Post #9





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 6.09.2011
Skąd: Olsztyn

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


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...

Ten post edytował Valantir 13.07.2020, 20:25:38


--------------------
Pomogłem? Kliknij "Pomógł".
Go to the top of the page
+Quote Post
trueblue
post 14.07.2020, 10:15:09
Post #10





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Pokaż wynik EXPLAIN SELECT ... jednego z tych wolnych zapytań.
Kiedy wykonujesz je "samodzielnie", to działa szybko?


--------------------
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: 19.03.2024 - 03:21