首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InnoDB或MyISAM表在MySQL 5.1中提供了更好的插入性能吗?

问InnoDB或MyISAM表在MySQL 5.1中提供了更好的插入性能吗?
EN

Server Fault用户
提问于 2011-02-17 08:25:59
回答 3查看 3.6K关注 0票数 2

我需要尽可能快地将行插入到新创建的表和没有索引的数据库中。我看的是2000万行,没那么多。InnoDB或MyISAM表会给我最好的性能吗?

显然,还有其他批处理加载技巧,我也在看。

EN

回答 3

Server Fault用户

回答已采纳

发布于 2011-02-17 08:35:02

InnoDB是事务性的,所以不用担心原子写入的MyISAM会更快。

票数 6
EN

Server Fault用户

发布于 2011-02-17 08:32:54

对于您描述的情况,MyISAM将比InnoDB更快。如果您只是希望尽可能快地将数据输入MySQL,请查看负载数据信息。

票数 2
EN

Server Fault用户

发布于 2011-04-21 16:08:02

这里有些事情还没人提过。

如果将MyISAM表的行格式从动态(默认)转换为固定格式,则可以将表的总体性能提高至少20%。

根据MySQL数据库设计和调优的第71-73页(isbn0-672-32756-1),只需在任何MyISAM表上运行以下命令:

代码语言:javascript
复制
ALTER TABLE tblname ROW_FORMAT=FIXED;

对于该表的查询,您将获得很好的性能提升。

书中给出的示例说明,对动态行MyISAM表的查询执行固定行MyISAM表需要花费50%的时间。如果使用固定行MyISAM表并使用myisampack对其进行压缩,则压缩的固定行MyISAM表的查询速度比未压缩的固定行MyISAM表快10%。

这种做法有一个严重的缺点?固定行MyISAM表至少是其动态行MyISAM表的两倍。所以,你可以用速度来换取空间,你应该选择固定行的MyISAM表。然后,所有查询都会更快,而不会发生任何额外的表结构更改。

您还可以对一个ROW_FORMAT=FIXED表运行InnoDB表tblname;。如果您对InnoDB和MyISAM存储引擎中的表都这样做,您仍然没有一个公平的竞争环境。边缘总是指向MyISAM。原因是?所有非唯一索引查找都必须遍历非聚集索引,然后通过聚集索引进行rowid访问。MyISAM索引最多只经过一个索引。

我不只是猜测这件事。大约4年前,我亲自使用了一个2GB的表,运行了ALTER,并将其扩展到3.7GB。所有结果查询的平均速度比进行行格式更改之前的运行速度快20%。

如果您想要提高性能,并且不介意增加文件大小,我强烈建议对所有的MyISAM和InnoDB都这样做。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/236630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档