Korzyści z Barracuda i kompresji

12

Czytałem już o formatach plików MySQL Antelope i Barracuda i zastanawiam się, czy mógłbym skorzystać z Barracudy i Kompresji.

Mój serwer używa obecnie Antelope, ponieważ jest to domyślna wersja MySQL.
Wielokrotnie miałem problemy z pamięcią z powodu dużej bazy danych, którą mam. Moja baza danych powiększa się każdego dnia.

Wygląda na to, że kompresja przynosi korzyści kilku osobom, takim jak:
http://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/

Rozumiem, że pamięć i miejsce na dysku mogą być mniejsze, ale nie jestem pewien, czy rozumiem to (cytowany z artykułu):
„~ 5% obciążenia procesora według góry (od 80-100% głównie czeka na operacje we / wy)
0,01 średni czas wyszukiwania według klucza głównego (od 1 do 20 sekund przed konwersją) „

Myślałem, że te dwie rzeczy NIE poprawią się, ponieważ jeśli dane zostaną skompresowane, serwer musi się rozpakować, aby ponownie uzyskać oryginalne dane, więc czy to nie ma sensu, że użycie procesora wzrosłoby?

Czy przynosi to korzyści w aplikacjach intensywnie czytających / piszących? Czy poleciłbyś mi przejście na Barracuda i Kompresję?

Czy znasz jakieś problemy z Barracuda?
Wydaje się, że odpowiedź na następujące pytanie wskazuje na kilka problemów, ale ponieważ pochodzi z 2011 roku, powiedziałbym, że zostały one już naprawione: /server/258022/mysql-innodb-how-to-switch -do-barakudy

Nuno
źródło

Odpowiedzi:

14

Jeśli chodzi o „Dynamic” , nieskompresowany format zawierający tylko Barracuda, niewiele zmieniło się od kompaktowych, głównie w zakresie sposobu przechowywania obiektów blob (i dowolnych bardzo dynamicznych pól) . Nigdy nie miałem problemów z kompaktowaniem vs. dynamiką, więc mogę spokojnie polecić dynamikę Barracudy. Pamiętaj, że Barracuda obsługuje również stare nadmiarowe i kompaktowe formaty wierszy .

Artykuł, który wspominasz, jest prawdopodobnie zbyt stary (5.1) i, jak wspomina Peter Z., CEO Percona, w komentarzach może być nieco mylący. To nie znaczy, że kompresja nie może być ogromnym zyskiem w zależności od obciążeń. Polecam jednak wypróbowanie go w wersjach> = 5.6, ponieważ zarówno Facebook, jak i Oracle wprowadziły wiele ulepszeń.

Jako nowsze materiały referencyjne polecam Ci:

W szczególności lubię materiały z Facebooka, ponieważ są one stronami trzecimi (nie potrzeba agendy) i mają jedno z największych wdrożeń MySQL na świecie. Jak widać, mieli bardzo udane konfiguracje łączące technologię SSD z kompresją.

Czy ci to przyniesie korzyść? Będzie to zależeć od obciążenia, zestawu roboczego i konfiguracji (IOPS, pamięć) . W zależności od tego, czy jesteś związany IO, CPU czy pamięcią, kompresja może wpływać negatywnie w niektórych przypadkach, dodając dodatkowy procesor, wymagania dotyczące pamięci (zarówno skompresowane, jak i nieskompresowane strony są przechowywane w puli buforów InnoDB) lub generując zbyt wiele błędów kompresji, augmentacja opóźnienie. Zależy to również od rodzaju danych: kompresja może bardzo pomóc w przypadku dużych obiektów blob tekstowych, ale może być bezużyteczna w przypadku już skompresowanych danych.

Z mojego doświadczenia wynika, że ​​w praktyce są ludzie, dla których kompresja była świętym graalem wydajności i są z tego bardzo zadowoleni, ale w innych przypadkach musieliśmy powrócić do nieskompresowanych danych, ponieważ nie uzyskano żadnego wzmocnienia. Podczas gdy bardzo duże obciążenie związane z pisaniem może wydawać się złym środowiskiem do kompresji, jeśli w twoim konkretnym przypadku nie jesteś związany procesorem i pamięcią, ale związany z iops, może być nie mniej pomocny.

Zasadniczo bardzo trudno jest przewidzieć wyniki, zwykle powinieneś skonfigurować środowisko testowe do testów porównawczych, a następnie dowiedzieć się, dlaczego osiągasz lepsze lub gorsze wyniki (i w ten sposób możesz grać z różnymi rozmiarami bloków itp.). Barracuda jest całkowicie bezpieczny. Kompresja może być dla Ciebie. I zawsze możesz eksperymentować z innymi metodami kompresji, takimi jak kompresja obiektów blob po stronie klienta (na przykład, jeśli skończysz procesorem) lub inne silniki innych firm, takie jak RocksDB i TokuDB , w których kompresja jest dużym priorytetem, ponieważ jest skoncentrowana w wydajności dla większych zestawów danych niż InnoDB może obsłużyć.

W skrócie: Główne powody korzystania z Barracuda to obsługa BLOB, innodb_large_prefixkompatybilność (duże indeksy) i kompresja. Dynamiczny, w MySQL 8.0 jest teraz domyślnym formatem plików.

jynus
źródło
1
To naprawdę NIESAMOWITA i jasna odpowiedź! Ma to sens i jest dokładnie tym rodzajem odpowiedzi, którego pragnąłem. Wspominacie o MySQL 5.6 (do tego właśnie zaktualizowałem ostatnio) i podam przykład Facebooka, jak mi się podoba, ponieważ zwykle muszą oni stawić czoła wyzwaniom przed wszystkimi innymi. Niestety nie będzie łatwo przetestować tego w pierwszej kolejności, ponieważ środowisko testowe nie będzie miało takiego samego obciążenia procesora / IO / RAM co produkcja, ale w rzeczywistości będę musiał spróbować! Dziękuję Ci bardzo za Twój czas.
Nuno,
Format wiersza można wybrać na poziomie tabeli, co może dać ci pewną elastyczność w testowaniu na produkcji (po prawidłowym przetestowaniu na oddzielnej maszynie). Takie podejście może jednak utrudnić debugowanie i analizę porównawczą.
jynus
Tak, prawdopodobnie mógłbym najpierw spróbować przekonwertować kilka tabel (być może te, które nie są tak duże / używane). Jednak w przypadku dużych wymagałoby to kilku przestojów, a nie tylko jednego przestoju, w którym wszystkie zostałyby przekonwertowane jednocześnie. Będę musiał zobaczyć, jakie jest najlepsze podejście. Nie rozumiem jednak, dlaczego utrudniłoby to debugowanie. Co dokładnie masz na myśli? Dziękuję Ci bardzo.
Nuno,
1
Masz narzędzia, takie jak pt-online-schema-change percona.com/doc/percona-toolkit/2.2/..., aby odtwarzać tabele w trybie online. Właśnie wspomniałem, że mieszanie tylko niektórych tabel może utrudnić pomiar zmian procesora / pamięci / iops z powodu zmiany silnika i odróżnienia ich od normalnych zmian obciążenia lub ze względu na zmiany buforowania podczas odtwarzania. Trudno też zobaczyć na innym komputerze z innym sprzętem, więc powodzenia!
jynus
Na ZFS nie jest absolutnie źle, gdy używa się LZ4 w systemie plików.
Denis Denisov,