드루팔 성능/속도 올리기 제5탄 - CCK 컨텐츠 타입의 필드 설정시 문자열 길이는 반드시 제한을 두라!

드루팔 성능/속도 올리기 제5탄 - CCK 컨텐츠 타입의 필드 설정시 문자열 길이는 반드시 제한을 두라!

아주 중요한 팁이다.
드루팔의 컨텐츠 타입 지정시, 필드를 문자열로 한 경우
설정 화면에서

Size of textfield: 부분에만 문자열 길이를 지정하면 끝인 줄 알면 큰 오산이다!

보통 기본값이 60으로 돼 있는데 이를 그대로 저장하면,
MySQL의 경우 VARCHAR 타입이 아닌 LONGTEXT로 필드를 생성한다.
그냥 TEXT도 아니고 LONGTEXT이다!!!
http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html

이 필드들을 드루팔 View를 이용해서 정렬이나 검색을 한다고 생각하면,
끔직하다! 참으로 끔직하다! 게다가 인덱싱도 설정돼 있지 않은 상태이다.

고로 반드시 다음과 같이 CCK 컨텐츠 타입을 설정하다. *(필독! 필히 준수!)

컨텐츠 타입의 필드 설정에서 문자열인 경우에는,
Size of textfield: 부분 뿐만 아니라 설정화면 제일 아래에 있는
"최대 문자수" 부분을 확실하게 지정해야 한다.

예를 들어 "최대 문자수" 부분에 200을 지정/저장하면,
MySQL에는 LONGTEXT가 아닌 VARCHAR 200으로 정확히 지정된다.

이렇게 하지 않으면 해당 컨텐츠 타입 목록의 출력시 많이 느려질 것이다.

* 일단 LONGTEXT로 생성된 컨텐츠 타입 필드는 나중에 "최대 문자수"를 강제 지정해도 VARCHAR로 변하지 않는다.
이런 경우에는 아래와 같은 ALTER 테이블 명령으로 바꾸자. 예를 들어 VARCHAR 100으로 변경하려면,

ALTER TABLE `content_type_컨텐츠타입명` CHANGE `field_필드명_value` `field_필드명_value` VARCHAR(100) NOT NULL;

Your rating: None 평균 : 4 (5 votes)

댓글

매번 관리자 모드로 사이트를 이용하게 되니 느린

매번 관리자 모드로 사이트를 이용하게 되니 느린 속도에 무감했는데 이 글을 보고 정신이 퍼뜩 들었습니다. 최대문자수를 각 필드에 맞게 조정 해 주었는데 효과가 있으리라 생각합니다. 좋은 정보 알려주셔서 감사드립니다. :)

드루지기님의 [드루팔 성능/속도 올리기] 시리즈 잘

드루지기님의 [드루팔 성능/속도 올리기] 시리즈 잘 봤습니다.
드루팔을 사용하면 가장 마음에 걸리던 부분이 속도 부분이였는데
덕분에 관리하고 있는 사이트, 개인 사이트에서 좋은 결과가 있었습니다.
감사합니다!!