web-dev-qa-db-ja.com

SQLiteテーブルの最大行数

キーサイズが256バイト、値サイズが4096バイトの単純なsqlite3テーブル(create table data (key PRIMARY KEY,value))を指定します。このsqlite3テーブルの最大行数の制限(ディスク領域の制限を無視)はどのくらいですか?それらの制限はOS(win32、linuxまたはMac)に関連していますか

25
volatilevoid

SQLite3では、フィールドサイズは固定されていません。エンジンは、各cellに必要なスペースをコミットします。

ファイル制限については、このSO質問を参照してください:
非常に大きなデータベースファイルを持つsqliteのパフォーマンス特性は何ですか?

13

2017年1月の時点で sqlite3制限ページ は、データベースの最大サイズである140テラバイトに基づいて、この質問に対する実際的な制限を定義しています。

テーブルの行の最大数

テーブルの理論上の最大行数は2 ^ 64(18446744073709551616または約1.8e + 19)です。最初に140テラバイトの最大データベースサイズに到達するため、この制限に到達することはできません。 140テラバイトのデータベースが保持できる行数は約1e + 13以下であり、インデックスがなく、各行に含まれるデータが非常に少ない場合のみです。

したがって、データベースの最大サイズが140テラバイトの場合、1兆行を取得できれば幸いです。実際にデータが含まれる有用なテーブルがある場合、行数はデータのサイズによって制約を受けるためです。おそらく、140 TBデータベースでは、最大で数百億の行を持つことができます。

28
aculich

SQLiteデータベースのサイズは3.3 GBで、2,500万行の数値ログが保存されており、それらに対して計算を行っていますが、高速で正常に動作しています。

15
John

1050万行を格納する7.5GB SQLiteデータベースがあります。正しいインデックスがある限り、クエリは高速です。挿入をすばやく実行するには、トランザクションを使用する必要があります。また、インデックスを作成する方が良いことがわかりましたafterすべての行が挿入されました。そうしないと、挿入速度が非常に遅くなります。

7
Fidel

あなたが望む答え ここにあります

あなたが言及した各OSは複数のファイルシステムタイプをサポートしています。実際の制限は、OSごとではなくファイルシステムごとになります。 SOの制約マトリックスを要約することは困難ですが、一部のファイルシステムはファイルサイズに制限を課していますが、今日のすべての主要なOSカーネルは、非常に大きなファイルを持つファイルシステムをサポートしています。

Sqlite3 dbの最大ページサイズは非常に大きく、2 ^ 32768ですが、これにはいくつかの設定が必要です。インデックスではページ番号を指定する必要があると思いますが、結果として最初にOSまたは環境の制限に到達する可能性があります。

4
DigitalRoss

基本的に本当の制限はありません

詳細は http://www.sqlite.org/limits.html を参照してください

2
Martin Beckett

制限はありませんが、基本的にはある時点を過ぎると、sqliteデータベースは役に立たなくなります。 PostgreSQLは、巨大なデータベースにとって、FARによる無料のトップデータベースです。私の場合、8GB RAMとRaptorハードディスクを搭載したLinux 64ビットクアッドコアデュアルプロセッサコンピュータでは約100万行です。調整されたMySQLデータベースによっても、PostgreSQLは無敵です。( 2011年投稿)。

0
Erick