2011-05-03 6 views
1

내 스크립트 또는 MYSQL 자체가 큰 테이블을 잘라내는지 확인하려고 MYSQL 설명서를 쏟아 부어 왔습니다. 내가 보는 기본 동작 :테이블 크기 제한에 도달하면 MYSQL에서 테이블을 자릅니다?

  • PHP 스크립트는 MSSQL 테이블에서 행을 선택하고 즉시 로컬 MySQL 데이터베이스 테이블에 삽입하기 위해 브라우저에서 시작됩니다.
  • MSSQL에서 행 수를 결정한 후, 스크립트는 선택 항목을 청크로 분해하여 메모리 부족 문제를 피합니다.
  • 그런 다음 스크립트가 로컬 테이블을 자르고 청크를 반복하여 데이터를 가져 오기 시작합니다.
  • MySQL의 데이터를 직접 따라 가면 약 200,000 행의 테이블이 닫히고 갑자기 테이블이 잘리고 카운트됩니다
  • 이상 나는 테이블이 가득 찼다는 것에 대한 약간의 오류를 보게 될 것이고 테이블 제한에 도달하면 MySQL이 테이블을자를 것이라고 생각하지 않을 것입니다.

테이블 제한에 도달하면 MySQL이 자동으로 테이블을 잘라낼 수 있는지 여부를 확인하거나 설정을 확인하여 이러한 동작을 해제 할 수 있습니까?

답변

1

아니 MySQL은 테이블의 크기에 하드 한계를 설정,하지만 몇 가지 한계 ...

명시 테이블 크기
설정할 수있는 최대 테이블 크기

ALTER TABLE tbl_name MAX_ROWS=200000 

에있다

당신과 함께 테이블 크기에 대한 현재 설정을 볼 수 있습니다

SHOW TABLE STATUS FROM db_name LIKE 'tbl_name'; 

참조 : http://dev.mysql.com/doc/refman/5.0/en/full-table.html

MAX_ROWS 인 것으로 도시 :

표에 저장하려는 행의 최대 수. 이것은 하드 한도가 아니라 저장소 엔진에 최소한이 행을 저장할 수 있어야한다는 힌트입니다.

파일 시스템 제한
의 MySQL 5.x를이 256TB의 기본 테이블 크기를 가지고 있지만, 당신의 파일 시스템은 파일을 허가하지 않는 경우> 4GB의, 그뿐만 아니라이 동작이 발생할 수 있습니다 제한 될 수 있습니다.

메모리 한계는
당신이 memory (힙) 엔진을 사용하는 경우, 테이블의 크기는 max_heap_table_size 시스템 변수에 의해 결정됩니다.

+0

고마워요! 나는 그것이 MySQL이 아닌 것으로 의심하지만, 그 관에 못을 박는 것은 내 스크립트에서 그 문제를 더 쉽게 찾아 낼 수있게 해줍니다. – ProgrammerX

0

MySQL이 데이터를 잘리지 않는다고 생각합니다. 50 만 줄 이상의 테이블로 작업했는데 전혀 문제가 없었습니다. 그래서, 나는 PHP 스크립트 나 적어도 PHP 설정, 모든 타임 아웃 설정과 PHP가 처리 할 수있는 스크립트의 크기를주의 깊게보아야한다고 생각합니다.

  • max_execution_time이라는
  • max_input_time
  • memory_limit를

은 내가 당신을 도울 수 있기를 바랍니다.

관련 문제