우리가 작업하고있는 새로운 프로젝트는 많은 데이터 분석이 필요했지만 매우 느린 것으로 밝혀졌으며 소프트웨어 또는 하드웨어로 접근 방식을 변경할 방법을 찾고 있습니다.방대한 DB와 mysql
우리는 현재 (리눅스)는 아마존 EC2 인스턴스에서 실행중인:
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)
당신이 할 수 :
DB를의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
한 부분은 기사와 기업 및 예를 들어, 링크 테이블 아래의 표를 보면 우리는 하루에 10 만회 이상의 비율로 성장하는 많은 물질을 가지고 있습니다.
mysql> SELECT count(*) FROM articles_entities;
+----------+
| count(*) |
+----------+
| 2829138 |
+----------+
1 row in set (0.00 sec)
아래와 같은 간단한 쿼리가 너무 많은 시간 (12 초)을 복용
mysql> SELECT count(*) FROM articles_entities WHERE relevance <= .4 AND relevance > 0;
+----------+
| count(*) |
+----------+
| 357190 |
+----------+
1 row in set (11.95 sec)
우리는 우리의 조회 시간을 개선하기 위해 고려되어야한다 무엇
? 다른 DB 스토리지? 다른 하드웨어.
테이블에 제대로 색인이 생성되어 있습니까? –
제공되는 테이블 덤프에서 분명하지 않습니까? – Lizard
MyISAM 또는 InnoDB 테이블, MyIsam이 훨씬 빠릅니다 .. – B4NZ41