浅议mysql锁表机制.docVIP

  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文档。上传文档
查看更多
浅议mysql锁表机制.doc

浅议mysql锁表机制   【摘要】 MySQ有三种锁的级别:页级、表级、行级。本文简要分析三种锁的特点,简要的分析了表级锁的典型应用MyISAM。   【关键词】页级 表级 行级   MyISAM存储引擎只支持表锁,是现在用得最多的存储引擎。   一、查询表级锁争用情况   可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺:   mysql show status like ‘table%’;   +―――――――?C+―――-+   | Variable_name | Value |   +―――――――?C+―――-+   | Table_locks_immediate ||   | Table_locks_waited | 305089   |+―――――――?C+―――-+   Table_locks_waited的值比较高,说明存在着较严重的表级锁争用情况。   二、MySQL表级锁的锁模式   MySQL的表级锁有两种模式:表共享读锁(Table Read Lock)和表独占写锁(Table WriteLock)。MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁。所以对MyISAM表进行操作,会有以下情况:对MyISAM表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其它进程的写操作。对MyISAM表的写操作(加写锁),会阻塞其他进程对同一表的读和写操作,只有当写锁释放后,才会执行其它进程的读写操作。   下面通过例子来进行验证以上观点。数据表gz_phone里有二百多万数据,字段id,phone,ua,day。当我用客户端1进行一个比较长时间的读操作时,分别用客户端2进行读和写操作:   client1:   mysqlselect count(*) from gz_phone group by ua;   75508 rows in set (3 min 15.87 sec) client2:   select id,phone from gz_phone limit 1000,10;   +――+――-+   | id | phone |   +――+――-+   | 1001 | 2222 |   | 1002 | 2222 |   | 1003 | 2222 |   | 1004 | 2222 |   | 1005 | 2222 |   | 1006 | 2222 |   | 1007 | 2222 |   | 1008 | 2222 |   | 1009 | 2222 |   | 1010 | 2222 |   +――+――-+   10 rows in set (0.01 sec)   mysql update gz_phone set phone=’11111111111′where id=1001;   Query OK, 0 rows affected (2 min 57.88 sec)   Rows matched: 1 Changed: 0 Warnings: 0   说明当数据表有一个读锁时,其它进程的查询操作可以马上执行,但更新操作需等待读锁释放后才会执行。当用客户端1进行一个较长时间的更新操作时,用客户端2,3分别进行读写操作:   client1:   mysql update gz_phone set phone=’11111111111′;   Query OK, 1671823 rows affected (3 min 4.03 sec)   Rows matched: 2212070 Changed: 1671823 Warnings: 0 client2:   mysqlselect id,phone,ua,day from gz_phone limit 10;   +―-+――-+――――――-+――――+   | id | phone | ua | day |   +―-+――-+――――――-+――――+   | 1 | 2222 | SonyEricssonK310c | 2007-12-19 |   | 2 | 2222 | SonyEricssonK750c | 2007-12-19 |   | 3 | 2222 | MAUI WAP Browser | 2007-12-19 |   |

文档评论(0)

sis_lxf + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档