0

これはおそらく常識ですが、確認したいだけです。

マニュアルにあるように、SQLite は理論的には 1 日あたり最大 1,000,000 ヒットに対応できます。SQLite をデータの読み取りのみに使用し、(たとえば) データベース ファイルの 3 つのコピーを作成し、それらをランダムに読み取った場合、理論的には最大 3,000,000 ヒットまでパフォーマンスが向上しますか?同じライブラリ/コード?

例:

$choices[1] = 'db1.db';
$choices[2] = 'db2.db';
$choices[3] = 'db3.db';

$random = rand(1, 3);
$db_file = $choices[$random];

$db->read($db_file);
4

1 に答える 1

0

ファイルシステムのキャッシュにより多くの圧力をかけるため、パフォーマンスが向上するのではなく、悪化することが予想されます。

実際、速度が 3 分の 1 よりもはるかに悪い可能性があります。データベースが使用可能な RAM とほぼ同じサイズであり、各クエリでデータベース全体をスキャンする必要がある場合を考えてみましょう。コピーが 1 つしかない場合、クエリのコストはすべてのメモリをスキャンする時間です。3 つのコピーがあり、どれをランダムに使用するかを選択した場合、クエリの平均コストは、ディスクからデータベース全体を読み取る時間の 3 分の 2 にもなる可能性があります (アクセス パターンとキャッシュの削除ポリシーによって異なります)。また、ディスクはメモリよりも桁違いに遅いです。

スラッシングも参照してください。

于 2012-09-16T22:06:11.933 に答える