Performance, Tuning & Storage
Even voorstellen
• Erik Swinkels, 39 jaar • Meer dan 20 jaar ervaring als Oracle DBA (vanaf versie 5) • Systeembeheer uitgevoerd op Unix, VMS, Novell en Windows • Enkele jaren Oracle server support (de die-hards) • Gespecialiseerd in architectuur, backup/recovery, performance en beheer • Groot voorstander van ‘zo eenvoudig mogelijk’, moeilijk is misschien leuk, maar vaak ook duur en onnodig lastig.
TEST SETUP
AMD Athlon X2 8Gb RAM PERC 5/i, 512Mb BB Cache LSI Megaraid SAS 8408E bios 6x SAMSUNG HD501Lj 500Gb SATA-2 (7200RPM) INTEL Postville SSD 80Gb
firmware version : 1.12.230-0598
firmware package version:7.0.1-0066
BIOS Version: MT33
AGENDA
• TECHNIEK – Hoe werkt het – Nadelen en oplossingen
• ORACLE – Wat heeft Oracle te bieden – Wat heb je zelf te bieden
• CASES – Hoe en wat in de praktijk
inventarisatie
• Storage als onderdeel van performance tuning is compleet nieuw voor mij • Ik heb niets te zeggen over de storage die ik aangeboden krijg, het is zoals het is • Ik probeer het wel uit te leggen maar ze zeggen dat ik er niets van begrijp/geen gelijk heb • RAID 5 maakt tegenwoordig niets meer uit • Ik weet hoeveel IOPS de database nodig heeft gedurende de piek
• Ik weet eigenlijk alles al maar ben benieuwd wat je te vertellen hebt ;-)
TECHNIEK
Wat is een harddisk
Een harde schijf, van het Engelse hard disk drive of HDD, is een vorm van extern geheugen, een elektromechanisch computeronderdeel waarop gegevens bewaard kunnen worden. Met de aanduiding harde schijf kan men de eigenlijke schijf bedoelen waarop in de vorm van magnetische polarisatie de gegevens zijn geschreven, maar meestal bedoelt men het hele apparaat met schijven, lees- en schrijfkoppen en besturingselektronica, samen in een behuizing.
historie
• Op 13 september 1956 introduceerde IBM de eerste harde schijf: Random Access Method of Accounting and Control. De RAMAC bestond uit 50 gestapelde magnetische schijven met een diameter van 61 cm (24 inch). Er waren twee speelkoppen. Voor die tijd werd alle opslag gedaan op tapes • Sinds de introductie van de RAMAC groeide elk jaar de opslagcapaciteit van harde schijven, terwijl de omvang steeds kleiner werd. • In 1980 brengt IBM de 3380, de eerste Gigabyte harddisk. Formaat koelkast. 250Kg en een prijsje van $40,000 • In 2011 zal de eerste 3TB disk op de markt komen.
onderdelen
• Lees/schrijf kop - Nodig om de magnetische laag te kunnen lezen en schrijven • Platter(s) - De schijf die aan twee kanten magnetisch materiaal bevat waarop de data weggeschreven kan worden. Een harddisk bevat tegenwoordig 1 tot 4 platters
• Motor - De snelheid van een harddisk is ook afhankelijk van de snelheid waarmee de platters ronddraaien. • Interface / Protocol - Om de data van de disk via een controller naar het geheugen van de computer te krijgen is een interface met protocol nodig. Hoe sneller de disk, hoe belangrijker deze interface
Lees / schrijf kop
motor
• Harddisks draaien met 4200 tot 15000 toeren. • De snelheid waarmee de disk draait heeft gevolgen voor iets dat we latency noemen (ookwel: rotational delay) • Dit heeft een direct effect op de IOPS.
platter
- De feitelijke magnetische drager - Meer platters-> meer gewicht-> meer stroom - De opslagdichtheid voor platters wordt uitgedrukt in “bits per vierkante inch”
- Huidige techniek schaalt to 1Tb (nu op ong. 700Gb), “nieuwste” techniek tot tientallen Tb’s • Hoe ?
Platter II - 4kb sectoren (Advanced Format Drive) - Disk partitionering en Alignment
Platter III • Binnenkant of buitenkant ? 100000
90000 80000 70000 60000
write 1e read 1e
50000
write 3e 40000
read 3e
30000 20000 10000 0 1
1
2
4
8
16
32
64
128
256
512
1024 2048 4096 8192
DEMO
Interface / PROTOCOL
• Om gegevens van en naar een harddisk te krijgen is een protocol nodig. • Naast het vergroten van de capaciteit zijn de fabrikanten ook druk bezig met het verbeteren van de protocollen en interface standaarden. Een kleine greep uit protocollen van de afgelopen 20 jaar:
- MFM, SCSI, ESDI, SCSI-2, FAST SCSI, IDE, Ultra SCSI, SATA I (150MB), Ultra Wide SCSI, SATA II (300MB), Ultra 2 Wide SCSI, SATA III (600MB), U160, U320, SAS, FC, iSCSI, Infiniband, ethernet Verder is de bussnelheid van groot belang en ook daar heeft de tijd niet stilgestaan - ISA, MCA, PCI, PCI (64bit), PCI-X, PCI-e 1/2/3
ELK PROTOCOL EEN ANDER KABELTJE
Hoeveel I/O kan een disk
IOPS: • 15000 RPM disk • 5 ms zoek tijd • 40 MB/sec transfer rate I/O tijd is dan: 5 ms + (rotational delay)/15000 + (blocksize/(40 MB/sec))
5 ms + 0.5 /15000 + 32K/40MB = 7.8 msec
1 / 7.8 ms = 128 IOPS Een veilige marge om mee te rekenen bij moderne disken is 200-300 IOPS
De problemen
• Disken worden groter maar niet gelijkwaardig sneller. (een groeiend probleem) • Random reads worden een steeds groter probleem • IOPS zijn beperkt, throughput is beperkt
• Een steeds grotere vraag naar capaciteit (met name DWH omgevingen) Een harddisk is eigenlijk maar een heel simpel ding.
Oplossingen STRIPING
één disk heeft een maximum, wat als ik meerdere disken een stukje van het werk laat opknappen. 400000 350000 300000 250000 1 disks w 200000 150000
2 disks w 3 disks w 4 disks w
100000 50000 0
RAID
Redundant Array of Independent Disks • Ook wel Inexpensive en Drives • Methode voor verbeteren prestaties en/of beveiliging van de data • Belangrijkste versies: – – – – –
RAID-0 ->striping RAID-1 ->mirroring RAID-5 ->parity 1 disk RAID-6 ->parity 2 disken JBOD -> Just a Bunch Of Disks
• Combinaties zijn mogelijk en vaak gewenst vanwege performance eisen
Raid II
• Wie gebruikt RAID 5/6 ? 250000
200000
150000 read back
write back 100000
read through write through
50000
0
SAN / NAS
• Storage Area Network (SAN) een architectuur die dient als koppeling tussen servers en opslagapparaten op zo'n manier dat het voor het besturingssysteem lijkt alsof het opslagapparaat direct is aangesloten o.a. Dell, HP, IBM, EMC2
• Network Attached Storage (NAS) staat voor een opslagmedium dat op het netwerk aangesloten is. Dit systeem maakt gebruik van het TCP/IP protocol voor de dataoverdracht. NAS-apparaten zijn in feite volwaardige fileservers. Bij NAS wordt het bestandssysteem beheerd vanuit het NASsysteem zelf. NetApp is de bedenker en grootste partij
Cache cache cache cache cache I • Een manier om de ‘traagheid’ van disken op te vangen. • ZEER VEEL Storage managers denken onterecht dat het DE oplossing is • RAM geheugen is vele malen sneller dan een disk
• “met genoeg cache maakt RAID-5 niet uit” • CacheCramming
-> Orion
Een vergelijking: • de Quadcore XEON W5590 heeft 3 levels cache: • Level 1 : 256KB -> 8x32KB (4x 32Kb voor Instructies en 4x 32Kb voor Data) • Level 2 : 1MB -> 4x256KB • Level 3 : 8MB -> 4x2MB
• Waarom in deze verhouding? Hoe zit dat dan met Oracle’s eigen buffercache, disk cache, san cache ?
Cache cache cache cache cache II
Een vergelijking: • de Quadcore XEON W5590 heeft 3 levels cache: • Level 1 : 256KB -> 8x32KB (4x 32Kb voor Instructies en 4x 32Kb voor Data)
• Level 2 : 1MB -> 4x256KB • Level 3 : 8MB -> 4x2MB • Waarom in deze verhouding? • Hoe zit dat dan met Oracle’s eigen buffercache, disk cache, san cache ?
Solid State Disk (SSD)
Een SSD is gewoon een disk, maar zonder draaiende en bewegende delen ! 300000
250000
200000
150000
hd write hd read ssd write
100000
50000
0
ssd read
FLASH
• Flash chips worden gebruikt in SSD´s • Direct Flash oplossingen zitten dichter op de CPU om de ´traagheid´ van diskcontrollers te omzeilen. • Mogelijk geworden door de PCI-e interface
• Versie 3 gaat dit nog eens verdubbelen • PCI-e heeft met versie 2.x inmiddels een snelheid van 500 MB/s per lane Een PCI-e flashkaart met 8x interface kan dus 4GB/s opleveren.
• Versie 3 gaat het nog eens verdubbelen
toekomst
• Solid State Disk • SSD ipv HDD SAN oplossingen • RAM • Dedicated Storage ipv SAN/NAS • Flash is king
ORACLE
INTRODUCTIE
• Aan de techniek zit een grens • Techniek is KOSTBAAR ! • Oplossing moeten we dus OOK zoeken in de software • Wat voor oplossingen zijn er mogelijk met een database
Soms is de oplossing eenvoudiger dan je denkt…
Als er een limiet zit op wat de storage kan leveren
beperk dan de te leveren hoeveelheid
INDEX
• Beperken full table scans • FAT Indexing – Alle relevante data in de index Select naam,adres van tabel_met_veel_kolommen - Index op naam,adres maakt table access overbodig
• En in het verlengde…. Haal alleen op wat je moet hebben.
PARTITIONING
• Techniek om tabel in stukjes op te delen • Beperken gevolgen full table scan • Oplossing voor contentie problemen • Partition pruning • Meer combinaties mogelijk in 11g Beperken van data: • Life cycle management
DB_FLASH_CACHE_FILE
Maak gebruik van de techniek…
• db file sequential read hoog • Gedrag te beïnvloeden Opties: KEEP, NONE, DEFAULT - create table TEST storage( flash_cache keep) …. • Alleen op OEL en Solaris ??? • CACHE ?????
Andere opties
• Result set caching • Adaptive cursor sharing • Advanced Compression • System statistics, optimizer • ASM • …
HERKENNEN
• Veel ervaring is wel handig (dus regelmatig ..) • Logisch nadenken over elementaire zaken • Stel jezelf de goede vragen: “Waarom is er zoveel gelezen ? • AWR is een handig hulpmiddel
• Wat zit in mijn hoofd (Erik) • Wat kan ik vertellen in anderhalf uur
• Wat kunnen jullie verwerken in die periode
EXADATA
• Systeem waar alles samenkomt • Combinatie van een hardware en software oplossing • Hardware is geoptimaliseerd op throughput
• Software beperkt de op te halen gegevens
4 Kb ONDERSTEUNING
Volledige ondersteuning in Oracel 11gr2. RMAN, REDOLOG
ALTER DATABASE ADD LOGFILE GROUP 5 ('4k_disk_a:log5.log', '4k_disk_b:log5.log') SIZE 100M BLOCKSIZE 4096 REUSE ALTER DATABASE ADD LOGFILE * FOUT in regel 1: .ORA-01378: De logische blokgrootte (4096) van het bestand 4k_disk_a:log5.log is niet compatibel met de sectorgrootte van de schijf (mediasectorgrootte is 512 en hostsectorgrootte is 512).
SCENARIO’S
DATAWAREHOUSE
• Laden of Lezen ? • Exadata V1/V2
MASSIEF OLTP
• Veel inserts en updates • Hoge mate van concurrency • HA / recoverability • Exadata V2
BACKUP
• Wanneer ? • Hoe ? • Van waar naar waar ?
onthouden
• NOOIT RAID-5 / RAID-6 gebruiken (tenzij performance niet belangrijk is ) • Hoe meer spindels (disken) hoe beter (10 4Gb disken van 15 jaar geleden in RAID-0 zijn echt veel sneller dan een ultra moderne disk van 500Gb) • Gebruik nooit meer dan 80% van een disk !!
• Cache is leuk, maar nooit DE oplossing • Denk goed na over het gedrag van je systeem. Een OLTP omgeving heeft heel andere eisen dan een DWH. Zorg dat je je storage omgeving daar op aanpast • Bedenk goed dat een storage manager mogelijk veel weet van storage maar niet van Oracle. Neem dus niet altijd alles zomaar aan
Vragen
Hartelijk dank
Contactinfo:
[email protected]
Links en documentatie
• Computer Architecture: A Quantitative Approach, 3rd Edition • Alle relevante Oracle documentatie (die is gewoon goed) • Relational Database Index Design and the Optimizers , DB2, Oracle, SQL Server, et al.Tapio Lahdenmaki and Michael Leach
• Google
EXTRA’s
Vanaf hier kun je o.a. nog wat berekeningen vinden over de gebruikte voorbeelden.
IOPS I
- Ultra3 SCSI controller 0.3 msec overhead, 160 MB/sec -Oracle I/O • Single block reads (4K, 8K, 16K) • Multiblock reads (32K, 64K, 128) • Single block writes (4K, 8K, 16K) • Multiblock writes (32K, 64K, 128K)
IOPS II Hoeveel I/O kunnen we doen: – Transfer time • 4K / 160MB = 0.025 msec • 8K / 160MB = 0.05 msec • 16K / 160MB = 0.1 msec
• 32K / 160MB = 0.2 msec • 64K / 160MB = 0.4 msec – Controller Overhead + Transfer Time • 64K 1/(0.3 + 0.4)ms = 1428 IOPS • 32K 1/(0.3 + 0.2)ms = 2000 IOPS • 16K 1/(0.3 + 0.1)ms = 2500 IOPS • 8K
1/(0.3 + 0.05)ms = 2857 IOPS
• 4K
1/(0.3 + 0.025)ms = 3076 IOPS
IOPS III
Het aantal IOPS per controller verschilt: Afhankelijk van de I/O block size, tussen 1400 tot 3100. Gevolg is dat de interface/bus maar gebruikt kan worden voor: – 1400 * 64K = 87.5 MB / 160 MB = 54.68% – 3100 * 4K = 12.1 MB / 160 MB = 7.56 % –! Protocol overhead buiten beschouwing gelaten.
Binnenkant buitenkant
• Met 2 disken:200000 180000 160000 140000 120000 100000
write 1e read 1e
80000
write 3e
60000
read 3e
40000 20000 0
Diskgroei
3500
3000
2500
2000 GB snelheid
1500
1000
500
0 1980
1985
2002
2003
2005
2006
2007
2008
2009
Q1 2010
Q4 2010