0

25 億のレコード (2.5 Cr.) を含む 1 つのテーブルがあり、インデックス付きの列に基づいてレコードの数を取得しようとしています。同じことを実行するのに 115 秒かかります。

クエリ

Select count(1) from table1 where column=code

Table1: table with 2 billion (2 Cr.)
code gets resultset from DB with 1 to 10k rows,
Column is indexed. 

Server Details
Intel Xeon 3.10ghz
8 gb RAM

MySQL server 5.1
MySQL Connector 5.0.6

My.cnf details
Default Engine =InnoDB
Innodn_buffer_pool=4G

また、更新クエリに時間がかかりすぎます。mysql を調整する方法を提案してください。

4

1 に答える 1

1

20 億行のテーブルに 8G バイトの RAM はそれほど多くありません。

クエリはselectおそらくインデックスを読み取る必要がありますが、インデックスをメモリにロードする必要があります。これには、インデックスの 20 億行すべてをメモリにロードしてから使用する必要があります。115は少し長いように見えるかもしれませんが、信じられないほど長くはありません.

使用可能なメモリを使用していることを確認するために、メモリ設定を確認する必要があります。このサイズの問題に対して、より優れたハードウェアを購入することを検討してください。または、それが一般的なフィルタリング句である場合は、コードでテーブルを分割することもできます。

于 2013-04-01T18:16:09.847 に答える