MySQL的数据表

MySQL中主要使用到三种数据表:MyISAM、InnoDB与HEAP。

HEAP是存储在内存中的数据表,如果计算机关闭或重启或者mysqld进程崩溃,数据表就不存在,而且无法恢复了,但是其速度飞快。HEAP的限制也比较多,不允许使用xxxTEXT和xxxBLOB数据类型,只允许使用=和<=>操作符来搜索记录(不允许使用<、>、<=或=>操作符);不支持AUTO_INCREMENT属性;只允许对NOT NULL数据列进行索引。

InnoDB与MyISAM都是存储在硬盘上的数据表,其中InnoDB是MySQL公司自己开发的引擎,而InnoDB是另外一家公司开发的,在进行商业授权时,支持InnoDB的价格要贵一点,但是InnoDB支持事务,而MyISAM不支持事务。
相较于MyISAM,InnoDB有以下优点:
  1. 支持事务:就是一大串指令一起执行,如果中间有一行出错,那么恢复到这串指令执行前的状态(我是这么理解的)。
  2. 数据行级锁定
  3. 外键约束条件(这个我还不太清楚,等清楚了再详细说明)
  4. 崩溃恢复:在发生崩溃后,InnoDB数据表能够迅速地自动恢复到一个稳定可用的状态。
InnoDB的单条数据记录长度占用8000个字节,TEXT和BLOB数据列列只有前512字节是存储在数据记录里的。
InnoDB存储空间占用量比MyISAM大的多,不支持全文索引,不能用来保存GIS数据,COUNT函数的速度比MyISAM的COUNT速度要慢的多。

MyISAM数据表:
MyISAM又分为静态(MyISAL Static)与动态(MyISAM Dynamic)两种。
        如果数据表里的数据列各自都有预先定义好的固定长度,MySQL自动选择静态数据表类型,这种表的数据存取效率非常高,安全性也相当高,即使出现文件受损或其他问题,数据记录的撮和恢复工作也比其他类型的数据表容易。
        如果在数据表里有且只有一个VARCHAR、xxxTEXT或xxxBLOB字段,MySQL将自动选择动态数据表类型,动态表对存储空间要小的多,如果对这类表进行频繁的更新,会产生很多碎片,要经常使用OPTIMIZE TABLE来优化。

可以使用myisamchk命令对MyISAM表进行压缩,表压缩后功能会受到很大限制,例如不能进行UPDATE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值