MySQL优化-事务和锁优化
2020-03-18 22:23:48 来源:admin 点击:767
Mysql分布式事务:
同时管理若干管理器事务的一个过程。
第一个阶段:所有的分支预备,事务管理器告知要准备提交,每个分支指示任务的可行性
第二个阶段:告知资源管理器提交或者回滚
分布式事务:多个事务活动合并成一个事务单位
启动事务:XA START xid(gtrid、bqual、formatID )
准备事务:XA PREPARE xid
提交事务:XA COMMIT xid
回顾事务:XA ROLLBACK xid
两类分布式事务:
内部分布式事务:同一个实例、跨多个数据引擎的事务(二进制日志作为协调者)
由二进制日志作为协调者
外部分布式事务:应用层介入作为协调者来控制事务的提交或者回滚
锁机制的选择
锁的区别:
Lock table tablename
表级锁:开销小、加锁快,不会出现死锁,并发度低(myisam)
一般做update和delete操作会使用表锁
全表扫描以及Group by操作(没有写的操作)
行级锁:开销大,加锁慢,会出现死锁,发生锁的冲突(innodb)
页锁:基于表锁和行锁之间
锁阀值:innodb_lock_wait_timeout 60秒
Myisam:
加读锁,不会阻塞读请求,会阻塞写请求
加写锁,会阻塞读请求以及写请求
Innodb:行级锁,存储引擎是通过索引加锁来实现的,只有通过索引来检索数据,innodb才使用行级锁,否则使用表级锁.
锁定模式:共享锁、排他锁
隔离级别:4种
获取锁的等待情况:(table_locks_waited/table_locks_immediate)
show status like 'Table%' 分析状态变量
show status like 'innodb_row_lock%' 查看锁的情况