Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[5.9.3장] 레코드 주소를 사용할 때의 인덱스 크기 #38

Open
jjj0611 opened this issue Dec 19, 2020 · 1 comment
Open

[5.9.3장] 레코드 주소를 사용할 때의 인덱스 크기 #38

jjj0611 opened this issue Dec 19, 2020 · 1 comment
Assignees

Comments

@jjj0611
Copy link
Contributor

jjj0611 commented Dec 19, 2020

p.255 단점 부분에서 테이블의 모든 보조 인덱스가 클러스터 키를 갖기 때문에 클러스터 키 값의 크기가 클 경우 전체적으로 인덱스의 크기가 커짐

질문 : 보조 인덱스에 클러스터 키가 아닌 레코드 주소가 저장될 때 그 주소 값의 크기는 몇일까요? 클러스터 키 값의 크기(어떻게 설정하느냐에 따라 다르겠지만 일반적으로 많이 설정하는 BIGINT와 비교해보면 좋을 것 같아요)와 얼마나 차이가 있을까요?

@jnsorn jnsorn self-assigned this Dec 20, 2020
@jnsorn
Copy link
Member

jnsorn commented Dec 21, 2020

우선 간단하게 말하자면

  • MySQL의 BIGINT는 8 bytes
  • 보조 인덱스의 레코드 주소는 페이지번호+#offset

의 크기를 갖고 있습니다.

실제로 각각의 경우에 대해 실행시켜보겠습니다.

### 38번 이슈 - 레코드 주소가 저장될 경우

CREATE TABLE idx_size_test1
(
    userId BIGINT,
    name   varchar(10)
);

INSERT INTO idx_size_test1
VALUES (1, 'a');
INSERT INTO idx_size_test1
VALUES (2, 'b');
INSERT INTO idx_size_test1
VALUES (3, 'c');

ALTER TABLE idx_size_test1
    ADD CONSTRAINT uk_idx_size_test1_userID UNIQUE (userId);

### 38번 이슈 - BIGINT가 저장될 경우

CREATE TABLE idx_size_test2
(
    userId BIGINT,
    name   varchar(10)
);

INSERT INTO idx_size_test2
VALUES (1, 'a');
INSERT INTO idx_size_test2
VALUES (2, 'b');
INSERT INTO idx_size_test2
VALUES (3, 'c');

ALTER TABLE idx_size_test2
    ADD CONSTRAINT pk_idx_size_test2_userID PRIMARY KEY (userId);

SHOW INDEX FROM idx_size_test2;

show table status from rms;

image

이런 결과를 확인할 수 있습니다. 왜 아래 클러스터 키값은 인덱스 크기가 안나올까요? 스터디 시간에 같이 알아보기로 합니다!

@lxxjn0 lxxjn0 added this to the Real MySQL 5.5 - 5.12 milestone Jan 2, 2021
@lxxjn0 lxxjn0 removed this from the Real MySQL 5.5 - 5.12 milestone Jan 31, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants