etc

·etc/Book
9장 옵티마이저와 힌트MySQL 서버로 요청된 쿼리는 결과는 동일하지만 내부적으로 결과를 만들어내는 방법은 다양하다. 이런 방법들 중 최적의 방법을 선택해야하는데, 이를 옵티마이저가 수행한다.MySQL 에서는 EXPLAIN 이라는 명령으로 쿼리의 실행 계획을 확인할 수 있다.9.1 개요쿼리 실행 절차는 크게 3단계로 나눌 수 있다.사용자로부터 요청된 SQL 문장을 잘게 쪼개 서버가 이해할 수 있는 수준으로 분리한다.SQL의 파싱 정보를 확인하며, 어떤 테이블로부터 읽고 인덱스를 사용해 테이블을 읽을 지 선택한다.두 번째 단계에서 결정된 읽기 순서나 인덱스를 이용해 스토리지 엔진으로부터 데이터를 가져온다.첫 번째 단계를 SQL 파싱이라 하며, SQL 파서 라는 모듈로 처리한다. 문법적인 오류는 이 단계에서..
·etc/Book
8장 인덱스8.4 R-Tree 인덱스2차원 공간 개념의 값 인덱스다. MySQL 의 공간 확장에는 세 가지 기능이 포함되어 있다.공간 데이터를 저장할 수 있는 데이터 타입공간 데이터의 검색을 위한 공간 인덱스 (R-Tree 알고리즘)공간 데이터의 연산 함수 (거리 또는 포함 관계의 처리)구조 및 특성대표적으로 Point, Line, Polygon, Geometry 타입을 지원한다. 마지막 Geometry 타입은 나머지 타입의 슈퍼 타입으로 모두 저장할 수 있다.  R-Tree 알고리즘을 이해하기 위해서는 MBR 이라는 개념이 필요하다. MBR 은 Minimum Bounding Rectangle 로 해당 도형들을 감싸는 최소 크기의 사각형을 의미한다.  [5-20] 같은 도형 (공간 데이터) 가 있다고 해..
·etc/Book
7장 데이터 암호화데이터 파일에서만 제공하다 이후 리두, 언두 로그 등 모두 암호화 기능을 지원한다.이는 보안 감사에서 필수적인 요소이다.7.1 MySQL 서버의 데이터 암호화데이터베이스 서버와 디스크 사이의 데이터를 읽고 쓰는 지점에서 암호화, 복호화를 수행한다. 즉, InnoDB 의 I/O 레이어에서만 실행된다. 이 방식을 TDE(Transparent Data Encryption) 이라 한다. 사용자와 MySQL 내부에서 아무런 차이가 없다. TDE 에서 암호화 키는 키링 플러그인에 의해 관리된다. 서버는 마스터 키와 테이블스페이스 키를 가진다. 암호화된 테이블이 생성될 때마다 해당 테이블을 위한 임의의 테이블스페이스 키를 발급한다. 그리고 마스터 키를 이용해 테이블스페이스 키를 암호화해서 데이터 파..
·etc/Book
5장 트랜잭션과 잠금 어떻게보면 데이터베이스에서 가장 중요한 부분이라고 생각한다.동시성에 영향을 미치는 잠금과 트랜잭션, 트랜잭션의 격리 수준에 대해서 살펴본다. 5.1 트랜잭션  트랜잭션은 작업의 완전성을 보장하는 것이다. 논리적 작업 셋을 모두 완벽하게 처리하거나 실패 시 원 상태로 복구해 일관성을 유지하는 기능이다. 즉, 데이터의 정합성을 보장한다.  트랜잭션은 꼭 여러 개의 쿼리가 조합되는 개념은 아니다. 논리적인 작업 셋 자체가 100% 적용되거나 0% 적용되는 것을 보장하는 것이다.  데이터베이스에 PK 가 1 이 이미 존재할 경우 하나의 쿼리에서 1, 2, 3 을 삽입해보자.MyISAM, MEMORY 는 중복이 발생하는 1 을 제외하고 2, 3 이 삽입된다.InnoDB 는 중복이 발생했기에 ..
·etc/Book
4.2 InnoDB 스토리지 엔진 아키텍처InnoDB 는 MySQL 에서 사용할 수 있는 스토리지 엔진 중 거의 유일하게 레코드 기반 잠금을 제공한다즉, 높은 동시성 처리가 가능하고 안정적이며 성능이 뛰어나다프라이머리 키 클러스터링모든 테이블은 프라이머리 키를 기준으로 클러스터링되어 저장된다외래 키 지원MyISAM 이나 MEMORY 테이블은 불가능부모, 자식 테이블에서 해당 칼럼에 인덱스 생성이 필요변경 시 부모, 자식 테이블에서 해당 데이터를 확인데드락 가능성도 존재MVCC (Multi Version Concurrency Control)레코드 레벨의 트랜잭션을 지원하는 DBMS 가 지원하는 기능이다잠금을 사용하지 않는 일관된 읽기를 제공하는 것이 목적하나의 레코드에 여러 버전이 동시에 관리된다는 의미U..
·etc/Book
4장 아키텍처MySQL 서버는 Mysql 엔진과 스토리지 엔진으로 구별할 수 있다.4.1 MySQL 엔진 아키텍처MySQL 엔진의 쿼리 실행기에서 데이터를 쓰거나 읽어야 할 때는 각 스토리지 엔진에 쓰기 또는 읽기를 요청하는데, 이러한 요청을 핸들러 요청이라 한다MySQL 은 스레드 기반으로 동작포그라운드 스레드MySQL 서버에 접속된 클라이언트의 수 만큼 존재한다클라이언트가 요청하는 쿼리 문장을 처리한다커넥션을 종료하면 스레드는 스레드 캐시로 되돌아간다데이터를 데이터 버퍼나 캐시로부터 가져오며, 디스크의 데이터나 인덱스 파일로부터 데이터를 읽어와 작업을 처리한다백그라운드 스레드로그를 디스크로 기록하는 스레드버퍼의 데이터를 디스크로 내려쓰는 작업을 처리하는 쓰기 쓰레드쓰기 작업을 버퍼링해서 일괄 처리하는..
·etc/Book
서버 개발자를 희망하며 CS 지식을 기반으로 근거있는 코드를 짜기 위해서는 현재 데이터베이스에 대한 지식이 제일 중요하다고 생각한다. 토스에서도 오라클 대신 MySQL 을 사용하는 것으로 알고 있고 기존에 사용하던 DBMS 도 MySQL 이 가장 익숙하기에 MySQL 을 기반으로 데이터베이스에 대한 지식을 다지고자 한다. 매일 조금씩이라도 책을 읽을 예정이며 장 단위로 마무리되지 않을 수 있다. 공유용이라기보다 기록용임을 참고해주면 좋을 것 같다. 1장. 소개1.1 MySQL 소개MySQL 의 커뮤니티 에디션은 소스코드가 공개된 오픈소스 데이터베이스오라클에 인수되었다!1.2 왜 MySQL 인가?MySQL 의 경쟁력은 가격이나 비용오라클은 너무 비싸다DBMS 의 선택 기준안정성성능과 기능커뮤니티나 인지도2..
·etc/Review
예선은 7월 8일(월)부터 7월 19일(금)까지 주말을 제외한 평일 오전 10시부터 자정까지 진행되었다.이 기간 동안 소프티어 부트캠프를 병행하고 있었기 때문에 2주간 평일에 한 문제씩 문제를 풀었다.  6일차까지는 블로그에도 포스팅도 해놨다.   예선 중에는 위와 같은 이슈도 있었다..    실제 본선은 10문항을 푼 전원을 대상으로 이루어졌다.  나 역시 10문항을 모두 풀었기에 본선 대상자로 한 번 다녀와봤다.   장소는 성수동 앨리스 LAB. 다녀와본적은 없지만 IT 동아리들이나 해커톤할 때 자주 사용되는 장소인 것 같다 총 4문제가 나왔고, 나에게는 다 어려웠다. 하지만 이번 대회의 취지 자체가 나 처럼 PS 에 진심이지 않더라도 본선까지 올라와서 문제를 풀어볼 수 있는 것이라 나에게는 매우 좋..
행복한띠용이
'etc' 카테고리의 글 목록 (2 Page)