[英]DBMS Transactions: where are they stored?
我正在使用 sequelize,并使用事务,但我每晚都必须进行大量插入,我担心如果这些插入/更改存储在 memory 中直到事务被提交并且可能使服务器崩溃并丢失所有内容。 或者,如果这些更改由 DBMS 存储和处理(在这种情况下,我使用的是 aurora/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 中的事务功能只是对数据库事务的包装,当然,事务性 DBMS 具有事务日志并将所有正在进行的事务操作存储在那里。
一种极端情况是,如果您真的想获取太多对象并将它们全部插入一个操作中,那么我建议将大量行分成较小的批次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.