Seite 1 von 1

SELECT der Gesamtliste locked einzelne Datensatz-SELECTs?

Verfasst: 02.10.2005, 16:09
von Airport1
Folgendes Verhalten musste ich eben mit SHOW FULL PROCESSLIST; unter mysql feststellen und wundere mich darueber:

Waehrend ein Select ueber die Gesamtliste der Datensaetze durchgefuehrt wurde (State sorting result), waren alle anderen Selects die nur einen einzigen Datensatz selektieren im State "locked". Wieso das denn? Wenn alle nur lesen?

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


SELECT der Gesamtliste locked einzelne Datensatz-SELECTs?

Verfasst: 02.10.2005, 18:25
von Airport1
Hat maybe jemand ne Vermutung wie sowas sein kann ;) ?

Verfasst: 02.10.2005, 19:55
von Eistee
Der genaue SELECT, der den lock theoretisch verursacht hat, wäre interessant.

Verfasst: 02.10.2005, 21:13
von jensjk
also wenn du mal die beiden SELECT Befehle posten würdest, dann könnte man sehen ...

aber vor allem: wofür ist es wichtig? Ist es ein Problem, weil du den Datensatz gleichzeitig ändern willst?

SELECT der Gesamtliste locked einzelne Datensatz-SELECTs?

Verfasst: 12.10.2005, 21:46
von Airport1
OK, mal ein Beispiel. Die folgenden werden alle gelocked:

| 144 | name | localhost | usrdb_name | Query | 0 | Locked | SELECT id, domain, ... FROM tblName WHERE short='hase.de' AND active=1

Dazu ist lediglich folgendes noetig, entweder im state "sort result" oder "sending data", dies locked IMMER die SELECTs wie oben genannt:

| 256 | name | localhost | usrdb_name | Query | 0 | Sending data | SELECT domain .. , [Formel aus Potenzen, Euler, TimestampUmrechnungen hier, muss leider geheim gehalten werden, Grund bekannt] AS points FROM tblName WHERE active=1 AND [geheim] ORDER BY points DESC, pr DESC |

Namen geaendert, warum bekannt ;) Es ist beides mal die gleiche Tabelle auf die zugegriffen wird, aber eben nur SELECTs, kein einziges INSERT oder UPDATE ist dabei!

SELECT der Gesamtliste locked einzelne Datensatz-SELECTs?

Verfasst: 12.10.2005, 21:55
von Lutz-Development
Hi,

mySQL optimiert die Abfragen. Wenn eine Tabelle gelocked ist, dann wird eine SELECT-Abfrage weitaus schneller ausgeführt. Das wird der Grund sein.

Gruß,
Thomas

SELECT der Gesamtliste locked einzelne Datensatz-SELECTs?

Verfasst: 12.10.2005, 22:27
von Airport1
Endlich mal jemand, der sich auskennt. Danke !! :)

Verfasst: 13.10.2005, 10:09
von jensjk
sorry, um es wirklich nachzuvollziehen ist der aufwand zu groß. aber:

wenn du ein Sortierung machst, dann will doch die SQL-DB wohl sicherstellen, dass sich während des Sortiervorganges nicht mal die Werte der zu sortienden Felder ändern??? Also müssen die zu sortierenden Datensätze gelockt werden.

SELECT der Gesamtliste locked einzelne Datensatz-SELECTs?

Verfasst: 13.10.2005, 13:01
von Airport1
Das mag zwar sein. Aber wenn alle Zugriffe rein LESEND sind (nur SELECTs, keine INSERTs oder UPDATEs - hab es zigmal ueberprueft) ist das Locken nur fuer die Sortierung ja voellig unnoetig, denn es kann sich ja nix aendern. Ein exclusives Lock wird wohl erst dann noetig wenn es ein INSERT oder ein UPDATE Query gibt, dann macht es auch wirklich Sinn.

SELECT der Gesamtliste locked einzelne Datensatz-SELECTs?

Verfasst: 17.10.2005, 11:22
von jensjk
ja, war wohl ein denkfehler. lock bezieht sich ja hier aufs schreiben, nur dafür ist die Sperre notwendig.

mal sehen ob mir mal was über den Weg läuft.

Bei extensiver MySQL-nutzung kann so etwas ja doch ein Zeitproblem werden.