PythonQ 240-8XX Manual de usuario Pagina 380

  • Descarga
  • Añadir a mis manuales
  • Imprimir
  • Pagina
    / 768
  • Tabla de contenidos
  • MARCADORES
  • Valorado. / 5. Basado en revisión del cliente
Vista de pagina 379
Kapitel 6: MySQL-Optimierung 359
Standard-MySQL-Linux-Bin¨ardatei wird statisch gelinkt, um sie schneller und portierbarer
zu machen.
6.5.4 Wie MySQL Speicher benutzt
Die unten stehende Liste zeigt einige oglichkeiten, wie der mysqld-Server Speicher benutzt.
Wo es zutrifft, wird der Name der f¨ur die Speicherbenutzung relevanten Servervariablen
angegeben.
Der Schl¨ussel-Puffer (Variable key_buffer_size) wird von allen Threads geteilt. An-
dere Puffer, die vom Server benutzt werden, werden bei Bedarf zugewiesen. Siehe
Abschnitt 6.5.2 [Server parameters], Seite 355.
Jede Verbindung benutzt etwas Thread-spezifischen Platz: Einen Stack (Vorgabe 64
KB, Variable thread_stack), einen Verbindungspuffer (Variable net_buffer_length)
und a Ergebnispuffer (Variable net_buffer_length). Die Verbindungspuffer und
Ergebnispuffer werden bei Bedarf dynamisch bis zu max_allowed_packet vergr¨oßert.
Wenn eine Anfrage auft, wird auch eine Kopie der aktuellen Anfragezeichenkette
zugewiesen.
Alle Threads teilen sich denselben grundlegenden Speicher.
Nur die komprimierten ISAM- / MyISAM-Tabellen werden Speicher-gemappt. Das
liegt daran, dass der 32-Bit-Adressraum von 4 GB f¨ur die meisten großen Tabellen
nicht Groß genug ist. Wenn Systeme mit 64-Bit-Adressraum gebr¨auchlicher werden,
werden wir vielleicht eine allgemeine Unterst¨utzung f¨ur Speicher-Mapping hinzuf¨ugen.
Jeder Anfrage, die einen sequentiellen Scan ¨uber eine Tabelle durchf¨uhrt, wird ein
Lesepuffer zugewiesen (Variable record_buffer).
Wenn Zeilen in ’zuf¨alliger’ Reihenfolge gelesen werden (zum Beispiel nach einem Sortier-
vorgang), wird ein Zufalls-Lesepuffer zugewiesen, um Suchvorg¨ange auf Festplatte zu
vermeiden. (Variable record_rnd_buffer).
Alle Joins werden in einem Durchgang durchgef¨uhrt und die meisten Joins onnen
sogar ohne Benutzung einer tempor¨aren Tabelle durchgef¨uhrt werden. Die meisten
tempor¨aren Tabellen sind Speicher-basierende (HEAP-) Tabellen. Tempor¨are Tabellen
mit großer Datensatzl¨ange (berechnet als Summe aller Spaltenl¨angen) oder die BLOB-
Spalten enthalten, werden auf Festplatte gespeichert.
Ein Problem in MySQL-Versionen vor Version 3.23.2 ist, dass Sie den Fehler The
table tabelle is full erhalten, wenn die Gr¨oße der HEAP-Tabelle tmp_table_size
¨uberschreitet. In neueren Versionen wird dies so gehandhabt, dass die Speicher-
basierende (HEAP-) Tabelle bei Bedarf automatisch in eine Festplatten-basierende
Tabelle (MyISAM) umgewandelt wird. Um das Problem zu umgehen, onnen Sie die
Gr¨oße von tempor¨aren Tabellen durch Setzen der tmp_table_size-Option f¨ur mysqld
¨andern, oder durch Setzen der SQL-Option SQL_BIG_TABLES im Client-Programm.
Siehe Abschnitt 6.5.6 [SET OPTION], Seite 361. In MySQL-Version 3.20 war die
maximale Gr¨oße der tempor¨aren Tabelle record_buffer*16. Wenn Sie also diese
Version b enutzen, m¨ussen Sie den Wert von record_buffer herauf setzen. Sie onnen
mysqld auch mit der --big-tables-Option starten, um tempor¨are Tabellen immer
auf Festplatte zu speichern. Das wird jedoch die Geschwindigkeit vieler komplizierter
Anfragen beeinflussen.
Vista de pagina 379
1 2 ... 375 376 377 378 379 380 381 382 383 384 385 ... 767 768

Comentarios a estos manuales

Sin comentarios