[Db] Cachare una query
Domenico L.
domenico.lorusso a pleiade.it
Gio 29 Mar 2007 09:09:03 CEST
Davide Michel 'ZioBudda' Morelli ha scritto:
> Ciao all. Per una applicazione che sto realizzando devo estrarre dei
> dati da un db MYSQL. Questi dati sono per la maggiorparte delle volte,
> sempre gli stessi, cosi' mi sono domandato se non mi convenisse fare
> la cache di queste "estrazioni" (o estrapolazioni se non mi ricordo
> male). Ma la domanda è : come farlo per bene ? Vi dico che come
> linguaggio di programmazione uso PHP5.2 e come DBMS uso MYSQL 5.x. E
> anche vero che MYSQL > 4 ha un suo gestore interno di cache, ma io
> vorrei creare un qualche cosa che stia al di sopra di questo sistema.
> Sempre che sia consigliabile.
Uhm... un dbms dovrebbe cachare gli sql per non ricalcolare i piani di
esecuzione (che dovrebbero essere la cosa più pesante). Ammesso che
Mysql abbia una gestione di cache effettiva (ma le materialized
view/snapshot allora a cosa dovrebbero servire) il tuo collo di
bottiglia è sempre la rete.
Detto questo ha senso fare un caching.
Puoi fare in modo che se passi ad una tua funzione uno statement sql la
funzione gli calcola l'md5 (o altra hash function), in un file di
paramentri metti le hash delle query, il tempo di retention e il nome
del file in cui memorizzi i dati.
A questo punto se la tua funzione trova i l'hash nel file dei parametri
recupera i dati da disco altrimenti effettua la query.
Solo che a questo punto ti serve anche un iterator, quindi mi sa che
dovresti farti una classe (forse su pear c'è qualcosa..)
Ciao
> PS: nelle store procedure di MYSQL è possibile pasasre un parametro e
> farlo eseguire come se fosse una query ? Tipo: call miaStore("select *
> from pippo");
non lo so, sorry.... cmq molto dipende se esistono i tipi tabella e
recordset credo..
--
Domenico L. icq: 645 44 861
per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]
Maggiori informazioni sulla lista
Db