事务的特点
1 原子性 最小的执行单位
2 一致性 要么就是开始状态,要么是最终状态,没有中间状态
3 隔离性 外部看不到事务的内部细节
4 常见性 事务成功会保存下来,其他事情影响不到
事务的生命周期
1事务自动开始,第一行SQL或者上一个事务完成后自动启动下一个事务
2什么时候结束?提交(commit)或者回滚(rollback)
3 DDL语言 属于自动提交 create alter drop truncate
4部分回滚 savepoint设置保存点,只回滚到保存点。
锁 数据库系统通过一种机制,用来保障数据的安全可靠
分类1:内部锁(Oracle内部的事情) DDL锁 DML锁
分类2:S 全表只读锁 乐观锁 X 全表排他锁 悲观锁 RS 行级只读锁 RX 行级排他锁 SRX 全表只读行级排他锁
S 全表只读锁share 乐观锁 只有当前会话能操作该表,其他会话只能用(select)此表,不能做增删改行为
create table XXX(......)
X 全表排他锁exclusive 悲观锁 独占锁 只有当前会话能操作该表,其他会话不能读写,必须等
alter table XXX ddd 列名 数据类型 ;如果数据量非常大,加约束将会导致操作时间变得很长
RS 行级只读锁row share 只有当前会话能操作该表,其他会话可以操作(增删改查)其他记录或者读取(select)这几条记录
update delete where 符号条件的列将会被锁定只读 其他会话查询到这几条记录增删改前的记录
整张表的记录全表被锁定 还是只能算行级锁
RX 行级排他锁row exclusive 只有当前会话能操作这几条记录,其他会话可以操作(增删改查)其他记录。
insert 表名(字段名) values(值); 被插入的记录是排他锁锁定的,其他会话不能查询到这几条记录
SRX 全表只读行级排他锁share row exclusive 只有当前会话可以操作这几条记录,其他会话可以读取读取(select)其他记录。
分类3:行级锁 表级锁 数据库级锁
selecr * from 表名
where 条件 for update
行级只读锁
1 原子性 最小的执行单位
2 一致性 要么就是开始状态,要么是最终状态,没有中间状态
3 隔离性 外部看不到事务的内部细节
4 常见性 事务成功会保存下来,其他事情影响不到
事务的生命周期
1事务自动开始,第一行SQL或者上一个事务完成后自动启动下一个事务
2什么时候结束?提交(commit)或者回滚(rollback)
3 DDL语言 属于自动提交 create alter drop truncate
4部分回滚 savepoint设置保存点,只回滚到保存点。
锁 数据库系统通过一种机制,用来保障数据的安全可靠
分类1:内部锁(Oracle内部的事情) DDL锁 DML锁
分类2:S 全表只读锁 乐观锁 X 全表排他锁 悲观锁 RS 行级只读锁 RX 行级排他锁 SRX 全表只读行级排他锁
S 全表只读锁share 乐观锁 只有当前会话能操作该表,其他会话只能用(select)此表,不能做增删改行为
create table XXX(......)
X 全表排他锁exclusive 悲观锁 独占锁 只有当前会话能操作该表,其他会话不能读写,必须等
alter table XXX ddd 列名 数据类型 ;如果数据量非常大,加约束将会导致操作时间变得很长
RS 行级只读锁row share 只有当前会话能操作该表,其他会话可以操作(增删改查)其他记录或者读取(select)这几条记录
update delete where 符号条件的列将会被锁定只读 其他会话查询到这几条记录增删改前的记录
整张表的记录全表被锁定 还是只能算行级锁
RX 行级排他锁row exclusive 只有当前会话能操作这几条记录,其他会话可以操作(增删改查)其他记录。
insert 表名(字段名) values(值); 被插入的记录是排他锁锁定的,其他会话不能查询到这几条记录
SRX 全表只读行级排他锁share row exclusive 只有当前会话可以操作这几条记录,其他会话可以读取读取(select)其他记录。
分类3:行级锁 表级锁 数据库级锁
selecr * from 表名
where 条件 for update
行级只读锁