Exadata ile Veri Ambarı Yolculuğumuz
Ferhat ŞENGÖNÜL
http://ferhatsengonul.wordpress.comhttp://twitter.com/ferhatsengonul
TROUG
Ben Kimim?
• Finans : 11 yıl / Telekom : 3 yıl
• DBA / İş Zekası Uzmanı / Yönetici
• TROUG Kurucu Üye
• Oracle ACE
• 2012 DWGL EMEA
• http://ferhatsengonul.wordpress.com
• http://twitter.com/ferhatsengonul
Kümeler-Grup Teorisi-Sonlu Gruplar-Morley mertebesi sonlu gruplar-…
TROUG
DBA
Developer
Mimar
Analist
BI / DW
Veri Bilimci
TROUG
Exadata soruları
• Exadata ‘Kötü SQL’ ’i bile iyi çalıştırır mı?
• Exadata ‘Kötü tasarım’ı bile iyi çalıştırır mı?
• Bütün indexleri drop etmeli miyiz?
• Mixed workload çalışır mı. (DWH+OLTP)
• Konsolidasyon için iyi bir ortam mıdır?
• Başka, başka ….
TROUG
BI Ortamı
RaporMSTR
ETLAB Initio
Oracle ODIKaynak
DBler Exadata
VERİ HACMİ• 10 Milyar CDR/gün
• 1 TB ham veri extract
• 5 TB Data on file system processed
• 2-3 TB yükleme/gün
• 160 TB HCC sıkıştırılmış veri . 1,6 PetaByte!
HW Ortamı
TROUG
TROUG
TROUG
TROUG
İletişim• Bütün dbnodelar bütün cellerle konuşur. (ASM)
• Celler asla birbiriyle konuşmaz.
Yazılımın Gücü
• HCC ( Sıkıştırma)
• Smart Scan (Akıllı Tarama)
• Storage Index
TROUG
TROUG
Bildiklerimiz
• Oracle blok ile okur (8 K)
• 1 blokta ne kadar çok kayıt/o kadar hızlı
okuma.
TROUG
TROUG
SQL> select rowid row_id,dbms_rowid.rowid_relative_fno(rowid, 'BIGFILE')
rel_file_no,dbms_rowid.ROWID_TO_ABSOLUTE_FNO(rowid,‘TABLE_NAME','TEST_NQ')
abs_file_no
,DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid) block_number
from TABLE_OWNER.TEST_NQ a where rownum < 2;
ROW_ID REL_FILE_NO ABS_FILE_NO BLOCK_NUMBER
------------------ ----------- ----------- ------------
AAF7w4AAAAAAACDAAA 1024 13 131
Elapsed: 00:00:00.07
Elapsed: 00:00:00.01
SQL> alter system dump datafile 13 block 131;
System altered.
Elapsed: 00:00:00.01
SQL>
Bir Blok’un içini görmek
Açık Blok
TROUG
data_block_dump,data header at 0x7f2c7d5e907c
===============
tsiz: 0x1f80
hsiz: 0x2a
pbl: 0x7f2c7d5e907c
76543210
flag=--------
0xe:pti[0] nrow=12 offs=0
0x12:pri[0] offs=0x1d0f
0x14:pri[1] offs=0x1acd
0x16:pri[2] offs=0x1862
0x18:pri[3] offs=0x16fb
0x1a:pri[4] offs=0x145e
0x1c:pri[5] offs=0x1211
0x1e:pri[6] offs=0xfbf
0x20:pri[7] offs=0xe54
0x22:pri[8] offs=0xbd4
0x24:pri[9] offs=0x97d
0x26:pri[10] offs=0x6fd
0x28:pri[11] offs=0x593
block_row_dump:
block_row_dump:
tab 0, row 0, @0x1d0f
tl: 625 fb: --H-F--- lb: 0x0 cc: 255
nrid: 0x00000083.1
col 0: [ 7] 78 71 06 02 09 21 1f
col 1: [ 7] 78 71 06 02 09 01 01
col 2: [ 7] 4b 4f 50 31 52 30 31
col 3: [ 5] 4b 53 41 4e 4d
col 4: [ 2] c1 10
col 5: [ 1] 31
col 6: [ 1] 31
col 7: [ 1] 31
TROUG
HCC
Sıkıştırılmış Blok
TROUG
data_block_dump,data header at 0x7f7d9af9f27c
===============
flag_9ir2=--R----- Archive compression: Y
fcls_9ir2[0]={ }
0x16:pti[0] nrow=1 offs=0
0x1a:pri[0] offs=0x30
block_row_dump:
tab 0, row 0, @0x30
tl: 8016 fb: --H-F--N lb: 0x0 cc: 1
nrid: 0x00364084.0
col 0: [8004]
Compression level: 03 (Archive Low)
Length of CU row: 8004
kdzhrh: ------PC CBLK: 11 Start Slot: 00
NUMP: 11
PNUM: 00 POFF: 7884 PRID: 0x00364084.0
PNUM: 01 POFF: 15900 PRID: 0x00364085.0
PNUM: 02 POFF: 23916 PRID: 0x00364086.0
PNUM: 03 POFF: 31932 PRID: 0x00364087.0
PNUM: 04 POFF: 39948 PRID: 0x00364088.0
PNUM: 05 POFF: 47964 PRID: 0x00364089.0
PNUM: 06 POFF: 55980 PRID: 0x0036408a.0
PNUM: 07 POFF: 63996 PRID: 0x0036408b.0
PNUM: 08 POFF: 72012 PRID: 0x0036408c.0
PNUM: 09 POFF: 80028 PRID: 0x0036408d.0
PNUM: 10 POFF: 88044 PRID: 0x0036408e.0
TROUG
CU header:
CU version: 0 CU magic number: 0x4b445a30
CU checksum: 0x80ab70bd
CU version: 0 CU magic number: 0x4b445a30
CU checksum: 0x80ab70bd
CU total length: 92970
CU flags: NC-U-CRD-OP
ncols: 937
nrows: 97
algo: 0
START_CU:
00 00 1f 44 1f 0b 00 00 00 0b 00 00 1e cc 00 36 40 84 00 00 00 00 3e 1c 00
36 40 85 00 00 00 00 5d 6c 00 36 40 86 00 00 00 00 7c bc 00 36 40 87 00 00
00 00 9c 0c 00 36 40 88 00 00 00 00 bb 5c 00 36 40 89 00 00 00 00 da ac 00
36 40 8a 00 00 00 00 f9 fc 00 36 40 8b 00 00 00 01 19 4c 00 36 40 8c 00 00
00 01 38 9c 00 36 40 8d 00 00 00 01 57 ec 00 36 40 8e 00 00 00 4b 44 5a 30
bd 70 ab 80 00 01 6b 2a eb 06 03 a9 00 61 00 03 57 05 04 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Sıkıştırılmış Blok (DEVAM)
Veriyi sıralamak
TROUG
Ya exadatanız yoksa!
TROUG
• dbms_compression.get_compression_ratio
• Exadata olmayan bir ortamda bile sıkıştırıyor.
• DBMS_TABCOMP_TEMP_CMP adında bir tablo.
• İş bitince siliniyor.
Jonathan Lewis
http://jonathanlewis.wordpress.com/2011/10/04/hcc/
Bunu hatırlayan var mı?
TROUG
Yük * Yük kolu = Kuvvet * Kuvvet kolu
Dezavantajlar
TROUG
• CPU • Sıkıştırma yukarıda
• Açma aşağıda
• Update / Delete• Delete bitmapte
• Update rowu taşır.
• Temp/ indexler
Yazılımın Gücü
• HCC ( Sıkıştırma)
• Smart Scan (Akıllı Tarama)
• Storage Index
TROUG
Akıllı Tarama
• Exadata sorguyu disk katmanında çalıştırır ve
sadece ilgili satır ve sütunları db katmanına
gönderir. Bu da performansı devasa ölçüde
arttırır.
• Ortalamada 10x , bazı dw sorgularında 400x
performans artışı görüldü.
TROUG
İşi en yakında bitirmek.
TROUG
Akıllı Tarama
• Sadece Full Table Scan.
• Ya mixed ortam ise? Hem OLTP – hem DWH?
• Optimizer index seçiyorsa?
• Tablonun indexlerini invisible yapmak.
• OLTP sessionları için
Optimizer_use_invisible_indexes=true
TROUG
Yazılımın Gücü
• HCC ( Sıkıştırma)
• Smart Scan (Akıllı Tarama)
• Storage Index
TROUG
TROUG
Exadata soruları
• Exadata ‘Kötü SQL’ ’i bile iyi çalıştırır mı?
• Exadata ‘Kötü tasarım’ı bile iyi çalıştırır mı?
• Bütün indexleri drop etmeli miyiz?
• Mixed workload çalışır mı? (DWH+OLTP)
• Konsolidasyon için iyi bir ortam mıdır?
• Başka, başka ….
TROUG