본문 바로가기

MySQL FlashBack (5.7 / 8.0) 1. MySQL Flashback 기본적으로 MySQL Community Version 에서는 FlashBack 을 지원하지 않는다. 해당 기능은 MariaDB 10.2.4 이상의 "mysqlbinlog" 바이너리 파일에 탑재된 기능이다. 이는 Binary Log 를 이용하여 FlashBack 을 구현하기때문에, MySQL Community Version 에서도 정상 작동한다. 차후 출시된 MariaDB 의 신규 버전에서는 DDL (DROP, TRUNCATE, ALTER 등) 에 대한 FlashBack 이 지원될 예정이나 현재 버전에서는 지원하지않는다. 또한 이는 MariaDB 에서만 사용될 것이라고 생각된다. MariaDB 10.2.4 Version 이상에서는 Server Parameter 로 "--f..
MySQL Partition Key length 이슈 (in MySQL 5.7) 1. 배경 MySQL 버전 업그레이드를 진행하다가 특정 테이블 생성이 불가능해서 살펴봤었다. 월별 파티션 같은 테이블에서는 파티션 키를 date 관련 타입이 아닌, char 관련 타입으로 가져가는 경우가 있다. 이 때, MySQL 5.7 이전 (MySQL 5.6 이하) 버전에서는 파티션 키의 크기가 파티션 range 의 범위 크기 (ex. '201801' 의 경우 크기는 6) 보다 작아도 파티션 테이블이 만들어 졌다. 그러나 MySQL 5.7 부터는 "ERROR 1654 (HY000): Partition column values of incorrect type" 에러가 발생한다. 2. 테스트 1) MySQL 5.6 > CREATE TABLE `t1` ( `reg_month` varchar(6), `con..
MongoDB Replica Set Protocol Version (PV) 1. Replica Set Protocol Version Replica Set Protocol Version 은 Primary Election 방식과 연관이 있는 수치이다. Replica Set Protocol Version 은 "0" 과 "1" 의 값을 가질 수 있다. 이 글에선 "0"인 경우는 PV0, "1"인 경우는 PV1 이라고 축약하겠다. 참고로 MongoDB 4.0 에서는 Protocol Version 1 만 지원을 한다. 1) PV0 PV0 의 경우 MongoDB 3.0 이전에서 사용하던 replica set 의 프로토콜 방식이다. MongoDB 3.0 version 까지는 각 서버가 인지하고 있는 시각에 의존했기때문에, 각 OS 마다 시각이 차이가 있을 수 있다. 이 문제를 해결하기 위해 ..
MySQL 8.0 binlog_row_value_options (JSON Type option) 1. binlog_row_value_options 해당 parameter 는 MySQL 8.0.3 에 적용된 신규 옵션이다. JSON document 를 update 시 효과적인 binary log 공간을 확보하기위해 도입된 개념이다. default 값은 " " (공백) 값이며, Valid Values 는 "PARTIAL_JSON" 이다. Scope : Global / Session Dynamic : Yes Default : ' ' Valid Values : PARTIAL_JSON 1) MySQL 8.0.3 JSON 데이터 형태는 JSON 필드를 update 시에, 변경되는 key 와 value 가 아닌, JSON 필드의 모든 key : value 형태가 binary log 에 작성되었다. 무조건 모든 ..
MongoDB Authentication Mechanism 1. MongoDB Authentication Mechanism MongoDB 는 Login 시에 authentication mechanism 을 사용하게 되어있다. 여러 Mechanism 들이 사용 가능하지만, 사용되는 방식은 "MONGODB-CR / SCRAM-SHA-1" 크게 두가지이다. 2.x 버전에서는 "MONGODB-CR" 이라는 Mechanism 이 사용되다가, 3.0 version 부터 "SCRAM-SHA-1" 이라는 새로운 Mechanism 이 차용되었다. MongoDB 3.6 version 까지는 "MONGODB-CR" 방식과 "SCRAM-SHA-1" 방식이 모두 사용 가능하지만, MongoDB 4.0 version 부터는 "SCRAM-SHA- 256" 방식이 생기면서 동시에 "MONG..
MySQL 8.0 Atomic DDL (data definition statement) 1. 개요 8.0 에서 새롭게 "Atomic Data Definition Statement Support" 에 대한 내용이 소개 되었다. 2. Atomic DDL 1) 지원되는 DDL 문 Atomic DDL 기능은 DDL 이 지원되는 테이블과 지원되지 않는 테이블 모두 지원한다. table DDL Statement : CREATE / ALTER / DROP ( for databases, tablespaces, tables, indexes, truncate table ) non-table DDL Statement : stored programs, triggers, views, user-defined functions user management Statement : CREATE / ALTER / DROP ..
About Me 안녕하세요. 이 글을 보러오시는 분이 계실지는 모르겠지만, 보신다는건 궁금해하신다는 것이라고 생각하니 그래도 소개를 해야겠습니다.(ㅎㅎ) uzi 는 카카오에 다닐 때 사용하던 닉네임입니다. * kakao (2017.08. ~ 2019. 12 .) - MySQL / MongoDB Engineer * yanolja (2019. 11~ ) - MySQL (Aurora) Engineer 주로 Trouble Shooting 이나 성능에 관한 분석을 좋아합니다. DB 만 보는 것은 아니고, 대부분 OS 랑 엮어서 같이 보는 편입니다. (그래서 Aurora 는 좀 답답하네요 ㅠㅠ) 현재는 MySQL 8.0 에 대한 관심이 많고, MongoDB 또한 좋아합니다. 질문을 주셔도 좋고, 토론 주제를 던져주셔도 정말 좋습니..
MongoDB Plan Cache 1. MongoDB Plan Cache 사용 이유 MongoDB 에서 Execution Plan 은 101건의 document 를 반환하는 Plan 을 사용한다. 이 행위를 쿼리가 요청될 때마다, 매번 하는 것은 사실 비효율적인 행위이다. 그래서 MongoDB 에서는 Plan Cache 라는 개념을 사용한다. 이는 MySQL 의 Query Cache 랑은 다른 개념이다. MongoDB 의 Plan Cache 는 Query Shape (쿼리 패턴이라고 이해해도 좋다.) 별 어떤 Execution Plan 을 사용할지 Caching 해두는 공간이다. Plan Cache 가 처음부터 Plan 을 Caching 을 해두는 것은 아니고, 실제 쿼리가 실행 되었을 때 만들어진 Execution Plan 을 캐싱한다..