您当前位置:主页 > 资讯攻略 >
来源:未知
2020-02-19 15:50:51 浏览: 分类:资讯攻略

Mysql教程 对MySQL中的锁机制的总结

今天我们来简单总结一下mysql的锁机制。如果不合适,欢迎拍砖!

1.对于MySQL,有三个级别的锁:页面级、表级和行级。

页面级的典型代表引擎是BDB。

表格的典型代表引擎是米沙姆,内存和ISAM很久以前。

级别的典型代表引擎是INNODB。

2.线锁是我们实际应用中最常用的一种。

行锁的优点如下:

1)当许多连接分别进行不同的查询时,减少锁定状态。

2)在异常情况下,可以减少数据丢失。因为一次只能回滚一行或几行小数据。

行锁的缺点如下:

1)它比页级锁和表级锁占用更多内存。

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

3)、容易出现死锁。

3.MySQL使用写队列和读队列来读写数据库。

写锁定如下:

1),如果表没有被锁定,那么给它添加一个写锁。

2)否则,将请求放入写锁队列中。

读取锁定如下所示:

1).如果表没有写锁,则添加一个读锁。

2)否则,将请求放入读锁队列中。

当然,我们可以使用low_priority和high_priority来分别改变写和读操作中的这些行为。

4.让我用一个简单的例子来解释上面的陈述。

让我们运行一个长查询。

1)客户端1:

mysql & gtselect count(*)from content group by content;

...

客户2:

mysql & gtupdatecontent set content = '我爱你'其中id = 444

查询正常,1行受影响(30.68秒)

匹配的行数:1已更改:1警告数:0

花了半分钟。

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

此时,客户端2:

mysql & gtupdatecontent set content = '我恨你'其中id = 444

查询正常,1行受影响(0.02秒)

匹配的行数:1已更改:1警告数:0

只用了20毫秒。

这个例子很好地说明了读写队列的操作。

对于1中的客户端1,此时表上没有锁,当然也没有写锁,所以客户端1此时在表上添加了读锁。

对于1中的客户机2,此时,因为表有一个读锁,所以更新请求被放入写锁队列中。

当释放读锁时,即当SHOW PROCESSLIST中的状态为COPY TO TMP TABLE时,更新操作开始。

5.您可以在复制中对主服务器和从服务器使用不同的锁,以使系统达到最佳性能。(当然这个前提是所有SQL语句都是最优的。)

关键词:摘要、机制、教程、客户端

优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。

本文链接:http://www.123down.cn/gonglue/227245.html

攻略资讯
安卓软件