免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 933 | 回复: 0
打印 上一主题 下一主题

MySQL的存储引擎 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08: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等等。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP