MySQL에 대한 최적의 varchar 크기는 무엇입니까?
MySQL은 varchar 필드를 어떻게 저장합니까? 다음 패턴이 합리적인 스토리지 크기를 나타낸다고 가정 할 수 있습니까?
1,2,4,8,16,32,64,128,255 (최대)
예를 통한 설명. 20 자의 varchar 필드가 있다고 가정 해 보겠습니다. 이 필드를 만들 때 MySQL은 기본적으로 32 바이트를위한 공간을 예약하지만 (바이트인지 여부는 확실하지 않음) 20 만 입력 할 수 있습니까?
거대한 테이블을 위해 디스크 공간을 최적화하는 것이 걱정되는 것 같습니다.
질문에 답하기 위해 MySql 디스크에서 1 + 데이터를 저장하기 위해 필드에 사용되는 크기를 사용합니다 (따라서 열이 varchar (45)로 선언되고 필드가 "FooBar"인 경우 디스크에서 7 바이트를 사용합니다. 물론 멀티 바이트 문자 집합을 사용하는 경우가 아니라면 14 바이트를 사용합니다. 따라서 열을 선언하더라도 스토리지 측에서 차이를 만들지 않습니다 (대용량 테이블에 대한 디스크 최적화에 대해 걱정한다고 말했습니다). 그러나 MySql이 임시 테이블 (SORT, ORDER 등)을 만들 때 VARCHAR가 CHAR로 변환되고 단일 페이지에 들어갈 수있는 레코드가 많을수록 메모리가 적고 테이블 스캔이 빨라지므로 쿼리에 차이가 있습니다. 있다.
MySQL은 레코드 크기를 나타내는 1 바이트 또는 2 바이트 접두사와 함께 varchar 필드를 가변 길이 레코드로 저장합니다.
스토리지 크기의 패턴이 있다고해서 가변 길이 레코드 스토리지를 다룰 때 MySQL이 작동하는 방식에 큰 차이가 없습니다. varchar (x) 선언에 지정된 길이는 저장할 수있는 데이터의 최대 길이를 결정합니다. 기본적으로 varchar (16)은 varchar (128)과 디스크 측면에서 다르지 않습니다.
이 매뉴얼 페이지 에는 더 자세한 설명이 있습니다.
편집 : 업데이트 된 질문과 관련하여 답변은 여전히 동일합니다. varchar 필드는 저장 한 데이터만큼의 디스크 공간 만 사용합니다 (1 ~ 2 바이트 오버 헤드 포함). 따라서 varchar (16) 또는 varchar (128)이 있는지 여부는 중요하지 않습니다. 10 자 문자열을 저장하면 10 바이트 (+1 또는 2)의 디스크 공간 만 사용하게됩니다. .
참고 URL : https://stackoverflow.com/questions/1151667/what-are-the-optimum-varchar-sizes-for-mysql
'Program Tip' 카테고리의 다른 글
Rails 4에서 secret_key_base의 용도는 무엇입니까? (0) | 2020.11.15 |
---|---|
ASP.NET 5, .NET Core 및 ASP.NET Core 5의 차이점은 무엇입니까? (0) | 2020.11.15 |
JPA 병합 대 지속 (0) | 2020.11.15 |
유효한 자바 스크립트 객체 속성 이름 (0) | 2020.11.15 |
드롭 다운 상자의 오버플로 텍스트에 대한 줄임표 (0) | 2020.11.15 |