首页 > 数据库 >MySQL 事务隔离

MySQL 事务隔离

时间:2024-10-13 20:11:42浏览次数:6  
标签:回滚 隔离 事务 版本 MySQL commit

事务保证一组操作要么全部成功,要么全部失败。

在 MySQL 中事务是在引擎层实现的。

隔离性和隔离级别

事务的四大特性(ACID):原子性、一致性、隔离性、持久性

事务隔离级别:读未提交、读已提交、可重复读、串行化

当数据库有多个事务同时执行的时候,可能会出现丢失更新、脏读、不可重复读、幻读

在实现上,数据库会创建一个视图,读已提交在每次执行时创建,可重复读在事务开启时创建

MySQL 的默认隔离级别是可重复读

show variables like '%transaction_isolation%'

事务隔离的实现

实现原理:undo log、多版本并发控制(MVCC)

多版本并发控制:同一条记录在数据库中可以存在多个版本

长事务

尽量避免长事务:

  • 长事务会导致回滚日志占用大量空间(5.5版本及之前,回滚日志和数据字段一起放到ibdata文件中,即使回滚段被清除,文件也不会变小)
  • 长事务会占用锁资源

事务启动方式

事务启动方式

  • 通过 begin, start transactioncommitrollback 方式使用事务
  • 通过 set autocommit=0commit, rollback方式使用事务

使用第二中方式使用事务,并且是长连接,如果忘记执行 commit 就会导致长事务

查看事务

查询执行时间超过 60 秒的事务

select * from information_schema.innodb_trx where TIME_TO_SEC(timediff(now(),trx_started))>60

标签:回滚,隔离,事务,版本,MySQL,commit
From: https://www.cnblogs.com/liaozibo/p/18462868

相关文章

  • 使用MySQL之检索数据
    检索单个列比如:SELECTprod_nameFROMproducts;输出如下:此时数据没有过滤(过滤将得出结果集的一个子集),也没有排序。检索多个列比如:SELECTprod_id,prod_name,prod_priceFROMproducts;输出如下:从上述输出可以看到,SQL语句一般返回原始的、无格式的数据。数据的格式......
  • MySQL中的数据类型有哪些?如何选择合适的数据类型来优化性能?
    MySQL中的数据类型丰富多样,它们主要分为以下几大类,并且每一类中又包含多种具体的数据类型:整数类型:包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT等,这些类型用于存储整数值,其范围和存储大小各不相同。例如,TINYINT占用1个字节,而BIGINT则占用8个字节。浮点数和定点数类型:FLO......
  • DAY3 MySQL学习笔记
    DAY3MySQL学习笔记DDL-表操作-数据类型MySQL中数据类型主要分为三类:数值型、字符串型、日期时间类型数值类型分类类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述TINTING1byte(-128,127)(0,255)小整数值SMALLINT2bytes(-32768,32767)(0,65536)大整数值MEDIUMINT3bytes......
  • Windows环境下手动安装MySQL
    下载MySQL安装包:前往MySQL官网下载适合你系统的安装包,例如mysql-installer-web-community.0.8.5.msi。手动运行安装程序:双击下载的安装包,启动安装向导。按照向导的提示完成安装过程。检查安装路径:安装完成后,检查MySQL的安装路径,例如C:\ProgramFiles\MySQL\MySQL......
  • Mysql(2)—SQL语法详解(通俗易懂)
    一、关于SQL1.1简介SQL(StructuredQueryLanguage,结构化查询语言)是一种用于管理关系型数据库的标准编程语言。它主要用于数据的查询、插入、更新和删除等操作。SQL最初在1970年代由IBM的研究人员开发,旨在处理关系数据模型。MySQL支持SQL,用于对数据库进行查询、更新和管理。......
  • 网站mysql怎么连接数据库
    要在一个网站中连接MySQL数据库,通常需要遵循以下步骤:安装数据库驱动:确保你的开发环境中已经安装了适用于你所使用的编程语言的MySQL客户端库。例如,在Python中可以使用mysql-connector-python或pymysql。配置数据库连接信息:你需要知道数据库的访问信息,包括数据库服务器地址......
  • 网站连接数据库怎么写:如何使用mysql-connector-python连接到MySQL数据库
    importmysql.connectorfrommysql.connectorimportErrortry:#创建连接connection=mysql.connector.connect(host='localhost',#数据库服务器地址user='your_username',#数据库用户名password='your_passwor......
  • 免费送源码:Java+ssm+MySQL 心理治愈平台 计算机毕业设计原创定制
    摘 要随着社会的飞速发展和信息时代的到来,我们所处的社会也在发生着前所未有的变化。这主要体现在人们的生活节奏不断加快,活动范围在不断拓展,人与人的交往越来越多,处理微妙复杂的人际关系为每个人所不可避免,各种各样的竞争强度也越来越巨大,人与人之间的收入、社会地位等......
  • MySQL 日志系统
    MySQL日志系统:一条SQL更新语句是如何执行的WAL:先写日志,再写磁盘(顺序写代替随机写,提高性能)两阶段提交:保证redolog和binlog一致性MySQL三种日志SQL更新语句和SQL查询语句一样要经过各功能模块的处理,区别是更新语句设计写日志(binlog、redolog、undolog)。binlog记录......
  • MySQL 基础架构
    MySQL基础架构:一条SQL查询语句如何执行连接器(管理连接、权限验证)查询缓存(5.7不推荐使用,8.0完全废弃)解析器(解析树)优化器(索引选择、表关联顺序、执行计划)执行器(调用存储引擎接口)执行引擎(InnoDB、MyISAM、Memory)MySQL分成Server层和存储引擎层两部分。连接器mysql-h<ip......