Frage

mysql5.0 mit einem Paar von Datenbanken "A" und "B", beide mit großen InnoDB-Tabellen. „Datenbank A fallen;“ gefriert Datenbank „B“ für ein paar Minuten. Nichts ist "A" an diesem Punkt mit, also warum ist das so eine intensive Operation?

Bonuspunkte: Da wir „A“, Upload von Daten in „B“ zu verwenden, und wechseln Sie dann „B“ zu verwenden, wie können wir dies schneller tun? Datenbanken ist nicht das, was man in der Regel die ganze Zeit zu tun hat Dropping, so ist dies ein bisschen aus den Charts.

War es hilfreich?

Lösung

Also ich bin nicht sicher, Matt Rogish Antwort wird 100% helfen.

Das Problem ist, dass MySQL * ein Mutex hat (sich gegenseitig ausschließende Sperre) um das Öffnen und Schließen Tabellen, so dass im Grunde das bedeutet, dass, wenn eine Tabelle in dem Prozess ist, geschlossen / gelöscht, no Andere Tabellen geöffnet werden kann.

Dies wird durch einen Kollegen von mir hier beschrieben: http://www.mysqlperformanceblog.com/2009/06/16 / slow-drop-table /

Eine ausgezeichnete Schlagbekämpfungsstrategie ist ein Dateisystem wie XFS zu verwenden.

Die Abhilfe ist hässlich. Sie haben im Wesentlichen alle Daten in den Tabellen knabbern weg, bevor sie fallen (siehe # 11 auf den oberen Link Kommentar).

Andere Tipps

Nach off von skaffman:

Ändern Sie Ihre my.cnf (und starten Sie MySQL) enthalten:

innodb_file_per_table = 1

( http://mysqldba.blogspot.com/2006/12/innodbfilepertable.html )

Dies wird Ihren Datenbanken dedizierte Dateispeicher geben und sie aus dem gemeinsamen Pool. Es wird Ihnen dann lassen Sie Spaß Dinge wie Ort, die Tabellen / Indizes auf unterschiedlichen physischen Datenträgern noch weiter aufgeteilt I / O und die Leistung verbessern.

Hinweis: Dies ändert sich nicht vorhandene Tabellen; Sie werden zu tun haben ‚em in einer eigenen Datei ( http://capttofu.livejournal.com zu bekommen /11791.html ).

Standardmäßig werden alle InnoDB-Datenbanken in einer bestimmten MySQL-Server-Installation verwenden, um den gleichen physikalischen Pool von Datendateien, so denkbar „Datenbank A Drop“ könnte Datenbank B. beeinflusst Da „drop-Datenbank“ ist wahrscheinlich schwer reorgainsing des innodb einzubeziehen Datendateien, ist es denkbar, dass es sich um einen Blockierungsvorgang ist, entweder wegen der Intensität der Operation oder durch Design.

Aber ich denke, Sie jede Datenbank unterschiedliche physikalische Dateien verwenden machen, obwohl ich, dass ich nicht versucht haben, so dass Sie selbst die Besonderheiten herauszufinden, musst. Gelingt das nicht, dann können Sie zwei verschiedene MySQL verwenden müssen installiert Seite-an-Seite auf der gleichen Maschine, die perfekt machbar ist.

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