Andi: MySQL Multithreaded, Sperrung beim Lesen der Tabellen

Hallo,

Gestern ist es bei unserem Programm passiert das eine Query so lange gedauert hat, dass die maximale Anzahl von Verbindungen erreicht wurde. Die Query dauerte solange, weil ein Index falsch gesetzt worden ist.

Ich habe mir dann von MySQL die aktuellen Queries angezeigt. Als erstes war die Query welche solange Zeit in Anspruch genommen hat.
Dahinter waren alles andere Queries.

Was mir auffiel ist, dass die 1. Query welche solange dauerte alle anderen Queries blockiert sprich die Tabelle lockte, obwohl sie nur einen Select-Statement enthielt.

Nun zu meiner Frage:

  • Warum sperrt MySQL die Tabellen auch wenn diese nur eine Select ausführen wollen?
  • Muss man MySQL oder PHP oder auch Apache expliziet sagen, dass sie mehrere Prozessoren nutzen können
  • Gibt es ein Tool, welches die Auslastung von CPUs auf einem Unix-Server anzeigt

MfG
Andi

  1. n'abend,

    Nun zu meiner Frage:

    • Warum sperrt MySQL die Tabellen auch wenn diese nur eine Select ausführen wollen?

    waren die wartenden queries ebenfals reading-queries, oder wollten die was schreiben? im writing-queries fall, ist logisch dass die tabelle für read-only gelockt wird. (ich mag mich allerdings auch irren)

    • Muss man MySQL oder PHP oder auch Apache expliziet sagen, dass sie mehrere Prozessoren nutzen können

    konsultiere doch einfach mal die mysql doku ;)
    aber iirc gibts keinen parameter für die anzahl der cpus...
    du kannst / sollst aber gewisse andere parameter der anzahl deiner prozessoren anpassen... infos im manual

    • Gibt es ein Tool, welches die Auslastung von CPUs auf einem Unix-Server anzeigt

    ich bin zwar kein linux guru... aber "top" oder "w" haben mir bisher gereicht...

    weiterhin schönen abend...

    --
    wer braucht schon großbuchstaben?
    sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
    1. Hallo,

      waren die wartenden queries ebenfals reading-queries, oder wollten die was schreiben? im writing-queries fall, ist logisch dass die tabelle für read-only gelockt wird. (ich mag mich allerdings auch irren)

      Die anderen Queries waren auch nur Select-Statements

      Gruß
      Andi