Пакетная вставка в MySQL C ++ Connector - PullRequest
0 голосов
/ 19 июня 2019

Мы используем соединитель mysql для c ++ (официальная библиотека), однако в библиотеке c ++ нет метода batchupdate или batchinsert (хотя в java такие методы существуют).

Для этого я попробовал что-то вроде ниже, и это сработало. Однако в этом случае, если мы вставляем тысячи строк данных в каждую минуту, примерно через 30 минут mysql потребляет всю память на нашем компьютере (который имеет 32 ГБ памяти).

Это неправильное использование, если так, что мы должны делать? (Мы запустили код ниже в цикле):

 try {
        //autoClose parameter is false in our case
        if (!autoClose) {
            con->setAutoCommit(false);
        }

        stmt = con->prepareStatement(queryBuilder);

        this->setPreparedStatements(insertData);

        result = stmt->executeUpdate();
        stmt->close();

        if (getAutoGeneratedKey) {
            std::string lastIdQuery = "SELECT LAST_INSERT_ID()";
            stmt = con->prepareStatement(lastIdQuery);
            ResultSet *rs = stmt->executeQuery();
            while (rs->next()) {
                result = rs->getInt(1);
            }

            rs->close();
            delete rs;
            stmt->close();
        }

        if (autoClose) { //autoClose parameter is false in our case
            con->close();
        }

Спасибо

...