[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: tools per fare uno stress-test



fabrizio ha scritto:

pure ben fatto. Ci sono però poi delle funzioni quali "Conta numero oggetti
presenti" che altro non fa che fare una count(idoggetto) e quindi si deve
scorrere una tabella intera per contare tutti li oggetti presenti. Alcune
avendone anche 100 milioni fanno piantare il sistema. Dato che in alcuni
call center non hanno nulla da fare che fare ripetutamente questa funzione
lo credo che il sistema poi è lento!!!! qui però poi vado ad agire con
meccanismi di profilazione degli utenti, cioè gli taglio le mani!! ;-)

ma puoi fare più semplicemente una modifica e far si che ogni X minuti giri una query che aggiorni una tabella contenenti solo tali totali (con la data in cui sono stati calcolati) e gli utenti vedono solo i totali già calcolati (magari gli mostri anche la data in cui sono stati calcolati). Così tutti possono usare la funzione quante volte vogliono e il sistema non ne risente.

Poi bisogna stare attenti anche al fatto che la stessa query lanciata da utenti diversi potrebbe avere comportamenti totalmente differenti, questo perché il db potrebbe scegliere strategie di esecuzione differenti a seconda dell'utente ... questo può accadere se gli utenti sono differenziati e sulle varie tabelle messe in join alcuni dati sono differenti a seconda dell'utente.

quello che mi preoccupa sono le performance del db che tiene in pancia

qualche centinaio di milioni di record. Puoi quindi capire che qualche
query possa andare lenta!!!

Non conta molto la dimensione della tabella, ma conta come è strutturata (chiave, indici, trigger, ...) e come avviene l'accesso su di essa. Mettere anche un solo indice "sbagliato" può rallentare l'esecuzione di alcune query che accedono a tale tabella, se ci sono alcuni indici sbagliati sulle tabelle più importanti puoi avere un sistema che non è in grado di funzionare decentemente neanche monoutente.

Se il db è ben strutturato, è su una macchina con buone prestazioni, ha sufficiente RAM (quindi non fa swap su disco durante le esecuzioni delle query), l'accesso al disco è ottimale (non è il collo di bottiglia del sistema) e le query vanno tutte per indici non dovrebbero esserci problemi di velocità (poi dipende da quanti sono, in media, gli utenti contemporanei e da che db stai usando, la strategia di esecuzione di default, ...). Per quelle query che devono per forza scorrere tabelle grosse bisogna trovare delle soluzioni alternative, come quella che ti ho riportato qui sopra.

Ciao
Davide

--
Dizionari: http://sourceforge.net/projects/linguistico
Conoscere il TC: http://www.no1984.org
Strumenti per l'ufficio: http://it.openoffice.org
Sistema operativo: http://www.it.debian.org
Browser: http://www.mozilla.org/products/firefox
Client di posta: http://www.mozilla.org/products/thunderbird
Linux User: 302090: http://counter.li.org
--
Non autorizzo la memorizzazione del mio indirizzo di posta a chi usa
outlook: non voglio essere invaso da spam



Reply to: