[ Tyler Durden @ 06.12.2008. 10:00 ] @
Potrebno mi je da maksimalno optimizujem MySQL (najnovija 5.0.x verzija, možda i 5.1.x ako mi softver bude htio da radi sa tom verzijom) server za SELECT upite. Sve ostale operacije me ne zanimaju skoro upošte i mogu da traju koliko god treba :)
Šta da gledam, dajte mi neke savjete. I što se tiče hardvera (mada je tu sve već prilično određeno) i što se tiče softverskih optimizacija.
[ bogdan.kecman @ 06.12.2008. 10:20 ] @
bez promene aplikacije - QUERY CACHE
sa promenom aplikacije - MEMCACHED

za ostalo, morao bi da das malo vise informacija
[ Tyler Durden @ 06.12.2008. 15:42 ] @
Ne znam sta te interesuje :)
Na query cache sam racunao, ne znam samo koliko da mu dam memorije i da li moze da postane kontraproduktivno u nekom trenutku. Zanimaju me da li postoji jos neki parameter slican QC, na koji bi trebao da obratim paznju.

Upiti bi bili brzi sami po sebi, jedino sto bi ih bilo puno. Vracali bi samo 1 red sa maksimalno 7-8 kolona, u svakoj samo po par karaktera.
[ bogdan.kecman @ 06.12.2008. 17:45 ] @
Citat:
Tyler Durden
Na query cache sam racunao, ne znam samo koliko da mu dam memorije i da li moze da postane kontraproduktivno u nekom trenutku. Zanimaju me da li postoji jos neki parameter slican QC, na koji bi trebao da obratim paznju.

Upiti bi bili brzi sami po sebi, jedino sto bi ih bilo puno. Vracali bi samo 1 red sa maksimalno 7-8 kolona, u svakoj samo po par karaktera.


query cache mozes da koristis ako nemas mnogo update-a .. zavisno od koliko cesto imas promene mozes da teras query cache do 4G.
savetujem da ga stavis na "manju" vrednost .. ~100M pa da pratis query cache hit ratio, dokle god je preko 80% mozes da povecavas
vrednost, ako padne ispod 80% nemoj dalje posto onda usporavas sistem. razlog je to sto se pri svakom update/delete/insert radi invaliditizacija query cache-a tako da ako imas mnogo promena u bazi hit ratio ce ti biti mali posto ce on konstantno prolaziti kroz query cache i cistiti ga - sto traje neko vreme.

sve ostalo zavisi od izgleda upita, izgleda tabela i odabranog storage engine-a. za innodb bustuj innodb buffer size na 80% ram-a, za myisam povecaj table_cache, budi siguran da imas dovoljan broj file handle-ova, razmisli koliki ti treba sort buffer i key buffer ...

sve to ima uticaja, no, ne postoji "silver bullet", sve se to tweakuje u odnosu na to kako radi tvoja aplikacija i kakve upite izvrsava. tu u mnogome moze da pomogne enterprise monitor posto daje mnogo dobru statistiku sta se kada desava, no, doticni nije dzaba (tj. dzaba je za one koji placaju support)
[ Tyler Durden @ 06.12.2008. 19:36 ] @
Kako da izracunam query cache hit ratio?
[ bogdan.kecman @ 07.12.2008. 12:09 ] @
Code:

mysql> show global status like '%qcache%';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Qcache_free_blocks      | 0     | 
| Qcache_free_memory      | 0     | 
| Qcache_hits             | 0     | 
| Qcache_inserts          | 0     | 
| Qcache_lowmem_prunes    | 0     | 
| Qcache_not_cached       | 0     | 
| Qcache_queries_in_cache | 0     | 
| Qcache_total_blocks     | 0     | 
+-------------------------+-------+
8 rows in set (0.00 sec)


mislim da je prilicno jasno :)

ako ti lowmem_prunes ode gore, povecaj prostor posto ti mysql prazni cache zato sto nema dovoljno prostora.


e sad, za "kako da izracunas" ...
Broj selectova: Com_select
Code:

Efficiency = Qcache_hits / ( Com_select + Qcache_hits )


bitne informacije su takodje:

Code:

Qcache_hits / Qcache_inserts


Code:

( Com_insert + Com_delete + Com_update + Com_replace ) / Qcache_hits


jasno ?
[ Tyler Durden @ 10.12.2008. 15:42 ] @
Evo stanja kod mene
Code:
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 6675      |
| Qcache_free_memory      | 22132384  |
| Qcache_hits             | 529801382 |
| Qcache_inserts          | 250209335 |
| Qcache_lowmem_prunes    | 78569833  |
| Qcache_not_cached       | 20929010  |
| Qcache_queries_in_cache | 17701     |
| Qcache_total_blocks     | 45896     |
+-------------------------+-----------+


Pozabavicu se sad malo racunom...
[ bogdan.kecman @ 10.12.2008. 23:06 ] @
moraces da pokupis i

show global status like 'Com_%';

za query cache hit ratio imas formulu .. ostale mozes sam da izvedes... matematika je jednostavna malo + malo - i malo / .. tu i tamo mozda nesto treba pomnoziti :)