6 – Oracle Tabloları

Oracle Eğitimleri - Oracle Tablolar

Tablo Tipleri

Oracle’da 9 ana tablo tipi bulunmaktadır, bunlar:

Heap Organized Tables: Bunlar standart database tablolarıdır. Veriler yığın şeklinde yönetilmektedir. Bir veri ekleme işlemi yapıldığında free space alanda ilk bulunan segment kullanılır, yani ardışık yazma söz konudur. Eğer bir segmentteki veriler silinirse bu segment başka datalar içinde rastgele kullanılacaktır. İşte bu tür bir saklama yöntemine heap (yığın) denmektedir.

Şeklinde bir tablo create etmek istediğimizde aslında bir heap organized table oluşturmuş oluruz.

Index Organized Tables: Bu tablolar index yapısına göre saklanırlar. Bu bir fiziksel düzeni ifade etmektedir. Tablo içerisinde index yapılmış alanlara göre datalar uygun fiziksel sırayla saklanırlar. Index table primary key’e sahip tablolardır ve primary key’e göre dataları sıralı bir şekilde saklarlar.

Index Clustered Tables: Cluster gruplar bir veya daha fazla tablodan oluşurlar. Fiziksel olarak depolanan bu tabloların her bir satırı paylaşılan cluster anahtar değerine göre aynı data block’larında saklanırlar. Temelde bu yapı birden fazla tabloyu bir data block içerisinde toplayabilmek içindir. Örneğin UrunID = 210 cluster anahtar değerine sahip tüm veriler fiziksel olarak bir arada saklanmaktadır. Burada B*Tree index hiyerarşisi kullanılmaktadır. SQL Server’a aşina olanlar için bu bir fikir verecektir.

Hash Clustered Tables: Index Clustered Table’a benzer; fakat B*Tree hiyerarşisini sadece bulmak için kullanır, yani fiziksel olarak bu şekilde saklanmazlar, hash cluster key kullanırlar ve bir karma küme oluşturan verileri bir block haline getirir. Sık okuma yapılan tabloların bu şekilde oluşturulması faydalı olacaktır.

Sorted Hash Clustered Tables: Oracle 10g ile gelmiş yeni özelliklerden biridir. Hash table yapısında saklanan dataları farklı taraflarından birleştirmenizi sağlar. Mesela ID kolonuna göre hash cluster yapılmış bir yapının yanında timestamp türü bir tarih’e göre de ek bir sort işlemi yapar.

Nested Tables: Bu yapı Oracle’da object – relation yapısının bir uzantısıdır. Nested (yani iç içe) tablolar dışarıdan ulaşılmasını istemediğiniz bir yapı için elverişlidir. Temelde bir tablo içerisindeki bir kolonun verisini başka bir tablo içinde tutuyor olursunuz. Tek başlarına sorgulanmak istediklerinde herhangi bir sonuç döndürmedikleri için veriye direk erişim söz konusu değildir. Temelde array gibi hareket ederler.

Temporary Tables: Temp tablolar oturum bazında oluşturulan izole tablolardır. Yaşam süresi session süresi ile sınırlıdır. Temp tablo içindeki datalara başka bir kullanıcı erişemez. Temelde bellekte tutup işlem yapmak istediğimiz dataları user tablespace üzerinde geçici bir tablo oluşturarak tutmamızı ve erişmemizi sağlar.

Object Tables: Bu tablolar bir obje türüne göre oluşturulurlar. Oluşturulan tablonun her bir row’u için REF (object identifier) bilgisi sistem tarafından oluşturulur. Bu yapısı sayesinde Heap Organized, Index Organized, temp tabloları bir arada içerebilir.

External Tables: Bu tablolar database içinde saklanmazlar, işletim sisteminde herhangi bir yerde tutulurlar. Özellikle veri taşımayı kolaylaştırması açısından tercih edilirler. Meta datalarını kendi içlerinde tuttukları için bu tabloları taşımak oldukça kolaydır.

Şimdi tablolar hakkında bazı genel bilgileri açıklayalım.

  • Bir tablo içinde maximum 1.000 kolon olmalıdır, bu sayıdan fazlası olması durumunda verimlilik epeyce düşer. Elbette 1.000 satır olmaması daha iyi olacaktır. Oracle dataları 254’lük parçalar halinde saklar. 254 kolonun üzerine çıktığınızda bunları ayrı parçalarda tutuyor olacak.
  • Oracle’da satır sayısı için bir sınırlama yoktur. Örneğin, bir tablespace içinde 1022 dosya bulunabilir. Bir dosya ise 32 GB büyüklüğünde olabilir. 32 x 1022 = 32.704 GB toplam büyüklüğe sahip olacaktır. Bu da demektir ki her biri 16 KB’lık 2.143.289.344 block’umuz olabilir. Her bir block başına 80 – 100 byte’lık 160 row sığdırılabilir. Bu da toplamda 342.926.295.040 satıra sahip olabileceğiniz anlamına gelmektedir.

Bir single database de dahil tablo sayısında bir sınırlama yoktur. Bütün bir storage tek bir database tarafından kullanılabilir. Teorik olarak milyonlarca tablo oluşturabiliyor olsa da aslında bunu oluşturduktan sonra yönetmek pek mümkün olmadığından dolayı bu sayılara ulaşmak pek olası değildir; ama ciddi bir projede bu sayı binleri rahatlıkla bulacaktır.

Terminoloji

Burada tablolarla ilgili çeşitli storage parametresini ve terminolojisini inceleyeceğiz.

Segment

Bir segment, Oracle içerisinde objeleri disk üzerinde saklamak için kullanılır. Birçok segment türü vardır, en popüler olanları:

Cluster: Bu segment tablo saklayabilir. İki tip cluster’a sahiptir: B*Tree ve Hash. Cluster, birden fazla tabloda ilişkili bulunan dataları bir join öncesinde birleştirip tek bir tablo gibi depolanması için kullanılır. Cluster, ilişkili verileri fiziksel olarak bir arada tutar.

Table: Database’de bulunan tablolar bu segment üzerinde saklanır, en yaygın kullanılan segment türüdür.

Table Partition veya Subpartition: Table segmentine çok benzer, verileri parçalara ayırmak için kullanılır. Bir tablonun belli bir parçasını saklamak üzere kullanılırlar. Bu yapıdaki bir tablo birden fazla partition segmentinde tutulurlar.

Index: Bu segment index yapısını saklar. En yaygın kullanılan ikinci segment türüdür.

Index Partition: Table Partition’a benzerdir. Partition yapılmış bir index birden fazla Index Partition segmentinde tutulur.

Lob Partition, Lob Subpartition, Lobindex ve Lobsegment: Lobindex ve Lobsegment, large object veya LOB yapısını saklarlar. Bir tabloda partition LOB bulunuyorsa bu Lob Partition da saklanır.

Nested Table: Yukarıda açıklamıştık, parent / child mantığında obje saklar.

Rollback ve Type2 Undo: Undo datalarının saklandığı yerdir. Rollback segmentler DBA’ler tarafından manuel oluşturulurlar; fakat Type2 Undo segmentler Oracle tarafından oluşturulur ve yönetilirler.

Segment Alanının Yönetimi

Oracle 9i ile başladı. Segment alanı iki şekilde yönetilebilmektedir:

Manuel: FREELISTS, FREELIST GROUPS, PCTUSED gibi parametrelerle kullanılarak segment’in alan tahsisi, kullanımı, yeniden kullanımı ile ilgili ayarlar yapılır. Oracle dokümantasyonların bu konuda pek fazla bilgi bulunamıyor.

Automatic: Segment alanının nasıl kullanıldığı ile ilgili bir parametre ayarını yapabilirsiniz, PCTFREE. Başka parametrelerde set edebilirsiniz; ama onlar segment oluşturulduktan sonra yok sayılırlar.

Manuel yöntem Oracle’ın 9i R1 versiyonundan önce kullanılmaktaydı, 9i R1 ile birlikte artık otomatik yönetimi söz konusudur. Otomatik yöntemde Oracle tuning işlemi için parametreleri kendi kontrol eder.

0
0

Patreon

üzerinden bize destek olabilirsiniz!

.

Birlikten kuvvet doğar! Sizde #patreon üzerinden bizim yanımızda olabilirsiniz. Yaptığımız gönüllü çalışmaları arttırmak için bize destek olun.

Ücretli ve Ücretsiz Eğitimler

Türkiye'nin en büyük veri bilimi topluluğu ile kariyerinizi inşa edin.

Data Science Earth

Data Science Earth ekibi, üst düzey Veri Bilim çözümleri üretmek amacı ile toplanmış akademisyenler ve uzmanlardan oluşmaktadır. Öncelikli olarak veri bilincini geliştirmeyi ve küreselleşen rekabet ortamında verinin gücünün doğru kullanılmasını sağlamayı amaçlamaktadır.

Sponsor

QuestionPro 35 farklı soru seçim özelliği ile anket çalışmalarımıza güç katmaktadır.