Oracle Veritabanında SQL İzleme Yöntemleri


Oracle veritabanında çalıştırılan her SQL sorgusu, bir çalıştırma planı (execution plan) doğrultusunda işletilir. Bu plan ile, hangi indekslere (varsa ve uygunsa) erişileceği, hangi tip “join” işlemlerinin gerçekleştirileceğine karar verilir. Çalışma planı, bir yerden bir yere giderken izlenecek birçok yol arasında en hızlı ulaşımı sağlayacak güzergahın seçilmesi olarak da düşünülebilir.
İyi çalışan bir sorgu öncelikle kullanıcıya en uygun sürede hizmetin verilmesi için gereklidir Öte yandan, mevcut donanım kaynaklarının verimli şekilde kullanımı için de sorguların iyi çalışması gerekmektedir. Kötü çalışan bir sorgu; disk, bellek ve CPU açısından da darboğazlara yol açabilmektedir. Sorgular üzerinde bazı hallerde yapılacak ufak rötuşlar bile çok önemli performans kazançları sağlayabilmektedir.

Bir SQL sorgusunun iyileştirilmesini çeşitli koşullar tetikleyebilir. Bunlar arasında kullanıcı tarafından işlemin uzun sürdüğü şeklinde yapılan geri bildirimler olabileceği gibi, yapılan izleme, istatistik toplama çalışmaları kapsamında sorgunun fazla kaynak kullandığının tespit edilmesi de yer alabilir. Üzerinde çalışılması gereken sorguya karar verildiğinde, inceleme ve test çalışmalarının, olabildiği ölçüde uygulamadan ve diğer ara katmanlardan bağımsız olarak gerçekleştirilmesi yararlı olacaktır. Buradaki amaç uygulamanın kendi yapısından kaynaklanan farklı işlemleri devre dışı bırakarak, sadece SQL’in optimizasyonuna yoğunlaşılmasıdır. Bu nedenle, kullanılan izleme araçları ile, sorunlu olduğu düşünülen SQL sorgusu tespit edildikten sonra doğrudan sorgu üzerinde çalışılmalıdır.

Sorgularda dikkat edilmesi gereken bir diğer husus da, “literal” veya “bind” kullanımıdır. “Literal”de, aşağıdaki örnekte olduğu gibi, where koşulu içinde bir değer (value) belirtilmiştir. (devamı..)

Loading


Dosya Sistemi Oluşturma – mkfs


Dosya sistemi oluşturmak için mkfs komutu kullanılır. Ön tanımlı olarak mkfs komutu ext2 linux dosya sistemi formatında disk bölümünü formatlar. Fakat –t parametresi ile diğer dosya sistemleri de oluşturulabilir. Örneğin /dev/sdb1 disk bölümünde MS-DOS formatında disk bölümü oluşturmak için aşağıdaki komut kullanılır.

mkfs –t msdos /dev/sdb1

Aslında mkfs komutu farklı komutlar için bir aracı komut durumundadır. Kendisi herhangi bir dosya sistemi oluşturmaz. Verilen parametreye göre ilgili dosya sistemi oluşturma komutunu çalıştırır. Yukarıdaki örnekteki –t msdos parametresinden dolayı aslında mkdosfs komutunu çalıştırır. –t parametresi verilmediğinde ext2 dosya sistemini ise mke2fs komutunu çalıştırarak oluşturur. Mkfs yerine doğrudan ilgili dosya sistemine ait komutu da çalıştırabilirsiiz. Bu komutlardan bazıları:

mke2fs mkfs.minix mkfs.ext3
mkfs.bfs mkfs.ufs mkfs.ext2
mkdosfs mkfs.xfs mkfs.ext4
mkfs.cramfs mkfs.btrfs mkfs.jfs
mkfs.ext4dev mkfs.msdos mkfs.vfat

 

Örneğin aşağıdaki 3 komutla ext3 dosya sistemi oluşturulabilir.

mkfs –t ext3 /dev/sdb1
mkfs.ext3 /dev/sdb1
mke2fs –j /dev/sdb1

ext4 dosya sistemi oluşturmak istersek;

mkfs.ext4 /dev/sdb1
mke4fs -t ext4 /dev/sdb1

Linux mkfs - Linux Dosya Sistemi Oluşturma
(devamı..)

Loading


fdisk komutu

Fdisk, komut satırı üzerinden kullanılan, güçlü bir disk yönetimi aracıdır. Diskiniz ile ilgili bölme, biçimlendirme, silme, yeni bölüm oluşturma gibi işlemleri Fdisk kullanarak yapabilirsiniz.

Fdisk’in, disklerimiz üzerinde kalıcı değişiklikler yapmamızı sağladığından, root yetkileri ile çalıştırılması gerekiyor.

sudo fdisk /dev/x

Burada x yerine diskinizin ismini yazmalısınız. Eğer IDE ise hda , SCSI ise sda şeklinde olur genelde.

fdisk ile kullanılabilecek parametreler aşağıda gibidir.

Parametre Yaptığı İş
   a açılış flamasını indirir/kaldırır
   b bsd disk etiketini düzenler
   c dos uyumluluk flamasını indirir/kaldırır
   d bir disk bölümünü siler
   l bilinen disk bölümü türlerini listeler
   m bu menüyü gösterir
   n yeni bir disk bölümü ekler
   o yeni bir DOS disk bölümü oluşturur
   p disk bölümleme tablosunu gösterir
   q değişiklikleri kaydetmeden çıkar
   s yeni bir Sun disk etiketi oluşturur
   t disk bölümünün sistem kimliğini değiştirir
   u gösterme/girdi birimini değiştirir
   v disk bölümleme tablosunu doğrular
   w tabloyu diskteki yerine yazar ve çıkar
   x fazladan işlevsellik (uzmanlar için)

Şimdi bir örnek yapacak olursak.

  • fdisk -l komutu ile var olan diskleri ve partitionları görürüz.
  • fdisk /dev/sdb komutu ile fdisk başladı ve bizden komut bekliyor.
  • m komutu ile yardım menüsünü açabilirsiniz. Kullanılan tüm komutların listesini verir.
  • p yazıp enter’a bastığımızda bize bölüm bilgilerini verir.
  • n ile yeni bölüm oluşturabiliriz.
  • p ile primary partion oluşturmak istediğimizi belirttik.
  • 1 ile 4 arasında primary partition umuzu seçeriz.
  • Burada partition ımızın boyutunu ayarlarız cylinder sayısına bölerek de yapabiliriz veya K,M ve G büyüklüklerinide seçebiliriz. Hiçbirşey yazmadan ilerlerseniz müsait olan tüm alanı kullanarak bir disk oluşturur.
  • Tüm değişiklikleri onaylayıp çıkmak için w , vazgeçip çıkmak için ise q komutunu kullanabilirsiniz.

(devamı..)

Loading


Dosya Sistemi İç Yapısı (The UNIX File System Internal Structure)


Dosya sistemi yapısı genel olarak şu bölümlerden oluşur;

  • Superblock
  • Datablock
  • Bootblock
  • inode

Superblock

Dosya sisteminin boyutu gibi, bütünü hakkında bilgiler içeren bölüm. Dosya sisteminin büyüklüğü, başlangıç ve bitiş adresleri, inode tablosu, boş blok tablosu, veri bloklarının başlangıç adresleri gibi bilgileri saklar. Süperblok aynı zamanda dosya sisteminin düzgün olarak kalmasını sağlar, yapısı herhangi bir nedenle bozulursa bozukluğu giderebilecek yazılımların çalışmasını sağlanabilir bu yazılımlar otomatik olarak alınan yedekleri yükler. Aşağıdaki komutla superblock’u ve yedeklerini görebiliriz.

Linux Dosya Sistemi İç Yapısı 1

DataBlock

Dosyalardaki bilgilerin depolanmasını sağlayan kısımdır.

Bootblock

Dosya sisteminin ilk birkaç segmentinde yer almaktadır. Önyükleme bloğu, işletim sistemini yüklemek için kullanılan başlangıç önyükleme programını içerir.

iNode

iNode Index node, kelimelerinin kısaltılmasıdır. Bir dosya sisteminde (ext4,ext3,ntfs vb..) dosyaların saklanma işlemi dosyanın adı ve o ada karşılık gelen eşsiz, benzersiz bir tamsayıdan oluşmaktadır. Dosya sistemindeki her nesne iNode (index node) ile gösterilir. Bunu bir etiket olarak düşünebilirsiniz. File System’de her dosya ve dizinin eşsiz bir iNode numarası bulunur. iNode da dosyanın ismi ve File System ağacında nerede olduğu bilgisi tutulmaz, tutulan bilgiler ise aşağıdaki gibidir;

  • Dosyanın türü
  • Dosyanın izinleri(r-okuma,w-yazma,x-çalıştırma)
  • Dosyanın sahibi ve grubu
  • Dosyanın boyutu
  • Dosyanın Access,change,modification zaman etiketleri
  • Dosyanın silinme zamanı
  • Link sayısı(soft veya hard link)
  • Access Control List(ACL) bilgisi
  • Dosyanın disk üstünde hangi blockta olduğu bilgisi
  • Locking bilgisi,kullanımda olduğu zaman “kullanılıyor diye dosyayı locklar”

(devamı..)

Loading


MYSQL Depoloma Motorları(Storage Engine) ve Farkları

Depoloma motorları, MYSQL’DE farklı tablo türleri için SQL işlemlerini yürüten MYSQL bileşenleridir. InnoDB,  varsayılan ve en genel amaçlı depoloma motorudur. Oracle’da özel kullanım alanları dışında InnoDB kullanılmasını önerir. (MySQL 5.5’den itibaren varsayılan saklama motoru InnoDB’dir. Öncesinde varsayılan saklama motoru MyISAM’dır.)

Sunucunuuzn hangi depolama motorlarını desteklediğini belirlemek için SHOW ENGINES komutunu kullanabiliriz.

MSQL storage engine

 

 

 

Tabloda gördüğümüz gibi bir çıktı elde ederiz. Buradaki sütun adlarını inceleyecek olursak;

  • Engine : depolama motorunun adını içerir.
  • Support : sürücümüz üzerinde desteklenip desteklenmediği içerir.
  • Comment : depolama motoru hakkında kısa bir açıklama içerir.
  • Transactions : transaction yapısını destekleyip, desteklemediği bilgisini içerir.
  • XA : Koordinat tabanlı transaction işlemlerini destekleyip, desteklemediği bilgisini içerir.
  • Savepoints : Yapılan işlemlerin geri alınmasına (rollback) yönelik kayıt noktaları (savepoints) oluşturmayı destekleyip, desteklemediği bilgisini içerir.

Depolama motorları  belirli bir veritabanı tablosundan bilgi çekmeyi tabloda bilgi saklamayı ve tablodaki bilgiyi kontrol etmeyi sağlar.

MySQL sunucusunun mimarisi aşağıdaki şekilde verilmiştir. Verileri kalıcı olarak diske kaydeden, SQL sorgularını çalıştıran ve verileri diskten ya da bellekten derleyip getiren gerçekte depoloma motorlarıdır. Üstelik depoloma motorları eklenip çıkarılabilen bir yapıya sahiptir. MySQL için yazılmış özel kullanım alanları olan çok sayıda üçüncü parti depoloma motorları mevcuttur tokudb, aria.

MSQL depolama motoru

 

 

 

 

 

 

 

 

MySQL 5.7 desteklenen depolama motorları aşağıdaki gibidir.
(devamı..)

Loading


Linux Dosya Sistemleri


Dosya sistemi verilerin nasıl saklanacağını ve tutulacağını belirleyen sistemdir. Bir sabit diskin herhangi bir dosya sistemi ile formatlanması demek, üzerine yazılacak bilgilerin nereye ve hangi standartlara göre yazılacağının belirtilmesi demektir. Formatlama işlemi yapılmamış bir sabit diskin üzerine anlamlı bilgi kümeleri yazmak söz konusu değildir.

Dosyalarımız fiziksel depolama alanları üzerinde tutulur. Bu alanlar bilgisayarımızdaki dahili harddisk , harici hard diskimiz , CD/DVD ROM, SAN, NAS.. gibi biçimlerde olabilir. Peki bu alanlardaki bilgilere nasıl erişiriz sorusunun cevabı File System(Dosya Sistemi) oluyor arkadaşlar. File System olmadan depolama alanına ne bir şey kopyalayabiliriz, ne paylaştırabiliriz, ne güvenlik ve erişimini sağlayabiliriz ne de herhangi bir şekilde kullanabiliriz. İşletim sistemimizin verilere erişimi için yine onun bileceği bir biçimde diski biçimlendirmeliyiz. Yani  Disklerin işletim sistemin kullanabilmesi için çekirdeğin tanıdığı bir formatta olması gerekir.

Windows ailesinde bulunan işletim sistemleri (XP, 2000, ME, 98, vs…) FAT32 ya da NTFS dosya sistemi kullanmaktadır. Linux dağıtımlarıysa seçenekleriniz daha fazladır; ext2, ext3, ReiserFS, jfs, xfs ve daha birçok farklı dosya sistemini kullanabilirsiniz. Elbette bunca seçenek arasında, her iki işletim sisteminde de, ön plana çıkanlar olmuştur. Şimdi sırasıyla Linux’un dosya sistemi gelişim seyrini ve diğer destek verdiği dosya sistemlerini inceleyelim.

  Extendend File System (extfs)

Linux işletim sistemi ile birlikte kullanıma giren bu dosya sistemi extended files ystem (uzatılmış dosya sistemi) ya da kısaca ext olarak adlandırılır.  Temel olarak Linux için Unix benzeri bir dosya sistemi sağlar, fiziksel aygıtları işlemek için sanal dizinler kullanılır ve veriler fiziksel aygıtlardaki belli uzunluktaki bloklarda depolanır. 1992 yılında Linux için Minix File System’deki (MFS) yetersizliklerden dolayı ilk geliştirilmiş dosya sistemidir. MFS’de dosya isimleri en fazla 14 karakter, maksimum dosya boyutu da 64MB olabiliyordu. Günümüzde kullanılmıyor diyebiliriz.

Ext dosya sistemi, sanal dizinde depolanan dosyalar hakkında iz bilgisi veren inode adlı bir sistem kullanır. İnode sistemi, dosya bilgisini saklamak için her bir fiziksel aygıt üzerinde ayrı bir tablo yaratır ve buna inode tablosu denir. Sanal dizinde depolanan her dosyanın inode tablosunda bir girişi vardır. Bu dosya sistemi türünün adındaki extended (uzatılmış) sözcüğü, her dosyada izlenen aşağıda sıralanan ek verilerden ötürüdür:

  • Dosya adı
  • Dosya boyutu
  • Dosyanın sahibi
  • Dosyanın ait olduğu grup
  • Dosya için erişim izinleri
  • Dosyadan veri barındıran her disk blokuna işaretçiler

Linux, inode tablosundaki her bir inode’u, dosya sistemi tarafından veri dosyaları yaratmakla görevlendirilmiş özgün bir numara kullanarak (inode numarası) işaretler. Dosya sistemi, bir dosyayı belirlemek için tam dosya adı ve yolundan ziyade inode numarasını kullanır.
(devamı..)

Loading


  • Sertifikasyon



  • Etiketler

  • Topluluklar

                     
                     
  • Copyright © 1996-2010 Mustafa Bektaş Tepe. All rights reserved.
    Türkçeleştirme Blogizma | AltyapıWordPress