MySQL006事务和索引
事务
保证一个业务逻辑的完整操作
事务可以完成回退的功能,保证业务逻辑的正确性
事务的四大特性
- 原子性
- 一致性(几个并行的事务,执行结果必须与按某一顺序串行执行的结果一致)
- 隔离性(A向C转账,B向C转账,C不会因为AB的转账不知道现在有多少钱)
- 持久性
使用事务的条件
- 数据库引擎必须是innodb或bdb
使用事务的情况
- insert
- update
- delete
事务的三个命令
- begin
- commit
- rollback
1 | 数据库里有一条数据,进行更新操作 |
索引
如何在英语字典里找 book单词? 查找b开头所在页码
- 当数据库数据量很大的时候,查找数据就会变得很慢
- 索引能提高数据访问性能
- 主键和唯一索引,都是索引,可以提高查询速度
- 索引的建立会占据一定的空间(物理开销)
默认所以以主键来存的,而且所以要占据一定的空间(物理开销),你可以建立索引,但是建立多了就会占据更多的空间
选择列的数据类型
- 越小的数据类型越好
- 简单的数据类型更好
- 避免用null值
操作
- 索引分为单列索引和组合索引
查看索引
1 | show index from students; |
建立索引
1 | create index 索引名 on 表名(字段名(长度,如果是数组就不用指定)) |
删除索引
1 | drop index [索引名] on 表名 |
索引的缺点
- 虽然提升了查询速度,同时降低了更新表的速度,如对表进行insert,update,delete(因为更新表的时候数据库不仅仅保存数据,还要保存索引信息)
- 建立索引会占用磁盘空间的索引文件