`

详解“InnoDB”和“MyISAM”的不同之处

阅读更多

作者:秦含月 来源:赛迪网

 

InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。 

 

  MyIASM是IASM表的新版本,有如下扩展: 

 

  ·二进制层次的可移植性。 

 

  ·NULL列索引。 

 

  ·对变长行比ISAM表有更少的碎片。 

 

  ·支持大文件。 

 

  ·更好的索引压缩。 

 

  ·更好的键吗统计分布。 

 

  ·更好和更快的auto_increment处理。 

 

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

 

  ◆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的性能优势。

分享到:
评论

相关推荐

    MySQL存储引擎中MyISAM和InnoDB区别详解

    InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度...

    MySQL存储引擎中的MyISAM和InnoDB区别详解

    在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问。为了解开这个谜题,搜寻了网络,找到了如下信息: MyISAM是MySQL的默认数据库引擎(5.5版之前),由...

    MySQL Innodb 索引原理详解

    ### MySQL Innodb 索引原理详解 #### 1. 各种树形结构 在深入探讨MySQL Innodb索引之前,我们先了解几种基本的树形数据结构,包括二叉搜索树、B树、B+树以及B*树。 ##### 1.1 搜索二叉树(Binary Search Tree) ...

    myisam和innodb的区别

    ### MySQL存储引擎详解:MyISAM与InnoDB的主要区别 #### 一、概述 MySQL作为一款广泛使用的开源关系型数据库管理系统,提供了多种存储引擎供用户根据不同的应用场景选择。其中最常用的两种存储引擎分别是MyISAM和...

    InnerDB和MyISAM引擎的区别最详解

    从InnoDB 和MyISAM 的概念、特性、优缺点、数据分布等方面,全面剖析“Mysql 中 MyISAM 和 InnoDB 的区别有哪些

    MySql Innodb 引擎特性详解

    ### MySQL Innodb 引擎特性详解 #### 一、MySQL Innodb 引擎概述 MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它提供了多种存储引擎以满足不同场景的需求。其中,InnoDB是最常用的一种存储引擎之一,...

    mySql 存储引擎 启用 Innodb

    ### MySQL存储引擎启用InnoDB详解 #### 一、引言 在MySQL数据库系统中,存储引擎扮演着极其重要的角色,它决定了数据如何被存储、检索和管理。其中,InnoDB作为MySQL中最常用的存储引擎之一,提供了众多高级特性,...

    Mysql面试题详解(个人整理)

    - **可移植性和备份恢复**:MYISAM数据文件独立,易于跨平台迁移和单独备份,InnoDB依赖于数据文件和日志,备份恢复相对复杂。 - **存储方式**:MYISAM支持静态、动态和压缩表,适应不同场景的需求。 了解这些...

    innoDB 索引结构详解

    在内存结构和缓存机制上,InnoDB将数据和索引都存储在.ibd文件中并缓存到内存,而MyISAM只缓存索引,不缓存数据文件,因此对于`SELECT COUNT(*)`这样的操作,InnoDB可以直接从计数器获取,而MyISAM则需要扫描全表。...

    InnoDB5项最佳实践

    ### InnoDB最佳实践详解 #### 一、关于`COUNT(*)` **知识点:** - MyISAM存储引擎直接存储总行数,因此对于`SELECT COUNT(*)`这类查询操作能够迅速返回结果。 - InnoDB则需要逐行扫描计算总数,因此对于大规模数据...

    Innodb存储引擎浅析—事务系统

    主要的存储引擎包括MyISAM和InnoDB。其中,InnoDB因为其强大的事务处理能力而被广泛应用于需要高可靠性和一致性的场景中。 #### MyISAM简介 - **特性**: - 不支持事务; - 读写速度快; - 可压缩,占用空间小...

    mysql事务与锁机制(存储引擎和锁、MyISAM锁机制、InnoDB锁机制、Next-Key锁、Dead-Lock).docx

    ### MySQL事务与锁机制详解 #### 一、锁概念简介 **1、基础描述** 锁机制主要用于解决数据库中多线程或多个会话同时访问同一数据资源时出现的竞争问题。在MySQL中,锁机制是非常重要的组成部分之一,它与其他核心...

    一线大厂Mysql面试题详解.pdf

    MySQL面试题详解 本文档将详细解释MySQL面试中的一些常见问题,包括MySQL的复制原理、InnoDB与MyISAM的区别、varchar与char的区别、事务与日志的实现方式等。 MySQL的复制原理 ---------------- MySQL的复制原理...

    辛星笔记之InnoDB锁

    ### 辛星笔记之InnoDB锁知识点解析 #### 第一节:概念 **意义** - **并发访问与数据一致性:** 在开发多用户的数据库驱动应用过程中,如何在保证并发访问的同时确保数据的一致性是一大挑战。这涉及到如何合理地...

    Mysql InnoDB引擎的索引与存储结构详解

    MySQL默认的存储引擎是MyISAM,其他常用的就是InnoDB,另外还有MERGE、MEMORY(HEAP)等。 主要的几个存储引擎 MyISAM管理非事务表,提供高速存储和检索,以及全文搜索能力。 MyISAM是Mysql的默认存储引擎。当create...

    Mysql知识详解(内容非常丰富)

    在本文中,我们将深入探讨其中四个常见的引擎:MYISAM、InnoDB、Memory和MERGE。 1. MYISAM引擎 MYISAM是MySQL早期的主要引擎,它以全表锁为基础,这意味着在执行读写操作时会锁定整个表,导致并发性能较差。MYISAM...

Global site tag (gtag.js) - Google Analytics