mysql no lock_MySQL中可以用nolock吗

不会卡住,  你要干什么操作呢?

要看别人更新了未提交的数据?

MySQL 默认使用的是 REPEATABLE-READ

修改事务隔离级别的方法:

1.全局修改,修改mysql.ini配置文件,在最后加上

#可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.

[mysqld]

transaction-isolation = REPEATABLE-READ

2.对当前session修改,在登录mysql客户端后,执行命令

mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

Query OK, 0 rows affected (0.00 sec)

mysql> select @@TX_ISOLATION;

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

| @@TX_ISOLATION |

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

| READ-UNCOMMITTED |

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

1 row in set (0.00 sec)

READ UNCOMMITTED

会话1:

mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

Query OK, 0 rows affected (0.00 sec)

会话2:

mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

Query OK, 0 rows affected (0.00 sec)

会话1:

mysql> START TRANSACTION;

Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE test_main SET value = 'FOUR-4' WHERE id = 4;

Query OK, 1 row affected (0.03 sec)

Rows matched: 1 Changed: 1 Warnings: 0

会话2:

mysql> select * from test_main;

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

| id | value |

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

| 1 | ONE |

| 2 | TWO |

| 3 | THREE |

| 4 | FOUR-4 |

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

4 rows in set (0.01 sec)

READ UNCOMMITTED 模式下, 会话2 读取到了 会话1 修改 但是未提交的数据。

mysql> START TRANSACTION;

Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE test_main SET value ='THREE-3' WHERE id = 3;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

会话1:

mysql> select * from test_main;

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

| id | value |

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

| 1 | ONE |

| 2 | TWO |

| 3 | THREE-3 |

| 4 | FOUR-4 |

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

4 rows in set (0.00 sec)

READ UNCOMMITTED 模式下, 会话1 读取到了 会话2 修改 但是未提交的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值