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吗?一个如何选择所有其他查询块提交?