Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 11711|Odpowiedź: 0

[Źródło] Plik konfiguracyjny MySQL my.cnf jest szczegółowo wyjaśniony

[Skopiuj link]
Opublikowano 13.11.2017 11:55:59 | | |
Dostosuj parametry uruchamiania MySQL, zmodyfikuj plik /etc/my.cnf Dostosuj parametry uruchamiania MySQL tak, aby działały po ponownym uruchomieniu MySQL, po wersji MySQL 4 niektóre zmienne wewnętrzne można ustawić w czasie działania MySQL, ale podczas restartu MySQL to będzie nieważne.
program mysqld - katalogi i pliki
basedir = ścieżka # Użyj danego katalogu jako katalogu głównego (katalogu instalacyjnego).
datadir = ścieżka # Odczyt pliku bazy danych z danego katalogu.
pid-file = nazwa pliku # Określ plik, aby program mysqld przechowywał identyfikator procesu (dostępny tylko dla systemów UNIX/Linux);

[mysqld]                        
socket = /tmp/mysql.sock # Określa plik socket do lokalnej komunikacji między programem klient-MySQL a serwerem (domyślnie na Linuksie to plik /var/lib/mysql/mysql.sock)
port=3306 # Określa port, którego MsSQL nasłuchuje
key_buffer = 384M # key_buffer to rozmiar bufora używanego do indeksowania bloków, zwiększając indeks, który lepiej obsługuje (dla wszystkich odczytów i wielozapisów).
                               Blok indeksowy jest buforowany i współdzielony przez wszystkie wątki, a rozmiar key_buffer zależy od wielkości pamięci.
table_cache = 512 # Liczba tabel otwartych dla wszystkich wątków. Zwiększenie tej wartości zwiększa liczbę deskryptorów plików wymaganych przez mysqld. Unika to narzutu związanego z częstym otwieraniem tabel danych
sort_buffer_size = 2M # Przydziel bufor o takim rozmiarze dla każdego wątku, który wymaga posortowania. Zwiększenie tej wartości przyspiesza operacje ORDER BY lub GROUP BY.
                               Uwaga: Przydzielona pamięć odpowiadająca temu parametrowi jest wyłączna dla każdego połączenia! Jeśli jest 100 połączeń, to całkowity faktycznie przydzielony rozmiar bufora sortowania wynosi 100×6 = 600MB
read_buffer_size = 2M # Rozmiar bufora, który może być użyty do operacji zapytania odczytu. Podobnie jak w przypadku sort_buffer_size, przydzielona pamięć odpowiadająca temu parametrowi jest również wyłączna dla każdego połączenia.
query_cache_size = 32M # Określa rozmiar bufora wyników zapytań MySQL
read_rnd_buffer_size = 8M # Zmień parametr, który ma być odczytywany losowo po sortowaniu, używając wskaźnika wiersza.
myisam_sort_buffer_size =64M # Bufor potrzebny do zmiany kolejności tabel MyISAM w razie ich zmian
thread_concurrency = 8 # Maksymalna liczba współbieżnych wątków ustalana jest jako liczba logicznych procesorów serwera ×2, a jeśli procesor obsługuje hiperwątkowanie H.T, × 2
thread_cache = 8 # #缓存可重用的线程数
skip-locking # unika zewnętrznego blokowania MySQL, zmniejsza ryzyko błędów i zwiększa stabilność.
[mysqldump]
max_allowed_packet =16M # Maksymalna możliwa liczba pakietów informacji, jaką można przesłać między serwerem a klientem

[myisamchk]
key_buffer = 256M
sort_buffer = 256M
read_buffer = 2M
write_buffer = 2M

Inne opcjonalne parametry:
back_log = 384
    Określa liczbę możliwych połączeń dla MySQL.
    Gdy główny wątek MySQL otrzyma bardzo dużą liczbę żądań połączenia w bardzo krótkim czasie, ten parametr wchodzi w działanie i wątek główny potrzebuje krótkiego czasu na sprawdzenie połączenia i rozpoczęcie nowego wątku.
    Wartość parametru back_log wskazuje, ile żądań można przechowywać w stosie przez krótki czas, zanim MySQL tymczasowo przestanie odpowiadać na nowe żądania.
    Jeśli system ma wiele połączeń w krótkim czasie, konieczne jest zwiększenie wartości tego parametru, który określa wielkość kolejki nasłuchowej dla przychodzących połączeń TCP/IP.
    Próba ustawienia limitu back_log wyższego niż Twój system operacyjny będzie nieskuteczna. Domyślna wartość to 50. W przypadku systemów Linux zaleca się ustawienie liczby całkowitej mniejszej niż 512.
max_connections = n
    Maksymalna liczba połączeń bazy danych, jaką serwer MySQL może obsłużyć jednocześnie (domyślne ustawienie to 100). Jeśli limit zostanie przekroczony, zostanie zgłoszony błąd Zbyt wiele połączeń
key_buffer_size = n
    Wartość RMA dla bloków indeksowych (domyślne ustawienie to 8M), zwiększające indeks dla lepszego zarządzania (dla wszystkich odczytów i wielozapisów)
record_buffer:
    Każdy wątek wykonujący sekwencyjne skanowanie przydziela bufor tej wielkości do każdej skanowanej tabeli.
    Jeśli robisz dużo sekwencyjnych skanów, warto zwiększyć tę wartość. Domyślna wartość to 131072 (128K)
wait_timeout:
    Liczba sekund, w których serwer czeka na działanie połączenia, zanim je wyłączy.
interactive_timeout:
    Liczba sekund, w których serwer czeka na działanie na interaktywnym połączeniu, zanim je wyłączy.
    Klient wchodzący w interakcję definiowany jest jako klient, który korzysta z opcji CLIENT_INTERACTIVE dla mysql_real_connect().
    Domyślna wartość to 28800, możesz zmienić na 3600.
skip-name-resolve            
    Wyłącz MySQL z rozwiązywania DNS na zewnętrznych połączeniach, a użycie tej opcji eliminuje czas potrzebny na rozwiązywanie DNS przez MySQL.
    Należy jednak zauważyć, że jeśli ta opcja jest włączona, cała autoryzacja połączenia zdalnego hosta musi korzystać z metody adresów IP, w przeciwnym razie MySQL nie będzie w stanie normalnie przetworzyć żądania połączenia!
log-slow-queries = slow.log
    Rejestruj wolne zapytania i optymalizuj je pojedynczo
skip-innodb
skip-bdb
    Zamykaj niechciane typy tabel i nie dodawaj tego, jeśli musisz
         
         
# > POKAZYWAĆ ZMIENNE TAKIE JAK '%query_cache%';
# > STATUS PROGRAMU TYPU 'Qcache%';
Jeśli wartość Qcache_lowmem_prunes jest bardzo duża, oznacza to, że często jest niewystarczające buforowanie;
Jeśli wartość Qcache_hits jest bardzo duża, oznacza to, że bufor zapytań jest używany bardzo często, a jeśli wartość jest mała, ale wpływa na efektywność, można rozważyć rezygnację z buforowania zapytań.
Jeśli wartość Qcache_free_blocks jest bardzo duża, oznacza to, że w buforze jest dużo zanieczyszczeń.


##########################################
###### max_allowed_packet      ######
##########################################
Pakiet komunikacyjny to pojedyncze wyrażenie SQL wysyłane do serwera MySQL lub pojedyncza linia do klienta.
Maksymalna możliwa ilość pakietów, jaką można wysłać między serwerem MySQL 5.1 a klientem, to 1 GB.
Gdy klient MySQL lub serwer mysqld otrzyma pakiet większy niż max_allowed_packet bajtów, pojawia się błąd "pakiet jest zbyt duży" i połączenie zostaje zamknięte. Dla niektórych klientów, jeśli pakiet komunikacyjny jest zbyt duży, podczas zapytania może pojawić się błąd "Utrata połączenia z serwerem MySQL".
Zarówno klient, jak i serwer mają własne zmienne max_allowed_packet, więc jeśli planujesz obsługiwać duże pakiety, musisz dodać tę zmienną zarówno na kliencie, jak i serwerze.
Jeśli używasz programu klienta mysql, jego zmienna max_allowed_packet domyślnie wynosi 16MB. Aby ustawić większą wartość, możesz uruchomić mysql w następujący sposób:
mysql> mysql --max_allowed_packet=32M
Ustawia rozmiar pakietu informacyjnego na 32MB.
Domyślna wartość max_allowed_packet dla serwera to 1MB. Jeśli serwer musi przetwarzać duże zapytania, możesz zwiększyć tę wartość (na przykład, jeśli przygotowujesz się do przetwarzania dużych kolumn blobów). Na przykład, aby ustawić 16MB, możesz uruchomić serwer w następujący sposób:
mysql> mysqld --max_allowed_packet=16M

Możesz też użyć plików opcji do ustawienia max_allowed_packet. Aby ustawić tę zmienną dla serwera na 16MB, dodaj zawartość downlinku do pliku opcji:
[mysqld]
max_allowed_packet=16M
Bezpiecznie jest zwiększyć wartość tej zmiennej, ponieważ dodatkowa pamięć jest przydzielana tylko wtedy, gdy jest potrzebna. Na przykład mysqld przydzieli więcej pamięci tylko wtedy, gdy wykonasz długie zapytanie lub mysqld musi zwracać duże linie wyników. Mała wartość domyślna tej zmiennej jest środkiem ostrożnościowym mającym na celu wykrycie błędów między klientem a serwerem oraz zapewnienie, że przepełnienia pamięci nie są spowodowane przypadkowym użyciem dużych pakietów.
Jeśli używasz dużych wartości blobów i nie przyznajesz uprawnienia mysqld do dostępu do wystarczającej ilości pamięci do przetwarzania zapytań, napotkasz też dziwne problemy związane z dużymi pakietami. Jeśli podejrzewasz, że tak jest, spróbuj zacząć zwiększać ulimit -d 256000 w mysqld_safe skrypcie i zrestartuj mysqld.
##########################################
##### Jak otwierać i zamykać tabele bazy danych w MySQL #####
##########################################
table_cache, max_connections i max_tmp_tables wpływają na maksymalną liczbę plików, które serwer utrzymuje otwartych. Jeśli zwiększysz jedną lub obie te wartości, możesz napotkać limit narzucony przez system operacyjny dotyczący liczby deskryptorów plików, które otwiera każdy proces. Jednak w wielu systemach można zwiększyć limit. Poproś dokumentację systemu operacyjnego, aby dowiedzieć się, jak to zrobić, ponieważ metody zmiany limitów bardzo różnią się w zależności od systemu.
table_cache związane z max_connections. Na przykład, dla 200 otwartych połączeń powinieneś mieć bufor tabelowy co najmniej 200 * n, gdzie n to maksymalna liczba tabel w połączeniu.
Cache otwartych tabel można zwiększyć maksymalnie do jednego table_cache (domyślnie 64; Można to zrobić za pomocą -O table_cache=#选项来改变 w mysqld). Tabela nigdy nie jest zamykana, chyba że pamięć podręczna jest pełna i inny wątek próbuje otworzyć tabelę lub jeśli używasz mysqladmin refresh lub mysqladmin flush-tables.
Gdy bufor podręczny tabeli jest pełny, serwer stosuje następującą procedurę, aby znaleźć wpis pamięci podręcznej do użycia:
Tabele, które nie są obecnie używane, są udostępniane w kolejności najmniej używanej (LRU).
Jeśli pamięć podręczna jest pełna i nie ma tabel do zwolnienia, ale trzeba otworzyć nową tabelę, pamięć podręczna musi zostać tymczasowo powiększona.
Jeśli pamięć podręczna znajduje się w stanie tymczasowo rozszerzonym i tabela zmieni się z aktywnej na nieaktywną, zostaje zamknięta i zwolniona z pamięci.
Otwórz tabelę dla każdego równoległego dostępu. Oznacza to, że jeśli masz 2 wątki uchodzące do tej samej tabeli lub dwa razy w tym samym zapytaniu (z AS), tabela musi być otwarta dwukrotnie. Pierwsze otwarcie dowolnej tabeli obejmuje 2 deskryptory plików; Każde dodatkowe użycie tabeli odpowiada tylko za jeden deskryptor pliku. Przy pierwszym otwarciu do indeksowania pliku używa się dodatkowego deskryptora; Ten opis jest wspólny dla wszystkich wątków




Poprzedni:Zrozum katalog /etc/init.d oraz skrypty /etc/rc.local na systemach Linux
Następny:Jak potwierdzić, że usługa MySQL została uruchomiona na Linux CentOS
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com