Cara cek penggunaan memori MySQL
Pertanyaan dari mas Try yang jumlah memory usage untuk proses MySQL cukup masif (hitungan puluhan GB!) menginspirasi saya untuk membuat artikel ini. Sebenarnya dalam angka – angka penggunaan RAM server tersebut terdiri dari apa saja?
Sederhananya kita bisa memanfaatkan query SQL juga, dan apabila kita pakai InnoDB sebagai engine databasenya maka ada statistik yang bisa dibaca:
SHOW ENGINE INNODB STATUS
Hasilnya akan panjang sekali, tapi saya potong untuk bagian yang kita butuhkan saja yakni pada BUFFER POOL AND MEMORY:
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 281542656; in additional pool allocated 0
Total memory allocated by read views 192
Internal hash tables (constant factor + variable factor)
Adaptive hash index 4479184 (4425832 + 53352)
Page hash 277432 (buffer pool 0 only)
Dictionary cache 1570108 (1107952 + 462156)
File system 851144 (812272 + 38872)
Lock system 665656 (664936 + 720)
Recovery system 0 (0 + 0)
Dictionary memory allocated 462156
Buffer pool size 16383
Buffer pool size, bytes 268419072
Free buffers 15753
Database pages 627
Old database pages 237
Modified db pages 0
Percent of dirty pages(LRU & free pages): 0.000
Max dirty pages percent: 75.000
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 556, created 71, written 18068
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 627, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
Saya bukan ahli database jadi sama – sama meraba – raba nanti analisanya. 😀 Yang pasti dalam VPS 512MB saya ternyata dialokasikan mencapai 256MB, walau tampaknya belum terpakai semua. Jadi calon memori maksimalnya sebesar itu.
Setelah itu mau diapakan? Ya.. dipandang juga boleh. 😛 Mungkin perlu optimasi dengan mysqltuner atau profiling mana yang perlu dioptimasikan, tapi untuk pembahasan advanced ya sama – sama awamnya. Hehe. 😀
Cara ini berlaku untuk MySQL, MariaDB dan Percona.