数据库知识梳理
1.数据库语句执行过程
- 客户端
- 连接器 -> 管理连接,权限验证
- 查询缓存 -> 命中缓存,直接返回
- 分析器->词法和语法分析
- 优化器 -> 生成执行计划,索引选择
- 执行器 -> 操作引擎,返回结果
2.数据库引擎
- InnoDB
优点: 支持事务,外键,行锁.
缺点: 不保存行数,查询时需要扫描全部
- MyISAM
优点: 支持全文搜索,频繁查询.性能快速,表锁
缺点: 不支持事务,外键等等,读写互斥,,当有大量更新时,查询可能被阻塞
- ISAM
- HEAP
3.数据库索引
原理:
使用B树 或者 B+树, 后者更加适合.
优点:
提高查询速度.
缺点:
占用额外的物理空间,后期维护难,插入数据时,需要同步维护索引
- 主键索引(primary key)
- 唯一索引(unique key)
- 外键索引(foreign key)
- 检查索引(check key)
4.数据库语言分类
- DQL (数据库查询语言)
select
- DML (数据库管理语言)
insert
update
delete
- DDL (数据定义语言)
create
- DCL (数据库控制语言)
grant
5.存储过程
优点:
一次创建,多次使用,调用简单,可供外部程序使用.
在运行之前,语法和词法分析已经完成,优化了执行顺序,已经编译好的SQL语句,可以极大提高执行速度.
可以降低网络通信量
缺点:
移植性差
触发器是一种特殊的存储过程, 主要通过事件触发来执行.
6.事务
事务的四大特性ACID
A.原子性
要不全部执行,要么失败,全部回滚.
C.一致性
保证数据执行前后的一致性.
I.隔离性
多个用户并发访问同一个表,数据库为每一个用户开启的事务都不能被其他用户事务干扰.
多个并发事务,要相互隔离.
D.持久性
事务一旦提交,对数据的改变是永久性的.
隔离级别:
1. Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
2. Repeatable read (可重复读):可避免脏读、不可重复读的发生。
3. Read committed (读已提交):可避免脏读的发生。
4. Read uncommitted (读未提交):最低级别,任何情况都无法保证。