- 1、本文档共60页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
mysql随笔-凌华兴概要
事物隔离级别 脏读 事物可以看到未提交事物的执行结果。 提交读 事物开始时,只能看到已提交事物做的改变。 可重复读 innodb默认的隔离级别,事物并发读取数据时看到同样的数据 可能导致幻读。 可串行化 事物的最高隔离级别,强制事物排序,互不冲突,解决幻影读问题 InnoDB锁模型 行级锁:共享锁和排它锁 意向锁(表级):意向共享锁和意向排它锁 IS锁: select … lock for share mode IX锁:select … for update X IX S IS X × × × × IX × √ × √ S × × √ √ IS × √ √ √ InnoDB索引”范围”锁 Record lock: 索引上的记录锁,可以认为是行锁 gap lock:间隙锁,对索引记录间的范围加锁 只出现在辅助索引上,唯一索引和主键索引没有 间隙锁。间隙锁只会阻塞写操作。 next-key:记录锁和间隙锁的组合 禁用间隙锁: 1 事物隔离级别设置为提交读 2 开启系统参数innodb_locks_unsafe_for_binlog Record/gap/next-key锁 Record锁: select * from t where id=15 for update; 锁区间 [15] Gap: delete from t where name=‘Jim’; 锁区间(’Eric’,’Rose’) Next-key锁: select * from t where id45 for update; 锁区间(30,无穷大) Transaction A Set session transaction isolation level repeable read; Start transaction; Delete from user where name =‘Jim’; 锁区间(‘Eric’ , ’Rose’) Transaction B Set session transaction isolation level repeable read; Start transaction; Update user set age=92 where name=‘Eric’; Update user set age=78 where name =‘Alice’; Insert into user values(19,35,’James’) Transaction C Set session transaction isolation level repeable read; Start transaction; Select * from user where id25 for update; Transaction D Set session transaction isolation level repeable read; Start transaction; Insert into user values(26,35,’Stone’); Insert into user values(22,35,’Stone’); Insert into user values(19,35,’Stone’); Next-key锁状态 mysql死锁 事物1 start transaction; insert into t values(1); 事物2 start transaction; insert into t values(1); 事物3 start transaction; insert into t values(1); 事物2和3产生键值重复错误,双方请求行共享锁 事物1执行回滚 rollback;事物2和3授予行共享锁 此时事物2和3产生死锁,双方都是持有共享锁,需要排它锁。 Mysql检测到事物2和3产生死锁,回滚其中一个事物,死锁解除。 通过innodb引擎状态可以查看到最后一个死锁 mysql show engine innodb status\G 由于事物1和2产生死锁,mysql通过回滚事物2来消除死锁 MySQL Cluster 无单点故障 不需要共享存储 三种集群角色 管理节点 管理mysql集群中的其它节点,包括集群配置, 节点启动和关闭,是第一个启动节点。 Data节点 存储层的NDB节点,每个节点保存完整数据的一个分片。一个组由多个节点组成,每个组包含完全相同的数据 SQ
文档评论(0)