Vantaggi di Barracuda e compressione


12

Ho letto sui formati di file di MySQL Antelope e Barracuda qualche tempo fa e mi chiedo se potrei trarre vantaggio dall'avere Barracuda e Compression.

Il mio server sta attualmente utilizzando Antelope, in quanto è l'impostazione predefinita di MySQL.
Ho avuto molte volte problemi con la memoria a causa del grande database che ho. Il mio database aumenta ogni giorno.

Sembra che la compressione stia dando benefici ad alcune persone, come:
http://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/

Capisco che la memoria e lo spazio su disco possono essere inferiori, ma non sono sicuro di averlo compreso (citato dall'articolo):
"~ 5% carico della CPU in base alla parte superiore (dall'80-100% principalmente in attesa di I / O)
0,01 sec tempo medio di ricerca per chiave primaria (da 1-20 sec prima della conversione) "

Ho pensato che queste due cose NON sarebbero migliorate, perché se i dati sono compressi, il server deve decomprimere per ottenere nuovamente i dati originali, quindi non ha senso aumentare l'utilizzo della CPU?

Questo ti avvantaggia nelle applicazioni ad alta intensità di lettura / scrittura? Mi consiglieresti di passare a Barracuda e Compression?

Sei a conoscenza di problemi di Barracuda?
Sembra che la risposta alla seguente domanda punti alcuni problemi, ma dal 2011 direi che sono stati corretti ormai: /server/258022/mysql-innodb-how-to-switch -to-barracuda-format

Risposte:


14

Per quanto riguarda "Dynamic" , il formato non compresso di Barracuda, molto poco è cambiato da compatto, principalmente su come vengono memorizzati i BLOB (e tutti i campi molto dinamici) . Non ho mai avuto problemi con compact vs dynamic, quindi posso tranquillamente raccomandare la dinamica di Barracuda. Ricorda che Barracuda supporta anche i vecchi formati di riga ridondanti e compatti .

L'articolo che stai citando è probabilmente troppo vecchio (5.1) e, come Peter Z., CEO di Percona, menziona i commenti, potrebbe essere un po 'fuorviante. Ciò non significa che la compressione non possa essere un guadagno enorme a seconda dei carichi di lavoro. Tuttavia, ti consiglio di provarlo su versioni> = 5.6, poiché sia ​​Facebook che Oracle hanno apportato molti miglioramenti al riguardo.

Come materiale di riferimento più recente, ti consiglierei:

In particolare, mi piacciono i materiali di Facebook in quanto sono di terze parti (non è necessario un programma) e hanno una delle più grandi distribuzioni MySQL al mondo. Come puoi vedere, hanno avuto configurazioni di grande successo combinando la tecnologia SSD con la compressione.

Ti gioverà? Ciò dipenderà dal carico di lavoro, dal set di lavoro e dall'impostazione (IOPS, memoria) . A seconda se si è associati a IO, CPU o memoria, la compressione può influire negativamente in alcuni casi, aggiungendo CPU aggiuntiva, requisiti di memoria (le pagine compresse e non compresse vengono archiviate nel pool buffer InnoDB) o generando troppi errori di compressione, aumentando la latenza. Dipende anche dal tipo di dati: la compressione può aiutare molto con grandi BLOB di testo, ma può essere inutile con dati già compressi.

Nella mia esperienza, in pratica, ci sono persone per le quali la compressione era il santo graal delle prestazioni e ne sono molto contenta, ma in altri casi abbiamo dovuto ripristinare i dati non compressi poiché non è stato ottenuto alcun guadagno. Mentre un carico di lavoro di scrittura molto pesante può sembrare un brutto ambiente per la compressione, se nel tuo caso particolare non sei vincolato alla CPU e alla memoria, ma associato a iops, potrebbe non essere utile.

In generale, è molto difficile prevedere i risultati, di solito è necessario impostare un ambiente di test per il benchmarking e quindi scoprire perché si ottengono risultati migliori o peggiori (e in questo modo è possibile giocare con blocchi di dimensioni diverse, ecc.). Barracuda è completamente sicuro. La compressione può o no essere per te. E puoi sempre sperimentare altri metodi di compressione come la compressione dei BLOB sul lato client (ad esempio, se finisci con il collegamento con la CPU) o altri motori di terze parti come RocksDB e TokuDB , in cui la compressione è una grande priorità, poiché è focalizzata in termini di prestazioni per set di dati più grandi di quelli che InnoDB è in grado di gestire.

In breve: i motivi principali per utilizzare Barracuda sono la gestione BLOB, la innodb_large_prefixcompatibilità (indici di grandi dimensioni) e la compressione. Dinamico, su MySQL 8.0 è ora il formato file predefinito.


1
Questa è una risposta davvero FANTASTICA e chiara! Ha tutto il senso ed è esattamente il tipo di risposta che desideravo. Stai citando MySQL 5.6 (che è quello che ho aggiornato di recente) e facendo riferimento a Facebook come esempio, come mi piace, dal momento che di solito devono superare le sfide prima di tutti gli altri. Sfortunatamente non sarà facile testarlo prima, poiché un ambiente di test non avrà lo stesso carico CPU / IO / RAM della produzione, ma in effetti dovrò provarlo! La ringrazio molto per il vostro tempo.
Nuno,

Poiché il formato di riga può essere scelto a livello di tabella, ciò può darti una certa flessibilità per i test sulla produzione (dopo un corretto test su una macchina separata). Questo approccio, tuttavia, renderà potenzialmente più difficile il debug e il benchmarking.
jynus,

Sì, probabilmente potrei provare a convertire prima alcune tabelle (forse quelle che non sono così grandi / usate). Tuttavia, per i grandi, ciò richiederebbe alcuni tempi di inattività, piuttosto che solo 1 tempo di inattività in cui li convertirei tutti in una volta. Dovrò vedere qual è l'approccio migliore. Non capisco, tuttavia, perché renderebbe più difficile il debug. Cosa intendi esattamente qui? Grazie mille.
Nuno,

1
Hai strumenti come pt-online-schema-change percona.com/doc/percona-toolkit/2.2/… per ricreare le tabelle in modo online. Ho appena detto che mescolare solo alcune tabelle può rendere più difficile misurare i cambiamenti della cpu / memoria / iops a causa del cambio del motore e differenziarli dai normali cambi di carico o a causa di cambiamenti nella cache durante la ricreazione. È anche difficile vedere su una macchina diversa con hardware diverso, quindi buona fortuna!
jynus,

Su ZFS, non è assolutamente positivo quando si utilizza LZ4 sul file system.
Denis Denisov,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.