본문 바로가기

Transaction3

[SEQUELIZE] create와 bulkCreate 현재 코드 여러곳에서 create / bulkCreate를 사용하고 있었습니다. 많은코드가 얽혀있는 상태에서 항상 특정 부분에서 문제가 생기는데 이때까지는 생각 못했지만... bulkCreate를 트랜잭션까지 연결해서 진행하다보니 시간이 계속 걸림에 따라 트랜잭션 오류가 발생했습니다. 생각을 해보니 많은 양의 데이터를 다루게 될때const arr = [];const transaction = await db.seqeulize.transaction();for(let i = 0 ; i  이런 식으로 보게되면 create는 하나하나 진행하기때문에 개별적으로 transaction을 잡고 순서대로 처리하기에 타임아웃에 덜 민감하지만, bulkCreate는 대량의 데이터를 한번에 묶어서 진행하기때문에 더 민감할 수 .. 2024. 11. 4.
[JS] sequelize transaction commit, rollback 잘못 걸었을때 지난 글에서 sequelize transaction 을 직접 거는글을 올려놨었는데요. 반대로 commit, rollback 이 잘못넣었거나 오류가 생겼을때 현상을 알려드릴려고 합니다. 1. commit 후 rollback 이 붙어있는 경우 const db = require('../../모델 위치'); exports.test = async (req, res) => { const transaction = await db.sequelize.transaction(); await transaction.commit(); await transaction.rollback(); return res.json(200); }; 이런경우 나오는 에러는 다음과 같습니다. Error: Transaction cannot be rol.. 2023. 11. 1.
[JS] sequelize transaction 직접 걸기 sequelize 가 설치되었다는 가정하에 작성되었습니다. transaction을 직접 걸어두는게 아니면 DB 설정에 따라 자동적으로 잡힙니다. 보통은 Auto Commit 형태로 되어있습니다. 근데 Auto Commit이 아닌 직접 거는 상황을 보여드립니다. 일단 Transaction은 보통 수행하는 작업의 단위를 묶기 위해서 사용하죠. Transaction을 사용하게 됐을때 제가 느낀 장단점은 [장점] 1. 한번에 묶어서 수행하기 때문에 확인하기 편함 2. 서버나 타 이슈로 인해 에러 발생시 한꺼번에 롤백이 되기때문에 강제로 commit 될 위험 없음 3. 원하는 곳에서 commit 할 수 있도록 설정 가능 [단점] 1. transaction 적용하면서 속도가 조금 느려짐 -> 속도는 transact.. 2023. 10. 29.