C#-Projekt: MySqlClient unter .NET ist extrem langsam

Bei meinem C#-Projekt füge ich teilweise bis zu 30.000 Datensätze in eine MySQL-Tabelle ein und muss diese später auch wieder auslesen. Meine speziell geschriebene Datenbank-Klasse, die diese Aufgaben erledigen soll, benötigt für 2000 Datensätze fast 5 Minuten. Das kann’s nicht sein, dachte ich mir, und somit machte mich auf die Suche nach einer Lösung, um das Ganze zu beschleunigen.

Zahlreiche Tests später (einzelne / mehrere MySqlConnections / MySqlCommands etc.) war es zwar ein wenig schneller (durch die Optimierung meines eigenen Codes) aber der Flaschenhals war eindeutig die MySQL-Datenbank. Nach einer kurzen Suche bei Google, habe ich eine Diskussion im MySQL-Forum gefunden und damit auch die Lösung meines Problems: Meine Tabellen hatten das InnoDB-Format. Nachdem ich eine Testtabelle auf MyISAM umgestellt habe, wurde das Einfügen sofort bedeutend schneller (mindestens Faktor 20, eher mehr).

Da ich auf die “Vorteile” des InnoDB-Formats verzichten kann, stelle ich meine restlichen Tabellen nun auch auf MyISAM um…

Über Stefan

Polyglot Clean Code Developer

Ein Kommentar

  1. DANKE!

    Wahnsinn, ich habe ewig nach einer Lösung gesucht und dabei ist es so einfach!

    DANKE DANKE DANKE

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax