Mida tuleb mySQL-is kohe pärast installimist seadistada? MySQL-i muutmine

Alates versioonist 3.22 saab MySQL lugeda serveri ja klientide vaikekäivitussuvandeid valikufailidest. Unixis loetakse MySQL-i vaikeparameetreid järgmistest failidest:

DATADIR on kataloog MySQL-i andmed(tavaliselt "/usr/local/mysql/data" binaarinstalli jaoks või "/usr/local/var" installimise puhul lähtetekstid). Pange tähele, et see on kataloog, mis määrati häälestuse ajal, mitte see, mis määrati mysqld käivitamisel käsuga –datadir! (–datadir ei mõjuta seda, kuidas server parameetrifaile vaatab, kuna neid vaadatakse enne käsurea argumentide töötlemist).

MySQL proovib lugeda parameetrifaile ülaltoodud järjekorras. Kui selliseid faile on mitu, siis on hiljem saabuvas failis määratud parameeter ülimuslik varem asunud failis määratud sama parameetri suhtes. Punktis määratud parameetrid käsurida, mille prioriteet on kõrgem kui mis tahes parameetrifailis määratud parameetrid. Mõningaid parameetreid saab määrata kasutades keskkonnamuutujad. Käsureal või suvanditefailides määratud suvandid on keskkonnamuutujate suhtes ülimuslikud.

Siin on nimekiri programmidest, mis toetavad parameetrifaile: mysql, mysqladmin, mysqld, mysqld_safe, mysql.server, mysqldump, mysqlimport, mysqlshow, mysqlcheck, myisamchk ja myisampack.

Kõik parameetrid, mida saab MySQL-i programmi käivitamisel käsureal määrata, saab määrata ka parameetrite failis (ilma topeltkaldkriipsuta). Saadaolevate valikute loendi vaatamiseks käivitage programm suvandiga –help.

My.cnf MySQL 5.5 parameetrid (UTF8 kodeeringud)

    Mis on utf8mb4? utf8mb4 on märgistik, mida kasutatakse 4 baidi salvestamiseks MySQL-is ja mis võeti kasutusele 2010. aastal alates versioonist 5.5.3. Peamine erinevus utf8mb4 ja utf8 vahel on see, et utf8mb4 kasutab rohkem täielikud võimalused UTF8 kodeering, mis võimaldab toetada kõiki keeli ja eritegelased, mis ei toeta utf8 (näiteks jaapani keel või iosist pärit emotikonid - emoji). Kuid nagu võite arvata, kui utf8mb4 kasutab 1 märgi salvestamiseks 4 baiti, võib andmebaas suureneda, kui võrrelda täpselt sama andmebaasiga utf8-s. Tänapäeval ei ole andmebaasi veidi suurenenud maht märkimisväärne probleem, nii et kui olete silmitsi valikuga, kas kasutada utf8 või utf8mb4 märgistikku, kasutage utf8mb4.

Mõned MySQL 5.5.22 my.cnf parameetrid on aegunud ning asendatud ja eemaldatud. Näiteks jaotises my.cnf vaikekodeeringu muutmine näeks välja järgmine:

#... character_set_server = utf8 # varem default-character-set = utf8 ja character_set_server = utf8 collation-server = utf8_unicode_ci # varem collation_server = utf8_unicode_ci

võrdsusserver = utf8_unicode_ci või võrdlusserver = utf8_general_ci? utf8_unicode_ci toetab laiendusi, erinevalt utf8_general_ci-st, see tähendab, et see võib sobitada ühe märgi mitmega (näiteks Saksamaal ß = ss). Rohkem nagu Unicode'i märgikomplektid.

Võrdlus utf8_unicode_ci _ci tõstutundlik, utf8_unicode_bin _bin tõstutundlik.

my.cnf parameetrid

> ee /etc/my.cnf # Järgmised valikud edastatakse kõigile MySQL-i klientidele #password = teie_parooli port = 3306 socket = /tmp/mysql.sock # Siin on kirjed mõne konkreetse programmi jaoks # MySQL serveri port = 3306 pesa = /tmp/mysql.sock skip-locking key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_buffer_size = 256K read_buffer_size = 256K read_buffer_size_am8 default-character -set = utf8 character_set_server = utf8 collation_server = utf8_unicode_ci sidumisaadress = 127.0.0.1 # Ärge kuulake üldse TCP/IP-porti. See võib olla turvatäiendus, # kui kõik protsessid, mis vajavad ühenduse loomist mysqld-iga, töötavad samas hostis. # Kogu suhtlus mysqld-iga peab toimuma Unixi pistikupesad või nimega torud # Kogu suhtlus mysqldiga peab toimuma Unixi pistikupesade või nimega torude kaudu. # Pange tähele, et selle valiku kasutamine ilma nimega torude lubamiseta (valiku "enable-named-pipe" kaudu) muudab mysqld kasutuks. ! # #jätke võrgustamine vahele #...

Mysqli on mõeldud väikeste andmebaaside jaoks, mis töötavad väikese koormuse all väga tagasihoidlikul riistvaral. Kui teie Mysqli plaanid ulatuvad mitmesaja kirje võrra kaugemale tabeli piiridest, peate kindlasti muutma vaikesätteid. Mysqli optimaalse konfigureerimise protsess koosneb kahest osast - algseadistus ja parameetrite reguleerimine töö ajal. Parameetrite reguleerimine töörežiimis sõltub suuresti teie süsteemi ja selle jälgimise spetsiifikast - siin pole erireegleid. Sest seadete käivitamine On mitmeid soovitusi:

MySQL - tasuta süsteem andmebaasi haldamine. Areng ja MySQL tugi teostab Oracle Corporation, kes on saanud õigused kaubamärk koos omandatud Sun Microsystemsiga, mis oli varem omandanud Rootsi firma MySQL AB. Toodet levitatakse nii GNU üldise avaliku litsentsi kui ka selle enda kommertslitsentsi alusel. Lisaks loovad arendajad kohandatud funktsioone litsentsitud kasutajad, just tänu sellele tellimusele on peaaegu kõige rohkem varasemad versioonid ilmus replikatsioonimehhanism.

Avage näiteks mysql-i seadete fail:

/etc/mysql/my.cnf

Kõige tavalisemad parameetrid, millele peaksite tähelepanu pöörama ja mida oma vajadustele vastavaks muutma:

võtme_puhvri_suurus

Kui kasutate ainult MyIsami tabeleid, määrake selle väärtuseks 30%...40% kõigist saadaolevatest RAM serveris. MyIsam kasutab vahemälu operatsioonisüsteemi andmete jaoks, seega pange tähele, et ülejäänud vaba mälu vajate seda täpselt selleks. Kui teil on vähe MyIsami tabeleid ja nende kogumaht on väike, jätke see väärtus 32M piiresse.

innodb_buffer_pool_size

Kui kasutate ainult InnoDB tabeleid, määrake see väärtus oma süsteemi jaoks maksimaalseks võimalikuks. InnoDB puhver salvestab vahemällu nii andmed kui indeksid (ja operatsioonisüsteemi vahemälu ei kasutata), seega tuleks selle võtme väärtuseks määrata 70%...80% vabast mälust.

Kui teie server töötab Linuxis või Unixis, ärge unustage seada parameetri innodb_flush_method väärtusele "O_DIRECT", et vältida OS-i tasemel vahemällu salvestamist, mida Mysql juba vahemällu salvestab.

innodb_log_file_size

Pöörake sellele parameetrile tähelepanu, kui teil on palju kirjeid. Kuidas suurem suurus seda tõhusam on andmete salvestamine. Kuid pidage meeles, et see pikendab süsteemi taastamise aega! See parameeter on tavaliselt seatud väärtusele 64M-512M.

innodb_flush_log_at_trx_commit

See parameeter mõjutab oluliselt innoDB tabelite töö (kirjutamise) kiirust.
Väärtus "1" tähendab, et iga lõpetatud tehing loputab logi sünkroonselt kettale.
Väärtus "2" teeb sama asja, ainult et logi ei kettale, vaid operatsioonisüsteemi vahemällu. See väärtus sobib enamikul juhtudel, kuna... ei tee pärast iga tehingut kallist kirjutamisoperatsiooni. Sel juhul kirjutatakse logi kettale mitmesekundilise viivitusega, mis on andmeohutuse seisukohalt väga turvaline.
Väärtus "0" annab kõrgeim tootlikkus. Sel juhul tühjendatakse puhver tehingutest sõltumata logifaili. Seadke selle parameetri väärtuseks "0" omal vastutusel, kuna sel juhul suureneb andmete kadumise oht.

tabeli_vahemälu

See võti määrab salvestamiseks eraldatud mälu avatud lauad. Kui teil on mitusada tabelit, määrake selle väärtuseks 1024. Kui teil on tohutult palju ühendusi, suurendage seda väärtust järk-järgult, sest Iga ühenduse kohta salvestatakse eraldi kirje.

lõime_vahemälu

See parameeter aitab serveriga ühenduse loomisel vältida lõime loomise/hävitamise toiminguid. Seadke selle parameetri väärtuseks 16 ja suurendage vastavalt vajadusele. Kontrollige indikaatorit "Threads_created", ideaaljuhul peaks see olema võrdne nulliga:

Mysql> näitab olekut nagu "lõimed_loodud"; +-----–+--–+ | Muutuja_nimi | Väärtus | +-----–+--–+ | Lõimed_loodud | 423312 | +-----–+--–+

query_cache_size

Selle parameetri väärtus määrab, kui palju mälu tuleks päringu vahemälu jaoks kasutada. Ärge laske end tohutute väärtuste seadmisega kaasa lüüa. Päringu vahemälu ei tohiks olla suur, sest... mysql sööb vahemälus andmete haldamise ressursse. Alustage 32M...128M ja suurendage vastavalt vajadusele.

10. august 2009, kell 15:41

Mida tuleb mySQL-is kohe pärast installimist seadistada?

  • MySQL
  • Tõlge

Tasuta tõlge üsna vanast artiklist MySQL Performance Blogist selle kohta, mida on kõige parem kohe pärast installimist seadistada põhiversioon mySQL.

On hämmastav, kui paljud inimesed installivad oma serveritesse mySQL-i ja jätavad selle vaikeseadetega.

Kuigi mySQL-is on üsna palju sätteid, mida saate muuta, on komplekti tõesti väga olulised omadused, mille jaoks tuleb optimeerida oma server. Tavaliselt pärast seda väikesed seaded Serveri jõudlus suureneb märgatavalt.

  • võtme_puhvri_suurus- äärmiselt oluline seadistus kui kasutate MyISAM tabeleid. Kui kasutate ainult MyISAMi, määrake see umbes 30–40% saadaolevast RAM-ist. Õige suurus oleneb indeksite suurusest, andmetest ja serveri koormusest – pidage meeles, et MyISAM kasutab andmete salvestamiseks operatsioonisüsteemi (OS) vahemälu, seega peate andmete jaoks jätma piisavalt RAM-i ja andmed võivad võtta oluliselt rohkem ruumi kui indeksid. Siiski kontrollige kindlasti, et kogu direktiiviga eraldatud ruum võtme_puhvri_suurus vahemälu jaoks kasutati pidevalt - sageli näete olukordi, kus indeksi vahemälu jaoks eraldatakse 4 GB, kuigi üldine suurus Kõik .MYI-failid ei ületa 1 GB. See on täiesti kasutu; raiskate ainult ressursse. Kui teil MyISAM-i tabeleid praktiliselt pole, siis võtme_puhvri_suurus tuleks määrata umbes 16-32 MB - neid kasutatakse kettale loodud ajutiste tabelite indeksite mällu salvestamiseks.
  • innodb_buffer_pool_size- sama oluline säte, kuid InnoDB puhul pöörake sellele kindlasti tähelepanu, kui kavatsete kasutada peamiselt InnoDB tabeleid, sest need on puhvri suuruse suhtes palju tundlikumad kui MyISAM tabelid. MyISAMi tabelid võivad põhimõtteliselt hästi töötada isegi koos suur hulk andmed ja standardväärtuses võtme_puhvri_suurus, aga kui väärtus on vale, võib mySQL olla väga aeglane innodb_buffer_pool_size. InnoDB kasutab nii indeksite kui ka andmete salvestamiseks oma puhvrit, seega pole vaja OS-i vahemälu jaoks mälu jätta – installi innodb_buffer_pool_size 70-80% saadaolevast RAM-ist (kui muidugi kasutatakse ainult InnoDB tabeleid). Suhteliselt maksimaalne suurus see valik - sarnane võtme_puhvri_suurus- ära lase end ära lasta, sa pead leidma optimaalne suurus, leia parim kasutus vaba mälu.
  • innodb_additional_mem_pool_size - see valik ei mõjuta praktiliselt mySQL-i jõudlust, kuid soovitan jätta InnoDB jaoks umbes 20 MB (või veidi rohkem) erinevate sisemiste vajaduste jaoks.
  • innodb_log_file_size- äärmiselt oluline seadistus andmebaasikeskkondades sagedased operatsioonid salvestab tabelitesse, eriti kui suured mahud. B O Suuremad suurused suurendavad jõudlust, kuid olge ettevaatlik – ka andmete taastamise aeg pikeneb. Tavaliselt määran selle sõltuvalt serveri suurusest umbes 64–512 MB.
  • innodb_log_buffer_size - standardväärtus See valik sobib üsna hästi enamiku süsteemide jaoks, kus on keskmine kirjutamiste arv ja väikesed tehingud. Kui teie süsteemis esineb aktiivsuse puhanguid või töötate aktiivselt BLOB-andmetega, soovitan väärtust veidi suurendada innodb_log_buffer_size. Siiski ei tasu üle pingutada – liiga palju suur väärtus oleks mälu raiskamine: puhver loputatakse iga sekundi järel, nii et teil pole selle sekundi jooksul vaja rohkem ruumi kui vaja. Soovitatav väärtus on umbes 8-16 MB ja väikeste andmebaaside puhul isegi vähem.
  • - kurdavad, et InnoDB on 100 korda aeglasem kui MyISAM? Tõenäoliselt unustasite seadistuse innodb_flush_log_at_trx_commit. Vaikeväärtus 1 tähendab, et iga UPDATE tehing (või sarnane mittetehinguline käsk) peab puhvri kettale loputama, mis on üsna ressursimahukas. Enamik rakendusi, eriti need, mis on varem kasutanud MyISAM-i tabeleid, töötavad hästi väärtusega "2" (st "ära loputa puhvrit kettale, ainult OS-i vahemällu"). Logi aga loputatakse endiselt kettale iga 1-2 sekundi järel, nii et õnnetuse korral kaotate värskendustest maksimaalselt 1-2 sekundit. Väärtus "0" parandab jõudlust, kuid võite kaotada andmed isegi siis, kui mySQL-server jookseb kokku, kui määrate väärtuseks innodb_flush_log_at_trx_commit"2" puhul kaotate andmed ainult siis, kui kogu operatsioonisüsteem jookseb kokku.
  • tabeli_vahemälu- laudade avamine võib olla üsna ressursimahukas. Näiteks MyISAM-i tabelid märgivad .MYI-failide päised kui "kasutatud praegune hetk" Üldiselt ei ole hea mõte laudu liiga sageli avada, seega on kõige parem omada piisavalt suurt vahemälu, et kõik lauad oleksid avatud. See kasutab mõningaid OS-i ressursse ja RAM-i, kuid see ei ole tavaliselt oluline probleem kaasaegsed serverid. Kui teil on mitusada tabelit, siis valiku algväärtus tabeli_vahemälu võib olla "1024" (pidage meeles, et iga ühendus nõuab oma käepidet). Kui teil on veel rohkem tabeleid või liiga palju ühendusi - suurendage parameetri väärtust. ma nägin mySQL serverid tähendusega tabeli_vahemälu võrdne 100 000-ga.
  • lõime_vahemälu- lõimede loomine/hävitamine on samuti ressursimahukas toiming, mis toimub iga kord, kui ühendus luuakse ja iga ühendus katkeb. Tavaliselt määran selle valiku väärtuseks 16. Kui teie rakenduses võib esineda hüppeid samaaegsete ühenduste arvus ja muutujate kaupa Lõimid_Loodud Kui näete niitide arvu kiiret kasvu, peaksite väärtust suurendama lõime_vahemälu. Eesmärk on vältida uute lõimede teket serveri tavapärase töö käigus.
  • query_cache_size- kui teie rakendus loeb andmeid palju ja sageli ning teil pole rakendusetaseme vahemälu, võib see valik olla väga kasulik. Ärge määrake seda väärtust liiga kõrgeks, kuna suure päringu vahemälu säilitamine on iseenesest kulukas. Soovitatav väärtus on 32–512 MB. Ärge unustage kontrollida, kui hästi päringu vahemälu kasutatakse – mõnel juhul (kui vahemälus on vähe tabamust, st kui identseid andmeid ei tõmmata peaaegu üldse) võib suure vahemälu kasutamine jõudlust halvendada.
Nagu näete, on see - globaalsed seaded. Need muutujad sõltuvad serveri riistvarast ja kasutatavatest MySQL mootoritest, samas kui seansimuutujad on tavaliselt konfigureeritud spetsiaalselt konkreetsed ülesanded. Kui kasutate peamiselt lihtsad päringud, siis pole väärtust vaja suurendada sorti_puhvri_suurus, isegi kui teil on 64 GB lisamälu. Lisaks võivad suured vahemälu väärtused ainult serveri jõudlust halvendada. Parem on jätta seansimuutujad hilisemaks, serveri peenhäälestamiseks.

PS: mySQL-i installiga on kaasas mitu eelinstallitud my.cnf-faili, mis on mõeldud erinev koormus. Kui teil pole aega serverit käsitsi seadistada, on tavaliselt parem kasutada neid kui tavalisi konfiguratsioonifail, valides teie serveri koormusele sobivama.

MySQL-i seadistamine hõlmab põhimõtteliselt peamise konfiguratsioonifaili (FreeBSD-l /etc/my.cnf) redigeerimist. Enne seadistamist pidage meeles, et MySQL 5.6-s erinevad mõne parameetri nimed ja nende saadavus eelmistes versioonides kasutatavatest.

MySQL 5.6 – my.cnf konfigureerimine

Faili my.cnf muudatuste jõustumiseks peate MySQL-serveri taaskäivitama:

/usr/local/etc/rc.d/mysqld taaskäivitage

Saate andmebaasipäringu abil kontrollida, kas server aktsepteerib uusi sätteid:

mysql SHOW WARIABLES;

Ainult teatud seadete vaatamiseks peate määrama taotluse. Näiteks parameetri max_connections nägemiseks peate MySQL-ile saatma järgmise päringu: mysql > KUVA MUUTUJATE NAGU "max _conn%";

Kui pärast taaskäivitamist on muudatused osaliselt rakendatud või MySQL-i server neid ei aktsepteeri, kontrollige, kas ei ole redigeeritud vale faili või laadib MySQL lisaks veel mõne konfiguratsioonifaili, mille direktiivid määravad teie muudetud parameetrid ümber. Näiteks DirectAdmini hostimise juhtpaneeli installimisel installitakse MySQL-server automaatselt ja sisaldab 2 konfiguratsioonifaili: /etc/my.cnf ja täiendavalt laaditud /usr/local/mysql/my.cnf. Muutes failis /etc/my.cnf parameetrit sql_mode, ei saanud ma pikka aega aru, miks seda MySQL serverile ei rakendatud, nagu selgus, sai see /usr/local/mysql/my.cnf (; FreeBSD) või /usr/my cnf (CentOS). Kõigi MySQL-is kasutatavate my.cnf-failide loendi leidmist saab vaadata, kui sisestate päringu otsingumootor: "minu.cnf asukoht".

My.cnf-is kasutatavate sätete täieliku loendi leiate ametliku MySQL-i kasutusjuhendi (eng) veerus Option File.

Seadistused jaotises

local_infile

Selle muutuja saab lubada (SEES või 1 – vaikimisi) või keelata (VÄLJAS või 0), et kasutada ANDMETE LAADIMISpäringus LOCAL. Kui te ei tea täpselt, mis see on ja miks seda vaja on, on tungivalt soovitatav lülitada local_infile asendisse OFF (local_infile=OFF) kogu serveri turvalisuse huvides.

skip_external_locking

skip_external_locking – parameeter, mis vastutab MyISAM-tüüpi andmebaasifailide välise lukustamise eest (vaikimisi ON - lukustamine on lubatud). Soovitatav on seda sätet mitte muuta MySQL-serveri jõudluse huvides.

skip_name_resolve

Kui parameeter skip_name_resolve on seatud väärtusele ON või 1 (skip_name_resolve=OFF – vaikimisi), siis välisühendus MySQL-server proovib tõlkida domeeninime IP-aadressiks, mis vähendab oluliselt päringu töötlemise kiirust. Jõudluse parandamiseks on soovitatav määrata skip_name_resolve olekusse OFF, sel juhul saab MySQL-iga ühenduse loomisel hostina kasutada ainult IP-aadressi või kohalikku hosti.

madala_prioriteediga_värskendused

Vaikimisi on MySQL-i lausetel nagu INSERT, REPLACE, UPDATE, DELETE rohkem kõrge prioriteet kui näiteks SELECT ja parameeter low_priority_updates on vastavalt seatud olekusse OFF. Kui teie server saadab rohkem lugemispäringuid kui tabeliandmete muudatusi, saate seada low_priority_updates väärtuseks ON. Tuleb märkida, et madala_prioriteedi_värskendused kehtivad ainult MyISAM, MEMORY ja MERGE tabelitüüpidele.

sql_mode

MySQL serveri töö sõltub suuresti sql_mode'is määratud parameetritest. Seadete ebaõige täpsustamine võib MySQL-i kasutava saidi töö täielikult peatada, põhjustada valede parameetrite sisestamist andmebaasi ja muid probleeme. Lisateavet sql_modi kohta saate lugeda siit: Server SQL Modes 5.6 (eng).

Vaikimisi MySQL 5.6.6 ja uuemates versioonides hilisemad versioonid sql_mode väärtuseks on määratud NO_ENGINE_SUBSTITUTION ( sql_mode=NO_ENGINE_SUBSTITUTION), mis on enamiku saitide jaoks piisav, kuid siiski arusaadav MySQL töö Samuti peaksite olema teadlik muudest MySQL-i tööviisidest, mis on seatud olekusse sql_mode.

max_connections

See parameeter vastutab maksimaalse lubatud arvu eest samaaegsed ühendused MySQL-ile. Vaikimisi on selle väärtus 151 ja seda saab muuta vahemikust 1 kuni 100 000. Seda väärtust tuleks suurendada, kui ilmub tõrge "Liiga palju ühendusi" või administraator on kindel, et vaikeväärtusest ei piisa.

query_cache_type

Väärtus query_cache_type lubab (ON) või keelab (OFF) päringu vahemällu salvestamise. Vahemällu salvestamine – hea viis vähendada koormust, kui server töötleb palju identseid päringuid. Peaksite peaaegu alati kasutama query_cache_type, välja arvatud juhul, kui MySQL päringud on vahemällu salvestatud memcached.

query_cache_size

Vahemälu suurus MySQL päringud. Väärtuse saab kirjutada Mb - query_cache_size=32M .

MyISAMi tabelite seaded

võtme_puhvri_suurus

Kui kasutatakse ainult tabeleid MinuISAM, tuleks puhvri suuruseks määrata umbes 30–35% saadaolevast RAM-i suurusest. Kui MyISAM-i tabeleid on väga vähe või üldse mitte, siis võtme_puhvri_suurus saab määrata 32 MB-le, kasutatakse ruumi kettale loodud ajutiste tabelite mällu salvestamiseks. Mälu suuruse valik võtme_puhvri_suuruse jaoks sõltub indeksite suurusest, andmetest ja serveri koormusest. Peaksite teadma, et MyISAM kasutab seal andmete salvestamiseks operatsioonisüsteemi vahemälu, seega peate jätma selle jaoks piisavalt RAM-i. Andmed võivad võtta oluliselt rohkem ruumi kui indeksid. Siiski tasub kontrollida, et kogu vahemälu jaoks võtme_puhvri_suuruses määratud mälu oleks pidevalt kasutusel, vastasel juhul läheb see ressursside raiskamiseks.

InnoDB tabelite sätted

innodb_buffer_pool_size

innodb_buffer_pool_size- InnoDB tabelite puhvri suurus. Sisestage tabelid InnoDB kasutavad indeksite ja andmete salvestamiseks oma puhvrit, nii et pole vaja operatsioonisüsteemi vahemälu jaoks mälu jätta, kui kavatsete kasutada ainult InnoDB tüüpi tabeleid, määrake innodb_buffer_pool_size 75% -le saadaolevast RAM-ist. Soovitused selle valiku maksimaalseks suuruseks on sarnased MyISAMi võtme_puhvri_suurusega: te ei tohiks määrata maksimaalset suurust, peate leidma parim variant, A saadaval RAM saab kasutada ka muudes ülesannetes.

  • Tõlge

Tasuta tõlge üsna vanast artiklist MySQL Performance Blogist selle kohta, mida on kõige parem seadistada kohe pärast mySQL-i põhiversiooni installimist.

On hämmastav, kui paljud inimesed installivad oma serveritesse mySQL-i ja jätavad selle vaikeseadetega.

Hoolimata asjaolust, et mySQL-is on üsna palju sätteid, mida saate muuta, on tõesti väga olulisi omadusi, mida tuleb teie enda serveri jaoks optimeerida. Tavaliselt suureneb serveri jõudlus pärast selliseid väikeseid muudatusi märgatavalt.

  • võtme_puhvri_suurus- äärmiselt oluline seadistus MyISAM-i tabelite kasutamisel. Kui kasutate ainult MyISAMi, määrake see umbes 30–40% saadaolevast RAM-ist. Õige suurus sõltub indeksite suurusest, andmetest ja serveri koormusest – pidage meeles, et MyISAM kasutab andmete salvestamiseks operatsioonisüsteemi (OS) vahemälu, seega peate andmete jaoks jätma piisavalt RAM-i ja andmed võivad võtta oluliselt rohkem ruumi kui indeksid. Siiski kontrollige kindlasti, et kogu direktiiviga eraldatud ruum võtme_puhvri_suurus vahemälu jaoks kasutati pidevalt - sageli võib näha olukordi, kus indeksi vahemälu jaoks on eraldatud 4 GB, kuigi kõigi .MYI-failide kogumaht ei ületa 1 GB. See on täiesti kasutu; raiskate ainult ressursse. Kui sul MyISAM-i tabeleid praktiliselt pole, siis võtme_puhvri_suurus tuleks määrata umbes 16-32 MB - neid kasutatakse kettale loodud ajutiste tabelite indeksite mällu salvestamiseks.
  • innodb_buffer_pool_size- sama oluline säte, kuid InnoDB puhul pöörake sellele kindlasti tähelepanu, kui kavatsete kasutada peamiselt InnoDB tabeleid, sest need on puhvri suuruse suhtes palju tundlikumad kui MyISAM tabelid. MyISAMi tabelid võivad põhimõtteliselt hästi töötada ka suure andmemahu ja standardväärtusega võtme_puhvri_suurus, aga kui väärtus on vale, võib mySQL olla väga aeglane innodb_buffer_pool_size. InnoDB kasutab nii indeksite kui ka andmete salvestamiseks oma puhvrit, seega pole vaja OS-i vahemälu jaoks mälu jätta – installi innodb_buffer_pool_size 70-80% saadaolevast RAM-ist (kui muidugi kasutatakse ainult InnoDB tabeleid). Mis puudutab selle valiku maksimaalset suurust - samamoodi võtme_puhvri_suurus- ära lase end ära lasta, pead leidma optimaalse suuruse, leidma saadaoleva mälu parima kasutuse.
  • innodb_additional_mem_pool_size- sellel valikul pole praktiliselt mingit mõju mySQL-i jõudlusele, siiski soovitan jätta InnoDB jaoks umbes 20 MB (või veidi rohkem) erinevate sisemiste vajaduste jaoks.
  • innodb_log_file_size- äärmiselt oluline seadistus andmebaasides, kus tabelitesse kirjutatakse sageli, eriti suurte mahtude puhul. B O Suuremad suurused suurendavad jõudlust, kuid olge ettevaatlik – ka andmete taastamise aeg pikeneb. Tavaliselt määran selle sõltuvalt serveri suurusest umbes 64–512 MB.
  • innodb_log_buffer_size- selle valiku standardväärtus on üsna sobiv enamiku süsteemide jaoks, kus on keskmine arv kirjutamistoiminguid ja väikeseid tehinguid. Kui teie süsteemis esineb aktiivsuse puhanguid või töötate aktiivselt BLOB-andmetega, soovitan väärtust veidi suurendada innodb_log_buffer_size. Kuid ärge üle pingutage – liiga suur väärtus raiskab mälu: puhver loputatakse iga sekundi järel, nii et te ei vaja selle sekundi jooksul rohkem ruumi, kui vajate. Soovitatav väärtus on umbes 8-16 MB ja väikeste andmebaaside puhul isegi vähem.
  • - kurdavad, et InnoDB on 100 korda aeglasem kui MyISAM? Tõenäoliselt unustasite seadistuse innodb_flush_log_at_trx_commit. Vaikeväärtus 1 tähendab, et iga UPDATE tehing (või sarnane mittetehinguline käsk) peab puhvri kettale loputama, mis on üsna ressursimahukas. Enamik rakendusi, eriti need, mis on varem kasutanud MyISAM-i tabeleid, töötavad hästi väärtusega "2" (st "ära loputa puhvrit kettale, ainult OS-i vahemällu"). Logi aga loputatakse endiselt kettale iga 1-2 sekundi järel, nii et õnnetuse korral kaotate värskendustest maksimaalselt 1-2 sekundit. Väärtus "0" parandab jõudlust, kuid võite kaotada andmed isegi siis, kui mySQL-server jookseb kokku, kui määrate väärtuseks innodb_flush_log_at_trx_commit"2" puhul kaotate andmed ainult siis, kui kogu operatsioonisüsteem jookseb kokku.
  • tabeli_vahemälu- laudade avamine võib olla üsna ressursimahukas. Näiteks märgivad MyISAM-i tabelid .MYI-failide päised kui „praegu kasutusel“. Üldiselt ei ole hea mõte laudu liiga sageli avada, seega on kõige parem omada piisavalt suurt vahemälu, et kõik lauad oleksid avatud. See kasutab mõningaid OS-i ressursse ja RAM-i, kuid tänapäeva serverites pole see tavaliselt oluline probleem. Kui teil on mitusada tabelit, siis valiku algväärtus tabeli_vahemälu võib olla "1024" (pidage meeles, et iga ühendus nõuab oma käepidet). Kui teil on veelgi rohkem tabeleid või palju ühendusi, suurendage parameetri väärtust. Nägin väärtusega mySQL-i serverit tabeli_vahemälu võrdne 100 000-ga.
  • lõime_vahemälu- lõimede loomine/hävitamine on samuti ressursimahukas toiming, mis toimub iga kord, kui ühendus luuakse ja iga ühendus katkeb. Tavaliselt määran selle valiku väärtuseks 16. Kui teie rakenduses võib esineda hüppeid samaaegsete ühenduste arvus ja muutujate kaupa Lõimid_Loodud Kui näete niitide arvu kiiret kasvu, peaksite väärtust suurendama lõime_vahemälu. Eesmärk on vältida uute lõimede teket serveri tavapärase töö käigus.
  • query_cache_size- kui teie rakendus loeb andmeid palju ja sageli ning teil pole rakendusetaseme vahemälu, võib see valik olla väga kasulik. Ärge määrake seda väärtust liiga kõrgeks, kuna suure päringu vahemälu säilitamine on iseenesest kulukas. Soovitatav väärtus on 32–512 MB. Ärge unustage kontrollida, kui hästi päringu vahemälu kasutatakse – mõnel juhul (kui vahemälus on vähe tabamust, st kui identseid andmeid ei tõmmata peaaegu üldse) võib suure vahemälu kasutamine jõudlust halvendada.
Nagu näete, on need globaalsed seaded. Need muutujad sõltuvad serveri riistvarast ja kasutatavatest MySQL-mootoritest, samas kui seansimuutujad on tavaliselt konfigureeritud spetsiaalselt konkreetsete ülesannete jaoks. Kui kasutate enamasti lihtsaid päringuid, siis pole väärtust vaja suurendada sorti_puhvri_suurus, isegi kui teil on 64 GB lisamälu. Lisaks võivad suured vahemälu väärtused ainult serveri jõudlust halvendada. Parem on jätta seansimuutujad hilisemaks, serveri peenhäälestamiseks.

PS: mySQL-i installiga on kaasas mitu eelinstallitud my.cnf faili, mis on mõeldud erinevatele koormustele. Kui teil pole aega serverit käsitsi seadistada, on tavaliselt parem kasutada neid kui standardset konfiguratsioonifaili, valides teie serveri koormusele sobivama.