Firebird Performance Newsletter: Numero 1
Abbiamo deciso di lanciare una newsletter più o meno regolare sulle “performance di Firebird”, dedicata a test di performance, suggerimenti, trucchi, miglioramenti della configurazione, ecc.
Nel primo numero, abbiamo quanto segue:
- Confronto tra le performance di scrittura di Firebird 4 vs Firebird 3,
- Scelta della migliore istanza AWS EC2 per la massima performance di scrittura di Firebird,
- Risultati recenti dal test INSERT/UPDATE/DELETE
Firebird 4 vs Firebird 3: Buone Notizie, Tutti!
Dal 2019, quando abbiamo pubblicato la prima raccolta di risultati del semplice test INSERT/UPDATE/DELETE, molte persone ci hanno inviato risultati dai loro server Firebird, e li abbiamo aggiunti al foglio di calcolo e al grafico appropriato.
Il test è uno strumento semplice ma potente per misurare e confrontare le performance di diverse configurazioni hardware+Firebird, per consentire di confermare o smentire rapidamente un problema hardware o di configurazione.
Recentemente abbiamo utilizzato questo test per confrontare le performance INSERT/UPDATE/DELETE di Firebird 4.0 (versione 4.0.0.2394, alcune build dalla release) e 3.0 (versione 3.0.8.33426, snapshot, pre-release della prossima 3.0.8, stabile come release minore, secondo gli auto-test di Firebird).
L’ambiente di test era Intel i3-10100F 3.60GHz con SSD Samsung SSD 870QVO e RAM drive (qSoft), con varie dimensioni di RAM (16,32,64) e Page Buffers.
Di seguito il grafico, e qui c’è il foglio di calcolo XLS con i risultati.

Come puoi vedere, nelle stesse condizioni e con la stessa configurazione, Firebird 4 è circa il 10% più veloce di 3.0.8 nelle operazioni di scrittura. Questa è sicuramente una buona notizia e un altro segno che è il momento di dare un’occhiata più da vicino alla prossima release e iniziare i preparativi per la migrazione.
Naturalmente, l’approccio migliore sarà eseguire lo stesso test sul proprio server e vedere il miglioramento effettivo di persona.
Vedi come fare »
Scelta della migliore istanza AWS EC2 per la massima performance di scrittura di Firebird
Sempre più aziende pensano di “passare al cloud”, e Amazon Web Service Elastic Cloud è una delle “destinazioni cloud” preferite.
Tuttavia, AWS offre molti tipi diversi di istanze, come scegliere la migliore? Ovviamente, facendo i test!
Abbiamo eseguito i semplici test INSERT/UPDATE/DELETE per 20 tipi di istanze e abbiamo trovato diverse opzioni davvero buone per Firebird.
Si prega di notare - tutti i prezzi nei calcoli e nei grafici sottostanti sono per la regione di Francoforte di AWS EC2, sono presi così come sono da aws.amazon.com, senza sconti, possono essere soggetti a tasse aggiuntive e possono cambiare nel tempo - quindi non considerare i prezzi sottostanti come definitivi o come una guida esatta all’acquisto.
Ecco il grafico complessivo e il foglio di calcolo XLS con i risultati:

Per semplicità, abbiamo creato la colonna Operations, che essenzialmente è la somma di Insert+Update+Delete, e l’abbiamo usata come metrica unificata delle performance di scrittura:

Come puoi vedere, i seguenti 3 tipi di istanze sono leader nelle performance (dal punto di vista delle operazioni di scrittura di Firebird):
| Istanza | Costo orario per Linux | Operazioni/al secondo |
|---|
| z1d.xlarge | USD$0.45 | 45834 | | m5dn.2xlarge | USD$0.648 | 45198 | | m5d.2xlarge | USD$0.544 | 44150 |
È interessante notare che i leader non sono i tipi di istanze più costosi! Naturalmente, dobbiamo tenere presente che il test è single-threaded (e non beneficia del numero di core) e non richiede una grande quantità di RAM (perché il database è solo di 3.6Gb), ma per le applicazioni che richiedono di elaborare rapidamente picchi di operazioni di scrittura, queste istanze sembrano davvero ottimali.
Nonostante questi tipi di istanze non siano i più costosi (tra quelli testati), sono comunque abbastanza costosi da far riflettere due volte sul budget, e poiché uno dei vantaggi pubblicizzati del cloud è la flessibilità, ha senso iniziare con tipi di istanze VM più economici, che potrebbero essere abbastanza buoni per servire il nostro database Firebird, giusto?
Per scoprire i tipi di istanze ottimali in termini di rapporto costo/performance, abbiamo creato un’altra colonna nel nostro foglio di calcolo: “Operations per 1 USD”.
Significa esattamente quello che dice - quante operazioni di scrittura puoi acquistare per 1 USD.
La formula è la seguente
Operations_Per_Second * 3600 secondi all’ora / Prezzo all’ora

Come puoi vedere, da questo punto di vista, i leader sono diversi:
| Istanza | Prezzo orario Linux | Operations per 1 USD | Operations al secondo |
|---|---|---|---|
| c5d.xlarge | USD$0,222 | 579062087 | 35709 |
| c5ad.xlarge | USD$0,2 | 565024995 | 31390 |
| m5dn.xlarge | USD$0,324 | 446037216 | 40143 |
Molto interessante è il #3, m5dn.xlarge con performance di picco ~40K/al secondo - è abbastanza vicino al leader delle performance z1d.xlarge con 45834 operazioni/secondo, ma significativamente più economico.
In generale, la nostra esperienza con AWS EC2 mostra che è un ambiente stabile e maturo, con molte buone funzionalità di sicurezza/backup/alta disponibilità/ecc., ma, come qualsiasi piattaforma complessa, richiede esperienza (o competenze esterne) per fare la scelta giusta e non pagare bollette eccessive per applicazioni con carico non fantastico.
Risultati recenti dal test INSERT/UPDATE/DELETE
Quindi, come puoi vedere, il semplice test può essere utile non solo come confronto tra hardware e Firebird, ma può anche farti risparmiare un paio di dollari.
Abbiamo pubblicato un grafico con i risultati raccolti di recente e un foglio di calcolo XLS con cui giocare, così puoi verificarlo tu stesso qui.
Di seguito 3 conclusioni ovvie:
- I drive NVME sono davvero fantastici, quindi se hai bisogno di un potente server Firebird, acquista NVME per i database.
- L’alta frequenza della CPU è molto importante per le alte performance dei database Firebird. Spesso i fornitori ti spingono ad acquistare processori multi-core con frequenza più bassa (<3Ghz), ma questa potrebbe non essere l’opzione migliore per Firebird, e meno core con frequenza più alta possono dare un risultato migliore.
- Se il profilo di carico del tuo database è fortemente orientato alla scrittura, prova a ridurre i Page Buffers: fai esperimenti con DefaultDbCachePages come 50K, 100K, 250K, ecc. Sarebbe fantastico se condividessi i risultati con noi!
Sentiti libero di esaminare i risultati dei test e di fare domande o inviare suggerimenti.
Nei prossimi numeri della “Firebird Performance Newsletter”
Nel 2° numero, mostreremo come configurare diverse istanze SuperClassic per servire un database (tra le altre cose, può essere utile per dividere il carico tra più porte di rete). I piani per i prossimi numeri sono grandi: errori di configurazione, test di database crittografati, confronto avanzato delle performance di Firebird 4 con Firebird 3, ottimizzazione degli indici, ecc.
Se sei interessato e desideri ricevere notifiche sui nuovi numeri, unisciti a noi sul Canale Telegram FirebirdSQL.
Contattaci
Contattaci per qualsiasi domanda e suggerimento: Alexey Kovyazin: [email protected].