Mysql 的隔离级别与锁
1.MySQL参数autocommit生产环境设1还是0?为什么?
在生产环境中,为了事务一致性,需要把autocommit 设置为 0
这样可以进行事务全部成功后,在最后一次性提交,如果某一步出错,可以rollback。
在会话进修改参数命令为:
set @@autocommit=0;
为了永久设置为手动提交,可以在 my.cnf 中添加以下参数
[mysqld]
autocommit=0
重启mysqld 即可生效
mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
| 0 |
+--------------+
1 row in set (0.00 sec)
mysql> show variables like 'autocommit'
-> ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | OFF |
+---------------+-------+
1 row in set (0.01 sec)
mysql>
2.MySQL参数tx_isolation生产环境上大多数是设什么值,为什么?
mysql 系统默认隔离级别为 REPEATABLE-READ
mysql> select @@global.tx_isolation;
+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| REPEATABLE-READ |
+-----------------------+
1 row in set (0.00 sec)
mysql 支持以下4种隔离级别:
1.末提交读 (read uncommited);
2.已提交读 (read commited);
3.可重复读 (Repeatable read);
4.可序列化 (Serializable);
在生产环境中,可以按照实际环境要求,进行配置,一般情况下:
1.以读为主的业务应用场景下,可以配置成
transaction-isolation=read-commited
2.非读为主的业务应用场景,可以配置为:
transaction-isolation=Repeatable-read
而另外两种情况,一般应用比较少,如果是为了减少并行和追求稳定性,可以选择配置为
transaction-isolation=Serializable
3.与MySQL锁相关的有哪些因素?
在mySQL 数据库中,不同的存储引擎,使用不同的锁机制。
MyISAM,MEMORY 存储引擎,采用的是表级锁(table-level locking),
BDB 存储引擎采用了页面锁(Page-level locking),它也支持表级锁;
InnoDB存储引擎,采用的是行级锁(row-level locking),当然也支持表级锁。
在4种不同的隔离级别下,为了实现事务中的ACID属性,锁的应用也不一样,
INNODB 存储引擎的行锁模式中,是通过给索引加索引锁来实现的,所以出现以下3种锁方式:
1.record lock :对索引项加锁
2.Gap lock :对索引项之间的间隙加锁,
3.Next-key lock:对记录及前后的间隙加锁;
在应用中,如果有个表没有索引,虽然只访问了部分范围的数据,可能也会引起其它会话插入,修改的阻塞现象。
Mysql 的隔离级别与锁相关推荐
- mysql事务隔离级别之锁实现原理,脏读、不可重复读、幻读出现原因及解决方案
mysql事务隔离级别原理 观看了很多网上的博客,挺令人伤心,很难找到想要的答案... 一:所需知识 1,mysql中的锁 1.1,读锁(共享锁) 规则:若事务1对数据对象A加上读锁,则事务1只能读A ...
- mysql事务隔离级别与锁_mysql事务隔离级别与锁
2.隔离级别实现 上一节介绍了ANSI定义的3种异象,及根据禁止异象的个数而定义的事务隔离级别.因为不存在严格.严谨的"官方"定义,各主流 2.1 Lock-based 隔离级别实 ...
- 事物的级别_浅谈MySQL并发控制:隔离级别、锁与MVCC
推荐阅读: 恕我直言!收藏这个MySQL文档,你其余的MySQL学习资料都可以扔了 前言 如果数据库中的事务都是串行执行的,这种方式可以保障事务的执行不会出现异常和错误,但带来的问题是串行执行会带来性 ...
- mysql 乐观锁 脏读_mysql 丢失更新1和2、脏读、不可重复读和幻读 事务隔离级别 悲观锁 乐观锁...
事务是现代关系型数据库的核心之一.在多个事务并发操作数据库(多线程.网络并发等)的时候,如果没有有效的避免机制,就会出现以下几种问题: ( 第一类丢失更新 A事务撤销时,把已经提交的B事务的更新数据覆 ...
- mysql transaction用法,mysql的事务,隔离级别和锁用法实例分析
本文实例讲述了mysql的事务,隔离级别和锁用法.分享给大家供大家参考,具体如下: 事务就是一组一起成功或一起失败的sql语句.事务还应该具备,原子性,一致性,隔离性和持久性. 一.事务的基本要素 ( ...
- MySQL深度剖析之事务隔离级别和锁机制(2021)
一 事务隔离级别和锁机制 1.1 多个事务并发修改同一条数据或者对同一条数据并发读写存在哪些事务并发问题 1.1.1 脏读(未提交读) A事务读取了别的事务还未提交的更新,而B事务是有可能回滚的. 1 ...
- MySQL事务原理分析(ACID特性、隔离级别、锁、MVCC、并发读异常、并发死锁以及如何避免死锁)
MySQL事务原理分析(ACID特性.隔离级别.锁.MVCC.并发读异常.并发死锁以及如何避免死锁) 一.事务 目的 组成 特征 事务空间语句 二.ACID特性 原子性(A) 隔离性(I) 持久性(d ...
- mysql的隔离级别_MySQL的四种事务隔离级别
一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有 ...
- Mysql事务隔离级别及MVCC(多版本并发控制)
一.MySQL事务隔离级别 先注明一点:以下讨论都是在多事务并发的情境下讨论的 事务的特性(InnoDB引擎才有事务): ACID 原子性:一个事务不可再分割,要么都执行要么都不执行 一致性:一个事务 ...
最新文章
- 我有点不喜欢分布式中的TCC模式了
- python中怎么比较两个列表-python中比较两个列表的实例方法
- 实验一个最小的PYTHON服务器编程
- github unity 图片切换效果_CSS3图片模糊切换效果
- leetcode 665. 非递减数列(贪心算法)
- 神经网络——BP算法
- 连载17:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...
- 逆向破解之160个CrackMe —— 007
- 余承东:华为6G研发还需10年;库克“iPhone 11势头强劲”;TensorFlow 2.0正式版发布​ | 极客头条...
- 使用WiX制作具有时间限制的安装包
- Tensorflow:安装和配置
- python中valueerror怎么改_Python:ValueError:使用序列设置数组元素
- Windows10下编译Nginx源码
- CDR安装包下载+汉化简体中文版+安装教程
- php怎么黑admin管理员密码是什么,tplink管理员密码是什么?
- 【Linux】命令别名与历史命令(alise\history)
- #微信小程序# 在小程序里面退出退出小程序(navigator以及API--wx.exitMiniProgram)
- 机器学习 -- 初识决策树
- 419. 甲板上的战舰
- php ajax向后台怎么传数组,利用ajax传递数组及后台接收的方法详解