@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 2/32
Oracle Core für Einsteiger:
Datenbank I/O
Martin Klier
Performing Databases GmbH
Mitterteich
#FiveWordTechHorrors „Storage comes from other department“
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 3/32
Referent
● Martin Klier
● Lösungsarchitekt und
Datenbankspezialist
● Fachliche Schwerpunkte:
– Performanceoptimierung / Tuning
– hochverfügbare Systeme
– Cluster und Replikation
● Linux seit 1997
● Oracle Database seit 2003
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 4/32
Referent
● Vorträge
● Kontakt: martin.klier@performing-db.com
● Weblog: http://www.usn-it.de
Regionalgruppen
April 2014
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 5/32
Unternehmen
● Spezialisten für Datenbanktechnik
– Konzeptberatung und Vergabekompetenz
– Architektur- und Systemplanung
– Lizenzierung
– Realisierung und Troubleshooting
● Kontakt
– Performing Databases GmbH
Wiesauer Straße 27
95666 Mitterteich
– Web: http://www.performing-databases.com
– Twitter: @PerformingDB
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 6/32
Ziele
● Funktionsweise des RDBMS (Überblick)
● Nutzung des Massenspeichers
● Automatic Storage Management (Überblick)
● Darstellung verschiedener IO-Typen
● Storage Sizing Basics
#NoHorror
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 7/32
Grundlagen
Funktion DBMS
#FiveWordTechHorrors „John knows everything about databases.“
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 8/32
TEMP
Architekturschema
(vereinfacht)
Listener
:1521
PMON
SGA
Session
Session
Buffer Cache
Shared Pool
Log Buffer
ARCnSMON
LGWR
DBWn
PGAs
CKPT
Session
Online
Redo
Logs
Archived
Redo
Logs
Tablespace Undo Tbs.
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 9/32
TEMP
Lesevorgang
Listener
:1521
SGA
PGAs
Session
Tablespace
Blöcke
Sort,
Hash,
Merge
Shared Pool
select ... ;
Buffer Cache
„Buffer“
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 10/32
TEMP
Daten-Änderung,
Database Writer
Listener
:1521
SGA
PGAs
Session
Tablespace
Blöcke
PMON
ARCnSMON
LGWRCKPT
Shared Pool
DBWn
Aber:
Database Writer
ist ein Lazy Writer!
Schreibvorgang auf HDD
kann extrem nachhängen!
Buffer Cache
update ...;
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 11/32
TEMP
Daten-Änderung
(nur Redo)
Listener
:1521
SGA
Buffer Cache
Log Buffer
PGAs
Session
Online
Redo
Logs
Archived
Redo
Logs
Tablespace
Blöcke
PMON
ARCnSMON DBWn
CKPT
commit;
LGWR
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 12/32
●
Bei Transaktion
●
Wenn Log Buffer voll
●
spätestens alle 3 Sekunden
●
(wenn private strand geleert wird)
Schreiben Redo Logs
Online
Redo
Logs
Archived
Redo
Logs
ARCn
Log Buffer
LGW1
LGW2
Paralleles Schreiben möglich
aber: Bug 19959089
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 13/32
TEMP
Daten-Änderung (komplett)
Listener
:1521
SGA
Buffer Cache
PGAs
Session
Tablespace Undo Tbs.
Blöcke
PMON
SMON
Shared Pool
update ...;
Log Buffer
Online
Redo
Logs
Archived
Redo
Logs
LGWR
ARCn
CKPT
DBWn
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 14/32
Einige IO-Kategorien
#FiveWordTechHorrors „Storage is fast. What's IOPS?“
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 15/32
Tablespace
DB file sequential read
Buffer Cache
6 Single Block Read IOs (=„random access“)
6 Memory Access Calls (CPU)
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 16/32
●
Verwendet für Einzelzugriffe (Index Block)
●
In äußerst geringem Maß auch bei Vollzugriffen möglich
●
1 I/O call liest1 Blockim TBS
●
Schreibt Buffer auf optimalen Platz im Cache
DB file sequential read
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 17/32
Tablespace
DB file scattered read
Buffer Cache
1 Multiblock Read IO
6 Memory Access Calls (CPU)
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 18/32
●
Verwendet für FULL SCANs (Table, Index …)
●
1 I/O call liestn zusammenhängede Blöckeim TBS
●
max(n) = DB_FILE_MULTIBLOCK_READ_COUNT
●
Schreibt „scattered“ im Buffer Cache
Ziel: Sparen von IO-Zeit
DB file scattered read
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 19/32
Tablespace
Direct Path Read
Prozess-PGA
1 Multiblock IO Call
1 Memory Access Call (CPU)
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 20/32
●
Verwendet für Massen-Lesevorgänge (Parallel Exec, Export..
●
1 I/O call liestn zusammenhängende Blocksim TBS
●
max(n) = DB_FILE_MULTIBLOCK_READ_COUNT
●
Schreibt zusammenhängend in die Prozess-PGA
Ziel: Sparen von IO- und CPU-Zeit
Direct Path Read
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 21/32
Oracle ASM
#FiveWordTechHorrors „No ASM diskgroups are online“
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 22/32
ASM
LUN 1 LUN 2 LUN 4 LUN 5
Location A Location B
LUN 3 LUN 6
Diskgroup A Diskgroup B
Oracle Datenbank
Instanz
ASM
Instanz
Verwaltung
Administration
Direktzugriffe
Online Redo Logs
Datafiles
Backups
...
Spiegelung
Spiegelung + Striping
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 23/32
●
„Automatic Storage Management“
(Automagic?)
●
Logical Volume Manager
●
Umgehung des Verwaltungslayers für Datenzugriffe
(analog Raw Device)
●
Multi-Master-fähig
●
Bedienung über SQL oder Command Line Tools
ASM
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 24/32
InMemory ist cool.
Cool reicht nicht.
UseCase muß passen.
#FiveWordTechHorrors „InMemory solves all performance problems“
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 25/32
Storage Sizing Basics
#FiveWordTechHorrors „Database fits into cache anyway“
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 26/32
●
Die Datenbank passt ohnehin in den Cache.
●
Wir vermeiden IO sowieso wo es geht.
●
Warum spiegeln - wir machen stündliche Archivelog-Backups
●
Vor zehn Jahren waren das noch Megabytes.
●
Ich mache das schon seit 20 Jahren:
Unsere Storage IST schnell genug für XYZ.
#StorageTechHorrors
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 27/32
TEMP
Daten-Änderung (komplett)
Listener
:1521
SGA
Buffer Cache
PGAs
Session
Tablespace Undo Tbs.
Blöcke
PMON
SMON
Shared Pool
update ...;
Log Buffer
Online
Redo
Logs
Archived
Redo
Logs
LGWR
ARCn
CKPT
DBWn
1 1
1
1
?
?
?
CF
1
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 28/32
–
Falsch
–1. Data Block - eins
2. Undo Block - zwei
3. Online Redo Log - drei
4. Archived Redo Log - vier
5. Control File - fünf
5-Finger-Faustregel
–
aber ok
–
+1 für weitere(n) Block
+1 für Flashback Log
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 29/32
IOPS von Medien
HDD SSD
50x
SSD Storage
15x
7.000
100.000
Storage S-Cluster
10x
1.000.000
140
7.000
100.000
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 30/32
W
hitepaper!1. Grundfunktionen
2. Read IOs
3. Automatic Storage Management
4. InMemory vs. IO
5. Storage Sizing Grundlagen
Zusammenfassung
Download Präsentation und Whitepaper
http://www.performing-databases.com
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 31/32
Q & A
Download Präsentation und Whitepaper
http://www.performing-databases.com
Oracle Core für Einsteiger: Datenbank I/O

Oracle Core für Einsteiger: Datenbank I/O

  • 2.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 2/32 Oracle Core für Einsteiger: Datenbank I/O Martin Klier Performing Databases GmbH Mitterteich #FiveWordTechHorrors „Storage comes from other department“
  • 3.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 3/32 Referent ● Martin Klier ● Lösungsarchitekt und Datenbankspezialist ● Fachliche Schwerpunkte: – Performanceoptimierung / Tuning – hochverfügbare Systeme – Cluster und Replikation ● Linux seit 1997 ● Oracle Database seit 2003
  • 4.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 4/32 Referent ● Vorträge ● Kontakt: martin.klier@performing-db.com ● Weblog: http://www.usn-it.de Regionalgruppen April 2014
  • 5.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 5/32 Unternehmen ● Spezialisten für Datenbanktechnik – Konzeptberatung und Vergabekompetenz – Architektur- und Systemplanung – Lizenzierung – Realisierung und Troubleshooting ● Kontakt – Performing Databases GmbH Wiesauer Straße 27 95666 Mitterteich – Web: http://www.performing-databases.com – Twitter: @PerformingDB
  • 6.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 6/32 Ziele ● Funktionsweise des RDBMS (Überblick) ● Nutzung des Massenspeichers ● Automatic Storage Management (Überblick) ● Darstellung verschiedener IO-Typen ● Storage Sizing Basics #NoHorror
  • 7.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 7/32 Grundlagen Funktion DBMS #FiveWordTechHorrors „John knows everything about databases.“
  • 8.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 8/32 TEMP Architekturschema (vereinfacht) Listener :1521 PMON SGA Session Session Buffer Cache Shared Pool Log Buffer ARCnSMON LGWR DBWn PGAs CKPT Session Online Redo Logs Archived Redo Logs Tablespace Undo Tbs.
  • 9.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 9/32 TEMP Lesevorgang Listener :1521 SGA PGAs Session Tablespace Blöcke Sort, Hash, Merge Shared Pool select ... ; Buffer Cache „Buffer“
  • 10.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 10/32 TEMP Daten-Änderung, Database Writer Listener :1521 SGA PGAs Session Tablespace Blöcke PMON ARCnSMON LGWRCKPT Shared Pool DBWn Aber: Database Writer ist ein Lazy Writer! Schreibvorgang auf HDD kann extrem nachhängen! Buffer Cache update ...;
  • 11.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 11/32 TEMP Daten-Änderung (nur Redo) Listener :1521 SGA Buffer Cache Log Buffer PGAs Session Online Redo Logs Archived Redo Logs Tablespace Blöcke PMON ARCnSMON DBWn CKPT commit; LGWR
  • 12.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 12/32 ● Bei Transaktion ● Wenn Log Buffer voll ● spätestens alle 3 Sekunden ● (wenn private strand geleert wird) Schreiben Redo Logs Online Redo Logs Archived Redo Logs ARCn Log Buffer LGW1 LGW2 Paralleles Schreiben möglich aber: Bug 19959089
  • 13.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 13/32 TEMP Daten-Änderung (komplett) Listener :1521 SGA Buffer Cache PGAs Session Tablespace Undo Tbs. Blöcke PMON SMON Shared Pool update ...; Log Buffer Online Redo Logs Archived Redo Logs LGWR ARCn CKPT DBWn
  • 14.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 14/32 Einige IO-Kategorien #FiveWordTechHorrors „Storage is fast. What's IOPS?“
  • 15.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 15/32 Tablespace DB file sequential read Buffer Cache 6 Single Block Read IOs (=„random access“) 6 Memory Access Calls (CPU)
  • 16.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 16/32 ● Verwendet für Einzelzugriffe (Index Block) ● In äußerst geringem Maß auch bei Vollzugriffen möglich ● 1 I/O call liest1 Blockim TBS ● Schreibt Buffer auf optimalen Platz im Cache DB file sequential read
  • 17.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 17/32 Tablespace DB file scattered read Buffer Cache 1 Multiblock Read IO 6 Memory Access Calls (CPU)
  • 18.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 18/32 ● Verwendet für FULL SCANs (Table, Index …) ● 1 I/O call liestn zusammenhängede Blöckeim TBS ● max(n) = DB_FILE_MULTIBLOCK_READ_COUNT ● Schreibt „scattered“ im Buffer Cache Ziel: Sparen von IO-Zeit DB file scattered read
  • 19.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 19/32 Tablespace Direct Path Read Prozess-PGA 1 Multiblock IO Call 1 Memory Access Call (CPU)
  • 20.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 20/32 ● Verwendet für Massen-Lesevorgänge (Parallel Exec, Export.. ● 1 I/O call liestn zusammenhängende Blocksim TBS ● max(n) = DB_FILE_MULTIBLOCK_READ_COUNT ● Schreibt zusammenhängend in die Prozess-PGA Ziel: Sparen von IO- und CPU-Zeit Direct Path Read
  • 21.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 21/32 Oracle ASM #FiveWordTechHorrors „No ASM diskgroups are online“
  • 22.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 22/32 ASM LUN 1 LUN 2 LUN 4 LUN 5 Location A Location B LUN 3 LUN 6 Diskgroup A Diskgroup B Oracle Datenbank Instanz ASM Instanz Verwaltung Administration Direktzugriffe Online Redo Logs Datafiles Backups ... Spiegelung Spiegelung + Striping
  • 23.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 23/32 ● „Automatic Storage Management“ (Automagic?) ● Logical Volume Manager ● Umgehung des Verwaltungslayers für Datenzugriffe (analog Raw Device) ● Multi-Master-fähig ● Bedienung über SQL oder Command Line Tools ASM
  • 24.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 24/32 InMemory ist cool. Cool reicht nicht. UseCase muß passen. #FiveWordTechHorrors „InMemory solves all performance problems“
  • 25.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 25/32 Storage Sizing Basics #FiveWordTechHorrors „Database fits into cache anyway“
  • 26.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 26/32 ● Die Datenbank passt ohnehin in den Cache. ● Wir vermeiden IO sowieso wo es geht. ● Warum spiegeln - wir machen stündliche Archivelog-Backups ● Vor zehn Jahren waren das noch Megabytes. ● Ich mache das schon seit 20 Jahren: Unsere Storage IST schnell genug für XYZ. #StorageTechHorrors
  • 27.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 27/32 TEMP Daten-Änderung (komplett) Listener :1521 SGA Buffer Cache PGAs Session Tablespace Undo Tbs. Blöcke PMON SMON Shared Pool update ...; Log Buffer Online Redo Logs Archived Redo Logs LGWR ARCn CKPT DBWn 1 1 1 1 ? ? ? CF 1
  • 28.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 28/32 – Falsch –1. Data Block - eins 2. Undo Block - zwei 3. Online Redo Log - drei 4. Archived Redo Log - vier 5. Control File - fünf 5-Finger-Faustregel – aber ok – +1 für weitere(n) Block +1 für Flashback Log
  • 29.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 29/32 IOPS von Medien HDD SSD 50x SSD Storage 15x 7.000 100.000 Storage S-Cluster 10x 1.000.000 140 7.000 100.000
  • 30.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 30/32 W hitepaper!1. Grundfunktionen 2. Read IOs 3. Automatic Storage Management 4. InMemory vs. IO 5. Storage Sizing Grundlagen Zusammenfassung Download Präsentation und Whitepaper http://www.performing-databases.com
  • 31.
    @MartinKlierDBA Oracle Corefür Einsteiger: Datenbank I/O 31/32 Q & A Download Präsentation und Whitepaper http://www.performing-databases.com