PythonQ 240-8XX Bedienungsanleitung Seite 381

  • Herunterladen
  • Zu meinen Handbüchern hinzufügen
  • Drucken
  • Seite
    / 768
  • Inhaltsverzeichnis
  • LESEZEICHEN
  • Bewertet. / 5. Basierend auf Kundenbewertungen
Seitenansicht 380
360 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
Den meisten Sortier-Anfragen werden ein Sortierpuffer und 0 bis 2 tempor¨are Dateien
zugewiesen, abh¨angig von der Gr¨oße der Ergebnismenge. Siehe Abschnitt A.4.4 [Tem-
porary files], Seite 638.
Fast alles Parsen und Berechnen wird in einem lokalen Speicherb ereich durchgef¨uhrt.
F¨ur kleine Sachen wird kein Speicher-Overhead ben¨otigt, und das normale, langsame
Zuweisen und Freimachen von Speicher wird vermieden. Speicher wird nur f¨ur uner-
wartet lange Zeichenketten zugewiesen (das wird mit malloc() und free() gemacht).
Jede Index-Datei wird einmal ge¨offnet. Die Daten-Datei wird einmal f¨ur jeden
gleichzeitig laufenden Thread ge¨offnet. F¨ur jeden gleichzeitigen Thread wird eine
Tabellenstruktur, Spaltenstrukturen f¨ur jede Spalte und ein Puffer der Gr¨oße 3 *
n zugewiesen, wobei n die maximale Zeilenl¨ange ist (BLOB-Spalten werden nicht
mitgerechnet). Eine BLOB-Spalte benutzt 5 bis 8 Bytes plus die ange der BLOB-Daten.
Der ISAM- / MyISAM-Tabellen-Handler benutzt einen zus¨atzlichen Zeilenpuffer f¨ur
internen Gebrauch.
Bei jeder Tabelle, die BLOB-Spalten enth¨alt, wird ein Puffer dynamisch vergr¨oßert, um
gr¨oßere BLOB-Werte einzulesen. Wenn Sie eine Tabelle scannen, wird ein Puffer so Groß
wie der gr¨oßte BLOB-Wert zugewiesen.
Tabellen-Handler ur alle Tabellen in Benutzung werden in einem Cache gespeichert
und als FIFO verwaltet. Normalerweise hat der Cache 64 Eintr¨age. Wenn eine Tabelle
gleichzeitig von zwei laufenden Threads benutzt wurde, enth¨alt der Cache zwei Eintr¨age
f¨ur die Tabelle. Siehe Abschnitt 6.4.6 [Open tables], Seite 353.
Ein mysqladmin flush-tables-Befehl schließt alle Tabellen, die nicht in Benutzung
sind, und kennzeichnet alle Tabellen in Benutzung als zu schließen, sobald der aktuell
ausf¨uhrende Thread fertig ist. Das setzt effektiv den meisten benutzten Speicher frei.
ps und andere System-Status-Programme berichten vielleicht, dass mysqld viel Arbeitsspe-
icher benutzt. Das kann durch Thread-Stacks auf verschiedenen Speicheradressen verursacht
werden. ps der Solaris-Version zum Beispiel ahlt den unbenutzten Speicher zwischen Stacks
zum benutzten Speicher hinzu. Das onnen Sie best¨atigen, wenn Sie den verf¨ugbaren Swap
mit swap -s ¨uberpr¨ufen. Wir haben mysqld mit kommerziellen Memory-Leak-Detektoren
getestet, daher sollte es keine Memory-Leaks geben.
6.5.5 Wie MySQL DNS benutzt
Wenn sich ein neuer Thread mit mysqld verbindet, erzeugt mysqld einen neuen Thread, um
die Anfrage zu handhaben. Dieser Thread pr¨uft zuerst, ob der Hostname im Hostnamen-
Cache ist. Falls nicht, ruft der Thread gethostbyaddr_r() und gethostbyname_r() auf,
um den Hostname aufzul¨osen.
Wenn das Betriebssystem die oben genannten Thread-sicheren Aufrufe nicht unterst¨utzt,
sperrt der Thread ein Mutex und ruft statt dessen gethostbyaddr() und gethostbyname()
auf. Beachten Sie, dass in diesem Fall kein anderer Thread andere Hostnamen au߬osen kann,
die nicht im Hostnamen-Cache sind, bis der erste Thread fertig ist.
Sie onnen das DNS-Nachschlagen von Hostnamen (DNS-Lookup) abschalten, indem
Sie mysqld mit --skip-name-resolve starten. In diesem Fall onnen Sie jedoch in den
MySQL-Berechtigungstabellen nur IP-Nummern verwenden.
Seitenansicht 380
1 2 ... 376 377 378 379 380 381 382 383 384 385 386 ... 767 768

Kommentare zu diesen Handbüchern

Keine Kommentare