加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql必读Mysql 的存储引擎,myisam和innodb的区别

发布时间:2020-12-12 01:05:19 所属栏目:MySql教程 来源:网络整理
导读:《Mysql必读Mysql 的存储引擎,myisam和innodb的区别》要点: 本文介绍了Mysql必读Mysql 的存储引擎,myisam和innodb的区别,希望对您有用。如果有疑问,可以联系我们。 简单的表达.? MyISAM 是非事务的存储引擎.? innodb是支持事务的存储引擎.? ? innodb的引

《Mysql必读Mysql 的存储引擎,myisam和innodb的区别》要点:
本文介绍了Mysql必读Mysql 的存储引擎,myisam和innodb的区别,希望对您有用。如果有疑问,可以联系我们。

简单的表达.?
MyISAM 是非事务的存储引擎.?
innodb是支持事务的存储引擎.?
?
innodb的引擎比较适合于插入和更新操作比较多的应用?
而MyISAM 则适合用于频繁查询的应用?
?
MyISAM --表锁.?MYSQL数据库

innodb--设计合理的话是行锁.?
MyISAM 不会出现死锁.?
?
最大的区别就是MYISAM适合小数据,小并发;INNODB 适合大数据,大并发.最大的区别就是在锁的级别上.?
?
MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持. MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能.综述,就可以根据数据表不同的用处是用不同的存储类型.而且MyISAM是文件存储的,可以进行直接在不同操作系统间拷贝使用.??
MYSQL数据库

InnoDB:?MYSQL数据库

InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表.InnoDB 提供了行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs).这些特性均提高了多用户并发操作的性能表现.在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的列锁定(row level locks)适宜非常小的空间.InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎.InnoDB 的设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的.在技术上,InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 在主内存中建立其专用的缓冲池用于高速缓冲数据和索引. InnoDB 把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在 MyISAM 中,表被存放在单独的文件中.InnoDB 表的大小只受限于操作系统的文件大小,一般为 2 GB.InnoDB所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,可以拷贝文件或用navicat for mysql.??
MYSQL数据库

MyISAM?MYSQL数据库

每张MyISAM 表被存放在三个文件 :frm 文件存放表格定义. 数据文件是MYD (MYData) . 索引文件是MYI (MYIndex) 引伸.?
因为MyISAM相对简单所以在效率上要优于InnoDB,小型应用使用MyISAM是不错的选择.?
MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦MYSQL数据库

以下是一些细节和具体实现的差别:MYSQL数据库

1.InnoDB不支持FULLTEXT类型的索引.
2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可.注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的.
3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引.
4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除.
5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用.MYSQL数据库

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读