【发布时间】:2019-06-19 14:01:36
【问题描述】:
我们使用 mysql connector for c++(官方库),但是 c++ 库中没有 batchupdate 或 batchinsert 方法(尽管在 java 中这些方法确实存在)。
为了实现这一点,我尝试了以下类似的方法,并且成功了。但是在这种情况下,如果我们每分钟插入数千行数据,大约 30 分钟后,mysql 会消耗掉我们计算机中的所有内存(内存为 32G)。
这种用法有错吗,如果错了怎么办? (我们循环运行下面的代码):
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();
}
谢谢
【问题讨论】: