<?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[mysqldac - EOutOfMemory bei großer Tabelle]]></title><description><![CDATA[<p>Hi,</p>
<p>in meinem BCB5 verwende ich ebenfalls die MySQLDac Komponenten. Leider habe ich im Bezug auf großen Tabellen damit das erste mal meine Probleme.</p>
<p>Unter einer großen Tabelle verstehe ich eine Tabelle mit ca. 1,8 Millionen Datensätzen und einer Größe von ca. 3,7 GB.</p>
<p>Hier ein kleiner zusammengefasster Ausschnitt wie meine Abfrage aufgebaut ist.</p>
<pre><code class="language-cpp">String text;
String sql = &quot;select * from tmpcatalog&quot;;
try
{
   Form1-&gt;SQLQuery2-&gt;Close();
   Form1-&gt;SQLQuery2-&gt;SQL-&gt;Clear();
   Form1-&gt;SQLQuery2-&gt;SQL-&gt;Add(sql);
   Form1-&gt;SQLQuery2-&gt;Open();
   Form1-&gt;SQLQuery2-&gt;First();

   while (!Form1-&gt;SQLQuery2-&gt;Eof)
   {
      text = Form1-&gt;SQLQuery2-&gt;FieldByName(&quot;xml&quot;)-&gt;AsString;
      xml_file = Form1-&gt;SQLQuery2-&gt;FieldByName(&quot;file&quot;)-&gt;AsString;
      if (ParseXML(text) == false)
      {
         return false;
      }

      Form1-&gt;SQLQuery2-&gt;Next();
   }
}
catch(...)
{
   ShowMessage(&quot;tmpcatalog konnte nicht verarbeitet werden&quot;);
   return false;
}
</code></pre>
<p>Bei 500.000 Datensätzen braucht er einige Minuten, bis er anfängt alle Datensätze in der Schleife zu verarbeiten. Bei allen Datensätzen kommt nach vielen Minuten eine EOutOfMemory Exception. Da sind 1,5 GB wohl zu wenig RAM im Rechner.</p>
<p>Im PHPMyAdmin braucht die Abfrage nur 0,4s. Gibst irgendeine Möglichkeit, dass er nicht alles sofort in den Speicher lädt, sondern sich immer via den Next Aufruf das nächste Element lädt.</p>
<p>Ansonsten müsste ich die Anwendung so umbauen, dass immer nur Max limit 500.000 Datensätze verarbeitet werden.</p>
<p>Vielleicht hat ja jemand sonst noch eine Idee oder selbst Erfahrung mit größeren Datenmengen.</p>
<p>Beste Grüße</p>
<p>Philipp</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/117835/mysqldac-eoutofmemory-bei-großer-tabelle</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 04:27:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/117835.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 Aug 2005 16:06:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mysqldac - EOutOfMemory bei großer Tabelle on Thu, 11 Aug 2005 16:06:31 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>in meinem BCB5 verwende ich ebenfalls die MySQLDac Komponenten. Leider habe ich im Bezug auf großen Tabellen damit das erste mal meine Probleme.</p>
<p>Unter einer großen Tabelle verstehe ich eine Tabelle mit ca. 1,8 Millionen Datensätzen und einer Größe von ca. 3,7 GB.</p>
<p>Hier ein kleiner zusammengefasster Ausschnitt wie meine Abfrage aufgebaut ist.</p>
<pre><code class="language-cpp">String text;
String sql = &quot;select * from tmpcatalog&quot;;
try
{
   Form1-&gt;SQLQuery2-&gt;Close();
   Form1-&gt;SQLQuery2-&gt;SQL-&gt;Clear();
   Form1-&gt;SQLQuery2-&gt;SQL-&gt;Add(sql);
   Form1-&gt;SQLQuery2-&gt;Open();
   Form1-&gt;SQLQuery2-&gt;First();

   while (!Form1-&gt;SQLQuery2-&gt;Eof)
   {
      text = Form1-&gt;SQLQuery2-&gt;FieldByName(&quot;xml&quot;)-&gt;AsString;
      xml_file = Form1-&gt;SQLQuery2-&gt;FieldByName(&quot;file&quot;)-&gt;AsString;
      if (ParseXML(text) == false)
      {
         return false;
      }

      Form1-&gt;SQLQuery2-&gt;Next();
   }
}
catch(...)
{
   ShowMessage(&quot;tmpcatalog konnte nicht verarbeitet werden&quot;);
   return false;
}
</code></pre>
<p>Bei 500.000 Datensätzen braucht er einige Minuten, bis er anfängt alle Datensätze in der Schleife zu verarbeiten. Bei allen Datensätzen kommt nach vielen Minuten eine EOutOfMemory Exception. Da sind 1,5 GB wohl zu wenig RAM im Rechner.</p>
<p>Im PHPMyAdmin braucht die Abfrage nur 0,4s. Gibst irgendeine Möglichkeit, dass er nicht alles sofort in den Speicher lädt, sondern sich immer via den Next Aufruf das nächste Element lädt.</p>
<p>Ansonsten müsste ich die Anwendung so umbauen, dass immer nur Max limit 500.000 Datensätze verarbeitet werden.</p>
<p>Vielleicht hat ja jemand sonst noch eine Idee oder selbst Erfahrung mit größeren Datenmengen.</p>
<p>Beste Grüße</p>
<p>Philipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/850310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/850310</guid><dc:creator><![CDATA[PvdB]]></dc:creator><pubDate>Thu, 11 Aug 2005 16:06:31 GMT</pubDate></item><item><title><![CDATA[Reply to mysqldac - EOutOfMemory bei großer Tabelle on Thu, 11 Aug 2005 20:31:51 GMT]]></title><description><![CDATA[<p>Lies dir masl <a href="http://dev.mysql.com/doc/mysql/en/mysql-use-result.html" rel="nofollow">das</a> da genau durch... vielleicht is das was für dich...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/850443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/850443</guid><dc:creator><![CDATA[nirsaja]]></dc:creator><pubDate>Thu, 11 Aug 2005 20:31:51 GMT</pubDate></item><item><title><![CDATA[Reply to mysqldac - EOutOfMemory bei großer Tabelle on Thu, 11 Aug 2005 21:44:37 GMT]]></title><description><![CDATA[<p>Die Frage wäre wohl eher was für den Hersteller der Komponenten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/850469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/850469</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Thu, 11 Aug 2005 21:44:37 GMT</pubDate></item><item><title><![CDATA[Reply to mysqldac - EOutOfMemory bei großer Tabelle on Fri, 12 Aug 2005 05:08:23 GMT]]></title><description><![CDATA[<p>Kannst Du die Query auf einen serverseitigen Cursor umstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/850507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/850507</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 12 Aug 2005 05:08:23 GMT</pubDate></item></channel></rss>