ich habe folgendes Problem:
Mein Script soll Daten aus der DB eines Warenwirtschaftssystem lesen und diese dann in eine andere DB schreiben.
Gelesen wird aus einer Simba DB über eine ODBC System-DNS
Geschrieben wurde bisher in eine Access DB über ODBC.
Weil sich an die Ziel DB (bisher Access) viele Benutzer gleichzeitig anmelden können sollen, möchte ich die Access DB gegen eine MySQL DB austauschen.
Das Problem ist nun, dass der Schreibzugriff auf die MySQL DB ca. um den
Faktor 50 langsamer ist, als auf die vorherige Access DB.
Leider habe ich keine Ahnung, woran das liegen könnte ...
Hier noch einige Information
MySQL Server 5.0
Mysql ODBC Treiber 3.51
Getestet als Standart DB und als Multiuser DB (MySQL Server config)
der Schreibzugriff findet local statt.
Die Konfiguration meines Arbeitsrechners ist die gleiche, wie zur Zeit der Access DB und das System arbeitet normal.
Nun der fragliche Qelltext:
Code: Alles auswählen
Structure Item
No.s
Brand.s
Vendor_No.s
Description.s
VertComp.s
Horzcomp.s
Colour.s
Vendor_Colour.s
Reference.s
EndStructure
Global b.l
Global a.l
b = 1
a = 1
; #############Procedure für den Schreibzugriff############
Procedure WriteNavData()
TextGadget(6,10,160,180,20,"Daten werden geschrieben ... ",#PB_Text_Center)
ProgressBarGadget(7, 10, 175,180, 30, 0,a, #PB_ProgressBar_Smooth)
ForEver[color=red]
result = OpenDatabase(0,"EANScan","root","*****")
If result > 0
abfrage.s = "delete QUICK from EAN"
If DatabaseUpdate(abfrage)
For r = 1 To a
abfrage = "INSERT INTO EAN (Brand, Vendor_No, Description, HorzComp, VertComp, Vendor_VertComp, Reference) VALUES ('"+Current(r)\Brand+"', '"+Current(r)\Vendor_No+"', '"+Current(r)\Description+"', '"+Current(r)\HorzComp+"', '"+Current(r)\VertComp+"','"+Current(r)\Vendor_Colour+"','"+Current(r)\Reference+"')"
If DatabaseUpdate(abfrage) >0
SetGadgetState(7,r)
Else
MessageRequester("",DatabaseError())
Break
EndIf
Next
SetGadgetText(6,"Daten werden geschrieben ... fertig!")
Else
MessageRequester("",DatabaseError())
EndIf
Else
MessageRequester("",DatabaseError())
EndIf
EndProcedure[/color]
Procedure EndTool()
EndProcedure
; #################Ende Schreibzugriff################
If InitDatabase()
If OpenWindow(0, 216, 0, 200, 240, #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Data Export/Import")
CreateGadgetList(WindowID(0))
TextGadget(0,10,10,180,20,"Datenübertragung starten?",#PB_Text_Center)
ButtonGadget(1,75,50,50,20,"Start")
EndIf
Else
MessageRequester("Info", "Operation canceled", 0)
EndIf
Repeat
event = WaitWindowEvent()
If event = #PB_EventGadget
Select EventGadgetID()
Case 1:
ReadNavData()
WriteNavData()
ButtonGadget(10,40,220,100,20,"Programm beenden!")
Case 10:
Break
EndSelect
EndIf
Delay(1)
Sieht jemand, wo das Problem liegen könnte?
Gibt es vielleicht ein sinnvolles "Workaround"?
Vielen Dank bereits im Vorraus für Eure Antworten.
Gruß
Dominique