Mulle tundus kuidagi võimatu, et inglise keel on tundmatu. Proovin siis teha väikese kokkuvõtte võttes aluseks ülaltoodud lehed.
MySQL 5.x oskab kasutada üsna mitut nn. salvestusmootorit. Salvestusmootor on teek, mis tegeleb andmete paigutamisega andmekandjale ja nende välja lugemisega. Teadlikult või teadmatult kasutad sa ennekõige järgmiseid mootoreid:
* MyISAM, mis oli vaikimisi mootor kuni v5.5-ni, kui kompileerimisel või konfifailis ei ole teisiti öeldud. Plussideks on väiksem kettakasutus, miinuseks kesine kiirus kirutamisel ja lugemisel korraga ning transaktsioonide toe puudumine.
* InnoDB on uus vaikimis mootor. Toetab transaktsioone, täpsemat lukustamist, kuid samas tahab rohkem resursse. Mõned statistilised parameetrid võivad InnoDB-ga olla väga mööda. Nt. ridade arv võis tegelikust erineda 40-50% (täpse tulemuse annab "select count (field) from table;").
* Memory, mida kasutatakse mälus olevate tabelite hoidmiseks.
Mootoreid on veel; huvitatud isik klikib lingil
http://dev.mysql.com/doc/refman/5.6/en/ ... gines.html
Ennist jäi teadlikult mainimata veel üks InnoDB ja MyISAM'i erinevus: InnoDB mootor hoiab kõik andmebaasi tabelid kettal ühes failis nagu nt. SQLite või M$ Access; MyISAM loob aga iga tabeli jaoks kolm faili (tabeli kirjeldus - *.frm, salvestatud andmed - *.MYD ja indeksid - *.MYI).
InnoDB salvestab laias laastus nelja tüüpi andmeid:
* tabelite (andmete) kirjeldused
* tabelites salvestatud andmed
* tabelite juurde kuuluvad indeksid
* mitmeversioonilise paralleelse halduse andmed, mis on muuhulgas
- transaktsioonide rollback segmendid
- tagasivõtmise puhvrid
- topelt kirjutamise puhvrid
- lisamispuhver
Kui jätta kõrvale tabelite kirjeldused, mis istuvad ikka veel eraldi .frm failis, siis kõik ülejäänud asjad istub kõikide andmebaaside jaoks, mis on valinud salvestusmeetodiks InnoDB, ühes failis - ibdata1.
Tagasi probleemi juurde. Miks jääb üks fail aeglaseks? Sest vahel on failisüsteem. Ibdata1 üritab asendada otsepöördusega salvestusmeediat. Kui andmeid on palju, siis paisub fail suureks ja kipub fragmenteeruma. Seega on parim vastus küsimusele "kuidas andmebaas kiireks saada?" pane andmed eraldi kettale, mida kasutab ainult andmebaasi mootor otse, ilma failisüsteemita.
Alati ei ole aga eraldi ketta (pigem RAID-5/6/1+0 kettamassiivi) eraldamine võimalik. Sellisel juhul tasub proovida eri tüüpi andmete eraldamist - panna kõik tabelid eraldi failidesse (laiend .ibd) nagu seda teeb MyISAM. Metaandmed jäävad faili ibdata1 edasi; neid liigutada ei saa. Võimalik on aga liigutada üksikuid tabeleid erinevatele andmekandjatele.