26 ธันวาคม 2025

ตัวอย่าง my.cnf ที่ “ปลอดภัย + เหมาะกับงาน web/app”

MySQL-Performance-Tuning1

สมมติ Server:

  • Ubuntu 22.04
  • RAM 8 GB
  • MySQL / MariaDB 10.x–11.x
  • งาน Web + C# / PHP
[mysqld]

# ===============================
# BASIC
# ===============================
default-storage-engine = InnoDB
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# ===============================
# MEMORY & BUFFER
# ===============================
innodb_buffer_pool_size = 5G
innodb_buffer_pool_instances = 4

innodb_log_buffer_size = 64M
innodb_log_file_size = 1G

# ===============================
# IO PERFORMANCE
# ===============================
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 2
sync_binlog = 0

# ===============================
# CONNECTION
# ===============================
max_connections = 300
thread_cache_size = 100
table_open_cache = 4000

# ===============================
# TEMP & SORT
# ===============================
tmp_table_size = 256M
max_heap_table_size = 256M
sort_buffer_size = 4M
join_buffer_size = 4M

# ===============================
# QUERY CACHE (เฉพาะ MySQL < 8)
# ===============================
# query_cache_type = 0
# query_cache_size = 0

# ===============================
# LOG (สำคัญมาก)
# ===============================
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

🔹 ถ้า RAM 16GB → เพิ่ม innodb_buffer_pool_size เป็น 10–12GB ได้

ค่าผล
innodb_buffer_pool_sizeindex อยู่ใน RAM มากขึ้น
innodb_buffer_pool_instancesลด contention
sort_buffer_sizeเร็วขึ้นตอน ORDER BY
join_buffer_sizeJOIN แบบไม่มี index ดีขึ้นเล็กน้อย