Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Snapdragon Soung Gen 2 è la piattaforma Qualcomm per i dispositivi audio sempre più integrati nel mondo dell'intelligenza artificiale: al prorpio interno tanta potenza elaborativa per gestire al meglio le necessità d'uso dell'agentic AI
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
In occasione del proprio Snapdragon Summit Qualcomm annuncia i due nuovi chip per dispositivi mobile di fascia alta che entreranno nel mercato nel corso del 2027: tanta potenza a disposizione per elaborazioni di intelligenza artificiale sempre più complesse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-04-2008, 21:24   #1
OrcaAssassina
Senior Member
 
Iscritto dal: Feb 2003
Messaggi: 2818
[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 22-04-2008, 23:27   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
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, 05:00   #3
OrcaAssassina
Senior Member
 
Iscritto dal: Feb 2003
Messaggi: 2818
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, 08: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, 10:20   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
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, 10: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, 16:52   #7
OrcaAssassina
Senior Member
 
Iscritto dal: Feb 2003
Messaggi: 2818
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, 20: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, 08: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, 08:44   #10
OrcaAssassina
Senior Member
 
Iscritto dal: Feb 2003
Messaggi: 2818
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, 09: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, 09:30   #12
OrcaAssassina
Senior Member
 
Iscritto dal: Feb 2003
Messaggi: 2818
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


Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Opera: la VPN gratuita si accende in aut...
Giochi capaci di costruirsi in tempo rea...
Giochi DX11 su Intel Arc e Proton: le ot...
Bentley Torcal ufficiale: 876cv e ricari...
Counter-Strike 2: con poche modifiche, V...
Silent Hill potrebbe tornare al cinema c...
L'integrazione di ChatGPT su Siri è stat...
ASML: 'Non vendiamo assolutamente nulla ...
Anthropic limita Claude Opus 5.5 nello s...
Microsoft 365, l'Antitrust respinge le p...
SAP NOW AI Tour Milan: una giornata con ...
Quake Champions dice addio al free-to-pl...
Anker AeroClip 2, li indossi e dopo un p...
Notebook ASUS da gaming per il Back to S...
Auto elettriche UE al 21,7%: sorpasso si...
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: 04:05.


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