[정영이]님이 남기신 글:
>-----------------------------------------
>답변자가 기본적으로 참고할 내용입니다.
>- 배포판(옵션) :
>- 커널버전(옵션) :
>- 데몬버전(예:apache 1.3.27) :
>- 데몬설치유형(RPM/컴파일/기타) :
>-----------------------------------------
>
>안녕하세요.
>mysql 관련 질문입니다..
>mysql5.0.x 버전입니다.
>innodb 타입의 테이블에 데이터를 heap_table에 입력 하려 합니다.
>그런데 max_heap_table_size 값을 어떻게 계산 해야 할지 해서요..
>
>이부분 같은데..
>The memory needed for one row in a MEMORY table is calculated using the following expression:
>
>SUM_OVER_ALL_BTREE_KEYS(max_length_of_key + sizeof(char*) × 4)
>+ SUM_OVER_ALL_HASH_KEYS(sizeof(char*) × 2)
>+ ALIGN(length_of_row+1, sizeof(char*))
>
>ALIGN() represents a round-up factor to cause the row length to be an exact multiple of the char pointer size. sizeof(char*) is 4 on 32-bit machines and 8 on 64-bit machines.
>
>도무지 뭘 말하는 건지 잘모르겠습니다. SUM_OVER_ALL_BTREE_KEYS, SUM_OVER_ALL_HASH_KEYS, ALIGN 이런 함수가 있는건가요?
>또 max_length_of_key, length_of_row 는 어떻게 구하는건지 도좀...
>
>수고하시구요..
========================================
메모리 사용을 제한하기 위해서 해당 테이블의 최대 크기를 설정하는
옵션입니다.
테이블을 만들었다면 각 컬럼에 대한 자료형 크기가 있을 겁니다.
어렵게 계산할 필요 없습니다.
예를들어 컬럼이 5개이고 각 컬럼에 대한 크기(자료형)의 합이 모두 4KB 이면,
(4KB * key크기) * rows 입니다.
heap 테이블 크기가 너머 크면 그 만큼 메모리를 많이 잡아 먹기 때문에
여유 메모리 확인하고 설정해 보세요.
잘 모르겠다면 해당 테이블 최대 얼마크기까지 가는지 정도는 알 수 있는지 예상하고 그 수치를 설정하면 됩니다.
참고로 이곳 qna 테이블은 key 포함해서 약 11MB 정도입니다.
물론 heap 테이블은 아닙니다. |