MYSQL-Datenbank reorganisieren

Die in den Queues der einzelnen channel gespeicherten Nachrichten werden pro channel in einer einzelnen InnoDB-Tabelle gespeichert. Pro Tabelle existiert eine einzelne InnoDB-Datei.

Am Anfang der Entwicklung behält man meist alle Nachrichten eines channels. Später mimmt man dann eine Einstellung für das Message pruning vor, so dass veralterte Nachrichten durch den Message pruner wieder gelöscht werden. Dies hat allerdings nicht zur Folge, dass die einmal angelegte Datenbankdatei wieder schrumpft, da die bereits belegten Datenbankblöcke nicht mehr freigegeben werden. Hierzu muss man zunächst die Datenbanktabelle reorganisieren.

Wenn man eine große InnoDB-Datei auf dem Mirth Connect Server findet, muss man zunächst herausfinden, zu welchem channel die
Datei gehört. Die Datei sei mirthdb\d_mc213.ibd, was bedeutet, dass die LOCAL_CHANNEL_ID = 213 ist. Mit folgendem SQL-Statement lässt sich dann der zugehrige Namen des channel ermitteln:

select mirthdb.channel.NAME from mirthdb.channel,mirthdb.d_channels
where mirthdb.channel.ID = mirthdb.d_channels.CHANNEL_ID
and `d_channels`.`LOCAL_CHANNEL_ID` = 213;

Anschließend stoppt man den entsprechenden channel und führt über das Kommandozeilentool mysql folgenden Reorganisationsbefehl aus:

OPTIMIZE TABLE d_m213;

Kennt man den Namen cHnoAdtUkbAgfaOut des channels, kann man die LOCAL_CHANNEL_ID wie folgt ermitteln:

select mirthdb.d_channels.LOCAL_CHANNEL_ID from mirthdb.channel,mirthdb.d_channels
where mirthdb.channel.ID = mirthdb.d_channels.CHANNEL_ID
and mirthdb.channel.NAME = 'cHnoAdtUkbAgfaOut';