![]() |
Datenbank: MySQL • Version: 5.1.x • Zugriff über: MyDAC
MySQL Select mit LOW_PRIORITY
Guten Abend,
ich suche einer Möglichkeit bestimmten Abfragen eine geringere Priorität zu geben. Hintergund: Eine kleine Select-Abfrage die für sich alleine wenige Millisekunden dauert, hat sich im Multiuserbetrieb als Bremse herausgestellt. Wird die Abfrage ausgeführt und andere Rechner sind lesend/schreibend auf der selben DB unterwegs, steht alles bis diese eine Abfrage ausgeführt ist. Für Insert, Update und Delete gibt es LOW_PRIORITY und HIGH_PRIORITY, aber für Select nur HIGH_PRIORITY. Kennt jemand einen Weg, ein Select in der Warteschlange des Servers nach hinten zu befördern? Danke für Ideen. |
Re: MySQL Select mit LOW_PRIORITY
Hallo,
das wird nicht geben. Wenn dann musst du alle INSERT- und UPDATE-Statements mit LOW_PRIORITY oder sogar DELAYED starten, damit die SELECT-Statements eher drankommen. Allerdings kann auch die Storage Engine schon weiterhelfen. MyISAM sperrt bei Schreiboperationen immer die ganze Tabelle, waehrend InnoDB nur die betroffenen Zeilen sperrt. So ist nicht alles blockiert, wenn mal ein INSERT laenger dauert. Was da allerdings noch anfaellt sind Index-Updates, welche natuerlich zeitaufwaendig sind. Da solltest du mal ueberpruefen, welche Kardinalitaet die Indizes haben. Greetz alcaeus |
Re: MySQL Select mit LOW_PRIORITY
Zitat:
Zitat:
Zitat:
Die Indizes sind (imho) so ausgereizt, damit die Select's performant ablaufen. Laut Explain gibt es nichts zu verbessern. Aber eines stimmt, die hauptsächlich beteiligte Tabelle hat mehrer Millionen Einträge. Verkleinern hilft natürlich massiv, nur ist es keine Lösung. |
Re: MySQL Select mit LOW_PRIORITY
Wieviel RAM-Speicher genehmigt sich den MySQL (und wieviel ist den vorhanden). Je nach Installation und Konfiguration ist MySQL sehr konvervativ und verschenkt sehr viel Performance aufgrund der Konfiguration.
|
Re: MySQL Select mit LOW_PRIORITY
Kann ich aus dem Hut nicht sagen. Ich schaue morgen mal nach der Konfiguration.
|
Re: MySQL Select mit LOW_PRIORITY
Ich habe mal einige Versuche angestellt:
Engine: myisam System: Intel 4 Kern 2,67 GHz mit 2GB Ram Prozessorauslastung bis auf 100% (ein Kern genutzt) Speicher gerade mal 30% key_buffer-size=129M jetz mal key_buffer-size=1G gleiches Ergebnis Im Kofler(MySQL-Buch) steht auch nur, dass Tuning ein ganzes Buch füllen würde und reisst das Thema dann nur kurz an. Welche Schraube könnte man noch anziehen? |
Re: MySQL Select mit LOW_PRIORITY
Zitat:
|
Re: MySQL Select mit LOW_PRIORITY
Zitat:
Meinst Du eventuell Cluster-Server? |
Re: MySQL Select mit LOW_PRIORITY
Theoretisch sollte MySQL im threaded-mode arbeiten, und somit mehrere Kerne benutzen. Mit was fuer einer DB-Groesse haben wir es hier zu tun?
Zitat:
Um es kurz zu sagen: ein LOW_PRIORITY bei SELECT gibt es nicht - du musst wenn schon die INSERTs und UPDATEs mit LOW_PRIORITY ausfuehren, wenn die Abfrage schneller laufen soll. Andere Alternative waere die Ergebnisse zu cachen, aber wenn da wiederum einige INSERT- und UPDATE-Statements laufen dann bringts das nicht unbedingt. Greetz alcaeus |
Re: MySQL Select mit LOW_PRIORITY
Zitat:
Zitat:
Tabelle InnoDB ; ca. 2.000.000 Datensätze; 220000 KB
SQL-Code:
ca. 1 Minute
select ID,Feld1 from tabelle where Feld1 like '%1234567%'
Explain select_type = simple type=all possible_keys=NULL Key=Null ref=Null Rows=2125855 Extra=Using Where Gleiche Konstellation. Einzige Änderung, Engine=MyIsam < 2 Sekunden Explain gleich. Wie sollte man InnoDB konfigurieren damit es den Wert einer MyIsam erreicht? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz