[Linuxtrent] Re: Implementazione di un recordset persistente lato server per applicazioni AJAX

  • From: ant9000@xxxxxxxxxx
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Thu, 24 Aug 2006 10:18:58 +0200

Quoting Guido Brugnara <gdo@xxxxxxxxx>:

> Ho quindi utilizzato due tabelle di appoggio "recordset" e
> "recordset_rows" dove nella prima ci sono i dati del singolo recordset
> persistente mentre in recordset_rows salvo le PK con la relativa posizione.
>
> Recuperando le PK solo a zone evito di metterci dei secondi
> interminabili quando ho tabelle grandi (dell'ordine delle centinaia di
> migliaia o addirittura di minuti con tabelle di milioni di righe) ed il
> "rovescio della medaglia"  è accettabile se confrontato con i benefici
> (tempi di pochissimi secondi alla prima pagina; pochissimi decimi di
> secondo per le successive).
>
> Delle prove con una tabella "limite" di 1.000.000 di record ho ottenuto
> che il count(*) richiede circa 3 secondi, che sommati ai circa 15" per
> copiare il lotto di 1000 record sono ancora tempi accettabili,
> considerato che la navigazione dei 999 record adiacenti successivi
> richiederà solo una frazione di secondo.
> Un lotto di 100 record richiede comunque 14" e quindi con tabelle molto
> grandi conviene tenere lotti di dimensioni di quell'ordine di grandezza.
>

Forse riesci a migliorare ancora un poco le performances usando per i recordset
delle temporary tables. Queste hanno due vantaggi: sono ottimizzate per usare
in prima battuta la RAM (quindi dovrebbero avere tempi di caricamento minori
delle tabelle vere), e sono separate per sessione (quindi anche se hai molti
utenti contemporanei, non stai rallentando le query sulla tabella recordset_rows
perché ogni utente ha la sua). Ovviamente, più RAM hai e meglio gira il tutto.

Se la tua applicazione usa effettivamente una sessione per ogni utente, non hai
da fare alcun lavoro aggiuntivo; se invece lavori via web, ti serve qualcosa per
tenere attive le sessioni tra una richiesta e l'altra dell'utente (e
naturalmente devi poi ricollegare l'utente alla sessione giusta). Credo che per
quest'ultimo problema possa esistere già qualcosa di pronto; forse si può
adattare un poco SQLRelay[*] per fargli fare quel che serve.

HTH,

Ant9000

[*] http://sqlrelay.sourceforge.net/



----------------------------------------------------------------
Net Wise webmail system - http://www.netwise.it
This message was sent using IMP, the Internet Messaging Program.

-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: