AS/400 SQL-INSERT-Benchmarks

Aus Knowledgebase
Version vom 24. Januar 2017, 23:18 Uhr von PoC (Diskussion | Beiträge) (Optik)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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.