스터디 8장 인덱스 (3) 2023. 10. 29. 클러스터링 인덱스 클러스터링이란 레코드를 비슷한것들끼리 묶어서 저장한다. InnoDB 엔진에서만 지원 PK 에 대해서만 적용됨. PK 는 값에 따라 저장되는 위치가 변경되는데 즉 값이 변경되면 저장되는 위치가 변경된다는 뜻이다 리프 노드에 레코드의 모든 칼럼이 저장돼있다 PK 가 없는 경우 PK 대체 칼럼의 선택 순서 PK 가 있다면 PK 가 클러스터링 키로 선택 PK 가없다면 NOT NULL 옵션의 유니크 인덱스중 첫 번째 인덱스를 클러스터링 키로 선택 1, 2 조건이 모두 충족되지 않을 경우 자동으로 증가되는 유니크 값을 만들어 클러스터링 키로 선택 이 경우 사용자는 해당키를 사용할 수 없으므로 꼭 명시적으로 PK 를 만들어주자 PK 가 세컨더리 인덱스에 미치는 영향 만약 세컨더리 인덱스가 레코드가 .. 8장 인덱스 (2) 2023. 10. 29. B-Tree 인덱스를 통한 데이터 읽기 인덱스 레인지 스캔 검색해야 할 인덱스의 범위가 결정됐을때 사용하는 방식, 일단 시작해야 할 위치를 찾으면 그때부터 리프노드의 레코드만 순서대로 읽으면 됨 인덱스 자체의 정렬 특성으로 인해 해당 인덱스를 구성하는 칼럼의 정순/역순으로 정렬된 상태로 레코드를 가져옴 레코드 한 건 한 건 단위로 랜덤 I/O가 일어남 ( 인덱스는 정렬 돼 있을지라도 해당 인덱스의 레코드 주소는 재각각일 것이기 때문) 인덱스를 통해 읽어야 할 레코드가 20~25%를 넘으면 테이블에서 직접 읽는게 효율적임 인덱스 레인지 스캔의 처리 인덱스 탐색 : 인덱스에서 조건을 만족하는 값이 저장된 위치 탐색 인덱스 스캔 : 탐색된 위치부터 필요한 만큼 인덱스를 차례대로 읽음 레코드 읽기 : 인덱스 키.. 8장 인덱스 (1) 2023. 10. 29. 디스크 읽기 방식 데이터를 읽는 절차 : 디스크의 플래터를 돌려서 읽어야 할 데이터가 저장된 위치로 디스크 헤더를 이동시킨 후 데이터를 읽는것 (HDD 기준) 3개의 페이지를 읽는 과정에서 랜덤 I/O : 3번의 시스템 콜을 요청, 디스크의 헤드를 3번 움직임 순차 I/O : 1번의 시스템 콜 만으로 접근 가능 인덱스 레인지 스캔은 주로 랜덤 I/O 를 사용, 풀 테이블 스캔은 순차 I/O 를 사용 큰 테이블의 레코드 대부분을 읽는 작업에선 인덱스를 사용하지 않고 풀 테이블 스캔을 사용하는게 유리할 수 있음 쿼리를 튜닝하는 것은 결국 랜덤 I/O 를 줄여주는 것 인덱스 B-Tree 알고리즘 : 칼럼의 값을 변형하지 않고 인덱싱 Hash 인덱스 : 값을 변형해서 인덱싱, 전방(Prefix) 일치와 같이 값.. k8s의 CoreDNS 2023. 3. 15. DNS Domain Name System 의 약자로 사람이 읽을 수 있는 도메인명을 IP 주소로 변환하는 기능이다 도메인으로 IP 조회를 할 때는 로컬 캐시 조회 -> /etc/hosts 조회 -> DNS 조회 순으로 진행됩니다. /etc/hosts $ cat /etc/hosts 127.0.1.1 k3s k3s 127.0.0.1 localhost 우리가 흔히 쓰는 localhost 도메인을 사용하면 127.0.0.1 IP 로 변경되어 사용되고있다. /etc/resolv.conf $ cat /etc/resolv.conf nameserver 8.8.8.8 options edns0 trust-ad search . resolv.conf 파일은 DNS 서버 목록이 있는 파일인데 host 파일에 도메인명이 존재하지.. Nginx index.html 수정 후 쿠버네티스로 배포한 후 접속해보기 2023. 2. 16. 스터디에 앞서 첫 번째 과제가 주어졌습니다. k8s 판 hello world라고 합니다. 여러 방법이 있겠지만 제가 사용한 방법을 포스팅합니다. [저의 과제환경은 마스터노드-워커노드로 클러스터를 구성하지 않고 마스터 노드 한 개만 구성하여 사용하고 있습니다.] 일단 과제를 하기 위해서는 nginx 페이지에 접속했을때 나오는 index.html 을 수정해야했습니다. NGINX 의 index.html 수정하기 1. docker pull nginx 명령어를 사용해서 로컬에 nginx 이미지를 pull 했습니다. 2. docker run --name nginx -p 8080:80 -d nginx 명령어로 nginx 이미지를 run합니다. 8080포트번호를 컨테이너의 80포트에 매핑해줍니다. 웹에 localhos.. 맥에서 k3s를 이용하여 실습하는 방법 2023. 1. 20. 2022. 01. 20 기준 # multipass 설치 $ brew install --cask multipass # multipass 환경 생성 $ multipass launch --name k3s --mem 4G --disk 40G # multipass 접속 $ multipass shell k3s # k3s 설치 $ curl -sfL https://get.k3s.io | sh - # 권한 부여 $ sudo chmod 777 /etc/rancher/k3s/k3s.yaml 이전 1 다음