InnoDB索引机制

news2024/11/24 12:57:40
导学:索引什么时候失效?为什么类型转换索引会失效?不满足最左匹配原则? 
  • 我们都知道,MySQL它主要有2大模快组成,第一块就是我们的MySQL服务,里面包含了像连接管理、解析器、预处理、优化器、执行器,这个会把一条SQL语句执行的前置工作会做完,然后会生成一个执行计划,给到我们的存储引擎组件。
  • 存储引擎负责数据的存储、操作以及解锁。MySQL支持的存储引擎有很多,比如InnoDB、MyISAM、Memory等等,不同的存储引擎,存储与操作的方式也不一样。
  • 今天要研究的是 InnoDB 存储引擎,因为 InnoDB是我们MySQL默认的存储引擎 ,索引也是研究InnoDB 存储索引。

官网:MySQL :: MySQL 8.0 Reference Manual :: 16 Alternative Storage Engines 

  • 存储引擎是MySQL组件,可以为不同的表类型处理SQL操作。InnoDB是默认的,也是最通用的存储引擎,Oracle推荐使用它来存储表,除了特殊的用例。(MySQL 8.0中的CREATE TABLE语句默认创建InnoDB表)
  • MySQL服务器使用可插拔的存储引擎架构,允许存储引擎在运行的MySQL服务器中加载和卸载。
  • 要确定服务器支持哪些存储引擎,请使用SHOW engines语句
  • Support列的值表示是否可以使用该引擎:“YES”、“NO”和“DEFAULT”表示该引擎存在、不可用或可用,当前设置为默认的存储引擎。 
-- 用于显示当前数据库可用的存储引擎列表,并显示它们的状态、默认值以及是否支持事务等信息
show engines;
  • Comment:注释
  • Transactions:是否支持事务 
  • XA:表示是否支持XA分布式事务协议(涉及到两阶段提交)
  • Savepoints:表示该存储引擎是否支持Savepoints

Savepoints

  • Savepoints:它是一种在事务中创建的检查点(checkpoint),通过创建和使用SavePoints,可以在事务执行期间对事务进行部分回滚或回滚到先前的状态。
  • 在事务中,Savepoints可以用来标记一个临时的保存点,以保留事务中的某个特定状态,这样,如果事务后续出现错误或需要回滚,可以根据需要回滚到先前的Savepoints,而不需要回滚整个事务。
  • 通过Savepoints,可以更细粒度的控制事务的回滚操作,提供更灵活的事务管理能力。
  • 使用"SAVEPOINT"命令来创建Savepoints,并使用"ROLLBACK TO SAVEPOINT"命令回滚到特定的Savepoint。
  • 注意:Savepoints只在某些支持事务的存储引擎中可用,比如InnoDB。

MySQL 8.0支持的存储引擎

1. InnoDB: MySQL 8.0默认的存储引擎。
  • InnoDB是一个事务安全(兼容ACID)的MySQL存储引擎,具有提交、回滚和崩溃恢复功能,以保护用户数据。
  • InnoDB行级别的锁(没有升级到更粗粒度的锁)和oracle风格一致的非锁读取提高了多用户并发性和性能。
  • 非锁读取(non-locking read)是指在读取数据时不对数据进行加锁的操作,也就是说其它事务仍然可以对数据进行修改操作。
  • InnoDB将用户数据存储在聚集索引中,以减少常见的基于主键的查询的I/O为了维护数据的完整性,InnoDB还支持外键引用完整性约束。

2. MyISAM:这些表占用空间很小。

  • 表级锁限制了读/写工作负载的性能,因此它经常用于Web和数据仓库配置中的只读或以读为主的工作负载中
3. Meomry - 内存:
  • 将所有数据存储在RAM内存中,以便在需要快速查找非关键数据的环境中快速访问这个引擎以前被称为堆引擎。
  • 它的用例正在减少InnoDB的缓冲池内存区提供了一种通用且持久的方式来将大部分或所有数据保存在内存中,而NDBCLUSTER为大型分布式数据集提供了快速的键值查找。

那么InnoDB存储引擎的数据怎么存的呢? 

  • 肯定会存到磁盘,磁盘里面会有文件,也就是表空间。 
  • 表空间最后都是一个page页的数据结构,然后page页里面是我们的row(行数据 / 数据行) => MySQL最小的数据单元。
  • page页是内存跟磁盘交互的最小单位,page页的大小默认是16K。
  • 每次查询都去跟磁盘交互太慢了,所以多了一个Buffer-Pool内存区间的概念。
  • 有了Buffer-Pool以后,每次查询数据,先去内存查,如果没有,那么再去从磁盘读取,读取后,放到内存所以Buffer-Pool提升了性能,尽可能的减少跟磁盘的实时IO。因为我内存更改了以后,我所有的数据是异步同步到磁盘的。
  • 内存跟磁盘的同步最小单位是page页。
  • 一个page页里面到底能存多少数据,根据我的page页的大小以及行大小来决定的。

索引的概念 

  • 索引(Index)是帮助MySQL高效获取数据的一种数据结构。

索引作用

  • 索引的作用只有一个,提升查询性能! 

  • SQL语句查询一般要求不能超过10毫秒或者20毫秒,如果超过就是进行优化。

索引创建

  • 官网:MySQL :: MySQL 8.0 Reference Manual :: 13.1.15 CREATE INDEX Statement
  • 在MySQL当中,index_type:USING{BTREE | HASH}

count(1)、count(*) 与 count(字段/列名) 的区别

  • count(1)和count(*)表示的是直接查询符合条件的数据库表的行数。
  • 而count(列名)表示的是查询符合条件的列的值不为NULL的行数。
  • 除了查询得到结果集有区别之外,在性能方面count(*)是约等于count(1)的,但是

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1057160.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析:人工智能篇

文章目录 第三章 数据可视化库matplotlib3.1 matplotlib基本绘图操作3.2 plot的线条和颜色3.3 条形图分析3.4 箱型图分析3.5 直方图分析3.6 散点图分析3.7 图表的美化 第四章 数据预测库Sklearn4.1 sklearn预测未来4.2 回归数据的预测4.2.1 回归数据的切分4.2.2 线性回归数据模…

【vue3】shallowReactive与shallowRef;readonly与shallowReadonly;toRaw与markRaw

假期第六篇,对于基础的知识点,我感觉自己还是很薄弱的。 趁着假期,再去复习一遍 1、shallowReactive与shallowRef shallowReactive:只处理对象最外层属性的响应式(浅响应式) shallowRef:只处理…

2023 彩虹全新 SUP 模板,卡卡云模板修复版

2023 彩虹全新 SUP 模板,卡卡云模板,首页美化,登陆页美化,修复了 PC 端购物车页面显示不正常的问题。 使用教程 将这俩个数据库文件导入数据库; 其他的直接导入网站根目录覆盖就好; 若首页显示不正常&a…

华为云云耀云服务器L实例评测|部署在线轻量级备忘录 memos

华为云云耀云服务器L实例评测|部署在线轻量级备忘录 memos 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 产品优势1.3 应用场景1.4 支持镜像 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 memos3.1 memos介绍3.2 Docker 环境搭建…

服务器挂机

title: “服务器挂机” createTime: 2022-05-11T11:05:4308:00 updateTime: 2022-05-11T11:05:4308:00 draft: false author: “name” tags: [“服务器”] categories: [“服务器”] description: “测试的” 服务器挂机策略 地址:pve.dongshanxia.top:35000用户…

安装软件显示“为了对电脑进行保护,已阻止此应用”——已解决

我是在安装Tableau时遇到的这个情况。事情是这样的:我先安装了一次,发现安装选项错了,我就用360软件管家删除了,结果就没法按照教程使用管理员身份打开了,提示“为了对电脑进行保护,已阻止此应用”。 解决…

Git使用【下】

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析(3) 目录 👉🏻标签管理理解标签标签运用 …

VUE3照本宣科——应用实例API与setup

VUE3照本宣科——应用实例API与setup 前言一、应用实例API1.createApp()2.app.use()3.app.mount() 二、setup 前言 👨‍💻👨‍🌾📝记录学习成果,以便温故而知新 “VUE3照本宣科”是指照着中文官网和菜鸟教…

IntelliJ IDEA 常用快捷键

目录 一、IDEA 常用快捷键 1 通用型 2 提高编写速度 3 类结构、查找和查看源码 4 查找、替换与关闭 5 调整格式 二、Debug快捷键 三、查看快捷键 1、已知快捷键操作名,未知快捷键 2、已知快捷键,不知道对应的操作名 3、自定义快捷键 4、使用…

nginx多文件组织

背景: nginx的话,有时候,想部署多个配置,比如:使用不同的端口配置不同的web工程。 比如:8081部署:项目1的web页面。 8082部署:项目2的web页面。 1)nginx.conf worker_processes…

javascript: Bubble Sort

// Sorting Algorithms int JavaScript /** * file Sort.js * 1. Bubble Sort冒泡排序法 */ function BubbleSort(arry, nszie) {var i, j, temp;var swapped;for (i 0; i < nszie - 1; i){swapped false;for (j 0; j < nszie - i - 1; j){if (arry[j] > arry[j …

Java EE改Jakarta

昨天折腾了一天&#xff0c;把旧项目升级了 旧项目运行环境 jdk &#xff1a;jdk1.7 TomCat&#xff1a;TomCat8.0 或者 TomCat 8.5 Eclipse 2022-12 spring&#xff1a;spring-2.5.6.jar Hibernate&#xff1a;hibernate-3.2.6.ga.jar Struts&#xff1a;struts2-core-2.1.6.…

macbook电脑磁盘满了怎么删东西?

macbook是苹果公司的一款高性能笔记本电脑&#xff0c;受到很多用户的喜爱。但是&#xff0c;如果macbook的磁盘空间不足&#xff0c;可能会导致一些问题&#xff0c;比如无法开机、运行缓慢、应用崩溃等。那么&#xff0c;macbook磁盘满了无法开机怎么办&#xff0c;macbook磁…

CleanMyMac X苹果电脑清理浏览器缓存工具

苹果电脑是一款优秀的电脑产品&#xff0c;但是随着使用时间的增长&#xff0c;苹果电脑也会出现一些问题&#xff0c;比如运行速度变慢、占用空间过大、出现错误提示等&#xff0c;这些问题往往和缓存有关。缓存是一种临时存储数据的方式&#xff0c;可以提高电脑的运行效率和…

c#基础逻辑练习案例

第二章综合练习小游戏 练习内容 向控制台输出“这是学号姓名的C#基础小游戏”。向控制台换行再输出“请输入你的游戏昵称&#xff1a;”。向控制台输入你的游戏昵称&#xff0c;赋给一个字符串变量。向控制台换行再输出“请输入你的性别&#xff1a;”。向控制台输入你的性别…

LeetCode 面试题 08.02. 迷路的机器人

文章目录 一、题目二、C# 题解 一、题目 设想有个机器人坐在一个网格的左上角&#xff0c;网格 r 行 c 列。机器人只能向下或向右移动&#xff0c;但不能走到一些被禁止的网格&#xff08;有障碍物&#xff09;。设计一种算法&#xff0c;寻找机器人从左上角移动到右下角的路径…

Office 2021 小型企业版商用办公软件评测:提升工作效率与协作能力的专业利器

作为一名软件评测人员&#xff0c;我将为您带来一篇关于 Office 2021 小型企业版商用办公软件的评测文章。在这篇评测中&#xff0c;我将从实用性、使用场景、优点和缺点等多个方面对该软件进行客观分析&#xff0c;在专业角度为您揭示它的真正实力和潜力。 一、实用性&#xf…

数据结构—归并排序-C语言实现

引言&#xff1a;归并排序跟快速排序一样&#xff0c;都运用到了分治的算法&#xff0c;但是归并排序是一种稳定的算法&#xff0c;同时也具备高效&#xff0c;其时间复杂度为O(N*logN) 算法图解&#xff1a; 然后开始归并&#xff1a; 就是这个思想&#xff0c;拆成最小子问题…

mysql八股

1、请你说说mysql索引&#xff0c;以及它们的好处和坏处 检索效率、存储资源、索引 索引就像指向表行的指针&#xff0c;是一个允许查询操作快速确定哪些行符合WHERE子句中的条件&#xff0c;并检索到这些行的其他列值的数据结构索引主要有普通索引、唯一索引、主键索引、外键…

【系统架构】软件架构的演化和维护

导读&#xff1a;本文整理关于软件架构的演化和维护知识体系。完整和扎实的系统架构知识体系是作为架构设计的理论支撑&#xff0c;基于大量项目实践经验基础上&#xff0c;不断加深理论体系的理解&#xff0c;从而能够创造新解决系统相关问题。 目录 1、软件架构演化和定义 …