Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 11711|Odgovoriti: 0

[Vir] MySQL konfiguracijska datoteka my.cnf je podrobno pojasnjena

[Kopiraj povezavo]
Objavljeno na 13. 11. 2017 11:55:59 | | |
Prilagodite parametre teka MySQL, spremenite datoteko /etc/my.cnf Prilagodite parametre teka MySQL, da začnejo veljati po ponovnem zagonu MySQL 4, po različici MySQL 4 je mogoče nekatere notranje spremenljivke nastaviti v času izvajanja MySQL, vendar bo to neveljavno, ko se MySQL ponovno zažene.
Mysqld program - imeniki in datoteke
basedir = pot # Uporabite dano mapo kot korensko mapo (namestitveni imenik).
datadir = pot # Preberi datoteko baze podatkov iz določene mape.
pid-file = ime datoteke # Določi datoteko za program mysqld za shranjevanje ID procesa (na voljo le za UNIX/Linux sisteme);

[mysqld]                        
socket = /tmp/mysql.sock # Določa socket datoteko za lokalno komunikacijo med MySQL odjemalskim programom in strežnikom (privzeta je /var/lib/mysql/mysql.sock datoteka na Linuxu)
port=3306 # Določa port, ki ga MsSQL posluša
key_buffer = 384M # key_buffer je velikost medpomnilnika, ki se uporablja za indeksiranje blokov, kar povečuje indeks, ki ga bolje obvladuje (za vsa branja in večpisanja).
                               Indeksni blok je medpomnilnik in ga delijo vse niti, velikost key_buffer pa je odvisna od velikosti pomnilnika.
table_cache = 512 # Število odprtih tabel za vse niti. Povečanje te vrednosti poveča število deskriptorjev datotek, ki jih zahteva mysqld. S tem se izogne obremenitvi s pogostim odpiranjem podatkovnih tabel
sort_buffer_size = 2M # Dodelite medpomnilnik te velikosti za vsako nit, ki jo je treba razvrstiti. Povečanje te vrednosti pospeši operacije ORDER BY ali GROUP BY.
                               Opomba: dodeljeni pomnilnik, ki ustreza temu parametru, je ekskluziven za vsako povezavo! Če je 100 povezav, je skupna dejansko dodeljena velikost sortirnega medpomnilnika 100×6 = 600MB
read_buffer_size = 2M # Velikost medpomnilnika, ki ga je mogoče uporabiti za operacijo poizvedbe branja. Tako kot pri sort_buffer_size je dodeljeni pomnilnik, ki ustreza temu parametru, prav tako ekskluziven za vsako povezavo.
query_cache_size = 32M # Določa velikost medpomnilnika z rezultati poizvedb MySQL
read_rnd_buffer_size = 8M # Spremenite parameter, ki se bere naključno po razvrščanju, z uporabo kazalca na vrstico.
myisam_sort_buffer_size =64M # Predpomnilnik je potreben za preurejanje MyISAM tabel, ko se spremenijo
thread_concurrency = 8 # Največje število sočasnih niti je nastavljeno kot število logičnih procesorjev strežnika ×2, če procesor podpira H.T hiperthreading, × 2
thread_cache = 8 # #缓存可重用的线程数
skip-locking # preprečuje zunanjo zaklepanje MySQL, zmanjšuje možnost napak in izboljšuje stabilnost.
[mysqldump]
max_allowed_packet =16M # Največji možni paket informacij, ki ga je mogoče poslati med strežnikom in odjemalcem

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

Drugi neobvezni parametri:
back_log = 384
    Določa število možnih povezav za MySQL.
    Ko glavna nit MySQL v zelo kratkem času prejme zelo veliko število zahtevkov za povezavo, ta parameter začne veljati, glavna nit pa potrebuje kratek čas, da preveri povezavo in začne novo nit.
    Vrednost parametra back_log označuje, koliko zahtevkov je mogoče shraniti v sklad za kratek čas, preden MySQL začasno preneha odgovarjati na nove zahteve.
    Če ima sistem v kratkem času veliko povezav, je potrebno povečati vrednost tega parametra, ki določa velikost čakalne vrste za dohodne TCP/IP povezave.
    Poskušati postaviti omejitev, ki back_log višja od tvojega operacijskega sistema, ne bo učinkovita. Privzeta vrednost je 50. Za Linux sisteme je priporočljivo nastaviti celo število manjše od 512.
max_connections = n
    Največje število povezav z bazo podatkov, ki jih lahko MySQL strežnik obdela hkrati (privzeta nastavitev je 100). Če je omejitev presežena, bo prijavljena napaka Preveč povezav
key_buffer_size = n
    RMA vrednost za indeksne bloke (privzeta nastavitev je 8M), poveča indeks za boljšo obdelavo (za vse branje in večzapise)
record_buffer:
    Vsaka nit, ki izvede zaporedni pregled, dodeli medpomnilnik te velikosti vsaki tabeli, ki jo skenira.
    Če izvajate veliko zaporednih skeniranj, boste morda želeli to vrednost povečati. Privzeta vrednost je 131072 (128K)
wait_timeout:
    Število sekund, ki jih strežnik čaka na akcijo na povezavi, preden jo izklopi.
interactive_timeout:
    Število sekund, ki jih strežnik čaka na akcijo na interaktivni povezavi, preden ga izklopi.
    Stranka, ki interagira, je definirana kot stranka, ki uporablja možnost CLIENT_INTERACTIVE za mysql_real_connect().
    Privzeta vrednost je 28800, lahko jo spremeniš na 3600.
preskoči-ime-reši            
    Onemogočite razreševanje DNS MySQL na zunanjih povezavah, uporaba te možnosti pa odpravi čas, ki ga MySQL potrebuje za rešitev DNS.
    Vendar je treba poudariti, da če je ta možnost omogočena, mora vsa avtorizacija povezave na oddaljenem gostitelju uporabljati metodo IP naslova, sicer MySQL ne bo mogel normalno obdelati zahteve za povezavo!
log-slow-queries = slow.log
    Beležite počasne poizvedbe in jih optimizirajte eno za drugo
skip-innodb
skip-bdb
    Zapri nezaželene vrste tabel in tega ne dodajaj, če je treba.
         
         
# > PRIKAZUJEJO SPREMENLJIVKE, KOT SO '%query_cache%';
# > STATUS ODDAJE, KOT JE 'Qcache%';
Če je vrednost Qcache_lowmem_prunes zelo velika, to pomeni, da pogosto ni dovolj predpomnjevanja;
Če je vrednost Qcache_hits zelo velika, to pomeni, da se medpomnilnik za poizvedbe uporablja zelo pogosto, in če je vrednost majhna, a vpliva na učinkovitost, lahko razmislite, da ne uporabite medpomnjenja poizvedb.
Če je vrednost Qcache_free_blocks zelo velika, to pomeni, da je v medpomnilniku veliko ostankov.


##########################################
###### max_allowed_packet      ######
##########################################
Komunikacijski paket je en sam SQL stavek, poslan strežniku MySQL ali ena vrstica odjemalcu.
Največji možni paket, ki ga je mogoče poslati med strežnikom MySQL 5.1 in odjemalcem, je 1 GB.
Ko MySQL odjemalec ali mysqld strežnik prejme paket večji od max_allowed_packet bajtov, se pojavi napaka "paket je prevelik" in povezava se prekine. Pri nekaterih odjemalcih, če je komunikacijski paket prevelik, se lahko med poizvedbo pojavi napaka "Izguba povezave z MySQL strežnikom".
Tako odjemalec kot strežnik imata svoje max_allowed_packet spremenljivke, zato, če nameravate obdelovati velike pakete, morate to spremenljivko dodati tako na odjemalca kot na strežnik.
Če uporabljaš mysql odjemalski program, je max_allowed_packet spremenljivka privzeta na 16MB. Za nastavitev večje vrednosti lahko začnete mysql na naslednji način:
mysql> mysql --max_allowed_packet=32M
Velikost informacijskega paketa nastavi na 32MB.
Privzeta vrednost max_allowed_packet za strežnik je 1MB. Če strežnik mora obdelati velike poizvedbe, lahko to vrednost povečate (na primer, če se pripravljate na obdelavo velikih stolpcev). Na primer, za nastavitev na 16 MB lahko zaženete strežnik takole:
mysql> mysqld --max_allowed_packet=16M

Za nastavitev max_allowed_packet lahko uporabite tudi datoteke z nastavitvami. Za nastavitev te spremenljivke za strežnik na 16 MB dodajte vsebino za navzdol v datoteko z nastavitvami:
[mysqld]
max_allowed_packet=16M
Varno je povečati vrednost te spremenljivke, saj se dodatni pomnilnik dodeli le, ko je to potrebno. Na primer, mysqld bo dodelil več pomnilnika le, če izvedete dolgo poizvedbo ali če mora mysqld vrniti velike vrstice rezultatov. Majhna privzeta vrednost te spremenljivke je previdnostni ukrep za zaznavanje napak med odjemalcem in strežnikom ter za zagotovitev, da prelivanja pomnilnika niso posledica nenamerne uporabe velikih paketov.
Če uporabljate velike vrednosti blob in ne podeljujete dovoljenja mysqld za dostop do dovolj pomnilnika za obdelavo poizvedb, boste naleteli tudi na nenavadne težave, povezane z velikimi paketi. Če sumite, da je temu tako, poskusite začeti povečevati ulimit -d 256000 v mysqld_safe skripti in ponovno zaženite mysqld.
##########################################
##### Kako odpreti in zapreti tabele baze podatkov v MySQL #####
##########################################
table_cache, max_connections in max_tmp_tables vplivajo na največje število datotek, ki jih strežnik ohranja odprte. Če povečate eno ali obe vrednosti, lahko naletite na omejitev, ki jo vaš operacijski sistem določa glede števila deskriptorjev datotek, ki jih vsak proces odpre. Vendar pa lahko omejitev povečate na mnogih sistemih. Prosite svojo OS dokumentacijo, kako to storiti, saj se metode spreminjanja omejitev močno razlikujejo od sistema do sistema.
table_cache povezano z max_connections. Na primer, za 200 odprtih združevanj bi morali imeti tabelni medpomnilnik vsaj 200 * n, kjer je n največje število tabel v združitvi.
Predpomnilnik odprtih tabel je mogoče povečati do največ enega table_cache (privzeto 64; To je mogoče narediti z mysqld-ovim -O table_cache=#选项来改变). Tabela se nikoli ne zapre, razen ko je predpomnilnik poln in druga nit poskuša odpreti tabelo ali če uporabljate mysqladmin refresh ali mysqladmin flush-tabele.
Ko je predpomnilnik tabele poln, strežnik uporabi naslednji postopek za iskanje vnosa v predpomnilniku, ki ga bo uporabil:
Tabele, ki trenutno niso v uporabi, so objavljene po najmanj uporabljenih (LRU).
Če je predpomnilnik poln in ni tabel za sprostitev, vendar je treba odpreti novo tabelo, je treba predpomnilnik začasno povečati.
Če je predpomnilnik v začasnem razširjenem stanju in se tabela spremeni iz aktivne v neaktivno, se zapre in sprosti iz predpomnilnika.
Odprite tabelo za vsak sočasni dostop. To pomeni, da če imate dve niti, ki dostopata do iste tabele ali dvakrat v isti poizvedbi (z AS), je treba tabelo odpreti dvakrat. Prvo odprtje katere koli tabele vključuje 2 deskriptorja datotek; Vsaka dodatna uporaba tabele pomeni le en deskriptor datoteke. Za prvo odprtje se za indeksiranje datoteke uporabi dodatni deskriptor; Ta opis je deljen med vsemi temami




Prejšnji:Razumite mapo /etc/init.d in /etc/rc.local skripte na Linux sistemih
Naslednji:Kako potrditi, da je storitev MySQL zagnana pod Linux CentOS
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com