Lo Storage Engine Aria

Lo Storage Engine Aria è compilato per default a partire da MariaDB 5.1 ed è necessario che sia attivo all'avvio di mysqld.

Inoltre, le tabelle interne su disco sono nel formato Aria e non nel formato MyISAM. Questo dovrebbe velocizzare alcune query contenenti GROUP BY e DISTINCT, perché Aria ha un meccanismo di cache più avanzato rispetto a MyISAM. L'inclusione di Aria è una delle differenze tra MariaDB 5.1 e MySQL 5.1.

Nota: Lo Storage Engine Aria era precedentemente chiamato Maria (si veda Rename Maria per ulteriori dettagli sul cambio di nome) e nelle versioni precedenti di MariaDB si chiama ancora Maria.

Vi sono alcune nuove opzioni per CREATE TABLE:

  • TRANSACTIONAL= 0 | 1 : Transazionale significa crash-safe in Aria
  • PAGE_CHECKSUM= 0 | 1 : Se gli indici e i dati devono usare i checksum delle pagine per ulteriore sicurezza
  • TABLE_CHECKSUM= 0 | 1 : Sinonimo di CHECKSUM in MySQL 5.1
  • ROW_FORMAT=PAGE : Il nuovo formato per i record per le tabelle Aria, che supporta la cache. E' il formato di default e il solo che si possa usare con TRANSACTIONAL=1. Per emulare MyISAM, si può usare ROW_FORMAT=FIXED o ROW_FORMAT=DYNAMIC.
  • CHECKSUM TABLE ora ignora i valori nei campi NULL. Questa modifica rende CHECKSUM TABLE più rapido e corregge il problema per cui alcune definizioni di tabella possono generare valori checksum differenti a seconda del formato dei record. Lo svantaggio è che il valore generato risulta diverso rispetto a quello che si ottiene con altre installazioni di MySQL. Il nuovo calcolo del checksum è fisso per tutti gli Storage Engine che utilizzano il checksum di default, e per MyISAM che effettua il calcolo internamente. Nota: le vecchie tabelle MyISAM restituiscono lo stesso checksum di prima. Per correggere il problema e fare sì che il calcolo segua le nuove regole, occorre eseguire un ALTER TABLE. E' anche possibile utilizzare il vecchio metodo di calcolo del checksum specificando l'opzione --old di mysqld o impostando la variabile di sistema '@@old' a 1 quando si esegue CHECKSUM TABLE ... EXTENDED;
  • Se mysqld non è stato arrestato correttamente, all'avvio successivo Aria controlla i suoi log e recupera automaticamente le tabelle basandosi sull'ultimo checkpoint.

Opzioni di avvio di mysqld che riguardano Aria

OpzioneSpiegazioneValore predefinito
--aria[=#]Abilita o disabilita il plugin Aria. I valori possibili sono ON, OFF, FORCE (non si avvia se non può caricare il plugin)ON
--aria-block-size=# Dimensioni dei blocchi delle pagine degli indici di Aria8192
--aria-checkpoint-interval=# Intervallo tra i checkpoint automatici, in secondi; 0 significa 'nessun checkpoint automatico' e serve solo per i test30
--aria-force-start-after-recovery-failures=# Numero dei recuperi dei log falliti, prima che i log vengano eliminati automaticamente per risolvere il problema; 0 (predefinito) disabilita questa funzionalità0
--aria-group-commit=# Specifica la modalità dei group commit di Aria. I valori possibili sono "none" (nessun group commit), "hard" (attende il commit effettivo), "soft" (nessuna attesa (PERICOLOSO!!!))none
--aria-group-commit-interval=# Intervallo tra i commit in microsecondi (1/1000000 di secondo). 0 significa che non si attendono gli altri thread: in modalità "hard" viene eseguito il commit senza attendere altri thread, e in modalità "soft" non avviene alcun sync() dei commit. L'opzione ha effetto solo se viene utilizzato aria_group_commit0
--aria-log-dir-path=nomePercorso della directory dove si trovano i log delle transazioniCome 'datadir'
--aria-log-file-size=# Limite delle dimensioni dei log delle transazioni1073741824
--aria-log-purge-type=# Specifica in che modo i log delle transazioni di Aria vengono svuotati. I valori possibili sono "immediate", "external" e "at_flush"immediate
--aria-max-sort-file-size=# Non utilizza il metodo dell'ordinamento veloce per creare gli indici se richiede che il file temporaneo superi il valore specificato9223372036853727232
--aria-page-checksumMantiene i checksum delle pagine (può essere scavalcato, in ogni tabella, dalla clausola PAGE_CHECKSUM di CREATE TABLE)TRUE
--aria-pagecache-age-threshold=# Indica quante volte un blocco considerato hot non deve essere toccato, prima di essere considerato datato e quindi degradato a warm. Rappresenta la percentuale del numero di volte rispetto al numero totale dei blocchi che si trovano nella cache delle pagine300
--aria-pagecache-buffer-size=# Le dimensioni del buffer dei blocchi degli indici delle tabelle Aria. Incrementandolo fino a quando è possibile, si ottiene una migliore gestione degli indici per tutte le letture e le modifiche multiple134217720 (= 128M)
--aria-pagecache-division-limit=# La percentuale minima di blocchi warm nella cache degli indici100
--aria-recover[=#]Specifica in quale modo le tabelle corrotte devono essere riparate automaticamente. I valori possibili sono "NORMAL" (predefinito), "BACKUP", "FORCE", "QUICK" e "OFF", che equivale a non utilizzare questa opzione.NORMAL
--aria-repair-threads=# Il numero di thread da usare per riparare le tabelle Aria. Il valore 1 disabilita la riparazione parallela.1
--aria-sort-buffer-size=# Il buffer che viene utilizzato per riparare gli indici durante l'esecuzione di una REPAIR o quando si creano gli indici con CREATE INDEX o ALTER TABLE134217728
--aria-stats-method=# Specifica in che modo devono essere trattati i NULL nelle statistiche degli indici di Aria. I valori possibili sono "nulls_unequal", "nulls_equal" e "nulls_ignored" (null disuguali, null uguali e null ignorati)nulls_unequal
--aria-sync-log-dir=# Controlla il sync delle directory quando i file di log crescono e la creazione di nuovi file. I valori possibili sono "never", "newfile" e "always" (mai, nuovo file, sempre).NEWFILE

Durante le operazioni normali, le uniche variabili da considerare sono:

  • aria-pagecache-buffer-size
    • La cache di tutti i dati e di tutti gli indici. Più è grande, più Aria risulterà veloce.
  • aria-block-size
    • Il valore predefinito è 8192, dovrebbe andare bene nella maggior parte dei casi. Un valore più alto potrebbe impiegare molto per trovare una chiave compressa nel blocco, perché deve esaminarne approssimativamente 8192/2 per trovare ciascuna chiave. Questo problema verrà corretto in futuro con l'aggiunta di un dizionario alla fine di ogni pagina, per poter effettuare una ricerca binaria all'interno di un blocco prima di iniziare la scansione. Fino a quando questo non sarà stato fatto e la ricerca delle chiavi impiega troppo tempo anche quando non coinvolge il disco, questo valore non dovrebbe essere aumentato.
    • I valori possibili da provare sono 2048, 4096 e 8192
    • Si noti che non è possibile modificare questo valore senza eseguire un dump, eliminare le vecchie tabelle, cancellare tutti i file di log e recuperare le tabelle Aria. (E' l'unica opzione che richiede queste operazioni)
  • aria-log-purge-type
    • Si imposti questa variabile a "at_flush" se si desidera mantenere una copia dei log delle transazioni (utilizzabile come backup aggiuntivo). I log verranno conservati finché non si esegue FLUSH LOGS;

Si veda anche: FAQ di Aria

Commenti

Sto caricando i commenti......