이번 포스팅은 사내에서 MySQL 관련 내용 발표를 위해 Real MySQL(http://wikibook.co.kr/real-mysql/) 서적을 기반으로 학습하고 이해한 내용을 정리하는 포스팅이다. 포스팅에서는 주로 InnoDB 스토리지 엔진을 기준으로 설명할 예정이다. MySQL 역시 내용이 많기 때문에 시리즈로 나눠서 정리할 예정이다.조인의 종류조인의종류는 크게 INNER JOIN 과 OUTER JOIN 으로 구분할 수 있고, OUTER JOIN 은 다시 LEFT OUTER JOIN 과 RIGHT OUTER JOIN 그리고 FULL OUTER JOIN 으로 구분 할 수 있다. 조인의 처리에서 어느 테이블을 먼저 읽을지를 결정하는 것은 상당히 중요하다, 그에 따라 처리할 작업량이 상당히 달라진다. I..
이번 포스팅은 사내에서 MySQL 관련 내용 발표를 위해 Real MySQL(http://wikibook.co.kr/real-mysql/) 서적을 기반으로 학습하고 이해한 내용을 정리하는 포스팅이다. 포스팅에서는 주로 InnoDB 스토리지 엔진을 기준으로 설명할 예정이다. MySQL 역시 내용이 많기 때문에 시리즈로 나눠서 정리할 예정이다.MySQL 주요 처리 방식이후 설명하는 내용중에 풀 테이블 스캔을 제외한 나머지는 모두 스토리지 엔진이 아니라 MySQL 엔진에서 처리되는 내용이다. 또한 MySQL 엔진에서 부가적으로 처리하는 작업은 대부분 성능에 미치는 영향력이 큰데, 안타깝게도 모두 쿼리의 성능에 저하시키는 데 한 몫하는 작업이다. 스토리지 엔진에서 읽은 레코드를 MySQL 엔진이 아무런 가공 작..
이번 포스팅은 사내에서 MySQL 관련 내용 발표를 위해 Real MySQL(http://wikibook.co.kr/real-mysql/) 서적을 기반으로 학습하고 이해한 내용을 정리하는 포스팅이다. 포스팅에서는 주로 InnoDB 스토리지 엔진을 기준으로 설명할 예정이다. MySQL 역시 내용이 많기 때문에 시리즈로 나눠서 정리할 예정이다.실행 계획 분석MySQL 에서 쿼리의 실행 계획을 확인하려면 EXPLAIN 명령을 사용하면 된다. EXPLAIN 명령은 다음과 같이 EXPLAIN 키워드 뒤에 확인하고 싶은 SELECT 쿼리 문장을 적으면 된다. 실행계획의 결과로 여러 가지 정보가 표 형태로 표시된다. 실행 계획중에는 possible_keys 항목과 같이 내용은 길지만 거의 쓸모가 없는 항목도 있다.다..
이번 포스팅은 사내에서 MySQL 관련 내용 발표를 위해 Real MySQL(http://wikibook.co.kr/real-mysql/) 서적을 기반으로 학습하고 이해한 내용을 정리하는 포스팅이다. 포스팅에서는 주로 InnoDB 스토리지 엔진을 기준으로 설명할 예정이다. MySQL 역시 내용이 많기 때문에 시리즈로 나눠서 정리할 예정이다.InnoDB 의 기본 잠금 방식SELECTREPEATABLE-READ 이하의 트랜잭션 격리 수준에서 InnoDB 테이블에 대한 SELECT 쿼리는 기본적으로 아무런 잠금을 사용하지 않는다.(http://idea-sketch.tistory.com/45) REPEATABLE-READ보다 더 높은 격리 수준인 SERIALIZABLE 격리 수준에서는 모든 SELECT 쿼리에 ..
이번 포스팅은 사내에서 MySQL 관련 내용 발표를 위해 Real MySQL(http://wikibook.co.kr/real-mysql/) 서적을 기반으로 학습하고 이해한 내용을 정리하는 포스팅이다. 포스팅에서는 주로 InnoDB 스토리지 엔진을 기준으로 설명할 예정이다. MySQL 역시 내용이 많기 때문에 시리즈로 나눠서 정리할 예정이다. 넥스트 키 락(갭 락)에 대해서 조금더 알아보자. 이전 포스팅(http://idea-sketch.tistory.com/45)을 준비하면서 잘 이해가 안갔던 부분이 넥스트 키 락(특히 갭 락)인데 다른 포스팅들을 봐도 다들 똑같은 글만 있을뿐 자세한 설명에 대해서 찾기가 어려웠다... 그래서 직접 테스트를 해보면서 어떻게 넥스트 키 락(갭 락)이 동작하는지에 대해 조금..
이번 포스팅은 사내에서 MySQL 관련 내용 발표를 위해 Real MySQL(http://wikibook.co.kr/real-mysql/) 서적을 기반으로 학습하고 이해한 내용을 정리하는 포스팅이다. 포스팅에서는 주로 InnoDB 스토리지 엔진을 기준으로 설명할 예정이다. MySQL 역시 내용이 많기 때문에 시리즈로 나눠서 정리할 예정이다.트랜잭션트랜잭션은 논리적인 작업셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상(Partial update)이 발생하지 않게 만들어서 작업의 완전성을 보장해주기 위한 기능이다. 잠금(Lock) 과 트랜잭션은 서로 비슷한 개념 같지만 사실 잠금은 동시성(https://ko.wikipedia.org/wiki/ACID..
이번 포스팅은 사내에서 MySQL 관련 내용 발표를 위해 Real MySQL(http://wikibook.co.kr/real-mysql/) 서적을 기반으로 학습하고 이해한 내용을 정리하는 포스팅이다. 포스팅에서는 주로 InnoDB 스토리지 엔진을 기준으로 설명할 예정이다. MySQL 역시 내용이 많기 때문에 시리즈로 나눠서 정리할 예정이다.해시 인덱스해시 인덱스는 동등 비교 검색에는 최적화돼 있지만 범위를 검색한다거나 정렬된 결과를 가져오는 목적으로는 사용 할 수 없다. 해시 인덱스는 주로 메모리 기반의 테이블에서 사용되고 InnoDB 스토리지 엔진에서는 해시 인덱스를 지원하지 않지만 기본적인 특성은 알아보자. 구조 및 특성해시 인덱스의 장점으로는 실제 키값과는 관계없이 인덱스 크기가 작고 검색이 빠르고..
이번 포스팅은 사내에서 MySQL 관련 내용 발표를 위해 Real MySQL(http://wikibook.co.kr/real-mysql/) 서적을 기반으로 학습하고 이해한 내용을 정리하는 포스팅이다. 포스팅에서는 주로 InnoDB 스토리지 엔진을 기준으로 설명할 예정이다. MySQL 역시 내용이 많기 때문에 시리즈로 나눠서 정리할 예정이다. 인덱스 인덱스는 데이터의 저장(INSERT, UPDATE, DELETE) 의 성능을 희생하고 그 대신에 데이터의 읽기 속도를 높이는 기능이다. 인덱스를 알고리즘 별로 구분하면 아래와 같다. B-Tree 알고리즘가장 일반적으로 사용되는 알고리즘으로 컬럼을 변형하지 않고, 원래의 값을 이용해 인덱싱하는 알고리즘이다. Hash 알고리즘컬럼의 값으로 해시 값을 계산해서 인덱..
오랜만에 DB 포스팅이다. 이번 포스팅은 사내에서 MySQL 관련 내용 발표를 위해 Real MySQL(http://wikibook.co.kr/real-mysql/) 서적을 기반으로 학습하고 이해한 내용을 정리하는 포스팅이다. 포스팅에서는 주로 InnoDB 스토리지 엔진을 기준으로 설명할 예정이다. MySQL 역시 내용이 많기 때문에 시리즈로 나눠서 정리할 예정이다. MySQL 의 전체 구조MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진으로 구분해서 볼 수 있다. MySQL 엔진MySQL 엔진은 클라이언트로부터 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 SQL 파서 및 전처리기 그리고 쿼리의 최적화를 위한 옵티마이저가 중심을 이루며 DBMS의 두뇌에 해당하는 처리를 수행한다. 스토리지 엔진스토..
지난번 포스팅(http://idea-sketch.tistory.com/30)에 이어서 이번에는 Second level cache 이다. - Second level cache - Second level cache 는 Local cache 와는 다르게 끄고 킬 수 있다. cache를 키는 방법은 Config 설정하는 곳에서 cacheEnabled 를 TRUE로 설정해주면 된다. 하지만 이설정만 켰다고해서 자동으로 캐싱이 되지는 않는다. 이 다음 해줘야 할 작업은 MyBatis 에서 사용하는 Mapper에 Cache 관련 설정을 해줘야한다.mybatis-config.xml xxxMapper.xml-Mapper에 설정을 안해주면 해당 Mapper에서 정의된 Statement는 캐싱이 되지 않는다. Sizesiz..
- Total
- Today
- Yesterday
- mysql lock
- MySQL 인덱스
- 루비
- db
- next key lock
- 메타프로그래밍
- 루비 메타프로그래밍
- Pair-programming
- 넥스트 키 락
- Autoloading
- 되추적
- 갭 락
- ruby
- ruby meta programming
- 페어 프로그래밍
- MySQL
- 인덱스
- 엘라스틱서치 기초
- innoDB lock
- InnoDB
- 루비 상수
- dead lock
- metaprogramming
- autoload_paths
- lock
- 페어프로그래밍
- Elasticsearch Cluster
- MySQL 족보
- gap lock
- 트랜잭션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |