MySQL andmebaasi jõudluse parandamine

From ICO wiki
Jump to navigationJump to search

Sissejuhatus

Selles peatükis keskendutakse MySQL-i andmbeaasi jõudluse parandamisega. Peamiselt kirjeldatakse konfiguratsiooni failis olevad
muutujad ja nende suurused. MySQL andmebaasi konfiguratsiooni fail asub kaustas:

/etc/mysql/my.cnf

Selles failis võib muuta mälu, tabelite ja internti ühenduste piiranguid ja teisi võimalike muutusi lisada.

Tehnilised näitajad: MySQL 5.5 versioon

Autor

Sergei Istomin
A22
sistomin@itcollege.ee

InnoDB MySQL-is

InnoDB on talletamise mootor MySQL-i andmebaasi jaoks. InnoDB on oma funksionaalsuse poolest kõige eelistatum mootor, kuna InnoDB
mootor võimaldab teha teha andmete taastamist ja süsteemi kokkujooksmised salvestatakse log failidesse.
InnoDB salvestab andmete read füüsiliselt primaarsete võtmete järjekorras jne.
Rohkem lugemist leiab järgmiselt lingilt:InnoDB vs MyISAM

Kaks peamist ketta baasil manageeritud ressursi talletamist on InnoDB-s tema tabelite andme- ja logi failid.
Kui kasutaja ei spetsifitseeri InnoDB konfiguratsiooni sätteid, siis MySQL loob isiklikult auto-extending 10MB andmete faili
nimega idbata1 ja kaks 5MB log faili nimega ib_logfile0 ja ib_logfile1 MySQL-i andmete kategoorias.
Et parandada jõudlust tuleks lisada InnoDB parameetritele kindlad väärtused, mis on sobivad raudvaraga kokku.


MySQL-i Optimeerimine

Kaks kõige tähtsamat muutujat my.cnf failis on: Table_cache and Key_buffer_size

  • Kui Open_tables on väga suure mahuga, siis kindlasti on table_cache muutuja väikse mahuga.

Ehk: table_cache: 64 Open_tables: 64 Opened_tables: 544468

Parameeter nimega table_cache on arv avatud tabeleid. MySQL on multi-threaditud ja võib joosta paljudel päringutel samaaegselt ja iga üks nendest avab tabeli.
Seega kui kasutajal on paar tabelit, läheb temal vaja rohkem tabeleid opened_tables

Opened_table väärtus on kõrge ja näitab vahemälus olevaid puudusi.
Muutes table_cache parameetri suurust parandab oluliselt jõudlust.

  • Kui Key_reads on suure mahuga, siis key_buffer_size muutuja on ilmselt liiga väike.

Vahemälu jõudmise keskmist saab arvutada järmiselt:
Key_reads/Key_read_requests.
Key_buffer_size: 16M
Key_read_requests: 2973620399
Key_reads: 8490571
(cache hit rate = 0.0028)

Parameeter Key_buffer_size mõjutab indeksite puhvri suurust ja indexi käsitlemise aega. Tavaliselt peaks Key_reads/Key_read_request koefitsent olema < 0.01.
See on äärmuslikult tähtis, mida õigeks saada.

Kindlasti tuleks kontrollida Key_writes_requests ja Key_writes
Key_writes/Key_writes_request peaks olema tavaliselt < 1 (0.5 väärtuse juures sobib).