1.和事务相关的语句只有DML语句(多条DML语句联合)
transaction存在是为了保证数据完整性和安全性
3.transaction四大特性:
一:原子性:transaction为最小工作单元,不可再分
二:一致性:多条DML语句同时成功或失败
三:隔离性:transaction A 与 transaction B 之间有隔离
四:持久性:最终数据必须持久化到硬盘中,transaction才算结束
4.事务(transaction)的隔离性级别
一:读未提交:(read uncommitted)
对方事务还未提交,当前事务可读取到对方为提交的数据
(dirty read)脏读现象
二:读已提交:(read committed)
对方提交后,当前事务方可读到数据
解决了dirty read现象,但不可重复读
三:可重复读: (repeatable read)
解决了:不可重复读问题
存在问题:读取到的对象是幻象
四:序列化/串行化读 (serializable)
解决所有问题
但是效率低,需要事务排队
5.Oracle默认是二级(read committed)读已提交,mysql是三级(repeatable read)
6.mysql中的事务时支持自动提交的
start transaction关闭自动提交
7.设置事务的全局隔离级别
set global transaction isolation leveal read 跟级别例如 read committed;
查看事务的全局隔离级别
select @@global.tx_isolation; // (mysql5.0)
select @@global.transactoin_isolation; //(mysql8.0)
8.啥时候添加索引?
(1).数据量庞大的时候
(2).该字段很少的DML操作(因为字段进行修改操作,索引也需要维护)
(3) .该字段经常出现在where子句中
9.主键(primary key)和具有unique约束的字段会自动添加索引。
根据primary key 查询效率高