当前位置: 首页 > wzjs >正文

做本地分类信息网站赚钱吗网页设计电脑配置推荐

做本地分类信息网站赚钱吗,网页设计电脑配置推荐,自己设计装修手机软件,wordpress还有价值么事务隔离 —— 为什么你改了我还看不见? 在数据库中,事务(Transaction) 用于保证一组数据库操作要么全部成功,要么全部失败,这是一种原子性的操作机制。在 MySQL 中,事务的支持由存储引擎层实现…

事务隔离 —— 为什么你改了我还看不见?

在数据库中,事务(Transaction) 用于保证一组数据库操作要么全部成功,要么全部失败,这是一种原子性的操作机制。在 MySQL 中,事务的支持由存储引擎层实现。但并非所有引擎都支持事务,比如 MySQL 原生的 MyISAM 引擎就不支持事务,而 InnoDB 引擎 则是主流的支持事务的引擎。


一、事务的四大特性(ACID)

特性含义
原子性(Atomicity)事务中包含的所有操作要么全部成功,要么全部失败
一致性(Consistency)事务执行前后,数据库都处于一致状态
隔离性(Isolation)并发执行的事务之间彼此隔离,互不影响
持久性(Durability)事务一旦提交,对数据库的修改就是永久性的,即使系统故障也不会丢失

二、隔离性与隔离级别

当多个事务并发执行时,若没有隔离,就可能导致以下问题:

  • 脏读(Dirty Read):读取到未提交事务的数据
  • 不可重复读(Non-repeatable Read):同一事务中多次读取同一数据,值却不同
  • 幻读(Phantom Read):同一事务中两次查询返回的记录数不同

为解决这些问题,SQL 标准定义了四种隔离级别:

1. 四大隔离级别说明

隔离级别描述会发生的问题
Read Uncommitted(读未提交)可以读取未提交事务修改的数据脏读、不可重复读、幻读
Read Committed(读已提交)只能读取已提交事务修改的数据不可重复读、幻读
Repeatable Read(可重复读)同一事务内多次读取结果一致(MySQL 默认)幻读(依赖间隙锁解决)
Serializable(可串行化)强制事务串行执行,防止并发无脏读/不可重复读/幻读,但效率低

注意:隔离级别越高,性能越差。需要根据业务需求做权衡。

2. 示例说明(图示说明略,可自己绘图添加)

假设有两个事务 A 和 B,对某行数据进行读写操作:

  • 读未提交 下,事务 A 会看到事务 B 的未提交修改
  • 读已提交 下,A 只能看到 B 已提交的修改
  • 可重复读 下,A 在整个事务中看到的始终是开始时的数据快照
  • 串行化 下,B 的写操作会被阻塞,直到 A 完成

3. MySQL 中隔离级别的实现方式

  • Read Uncommitted:直接读取最新数据,无视事务
  • Read Committed:每次 SQL 执行前创建一个视图(Read View)
  • Repeatable Read:在事务开始时创建视图,期间一直使用同一个视图
  • Serializable:加锁控制并发,防止冲突

在 MySQL 中,默认隔离级别为 Repeatable Read,但 Oracle 默认是 Read Committed

查询当前隔离级别

SHOW VARIABLES LIKE 'transaction_isolation';

三、事务隔离的实现机制(MVCC)

以“可重复读”为例,MySQL 使用 多版本并发控制(MVCC) 来实现事务隔离。

1. 回滚日志机制

  • 每条记录在更新时都会生成一条回滚日志(undo log)
  • 当前值可以通过逐步回滚恢复到历史版本
  • 不同事务通过自己的视图(Read View)看到的版本可能不同

例如,某值从 1 → 2 → 3 → 4,回滚日志如下:

当前值回滚日志
43、2、1

视图 A 启动于值为 1 时,则通过回滚可看到 1;视图 B 则可能看到 2。

2. MVCC 的优点

  • 允许读取操作不加锁,提升并发性能
  • 实现隔离级别无需加重锁负担

3. 回滚日志的回收问题

  • 回滚日志会在无事务再引用时被清除
  • 长事务 会阻止日志清理,导致存储膨胀

实例:某系统数据仅 20GB,但 undo 日志达 200GB,最终只能重建数据库解决。


四、事务的启动方式及建议

1. 显式启动事务

BEGIN;
-- 或
START TRANSACTION;
-- 提交或回滚
COMMIT;
ROLLBACK;

2. 隐式启动方式:autocommit=0

SET autocommit = 0;
  • 此模式下,即使执行一个简单的 SELECT,也会自动开启事务
  • 若未手动 COMMITROLLBACK,事务将一直占用资源,形成 隐性长事务

建议

  • 使用 SET autocommit=1(默认),通过显式语句控制事务
  • 使用 COMMIT WORK AND CHAIN 可在提交后立即开启下一个事务
-- 查看运行超过60秒的事务
SELECT * 
FROM information_schema.innodb_trx 
WHERE TIME_TO_SEC(TIMEDIFF(NOW(), trx_started)) > 60;

五、总结

  • 事务隔离是数据库并发控制的核心机制
  • 在 MySQL 中,推荐使用默认的 Repeatable Read + MVCC 实现事务隔离
  • 尽量避免隐式长事务,主动控制事务生命周期
  • 根据实际业务权衡性能与隔离性的需求

文章转载自:

http://SZUiu4xg.tbqdm.cn
http://16sX9MpR.tbqdm.cn
http://ry1jOIPF.tbqdm.cn
http://UvaohIaF.tbqdm.cn
http://axBteyAt.tbqdm.cn
http://iqvMYjXj.tbqdm.cn
http://OQfeqA8g.tbqdm.cn
http://De2E6Uy0.tbqdm.cn
http://Td8cNfeh.tbqdm.cn
http://ZyH86PK3.tbqdm.cn
http://aGkFP3xi.tbqdm.cn
http://bLSLrS5D.tbqdm.cn
http://seQf245g.tbqdm.cn
http://aHwd7WOI.tbqdm.cn
http://b48Y1tEh.tbqdm.cn
http://FrIUdZeW.tbqdm.cn
http://cPK8ekcq.tbqdm.cn
http://X7EKFwPC.tbqdm.cn
http://IWpEJLUe.tbqdm.cn
http://Sd7Kqdrq.tbqdm.cn
http://zsCzausL.tbqdm.cn
http://b8b5wOyp.tbqdm.cn
http://K9YdRUti.tbqdm.cn
http://RcadRWfl.tbqdm.cn
http://iZdfnXyG.tbqdm.cn
http://yHtKBiPx.tbqdm.cn
http://MYhHjpT4.tbqdm.cn
http://Pgmh7ZIA.tbqdm.cn
http://AFzRL9DJ.tbqdm.cn
http://2ZoopUGw.tbqdm.cn
http://www.dtcms.com/wzjs/774307.html

相关文章:

  • 网站建设方案免费企业解决方案业务是什么
  • 做企业网站 排名兴宁市住房和城乡规划建设局网站
  • 中小企业是用什么来做网站的开发的创意策划网站
  • 天河网站建设网络推广青岛百度seo排名
  • wordpress %2$swindows优化大师最新版本
  • 大学网站建设技术方案东莞seo建站推广费用
  • 宜州网站建设服务网站后台怎么修改文字
  • 如何建设公司网站知乎东莞网站推广春
  • 网站设计合同模板做英语手抄报 什么网站
  • 网站建设doc建设网站团队
  • 如何自己创建网站教程代理网站备案收钱
  • 深圳做网站找哪家好口碑好网站建设开发
  • 网站做关键词搜索要好多钱百度指数是什么
  • 建设手机网站包括哪些费用吗高端网站建设哪个好
  • 棋牌网站搭建平台网站平台建设的当前问题
  • 做百度移动端网站排名软件网站建设需求分析表怎么写
  • 卖网站链接ppt做的好的有哪些网站有哪些
  • 许昌市做网站网站建设推广代理公司
  • 网站开发怎么做浙江省建筑信息港
  • 怎么做网站排版如何做网站效果更好
  • 品牌网站建设公如何自己做官网首页
  • 个人电子商务网站 制作e时代速递搜索引擎网站建设
  • 南昌教育网站建设程伟网络营销
  • 设计师论坛搜索引擎优化网页
  • 河北省建设厅网站重新安装号店网站建设公司
  • 花都营销型网站邵阳网页制作
  • 北京完美建设有限公司网站恩施建站建设
  • 使用dw设计个人简历网页模板郑州百度网站优化
  • 月嫂的个人简历网站模板电子商务中网站开发
  • 崇信县门户网站领导之窗网站点击代码