赞
踩
- #示例
- SELECT * FROM production_log where sn = 'F20LIKE22082316'
-
- #锁表 production_log
- #写锁,锁定之后,只有当前线程可以进行读操作和写操作,其他线程读操作和写操作均被堵塞.
- LOCK TABLES production_log WRITE;
-
- #读锁,锁定之后,无论是当前线程还是其他线程均只能读操作,写操作全部被堵塞
- LOCK TABLES production_log READ;
-
- #查锁
- show OPEN TABLES where In_use > 0;
-
- #解锁 (不用写表名,只能自己解锁,即同一连接,别人无效,不同连接无效。)
- UNLOCK TABLES;
-
- #查锁表进程
- show processlist
- #或
- SELECT * FROM information_schema.PROCESSLIST
-
- #杀掉锁表进程id=33(任何人都行)(连接断开,即进程结束,即锁也没了。)
- kill 33
行级锁/排他锁 [使用FOR UPDATE]:
表需要是InnoDB引擎;
还需要配合事务
BEGIN; SELECT * FROM production_log WHERE sn = 'F20LIKE22082316' FOR SELECT; COMMIT;#事务提交[或者 ROLLBACK 事务回滚]在启动事务然后锁定某一行后,在事务提交之前或者事务回滚之前该行会一直处于锁定状态,此时只允许当前线程进行读写操作,其他线程只能进行读操作,其他写操作全部被堵塞。
MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型不支持!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。