Säädä MySQL:n suoritusparametreja, muokkaa /etc/my.cnf-tiedostoa Säädä MySQL:n suoritusparametreja aktivoitumaan MySQL:n uudelleenkäynnistyksen jälkeen, MySQL 4 -version jälkeen jotkut sisäiset muuttujat voidaan asettaa MySQL-ajonaikaan, mutta ne ovat virheellisiä, kun MySQL käynnistetään uudelleen. MySQLD-ohjelma – hakemistot ja tiedostot basedir = polku # Käytä annettua hakemistoa juurihakemistona (asennushakemisto). datadir = polku # Lue tietokantatiedosto annetusta hakemistosta. pid-file = tiedostonimi # Määritä tiedosto mysqld-ohjelmalle prosessi-ID:n tallentamiseen (saatavilla vain UNIX/Linux-järjestelmille);
[mysqld] socket = /tmp/mysql.sock # Määrittää socket-tiedoston paikalliseen viestintään MySQL-asiakasohjelman ja palvelimen välillä (oletus on /var/lib/mysql/mysql.sock Linuxissa) port=3306 # Määrittää portin, jota MsSQL kuuntelee key_buffer = 384M # key_buffer on puskurin koko, jota käytetään lohkojen indeksointiin, mikä lisää paremmin käsiteltävää indeksiä (kaikissa luku- ja monikirjoituksissa). Indeksilohko on puskuroitu ja jaettu kaikkien säikeiden kesken, ja key_buffer koko riippuu muistin koosta. table_cache = 512 # Kaikkien säikeiden avointen taulukoiden määrä. Tämän arvon kasvattaminen lisää mysqld:n vaatimien tiedostokuvaijien määrää. Se välttää datataulukoiden usein avaamisen aiheuttaman ylikuorman sort_buffer_size = 2M # Varaa kyseisen kokoinen puskuri jokaiselle järjestettävälle säikeelle. Tämän arvon nostaminen nopeuttaa ORDER BY tai GROUP BY -toimintoja. Huomautus: Tämän parametrin mukainen varattu muisti on yksinomaan jokaiselle yhteydelle! Jos yhteyksiä on 100, koko lajittelupuskurin koko on 100×6 = 600MB read_buffer_size = 2M # Puskurin koko, jota voidaan käyttää lukukyselyoperaatioon. Kuten sort_buffer_size:n kohdalla, myös tämän parametrin mukainen varattu muisti on yksinomaan kullekin yhteydelle. query_cache_size = 32M # Määrittää MySQL-kyselyn tulospuskurin koon read_rnd_buffer_size = 8M # Muuta parametri luettavaksi satunnaisesti lajittelun jälkeen riviosoittimella. myisam_sort_buffer_size =64M # Puskuri vaaditaan MyISAM-taulukoiden uudelleenjärjestämiseen niiden muuttuessa thread_concurrency = 8 # Samanaikaisten säikeiden enimmäismäärä asetetaan palvelimen loogisten suorittimien lukumääräksi ×2, ja jos suoritin tukee H.T-hypersäikeyttämistä, × 2 thread_cache = 8 # #缓存可重用的线程数 skip-locking # välttää MySQL:n ulkoisen lukitumisen, vähentää virheiden riskiä ja parantaa vakautta. [mysqldump] max_allowed_packet =16M # Suurin mahdollinen tietopaketti, joka voidaan lähettää palvelimen ja asiakkaan välillä
[myisamchk] key_buffer = 256M sort_buffer = 256M read_buffer = 2M write_buffer = 2M
Muita valinnaisia parametreja: back_log = 384 Määrittelee mahdollisten MySQL-yhteyksien määrän. Kun MySQL-pääsäie vastaanottaa hyvin suuren määrän yhteyspyyntöjä lyhyessä ajassa, tämä parametri astuu voimaan, ja pääsäike tarkistaa yhteyden ja aloittaa uuden säikeen nopeasti. back_log parametrin arvo kertoo, kuinka monta pyyntöä voidaan tallentaa pinoon lyhyeksi aikaa ennen kuin MySQL hetkellisesti lakkaa vastaamasta uusiin pyyntöihin. Jos järjestelmässä on useita yhteyksiä lyhyessä ajassa, on tarpeen kasvattaa tämän parametrin arvoa, joka määrittää kuuntelujonon koon saapuville TCP/IP-yhteyksille. Rajoituksen asettaminen, joka back_log käyttöjärjestelmääsi korkeammaksi ei ole tehokasta. Oletusarvo on 50. Linux-järjestelmissä suositellaan asettamaan kokonaisluku alle 512. max_connections = n MySQL-palvelin pystyy käsittelemään samanaikaisesti enintään tietokantayhteyksiä (oletusasetus on 100). Jos raja ylitetään, raportoidaan Liian monta yhteyttä -virhe key_buffer_size = n RMA-arvo indeksilohkoille (oletusasetus on 8M), indeksin nostaminen paremman käsittelyn takaamiseksi (kaikille luku- ja monikirjoituksille) record_buffer: Jokainen säie, joka suorittaa peräkkäisen skannauksen, varaa tämän kokoisen puskurin jokaiselle skannaamalle taululle. Jos teet paljon peräkkäisiä skannauksia, saatat haluta nostaa arvoa. Oletusarvo on 131072 (128K) wait_timeout: Sekuntien määrä, jonka palvelin odottaa yhteyden toimintaa ennen sen sulkemista. interactive_timeout: Sekuntien määrä, jonka palvelin odottaa toimintaa interaktiivisessa yhteydessä ennen sen sammuttamista. Vuorovaikutuksessa oleva asiakas määritellään asiakkaaksi, joka käyttää CLIENT_INTERACTIVE-vaihtoehtoa mysql_real_connect(). Oletusarvo on 28800, voit muuttaa sen muotoon 3600. Ohit-nimi-ratkaisu Poista MySQL käytöstä DNS-resoluution käytöstä ulkoisilla yhteyksillä, ja tämän vaihtoehdon käyttö poistaa MySQL:n DNS:n ratkaisemisen ajan. On kuitenkin huomioitava, että jos tämä vaihtoehto on käytössä, kaikkien etäisäntäyhteyksien valtuutusten on käytettävä IP-osoitemenetelmää, muuten MySQL ei pysty käsittelemään yhteyspyyntöä normaalisti! log-slow-queries = slow.log Tallenna hitaita kyselyjä ja optimoi ne yksi kerrallaan skip-innodb skip-bdb Sulje ei-toivotut taulukkotyypit äläkä lisää tätä, jos tarvitset
# > NÄYTTÄÄ MUUTTUJIA KUTEN '%query_cache%'; # > NÄYTÄ TILAN KUTEN 'Qcache%'; Jos Qcache_lowmem_prunes arvo on hyvin suuri, se tarkoittaa, että puskurointi on usein riittämätöntä; Jos Qcache_hits arvo on hyvin suuri, se tarkoittaa, että kyselypuskuria käytetään hyvin usein, ja jos arvo on pieni mutta vaikuttaa tehokkuuteen, voit harkita kyselypuskuroinnin välttämistä. Jos Qcache_free_blocks arvo on hyvin suuri, se tarkoittaa, että puskurissa on paljon roskia.
########################################## ###### max_allowed_packet ###### ########################################## Viestintäpaketti on yksittäinen SQL-lause, joka lähetetään MySQL-palvelimelle tai yksi rivi asiakkaalle. Maksimimahdollinen paketti, joka voidaan lähettää MySQL 5.1 -palvelimen ja asiakkaan välillä, on 1 GB. Kun MySQL-asiakas tai mysqld-palvelin vastaanottaa paketin, joka on yli max_allowed_packet tavua, syntyy virhe "paketti on liian suuri" ja yhteys suljetaan. Joillakin asiakkailla, jos viestintäpaketti on liian suuri, saatat kohdata virheen "Yhteyden katkeaminen MySQL-palvelimeen" kyselyn aikana. Sekä asiakkaalla että palvelimella on omat max_allowed_packet-muuttujansa, joten jos aiot käsitellä suuria paketteja, sinun täytyy lisätä kyseinen muuttuja sekä asiakkaalle että palvelimelle. Jos käytät mysql-asiakasohjelmaa, sen max_allowed_packet muuttuja on oletuksena 16MB. Suuremman arvon asettamiseksi voit aloittaa mysql:n seuraavasti: mysql> mysql --max_allowed_packet=32M Se asettaa tietopaketin koon 32MB:iin. Palvelimen oletusarvo max_allowed_packet on 1MB. Jos palvelimen täytyy käsitellä suuria kyselyjä, voit nostaa tätä arvoa (esimerkiksi jos valmistaudut käsittelemään suuria blob-sarakkeita). Esimerkiksi asettaaksesi sen 16MB:ksi voit käynnistää palvelimen seuraavasti: mysql> mysqld --max_allowed_packet=16M
Voit myös käyttää asetustiedostoja asettaaksesi max_allowed_packet. Tämän palvelimen muuttujan asettamiseksi 16MB:ksi lisää alaslinkkisisältö asetuksiin: [mysqld] max_allowed_packet=16M On turvallista kasvattaa tämän muuttujan arvoa, koska lisämuistia varataan vain tarvittaessa. Esimerkiksi mysqld varaa enemmän muistia vain, jos lähetät pitkän kyselyn tai mysqld joutuu palauttamaan suuria tulosrivejä. Tämän muuttujan pieni oletusarvo on varotoimenpide, jolla havaitaan virhepaketit asiakkaan ja palvelimen välillä ja varmistetaan, ettei muistin ylivuotoja aiheuta suurten pakettien vahingossa käytettävissä. Jos käytät suuria blob-arvoja etkä anna mysqld:lle oikeutta käyttää tarpeeksi muistia kyselyiden käsittelyyn, törmäät myös outoihin ongelmiin, jotka liittyvät suuriin paketteihin. Jos epäilet näin, kokeile aloittaa ulimit -d 256000:n kasvattaminen mysqld_safe skriptissä ja käynnistä mysqld uudelleen. ########################################## ##### Kuinka avata ja sulkea tietokantataulukot MySQL:ssä ##### ########################################## table_cache, max_connections ja max_tmp_tables vaikuttavat siihen, kuinka monta tiedostomäärää palvelin pitää auki. Jos kasvatat yhtä tai molempia näistä arvoista, voit törmätä käyttöjärjestelmäsi asettamaan rajoitukseen tiedostokuvaijien määrälle, jonka kukin prosessi avaa. Voit kuitenkin nostaa rajoitusta monissa järjestelmissä. Kysy käyttöjärjestelmäsi dokumentaatiosta, miten tämä tehdään, sillä rajoitusten muuttamisen menetelmät vaihtelevat suuresti järjestelmästä toiseen. table_cache liittyy max_connections. Esimerkiksi 200 avoimelle liitokselle taulukkopuskurin tulisi olla vähintään 200 * n, missä n on suurin määrä tauluja liitoksessa. Avoimien taulukoiden välimuistia voidaan kasvattaa enintään yhteen table_cache (oletuksena 64; Tämä voidaan tehdä mysqld:n -O table_cache=#选项来改变) avulla. Taulukkoa ei suljeta koskaan, paitsi kun välimuisti on täynnä ja toinen säie yrittää avata taulun tai jos käytät mysqladmin refresh tai mysqladmin flush-tables. Kun taulukon välimuisti on täynnä, palvelin käyttää seuraavaa menettelyä löytääkseen käytettävissä olevan välimuistimerkinnän: Taulukot, joita ei tällä hetkellä käytetä, julkaistaan vähiten käytettyjen (LRU) järjestyksessä. Jos välimuisti on täynnä eikä julkaistavia tauluja ole, mutta uusi taulu täytyy avata, välimuisti täytyy tilapäisesti suurentaa. Jos välimuisti on väliaikaisessa laajennetussa tilassa ja taulukko muuttuu aktiivisesta passiiviksi, se suljetaan ja vapautetaan välimuistista. Avaa taulukko jokaiselle samanaikaiselle pääsylle. Tämä tarkoittaa, että jos sinulla on kaksi säikettä, jotka käyttävät samaa taulukkoa tai käyttävät sitä kahdesti samassa kyselyssä (AS-muodossa), taulu täytyy avata kahdesti. Minkä tahansa taulukon ensimmäinen avaus kattaa kaksi tiedostokuvaajaa; Jokainen lisätaulun käyttö kattaa vain yhden tiedostokuvauksen. Ensimmäisessä avauksessa käytetään ylimääräistä kuvaajaa tiedoston indeksointiin; Tämä kuvaus on jaettu kaikkien säikeiden kesken
|