2014-10-25 2 views
0

InnoDB 데이터베이스에서 인덱싱 될 도메인 이름과 64 자 길이를 저장하는 필드는 데이터 유형 CHAR (64) 또는 VARCHAR (64) 일 수 있습니다. 첫 번째 레코드는 모든 레코드가 같은 길이가되도록 데이터를 채 웁니다. 분명히 이것은 약간의 성능 향상을 제공하지만 패딩으로 인해 더 많은 디스크 공간을 차지합니다.MySQL 성능 - CHAR (64) vs VARCHAR (64)

벤치 테스트를 수행하지 않고 CHAR (36)이 성능 향상을 제공한다는 것은 사실입니까?

+1

벤치 테스트 it !. 당신의 질문을 쓰는 한 당신을 데려가십시오! –

답변

6

21 세기 서버에서 최신 버전의 MySQL을 실행하면 이러한 종류의 작업을 수행하는 대부분의 사람들이 문제에 가장 적합한 데이터 유형을 사용하는 것이 좋습니다. "코드와 데이터를 읽기 쉽고 이해하기 쉽도록 만드십시오!

왜 MySQL의 인덱싱이 성능 차이가 작은 지 알기 때문에 테이블이 커지면 (10 ** 9 행 이상을 의미) VARCHAR()과 CHAR()가 의미를 갖기 시작합니다.

귀중한 개발 시간을 투자하여 앱을 멋지게 만들어 사용자가 눈을 뗄 기회가 생기면 스마트하게 처리 할 수 ​​있습니다. 그 (것)들, 당신은 아마 당신이 당신의 작은 비능률을 고치는 것을 돕도록 진짜 유능한 데이타베이스 행정관을 얻을 수있다.

톱니 바퀴 서버는 수천 개의 비용이 듭니다. 정말로 엄격한 최적화를 할 수있는 개발자는 수만 명의 비용이 든다. 늦게 시장에 내놓는 것은 수백만 달러를 소비합니다. 그것을 간단하게해라, 끝내라!

0

이론상으로, 아니오.

성능에 훨씬 더 많은 영향을 줄 수있는 많은 요인이 있습니다. CHAR 칼럼은 여분의 "디스크 공간"뿐만 아니라 더 많은 I/O (블록 당 적은 수의 로우), innodb 캐시를위한 더 많은 메모리, 더 많은 데이터를 innodb 로그 (바이너리 로깅), 더 많은 백업 시간 , 등등. (디스크 공간뿐 아니라 백업을 포함하여 디스크에서 읽고 쓰는 데 시간이 필요합니다.)

이것은 약간의 성능을 나타내는 테스트를 설정할 수 없다는 것을 의미하지는 않습니다 CHAR 컬럼의 이점. 하지만이 테스트는 실제 작업량을 모방하지 않을 가능성이 있습니다.

저장하는 값이 항상 64 자 또는 64 자에 가까운 경우 CHAR이 아마도 길일 것입니다. 그러나 저장하는 값이 자주 64 자보다 짧으면 VARCHAR을 사용하십시오.