Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Velocizzare inserimento dati in database SQL
giovedì 27 giugno 2013 - 10.31
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
.NET 4.0
|
Windows 7
|
Visual Studio 2010
|
SQL Server 2008 R2
hydra
Profilo
| Junior Member
158
messaggi | Data Invio:
gio 27 giu 2013 - 10:31
Ciao a tutti.
Innanzitutto mi scuso se non è la sezione giusta, non so bene se è un problema di database o di programmazione.
La mia situazione è questa: sto implementando un database SQL (attualmente utilizzo SQL2008 R2 Express) per salvare dei dati di produzione. Nella mia applicazione utilizzo Linq to SQL per gestire tutto. Contando che dovrei andare ad inserire dei dati ogni 4 secondi circa, mi sono posto questo problema, ossia cosa succede quando la tabella inizia a crescere. In pratica, facendo alcune prove di inserimento, ho notato che al crescere del numero delle righe nella tabella aumenta anche il tempo di inserimento di un singolo record, passando da circa 0.001s a tabella vuota (tenete conto che i valori sono arrotondati al ms) a circa 0.017s con 30000 righe. Ora, questi 0.02s mi si andranno ad aggiungere al tempo di gestione del ciclo produttivo, con conseguente rallentamento nel momento in cui vado ad inserire la riga nella tabella. Mi sapete dare dei consigli su come gestire? Avevo pensato anche di utilizzare due tabelle temporanee dove salvare un tot numero di righe e poi eseguire la copia sulla tabella principale utilizzando un thread, ma mi succede che a volte viene lanciato il commit sia dal thread sia dal metodo che inserisce la riga nella tabella temporanea, con conseguente eccezione. Mi sapete dare una mano? Tenendo conto che il thread principale dovrebbe avere la priorità.
Grazie mille
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 28 giu 2013 - 13:44
>Ciao a tutti.
ciao
>Mi sapete dare una mano?
dipende molto da com'è la tabella di cui parli.
Puoi postare la create e il comando che viene lanciato sulla insert?
>Grazie mille
di nulla!
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
hydra
Profilo
| Junior Member
158
messaggi | Data Invio:
lun 1 lug 2013 - 10:55
Allora, io la tabella l'ho creata senza usare comandi, direttamente da MSSMS, poi non ti so dire neanche che tipo di query lanci perchè uso linq, dovrei scaricarmi qualcosa per vedere le query che crea. In ogni caso ho risolto in questo modo: ho messo la tabella che mi serve in un datacontext per conto suo, poi ogni volta che lancio l'inserimento di una riga vado ad eliminare e ricreare la connessione del datacontext al database. Non sarà una soluzione elegante ma ho visto che mi mantiene un tempo minimo di inserimento, ho fatto varie prove, tra cui una di inserimento di 1000000 di record e non ho visto decadimento di prestazioni sull'inserimento, che varia tra 1 e 2 ms; certo per inserire tutti i record ci ha messo un po' ma non era questo il problema, per cui se non ci sono soluzioni più eleganti direi che mi va bene anche così.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !