Kein Folientitel - SK Consulting Services GmbH

Werbung
(*)
IBM DB2 for z/OS
DB2 Version 9 - Übersicht
(DB2_V9_DBAnews.ppt)
(*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc.
Januar, 2010
1
DB2 Version 9 (DBA)
DB2 V9 – neue DBA Funktionalität
Index auf Ausdrücke
Universal Tablespace (UTS)
Clone-tables
XML-Tables ( eig. Kapitel )
Änderungen und Verbesserungen an Utilities
„autonomic computing“
„security“
ROLE & „trusted context“
Verbesserte DDL Konsistenz
Performance
Optimization Service Center (OSC)
Data Studio
Januar, 2010
2
DB2 Version 9 (DBA)
DB2 V9 – SQL Erweiterungen
INDEX on <expression>
CREATE TABLE employee ( id
lastname
firstname
salary
bonus
INTEGER NOT NULL,
VARCHAR(20) NOT NULL,
VARCHAR(20) NOT NULL,
DEC(15,2) NOT NULL,
FLOAT)
Folgender Index:
CREATE INDEX
(
SELECT
WHERE
upper_empname ON employee
UPPER(lastname, 'EN_US'),
UPPER(firstname, 'EN_US'), id )
id FROM
employee
bonus + salary > 100000 ;
CREATE INDEX total_compensation ON employee (salary + bonus)
Restriktionen:
• Jede „key-expression“ muss eine Referenz auf eine Tabellenspalte haben
• Alle Tabellenreferenzen müsse unqualifiziert angegeben sein
• Referenzierte Spalten können nicht vom Typ LOB, XML, DECFLOAT sein.
• Referenzierte Spalten können keine FIELDPROCs oder ein SECURITY LABEL enthalten.
• Eine „Key-expression“ darf folgendes NICHT enthalten: „subquery“, „aggregate function“, eine „not deterministic
function“, eine Funktion mit einer externen Aktion, eine „user-defined function“, eine Referenz auf eine Sequenz, eine
„host variable“, einen „parameter marker“ ein Spezialtregister, einen „CASE“-Ausdruck…. usw.
Januar, 2010
3
DB2 Version 9 (DBA)
DB2 V9 – Universal Tablespace
“Simple table spaces” können nicht mehr erzeugt werden
Der “default table space” ist nun der “segmented” TS
UTS ist eine Hybride zwischen „partitioned“ und „segmented“ Tablespace
•
•
•
•
•
Inkompatibel mit MEMBER CLUSTER
Verbessertes „space management“
Unterstützung von Massen-Deletes / TRUNCATE
Immer noch EINE Tabelle pro Tablespace
 Kann “Range Based partitioning (as before: PBR)” oder
 “Partitioned By Growth (PBG)” unterstützen
DROP / CREATE ist erforderlich, um bestehende “page sets” auf UTS zu migrieren
Typ-1: „Partitioned-by-growth“ − immer UTS (PBG)
• CREATE TABLESPACE MAXPARTITIONS integer
• CREATE TABLE PARTITIONED BY SIZE EVERY integer G
• Bei einem „Single Table Tablespace“ und Universal Tablespace (UTS) möglich (max. 128 TB)

„default segsize“ = 4,

max. Grösse für die einzelne Partition = 4GB und

die max. Anzahl Partitions = 256 ;

dies begrenzt die „default size“ einer Tabelle auf 1 TB
Typ-2: „Partitioned-by-range“ (PBR)
• „Mass Delete“ oder Truncate Table, z.B. Lösung für das “Rotate Partition“ Problem
CREATE TABLESPACE SEGSIZE integer NUMPARTS integer
Januar, 2010
4
DB2 Version 9 (DBA)
DB2 V9 – Universal Tablespace
Januar, 2010
5
DB2 Version 9 (DBA)
DB2 V9 – Universal Tablespace (Beispiele)
CREATE LARGE TABLESPACE suts001 IN dbuts001
NUMPARTS
2
SEGSIZE
16
…
CREATE TABLE tuts001
…
PARTITON BY RANGE
( PNR
ASC)
( PARTITION 1 ENDING ( 20 )
, PARTITION 2 ENDING ( 40 ) )
CREATE LARGE TABLESPACE suts001 IN dbuts001
MAXPARTITIONS 2
SEGSIZE
16
…
CREATE TABLE tuts001
…
PBR
PBG
Restriktionen für „universal tablespace“
•
nur EINE einzige Tabelle - Drop ist nicht erlaubt!
•
es gibt keinen „migration path“ - Drop und „recreate“ erforderlich
•
KEIN „Member Cluster“
•
Reduzieren der “#parts” ist nicht möglich – speziell: Maxpartitions
Januar, 2010
6
DB2 Version 9 (DBA)
DB2 V9 – CLONE TABLE
Annähernd alle Utilities sind “online” nutzbar, nicht aber Load Replace.
Alias oder View hilft, um zwischen zwei identischen Tabelle hin-und her zu schalten.
Auswirkungen hat ein DROP und “recreate” des ALIAS bzw. des VIEW
Entspricht einem ONLINE LOAD REPLACE
Kopie der bestehenden TABLE
•
•
•
Alle INDEXES werden geclont
TABLE und INDEX Daten werden
nicht bewegt
Die Datasets werden getauscht
(wie im Fastswitch)
Nur für Single Table Tablespace
(muss ein UTS sein)
Keine RI, AFTER TRIGGER und
MQTs
Utilities (ausser RUNSTATS) können
gegen den CLONE laufen
Januar, 2010
7
DB2 Version 9 (DBA)
DB2 V9 – CLONE TABLE
DDL: Alter Table bbb Add Clone ccc
•
•
•
•
•
•
•
•
•
•
•
Generiert einen neuen Eintrag in SYSTABLES mit Typ „C“
Die Spaltennamen bleiben identisch
Add Column ist nicht mehr möglich (Alter statement)
Indexes, LOBs, XMLs sind identisch
CREATE eines neuen Index ist erlaubt
Es existieren dieselben “check constraints“
ADD / DROP “constraint” ist nicht mehr möglich (Alter statement)
Identische “Before triggers“
CREATE neuer „Before Trigger” ist erlaubt
KEIN “cloning“ für



Views : kann über bbb and ccc definiert werden
Identity: gleiche Definition für “Base” und “Clone”
Authorization: Kann unterschiedlich für bbb and ccc sein
Nur Ein Eintrag in der Tabelle SYSTABLESPACE


hlq.DSNDBC.database.tsp.I0002.A001
Neue Spalte „Instance”: Inhalt 1oder 2
NEUE DDL
•
•
•
•
•
Januar, 2010
EXCHANGE: Schaltet zwischen „Base“ und „Clone“ Table um
ist in der SYSCOPY registriert: Ictype=A(lter) und Stype=E(xchange)
Recover vor den letzten Exchange ist nicht möglich
Alter Table bbb Drop Clone: Drop Table ccc ist nnicht erlaubt
Alter Tablespace / Index / Table: ist nicht mehr erlaubt
8
DB2 Version 9 (DBA)
DB2 V9 – CLONE TABLE
Utilities / Commands
•
TABLE ist syntaktisch erlaubt: entweder „Base“ oder „Clone“; z.B. LOAD REPLACE
INTO ccc
•
TABLE ist syntaktisch NICHT erlaubt: neues Schlüsselwort CLONE bei RECOVER
database.tsp CLONE bzw. START/STOP command ... CLONE
•
RUNSTATS und “Modify Statistics” ist eine Ausnahme:
 Annahme: Statistiken sind gleich für “Base” und “Clone”
 Utility ist nicht möglich auf der „Clone“ table (DSNU1457I)
• „Base“ und „Clone“ können niemals gemeinsam in EINEM “control statement“
angegeben werden
Restriktionen: Sqlcode -148
•
“Base table” muss sich in einem
Universal Tablespace befinden
•
Pagesets müssen “DB2 managed” sein
•
die “Base table” kann keine Catalog Table, MQT
oder in ein RI-Konstrukt involvierte Tabelle sein
Januar, 2010
9
DB2 Version 9 (DBA)
DB2 V9 – DB2 Utility Verbesserungen
CPU Reduzierung in LOAD und REORG
Parallel REORG bei Partitioned Tablespaces
•
UNLOAD und LOAD der einzelnen Partitions war vorher seriell
•
Laufzeit und CPU Verbesserungen
LOB File Reference Unterstützung - UNLOAD und LOAD
TEMPLATE Switching
•
z.B. Schreiben von Image Copy auf TAPE oder DASD je nach Grösse
ONLINE CHECK DATA - shadow
ONLINE CHECK LOB - shadow
ONLINE REBUILD INDEX – in place
ONLINE REORG ohne BUILD2 Phase - shadow
REORG SHRLEVEL REFERENCE für LOB Tablespaces
Utilities: CPU Verbesserungen
• 10 bis 20% für Image COPY, RECOVER INDEX
• 5 bis 30% für LOAD, REORG, REBUILD INDEX
• 20 bis 60% für CHECK INDEX
• 30% für LOAD PARTITION
• 30 bis 40% für RUNSTATS INDEX
• 40 bis 50% für REORG INDEX
• Bis zu70% für LOAD REPLACE PARTITION mit “dummy input“
Januar, 2010
10
DB2 Version 9 (DBA)
DB2 V9 – DB2 Utility Verbesserungen
RECOVER
RESTOREBEFORE ermöglicht es , eine RBA / LRSN anzugeben, die Db2 veranlasst, kein Image Copy
aus SYSCOPY zu verwenden, das eine höhere START_RBA aufweist, als den angegebenen Wert.
Das REOVEr Utility
wird also einen älteren
“full image copy” als
Recoverybasis für ein
Objekt verwenden und alle
folgenden “incremental
image copies VOR der
angegebenen RBA dazu
mischen. Dann werden die
Log-Sätze angefügt, um das
Objekt auf den aktuellsten
Zeitpunkt, oder auch
irgendeinen beabsichtigten
“point in time” zurückzusetzen.
Januar, 2010
11
DB2 Version 9 (DBA)
DB2 V9 – Index - Performance
Neue Index Grössen
• Bufferpool 8K, 16K, 32K
• Compression für 8K und 16K möglich
• Online ALTER für Bufferpool und Compression
Autonomic Index Page Split
• Index split passiert wenn 50% der
Index Page voll sind
• Problem bei sequentiellen INSERTs
• Neuer Algorithmus für sequential
und random INSERTs
- 4K gut für „random“ INSERTs
- > 4K gut für sequentielle INSERTs
Januar, 2010
12
DB2 Version 9 (DBA)
DB2 V9 – Dynamic Index ANDing für Star Joins
. .
AND
AND
AND
AND
AND
.
(
(
(
(
(
DP.C5
DP.C3
D2.C1
S1.C7
DT.C9
= 0 )
<= 194744 )
= 135 )
BETWEEN 'H' AND 'N' )
BETWEEN 50 AND 60 )
Typischerweise existieren viele Indizes, bestehend
aus einer einzelnen Spalte, die möglichst jede
Kombination von Filterprädikaten unterstützen
sollen.
Das „Filtering” kommt von mehreren “dimensions“
Wenig abhängig von perfekten Statistiken!!
Januar, 2010
13
DB2 Version 9 (DBA)
DB2 V9 – Dynamic Index ANDing
Filtering dimensions accessed
in parallel
Join each dimension table
with fact table through index
independently
Build RID lists
As filtering efficiency might
not be known until runtime,
the runtime optimizer may
terminate parallel stream(s)
that happen to provide poor
filtering.
Januar, 2010
Perform RID sort and RID
merge (ANDing) of the RID
lists
Final RID list used to retrieve
data from fact table and join
back to dimensions
14
DB2 Version 9 (DBA)
DB2 V9 – LOB - Performance
SHRLEVEL REFERENCE REORG LOB
•
Freier Platz kann wieder gebraucht werden
Eliminierung von LOB locks
Neue Technik um LOBs zu lesen
•
•
•
FETCH WITH CONTINUE
FETCH CURRENT CONTINUE
Für BLOBs, CLOBs, DBCLOBs und XML
Network Flow Optimierung durch Progressive Locator
Online Check LOB
UNLOAD/LOAD LOBs > 32K
Januar, 2010
15
DB2 Version 9 (DBA)
DB2 V9 – LOB - Performance
Redesign des LOB Locking Algorithmus
V8:
- S-LOB Lock temporär für „space search” während der LOB Allokation
- bei LOB Deallokation bis zum COMMIT
- bei LOB “read” bis zum COMMIT – sogar bei UR Readers!
- X-LOB Lock für LOB Allokation bis zum COMMIT
V9:
- No LOB Locks
* für „space search” während der LOB Deallokation
* für non-UR Readers (abhängig vom “base row locking”)
- S-LOB Lock
* bei UR Readers, um
festzustellen, ob das
LOB vollständig ist (kurz)
- X-LOB Lock temporär bei
LOB Allokation
- Freigabe unmittelbar nachdem
die Allokation vollständig ist
- “Lock escalation” kann
nicht mehr erfolgen…
- Neues “locking protocol-3”
in NFM erforderlich
Januar, 2010
16
DB2 Version 9 (DBA)
DB2 V9 – RLF Verbesserungen
•
DB2 ermöglicht die Beschränkung von Ressourcen für “dynamic SQL” über neue Kriterien
•
Middleware Server diese Informationen nutzen
•
CLI/JDBC Client Informationen können über API Einstellungen prüfen: Userid, Workstation
und Applikationsname.
•
Neue RLF Spalten

RLFEUID – User-id

RLFEUAN – Applisationsname

RLFEUWN – Workstation Name

RLFIP – Requesters IP Addresse

RLFFUNC – kontrolliert den “reactive” bzw. Den “predictive” Governor
Beispiele von Query-Limits
Januar, 2010
17
DB2 Version 9 (DBA)
DB2 V9 – REOPT Verbesserungen
V8
REOPT BIND/REBIND parameter
Dynamic SQL: NONE, ONCE und ALWAYS
Static SQL: NONE, ALWAYS
V9
REOPT Verbesserungen
Automatische Reoptimierung, wenn sich die Filter der Prädikate dramatisch ändern
für “cached dynamic SQL” mit Parameter Markers
Reoptimiierung am Anfang und Überwachung der “runtime” Werte für Parameter
Markers
Neuer REOPT Parameter: AUTO
zPARM:
REOPTEXT=YES (default = NO)
Januar, 2010
18
DB2 Version 9 (DBA)
DB2 V9 – Query PLAN Stability
Functional Overview
•
Was steht im Katalog?
 SYSPACKAGE reflektiert das „current copy“
 SYSPACKDEP reflektiert dependencies of all copies
 der Rest des Katalogs (SYSPKSYSTEM ...) reflektiert die Metadaten aller Kopien
•
SPT01 erfordert ein Mehrfaches an Speicher
 es gibt ein APAR zum Komprimieren der SPT01
•
Invalidierung und Auto Bind sind erforderlich
 jede Kopie wird für sich auf INVALID gesetzt
 Keine Unterstützung für Trigger und “stored procedure” Packages bis jetzt –SPÄTER…
 Keine Unterstützung für DBRMs die direkt in einem PLAN gebunden sind
Query Plan Stability – PLANMGMT = BASIC
• Enthält bis zu 2 Kopien eines Package
 „Current“ und „current -1“(„previous“)
• Bei jedem REBIND
 Wird die “previous copy” verworfen
 die “Current copy” wird zur “previous copy”
 Das neue BIND-Ergebnis wird zum “current copy”
 Kann dazu führen, dass Packages von alten Releases endgültig gelöscht werden
•
REBIND ... SWITCH (PREVIOUS)
 schaltet zwischen “current” und “previous copy” hin und her
 bietet eine Möglichkeit, um ein “fallback” auf die letzte Kopie durchzuführen
Januar, 2010
19
DB2 Version 9 (DBA)
DB2 V9 – Query PLAN Stability
Query Plan Stability PLANMGMT=EXTENDED
•
enthält bis zu 3 Kopien eines Package

„Current“, „Previous“ und „Original“
• Bei jedem REBIND
 Wird die “previous copy” verworfen
 Gibt es keine “Originalkopie”, so wird die “current copy” zur Originalkopie
 die “Current copy” wird zur “previous copy”
 Das neue BIND-Ergebnis wird zum “current copy”
• Die “Original Copy” ist die Kopie, die von Anfang an existiert
 einmal gespeichert, niemals überschrieben
 kann auch ein V7/V8 Package sein
•
REBIND ... SWITCH (PREVIOUS)
 schaltet zwischen “current” und “previous copy” hin und her
•
REBIND ... SWITCH (ORIGINAL)
 “Current copy” wird zur “previous” und “original copy” wird zur “current” KOPIE
 bietet eine Möglichkeit, um ein “fallback” auf die älteste Kopie durchzuführen
Januar, 2010
20
DB2 Version 9 (DBA)
DB2 V9 – INSERT Performance
CREATE TABLE ... APPEND YES
INSERT am Ende der Tabelle
DB2 ignoriert die clustering Sequenz - Bei SQL INSERT und ONLINE LOAD
Table kann schnell wachsen - FREESPACE und PCTFREE werden nicht beachtet
Wenn die „clustering sequenz“ nicht benötigt wird - Clustering kann über REORG wieder
erreicht werden
Für kritischen Workload mit hohen INSERT Raten
DB2 V9 – VARCHAR - Performance
Reordered Row Format (RRF) vs Basic Row Format (BRF) zur direkten Adressierung (REORG)
CREATE TABLE tbl (
c1
, c2
, c3
, c4
integer
NOT NULL
Varchar(120) NOT NULL
char ( 10 ) NOT NULL
varchar (60 )
C1
C2
C3
C4
8000000A
0006 WILSON
ANDREW
0008 SAN JOSE
C1
C3
O2
O4
C2
C4
8000000A
ANDREW
12
18
WILSON
SAN JOSE
Januar, 2010
Basic row Format
2 byte Längenfeld
„reordered“ row Format
Offset auf C2 und C4
21
DB2 Version 9 (DBA)
DB2 V9 – Sicherheit
Roles
Network Trusted Contexts
Verbessertes „auditing“
Data Encryption
Secure Socket Layer(C/S)
Januar, 2010
22
DB2 Version 9 (DBA)
DB2 V9 – Database ROLEs
ROLE ist eine “virtuelle authid”
• Zugeordnet via TRUSTED CONTEXT
• Ermöglicht zusätzliche Rechte in einem
“trusted environment”
• Benutzung mit der bestehenden
primary AUTHID
Januar, 2010
CREATE ROLE PROD_DBA;
GRANT DBADM … TO PROD_DBA;
CREATE TRUSTED CONTEXT DBA1 …
DEFAULT ROLE PROD_DBA OWNER(ROLE);
23
DB2 Version 9 (DBA)
DB2 V9 – DDL Erweiterungen
RENAME <column>
ALTER TABLE tb1 RENAME COLUMN old_column_name TO new_column_name
Überlegungen: Plan/Package Invalidation
Restriktionen:
•
Catalog Table
•
Spalten, die in einem View, in einem Index on expression, in einem check constraint liegen
•
Field procedure auf der Spalte; valid/edit procedure auf der Tabelle
•
Tabelle mit „trigger definition“
•
MQT
RENAME <index>
ALTER TABLE tb1 RENAME INDEX old_index_name TO new_index_name
•
•
•
•
•
•
Januar, 2010
Der Qualifier wird vom ursprünglichen Index abgeleitet, die OBID bliebt erhalten
Überlegungen: Plan/Package/DSC Invalidation und die Plan Table Inhalte passen nicht mehr
Restriktionen:
Keine Catalog Indexes
Keine DGTT Indexes
keine Index on expression
24
DB2 Version 9 (DBA)
DB2 V9 – DDL Erweiterungen
Defaults und weitere Datentyp-Änderungen
ALTER TABLE tb1 ALTER c1 SET / DROP DEFAULT
NULL, USER, Constant, SESSION_USER ...
Neuer default: SESSION_USER
ALTER TABLE tb1 ALTER c1 SET DATATYPE LONG VARCHAR to VARCHAR
Neuer Spezialregister Wert, wenn SQL Daten ändert oder LOAD erfolgt
Ändern eines Schema über CATMAINT UPDATE
SCHEMA SWITCH(old_schema_name, new_schema_name)
Ändert Creator, Owner und das Schema der Datenbankobjekte, Pläne und Packages
Restriktion: Views, MQT, SQL Funktionen, Triggers, “check constraints”
OWNER FROM (owner_name) TO ROLE
Ändert die “ownership “ von Objekten von einem User aufe eine ROLE
Januar, 2010
25
DB2 Version 9 (DBA)
DB2 V9 – „Autonomic Computing“
Bufferpool Management durch WLM
Recovery einzelner Objekte von Plattensicherungen
Änderung des Early Code ohne IPL
BACKUP / RESTORE von Band
RECOVER auf Konsistenz Punkt
MODIFY RECOVERY
Automatische Definition von Datenbank und Tablespace
Automatischer Index Page Split
Schnellerer und automatisierter DB2 Restart
Automatische Suche des passenden Checkpoint
Januar, 2010
26
DB2 Version 9 (DBA)
DB2 V9 – Performance
•
CM








•
Januar, 2010
ohne Zusatzaufwand:
Utility CPU Reduktion
Logging Verbesserungen
Verbesserten „index page split“
Grössere prefetch, write &
preformat Einheiten
LOB Performance
DDF VSCR
Optimization Service Center, Opt.
Expert, & Data Studio
Geänderter „online REORG“




Verbesserter RUNSTATS
Optimization Verbesserungen,
EDMPOOL VSCR
Mehr parallele Nutzung der zIIP
• NFM
 LOB lock Vermeidung
 „Reordered row format“
 Index: „grössere Pages“,
Kompression und
index on expression
I/O wait time tuning
 Buffer pool Tuning
 Kompression (Daten und Index)
 Synchroner „read prefetch“
 Tuning der I/O Konfiguration
o Sicherstellen von genug I/O Ressourcen
o Schnellere Geräte, wie z.B. DS8000 wo erforderlich
o Parallel Access Volume (PAV) gegen I/O „contentions“ mit hoher
IOSQ Zeit in RMF
o „I/O striping“
27
DB2 Version 9 (DBA)
DB2 V9 – Performance
•
Database Design Tuning

Index Änderungen: eine ganze Reihe neuer Optionen
o Nutzungsmöglichkeiten des Index CLUSTER, PARTITIONed usw.
o Clustering
o Kompression
o „Index on expression“, XML, …

Universal Tablespace
•
Januar, 2010
Indexverbesserungen
 Variable Länge vn „index keys“
 Index-only Zugriff für VARCHAR Daten
 Maximum “index key” 2000 Bytes
 Predikate mit nicht gleichen Typen sind “indexable” (CHAR(8) = CHAR(4), INT = DEC…)
Unterstützung von Datentypen, die nicht in Programmiersprachen wie JAVA, C++, C# unterstützt
werden…
 Backward Index Scan
 Partitioning separat vom „clustering“
 Data-partitioned secondary indexes (DPSI)
 Create index online während eines SELECT / INSERT
 Hinzufügen von Spalten zu einem Index
 Definieren von RANDOM “index keys” zum Vermeiden von “hot spots” mit mehreren
Prozessen, die “sequential keys” einfügen
28
DB2 Version 9 (DBA)
DB2 V9 – Performance
•
Unterschiede zwischen Daten- und Indexkomprimierung
Die „Index compression“: DSN1COMP
Januar, 2010
29
DB2 Version 9 (DBA)
DB2 V9 – „Optimization Center“
Januar, 2010
30
Herunterladen