Przejdź do treści

MySQL – optymalizacja i wydajność

O pracy MySQL DBA – przemyślenia administratora

Archiwa

Kategoria: MySQL

Dziś będzie o bugu, na którego ostatnio się natknąłem. Mam nadzieję, że komuś, kiedyś przyda się ten post. Szczególnie, że MySQL z linii 5.5 coraz częściej pojawia się na serwerach, a błąd ten właśnie z tą wersją jest związany. Objawy są dosyć standardowe – mysqld po prostu nie wstaje. Co widzimy w logach:
czytaj dalej…

Witam drogich Czytelników w jubileuszowym, setnym poście na blogu. Dziś parę słów o rzeczy, która wydawałaby się niczym tajemniczym. W ostatnim czasie miałem jednak okazję kilka razy się przekonać, że sprawa nie jest tak oczywista, jakby się to wydawało. Chodzi konkretnie o sposób, w jaki InnoDB zachowuje się w trakcie kasowania danych.
czytaj dalej…

Ostatnio miałem chwilę aby zerknąć na najnowszą MariaDB – wersja 5.3.2 dokładnie. To, co mnie zainteresowało, to kwestia optymalizacji SELECTów, które wykorzystują podzapytania. W gałęzi 5.3 twórcy MariaDB wprowadzili do optimizera kilka opcjonalnych modyfikacji, które pozwalają w pewnych przypadkach na znaczne przyspieszenie działania tego typu SELECTów. Jak to wygląda w praktyce?
czytaj dalej…

Kilka dni temu miałem okazję zetknąć się z ciekawą sytuacją. Monitoring serwera fizycznego, na którym znajdowała się baza MySQL, wskazywał na duże obciążenie procesora typu system. Kilka minut obserwacji “organoleptycznej” przez mytopa pokazało, że co kilkanaście sekund pojawiają się gwałtowne skoki ilości zapytań – z stu – dwustu do kilku tysięcy na sekundę. Co się działo na tej maszynie?
czytaj dalej…

MySQL umożliwia zastosowanie różnych rodzajów formatów rekordów – w zależności od silnika opcji może być kilka. InnoDB to formaty ‘compact’ i ‘redundant’. MyISAM – ‘fixed’ i ‘dynamic’. Memory – ‘fixed’. Cechą charakterystyczną formatu fixed jest to, że każdy rekord posiada dokładnie taką samą długość. To przekłada się na kilka sporych zalet – szybsze wyszukiwanie danych (MySQL dokładnie wie w którym miejscu tabeli zacząć szukać danego rekordu – może sobie obliczyć biorąc pod uwagę długość rekordu i jego “numer”), mniejszy problem z fragmentacją (po skasowaniu jednego rekordu w jego miejsce bez problemu trafi inny – ich długość jest w końcu identyczna).
czytaj dalej…

W życiu administratora są takie momenty, w których dobrze byłoby móc pewne czynności zautomatyzować. Wykonanie kopii zapasowej, rotacja logów, porządki na dysku. W przypadku baz danych jest podobnie. MySQL dobrze robi regularne uaktualnianie statystyk tabel (ANALYZE TABLE) czy defragmentacja (OPTIMIZE TABLE). Gdy stosujemy logowanie do tabel, dobrze by było także te tabele zrotować. Zazwyczaj tego typu zadania realizowane są przy  pomocy skryptów uruchamianych z crona. Co jednak zrobić, gdy nie mamy do crona dostępu, bądź po prostu chcemy trzymać w bazie wszystko co bazy dotyczy?

czytaj dalej…

Mniej więcej tydzień temu w sieci pojawiła się informacja że przygotowywana zostaje trzecia edycja książki High Performance MySQL. Druga edycja ukazała się w 2008 roku i właściwie do tej pory, pomimo wieku, jest podstawową lekturą dla każdego zainteresowanego analizą i poprawą wydajności MySQL. Co prawda, pochodzi z czasów gdy MySQL 5.1 jeszcze nie było wersją stabilną a o InnoDB plugin nikt jeszcze nie marzył, ale i tak informacje w niej zawarte są przydatne w codziennej pracy administratora MySQL.

Jeśli któryś z Czytelników administrujących MySQL nie miał jeszcze okazji przeczytać tej książki, to na początku przyszłego roku będzie miał ku temu znakomitą możliwość. Polecam.

Przerwa

Wrz 16

Dziś, pomiędzy 15 a 22 blog może nie być dostępny przez pewien czas. Mam nadzieję, że nie będzie to trwało długo, ale na wszelki wypadek proszę o cierpliwość.

MySQL udostępnia ciekawe, aczkolwiek nie tak popularne narzędzie, które pomaga administratorowi zoptymalizować strukturę bazy danych. W dzisiejszym poście będzie kilka informacji na temat tego co to jest, jak tego używać i dlaczego stosowanie tego narzędzia nie jest takim głupim pomysłem.
czytaj dalej…

Tym razem krótki wpis. Jeśli ktoś z czytelników korzysta z zestawu skryptów Maatkit, to możliwe że przydatną informacją dla niego będzie to, że obecnie Maatkit nie jest już rozwijany. Jego rolę przejął nowy fork, którym opiekować się będą programiści Percony. Nowy zestaw skryptów nazywa się Percona Toolkit i jest dostępny między innymi na Launchpadzie: https://launchpad.net/percona-toolkit i na stronie Percony: http://www.percona.com/software/percona-toolkit/

czytaj dalej…