下载此文档

SQL 事务控制和锁定语句.doc


文档分类:IT计算机 | 页数:约14页 举报非法文档有奖
1/14
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/14 下载此文档
文档列表 文档介绍
事务控制和锁定语句
MySQL支持对MyISAM和MEMORY存储引擎的表进行表级锁定,对BDB存储引擎的表进行页级锁定,对InnoDB存储引擎的表进行行级锁定。默认情况下,表锁和行锁都是自动获得的,不需要额外的命令。但是在有的情况下,用户需要明确地进行锁表或者进行事务的控制,以便确保整个事务的完整性,这样就需要使用事务控制和锁定语句来完成。
有关锁机制、不同存储引擎对锁的处理、死锁等内容,将会在后面的优化篇中进行更详细的介绍,有兴趣的读者可以参见相关的章节。
LOCK TABLE和UNLOCK TABLE
LOCK TABLES可以锁定用于当前线程的表。如果表被其他线程锁定,则当前线程会等待,直到可以获取所有锁定为止。
UNLOCK TABLES可以释放当前线程获得的任何锁定。当前线程执行另一个LOCK TABLES时,或当与服务器的连接被关闭时,所有由当前线程锁定的表被隐含地解锁,具体语法如下:
LOCK TABLES
    tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
    [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}] ...
UNLOCK TABLES
如表14-1所示是一个获得表锁和释放表锁的简单例子,演示的是film_text表获得read锁的情况,其他session更新该表记录会等待锁,film_text表释放锁以后,其他session可以进行更新操作。其中session1和session2表示两个同时打开的session,表格中的每一行表示同一时刻两个session的运行状况,后面的例子也都是同样格式,不再重复说明。
表14-1 一个获得表锁和释放表锁的简单例子
session_1
session_2
获得表film_text的READ锁定
mysql> lock table film_text read;
Query OK, 0 rows affected ( sec)
当前session可以查询该表记录
mysql> select film_id,title from film_text where film_id = 1001;
+---------+------------------+
| film_id | title |
+---------+------------------+
| 1001 | ACADEMY DINOSAUR |
+---------+------------------+
1 row in set ( sec)
其他session也可以查询该表的记录
mysql> select film_id,title from film_text where film_id = 1001;
+---------+------------------+
| film_id | title |
+---------+------------------+
| 1001 | ACADEMY DINOSAUR |
+---------+------------------+
1 row in set ( sec)
其他session更新锁定表会等待获得锁:
mysql> update film_text set title = 'Test' where film_id = 1001;
等待
释放锁
mysql> unlock tables;
Query OK, 0 rows affected ( sec)
等待
Session获得锁,更新操作完成:
mysql> update film_text set title = 'Test' where film_id = 1001;
Query OK, 1 row affected (1 min sec)
Rows matched: 1 Changed: 1 Warnings: 0
有关表锁的使用,将在后面的章节中进行介绍,读者可以参见“ Myisam表锁”一节以获得更详细的信息。
事务控制
MySQL通过SET MIT、START MIT和ROLLBACK等语句支持本地事务,具体语法如下。
START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET M

SQL 事务控制和锁定语句 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数14
  • 收藏数0 收藏
  • 顶次数0
  • 上传人63229029
  • 文件大小113 KB
  • 时间2017-10-29