事务和并发执行目的:

1、提高吞吐量,资源利用率

2、减少等待时间

连接管理器:接受请求/创建线程/认证用户/建立安全连接

并发控制:任何时候,只要有两个以上的用户试图读写同时一个文件/数据,都会带来并发控制问题,

多版本并发控制(MVCC):每个用户在操作数据的时候操作的都不是源数据,而是操作的是源数据的副本/快照,最后再把操作的快照合并到源数据上去

锁:最简单的并发控制机制就是实施锁|要想实现并发控制一个基础的工具就是"锁"

读锁(read):共享锁,允许其他人同时读,但不允许写!

写锁(write):独占锁,写的时候,既不允许其他人写,也不予许其他人读!

加锁:lock   tables    表名   锁类型{read|write}

解锁:unlock   tables    :表示解除所有表的锁

锁粒度:从大到小(mysql服务器仅支持表锁,行锁需要有存储引擎的支持)

表锁:一下子锁定一张表

页锁:锁定一个数据块,页面。

行锁:

注意!:平常不需要给表手动添加锁,大多数情况下mysql内部就维持锁。

事务

存储引擎或服务器要支持事务必须满足4种测试,叫ACID测试

ACID

原子性:事务所引起的数据库操作,要么完全的反应出来,要么完全的都不反应!

一致性:事务在完成之前或之后结果是一致的,当事务结束之后,整个数据库服务器的状态是没有改变的

隔离性:事物之间影响最小,一个事务的中间过程,不能影响到另一个事务的正常执行过程

持久性:服务器出现崩溃了,仍然要保证数据在下一次恢复过来之后,仍然是有效的!,那也就意味着在内存运行完的数据要立即同步到存储设备上去!

1、事务提交之前就已经写出数据至持久性存储

2、结合事务日志完成,事务产生的是顺序IO(按次序存储到连续的存储块当中去)。数据文件是随机IO。

3、

事务日志

自我能够完成重做或撤销,在必要的时候进行自我修复

在事务引擎上,为了完成我们mysql事务,他的每一次操作都是首先在日志文件中完成。

也就意味着我们的增、删、查、修改都是在内存中完成,完成之后立即写到事务日志中去。过一段时间才会写到磁盘空间中去!

重做日志(redo  log):我们的每一个操作,在真正写到数据库之前,他先写到日志里面去,下一次我们这个操作就算是崩溃了,他还可以根据我们的操作日志重新走一遍。

我们这一系列操作可以无限次的根据这个日志重复的执行N遍。

撤销日志(undo  log):我们的每一次操作,在操作之前要把它原有的状态给他保留下来,万一将来我们需要还原回原来状态时,可以给他撤销此前所做的任何一个操作,

这些日志最终的目的是:为事务提供ACID兼容性的

事务状态

活动的:active

部分提交

失败的

终止的

提交的

隔离性:

隔离级别(级别从低到高):

READ  UNCOMMITTED读未提交:读取数据不需要加S锁,这样就不会跟被修改的数据上的X锁冲突

READ  COMMITTED 读提交:别人只有提交之后,你才能看到

REPATABLE  READ可重读:不管你提不提交数据,我这里第一次看到是什么样,一直到事务完成之后还是那个样。

SERIALIZABLE  可串行:

mysql默认隔离级别为REPATABLE  READ可重读

查看隔离级别:show global variables like '%iso%';

修改隔离级别:set  {session|global} 变量名='对应值'; |set tx_isolation='read-committed';

并发控制依赖的技术手段:

时间戳

多版本和快照隔离

事务命令

启动事务:start  transaction;

回滚/撤销事务:rollback;

提交事务:commit

查看是否启动自动提交:select @@autocommit;

关闭自动提交:set autocommit=0;

事务支持保存点

mysql数据库之事务和隔离级别的更多相关文章

  1. MySQL/MariaDB数据库的事务和隔离级别

      MySQL/MariaDB数据库的事务和隔离级别 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.事务概述 1>.事务Transactions 一组原子性的SQL语句 ...

  2. 数据库操作事物的四大特性以及MySQL数据库的四种隔离级别

    1 .事物操作数据库的四大特性(ACID) 1.原子性 (Atomicity) 原子性:就是事物的所包含的所有操作,要么全部成功,要么全部失败回滚. 2.一致性 (Consistency) 一致性:简 ...

  3. 【mysql】关于事务的隔离级别

    一.锁的种类 MySQL中锁的种类很多,有常见的表锁和行锁,也有新加入的Metadata Lock等等,表锁是对一整张表加锁,虽然可分为读锁和写锁,但毕竟是锁住整张表,会导致并发能力下降,一般是做dd ...

  4. mysql innodb引擎事务的隔离级别

    一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有 ...

  5. 数据库事务的四大特性以及事务的隔离级别(mysql)

      本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指 ...

  6. MySQL数据库事务的四大特性以及事务的隔离级别

    一.事务的四大特性(ACID) 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 1.原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因 ...

  7. 数据库事务的四大特性以及事务的隔离级别-与-Spring事务传播机制&隔离级别

    数据库事务的四大特性以及事务的隔离级别   本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ ...

  8. 数据库事务的四大特性以及4种事务的隔离级别-以及对应的5种JDBC事务隔离级别

    本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...

  9. MySQL事务的隔离级别

    为什么需要隔离 当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性,在介绍数据库提供的各种隔离级别之前,我们先看看如果不考虑事务的隔离性,会发生的几种 ...

随机推荐

  1. docker sentry 配置文件位置

    root@50f8462579a8:/etc/sentry# cd /etc/sentry/ root@50f8462579a8:/etc/sentry# ls config.yml sentry.c ...

  2. [LeetCode] 81. Search in Rotated Sorted Array II 在旋转有序数组中搜索之二

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  3. 这篇文章主要讲解C#中的泛型,泛型在C#中有很重要的地位,尤其是在搭建项目框架的时候。

    一.什么是泛型 泛型是C#2.0推出的新语法,不是语法糖,而是2.0由框架升级提供的功能. 我们在编程程序时,经常会遇到功能非常相似的模块,只是它们处理的数据不一样.但我们没有办法,只能分别写多个方法 ...

  4. 文件夹如何添加备注(保证可以WIN7 WIN10测试通过)

    网上很多方法都有人说试过了,不可以.其实不是不可以,他们都没有说完整 今天自己弄了下,弄出来了,废话不多说先上图 如果需要用备注排序,那么就需要把排序的选项加上备注的分类 1.获得desktop.in ...

  5. CSP-S 2019 简要题解

    从这里开始 又考炸了,sad.....明年应该在准备高考了,考完把坑填了好了. 一半题都被卡常,qswl.[我汤姆要报警.jpg] dfs 怎么这么慢呀,sad..... i7 牛逼! 写的比较混乱, ...

  6. Comet OJ - Contest #7 C 临时翻出来的题(容斥+状压)

    题意 https://www.cometoj.com/contest/52/problem/C?problem_id=2416 思路 这里提供一种容斥的写法(?好像网上没看到这种写法) 题目要求编号为 ...

  7. ROS-RouterOS KVM 安装 OpenWrt 旁路使用

    原文: http://bbs.routerclub.com/thread-104864-1-1.html 这里所讲是X86架构的RouteROS的KVM虚拟机,其实RouterOS的KVM很早就有,大 ...

  8. C# HTTP系列9 GET与POST示例

    系列目录     [已更新最新开发文章,点击查看详细] 学习本篇之前,对 HttpWebRequest 与 HttpWebResponse 不太熟悉的同学,请先学习<C# HTTP系列>. ...

  9. 第30课 线程同步(std::condition_variable)

    一. 条件变量 (一)条件变量概述 多线程访问一个共享资源(或称临界区),不仅需要用互斥锁实现独享访问避免并发错误,在获得互斥锁进入临界区后,还需检查特定条件是否成立.当某个线程修改测试条件后,将通知 ...

  10. 可以获取随机图片的API收集 必应 等

    食用方法可以是img标签嵌入在网页中, 也可以在iwall.app里面设置你的桌面背景.还有其他好用的API吗? 请在下放留下您的评论. 非常感谢! 速度: ★★★★★ 功能: 返回Bing的随机图片 ...