Optimierung der Datenbanktabellen

Bemerkung

Dieses Tutorial ist nur für On-Premise-Kunden gedacht. Das Customer Solutions Team kümmert sich um die Datenbank der verwalteten Kunden.

Aufgrund der Beschaffenheit von Datenbanktabellen können diese im Laufe der Zeit fragmentiert werden. Die Fragmentierung wird durch die Aktualisierung der Werte in den Datensätzen verursacht. Das ist normal, aber eine fragmentierte Tabelle braucht mehr Speicherplatz und die Abfragen können langsamer laufen.

Dies ist ein Thema der Datenbankoperationen und hat nichts mit OTRS zu tun, aber dieses Tutorial kann helfen, das Problem zu identifizieren und zu lösen, wenn die Datenbank immer größer wird.

So optimieren Sie die Datenbanktabellen:

  1. Überprüfen Sie den Status der Tabellen mit der folgenden SQL-Anweisung.

    SELECT
      TABLE_NAME,
      ROUND(DATA_LENGTH/1024/1024, 2) AS DATA_LENGTH,
      ROUND(INDEX_LENGTH/1024/1024, 2) AS INDEX_LENGTH,
      ROUND(DATA_FREE/1024/1024, 2) AS DATA_FREE,
      (data_free/(index_length+data_length)) AS FRAG_RATIO
    FROM information_schema.tables
    WHERE TABLE_SCHEMA = 'otrs'
    AND DATA_FREE > 0
    ORDER BY frag_ratio DESC;
    
  2. Überprüfen und analysieren Sie die Ausgabe, die wie folgt aussehen sollte.

    +--------------------------------+-------------+--------------+-----------+------------+
    | TABLE_NAME                     | DATA_LENGTH | INDEX_LENGTH | DATA_FREE | FRAG_RATIO |
    +--------------------------------+-------------+--------------+-----------+------------+
    | communication_log_object_entry |        0.02 |         0.03 |     10.00 |   213.3333 |
    | user_config                    |        1.19 |         0.05 |      4.00 |     3.2405 |
    | web_upload_cache               |        7.31 |         0.00 |     22.00 |     3.0085 |
    | article_data_mime              |        1.52 |         0.06 |      4.00 |     2.5347 |
    | sysconfig_deployment           |       10.02 |         0.02 |     16.00 |     1.5950 |
    | xml_storage                    |        1.50 |         1.92 |      4.00 |     1.1689 |
    | mail_queue                     |        5.52 |         0.05 |      4.00 |     0.7191 |
    | virtual_fs_db                  |        1.52 |         0.02 |      1.00 |     0.6531 |
    | sysconfig_default              |        6.41 |         0.31 |      4.00 |     0.5953 |
    | sysconfig_default_version      |       10.52 |         0.45 |      5.00 |     0.4558 |
    | package_repository             |       33.52 |         0.03 |     11.00 |     0.3279 |
    +--------------------------------+-------------+--------------+-----------+------------+
    

    Die Ausgabe zeigt, dass der Fragmentierungsgrad der Tabelle communication_log_object_entry 213 beträgt und die Tabelle 10 MB leere Daten enthält.

  3. Wenn das Fragmentierungsverhältnis größer als 50% ist (0.5 in der Spalte FRAG_RATIO), sollten Sie erwägen, die Tabelle mit Hilfe der SQL-Anweisung OPTIMIZE zu optimieren.

    OPTIMIZE TABLE otrs.communication_log_object_entry;
    
  4. Überprüfen Sie, ob die Tabelle nicht mehr fragmentiert ist. Verwenden Sie die gleiche SQL-Anweisung wie in Schritt 1.

    +---------------------------+-------------+--------------+-----------+------------+
    | TABLE_NAME                | DATA_LENGTH | INDEX_LENGTH | DATA_FREE | FRAG_RATIO |
    +---------------------------+-------------+--------------+-----------+------------+
    | user_config               |        1.19 |         0.05 |      4.00 |     3.2405 |
    | web_upload_cache          |        7.31 |         0.00 |     22.00 |     3.0085 |
    | article_data_mime         |        1.52 |         0.06 |      4.00 |     2.5347 |
    | sysconfig_deployment      |       10.02 |         0.02 |     16.00 |     1.5950 |
    | xml_storage               |        1.50 |         1.92 |      4.00 |     1.1689 |
    | mail_queue                |        5.52 |         0.05 |      4.00 |     0.7191 |
    | virtual_fs_db             |        1.52 |         0.02 |      1.00 |     0.6531 |
    | sysconfig_default         |        6.41 |         0.31 |      4.00 |     0.5953 |
    | sysconfig_default_version |       10.52 |         0.45 |      5.00 |     0.4558 |
    | package_repository        |       33.52 |         0.03 |     11.00 |     0.3279 |
    +---------------------------+-------------+--------------+-----------+------------+
    
  5. Wiederholen Sie Schritt 3 für die anderen Tabellen, falls erforderlich. Sie können mehrere Tabellen gleichzeitig optimieren.

    OPTIMIZE TABLE otrs.communication_log_object_entry, otrs.web_upload_cache, otrs.package_repository;
    

Siehe auch

Lesen Sie das offizielle Handbuch von MySQL für detaillierte Informationen.

Nach oben scrollen