`

MyISAM和InnoDB的索引在实现上的不同

阅读更多
[/size][size=large]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表,在查询的时候如果只需要查找索引列,就不要加入其它列,这样速度最快。
分享到:
评论

相关推荐

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

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

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

    然而,由于这些额外的功能,InnoDB在内存使用和磁盘I/O上可能比MyISAM更消耗资源。 在性能对比上,MyISAM通常在读取速度上有优势,因为它不需要管理事务和行级锁定。但在写入密集型应用中,InnoDB的行级锁定能提供...

    MyISAM与InnoDB的索引差异

    MySQL中的存储引擎MyISAM和InnoDB在处理索引上有显著的差异,这些差异主要体现在索引的组织方式以及对数据存储的影响上。两者都基于B+树这种高效的索引结构,但具体实现有所不同。 首先,MyISAM的索引采用非聚集...

    MyISAM和InnoDB的异同

    MyISAM和InnoDB是MySQL中最常用的两种存储引擎,它们各自拥有不同的特点和适用场景。 #### MyISAM引擎概述 MyISAM是MySQL早期默认使用的存储引擎,它主要适用于读取密集型的应用场景。MyISAM支持表级锁定,这意味...

    MySQL Innodb 索引原理详解

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

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

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

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

    InnoDB和MyISAM在dump和binlog方面也有所不同。在InnoDB中,可以使用dump和binlog来恢复数据,而MyISAM则需要手动恢复数据。 MyISAM和InnoDB存储引擎都有其优缺点,选择哪种存储引擎取决于实际应用场景和需求。

    数据库引擎 MyISAM 和 InnoDB 对比

    - **MyISAM**和**InnoDB**都支持自动增长字段,但InnoDB的实现更加高效。 - InnoDB通过锁定表中的最小和最大ID值来确保并发插入时的一致性。 4. **删除操作**: - **MyISAM**在删除行后会留下空隙,这可能导致...

    mysql DB引擎myisam与innodB

    综上所述,InnoDB 和 MyISAM 各自适用于不同的应用场景。InnoDB 更适合于需要事务支持和高并发处理的应用场合,而 MyISAM 则更适合于以读为主的应用场景。在选择存储引擎时,需要综合考虑应用的需求、性能目标以及...

    MyISAM InnoDB 区别

     6、如果和MyISAM比insert写操作的话,Innodb还达不到MyISAM的写性能,如果是针对基于索引的update操作,虽然MyISAM可能会逊色Innodb,但是那么高并发的写,从库能否追的上也是一个问题,还不如通过多实例分库分表...

    myisam与innodb 区别 值得下载

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

    MyISAM,InnoDB存储引擎1

    InnoDB支持BTree、R-Tree和Hash索引,其索引实现与MyISAM有所不同。InnoDB引入了行级锁,这极大地提高了并发处理能力,尤其是在进行大量INSERT或UPDATE操作时。然而,InnoDB在执行COUNT(*)时需要遍历整个表,效率较...

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

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

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

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

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

    在存储结构上,MyISAM的每个表由三个文件组成:.frm文件存储表定义,.MYD文件存储数据,.MYI文件存储索引。而InnoDB的数据和索引都存储在表空间中,其大小仅受限于操作系统文件大小,通常可达到2GB以上。 对于是否...

    myisam innodb对比1

    ### MyISAM与InnoDB对比分析 ...总结,MyISAM和InnoDB各有优势和局限。MyISAM适用于读取密集型的应用场景,而InnoDB更适合需要事务支持和高并发写入的场景。选择合适的存储引擎可以显著提高系统的性能和稳定性。

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

    在存储空间上,MyISAM的每个表都有独立的.frm文件,数据文件.MYD和索引文件.MYI,而InnoDB的数据和索引存储在一个或多个表空间文件中,这使得InnoDB的备份和恢复更为复杂。在故障恢复时,InnoDB的崩溃恢复能力是其一...

Global site tag (gtag.js) - Google Analytics