Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1...

32

Transcript of Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1...

Page 1: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA
Page 2: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 2/32

Oracle Core für Einsteiger:Datenbank I/O

Martin Klier

Performing Databases GmbHMitterteich

#FiveWordTechHorrors „Storage comes from other department“

Page 3: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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

Page 4: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 4/32

Referent

● Vorträge

● Kontakt: [email protected]

● Weblog: http://www.usn-it.de

Regionalgruppen

April 2014

Page 5: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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 2795666 Mitterteich

– Web: http://www.performing-databases.com

– Twitter: @PerformingDB

Page 6: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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

Page 7: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 7/32

GrundlagenFunktion DBMS

#FiveWordTechHorrors „John knows everything about databases.“

Page 8: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 8/32

TEMP

Architekturschema (vereinfacht)

Listener:1521

PMON

SGA

SessionSession

Buffer Cache

Shared Pool

Log Buffer

ARCnSMON

LGWR

DBWn

PGAs

CKPT

Session

Online

Redo

Logs

ArchivedRedoLogs

Tablespace Undo Tbs.

Page 9: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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“

Page 10: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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

DBWnAber:Database Writerist ein Lazy Writer!

Schreibvorgang auf HDDkann extrem nachhängen!

Buffer Cache

update ...;

Page 11: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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

ArchivedRedoLogs

Tablespace

Blöcke

PMON

ARCnSMON DBWn

CKPT

commit;

LGWR

Page 12: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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

OnlineRedoLogs

ArchivedRedoLogs

ARCn

Log Buffer

LGW1LGW2

Paralleles Schreiben möglichaber: Bug 19959089

Page 13: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 13/32

TEMP

Daten-Änderung (komplett)

Listener:1521

SGA

Buffer CachePGAs

Session

Tablespace Undo Tbs.

Blöcke

PMON

SMON

Shared Pool

update ...;

Log Buffer

Online

Redo

Logs

ArchivedRedoLogs

LGWR

ARCn

CKPT

DBWn

Page 14: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 14/32

Einige IO-Kategorien

#FiveWordTechHorrors „Storage is fast. What's IOPS?“

Page 15: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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)

Page 16: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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 liest 1 B lock im TBS

● Schreibt Buffer auf optimalen Platz im Cache

DB file sequential read

Page 17: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 17/32

Tablespace

DB file scattered read

Buffer Cache

1 Multiblock Read IO6 Memory Access Calls (CPU)

Page 18: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 18/32

● Verwendet für FULL SCANs (Table, Index …)

● 1 I/O call liest n zusammenhängede Blöcke im TBS

● max(n) = DB_FILE_MULTIBLOCK_READ_COUNT

● Schreibt „scattered“ im Buffer Cache

Ziel: Sparen von IO-Zeit

DB file scattered read

Page 19: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 19/32

Tablespace

Direct Path Read

Prozess-PGA

1 Multiblock IO Call1 Memory Access Call (CPU)

Page 20: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 20/32

● Verwendet für Massen-Lesevorgänge (Parallel Exec, Export...)

● 1 I/O call liest n zusammenhängende Blocks im 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

Page 21: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 21/32

Oracle ASM

#FiveWordTechHorrors „No ASM diskgroups are online“

Page 22: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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 DatenbankInstanz

ASMInstanz

VerwaltungAdministration

Direktzugriffe Online Redo Logs

DatafilesBackups

...

Spiegelung

Spiegelung + Striping

Page 23: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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

Page 24: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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“

Page 25: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 25/32

Storage Sizing Basics

#FiveWordTechHorrors „Database fits into cache anyway“

Page 26: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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

Page 27: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 27/32

TEMP

Daten-Änderung (komplett)

Listener:1521

SGA

Buffer CachePGAs

Session

Tablespace Undo Tbs.

Blöcke

PMON

SMON

Shared Pool

update ...;

Log Buffer

Online

Redo

Logs

ArchivedRedoLogs

LGWR

ARCn

CKPT

DBWn

1 1

11

?

?

?CF1

Page 28: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@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

Page 29: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 29/32

IOPS von Medien

HDD SSD

50x

SSD Storage

15x

7.00

0

100.

000

Storage S-Cluster

10x

1.00

0.00

0

140 7.00

0

100.

000

Page 30: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 30/32

White

paper!1. Grundfunktionen

2. Read IOs

3. Automatic Storage Management

4. InMemory vs. IO

5. Storage Sizing Grundlagen

Zusammenfassung

Download Präsentation und Whitepaperhttp://www.performing-databases.com

Page 31: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA

@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 31/32

Q & A

Download Präsentation und Whitepaperhttp://www.performing-databases.com

Page 32: Oracle Core für Einsteiger: Datenbank I/O · 2018-10-22 · HDD SSD 50x SSD Storage 15x 7. 0 0 0 1 0 0. 0 0 0 Storage S-Cluster 10x 1. 0 0 0. 0 0 0 1 4 0 7. 0 0 0 1 0 0. 0 0 0 @MartinKlierDBA