MySQL优化-事务和锁优化
所属分类: MySQL 2020-03-18 22:23:48 编辑:admin 浏览次数 1020 次
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%' 查看锁的情况
猜你喜欢
- mysql中使用show table 查看表信息 2019-01-29
- mysql查询表字段名称,字段类型 2019-01-29
- sql语句中取整数和小数部分,截取字符串常用函数 2019-03-21
- mysql函数-字符串操作 2019-04-09
- mysql函数-数字操作 2019-04-09
- mysql函数-时间操作 2019-04-09