2010-03-09 15 views
7

Ich habe eine große Anzahl von Lese- und Schreibvorgängen im Hintergrund und eine viel kleinere Anzahl von Lesevorgängen einer stark beanspruchten MySQL-Datenbank - gibt es irgendeine Möglichkeit, bestimmte Abfragen (die Benutzerabfragen) als hohe Priorität zu markieren Präferenz gegenüber Hintergrundabfragen? Ich möchte, dass die Benutzerreaktionsbereitschaft hoch ist, aber die Hintergrundanfragen interessieren mich nicht wirklich.Wie priorisiert man bestimmte Abfragen in MySQL?

Dank

+0

Welche Speicher-Engine verwenden Sie? InnoDB? MyISAM? –

+0

InnoDB, aber ich könnte wechseln, wenn es einen guten Grund gibt .. – MalcomTucker

Antwort

5

MySQl unterstützt insert delayed für verzögerte insert s und low_priority für update s. Und für Ihre Benutzer liest, gibt es die high_priority Erweiterung auf select. Wenn Sie die MyISAM-Speicher-Engine verwenden, gibt es die zugehörige (aber andere) Funktion concurrent inserts.

+0

Andererseits unterstützt 'SELECT' das Schlüsselwort' HIGH_PRIORITY', welches die selbe Priorität wie ein Update auswählt. –

+0

@Romuald: Anscheinend habe ich meine Antwort bearbeitet, als Sie kommentiert haben. :-) –

+0

Bin ich richtig in der Annahme, dass, wenn es keine hohe Priorität gibt, alle Einsätze mit niedriger Priorität ausgewählt werden und die Aktualisierungen einfach mit normaler Priorität arbeiten würden? – MalcomTucker