Мы используем соединитель 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();
}
Спасибо