News
DBA-Tipp: MySQL - Performanceboost dank tmpfs

Die Information ist ein schnelllebiges Gut. Jeden Tag werden wir mit hunderten Informationen zugemüllt. Deshalb sind wir bestrebt uns auf das Wesentliche zu konzentrieren und nur substantiell nachhaltige Informationen bereitzustellen.

Icon Unternehmen

Mit einer passenden Oracle Infrastruktur und einer sauberen MOCA-Installation ist man in Sachen Performance mit Oracle MySQL sehr gut aufgestellt. Zusätzlich gibt es aber immer ein paar kleine Stellschrauben, mit denen man noch ein bisschen Geschwindigkeit aus seiner MySQL Datenbank kitzeln kann. Dieser Artikel beschreibt die Auslagerung temporärer Tabellen in ein TempFS / eine RAM-Disk.

Ausgehend von Oracle Linux wird /dev/shm jeweils mit halber Größe des zur Verfügung stehenden Arbeitsspeichers angelegt. Dies ist meist ausreichend; man sollte aber mindestens mit 1GB, im besten Fall 2GB rechnen.

Wir legen /dev/shm mit 2GB an:

vim /etc/fstab
shmfs /dev/shm tmpfs    size=2G 0 0
mount -o remount /dev/shm

Der Gründlichkeit halber legen wir einen Unterordner "mysql" an und setzen die benötigten Berechtigungen:

mkdir -p /dev/shm/mysql
chown mysql: /dev/shm/mysql

Soweit, so gut. Damit die Oracle MySQL Datenbank die Änderungen anwendet, muss in der Konfigurationsdatei noch der Parameter "tmpdir" angepasst werden und der Service neugestartet werden:

vim /u05/mysqldata/mysql57-01/admin/startup/conf.d/common.cnf
[mysqld]
tmpdir           = /dev/shm/mysql
service mysqld restart

Geschafft! Ein kleiner Test sollte zum erwartendem Ergebnis führen

mysql
mysql> create database test;
mysql> use test;
mysql> CREATE TEMPORARY TABLE tmpfs_test (FooID int, BarName varchar(255));

Sollten Fehlermeldungen bezüglich unzulässiger Berechtigungen auftreten, sollte SELinux abgeschaltet oder angepasst werden. 

setenforce 0

Fazit

Ob für die kleine Passwortdatenbank oder große ERP-Lösung, die Auslagerung temporärer Tabellen sollte, neben der konformen und zertifizierten Installation, in das Standardrepertoire eines DBA gehören!