MySQL不同版本间的性能比较

该博客对比了MySQL 3.23, 4.0, 4.1, 和 5.0 Beta版本的性能,发现在基本操作如插入、查询、修改和删除上,3.23版表现最优。4.0及之后版本由于引入查询缓存导致查询效率降低。Intel C++ Compiler编译的版本并未表现出显著优势。测试表明,随着数据量增加,插入性能稳定,查询性能轻微下降,主要瓶颈在于I/O。尽管升级带来了新功能和稳定性,基础功能性能提升有限。" 52489691,1344900,使用败者树优化多路归并排序,"['算法', '排序算法', '数据结构', '外部存储', '优化']
摘要由CSDN通过智能技术生成

1         MySQL不同版本间的性能比较

不知道大家初次见到MySQL是何种感觉,反正我见到MySQL3.23时很不以为然,没有视图,没有事务,没有触发器,没有子查询,没有存储过程,没有……,懒得提了,但是要说是今天MySQL5.0的能力已经得到了很大的提升,至少上面说明的这些问题,MySQL已经解决了大部分了。

1.1         比较的版本

选择比较的版本是3.23版本,4.0版本, 4.1版本,5.0 Beta版本。其中3.23版本为MySQL的最早的可用版本,XXX等产品也一直在使用,4.0MySQL支持查询缓冲的版本,也有很多产品使用。MySQL 4.15.0版本为较新的版本,支持一些新的特性。

MySQL的安装可以使用源代码自己编译,也可以使用MySQL官方提供的编译版本,相对而言官方提供的静态编译版本比较容易安装(动态编译的版本要依赖glibc库版本)

另外MySQL提供从4.1以后的提供了Intel C++ Compiler编译的版本,据称Intel C++ Compiler的版本比GCC编译的版本速度要快20%以上,所以也找来看看。

从下面这个表,我们也可以看出MySQL发展史和各个版本的基本特点,可以看出MySQL从一个过家家类型的数据库开始越来越像一个成熟的商用数据库了。

                                                                                                                                                                   表1 测试的版本

 

说明

版本特点

MySQL 3.23.51

公司内部分产品使用的版本,

为自己用gcc编译

MySQL 3.23.55

官房网站下载的3.23gcc编译static版本

3.23的一个成熟版本

MySQL 4.0 gcc

官房网站下载的gcc编译static版本下载4.0版本,公司相当产品使用

提供了查询Cache

提供了FULLTEXT的文本检索索引

提供了嵌入式的MySQL

InnoDB开始成为内建引擎,InnoDB支持事务,外键,操作行锁定等特性

可以动态调整MySQL的某些运行参数, ”SET”

部分功能性能提升,如批量插入,

功能增加,如TRUNCATEUNION查询等

MySQL 4.1 gcc

官房网站下载的gcc编译static版本

提供的新特性

子查询的功能,SELECT的嵌套

使用MYSQL_STMT加快了C/S通讯速度,

增加了一些新函数

MySQL 4.1 icc

官房网站下载的intel c++ 编译4.1版本,要intel的动态库支持

Intel C++编译的版本号称速度要快20%以上

MySQL 5.0 gcc (beta)

最新的MySQL版本,官房网站下载版本

从这个版本开始MySQL开始真正像一个商用数据库了。

MySQL5.0的正式颁布已经发布

提供很多成熟商业数据库的特性,

视图,以及相关一些管理功能

存储过程,光标

触发器,已经支持时间和事件触发

VARCHAR长度的增加

InnoDB支持分布式事务

支持一些新的存储引擎(ARCHIVE,只支持插入和查询操作,FEDERATED, 访问远程数据)

 

1.2         测试的方法和结果

分别,插入,查询,修改,删除,1000000500000010000000,条记录。尝试MySQL在不同的记录数量级别下的表现。表不进行压缩存储。

测试环境使用使用MyISAM数据库引擎,配置中比较关键的参数为,对于4.0后的查询版本使用查询Cache。同时为了模拟真实环境,记录二进制日志。

使用的关键参数为:

set-variable = key_buffer_size= 384M

set-variable = query_cache_size= 384M

set-variable    = sort_buffer_size = 1M

set-variable    = read_buffer_size= 1M

set-variable    = table_cache=256

1.      测试采用脚本分组进行,每次测试前删除掉原来的数据,同时删除掉二进制日志(可能flush-log一下更好)。每次操作前sleep 20秒。

2.      插入记录为插入0-N条记录,每次单条插入。

3.      查询为每次查询一条的N次查询。遍历所有的记录。查询使用主键作为查询条件。查询操作完成转储结果集的操作。

4.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值