キーサイズが 256 バイト、値サイズが 4096 バイトの単純な sqlite3 テーブル ( create table data (key PRIMARY KEY,value)
) を指定します。この sqlite3 テーブルの最大行数の制限 (ディスク容量の制限を無視) は? 制限は OS (win32、linux、または Mac) に関連付けられていますか?
7 に答える
2017 年 1 月現在、sqlite3 制限ページでは、データベースの最大サイズである 140 テラバイトに基づいて、この質問に対する実際的な制限を定義しています。
テーブルの最大行数
テーブル内の理論上の最大行数は 2^64 (18446744073709551616 または約 1.8e+19) です。データベースの最大サイズである 140 テラバイトに最初に到達するため、この制限には到達できません。140 テラバイトのデータベースは、約 1e+13 行を超えることはできません。これは、インデックスがなく、各行に含まれるデータが非常に少ない場合に限られます。
したがって、データベースの最大サイズが 140 テラバイトの場合、実際にデータを含む有用なテーブルがある場合、行数はデータのサイズによって制限されるため、幸運にも最大 1 兆行を取得できます。140 TB のデータベースには、おそらく数十億の行が含まれる可能性があります。
サイズが 3.3 GB の SQLite データベースがあり、2,500 万行の数値ログが格納されており、それらに対して計算を行っていますが、高速かつ適切に動作しています。
SQLite3 では、フィールド サイズは固定されていません。エンジンは、各セルに必要なだけのスペースをコミットします。
ファイルの制限については、この SO の質問を参照してください:
非常に大きなデータベース ファイルを使用した sqlite のパフォーマンス特性は何ですか?
あなたが望む答えはここにあります。
あなたが言及した各OSは、複数のファイルシステムタイプをサポートしています。実際の制限は、OS ごとではなく、ファイルシステムごとになります。SO の制約マトリックスを要約するのは困難ですが、一部のファイル システムではファイル サイズに制限が課されていますが、今日の主要な OS カーネルはすべて、非常に大きなファイルを含むファイル システムをサポートしています。
sqlite3 データベースの最大ページ サイズは非常に大きく、2^32768 ですが、これにはいくつかの設定が必要です。インデックスはページ番号を指定する必要があると思いますが、その結果、OS または環境の制限に最初に到達する可能性があります。
本質的に本当の制限はありません
詳細については、 http://www.sqlite.org/limits.htmlを参照してください。
制限はありませんが、基本的にある時点以降、sqlite データベースは役に立たなくなります。PostgreSQL は、大規模データベース向けの無料データベースとしては圧倒的にトップです。私の場合、8GB RAM と Raptor ハードディスクを搭載した Linux 64 ビット クアッド コア デュアル プロセッサ コンピュータでは、約 100 万行です。PostgreSQL は、チューニングされた MySQL データベースでさえも無敵です。(2011年投稿)。