mysql 自动锁表 事务_MYSQL的事务及锁操作

本文介绍了MySQL事务的基础知识,包括ACID特性、InnoDB的隔离级别及其影响,如脏读、不可重复读和幻读。同时,讲解了如何设置事务隔离级别以及BEGIN、COMMIT、ROLLBACK等命令。此外,还探讨了表锁和行锁的使用,以及数据库优化方法,如并发插入和写操作优先级调整。
摘要由CSDN通过智能技术生成

基础知识

(1)事务用以维护MYSQL数据的完整性,保证成批的操作要么全部执行,要么全部不执行

(2)事务的ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

(3)MYSQL只有Innodb的数据表支持事务;

Innodb的隔离级别

隔离级别

脏读

不可重复读

幻读

读未提交

会发生

会发生

会发生

读提交

不会发生

会发生

会发生

可重复读

不会发生

不会发生

会发生

串行化

不会发生

不会发生

不会发生

脏读:读取了其他事务未修改完的记录;

不可重复读:因为被其它事务修改了记录导致某事务两次读取记录不一致;

幻读:因为其它事务对表做了增删导致某事务两次读取的表记录数不一致问题。

设置隔离级别命令

mysql默认的事务处理级别是'REPEATABLE-READ' -- 可重复读

(1)查看当前会话隔离级别

select @@tx_isolation;

(2)查看系统当前隔离级别

select @@global.tx_isolation;

(3)设置当前会话隔离级别

set session transaction isolation level repeatable read;

(4)设置系统当前隔离级别

set global transaction isolation level repeatable read;

事务的处理方法

(1)命令

BEGIN #开始一个事务

COMMIT #提交事务

ROLLBACK #事务回滚

(2)设置自动提交

mysql默认是自动提交的

SET AUTOCOMMIT=0 #禁止自动提交

SET AUTOCOMMIT=1 #开启自动提交

数据库加锁

表锁

给表加读写锁之后需手动unclock tables,用commit不会自动解锁

(1)加写锁

lock table user write;

(2)加读锁

lock table user read;

(3)加读锁,支持另一个事务insert

lock table user read local;

(3)解除表锁

unclock tables

行锁

行锁在提交事务后自动解锁

(1)加共享行锁

select * from user where id=2 lock in share mode;

(2)加排他行锁

select * from user where id=2 for update;

数据库插入的优化方法

(1)concurrent_insert

MyISAM里的读写是串行的,可以并行处理查询和插入

当concurrent_insert=0时,不允许并发插入功能。

当concurrent_insert=1时,允许对没有洞洞的表使用并发插入,新数据位于数据文件结尾(缺省)。

当concurrent_insert=2时,不管表有没有洞洞,都允许在数据文件结尾并发插入。

(2)max_write_lock_count

缺省情况下,写操作的优先级要高于读操作的优先级,即便是先发送的读请求,后发送的写请求,此时也会优先处理写请求,然后再处理读请求。这就造成一 个问题:一旦我发出若干个写请求,就会堵塞所有的读请求,直到写请求全都处理完,才有机会处理读请求

max_write_lock_count=1

有了这样的设置,当系统处理一个写操作后,就会暂停写操作,给读操作执行的机会

(3)low-priority-updates

与max_write_lock_count遇到的情况相同,通过降低写的优先级来实现

low-priority-updates=1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值