# 数据库基础能力
<br/>
## 不同的读写方式
- 读快照
- 当前读
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
## 当前读的锁机制
- 行锁
- 表锁
- 间隙锁
| id(主键) | c(普通索引) | d(无索引) |
| --- | --- | --- |
| 5 | 5 | 5 |
| 10 | 10 | 10 |
| 15 | 15 | 15 |
| 20 | 20 | 20 |
| 25 | 20 | 20 |
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
## 事务隔离做不好会产生
- 脏读:读到还未提交的内容
- 不可重复读:两次读读到更新后的数据
- 幻读:两次读读到新增的数据
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
## 事务隔离级别
- 读未提交:脏读,不可重复读,幻读
- 读已提交:不可重复读,幻读
- 可重复读:幻读(mysql可解决)
- 串行化
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
## 索引类型分类
- B+树
![](https://img.kancloud.cn/f6/de/f6de2b335567b2625aa770d1d4f1ba3e_640x342.png)
- Hash
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
## 索引形态分类
- 聚簇索引
- 非聚簇索引
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
## 索引优化
- 经常被查询的区分度高的列做索引
- 最左原则
- 回盘排序
- 覆盖索引
- 小表驱动大表
![](https://img.kancloud.cn/f1/37/f1377f3aeb209bb453fd0c9ad668e3eb_923x598.png)
| id(主键) | c(普通索引) | d(无索引) |
| --- | --- | --- |
| 5 | 5 | 5 |
| 10 | 10 | 10 |
| 15 | 15 | 15 |
| 20 | 20 | 20 |
| 25 | 20 | 20 |
排序列遵从顺序规则
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
## 索引调优 explain
- system:仅一行
- const:主键or唯一键的常量等值查询
- eq_ref:主键or唯一键的扫描或关联查询
- ref :非唯一索引的常量等值查询
- range:索引的范围查询
- index:索引全查询
- all:遍历表查询
优化到至少range范围
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>