전체 글

Database

[MySQL] 외래키

외래키는 InnoDB 스토리지 엔진에만 생성할 수 있습니다. 외래키 제약이 설정되면 자동으로 연관된 테이블의 칼럼에 인덱스까지 생성됩니다. 외래키가 제거되지 않은 상태에서 자동으로 생성된 인덱스를 삭제할 수 없습니다. 특징 InnoDB의 외래키에는 두 가지 중요한 특징이 있습니다. 테이블의 변경(쓰기 잠금)이 발생하는 경우에만 잠금 경합이 발생한다. 외래키와 연관되지 않은 칼럼의 변경은 최대한 잠금 경합을 발생시키지 않는다. 다음과 같은 테이블이 있습니다. mysql> CREATE TABLE parent ( id INT NOT NULL fd VARCHAR(100) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB; mysql> CREATE TABLE child ( id INT ..

Database

[MySQL] 유니크 인덱스

유니크 인덱스란 유니크는 인덱스라기 보다는 제약 조건에 가깝습니다. 테이블이나 인덱스에 같은 값이 2개 이상 저장될 수 없음을 의미하는데, MySQL에서는 인덱스 없이 유니크 제약만을 설정할 수 없습니다. 유니크 인덱스에는 NULL도 저장될 수 있습니다. NULL은 특정 값이 아니므로 2개 이상 저장될 수 있습니다. 유니크 인덱스와 일반 세컨더리 인덱스의 비교 유니크 인덱스와 일반 세컨더리 인덱스는 구조상 동일하고 유니크 제약 조건의 유무만 다릅니다. 인덱스 읽기 두 인덱스의 구조가 동일하기 때문에 동일한 레코드양을 읽는다면 성능차이는 없습니다. 다만 일반 인덱스는 키 값의 중복이 없기 때문에 읽어야할 값이 더 많을 수 있습니다. 레코드 1건을 검색하는 경우 두 인덱스의 실행 계획에 차이가 있습니다. 하..

회고

[구름톤 트레이닝 풀스택] 1주차 회고

매주 회고를 작성했다고 다짐했지만 평일은 수업에 치이고 주말은 순식간에 지나가니 화요일이 돼서야 회고를 작성하네요... TIL 저의 두 번째 각오는 학습, 고민을 기록하는 것이었습니다. 그래서 Notion에 주단위로 TIL를 작성할 수 있는 템플릿을 만들고 학습 내용을 정리했습니다. 템플릿은 공개되어 있습니다!👇 TIL A new tool for teams & individuals that blends everyday work apps into one. buttered-library-e7b.notion.site 커리큘럼 구름에서 인프런 강의를 결제하고 결제된 강의를 듣는 방식으로 과정이 진행되었습니다. 강의는 평생 제공입니다! 저는 김영한 님의 강의를 모조리 사서 조금 손해를 보나 했지만 이런 경우 추가..

회고

[구름톤 트레이닝 풀스택] OT 회고

구름톤 트레이닝 풀스택 과정 1기에 합격하고 두 가지 다짐한 것이 있습니다. 매주 회고 작성하기 공부한 것, 고민한 것 기록하기 모두 기록에 관한 것입니다. 대학교를 다니면서 제가 공부한 것, 프로젝트를 하면서 고민한 내용을 정리하지 않았습니다. 그래서 자소서, 포트폴리오를 작성할 때 당시 내용이 떠오르지 않고 코드도 이해되지 않아 많이 고생했습니다. 구름톤 트레이닝을 기점으로 제가 개발자가 되기 위한 노력을 기록하고 점점 발전하는 것을 저 스스로도 확인하고 싶기 때문에 '기록하기'를 실천하고자 합니다. 오프라인 OT 구름 스퀘어에서 풀스택 과정과 정보보호 과정의 OT가 있었습니다. OT는 구름 대표님의 연설, 과정별 OT, 현직자 세미나 순서로 진행되었습니다. 구름톤 트레이닝이란 최근 '네카라쿠배 합격..

회고

[구름톤 트레이닝 풀스택] 선발 과정 및 최종 합격

구름톤 트레이닝 풀스택 1기 선발 과정과 후기입니다. 6월부터 2기가 예정된거 같은데 혹시 지원하시는 분들에게 도움이 되었으면 해 글을 작성합니다. 구름톤 트레이닝 소개 '구름톤 트레이닝'은 주니어 개발자로서의 역량을 기르고 스스로 성장하는 힘을 기르는 교육과정입니다. 온라인으로 과정이 진행되고 풀스택 과정은 크게 두 부분으로 커리큘럼을 나눌 수 있습니다. 1. 기본기를 다지는 이론 과정 2. 실무역량을 기르는 프로젝트 과정 과정에 대한 자세한 내용은 👇아래 링크에 작성되어 있습니다. 풀스택 개발자 양성 과정 ‘구름톤 트레이닝’은 IT 인재를 양성하기 위해 만들어진 교육 과정으로 스스로 성장하는 힘을 기르는 데 초점을 두고 있습니다. goorm과 Marathon의 합성어인 구름톤에는 스스로 성장하는 힘을..

Database

[MySQL] 클러스터링 인덱스

개요 MySQL의 InnoDB 스토리지 엔진은 PK에 대해 클러스터링 인덱스를 자동으로 생성합니다. 그렇다면 클러스터링 인덱스 무엇이길래 테이블마다 존재하는 것일까요? 이 글에서 알아봅시다. 클러스터링 인덱스 클러스터링이란 여러 개를 하나로 묶는다는 의미로 사용됩니다. 클러스터링 인덱스도 이러한 의미에서 크게 벗어나지 않습니다. InnoDB에서 클러스터링은 테이블의 레코드를 비슷한 것들끼리(PK 기준) 묶어서 저장하는 형태로 구현됩니다. 이는 주로 비슷한 값들을 동시에 조회하는 경우가 많다는 점에서 착안한 것입니다. 클러스터링 인덱스는 PK에 대해서만 적용됩니다. PK값이 비슷한 레코드끼리 묶어서 저장됩니다. 즉, PK 값에 의해 레코드의 저장 위치가 결정된다는 것입니다. 또한 PK 값이 변경된다면 레코..

Database

[MySQL] 함수 기반 인덱스

칼럼의 값을 변형해서 만들어진 값에 대해 인덱스를 구축할 수 있습니다. MySQL 서버에서 함수 기반 인덱스를 구현하는 방법은 다음과 같습니다. 1. 가상 칼럼을 이용한 인덱스 2. 함수를 이용한 인덱스 함수 기반 인덱스는 인덱싱할 값을 계산하는 과정의 차이만 존재합니다. 가상 칼럼을 이용한 인덱스 다음과 같은 테이블이 있습니다. mysql> CREATE TABLE user( user_id BIG_INT first_name VARCHAR(10), last_name VARCHAR(10), PRIMARY KEY (user_id) ); first_name와 last_name을 합쳐서 검색해야 하는 요건이 생겼습니다. 두 칼럼을 합친 full_name이라는 칼럼을 만들어 인덱스를 생성해도 되지만 다른 방법이 있..

Database

[MySQL] B-Tree 인덱스 -4

이전 글에 이어서 MySQL의 B-Tree 인덱스에 대해 알아보겠습니다. [MySQL] B-Tree 인덱스 - 1 대표적인 인덱스인 B-Tree 인덱스를 MySQL의 관점에서 알아봅시다. 구조 Tree는 루트 노드와 리프 노드 그 사이에 브랜치 노드로 이루어져 있습니다. 그중 리프 노드에 데이터 레코드의 주솟값을 저 acisliver.tistory.com [MySQL] B-Tree 인덱스 - 2 이전 글에 이어서 B-Tree 인덱스를 MySQL 관점에서 살펴보겠습니다. [MySQL] B-Tree 인덱스 - 1 대표적인 인덱스인 B-Tree 인덱스를 MySQL의 관점에서 알아봅시다. 구조 Tree는 루트 노드와 리프 노드 그 사이 acisliver.tistory.com [MySQL] B-Tree 인덱스 -..

Database

[MySQL] B-Tree 인덱스 - 3

이전 글에 이어서 MySQL의 B-Tree 인덱스에 대해 알아보겠습니다. [MySQL] B-Tree 인덱스 - 1 대표적인 인덱스인 B-Tree 인덱스를 MySQL의 관점에서 알아봅시다. 구조 Tree는 루트 노드와 리프 노드 그 사이에 브랜치 노드로 이루어져 있습니다. 그중 리프 노드에 데이터 레코드의 주솟값을 저 acisliver.tistory.com [MySQL] B-Tree 인덱스 - 2 이전 글에 이어서 B-Tree 인덱스를 MySQL 관점에서 살펴보겠습니다. [MySQL] B-Tree 인덱스 - 1 대표적인 인덱스인 B-Tree 인덱스를 MySQL의 관점에서 알아봅시다. 구조 Tree는 루트 노드와 리프 노드 그 사이 acisliver.tistory.com B-Tree 인덱스의 정렬 및 스캔 ..

acisliver
와당탕탕 개발놀이터