Hallo Zusammen,
Ausgangssituation: verwendet wird MySQL 5.0.x mit myISAM Tabellen
Es gibt die Datenbank "live" und die Datenbank "Entwicklung", wobei "Entwicklung" eine Kopie der "live" Datenbank ist, mit relativ aktuellen Daten und exakt gleicher Tabellenstruktur. Auf der "live"-Datenbank tummeln sich viele Kunden.
Daher habe ich für eine performancelastige Abfrage einfach die Entwicklungsdatenverwendet. Die Abfrage war von der Art der Art "Alle Kunden die im Frühjahr 2014 einen Artikel der Gruppe X gekauft haben, danach aber nie wieder etwas der Art Y .... und außerdem nicht an Aktion Z teilgenommen usw... "
Die Abfrage braucht erwartungsgemäß (trotz der üblichen Optimierungen) etwas länger, würgt mit aber zeitglich die "live" Datenbank ab, die ich ja verschonen wollte.
Klar gibt es CPU und RAM Restriktionen auf einer gemeinsam genutzten Hardware. Allerdings zeigt "SHOW PROCESSLIST", dass die Abfrage in Datenbank "Entwicklung" dafür sorgt, dass in der Datenbank "live" praktisch alle Abfragen den Status "LOCKED" haben. Alles staut sich hinter der einen fiesen Abfrage auf der Datenbank "Entwicklung". Es gibt doch logisch keinen Grund für das DBMS, die vielen kleinen Abfragen auf der "live" DB warten zu lassen.
Ja. ich habe auch bei Joins darauf geachtet, auch tatsächlich in meiner Entwichlungsdatenbank zu bleiben. Es wird sogar ein anderer Datenbankuser verwendet.
Mir ist schon mehrfach aufgefallen, dass Aktionen in der Entwicklungs-Datenbank wie "Spalten konvertieren" oder "Index einfügen" bei großen Tabellen, auch (sperrende) Auswirkungen auf die live Datenbank haben, die über CPU und Speicherengpässe hinausgehen. Warum ist das so? Gibt es da einen Workaround?
Hat jemand eine Idee oder ähnliche Erfahrungen?
Ausgangssituation: verwendet wird MySQL 5.0.x mit myISAM Tabellen
Es gibt die Datenbank "live" und die Datenbank "Entwicklung", wobei "Entwicklung" eine Kopie der "live" Datenbank ist, mit relativ aktuellen Daten und exakt gleicher Tabellenstruktur. Auf der "live"-Datenbank tummeln sich viele Kunden.
Daher habe ich für eine performancelastige Abfrage einfach die Entwicklungsdatenverwendet. Die Abfrage war von der Art der Art "Alle Kunden die im Frühjahr 2014 einen Artikel der Gruppe X gekauft haben, danach aber nie wieder etwas der Art Y .... und außerdem nicht an Aktion Z teilgenommen usw... "
Die Abfrage braucht erwartungsgemäß (trotz der üblichen Optimierungen) etwas länger, würgt mit aber zeitglich die "live" Datenbank ab, die ich ja verschonen wollte.
Klar gibt es CPU und RAM Restriktionen auf einer gemeinsam genutzten Hardware. Allerdings zeigt "SHOW PROCESSLIST", dass die Abfrage in Datenbank "Entwicklung" dafür sorgt, dass in der Datenbank "live" praktisch alle Abfragen den Status "LOCKED" haben. Alles staut sich hinter der einen fiesen Abfrage auf der Datenbank "Entwicklung". Es gibt doch logisch keinen Grund für das DBMS, die vielen kleinen Abfragen auf der "live" DB warten zu lassen.
Ja. ich habe auch bei Joins darauf geachtet, auch tatsächlich in meiner Entwichlungsdatenbank zu bleiben. Es wird sogar ein anderer Datenbankuser verwendet.
Mir ist schon mehrfach aufgefallen, dass Aktionen in der Entwicklungs-Datenbank wie "Spalten konvertieren" oder "Index einfügen" bei großen Tabellen, auch (sperrende) Auswirkungen auf die live Datenbank haben, die über CPU und Speicherengpässe hinausgehen. Warum ist das so? Gibt es da einen Workaround?
Hat jemand eine Idee oder ähnliche Erfahrungen?