设为首页收藏本站

无忧软考论坛|信息系统项目管理师|系统集成项目管理工程师考试全程辅导培训资料

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3236|回复: 10

MySQL的锁表用法

  [复制链接]

3626

主题

0

好友

7万

积分

管理员

C哥|CD

Rank: 9Rank: 9Rank: 9

发表于 2012-1-13 23:35:12 |显示全部楼层
1、对于MySQL来说,有三种锁的级别:页级、表级、行级
    页级的典型代表引擎为BDB。

    表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM。

    行级的典型代表引擎为INNODB。

    2、我们实际应用中用的最多的就是行锁

    行级锁的优点如下:

    1)、当很多连接分别进行不同的查询时减小LOCK状态。

    2)、如果出现异常,可以减少数据的丢失。因为一次可以只回滚一行或者几行少量的数据。

    行级锁的缺点如下:

    1)、比页级锁和表级锁要占用更多的内存。

    2)、进行查询时比页级锁和表级锁需要的I/O要多,所以我们经常把行级锁用在写操作而不是读操作。

    3)、容易出现死锁。

    3、MySQL用写队列和读队列来实现对数据库的写和读操作

    对于写锁定如下:

    1)、如果表没有加锁,那么对其加写锁定。

    2)、否则,那么把请求放入写锁队列中。

    对于读锁定如下:

    1)、如果表没有加写锁,那么加一个读锁。

    2)、否则,那么把请求放到读锁队列中。

    当然我们可以分别用low_PRiority 以及high_priority在写和读操作上来改变这些行为。
4、下面我来一个简单的例子解释上面的说法

    我们来运行一个时间很长的查询

    1)、客户端1:

    mysql> select count(*) from content group by content;
    …

    客户端2:

    mysql> update content set content = 'I love you' where id = 444;
    Query OK, 1 row affected (30.68 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    用了半分钟。

    2)、我们现在终止客户端1。

    此时客户端2:

    mysql> update content set content = 'I hate you' where id = 444;
    Query OK, 1 row affected (0.02 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    仅仅用了20毫秒。

    这个例子很好的说明了读写队列的运行。

    对于1中的客户端1,此时表没有加锁,当然也没有加写锁了,那么此时客户端1对表加了一个读锁。

    对于1中的客户端2,此时因为表有一个读锁,所以把UPDATE请求放到写锁定队列中。

    当读锁释放的时候,也就是SHOW PROCESSLIST中STATUS 为COPY TO TMP TABLE的时候,UPDATE操作开始执行。

    5、可以在REPLICATION中对MASTER 和SLAVE运用不同的锁定使系统达到最佳的性能

    当然这个前提是SQL语句都是最优的。
回复

使用道具 举报

Rank: 8Rank: 8

发表于 2012-7-6 19:37:53 |显示全部楼层
前排怎么没人
回复

使用道具 举报

无效楼层,该帖已经被删除

1

主题

0

好友

587

积分

专家顾问

Rank: 12Rank: 12Rank: 12

发表于 2013-12-17 09:02:16 |显示全部楼层
回复

使用道具 举报

5#
无效楼层,该帖已经被删除
6#
无效楼层,该帖已经被删除
7#
无效楼层,该帖已经被删除
8#
无效楼层,该帖已经被删除
9#
无效楼层,该帖已经被删除
10#
无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|专注于信息系统项目管理师|系统集成项目管理工程师考试全程辅导培训视频资料 ( 网警备案:420100007573  

GMT+8, 2020-1-30 04:25 , Processed in 0.095977 second(s), 26 queries .

Powered by 91过软考教育学院,QQ:858301448 电话18008622883 X2.5 & 考试中心 Exam2.0

© 2001-2012 Comsenz Inc.

回顶部