Frage

Ich weiß, das klingt seltsam, aber anscheinend eine meiner Spalten gesperrt ist.

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;

Die erste wäre nicht zu Ende sogar in ein paar Stunden laufen, während der zweiten abgeschlossen ist glatt. der einzige Unterschied ist die type_id zwischen den zwei Abfragen.

ein wenig Hintergrund, geschraubt die erste Anweisung nach oben, vor dem ich manuell töten musste.

Vielen Dank im Voraus für Ihre Hilfe - ich habe einen dringendes Daten Job zu beenden, und dieses Problem mir treibt verrückt

War es hilfreich?

Lösung

Es scheint, wie Sie haben keinen Index auf (type_id, updated_at) und dem Tisch ist ziemlich groß.

den Index erstellen sollte das Problem beheben:

CREATE INDEX type_updated_idx ON table (type_id, updated_at);

Angenommen, Sie haben genügend Berechtigungen für Datendefinitionsanweisungen zu machen.

Andere Tipps

Haben Sie versucht, eine ANALYZE TABLE auf der betroffenen Tabelle ausgeführt wird?

Sie können die Umwandlung über zu MyISAM-Tabellen prüfen wollen, wie InnoDB-Tabellen Probleme und Einschränkungen.

Eine Spalte kann nicht gesperrt werden - aber ein Indexbereich kann. Show innodb status wird in der Regel Ihnen sagt, nach der aktiven Transaktion Sie warten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top