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) |
cron | cron 표현식으로 시각을 지정한다 | @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 원칙』(에이콘출판사) 도서 페이지다.
댓글
아직 댓글이 없습니다