2011-04-11 3 views
0

동적으로 테이블을 만들어야하는 상황이 있습니다. 몇 가지 기준에 따라 특정 표의 열 크기를 다양화할 것입니다.
그 목적을 위해 하나의 행 크기를 계산해야합니다.MySql 단일 행 크기 (엔진 MyISAM)를 계산하는 수식

다음 표를 만들 경우

CREATE TABLE 샘플 (ID int, name varchar (30));

그래서 수식은 위의 테이블에 대한 단일 행의 크기를 줄 것이므로 mysql 테이블에 행을 저장하는 모든 오버 헤드를 고려해야합니다.

이렇게 할 수 있습니까?

+0

** 당신이 문제를 해결할 수 있도록 ** 필요한 ** 이유를 적어주십시오. – vbence

+0

실제로 저는 "설문 조사 관리"를위한 취미 프로젝트를 만들었습니다. 질문에 대한 옵션이 2000-3000과 거의 같으며 설문 조사 당 질문 수는 4096을 초과 할 수 있으며 답변에서 하나의 행으로 저장하려고합니다 표. –

+0

귀하의 의견에 따라 답변을 편집했습니다. – vbence

답변

2

그것은 또한 인덱스를 사용스토리지 엔진과 해당 테이블에 대해 선택된 행 형식에 의존합니다. 그러나 이것은 매우 유용한 정보는 아닙니다.

편집 : 나는 정상화 에가는 것이 좋습니다

당신이 알고있는 경우에만 정확히 무슨 일을하는지. DBMS는 많은 양의 데이터를 처리하기 위해 만들어졌습니다. 아마 strctured 데이터를 단일 필드로 직렬화 할 필요는 없습니다.

응용 프로그램 계층은 원래 의미를 얻기 위해 직렬화 된 필드 데이터를 토큰 화 (또는 악화)해야하며, 구조화 된 형식의 데이터를 DB에서 가져 오는 것보다 확실히 큰 오버 헤드가 있습니다.

내가 생각할 수있는 유일한 예외는 클라이언트가 많은 아키텍처라고 생각할 수 있습니다. 클라이언트 측으로 처리를 이동하면 실제로 서버가 부담을 받고 전송을 위해 데이터를 직렬화합니다. - 서버 측 코드 (예 : php)에서 직렬화 된 데이터를 DB에 저장하는 것은 실용적이지 않습니다.

(비록, 직렬화 내장으로 PHP의 어떤 경우에는 좋은 생각이있을 수 있습니다. 현재 프로젝트가 혜택을 누릴 것 같지 않습니다.)

0

VARCHAR는 가변 길이 데이터 형식입니다, 그것은있다 길이 속성이지만 값은 비어있을 수 있습니다. 계산이 정확하지 않을 수 있습니다. 'Avg_row_length'필드를 information_schema에서 확인하십시오. tables.