页级的典型代表引擎为BDB。

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

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

-我们实际应用中用的最多的就是行锁。

行级锁的优点如下:

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

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

行级锁的缺点如下:

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

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

3)、容易出现死锁。

对于写锁定如下:

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

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

对于读锁定如下:

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

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

当然我们可以分别用low_priority 以及high_priority在写和读操作上来改变这些行为。

如果想要在一个表上做大量的 INSERT 和 SELECT 操作,但是并行的插入却不可能时,可以将记录插入到临时表中,然后定期将临时表中的数据更新到实际的表里。可以用以下命令实现:

mysql> LOCK TABLES real_table WRITE, insert_table WRITE;

mysql> INSERT INTO real_table SELECT * FROM insert_table;

mysql> TRUNCATE TABLE insert_table;

mysql> UNLOCK TABLES;

InnoDB 使用行级锁,BDB 使用页级锁。对于 InnoDB 和 BDB 存储引擎来说,是可能产生死锁的。这是因为 InnoDB 会自动捕获行锁,BDB 会在执行 SQL 语句时捕获页锁的,而不是在事务的开始就这么做。

行级锁的优点有:

在很多线程请求不同记录时减少冲突锁。

事务回滚时减少改变数据。

使长时间对单独的一行记录加锁成为可能。

行级锁的缺点有:

比页级锁和表级锁消耗更多的内存。

当在大量表中使用时,比页级锁和表级锁更慢,因为他需要请求更多的所资源。

当需要频繁对大部分数据做 GROUP BY 操作或者需要频繁扫描整个表时,就明显的比其它锁更糟糕。

使用更高层的锁的话,就能更方便的支持各种不同的类型应用程序,因为这种锁的开销比行级锁小多了。

表级锁在下列几种情况下比页级锁和行级锁更优越:

很多操作都是读表。

在严格条件的索引上读取和更新,当更新或者删除可以用单独的索引来读取得到时:

UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;

DELETE FROM tbl_name WHERE unique_key_col=key_value;

SELECT 和 INSERT 语句并发的执行,但是只有很少的 UPDATE 和 DELETE 语句。

很多的扫描表和对全表的 GROUP BY 操作,但是没有任何写表。

表级锁和行级锁或页级锁之间的不同之处还在于:

将同时有一个写和多个读的地方做版本(例如在MySQL中的并发插入)。也就是说,数据库/表支持根据开始访问数据时间点的不同支持各种不同的试图。其它名有:时间行程,写复制,或者是按需复制。

复制代码 代码如下:

//执行SQL语句 锁掉stat_num表

$sql = "LOCK TABLES stat_num WRITE"; //表的WRITE锁定,阻塞其他所有mysql查询进程

$DatabaseHandler->exeCute($sql);

//执行更新或写入操作

$sql = "UPDATE stat_num SET `correct_num`=`correct_num`+1 WHERE stat_date='{$cur_date}'";

$DatabaseHandler->exeCute($sql);

//当前请求的所有写操作做完后,执行解锁sql语句

$sql = "UNLOCK TABLES";

$DatabaseHandler->exeCute($sql);

本文来源:https://www.jb51.net/article/28287.htm

在线解mysql_mysql锁表和解锁语句分享相关推荐

  1. 个人总结-oracle查询锁表、解锁语句

    –oracle查询锁表解锁语句 –首先要用dba权限的用户登录,建议用system,然后直接看sql吧 1. 如下语句 查询锁定的表. SELECT L.SESSION_ID SID,S.SERIAL ...

  2. mysql锁表和解锁语句

    对于MySQL来说,有三种锁的级别:页级.表级.行级 页级的典型代表引擎为BDB. 表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM. 行级的典型代表引擎为INNODB. -我们实 ...

  3. mysql dump锁表_mysqldump 锁表和解锁语句

    备份: 导出要用到MySQL的mysqldump工具,基本用法是: mysqldump [OPTIONS] database [tables] 如果你不给定任何表,整个数据库将被导出. 通过执行mys ...

  4. oracle怎么解锁视图,Oracle的锁表与解锁详解

    查看锁表进程SQL语句1: select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo ...

  5. oracle update 锁表还是锁行,for update造成的Oracle锁表与解锁

    我遇到的情况: 当使用select语句查询表时,后面跟着for update , select * from table for update 当修改表中数据,但是没有commit就关掉PL/SQL, ...

  6. mysql+不锁表添加字段_MySQL5.6在线DDL不锁表(在线添加字段)

    解答你也看一下 MySQL5.6在线DDL不锁表,现在我有一张1亿的表,需要增加一个字段,假如我让你去增加这个字段,你应该注意什么,具体怎么操作? 操作如下: 1.注意磁盘空间(临时表目录 参数 tm ...

  7. for update造成的Oracle锁表与解锁

    我遇到的情况: 当使用select语句查询表时,后面跟着for update , select * from table for update 当修改表中数据,但是没有commit就关掉PL/SQL, ...

  8. Oracle的锁表与解锁

    Oracle的锁表与解锁 SELECT /*+ rule */ s.username, DECODE (l.TYPE, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NU ...

  9. SqlServer查看锁表与解锁

    某些情况下,sqlserver的表会被锁住,比如某个会话窗口有数据一直没提交,窗口又没关闭,这时表就会被锁住 其他任何连接查询表数据时都不会返回 这时需要手工杀掉产生死锁的会话ID,才能恢复正常 查看 ...

  10. mysql 事务 for update,mysql事务锁_详解mysql 锁表 for update

    摘要 腾兴网为您分享:详解mysql 锁表 for update,智慧农业,真还赚,悦读小说,学习帮等软件知识,以及电池管家,三国群英传3,userland,运满满货主版,王者荣耀,简单3d动画,嘉丽 ...

最新文章

  1. Webpack 打包学习
  2. 九州云陈沙克:OpenStack的成功源于自身的开放
  3. Unity Shader 屏幕后效果——Bloom外发光
  4. 静态内容负载均衡的具体实现-续《几百元搞定大型网站》
  5. maven私服搭建及应用
  6. Linux——常用文件管理命令(必会)
  7. python生成json文件_json文件生成by python
  8. 耳机插入电脑的,耳机接口,却没有声音的 解决方法
  9. 2019腾讯广告算法大赛
  10. 程序员就该这么悲催么? 996下的我们何去何从
  11. 外贸常用术语_常用外贸术语
  12. over partition by ... order by ...用法汇总
  13. wordpress友联_一段代码开启WordPress友情链接管理
  14. python数据记录_python 数据处理中的记录
  15. 都要2023年了,Android开发是否还值得入场?
  16. 安全合规/GDPR--14--通用数据保护条例简介(GDPR简介)
  17. 【程序23】TestAge.java 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。 //问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个
  18. 刷脸支付微信支付宝小程序可以营销活动
  19. android面试题(深度解析)
  20. 解决Caused by: java.lang.NoClassDefFoundError: com/aliyun/oss/internal/OSSUdfOperation

热门文章

  1. Spring Batch完整入门实践
  2. 网易云课堂Java模拟面试笔记(31-40)
  3. 锚点盒子随滚动条浮动
  4. 开发者论坛一周精粹(第六期):阿里B2B研发管理难题如何应对?打造强有力的技术中台...
  5. Paypal如何实现循环扣款(订阅)?
  6. 后台的Activity被系统回收怎么办?
  7. Netty笔记(七)ChannelHandlers and Codes 整合
  8. 【转载】ESFramework介绍之(20)―― 插件自动升级
  9. 局域网操作技巧与配置实例
  10. “朝三暮四”与“BPO”