Peter M.: MySQL: SELECTs und gleichzeitige INSERTs

Hallo,

wir haben hier 4 gr. Tabellen von 100MB bis 18GB mit Untertabellen.

Darin werden gleichzeitig einige Inserts gemacht und auch Selects.

Jetzt kommt es aber in unserer Webapplikation oft vor, dass Requests hängen bleiben wenn gleichzeitig Inserts und Selects auf diese Tabellen losgehen.

Kann es sein, dass die Tabellen beim Insert gesperrt werden, sodass keine Selects gemacht werden können?
Es sind natürlich auch einige Indices auf den Tabellen.

Wie könnte man dieses Problem umgehen?

Linux Debian
Mysql 5

lg
Peter

  1. Hello,

    dein Suchstichwort lautet Isolation. Inwiefern du woran drehen möchtest, kann ich dir schwer beantworten, dazu muss man den Kontext der Anwendung kennen.

    MfG
    Rouven

    --
    -------------------
    He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve
  2. Hallo,

    sorry, wegen meinem doppelten Posting 3 Std. später, aber ich dachte, dass es sich nun um etwas total Anderes handelt, daher hatte ich es so gemacht. Wird nicht wieder vorkommen, sorry nochmals.

    Also hier meine weitere Frage:

    wie kann ich gleichzeitig ein Insert in eine Tabelle machen, wenn ein SELECT darauf ausgeführt wird.

    Das SELECT dauert aber sehr, sehr lange, daher ist die Tabelle dem anschein nach für das insert gesperrt und ich muss so lange warten, bis das SELECT fertig ist.

    lg
    Peter

    1. Hallo Peter,

      Deine Angaben sind reichlich vage und wie Rouven bereits anmerkte, kann man Dir in Deinem Fall wenig mehr Hilfestellung geben, als ein paar Links zum Handbuch.

      wie kann ich gleichzeitig ein Insert in eine Tabelle machen, wenn ein SELECT darauf ausgeführt wird.

      Welche Storage Engine?

      Das SELECT dauert aber sehr, sehr lange, daher ist die Tabelle dem anschein nach für das insert gesperrt und ich muss so lange warten, bis das SELECT fertig ist.

      Das MySQL-Handbuch hat ein Kapitel Optimization, das Dich grundsätzlich interessieren sollte. Besonders empfehlenswert ist die Lektüre von

      Abschnitt 6.2 Optimizing SELECT and Other Statements und natürlich
      Abschnitt 6.3 Locking Issues, ganz speziell vielleicht
      Abschnitt 6.3.3 Concurrent Inserts.

      Vielleicht bringen Dich die Abschnitte 6.4 Optimizing Database Structure oder 6.5. Optimizing the MySQL Server weiter.

      Nein, mehr als diese generellen Tipps kann man bei Deinen Angaben nicht machen. DB-Tuning hängt unter anderem sogar von den vorhandenen Daten ab ...

      Freundliche Grüße

      Vinzenz