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 |
+--------------------+ |
$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 |
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 |
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.