mysql数据表引擎InnoDB和MyISAM的特点

本文详细介绍了MySQL的InnoDB和MyISAM两种表引擎的特点,包括MyISAM的高读取效率、不支持事务以及InnoDB的行级锁定和事务安全性。还探讨了两者的差异,如InnoDB支持外键和行锁,MyISAM在写入时锁表。同时,文中进行了事务测试,并讨论了如何切换和优化表引擎以提升性能。
摘要由CSDN通过智能技术生成

1、MyISAM表引擎特点

(1)MyISAM 是MySQL缺省存贮引擎

(2)具有检查和修复表格的大多数工具. 

(3)表格可以被压缩

(4)支持全文搜索.

(5)不是事务安全的.如果事物回滚将造成不完全回滚,不具有原子性。

(6)不支持外键。

(7)如果执行大量的SELECT,MyISAM是更好的选择。

(8)每张MyISAM 表被存放在三个文件 :frm 文件存放表格定义,数据文件是MYD (MYData),索引文件是MYI (MYIndex) 引伸。

(9)表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦

(10)较好的键统计分布

(11)较好的auto_increment处理
总结:

读取操作在效率上要优于InnoDB.小型应用使用MyISAM是不错的选择.并发性弱于InnoDB。

2、innodb表引擎特点

 (1)提供了具有事务提交、回滚和崩溃修复能力的事务安全型表。

(2)提供了行锁,提供与 Oracle 类型一致的不加锁读取。

(3)表中不需要扩大锁定,因为 InnoDB 的列锁定适宜非常小的空间。

(4)提供外键约束。

(5)设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。

(6)在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。 

(7)把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在MyISAM 中,表被存放在单独的文件中。

(8)表的大小只受限于操作系统的文件大小,一般为 2 GB。
(9)所有的表都保存在同一个数据文件 ibdata1 中(也可能是使用独立的表空间文件的多个文件,使用共享表空间时比较不好备份单独的表),免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump。

总结:

这些特性均提高了多用户并发操作的性能表现。

注意:

对于支持事物的InnoDB类型的表,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。即使autocommit打开也可以,可以在执行sql前调用begin,多条sql形成一个事务;或者不打开AUTOCOMMIT配置,将大大提高性能。

3、MyISAM表和InnoDB表差别

(1)InnoDB类型支持事务处理,MyISAM类型不支持

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值