DBMS事务:它们存储在哪里?



我正在使用sequelize,并使用事务,但是我必须每天晚上进行大量插入,我担心如果这些插入/更改存储在内存中,直到事务提交,并且可能使服务器崩溃并丢失所有内容。或者如果这些变化是存储和处理的DBMS(在这种情况下,我使用极光/postgresql),我不必担心什么

帮助!

我使用express 4, sequelize 5,这可能会在cronJob上运行这是我的结构

的一个抽象例子
const db = require('../database/models')
class Controller {
async test (req, res) {
let transaction = await db.sequelize.transaction()
try {
await this.storeData(req.body, transaction)
await transaction.commit()
res.status(200)
} catch (error) {
if (transaction) await transaction.rollback()
res.status(400)
}
}
async storeDate (params, transaction = null) {
// Calculation of the data to insert
var records = []
await Promise.all(records.map(async item => {
await db.MyModel.create(item, { transaction })
}
))
}

Sequelize中的事务特性只是对DB事务的包装,当然,事务性DBMS具有事务日志并在其中存储所有正在进行的事务操作。
一种极端情况是,如果你真的想在一次操作中获取太多对象并将它们全部插入,那么我建议将大量的行分成较小的批。

最新更新