일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 실행계획
- group-by
- order-by
- 인덱스
- 중복서브타입
- 요구사항명세서
- 완전서브타입
- 배타서브타입
- 물리모델
- Workbench
- 크롬원격데스크톱
- 제2정규형
- 공통코드
- vue3
- 더미데이터
- mysql
- SQL
- 제4정규형
- 불완전서브타입
- 제1정규형
- 제5정규형
- 함수종속
- 워크벤치
- 데이터통합
- index
- 제3정규형
- 서브타입
- bc정규형
- 정규형
- 샘플데이터
- Today
- Total
목록분류 전체보기 (57)
domsam - IT 기술 블로그

1. 다중 컬럼 (Multi-column) 인덱스두 개 이상의 컬럼으로 구성된 인덱스를 다중 컬럼 인덱스(또는 복합 칼럼 인덱스)라고 한다. 그림(1)에서는 편의상 루트 노드는 생략했으나 실제로 데이터 레코드 건수가 작은 경우에는 브랜치 노드가 없는 경우도 있을 수 있다. 하지만 루트 노드와 리프 노드는 항상 존재한다. 다중 칼럼 인덱스에서 중요한 점은 두 번째 컬럼은 첫 번째 컬럼에 의존해서 정렬돼 있다는 것이다. 즉 두번째 컬럼의 정렬은 첫 번째 컬럼이 똑같은 값일 때 의미가 있다는 것이다. 2. 인덱스의 정렬MySQL 8.0 버전부터는 아래와 같이 정렬 순서를 혼합한 인덱스를 생성할 수 있다. MySQL 5.7에서는 상위 버전과의 호환성을 위해 문법상으로만 제공을 하였고 실제로는 오름차순 정렬만으로..

1. 인덱스 레인지 스캔인덱스를 통해 레코드를 한 건만 읽는 경우와 한 건 이상을 읽는 경우는 각각 다른 이름으로 구분하지만, 여기서는 '인덱스 레인지 스캔'으로 통일한다. 자세한 내용은 '실행 계획'에서 다루도록 하겠다. -- SELECT (1)SELECT first_name FROM employees WHERE first_name BETWEEN 'Ebbe' AND 'Gad';인덱스 레인지 스캔은 검색해야 할 인덱스의 범위가 결정됐을 때 사용하는 방식이다. 그림(1) 화살표에서도 알 수 있듯이 루트 노드에서부터 비교를 시작해 브랜치 노드를 거쳐 최종적으로 리프 노드까지 찾아 들어가야만 비로소 필요한 레코드의 시작 지점 (리프 노드 페이지 (5) 인덱스 키 Ebbe)을 찾을 수 있다. 일단 시작지점을 ..

1. 인덱스 키 값의 크기InnoDB 스토리지 엔진은 디스크에 데이터를 저장하는 가장 기본 단위를 페이지(Page) 또는 블록(Block)이라고 하며 디스크 I/O 최소 작업 단위가 된다. 또한 페이지는 InnoDB 스토리지 엔진의 버퍼 풀에서 데이터를 버퍼링하는 기본 단위이기도 하다. 인덱스도 결국은 페이지 단위로 관리되며 루트, 브랜치, 리프 노드를 구분한 기준이 바로 페이지 단위다. 일반적으로 DBMS의 B-Tree는 자식 노드의 개수가 가변적인 구조다. MySQL의 B-Tree는 인덱스의 페이지 크기와 키 값의 크기에 따라 결정된다. MySQL 5.7 버전부터는 InnoDB 스토리지 엔진의 페이지 크기를 innodb_page_size 시스템 변수를 이용해 4KB ~ 64KB 사이의 값을 선택할 수..
1. B-Tree 인덱스 키 추가새로운 키 값이 B-Tree에 저장될 때 테이블의 스토리지 엔진에 따라 새로운 키 값이 즉시 인덱스에 저장될 수도 있고 딜레이 될 수도 있다. B-Tree에 저장될 때는 저장될 키 값을 이용해 B-Tree상의 적절한 위치를 검색해야 한다. 저장될 위치가 결정되면 레코드의 키 값과 대상 레코드의 주소 정보를 B-Tree의 리프 노드에 저장한다. 리프 노드가 꽉 차면 리프 노드가 분리되어야 하는데 이것은 상위 브랜치 노드까지 처리의 범위가 넓어지기 때문에 B-Tree는 상대적으로 쓰기 작업(새로운 키를 추가하는 작업)에 비용이 많이 드는 것으로 알려져 있다. 인덱스 추가로 인해 INSERT, UPDATE 문장이 어느정도 비용이 발생하는지는 테이블의 컬럼 수, 컬럼의 크기, 인..

1. 디스크 읽기 방식컴퓨터의 CPU나 Memory처럼 전기적 특성을 가진 장치의 성능은 짧은 시간 동안 매우 빠른 속도로 발전했지만 디스크 같은 기계식 장치의 성능은 상당히 제한적으로 발전했다. (e.g. HDD, Hard Disk Drive) 최근에는 SSD가 많이 활용되고 있지만 여전히 데이터 저장 매체는 컴퓨터에서 가장 느린 부분이라는 사실에는 변함이 없다. 그래서 데이터베이스의 성능 튜닝은 어떻게 디스크 I/O (Input / Output)를 줄이느냐가 관건일 때가 상당히 많다. 2. 랜덤 (Random) I/O, 순차 (Sequential) I/OI/O라는 표현은 하드 디스크 드라이브의 플래터(원판)를 돌려서 읽어야 할 데이터가 저장된 위치로 디스크 헤더를 이동시킨 다음 데이터를 읽는 것을 ..

아래는 MySQL Workbench 설치하고 실행하면 나타나는 첫 화면화면 왼쪽 중간부분에 있는 를 클릭하면 [Setup New Connection] 창이 나타난다. 접속정보를 저장할 수 있다.Connection Name: 연결 이름 Hostname: 접속 IP주소Port: 접속 Port번호Username: 접속 아이디Password: [ Store in Valut ... ] 을 클릭하면 [Store Password For Connection] 창이 나타난다. Default Schema: 접속시 사용할 Schema(DB) 선택Password [ Store in Valut ... ] 버튼은 클릭하지 않는다. 우측 아래에 [ Test Connection ]을 클릭하면 접속에 문제가 없는지 테스트를 할 ..