首页 > 数据库 >Mysql 事务

Mysql 事务

时间:2023-10-17 23:32:50浏览次数:36  
标签:事务 读取 数据 isolation Mysql 级别 隔离

1.事务的概念

事务是访问并更新数据库中各种数据项的一个程序执行单元。在事务中的操作,要么都做修改,要么都不修改。

2.事务和锁

当执行事务操作时(dml语句),mysql 会在表上加锁,防止其他用户修改数据。

3.事务的特性:

a.原子性:事务是一个原子操作,它要么全部成功,要么全部失败回滚。

b.一致性:事务的执行必须使数据库从一个一致状态转换到另一个一致状态。

c.隔离性:并发事务的执行不能相互干扰。事务必须在独立的空间内执行,这意味着它们看起来像是在独占访问数据库。

d.持久性:一旦事务完成提交,其结果就是永久性的,并且即使在系统故障的情况下,也必须能够恢复这些结果。

redo log是重做日志,用来保证事务的原子性与持久性,redo 基本上都是顺序写。undo 是回滚日志,用来保证事务的一致性,undo log 需要进行随机操作。

4.事务的隔离级别

Mysql 事务_数据

事务的隔离级别用于决定如何控制并发用户读写数据的操作,可能会导致脏读、不可重复读、幻读等问题。隔离级别越高,并发访问性能越差。

a.脏读:在不同的事务下,当前事务可以读到另一个事务未提交的数据,简单来说就是可以读到脏数据。脏数据是指事务对缓冲池中行记录的修改,并且还没有被提交。

b.不可重复读:在同一个事务内多次读取同一数据集读取到的结果不一致。脏读是读取到了未被提交的数据,而不可重复度是读取到了已提交的数据。

c.幻读:在同一事务内多次执行相同查询时,可能会看到不同的行数或记录。

5.查看隔离级别

a.查看当前会话层隔离级别

select @@tx_isolation;

b.查看系统隔离级别

select @@global.tx_isolation;

c.设置当前会话层隔离级别

set session transaction isolation level repeatable read;

d.设置系统隔离级别

set global transaction isolation level repeatable read;

标签:事务,读取,数据,isolation,Mysql,级别,隔离
From: https://blog.51cto.com/u_11103985/7910746

相关文章

  • 搭建MYSQL主从
    基于二进制日志文件位置的复制#根据前面的文档,搭建两台MySQL服务,具体步骤略192.129主192.127从#主:配置这一步是因为my.cnf在/etc/下的话,它不会识别,需要在mysqld.service启动脚本中定义路径,然后需要把/etc/my.cnf配置文件拷贝到定义的目录下vim/usr/lib/systemd/system/mysqld.s......
  • MySQL 联合查询
    MySQL联合查询在MySQL中,联合查询(也称为JOIN查询)是一种用于将多个表中的数据联接在一起的操作。这使得你可以从多个表中获取相关的数据,并创建复杂的查询。以下是一些常见的联合查询类型和示例:内连接(INNERJOIN):内连接用于获取两个或多个表之间具有匹配行的数据。只有在两个......
  • MySQL 中的索引
    MySQL中的索引MySQL中的索引是一种用于提高查询性能的数据结构。索引允许数据库引擎更快地定位和访问数据,减少了数据扫描的开销。下面是关于如何在MySQL中使用索引的一些重要信息和最佳实践:创建索引:在创建表时定义索引:可以在创建表的时候定义索引,使用CREATETABLE语句的......
  • MySQL中对某列进行求和
    MySQL中对某列进行求和要在MySQL中对某列进行求和,你可以使用SUM聚合函数。以下是一个简单的示例,演示如何对某列进行求和:假设你有一个名为your_table的表,其中有一个列名为your_column,你想对这一列进行求和:SELECTSUM(your_column)ASsum_resultFROMyour_table;这将返回......
  • kettle同步mysql到mysql
    上传mysql驱动包到lib目录下创建表连接表输入表输出(没有创建表)执行表创建表sql ......
  • mysql json类型数据查询
    1、json对象1.1、方法使用对象操作的方法进行查询:字段->'$.json属性'使用函数进行查询:json_extract(字段,'$.json属性')获取JSON数组/对象长度:JSON_LENGTH()1.2、数据CREATETABLE`test`(`id`bigint(20)unsignedNOTNULLAUTO_INCREMENTCOMMENT'自增ID',`g......
  • Ubuntu 中 Mysql的简单使用
    起因:建立web服务器时需要使用数据库去保存用户名和密码。//建立yourdb库createdatabaseyourdb;//创建user表USEyourdb;CREATETABLEuser(usernamechar(50)NULL,passwdchar(50)NULL)ENGINE=InnoDB;//添加数据INSERTINTOuser(username,passwd)......
  • docker 安装 nginx tomcat mysql
    dockersearchnginxdockerpullnginx//在root目录下创建nginx目录用于储层nginx数据信息mkdir~/nginxcdnginxmkdirconfcdconf把nginx.conf文件拷贝到~/nginx/con目录下cd~/nginxdockerrum-id--namenginx01\-p80:80\-v$PWD/conf/nginx.conf:/etc/nginx/n......
  • MySQL八股基础
    1.执行一条select语句,期间会发生什么?连接器:建立连接,管理连接,校验用户身份。查询缓存,查询语句命中直接返回,否则继续往下执行。MySQL8.0删除。解析器:解析SQL语句,对select语句执行词法分析、语法分析,构建语法树,方便后续模块读取表名、字段、语句类型。执行SQL语句。分为3个阶......
  • MySQL基本语法和数字马力笔试
    1.DROPDATABASENAME;删除名字为NAME的数据库2.VARCHAR(10);可存储的最大字符长度为103.SELECTIDFROM表;从表中检索出ID的列4.DISTINCT搜索去重5.select两列时,用逗号分隔开6.排序orderby(默认升序,desc降序)7.按两种排序orderbya,b;8.selectquantity,item_pricefromOrderIt......