Przejdź do treści

MySQL – optymalizacja i wydajność

O pracy MySQL DBA – przemyślenia administratora

Archiwa

Archiwa z daty Marzec, 2011

Podczas wybierania sprzętu, na którym działać ma baza MySQL dużo uwagi zwraca się na rdzenie procesora, gigabajty pamięci, szybkość dysków twardych. Zdarza się, że umyka inny, bardzo ważny element. Mowa konkretnie o BBU (Battery Backup Unit), czyli po prostu o baterii do kontrolera. Dlaczego to jest tak ważne? Wykonałem prosty test aby to zobrazować.
czytaj dalej…

Replikacja – słowo klucz które utożsamiane jest z zaawansowaną technologię, skalowalnością, wysoką dostępnością danych. Wszystko zapowiada się znakomicie, projekt aplikacji wygląda pięknie na slajdach Keynote czy Powerpointa, przełożeni są oszołomieni możliwościami, jakie roztacza ta technologia. Pytanie tylko, czy replikacja faktycznie jest dla Ciebie?
czytaj dalej…

Czasami, w trakcie prac administracyjnych, pojawia się taka konieczność zmiany nazwy tabeli czy bazy danych. W jaki sposób można to zrobić w przypadku MySQL?
Jeśli chodzi o zmianę nazwy tabeli sprawa jest łatwa:

RENAME TABLE tabela1 TO tabela2;

Czy można zmienić w podobny sposób nazwę bazy danych?

czytaj dalej…

Pewien czas temu miałem okazję zetknąć się z kolejnym przeciążonym serwerem. Ni z tego ni z owego obciążenie podsystemu dyskowego wzrosło kilkukrotnie, co spowodowało praktycznie pad całej maszyny fizycznej. Na szczęście serwer był monitorowany, tak więc miałem dostęp do danych z pewnego okresu czasu dotyczących stanu serwera – widać w nich było pewien wzrost zapotrzebowania na pamięć przez serwer Apache, który współdzielił serwer z MySQL. Co się stało?
czytaj dalej…

Dziś bardzo krótko, tak tylko w ramach przypomnienia dla tych, którzy śledzą bloga od niedawna i nie przeglądali archiwalnych postów. Lista IN() – wygodna konstrukcja, która zazwyczaj jest szybka i wydajna. Problem pojawia się w momencie, gdy zamiast listy argumentów do IN() wrzucimy podzapytanie. Dlaczego to jest złe, pisałem dokładnie w tym poście:

Lista IN() i podzapytania

Wspominam o tym ponownie, bo po raz kolejny miałem okazję widzieć serwer umierający pod naporem tego typu zapytań. Zapytań, które można stosunkowo prosto przepisać i które mogą być wydajne. Tyle tylko że w trochę innej postaci niż ta najbardziej „logiczna” z punktu widzenia SQL i programisty. Pamiętajmy o tym że optimizer MysQL nie koniecznie jest logiczny. Aby pisać wydajne zapytania trzeba znać jego mocne i słabe strony, nie wystarczy napisać poprawny kod SQL.