【发布时间】:2012-04-14 09:58:50
【问题描述】:
我有一个 mysql 表,其中包含超过 3000 万条记录,这些记录最初是使用 myisam 存储的。以下是对该表的说明:
我将对这个表运行以下查询,这通常需要大约 30 秒才能完成。我每次都会更改@eid 以避免数据库或磁盘缓存。
select count(fact_data.id)
from fact_data
where fact_data.entity_id=@eid
and fact_data.metric_id=1
然后我将此表转换为 innoDB 而不进行任何其他更改,之后每次运行查询时,相同的查询现在都会在一秒钟内返回。即使我随机设置@eid 以避免缓存,查询也会在一秒钟内返回。
我一直在研究这两种存储类型之间的差异,试图解释性能的显着提升,但一直没有找到任何答案。事实上,我读到的大部分内容都表明 Myisam 应该更快。
我正在运行的查询是针对本地数据库的,在测试时没有其他进程访问数据库。
【问题讨论】:
标签: mysql database innodb myisam