Docs / Performance Optimization / Tune Linux Kernel for Database Workloads

Tune Linux Kernel for Database Workloads

By Admin · Mar 15, 2026 · Updated Apr 23, 2026 · 337 views · 1 min read

Database servers have unique requirements that differ significantly from general-purpose Linux deployments. Proper kernel tuning can improve database throughput by 30-50% without any application changes. This guide covers the essential kernel parameters for MySQL, PostgreSQL, and other database workloads running on VPS and dedicated servers.

Memory Management

vm.swappiness

The most critical setting for databases. Controls the kernel's tendency to swap memory pages to disk:

# Check current value
cat /proc/sys/vm/swappiness
# Default is 60 — far too aggressive for databases

# Set to 1 for database servers (never set to 0 on modern kernels)
sudo sysctl vm.swappiness=1

# Make permanent
echo "vm.swappiness = 1" | sudo tee -a /etc/sysctl.d/99-database.conf

Setting swappiness to 1 (not 0) tells the kernel to avoid swapping unless absolutely necessary. A value of 0 can cause OOM kills on newer kernels instead of swapping, which is worse than a brief swap spike.

Transparent Huge Pages (THP)

THP causes latency spikes and memory fragmentation issues with databases. Both MySQL and PostgreSQL documentation recommend disabling it:

# Disable THP immediately
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag

# Make permanent via systemd service
cat         

Was this article helpful?