포스트

2021-09-15-TIL

MySQL

How to rollback last query

MySQL은 기본적으로 autocommit 모드로 동작한다. 트랜잭션을 따로 열지 않으면 문장 하나하나가 START TRANSACTION과 COMMIT으로 감싸진 것처럼 실행되고, 끝난 문장은 ROLLBACK으로 되돌릴 수 없다. 그래서 이미 실행한 UPDATE나 DELETE를 취소하는 명령은 없다. 되돌리려면 백업이나 바이너리 로그에서 복구해야 한다.

위험한 수정을 할 때는 실행 전에 트랜잭션을 먼저 연다. 결과를 확인하고 나서 COMMIT이나 ROLLBACK을 고르면 된다.

1
2
3
4
START TRANSACTION;
UPDATE orders SET status = 'CANCELED' WHERE id = 42;
SELECT * FROM orders WHERE id = 42;  -- 결과 확인
ROLLBACK;                            -- 또는 COMMIT

이 방법도 만능은 아니다. 데이터베이스나 테이블을 만들고 지우고 바꾸는 DDL은 롤백되지 않는다. 트랜잭션 중간에 DDL을 실행하면 그 앞의 변경까지 되돌릴 수 없게 될 수 있다.

  • https://stackoverflow.com/questions/2839269/how-to-rollback-the-effect-of-last-executed-mysql-query

MySQL backup and restore

mysqldump는 논리 백업 도구다. 테이블 정의와 데이터를 다시 만들어 낼 수 있는 SQL 문으로 덤프하고, 복원은 그 파일을 mysql 클라이언트로 실행하면 된다. InnoDB 테이블이라면 --single-transaction을 붙여서 테이블을 잠그지 않고 한 시점의 일관된 스냅숏을 덤프할 수 있다.

1
2
mysqldump -u user -p --single-transaction mydb > mydb.sql
mysql -u user -p mydb < mydb.sql
  • https://anythingcafe.tistory.com/15
  • https://www.ilifo.co.kr/boards/article/59

Spring

@Scheduled

@Scheduled의 주기 옵션은 세 가지다.

옵션기준예
fixedDelay이전 실행이 끝난 시점부터 잰다@Scheduled(fixedDelay = 5000)
fixedRate이전 실행이 시작된 시점부터 잰다@Scheduled(fixedRate = 5000)
croncron 표현식으로 시각을 지정한다@Scheduled(cron = "0 15 9-17 * * MON-FRI")

작업이 주기보다 오래 걸릴 수 있다면 fixedDelay가 안전하다. 실행 사이에 항상 간격이 보장되기 때문이다. Spring의 cron 표현식은 리눅스 crontab과 달리 초 필드로 시작하는 6개 필드(초 분 시 일 월 요일)를 쓰고, zone 속성으로 타임존을 지정할 수 있다. initialDelay를 주면 첫 실행을 그만큼 늦춘다.

  • https://blog.naver.com/deepplin/220982938616
  • https://huskdoll.tistory.com/819
  • https://seolin.tistory.com/123

Assert

org.springframework.util.Assert는 메서드 인자를 검증하는 유틸리티다. 조건이 맞지 않으면 대부분 IllegalArgumentException을 던지고, Assert.state는 IllegalStateException을 던진다. 설정 오류가 아니라 프로그래머의 실수를 일찍 드러내기 위한 도구다.

1
2
Assert.notNull(userId, "userId must not be null");
Assert.isTrue(amount > 0, "amount must be positive");

Javadoc은 이 클래스가 주로 프레임워크 내부용이고, 더 풍부한 검증 도구가 필요하면 Apache Commons Lang의 Validate나 Guava의 Preconditions를 고려하라고 안내한다.

  • https://eblo.tistory.com/63

UX

  • http://www.yes24.com/Product/Goods/80391112

윌 그랜트의 『UX 원칙』(에이콘출판사) 도서 페이지다.

참고한 자료외부 출처 5

외부 출처

이 글은 저작권자의 CC BY 4.0 라이선스를 따릅니다.

댓글

아직 댓글이 없습니다