目录
索引
概念
索引相当于书的目录,可以提高查的速度。但是索引也提高了增删改的开销,因为进行增删改会需要调整已经创建好的索引目录,降低增删改的速度。索引还提高了空间的开销。
增删改中包含查,总体来看查的频率高于增删改,所以索引对于提高数据库的性能有很大的帮助。
使用
-
创建索引
根据名字这一列来创建索引
-
查看索引
-
删除索引
索引在MySQL中的数据结构
- N叉搜索树:每个节点上有多个值,同时有多个分叉,树的高度就降低了。
其中一种典型代表是B树。
对B树做进一步的改进,又引入了B+树。
索引的数据结构就是B+树
- 提高查询速度,本质上是降低硬盘IO次数
事务
概念
事务的四大特性:原子性、一致性、持久性、隔离性
这些操作是要么全部成功,要么全部失败(执行中途出错的情况)。
- 原子性:把所有操作打包成一个整体
- 一致性
- 持久性
- 隔离性
mysql的隔离级别
- “脏读”
- 不可重复读
- 幻读
MySQL提供了4个隔离级别
隔离级别 | 描述 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|---|
read uncommitted | 不做任何限制,事物之间可以随意并发执行。并发程度最高,隔离程度最低。 | ✔ | ✔ | ✔ |
read committed | 对写操作加锁,并发程度降低,隔离性提高 | ❌ | ✔ | ✔ |
repeatable read | (默认档位)对写和读都加锁,并发程度进一步降低,隔离性进一步提高。 | ❌ | ❌ | ✔ |
serializable | 严格串行化,并发程度最低,隔离性最高,执行速度最慢 | ❌ | ❌ | ❌ |