일단 너무 궁금했고, 물리적으로나 논리적으로 최대값이 있지 않을까? 라는 점에서 출발한 질문이다.

답은 없다. 각 MySQL 버전 또는 OS 환경에 따라 달라진다.

 

InnoDB에서 별다른 설정없이 페이지의 크기는 기본값 16KB다.

그렇다면 일반적으로 단일 레코드 기준 최대값은 페이지 크기의 절반인, 8KB가 되겠다.

 

단, 페이지 크기를 초과하는 레코드도 있긴한다. 그런 경우 알아서 잘 여러 페이지로 분할한다는데,

그건 난 모르겠고, 중요한건 그럴경우 당연하게도 오버헤드가 발생할거고, 느려지겠지?

 

자 여튼 그리고 행의 수를 결정하는건 "테이블스페이스 / 페이지크기" 인데

테이블스페이스는 8 기준 144TB, 5.7 기준 64TB 라고 한다. 

 

와 그럼 대충 계산해 보면 어마어마한양의 레코드가 입력 가능하다는 거다.

(앗, 근데 다중 테이블스페이스도 가능하다는데, 그럼 어떻게 되는거지?!)

 

물론 실제로 저걸 다 쓴다면 매우 느리겠지만, 그러니까 파티셔닝도 필요하고...또...여기까지(아는게..)

 

페이지가 뭔지 모른다면?!

페이지는 테이블보다 작은 단위, 페이지가 모여서 테이블이 된다고 생각하면 됨.

레코드보다는 큰 단위 혹은 같거나.

레코드나 테이블(물론 MySQL은 테이블이 파일 단위이긴 하지만, 테이블스페이스)이 논리적 단위라면, 페이지는 물리적 단위 이다.

 

그냥 문득 궁금해서 찾아본건데, 나름 지식을 얻은거 같아서 기분 좋음.

왜 이게 궁금했는지는 기억 안남.

 

질문에 대한 답은 (지)PT샘이 해줬음.

정말 이름 처럼 지식을 퍼스널 트레이닝 시켜주는 분 인거 같다.

+ Recent posts