两种修改隔离级别的方法

事务具有ACID四种特性。

但是Isolation并发可能引起如下问题:

1.脏读

允许读取到未提交的脏数据。

2.不可重复读

如果你在时间点T1读取了一些记录,在T2时再想重新读取一次同样的这些记录时,这些记录可能已经被改变、或者消失不见。

3.幻读

解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性)。但是,如果另一个事务同时提交了新数据,本事务再更新时,就会“惊奇的”发现了这些新数据,貌似之前读到的数据是“鬼影”一样的幻觉。

由ANSI/ISO定义的SQL-92标准定义的四种隔离级别

1.Read Uncommitted

2.Read Committed

3.Repeatable Read

4.Serializable

隔离解别脏读不可重复读幻读

Read UncommittedYYY

Read CommittedNYY

Repeatable(default)NNY

SerializableNNN

下面用Mysql数据库做一些小实验

方法1:

用户可以用SET TRANSACTION语句改变单个会话或者所有新进连接的隔离级别。它的语法如下:

SET[SESSION | GLOBAL] TRANSACTIONISOLATION LEVEL{READ UNCOMMITTED| READ COMMITTED | REPEATABLE READ| SERIALIZABLE}

注意:默认的行为(不带session和global)是为下一个(未开始)事务设置隔离级别。如果你使用GLOBAL关键字,语句在全局对从那点开始创建的所有新连接(除了不存在的连接)设置默认事务级别。你需要SUPER权限来做这个。使用SESSION关键字为将来在当前连接上执行的事务设置默认事务级别。任何客户端都能自由改变会话隔离级别(甚至在事务的中间),或者为下一个事务设置隔离级别。你可以用下列语句查询全局和会话事务隔离级别:

SELECT@@global.tx_isolation;

SELECT@@session.tx_isolation;

SELECT@@tx_isolation;

网上有人使用set tx_isolation命令:

mysql> settx_isolation='read-committed';Query OK, 0 rows affected (0.00sec)+----------------+| @@tx_isolation |+----------------+| READ-COMMITTED|+----------------+1 row in set (0.00 sec)

mysql> select@@session.tx_isolation;+------------------------+| @@session.tx_isolation|+------------------------+|READ-COMMITTED        |+------------------------+1 row in set (0.00 sec)事务隔离变了。网上还有人这样写set @@tx_isolation命令,但这个命令是有问题的。

mysql>  set @@tx_isolation='read-committed';QueryOK, 0 rows affected (0.00 sec)

mysql> select@@session.tx_isolation;+------------------------+| @@session.tx_isolation|+------------------------+| REPEATABLE-READ      |+------------------------+1 row in set (0.00 sec)

mysql> select @@tx_isolation;+-----------------+|@@tx_isolation  |+-----------------+| REPEATABLE-READ |+-----------------+1row in set (0.00 sec)session事物的隔离级别并没有改变。

方法2:

[sql]viewplaincopy

1.mysql>selectversion();

2.+------------+

3.| version()  |

4.+------------+

5.| 5.1.52-log |

6.+------------+

7.1 row inset(0.00 sec)

查看InnoDB存储引擎系统级的隔离级别和会话级的隔离级别

[sql]viewplaincopy

1.mysql>select@@global.tx_isolation,@@tx_isolation;

2.+-----------------------+-----------------+

3.| @@global.tx_isolation | @@tx_isolation  |

4.+-----------------------+-----------------+

5.|REPEATABLE-READ|REPEATABLE-READ|

6.+-----------------------+-----------------+

7.1 row inset(0.00 sec)

更改会话级的隔离级别

[sql]viewplaincopy

1.Session 1:

2.mysql>setsession tx_isolation='read-uncommitted';

3.Query OK, 0rowsaffected (0.00 sec)

4.mysql>select@@global.tx_isolation,@@tx_isolation;

5.+-----------------------+------------------+

6.| @@global.tx_isolation | @@tx_isolation   |

7.+-----------------------+------------------+

8.|REPEATABLE-READ|READ-UNCOMMITTED|

9.+-----------------------+------------------+

10.1 row inset(0.00 sec)

11.

12.

13.Session 2:

14.mysql>select@@global.tx_isolation, @@tx_isolation;

15.+-----------------------+-----------------+

16.| @@global.tx_isolation | @@tx_isolation  |

17.+-----------------------+-----------------+

18.|REPEATABLE-READ|REPEATABLE-READ|

19.+-----------------------+-----------------+

20.1 row inset(0.00 sec)

更改系统级的隔离级别

[sql]viewplaincopy

1.Session 1:

2.mysql>setglobaltx_isolation='read-uncommitted';

3.Query OK, 0rowsaffected (0.00 sec)

4.mysql>select@@global.tx_isolation,@@tx_isolation;

5.+-----------------------+------------------+

6.| @@global.tx_isolation | @@tx_isolation   |

7.+-----------------------+------------------+

8.|READ-UNCOMMITTED|READ-UNCOMMITTED|

9.+-----------------------+------------------+

10.1 row inset(0.00 sec)

11.

12.Session 2:

13.mysql>select@@global.tx_isolation, @@tx_isolation;

14.+-----------------------+-----------------+

15.| @@global.tx_isolation | @@tx_isolation  |

16.+-----------------------+-----------------+

17.|READ-UNCOMMITTED|REPEATABLE-READ|

18.+-----------------------+-----------------+

19.1 row inset(0.00 sec)

关闭SQL语句的自动提交

[sql]viewplaincopy

1.mysql>setautocommit=off;

2.Query OK, 0rowsaffected (0.00 sec)

查看SQL语句自动提交是否关闭

[plain]viewplaincopy

1.mysql> show variables like 'autocommit';

2.+---------------+-------+

3.| Variable_name | Value |

4.+---------------+-------+

5.| autocommit    | OFF   |

6.+---------------+-------+

7.1 row in set (0.00 sec)

不重启修改MySQL的方法

在线修改mysql的系统变量:

mysql> show variables like 'log_slave_updates';+-------------------+-------+|Variable_name|Value |+-------------------+-------+| log_slave_updates | ON|+-------------------+-------+1 row in set (0.00 sec)

mysql> set global log_slave_updates=0;ERROR1193 (HY000): Unknown system variable 'log_slave_updates'

mysql>system gdb -p $(pidof mysqld) -ex"set opt_log_slave_updates=0" -batchExcess command line argumentsignored. (9922 ...)19885: No such file or directory.(no debugging symbolsfound)Using host libthread_db library "/lib64/libthread_db.so.1".(nodebugging symbols found)(no debugging symbols found)(no debugging symbolsfound)(no debugging symbols found)[Thread debugging using libthread_dbenabled][New Thread 47873757603968 (LWP 12328)][New Thread 1166383424 (LWP12341)][New Thread 1166117184 (LWP 12339)][New Thread 1092294976 (LWP12338)][New Thread 1165850944 (LWP 12337)][New Thread 1155361088 (LWP12336)][New Thread 1144871232 (LWP 12335)][New Thread 1134381376 (LWP12333)][New Thread 1123891520 (LWP 12332)][New Thread 1113401664 (LWP 12331)][NewThread 1102911808 (LWP 12330)](no debugging symbols found)(no debugging symbolsfound)(no debugging symbols found)(no debugging symbols found)(no debuggingsymbols found)(no debugging symbols found)(no debugging symbols found)(nodebugging symbols found)0x00000039314cb332 in select () from /lib64/libc.so.6

mysql> show variables like 'log_slave_updates';+-------------------+-------+|Variable_name|Value |+-------------------+-------+| log_slave_updates | OFF|+-------------------+-------+1row in set (0.00 sec)

MySQL系统参数设置

InonoDB参数设置

演练参数

innodb_buffer_pool_size

老男孩mysql笔记_老男孩MySQL笔记 第二天2-2相关推荐

  1. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  2. 涂抹mysql 完整_涂抹mysql笔记-管理mysql服务

    $ /mysql/scripts/mysql_install_db --datadir=/mysql/data --basedir=/mysql support-files/mysql.server脚 ...

  3. 高性能mysql总结笔记_高性能MySQL第三本笔记总结(上)

    无论何时,只要有多个查询需要在同一个时刻修改数据时,就会有并发问题.MySql主要在服务器层与存储引擎层进行并发控制. 假设数据库中国一张邮箱表,每个邮件都是一条记录.如果某个客户正在读取邮箱,同时其 ...

  4. mysql整备_【mysql】使用xtrabackup在线增量备份及恢复数据库

    一.Percona Xtrabackup 简介 1.Xtrabackup  bin目录文件 介绍 1)innobackupex innobackupex 是xtrabackup的一个符号链接 . in ...

  5. 建立唯一索引后mysql策略_【MySQL】MySQL索引背后的之使用策略及优化【转】

    另外很不错的对于索引及索引优化的文章: 索引的使用 示例数据库 为了讨论索引策略,需要一个数据量不算小的数据库作为示例.本文选用MySQL官方文档中提供的示例数据库之一:employees.这个数据库 ...

  6. 阿里云 mysql 命令_有mysql命令

    mysql帮助命令使用说明 在安装.管理和使用mysql过程中,你是不是需要记忆很多的mysql命令.而且对于新手来说,很不多的命令不知道该如何应用,对于老手来说很多命令时间长了忘记具体的用法. 其实 ...

  7. mysql 验证_使用MySQL验证Open***用户登录访问

    一.预览 要查看下面的配置,请预览查看我的上一篇Open***用户名密码配置的博文 二.安装部署 环境准备#关闭SELinux #setenforce 0 开启路由转发 sysctl -w net.i ...

  8. shell实行mysql语句_【Mysql】shell运行mysql的sql语句_MySQL

    bitsCN.com [Mysql]shell运行mysql的sql语句 shell本身是一种脚本语言,所以不能像java一样通过api去连接数据库.shell还是要借助mysql本身的一些运行脚本才 ...

  9. mysql 优化_常用MySQL优化

    1.大批量插入数据优化 (1)对于MyISAM存储引擎的表,可以使用:DISABLE KEYS 和 ENABLE KEYS 用来打开或者关闭 MyISAM 表非唯一索引的更新. ALTER TABLE ...

  10. 阿里云查看mysql版本_查看mysql版本的四种方法及常用命令

    [shengting@login ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686) 2:在mysql中: ...

最新文章

  1. 服务器监控--cacti中英文版安装全解
  2. Happy New Year 2016
  3. Activity的启动模式总结
  4. (0025)iOS 开发之Xcode常用快捷键
  5. 日本发明的“舔屏尝味”电视火了:伸个舌头可尝酸甜苦辣,网友一时不知如何评价...
  6. 在.NET中使用脚本引擎
  7. 编译安装 PHP 扩展 - 含 swoole 扩展安装和升级
  8. 【链表】Add Two Numbers
  9. 闲鱼直播三周内实现点击率翻倍,我们是这么做到的...
  10. OM(OPEN-MALL) 项目致力于打造分布式开源电商平台
  11. Ajax的XMLHttpRequest对象
  12. 阿里双11大促秒杀活动下的缓存技术与高水位限流实现
  13. mysql var目录很快_mysql数据库实现亿级数据快速清理的方法
  14. 中标麒麟NeokylinV7关闭广播消息
  15. Java单机版五子棋
  16. MyEclipse与Eclipse区别是什么?
  17. Git源码(Linus 版本)详解
  18. ubuntu 编译 CPython 源码
  19. 股市买入卖出时间点选择问题
  20. yarn 卸载不正常

热门文章

  1. xilinx fpga xdma
  2. java php 架构_php 架构和java架构的区别?
  3. 数据标注平台-LabelStudio
  4. python输出带颜色的字体
  5. 【持续学习】清华最新持续学习综述
  6. 网络打印机安装脚本(rundll32 printui.dll,PrintUIEntry用法示例)
  7. 基于单幅图像的快速去雾算法实现
  8. 基于LOAM框架的激光SLAM开源程序集合
  9. RedLock使用教程 redis锁
  10. scrapy爬虫之爬取汽车之家奥迪Q7高清图片