<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[C++ &amp;amp; Mysql - Performance ?]]></title><description><![CDATA[<p>Hi all,</p>
<p>ich habe mir in C++ ein Programm geschrieben, welches in meiner Mysql-Datenbank 200.000 Datensätze updatet.</p>
<p>Nur dauert das sehr sehr lange.</p>
<p>In erster Linie lese ich ca. 60.000 Datensätze aus. Danach Update ich (im ZUsammenhang von meheren Tabellen) wiederum mind. 60-200.000 Datensätze.</p>
<p>Ich habe eine Athlon XP 1800+ 500 DDR-RAM. Festplatte auch nicht wirklich die Neuste.</p>
<p>Das Update dauert sicherlich 10-20 Minuten. Nur stellt sich die Frage, ist das wirklich ein Hardware abhängiges Problem ?</p>
<p>Im Quellcode benutzte ich eigentlich sehr einfache ausdrücke bzw. Algorithmen(eig. sehr schnell).</p>
<p>Ein weiteres Problem ist die Handhabung mit den ganzen Mysql(oder anderen DB)-Datentypen.</p>
<p>Wenn ich diese auslese bekomme ich das ganze als String zurückgegeben, und muss für jeden Datensatz sehr umständliche Typenumwandlungen durchführen.<br />
Kann man das nicht irgendwie eleganter lösen.</p>
<p>Wie wäre denn ein sehr guter Ansatz, zentrale Datensätze zu Bilden, um wirklich mit jeder Datenbank arbeiten zu können (zb. PostSQL, Mysql, DB2,...usw).</p>
<p>Gibt es dabei schon normierte Datensatzstrukturen, und definiert man die sich einfach selber?</p>
<p>Für ein paar Antworten oder weiteren Links würde ich mich sehr freuen.</p>
<p>Mfg JayJay</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/117981/c-amp-mysql-performance</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 06:18:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/117981.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 13 Aug 2005 10:11:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ &amp;amp; Mysql - Performance ? on Sat, 13 Aug 2005 10:11:33 GMT]]></title><description><![CDATA[<p>Hi all,</p>
<p>ich habe mir in C++ ein Programm geschrieben, welches in meiner Mysql-Datenbank 200.000 Datensätze updatet.</p>
<p>Nur dauert das sehr sehr lange.</p>
<p>In erster Linie lese ich ca. 60.000 Datensätze aus. Danach Update ich (im ZUsammenhang von meheren Tabellen) wiederum mind. 60-200.000 Datensätze.</p>
<p>Ich habe eine Athlon XP 1800+ 500 DDR-RAM. Festplatte auch nicht wirklich die Neuste.</p>
<p>Das Update dauert sicherlich 10-20 Minuten. Nur stellt sich die Frage, ist das wirklich ein Hardware abhängiges Problem ?</p>
<p>Im Quellcode benutzte ich eigentlich sehr einfache ausdrücke bzw. Algorithmen(eig. sehr schnell).</p>
<p>Ein weiteres Problem ist die Handhabung mit den ganzen Mysql(oder anderen DB)-Datentypen.</p>
<p>Wenn ich diese auslese bekomme ich das ganze als String zurückgegeben, und muss für jeden Datensatz sehr umständliche Typenumwandlungen durchführen.<br />
Kann man das nicht irgendwie eleganter lösen.</p>
<p>Wie wäre denn ein sehr guter Ansatz, zentrale Datensätze zu Bilden, um wirklich mit jeder Datenbank arbeiten zu können (zb. PostSQL, Mysql, DB2,...usw).</p>
<p>Gibt es dabei schon normierte Datensatzstrukturen, und definiert man die sich einfach selber?</p>
<p>Für ein paar Antworten oder weiteren Links würde ich mich sehr freuen.</p>
<p>Mfg JayJay</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851396</guid><dc:creator><![CDATA[JayJay]]></dc:creator><pubDate>Sat, 13 Aug 2005 10:11:33 GMT</pubDate></item><item><title><![CDATA[Reply to C++ &amp;amp; Mysql - Performance ? on Sat, 13 Aug 2005 10:19:43 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>du musst mal dein problem genauer beschreiben. Heisst update dass du die datensätze im speicher veränderst oder dass du ein sql-update query gegen die db feuerst ? Um die performance der db zu verbessern müsste man mal das shema sehen und schauen ob sich da nicht was optimieren lässt.</p>
<p>Was dein zweites problem angeht, so wäre in diesem fall wohl ein wrapper angebracht der die ganzen details vor dem client versteckt und ein einheitliches interface bietet. Was intern dann passiert hängt von der verwendeten datenbank ab. Dass das nicht 100%ig funktioniert sollte aber klar sein, da es zum teil recht unterschiedliche datenbanken gibt, bei denen man recht unterschiedlich das selbe problem angeht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851401</guid><dc:creator><![CDATA[prolog]]></dc:creator><pubDate>Sat, 13 Aug 2005 10:19:43 GMT</pubDate></item><item><title><![CDATA[Reply to C++ &amp;amp; Mysql - Performance ? on Sat, 13 Aug 2005 12:51:35 GMT]]></title><description><![CDATA[<p>JayJay schrieb:</p>
<blockquote>
<p>Wenn ich diese auslese bekomme ich das ganze als String zurückgegeben, und muss für jeden Datensatz sehr umständliche Typenumwandlungen durchführen.</p>
</blockquote>
<p>Die Daten gleich Binär in die Datenbank reinspeichern.<br />
Dann reicht ein simpler type-cast um die Daten wieder in eine &quot;normale&quot; Variable<br />
reinzubekommen.<br />
Bsp:</p>
<pre><code class="language-cpp">// worst case: alle Zeichen escapen + \0
char * escapedData = new char[sizeof(int)* 2 + 1];

int x = 25;
mysql_real_escape_string(dbHandle, escapedData, &amp;x, sizeof(int));
</code></pre>
<p>Die Anfrage schaut dann ganz einfach so aus:</p>
<pre><code>&quot;insert into myTable (binaryData) values ('&quot; + escapedData + &quot;')&quot;
</code></pre>
<p>Als Datentyp für die Spalte &quot;binaryData&quot; in der Tabelle eignet sich z. B.<br />
ein char(4) oder auch ein varchar, evtl auch ein int.<br />
Hauptsache 4 Byte gross ( genauer: sizeof(int) gross)</p>
<p>Bei der Abfrage dann einfach:</p>
<pre><code class="language-cpp">int x;

    while(row = ...)
    {
    // row[spaltenNummer] liefert einen char *
    // diesen nach int * casten, dann derefernzieren und 
    // den Wert dem x zuweisen
    x = *((int *)(*(row[ spaltenNummer ]))
    }
</code></pre>
<p>Nachteil dieser Methode:<br />
wenn man sich mittels mysql.exe auf der Konsole verbindet,<br />
kommt bei der Abfrage natürlich nur Müll raus.</p>
<p>mfg<br />
Martin</p>
<p>PS:<br />
habs obiges Beispiel ned getestet, aber so in etwa haut das hin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851523</guid><dc:creator><![CDATA[anonymus]]></dc:creator><pubDate>Sat, 13 Aug 2005 12:51:35 GMT</pubDate></item><item><title><![CDATA[Reply to C++ &amp;amp; Mysql - Performance ? on Sat, 13 Aug 2005 16:40:43 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>das schaut wirklich gut aus. Nur ist das ganze Fraglich wie ich die Daten in PHP in eine leserliche Form bekomme.</p>
<p>Ich möchte die Daten in C++ Updaten und über PHP anzeigen lassen.</p>
<p>In php bekomm ich nun dann das Problem, die Typenmwandlungen durchzuführen?</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851624</guid><dc:creator><![CDATA[JayJay]]></dc:creator><pubDate>Sat, 13 Aug 2005 16:40:43 GMT</pubDate></item><item><title><![CDATA[Reply to C++ &amp;amp; Mysql - Performance ? on Sat, 13 Aug 2005 18:45:32 GMT]]></title><description><![CDATA[<p>Sorry, aber die Idee von anonymus ist nicht so toll, um es diplomatisch auszudrücken. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Das erste Problem daran hast du ja erkannt, JayJay. Man macht mit damit das ganze Typsystem innerhalb der DB kaputt bzw. umgeht diese.</p>
<p>Ich kenne die MySQL-API nicht, aber mich wundert doch sehr, das alles nur als String zurück kommt? Wenn dem wirklich so ist, gehört das Ding in die Tonne! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/851686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851686</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sat, 13 Aug 2005 18:45:32 GMT</pubDate></item><item><title><![CDATA[Reply to C++ &amp;amp; Mysql - Performance ? on Sat, 13 Aug 2005 19:27:36 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>dem ist nicht so, jedenfalls nicht bei mysql++. Da gibt es convertierungsmethoden. Man muss sich eben nur die referenz anschaun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851706</guid><dc:creator><![CDATA[prolog]]></dc:creator><pubDate>Sat, 13 Aug 2005 19:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to C++ &amp;amp; Mysql - Performance ? on Sun, 14 Aug 2005 08:24:17 GMT]]></title><description><![CDATA[<p>Ich wuerd empfehlen, das Programm erst mal zu profilen, dann siehst du, wo du wirklich die Zeit verlierst und weisst, worauf du dich konzentrieren musst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/851810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851810</guid><dc:creator><![CDATA[Blue-Tiger]]></dc:creator><pubDate>Sun, 14 Aug 2005 08:24:17 GMT</pubDate></item><item><title><![CDATA[Reply to C++ &amp;amp; Mysql - Performance ? on Sun, 14 Aug 2005 10:34:26 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Sorry, aber die Idee von anonymus ist nicht so toll, um es diplomatisch auszudrücken. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Aber es erspart aufwendige Konvertierungen von char * nach z. B. int und umgekehrt.<br />
Ob es gut oder schlecht ist hängt imho vom Einsatzzweck ab.<br />
Wenn es rein um die Daten geht und man keine Datenbankoperationen wie<br />
suchen, sortieren usw. auf dieser Spalte braucht,<br />
warum nicht?</p>
<p>Artchi schrieb:</p>
<blockquote>
<p>Ich kenne die MySQL-API nicht, aber mich wundert doch sehr, das alles nur als String zurück kommt? Wenn dem wirklich so ist, gehört das Ding in die Tonne! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
</blockquote>
<p>Was sollte sonst zurückkommen?<br />
Genau das, was man vorher reingesteckt hat.<br />
Also ganz normale Zeichen, auch wenn die innerhalb der Datenbank<br />
anders (also wie Zahlen) behandelt werden.<br />
Eine herkömmliche Anfrage besteht nun mal aus ASCII Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851869</guid><dc:creator><![CDATA[anonymus]]></dc:creator><pubDate>Sun, 14 Aug 2005 10:34:26 GMT</pubDate></item></channel></rss>