Query Caching

Caching Query posti i risultati di una query di database in memoria ColdFusion Server in cui può essere immediatamente recuperato senza interrogare il database. Caching Query è uno degli strumenti più utili per migliorare le prestazioni nelle applicazioni ColdFusion, purtroppo, è anche uno dei meno utilizzati. Alcune avvertenze sono coinvolti in caching delle query, ma tutto sommato, si tratta di una tecnica molto semplice da utilizzare. Si dovrebbe prendere in considerazione solo le query caching che si adattano ai seguenti criteri:

  

La query ha una latenza significativa ammissibile. In altre parole, i dati contenuti nel set di risultati non cambiano spesso, ed è, pertanto, stabile per un periodo di tempo significativo.

La query è di portata universale, in modo tale che tutti gli utenti della vostra applicazione può utilizzare esattamente lo stesso risultato della query.

La query richiede risorse significative per l'elaborazione. Un altro modo di vedere le cose è il seguente:

La latenza ti dà il permesso di utilizzare la cache.

L'universalità del campo di applicazione rende possibile la memorizzazione nella cache.

I requisiti di lavorazione rendono necessaria la cache. Ogni volta che si cache una query, si inserisce una copia in memoria e istruire ColdFusion MX per recuperare la memoria versione base di tale query per un periodo di tempo specificato. Ad esempio, il codice hows uno CFQUERY che memorizza i suoi set di risultati per 12 ore, dopo di che un'altra chiamata a CFQUERY recupera i dati direttamente dal database e le cache che i nuovi risultati fissati nella memoria.

 SELECT LastName + ',' + FirstName AS nome utente dal AppUser ORDER BY UserName ASC  # # UserName 

Il codice si presenta con un CFQUERY che memorizza il suo set di risultati dopo il 1 il 4 luglio 2002, prima di questo periodo, una chiamata a CFQUERY recupera i dati direttamente dal database.

 SELECT LastName + ',' + FirstName AS nome utente dal AppUser ORDER BY UserName ASC  # # UserName 

CachedWithin è il più comunemente usato per le due disponibili, attributi caching. CachedAfter ha pochi usi pratici, è principalmente usato per attendere un tempo specificato quando nuovi dati si rendono disponibili per il database da un processo esterno e quindi mettere in cache i nuovi dati. Candidati buoni per la cache di query sono i seguenti:

La pagine del catalogo on-line store che visualizzare le miniature e le descrizioni delle categorie di articoli venduti.

L'online-store pagine del catalogo che la visualizzazione degli elementi specifici di ciascuna categoria.

L'elenco degli articoli in vendita in un negozio online.

Selezionare i menu che sono popolati dinamicamente con i dati di rado cambiati, come i nomi dei responsabili di reparto.

 (CALL sp_GetCompanies ( 'GA'))  # # CompanyName, ZipCode # # 

 INSERT INTO OrderItem (SalesOrderID, ItemNumber, Descrizione, UnitPrice, Quantity) VALUES (1, 'CAS30-BLK', '30-Minute Casette, Black Case ', 1,05, 10)  UPDATE InventoryItem SET AvailableToSell = AvailableToSell - 10 WHERE ItemNumber = 'CAS30-BLK' 

Tutto tra il tag di apertura e di chiusura CFTRANSACTION è considerata una singola transazione. Per questa operazione abbia successo, sia l'inserimento nella tabella OrderItem e l'aggiornamento della tabella InventoryItem deve riuscire. Questo è l'idea di una transazione: o tutto o niente. Se entrambe le query sono riuscito, il commit della transazione, e gli effetti di entrambe le query sono scritte nel database. Se una delle query ha esito negativo, l'intera transazione viene eseguito il rollback, come se nulla fosse successo. In questo esempio, nella parte precedente, ColdFusion fornisce i comandi per controllare l'inizio e la fine della transazione, ma in molti casi, tale controllo viene gestita tramite il server di database stesso utilizzando i comandi di database nativo. Allora, dove si dovrebbe controllare una transazione? La risposta semplice a questa domanda è sempre "al server di database, se possibile." La ragione di questa risposta è la capacità del database di controllare le proprie operazioni utilizzando i comandi nativi e le capacità, invece di affidarsi sulla capacità del driver di database di comunicare il controllo delle transazioni al database. alcuni driver di database non hanno la capacità di trasmettere i comandi di controllo delle transazioni per il database, quindi in questi casi, è necessario incapsulare tutti i controlli di natura commerciale all'interno di una stored procedure sul database e semplicemente chiamare da ColdFusion. Alcuni altri piloti in grado di comunicare solo un sottoinsieme di disposizione del database comandi di controllo di natura commerciale e sono, pertanto, non come una soluzione in grado. Look ora in una transazione che è controllata entro la stored procedure stessa. Questo codice è l'equivalente degli altri, salvo che l'operazione è controllata all'interno della stored procedure, piuttosto che in ColdFusion.

BEGIN TRANSACTION INSERT INTO OrderItem (SalesOrderID, ItemNumber, Descrizione, UnitPrice, Quantity) VALUES (1, 'CAS30-BLK', '30-Minute Casette, Black Case ', 1,05, 10) IF @ @ ERROR! = 0 BEGIN
RAISERROR 50.001 'Il OrderItem non poteva essere inserito.' ROLLBACK TRANSACTION END RETURN UPDATE InventoryItem SET AvailableToSell = AvailableToSell - 10 WHERE ItemNumber = 'CAS30-BLK' IF @ @ ERROR! = 0 BEGIN RAISERROR 50.002 'Il InventoryItem non potrebbe essere aggiornato.' ROLLBACK TRANSACTION RETURN END COMMIT TRANSACTION

La sintassi è un po 'diversa, ma i principi sono molto simili, non è vero? E 'davvero solo una questione di apprendimento, sia i metodi di attuazione e quindi le operazioni di controllo il più vicino al server di database come la vostra applicazione vi permette di farlo.

un articolo presentato da Richard Brighton


Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni.
Importante: Questo articolo è "Query Caching" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.


Online: 439 users browsing the articles directory