admin 发表于 2015-7-18 22:22

Mysq如何设置事务隔离级别

Mysql5.5中Set Transaction Syntax是:
[*]SET [GLOBAL | SESSION TRANSACTION ISOLATION LEVEL
[*]{
[*]       REPEATABLE READ
[*]   | READ COMMITTED
[*]   | READ UNCOMMITTED
[*]   | SERIALIZABLE
[*]   }
Mysql5.6及以上的Set Transaction Syntax是:
[*]SET [GLOBAL | SESSION TRANSACTION
[*]    transaction_characteristic [, transaction_characteristic ...
[*]
[*]transaction_characteristic:
[*]    ISOLATION LEVEL level
[*]| READ WRITE
[*]| READ ONLY
[*]
[*]level:
[*]   REPEATABLE READ
[*]   | READ COMMITTED
[*]   | READ UNCOMMITTED
[*]   | SERIALIZABLE

这条语句可以设置Isolation level,Mysql5.6以上可以通过该语句设置access mode。该条语句包含了可选的关键字:GLOBAL和SESSION,标识了该条语句的应用范围。1、隔离级别的范围

[*]使用GLOBAL关键字,该语句的影响范围是全局的,所有后续session都会生效,当前session不会生效。
[*]使用SESSION关键字,该语句影响范围是当前session的所有后续事务。
[*]都不使用时,该语句影响范围是当前session的下一个事务。
设置全局默认隔离级别需要Super权限。任何session可以随便改变当前session的隔离级别(即便是在一个事务内部),也可以自由的设置下一个事务的隔离级别,但不能在一个事务内设置。
[*]mysql> START TRANSACTION;
[*]Query OK, 0 rows affected (0.02 sec)
[*]
[*]mysql> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
[*]ERROR 1568 (25001): Transaction isolation level can't be changed
[*]while a transaction is in progress
2、隔离级别的设置
对于全局默认隔离级别可以在服务器启动时,使用--transaction-isolation=level选项进行配置。Level的可选值为: READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, or SERIALIZABLE. 例如,下面设置默认隔离级别为REPEATABLE-READ,在[mysqlid]部分加入下面语句:
[*][mysqld
[*]transaction-isolation = REPEATABLE-READ
可以在运行时检查或设置global和session的事务隔离级别,可以使用tx_isolation系统变量设置:
[*]SELECT @@GLOBAL.tx_isolation, @@tx_isolation;
[*]SET GLOBAL tx_isolation='REPEATABLE-READ';
[*]SET SESSION tx_isolation='SERIALIZABLE';

阿斯达阿 发表于 2015-9-5 07:28

好东西啊,谢谢楼主啊!!











static/image/common/sigline.gif
产品推广,发帖宣传,论坛发帖,网络推广,外链代发。
联系QQ:18866--2808
________论坛发帖价格____________
发帖价格
套餐一 80元1000条
套餐二 100元3000条
套餐三 300元10000条
当天发完,提供详细报表,保证数量。
包月:500元每天1000条共30000条
包月:600元每天1500条共45000条
包月:800元每天3000条共90000条
包月:1200元每天5000条共150000条
包月:2400元每天12000条共360000条
每天发完,提供详细报表。
联系QQ:18866--2808
页: [1]
查看完整版本: Mysq如何设置事务隔离级别