数据库相关概念

一,数据库事务

1.事务概念

指作为一个不可分割的逻辑工作单元的一系列数据库操作。事务可以包含一条或多条数据库操作语句,这些语句被视为一个整体。事务的目标是确保数据库在多个操作之间保持一致性和完整性。

2.事物特性

ACID特性

• 原⼦性(Atomicity):⼀个事务中的多个DML操作,要么同时执⾏成功,要么同时执⾏失败。如果事务中的任何一个操作失败,所有操作都会被回滚,使数据库恢复到执行事务前的状态。

• ⼀致性(Consistency):事务执⾏之前和事务执⾏之后,数据库中的数据是⼀致的,完整性和 ⼀致性不能被破坏

• 隔离性(Isolation):数据库允许多个事务同时执⾏(张三借Java书的同时允许李四借Java 书),多个必⾏的事务之间不能相互影响

• 持久性(Durability):事务完整之后,对数据库的操作是永久的

3.MySQL事务管理

•⾃动提交

 在MySQL中,默认DML指令的执⾏时⾃动提交的,当我们执⾏⼀个DML指令之后,⾃动同步到数 据库中

•事务管理

 开启事务,就是关闭⾃动提交

   ◦ 在开始事务第⼀个操作之前,执⾏ start transaction 开启事务

   ◦ 依次执⾏事务中的每个DML操作

   ◦ 如果在执⾏的过程中的任何位置出现异常,则执⾏ rollback 回滚事务

   ◦ 如果事务中所有的DML操作都执⾏成功,则在最后执⾏ commit 提交事务

 4.事务隔离级别

事务的隔离级别(isolation level)是指多个并发事务之间相互隔离的程度。数据库管理系统使用隔离级别来控制事务之间的相互影响,确保并发事务执行的正确性和一致性。

常见的事务隔离级别包括:

1. 读未提交(Read Uncommitted):最低的隔离级别,事务可以看到其他事务尚未提交的修改。这种隔离级别允许脏读(Dirty Read),即读取到了其他事务未提交的数据。

2. 读已提交(Read Committed):事务只能看到已经提交的数据,不能读取到其他事务尚未提交的数据。这种隔离级别避免了脏读,但可能出现不可重复读(虚读),即在同一个事务内,多次读取同一数据的结果可能不一致。

3. 可重复读(Repeatable Read):事务开始时确定一个一致的快照视图,并在整个事务期间保持一致。其他事务对数据的修改在当前事务提交之前不可见。这种隔离级别避免了不可重复读,但可能出现幻读,例 T2对数据表中的数据进⾏修 改然后查询,在查询之前T1向数据表中新增了⼀条数据,就导致T2以为修改了所有数据,但却查询出了与修改不⼀致的数据(T1事务新增的数据)

4. 串行化(Serializable):最高的隔离级别,确保每个事务都像是在系统中独立执行的。所有事务按照顺序依次执行,避免了脏读、不可重复读和幻读的问题。但由于保证了严格的事务顺序,会导致并发性能降低。

5.设置数据库事务隔离级别

MySQL数据库默认的隔离级别为 可重复读

•查看MySQL数据库默认的隔离级别

# 在MySQL8.0.3 之前

select @@tx_isolation;

# 在MySQL8.0.3 之后

select @@transaction_isolation;

•设置MySQL默认隔离级别

set session transaction isolation level <read committed>;

二,数据库设计

1.三范式

1.第⼀范式 :要求数据表中的字段(列)不可再分。即确保每个属性都是原子的。表中的每个列都应该包含一个单一的值,而不是多个值或重复的值。此外,每个列都应该有一个唯一的名称,并且在表中有一个唯一的标识

2.第⼆范式 :不存在⾮关键字段对关键字段的部分依赖 。即在满足第一范式的基础上,消除非主键属性对部分主键属性的部分依赖。如果一个表中存在多个列组合形成的主键,那么每个其他列都应该完全依赖于这个组合主键,而不是部分依赖。如果有列与部分主键相关,那么它们应该被移至另一个表中。

3.第三范式 :不存在⾮关键字段之间的传递依赖。即在满足第二范式的基础上,消除非主键属性对主键的传递依赖。如果一个表中某些列依赖于其他非主键列,而不是直接依赖于主键,那么应该将这些依赖关系拆分为独立的表,以避免数据冗余和不一致性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值