使用'show engine innodb status'我看到wordpress有两个死锁.我想清除这些,但我没有看到这些cmds中的任何一个的活动进程(IE某些东西要'杀'并希望强制回滚).
我可以看到线程ID,查询ID等,但我无法用来阻止任何一项工作.
关于如何解决这个问题的建议?
编辑:这是状态的(相关?)部分:
------------------------
LATEST DETECTED DEADLOCK
------------------------
110327 10:54:14
*** (1) TRANSACTION:
TRANSACTION 9FBA099E, ACTIVE 0 sec, process no 14207, OS thread id 1228433728 starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 376, 1 row lock(s)
MySQL thread id 12505112, query id 909492800 juno....edu 129....54 wordpress_user updating
DELETE FROM wp_options WHERE option_name = ''_site_transient_timeout_theme_roots''
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space …Run Code Online (Sandbox Code Playgroud) 我的MySQL数据库提供三个webapps作为存储后端.但是我最近遇到了错误"等待表元数据锁".它几乎一直发生,我不明白为什么.
mysql> show processlist
-> ;
+------+-----------+-----------------+------------+---------+------+---------------------------------+------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+------+-----------+-----------------+------------+---------+------+---------------------------------+------------------------------------------------------------------------------------------------------+
| 36 | root | localhost:33444 | bookmaker2 | Sleep | 139 | | NULL |
| 37 | root | localhost:33445 | bookmaker2 | Sleep | 139 | | NULL |
| 38 | root | localhost:33446 | bookmaker2 | Sleep | 139 | | NULL |
| 39 | root | localhost:33447 | …Run Code Online (Sandbox Code Playgroud) 我不太大的表挂在ALTER命令上.会是什么呢?
只有150k行,42个字段总共142 MB.InnoDB存储引擎和服务器版本:5.5.44-MariaDB MariaDB Server.1个字段'slotindex'是主键:bigint(20)和BTREE类型.
命令:
MariaDB [mydb]> ALTER TABLE `runs` CHANGE `p_w_trans_x` `p_w_tran_x` FLOAT NOT NULL;
Stage: 1 of 2 'copy to tmp table' 65.7% of stage done
Stage: 2 of 2 'Enabling keys' 0% of stage done
Run Code Online (Sandbox Code Playgroud)
在这个阶段2将永远完全挂起.
进程列表如下:
MariaDB [(none)]> show full processlist;
+--------+------+-----------------+-----------+---------+-------+---------------------------------+---------------------------------------------------------------------+----------+
| Id | User | Host | db | Command | Time | State | Info | Progress |
+--------+------+-----------------+-----------+---------+-------+---------------------------------+---------------------------------------------------------------------+----------+
| 274226 | root | localhost:45423 | edc_proxy | Sleep | 16043 | …Run Code Online (Sandbox Code Playgroud) 我试图在运行一些代码时锁定一些表,并在完成后解锁表。
过程:
运行此过程时,10 次中有 9 次一切正常。有时,当我运行查询时,MySQL 没有响应,PHP 只是等待响应。由于没有响应发生,我永远不会进入第 2 步或第 3 步,并且表格无限期地保持锁定状态。我在每次尝试中都运行完全相同的锁表查询。
我正在锁定许多表。下面是与我的实际表查询类似的示例。根据我试图阻止访问表的查询,我多次使用具有不同别名的同一个表。
$sql = "LOCK TABLES table1 as t1 WRITE
, table2 as t2 WRITE
, table3 WRITE
, table2 WRITE
, table4 WRITE
, table1 WRITE
, table5 WRITE
, table5 as t5 WRITE
, table6 as t6 WRITE
, table7 as t7 WRITE
, table7 WRITE
, table8 as t8 WRITE
, table9 t9 WRITE
, table10 t10 …Run Code Online (Sandbox Code Playgroud)