千家信息网

MySQL中MyISAM引擎与InnoDB引擎性能比较

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,MySQL中MyISAM引擎与InnoDB引擎性能比较,基本上我们可以考虑使用InnoDB来替代我们的MyISAM引擎。MySQL表结构CREATE TABLE `myisam` (`id` int(
千家信息网最后更新 2026年11月01日MySQL中MyISAM引擎与InnoDB引擎性能比较

MySQL中MyISAM引擎与InnoDB引擎性能比较,基本上我们可以考虑使用InnoDB来替代我们的MyISAM引擎。

MySQL表结构

CREATE TABLE `myisam` (`id` int(11) NOT NULL auto_increment,

`name` varchar(100) default NULL,`content` text,PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gbk;

CREATE TABLE `innodb` (

`id` int(11) NOT NULL auto_increment,`name` varchar(100) default NULL,

`content` text, PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=gbk;

数据内容

$name = "heiyeluren";

$content = "MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:· MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。 ·MEMORY存储引擎提供"内存中"表。MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。 释:MEMORY存储引擎正式地被确定为HEAP引擎。· InnoDB和BDB存储引擎提供事务安全表。BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所有MySQL 5.1二进制分发版里,你可以按照喜好通过配置MySQL来允许或禁止任一引擎。·EXAMPLE存储引擎是一个"存根"引擎,它不做什么。你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。";

[插入数据-1] (innodb_flush_log_at_trx_commit=1)

MyISAM 1W:3/s

InnoDB 1W:219/s

MyISAM 10W:29/s

InnoDB 10W:2092/s

MyISAM 100W:287/s

InnoDB 100W:没敢测试

[插入数据-2] (innodb_flush_log_at_trx_commit=0)

MyISAM 1W:3/s

InnoDB 1W:3/s

MyISAM 10W:30/s

InnoDB 10W:29/s

MyISAM 100W:273/s

InnoDB 100W:423/s

[插入数据3] (innodb_buffer_pool_size=1024M)

InnoDB 1W:3/s

InnoDB 10W:33/s

InnoDB 100W:607/s

[插入数据4] (innodb_buffer_pool_size=256M, innodb_flush_log_at_trx_commit=1, set autocommit=0)

InnoDB 1W:3/s

InnoDB 10W:26/s

InnoDB 100W:379/s

[MySQL 配置文件] (缺省配置)

# MySQL Server Instance Configuration File

[client]

port=3306

[mysql]

default-character-set=gbk

[mysqld]

port=3306

basedir="C:/mysql50/"

datadir="C:/mysql50/Data/"

default-character-set=gbk

default-storage-engine=INNODB

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

max_connections=100

query_cache_size=0

table_cache=256

tmp_table_size=50M

thread_cache_size=8

myisam_max_sort_file_size=100G

myisam_max_extra_sort_file_size=100G

myisam_sort_buffer_size=100M

key_buffer_size=82M

read_buffer_size=64K

read_rnd_buffer_size=256K

sort_buffer_size=256K

innodb_additional_mem_pool_size=4M

innodb_flush_log_at_trx_commit=1

innodb_log_buffer_size=2M

innodb_buffer_pool_size=159M

innodb_log_file_size=80M

innodb_thread_concurrency=8

总结

可以看出在MySQL 5.0里面,MyISAM和InnoDB存储引擎性能差别并不是很大,针对InnoDB来说,影响性能的主要是 innodb_flush_log_at_trx_commit 这个选项,如果设置为1的话,那么每次插入数据的时候都会自动提交,导致性能急剧下降,应该是跟刷新日志有关系,设置为0效率能够看到明显提升,当然,同样你可以SQL中提交"SET AUTOCOMMIT = 0"来设置达到好的性能。另外,还听说通过设置innodb_buffer_pool_size能够提升InnoDB的性能,但是我测试发现没有特别明显的提升。

基本上我们可以考虑使用InnoDB来替代我们的MyISAM引擎了,因为InnoDB自身很多良好的特点,比如事务支持、存储过程、视图、行级锁定等等,在并发很多的情况下,相信InnoDB的表现肯定要比MyISAM强很多,当然,相应的在my.cnf中的配置也是比较关键的,良好的配置,能够有效的加速你的应用。

如果不是很复杂的Web应用,非关键应用,还是可以继续考虑MyISAM的,这个具体情况可以自己斟酌。

硬件配置

CPU : AMD2500+ (1.8G) 内存: 1G/现代 硬盘: 80G/IDE

软件配置

OS : Windows XP SP2 SE : PHP5.2.1 DB : MySQL5.0.37 Web: IIS6

备注:myisam引擎不支持事物,myisam在默认情部下使用的是hash索引而innodb使用的是btree索引,在互联网公司有很多业务采用的是读写分离的模式主用innodb 从用myisam

另外myisam适合查询 innodb适合更新

本文出自:http://www.phpq.net/mysql/myisam-innodb.html

[@more@]
引擎 存储 配置 数据 性能 事务 处理 支持 安全 应用 明显 良好 二进制 内存 情况 索引 被包 检索 测试 不同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 互联网佳科技有限公司 北京路客互联网科技有限公司 没上市的科技互联网公司 关于新基建和互联网科技 喔噻互联网科技 互联网科技小贷 太原新华互联网科技学校怎么样 汽车互联网创新科技园 互联网金融中的现代科技 厦门千工互联网科技有限公司 互联网媒体平台算高科技产业 健康食品互联网创新科技园项目 翼展科技 首家互联网医院 互联网在线教育科技创业 互联网科技公司营业执照怎么办理 皮皮虾互联网科技有限公司 互联网硬科技公司 世界互联网科技成果奖 中国科技和美国互联网 高科技互联网 互联网科技论文 科技创新互联网企业 互联网金融和金融科技 互联网科技项目计划书材料类 港股科技和互联网 未来五年的互联网科技 燊美集互联网科技有限公司 济南有互联网科技公司吗 珠海东科互联网科技有限公司
0