当前位置: 网学 > 编程文档 > SQL SERVER > 正文

MyISAM vs InnoDB

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/19
下载{$ArticleTitle}原创论文样式

随着公司业务的进一步扩展,服务器所承受的用户也越来越多,我也琢磨着怎么进一步提高数据库服务器的负载能力。我查到一些资料,InnoDB支持事务,支持行级锁,而且比MyISAM更具有伸缩性,MyISAM对于读取多写入少的数据库更好。

公司只有一台数据库服务器,是租用的万网双线机房的服务器(独享II型),配置并不好:

     
  • CPU:PD2.8G(双核)

     

  • 内存:1G DDRII

     

  • 硬盘:SATA -80G

     

  • 网卡:双1000M

安装的CentOS 3.2——万网没有别的Linux操作系统,可能都是预先安装好,拿来就可以用。

我安装了MySQL 5.0,用的是从MySQL网站上下载的RPM包。

公司的数据库的操作中,更新和插入占了大部分,而一般的网页型的网站则大部分仅仅是查询,很多还可以被缓存,将公司的数据库查询的记录和我的BLOG的数据库查询的记录做个对比:

(注:公司的服务器上使用了memcached,应用层将大部分记录缓存于此减轻数据库压力,所以在图上看不到多少Cache hit)
这样,我武断地认为,因为公司的数据库主要是插入和更新这些操作,所以应该采用InnoDB格式才能更好地发挥效果。而事与愿违,在转换了格式之后,性能却出现了大幅度下滑,在每天的定时数据统计期间,还可能会导致数据库大量连接阻塞,查看了性能图像之后,发现是CPU大量的时间都用于I/O等待上了:

对应的IO状态的性能图志:

大家可以从图看上到,使用了InnoDB的几天在图中间反应为大量的磁盘写操作,于是之后我又切换回MyISAM,可见MyISAM的写操作少得多。

为什么会导致这种情况发生呢?

可能和InnoDB的性质有关。InnoDB是ACID的,这种ACID的数据库都对磁盘的IO性能要求很高,也要求更大的内存。很多数据库服务器往往都使用SCSI RAID,动辄4G、8G甚至16G内存——由于我对数据库的研究并不是很深,我隐约记得InnoDB有个会导致性能下降的双重写入问题,以及log的flush问题(向达人求证)。而公司租用的这台服务器,内存小,硬盘也只是SATA的,瓶颈是十分明显的。

当然,据很多测试表明,在高配的情况下,InnoDB有更大的优势——就好比谁会在这种机器上装Oracle呢?即使Oracle在这种机器上表现差,又有谁会质疑Oracle的强大呢?

所以我的结论是,如果数据库的硬件配置低,而应用又对事务等高级特性要求不是很高的话,可以依然采用MyISAM。

Comments

  1. g.zhen.ning 2008-04-08 at 18:Apr #

    将公司的数据库查询的记录和我的BLOG的数据库查询的记录做个对比
    =
    很好奇,这是用哪个软件得得出的结果呢。
    还有,为什么不自己装服务器去托管而选择租用万网的呢?(自己的服务器怎么也装个centos5.1是吧)
    最后我想问一下,下面这个能发声音回复的验证码是哪个插件来的?


  2. ShiningRay 2008-04-08 at 21:Apr #

    @g.zhen.ning

    1. 租用万网的服务器和机房是老板决定的,当然也准备再购买新的服务器
    2. 图像都是用Munin记录的
    3. 插件的名字右下角有,叫reCaptcha

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号