Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql mariadb中的'Init for Update'线程状态是什么?_Mysql_Mariadb - Fatal编程技术网

Mysql mariadb中的'Init for Update'线程状态是什么?

Mysql mariadb中的'Init for Update'线程状态是什么?,mysql,mariadb,Mysql,Mariadb,每当我们启动类似这样的查询时,我们的生产服务器就会陷入更新的Init状态 update <some_big_table> set <primary_key> = <some_sequence>.nextval order by <some_indexed_field> 更新 设置 埃克斯塔尔酒店 订购人 当查询处于这种状态时,所有其他查询都会停留在提交或写入binlog状态 我也找不到任何与此相关的文档。必须更

每当我们启动类似这样的查询时,我们的生产服务器就会陷入更新的
Init状态

update 
    <some_big_table> 
set 
    <primary_key> = <some_sequence>.nextval 
order by 
    <some_indexed_field>
更新
设置
埃克斯塔尔酒店
订购人
当查询处于这种状态时,所有其他查询都会停留在提交或写入binlog状态


我也找不到任何与此相关的文档。

必须更改表中的每一行。因此它有效地锁定了整个表。这需要很长时间

因此,它会阻止出于任何目的而接触表的其他查询


至于“国家”——它和大多数国家一样,意义不大。而且可能是误导。(我希望用“init”和“performing”完成更新。)

永远不要重写主键。我假设你的主键是自动递增的,你想消除一些间隙还是什么?如果希望使用干净的顺序编号,请使用单独的列。PK的唯一目的是唯一地标识一行。并确定磁盘上存储行的顺序。如果你重写PK,你就迫使MySQL重写表,这是一个昂贵的操作。我理解这是由于innodb的btree索引组织,但是是什么原因造成的,这是一个bug吗?一个如何选择所有其他查询块提交?