mysql - 由于选择查询而锁定表?

标签 mysql sql locking database-locking

我们长期以来一直在使用以下选择查询。 但今天我们收到了许多数据库锁定。

请帮助我如何解决由于选择查询而导致的锁定。

表的大小非常小,只有300kb。

我们优化了表格,但没有成功

从下面查询信息和表结构。

Req-SQL:[select max(fullname) from prod_sets where name='view_v01' for update] 
Req-Time: 5 sec 
Blocker-SQL:[] 
Blocker-Command:[Sleep] 
Blocker-Time: 73 sec

Req-SQL:[select max(fullname) from prod_sets where name='view_v01' for update] 
Req-Time: 22 sec 
Blocker-SQL:[] 
Blocker-Command:[Sleep] 
Blocker-Time: 73 sec

CREATE TABLE `prod_sets` (
  `modified` datetime DEFAULT NULL,
  `create` datetime DEFAULT NULL,
  `name` varchar(50) COLLATE latin1_bin DEFAULT NULL,
  `fullname` decimal(12,0) DEFAULT NULL,
  UNIQUE KEY `idx_n` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin

解释计划:

mysql> explain select max(fullname) from prod_sets where name='view_v01' for update;
+----+-------------+---------------+-------+---------------+----------+---------+-------+------+-------+
| id | select_type | table         | type  | possible_keys | key      | key_len | ref   | rows | Extra |
+----+-------------+---------------+-------+---------------+----------+---------+-------+------+-------+
|  1 | SIMPLE      | prod_sets     | const | idx_name      | idx_name | 53      | const |    1 |       |
+----+-------------+---------------+-------+---------------+----------+---------+-------+------+-------+
1 row in set (0.01 sec)

最佳答案

如果您锁定表的某些行,则必须在工作完成后显式解锁该表。

使用: 解锁表格;

或使用: 杀死 put_process_id_here;

请参阅这些链接以供进一步阅读

http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html

http://lmorgado.com/blog/2008/09/10/mysql-locks-and-a-bit-of-the-query-cache/

关于mysql - 由于选择查询而锁定表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20415828/

相关文章:

sql - 组合行以创建两列数据

c++ - 游戏中的多线程共享资源,需要一些关于想法的反馈

c# - Monitor.Enter(object,ref bool)锁获取的实现和顺序

java - 如何在 Spring Boot 应用程序中手动注册非标准化 SQL 函数?

php - 如何在表单的选择列表中使用 "any"在mysql中工作?

mysql - 在 SQL 中使用 min 和 DATE()

sql - 如何知道在哪一列上应用了序列?

swift - Swift 中的并发和锁

php - 无法正确将 CSV 导入 Mysql

php - 你如何使 codeigniter 加入?