Cesar, you really should consider using placeholders and bind_param (if
available). Without using placeholders, the insert statement will contain
the literal values to be inserted and has to be re-prepared and re-executed
for each row. With placeholders, the insert statement only needs to be
prepared once. The bind values for each row can be given to the execute
method each time it's called. By avoiding the need to re-prepare the
statement for each row, the application typically runs many times faster.

BEFORE your loop, you prepare the query only once! Like this (in Perl),

$sth = $dbh->prepare ("INSERT into mynames (my_num, my_id) values (?, ?)");

Now, within your loop,

while (($name, $message_id) = each %posts) {
    $sth->execute ($name, $message_id);
}

This should yield some positive effects.

- Mark

        System Administrator Asarian-host.org

---
"If you were supposed to understand it,
we wouldn't call it code." - FedEx


----- Original Message -----
From: "Cesar Mello - Axi" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, May 31, 2002 6:49 AM
Subject: I need 50.000 inserts / second


> Hello,
>
> I intend to use MySQL in a data acquisition software. The actual version
> stores the acquired data straight in files. The sample rate can get up to
> 50 kHz. I would like to know if there is some way to improve MySQL
> insert rate. The following C++ code with mysql++ takes 5 seconds to
> execute in my Athlon 1.33 machine:
>
> sql_create_2 (teste1, 1, 2, double, datahora, double, valor1)
>
> int main() {
>   try { // its in one big try block
>
>     Connection con(use_exceptions);
>     con.connect("cesar");
>     Query query = con.query();
>
>     teste1 row;
>     // create an empty stock object
>
>  for (int i=1;i<50000;i++)
>  {
>   row.datahora = (double) i;
>   row.valor1 = i / 1000;
>
>   query.insert(row);
>   query.execute();
>  }


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to