Muuda MySQL jooksuparameetreid, muuda /etc/my.cnf faili Kohanda MySQL käivitusparameetreid nii, et need jõustuksid pärast MySQL taaskäivitamist, pärast MySQL 4 versiooni saab MySQL käitusajal mõningaid sisemisi muutujaid seadistada, kuid see muutub kehtetuks, kui MySQL taaskäivitatakse. MySQL programm – kataloogid ja failid basedir = tee # Kasuta antud kausta juurkaustana (installation directory). datadir = tee # Loe andmebaasifaili antud kataloogist. pid-file = failinimi # Määra fail mysqld programmile, mis salvestab protsessi ID (saadaval ainult UNIX/Linux süsteemidele);
[mysqld] socket = /tmp/mysql.sock # Määrab socket-faili kohalikuks suhtluseks MySQL kliendiprogrammi ja serveri vahel (vaikimisi on fail /var/lib/mysql/mysql.sock Linuxis) port=3306 # Määrab pordi, mida MsSQL kuulab key_buffer = 384M # key_buffer on plokkide indekseerimiseks kasutatava puhvri suurus, suurendades paremini hallatavat indeksit (kõigi lugemiste ja mitme kirjutuse puhul). Indeksplokk on puhverdatud ja jagatud kõigi lõimede vahel ning key_buffer suurus sõltub mälu suurusest. table_cache = 512 # Avatud tabelite arv kõigi lõimede jaoks. Selle väärtuse suurendamine suurendab mysqld jaoks vajalike failideskriptorite arvu. See väldib andmetabelite sagedase avamise koormust sort_buffer_size = 2M # Eralda iga sorteeritavat lõime jaoks sama suurune puhver. Selle väärtuse suurendamine kiirendab ORDER BY või GROUP BY operatsioone. Märkus: Selle parameetri jaoks eraldatud mälu on eksklusiivne igale ühendusele! Kui ühendusi on 100, siis tegelikult eraldatud sorteerimispuhvri kogusuurus on 100×6 = 600MB read_buffer_size = 2M # puhvri suurus, mida saab kasutada lugemispäringu operatsiooniks. Nagu sort_buffer_size puhul, on sellele parameetrile vastav eraldatud mälu samuti eksklusiivne igale ühendusele. query_cache_size = 32M # Määrab MySQL päringu tulemuste puhvri suuruse read_rnd_buffer_size = 8M # Muuda parameeter juhuslikuks lugemiseks pärast sorteerimist rea-osuti abil. myisam_sort_buffer_size =64M # Puhver, mis on vajalik MyISAM tabelite ümberkorraldamiseks, kui need muutuvad thread_concurrency = 8 # Maksimaalne samaaegsete lõimede arv on seatud serveri loogiliste protsessorite arvuks ×2, ja kui protsessor toetab H.T hüperlõimimist, siis × 2 thread_cache = 8 # #缓存可重用的线程数 skip-locking # väldib MySQL-i välist lukustamist, vähendab vigade tõenäosust ja parandab stabiilsust. [mysqldump] max_allowed_packet =16M # Maksimaalne võimalik infopakett, mida saab serveri ja kliendi vahel saata
[myisamchk] key_buffer = 256M sort_buffer = 256M read_buffer = 2M write_buffer = 2M
Muud valikulised parameetrid: back_log = 384 Määrab MySQL-i võimalike ühenduste arvu. Kui MySQL põhilõim saab väga lühikese aja jooksul väga suure hulga ühenduspäringuid, hakkab see parameeter mõjuma ning põhilõim kontrollib ühendust ja alustab uut lõime lühikest aega. back_log parameetri väärtus näitab, mitu päringut saab virna lühikeseks ajaks salvestada, enne kui MySQL ajutiselt lõpetab uute päringute vastamise. Kui süsteemil on lühikese aja jooksul palju ühendusi, tuleb selle parameetri väärtust suurendada, mis määrab sissetulevate TCP/IP ühenduste kuulamisjärjekorra suuruse. Püüdes seada piir, mis back_log kõrgem kui sinu operatsioonisüsteem, on ebaefektiivne. Vaikimisi väärtus on 50. Linuxi süsteemide puhul soovitatakse seada täisarv väiksemaks kui 512. max_connections = n Maksimaalne andmebaasi ühenduste arv, mida MySQL server suudab korraga hallata (vaikimisi seade on 100). Kui piirang ületatakse, teatatakse vea Liiga palju ühendusi key_buffer_size = n RMA väärtus indeksplokkide jaoks (vaikimisi seadistus on 8M), indeksi suurendamine parema käsitsemise tagamiseks (kõigi lugemiste ja mitme kirjutise puhul) record_buffer: Iga lõim, mis teeb järjestikuse skaneerimise, eraldab igale skaneeritavale tabelile sellise suurusega puhvri. Kui teed palju järjestikuseid skaneeringuid, võid soovida seda väärtust suurendada. Vaikimisi väärtus on 131072 (128K) wait_timeout: Sekundite arv, mil server ootab ühenduse tegevust enne selle sulgemist. interactive_timeout: Sekundite arv, mil server ootab interaktiivsel ühendusel tegevust enne selle sulgemist. Suhtlev klient on klient, kes kasutab mysql_real_connect() jaoks CLIENT_INTERACTIVE valikut. Vaikimisi väärtus on 28800, saad selle muuta 3600-ks. Vahelejätmine-nime-lahendamine Keela MySQL väliste ühenduste DNS-resolutsioonist, selle valiku kasutamine vähendab MySQL-i DNS-i lahendamiseks kuluva aja. Siiski tuleb märkida, et kui see valik on lubatud, peavad kõik kaughostiühenduse autoriseerimine kasutama IP-aadressi meetodit, vastasel juhul ei suuda MySQL ühenduse päringut tavapäraselt töödelda! log-slow-queries = slow.log Salvesta aeglased päringud ja optimeeri neid ükshaaval skip-innodb skip-bdb Sulge soovimatud tabelitüübid ja ära lisa seda, kui vajad
# > NÄITA MUUTUJAID NAGU '%query_cache%'; # > NÄITA STAATUST NAGU 'Qcache%'; Kui Qcache_lowmem_prunes väärtus on väga suur, näitab see, et puhverdamine on sageli ebapiisav; Kui Qcache_hits väärtus on väga suur, näitab see, et päringupuhvrit kasutatakse väga sageli, ja kui väärtus on väike, kuid mõjutab efektiivsust, siis võid kaaluda päringupuhvri mitte kasutamist. Kui Qcache_free_blocks väärtus on väga suur, näitab see, et puhvris on palju prahti.
########################################## ###### max_allowed_packet ###### ########################################## Kommunikatsioonipakett on üksik SQL-lause, mis saadetakse MySQL serverisse või üks rida kliendile. Maksimaalne võimalik pakett, mida saab saata MySQL 5.1 serveri ja kliendi vahel, on 1 GB. Kui MySQL klient või mysqld server saab paketi, mis on suurem kui max_allowed_packet baiti, tekib viga "pakett on liiga suur" ja ühendus suletakse. Mõne kliendi puhul, kui suhtluspakett on liiga suur, võib päringu käigus tekkida viga "Ühenduse katkemine MySQL serveriga". Nii kliendil kui serveril on oma max_allowed_packet muutujad, nii et kui plaanid käsitleda suuri pakette, pead selle lisama nii kliendile kui serverile. Kui kasutad mysql kliendiprogrammi, siis selle max_allowed_packet muutuja on vaikimisi 16MB. Suurema väärtuse määramiseks võid alustada mysql-i järgmiselt: mysql> mysql --max_allowed_packet=32M See seab infopaketi suuruseks 32MB. Serveri vaikimisi max_allowed_packet väärtus on 1MB. Kui server peab töötlema suuri päringuid, saad seda väärtust suurendada (näiteks kui valmistud töötlema suuri blob-veerge). Näiteks, et seadistada see 16MB-le, saad serveri käivitada järgmiselt: mysql> mysqld --max_allowed_packet=16M
Saad kasutada ka valikute faile, et max_allowed_packet määrata. Selle serveri muutuja määramiseks 16MB peale lisa allalaadimise sisu valikute faili: [mysqld] max_allowed_packet=16M Selle muutuja väärtust on ohutu suurendada, sest lisamälu eraldatakse ainult vajadusel. Näiteks eraldab mysqld rohkem mälu ainult siis, kui esitad pika päringu või mysqld peab tagastama suuri tulemusridu. Selle muutuja väike vaikeväärtus on ettevaatusabinõu, et tabada veapakette kliendi ja serveri vahel ning tagada, et mälu ületäitumine ei tekiks juhuslikust suurte pakettide kasutamisest. Kui kasutad suuri blob-väärtusi ja ei anna mysqld-ile luba piisavalt mälu päringute töötlemiseks, tekib ka kummalisi probleeme suurte pakettide puhul. Kui kahtlustad, et see on nii, proovi hakata suurendama ulimit -d 256000 mysqld_safe skriptis ja taaskäivita mysqld. ########################################## ##### Kuidas avada ja sulgeda andmebaasitabeleid MySQL-is ##### ########################################## table_cache, max_connections ja max_tmp_tables mõjutavad maksimaalset failide arvu, mida server avab. Kui suurendad ühte või mõlemat neist väärtustest, võid jõuda operatsioonisüsteemi poolt seatud piiranguni, kui palju failikirjeldajaid iga protsess avab. Kuid paljudel süsteemidel saab limiiti tõsta. Küsi oma operatsioonisüsteemi dokumentatsioonilt, et selgitada, kuidas seda teha, sest piirangute muutmise meetodid varieeruvad süsteemiti suuresti. table_cache seotud max_connections. Näiteks 200 avatud liitumise puhul peaks tabelipuhver olema vähemalt 200 * n, kus n on liitumise maksimaalne tabelite arv. Avatud tabelite vahemälu saab suurendada maksimaalselt ühe table_cache (vaikimisi 64; Seda saab teha mysqld -O table_cache=#选项来改变). Tabelit ei suleta kunagi, välja arvatud siis, kui vahemälu on täis ja teine lõim üritab tabelit avada või kui kasutad mysqladmin refresh või mysqladmin flush-table'e. Kui tabeli vahemälu on täis, kasutab server järgmist protseduuri, et leida kasutatav vahemälu kirje: Tabelid, mida praegu ei kasutata, avaldatakse vähem kasutatud järjekorras (LRU). Kui vahemälu on täis ja tabeleid pole avaldamiseks, kuid uus tabel tuleb avada, tuleb vahemälu ajutiselt suurendada. Kui vahemälu on ajutiselt laiendatud olekus ja tabel muutub aktiivsest mitteaktiivseks, suletakse see ja vabastatakse vahemälust. Ava iga samaaegse ligipääsu jaoks tabel. See tähendab, et kui sul on kaks lõime, mis pääsevad samale tabelile ligi või kaks korda sama päringuga (AS-iga), tuleb tabel avada kaks korda. Mis tahes tabeli esimene avamine hõlmab kahte faili kirjeldajat; Iga täiendav tabeli kasutus hõlmab ainult ühte faili kirjeldajat. Esimese avamise puhul kasutatakse faili indekseerimiseks lisakirjeldajat; See kirjeldus on jagatud kõigi lõimede vahel
|