mysql中myisam和,Mysql中Innodb和Myisam之间的性能差异

这是一个惊人的巨大性能差异,但我可以想到一些可能有所贡献的事情.

MyISAM在历史上被视为比InnoDB更快,但对于最新版本的InnoDB,对于更小,更小的用例集来说也是如此.对于只读表的表扫描,MyISAM通常更快.在大多数其他用例中,我通常发现InnoDB更快.通常快很多倍.在我使用MySQL的大部分时间里,表锁是MyISAM的丧钟.

MyISAM在其密钥缓冲区中缓存索引.也许您已经将密钥缓冲区设置得太小,无法有效地缓存大型表的索引.

MyISAM依赖于OS来缓存OS磁盘缓存中的.MYD文件中的表数据.如果操作系统内存不足,它将开始转储其磁盘缓存.这可能会迫使它继续从磁盘读取.

InnoDB将索引和数据缓存在自己的内存缓冲区中.如果将innodb_flush_method设置为O_DIRECT,则可以告诉操作系统不要使用其磁盘缓存,但OS X不支持此操作.

InnoDB通常在16kb页面中缓冲数据和索引.根据您在查询之间更改@eid值的方式,由于来自先前查询的磁盘读取,它可能已经缓存了一个查询的数据.

确保以相同方式创建索引.使用explain来检查MySQL是否正在使用索引.由于您包含了describe的输出而不是show create table或show indexes from,我无法判断entity_id是否是复合索引的一部分.如果它不是复合索引的第一部分,则不会使用它.

如果您使用的是相对现代版本的MySQL,请在运行查询之前运行以下命令:

set profiling = 1;

这将打开您的会话的查询分析.运行查询后,运行

显示档案;

这将显示可用配置文件的查询列表.我认为它默认保留最后20个.假设您的查询是第一个,请运行:

显示查询1的个人资料;

然后,您将看到运行查询的每个阶段的持续时间.这对于确定什么(例如,表锁定,排序,创建临时表等)导致查询变慢非常有用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值