ORACLE 12C
DATABASE IN-MEMORY
Gökhan Atıl
TROUG Day Ankara, 23/12/2014
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)
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
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
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)
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
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
Analitik
İşlemlerKolon
Formatı
In-Memory
Sales
Oracle Database In-Memory’nin Yapısı
OLTP
sales
Buffer Cache
Satır
Formatı
Sales
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ı
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
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.
İki Kopya (Satır+Kolon) Yavaş Olmaz mı?
Tablo
1-3
OLTP içim
İndeksler
5-15
Analitik Sorgular için
İndeksler
Performans Karşılaştırması
• Tanel Põder & Kerry Osborne’nun Exadata
üzerinde yaptığı testler:
SELECT COUNT(*), SUM(order_total)
FROM
orders
WHERE
warehouse_id BETWEEN 500 AND 510
8 GB’lık tablonun %1’ini
seçmek istiyoruz
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
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şim
2. Yeni algoritma sayesinde sıkıştırılmış veri içinde arama
3. IM Storage Index sayesinde ilgisiz verinin filtrelenmesi
4. SIMD Vektör İşleme
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
Nasıl Aktif Edilir?
• Database In-Memory Opsiyonunu
etkinleştirmek:
ALTER SYSTEM SET inmemory_size = 20G
SCOPE=spfile;
• Veritabanını restart etmeniz gerekir.
• SGA’nin yeterince büyük olmasına dikkat edin!
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.
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
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;
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
Kolon/Partition Bazlı In-Memory
• İstediğiniz kolon ve partitionların In-Memory area’ya
yüklenmesini engelleyebilir veya kaldırabilirsiniz:
ALTER TABLE sales INMEMORY
NO INMEMORY (prod_id);
ALTER TABLE sales MODIFY PARTITION SALES_1998 NO
INMEMORY;
ALTER TABLE sales INMEMORY NO INMEMORY;
In-Memory ve Sıkıştırma
• Tablonun, partitionın veya kolonun nasıl
sıkıştırılacağını belirtebilirsiniz:
ALTER TABLE sales INMEMORY
MEMCOMPRESS FOR QUERY;
ALTER TABLE sales MODIFY PARTITION
SALES_1998 INMEMORY NOMEMCOMPRESS;
ALTER TABLE sales INMEMORY
MEMCOMPRESS FOR QUERY (prod_id);
Sıkıştırma Seçenekleri
• MEMCOMPRESS parametresi:
NOCOMPRESS Sıkıştırma yok
MEMCOMPRESS FOR DML
DML 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 HIGH
Hem sorgu performansı hem yer kullanımı
açısından iyi
MEMCOMPRESS FOR CAPACITY LOW
Sorgu performansından çok yer kullanımını
düşünen
MEMCOMPRESS FOR CAPACITY HIGH
Tamamen yer kullanımını azaltmak için
tasarlanmış
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_COMPRESSION
FROM v$im_column_level
WHERE TABLE_NAME = ‘SALES’;
In-Memory
Sales
RAC Sistemlerde In-Memory
ALTER TABLE sales INMEMORY DISTRIBUTE BY
ROWID RANGE | PARTITION | SUBPARTITION;
In-Memory
Sales
DISTRIBUTED
Engineered Sistemlerde In-Memory
ALTER TABLE sales INMEMORY DUPLICATE ALL;
In-Memory
Sales
In-Memory
Sales
DUPLICATED
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
KAYNAKLAR:
@gokhanatil http://gokhanatil.com
Tanel Põder & Kerry Osborne’sunumu Oracle Database In‐Memory Option in Action
Oracle Database In-Memory blog https://blogs.oracle.com/In-Memory/
Oracle Database In-Memory White Paper Ekim 2014

Oracle 12c Database In-Memory

  • 1.
    ORACLE 12C DATABASE IN-MEMORY GökhanAtıl TROUG Day Ankara, 23/12/2014
  • 2.
    Gökhan Atıl • DBATakı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)
  • 3.
    Expert Oracle EnterpriseManager 12c Kellyn Pot'vin Anand Akela Gökhan Atıl Bobby Curtis Alex Gorbachev Niall Litchfield Leighton Nelson Pete Sharman 25 Haziran 2013
  • 4.
    Sunum İçeriği Oracle DatabaseIn-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
  • 5.
    12.1.0.1 Major Database ReleaseNumber (significant new functionality) Database Maintenance Release Number (some new features) Application Server Release Number Component-Specific Release Number (patch sets or interim releases)
  • 6.
    Oracle Database In-MemoryNedir? 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
  • 7.
    Neden In-Memory? • Memory’den1 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
  • 8.
    Analitik İşlemlerKolon Formatı In-Memory Sales Oracle Database In-Memory’ninYapısı OLTP sales Buffer Cache Satır Formatı Sales
  • 9.
    Oracle ve KolonFormatı? • 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ı
  • 10.
    SIMD Neden Kolon Formatı? In-MemoryColumn 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
  • 11.
    SIMD Vektör İşlemeNedir? • 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.
  • 12.
    İki Kopya (Satır+Kolon)Yavaş Olmaz mı? Tablo 1-3 OLTP içim İndeksler 5-15 Analitik Sorgular için İndeksler
  • 13.
    Performans Karşılaştırması • TanelPõder & Kerry Osborne’nun Exadata üzerinde yaptığı testler: SELECT COUNT(*), SUM(order_total) FROM orders WHERE warehouse_id BETWEEN 500 AND 510 8 GB’lık tablonun %1’ini seçmek istiyoruz
  • 14.
    Test Sonuçları: Erişim metoduToplam 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
  • 15.
    In-Memory Hızlı Pekiya 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şim 2. Yeni algoritma sayesinde sıkıştırılmış veri içinde arama 3. IM Storage Index sayesinde ilgisiz verinin filtrelenmesi 4. SIMD Vektör İşleme
  • 16.
    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
  • 17.
    Nasıl Aktif Edilir? •Database In-Memory Opsiyonunu etkinleştirmek: ALTER SYSTEM SET inmemory_size = 20G SCOPE=spfile; • Veritabanını restart etmeniz gerekir. • SGA’nin yeterince büyük olmasına dikkat edin!
  • 18.
    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.
  • 19.
    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
  • 20.
    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;
  • 21.
    Kısıtlamalar Nelerdir? Şu objelerIn-Memory’de tutulamaz: • SYSTEM or SYSAUX tablespace’indeki SYS objeleri • Index Organized Tablolar (IOTs) • Clustered Tablolar • LONG veritipindeki kolonlar
  • 22.
    Kolon/Partition Bazlı In-Memory •İstediğiniz kolon ve partitionların In-Memory area’ya yüklenmesini engelleyebilir veya kaldırabilirsiniz: ALTER TABLE sales INMEMORY NO INMEMORY (prod_id); ALTER TABLE sales MODIFY PARTITION SALES_1998 NO INMEMORY; ALTER TABLE sales INMEMORY NO INMEMORY;
  • 23.
    In-Memory ve Sıkıştırma •Tablonun, partitionın veya kolonun nasıl sıkıştırılacağını belirtebilirsiniz: ALTER TABLE sales INMEMORY MEMCOMPRESS FOR QUERY; ALTER TABLE sales MODIFY PARTITION SALES_1998 INMEMORY NOMEMCOMPRESS; ALTER TABLE sales INMEMORY MEMCOMPRESS FOR QUERY (prod_id);
  • 24.
    Sıkıştırma Seçenekleri • MEMCOMPRESSparametresi: NOCOMPRESS Sıkıştırma yok MEMCOMPRESS FOR DML DML 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 HIGH Hem sorgu performansı hem yer kullanımı açısından iyi MEMCOMPRESS FOR CAPACITY LOW Sorgu performansından çok yer kullanımını düşünen MEMCOMPRESS FOR CAPACITY HIGH Tamamen yer kullanımını azaltmak için tasarlanmış
  • 25.
    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_COMPRESSION FROM v$im_column_level WHERE TABLE_NAME = ‘SALES’;
  • 26.
    In-Memory Sales RAC Sistemlerde In-Memory ALTERTABLE sales INMEMORY DISTRIBUTE BY ROWID RANGE | PARTITION | SUBPARTITION; In-Memory Sales DISTRIBUTED
  • 27.
    Engineered Sistemlerde In-Memory ALTERTABLE sales INMEMORY DUPLICATE ALL; In-Memory Sales In-Memory Sales DUPLICATED
  • 28.
    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
  • 29.
    KAYNAKLAR: @gokhanatil http://gokhanatil.com Tanel Põder& Kerry Osborne’sunumu Oracle Database In‐Memory Option in Action Oracle Database In-Memory blog https://blogs.oracle.com/In-Memory/ Oracle Database In-Memory White Paper Ekim 2014

Editor's Notes

  • #2 This template can be used as a starter file for presenting training materials in a group setting. Sections Right-click on a slide to add sections. Sections can help to organize your slides or facilitate collaboration between multiple authors. Notes Use the Notes section for delivery notes or to provide additional details for the audience. View these notes in Presentation View during your presentation. Keep in mind the font size (important for accessibility, visibility, videotaping, and online production) Coordinated colors Pay particular attention to the graphs, charts, and text boxes. Consider that attendees will print in black and white or grayscale. Run a test print to make sure your colors work when printed in pure black and white and grayscale. Graphics, tables, and graphs Keep it simple: If possible, use consistent, non-distracting styles and colors. Label all graphs and tables.
  • #3 This is another option for an Overview slides using transitions.
  • #30 Microsoft Confidential