Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: tuning serwera mysql

Tak, jak pisałem wcześniej baza nie jest używana jako element jakiegoś systemu tylko jako silnik to przechowywania i przekształcania danych już zgromadzonych. Na potrzeby projektu analitycznego konieczne było zintegrowanie danych z różnych źródeł. To co zrobiłem, to załadowałem dane do tabel tak, jak je dostarczały poszczególne źródła a następnie wszystko pokleiłem i znormalizowałem. W bazie trzymam jeszcze te tabele "wejściowe", bo nie wszystkie informacje z nich wykorzystałem i czasem coś jeszcze doklejam.

Z tego względu:

1. A może trochę więcej szczegółów? Tutaj masz 2 skrypty, które umożliwiają policzenie, ile masz danych.

Skryptów nie puszczałem, bo dałyby mylne wyniki. W bazie jest sporo tabel "wejściowych", które nie stanowią tej znormalizowanej części.

2. Jak często dane są aktualizowane? Jak duży wolumen aktualizacji? Czy dane są nadpisywane, czy dopisywane?

Do bazy w zasadzie nic nie jest dopisywane ani aktualizowane. Jedyna rzecz która się zmienia, to definicje niektórych widoków, z których soft analityczny zasysa dane do analiz.

3. Jakie masz ustawienia MySQL? Wrzuć wynik SHOW GLOBAL VARIABLES. Może coś mądrego uda się wymyślić?

Bardzo chętnie. Bazę MySQL wykorzystuje tylko i wyłącznie wyżej opisany sposób (jeden user, lokalny komputer, żadnych regularnych updateów ani insertów).
Nie mam pojęcia (jeszcze) o konfiguracji MySQL ale pomyślałem, że powinno się móc kilka rzeczy zoptymalizować dla tego konkretnego sposobu korzystania z serwera mysql. Będę wdzięczny za konfiguracyjne sugestie.

Efekt show global variables tutaj:
http://bojan.3e.pl/bojanorama/doku.php?id=public:konfi...Michał Bojanowski edytował(a) ten post dnia 31.03.11 o godzinie 12:06
Michał Gruchała

Michał Gruchała Skalowalność,
wydajność,
niezawodność

Temat: tuning serwera mysql

Michał Bojanowski:
Efekt show global variables tutaj:
http://bojan.3e.pl/bojanorama/doku.php?id=public:konfi...

To chyba defaultowe ustawienia.
Ile "zjada" Ci pamięci MySQL ?

Pobawiłbym się join_buffer_size, innodb_buffer_pool_size, sort_buffer_size
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: tuning serwera mysql

To chyba defaultowe ustawienia.

Tak. Chyba nic nie zmieniałem.
Ile "zjada" Ci pamięci MySQL ?


$ ps aux | grep "mysqld\|USER"
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
mysql 29049 0.0 0.4 262716 34324 ? Ssl Mar30 9:56 /usr/sbin/mysqld


a więc 262Mb

Pobawiłbym się join_buffer_size, innodb_buffer_pool_size, sort_buffer_size

Dzięki za sugestie. Zaraz sobie doczytam o tych zmiennych. Jakie ustawienia byś sugerował? (maszyna ma 8gb ramu, ale sam pracuje na niej normalnie a nie tylko mysql).
Michał Gruchała

Michał Gruchała Skalowalność,
wydajność,
niezawodność

Temat: tuning serwera mysql

MySQL lubi pamięć, woli mieć więcej pamięci niż szybszy dysk.
innodb_buffer_pool_size daj na 2-4GB
Dwa pozostałe (nie wiem w sumie) zwiększ ze 4 razy i zobacz wyniki.
Mariusz Sucajtys

Mariusz Sucajtys Wszyscy wiedzą, że
czegoś nie da się
zrobić, aż znajdzie
...

Temat: tuning serwera mysql

Jak poprosiłem to wykonanie skrypcików, które wyciągnęłyby z information_schema odpowiednie informacje, to niestety nie doczekałem wyników. Na podstawie wiedzy, którą teraz mamy nie można niczego sensownego zaproponować.
Nie wiemy, jakie są tabele, który storage engine, jak wygląda workload (wiemy, że głównie odczyty, ale nie wiemy z jakiej tabeli).
Strzelanie na ślepo ze zwiększaniem buforów nie jest najlepszym pomysłem bez zrozumienia, jakie dane znajdują się w instancji i jak są wykorzystywane.

Co do parametrów join_buffer_size, sort_buffer_size: zaleca się, aby nie zmieniać wartości tych parametrów, jeżeli rzeczywiście nie jest to konieczne. W pewnych zastosowaniach może to negatywnie wpłynąć na wydajność (szczególnie środowiska OLTP). Należy pamiętać o tym, że to są bufory alokowane per sesja, tj. każde nowe połączenie powoduje konieczność alokacji bufora o takim rozmiarze. Tutaj i tutaj wypowiadali się eksperci w tej sprawie i opisali to trochę dokładniej.
Z tego, co pisał Michał, na MySQL robi analizy, więc OLTP to nie jest i zwiększenie tych buforów nie powinno mu raczej zaszkodzić.
Ale wcale nie mamy gwarancji, że pomoże.Mariusz Sucajtys edytował(a) ten post dnia 14.04.11 o godzinie 22:00
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: tuning serwera mysql

Może i racja. Puściłem oba skrypty.

Dane są w dwóch bazach thomson oraz io więc skrypt 'perschema'' puscilem dla obu.

W obu bazach tabele których nazwy zaczynają się od 'd'
lub 'd_' to są dane wejściowe, o których pisałem wcześniej.

Wyniki tutaj: http://bojan.3e.pl/bojanorama/doku.php?id=public:konfi...

z góry dzięki za sugestieMichał Bojanowski edytował(a) ten post dnia 15.04.11 o godzinie 12:06
Michał Gruchała

Michał Gruchała Skalowalność,
wydajność,
niezawodność

Temat: tuning serwera mysql

Mariusz Sucajtys:
Strzelanie na ślepo ze zwiększaniem buforów nie jest najlepszym pomysłem bez zrozumienia, jakie dane znajdują się w instancji i

w przypadku innodb_buffer_pool_size to w ciemno można zwiększac (gdy używamy innodb), to najważniejsza zmienna.

co do dwóch pozostałych, to asekuracyjnie w nawiasie dodalem "nie wiem" :D

Następna dyskusja:

Szybkie odpytywanie zdalneg...




Wyślij zaproszenie do