【MySQL 数据库】MySQL 的索引和事务(扫盲必备)

x33g5p2x  于2021-12-01 转载在 Mysql  
字(1.1k)|赞(0)|评价(0)|浏览(485)

1. 索引

1.1 概念

通俗的讲,索引与数据库中的表和数据的关系就类似于书架上的图书(表)、书籍内容(数据)和书籍目录(索引)的关系

1.2 作用

在数据库系统中建立索引主要有以下作用:

1.3 索引的原理

1.3.1 减少磁盘的访问次数是构建索引的核心思想

1.3.2 B+ 树适用实现索引的底层

减少对数据的访问次数就是实现索引时的重要思想,接下来将会对几种数据结构进行分析,以找到更适合的实现索引的数据结构

二叉搜索树

AVL 树

红黑树

哈希表

到这里为止,好像只有 AVL 树或者红黑树更加适合用作 MySQL 的索引的实现,而这两个数据结构的查找效率直接是由树的高度决定的,因此数据增多的话,树的高度也会增加。

为了进一步优化,就可以使用 N 叉搜索树来降低树的高度,即减少磁盘 IO,以提高查找效率

B 树

B+ 树

1.4 适用场景

1.5 使用语句

补充:

1.5.1 查看索引

语法:

show index from 表名;

示例:

1.5.2 创建索引

语法:

create index 索引名 on 表名(字段名);

示例:

1.5.3 删除索引

语法:

drop index 索引名 on 表名;

示例:

注意:

2. 事务

2.1 概念

通俗的讲,比如银行转账的操作,A 转给 B 500元,那么这个操作其实包含了 A 账户余额减少500元和 B 账户余额增加500元两个操作。

事物就相当于将这一连串的动作给打包,使其成为一个整体,要么全都不做,要么全都做完

2.2 为什么使用事务

用上述银行转账的例子为例,假设 A 账户减少500元的操作成功了,但 B 账户增加500元的账户没有成功,那么这个转账的操作是失败的。

事物的核心特点就是: 把一系列操作给打包到一起,构成一个整体,要么全都做完,要么一个都不做。

全都不做是指: 如果某个操作失败了,那么就会将此时的中间状态偷偷还原回去

因此使用事物的话就可以保证,某一系列的操作,不会只完成其中一部分,它要么完全完成,要么都没有完成

2.3 四大属性

事务是恢复和并发控制的基本单位,它具有四个属性:原子性、一致性、持久性、隔离性

事物的核心是原子性

2.3.1 原子性

概念:

事物的核心是原子性,原子性的核心是回退为中间状态,回退为中间状态核心就是回滚,回滚的核心就是记住每步的操作

2.3.2 一致性

概念:

执行事物之前和执行事物完成后,当前表里的数据都是合理的状态

2.3.3 持久性

概念:

事物操作的数据都是直接操作硬盘,而硬盘的数据都是持久化的

2.3.4 隔离性

概念:

2.4 使用方法

  1. 开启事物
start transaction;
  1. 执行多条 SQL 语句
  2. 回滚或提交
-- 回滚:表示上述 SQL 语句全部失败
rollback;

-- 提交:表示上述 SQL 语句全部成功
commit;

相关文章