JavaWeb学习打卡-Day2-Mysql索引、事务
Mysql 索引
什么是索引
- 索引(index)是帮助数据库高效获取数据的数据结构。索引的作用就相当于书的目录。
优势
- 提高数据查询的效率,减少 IO 次数。
- 通过索引对数据进行排序,降低数据排序的成本,降低CPU消耗。
- 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
缺点
- 索引会占用存储空间。
- 创建和维护索引需要耗费许多时间,降低了增删改的效率。
结构
- MySQL数据库支持的索引结构有很多,如:Hash索引、B+Tree索引、Full-Text索引等。
- 我们平常所说的索引,如果没有特别指明,都是指默认的 B+Tree 结构组织的索引。
- B+Tree (多路平衡搜索树)
- 每一个节点,可以存储多个key(有n个key,就有n个指针)。
- 所有的数据都存储在叶子节点,非叶子节点仅用于索引数据。
- 叶子节点之间形成了双向链表,便于数据的排序及区间范围查询。
注意事项
- 主键字段在建表时,会自动创建主键索引。
- 添加唯一约束时,数据库实际上会添加唯一索引。
未完待续…
Mysql 事务
什么是事务
- 事务是逻辑上一组操作的集合,它是一个不可分割的工作单位。
- 事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
作用
- 简单来说,数据库事务可以保证多个对数据库的操作(也就是 SQL 语句)构成一个逻辑上的整体。构成这个逻辑上的整体的这些数据库操作遵循:要么全部执行成功,要么全部不执行 。
# 开启一个事务 START TRANSACTION; # 多条 SQL 语句 SQL1; SQL2; ... ## 提交事务 COMMIT;
ACID 特性
- 原子性(Atomicity):事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用。
- 一致性(Consistency):执行事务前后,数据保持一致。例如转账业务中,无论事务是否成功,转账者和收款人的总额应该是不变的。
- 隔离性(Isolation):并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的。
- 持久性(Durability):一个事务被提交之后,它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。
- 只有保证了事务的持久性、原子性、隔离性之后,一致性才能得到保障。也就是说 A、I、D 是手段,C 是目的!
注意事项
- 默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。