MySQL
-
Real MySQL - Global, Session, Dynamic, Static variableMySQL 2017. 8. 5. 11:43
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. - 포스팅에 포함된 Query 결과는 AWS EC2 FreeTier(CentOS7.2) 환경에 MySQL v5.7.17 에서 실행한 결과를 포함하였습니다. 실행환경에 따라 Query 실행시간이나 RDBMS 실행계획이 다를 수 있습니다. - 샘플 코드 dump 파일 적용안내 : http://cafe.naver.com/realmysql - 샘플 코드 dump 파일 경로 : http://github.com/wikibook/realmysql/archive/master.zip 서버 설정 - MySQL 서버는 단 하나의 설정 파일만 사용한다. (..
-
트랜잭션 2PC (Two Phase Commit)MySQL 2017. 8. 2. 21:31
새로운 프로젝트를 진행하면서 트랜잭션 2PC 개념에 대해 살펴보라는 피드백을 받고 2PC에 조사하고 정리한 내용을 포스팅 하고자한다. 우선, 트랜잭션 2PC를 살펴보기 전에 트랜잭션 개념부터 정리하자. 트랜잭션 ( Transaction, Tx ) 트랜잭션이란 시작과 끝이 있는 독립적인 일 여러 개를 하나로 묶어놓고 그 중 어느 하나라도 실패하면 모든 일들을 시작하기 전 상태로 돌리는 하나의 작업 단위를 말한다. 여러 개의 일을 각각으로 나눠서 처리하지만, 만약 한가지 일이라도 실패한다면 그룹화된 여러 개의 일에 적용되었던 부분들을 취소시키고 이전 상태로 되돌린다는 의미이다. 은행간의 이체를 예를 들어보자. A가 B에게 송금을 하는 과정은 크게 보면 2개의 단계로 나눠질 수 있다. 1) A의 계좌에서 송금..
-
Real MySQL [7-22] 쿼리 작성 및 최적화 - AUTO_INCREMENTMySQL 2017. 4. 6. 19:51
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. - 포스팅에 포함된 Query 결과는 AWS EC2 FreeTier(CentOS7.2) 환경에 MySQL v5.7.17 에서 실행한 결과를 포함하였습니다. 실행환경에 따라 Query 실행시간이나 RDBMS 실행계획이 다를 수 있습니다. - 샘플 코드 dump 파일 적용안내 : http://cafe.naver.com/realmysql - 샘플 코드 dump 파일 경로 : http://github.com/wikibook/realmysql/archive/master.zip INSERT INSERT와 AUTO_INCREMENT MySQL 에서..
-
Real MySQL [7-21] 쿼리 작성 및 최적화MySQL 2017. 4. 4. 22:00
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. - 포스팅에 포함된 Query 결과는 AWS EC2 FreeTier(CentOS7.2) 환경에 MySQL v5.7.17 에서 실행한 결과를 포함하였습니다. 실행환경에 따라 Query 실행시간이나 RDBMS 실행계획이 다를 수 있습니다. - 샘플 코드 dump 파일 적용안내 : http://cafe.naver.com/realmysql - 샘플 코드 dump 파일 경로 : http://github.com/wikibook/realmysql/archive/master.zip LOCK IN SHARE MODE와 FOR UPDATE InnoDB ..
-
Real MySQL [7-20] 쿼리 작성 및 최적화 - 집합연산MySQL 2017. 4. 1. 21:28
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. - 포스팅에 포함된 Query 결과는 AWS EC2 FreeTier(CentOS7.2) 환경에 MySQL v5.7.17 에서 실행한 결과를 포함하였습니다. 실행환경에 따라 Query 실행시간이나 RDBMS 실행계획이 다를 수 있습니다. - 샘플 코드 dump 파일 적용안내 : http://cafe.naver.com/realmysql - 샘플 코드 dump 파일 경로 : http://github.com/wikibook/realmysql/archive/master.zip 집합연산 조인이 테이블의 칼럼을 연결하는 것이라면 집합 연산은 여러 ..
-
Real MySQL [7-19] 쿼리 작성 및 최적화 - 서브쿼리 (2)MySQL 2017. 3. 31. 20:28
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. - 포스팅에 포함된 Query 결과는 AWS EC2 FreeTier(CentOS7.2) 환경에 MySQL v5.7.17 에서 실행한 결과를 포함하였습니다. 실행환경에 따라 Query 실행시간이나 RDBMS 실행계획이 다를 수 있습니다. - 샘플 코드 dump 파일 적용안내 : http://cafe.naver.com/realmysql - 샘플 코드 dump 파일 경로 : http://github.com/wikibook/realmysql/archive/master.zip SELECT 절에 사용된 서브 쿼리 SELECT 절에 사용된 서브 쿼..
-
Real MySQL [7-18] 쿼리 작성 및 최적화 - 서브쿼리MySQL 2017. 3. 28. 21:10
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. 서브 쿼리 서브 쿼리를 사용하면 단위 처리별로 쿼리를 독립시킬 수 있다. 조인처럼 여러 테이블을 섞어두는 형태가 아니라서 쿼리의 가독성도 높아지고, 복잡한 쿼리도 손쉽게 작성할 수 있다. 하지만 MySQL 서버는 서브 쿼리를 최적으로 실행하지 못할 때가 많다. 가장 대표적으로 FROM 절에 사용되는 서브 쿼리나 WHERE 절의 IN (subquery) 구문은 가장 최신 버전 에서도 그다지 효율적이지 않다. 서브 쿼리는 외부 쿼리에서 정의된 칼럼을 참조하는지 여부에 따라 상관 서브 쿼리와 독립 서브 쿼리로 나눌 수 있다. 상관 서브 쿼리..
-
Real MySQL [7-17] 쿼리 작성 및 최적화 - ORDER BYMySQL 2017. 3. 27. 20:56
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. ORDER BY ORDER BY 절이 사용되지 않는 SELECT 쿼리의 결과의 정렬순서는 다음과 같다. - 인덱스를 사용한 SELECT의 경우에는 인덱스의 정렬된 순서대로 레코드를 가져온다. - 인덱스를 사용하지 못하고 풀 테이블 스캔을 실행하는 SELECT의 경우, MyISAM은 테이블 저장된 순서대로 가져오는데, 순서가 INSERT 순서를 이믜하는 것은 아니다. 레코드가 삭제되면서 빈 공간이 생기면 INSERT 되는 레코드는 항상 테이블의 마지막이 아니라 빈 공간 이있으면 빈 공간에 저장되기 때문이다. InnoDB의 경우 항상 프라..