Moin !
Ich versuche mich gerade an einer MySQL Datenbank. Der Server läuft auch, Datenbank ist erstellt und es gibt auch eine Tabelle in der DB:
CREATE TABLE `datatest` (
`ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`Time` DATETIME NOT NULL,
`ms` SMALLINT(5) UNSIGNED ZEROFILL NOT NULL DEFAULT '00000',
`us` SMALLINT(5) UNSIGNED ZEROFILL NOT NULL DEFAULT '00000',
`ns` SMALLINT(5) UNSIGNED ZEROFILL NOT NULL DEFAULT '00000',
`Data1` DOUBLE NULL DEFAULT NULL,
`Data2` DOUBLE NULL DEFAULT NULL,
`Data3` DOUBLE NULL DEFAULT NULL,
`Data4` DOUBLE NULL DEFAULT NULL,
`Break` INT(11) NULL DEFAULT NULL,
`Hint` TINYTEXT NULL COMMENT 'Hint for the DataSet' COLLATE 'latin1_swedish_ci',
PRIMARY KEY (`ID`)
)
COMMENT='A Data Table ...'
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
Ich verbinde mich über den MySQL Connector mittels MySqlConnection auf die Datenbank (local). Bis hier hin alles super.
Jetzt möchte ich nur Zeilen mit Zufallsdaten in der DB eintragen um mal ein Gefühl dafür zu bekommen wie schnell das klappt.
Dazu habe ich diese Methode:
public static void insert(MySqlConnection conn)
{
var cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO datatest(Time) VALUES(@Time)";
cmd.Prepare();
cmd.Parameters.AddWithValue("@Time", DateTime.Now);
cmd.ExecuteNonQuery();
}
Das lasse ich in einer For Schleife 1-n x ausführen und ermittele über eine Stopwatch Instanz die Zeit.
Ich habe mal zwischen 100 und 100000 Zeilen eintragen lassen und das braucht pro Zeile im Schnitt ca. 1,5-2,5 Millisekunden. Das kommt mir doch etwas langsam vor für einen lokalen Server
Man sieht auch im Taskmanager das sich beide Anwendungen (Client & Server) CPU mässig langweilen und bei weniger als 2% rumdümpeln während Daten eingetragen werden 8o. Ich hätte eigentlich erwartet das entweder Server oder Client auf Anschlag gehen ...
Mache ich hier generell irgendwas falsch? Mir ist bewusst das es sowas wie Bulk Inserts gibt. Aber ich wollte hier testen wie schnell ich mit einzelnen Inserts bin.
Grüße Dominik