私たちが取り組んでいる新しいプロジェクトでは、多くのデータ分析が必要でしたが、これは非常に遅いと感じています。ソフトウェアやハードウェアでアプローチを変更する方法を探しています。我々は現在のAmazon EC2インスタンス(Linux)の上で実行されているMassive DBとmysql
:
mysql> DESCRIBE articles_entities;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id | char(36) | NO | PRI | NULL | |
| article_id | char(36) | NO | MUL | NULL | |
| entity_id | char(36) | NO | MUL | NULL | |
| created | datetime | YES | | NULL | |
| modified | datetime | YES | | NULL | |
| relevance | decimal(5,4) | YES | MUL | NULL | |
| analysers | text | YES | | NULL | |
| anchor | varchar(255) | NO | | NULL | |
+------------+--------------+------+-----+---------+-------+
8 rows in set (0.00 sec)
することができますように:デシベルの
High-CPU Extra Large Instance
7 GB of memory
20 EC2 Compute Units (8 virtual cores with 2.5 EC2 Compute Units each)
1690 GB of instance storage
64-bit platform
I/O Performance: High
API name: c1.xlarge
processor : 7
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel(R) Xeon(R) CPU E5506 @ 2.13GHz
stepping : 5
cpu MHz : 2133.408
cache size : 4096 KB
MemTotal: 7347752 kB
MemFree: 728860 kB
Buffers: 40196 kB
Cached: 2833572 kB
SwapCached: 0 kB
Active: 5693656 kB
Inactive: 456904 kB
SwapTotal: 0 kB
SwapFree: 0 kB
一部は記事やエンティティと例えばリンクテーブルです下記の表から、1日あたり10万以上の率で成長する多くの物質があることを確認してください。
mysql> SELECT count(*) FROM articles_entities;
+----------+
| count(*) |
+----------+
| 2829138 |
+----------+
1 row in set (0.00 sec)
以下のような単純なクエリでは、我々は、ルックアップ時間を改善するために何を考慮しなければならない
mysql> SELECT count(*) FROM articles_entities WHERE relevance <= .4 AND relevance > 0;
+----------+
| count(*) |
+----------+
| 357190 |
+----------+
1 row in set (11.95 sec)
あまりにも多くの時間(12秒)を取っていますか?異なるDBストレージ?異なるハードウェア
あなたのテーブルは適切にインデックスされていますか? –
提供されているテーブルダンプからはそれほど明白ではありませんか? – Lizard
MyISAMまたはInnoDBテーブル、MyIsamの方がはるかに高速です。 – B4NZ41