MySQL数据库基础与实例教程第9章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.锁的类型 锁的类型包括读锁(read lock)和写锁(write lock),其中读锁也称为共享锁,写锁也称为排他锁或者独占锁。 9.2.2 MySQL锁机制的基础知识 读锁允许其它MySQL客户机对数据同时“读”,但不允许其它MySQL客户机对数据任何“写” 。 9.2.2 MySQL锁机制的基础知识 写锁不允许其它MySQL客户机对数据同时读,也不允许其它MySQL客户机对数据同时写 。 9.2.2 MySQL锁机制的基础知识 4.锁的钥匙 多个MySQL客户机并发访问同一个数据时,如果MySQL客户机A对该数据成功地施加了锁,那么只有MySQL客户机A拥有这把锁的“钥匙”,也就是说:只有MySQL客户机A能够对该锁进行解锁操作。 9.2.2 MySQL锁机制的基础知识 5.锁的生命周期 锁的生命周期是指在同一个MySQL服务器连接内,对数据加锁到解锁之间的时间间隔。 9.2.2 MySQL锁机制的基础知识 任何针对MyISAM表的查询操作或者更新操作,都会隐式地施加表级锁,隐式锁的生命周期非常短暂,且不受数据库开发人员的控制。 9.2.3 MyISAM表的表级锁 有时需要延长表级锁的生命周期,MySQL为数据库开发人员提供了显示地施加表级锁以及显示地解锁的MySQL命令。 9.2.3 MyISAM表的表级锁 9.2.3 MyISAM表的表级锁 注意事项: read与write选项的功能在于施加表级读锁还是表级写锁。 MySQL客户机A使用lock tables命令可以同时为多个表施加表级锁(包括读锁或者写锁),并且加锁期间,MySQL客户机A不能对“没有锁定的表”进行更新及查询操作,否则将抛出“表未被锁定”的错误信息。 9.2.3 MyISAM表的表级锁 如果需要为同一个表同时施加读锁与写锁,需要为该表起两个别名,以区分读锁与写锁。 9.2.3 MyISAM表的表级锁 read local与read选项之间的区别在于:如果MySQL客户机A使用read选项为某个MyISAM表施加读锁,加锁期间,MySQL客户机A以及MySQL客户机B都不能对该表进行插入操作。如果MySQL客户机A使用read local选项为某个MyISAM表施加读锁,加锁期间,MySQL客户机B可以对该表进行插入操作,前提是新记录必须插入到表的末尾。 9.2.3 MyISAM表的表级锁 InnoDB提供了两种类型的行级锁,分别是共享锁(S)以及排他锁(X),其中共享锁也叫读锁,排他锁也叫写锁。 在查询(select)语句或者更新(insert、update以及delete)语句中,为受影响的记录施加行级锁的方法也非常简单。 9.2.4 InnoDB表的行级锁 方法1.在查询(select)语句中,为符合查询条件的记录施加共享锁,语法格式如下所示。 select * from 表 where 条件语句 lock in share mode; 方法2.在查询(select)语句中,为符合查询条件的记录施加排他锁,语法格式如下所示。 select * from 表 where 条件语句 for update; 9.2.4 InnoDB表的行级锁 方法3.在更新(insert、update以及delete)语句中,InnoDB存储引擎将符合更新条件的记录自动施加排他锁(隐式锁)。 即:InnoDB存储引擎自动地为更新语句影响的记录施加隐式排他锁。 9.2.4 InnoDB表的行级锁 任务布置8:完成本书场景描述9:通过事务延长行级锁的生命周期的任务要求。 9.2.4 InnoDB表的行级锁 任务布置9:完成本书场景描述10的任务要求。 9.2.5 “选课系统”中的行级锁 考虑如下场景:MySQL客户机A获得了某个InnoDB表中若干条记录的行级锁,此时MySQL客户机B出于某种原因需要向该表显式地施加表级锁(使用lock tables命令即可),MySQL客户机B为了获得该表的表级锁,需要逐行检测表中的行级锁是否与表级锁兼容,而这种检测需要耗费大量的服务器资源。 9.2.6 InnoDB表的意向锁 试想:如果MySQL客户机A获得该表若干条记录的行级锁之前,MySQL客户机A直接向该表施加一个“表级锁”(这个表级锁是隐式的,也叫意向锁),MySQL客户机B仅仅需要检测自己的表级锁与该意向锁是否兼容,无需逐行检测该表是否存在行级锁,就会节省不少服务器资源。 9.2.6 InnoDB表的意向锁 MySQL提供了两种意向锁:意向共享锁(IS)和意向排它锁(IX)。 9.2.6 InnoDB表的意向锁 意向共享锁(IS):向InnoDB表的某些记录施加行级共享锁时,InnoDB存储引擎会自动地向该表施加意向共享锁(IS)。也就是说:执

您可能关注的文档

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档