MySQL optimalizálás – 4. rész

Ebben részben megnézzük, hogy tudjuk elvégezni a scriptek által javasolt beállításokat.

A beállításokat a MySQL szerver konfigurációs állományában tudjuk megtenni, ami a my.cnf névre hallgat. Ez Debian/Ubuntu operációs rendszeren az /etc/mysql könyvtár alatt található. Egyéb rendszereken az /etc/my.cnf útvonalon található meg.

Nyissuk meg ezt az állományt:

Kezdjük a sort a lassú kérések naplózásának bekapcsolásával:
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 10
log-queries-not-using-indexes

Nézzük mit jelenteken a fenti sorok:
log_slow_queries: Ezzel kapcsoljuk be a naplózást, illetve megadjuk, hogy az hova történjen
long_query_time: Példánkban a 10 másodpercnél tovább futó sql lekérdezések számítsanak lassúnak
log_queries-not-using-indexes: Azokat a lekérdezéseket is naplózzuk, melyek nem használnak indexeket.

Bináris naplózás (Binary log):
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M

server-id: Adunk a gépünknek egy azonosított, ez replikációnál lehet fontos, ahol nem lehet két egyforma nevű gép
log_bin: bináris naplózás bekapcsolása és a napló megadása
expire_logs_days : Hány napig őrizze meg a naplót
max_binlog_size: Mekkora lehet a napló maximális mérete

Szálak gyorsítótára (Thread Cache):
thread_cache_size  = 8
thread_stack = 192K

thread_cache_size: Szál gyorsító tár mérete
thread_stack: Egy adott szálhoz tartozó memória mérete

Maximális kapcsolatok (Max Connections):
max_connections=100
wait_timeout=100

max_connections: Egyidejűleg ennyi kapcsolatod tud fogadni az sql szerver
wait_timeout: Ennyi idő után elbontja a kapcsolatot, és felszabadítja az erőforrásokat

Kulcs gyorsítótár (Key Buffer):
key_buffer_size=128M

key_buffer_size: A kulcs gyorsítótár méretét tudjuk megadni

Lekérdezés gyorsítótár (Query Cache):
query-cache-type  = 1
query_cache_size  = 256M
query_cache_min_res  = 1K
query_cache_limit = 24M

query-cache-type: A gyorsítótárazás bekapcsolása
query_cache_size: A gyorsítótár mérete
query_cache_min_res: A minimális foglalási egység, ha ennél kisebb a lekérdezés eredménye akkor is ekkora helyet fog lefoglalni neki a memóriában.
query_cache_limit: Az ennél nagyobb méretű eredményt adó lekérdezések nem lesznek gyorsítótárazva.

Join gyorsítótár (Join Buffer):
join_buffer_size = 2M

Joint tartalmazó lekérdezések gyorsítótár mérete, ezt ajánlott 2M vagy alatta tartani.

Megnyitott fájlok:
open_files_limit = 32768

Ennyi fájlt nyithat meg maximálisan a mysql szerver, fontos hogy nagyobb legyen a table_cache –nél. Viszont figyelni kell, hogy az operációs rendszer által megnyitható fájlok számánál viszont kevesebb, ezt az alábbi paranccsal tudjuk lekérdezni:

cat /proc/sys/fs/file-max

Tábla gyorsítótár (Table Cache):
table_cache = 16384
table_definition_cache = 2048

table_cache: Tábla gyorsítótár mérete, ennyi tábla kerülhet a cache –be
table_definition_cache: Tábla definíció gyorsítótár mérete

Ideiglenes tába gyorsítótár (Temp Table):
tmp_table_size   = 256M

Az ideiglenes tábla gyorsítótár mérete.

Ezek lennének a főbb beállítások. A helyes beállításokat sok tesztelés után lehet elérni, de utána is folyamatosan ellenőrizni kell őket. Ha változik az adatbázis terhelés, új adatbázisok kerülnek be a rendszerbe, akkor szinte biztos, hogy hozzá kell majd nyúlnunk ezekhez a beállításokhoz.

Ezen alapokkal azért remélem könnyebb lesz megtalálni a megfelelő beállításokat, sok sikert kívánok hozzá !

One comment to MySQL optimalizálás – 4. rész

  • mtommy  üzenet:

    Volt itt egy bejegyzés, csak valami oknál fogva eltűnt, amelyben egy olyan kérdés merült fel, hogy miért korlátozzuk a mysql cache méreteket.

    A mysql lekérések mérete általában igen kicsit, pár kilóbájt, ezért például egy 256MB méretű query_cache méretben elég sok elfér. Ha bejön egy kérés a mysqlhez, akkor az eredményét legelőször a cache-ben keresi meg, ha nem találja meg, akkor pedig kéri lefutatja a kérést az adatbázison.

    Ha túl nagyra választjuk a cache méretét, akkor előfordulhat, hogy lassabb lesz az adatbázis elérése, mint előtte. Azért mert például egy 2GB-os cache méretben igen sok lekérés elfér, és ha kérés érkezik akkor ezek között kell megtalálnia az eredményt, ami akár több időt is igénybe vehet, mint ha egyszerűen lefuttatatná az adott kérést és vissza adná az eredményét. Ezért nincs igazán javallt cache méret, kezdésnek egy 128-512 méret jó lehet, de ez után kísérletezni kell vele, hogy megtaláljuk az ideális beállítást.

Szólj hozzá

A következő HTML tag-ek használhatók: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>