Mailinglisten-Archive |
> ich stehe vor folgendem Problem: Für eine Testdatenbank ist es > notwendig, ca. 18 Mio. Adress-Datensätze in eine MySQL-DB zu schreiben. > Diese Datensätze werden über PHP auf Zufallsbasis erzeugt. Da dies ja > schon eine Weile dauert, habe ich erstmal folgende Massnahmen getroffen: > > 1.) Die Connection persistent geöffnet. > 2.) Die Tables via "LOCK TABLES xyz WRITE" gelockt (habe danach sofort > die INSERTS gefahren). > 3.) Da später auf dem Nachnamenfeld Selektionen rüberlaufen, habe ich > dieses Feld indiziert. Um dem daraus resultierenden Performanceeinbruch > beim INSERT entgegenzuwirken, habe ich das DELAY_KEY_WRITE auf "1" gesetzt. > > Nun musste ich feststellen, dass dies ohne Wirkung blieb. Zum Vergleich: > Vor der Indizierung konnte ich ca. 4.300 Datensätze/Sekunde einfügen. > Nach der Indizierung und mit eingeschaltetem DELAY_KEY_WRITE nur noch > 3.400 DS/Sekunde. Sobald ich das Bit wieder auf "0" stelle, macht sich > das in keinster Weise bemerkbar. ALTER TABLE tbl_name DISABLE KEYS und ALTER TABLE tbl_name ENABLE KEYS außerdem wäre es vielleicht schneller wenn das php-script ein file erzeugt und das file dann per LOAD DATA INFILE in die DB lädst das alles und noch viel mehr: http://www.mysql.com/doc/en/Insert_speed.html -- Sebastian Mendel www.sebastianmendel.de www.tekkno4u.de www.nofetish.com -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive