事务与索引
事务:
事务原则:ACID原则,原子性,一致性,隔离性,持久性
- 原子性:要么都成功,要么都失败,不能只发生一个动作
- 一致性:表示事务前后的数据完整性要保持一致
- 持久性:事务一旦提交就不可逆,事务没有提交就恢复到原状
- 隔离性:多个事务之间互不影响
事物的隔离级别(隔离失败所导致的一些问题):
- 脏读:指一个事务读取了另一个事物未提交的数据
- 不可重复度:在一个事务内读取表中某一行数据,多次读取结果不同
- 幻读:是指一个事务内读取到了别的事务插入的数据导致前后读取的结果不一致
mysql是默认开启事务自动提交的
手动处理事物流程:
- 关闭事务自动提交:set autocommit = 0
- 标记一个事务的开启,从这之后的sql都在同一个事务内:start transaction
- 成功则提交(持久化):COMMIT
- 失败则回滚(回到原来的样子):ROLLBACK
- 事务结束(开启事务自动提交):set autocommit = 1
- 设置一个事务的保存点:SAVEPOINT 保存点名
- 回滚到保存点:ROLLBACK TO SAVEPOINT 保存点名
- 删除保存点:RELEASE SAVEPOINT 保存点名
索引:
- 索引是帮助mysql高效获取数据的数据结构
- 索引在小数据量的时候用处不大,在大数据量的时候,区别十分明显
索引的分类:在一个表中,主键索引只能有一个,唯一索引可以有多个
- 主键索引(PRIMARY KEY):唯一的标识,主键不可重复,只能有一个列作为主键
- 唯一索引(UNIQUE KEY):避免重复的列出现,唯一索引可以重复,多个列都可以标识唯一索引
- 常规索引(KEY/INDEX):默认的,index、key关键字来设置
- 全文索引(FullText):快速定位数据
索引的创建:CREATE index 索引名 on 表(需要创建索引的字段)
增加一个全文索引:ALTER TABLE 表 ADD FULLTEXT INDEX 索引名(列名)
sql语句前加上EXPLAIN可以分析sql的执行状况
索引原则:
- 索引不是越多越好
- 不要对经常变动的数据加索引
- 小数据量的表不需要加索引
- 索引一般加载经常用来查询的字段上

浙公网安备 33010602011771号