![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 2 Dołączył: 31.01.2010 Skąd: Konstancin-Jeziorna Ostrzeżenie: (0%) ![]() ![]() |
Witajcie !
Poprawiam wyszukiwarkę portalową. Problem tkwi w tym, że w godzinach szczytu, że zapytanie zaczyna zajeżdżać serwer. Zapytanie, które jest aktualnie (przykład):
Przepisane zapytanie do innej postaci() :
Indexy : Tabela : -- search_wordlist http://scr.hu/1s02/bg4fo -- search_wordmatch http://scr.hu/1s02/1fxpz -- post http://scr.hu/1s02/tm1s9 EXPLAIN tego zapytania : http://scr.hu/1s02/ljnq1 Jakie są wasze sugestie odnośnie optymalizacji takiego zapytania. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
No tak od początku.....
Odpuszczę sobie analizę indeksów i strukturę tabel (widać kolega wie co się z tym robi (IMG:style_emoticons/default/closedeyes.gif) ). Odpalenie OPTIMIZE też pewnie jest jasne. Pytanie o konfigurację serwera... Z mojego doświadczenia wynika, że olbrzymia ilość serwerów działa na ustawieniach domyślnych i zmiana tych ustawień rozwiązuje masę problemów. Odnośnie meritum, czyli zapytania tutaj też jest olbrzymie pole do działania gdyż z mojego doświadczenia wynika, że silnik mysql pierwsze wykonuje złączenia i potem dopiero sortuje i grupuje złączone tabele - co siłą rzeczy wymaga mieszania dużą ilością danych. Stosując inne złączenia lub podzapytania nieraz uzyskiwałem stukrotny wzrost wydajności w stosunku do zapytań napisanych książkowo (IMG:style_emoticons/default/smile.gif) przykład: - książkowo
alternatywa 1
alternatywa 2
Ten post edytował bpskiba 7.11.2013, 11:09:51 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 2 Dołączył: 31.01.2010 Skąd: Konstancin-Jeziorna Ostrzeżenie: (0%) ![]() ![]() |
Serwer, aktualnie nie działa na domyślnej konfiguracji, zostało dużo zmian wprowadzonych pod kątem optymalizacji serwera przez administratora.
Dzięki za podpowiedź. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
'Using temporary; Using filesort' -> spróbój przenieść TMPDIR do pamięci RAM. Dodatkowo dorób mechanizm cacheowania w warstwie aplikacji.
Ten post edytował redeemer 7.11.2013, 11:27:24 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 2 Dołączył: 31.01.2010 Skąd: Konstancin-Jeziorna Ostrzeżenie: (0%) ![]() ![]() |
Aktualnie testuję takie zapytanie :
I powiem, że czas wykonywania zmniejszył się 2 x. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Z tego, co widzę to zagnieździłeś zapytania. Nie koniecznie o to mi chodziło, ale jak sam widzisz to daje efekty (IMG:style_emoticons/default/smile.gif)
Idea polega na tym, aby wybrać z tabeli to co jest potrzebne, a następnie łączyć ją z kolejną. przenieś WHERE (`category` NOT IN(13,44,45,35,46,53,70)) do podzapytania |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 2 Dołączył: 31.01.2010 Skąd: Konstancin-Jeziorna Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem mały update zapytania , ale przeniesienie where do podzapytania wyrzuca błąd.
bpskiba, Chyba ,że miałeś inna rzecz na myśli. Jako możesz to przytocz przykład. Ten post edytował GameMaker 7.11.2013, 14:20:11 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
najpierw próbujesz grupować, a potem dołączasz kolejną tabelę - i to zapewne powoduje błąd.
Jeśli chodzi o przykład, to przeanalizuj to co napisałem jako 'alternatywa2', czyli pierwsze kwerenda wybierająca w podzapytaniu i następnie do tego dołączona druga tabela |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 13:21 |