source

MySQL 데이터베이스 테이블의 최대 레코드 수

factcode 2022. 11. 25. 20:50
반응형

MySQL 데이터베이스 테이블의 최대 레코드 수

MySQL 데이터베이스 테이블의 레코드 상한은 얼마입니까?자동 증가 필드가 궁금해요.수백만 개의 레코드를 추가하면 어떻게 됩니까?이런 상황에 어떻게 대처해야 할까요?탁!

정수의 최대값은 테이블에 저장할 수 있는 최대 행 수와는 거의 관계가 없습니다.

int 또는 bigint를 기본 키로 사용할 경우 기본 키의 데이터 유형에서 원하는 값의 개수만큼 행을 가질 수 있지만 기본 키를 정수로 만들 필요는 없으므로 CHAR(100)로 만들 수 있습니다.여러 열에 걸쳐 기본 키를 선언할 수도 있습니다.

테이블 크기에는 행 수 외에 다른 제약사항이 있습니다.예를 들어 파일 크기 제한이 있는 운영 체제를 사용할 수 있습니다.또는 각 행의 크기가 1KB인 경우 300GB 하드 드라이브를 사용하여 3억 행만 저장할 수 있습니다.

데이터베이스 크기 제한이 매우 높습니다.

http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html

MyISAM 스토리지 엔진은 테이블당 2개의 행을 지원하지만32 MySQL은--with-big-tables테이블당 최대64 2개의 행을 지원하는 옵션입니다.

http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

InnoDB 스토리지 엔진에는 테이블당 내부 6바이트 행 ID가 있으므로 최대 행 수는 2개48 또는 281,474,976,710,656개입니다.

InnoDB 테이블스페이스에는 64테라바이트의 테이블사이즈 제한이 있습니다.여기에 들어가는 행의 수는 각 행의 크기에 따라 달라집니다.

64TB 제한은 기본 페이지 크기를 16KB로 가정합니다.페이지 크기를 늘릴 수 있으므로 테이블스페이스를 최대 256TB까지 늘릴 수 있습니다.하지만 테이블을 그 크기로 확장하기 훨씬 전에 다른 성능 요소도 이러한 기능을 권장할 수 없다고 생각합니다.

mysql int 유형에는 많은 행을 사용할 수 있습니다.http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

int 큰 은 " " " 입니다.4,294,967,295
bigint 큰 은 " " " 입니다.18,446,744,073,709,551,615

데이터를 절대 삭제하지 말 것을 권장합니다.테이블이 1000보다 길다고 말하지 마세요.테이블의 끝을 잘라냅니다.계획에는 이 사용자가 얼마나 오랫동안 비활성 상태였는지와 같은 실제 비즈니스 논리가 있어야 합니다.예를 들어, 1년 이상이면 다른 표에 넣습니다.유지 보수 스크립트는 느린 시간대에 매주 또는 매월 이 작업을 수행합니다.

테이블에서 여러 행이 있을 경우 테이블 샤딩 또는 파티셔닝 작업을 시작하고 users_2011_jan, users_2011_feb 등의 오래된 테이블에 연도별로 데이터를 넣거나 해당 달의 숫자를 사용해야 합니다.그런 다음 이 모델에서 작동하도록 프로그래밍을 변경하십시오.정보가 적은 새 테이블을 만들어 데이터를 더 적은 열에 요약한 다음 사용자가 프로필을 볼 때 등 더 많은 정보가 필요할 때만 더 큰 분할 테이블을 참조할 수 있습니다.이 모든 것은 매우 신중하게 고려되어야 하며, 따라서 미래에 재계수를 적용해도 비용이 많이 들지 않습니다.또한 항상 사이트에 오는 사용자만 하나의 테이블에 넣을 수 있고 아카이브된 테이블세트에 오지 않는 사용자만 넣을 수 있습니다.

InnoDB에서는 테이블 크기 제한이 64테라바이트이고 MySQL 행 크기 제한이 65,535이므로 1,073,741,824개의 행이 있을 수 있습니다.이는 최대 행 크기 제한을 사용하는 최소 레코드 수입니다.단, 행 크기가 작을 경우 레코드를 추가할 수 있습니다.

http://dev.mysql.com/doc/refman/5.6/en/features.html,의 "Scalability and Limits" 섹션에 따르면 대규모 데이터베이스에 대한 MySQL 지원입니다.이들은 5천만 개의 레코드를 포함하는 데이터베이스와 함께 MySQL Server를 사용합니다.일부 사용자는 200,000개의 테이블과 약 500,000,000개의 행이 있는 MySQL Server를 사용합니다.

행 크기 제한

The maximum row size for a given table is determined by several factors:
  • MySQL 테이블의 내부 표현은 스토리지 엔진이 더 큰 행을 지원할 수 있는 경우에도 최대 행 크기 제한이 65,535바이트입니다.BLOB 및 TEXT 열은 내용이 나머지 행과 별도로 저장되므로 행 크기 제한에 대해 9~12바이트만 기여합니다.

  • 데이터베이스 페이지 내에 로컬로 저장된 데이터에 적용되는 InnoDB 테이블의 최대 행 크기는 절반 페이지보다 약간 작습니다.예를 들어 innodb_page_size 설정 옵션에 의해 정의된 기본 16KB InnoDB 페이지 크기의 최대 행 크기는 8KB보다 약간 작습니다."InnoDB 테이블 제한"

  • 가변 길이 열을 포함하는 행이 InnoDB 최대 행 크기를 초과할 경우, InnoDB는 행이 InnoDB 행 크기 제한 내에 들어갈 때까지 외부 페이지 외 저장용으로 가변 길이 열을 선택합니다.페이지 밖에서 저장되는 가변 길이 열에 대해 로컬로 저장되는 데이터 양은 행 형식에 따라 다릅니다.자세한 내용은 "InnoDB 저장소 형식"을 참조하십시오.
  • 스토리지 형식에 따라 페이지 헤더 및 트레일러 데이터의 양이 달라지며, 이는 행에 사용할 수 있는 스토리지 양에 영향을 미칩니다.

링크 http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html

행 크기 제한

특정 테이블의 최대 행 크기는 다음과 같은 몇 가지 요인에 의해 결정됩니다.

MySQL 테이블의 내부 표현은 스토리지 엔진이 더 큰 행을 지원할 수 있는 경우에도 최대 행 크기 제한이 65,535바이트입니다.BLOB 및 TEXT 열은 내용이 나머지 행과 별도로 저장되므로 행 크기 제한에 대해 9~12바이트만 기여합니다.

데이터베이스 페이지 내에 로컬로 저장된 데이터에 적용되는 InnoDB 테이블의 최대 행 크기는 4KB, 8KB, 16KB 및 32KB innodb_page_size 설정의 경우 페이지의 절반보다 약간 작습니다.예를 들어 최대 행 크기는 기본 16KB InnoDB 페이지 크기의 8KB보다 약간 작습니다.64KB 페이지의 경우 최대 행 크기는 16KB보다 약간 작습니다.섹션 15.8.8 "InnoDB 테이블의 제한"을 참조하십시오.

가변 길이 열을 포함하는 행이 InnoDB 최대 행 크기를 초과할 경우, InnoDB는 행이 InnoDB 행 크기 제한 내에 들어갈 때까지 외부 페이지 외 저장용으로 가변 길이 열을 선택합니다.페이지 밖에서 저장되는 가변 길이 열에 대해 로컬로 저장되는 데이터 양은 행 형식에 따라 다릅니다.자세한 내용은 섹션 15.11 "InnoDB 행 저장 및 행 형식"을 참조하십시오.

스토리지 형식에 따라 페이지 헤더 및 트레일러 데이터의 양이 달라지며, 이는 행에 사용할 수 있는 스토리지 양에 영향을 미칩니다.

InnoDB 행 형식에 대한 자세한 내용은 섹션 15.11 "InnoDB 행 스토리지 및 행 형식"과 섹션 15.8.3 "InnoDB 테이블의 물리적 행 구조"를 참조하십시오.

MyISAM 스토리지 포맷에 대한 자세한 내용은 섹션 16.2.3 "MyISAM 테이블 스토리지 포맷"을 참조하십시오.

http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html

한이 없다.사용 가능한 메모리와 시스템의 최대 파일 크기에만 의존합니다.그렇다고 해서 데이터베이스의 메모리 사용량을 처리할 때 예방 조치를 취하지 않아야 하는 것은 아닙니다.사용되지 않는 행을 삭제할 수 있거나 특정 수치(예: 1,000개) 내의 행의 총 수를 유지하는 스크립트를 항상 작성합니다.

언급URL : https://stackoverflow.com/questions/2716232/maximum-number-of-records-in-a-mysql-database-table

반응형