29
ORACLE 12C D ATABASE IN-MEMORY Gökhan Atıl TROUG Day Ankara, 23/12/2014

Oracle 12c Database In-Memory

Embed Size (px)

Citation preview

Page 1: Oracle 12c Database In-Memory

ORACLE 12C

DATABASE IN-MEMORY

Gökhan Atıl

TROUG Day Ankara, 23/12/2014

Page 2: Oracle 12c Database In-Memory

Gökhan Atıl

• DBA Takım Lideri

• 10 yıldan fazla deneyim

• 10g/11g/R12 OCP DBA

• Oracle Certified Expert (SQL & Exadata)

• Comptia Linux+

• Blogger (Ekim 2008’den beri) gokhanatil.com

• Co-Founder of Turkey Oracle User Group (TROUG)

• Oracle ACE (Ekim 2011)

Page 3: Oracle 12c Database In-Memory

Expert Oracle Enterprise Manager 12c

Kellyn Pot'vin

Anand Akela

Gökhan Atıl

Bobby Curtis

Alex Gorbachev

Niall Litchfield

Leighton Nelson

Pete Sharman

25 Haziran 2013

Page 4: Oracle 12c Database In-Memory

Sunum İçeriği

Oracle Database In-Memory Nedir?

Neden In-Memory?

Oracle Database In-Memory’nin Yapısı

Performans Karşılaştırması

Nasıl Kullanılır?

Son Söz

Page 5: Oracle 12c Database In-Memory

12.1.0.1

Major Database Release Number (significant new functionality)

Database Maintenance Release Number (some new features)

Application Server Release Number

Component-Specific Release Number (patch sets or interim releases)

Page 6: Oracle 12c Database In-Memory

Oracle Database In-Memory Nedir?

Database (storage structures)

Instance

(System Global Area)

Background Process

PMONSMONDBWn LGWRCKPT ARCn

Database

Buffer

Cache Shared Pool

In-Memory

Area

IMCO

SP LP JP RL

nK

Page 7: Oracle 12c Database In-Memory

Neden In-Memory?

• Memory’den 1 MB sırasız veri okuma 0.25 ms

• SSD’den 1 MB sırasız veri okuma 1 ms

• Sabit Disk’ten 1 MB sırasız veri okuma 20 ms

Page 8: Oracle 12c Database In-Memory

AnalitikİşlemlerKolon

Formatı

In-Memory

Sales

Oracle Database In-Memory’nin Yapısı

OLTP

sales

Buffer Cache

Satır

Formatı

Sales

Page 9: Oracle 12c Database In-Memory

Oracle ve Kolon Formatı?

• Sadece In-memory’de kullanılıyor

• Sıkıştırma sayesinde veri x2-x20 kat daha az yer kaplıyor (MEMCOMPRESS)

• Logging Gerektirmiyor (recovery edilmesine gerek yok çünkü satır formatı halinde zaten diskte tutuluyor)

• Startup sırasında tablolar belleğe alınıyorlar (PRIORITY)

Memory

Kolon formatı

Page 10: Oracle 12c Database In-Memory

SIMD

Neden Kolon Formatı?

In-Memory Column Store

Şehir SatışlarSales

Örnek: İstanbul’daki satış toplamını bulmak

1. Sadece gerekli kolon verisine erişim!

2. Yeni algoritma sayesinde sıkıştırılmış veri içinde arama

3. IM Storage Index sayesinde ilgisiz verinin filtrelenmesi (IMCU)

4. SIMD Vektör İşleme ile değerlerin tek komut ile karşılaştırılması

İstanbul 5,000,000 TL

Page 11: Oracle 12c Database In-Memory

SIMD Vektör İşleme Nedir?

• SIMD (Single Instruction processing Multiple Data values) vektör işleme, SIMD desteği olan sunucularda her kolondaki veriyi tek tek işlemek yerine, birden fazla kolondaki verinin beraberce tek bir CPU dönüşünde ile işlenmesini sağlar.

• Modern Intel işlemciler 16-32 SIMD registerlarına sahiptir.

Page 12: Oracle 12c Database In-Memory

İki Kopya (Satır+Kolon) Yavaş Olmaz mı?

Tablo

1-3OLTP içimİndeksler

5-15 Analitik Sorgular için

İndeksler

Page 13: Oracle 12c Database In-Memory

Performans Karşılaştırması

• Tanel Põder & Kerry Osborne’nun Exadataüzerinde yaptığı testler:

SELECT COUNT(*), SUM(order_total)FROMordersWHEREwarehouse_id BETWEEN 500 AND 510

8 GB’lık tablonun %1’ini seçmek istiyoruz

Page 14: Oracle 12c Database In-Memory

Test Sonuçları:

Erişim metodu Toplam CPU(ms)

index (range scan) 265,203 37,438

full table scan (buffered) 132,075 48,944

full table scan (direct path) 155,67 11,808

full table scan (smart scan) 2,102 729

full table scan (inmemory) 155 155

Page 15: Oracle 12c Database In-Memory

In-Memory Hızlı Peki ya Buffer Cache?

Erişim metodu Toplam CPU(ms)

full table scan (smart scan) 2,102 729

full table scan (inmemory) 155 155

full table scan (buffer cache) 7,850 7,831

1. Sadece gerekli kolonlara erişim2. Yeni algoritma sayesinde sıkıştırılmış veri içinde arama3. IM Storage Index sayesinde ilgisiz verinin filtrelenmesi4. SIMD Vektör İşleme

Page 16: Oracle 12c Database In-Memory

In-Memory ve Verilerin İşlenmesi

• Veriye erişim her zaman hızlı olmasına karşın, özellikle TEMP tablespace’i kullanılan sorgularda verinin işlenmesi darboğaz oluşturabilir: Sorgularınızın TEMP tablespace’i kullanmadığına

emin olun

Verinin filtrelenmesini önce yapın

PGA_AGGREGATE_TARGET’ı arttırın

Paralel sorgular kullanın

Page 17: Oracle 12c Database In-Memory

Nasıl Aktif Edilir?

• Database In-Memory Opsiyonunu etkinleştirmek:

ALTER SYSTEM SET inmemory_size = 20GSCOPE=spfile;

• Veritabanını restart etmeniz gerekir.

• SGA’nin yeterince büyük olmasına dikkat edin!

Page 18: Oracle 12c Database In-Memory

Tablolar In-Memory’ye Yükleyin

• İstediğiniz tablo için In-Memory opsiyonunu aktif hale getirmek:

ALTER TABLE sales INMEMORY;

• Tablolar in-memory area’ya (IM Column Store) varsayılan olarak on-demand olarak yüklenir. Bunun olması için tabloya full scan yapan bir sorgu çalışmalıdır.

Page 19: Oracle 12c Database In-Memory

In-Memory’ye Otomatik Yükleme

• Tablonun otomatik olarak In-Memory’ye yüklenmesi için:

ALTER TABLE sales INMEMORY PRIORITY CRITICAL;

• PRIORITY şunlardan biri olabilir: NONE (varsayılan), LOW, MEDIUM, HIGH, CRITICAL

Page 20: Oracle 12c Database In-Memory

Tablolarım In-Memory’de mi?

• V$IM_SEGMENTS veya V$IM_USER_SEGMENTS’ı sorgulayarak tablolarınız in-memory’de mi görebilirsiniz:

SELECT OWNER, SEGMENT_NAME, INMEMORY_SIZE, BYTES, BYTES_NOT_POPULATED,POPULATE_STATUS FROM v$im_segments;

Page 21: Oracle 12c Database In-Memory

Kısıtlamalar Nelerdir?

Şu objeler In-Memory’de tutulamaz:

• SYSTEM or SYSAUX tablespace’indeki SYS objeleri

• Index Organized Tablolar (IOTs)

• Clustered Tablolar

• LONG veritipindeki kolonlar

Page 22: Oracle 12c Database In-Memory

Kolon/Partition Bazlı In-Memory

• İstediğiniz kolon ve partitionların In-Memory area’ya yüklenmesini engelleyebilir veya kaldırabilirsiniz:

ALTER TABLE sales INMEMORYNO INMEMORY (prod_id);

ALTER TABLE sales MODIFY PARTITION SALES_1998 NO INMEMORY;

ALTER TABLE sales INMEMORY NO INMEMORY;

Page 23: Oracle 12c Database In-Memory

In-Memory ve Sıkıştırma

• Tablonun, partitionın veya kolonun nasıl sıkıştırılacağını belirtebilirsiniz:

ALTER TABLE sales INMEMORYMEMCOMPRESS FOR QUERY;

ALTER TABLE sales MODIFY PARTITION SALES_1998 INMEMORY NOMEMCOMPRESS;

ALTER TABLE sales INMEMORYMEMCOMPRESS FOR QUERY (prod_id);

Page 24: Oracle 12c Database In-Memory

Sıkıştırma Seçenekleri

• MEMCOMPRESS parametresi:

NOCOMPRESS Sıkıştırma yok

MEMCOMPRESS FOR DMLDML işlemleri için optimize edilmiş minimum sıkıştırma

MEMCOMPRESS FOR QUERY LOW Varsayılan (Sorgu performansı için optimize)

MEMCOMPRESS FOR QUERY HIGHHem sorgu performansı hem yer kullanımı açısından iyi

MEMCOMPRESS FOR CAPACITY LOWSorgu performansından çok yer kullanımını düşünen

MEMCOMPRESS FOR CAPACITY HIGHTamamen yer kullanımını azaltmak için tasarlanmış

Page 25: Oracle 12c Database In-Memory

Kolonlar Nasıl Sıkıştırılmış?

• Kolonlarla ilgili sıkıştırma seçeneklerini V$IM_COLUMN_LEVEL viewinden sorgulayabilirsiniz:

SELECT COLUMN_NAME,INMEMORY_COMPRESSIONFROM v$im_column_level

WHERE TABLE_NAME = ‘SALES’;

Page 26: Oracle 12c Database In-Memory

In-Memory

Sales

RAC Sistemlerde In-Memory

ALTER TABLE sales INMEMORY DISTRIBUTE BYROWID RANGE | PARTITION | SUBPARTITION;

In-Memory

Sales

DISTRIBUTED

Page 27: Oracle 12c Database In-Memory

Engineered Sistemlerde In-Memory

ALTER TABLE sales INMEMORY DUPLICATE ALL;

In-Memory

Sales

In-Memory

Sales

DUPLICATED

Page 28: Oracle 12c Database In-Memory

Son Söz

• Fonksiyonel: Her hangi bir SQL kısıtlaması yok

• Uygulanması Kolay: Verinin aktarılmasına veya değiştirilmesine gerek yok

• Tamamen Uyumlu: Uygulamalarda her hangi bir değişiklik gerektirmiyor

• Partitioning ile Birlikte Enterprise Edition kullanmak için en geçerli sebep

Page 29: Oracle 12c Database In-Memory

KAYNAKLAR:

@gokhanatil http://gokhanatil.com

Tanel Põder & Kerry Osborne’sunumu Oracle Database In‐Memory Option in ActionOracle Database In-Memory blog https://blogs.oracle.com/In-Memory/

Oracle Database In-Memory White Paper Ekim 2014