Kleinere LAMP-Instanzen laufen heute meist in virtuellen Server-Umgebungen, hier ist Speicher knapp bemessen. Mit dem Abschalten der InnoDB Database Engine lässt sich MySQL deutlich abspecken.
Schritt 1 — prüfen ob InnoDB als Engine verwendet wird:
1 2 3 4 5 6 7 8 9 10 | $mysql_pass=your_password mysql -p$mysql_pass -e "select distinct ENGINE FROM information_schema.TABLES" +--------------------+ | ENGINE | +--------------------+ | MEMORY | | MyISAM | | CSV | | PERFORMANCE_SCHEMA | +--------------------+ |
Im Beispiel taucht InnoDB nicht auf und kann daher deaktiviert werden.
Schritt 2 — InnoDB deaktivieren
Sollte eine Datenbank InnoDB-Tabellen haben, lässt sich die DB-Engine mit folgende Script auf MyISAM umstellen. (Vorher Backup anlegen!)
1 2 3 4 5 | mysql_pass='your_password' db='your_database' for t in `mysql -p$mysql_pass --skip-column-names -B -e "select table_name FROM information_schema.TABLES where engine = 'innodb'"`; do mysql -p$mysql_pass $db -e "ALTER TABLE $t ENGINE=MYISAM"; done |
Schritt 3 — InnoDB deaktivieren
Unter Debian/Ubuntu lässt sich die InnoDB Engine in der Konfigurationsdatei /etc/mysql/my.cnf
mit folgenden Zeilen deaktivieren:
1 2 | innodb=OFF default_storage_engine=MyISAM |
Schritt 4 — Test
sudo service mysql restart mysqladmin -u root -p$mysql_pass var | grep have_innodb #Vorher | have_innodb | YES #Nachher | have_innodb | DISABLED
Ergebnis
Im Chart sind zwei Senkung des für Anwendungen allokierte Speichers (committed) sichtbar.
Die erste Senkung ist auf die oben beschriebene Anpassung der MySQL-Konfiguration zurückzuführen. Die zweite Senkung wurde duch eine Anpassung der Apache Konfiguration verursacht.