<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>http://vwiki.co.uk/index.php?action=history&amp;feed=atom&amp;title=Performance_Tuning_%28MySQL%29</id>
	<title>Performance Tuning (MySQL) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://vwiki.co.uk/index.php?action=history&amp;feed=atom&amp;title=Performance_Tuning_%28MySQL%29"/>
	<link rel="alternate" type="text/html" href="http://vwiki.co.uk/index.php?title=Performance_Tuning_(MySQL)&amp;action=history"/>
	<updated>2026-05-29T17:18:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://vwiki.co.uk/index.php?title=Performance_Tuning_(MySQL)&amp;diff=2723&amp;oldid=prev</id>
		<title>Sstrutt: Initial creation</title>
		<link rel="alternate" type="text/html" href="http://vwiki.co.uk/index.php?title=Performance_Tuning_(MySQL)&amp;diff=2723&amp;oldid=prev"/>
		<updated>2020-07-06T18:15:59Z</updated>

		<summary type="html">&lt;p&gt;Initial creation&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== OS Changes ==&lt;br /&gt;
=== OS Swapiness ===&lt;br /&gt;
Adjusts OS&amp;#039;s tendency to swap memory to disk.  The OS will swap memory to disk when the % usage of RAM is reached, so for 60%, the OS will start swapping when there is 60% of available RAM remaining.&lt;br /&gt;
&lt;br /&gt;
* To change permanently&lt;br /&gt;
*# Edit &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
*# Update &amp;lt;code&amp;gt;vm.swappiness = 0&amp;lt;/code&amp;gt;&lt;br /&gt;
*# &amp;#039;&amp;#039;&amp;#039;Reboot&amp;#039;&amp;#039;&amp;#039; to apply&lt;br /&gt;
* To change on the fly&lt;br /&gt;
** &amp;lt;code&amp;gt; sysctl vm.swappiness=10 &amp;lt;/code&amp;gt;&lt;br /&gt;
* To check current&lt;br /&gt;
** &amp;lt;code&amp;gt; cat /proc/sys/vm/swappiness &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disk IO Scheduler ===&lt;br /&gt;
Adjusts the disk IO queuing algorithm in use.  Deadline is recommended for MySQL.&lt;br /&gt;
&lt;br /&gt;
* To change permanently (requires reboot)&lt;br /&gt;
*# Edit the &amp;lt;code&amp;gt; /etc/grub.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
*# Append &amp;lt;code&amp;gt;elevator=deadline&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt; kernel &amp;lt;/code&amp;gt; line (see example below)&lt;br /&gt;
* To change &amp;lt;code&amp;gt; sda &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt; sdb &amp;lt;/code&amp;gt; devices on the fly&lt;br /&gt;
*# &amp;lt;code&amp;gt; echo deadline &amp;gt; /sys/block/sda/queue/scheduler &amp;lt;/code&amp;gt;&lt;br /&gt;
*# &amp;lt;code&amp;gt; echo deadline &amp;gt; /sys/block/sdb/queue/scheduler &amp;lt;/code&amp;gt;&lt;br /&gt;
* To check current&lt;br /&gt;
** &amp;lt;code&amp;gt;cat /sys/block/sda/queue/scheduler&amp;lt;/code&amp;gt;&lt;br /&gt;
** Current scheduler is surrounded by &amp;lt;code&amp;gt;[ ... ]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 title Red Hat Enterprise Linux Server (2.6.18-8.el5)&lt;br /&gt;
 	root (hd0,0) &lt;br /&gt;
 	kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/sda2 elevator=deadline&lt;br /&gt;
 	initrd /initrd-2.6.18-8.el5.img&lt;br /&gt;
&lt;br /&gt;
=== Disable Last Access Timestamps ===&lt;br /&gt;
Stops the filesystem tracking the last time a file was accessed.&lt;br /&gt;
&lt;br /&gt;
* To change&lt;br /&gt;
*# Edit &amp;lt;code&amp;gt; /etc/fstab &amp;lt;/code&amp;gt;&lt;br /&gt;
*# Add &amp;lt;code&amp;gt;noatime&amp;lt;/code&amp;gt; option to relevant filesystems (see example below&lt;br /&gt;
*# &amp;#039;&amp;#039;&amp;#039;Reboot&amp;#039;&amp;#039;&amp;#039; to apply&lt;br /&gt;
* To check current&lt;br /&gt;
** Run &amp;lt;code&amp;gt; mount &amp;lt;/code&amp;gt; command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/mapper/VolGroup00-LogVol01 /                       ext4    noatime,defaults        1 1&lt;br /&gt;
UUID=264a246c-1823-4ef5-87f2-1a976d272a74 /boot                   ext4    defaults        1 2&lt;br /&gt;
/dev/mapper/VolGroup00-LogVol02 /home                   ext4    noatime,defaults        1 2&lt;br /&gt;
/dev/mapper/VolGroup00-LogVol04 /tmp                    ext4    noatime,defaults        1 2&lt;br /&gt;
/dev/mapper/VolGroup00-LogVol03 /usr                    ext4    noatime,defaults        1 2&lt;br /&gt;
/dev/mapper/VolGroup00-LogVol05 /var                    ext4    noatime,defaults        1 2&lt;br /&gt;
/dev/mapper/VolGroup00-LogVol00 swap                    swap    defaults        0 0&lt;br /&gt;
tmpfs                   /dev/shm                tmpfs   defaults        0 0&lt;br /&gt;
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0&lt;br /&gt;
sysfs                   /sys                    sysfs   defaults        0 0&lt;br /&gt;
proc                    /proc                   proc    defaults        0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MySQL Server Changes ==&lt;br /&gt;
The MySQL config file is normally found at &amp;lt;code&amp;gt;/etc/my.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== InnoDB Buffer Size ===&lt;br /&gt;
Amount of memory that can be used by InnoDB to store data and indexes, should be as high as possible whilst leaving enough for other system processes (EG 12GB for a 16GB system)&lt;br /&gt;
&lt;br /&gt;
 innodb_buffer_pool_size                 = 10G&lt;br /&gt;
&lt;br /&gt;
Requires restart to apply.&lt;br /&gt;
 &lt;br /&gt;
=== InnoDB Buffer Pools ===&lt;br /&gt;
Number of pools to split the buffer space into.  Should equal the number of CPUs.&lt;br /&gt;
&lt;br /&gt;
 innodb_buffer_pool_instances            = 4&lt;br /&gt;
&lt;br /&gt;
Requires restart to apply.&lt;br /&gt;
&lt;br /&gt;
=== InnoDB Redo Log Size ===&lt;br /&gt;
Needs to be sufficiently large enough to allow good write performance.&lt;br /&gt;
 &lt;br /&gt;
 innodb_log_file_size                    = 64M&lt;br /&gt;
&lt;br /&gt;
To apply change...&lt;br /&gt;
# Update config file&lt;br /&gt;
# Shutdown MySQL&lt;br /&gt;
#* &amp;lt;code&amp;gt; service mysql stop &amp;lt;/code&amp;gt;&lt;br /&gt;
# Delete the old logfiles&lt;br /&gt;
#* EG &amp;lt;code&amp;gt; mv /var/lib/mysql/ib_logfile* /var/tmp/. &amp;lt;/code&amp;gt;&lt;br /&gt;
# Start MySQL&lt;br /&gt;
#* &amp;lt;code&amp;gt; service mysql start &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== InnoDB Statistics ===&lt;br /&gt;
Setting this option to OFF is recommended to avoid that some queries on the information_schema database become very slow.&lt;br /&gt;
&lt;br /&gt;
 innodb_stats_on_metadata                = off&lt;br /&gt;
&lt;br /&gt;
=== Sync Binary Log ===&lt;br /&gt;
Forces writes to the binary log to be written to disk immediately (can&amp;#039;t be write-cached by OS).&lt;br /&gt;
&lt;br /&gt;
 sync_binlog     = 1&lt;br /&gt;
&lt;br /&gt;
=== Query Cache  ===&lt;br /&gt;
Disable the query cache completely, this entire cache is governed by a single mutex which hurts performance, in later versions of MySQL is it disabled by default.&lt;br /&gt;
&lt;br /&gt;
 query_cache_limit = 0&lt;br /&gt;
 query_cache_size = 0&lt;br /&gt;
&lt;br /&gt;
=== Maximum Connections ===&lt;br /&gt;
Maximum number of concurrent client connections&lt;br /&gt;
&lt;br /&gt;
 max_connections = 400&lt;br /&gt;
&lt;br /&gt;
Requires restart to apply.&lt;br /&gt;
&lt;br /&gt;
=== Disable DNS Resolution ===&lt;br /&gt;
&lt;br /&gt;
 skip-name-resolve&lt;br /&gt;
&lt;br /&gt;
Requires restart to apply.&lt;br /&gt;
&lt;br /&gt;
[[Category:MySQL]]&lt;br /&gt;
[[Category:Linux]]&lt;/div&gt;</summary>
		<author><name>Sstrutt</name></author>
	</entry>
</feed>