SQLite 데이터베이스의 실제 실제 최대 크기는 얼마입니까?


33

SQLite의 적절한 사용에 관한 이 기사에 따르면 SQLite는 140 테라 바이트 로 제한되지만 클라이언트 / 서버 RDBMS는 더 잘 작동 할 수 있다고합니다.

SQLite 데이터베이스의 크기는 140 테라 바이트 (2 47 바이트, 128 티비 바이트)로 제한됩니다. 더 큰 데이터베이스를 처리 할 수 ​​있더라도 SQLite는 전체 데이터베이스를 단일 디스크 파일에 저장하며 많은 파일 시스템은 파일의 최대 크기를 이보다 작은 것으로 제한합니다. 따라서이 정도 규모의 데이터베이스를 고려할 경우 여러 디스크 파일 또는 여러 볼륨에 해당 컨텐츠를 분산시키는 클라이언트 / 서버 데이터베이스 엔진을 사용하는 것이 좋습니다.

일반적으로 이에 동의하지만 SQLite의 최대 제한이 너무 높다는 사실에 놀랐습니다! 내 경험상 ~ 30-100GB 크기의 SQL Server 데이터베이스를 많이 사용했습니다. 또한 Oracle, Postgres 또는 Cassandra를 사용하여 훨씬 더 큰 데이터베이스를 간접적으로 사용했습니다. 적어도 내 지식으로는 140TB에 접근하는 사람이 없었습니다. 저는 DBA가 아니기 때문에 이것이 직접 경험에서 "큰"것으로 간주됩니다.

데이터베이스가 작을 때 SQLite 만 고려했습니다. 최대 수십 메가 바이트.

이 기사를 읽은 후에도 여전히 수백 기가 바이트가 필요한 SQLite를 고려하지는 않습니다. 그러나 그 기능을 과소 평가했는지 궁금합니다. 실제 사용에서 SQLite 데이터베이스에 대한 현실적인 최대 크기 제한은 무엇입니까?


3
대규모 데이터 세트가 종종 여러 사용자가 소비한다고 가정하기 때문에 일반적으로 동시 연결 수를 고려해야한다고 생각합니다. 자신의 시스템에서 이것을 테스트 할 수있는 방법이 있습니까?
JeffO

3
거의 액세스 할 필요가없는 아카이브 된 트랜잭션 데이터베이스와 같은 SQLite는 훌륭한 선택 일 수 있으며 한 번에 한 명의 사용자 만있을 수 있으며 전체가 필요하지 않습니다. 이를 지원하기위한 DB 서버 설정. 반면에 동시 사용자가 여러 명인 경우 몇 개의 기가 데이터베이스에 도달하기 전에 오래 걸리는 잠금 문제에 쉽게 부딪 칠 수 있습니다.
Michael Kohne


2
@Pacerier-소프트웨어를 설치합니다. 그런 다음 DB 역할을 할당하고 백업 시스템에 통합하는 방법을 파악하고 백업 시스템이 백업 시작 및 종료 등에서 DB 서버를 올바른 상태로 설정해야합니다. 소프트웨어를 설치하는 것보다 DB 서버를 설정합니다. 또한 네트워크 보안 관점에서 걱정해야 할 또 하나의 서비스이며 패치를 따라야 할 또 하나의 서비스입니다. DB 서비스가 필요하다면 꼭 필요하지만 SQLite는 필요하지 않습니다.
Michael Kohne

1
@ leeand00-또는 한 달 동안 공간을 빌릴 수 있습니다.
JeffO

답변:


26

Sqlite 데이터베이스 크기의 실제 한계는 데이터 파일의 실제 한계와 동일합니다. 그리고 그 한계는 많은 컴퓨터와 시스템에 달려 있습니다. 현재 Linux 데스크톱에서는 350Gbyte 파일보다 훨씬 더 큰 여유 공간이 없습니다. 경험상 하나의 파일이 디스크 파티션의 절반 이상을 차지하지 않기 때문입니다. BTW, 그 실제 한계는 PostGreSQL 또는 MariaDB와 같은 다른 SQL RDBMS에도 영향을 미칩니다 (그러나 이들 중 대부분은 여러 파일에 데이터를 보관하여 다른 파일 시스템에 보관할 수 있으며 일부는 원격 컴퓨터에서 분산 데이터를 관리 할 수 ​​있습니다.) .)

이 기사를 읽은 후에도 여전히 수백 기가 바이트가 필요한 SQLite를 고려하지는 않습니다.

당신은 옳고 그름입니다.

오늘날의 컴퓨터 (수퍼 컴퓨터 또는 데이터 센터 서버가 아닌 랩탑 및 데스크탑)에서는 100 기가 바이트가 여전히 큰 디스크 공간이기 때문에 옳습니다. 따라서 실제로 이러한 큰 데이터베이스를 생각하면 원격 액세스, 효과적으로 동시 액세스 및 분산 데이터 및 테이블을 원할 수 있기 때문에 특히 실제 SQL 서버 (La PostGreSQL)를 더 잘 상상할 수 있습니다.

SQLite가 큰 파일을 처리 할 수있는 파일 시스템이 있다고 가정 할 때 아마도 SQLite가 수백 기가 바이트의 데이터베이스를 처리 할 수 ​​있고 때로는 테스트를 받았기 때문에 (원칙적으로 시도하지 않았습니다) 잘못되었습니다. 적어도).

필자는 수십 기가 바이트의 데이터베이스에 대해 SQLite를 고려할 것입니다. (그리고 한 번 큰 .sqlite파일 인 IIRC 40Gbyte를 시도했습니다). 현재 (슈퍼 컴퓨터가 아닌) 컴퓨터에서는 수백 기가 바이트의 SQLite 데이터베이스를 보유하는 것이 주저 할 것입니다. 이러한 파일이 오늘날의 관행에 의해 상당히 크기 때문입니다.

IIRC 특수 파일 시스템 머신을 판매하는 일부 하드웨어 공급 업체가 테라 바이트 sqlite 응용 프로그램 중 하나에 대해 이야기했습니다 (그러나 잘못되었을 수 있음).

물론 SQLite는 성능 (모든 SQL 데이터베이스 등) 따라 많은 테이블, 그들의 인덱스 관련 SQL 쿼리의 수와 폭. 그리고 당신은 (여러 프로세스에 의해) 동시 액세스를 원하지 않고 트랜잭션을 사용해야합니다 (경험, 심지어 몇 메가 바이트의 작은 SQLITE 데이터베이스에서도). 예를 들어 수천 개의 삽입 요청을 BEGIN TRANSACTION& END TRANSACTION, 그렇게하지 않으면 Sqlite가 10 배 이상으로 크게 느려집니다).

적절한 구성과 구성으로 개인적인 경험을 통해 SQLite는 사용 가능한 RAM보다 큰 데이터베이스를 관리 할 수 ​​있습니다 (따라서 30GB는 문제가되지 않습니다). 그러나 인덱스가 RAM에 맞기를 원할 것입니다!

"슈퍼 컴퓨터"또는 고가의 워크 스테이션 (예 : 512GB RAM 및 8Tbyte 디스크 및 512Gbyte SSD)을 위해 무언가를 코딩하는 경우 테라 바이트 Sqlite 데이터베이스를 가질 수 있습니다. 그러나 프로세스 중 하나 (또는 ​​소수) 만 해당 데이터베이스에 액세스하는 경우에만 그렇게하려고합니다. 동일한 데이터베이스에 동시에 액세스하는 수십 개의 프로세스가있는 경우 실제 SQL RDBMS (Maria Maria 또는 PostGreSQL)를 더 잘 설치하십시오.

또한 .sqlite데이터베이스 파일 의 (이진) 형식 이 "이동식"으로 문서화 되어 있지만 데이터베이스를 SQL 텍스트 형식 (을 사용하여 sqlite3 mydb.sqlite .dump > mydb.sql) 으로 백업하는 것을 선호합니다 . 그런 다음 해당 텍스트 덤프를위한 추가 디스크 공간이 필요합니다 (실제 한계를 낮 춥니 다).

일반적으로 Sqlite는 병목 현상이 아닙니다. 그러나 디스크 일 수 있습니다.

추신. 동일한 추론이 GDBM을 사용하여 대형 색인 파일에 적용될 수 있습니다 .

PPS. MELT 모니터 (github의 GPLv3 무료 소프트웨어)의 expjs 분기 ( 2016 년 9 월) 에서 신선한 Sqlite 데이터베이스 내에서 JSON의 전체 응용 프로그램 힙을 유지 하고 있습니다. 나는 놀랄 일도없이 수백만 개의 물체 ( '큰')로 작은 실험을 해왔다. YMMV.


7
네 번째 단락 이후에 글쓰기를 중단했을 수 있습니다. 그러나 어쨌든 +1.
Robert Harvey

3
어쩌면 몇 메가 바이트의 새로운 sqlite 데이터베이스에서도 실제로 트랜잭션이 매우 중요합니다 (단 하나의 프로세스 만 액세스하여 실제로 새 파일에 액세스).
Basile Starynkevitch

3
확실히 쓰기에 해당됩니다. 실제로 OP와 같은 크기의 SQLite 데이터베이스를 상상하기는 어렵습니다. Postgresql은 크기 기능이 아니라 SQLite가 가지고 있지 않은 산업 수준의 동시성에 대해 더 나은 선택 일 것입니다.
Robert Harvey

5
파일 크기가 큰 SQLite 데이터베이스를 가질 수있는 합법적 인 상황이 많이 있습니다. SQLite 개발자들로부터 : MySql을 대체하는 것이 아니라 fopen을 대체하는 것으로 생각하십시오. 일부 3D CAD 소프트웨어를 작성하고 SQLite 데이터베이스를 사용하여 객체에 대한 데이터를 저장하는 것은 매우 합리적 일 수 있습니다.
whatsisname

2
@Pacerier : 영화 파일 및 유사한 이진 얼룩은 일반적으로 데이터베이스에 저장되지 않습니다. 파일 시스템에 저장되며 해당 파일에 대한 링크는 데이터베이스에 저장됩니다.
Robert Harvey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.