事务操作流程

1.开启事务:明确事物的起始点(begin或者start transaction)

2.执行操作:执行SQL语句

3.判断结果:若操作都执行成功,提交事务,修改生成

若任意操作失败,回滚事务,撤销所有已经执行的修改

事务的作用:

1.保证数据的一致性:避免因部分操作成功,部分操作失败导致的数据混乱(转账扣钱,但是收款方未收到钱)

2.支持并发控制操作:通过设置隔离性协调多个用户同时操作数据库

3.提供错误恢复机制:操作失败时可通过回滚操作恢复到初始状态,减少数据损坏风险

注意事项:

1.并非所有数据库存储引擎都支持事务(比如MYSQL中的MYLSAM不支持,innoDB支持)

2.事务开启后需要尽快提交或者回滚,避免长时间占用资源导致并发性能下降

3.隔离级别越高,数据一致性最好,但并发效率可能越低。

隔离性在数据库中定义了多个并发事务之间的交互规则,用于平衡数据一致性和并发性能,

4个等级,不同的级别针对并发问题(脏读,不可重复读,幻读)的解决程度不同,

4个等级从低到高:

1.读,未提交(read uncommitted)

定义:一个事物可以读取到另一个未提交的事务所所修改的数据

问题:存在"脏读"问题(提交到未提交的"临时数据",若对方回滚,数据无效)

场景:几乎不使用该隔离性,只适用于对数据一致性要求非常低的场景

2.读已提交(read committed)

定义:一个事物可以读取到另一个已提交的事务所所修改的数据

问题:避免"脏读"问题,存在"不可重复读"问题(同义词数据内两次连续读到同一数据,结果不一致,因中间被其他事物修改并提交)

场景:大多数数据库的默认隔离级别

3.可重复读(repeatable read)

定义:同一事务内多次读取同一数据,结果始终一致(即使其他事物修改并提交,也看不到变化)

解决:避免"脏读""不可重复读",存在幻读(同意书屋内两次执行范围查询,结果行数不同,因中间被其他事物插入/删除数据)

场景:Mysql中innodb默认隔离级别

4.串行性(串行化 Seriallzable)

定义:所有事务串行执行(相当于单线程,一次只能执行一个事务)

解决:避免并发事务的所有问题

场景:并发性极差,只适用于对数据一致性要求非常高,且并发性极低的场景

Mysql中隔离级别分为全局级别(对所有新会话生效)和会话级别(仅对当前会话生效)

1.查看当前会话的隔离级别

SELECT @@transaction_isolation;(8.0版本)

select @@tx_isolation; (5.7及以下)

2.查看全局的隔离级别

SELECT @@global.transacction_isolation; (8.0版本)

select @@global_isolation; (5.7及以下)

3.修改当前会话隔离级别

set session transaction isolation level +隔离级别

4.修改全局隔离级别

set global transaction isolation level +隔离级别

隔离级别名称:

READ UNCOMMITTED (读未提交)

READ COMMITTED (读已提交)

REPEATBALE READ(重复读)

SERIALIZABLE串行性

视图:是一种虚拟的表,其定义由查询语句定义

视图本身不存储数据,而是动态引用(基表)的数据,可以把试图理解成一条预定义的select。用户通过视图来间接查询基表

核心特点:

1.虚拟性:视图没有实际的物理存储,数据都来源于定义的select所涉及的基表

2.动态性:基表数据发生变化时,视图中的数据时会变化的

3.安全性:可以通过视图暴露部分信息,隐藏基表的敏感信息

4.简化性:将复杂的查询逻辑封装成视图,无需重复编写sql,直接查视图即可

适用场景:

1.简化复杂查询:对于多表关联,子查询等复杂逻辑,可封装为视图

2.数据权限控制:只允许查看到基表中的部分信息,隐藏其他信息时可以封装为视图

3.同一数据访问接口,当基表的结构变更时(如字段名修改),可通过修改视图定义保持对外接口不变

定义视图的操作:

creat view 视图名 as select 语句

相关推荐
李白客20 分钟前
向量数据库怎么选:RAG 项目最该比较的 8 个维度(深度拆解)
数据库·aigc
cspttty39 分钟前
需求预测校招入门:SQL、Excel、统计模型和业务指标怎么学
大数据·数据库
2501_9336707942 分钟前
面向物流数据分析校招:SQL、Excel、BI、WMS/TMS该怎么准备
数据库
Code_流苏43 分钟前
AI 知识库和数据库有什么区别?从“查订单”到“问规则”讲清楚
数据库·ai·agent·知识库
YangYang9YangYan1 小时前
财务 BP 校招面试案例整理|业务场景题 + 数据案例,2027 届求职
大数据·数据库
隔窗听雨眠1 小时前
KingbaseES性能优化实战指南:从操作系统调优到SQL等价改写的完整方法论
数据库·kingbasees
NineData2 小时前
NineData 与统信服务器操作系统完成兼容认证
数据库·oracle·操作系统·软件·数据库管理工具·ninedata·统信
十二同学啊11 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技12 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
一 乐15 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序