Domanda

Ho una tabella innodb con solo due colonne, un varchar (20) e un datetime e circa 4m righe. Questa tabella funge da lista nera per altre tabelle ed è troncata e ricreata da un file CSV di volta in volta. Oltre a ciò non ci sono scritture, viene utilizzata solo per un controllo selezionato se esiste una chiave, che colpisce sempre l'indice per la colonna VARCHAR.

Il problema è che questa tabella deve essere consultata per ogni singola operazione in tutti i miei sistemi, sempre, perché se c'è una corrispondenza, il che è molto raro, l'operazione deve essere abortita immediatamente. Dalla profilazione della mia applicazione spendiamo circa il 10% del tempo di database leggendo da esso.

Sto pensando di usare il motore di memoria per questa tabella. L'idea è quella di creare una tabella di base con il motore CSV che carica solo il file CSV anziché l'operazione di importazione di dati interi e uno script INIT per popolare la tabella di memoria. Suppongo che l'indice hash sulla colonna Varchar sarebbe più veloce per le ricerche semplici, ma non sono sicuro che funzioni bene con il rapporto MISS quasi al 100% che ho.

È una buona idea migliorare la mia velocità di ricerca?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top