Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
be quiet! debutta nel settore mouse da gaming con Dark Perk Ergo e Dark Perk Sym: due modelli gemelli per specifiche, con polling rate di 8.000 Hz anche in wireless, sensore PixArt PAW3950 da 32.000 DPI e autonomia dichiarata fino a 110 ore. Nel test, a 8.000 Hz si arriva a circa 30 ore reali, con ricarica completa in un'ora e mezza
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-04-2008, 22:24   #1
OrcaAssassina
Senior Member
 
Iscritto dal: Feb 2003
Messaggi: 2817
[VB.NET] Lentissimo ad inserire un record

Uso VB.NET + SQLEXPRESS2005

Fino a che il DB è nuovo ad inserire un record è velocissimo

Quando inizio ad avere circa 4000 record, se inserisco un nuovo record è molto lento.

Dopo potrebbere essere il problema, su VB.NET o su SQL????

Ciao e grazieeeeeeee
__________________
AMD 3700x --- ASUS X570 CROSSHEAR VIII HERO --- 4x 8GB Corsair Vengeance RGB PRO 3600 MHz --- SSD: Samsung 980Pro 1TBb --- EVGA RTX 2070 SUPER
OrcaAssassina è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 00:27   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2787
Se c'è un problema (dico se c'è perché potrebbe essere normale, dipende da molti fattori) allora è sicuramente in SQLExpress perché VB dopo aver dato in pasto al DBMS la query da eseguire se ne lava le mani.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 06:00   #3
OrcaAssassina
Senior Member
 
Iscritto dal: Feb 2003
Messaggi: 2817
Ok

Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Se c'è un problema (dico se c'è perché potrebbe essere normale, dipende da molti fattori) allora è sicuramente in SQLExpress perché VB dopo aver dato in pasto al DBMS la query da eseguire se ne lava le mani.
cosa mi consigli? Dimmi dove posso iniziare a vedere? C'è qualche settaggio in particolare da fare? Ciao e grazie
__________________
AMD 3700x --- ASUS X570 CROSSHEAR VIII HERO --- 4x 8GB Corsair Vengeance RGB PRO 3600 MHz --- SSD: Samsung 980Pro 1TBb --- EVGA RTX 2070 SUPER
OrcaAssassina è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 09:27   #4
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Ciao. 4000 record sono niente. Potresti iniziare a sentire qualche effetto nelle Insert dopo parecchie centinaia di migliaia, magari milioni.
L'unica cosa aggiuntiva che deve fare il DB e' l'aggiornamento della chiave primaria e degli indici, ma che non dovrebbe essere mai critico.

Immagino che tu abbia diverse funzioni, in una tua classe (chiamata normalmente Database Tier, oppure Dtabase Access), ove hai confinato tutte le istruzioni che vanno ad interagire con il Database.
Se non l'hai fatto te lo consiglio.

Prova a seguire per ciascuna di queste funzioni il seguente schema
(scrivo a pezzi con C#, ma ci sono le corrispondenti in VB.net)
Codice:
...
using DBConnect myconn = (codice per aprire la tua connessione)
   try 
      myconn.BeginTransaction
      myconn.comando per il database
      myconn.comando per il database
      myconn.altro comando per il database
      myconn.Commit
    catch
      myconn.Rollback
      throw
    finally
      myconn.Close
    end try
 end using
Quando i comandi sono di sola lettura (SELECT), la transazione non e' necessaria.
Anche la myconn.Close non sarebbe necessaria perche' implicita nella chiusura del blocco USING (e' il distruttore di default della connessione), ma e' bene esplicitarla per chiarezza.

Prova cosi'. Con il disposing corretto delle risorse non dovresti avere problemi.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 11:20   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2787
Quindi ho detto una caxxata... Non sapevo che il modo in cui si mandano in esecuzione le query potesse influire tanto sui tempi.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 11:51   #6
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Quindi ho detto una caxxata... Non sapevo che il modo in cui si mandano in esecuzione le query potesse influire tanto sui tempi.
Secondo me non l'hai detta. Non e' la query in se che da' problemi. E' il contesto che potrebbe darne.
Immagina se per caso ogni operazione aprisse una connessione al database e non la chiudesse. La situazione diventerebbe presto appesantita.
Sto ipotizzando che si sia in un caso simile, tutt'altro che raro a trovarsi, anche se senza codice e' difficile capirlo.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 17:52   #7
OrcaAssassina
Senior Member
 
Iscritto dal: Feb 2003
Messaggi: 2817
Metodo

Carichiamo un dataset contenente solo i dati che ci servono

Ogni singola riga viene viene caricata su degli UserControl inseriti allìinterno di un System.Collections.CollectionBase

Popoliamo la lista e la passiamo ad un FlowLayoutPanel

Dove nel flowlayoutpanel facciamo dei drag drop, inseriamo nuovi oggetti, eliminiamo oggetti esistenti

Con pochi records nel db tutto funziona egregiamente (veloce)

Nel momento in cui il database viene popolato con circa 5.000 - 10.000 records le prestazioni degradano pesantemente.

Abbiamo effettuato le stesse select utilizzando stored procedure, ma non abbiamo notato nessun miglioramento

Sapete darmi delle dritte su dove intervenire???
__________________
AMD 3700x --- ASUS X570 CROSSHEAR VIII HERO --- 4x 8GB Corsair Vengeance RGB PRO 3600 MHz --- SSD: Samsung 980Pro 1TBb --- EVGA RTX 2070 SUPER
OrcaAssassina è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 21:06   #8
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Allora il problema non e' nelle Insert, ma nelle Select...
Stored procedure o no, dovete concentrarvi su quelle, studiandole bene.
Il lavoro di ottimizzazione di un database puo' essere complesso.
Non e' raro che si debba ridisegnare aree mel progettate, con tutte le conseguenze di cambiare layout a una o piu' tabelle.

Provate a cercare il punto critico, a spiegarlo, magari riusciamo ad aiutarvi.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2008, 09:04   #9
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Ma soprattutto usando le stored procedure possono incapsulare il loro codice fornendo un'interfaccia esterna per le applicazioni.

Questo vuol dire che se dovesse cambiare la loro implementazione, o addirittura il design del database, il passaggio potrebbe essere poco traumatico, o addirittura completamente indolore.

M'è capitato di recente con un mio progettino, che ha cambiato non poco la struttura interna del db: a livello di codice dei client non ho toccato una virgola, perché m'è bastato cambiare l'implementazione delle stored procedure usate.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2008, 09:44   #10
OrcaAssassina
Senior Member
 
Iscritto dal: Feb 2003
Messaggi: 2817
OK

Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Ma soprattutto usando le stored procedure possono incapsulare il loro codice fornendo un'interfaccia esterna per le applicazioni.

Questo vuol dire che se dovesse cambiare la loro implementazione, o addirittura il design del database, il passaggio potrebbe essere poco traumatico, o addirittura completamente indolore.

M'è capitato di recente con un mio progettino, che ha cambiato non poco la struttura interna del db: a livello di codice dei client non ho toccato una virgola, perché m'è bastato cambiare l'implementazione delle stored procedure usate.
Tu quindi consigli le stored procedure???

Le stored procedure sono più veloci delle query eseguito all'interno del progetto????

Ciao e grazieeeee
__________________
AMD 3700x --- ASUS X570 CROSSHEAR VIII HERO --- 4x 8GB Corsair Vengeance RGB PRO 3600 MHz --- SSD: Samsung 980Pro 1TBb --- EVGA RTX 2070 SUPER
OrcaAssassina è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2008, 10:20   #11
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Le SP intanto sono precompilate in qualche forma di bytecode, e poi generalmente sono veloci praticamente quanto le normale query, se non di più alcune volte (ad esempio, gli engine SQL espongono API apposite in cui si passa soltanto il nome della S.P. e i suoi parametri; quindi non c'è alcuna fase di parsing della query: viene eseguita e basta).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2008, 10:30   #12
OrcaAssassina
Senior Member
 
Iscritto dal: Feb 2003
Messaggi: 2817
Ottimo

Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Le SP intanto sono precompilate in qualche forma di bytecode, e poi generalmente sono veloci praticamente quanto le normale query, se non di più alcune volte (ad esempio, gli engine SQL espongono API apposite in cui si passa soltanto il nome della S.P. e i suoi parametri; quindi non c'è alcuna fase di parsing della query: viene eseguita e basta).
Quasi quasi, faccio tutto con le SP.....mi stai convincendo

Oggi pomeriggio faccio delle prove
__________________
AMD 3700x --- ASUS X570 CROSSHEAR VIII HERO --- 4x 8GB Corsair Vengeance RGB PRO 3600 MHz --- SSD: Samsung 980Pro 1TBb --- EVGA RTX 2070 SUPER
OrcaAssassina è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
8 smartphone Android in forte sconto su ...
Samsung House apre a Milano: la casa tec...
Broadcom esclude i cloud provider pi&ugr...
Allerta sicurezza per n8n: come protegge...
NIO raggiunge il primo storico profitto ...
Memorie DDR5 cinesi nel tuo prossimo PC?...
Volkswagen e Stellantis chiedono all'UE ...
Final Fantasy VII Remake Parte 3 potrebb...
Lo spettacolo pirotecnico della Xiaomi S...
Black Myth: Wukong potrebbe approdare su...
Aruba e Ducati: la Superbike come labora...
Qualcomm vola nei conti, ma l'industria ...
F1: The Movie, Apple e Formula 1 aprono ...
Amazon Seconda Mano: arriva il 10% extra...
Sysmon diventa nativo su Windows 11: com...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:05.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v