Inno DB与MyIsam数据库存储引擎区别

本文探讨了InnoDB和MyISAM两种数据库存储引擎的主要区别,包括崩溃恢复、数据存储、索引类型、锁级别、事物处理、外键支持等方面,指出InnoDB适合事务安全和行级锁定,而MyISAM则在全文检索和非事务场景下有优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.InnoDB是由芬兰InnoDB Oy公司开发的存储引擎

(1).如果数据库奔溃,它使用日志来恢复,不需要完全重建索引或表-只需要要通过日志恢复到一个点

(2).InnoDB默认数据与索引是存储在一个文件中的,也可以 通过配置,存储到不同文件中

(3).物理上以主键顺序来存储数据,支持聚集索引

(4).读取和写入缓存操作,都是通过自己的函数,不是通过操作系统

(5).他支持原始磁盘分区,说明可以有一个内部格式的磁盘分区,磁盘分区作用类似表空间自身作用

(6).支持ACID兼容事物处理

(7).支持行级别锁定,但是如果不确定行扫描范围,会锁定整个表,例如:update tableName set id=3 where name like "%abc%";

select时不会锁定读取操作

(8).支持外键,一个外键是一个对表的索引,引用另外一个表的主键或唯一键,确定插入引用表的数据指向的索引,在被引用表中存在

(9).不支持FULLTEXT索引

(10).不保存表的具体行数,执行select count(*) from tableName时;InnoDB扫描整个表,但是MyIsam保存具体行数,但是select count(*) from tableName where id='1'时,InnoDB与MyIsam都要扫描整个表

(11).对应AUTO_INCREMENT字段,必须有索引,但是MyIsam可以与其他字段 建立联合索引

(12).Delete  from tableName;不会重新建立表,而是一行行的删除

(13).Load tableName from Master操作,不适用InnoDB,解决方案:把InnoDB表改成MyIsam表,导入数据后,再改成InnoDB表,但是有外键的InnoDB表不适用

(14).是事物安全的,默认打开AutoCommit, 如果执行一条sql,就自动提交,影响性能;如果执行sql前调用begin,再插入多条sql语句,再手动commit,性能更好


2.MyIsam是由IBM开发的,基于Isam,Index Sequence access Method(索引顺序访问方法),是存储文件和记录标准方法,与其他存储引擎相比,具有修复和检查表格大多数工具,

MyIsam表格支持压缩 ,如果执行大量Select操作,MyIsam是更好选择支持全文检索

不支持事物安全,不支持外键





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值