MySQL索引事务——小记

news2024/12/22 23:18:05

文章目录

  • 索引
    • 概念
    • page
    • 索引类型
      • B树vsB+树
      • 主键索引
      • 非聚簇索引
      • 覆盖索引
      • 复合索引/联合索引
    • 优化
      • 基于B+树的索引
      • hash索引
  • 事务
    • 事务的特性ACID
    • 问题
    • 隔离级别

索引

概念

使用一定的数据结构,来保存索引字段(一列或多列)对应的数据。以后根据索引字段来检索,就可提高检索效率。

sql性能优化关键:是否能够命中索引。
因为其使用一定数据结构来保存,所以需要一定的空间(本地硬盘的文件)来保存。

创建索引,更新/删除索引字段,插入数据:都会导致索引更新的耗时操作。

page

数据库保存数据的基本单位:page

目的:硬盘读取文件到内存的io操作也是耗时的,读取数据最好也就能最少次读取到需要的结果集

索引类型

B树vsB+树

在这里插入图片描述
区别:
1. 数据的保存位置不同

B+树保存在叶子结点,B树保存在所有结点中。
体现了B+树优势:结点不存储数据,这样一个结点可以存储更多key,可使得树更紧凑,所以IO操作次数更少。
查询性能稳定:每次查询都是从根节点遍历到叶子节点,查询路径长度相同,即每次查询效率相当
2. 叶子节点的指向:

B+树相邻的叶子节点通过指针相连,B树没有
体现出B+树优势:所有叶子节点形成有序链表,便于范围查找

主键索引

默认是B+树,聚簇索引(一张表只能有一个主键索引)

B+树的叶子节点上,存放主键字段(索引字段)及数据

在这里插入图片描述
主键索引(聚簇索引)
在这里插入图片描述

优缺点:
优点: 速度快
缺点: 主键需要是整型,且字段不要太长。更新代价大(效率低)

非聚簇索引

非主键索引都是。可以使用很多种类型的索引,如B+树,Hash索引等。

假如用B+树,存储结构︰叶子节点:存放索引字段值+主键的值
在这里插入图片描述
age字段建立的B+树索引
在这里插入图片描述
搜索数据的方式:
(1)先通过索引字段,找到叶子节点上的主键值存在回表,意味着效率比主键索引慢

优缺点:
优点: 更新代价相对比聚簇索引小(叶子节点是索引值和主键值,没有真实数据)
缺点:
(1)也依赖有序数据
(2)可能产生回表操作导致效率会更低

覆盖索引

如果一个索引包含(或者说覆盖)所有需要查询的字段的值,我们就称之为"覆盖索引"
在这里插入图片描述
在这里插入图片描述
检索的时候,是根据name索引字段来检索(name是在叶子节点,排序的),查询字段又没有其他字段,所以就不需要回表

复合索引/联合索引

涉及最左匹配原则︰联合索引的多个索引字段,遵循从左往右的优先级,最左优先,当出现范围查询(><between like等等)
在这里插入图片描述

优化

基于B+树的索引

1.主键索引(聚簇索引)2.非聚簇索引

在这里插入图片描述

hash索引

Hash索引指的就是Hash表,最大的优点就是能够在很短的时间内,根据Hash 函数定位到数据所在的位置,这是B+树所不能比的。

hashmap存储数据的特性:键值对,无序,键唯一(不重复)
hashmap底层数据结构:数组+链表+红黑树!!
在这里插入图片描述
缺点:不支持顺序和范围查询

事务

事务的特性ACID

在这里插入图片描述
在这里插入图片描述

问题

(1)丢失更新 事务1修改数据的操作,在事务2修改以后,就覆盖掉(相当于丢失)
在这里插入图片描述
(2)脏读(第一个事务修改数据但没有提交,第二个事务就读取,在第一个事务回滚后,第二个事务读取的就是脏数据)
在这里插入图片描述
(3)不可重复读―一个事务两次读取数据,中间有另一个事务修改,第一个事务两次读取的数据就不同(不一致)
在这里插入图片描述
(4) 幻读 一个事务两次读取,中间有另一个事务执行了插入操作,造成第一个事务看到不同的结果
在这里插入图片描述

隔离级别

隔离级别!!!
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

低代码常见场景【上】|如何解决业务问题

全文 2105 字 阅读时间约 7 分钟 首发于码匠技术博客 目录 低代码用例 用于解决业务问题的低代码用例 内部系统开发所面临的困境 低代码如何解决上述困境 关于码匠 低代码平台通过在开发和部署应用程序时最大限度地减少编程来减轻 IT 团队的压力&#xff0c;不仅可以帮助…

[附源码]Python计算机毕业设计Django农村人居环境治理监管系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Java+MySQL 基于Springboot的垃圾分类网站-计算机毕业设计

项目介绍 当前全球都在提倡环境保护&#xff0c;现在社会高速发展&#xff0c;我们每个人每天都会产生很多的垃圾&#xff0c;尤其是工业发展到一定阶段之后这些垃圾的种类也越来越多&#xff0c;如果随意丢弃很可能会造成环境污染&#xff0c;尤其是一些电池等重污染垃圾&…

前端模块化开发

1.模块化产生的背景 Javascript模块化编程&#xff0c;已经成为一个迫切的需求。理想情况下&#xff0c;开发者只需要实现核心的业务逻辑&#xff0c;其他都可以加载别人已经写好的模块。 但是&#xff0c;Javascript不是一种模块化编程语言&#xff0c;它不支持"类&quo…

持续的敏捷转型--我们的经验

作者&#xff1a;Shalini Joshi、 Syed Tamkeen Banu 在这篇文章中&#xff0c;我们将分享自己的经验和教训&#xff0c;说明组织可能在哪些方面会失败&#xff0c;以及可以采取哪些积极措施。 一、简介 如今&#xff0c;大多数组织为了获取更快的交付、更高的商业价值和更好的…

Markdown使用模板

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

智能仓储机器人设计

目录 第一章 绪论 1 1.1 研究的背景与意义[1] 1 1.2 机器人的研究现状[4] 2 1.3机器人的发展趋势 4 1.4本文的主要研究内容 5 第二章 机器人总体方案设计 7 2.1 小型仓储机器人的功能 7 2.2 传感器系统[13] 7 2.3 移动载体 7 2.4 自由度与机器人的运作 8 2.5 控制方式的选择 9 …

Git使用及配置

一、下载安装 网上很多教程我就不出了&#xff0c;hh 二、配置 1.设置用户信息 //设置用户信息 git config --global user.name"xxx" git config --global user.email"xxxxx.xxx" 三、获取本地仓库 1.在电脑上创建一个空目录作为本地Git仓库 2.进入这…

【Redis】初识Redis

1.初识Redis1.1安装1.2数据结构1.2.1 通用命令1.2.2 String类型key的结构1.2.3 Hash类型2.Jedis2.1 添加依赖及配置2.2 配置StringRedisTemplte1.初识Redis Redis是一个基于内存的键值型NoSQL数据库。其具有性能优越、持久化的特点&#xff0c;能够支持每秒十几万次的读写操作…

前端面试题之【HTTP/HTML/浏览器】

1.说一下http与https http&#xff1a;超文本传输协议&#xff0c;https&#xff1a;超文本传输安全协议 区别&#xff1a; http传输数据是未加密的&#xff0c;是明文传输&#xff1b;https使用ssl协议对数据进行加密处理&#xff1b;https协议需要ca证书&#xff0c;费用高…

【VUE 嵌套路由】

目录 1. 嵌套路由 2. 通俗小结 1. 嵌套路由 要使用菜单显示出“点击不同的菜单项显示不同的内容”的效果&#xff0c;需要使用嵌套路由&#xff01; 因为&#xff0c;在当前设计中&#xff0c;App.vue是显示整个页面的入口&#xff0c;而App.vue就已经使用<router-view/…

应急物资仓库管理系统-3D可视化管理系统

1. 系统介绍 RFID智慧应急物资仓库可视化管理系统是杭州东识科技有限公司基于物联网RFID技术、云计算技术、3D可视化技术、数据采集技术等&#xff0c;专门为政府、军队等部门量身定制的一体化物资综合管理平台。 本系统包括&#xff1a;物资安全监控部分——提供对环境温湿度监…

[附源码]Python计算机毕业设计Django失物招领微信小程序论文

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Slowloris DoS攻击的原理与简单实现

前言 Slowloris 攻击是我在李华峰老师的书——《Metasploit Web 渗透测试实战》里面看的&#xff0c;感觉既简单又使用&#xff0c;现在这种攻击是很容易被防护的啦。不过我也不敢真刀实战的去试&#xff0c;只是拿个靶机玩玩罢了。 废话还是写在结语里面吧。&#xff08;划掉&…

Java 中重写了 equals 为什么还要重写 hashCode?

问题 不管是在书本或者是博客上&#xff0c;都会推荐我们在重写 equals 方法时重写 hashCode 方法。明明对象之间就是通过 equals 方法进行判断的&#xff0c;那么为什么非要写 hashCode 方法呢? equals 实验 创建一个 Teacher 类。方便起见&#xff0c;就一个 name 属性。…

1.1 异步相关概念:初步了解

1.进程和线程的概念 计算机有5大基本组成部分&#xff0c;运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入和输出。运算器和控制器封装到一起&#xff0c;加上寄存器组和cpu内部总线构成中央处理器&#xff08;CPU&#xff09;。cpu的根本任务&#xff0c;就是执…

2022年跨境电商卖家如何在Facebook上做广告【完整指南】

关键词&#xff1a;跨境电商卖家、Facebook广告 了解如何在 Facebook 上做广告对于大多数跨境电商卖家来说是一项非常重要的技能&#xff0c;因为您在 Facebook 上做广告&#xff0c;您的广告可以覆盖21.7 亿人——换句话说&#xff0c;接近世界人口的 30%。此外&#xff0c;该…

Java项目:SSM物业缴费管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 管理员角色包含以下功能&#xff1a; 管理员登录,管理员管理,住户管理,缴费列表,公告列表管理,用户反馈管理等功能。 用户角色包含以下功能&…

[附源码]计算机毕业设计失物招领微信小程序论文Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

keras-gpu安装

需要安装&#xff1a; TensorFlow 安装&#xff08;包含cudatoolkit、cuDNN&#xff09; HDF5 和 h5py (如果你需要将 Keras模型保存到磁盘&#xff0c;则需要这些) graphviz 和 pydot (用于绘制模型图的可视化工具) Keras 一、更新驱动 先升级显卡驱动&#xff1a;https://zh…