2010-05-06 3 views
27

나는 그들의 한계 FAQ를 읽었으며, 그들은 전체 데이터베이스의 한계를 제외하고 많은 한계에 대해 이야기한다.SQLite 데이터베이스의 크기에는 제한이 있습니까?

+0

[최대 행 수 -sqlite-table] (http : // stackoverflow.com/questions/1546947/maximum-number-of-rows-in-a-sqlite-table) – nawfal

+0

자신의 문서 http://www.sqlite.org/limits.html에서 봐 주시기 바랍니다. 그리고 이것도 가능합니다 http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems#Limits – VivekDev

+1

또한 [SQLite가 기가 바이트의 데이터를 처리 할 수 ​​있습니까?] (https://www.quora.com/Can-SQLite-handle-gigabytes 데이터) 및 http://stackoverflow.com/q/3160987/632951 및 http://stackoverflow.com/q/784173/632951 실용적인 limts에 대한. – Pacerier

답변

36

이것은 implementation limits 페이지에서 추론 상당히 간단하다

SQLite는 데이터베이스 파일이 페이지로 구성되어있다. 각 페이지의 크기는 512와 SQLITE_MAX_PAGE_SIZE 사이의 2의 거듭 제곱입니다. SQLITE_MAX_PAGE_SIZE의 기본값은 32768

...

일반적으로 1,073,741,823로 설정되어 SQLITE_MAX_PAGE_COUNT 매개 변수, 하나의 데이터베이스 파일에 허용되는 최대 페이지 수입니다. 데이터베이스 파일이 이보다 커질 수있는 새 데이터를 삽입하려고하면 SQLITE_FULL이 반환됩니다.

그래서 우리는 35,184,372,056,064 (35 000000000000 바이트) 인 32768 * 1073741823가있다!

소스에서 SQLITE_MAX_PAGE_COUNT 또는 SQLITE_MAX_PAGE_SIZE을 수정할 수 있지만이 과정에는 응용 프로그램에 맞는 SQLite 사용자 정의 빌드가 필요합니다. 필자가 아는 한, 컴파일 타임 이외에는 프로그래밍 방식으로 제한을 설정할 수있는 방법이 없습니다 (그러나 나는 틀린 것으로 입증 될 것입니다).

+4

구현 제한 페이지 (http://www.sqlite.org/limits.html)에 따라 현재 (2014) 제한을 업데이트하기위한 제한 : 현재 제한은 140 테라 바이트 (최대 페이지 크기 = 65536이고 데이터베이스 당 2,147,483,646 페이지 제한)) – laurent

+0

또한 운영 체제의 폴더 및 파일 크기 제한 등을 고려하여 살아야합니다. – ZuLu

18

이제 데이터베이스 크기 제한은 128TB이며, new limits 있습니다

모든 데이터베이스가 하나 이상의 "페이지"로 구성되어 있습니다. 단일 데이터베이스 내에서 모든 페이지는 동일한 크기이지만 다른 데이터베이스는 512와 65536 사이의 2의 제곱 인 페이지 크기를 가질 수 있습니다. 데이터베이스 파일의 최대 크기는 2147483646 페이지입니다. 최대 페이지 크기 인 65536 바이트에서 최대 데이터베이스 크기는 약 1.4e + 14 바이트 (140 테라 바이트, 128 테라 바이트 또는 140,000 기가 바이트 또는 128,000 기가비트)로 변환됩니다.

개발자가이 한계에 도달 할 수있는 하드웨어에 액세스 할 수 없으므로이 특정 상한은 테스트되지 않습니다. 그러나 테스트는 SQLite가 기본 파일 시스템의 최대 파일 크기 (일반적으로 이론적 인 최대 데이터베이스 크기보다 훨씬 작음)에 도달 할 때 및 디스크 공간 부족으로 인해 데이터베이스를 늘릴 수없는 경우 제대로 작동하는지 확인합니다.

0

SQLite에서 문자열 또는 BLOB의 최대 바이트 수는 전 처리기 매크로 SQLITE_MAX_LENGTH에 의해 정의됩니다. 이 매크로의 기본값은 10 억 (10 억 또는 1,000,000,000)입니다.

현재 구현은 SQLITE_MAX_COLUMN의 기본 설정은 2000 년 당신은에 32767으로 대규모로 값을 컴파일시에 변경할 수있다 231-1 또는 2,147,483,647

에 문자열이나 BLOB 길이를 지원합니다 반면에 많은 숙련 된 데이터베이스 설계자는 정규화 된 데이터베이스가 테이블에 100 개 이상의 열을 필요로하지 않는다고 주장 할 것입니다.

SQLite는 64 개가 넘는 테이블을 포함하는 조인을 지원하지 않습니다.

테이블의 이론적 최대 최대 행 수는 264 (18446744073709551616 또는 약 1.8e + 19)입니다. 140 테라 바이트의 최대 데이터베이스 크기가 먼저 도달하기 때문에이 제한에 도달 할 수 없습니다.DB의

최대 크기 : 140 테라 바이트

대한 추가 정보를 원하시면 URL을 확인하시기 바랍니다

이 오래된 질문이지만 https://www.sqlite.org/limits.html

0

을하지만, 내가이 질문에 도달 할 사람들을 위해 내 연구 결과를 공유 할 수 있습니다.

Sqlite 설명서에 데이터베이스 파일의 최대 크기는 ~ 140TB이지만 OS가 모든 유형의 파일에 대해 최대 파일 크기에 대한 자체 제한을 부과한다고 설명하고 있지만.

예 : Windows에서 FAT32 디스크를 사용하는 경우, 내가 SQLite는 대한 얻을 수있는 최대 파일 크기 2GB의했다. (마이크로 소프트 사이트에 따르면, FAT 32 시스템에 제한 4기가바이트하지만 여전히 내 SQLite는 DB 크기는 2GB로 제한되었다). 리눅스에서 3GB에 도달 할 수 있었지만 (멈춘 곳에서 더 많은 크기에 도달했을 수 있음)

관련 문제