mysql锁机制join使用重点解析.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
特点:锁对象的颗粒最大,流程简单,对系统造成的负面影响小 弊端:出现锁资源争抢的概率高 特点:不太常见,锁定颗粒度介于上面两种之间 弊端:会发生死锁 为什么MyISAM表引擎不可以支持事物? 表级锁定 写锁定 读锁定 Current read-lock queue (lock-read) Pending read-lock queue (lock-read_wait) Current write-lock queue (lock-write) Pending write-lock queue (lock-write_wait) 4个队列 · select 是否被写锁定 N Pendingwrite-lockqueue有没有更高优先级的写锁等待 Y 进入队列Pendingread-lockqueue中等待资源的释放 获取读锁 N Y Update Insert delete Currentwrite-lockqueue是否已经有锁定相同资源的信息存在 Pendingwrite-lockqueue Currentread-lockqueue Currentwrite-lockqueue Pendingwrite-lockqueue Y Y Y N N N MySQL内部实现中却有多达11种锁定类型,由 系统中一个枚举量(thr_lock_type)定义,各 值描述如下: 表级锁明细.xls 由于MyISAM存储引擎使用的锁定机制完全是由MySQL提供的表级锁定实现,所以下面我们将以MyISAM存储引擎作为示例存储引擎,来实例演示表级锁定的一些基本特性。由于,为了让示例更加直观,我将使用显示给表加锁来演示:RITE_ALLOW_READ 类型的写锁定 RITE_ALLOW_READ.xls INNODB引擎死锁解决方案: 检测到死锁 检测较小的事物 回滚 事务机制 INNODB引擎锁机制案例流程 innodblockshow.xls 尽可能让所有的数据检索都通过索引来完成,从而避免Innodb因为无法通过索引键加锁而升级为表级锁定; 合理设计索引,让Innodb在索引键上面加锁的时候尽可能准确,尽可能的缩小锁定范围,避免造成不必要的锁定而影响其他Query的执行; 尽可能减少基于范围的数据检索过滤条件,避免因为间隙锁带来的负面影响而锁定了不该锁定的记录; 尽量控制事务的大小,减少锁定的资源量和锁定时间长度; 在业务环境允许的情况下,尽量使用较低级别的事务隔离,以减少MySQL因为实现事务隔离级别所带来的附加成本; show status like table%; Table_locks_immediate 产生表级锁定的次数 Table_locks_waited 出现表级锁定争用而发生等待的次数 Show status like innodb_row_lock%; Innodb_row_lock_current_waits 当前正在等待锁定的数量 Innodb_row_lock_time 从系统启动到现在锁定总时间长度; Innodb_row_lock_time_avg 每次等待所花平均时间 Innodb_row_lock_time_max 从系统启动到现在等待最常的一次所花的时间; Innodb_row_lock_waits 系统启动后到现在总共等待的次数 1.Sql优化 如何使用join优化sql查询 2.行列转换 3.锁的概念 参考网站:/ggjucheng/archive/2012/11/14/2770445.html mysql架构优化 性能提升 维护成本 MySQL的表级锁定主要分为两种类型,一种是读锁定,另一种是写锁定。在MySQL中,主要通过四个队列来维护这两种锁定:两个存放当前正在锁定中的读和写锁定信息,另外两个存放等待中的读写锁定信息,如下: * * 1. 除了READ_HIGH_PRIORITY的读锁定之外,Pendingwrite-lockqueue中的WRITE写锁定能够阻塞所有其他的读锁定; 2. READ_HIGH_PRIORITY读锁定的请求能够阻塞所有Pendingwrite-lockqueue中的写锁定; 3. 除了WRITE写锁定之外,Pendingwrite-lockqueue中的其他任何写锁定都比读锁定的优先级低。 写锁定出现在Currentwrite-lockqueue之后,会阻塞除了以下情况下的所有其他锁定的请求: 1. 在某些存储引擎的允许下,可以允许一个WRITE_CONCURRENT_INSERT写锁定请求 2. 写锁定为WRITE_ALLOW_WRITE的时候,允许除了WRITE_ONLY之外的所有

文档评论(0)

贪玩蓝月 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档