일 년 전 · 이진영 님의 질문
안녕하세요 HardDelete를 하는 과정속에서 궁금한 점이 생겨 이렇게 질문을 남깁니다.
현재 저는 프로젝트를 진행하고 있습니다. hard delete 특정 연관관계 칼럼까지 삭제를 해야 하는데 이에 있어 보통 어떻게 삭제하는지 궁금합니다. 저희는 프로젝트 용이기 때문에 매 년마다 HardDelete를 구현을 담당하고 있습니다.(내부적인 회의를 통해서 hard delete를 구현하기로 함) 근데 구현에 있어서는 스케줄러를 통해서 삭제를 할 예정이고(코드 참고) @Scheduled(cron = "0 */2 * * * ?") // test cron public void teamDisbandCheckAndDelete() { List<Long> teamIds = teamRepository.findIdsByIsDeleteIsTrue(); teamRepository.deleteAll(teamIds); // cascade remove } 할 생각이었지만 이는 성능상 이슈가 있을 것이라고 생각합니다. 그러한 이유는 팀을 하나만 삭제하는데 다른 연관 관계 테이블은 최소 10배가 최대 100배 넘는 데이터를 가지고 있을 것이라고 예상합니다. 이러한 관점에서 봤을 때 성능상 이슈가 있을 것이라고 예상하고 배치 delete를 구현하려고 했습니다. 근데 만약 이렇게 배치 delete를 아래와 같이 진행을 하려고 합니다.(예시 코드) // 연관된 데이터 삭제 // (예: TeamParticipants, SimpleSchedule, RepeatSchedule 등) teamParticipantsRepository.deleteByTeamIdIn(ids); simpleScheduleRepository.deleteByTeamIdIn(ids); repeatScheduleRepository.deleteByTeamIdIn(ids); // Team 엔터티 삭제 teamRepository.deleteAllByIdIn(ids); 근데 이렇게 삭제하는 게 최선인지도 궁금합니다. 여기서 문제점은 만약 다른 엔티티(TeamParticipants 등등) 삭제 시 제약조건 오류가 났을 때 그렇다면 그 해당 칼럼도 삭제를 해줘야 하는데 이렇게 구현하는 게 맞나?? 싶어서 이렇게 글을 남깁니다.
개발자
#java
#spring
#batch
#delete
#jpa
답변 0
댓글 0
추천해요 1
보충이 필요해요 1
조회 63
2년 전 · 김도열 님의 새로운 댓글
nysql에서 외래키 참조
syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[CONSTRAINT fk_name] FOREIGN KEY(name) REFERENCES uesr_into(name) ON UPD' at line 5 CREATE TABLE a_check( id MEDIUMINT AUTO_INCREMENT PRIMARY KEY, name MEDIUMTEXT not null, age MEDIUMINT not null, [CONSTRAINT fk_name] FOREIGN KEY(name) REFERENCES uesr_into(name) ON UPDATA CASCADE ); 무슨 에러에요? 데이터가 있어야 한다는 걸까요?
개발자
#mysql
답변 1
댓글 1
보충이 필요해요 2
조회 57
2년 전 · 김병수 님의 답변 업데이트
mysql에서의 외래키
CREATE TABLE a_check( id INT INTEGER AUTO_INCREMEnT PRIMART KEY, name MEDIUMBLO not null, age MEDIUMINT not null [CONSTRAINT CASCADE] FOREIGN KEY(name) REFERENCES uesr_into(name) ON UPDATA ) 여기에다가 age 의 외래키를 더 추가할건데 추가할 수있나요?
개발자
#mysql
답변 1
댓글 0
보충이 필요해요 1
조회 86
2년 전 · 고다영 님의 새로운 답변
sql에서 cascade는 잘 안쓰시나요?
혹시 sql에서 cascade는 잘 안쓰시나요? cascade로 만들어볼까 하는데 로직 꼬이기 쉽다고 해서요.. 자잘한 데이터들이 많아서 안쓰는 쪽이 나을 것 같기도 하네요..
개발자
#sql
#cascade
답변 2
댓글 0
조회 173