目录

索引:类似于目录功能

聚簇索引:

非聚簇索引:

数据库操作中的索引类型:

事务:一个或多个sql组合

事务特性:

事务操作流程:

mvcc:多版本并发控制


索引:类似于目录功能

原理:

给一张表创建一个索引,相当于创建一个索引表

索引不适用于所有字段,索引不是越多越好会影响插入和删除效率

应用场景:

  • 数据量大,经常用于查询依据的字段
  • 字段修改频率较低的字段
  • 索引过多会占据额外磁盘空间

索引如何提高查询效率?

索引采用特殊的数据结构提供效率(B+树)

B+树与B树区别:

  1. B树:多叉树;B+树:也是一个多叉树,多叉树可以降低树高度提高查询效率
  2. B树的索引与数据存储在一个节点中,而B+树索引与数据分离存储,每一个节点占据磁盘空间小,这样一次性可以从磁盘中读取更多索引信息,加快索引效率
  3. B+树数据顺序存储,在连续查询或范围查询时可以连续IO取出数据,效率较高

聚簇索引:

以主键作为主索引,数据节点在磁盘中顺序存储,其他的索引作为辅助索引,其中辅助索引保存的是主键索引的数据,最终还是依靠主键索引进行查询

非聚簇索引:

主键索引与普通索引区别不大,都是最终索引项中存放磁盘中的存放地址(指针),数据节点在磁盘中并非顺序存储

适用场景:

聚簇索引:索引与数据都是顺序存储,中间插入/删除需要调整索引的数据结构,效率较低,但由于数据顺序存储,在连续/范围查询时效率较高

非聚簇索引:中间插入数据,只需要将数据存储在磁盘新的位置,中间调整索引信息即可,效率高,但索引与数据存储顺序不一致,导致在连续/范围查询时类似于单个查询,效率较低

大多数情况都是使用自增主键作为聚簇索引,这样的话数据与索引总是在最后添加,而不涉及中间插入的调整1

数据库操作中的索引类型:

  • 主键索引:一个字段被设置为主键,默认会为主键字段创建索引
  • 唯一索引:一个字段被设置了唯一约束,默认会为该字段创建索引
  • 外键索引:一个字段被设置为外键,默认会为外键字段创建索引
  • 普通索引:并非默认创建的索引,自定义创建

创建索引:create index idx_name on tbname(fields_name);

删除索引:drop index idx_name on tbname;

查看索引:show index from tbname\G;

事务:一个或多个sql组合

事务特性:

  • 原子性:一次完成
  • 一致性:事务前后,数据完整性要符合预设规则,依赖原子性
  • 隔离性:允许多个事务并发执行,不会因为交叉执行导致数据不一致
  • 持久性:事务提交之后,对数据的修改是永久的

事务操作流程:

begin(开启事务)  rollback(回滚)   commit(提交)

若并发情况下无隔离性保护机制,则会导致:

  1. 脏写:事务A进行数据修改,在事务提交之前被其他事务覆盖
  2. 脏读:一个事务中读取到的数据是其他事务中未提交的数据(解决方法:读已提交)
  3. 不可重复读:一个事务在不同阶段从数据库中读到的数据不一致(修改同一条数据导致,可加锁解决)
  4. 幻读:一个事务在不同时间段读取到的数据条数不一致(插入/删除不同数据导致,不可避免)

mvcc:多版本并发控制

  1. 给每个事务分配一个事务id
  2. 在事务中对数据进行操作时,都临时拷贝一份数据进行操作
  3. 在本次事务对数据再次进行访问时所访问的均为临时拷贝(对临时拷贝进行操作,读操作时不阻塞写,写操作也不会阻塞读)
  4. 事务提交时将事务操作持久化

数据库(三)索引事务相关推荐

  1. MySQL数据库:索引+事务+JDBC

    一.索引 1.1 何为索引 在数据库中数量及其庞大的时候,怎么快速找到目标呢?此时就会用到索引.一本书想快速找到自己想找的知识点,首先就会先去看目录,而索引就是相当于书的目录,方便查询. 1.2 索引 ...

  2. Spring Boot 学习之,数据库三 ,事务

    事务管理:比如两条信息同时插入数据库,如果一条不成功,那么另一条也不插入.这样就需要引入了事务管理,需要在方法上加 @Transactional事务注解 结构.png 在上一节基础上添加ManInfo ...

  3. 【数据库】第三章 事务、索引和SQL优化

    [数据库]第三章 事务.索引和SQL优化 文章目录 [数据库]第三章 事务.索引和SQL优化 一.事务 1.原子性 2.持久性 3.隔离性 4.一致性 二.索引 1.介绍 2.分类 3.底层实现 4. ...

  4. MySQL数据库的索引、事务和存储引擎

    目录 一.索引 1.1 索引的概念 1.2 索引的作用 1.3 创建索引的原则 1.4 索引的分类 1.5 索引的创建 1.5.1 普通索引 1.5.2 唯一索引 1.5.3 主键索引 1.5.4 组 ...

  5. 基础第三-MySQL-多表查询-索引-事务笔记

    多表查询介绍 目标 了解什么是多表查询,及多表查询的两种方式 什么是多表查询 查询多张表才能得到我们想要的数据 比如:我们想查询到孙悟空在哪个部门,需要将部门表和员工表同时进行查询 [外链图片转存失败 ...

  6. 数据库(4):索引 与 事务

    "那些只言片语戳中我的心" 一.认识磁盘 我们都知道,mysql存在的目的,就是为了解决,用户直接与存储介质打交道效率低的问题. 磁盘是计算机中的一个机械设备,相比于计算机其他电子 ...

  7. Spring事务专题(三)事务的基本概念,Mysql事务处理原理

    我重新整理了大纲,思考了很久,决定单独将MySQL的事务实现原理跟Spring中的事务示例分为两篇文章,因为二者毕竟没有什么实际关系,实际上如果你对MySQL的事务原理不感兴趣也可以直接跳过本文,等待 ...

  8. mysql 事物状态有几种_mysql第三章 事务以及日志

    mysql第三章 事务以及日志 一. 事物简介 每条DDL DCL语句都是事务. 每个begin 到coomit语句是一个事务 二. 事物特性ACID以及开启方式 1. 原子性(A),部成功执行或全部 ...

  9. 定时创建oracle索引,oracle数据库关于索引建立及使用的详细介绍

    索引的说明 索引是与表相关的一个可选结构,在逻辑上和物理上都独立于表的数据,索引能优化查询,不能优化DML操作,Oracle自动维护索引,频繁的DML操作反而会引起大量的索引维护. 如果SQL语句仅访 ...

  10. MySQL:指定索引+事务+存储引擎的配置 开发必备 天呐!为什么会有索引这种东西

    来来来,我告诉你为什么要有索引 索引的概念 索引的作用 索引的分类 普通索引创建的三种方式与删除 创建唯一索引与创建的三种方式 主键索引与创建的两种方式 组合索引 全文索引 创建索引的原则依据 事务的 ...

最新文章

  1. Linux chattr命令详解
  2. linux 格式化未分配区间,Linux 格式化分区 报错Could not stat --- No such file or directory 和 partprobe 命令...
  3. python中Scipy模块求取积分
  4. libevent入门
  5. Leetcode 92 反转链表 II (每日一题 20210726)
  6. 操作系统外壳(shell)
  7. Visual Studio Code Go插件配置选项
  8. java一个源文件供一个程序_java02 Java源文件范例提供了一个布局合理的Java程序范例 - 下载 - 搜珍网...
  9. python redis插件安装
  10. 文字阴影(HTML、CSS)
  11. linux 系统基础知识 - vgextend命令
  12. mysql5.6主从复制与基于amoeba实现读写分离
  13. angelajs中ajax,前端测试数据怎么利用Mock.js进行生成
  14. python series增加一行_关于python:将一个列表或系列作为一行添加到pandas DataFrame中?...
  15. iOS app启动图片及icon图片及应用名设置
  16. 十二个开源UML工具
  17. 802.11系列标准简介
  18. android传感器原理,浅谈Android传感器 III-磁传感器
  19. 分享 | 智慧水务建设方案
  20. VS 调试时,不允许修改代码

热门文章

  1. excel自动排班有假期_Excel中的假期周末标志
  2. bzoj1393 旅游航道
  3. nginx压力测试方法:
  4. 基于Matlab的火灾图像预处理
  5. Justnews主题6.0.1开心版+QAPress社交问答插件/附教程
  6. 2022年全国大学生智能汽车竞赛西部赛 竞赛方案与实施流程
  7. 海康摄像头web集成播放,ffmpeg+nginx方案
  8. Python + Flask 开发微信小程序
  9. Mysql Cluster7.3.7安装与配置
  10. 三轴加速度计、三轴陀螺仪、三轴磁力计