본문 바로가기

Mysql36

Mysql 엔진 잠금(Lock) Mysql 엔진 잠금(Lock) 글로벌 락- FLUSH TABLES WITH READ LOCK 명령으로만 획득 가능(해제 UNLOCK TABLES;)- 하나의 연결 세션에서 글로벌 락을 획득하면 다른 세션에서 SELECT을 제외한 대부분의 DDL, DML 문장이 대기- 영향은 Mysql 서버 전체- 대상 테이블, 스키마가 달라도 동일하게 영향을 끼침- 여러 스키마에 존재하는 MyISAM이나, MEMORY에서 일관된 백업을 받아야 할 때 사용- 우선 처리되고 있는 트랜잭션이 있다면 글로벌 락이 대기 상태로 기다림테이블 락- 테이블 단위로 설정되는 잠금, 명시적 또는 묵시적으로 특정 락을 획득할 수 있다.- LOCK TABLES 테이블명 [READ | WRITE]를 통해 획득 - MyISAM, InnoDB .. 2018. 10. 12.
기본 오류 처리 123456789DECLARE EXIT HANDLER FOR SQLEXCEPTIONBEGIN -- default exception handler ROLLBACK; SET @@SQL_SAFE_UPDATES=1; #기본 키로 update, delete 가능 유무 RESIGNAL; END; select * from `user`; cs signal 정보(오류 정보 보내는 방법인데, 아직까지 사용하지 않음)# https://dev.mysql.com/doc/refman/5.5/en/signal.html 2018. 10. 12.
저장소 특징 InnoDB 스토리지 엔진 특성(MS-SQL과 거의 유사) 기본 키에 의한 순차 저장 잠금이 필요 없는 일관된 읽기 4단계 읽기 단계로 인한 레코드(ROW 레벨) 락 제공 - 데이터 변경 전 Undo 로그 사용 - READ-UNCOMMITTED - READ-COMMITTED - REPEATABLE-READ-COMMITTED 외래 키 지원(물리적 개념은 알지만 거의 사용 안해봄) 자동 데드락 감지 자동화된 장애 복구 데이터 파일 손상 시, 강제 리커버리 하는 듯 MyISAM - OS의 캐시 기능 사용, 캐시 우선 순위 밀릴 수도 있음, 당연히 그러면 느려짐 MEMORY - 테이블 용량의 최대 크기를 가지고 있다. - 고정 길이 컬럼만 사용 VARCHAR = CHAR와 동일하게 공간 할당 - BLOB, TE.. 2018. 10. 12.
mysql sum if 사용 아이템 구매 일자별로 통계 확인 123456789SELECT date(`create_time`) as `create_time` , sum(if(`reward_type` = 3, 1, 0)) as `heart_count` , sum(if(`reward_type` = 5 and `item_type` = 1, 1, 0)) as `straight_line` , sum(if(`reward_type` = 5 and `item_type` = 2, 1, 0)) as `range` , sum(if(`reward_type` = 5 and `item_type` = 3, 1, 0)) as `choice` , sum(if(`reward_type` = 5 and `item_type` = 4, 1, 0)) as `one_block.. 2018. 10. 2.