|
|
|
|
| |
|
fabpicca |
[database] VIEW in PostgreSQL |
23-11-2005 08:53 |
|
|
fabpicca |
jesus robot d'acciaio
Registered: May 2002
Posts: 2166 (0.26 al dì)
Location: Pieve Emanuele
Corso: Ticom
Anno: 1°
Time Online: 12 Days, 23:12:28 [...]
Status: Offline
Edit | Report | IP: Logged |
[database] VIEW in PostgreSQL
Ieri sera a me e a Torak ci è sovvenuto un dubbio. Ma le VIEW di PostgreSQL sono dinamiche o cosa?
Nel senso, una volta creata la VIEW e memorizzata nel DB, se la tabella cui essa attinge viene modificata , la VIEW si modifica di conseguenza o bisogna creare un trigger per ricreare la VIEW ad ogni modifica?
aggiungo: la documentazione di Postgres dice (http://www.postgresql.org/docs/8.1/...createview.html)
[...]CREATE VIEW defines a view of a query. The view is not physically materialized. Instead, the query is run every time the view is referenced in a query.[...]
parrebbe quindi che la query alla base della view venga rieseguita ogniqualvolta si referenzia la query...uhm...
__________________
my website?|ubuntu linux|get Firefox|grazie Polonia |bagdad sour
"Come va che non ha le corna e le zampe di Caprone?" gli opposi. "Oh, Giuvà", mi disse il prete "adesso non si usa più.Satana è furbo". (I.Silone, Fontamara)
"Al giorno d'oggi non bisogna essere intelligenti, perchè la gente si offende" (un ubriacone)
"close your eyes / pay the price / for your paradise" (DM) "whatever you want to change/you'd better start changing it in your mind" (Transatlantic)
Last edited by fabpicca on 23-11-2005 at 09:09
|
23-11-2005 08:53 |
|
|
| |
|
torak |
Una vista in questo modo quindi serve quindi per f ... |
23-11-2005 16:23 |
|
|
torak |
Renaulto muori
Registered: Dec 2002
Posts: 440 (0.05 al dì)
Location: Bollate
Corso: Informatica laurea triennale
Anno: 3
Time Online: 6 Days, 2:35:19 [...]
Status: Offline
Edit | Report | IP: Logged |
Una vista in questo modo quindi serve quindi per facilitare la scrittura delle select, rendendole più leggibbili (e forse guadagnando qualcosa in termini di caching).
Tuttavia e come se fisicamente postgres rilanciasse la query con cui hai creato la vista ogni volta che le accedi. Questo nel caso di viste non materializzate.
Esistono delle viste dette materializzate che fanno si che il la vista venga in qualche modo scritta su db, e serve per velocizzare l'esecuzione delle query che richiedono spesso quei dati (ad esempio una join costosa può essere memorizzata).
Esistono modi per creare delle viste materializzate anche in postgres (urrahh, ooriah eep!). Lì quando viene effettuato l'aggiornamento si può specificare a seconda della scelta che si effettua (eager, lazy, snapshot, sarcazzo).
Per informazioni serie ->
http://jonathangardner.net/PostgreS...s/matviews.html
|
23-11-2005 16:23 |
|
|
| |
|
torak |
come ho scritto bene!
... |
23-11-2005 16:24 |
|
|
torak |
Renaulto muori
Registered: Dec 2002
Posts: 440 (0.05 al dì)
Location: Bollate
Corso: Informatica laurea triennale
Anno: 3
Time Online: 6 Days, 2:35:19 [...]
Status: Offline
Edit | Report | IP: Logged |
come ho scritto bene!
W l'open source
, by deepblue
|
23-11-2005 16:24 |
|
|
| |
|
fabpicca |
Qualcuno mi sa dire qualcosa dell'effettivo guadan ... |
05-12-2005 10:55 |
|
|
fabpicca |
jesus robot d'acciaio
Registered: May 2002
Posts: 2166 (0.26 al dì)
Location: Pieve Emanuele
Corso: Ticom
Anno: 1°
Time Online: 12 Days, 23:12:28 [...]
Status: Offline
Edit | Report | IP: Logged |
Qualcuno mi sa dire qualcosa dell'effettivo guadango in termini di performance usando le views rispetto alle query effettive?
__________________
my website?|ubuntu linux|get Firefox|grazie Polonia |bagdad sour
"Come va che non ha le corna e le zampe di Caprone?" gli opposi. "Oh, Giuvà", mi disse il prete "adesso non si usa più.Satana è furbo". (I.Silone, Fontamara)
"Al giorno d'oggi non bisogna essere intelligenti, perchè la gente si offende" (un ubriacone)
"close your eyes / pay the price / for your paradise" (DM) "whatever you want to change/you'd better start changing it in your mind" (Transatlantic)
|
05-12-2005 10:55 |
|
|
| |
|
torak |
scrivi meno quando fai le query, ma in termini di ... |
06-12-2005 08:59 |
|
|
torak |
Renaulto muori
Registered: Dec 2002
Posts: 440 (0.05 al dì)
Location: Bollate
Corso: Informatica laurea triennale
Anno: 3
Time Online: 6 Days, 2:35:19 [...]
Status: Offline
Edit | Report | IP: Logged |
scrivi meno quando fai le query, ma in termini di performance a meno che non usi le viste materializzate riesegue la query ogni volta, quindi non guadagni una cippa.
|
06-12-2005 08:59 |
|
|
| |
|
Gusher |
[QUOTE][i]Originally posted by fabpicca [/i]
... |
08-12-2005 08:51 |
|
|
Gusher |
Splinter fun club
Registered: Jan 2003
Posts: 475 (0.06 al dì)
Location: Ovunque
Corso: Informatica
Anno: Done
Time Online: 15 Days, 22:06:15 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by fabpicca
Qualcuno mi sa dire qualcosa dell'effettivo guadango in termini di performance usando le views rispetto alle query effettive?
I costi sono i medesimi, come dice torak, ti evita di riscrivere una query magari complessa. IMHO conviene quando devi accedere spesso anche solo ad un sottoinsieme di quella query. Magari hai molti campi, join trà tabelle .. e devi accedere a un solo campo, coviene fare una select sulla view.
Nel caso invece devi eseguire sempre la solita query che hai "storato" tramite una view, forse a queso punto conviene scrivere una stored procedure che tipicamente viene precompilata dal dbms e puoi beneficiarne dal momento che ti ritrovi una grossa mole di dati ed un idicizzazione corretta dei campi.
|
08-12-2005 08:51 |
|
|
| |
|
torak |
Non ho mai usato le stored procedure... meglio che ... |
12-12-2005 12:59 |
|
|
torak |
Renaulto muori
Registered: Dec 2002
Posts: 440 (0.05 al dì)
Location: Bollate
Corso: Informatica laurea triennale
Anno: 3
Time Online: 6 Days, 2:35:19 [...]
Status: Offline
Edit | Report | IP: Logged |
Non ho mai usato le stored procedure... meglio che mi documenti!
p.s.
ieri sera ho installato postgres 8.1 e ho visto che supporta l'ottimizzazione delle query con algoritmi genetici... azzon...
|
12-12-2005 12:59 |
|
|
| |
|
fabpicca |
[QUOTE][i]Originally posted by Gusher [/i]
... |
12-12-2005 13:23 |
|
|
fabpicca |
jesus robot d'acciaio
Registered: May 2002
Posts: 2166 (0.26 al dì)
Location: Pieve Emanuele
Corso: Ticom
Anno: 1°
Time Online: 12 Days, 23:12:28 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by Gusher
I costi sono i medesimi, come dice torak, ti evita di riscrivere una query magari complessa. IMHO conviene quando devi accedere spesso anche solo ad un sottoinsieme di quella query. Magari hai molti campi, join trà tabelle .. e devi accedere a un solo campo, coviene fare una select sulla view.
Nel caso invece devi eseguire sempre la solita query che hai "storato" tramite una view, forse a queso punto conviene scrivere una stored procedure che tipicamente viene precompilata dal dbms e puoi beneficiarne dal momento che ti ritrovi una grossa mole di dati ed un idicizzazione corretta dei campi.
in effetti quella della stored procedure è una buonissima idea.
Mo ce provo.
intanto mi sono comprato la maglietta di postgresql!
__________________
my website?|ubuntu linux|get Firefox|grazie Polonia |bagdad sour
"Come va che non ha le corna e le zampe di Caprone?" gli opposi. "Oh, Giuvà", mi disse il prete "adesso non si usa più.Satana è furbo". (I.Silone, Fontamara)
"Al giorno d'oggi non bisogna essere intelligenti, perchè la gente si offende" (un ubriacone)
"close your eyes / pay the price / for your paradise" (DM) "whatever you want to change/you'd better start changing it in your mind" (Transatlantic)
|
12-12-2005 13:23 |
|
|
| |
|
jdhoring |
Non conosco PostgreSQL.
... |
12-12-2005 13:38 |
|
|
jdhoring |
Ma saggio de che?
Registered: May 2003
Posts: 2867 (0.36 al dì)
Location: Milano
Corso: Informatica triennale
Anno: Giurassico
Time Online: 27 Days, 17:36:29 [...]
Status: Offline
Edit | Report | IP: Logged |
Non conosco PostgreSQL.
Nel 99 Oracle (versione 8.1.5) se ne uscì con le "materialized wiew" o "snapshot" in cui la vista è effettivamente materializzataw in una tabella.
La "vista materializzata" viene creata alla creazione della view e può essere "rinfrescata" ad ogni singolo aggiornamento delle base tables, oppure "a tempo".
La sua utilità attiene le prestazioni solo quando una o più base tables si trovano su DB remoti: così si può risparmiare sui tempi di rete; oppure anche in caso di tabelle locali, ad esempio nei casi in cui la snapshot consista di dati frequentemente acceduti (esempio: i movimenti contabili della giornata) con risparmio sui tempi di ricerca in tabelle molto grandi (nel ns. esempio i movimenti contabili degli ultimi 10 anni).
Anche le viste non materializzate hanno i loro perchè, ma raramente attengono alle prestazioni.
Faccio qualche esempio:
1) una query molto complessa, al punto che l'ottimizzatore va in panne ed utilizza un piano di esecuzione inefficiente, ed usata spesso, quindi vale la pena di aggiungere comandi di override rispetto al piano di esecuzione inefficiente...
2) una query che mostra le sole righe che l'utente può vedere e non le altre: do all'utente le grant sulla query, e non sulle tabelle...
3) una query che rende comprensibile agli utenti dei dati molto astratti (ad esempio la base dati di Oracle Designer)... ecc ecc.
__________________
Furbo è colui che è molto bravo a togliersi da quei guai in cui il saggio non si sarebbe mai cacciato
Il bravo motociclista è come un buon amante: ha equilibrio, giudizio e tempismo.
Nessuna forma d'amore ha tanto rispetto per la libertà dell'altro come l'amicizia.
|
12-12-2005 13:38 |
|
|
| |
|
All times are GMT. The time now is 09:21. |
|
|
|
|
|
|
|
| |
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|