Exadata Üzerinde Veri Sıkıştırma Yöntemleri



Benzer belgeler
VIEW LERDE SQL HINT KULLANIMI

MAKÜ YAZ OKULU YARDIM DOKÜMANI 1. Yaz Okulu Ön Hazırlık İşlemleri (Yaz Dönemi Oidb tarafından aktifleştirildikten sonra) Son aktif ders kodlarının

ORACLE VERĐTABANINDA TABLO ve INDEX SIKIŞTIRMA

DĐNAMĐK ve STATĐK SQL KULLANMANIN PERFORMANSA ETKĐSĐ

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI YÜZEY DOLDURMA TEKNİKLERİ

Resim 1: Kongre katılımı (erken kayıt + 4 günlük kongre oteli konaklaması) için gereken miktarın yıllar içerisindeki seyri.

Yandaki resimlerde Excel Pazartesi den başlayarak günleri otomatik olarak doldurmuştur.

SQL'e Giriş 2. CREATE TABLE tabloadı (kolon isimleri ve veri türleri) (BOLUM_NO NUMBER, BOLUM_ADI CHAR(10));

Temel Bilgisayar Programlama

ALPHA ALTIN RAPORU ÖZET 26 Ocak 2016

PCTFREE - PCTUSED ORACLE DEĞERLERĐ

BÖLÜM 11. YAPISAL SORGULAMA DİLİ (SQL) Amaçlar:

B02.8 Bölüm Değerlendirmeleri ve Özet

DEVLET KATKI SİSTEMİ Devlet katkısı nedir? Devlet katkısı başlangıç tarihi nedir? Devlet katkısından kimler faydalanabilir?

ALPHA ALTIN RAPORU ÖZET 10 Kasım 2015

OYUN GELİŞTİRME AŞAMALARI-I. Oyununuzun senaryosunu kısaca tanıtınız/ amacınıda belirtiniz:

Brexit ten Kim Korkar?

TEKNOLOJİ VE TASARIM

Bilgisayar Uygulamaları PSİ105

ANKARA EMEKLİLİK A.Ş GELİR AMAÇLI ULUSLARARASI BORÇLANMA ARAÇLARI EMEKLİLİK YATIRIM FONU ÜÇÜNCÜ 3 AYLIK RAPOR

Veri Toplama Yöntemleri. Prof.Dr.Besti Üstün

Dikkat! ABD Enerji de Yeni Oyun Kuruyor!

ÖZEL İLETİŞİM VERGİSİ GENEL TEBLİĞİ (SERİ NO: 14) BİRİNCİ BÖLÜM

ÖZEL İLETİŞİM VERGİSİ GENEL TEBLİĞİ (SERİ NO: 14) BİRİNCİ BÖLÜM Amaç, Kapsam ve Dayanak

DOKÜMAN YÖNETİM SİSTEMİ KULLANIMI GELEN EVRAK

BİR SAYININ ÖZÜ VE DÖRT İŞLEM

M i m e d ö ğ r e n c i p r o j e l e r i y a r ı ş m a s ı soru ve cevapları

ORACLE INDEX SIKIŞTIRMA TEKNĐKLERĐ

Topoloji değişik ağ teknolojilerinin yapısını ve çalışma şekillerini anlamada başlangıç noktasıdır.

BLACKBERRY BİREYSEL AKILLI TELEFON KAMPANYA TAAHHÜTNAMESİ

Uzem Eğitmen Girişi. Şekil 1. Sisteme girdikten sonra Şekil 2 deki ekran karşımıza çıkacak. Bu ekrandaki adımları kısaca tanıyalım.

Ekim. Günlük Araştırma Bülteni Gün Sonu RAPORU

ENFLASYON ORANLARI

fırça, rulo, cırcır vasıtasıyla elyafa yedirilir. Maliyeti en düşük

OPERATÖRLER BÖLÜM Giriş Aritmetik Operatörler

İnşaat Sanayi KSO da buluştu

ADANA BÜYÜKŞEHİR BELEDİYESİ KENTSEL DÖNÜŞÜM PROJELERİ

Başbakanlık (Hazine Müsteşarlığı) tan:

Unutulmuş Özellikler: Oracle Veritabanına Yaptığınız Yatırımı Sonuna Kadar Kullanın

LG BİREYSEL AKILLI TELEFON KAMPANYA TAAHHÜTNAMESİ

a) Birim sorumluları: Merkez çalışmalarının programlanmasından ve uygulanmasından sorumlu öğretim elemanlarını,

Binalarda Enerji Verimliliği ve AB Ülkelerinde Yapılan Yeni Çalışmalar

TEŞEKKÜR Bizler anne ve babalarımıza, bize her zaman yardım eden matematik öğretmenimiz Zeliha Çetinel e, sınıf öğretmenimiz Zuhal Tek e, arkadaşımız

Vodafone Telekomünikasyon A.Ş. ye,

Nebim Winner Ayarları

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

Para Arzı. Dr. Süleyman BOLAT

ÖĞRENME FAALĠYETĠ GELĠġMĠġ ÖZELLĠKLER

Akreditasyon Çal malar nda Temel Problemler ve Organizasyonel Bazda Çözüm Önerileri

BÖLÜM 7 BİLGİSAYAR UYGULAMALARI - 1

HİZMET ALIMLARINDA FAZLA MESAİ ÜCRETLERİNDE İŞÇİLERE EKSİK VEYA FAZLA ÖDEME YAPILIYOR MU?

1. YAPISAL KIRILMA TESTLERİ

Digifresh Kullanım Kılavuzu

Expert modülleri üretiminizi optimize eder. Expert Systemtechnik GmbH. Türkçe. Dö emeli mobilyalar

ETKİLEŞİMLİ TAHTA KORUMA SİSTEMİ KURULUM

SÜREÇ YÖNETİMİ VE SÜREÇ İYİLEŞTİRME H.Ömer Gülseren > ogulseren@gmail.com

OKUL BAZLI BÜTÇELEME KILAVUZU

İZMİR KÂTİP ÇELEBİ ÜNİVERSİTESİ ENGELSİZ ÜNİVERSİTE KOORDİNATÖRLÜĞÜ VE ENGELLİ ÖĞRENCİ BİRİMİ ÇALIŞMA USUL VE ESASLARI BİRİNCİ BÖLÜM

SİRKÜLER. 1.5-Adi ortaklığın malları, ortaklığın iştirak halinde mülkiyet konusu varlıklarıdır.

:30 Adı-Soyadı:... No:... NOT:...

CİHAZ TAKSİTLİ M2M KAMPANYA TAAHHÜTNAMESİ

SERMAYE ġġrketlerġnde KAR DAĞITIMI VE ÖNEMĠ

Şekil 1. Sistem Açılış Sayfası

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

Hızlı Başlangıç Rehberi. Türkçe VTE-1016

Startup ve Shutdown Yöntemleri. ORACLE STARTUP ve SHUTDOWN YÖNTEMLERİ

VODAFONE M2M YAZARKASA SERVİSİ KAMPANYASI TAAHHÜTNAMESİ

AKENR ENDEKS ÜZERİNDE GETİRİ Yükselme Potansiyeli: 26% Akenerji 3Ç13 Bilgilendirme Notları

BÖLÜM 3 FREKANS DAĞILIMLARI VE FREKANS TABLOLARININ HAZIRLANMASI

ENF TEMEL BİLGİSAYAR BİLİMLERİ Eğitim/Öğretim Yılı Bahar Dönemi DÖNEM SONU LAB. ÖDEV TESLİM DUYURUSU

Digitus un alışılmış kutu tasarımı Powerline Wireless 300N Access Point in kutusu için de geçerli. Ürünün ön kısmında yeşil ve beyaz renkler

VEZNE PROGRAMINDA POSTA ÜCRETİ İLE İLGİLİ YAPILAN DÜZENLEMELER (Vezne Sürüm: )

FATURANI PAYLAŞ TARİFE KAMPANYASI BİREYSEL ABONE (ÇALIŞAN)

Q-BIZ VIEWER KULLANIM KILAVUZU

Transfer fiyatlandırma:maliyet dağıtım anlaşmalarıve grup içi hizmet giderleri paylaşımı

5. ÜNİTE KUMANDA DEVRE ŞEMALARI ÇİZİMİ

SCANIA RAMAZANI ve BAYRAMI ERKEN KUTLUYOR. YAKIT ENJEKTÖRÜ KAMPANYASI

Anonim Verilerin Lenovo ile Paylaşılması. İçindekiler. Harmony

İşte sınavla öğrenci alan liselerin kontenjanları

YÜKSEKÖĞRETİM KURUMLARI ENGELLİLER DANIŞMA VE KOORDİNASYON YÖNETMELİĞİ (1) BİRİNCİ BÖLÜM. Amaç, Kapsam, Dayanak ve Tanımlar

EPKAS (ELEKTRONİK PROJE KONTROL ARŞİVLEME SİSTEMİ) WEB KULLANIM KILAVUZU

ve Menüleri Özelleştirmek, Sistem Ayarlarını Değiştirmek

Doç.Dr.Mehmet Emin Altundemir 1 Sakarya Akademik Dan man

İKİNCİ BÖLÜM. Amaç, Kapsam, Tanımlar ve İstisnalar

DİCLE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ STAJ UYGULAMA ESASLARI 1. GENEL HUSUSLAR

Dünya Çavdar ve Yulaf Pazarı

DERS SOSYOLOJİ KONU SOSYOLOJİNİN ARAŞTIRMA YÖNTEM VE TEKNİKLERİ

5510 sayılı SGK kanunu hakkında duyurular

MUHASEBE SÜRECİ. Dönem Başındaki İşlemler. Dönem İçinde Yapılan İşlemler. Dönem Sonunda Yapılan İşlemler

1-Sabit diskler 2-Hafıza kartları 3-USB flash Diskler 4-CD-ROM- DVD-Blueray 5-Hafıza ölçümü 6-Bilgisayar performansı DEPOLAMA

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

K12NET Eğitim Yönetim Sistemi

BQ360 Modbus Dijital Giriş 24 Kanal. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

int printf (const char *format [, argument,...]);

Almanya dan Bir Örnek WESER-EMS UNION

BANKA MUHASEBESİ 0 DÖNEN DEĞERLER HESAP GRUBU

B E Y K E N T Ü N İ V E R S İ T E S İ S O S Y A L B İ L İ M L E R E N S T İ T Ü S Ü İ Ş L E T M E Y Ö N E T İ M İ D O K T O R A P R O G R A M I

PostgreSQL ve PL/pgSQL

İÇİNDEKİLER. 1 Projenin Amacı Giriş Yöntem Sonuçlar ve Tartışma Kaynakça... 7

LABORATUVARIN DÖNER SERMAYE EK ÖDEME SİSTEMİNE ETKİSİ. Prof. Dr. Mehmet Tarakçıoğlu Gaziantep Üniversitesi

Transkript:

Exadata Üzerinde Veri Sıkıştırma Yöntemleri 1

İçindekiler 1. Advanced Compression ve Hybrid Columnar Compression... 3 2. Hybrid Columnar Compression i özel kılan nedir?... 3 3. Dikkat edilmesi gerekenler... 3 4. Sıkıştırma Yöntemleri... 4 5.Test Tablosunun Hazırlanması... 5 6.Sıkıştırma Öncesi Tahmin... 5 7.Sıkıştırma Testi... 7 8.Daha efektif sıkıştırma... 10 2

1. Advanced Compression ve Hybrid Columnar Compression Veri sıkıştırma, günümüz teknolojisinin olmazsa olmazıdır. Oracle veritabanında da yıllardır bu özelliği kullanıyoruz. Ancak 11g ye kadar sıkıştırma yaparken, düşünmemiz gereken çeşitli kıstaslarımız vardı. Toplu kayıt girişleri (bulk insert) yapıldığında, bu özelliği append hint i vererek efektif biçimde kullanabiliyorduk. Tek tek, satır satır gelen insert ler içinse maalesef veriyi sıkıştırma şansımız yoktu. Oracle 11g ile birlikte Advanced Compression ile tanıştık. Advanced compression ile birlikte, teker teker gelen insert ler sorun olmaktan çıktı. Artık onları da sıkıştırabiliyorduk. Ancak sıkıştırma teknolojisindeki bütün ilerleme bununla sınırlı değildi. Exadata ile birlikte Hybrid Columnar Compression özelliğiyle tanıştık. Bu özellik sayesinde, veriyi artık sütun bazlı sıkıştırabiliyoruz. 2. Hybrid Columnar Compression i özel kılan nedir? Oracle da veri sıkıştırma block içinde yapılır. Block içindeki satırlar incelenir ve benzer pattern lara sahip değerler, pointer larla ifade edilir. Çok basit bir örnek üzerinden gidelim ve AD/SOYAD sütunlarından oluşan bir tablomuzun olduğunu düşünelim. AHMET ÇELEBİ, MEHMET ÇELEBİ yazmak yerine A[*] ve ME[*] şeklinde ifade etsek ve * işaretçisinin HMET ÇELEBİ olduğunu farz etsek, burada bir yer kazanacağımız muhakkak. İşaretlerle ifadenin block içinde defalarca kere tekrar edileceğini düşünürsek, yer kazancı daha da artacaktır. Fakat daha efektif bir yöntem de kullanılabilir. Sütun bazlı tekrarın olması, satır bazlı tekrara göre çok daha yüksek bir olasılığa sahiptir. Bu yüzden satır bazında benzer pattern ları kullanmak yerine, sütun bazında bir sıkıştırma yapılması, sıkıştırma oranını daha yüksek rasyolara çıkartır. HCC yi özel kılan da, sıkıştırma tekniğinden dolayı kazandığımız yüksek kazanım oranıdır. 3. Dikkat edilmesi gerekenler Devam etmeden önce ufak bazı bilgilendirmeler yapmam gerekiyor. Advanced Compression kullanmak için bu lisansa sahip olmak gerekmektedir. HCC içinse ek bir lisans gerekmez ancak kullanılacak sistemin HCC yi desteklemesi istenir. Sütuın bazlı sıkıştırmayı kullanabilmek için Exadata, ZFS Storage Appliance (ZFSSA) veya 3

Pillar Axiom gibi bir donanıma sahip olmalısınız. Standart bir disk sistemleri üzerinde maalesef bu özelliği kullanamıyoruz. Bu konunun bir yönü daha var: Asıl ortamınız Exadata olurken; standby ortamınız non-exadata bir makine olabilir. Exadata ortamında HCC tablolarınız varsa, bu tablolar exadata olmayan standby ortama yansır. Fakat sütun bazlı sıkıştırılmış tabloları okumak için standby ortamda veriyi önce uncompress etmeniz gerekecektir. Yalnız tekrar edeyim; standby ortamınız Exadata, ZFSSA veya Pillar Axiom kullanıyorsa, uncompress etmeden ve hiçbir ek iş yapmadan tablolarınızı okuyabilirsiniz. Bir diğer önemli konuysa, bu özelliğin sık güncellenen tablolarda kullanılmaması gerekliliği... Sıkıştırılması istenen tablonun sütunları, Compression Unit adı verilen aşağıdakine benzer mantıksal yapılarda tutulur. Bir silme veya güncelleme işlemi yapıldığında, sıkıştırma ünitesini tamamen kilitlersiniz. Yani bir satır silmenin bedeli, sıkıştırma performansına göre 10bin satırı tutmak anlamına gelebilir. OLTP ortamda, yoğun kullanımlı bir tabloda böyle bir yaklaşım pek uygun olmaz. Veri ambarı projelerindeyse, bu durum zaten sorun olmaz. 4. Sıkıştırma Yöntemleri Toplam 6 çeşit sıkıştırma yöntemimiz bulunuyor: 1. Basic: Çok uzun zamandır kullandığımız standart sıkıştırma yöntemi. 2. OLTP: Oracle 11 ile birlikte çıkan ve OLTP ortamlarında kullanılabilen sıkıştırma yöntemi. 3. QUERY LOW (Exadata): Sıkıştırmanın getirdiği yüke dikkat edilmesi gerekli ortamlarda kullanılan sıkıştırma yöntemi. 4. QUERY HIGH (Exadata): Disk kazanımının önemli olduğu durumlarda tercih ettiğimiz sıkıştırma yöntemi. 4

5. ARCHIVE LOW (Exadata): Arşiv verisinin nispeten az iş yükü yaratarak, sıkıştırılması istendiği durumlarda kullandığımız sıkıştırma yöntemi. 6. ARCHIVE HIGH (Exadata): Arşiv verisinin olabildiğince yüksek oranda sıkıştırılması amacıyla kullanılan sıkıştırma yöntemi. (Disk kazanımı maksimum olmakla birlikte, sıkıştırma işinin en yoğun yük yarattığı yöntemdir.) 5.Test Tablosunun Hazırlanması Aşağıdaki gibi bir test tablosu yaratıp, içini veriyle dolduralım. Testlerimiz açısından tablonun bir milyon satırın üstünde olması gerektiğinden insert ifadelerini birkaç kere çalıştırıyoruz. CREATE TABLE SYSTEM.DENEME_0_NOCOMPRESSION NOCOMPRESS NOLOGGING AS SELECT * FROM DBA_OBJECTS; INSERT INTO SYSTEM.DENEME_0_NOCOMPRESSION --... INSERT INTO SYSTEM.DENEME_0_NOCOMPRESSION commit; Tablo boyutu ve satır sayısı, ortamdan ortama farklılık gösterecektir. Benim yaptığım çalışmadaysa, 2.976.048 satıra sahip, 272MB boyutunda bir tablo elde ettim. 6.Sıkıştırma Öncesi Tahmin Tabloyu gerçekten sıkıştırmadan, sıkıştırmanın bize neler sağlayacağını görebiliriz. Bunun için DBMS_COMPRESSION paketini kullanıyoruz. Tabloyla ilgili bilgileri verdikten sonra, hangi sıkıştırma yöntemini kullanmak istediğimizi belirtiyoruz. Sonrasında bu paket aracılığıyla hesaplamalar yapılıyor ve ne kadar kazanım elde edeceğimizi buluyoruz. Esasında paket tarafından yapılan işlem örnekleme yaparak, temp tablo oluşturmak gibi duruyor. Temp tablo, işlem sonunda da drop ediliyor. Bütün süreç kendiliğinden ve dinamik bir şekilde yürüyor. Aşağıdaki örnekte, SYSTEM tablespace inde bulunan DENEME_0_COMPRESSION tablosunun Query High biçiminde sıkıştırılmasının neler kazandıracağına bakıyoruz. 5

set serveroutput on declare v_scratchtbsname v_ownname v_tabname v_partname v_comptype v_blkcnt_cmp v_blkcnt_uncmp v_row_cmp v_row_uncmp v_cmp_ratio v_comptype_str varchar2(32) := 'SYSTEM'; varchar2(32) := 'SYSTEM'; varchar2(32) := 'DENEME_0_NOCOMPRESSION'; varchar2(32) := null; number(10,0) := DBMS_COMPRESSION.COMP_FOR_QUERY_HIGH; pls_integer; pls_integer; pls_integer; pls_integer; number; varchar2(4000); begin end; / DBMS_COMPRESSION.GET_COMPRESSION_RATIO ( Scratchtbsname => v_scratchtbsname, ownname => v_ownname, tabname => v_tabname, partname => v_partname, comptype => v_comptype, blkcnt_cmp => v_blkcnt_cmp, blkcnt_uncmp => v_blkcnt_uncmp, row_cmp => v_row_cmp, row_uncmp => v_row_uncmp, cmp_ratio => v_cmp_ratio, comptype_str => v_comptype_str ); dbms_output.put_line('sıkıştırılan block adedi :' v_blkcnt_cmp); dbms_output.put_line('sıkıştırılmayan block adedi : ' v_blkcnt_uncmp); dbms_output.put_line('sıkıştırılan block başına satır adedi : ' v_row_cmp); dbms_output.put_line('sıkıştırılmamış block başına satır adedi : ' v_row_uncmp); dbms_output.put_line('sıkıştırma oranı :' v_cmp_ratio); dbms_output.put_line('kazanım (%) :' round((v_blkcnt_uncmp-v_blkcnt_cmp)/v_blkcnt_uncmp*100,2)); dbms_output.put_line('yöntem : ' v_comptype_str); Compression Advisor self-check validation successful. select count(*) on both Uncompressed and EHCC Compressed format = 1000001 rows Sıkıştırılan block adedi :672 Sıkıştırılmayan block adedi : 12769 Sıkıştırılan block başına satır adedi : 1488 Sıkıştırılmamış block başına satır adedi : 78 Sıkıştırma oranı :19 Kazanım (%) :94.74 Yöntem : "Compress For Query High" PL/SQL procedure successfully completed. Tahmine göre %94.74 lük bir kazanımımız var. Yani sıkıştırma sonrasında tablo boyutunun 14MB a düşmesini bekliyoruz. (272MB x (100-94.74) / 100 = 14.3 MB) Diğer sıkıştırma yöntemlerine göre tablonun ne kadara düşeceğini de çıkarttım: 6

1. Compress For OLTP : 94MB 2. Compress For Query Low : 39MB 3. Compress For Query High : 14MB 4. Compress For Archive Low : 14MB 5. Compress For Archive High : 14MB Peki, BASIC compression için tahminde bulunma şansımız var mı? Biraz daha zahmetli olmak kaydıyla, DMBS_COMPRESSION paketine benzer bir yöntem izleyebiliriz. Önce toplam satır sayısını çıkartırız. SELECT COUNT(*) FROM SYSTEM.DENEME_0_NOCOMPRESSION; COUNT(*) ---------- 2976048 Sıkıştırma tahmininde kullanacağımız satır sayımız, 1.000.000 satır olacak şekilde kabul etmeliyiz. Bir milyon satır, toplam satır sayısının 1/3 üne denk geliyor. Örnekleme yaparak, tablonun üçte birinden (%33) bir tablo yaratıyoruz. CREATE TABLE SYSTEM.DENEME_1_BASIC_INTERIM NOLOGGING COMPRESS as SAMPLE( 33 ); -- << 1000000/2976048 INTERIM olarak yaratılan bu tablonun boyutu 34MB oluyor. Üçte birinin 34MB olduğunu düşünürsek, bütün tablonun 102MB olacağını tahmin edebiliriz. (Bu arada öbelirtmek isterim ki, tablo basic compression ile tamamen sıkıştırıldığında 96MB oluyor. %33 üzerinden giderek başarılı bir tahmin elde ettik.) 7.Sıkıştırma Testi Sıkıştırma tahminlerimizi yaptıktan sonra, sıkıştırma testlerine başlayabiliriz. Çalışmamızda, var olan tabloyu bozmadan, farklı sıkıştırma teknikleriyle kopyalarını üreteceğiz. Her SQL ifadesinin altında yazan Elapsed değeri, o işlemin gerçekte ne kadar sürdüğünü gösteriyor. 7

SET TIMING ON CREATE TABLE SYSTEM.DENEME_1_BASIC_COMPRESSION NOLOGGING COMPRESS as -- Elapsed: 00:00:06.79 CREATE TABLE SYSTEM.DENEME_2_OLTP_COMPRESSION NOLOGGING COMPRESS FOR OLTP as -- Elapsed: 00:00:06.67 CREATE TABLE SYSTEM.DENEME_3_QUERYLOW_COMPRESSION NOLOGGING COMPRESS FOR QUERY LOW as -- Elapsed: 00:00:03.95 CREATE TABLE SYSTEM.DENEME_4_QUERYHIGH_COMPRESSION NOLOGGING COMPRESS FOR QUERY HIGH as -- Elapsed: 00:00:10.28 CREATE TABLE SYSTEM.DENEME_5_ARCHLOW_COMPRESSION NOLOGGING COMPRESS FOR ARCHIVE LOW as -- Elapsed: 00:00:10.81 CREATE TABLE SYSTEM.DENEME_6_ARCHHIGH_COMPRESSION NOLOGGING COMPRESS FOR ARCHIVE HIGH as -- Elapsed: 00:00:55.30 Kullanılan yönteme göre boyut ve sürelerin değerlerini, aşağıdaki tabloda görebilirsiniz. Ayrıca daha rahat mukayese için tahmini sıkıştırma değerlerini de tabloya ekledim. Farkedeceğiniz gibi tahmin ve gerçek sıkıştırma sonuçları arasında yüksek bir fark olmadığı görülüyor. SEGMENT_NAME ESTIMATED_SIZE_MB REAL_SIZE_MB ELAPSED_TIME ----------------------------------- ------------------- ------------- ------------- DENEME_0_NOCOMPRESSION 272 272 00:00:00.00 DENEME_1_BASIC_COMPRESSION 102 96 00:00:06.79 DENEME_2_OLTP_COMPRESSION 94 104 00:00:06.67 DENEME_3_QUERYLOW_COMPRESSION 39 43 00:00:03.95 DENEME_4_QUERYHIGH_COMPRESSION 14 16 00:00:10.28 DENEME_5_ARCHLOW_COMPRESSION 14 16 00:00:10.81 DENEME_6_ARCHHIGH_COMPRESSION 14 15 00:00:55.30 8

Sıkıştırma işleminin boyut kazandırmak dışında performansı arttırmaya yönelik artısı da vardır. Artık daha az block okunacağı için, I/O miktarı azalır ve bu da performansa yansır. Aşağıda aynı veriyi sorgulayan SQL ifadelerinin, Execution plan ları bulunmaktadır. Sıkıştırma miktarı arttıkça, cost un giderek düştüğü görülür. SELECT COUNT(*) FROM SYSTEM.DENEME_0_NOCOMPRESSION ----------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------- 0 SELECT STATEMENT 1 18 9292 (1) 00:01:52 1 SORT AGGREGATE 1 18 * 2 TABLE ACCESS STORAGE FULL DENEME_0_NOCOMPRESSION 5 90 9292 (1) 00:01:52 ----------------------------------------------------------------------------------------------------- SELECT COUNT(*) FROM SYSTEM.DENEME_1_BASIC_COMPRESSION --------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------- 0 SELECT STATEMENT 1 79 3244 (1) 00:00:39 * 2 TABLE ACCESS STORAGE FULL DENEME_1_BASIC_COMPRESSION 130 10270 3244 (1) 00:00:39 --------------------------------------------------------------------------------------------------------- SELECT COUNT(*) FROM SYSTEM.DENEME_2_OLTP_COMPRESSION -------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------- 0 SELECT STATEMENT 1 79 3608 (1) 00:00:44 * 2 TABLE ACCESS STORAGE FULL DENEME_2_OLTP_COMPRESSION 145 11455 3608 (1) 00:00:44 -------------------------------------------------------------------------------------------------------- SELECT COUNT(*) FROM SYSTEM.DENEME_3_QUERYLOW_COMPRESSION 0 SELECT STATEMENT 1 79 1510 (2) 00:00:19 * 2 TABLE ACCESS STORAGE FULL DENEME_3_QUERYLOW_COMPRESSION 60 4740 1510 (2) 00:00:19 SELECT COUNT(*) FROM SYSTEM.DENEME_4_QUERYHIGH_COMPRESSION - - 0 SELECT STATEMENT 1 79 565 (5) 00:00:07 * 2 TABLE ACCESS STORAGE FULL DENEME_4_QUERYHIGH_COMPRESSION 63 4977 565 (5) 00:00:07 - SELECT COUNT(*) FROM SYSTEM.DENEME_5_ARCHLOW_COMPRESSION ----------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------- 0 SELECT STATEMENT 1 79 576 (7) 00:00:07 * 2 TABLE ACCESS STORAGE FULL DENEME_5_ARCHLOW_COMPRESSION 22 1738 576 (7) 00:00:07 ----------------------------------------------------------------------------------------------------------- SELECT COUNT(*) FROM SYSTEM.DENEME_6_ARCHHIGH_COMPRESSION 0 SELECT STATEMENT 1 79 553 (8) 00:00:07 * 2 TABLE ACCESS STORAGE FULL DENEME_6_ARCHHIGH_COMPRESSION 30 2370 553 (8) 00:00:07 9

Şimdi de ifadeleri gerçekten çalıştıralım: SQL> SELECT COUNT(*) FROM SYSTEM.DENEME_0_NOCOMPRESSION -- Elapsed: 00:00:00.17 SQL> SELECT COUNT(*) FROM SYSTEM.DENEME_1_BASIC_COMPRESSION -- Elapsed: 00:00:01.09 SQL> SELECT COUNT(*) FROM SYSTEM.DENEME_2_OLTP_COMPRESSION -- Elapsed: 00:00:01.06 SQL> SELECT COUNT(*) FROM SYSTEM.DENEME_3_QUERYLOW_COMPRESSION -- Elapsed: 00:00:01.50 SQL> SELECT COUNT(*) FROM SYSTEM.DENEME_4_QUERYHIGH_COMPRESSION -- Elapsed: 00:00:00.36 SQL> SELECT COUNT(*) FROM SYSTEM.DENEME_5_ARCHLOW_COMPRESSION -- Elapsed: 00:00:00.40 SQL> SELECT COUNT(*) FROM SYSTEM.DENEME_6_ARCHHIGH_COMPRESSION -- Elapsed: 00:00:01.00 İfadelerin çalışma sürelerine bakarsak, sıkıştırma arttıkça çalışma sürelerinde paralel bir düşüş olmamıştır. Aynı testi cell_offload_processing i kapatıp, tekrar edersek, sıkıştırma seviyesi arttıkça, ifadelerin çalışma süreleri düşecektir. 8.Daha efektif sıkıştırma Sütun bazlı sıkıştırmayı daha verimli kullanmak için, sütunları sıralayabiliriz. SET TIMING ON CREATE TABLE SYSTEM.DENEME_1_BASIC_COMPRESS2 NOLOGGING COMPRESS as -- Elapsed: 00:00:07.67 CREATE TABLE SYSTEM.DENEME_2_OLTP_COMPRESS2 NOLOGGING COMPRESS FOR OLTP as -- Elapsed: 00:00:07.75 CREATE TABLE SYSTEM.DENEME_3_QUERYLOW_COMPRESS2 NOLOGGING COMPRESS FOR QUERY LOW as -- Elapsed: 00:00:07.23 10

CREATE TABLE SYSTEM.DENEME_4_QUERYHIGH_COMPRESS2 NOLOGGING COMPRESS FOR QUERY HIGH as -- Elapsed: 00:00:09.75 CREATE TABLE SYSTEM.DENEME_5_ARCHLOW_COMPRESS2 NOLOGGING COMPRESS FOR ARCHIVE LOW as -- Elapsed: 00:00:09.10 CREATE TABLE SYSTEM.DENEME_6_ARCHHIGH_COMPRESS2 NOLOGGING COMPRESS FOR ARCHIVE HIGH as -- Elapsed: 00:00:26.65 Yarattığımız tabloların boyutlarını kontrol edelim: select segment_name,bytes/1024/1024 as mb from user_segments where segment_name like 'DENEME%COMPRESS2' OR segment_name in ('DENEME_0_NOCOMPRESSION') order by 1; SEGMENT_NAME MB -------------------------------------- ---------- DENEME_0_NOCOMPRESSION 272 DENEME_1_BASIC_COMPRESS2 41 DENEME_2_OLTP_COMPRESS2 45 DENEME_3_QUERYLOW_COMPRESS2 4 DENEME_4_QUERYHIGH_COMPRESS2 3 DENEME_5_ARCHLOW_COMPRESS2 3 DENEME_6_ARCHHIGH_COMPRESS2 2 Sorgu sonucuna göre, 272MB lık tablo, sıkıştırma sonunda sadece 2MB a düşüyor. Görüldüğü gibi veriyi sıralama imkanı varsa, bunun getireceği kazanım hâyli yüksek oluyor. 11