Chinaunix首页 | 论坛 | 博客
  • 博客访问: 45671
  • 博文数量: 25
  • 博客积分: 851
  • 博客等级: 准尉
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-15 20:46
文章分类

全部博文(25)

文章存档

2011年(16)

2010年(9)

我的朋友

分类: Mysql/postgreSQL

2011-05-01 23:52:42

主要参考《PHP与MySQL程序设计》第三版的第28章

MyISAM

这个存储引擎无法处理事务。它主要适用于

  • 查询密集的表。在大数据量中查询速度很快。
  • 插入密集的表。允许同时查询和插入数据,很适合管理邮件和Web服务器日志数据。

MyISAM已被做了很多优化,被分为三种类型:静态、动态和压缩。

  • 静态类型。如果所有表列都是静态的(即不使用xBLOB, xText或VARCHAR数据类型),就是静态类型。静态类型的核心思想是以空间换时间,都是定长的数据类型,所以访问肯定比变长数据类型更快,也更优化,只不过空间利用率比较低。
  • 动态类型。如果至少有一个表列是动态的(即使用xBLOB, xText或VARCHAR数据类型),就是动态类型。动态类型的空间利用率较高,但是如果变长数据类型的数据发生了变更,可能需要移动数据的位置,导致有碎片的产生,随着数据碎片的增加,会导致数据访问性能的下降。
  • 压缩类型。如果某些表在整个生命周期中都是只读的,可以将其转化为MyISAM压缩表来节省空间。


InnoDB

这是一个健壮的事务性数据引擎,并引入了行级锁定和外键约束。它主要适用于

  • 更新密集的表。特别适合处理多重并发的更新请求。
  • 事务。是唯一支持事务的MySQL标准数据引擎。
  • 自动灾难恢复。能够自动从灾难中恢复。

Memory

即原来的Heap数据引擎,数据存储在内存中,当mysqld守护进程崩溃时,所有数据会丢失。它主要适用于

  • 可以忽略的数据。
  • 临时的数据。

Merge

一般用于存储时间特定的数据,如航班信息、销售日志或者服务器日志等。可以将数据按照不同的月份分成多张表,每个表可以使用前面所述的MyISAM引擎,这样在查询和插入式就比较方便,不用写很复杂的SQL语句。(PS:具体怎么用?)

 

还有其他几种数据引擎,如Csv,Archive,Federated等等。

阅读(452) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~