Wesentlicher Unterschied zwischen der Datenbankgröße unter MySQL und der tatsächlichen Größe auf der Festplatte

dba.stackexchange https://dba.stackexchange.com/questions/11567

  •  16-10-2019
  •  | 
  •  

Frage

Wenn ich die Größe meiner Datenbanken unter MySQL überprüfe, bekomme ich Folgendes:

MariaDB [(none)]> SELECT table_schema "Data Base Name",  sum( data_length + index_length ) / 1024 /  1024 "Data Base Size in MB",  sum( data_free )/ 1024 / 1024 "Free Space in MB"  FROM information_schema.TABLES  GROUP BY table_schema;
+--------------------+----------------------+------------------+
| Data Base Name     | Data Base Size in MB | Free Space in MB |
+--------------------+----------------------+------------------+
| alfresco           |         245.75000000 |      34.00000000 |
| drupal             |         892.15625000 |     216.00000000 |
+--------------------+----------------------+------------------+

Wenn ich die Größe auf der Festplatte überprüfe, bekomme ich Folgendes:

$ sudo du -h --max-depth=1 /var/lib/mysql/
317M    /var/lib/mysql/alfresco
1.4G    /var/lib/mysql/drupal

Wenn ich sowohl verwendeten als auch freien Raum von Maria DB kombiniert und mit den Festplattenfiguren vergleiche, habe ich Folgendes:

alfresco: DB=279MB  DISK=317MB (+14%)
drupal: DB=1100MB   DISK=1433MB (+30%)

F: Ist es normal, so viel Overhead auf der Scheibe zu haben / kann ich etwas tun, um sie zu reduzieren?

Zu Ihrer Information, ich dachte, es würde helfen, eine MySQL -Optimierung zu betreiben (Verwenden Sie diesen Befehl), es reduzierte die Größe der Datenbanken, änderte jedoch nicht die Größe der Dateien auf der Festplatte.

Zusätzliche Information:

server:             ubuntu server 10.04 LTS
DB server:          MariaDB
DB engine:          InnoDB v10 (for all tables)
Table collation:    utf8_general_ci
Nb Drupal tables:   416  (0.80MB overhead per table)
Nb Alfresco tables: 84   (0.45MB overhead per table)
War es hilfreich?

Lösung

Wenn Sie InnoDB -Tabellen verwenden, wächst die Größe Ihrer Ibdata -Dateien im Laufe der Zeit. Also, wenn Sie ausgeben DELETE Anweisung, Ihre Datenbankgröße verringert sich, aber die IBDATA -Datei bleibt gleich (nicht reduziert).

Wenn Sie nicht verwenden innodb_file_per_table Option, die einzige Möglichkeit, den Raum zurückzugewinnen, besteht darin, die Datenbank abzuwerfen und aus dem DumpFile wiederherzustellen.

Wenn Sie jedoch verwenden innodb_file_per_table, Sie können eine ausstellen

ALTER TABLE foo ENGINE=InnoDB;

auf Tischen, die zu groß werden, um den Speicherplatz zurückzugewinnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top