1

奇妙に聞こえるかもしれませんが、私の列の 1 つがロックされているようです。

select * from table where type_id = 1 and updated_at < '2010-03-14' limit 1;

select * from table where type_id = 3 and updated_at < '2010-03-14' limit 10;

1回目は数時間たっても終わりませんでしたが、2回目は順調に終わりました。唯一の違いは、2 つのクエリの type_id です。

少し背景を説明すると、最初のステートメントが台無しになり、その前に手動で強制終了する必要がありました。

4

3 に答える 3

0

列はロックできませんが、インデックス範囲はロックできます。Show innodb status通常、どのアクティブなトランザクションの後にあなたが待っているかを教えてくれます。

于 2010-05-17T03:15:37.627 に答える
0

ANALYZE TABLE影響を受けるテーブルで を実行してみましたか?

InnoDB テーブルには問題と制限があるため、MyISAM テーブルへの変換を検討することをお勧めします。

于 2010-05-17T02:08:45.080 に答える
0

(type_id, updated_at) にインデックスがなく、テーブルがかなり大きいようです。

インデックスを作成すると、問題が解決するはずです。

CREATE INDEX type_updated_idx ON table (type_id, updated_at);

データ定義ステートメントを作成するのに十分な権限があると仮定します。

于 2010-05-17T17:24:23.027 に答える