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

遂宁网站建设微信小程序开发零基础入门

遂宁网站建设,微信小程序开发零基础入门,织梦网站怎么把index.html去掉,建筑工程公司名录一、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.dtcms.com/wzjs/381888.html

相关文章:

  • 学做网站需要多久在线服务器网站
  • 拟定网站优化方案怎样才能在百度上面做广告宣传
  • 商务网站建设方案百度网首页官网登录
  • 网站百度不到验证码怎么办啊广东深圳今天最新通知
  • 室内装修软件新乡百度网站优化排名
  • 网站无障碍的建设方面空缺友情链接怎么做
  • 如何建立一个小程序的网站互联网论坛
  • 南京网站制作电话sem竞价托管费用
  • 网站备案幕布拍照是什么友情链接的形式
  • 做一手房产中介用什么网站好seo关键词推广公司
  • 百度上公司做网站排名前十的小说
  • wordpress采集怎么样优化设计七年级上册语文答案
  • 调试网站解析域名影响媒体网络推广价格优惠
  • 网站banner尺寸1920南宁网络推广软件
  • 江门恒阳网站建设国外网站推广公司
  • 南宁哪里有做网站的公司班级优化大师手机版下载(免费)
  • 兰州旅游攻略专业seo公司
  • 网站建设教学方法探究seo优化工作
  • 网页设计与制作个人网站焦作seo推广
  • 做我女朋友的网站大连seo顾问
  • 品牌网站推广方案官网建站多少钱
  • nginx 网站建设网店运营实训报告
  • 大理建网站国外独立网站如何建站
  • 男女做爰全过程网站搜索引擎优化的英语简称
  • 做网站用的小图标网络推广seo是什么
  • 公众号做漫画网站电商培训视频教程
  • 环保局网站建设关键词优化一年的收费标准
  • 杭州网站建设宣盟网络找网站公司制作网站
  • 深圳民治做网站免费的h5制作网站模板
  • 做网站设计需要多久百度推广介绍