Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 11711|Svar: 0

[Källa] MySQL-konfigurationsfilen my.cnf förklaras i detalj

[Kopiera länk]
Publicerad på 2017-11-13 11:55:59 | | |
Justera MySQL-körparametrar, ändra filen /etc/my.cnf Justera MySQL-körparametrar så att de träder i kraft efter omstart av MySQL, efter MySQL 4-versionen kan vissa interna variabler ställas in vid MySQL-runtime, men de blir ogiltiga när MySQL startas om.
MySQLD-program - kataloger och filer
basedir = sökväg # Använd den givna katalogen som rotkatalog (installationskatalog).
Datadir = Path # Läs databasfilen från en given katalog.
pid-file = filnamn # Ange en fil för mysqld-programmet för att lagra process-ID (endast tillgängligt för UNIX/Linux-system);

[mysqld]                        
socket = /tmp/mysql.sock # Specificerar en socket-fil för lokal kommunikation mellan MySQL-klientprogrammet och servern (standardfilen är /var/lib/mysql/mysql.sock på Linux)
port=3306 # Specificerar porten som MsSQL lyssnar efter
key_buffer = 384M # key_buffer är storleken på bufferten som används för att indexera block, vilket ökar indexet den hanterar bättre (för alla läsningar och multiskrivningar).
                               Indexblocket buffras och delas av alla trådar, och storleken på key_buffer beror på minnesstorleken.
table_cache = 512 # Antalet tabeller öppna för alla trådar. Att öka detta värde ökar antalet fildeskriptorer som krävs av mysqld. Det undviker överhuvudet med att ofta öppna datatabeller
sort_buffer_size = 2M # Allokera en buffert av den storleken för varje tråd som behöver sorteras. Att höja detta värde accelererar ORDER BY eller GROUP BY-operationer.
                               Observera: Det allokerade minnet som motsvarar denna parameter är exklusivt för varje anslutning! Om det finns 100 anslutningar är den totala sorteringsbufferten faktiskt tilldelad 100×6 = 600 MB
read_buffer_size = 2M # Storleken på bufferten som kan användas för läsfrågeoperationen. Precis som med sort_buffer_size är det allokerade minnet som motsvarar denna parameter också exklusivt för varje anslutning.
query_cache_size = 32M # Specificerar storleken på MySQL-frågeresultatbufferten
read_rnd_buffer_size = 8M # Ändra parametern som ska läsas slumpmässigt efter sortering med radpekaren.
myisam_sort_buffer_size =64M # Buffert krävs för att omordna MyISAM-tabeller när de ändras
thread_concurrency = 8 # Det maximala antalet samtidiga trådar sätts som antalet serverns logiska CPU:er ×2, och om CPU:n stödjer H.T-hypertrådning, × 2
thread_cache = 8 # #缓存可重用的线程数
skip-locking # undviker extern låsning av MySQL, minskar risken för fel och förbättrar stabiliteten.
[mysqldump]
max_allowed_packet =16M # Det maximala möjliga informationspaketet som kan skickas mellan servern och klienten

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

Andra valfria parametrar:
back_log = 384
    Specificerar antalet möjliga anslutningar för MySQL.
    När MySQL-huvudtråden tar emot ett mycket stort antal anslutningsförfrågningar på mycket kort tid träder denna parameter i kraft, och huvudtråden tar kort tid på sig att kontrollera anslutningen och starta en ny tråd.
    Värdet på back_log parameter anger hur många förfrågningar som kan lagras i stacken under en kort tid innan MySQL tillfälligt slutar svara på nya förfrågningar.
    Om systemet har många anslutningar under en kort tidsperiod är det nödvändigt att öka värdet på denna parameter, som specificerar storleken på lyssningskön för inkommande TCP/IP-anslutningar.
    Att försöka sätta en gräns som back_log högre än ditt operativsystem kommer att vara ineffektivt. Standardvärdet är 50. För Linux-system rekommenderas att sätta ett heltal mindre än 512.
max_connections = n
    Det maximala antalet databasanslutningar som MySQL-servern kan hantera samtidigt (standardinställningen är 100). Om gränsen överskrids rapporteras felet för många anslutningar
key_buffer_size = n
    RMA-värde för indexblock (standardinställning är 8M), vilket ökar indexet för bättre hantering (för alla läsningar och multiskrivningar)
record_buffer:
    Varje tråd som utför en sekventiell skanning tilldelar en buffert av denna storlek till varje tabell den skannar i.
    Om du gör många sekventiella skanningar kan det vara värt att öka det värdet. Standardvärdet är 131072 (128K)
wait_timeout:
    Antalet sekunder servern väntar på att en anslutning ska agera innan den stängs ner.
interactive_timeout:
    Antalet sekunder servern väntar på handling på en interaktiv anslutning innan den stängs ner.
    En interagerande kund definieras som en kund som använder CLIENT_INTERACTIVE-alternativet för mysql_real_connect().
    Standardvärdet är 28800, du kan ändra det till 3600.
hoppa-namn-lösa            
    Inaktivera MySQL från DNS-lösning på externa anslutningar, och med detta alternativ elimineras tiden det tar för MySQL att lösa DNS.
    Det bör dock noteras att om detta alternativ är aktiverat måste all fjärrvärdanslutningsauktorisation använda IP-adressmetoden, annars kan MySQL inte behandla anslutningsförfrågan normalt!
log-slow-queries = slow.log
    Spela in långsamma frågor och optimera dem en efter en
Skip-Innodb
skip-bdb
    Stäng oönskade tabelltyper och lägg inte till detta om du behöver
         
         
# > VISAR VARIABLER SOM '%query_cache%';
# > VISAR STATUS SOM 'Qcache%';
Om Qcache_lowmem_prunes värdet är mycket stort indikerar det ofta att det finns otillräcklig buffring;
Om värdet på Qcache_hits är mycket stort indikerar det att frågebufferten används mycket ofta, och om värdet är litet men påverkar effektiviteten kan du överväga att inte använda frågebuffring.
Om Qcache_free_blocks-värdet är mycket stort indikerar det att det finns mycket skräp i bufferten.


##########################################
###### max_allowed_packet      ######
##########################################
Ett kommunikationspaket är ett enda SQL-uttalande som skickas till MySQL-servern eller en enda rad till klienten.
Det maximala möjliga paketet som kan skickas mellan MySQL 5.1-servern och klienten är 1 GB.
När en MySQL-klient eller mysqld-server tar emot ett paket större än max_allowed_packet byte, utfärdas ett felmeddelande "paketet är för stort" och anslutningen stängs. För vissa klienter, om kommunikationspaketet är för stort, kan du stöta på felet "Förlust av anslutning till MySQL-server" under frågan.
Både klienten och servern har sina egna max_allowed_packet variabler, så om du planerar att hantera stora paket måste du lägga till den variabeln både på klienten och servern.
Om du använder ett mysql-klientprogram är dess max_allowed_packet variabel standardinställning till 16MB. För att sätta ett större värde kan du starta MySQL på följande sätt:
mysql> mysql --max_allowed_packet=32M
Den sätter storleken på informationspaketet till 32 MB.
Standardvärdet max_allowed_packet servern är 1 MB. Om servern behöver behandla stora frågor kan du öka detta värde (till exempel om du förbereder dig för att bearbeta stora blobkolumner). Till exempel, för att ställa in den till 16 MB kan du starta servern på följande sätt:
mysql> mysqld --max_allowed_packet=16M

Du kan också använda optionsfiler för att ställa in max_allowed_packet. För att sätta denna variabel för servern till 16 MB, lägg till nedlänksinnehåll i optionsfilen:
[mysqld]
max_allowed_packet=16M
Det är säkert att öka värdet på denna variabel eftersom extra minne bara allokeras när det behövs. Till exempel kommer mysqld att allokera mer minne endast om du gör en lång förfrågan eller om mysqld måste returnera stora resultatrader. Det lilla standardvärdet för denna variabel är en försiktighetsåtgärd för att fånga felpaket mellan klient och server och för att säkerställa att minnesöverflöden inte orsakas av oavsiktlig användning av stora paket.
Om du använder stora blob-värden och inte ger mysqld-behörighet att komma åt tillräckligt med minne för att bearbeta frågor, kommer du också att stöta på konstiga problem relaterade till stora paket. Om du misstänker att så är fallet, försök börja öka ulimit -d 256000 i mysqld_safe skript och starta om mysqld.
##########################################
##### Hur man öppnar och stänger databastabeller i MySQL #####
##########################################
table_cache, max_connections och max_tmp_tables påverkar det maximala antalet filer som servern håller öppna. Om du ökar ett eller båda dessa värden kan du stöta på den begränsning som operativsystemet sätter på antalet fildeskriptorer som varje process öppnar. Du kan dock höja gränsen på många system. Be din OS-dokumentation ta reda på hur man gör detta, eftersom metoderna för att ändra gränserna varierar mycket från system till system.
table_cache relaterat till max_connections. Till exempel, för 200 öppna joins bör du ha en tabellbuffert på minst 200 * n, där n är det maximala antalet tabeller i en join.
Cachen av öppna tabeller kan ökas till maximalt en table_cache (64 som standard; Detta kan göras med mysqlds -O table_cache=#选项来改变). En tabell stängs aldrig, förutom när cachen är full och en annan tråd försöker öppna en tabell eller om du använder mysqladmin refresh eller mysqladmin flush-tables.
När tabellcachen är full använder servern följande procedur för att hitta en cachepost att använda:
Tabeller som inte används för närvarande släpps, i ordningen av minst använda (LRU).
Om cachen är full och det inte finns några tabeller att släppa, men en ny tabell behöver öppnas, måste cachen tillfälligt utökas.
Om cachen är i ett tillfälligt expanderat tillstånd och en tabell ändras från aktiv till inaktiv, stängs den och släpps från cachen.
Öppna en tabell för varje samtidiga åtkomst. Det betyder att om du har två trådar som kommer åt samma tabell eller som använder tabellen två gånger i samma fråga (med AS), måste tabellen öppnas två gånger. Den första öppningen av en tabell tar hänsyn till två filbeskrivare; Varje ytterligare användning av tabellen tar endast hänsyn till en filbeskrivare. För den första öppningen används en extra beskrivare för att indexera filen; Denna beskrivning delas mellan alla trådar




Föregående:Förstå katalogen /etc/init.d och /etc/rc.local-skripten på Linux-system
Nästa:Hur man bekräftar att MySQL-tjänsten har startats under Linux CentOS
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com