Пакетные обновления MySQL на C - PullRequest
1 голос
/ 20 марта 2009

Поддерживает ли MySQL C API пакетные обновления? Я пишу приложение, в котором определенные транзакции обрабатываются большими партиями. Это будет крайне неэффективно, если в процессе регистрации я закончу выполнять одну базу данных вызовов для каждой вставки.

Есть ли в C что-то похожее на API-интерфейсы Java для пакетных обновлений SQL?

Спасибо

Н.

Ответы [ 2 ]

6 голосов
/ 20 марта 2009

У вас есть несколько вариантов, которые помогут ускорить INSERT в MySQL:

0 голосов
/ 20 марта 2009

Да, хотя отдельной функции для этого нет. Взгляните на:
http://dev.mysql.com/doc/refman/5.0/en/c-api-multiple-queries.html

Вы должны указать, что mysql_real_query () должен анализировать несколько операторов, разделенных; заранее включив флаг при подключении или используя mysql_set_server_option () .

mysql_set_server_option(&mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON);

Так php реализует mysqli_multi_query () :

PHP_FUNCTION(mysqli_multi_query)
{
    // ...
    MYSQLI_ENABLE_MQ;
    if (mysql_real_query(mysql->mysql, query, query_len)) {
        // ...
        MYSQLI_DISABLE_MQ;
        // ...

        RETURN_FALSE;
    }
    RETURN_TRUE;
}

Макрос MYSQLI_ENABLE_MQ соответствует приведенному выше коду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...