Superamento dello spazio di archiviazione di un database MySQL

Con le nostre attuali tariffe hai a disposizione 1 GB di spazio di archiviazione per ogni database MySQL. Se questo limite viene superato, l'accesso in scrittura al database viene bloccato fino a quando lo spazio in eccesso non viene di nuovo liberato.

Uno dei possibili motivi per cui il limite di archiviazione viene superato può essere la frequente modifica delle tabelle. Con la modifica delle tabelle, lo spazio occupato è sempre maggiore, nonostante in realtà il volume dei dati salvati non cambia di molto. Lo spazio di archiviazione del database può essere riorganizzato e ottimizzato in qualsiasi momento.

Di seguito ti spieghiamo come liberare e quindi ottimizzare lo spazio nel tuo database MySQL ed evitare che venga bloccato l'accesso.

Puoi visualizzare lo spazio di archiviazione utilizzato per un database nel tuo account IONOS o su PHP MyAdmin. Tuttavia, se usi tabelle innodb con PHP MyAdmin, questo emette un valore sbagliato per lo spazio di archivazione. Per questo motivo, ti consigliamo di verificare lo spazio di archiviazione utilizzato sul tuo database MySQL nel tuo account IONOS.

Per visualizzare lo spazio di archiviazione nel tuo account IONOS, accedi alla pagina dei contratti di Hosting sul tuo account IONOS. Se possiedi più di un contratto di Hosting, seleziona quello dove si trova il database MySQL desiderato. Clicca su Modifica nel riquadro Database e successivamente clicca sul nome del database desiderato. Sulla pagina che si apre, puoi visualizzare tutte le informazioni relative al database, tra cui anche lo spazio di archiviazione (sulla riga Memoria).

Nota bene:
  • Non è possibile aumentare le dimensioni massime del database di 1 GB.
  • Se hai già superato le dimensioni massime del database e l'accesso è stato bloccato, è possibile liberare lo spazio di archiviazione solo tramite l'Assistenza Clienti IONOS. Fanno eccezione solo le tabelle innodb alle quali può essere applicato un comando Alter Table.

Liberare lo spazio di archiviazione

Per ottimizzare un database MySQL direttamente sul tuo account IONOS, procedi come segue:

  • Accedi alla pagina Hosting sul tuo account IONOS e, se possiedi più di un contratto, seleziona quello desiderato.
    Accedi alla pagina Hosting
  • Nel riquadro Database, clicca su Modifica. Si apre la pagina con la panoramica di tutti i database MySQL che hai creato.
  • Sulla riga del database desiderato, clicca sul link Apri nella colonna PHPMYADMIN.
    Il programma di amministrazione phpMyAdmin si apre in una nuova finestra.
  • Sulla nuova pagina, clicca nel menu a sinistra sul nome del database. Nei dettagli puoi visualizzare tutte le tabelle del database.
  • Clicca su SQL dalla barra di menu in alto.
  • Inserisci il seguente comando nella finestra SQL: SELECT concat('optimize table `', table_schema, '`.`', TABLE_NAME, '`;')
    FROM information_schema.tables
    WHERE table_schema = database()
      AND data_free / (data_length + index_length + data_free) > 0.6
    ORDER BY data_free DESC;
    Vengono generati comandi SQL che permettono di liberare la memoria. Esegui i comandi Optimize nella finestra SQL. Nell'esempio seguente, dbname rappresenta il nome della tua banca dati. +-------------------------------------------------------------------+
    | concat('optimize table `', table_schema, '`.`', table_name, '`;') |
    +-------------------------------------------------------------------+
    | optimize table `dbname`.`attemptoptions`;                         |
    | optimize table `dbname`.`attemptsimple_login_log`;                |
    | optimize table `dbname`.`attemptposts`;                           |
    | optimize table `dbname`.`attemptpostmeta`;                        |
    +-------------------------------------------------------------------+
    4 rows in set (0.01 sec)
    Nota bene: questa ottimizzazione può essere eseguita solo se il database non è già stato bloccato.
  • Opzionale: per le tabelle innodb che superano già lo spazio di memoria massimo consentito, puoi eseguire in alternativa il seguente comando SQL:
    SELECT concat("ALTER TABLE `", table_schema, "`.`", TABLE_NAME, "` ENGINE=InnoDB;")
    FROM information_schema.tables
    WHERE table_schema = database()
      AND ENGINE = 'InnoDB'
      AND data_free / (data_length + index_length + data_free) > 0.6
    ORDER BY data_free DESC;
    Vengono generati comandi SQL che permettono di liberare la memoria. Esegui i comandi Alter nella finestra SQL. Nell'esempio seguente, dbname rappresenta il nome della tua banca dati. +------------------------------------------------------------------------------+
    | concat('ALTER TABLE `', table_schema, '`.`', table_name, '` ENGINE INNODB;') |
    +------------------------------------------------------------------------------+
    | ALTER TABLE `dbname`.`attemptoptions` ENGINE INNODB;                         |
    | ALTER TABLE `dbname`.`attemptsimple_login_log` ENGINE INNODB;                |
    | ALTER TABLE `dbname`.`attemptposts` ENGINE INNODB;                           |
    | ALTER TABLE `dbname`.`attemptpostmeta` ENGINE INNODB;                        |
    +------------------------------------------------------------------------------+
    4 rows in set (0.60 sec)
Nota bene:

Lo spazio di archiviazione liberato non è immediatamente disponibile nel database MySQL. Di solito, è possibile utilizzare nuovamente il database il giorno successivo.

Eseguire l'ottimizzazione automaticamente

Puoi eseguire l'ottimizzazione del tuo database MySQL in maniera automatica e ad intervalli regolari di tempo con un cronjob. Per ulteriori informazioni sui cronjob, consulta il nostro Centro Assistenza.