首页 > 数据库 >聚簇索引(MySQL-InnoDB引擎下)

聚簇索引(MySQL-InnoDB引擎下)

时间:2024-07-03 15:33:30浏览次数:1  
标签:存储 聚簇 索引 引擎 InnoDB MySQL 主键

聚簇索引(MySQL-InnoDB引擎下)

聚簇索引并不是一种单独的索引类型,而是一种存储方式。顾名思义,聚簇,使得数据行和相邻的键值紧促的存储在一起。(物理上的)

聚簇索引的数据分布

Mysql内置的存储引擎并不支持选择用于聚簇的索引,主键索引默认就是聚簇索引。

聚簇索引的优点:

1.可以将相互关联的数据保存在一起,例如,在实现电子邮箱应用时,可以根据用户ID聚集索引,因为聚簇索引的存储特点,在查询数据时,可以尽可能的减少磁盘I/O次数(因为数据聚集在一起,顺序读取页的效率要高于随机读取),提高查询速度。

2.在InnoDB中,主键和聚簇索引是同一个,索引和数据保存在同一个B-tree中,因此从聚簇索引中获取数据更快。

3.索引覆盖扫描查询可以直接使用叶节点中的主键值。

聚簇索引缺点:

1.更新代价很高,更新数据后,数据会被移动到新的位置。

2.基于聚簇索引的表在插入新行,或者主键被更新导致移动行时,会面临页分裂问题。当这一行插入某个以满的页中时,会导致存储引擎将该页分裂为两个页来容纳该行。

标签:存储,聚簇,索引,引擎,InnoDB,MySQL,主键
From: https://www.cnblogs.com/xiaoma0-0/p/18281696

相关文章

  • Linux服务器安装MySQL数据库
    首先yum安装的版本比较低,所以先下载一个yum比较新的库文件点击就是下载到本地,如果想在Linux里面下载就需要右击复制链接1.安装MySQL:sudoaptupdatesudoaptinstallmysql-server2.可以通过sudosystemctlstatusmysql命令查看MySQL是否已启动3.设置登录密码......
  • 使用EF 连接 数据库 SQLserver、MySql 实现 CodeFirst
    1.新建项目,下载Nuget安装包创建项目需要注意几点,如果是基于.netframework的项目需要选择相应版本的EF,如果是跨平台则选择EFCore版本。我这里选择的是.netframework版本。红框里面是实现EFCodeFirst需要的包。对应的版本:EntityFramework6.3.0MySql.Data6.8......
  • 面试:10亿数据如何最快速插入MySQL?
    转载:https://mp.weixin.qq.com/s/kL1srP3FZjaTSXLULsUS5g 最快的速度把10亿条数据导入到数据库,首先需要和面试官明确一下,10亿条数据什么形式存在哪里,每条数据多大,是否有序导入,是否不能重复,数据库是否是MySQL?假设和面试官明确后,有如下约束10亿条数据,每条数据1Kb数据内容......
  • MySQL存储安全(TDE加密、自动备份)
    MySQL存储安全设置透明数据加密TDE、自动备份数据等。 一、mysql启用tde透明加密 MySQL数据库存储加密有多种方式可供选择,主要分为两大类: 利用字段加密,在对数据库存储/读取时进行加密/解密操作,需要用户修改应用程序利用TDE透明加密客户端,实现数据库实例文件存储加密,用......
  • mysql审计日志-ProxySQL
    MySQL审计概述:出于对数据安全的考虑,很多公司要求对MySQL的操作进行审计,这就要求我们对所有MySQL的操作都进行记录,并且相关信息要齐全(账号,时间,语句等)。 1、general_log:这样虽然可以记录所有的操作日志,但很遗憾,缺少账号等必要信息,而且IO消耗非常大。2、init-connect:这个其实就......
  • Mysql MVCC多版本解析
    1.首先各行数据,都有一个trx_id(事务ID)和回滚指针,形成一个链表数据结构的数据。其实这便是undo.log(回滚日志)2.当select查询数据的时候,还会生成视图数据。其中包含未提交的最小事务、未提交事务ID数组、应该分配下一个的事务ID、创建视图的事务ID首先会生成readview,将未提交的事......
  • MySQL-15.锁
    C-15.锁事务的隔离性由本章讲述的锁来实现。1.概述锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单,金额等),我们就需要保证这个数据在任何时刻最多只有一个线程在......
  • MySQL5.7&8.0权限-角色管理
    数据控制语言(DataControlLanguage,DCL)用于用户权限的管理,包括了GRANT与REVOKE命令。授权(GRANT)MySQL有很精细的权限控制:服务器级 ---->DB级----------->表----------------->列 ------------------>对象,存储过程,视图等mysql.user  mysql.db   mysql.tables_......
  • 【MySQL】mysql访问
    mysql访问1.引入MySQL客户端库2.C/C++进行增删改3.查询的处理细节4.图形化界面访问数据库4.1下载MYSQLWorkbench4.2MYSQLWorkbench远程连接数据库点赞......
  • mysql语句大全-工作中常用整理(欢迎大家在评论区继续补充)
    1.NOTEXISTS和NOTINSELECTCOUNT(ca.aaa)FROMxxcaWHERENOTEXISTS(SELECTlabel.*FROMxxxlabelWHERElabel.aaa=ca.aaa) SELECTCOUNT(ca.aaa)FROMxxcaWHEREca.aaaNOTIN(SELECTlabel.aaaFROMxxxlabelWHERElabel.aaa=ca.aaa) 2.查询表结......