DB 6

멀티 PK일 경우 순서가 중요하다..

1. PK 컬럼 순서가 중요하다. 인덱스 구성에서 의도하지 않은 순서의 Primary Key Unique Index가 생성된다. 많은 인덱스가 생성되므로 입력/수정/삭제 시 불필요한 내부 작업이 증가해 성능에 악영향을 미친다. 1.1. PK 구성과 인덱스 이용 pk 순서를 잘못했을 경우 index가 먹지 않아 full scan을 하게 된다. create table multi_pk_test2 ( student_number varchar(255) not null, test_year datetime not null, semester int not null, test_a varchar(255) null, test_b varchar(255) null, PRIMARY KEY (student_number, test_..

데이터베이스 2022.11.23

12장 쿼리 종류별 잠금(1)

용어 정리 배타적 잠금 - 내가 쓰기를 하는 동안 남들이 쓰지 못하게 하는 것이다. 공유 잠금 - 내가 읽는 동안 남들이 내가 읽고 있는 데이터를 변경하거나 삭제하지 못하게 하는 것이다. 트랜잭션이란 논리적인 작업셋의 완전성을 보장하기 위한 기능이고, 잠금이란 동시성을 제어하기 위한 기능 InnoDB의 기본 잠금 방식 InnoDB에서는 각 쿼리의 패턴별로 사용하는 잠금이 다르다. https://balldev.tistory.com/58 트랜잭션 격리 수준 이전글에 연장입니다.~ https://balldev.tistory.com/57 트랜잭션과 잠금 트랜잭션이란? 트랜잭션은 작업의 완전성을 보장해 주는 것이다. 즉, 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하 balldev.tistory.com..

책/real mysql 2022.01.23

10장 파티션

파티션을 사용하는 이유 한 테이블이 너무 커서 인덱스의 크기가 물리적인 메모리보다 훨씬 크거나, 데이터 특성상 주기적인 삭제 작업이 필요한 경우 등이 파티션이 필요한 대표적인 예이다. 단일 INSERT와 단일 또는 범위 SELECT의 빠른 처리 update, delete 처리를 위해 대상 레코드를 검색하려면 인덱스는 필수적 인덱스의 워킹 셋이 실질적인 물리 메모리보다 크다면 쿼리 처리가 느려짐 파티셔닝을 안하면 인덱스가 커지고 물리적인 메모리 공간도 많이 필요해짐 → 효율적 관리를 위해 필요 데이터의 물리적인 저장소를 분리 파티션을 통해 파일의 크기를 조절하거나 각 파티션별 파일들이 저장될 위치나 디스크를 구분해서 지정해서 해결 가능 하지만 mysql에서는 인덱스를 순차적으로 생성하는 방법은 아직 허용되..

책/real mysql 2022.01.23

확장 기능

전문검색 - MySQL 의 Full Text Search(이하 FTS) LIKE같은 패턴 검색은 인덱스를 사용하지 못함 또한 LIKE를 여러 필드 (예를 들어, title과 keyword 등)에 동시에 적용하면서 여러 단어를 검색어로 전달하면 쿼리가 복잡해지기도 한다. 정규표현식도 마찬가지로 인덱스를 거치지 않고 풀 스캔(Full Scan)이 일어나기 때문에 느리다. 이런 전문 검색은 일부만 검색하는 경우에도 전용 인덱스를 사용하기 때문에 빠른 검색이 가능 FULLTEXT 검색 방식 **자연어 검색(natural search)**검색 문자열을 단어 단위로 분리한 후, 해당 단어 중 하나라도 포함되는 행을 찾는다. **불린 모드 검색(boolean mode search)**검색 문자열을 단어 단위로 분리한..

책/real mysql 2022.01.23

5장. 인덱스

디스크 읽기 방식 데이터베이스의 성능 튜닝은 어떻게 디스크 I/O를 줄이느냐가 관건인 것들이 상당함 저장 매체 DAS 컴퓨터의 본체와 달리 디스크만 있음 모두 SATA SAS와 같은 케이블로 연결되어서 사용자에게는 같은 방식으로 사용됨 하지만 반드시 하나의 컴퓨터 본체에만 연결해서 사용 가능 → 컴퓨터가 동시에 공유하는 것이 불가능 NAS TCP/IP를 통해 연결됨 여러 컴퓨터에서 공유해서 사용할 수 있는 저장 매체지만 SATA/SAS 방식에 비해 속도가 느림 데이터 비용으로는 사용 X SAN 대용량의 스토리지 공간 여러 컴퓨터 사용 가능, 광케이블로 연결돼서 빠름 하지만 고가의 구축 비용 SSD 원판을 제거하고 메모리를 장착 → 기계적으로 회전 X 빠르게 데이터 읽고 쓰기 가능, 전원이 공급되지 않아도..

책/real mysql 2021.12.30

mysql 아키텍처

mysql 서버는 크게 mysql 엔진과 스토리지 엔진으로 구분 mysql 엔진 클라이언트로부터 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 sql파서 및 전처리기, 쿼리의 최적화된 실행을 위한 옵티마이저가 중심 sql 문장을 분석, 최적화 스토리지 엔진 디스크 스토리지에 저장하거나 디스크 스토리지로부터 데이터를 읽어오는 부분은 스토리지 엔진이 전담 쓰기 또는 읽기를 요청 → handler 요청 , 여기서 사용하는 api → handler api mysql서버는 프로세스 기반이 아니라 스레드 기반 포그라운드 스레드 서버에 접속된 클라이언트 수 만큼 존재 백그라운드 스레드 innoDB 쓰기 작업은 지연 가능 읽기 작업은 지연 불가능!! 대부분 DBMS는 쓰기 작업을 버퍼링해서 일괄 처리하는 기능이 탑재돼..

책/real mysql 2021.12.21