Poprawienie wydajności bazy |
Poprawienie wydajności bazy |
12.02.2015, 21:54:36
Post
#1
|
|
Grupa: Zarejestrowani Postów: 242 Pomógł: 0 Dołączył: 28.11.2014 Ostrzeżenie: (0%) |
Witam,
Na wstępie chciałbym powiedzieć że jestem zielony jeżeli chodzi o linuxa i prosiłbym o pisanie jak najbardziej zrozumiale. Posiadam sporą bazę MySQL która strasznie przymula. Uruchomiłem MySQLTuner który pokazał mi coś takiego : http://wklej.org/id/1633653/ Szukałem tych linijek w my.cnf tmp_table_size (> 16M) max_heap_table_size (> 16M) Jednak ich nie znalazłem. Proszę o wyjaśnienie jak najprościej się da co mogę zrobić aby poprawić wydajność. Pozdrawiam. @edit Dopisałem to do my.cnf tmp_table_size = 16M max_heap_table_size = 16M I teraz ten komunikat na samym dole zniknął. Co jeszcze mogę zrobić ? Ten post edytował Gruchol 12.02.2015, 22:26:37 |
|
|
13.02.2015, 08:14:21
Post
#2
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 46 Dołączył: 31.07.2009 Skąd: A Ostrzeżenie: (0%) |
tak naprawdę to nie wiadomo co oznacza przymula, wiesz jak masz bazę na kiepskiej maszynie to może tu jest problem
pyzatym zawsze możesz sprawdzić jakie zapytania trwają najdłużej, może brakuje indeksów ograniczyć liczbę zapytań do bazy stosując rożne formy cachowania |
|
|
13.02.2015, 08:30:27
Post
#3
|
|
Grupa: Zarejestrowani Postów: 242 Pomógł: 0 Dołączył: 28.11.2014 Ostrzeżenie: (0%) |
A czy istnieje jakaś aplikacja która pozwoli mi sprawdzić które zapytanie wykonuje się najdłużej ?
Co do słabej maszyny, baza stała na maszynie 6gb ramu 4x3.0 ghz i tam było praktycznie to samo. Teraz zrobiłem tak że mysql stoi na osobnej maszynie a na osobnej stoi php5, nginx itp. Jest trochę lepiej jednak nadal strona strasznie wolno chodzi. |
|
|
13.02.2015, 08:39:41
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
Przejrzyj slow.log.
W pliku my.cnf masz zdefiniowane, gdzie leży: log_slow_queries = /var/log/mysql/mysql-slow.log long_query_time = 2 log-queries-not-using-indexes |
|
|
13.02.2015, 15:25:17
Post
#5
|
|
Grupa: Zarejestrowani Postów: 242 Pomógł: 0 Dołączył: 28.11.2014 Ostrzeżenie: (0%) |
A co muszę zrobić aby te błędy naprawić ?
[] InnoDB is enabled but isn't being used [] Total fragmented tables: 2 |
|
|
13.02.2015, 15:35:26
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Olać, to mówi że masz odpalone InnoDB ale nie używasz tego nigdzie i że 2 tabele mozna zoptymalizować (zdrefragmentować)
|
|
|
13.02.2015, 15:44:26
Post
#7
|
|
Grupa: Zarejestrowani Postów: 242 Pomógł: 0 Dołączył: 28.11.2014 Ostrzeżenie: (0%) |
Kupiłem lepszego VPSa pod bazę (3gb ramu, 2x2,5 GHZ) i cały czas muli tak samo.
A mysqltuner pokazuje : http://wklej.org/id/1634295/ Już nie wiem co mam zrobić :/ |
|
|
13.02.2015, 15:46:26
Post
#8
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
a co zwraca slow.log o które prosił @mmmmmmm
|
|
|
13.02.2015, 15:50:38
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) |
Kupiłem lepszego VPSa pod bazę (3gb ramu, 2x2,5 GHZ) i cały czas muli tak samo. A mysqltuner pokazuje : http://wklej.org/id/1634295/ Już nie wiem co mam zrobić :/ Muli, bo musi mulić - widocznie aplikacja, która korzysta z bazy jest mało optymalnie napisana. Przedstaw jakieś przykładowe zapytania z podstrony, która najbardziej muli. Zabrałeś się do tego, za przeproszeniem, od d... strony, kupując od razu nowy vps. Najpierw optymalizujesz zapytania, triggery, indexy, funkcje jak to nie pomaga to lepszy sprzęt. -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
13.02.2015, 15:55:37
Post
#10
|
|
Grupa: Zarejestrowani Postów: 242 Pomógł: 0 Dołączył: 28.11.2014 Ostrzeżenie: (0%) |
|
|
|
13.02.2015, 16:03:01
Post
#11
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
To teraz zopytmalizuj te zapytanie a serwis zacznie latać.
|
|
|
13.02.2015, 16:20:56
Post
#12
|
|
Grupa: Zarejestrowani Postów: 242 Pomógł: 0 Dołączył: 28.11.2014 Ostrzeżenie: (0%) |
Niestety nie znam się aż tak bardzo aby optymalizować skrypty :/
W moim pliku to zapytanie wygląda tak :
Był bym bardzo wdzięczny gdybyś pomógł mi to zoptymalizować. |
|
|
13.02.2015, 16:28:37
Post
#13
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Zerknij to:
A jak to nie zadziała to sprawdź czy masz indeksy na polach: user_data.guild_id guilds.guild_id user_data.user_id |
|
|
13.02.2015, 16:35:24
Post
#14
|
|
Grupa: Zarejestrowani Postów: 242 Pomógł: 0 Dołączył: 28.11.2014 Ostrzeżenie: (0%) |
Nadal jest tak samo :/
(Tzn. aktualnie nie mam możliwość sprawdzenia czy kod działa jednak po wgraniu go muli cały czas tak samo :/ ) Ten post edytował Gruchol 13.02.2015, 16:51:24 |
|
|
13.02.2015, 18:28:02
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) |
pokaż wynik |
|
|
13.02.2015, 18:36:50
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) |
Zerknij to:
A jak to nie zadziała to sprawdź czy masz indeksy na polach: user_data.guild_id guilds.guild_id user_data.user_id Wg mnie ten join, tylko po to, żeby zrobić counta jest tu niepotrzebny. Podzapytanie sobie lepiej poradzi.
W ogóle to trochę bez sensu, żeby robić joina tylko po to, żeby zrobić counta. Już lepszym rozwiązaniem by było:
-------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
13.02.2015, 19:11:31
Post
#17
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Może i tak, nie robiłem testów Nie chciało mi się, na szybko pisałem. Czasami wyniki mogą być różne więc każde rozwiązanie można przetestować.
|
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 07:34 |