数据库事务,视图,触发器,索引,存储过程,函数,三大范式

本文详细介绍了数据库事务的ACID特性、隔离级别及其影响,包括脏读、不可重复读和幻读问题。同时,讨论了视图的作用,触发器的应用,以及索引的创建、类型,如普通索引、唯一索引、主键索引和全文索引。此外,还提到了存储过程和函数的差异以及数据库设计中的三大范式。
摘要由CSDN通过智能技术生成

事务 Transaction

事务是逻辑上的一组操作,要么都执行,要么都不执行

事务方法

  • 开启事务:start transaction
  • 提交事务:commit
  • 回滚事务:rollback

事务的特性:ACID

  • 原子性(Atomicity):事务中包含的操作,要么都成功执行,要么都执行失败。
  • 一致性(Consistency):数据库总数从一个一致性的状态转换到另一个一致性状态。(总数总保持不变)
  • 隔离性(Isolation):一个事务执行的操作不对其他事务内部数据和操作造成影响,并发执行的事务相互独立。
  • 持久性(Durability):事务提交后,对数据库中的数据的改变是永久性的,不会因系统崩溃而丢失。

事务的并发时的状态

  • 脏读:一个事务正在访问一个数据时,另一个事务修改了这同一个数据而为提交时,之前的事务读取到了修改后的数据,即:“脏数据”

一个线程中的事务读到了另外一个线程事务中未提交的update数据.

  • 不可重复读:一个事务正在访问一个数据时,另一个事务修改了这个数据,在提交后,之前的事务读取到的数据跟修改前的数据不同。

一个线程中的事务读到了另外一个线程事务中已经提交的update的数据.

  • 虚度(幻读):一个事务正在访问一个表时,另一个数据插入一条数据,之前的事务再次读时,比之前多了一条数据。

一个线程中的事务读到了另外一个线程事务中已经提交的insert的数据.

注意点

MySQL默认的隔离级别:repeatable read

ORACLE默认的隔离级别:read committed

查询事务的隔离级别

mysql 5
select @@session.tx_isolation;//查询当前会话事务隔离级别
select @@global.tx_isolation;//查询全局会话事务隔离级别

mysql 8
select @@session.transaction_isolation;//查询当前会话事务隔离级别
select@@global.transaction_isolation;//查询全局会话事务隔离级别
select @@transaction_isolation;//查询事务隔离级别

设置事务的隔离级别

set session transaction isolation level 隔离登记;

事务隔离级别

  • read uncommitted(读取未提交):最低隔离级别,允许读取尚未提交的数据变更,可能会导致脏读,不可重复读,幻读
  • read committed(读取提交)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值