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

丰台网站制作浩森宇特百度首页清爽版

丰台网站制作浩森宇特,百度首页清爽版,东莞网页制作招聘信息,visual studio 2010 网站开发一、MySQL事务 MySQL 中的 事务(Transaction) 是一种将多个 SQL 操作打包成一个整体执行的机制,确保数据的一致性和可靠性。事务广泛用于需要原子性的数据操作,比如转账、订单创建等。 事务的四大特性(ACID&#xff…

一、MySQL事务

MySQL 中的 事务(Transaction) 是一种将多个 SQL 操作打包成一个整体执行的机制,确保数据的一致性和可靠性。事务广泛用于需要原子性的数据操作,比如转账、订单创建等。

事务的四大特性(ACID):

特性说明
原子性(Atomicity)一个事务中的操作要么全部成功要么全部失败,不可分割。
一致性(Consistency)事务执行前后,数据库处于一致状态(遵守约束规则、业务规则)。
隔离性(Isolation)多个事务互不干扰,彼此隔离。事务并发时数据仍一致。
持久性(Durability)一旦事务提交,修改永久保存,即使系统崩溃也不会丢失。

二、事务基本语句

事务基本语句(InnoDB 引擎支持事务):

语句作用
START TRANSACTION;BEGIN;显式开始一个事务
COMMIT;提交事务,永久保存所有操作
ROLLBACK;回滚事务,撤销所有操作
SAVEPOINT 保存点名;设置一个保存点,用于部分回滚
ROLLBACK TO 保存点名;回滚到某个保存点,仅撤销一部分操作
SET autocommit = 0;关闭自动提交,进入手动事务控制状态
SET autocommit = 1;恢复自动提交(默认)

注意:
MySQL 默认是自动提交模式,即每条语句自动提交。

示例一:基本事务流程

START TRANSACTION;UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;COMMIT;

如中途出错,也可用:

ROLLBACK;

示例二:使用保存点(SAVEPOINT

START TRANSACTION;UPDATE users SET score = score + 10 WHERE id = 1;SAVEPOINT sp1;UPDATE users SET score = score - 50 WHERE id = 2;ROLLBACK TO sp1;COMMIT;

注意:

  • 第二条 UPDATE 被撤销,第一条仍然生效。

三、事务隔离级别(Isolation Level)

事务隔离级别定义了一个事务能看到其他事务对数据库的更改程度

级别可解决的问题会出现的问题MySQL默认
READ UNCOMMITTED会出现脏读
READ COMMITTED解决脏读可能出现不可重复读
REPEATABLE READ (默认)解决脏读和不可重复读可能出现幻读
SERIALIZABLE解决所有问题(脏读、不可重复读、幻读并发性能差

设置事务隔离级别:

SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL REPEATABLE READ;

四、事务中的日志机制

日志类型作用
Undo Log撤销未提交的事务、实现 MVCC
Redo Log保证事务提交后数据的持久性
Binlog用于主从复制、增量备份

InnoDB 使用 “先写日志、后写磁盘” 策略,避免崩溃丢数据。

五、事务引擎:InnoDB

MySQL 中支持事务的主要引擎是 InnoDB,它是 MySQL 的默认存储引擎,也是最常用于高可靠性、高并发场景的引擎。

1. InnoDB 引擎简介

特性是否支持说明
支持事务(ACID)完整支持事务四大特性
行级锁定并发控制粒度细,避免表级锁带来的性能问题
外键约束支持 FOREIGN KEY 语法进行引用完整性约束
自动崩溃恢复通过 Redo Log(重做日志)Undo Log(回滚日志) 实现
多版本并发控制(MVCC)实现高并发下的非阻塞读操作
支持全文索引✅(5.6+)支持 FULLTEXT 索引,适用于文本搜索
表空间管理支持独立表空间 (innodb_file_per_table)

2. InnoDB 事务核心机制

InnoDB 通过以下几项核心机制实现高可靠事务性

(1) Undo Log(回滚日志)

  • 数据修改前记录一份旧值(用于回滚或 MVCC)。
  • 保证事务回滚和一致性视图。
  • 存储在 undo segment 中,自动清理。

(2)Redo Log(重做日志)

  • 记录已提交事务对数据的修改操作
  • 用于 崩溃恢复,防止宕机后数据丢失。
  • 先写日志再写磁盘(WAL:Write-Ahead Logging)。
  • ib_logfile0/1#innodb_redo 文件组成。

(3)MVCC(多版本并发控制)

  • 实现 快照读,避免加锁,提高读性能。
  • 每条记录有隐藏的事务ID和回滚指针
  • 只有 REPEATABLE READREAD COMMITTED 使用 MVCC。

3. 事务隔离级别(Isolation Level)

InnoDB 支持 SQL 标准的 4 种隔离级别:

隔离级别是否支持脏读是否支持不可重复读是否支持幻读InnoDB 默认
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ✅ 默认
SERIALIZABLE

💡 InnoDB 通过 间隙锁(Gap Lock) 解决幻读,而不是真正序列化。

六、事务并发问题

并发问题描述影响隔离级别
脏读读到未提交事务的数据仅 SERIALIZABLE & REPEATABLE READ 避免
不可重复读两次查询同一记录,结果不同(别的事务修改了数据)REPEATABLE READ 能避免
幻读两次查询满足条件的记录数不同(别的事务插入了新数据)SERIALIZABLE 避免

七、典型示例——银行转账事务

START TRANSACTION;UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;-- 出错则回滚
-- IF (error) THEN
--     ROLLBACK;
-- ELSE
COMMIT;

注意:

  • 如果两个 UPDATE 都成功执行,则 COMMIT数据写入磁盘
  • 如果任一语句执行失败(例如账户不存在、余额不足等),应手动调用 ROLLBACK 撤销所有操作。

八、两阶段提交(事务+Binlog

InnoDB 为保证与 Binlog 一致,使用两阶段提交机制(prepare → commit):

  1. Redo Log prepare;
  2. Binlog
  3. Redo Log commit;

保证主从一致性,避免部分提交

九、MySQL事务常见问题与答案

问题简要答案
InnoDB 如何保证事务原子性Undo Log 记录原始版本,失败时可回滚
如何防止脏读设置隔离级别为 READ COMMITTED 或更高
什么是幻读?怎么解决并发插入导致结果数量变化,使用 Gap Lock / SERIALIZABLE 隔离级别
Redo LogBinlog 有何不同Redo 是物理日志用于崩溃恢复;Binlog 是逻辑日志用于复制与备份
http://www.ds6.com.cn/news/28769.html

相关文章:

  • wordpress 随机页面seo推广的方法
  • 优化网站图片宁波网站快速优化
  • 论述政府门户网站建设的基本意义百度新闻官网首页
  • 做推广什么网站便宜厦门网络推广外包
  • wordpress教程app青岛seo关键词优化排名
  • flask 网站开发什么是seo是什么意思
  • 做校园文化的网站seo是什么意思职业
  • 果洛营销网站建设哪家好seo网站营销推广
  • 网站后台建设国际新闻网站
  • 杭州企业自助建站新浪体育最新消息
  • 游戏网站风控怎么做企业培训体系搭建
  • 怎么做招聘网站的调研seo一个月工资一般多少
  • 锦州电脑网站建设哪家培训机构学校好
  • 如何保护网站名开一个免费网站
  • 怎样自己做网站卖钱网络宣传推广方法
  • 谎称在赌博网站做维护网站seo方案案例
  • 怎么做学校子网站惠州seo代理商
  • 电子商务网站的特点seo综合查询怎么用
  • 招聘门户网站开发人员网络营销ppt
  • wordpress插入大图汕头seo代理
  • 提交网站地图百度有人工客服吗
  • 许昌建网站的公司在哪条路kj6699的seo综合查询
  • 东莞网络优化调查公司充电宝关键词优化
  • 利用高权重网站做关键词济南网站设计
  • 网站建设的视频品牌营销服务
  • 网站的公关和广告活动怎么做常州百度搜索优化
  • 可以做笔试面试题的网站站长工具5g
  • 自我介绍网站html360网站收录提交入口
  • 个人备案做非经营性网站百度爱采购关键词优化
  • 英文网站建设方法云盘搜