Che cosè la cache SQL?


Migliore risposta

Come Scott McNulty ha risposto in precedenza a questa domanda, la cache SQL è la memorizzazione dei set di risultati generati come risultato di una query su un database e utilizzando la copia del risultato per i risultati successivi. Detto questo, cè molto di più in questo problema oltre al semplice “caching”. Il vero problema non è la memorizzazione nella cache, è linvalidamento che è la parte difficile. Memorizzare le informazioni non è difficile, sapere quando non sono valide lo è.

Cè anche un secondo problema più sottile coinvolto nella memorizzazione nella cache, ovvero limpatto della latenza di rete della memorizzazione nella cache. La maggior parte delle soluzioni cache funziona come un server indipendente, proprio come fa un database. Per interrogare la cache, è necessario eseguire di nuovo un round trip attraverso la rete, come in un database. Se la cache non ha la risposta in modo affidabile E risponde più velocemente del database, allora è molto difficile migliorare effettivamente le prestazioni con la cache.

Per memorizzare nella cache SQL in modo ottimale, è necessaria una soluzione che possa risolvere diversi problemi:

  1. Quale contenuto deve essere memorizzato nella cache?
  2. Se è presente un risultato memorizzato nella cache, dovrebbe essere considerato non valido?
  3. Se la cache ha colpito è troppo bassa, la logica della cache si adatterà automaticamente per interrompere la memorizzazione nella cache e smettere di fare ricerche per evitare la penalità?

La realtà è che per tenere conto della maggior parte dei casi dangolo, ci vuole un metodo molto complesso set di logica per assicurare uno scenario di prestazioni ottimali per la memorizzazione nella cache. Non è semplice come implementare un motore di cache come Redis o Hazelcast nella tua applicazione . Invece, è necessario un motore di cache intelligente che possa ispezionare i dati che vengono modificati, invalidare automaticamente i dati e ottimizzare in altro modo le richieste che possono essere fatte a un motore di cache esterno rispetto a ciò che viene effettuato sul database.

Uno di questi motori è di Heimdall Data (esclusione di responsabilità, sono il CTO di Heimdall Data). Il motore Heimdall memorizza automaticamente nella cache il contenuto diretto dallapplicazione al database come driver JDBC o come proxy a livello di protocollo, invalida automaticamente il contenuto e ottimizza anche il contenuto memorizzato nella cache. Ciò consente agli sviluppatori di concentrarsi sulle funzionalità, non sulla cache, che in alcuni casi può far risparmiare il 20-40\% del tempo di sviluppo e debug di unapplicazione.

Risposta

La memorizzazione nella cache in generale è larchiviazione i risultati di un processo che richiede molte risorse in modo che le risorse non debbano essere spese di nuovo.

In SQL; è sempre specifico per la tecnologia del fornitore. MS-SQL, Oracle, MySQL e PostGres hanno tutti scelte diverse per ciò che memorizzano nella cache. I risultati, la query, persino il piano di esecuzione della query possono essere tutti memorizzati per essere utilizzati da tentativi successivi di elaborare le stesse informazioni.

Nel caso in cui i dati sottostanti vengano modificati il ​​sistema di solito ha un meccanismo per indicare che le informazioni memorizzate nella cache sono “sporche” e non più completamente utilizzabili; in modo che la query possa essere eseguita di nuovo dal sistema.

Lo vedi sempre. Quanto tempo richiede la mia query? Perché è sempre più veloce se lo eseguo una seconda volta? Ebbene questo è il motivo. Il sistema ricorda efficacemente ciò che gli hai chiesto prima e ti dà la risposta che ricorda da quel momento.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *