<b>MySQL数据库锁机制的相关原理简介</b>[MySQL防范]
本文“<b>MySQL数据库锁机制的相关原理简介</b>[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
差别于行级或页级锁定的选项:
· 版本(比方,为并行的插入在MySQL中利用的技术),此中可以一个写操作,同时有很多读取操作.这明数据库或表支持数据依靠的差别视图,取决于拜候什么时刻开始.别的共同的术语是“时间跟踪”、“写复制”大概“按需复制”.
· 按需复制在很多情形下优先于页级或行级锁定.但是,在最坏的情形下,它大概比利用通例锁定利用多的内存.
· 除了行级锁定外,你可以利用利用程序级锁定,比方在MySQL中利用GET_LOCK()和RELEASE_LOCK().这些是倡议性锁定,它们只能在运行杰出的利用程序中工作.
为到达最高锁定速度,除InnoDB 和BDB 之外,对全部存储引擎,MySQL利用表锁定(而不是页、行大概列锁定).关于InnoDB 和BDB 表,假如你用LOCK TABLES显式锁定表,MySQL只利用表锁定;假如你不利用LOCK TABLES,因为 InnoDB 利用自动行级锁定而BDB 利用页级锁定来保证事件断绝.
但是关于大表,关于大大都利用程序,表锁定比行锁定更好,但存在部份缺陷.表锁定使很多线程同时从一个表中举行读取操作,但假如一个线程想要对表举行写操作,它必须首先得到独占拜候.更新期间,全部别的想要拜候该表的线程必须等候直到更新完成.
表更新普通情形认为比表检索更重要,因此赐与它们更高的优先级.这应确保更新一个表的活动不能“饿死”,即便该表上有很沉重的SELECT 活动.
表锁定在这种情形下会造成问题,比方当线程正等候,因为硬盘已满并且在线程可以处理之前必须有闲暇空间.在这种情形下,全部想要拜候呈现问题的表的线程也被设置成等候状况,直到有更多的硬盘空间可用.
表锁定在下面的情形下也存在问题:
· 一个客户发出长时间运行的查询.
· 然后,另一个客户对同一个表举行更新.该客户必须等候直到SELECT完成.
· 另一个客户对同一个表上发出了另一个 SELECT 语句.因为UPDATE比 SELECT 优先级高,该SELECT 语句等候UPDATE完成,并且等候第1个 SELECT 完成.
以上是“<b>MySQL数据库锁机制的相关原理简介</b>[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |