发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。
索引的实现通常使用B_TREE。 B_TREE索引加速了数据访问,因为存储引擎不会再去扫描整张表得到需要的数据; 相反,它从根节点开始,根节点保存了子节点的指针,存储引擎会根据指针快速寻找数据。
MyISAM引擎 使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址. 即:MyISAM索引文件和数据文件是分离的,MyISAM的索引文件仅仅保存数据记录的地址。 MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引, 如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。 MyISAM的索引方式也叫做“非聚集”的。 物理文件结构为: .frm文件:与表相关的元数据信息都存放在frm文件,包括表结构的定义信息等。 .myd(mysql data)文件:myisam存储引擎专用,用于存储myisam表的数据 .myi(mysql index)文件:myisam存储引擎专用,用于存储myisam表的索引相关信息
InnoDB引擎 也使用B+Tree作为索引结构,但是InnoDB的数据文件本身就是索引文件,叶节点data域保存了完整的数据记录。 这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。这种索引叫做“聚焦索引”。 InnoDB的辅助索引的data域存储相应记录主键的值而不是地址。 换句话说,InnoDB的所有辅助索引都引用主键作为data域。 聚集索引这种实现方式使得按主键的搜索十分高效,但是辅助索引搜索需要检索两遍索引: 首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录。 InnoDB的索引实现后,不建议使用过长的字段作为主键,因为所有辅助索引都引用主索引,过长的主索引会令辅助索引变得过大。 在InnoDB中也不建议使用非单调的字段作为主键, 因为InnoDB数据文件本身是一颗B+Tree,非单调的主键会造成在插入新记录时数据文件为了维持B+Tree的特性而频繁的分裂调整,十分低效,建议使用自增字段作为主键。 物理文件结构为: .frm与表相关的元数据信息都存放在frm文件,包括表结构的定义信息等。 .ibd文件和.ibdata文件: 这两种文件都是存放innodb数据的文件,之所以用两种文件来存放innodb的数据,是因为innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是用独享表空间存放存储数据。 独享表空间存储方式使用.ibd文件,并且每个表一个ibd文件; 共享表空间存储方式使用.ibdata文件,所有表共同使用一个ibdata文件; 觉得使用哪种方式的参数在mysql的配置文件中 innodb_file_per_table;
来自: 行者花雕 > 《待分类》
0条评论
发表
请遵守用户 评论公约
MySQL数据库的体系架构
对于表中数据的存储,InnoDB采用类似Oracle索引组织表Clustered的方式进行存储。哈希索引是一种非常快的等值查找方法(注意:必须是等值...
各种存储引擎的特性
各种存储引擎的特性几个常用存储引擎的特点下面我们重点介绍几种常用的存储引擎并对比各个存储引擎之间的区别和推荐使用方式。最常使用的2种存储引擎:1、Myisam是Mysql的默认存储引擎,当create创建新...
什么是InnoDB
什么是InnoDB.InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。在技术上,InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 在主内存中建...
MySQL架构介绍(5.存储引擎)
MySQL架构介绍(5.存储引擎)MySQL内建主流存储引擎主要死InnoDB和MyISAM.MySQL默认的事务型存储引擎,当前互联网行业MySQL数据库的主流选择,主要用来处理大量短期事务,大部分正常提交,很少部分回滚...
Mysql 中 MyISAM 和 InnoDB 的区别有哪些?
MyISAM提供的大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM并不支持事务以及行级锁,而且一个毫无疑问的缺陷是崩溃后无法安全恢复。对于只读的数据,或者表比较小,可以忍受修复操作,...
innodb聚簇索引和myisam非聚簇索引
澄清一个概念:innodb中,在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找,非聚簇索引都是辅助索引,像复...
一文搞懂MySQL索引所有知识点(建议收藏)
除聚簇索引之外的所有索引都称为辅助索引,InnoDB的辅助索引只会存储主键值而非磁盘地址。联合索引的创建原则,在创建联合索引的时候因...
mysql innode和myisam引擎查询性能比较测试
在 InnoDB 中,表被称为 索引组织表(index organized table),InnoDB 按照主键构造一颗 B Tree (如果没有主键,则会选择一个唯一的并...
在MySQL的InnoDB存储引擎中count(*)函数的优化
在MySQL的InnoDB存储引擎中count(*)函数的优化。不禁吓了一跳,误打误撞就发现了优化的方法:在InnoDB中,除了唯一索引之外,在其他字段添加一个普通索引(称为辅助索引)就能够提升count(*)函数的性能...
微信扫码,在手机上查看选中内容