`
oliver_peng
  • 浏览: 44265 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MyISAM 和 InnoDB索引的区别

阅读更多
MyISAM和InnoDB的索引在实现上有以下不同:

1 MyISAM只把索引载入内存,数据缓存依赖于操作系统,InnoDB把索引和数据都载入内存缓冲

2 MyISAM数据库中的数据是按照插入的顺序保存,在每个索引节点中保存对应的数据行的地址,理论上说主键索引和其他索引是一样的,InnoDB数据库中的数据和主键节点保存在一起,所有其他索引节点中保存的是主键索引的值。

3 对于字符串索引,MyISAM默认采用增量保存,例如第一个索引值是'perform',第二个索引的值是'performance', 在索引文件中第二个索引被保存为'7,ance'。这样能够减小索引的尺寸。

4 MyISAM保存索引的状态信息在磁盘里,每次执行ANALYZE TABLE会更新这个信息。InnoDB则通过在启动的时候随机读取索引来估计索引的状态信息,所以Show Index的结果对于MyISAM是精准的,但对于InnoDB不是绝对精准。

5 索引长期运行之后会产生碎片,一种碎片是一行数据被保存在不同的数据段,另一种是连续的表空间或行在磁盘上被分散地保存。对于MyISAM两种索引碎片都会出现,对于InnoDB只会出现后一种因为InnoDB不会把短行保存到不同的数据段。要消除索引碎片一种方法是OPTIMIZE TABLE,另一种方法是把数据重新倒入。

针对MyISAM和InnoDB不同的索引结构,要注意以下几点:

1 在InnoDB表中插入数据一定要尽可能按照主键增加的顺序,AUTO_INCREMENT最好,这样插入的速度最快

2 因为InnoDB索引节点中保存的是主键的值,所以主键的值越简单越好

3 对于InnoDB表,在查询的时候如果只需要查找索引列,就不要加入其它列,这样速度最快。
3
0
分享到:
评论

相关推荐

    MyISAM和InnoDB索引引擎的B+树索引实现1

    本文主要讨论两种常见的存储引擎——MyISAM和InnoDB,它们在B+树索引实现上的差异。 首先,MyISAM是MySQL早期的默认存储引擎,它在索引方面采用B+树结构。对于主键索引,MyISAM的B+树叶节点存储的是数据记录的物理...

    MyISAM引擎与InnoDB引擎性能的对比

    MySQL数据库系统提供了多种存储引擎,其中最常用的两种是MyISAM和InnoDB。它们各自具有独特的特性和适用场景,理解二者的性能差异对于优化数据库设计至关重要。 MyISAM引擎是MySQL早期的默认存储引擎,以其高速度和...

    MyISAM和InnoDB的异同

    #### MyISAM与InnoDB的主要区别 1. **事务处理**: - MyISAM不支持事务,而InnoDB则支持ACID事务。 - 如果应用程序需要事务支持来保证数据的一致性和可靠性,应选择InnoDB。 2. **并发处理**: - MyISAM使用表...

    MyISAM与InnoDB的索引差异

    在MyISAM中,主键索引和普通索引之间并没有本质的区别。如果表中没有定义主键,MyISAM会选择一个唯一且非空的列作为隐含主键。由于索引和数据分离,进行查询时,系统需要先通过索引找到指针,然后根据指针对数据行...

    002.InnoDB索引与MyISAM索引实现的区别是什么?.mp4

    InnoDB索引与MyISAM索引实现的区别是什么?.mp4 InnoDB索引与MyISAM索引实现的区别是什么?.mp4 InnoDB索引与MyISAM索引实现的区别是什么?.mp4 InnoDB索引与MyISAM索引实现的区别是什么?.mp4 InnoDB索引与MyISAM...

    MySQL Innodb 索引原理详解

    在深入探讨MySQL Innodb索引之前,我们先了解几种基本的树形数据结构,包括二叉搜索树、B树、B+树以及B*树。 ##### 1.1 搜索二叉树(Binary Search Tree) 搜索二叉树是一种特殊的二叉树,每个节点至多有两个子...

    8.MySQL存储引擎--MyISAM与InnoDB区别1

    MyISAM和InnoDB是MySQL中最常用的两种存储引擎,它们都有其优缺点,本文将对比MyISAM和InnoDB存储引擎的区别。 FULLTEXT索引 MyISAM支持FULLTEXT索引,而InnoDB不支持。FULLTEXT索引可以对文本字段进行索引,以提高...

    myisam与innodb 区别 值得下载

    自己总结的 关于mysql存储引擎myisam innodb 的比较 两者区别 对面试会很有帮助

    数据库引擎 MyISAM 和 InnoDB 对比

    ### 数据库引擎 MyISAM 和 InnoDB 的对比分析 在MySQL数据库系统中,MyISAM与InnoDB是最常被提及的两种存储引擎。这两种引擎在功能、性能以及适用场景上存在显著差异,本文将深入探讨这两者之间的区别,并分析它们...

    MyISAM InnoDB 区别

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

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

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

    mysql DB引擎myisam与innodB

    1. **数据处理方式**:InnoDB 和 MyISAM 在数据处理方面存在本质的区别。InnoDB 是一种行级锁定的存储引擎,支持事务处理,并且为每行记录都保存一个行锁,这使得它在高并发环境下的表现更佳。而 MyISAM 使用的是表...

    MyISAM,InnoDB存储引擎1

    InnoDB的物理文件结构与MyISAM不同,它将表数据和索引数据存储在一起,并使用单独的日志文件来保证事务回滚和崩溃恢复。InnoDB支持BTree、R-Tree和Hash索引,其索引实现与MyISAM有所不同。InnoDB引入了行级锁,这极...

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

    - **MyISAM** 在纯读取密集型应用中,由于其简单的数据结构和索引处理,性能通常优于InnoDB。 - **InnoDB** 在写密集型或需要事务处理的环境中,由于行级锁定和事务支持,性能仍然可接受。 7. **其他特性**: - ...

    MySQL存储引擎MyISAM与InnoDB区别总结整理

    在MySQL中,MyISAM和InnoDB是最常见的两种存储引擎,它们各自有独特的特性和适用场景。 首先,我们来看一下MySQL默认存储引擎的变迁。在MySQL 5.1之前的版本,MyISAM是默认的存储引擎,它以快速读取和较小的内存...

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

    本文主要探讨两种最常用的存储引擎——MyISAM和InnoDB之间的关键区别。 MyISAM是MySQL早期的默认存储引擎,它以高效读取和快速查询闻名。MyISAM采用表级锁定,这意味着在整个操作过程中,如果一个用户对表进行读取...

    MySQL存储引擎简介及MyISAM和InnoDB的区别

    MyISAM和InnoDB在索引上的处理也有所不同。MyISAM索引是单独的文件,而InnoDB的索引是与数据存储在同一结构中,称为聚簇索引,这使得InnoDB在数据修改时的性能受到影响,但提供了更快速的主键查找。 在其他存储引擎...

Global site tag (gtag.js) - Google Analytics