1. 登录数据库

    mysql -u root - p
  2. 新建用户,各启动一个事物,用于同时操作数据库表中数据

    create user tom identified by 'tom';

    然后同时再用该用户启动MySQL。这样就能通过使用两个事物操作数据库进行验证了

    mysql -u tom -p
  3. 新建的tom用户是没有权限对其他数据库进行操作的,因此要赋予权限。通过系统用户对该tom用户赋予权限:

    grant select,insert,update,delete on test.* to tom@localhost identified by 'tom';

    注意:MySQL8.0不支持这种写法了,需要把identified by 'tom'去掉。前面默认创建的主机是%,即任意主机,因此要把localhost改成'%';
  4. 两个用户分别use test;

    下面是我创建的test数据库中的user_table表:



    root-->select * from user_table where user = 'CC';

    tom-->select * from user_table where user = 'CC';

    默认情况下,这两个DML操作都自动提交了。因此这两个语句事实上是两个事物。
  5. 让其执行完DML之后,不自动提交

    set autocommit = false;
  6. 先查看其隔离级别

    select @@tx_isolation;

    MySQL8.0后是select @@transaction_isolation;-->REPEATABLE-READ;

    7.验证隔离级别

    root-->select * from user_table where user = 'cc';

    tom-->update user_table set balance = 3000 where user = 'cc';

    tom-->select * from user_table where user = 'cc';-->3000

    root-->select * from user_table where user = 'cc';-->2000

    因为此时两者都没有提交,这里就验证了避免脏读的问题;

    tom-->commit;

    root-->select * from user_table where user = 'cc';-->2000

    这里tom提交,说明数据库已经改了,但是root查询到的仍然是2000,验证了避免不可重复读的问题;

    若想root读到3000,只需root提交之后,再次查询即可。(提交意味着当前事物已经结束了)
  7. 修改隔离级别

    设置数据库系统的全局的隔离级别

    set global transaction isolation level read committed;

    然后需要把当前连接断掉,重新进入MySQL才能显示已修改的隔离级别。

    9.再次执行5、6、7中代码进行验证既可。

    10.再次修改隔离级别为read uncommitted进行验证。

最新文章

  1. 探索 OpenStack 之(7):Neutron 深入探索之 Open vSwitch (OVS) + GRE 之 Neutron节点篇
  2. TotalCommander 之 配置
  3. HtmlAgilityPack 处理通配的contains
  4. Struts2 action的单例与多例
  5. 如何解决机器重启后MySql服务跑不起来了1067,附解决过程
  6. MBR所在位置
  7. Python的设计模式学习
  8. C++ 实现设计模式之观察者模式
  9. poj 3678 Katu Puzzle(Two Sat)
  10. LeetCode_Best Time to Buy and Sell Stock III
  11. 《Java从入门到放弃》JavaSE篇:综合练习——单身狗租赁系统(数组版)
  12. Winform跨窗体操作控件(使用委托)
  13. PHP date函数详解
  14. CTSC 选课
  15. Oracle函数——日期函数
  16. Java线程池实现原理之自定义线程池(一)
  17. DWM1000 三基站一标签定位HEX
  18. cad.net DeepCloneObjects WasErased
  19. 【Spring】23、ApplicationContext ,ApplicationContextAware,Listener,Event 的关系解读
  20. 解决Javascript中$(window).resize()多次执行

热门文章

  1. 关于PCA主成分分析的一点理解
  2. call、apply和bind的实现
  3. Java并发之CompletionService详解
  4. (嘎吧)--微软的 C# , IL,CLR, Cup 之间关系以及扩展联想
  5. go的循环
  6. C++教程01:计算机系统的组成
  7. 使用 xunit 编写测试代码
  8. 后端程序员之路 3、fastcgi、fastcgi++
  9. brew安装MySQL V5.7
  10. css标题文字和下划线重叠