iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >InnoDB和MyISAM有哪些区别
  • 948
分享到

InnoDB和MyISAM有哪些区别

2024-04-02 19:04:59 948人浏览 薄情痞子
摘要

这篇文章主要讲解了“InnoDB和MyISAM有哪些区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“InnoDB和MyISAM有哪些区别”吧! 

这篇文章主要讲解了“InnoDB和MyISAM有哪些区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“InnoDB和MyISAM有哪些区别”吧!


 
MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量的SELECT,MyISAM是更好的选择。  www.2cto.com  
 
InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,
对于支持事物的InnoDB类型的标,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。
 
InnoDB和MyISAM是在使用Mysql最常用的两个表类型,各有优缺点,视具体应用而定。下面是已知的两者之间的差别,仅供参考。
innodb
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 中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,免费的方案可以是拷贝数据文件、备份 binlog,或者用 dump。  www.2cto.com  
 
MyISAM 
MyISAM 是MySQL缺省存贮引擎 .
每张MyISAM 表被存放在三个文件 。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI (MYIndex) 引伸。
因为MyISAM相对简单所以在效率上要优于InnoDB..小型应用使用MyISAM是不错的选择.
MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦
 
以下是一些细节和具体实现的差别:
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特性(例如外键)的表不适用。
另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”
任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。
 
以下是InnoDB和MyISAM的一些联系和区别!
1. 4.0以上mysqld都支持事务,包括非max版本。3.23的需要max版本mysqld才能支持事务。
2. 创建表时如果不指定type则默认为myisam,不支持事务。
可以用 show create table tablename 命令看表的类型。
2.1 对不支持事务的表做start/commit操作没有任何效果,在执行commit前已经提交,测试
执行一个msyql:  www.2cto.com  
use test;
drop table if exists tn;
create table tn (a varchar(10)) type=myisam;
drop table if exists ty;
create table ty (a varchar(10)) type=innodb;
begin;
insert into tn values('a');
insert into ty values('a');
select * from tn;
select * from ty;
 
都能看到一条记录
执行另一个mysql:
use test;
select * from tn;
select * from ty;
只有tn能看到一条记录
然后在另一边
commit;
才都能看到记录。
3. 可以执行以下命令来切换非事务表到事务(数据不会丢失),innodb表比myisam表更安全:
   alter table tablename type=innodb;
3.1 innodb表不能用repair table命令和myisamchk -r table_name
但可以用check table,以及mysqlcheck [OPTIONS] database [tables]
 
4. 启动my的命令行中添加了以下参数可以使新发布的mysql数据表都默认为使用事务(
只影响到create语句。)
--default-table-type=InnoDB
测试命令:  www.2cto.com  
use test;
drop table if exists tn;
create table tn (a varchar(10));
show create table tn;
 
5. 临时改变默认表类型可以用:
set table_type=InnoDB;
show variables like 'table_type';
或:
mysqld -max -nt --standalone --default-table-type=InnoDB
 

感谢各位的阅读,以上就是“InnoDB和MyISAM有哪些区别”的内容了,经过本文的学习后,相信大家对InnoDB和MyISAM有哪些区别这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: InnoDB和MyISAM有哪些区别

本文链接: https://www.lsjlt.com/news/59355.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • InnoDB和MyISAM有哪些区别
    这篇文章主要讲解了“InnoDB和MyISAM有哪些区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“InnoDB和MyISAM有哪些区别”吧! ...
    99+
    2024-04-02
  • Mysql中myisam和innodb的区别有哪些
    这篇文章给大家分享的是有关Mysql中myisam和innodb的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 (1)5点不同 1. 存储结构 &nb...
    99+
    2024-04-02
  • InnoDB和MyISAM有什么区别
    这篇文章主要讲解了“InnoDB和MyISAM有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“InnoDB和MyISAM有什么区别”吧! Inno...
    99+
    2024-04-02
  • InnoDB和MyISAM的区别
    一、数据存放结构不同 InnoDB和MyISAM是Mysql的两种存储引擎,所谓存储引擎,就是数据文件的组织方式,其最大的不同,就是数据存储的结构和方式不一样。InnoDB采用聚簇索引来存储数据,MyISAM采用非聚簇索引。 也就是说,In...
    99+
    2023-08-21
    数据库 mysql java
  • mysql和myisam有哪些区别
    今天小编给大家分享一下mysql和myisam有哪些区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2024-04-02
  • InnoDB和MyISAM的区别是什么
    InnoDB和MyISAM的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。InnoDB和MyISAM是许多人在使用MySQL时最常用...
    99+
    2024-04-02
  • MyISAM和InnoDB存储引擎的区别
    目录 前言存储引擎 区别事务外键表单的存储数据查询效率数据更新效率 如何选择 前言 MyISAM和InnoDB是使用MySQL最常用的两种存储引擎,在5.5版本之前默认采用MyISAM存储引擎,从5.5开始采用InnoD...
    99+
    2023-08-17
    数据库 mysql java
  • Mysql中MyISAM和InnoDB的区别及说明
    目录MyISAM和InnoDB的区别1. 定义2. 区别3. 使用MyISAM和InnoDB索引结构分析存储引擎作用于什么对象MyISAM和InnoDB对索引和数据的存储在磁盘上是如何体现的MyISAM主键索引与辅助索引...
    99+
    2022-12-26
    Mysql中MyISAM Mysql中InnoDB MyISAM和InnoDB的区别
  • mysql中MyISAM和InnoDB有哪些不同点
    本篇内容介绍了“mysql中MyISAM和InnoDB有哪些不同点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2022-11-30
    mysql myisam innodb
  • MySQL 中 InnoDB 和 MyISAM 的区别是什么
    今天就跟大家聊聊有关MySQL 中 InnoDB 和 MyISAM 的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  InnoDB 和 ...
    99+
    2024-04-02
  • MyISAM和InnoDB的主要区别和应用场景
    主要区别: 1).MyISAM是非事务安全型的,而InnoDB是事务安全型的。 2).MyISAM锁的粒度是表级,而InnoDB支持行级锁定。 3).MyISAM支持全文类...
    99+
    2024-04-02
  • Mysql中 InnoDB和MyISAM的区别是什么
    本篇文章给大家分享的是有关Mysql中 InnoDB和MyISAM的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 Inn...
    99+
    2024-04-02
  • MySQL中MyISAM与InnoDB区别是什么
    MySQL中MyISAM与InnoDB区别是什么?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!MyISAM和InnoDB的...
    99+
    2024-04-02
  • 浅谈一下MyISAM和InnoDB存储引擎的区别
    目录前言存储引擎区别事务外键表单的存储数据查询效率数据更新效率如何选择前言 MyISAM和InnoDB是使用mysql最常用的两种存储引擎,在5.5版本之前默认采用MyISAM存储引擎,从5.5开始采用InnoDB存储引...
    99+
    2023-04-28
    Mysql MyISAM Mysql InnoDB Mysql 存储引擎
  • mysql中myisam与innodb的区别是什么
    MyISAM和InnoDB是MySQL数据库中两种最常用的存储引擎,它们之间有一些重要的区别: ACID属性:InnoDB支持事...
    99+
    2024-03-15
    mysql myisam innodb
  • InnoDB和MyISAM有什么差异
    这篇文章主要讲解了“InnoDB和MyISAM有什么差异”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“InnoDB和MyISAM有什么差异”吧! ...
    99+
    2024-04-02
  • InnoDB的数据存储文件和MyISAM的不同有哪些
    这篇文章将为大家详细讲解有关InnoDB的数据存储文件和MyISAM的不同有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。为什么需要建立索引首先,我们都知道建立索引的...
    99+
    2024-04-02
  • mysql数据存储引擎InnoDB和MyISAM的优势及区别是什么
    这篇文章主要介绍“mysql数据存储引擎InnoDB和MyISAM的优势及区别是什么”,在日常操作中,相信很多人在mysql数据存储引擎InnoDB和MyISAM的优势及区别是什么问题上存在疑惑,小编查阅了...
    99+
    2024-04-02
  • MySQL存储引擎MyISAM与InnoDB区别总结整理
    1、MySQL默认存储引擎的变迁 在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。 2、MyISAM与InnoDB存储引擎...
    99+
    2024-04-02
  • MyISAM和InnoD的基本区别
    MyISAM和InnoD的区别有:InnoDB支持事务,MyISAM不支持。InnoDB支持外键,而MyISAM不支持。InnoDB是聚集索引,而MyISAM是非聚集索引,不过都是使用B+Tree作为索引结构。Innodb不支持全文索引,而...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作