PythonQ 240-8XX Manual de usuario Pagina 362

  • Descarga
  • Añadir a mis manuales
  • Imprimir
  • Pagina
    / 768
  • Tabla de contenidos
  • MARCADORES
  • Valorado. / 5. Basado en revisión del cliente
Vista de pagina 361
Kapitel 6: MySQL-Optimierung 341
Sie onnen die Einf¨ugegeschwindigkeit steigern, indem Sie Tabellen sperren:
mysql> LOCK TABLES a WRITE;
mysql> INSERT INTO a VALUES (1,23),(2,34),(4,33);
mysql> INSERT INTO a VALUES (8,26),(6,29);
mysql> UNLOCK TABLES;
Der haupts¨achliche Geschwindigkeitsunterschied liegt darin, dass der Index-Puffer nur
einmal auf Platte zur¨uck geschrieben wird, nachdem alle INSERT-Statements fertig
sind. Normalerweise w¨urden die Index-Puffer so oft zur¨uck geschrieben wie es INSERT-
Statements gibt. Das Sperren wird nicht ben¨otigt, wenn Sie alle Zeilen mit einem
einzigen Statement einf¨ugen onnen.
Durch das Sperren wird auch die Gesamtzeit von Tests auf mehrere Verbindungen
gesenkt, aber die maximale Wartezeit f¨ur einige Threads wird erh¨oht (weil sie auf
Sperren warten). Beispiel:
Thread 1 uhrt 1000 Einf¨ugevorg¨ange durch.
Thread 2, 3 und 4 ugen 1 Einf¨ugevorgang durch.
Thread 5 uhrt 1000 Einf¨ugevorg¨ange durch.
Wenn Sie kein Sperren benutzen, sind die Threads 2, 3 und 4 vor 1 und 5 fertig. Wenn
Sie Sperren benutzen, sind 2, 3 und 4 wahrscheinlich nicht vor 1 oder 5 fertig, aber die
Gesamtzeit sollte etwa 40% geringer sein.
Weil INSERT-, UPDATE- und DELETE-Operationen in MySQL sehr schnell sind, erhalten
Sie bessere Performance ¨uber alles, wenn Sie um alles herum Sperren hinzuf¨ugen, was
mehr als etwa 5 Einf¨ugeoperationen oder Aktualisierungen (Updates) in einer Zeile
durchf¨uhrt. Wenn Sie sehr viele Einf¨ugeoperationen in einer Zeile durchf¨uhren, onnen
Sie ein LOCK TABLES machen, gefolgt von einem gelegentlichen UNLOCK TABLES (etwa
alle 1.000 Zeilen), um anderen Threads zu gestatten, auf die Tabelle zuzugreifen. Das
Ergebnis are ebenfalls ein netter Geschwindigkeitsgewinn.
Nat¨urlich ist LOAD DATA INFILE zum Einladen von Daten viel schneller.
Um sowohl f¨ur LOAD DATA INFILE als auch f¨ur INSERT mehr Geschwindigkeit zu erzielen,
vergr¨oßern Sie den Schl¨ussel-Puffer. Siehe Abschnitt 6.5.2 [Server parameters], Seite 355.
6.2.9 Geschwindigkeit von UPDATE-Anfragen
Update-Anfragen werden wie eine SELECT-Anfrage optimiert, mit dem zus¨atzlichen Over-
head eines Schreibvorgangs. Die Geschwindigkeit des Schreibvorgangs angt von der Gr¨oße
der Daten und von der Anzahl der Indexe, die aktualisiert werden, ab. Indexe, die nicht
ge¨andert werden, werden nicht aktualisiert.
Eine weitere oglichkeit, Aktualisierungen (Updates) schnell zu machen, ist, sie zu
verz¨ogern und dann sp¨ater viele Aktualisierungen hintereinander zu machen. Viele
Aktualisierungen hintereinander sind viel schneller als nur eine zugleich, wenn Sie die
Tabelle sperren.
Beachten Sie, dass die Aktualisierung eines Datensatzes bei dynamischem Datensatzformat
dazu uhren kann, dass der Datensatz aufgespalten wird. Wenn Sie das oft durchf¨uhren,
ist es daher sehr wichtig, gelegentlich OPTIMIZE TABLE auszuf¨uhren. Siehe Abschnitt 5.5.1
[OPTIMIZE TABLE], Seite 240.
Vista de pagina 361
1 2 ... 357 358 359 360 361 362 363 364 365 366 367 ... 767 768

Comentarios a estos manuales

Sin comentarios