文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL中隔离级别的示例分析

2023-06-01 11:42

关注

这篇文章主要介绍MySQL中隔离级别的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

MySQL入门--事务隔离级别

1) 隔离级别介绍

如果一个客户机的事务更改了数据,其他客户机的事务是应发现这些更改还是应与其隔离,事务隔离级别可以确定同时进行的事务在访问相同数据时彼此交互的方式。使用存储引擎可实现隔离级别。隔离级别选项在不同的数据库服务器之间是不一样的,因此, InnoDB 所实现的级别可能与其他数据库系统所实现的级别并不完全对应。InnoDB 可实现四种隔离级别,用于控制事务所做的更改在多大程度上可由其他同时进行的事务注意到。四种隔离级别如下:

l  READ UNCOMMITTED:允许事务查看其他事务所进行的未提交更改;允许发生“脏” 读、不可重复读和虚读。

l  READ COMMITTED:允许事务查看其他事务所进行的已提交更改;允许发生不可重复读和虚读。未提交的更改仍不可见。

l  REPEATABLE READ:确保每个事务的 SELECT 输出一致,InnoDB 的默认级别;无论其他事务所做的更改是否已提交,两次都会获得相同的结果。换句话说,也就是不同的事务会对相同的数据产生一致的结果。

l  SERIALIZABLE:将一个事务的结果与其他事务完全隔离;与 REPEATABLE READ 类似,但其限制性更强,即一个事务所选的行不能由其他事务更改,直到第一个事务完成为止。

MySQL中隔离级别的示例分析

2) 设置隔离级别

系统默认事务级别为:repeatable-read

方法一、 服务器启动时设置级别。

–  在mysqld 命令中使用--transaction-isolation选项。

–  在配置文件中设置transaction-isolation:

[mysqld]

transaction-isolation = <isolation_level>

在选项文件中或在命令行上将<isolation_level> 值设置为:

l  READ-UNCOMMITTED

l  READ-COMMITTED

l  REPEATABLE-READ

l  SERIALIZABLE

方法二、使用SET TRANSACTION ISOLATION LEVEL 语句为正在运行的服务器设置。

– 语法示例:

SET GLOBAL TRANSACTION ISOLATION LEVEL <isolation_level>;

SET SESSION TRANSACTION ISOLATION LEVEL <isolation_level>;

SET TRANSACTION ISOLATION LEVEL <isolation_level>;

对于SET TRANSACTION ISOLATION LEVEL 语句,将<isolation_level> 值设置为:

l  READ UNCOMMITTED

l  READ COMMITTED

l  REPEATABLE READ

l  SERIALIZABLE。

此事务级别可以全局设置,也可以按会话设置。如果没有显式指定,则事务隔离级别将按会话进行设置。例如,以下语句会将当前mysql 会话的隔离级别设置为READ COMITTED:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

该语句相当于:

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

要设置所有后续mysql 连接的默认级别,请使用GLOBAL 关键字,而不是SESSION:

SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;

注:设置的全局默认事务隔离级别适用于从设置时起所有新建立的客户机连接。现有连接不受影响。

方法三、SET GLOBAL TX_ISOLATION

         需要 SUPER 权限

Mysql>set global tx_isolation=’ READ-COMMITTED’

         Mysql>select @@tx_isolation;

         Mysql>show variables like ‘tx_isolation’;

transaction_isolation MySQL 5.7.20引入,目的是替换即将弃用的tx_isolation(MySQL 8.0);

 (root@localhost) [information_schema]> show variables like '%isolat%';

+-----------------------+-----------------+

| Variable_name         | Value           |

+-----------------------+-----------------+

| transaction_isolation | REPEATABLE-READ |

| tx_isolation          | REPEATABLE-READ |

+-----------------------+-----------------+

transaction_isolation was added in MySQL 5.7.20 as an alias for tx_isolation, which is now deprecated and is removed in MySQL 8.0. Applications should be adjusted to use transaction_isolation in preference to tx_isolation.

以上是“MySQL中隔离级别的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯