AS/400 SQL-INSERT-Benchmarks

Aus Knowledgebase
Zur Navigation springen Zur Suche springen

Um eine ungefähre Vorstellung der relativen Geschwindigkeiten verschiedener Maschinen zueinander zu erhalten, habe ich eine Tabelle definiert (DDS-Quellcode):

      A* Record Format Name ********************************************
      A          R STROMTBL
      A* Datenfelder ***************************************************
      A            PORT           2B  B      CHECK(ME)
      A                                      COLHDG('Port')
      A            WATT           5B  B      CHECK(ME)
      A                                      COLHDG('Watt')
      A            STAMP           Z  B      COLHDG('Stamp')
      A* Indexfeld *****************************************************
      A          K STAMP

Die Tabelle habe ich dann übersetzt in ein PF:

crtpf (stromtbl) srcfile(tbldescr) maxmbrs(*nomax) size(*nomax) accpthsiz(*max4GB)

Ich habe auf einer Linuxinstallation eine ähnliche Tabelle mit entsprechenden Werten drin. Von dort habe ich 10.000 Zeilen ausgelesen und per ODBC an die jeweiligen Maschine verfüttert.

time mysql -B -N -e "SELECT port, watt, stamp FROM strom LIMIT 10000" stromdb \
    |sed -E -f mysql_ts2db2_ts \
    |sed -E -e "s/^([0-9])\t([0-9]+)\t([0-9\.-]+)$/INSERT INTO STROMARCH\/STROMARCH VALUES (\1, \2, '\3')/" \
    |isql -b as400a

Das Sedscript mysql_ts2db2_ts baut lediglich den MySQL-Timestamp in einen für DB2/400 gültigen um. Da es sich um extended Regex handelt, muss sed mit -E aufgerufen werden.

s/([0-9]{4}-[0-9]{2}-[0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})/\1-\2.\3.\4.000000/g

Die Maschinen waren frisch gebootet. Danach habe ich nur die Tabellen erstellt und die Inserts abgesetzt. Auf den Maschinen sind keine Optimierungen der SBS-Pools durchgeführt worden. Alle Maschinen haben den gleichen bzw. einen sehr ähnlichen Stand an installierten LICPGMs und konfigurierten Spoolern und Subsystemen/Jobs. Während der Inserts habe ich keine weiteren Aktivitäten durchgeführt. Alle Maschinen sind via LAN (10 MBit/s Ethernet bzw. 16 MBit/s Token Ring) angebunden.

Benchmarkergebnisse
Maschinentyp OS/400 Disks RAM Zeit
9406-S20 (PFC 2161) V4R4 8× 6607 (RAID5) 512 MB 133 s
9401-150 (PFC 2270) V4R5 4× 6607 192 MB 295 s
9401-150 (PFC 2270) V4R5 3× 6606 128 MB 314 s
Pub400.com, außer Konkurrenz[1] V7R2 Unbekannt[2] Unbekannt 1080 s[3]

Interessanterweise ist selbst die langsamste Maschine nicht spürbar langsamer geworden, während die Inserts liefen (zu einem anderen Zeitpunkt).

Fußnoten

  1. ↑ Es handelt sich um Holger Scherers öffentlich zugängliches System pub400.com.
  2. ↑ Die Installation läuft als virtuelle Partition auf Hardware, Ressourcenallokation ist dynamisch.
  3. ↑ Hier fließen zusätzlich die via Internet vorhandenen deutlicheren Latenzen mit ein, ca. 36 ms mit 64-Byte-Paketen.