0

長い間、以下の選択クエリを使用しています。しかし、今日、データベースに多くのロックがかかっています。

選択クエリによるロックを解決する方法を教えてください。

テーブルのサイズは 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)
4

2 に答える 2