Lentezza di scrittura su db mysql

mercoledì 20 gennaio 2010 - 19.09

maxottav Profilo | Newbie

Ciao a tutti, sono appena arrivato in questo forum, ho scritto un programmino in vb2008 che importa records da un db access, apporta alcune modifiche al dataset e poi scrive il dataset su una tabella MySQl. I tempi di lettura, modifica datset e scrittura di un file xml sono rapidissimi, circa 1-2 secondi per un migliaio di records.
Il problema sorge nella scrittura (sia in locale che in remoto) dove impiega circa 30 secondi.
Poichè tale operazione deve essere eseguita ciclicamente con intervalli di 60/90 secondi ho l'impressione che il tempo di scrittura sia eccessivo e smisurato rispetto alle altre operazioni. A vostro parere i 30" sono un tempo fisiologico normale o c’è qualcosa che mi sfugge?
i records sono composti da circa 15 campi di testo con una media di 10 caratteri per campo.

dopo aver letto da access e modificato il dataset, per scrivere uso queste istruzioni:

Dim queryOut As String = “SELECT * FROM Classifiche WHERE idcn = ” & variabile
Dim ClassOut As New MySqlDataAdapter(queryOut, objConnection)
Dim dbCommand As MySqlCommandBuilder = New MySqlCommandBuilder(ClassOut).

ClassOut.UpdateCommand = dbCommand.GetInsertCommand
ClassOut.Update(Classds, “Classifiche”)


grazie anticipate.

alx_81 Profilo | Guru

>Ciao a tutti, sono appena arrivato in questo forum,
Ciao! e benvenuto su Dotnetell!

>A vostro parere i 30" sono un tempo fisiologico normale o c’è qualcosa che mi sfugge?
non ti posso dire in base a che macchina hai (quella dove hai mysql) quali sono le prestazioni che dovresti aspettarti.. ma 30 secondi sono un'eternità. Proprio oggi su una macchina virtuale piccolissima ho caricato 100.000 righe in 1 secondo.. massimo 2. Puoi ben capire che qualcosa non va. Io partirei dal provider. Che connettore usi per MySQL? Hai provato anche a reimportare in tutto in una nuova tabella di access per vedere i tempi paragonati?

>grazie anticipate.
di nulla!

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

maxottav Profilo | Newbie

la macchina che utilizzo ha ottime prestazioni quindi non imputo nessuna colpa a lei. ho fatto test con access e mysql. in mysql ho copiato tutto su una nuova tabella simile con l'istruzione INSERT INTO ... SELECT... e ci ha impiegato un nulla. ho ripetuto la prova su access con tabelle collegate a mysql sul web copiando tutto in locale e anche qui il tempo è stato quasi 0. così come quando carico il dataset sulla mia applicazione ci impiego un attimo. ripeto il collo di bottiglia è la scrittura dalla mia applicazione. per connettermi uso questo codice (logicamente ne codice originale non ci sono asterischi):

Imports MySql.Data.MySqlClient

Public Class Form1

' Stringa di connessione per il database remoto MySql
Dim connSring As String = "host=ftp.******.com; username=o*****; password=*****; database=******"

' Stringa di connessione per il database locale MySql
'Dim connSring As String = "host=localhost; username=root; password=******; database=*********"

' Mi collego al database
Dim objConnection As New MySqlConnection(connSring)

alx_81 Profilo | Guru

>ripeto il collo di bottiglia è la scrittura dalla mia applicazione
ok, se prendi il codice generato e lo esegui direttamente su mysql inserisce velocemente?
Se il problema sta nel codice che crei, o è il connettore, o il provider, oppure hai un traffico di richiesta tale da bloccarti la risorsa... Se dici che la macchina sta bene, non mi viene altro.

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

maxottav Profilo | Newbie

ammetto i miei limiti, sono un principiante smanettone e, per ora, non so cosa significa e come "eseguire il codice da mysql". riguardo al traffico non può influire perchè il tempo su db locale è simile. per quanto riguarda il connettore teoricamente il mysql per .net dovrebbe essere il migliore. le alternative quali possono essere? ADODB? OleDB?
non ho ancora trovato nulla sulla rete ma qualche esempio di codice ci potrebbe essere. se qualcuno ha già trovato qualcosa di simile: magari un link sarebbe gradito.
grazie ancora per l'aiuto.

alx_81 Profilo | Guru

>ammetto i miei limiti, sono un principiante smanettone e, per
>ora, non so cosa significa e come "eseguire il codice da mysql".
Prova a cercare un manager per mysql, tipo un programma per eseguire i comandi direttamente:
http://www.brothersoft.com/mysql-query-browser-for-windows-71868.html

e lanciare il comando.. vedi se tutto va bene

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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 !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5