![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 12.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie.
Mam to "szczęście", że muszę po poprzednikach poprawić zapytania w sklepie internetowym. W znacznym stopniu baza danych zostaje obciążona czego efektem jest wydłużony czas ładowania się strony. Zapytania wyświetlające listę produktów w sklepie:
zapytanie zostaje wywołane dwa razy: 1 dla listy produktów, 2 (jak wywnioskowałem) dla paginacji (ilość stron produktów). Indexy założone na tabele (nazwa tabeli - pola indexow): zestawy - id_zest(pk), id_kat, zdj, symbol; zestawy_jezyki - id_zest_l(pk), id_zest, id_lang, nazwa, opis, ivona(nie uzywane juz w sklepie pole w bazie), ivona_url(jak w przypadku ivony) zestawy_cechy - id_cech_l(pk) & id_zest, id_cech_l(pk), id_zest, wartosc produkty - id_prod(pk), id_user, id_vat, id_produc, id_zest, id_rodz, data_add, idx_stan, detal produkty_jezyki - id_prod_l(pk), id_prod, id_lang kategorie_zestawy - id_kat_zest(pk), id_kat & id_zest kategorie - id_kat(pk), id_user, id_gr Wszystkie tabele to MyISAM. Jakie są wasze sugestie co do optymalizacji tego zapytania ? Ten post edytował Petre 3.01.2013, 10:16:50 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jeśli sklep ma duże obciążenie to możliwe, że zapytanie czeka na odblokowywanie tabel - zajrzyj w procesy - zobacz ile trwają - na czym wiszą (SHOW PROCESSLIST na przykład - lub poprzez PHPMyAdmin itp)
Jeśli wiszą na tym to InnoDB powinno znacznie pomóc. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 12.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli sklep ma duże obciążenie to możliwe, że zapytanie czeka na odblokowywanie tabel - zajrzyj w procesy - zobacz ile trwają - na czym wiszą (SHOW PROCESSLIST na przykład - lub poprzez PHPMyAdmin itp) Jeśli wiszą na tym to InnoDB powinno znacznie pomóc. Co widzę to często pojawia się COPYING TO TMP TABLE. Jeśli sklep ma duże obciążenie to możliwe, że zapytanie czeka na odblokowywanie tabel - zajrzyj w procesy - zobacz ile trwają - na czym wiszą (SHOW PROCESSLIST na przykład - lub poprzez PHPMyAdmin itp) Jeśli wiszą na tym to InnoDB powinno znacznie pomóc. Dostalem odpowiedz od adminow, ze wisi na tych COPYING TO TMP TABLE. Mowia, ze zwiekszyli takze buffor bazy pod to. Jak widzicie rozbic to na mniejsze zapytania (tak jak pisalem wczesniej) ? Mniej JOINow, ale wiecej zabawy z odpowiednim selekcjonowaniem wynikow do zmiennych. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 16:18 |