谷歌镜像 伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

innodb行级锁

来源:网络转载 浏览:33937次 时间:2023-09-05

理论上innodb引擎能实现行级锁。

在MYISAM中,假设我的一个表有1KW条数据。然后对某个帖子进行编辑,提交的这一瞬间,MYSQL全表写锁定,这时候发过来的其他任何请求都被阻塞,直到这个写锁定被释放。

而在innodb中,提交的时候只对这一行数据进行锁定。其他不冲突的请求也能同步进行。


INNODB的伪行锁特性

对oracle熟悉的人可能会误认为mysql的行锁也是真正的行级锁,锁定时是对数据行上锁,而事实上不是。Innodb的行锁实质上是基于索引来实现的,所以就有很多注意事项。下面来具体说说这个问题。

1.        Post表中使用如下语句:UPDATEpre_forum_post SET status=1 WHERE pid=123;

这是真正的行级锁,因为pid是唯一键,索引直接定位到这一行。

2.        UPDATE pre_forum_post SETstatus=1 WHERE status=0;

由于status没有索引,所以会导致表锁。

3.        UPDATE pre_forum_post SETstatus=1 WHERE pid >1 AND pid <10;

这儿用到的索引类型是range,所以pid2~9的行数被锁,如果这时候有另外一个请求更改pid=5的行,也会被放入到写锁队列中。

4.        UPDATE pre_forum_post SETstatus=1 WHERE invisible=1 AND pid=1;

如果有一个invisible索引,如果这时候有另外一个语句:

UPDATE pre_forum_post SET status=1 WHERE invisible=1 ANDpid=2;

虽然这两个不指向同一行,但是由于第一句中使用了invisible的所以,所以会导致所有invisible=1的行数全部被锁,所以第二句也不能同时进行操作。

所以由此可见,锁行的精细度是和索引使用的精细度相同的。这一点在使用的时候必须注意了。

INNODB的其他问题

1.      占用更多内存。

2.      锁定速度更慢。

3.      SELECT COUNT(*)统计全表时需要遍历所有行。

4.      GROUP BY操作效率低下。

INNODB的适用范围

是一个值得尝试的方案,尤其是对于写操作比较频繁的论坛,比如手机论坛这种需要靠回帖挣积分的论坛。不过对于一般小站来说,意义并不是很大。

如果你的论坛有如下情形,建议使用MYISAM。

1.      主要用于展示内容的。

2.      主要用于展示内容和INSERT操作。UPDATE和DELETE操作很少。

3.      站点不大,日PV小于10W。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net