Home
  • Recipes
  • Ottimizzare la creazione e la modifica di tabelle in MySQL
Sante Caserio
pubblicato più di 2 anni fa

Ottimizzare la creazione e la modifica di tabelle in MySQL

Un attento utilizzo dei comandi di base MySQL e degli Storage Engine consente di migliorare le perfomance già nella creazione del database, scopriamo come farlo in questa ricetta

Le istruzioni CREATE TABLE e ALTER TABLE, in MySQL, permettono di impostare una serie di opzioni relative alla tabelle che si sta creando o modificando. Alcune di queste opzioni possono essere molto utili per migliorare le performance di tabelle di grandi dimensioni. Non tutti gli storage engine tengono conto delle stesse opzioni, tuttavia quelle che verranno spiegate qui di seguito sono utilizzate da tutti i principali engine (MyISAM, InnoDB, MEMORY, Merge, Maria) salvo ove diversamente indicato.

MAX_ROWS, MIN_ROWS
Se si prevede che il numero delle righe contenute nella tabella varierà nel tempo a causa di istruzioni INSERT e DELETE, ma si è in grado di stabilire approssimativamente un massimo e un minimo sempre valido, conviene impostare queste opzioni. Esse non costituiscono un limite reale, quindi ad esempio la tabella potrà contenere 1000 record anche se MIN_ROWS è 2000 o MAX_ROWS è 500; tuttavia, lo storage engine ne terrà conto per una serie di ottimizzazioni.

AVG_ROW_LENGTH
Questa opzione è utile solo nel caso in cui la tabella contenga dati di dimensioni variabili (BLOB, VARCHAR, etc). Se si è in grado di indicare le dimensioni medie di un record, queste verranno usate dallo storage engine in congiunzione con MAX_ROWS e MIN_ROWS.

ROW_FORMAT
Questa opzione è utilizzata solo da tabelle di tipo InnoDB, MyISAM e Maria. Per MyISAM e Maria, i suoi valori possibili sono:

  • FIXED: I record hanno dimensioni fisse; occupano più spazio, ma le performance migliorano.
  • DYNAMIC: I record hanno dimensioni variabili; occupano meno spazio, ma le performance diminuiscono.
  • COMPRESSED: Le tabelle sono compresse e di sola lettura (formato ottenibile solo con i programmi myisam_pack e maria_pack). Per le tabelle InnoDB invece i valori sono:
  • COMPACT: Il formato predefinito nelle versioni recenti di MySQL. E’ più performante e richiede meno spazio su disco.
  • REDUNDANT: Il vecchio formato di InnoDB. Può ancora essere usato per ragioni di compatibilità.

DATA DIRECTORY, INDEX DIRECTORY
Queste opzioni indicano rispettivamente in quale percorso devono trovarsi il file dei dati e il file degli indici. Cercando di distribuire le tabelle più utilizzate su dischi diversi si possono migliorare le performance.

PACK_KEYS
Se questa opzione è impostata a 1 tutti gli indici verranno compressi, se è impostata a 0 nessun indice verrà compresso, se è impostata a DEFAULT verranno compressi solo gli indici testuali. La compressione aumenta la velocità di lettura, ma diminuisce la velocità di scrittura – è quindi da usare per tabelle lette spesso e scritte raramente o per tabelle che vengono aggiornate solo in particolari momenti della giornata (ad esempio la notte).

DELAY_KEY_WRITE
Se impostata a 1, gli indici della tabella verranno aggiornati solo dopo la sua chiusura. Questo velocizza le operazioni INSERT, UPDATE e DELETE, quindi è utile per tabelle che vengono modificate frequentemente.

CHECKSUM
Questa opzione serve per mantenere un checksum (valore usato per il controllo dell’integrità) del file dei dati. Se si necessita di mantenere i dati integri (ad esempio per tabelle sommario utilizzate solo temporaneamente), si può impostare questo valore a 0, migliorando leggermente le performance.

Condividi su:

Esprimi un voto:

  • Current rating: 0.0/5
  • 1
  • 2
  • 3
  • 4
  • 5

Argomenti chiave:

Ultimi commenti Ultimi commenti

Esegui il Login oppure registrati per scrivere un commento.
Cerca nel sito...
Ultime recipes

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL MySQL Report un tool di shell per tenere tutto sotto controllo

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL


Vai alla recipe

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL MySQLSniffer sniffare il traffico TCP di MySQL

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL


Vai alla recipe

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso myisamchk riparare file MyISAM

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso il file myisamchk


Vai alla recipe

Un tool per comprimere le tabelle MyISAM fino a oltre il 50% myisampack comprimere file MyISAM

Un tool per comprimere le tabelle MyISAM fino a oltre il 50%


Vai alla recipe

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun mysqlshow visualizzare le informazioni sul database MySQL

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun client


Vai alla recipe

Utilizzando UNION / UNION ALL su campi int unsigned zerofill,
ho notato che MysqlUNION / UNION ALL su campi int unsigned zerofill. di DebUsr
Vai al tip

Utilizzo di funzioni come alias di campo tramite l'impiego di prepared statementReport con alias di campo dinamici di john_revelator
Vai al tip

Può capitare che sia necessario eseguire un dump di database in formato Comma SeparatedEsecuzione dump in formato CSV (tabelle in engine MyIsam esportate in formato CSV) di ghigomatto
Vai al tip

E' possibile eseguire le query SQL contenute in un file di testo. Questo è utileEseguire le query da un file di testo di Sante Caserio
Vai al tip

Se vogliamo fare il backup di tutti i database con mysqldump, e ne abbiamo parecchiFare il backup di tutti i database di Sante Caserio
Vai al tip

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve a tutti.

Ho una tabella con lettere accentate.
Le lettere vengono visualizzate ordinamento tabelle di ditch Vai al topic

Salve a tutti.

Ho una tabella con lettere accentate.
Le lettere vengono visualizzate ordinamento tabelle di ditch Vai al topic