Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
@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“
@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: [email protected]
● 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 2795666 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
GrundlagenFunktion 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
SessionSession
Buffer Cache
Shared Pool
Log Buffer
ARCnSMON
LGWR
DBWn
PGAs
CKPT
Session
Online
Redo
Logs
ArchivedRedoLogs
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
DBWnAber:Database Writerist ein Lazy Writer!
Schreibvorgang auf HDDkann 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
ArchivedRedoLogs
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
OnlineRedoLogs
ArchivedRedoLogs
ARCn
Log Buffer
LGW1LGW2
Paralleles Schreiben möglichaber: Bug 19959089
@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
@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 liest 1 B lock im 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 IO6 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 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
@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)
@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
@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 DatenbankInstanz
ASMInstanz
VerwaltungAdministration
Direktzugriffe Online Redo Logs
DatafilesBackups
...
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 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
@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.00
0
100.
000
Storage S-Cluster
10x
1.00
0.00
0
140 7.00
0
100.
000
@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
@MartinKlierDBA Oracle Core für Einsteiger: Datenbank I/O 31/32
Q & A
Download Präsentation und Whitepaperhttp://www.performing-databases.com