Newsgroup: it.comp.software.database
Titolo: Firebird  in timeout

Ciao a tutti,
ho un sito web sviluppato in PHP 4 su Apache su un server Win2000 con 
Firebird 1.5.2.
Nella versione che ho io tutto funziona perfettamente. Nella versione che ho 
sul server del cliente avviene una cosa particolare. Ogni tanto (non si 
riesce a capire "quando" e "perche'") una query che lavora su una 
particolare tabella manda in errore di timeout il server (appare la scritta 
"timeout di 30 secondi superato... "). Se subito dopo si da un "refresh" 
alla pagina, la query e' immediata e anche le successive (anche aumentando i 
parametri della "where") sono velocissime...
La tabella e' "particolare", perche' ha piu' di 1000 campi e circa 8100 
record ma facendo le stesse query da IBOConsole oppure anche da dentro il 
sito (quando non va in timeout ;-)) l'accesso e' velocissimo...
Io ho usato Apache 1.3 mentre dal cliente c'era Apache 2.0. E' stato 
aggiornato il PHP portandolo alla versione 5 ed e' stata anche modificata la 
configurazione (prima le chiamate erano gestite nel modo "CGI" con la 
chiamata a PHP.EXE mentre ora viene usata la DLL php4apache)... quindi 
ritengo che il problema non sia in Apache/PHP ma in Firebird che sembra 
"perdere" la connessione con il web server per poi riprenderla dopo il 
timeout...
Avete qualche idea in merito?
Ho modificato l'estensione del DB da GDB a FDB per il problema di WinXP ma 
il problema non si e' risolto (anche perche' il server del cliente e' 
Win2000 mentre io lavoro su XP - io ho visto il miglioramento al primo 
accesso!!)
Potete consigliarmi qualche sito con magari un forum su Firebird? O 
informazioni tecniche che possano aiutarmi?
Grazie
Ciao
Alex

Aggiungo un'altra cosa:
l'errore di timeout avviene sempre sull'istruzione "ibase_fetch_row" o 
"ibase_fetch_assoc" (ho provato con entrambe) nel momento in cui sta 
"riempiendo" una tabella con i risultati.
Grazie
Ciao
Alex
"Alessandro" <a.iavarone@__NOSPAM__i-studio.it> ha scritto nel messaggio 
news:DaGTd.50578$lB4.1...@twister1.libero.it...


 sito (quando non va in timeout ;-)) l'accesso e' velocissimo...
Un solo appunto. Se sei tu colui che ha progettato la base di dati, ti
consiglio vivamente di leggere della documentazione in merito (soprattutto
relativa alla gestione di un sistema di datawarehouse, dove vengono
esplicati concetti tipo fatto, dimensione, metrica...). Se la base di dati
l'ha progettata un tuo collaboratore, allora ti consiglio di rivalutare il
rapporto che avete instaurato
Henryx

 Henryx
Grazie per il consiglio ma ti assicuro che il DB e' stato progettato nel 
migliore dei modi... soprattutto tenendo conto dell'utilizzo che ne verra' 
fatto. Se vuoi scrivermi in privato saro' felice di spiegarti i motivi ma 
ora in questo post mi sembra un po' fuori argomento...
Quindi, a parte queste considerazioni sulla progettazione del DB, sai 
spiegarmi perche' il server web va in timeout SOLO la prima volta che si 
esegue una query mentre immediatamente dopo la stessa query e' velocissima?
Grazie
Ciao
Alex

 Avete qualche idea in merito?
la questione è molto semplice, firebird come molti altri rdbms la prima
volta che eseguono la query ma "semi"-compilano, cioè trasformano quello
che è il linguaggio sql il un linguaggio binario semicompilato
immagazzinandola temporaneamente in una specie di cache privata (non è
proprio la definizione esatta ma rende l'idea). una volta che il servizio
del database viene riavviato questa cache viene svuotata.
La compilazione della query viene fatta per rendere piu veloci le
successive chiamate alla query stessa.
Essendo una tabella cosi grande è comprensibile che il server ci metta un
pochino di piu di 30 secondi. magari prova a modificare il parametro (prob
nel php) di timeout della query.
ciao fabrizio
-- 
====================================
Coltiva linux, che tanto windows si pianta da solo!
Linux registered user: 364664 (
http://counter.li.org
)