MySQL to najszybciej rozwijający się system zarządzania relacyjnymi bazami danych typu open source z 100 milionami pobrań do tej pory. Jest to popularny wybór bazy danych do użytku w aplikacjach internetowych i jest obecnie używany przez wiele dużych witryn internetowych, w tym Facebook, Twitter, Wikipedia, Flickr, YouTube itp. Teraz poznajmy 10 najważniejszych interesujących faktów i wskazówek dotyczących MySQL.
Ciekawe fakty i wskazówki dotyczące MySQL
1. MySQL obsługuje do 64 indeksów na tabelę. Każdy indeks może składać się z 1 do 16 kolumn. Maksymalny rozmiar indeksu to 1000 bajtów (767 dla InnoDB).
2. Maksymalny rozmiar wiersza w tabeli MySQL to 65 535 bajtów. Maksymalna wartość liczby całkowitej ze znakiem to 2 147 483 647, a liczba całkowita bez znaku to 4 294 967 295. W mieszanej tabeli z CHAR i VARCHAR, MySQL zmieni CHAR na VARCHAR.
3. Jeśli indeks PRIMARY KEY lub UNIQUE składa się tylko z jednej kolumny o typie całkowitym, możesz również odnieść się do kolumny jako „_rowid” w instrukcjach SELECT.
4. Aby zmienić wartość AUTO_INCREMENT, użyj „ALTER TABLE
5. Aby ograniczyć publiczny dostęp do MySQL, użyj opcji „skip-networking” w pliku konfiguracyjnym. Gdy jest włączony, MySQL nasłuchuje tylko lokalnych połączeń gniazd i ignoruje wszystkie porty TCP. A parametr „bind-address”, który jest ustawiony na „127.0.0.1”, ogranicza dostęp do MySQL tylko dla hosta lokalnego.
6. Jeśli MySQL ma nawiązanych wiele połączeń (np. strona internetowa bez trwałych połączeń), możesz poprawić wydajność, ustawiając thread_cache_size na wartość niezerową. 16 to dobra wartość na początek. Zwiększaj wartość, dopóki twoje threads_created nie będą rosły zbyt szybko.
7. NO_AUTO_VALUE_ON_ZERO wyłącza automatyczną inkrementację dla 0. Tylko NULL generuje następny numer sekwencyjny. Ten tryb może być przydatny, jeśli w kolumnie AUTO_INCREMENT tabeli jest przechowywane 0. (Nawiasem mówiąc, przechowywanie 0 nie jest zalecaną praktyką.)
8. Opcje konfiguracyjne „innodb_analyze_is_persistent”, „innodb_stats_persistent_sample_pages” i „innodb_stats_transient_sample_pages” zapewniają lepszą dokładność statystyk indeksu InnoDB i spójność we wszystkich restartach MySQL. InnoDB wstępnie oblicza statystyki, które pomagają optymalizatorowi zdecydować, które indeksy użyć w zapytaniu, poprzez próbkowanie części indeksu. Możesz dostosować ilość próbkowania wykonywaną przez InnoDB dla każdego indeksu. Uzyskane statystyki mogą być teraz utrwalane po ponownym uruchomieniu serwera, zamiast być ponownie obliczane (i prawdopodobnie zmieniane) z powodu ponownych uruchomień i niektórych zdarzeń w czasie wykonywania. Dokładniejsze statystyki mogą poprawić wydajność zapytań, a aspekt trwałości może zapewnić stabilność wydajności zapytań. Gdy funkcja stałych statystyk jest włączona, statystyki są ponownie obliczane tylko wtedy, gdy jawnie uruchomisz ANALYZE TABLE dla tabeli.
9. InnoDB zwalnia pamięć związaną z otwartą tabelą, aby zmniejszyć obciążenie pamięci w systemach z ogromną liczbą tabel. Algorytm LRU wybiera tabele, które przeszły najdłużej bez dostępu. Aby zarezerwować więcej pamięci dla otwartych tabel, zwiększ wartość opcji konfiguracyjnej –table_definition_cache=#.
10. Ustaw parametr table_cache tak, aby odpowiadał liczbie otwartych tabel i jednoczesnych połączeń. Obserwuj wartość open_tables i jeśli szybko rośnie, musisz zwiększyć rozmiar „table_cache”. A dla parametru „open_file_limit” ustaw ten limit na 20+max_connections+table_cache*2. Jeśli masz złożone zapytania, „sort_buffer_size” i „tmp_table_size” mogą być bardzo ważne. Wartości będą zależeć od złożoności zapytania i dostępnych zasobów, ale zalecanymi punktami początkowymi są odpowiednio 4 Mb i 32 Mb.
Uwaga:są to wartości „na połączenie”. Dlatego podczas ustawiania tych parametrów weź pod uwagę obciążenie i dostępne zasoby. Na przykład sort_buffer_size jest przydzielany tylko wtedy, gdy MySQL musi wykonać sortowanie, uważaj, aby nie zabrakło pamięci.