PythonQ 240-8XX Manual de usuario Pagina 361

  • Descarga
  • Añadir a mis manuales
  • Imprimir
  • Pagina
    / 768
  • Tabla de contenidos
  • MARCADORES
  • Valorado. / 5. Basado en revisión del cliente
Vista de pagina 360
340 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
Schließen: (1)
Wobei die Zahlen in etwa proportional zur Gesamtzeit sind. Diese Berechnung zieht den
anf¨anglichen Overhead, um Tabellen zu ¨offnen, nicht in Betracht (was einmal ur jede
gleichzeitig laufende Anfrage gemacht wird).
Die Gr¨oße der Tabelle verlangsamt das Einf¨ugen von Indexen um N log N (B-B¨aume).
Einige oglichkeiten, die Geschwindigkeit von Einf¨ugeoperationen zu steigern:
Wenn Sie viele Zeilen vom selben Client aus zur gleichen Zeit einf¨ugen, benutzen Sie
mehrfache Werte (Liste) im INSERT-Statements. Das geht viel schneller (in manchen
alle um Faktoren) als separate INSERT-Statements zu benutzen. Tunen Sie die
myisam_bulk_insert_tree_size-Variable, um das sogar noch zu beschleunigen.
Siehe Abschnitt 5.5.5.4 [SHOW VARIABLES], Seite 249.
Wenn Sie viele Zeilen von unterschiedlichen Clients aus einf¨ugen, onnen Sie mehr
Geschwindigkeit erzielen, wenn Sie das INSERT DELAYED-Statement benutzen. Siehe
Abschnitt 7.4.3 [INSERT], Seite 442.
Beachten Sie, dass Sie mit MyISAM-Tab ellen Zeilen zur selben Zeit einf¨ugen onnen, zu
der SELECTs laufen, wenn es keine gel¨oschten Zeilen in den Tabellen gibt.
Wenn Daten in eine Tabelle aus einer Textdatei eingeladen werden, benutzen Sie LOAD
DATA INFILE. Das ist ¨ublicherweise 20 mal schneller als viele INSERT-Statements zu
benutzen. Siehe Abschnitt 7.4.9 [LOAD DATA], Seite 448.
Mit etwas zus¨atzlicher M¨uhe ist es oglich, LOAD DATA INFILE noch schneller laufen
zu lassen, wenn die Tabelle viele Indexe hat. Gehen Sie wie folgt vor:
1. Optional erzeugen Sie die Tabelle mit CREATE TABLE, zum Beispiel mit mysql oder
¨uber die Perl-DBI.
2. F¨uhren Sie ein FLUSH TABLES-Statement oder den Shell-Befehl mysqladmin flush-
tables aus.
3. Geben Sie myisamchk --keys-used=0 -rq /pfad/zu/db/tabelle ein. Dadurch
entfernen Sie die Benutzung aller Indexe von der Tabelle.
4. F¨ugen Sie Daten in die Tabelle mit LOAD DATA INFILE ein. Dadurch werden keine
Indexe aktualisiert, was deswegen sehr schnell auft.
5. Wenn Sie in Zukunft nur noch aus der Tabelle lesen, benutzen Sie myisampack,
um sie kleiner zu machen. Siehe Abschnitt 8.1.2.3 [Compressed format], Seite 488.
6. Erzeugen Sie die Indexe mit myisamchk -r -q /pfad/zu/db/tabelle neu.
Hierdurch wird der Index-Baum im Speicher erzeugt, bevor er auf die Platte
geschrieben wird, was viel schneller ist, weil viele Suchvorg¨ange auf Platte
vermieden werden. Der sich ergebende Index-Baum ist ausserdem perfekt
ausbalanciert.
7. F¨uhren Sie ein FLUSH TABLES-Statement oder den Shell-Befehl mysqladmin flush-
tables aus.
Diese Prozedur wird in Zukunft in LOAD DATA INFILE eingebaut werden.
Ab MySQL 4.0 onnen Sie auch ALTER TABLE tabelle DISABLE KEYS anstelle von
myisamchk --keys-used=0 -rq /pfad/zu/db/tabelle und ALTER TABLE tabelle
ENABLE KEYS anstelle von myisamchk -r -q /pfad/zu/db/tabelle benutzen. Damit
onnen Sie auch die FLUSH TABLES-Schritte ¨uberspringen.
Vista de pagina 360
1 2 ... 356 357 358 359 360 361 362 363 364 365 366 ... 767 768

Comentarios a estos manuales

Sin comentarios