`
varsoft
  • 浏览: 2509300 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

MySQL中MyISAM引擎与InnoDB引擎性能简单测试

阅读更多

MySQL中MyISAM引擎与InnoDB引擎性能简单测试


[硬件配置]
CPU : AMD2500+ (1.8G)
内存: 1G/现代
硬盘: 80G/IDE

[软件配置]
OS : Windows XP SP2
SE : PHP5.2.1
DB : MySQL5.0.37
Web: IIS6


[MySQL表结构]

CREATETABLE`myisam`(
`id`
int(11)NOTNULLauto_increment,
`name`
varchar(100)defaultNULL,
`content`
text,
PRIMARYKEY(`id`)
)ENGINE
=MyISAMDEFAULTCHARSET=gbk;

CREATETABLE`innodb`(
`id`
int(11)NOTNULLauto_increment,
`name`
varchar(100)defaultNULL,
`content`
text,
PRIMARYKEY(`id`)
)ENGINE
=InnoDBDEFAULTCHARSET=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 配置文件] (缺省配置)

#MySQLServerInstanceConfigurationFile
[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的,这个具体情况可以自己斟酌。


参考URL:
http://dev.mysql.com/doc/refman/5.1/zh/index.html
http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb

分享到:
评论

相关推荐

    MyISAM引擎与InnoDB引擎性能的对比

    MySQL数据库系统提供了多种存储引擎,其中最常用的两种是MyISAM和InnoDB。它们各自具有独特的特性和适用场景,理解二者的性能差异对于优化数据库设计至关重要。 MyISAM引擎是MySQL早期的默认存储引擎,以其高速度和...

    mysql DB引擎myisam与innodB

    ### MySQL 数据库引擎 MyISAM 与 InnoDB 在 MySQL 数据库系统中,存在多种不同的存储引擎,其中最为人所熟知且广泛使用的两种是 MyISAM 和 InnoDB。这两种存储引擎各自具有独特的特点和适用场景。 #### InnoDB:...

    mysql更改引擎(InnoDB,MyISAM)的方法

    本文实例讲述了mysql更改引擎(InnoDB,MyISAM)的方法,分享给大家供大家参考。具体实现方法如下: mysql默认的数据库引擎是MyISAM,不支持事务和外键,也可使用支持事务和外键的InnoDB。 查看当前数据库的所支持的...

    mySql 存储引擎 启用 Innodb

    本文将详细介绍如何在MySQL中启用InnoDB存储引擎,并对比分析InnoDB与其他存储引擎(如MyISAM)之间的主要差异。 #### 二、InnoDB简介 InnoDB是MySQL数据库的一种默认存储引擎,自MySQL 5.5版本开始,默认启用...

    MySQL存储引擎MyISAM与InnoDB区别总结整理

    在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。 2、MyISAM与InnoDB存储引擎的主要特点 MyISAM存储引擎的特点是:表级锁、不支持事务和全文索引,适合...

    8.MySQL存储引擎--MyISAM与InnoDB区别1

    MySQL存储引擎--MyISAM与InnoDB区别 MySQL是一种关系型数据库管理系统,它支持多种存储引擎,每种存储引擎都有其特点和优缺。MyISAM和InnoDB是MySQL中最常用的两种存储引擎,它们都有其优缺点,本文将对比MyISAM...

    将MySQL从MyISAM转换成InnoDB错误和解决办法

    ### 将MySQL从MyISAM转换成InnoDB的错误与解决方法 #### 一、问题背景及概述 本文主要探讨了在将MySQL数据库从MyISAM引擎转换为InnoDB引擎时遇到的问题及其解决方法。作者最初使用的是一款仅支持MyISAM引擎的非...

    《MYSQL备份与恢复》之 Innodb与 MyISAM引擎

    《MYSQL备份与恢复》之 Innodb与 MyISAM引擎 一、系统环境 1.1 ubuntu 12.0.4 X86_64 1.2 percona-xtrabackup-2.0.3.tar.gz 1.3 xtrabackup简介 xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时...

    mysql架构与存储引擎(MySQL逻辑架构、InnoDB引擎、MyISAM引擎、存储引擎选择).docx

    除了InnoDB和MyISAM之外,MySQL还支持多种其他的存储引擎,如Memory、Archive、Federated等,这些引擎各有特色,可以满足不同的业务需求。 #### 四、存储引擎选择 选择合适的存储引擎对于保证数据库性能和稳定性至...

    mysql数据据存储引擎InnoDB和MyISAM的优势及区别分享.pdf

    MySQL 数据存储引擎 InnoDB 和 MyISAM 是 MySQL 中最常用的两个表类型,每种类型都有其优缺点,本文将详细介绍 InnoDB 和 MyISAM 的特点、优缺点和应用场景。 MyISAM MyISAM 是 MySQL 的默认存储引擎,它基于传统...

    MySQL内核:InnoDB存储引擎 卷1.pdf.zip

    深入学习《MySQL内核:InnoDB存储引擎 卷1》,读者可以了解到InnoDB的内部工作机制,如如何处理B+树索引、事务的提交与回滚、锁的实现以及内存管理等内容,这对于优化数据库性能、解决并发问题、设计高效的数据模型...

    myisam与innodb 区别 值得下载

    自己总结的 关于mysql存储引擎myisam innodb 的比较 两者区别 对面试会很有帮助

    MyISAM和InnoDB的异同

    MyISAM和InnoDB是MySQL中最常用的两种存储引擎,它们各自拥有不同的特点和适用场景。 #### MyISAM引擎概述 MyISAM是MySQL早期默认使用的存储引擎,它主要适用于读取密集型的应用场景。MyISAM支持表级锁定,这意味...

    MySQL存储引擎MyISAM与InnoDB的9点区别

    虽然MySQL里的存储引擎不只是MyISAM与InnoDB这两个,但常用的就是它俩了。可能有站长并未注意过MySQL的存储引擎,其实存储引擎也是数据库设计里的一大重要点,那么博客系统应该使用哪种存储引擎呢?下面我们分别来看...

    MySQL存储引擎之争-InnoDB与MyISAM全面对决

    综合来看,尽管InnoDB在事务和并发控制方面表现更优,已成为MySQL的默认存储引擎,但MyISAM在读密集型应用和空间敏感应用中仍有一定的优势。在选择存储引擎时,应根据实际应用的需求,如事务处理的重要性、并发用户...

    MySQL存储引擎中MyISAM和InnoDB区别详解

    MyISAM和InnoDB是MySQL中两种最常使用的存储引擎,它们各有特点,适用于不同的应用场景。 1. **事务处理**: - **InnoDB** 支持ACID(原子性、一致性、隔离性、持久性)事务,提供事务安全,适合需要事务处理的...

    Innodb与Myisam引擎的区别与应用场景

    ### Innodb与Myisam引擎的区别与应用场景 在MySQL数据库管理系统中,选择合适的存储引擎对于确保数据的安全性、完整性和性能至关重要。其中,InnoDB和MyISAM是最为常见的两种存储引擎,它们各自具备独特的特性和...

    数据库引擎 MyISAM 和 InnoDB 对比

    在MySQL数据库系统中,MyISAM与InnoDB是最常被提及的两种存储引擎。这两种引擎在功能、性能以及适用场景上存在显著差异,本文将深入探讨这两者之间的区别,并分析它们各自的优势及应用场景。 #### 一、基本概念 - ...

Global site tag (gtag.js) - Google Analytics