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
: Transazionale significa crash-safe in Aria|
1PAGE_CHECKSUM= 0
: Se gli indici e i dati devono usare i checksum delle pagine per ulteriore sicurezza|
1TABLE_CHECKSUM= 0
: Sinonimo di|
1CHECKSUM
in MySQL 5.1ROW_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 conTRANSACTIONAL=1
. Per emulare MyISAM, si può usareROW_FORMAT=FIXED
oROW_FORMAT=DYNAMIC
.CHECKSUM TABLE
ora ignora i valori nei campi NULL. Questa modifica rendeCHECKSUM 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 unALTER 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
' a1
quando si esegueCHECKSUM 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
Opzione | Spiegazione | Valore 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 Aria | 8192 |
--aria-checkpoint-interval=# | Intervallo tra i checkpoint automatici, in secondi; 0 significa 'nessun checkpoint automatico' e serve solo per i test | 30 |
| 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_commit | 0 |
--aria-log-dir-path=nome | Percorso della directory dove si trovano i log delle transazioni | Come 'datadir ' |
--aria-log-file-size=# | Limite delle dimensioni dei log delle transazioni | 1073741824 |
--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 specificato | 9223372036853727232 |
--aria-page-checksum | Mantiene 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 pagine | 300 |
--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 multiple | 134217720 (= 128M) |
| La percentuale minima di blocchi warm nella cache degli indici | 100 |
--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 TABLE | 134217728 |
--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
e8192
- 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 esegueFLUSH LOGS
;
- Si imposti questa variabile a "
Si veda anche: FAQ di Aria