目录
第一步,在A,B中都开启事务
第二步查询两个终端中的number
第三步将B中的number修改为2,但不提交事务
第四步查询A中的值
第五步,提交事务B,再次查询A中的值
第六步,提交A中的事务,再次查询A,B的值。
我们可以看到,在事务隔离级别为读已提交 的情况下,当B中事务提交了之后,即使A未提交也可以读到B事务提交的结果。这样解决了脏读的问题。
首页 数据库 mysql教程 Mysql事务隔离级别内容的介绍(读提交)

Mysql事务隔离级别内容的介绍(读提交)

Jan 09, 2019 am 10:55 AM
mysql 事务

本篇文章给大家带来的内容是关于Mysql事务隔离级别内容的介绍(读提交),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Mysql事务隔离级别之读提交

查看mysql 事务隔离级别
mysql> show variables like '%isolation%';
+---------------+----------------+
| Variable_name | Value          |
+---------------+----------------+
| tx_isolation  | READ-COMMITTED |
+---------------+----------------+
1 row in set (0.00 sec)

可以看到当前的事务隔离级别为 READ-COMMITTED 读提交

下面看看当前隔离级别下的事务隔离详情,开启两个查询终端A、B。

下面有一个order表,初始数据如下

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
第一步,在A,B中都开启事务
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
第二步查询两个终端中的number
  • A

 mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
  • B

 mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
第三步将B中的number修改为2,但不提交事务
mysql> update `order` set number=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
第四步查询A中的值
mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
发现A中的值并没有修改。
第五步,提交事务B,再次查询A中的值
  • B

mysql> commit;
Query OK, 0 rows affected (0.01 sec)
  • A

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      2 |
+----+--------+
1 row in set (0.00 sec)
发现A中的值已经更改
第六步,提交A中的事务,再次查询A,B的值。
  • A

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      2 |
+----+--------+
1 row in set (0.00 sec)
  • B

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      2 |
+----+--------+
1 row in set (0.00 sec)
发现A,B中的值都更改为2了。

下面给一个简单的示意图

48453028-5c354f0a6a9cf_articlex.png

我们可以看到,在事务隔离级别为读已提交 的情况下,当B中事务提交了之后,即使A未提交也可以读到B事务提交的结果。这样解决了脏读的问题。

以上是Mysql事务隔离级别内容的介绍(读提交)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Laravel 教程
1604
29
PHP教程
1510
276
如何让PHP容器支持自动构建 PHP环境持续集成CI配置方式 如何让PHP容器支持自动构建 PHP环境持续集成CI配置方式 Jul 25, 2025 pm 08:54 PM

要让PHP容器支持自动构建,核心在于配置持续集成(CI)流程。1.使用Dockerfile定义PHP环境,包括基础镜像、扩展安装、依赖管理和权限设置;2.配置GitLabCI等CI/CD工具,通过.gitlab-ci.yml文件定义build、test和deploy阶段,实现自动构建、测试和部署;3.集成PHPUnit等测试框架,确保代码变更后自动运行测试;4.使用Kubernetes等自动化部署策略,通过deployment.yaml文件定义部署配置;5.优化Dockerfile,采用多阶段构

MongoDB的交易是什么,它们如何为多文档操作提供酸性? MongoDB的交易是什么,它们如何为多文档操作提供酸性? Jul 31, 2025 am 06:25 AM

MongoDBintroducedmulti-documenttransactionsinversion4.0,enablingatomicoperationsacrosscollectionsforstrongconsistency.Transactionsallowmultipleread/writeoperationstobegroupedasasingleunit,eitherallsucceedingorfailingtogether.Theyaresupportedinreplica

优化MySQL用于财务数据存储 优化MySQL用于财务数据存储 Jul 27, 2025 am 02:06 AM

MySQL用于金融系统需优化四个关键点:1.金融数据必须使用DECIMAL类型确保精度,时间字段使用DATETIME避免时区问题;2.索引设计要合理,避免频繁更新字段建索引,组合索引按查询顺序排列并定期清理无用索引;3.使用事务确保一致性,控制事务粒度,避免长事务和非核心操作嵌入其中,并根据业务选择合适隔离级别;4.对历史数据按时间分区、归档冷数据并使用压缩表,提升查询效率并优化存储。

优化MySQL用于实时数据提要 优化MySQL用于实时数据提要 Jul 26, 2025 am 05:41 AM

TooptimizeMySQLforreal-timedatafeeds,firstchoosetheInnoDBstorageenginefortransactionsandrow-levellocking,useMEMORYorROCKSDBfortemporarydata,andpartitiontime-seriesdatabytime.Second,indexstrategicallybyonlyapplyingindexestoWHERE,JOIN,orORDERBYcolumns,

MySQL数据库成本效益分析用于云迁移 MySQL数据库成本效益分析用于云迁移 Jul 26, 2025 am 03:32 AM

是否值得将MySQL迁到云上取决于具体使用场景。如果你的业务需要快速上线、弹性扩展和简化运维,且能接受按需付费模式,那么迁云是值得的;但若你的数据库长期稳定、对延迟敏感或受合规限制,则可能不划算。控制成本的关键包括选择合适厂商与套餐、合理配置资源、利用预留实例、管理备份日志及优化查询性能。

用对象级特权确保MySQL 用对象级特权确保MySQL Jul 29, 2025 am 01:34 AM

TosecureMySQLeffectively,useobject-levelprivilegestolimituseraccessbasedontheirspecificneeds.Beginbyunderstandingthatobject-levelprivilegesapplytodatabases,tables,orcolumns,offeringfinercontrolthanglobalprivileges.Next,applytheprincipleofleastprivile

管理大型MySQL表的最佳实践 管理大型MySQL表的最佳实践 Aug 05, 2025 am 03:55 AM

处理大表时,MySQL性能和可维护性面临挑战,需从结构设计、索引优化、分表策略等方面入手。1.合理设计主键和索引:推荐使用自增整数作为主键以减少页分裂;使用覆盖索引提升查询效率;定期分析慢查询日志并删除无效索引。2.分区表的合理使用:按时间范围等策略分区,提升查询和维护效率,但需注意分区裁剪问题。3.考虑读写分离和分库分表:读写分离缓解主库压力,分库分表适用于数据量极大场景,建议使用中间件并评估事务和跨库查询问题。前期规划和持续优化是关键。

优化内容管理系统(CMS)的MySQL 优化内容管理系统(CMS)的MySQL Jul 28, 2025 am 03:19 AM

ToimproveMySQLperformanceforCMSplatformslikeWordPress,firstimplementacachinglayerusingpluginslikeRedisorMemcached,enableMySQLquerycaching(ifapplicable),andusepagecachingpluginstoservestaticfiles.Second,optimizeMySQLconfigurationbyincreasinginnodb_buf

See all articles