- enterId:145553 Mysql motorları « KOODLA | BLOG

Mysql motorları

Date19 / Mart / 2008 Author İsa Engiz    Category mysql     Tags Yorumlar8 Yorum Yapilmis.

Hepimizin bildiği gibi veritabanları, yazdığımız uygulamaların çok önemli bir parçasıdır. Verileri orada saklarız, gerektiğinde oradan çekip gösteririz, ayrıca güvenlidirler, oturum yönetiminde bile veritabanlarını kullanabiliriz.

veritabani-motoru.JPG

Uygulamalarımızın önemli bir parçası olan veritabanlarını oluştururken dikkat etmemiz gereken noktaların başında ise kullanılacak veritabanı motoru gelir. Bu yazımızda PHP uygulamalarında sıklıkla kullanılan bir veritabanı olan MySQL’in sunduğu veritabanı motorlarını kısaca değerlendirmeye çalışalım.

TST – NTST nedir?

Mysql motorlarını incelemeye başlamadan önce aklımızda tutmamız gereken ilk nokta, TST ve NTST destekleridir. TST, “transaction safe table” anlamında kullanılır, NTST ise “non-transaction safe table” şeklindedir. Birincisinin anlatmaya çalıştığı şey, kaybedilen verilerin geri getirilebileceğidir, TST özelliğini barındıran veritabanlarında yapılan ekleme-silme-güncelleme işlemleri geri alınabilir adımlardır. NTST özelliğini taşıyan veritabanlarında ise böyle bir yetenek bulunmaz, silinen verileri geri getirmek gibi bir seçeneğimiz yoktur.

Mysql’in sunduğu temel veritabanı motorlarını şimdi tek tek kısaca değerlendirebiliriz:

MyISAM

Mysql’in varsayılan veritabanı motorudur ve herhangi bir motor türü belirtmeden oluşturduğumuz tablolar bunu kullanır. Hemen hemen bütün alan tiplerini destekler ve ortalama bir kullanıcın isteklerine cevap verebilecek kadar yeteneklidir.

NTST özelliğini taşımaktadır ve kaybedilen verinin geri getirilme özelliği yoktur.

MyISAM motorunun temel hedefi veritabanında gerçekleştirilen okuma işlemlerini en hızlı şekilde yerine getirmektir ve Mysql’in dünya çapında popülarite kazanmasının temel sebebidir, çünkü ortalama bir kullanıcının da veritabanında en sık gerçekleştirdiği sorgular, okuma işlemleridir. Bu nedenle çok fazla veri saklayan sık okuma işlemleri yapılan tablolar için oldukça uygundur.

Memory

Memory motoruna sahip tablolar bellekte oluşturulurlar ve bu nedenle oldukça hızlıdırlar. Genellikle geçici olarak oluşturulurlar ve okuma ve yazma işlemlerini diğer motor türlerine göre çok hızlı gerçekleştirirler. Ancak bellekte yer kapladıklarından ötürü bu tablolarla işleminizi gerçekleştirdikten sonra tabloyu silmelisiniz. Ayrıca memory, NTST’yi destekler.

InnoDB

InnoDB’nin en temel özelliği TST desteğidir. Tablo üzerinde yapılan işlemler geri alınabilir ve silinen verilerin kurtarılmasına olanak sağlar. Temel amacı aynı anda gerçekleştirilen çok sayıda okuma ve yazma işlemlerine cevap verebilmektir ve bu yönde geliştirilen “satır kitleme” özelliğine sahiptir. (Aynı anda iki farklı kullanıcı aynı satır üzerinde değişiklik yapamaz.) MyISAM motoruna göre daha yavaş olmasına rağmen TST desteği ve aynı anda çok fazla sayıda gerçekleştirilen okuma – yazma işlemlerine verdiği destek ile ön plana çıkmaktadır.

BerkeleyDB, BDB

Pek çok yanı ile InnoDB’ye benzer, TST’yi destekler ve aynı anda gerçekleştirilen okuma ve yazma işlemlerini gerçekleştirebilir. InnoDB ile benzer ihtiyaçlar neticesinde kullanılabilir.

Peki hangisi?

Hangi veritabanı motorunu kullanacağınıza kendiniz karar verebilirsiniz. Öncesinde de söylediğimiz gibi MyISAM ortalama bir kullanıcın ihtiyaçlarına cevap verebilecek yetenektedir. Yeterince hızlıdır ve çok fazla veriyi saklayabilir. Ancak TST desteği vermez. Eğer veritabanında kritik veriler saklıyorsanız InnoDB veya BDB motorunu kullanmak faydalı olabilir. Aynı anda gerçekleştirilen okuma ve yazma işlemlerine destek verirler ancak okuma işlemlerinde MyISAM kadar hızlı değildirler. Hız için en uygun motor ise Memory’dir, uygulama sırasında kullanılır, ancak bu motor kullanılarak oluşturulan tablolar ise geçicidir, işleminiz bittikten sonra tabloyu silmelisiniz.

Kod

Daha önceki yazımızda kodlar ile veritabanı ve tablo oluşturmayı tartışmıştık ancak orada herhangi bir motor türü belirtmemiştik, dolayısıyla oluşturduğumuz tablolar varsayılan olarak MyISAM motorunu kullanmaktaydı. Ama şimdi seçeneklerimiz var:

CREATE TABLE denemetablosu (
id INT NOT NULL AUTO_INCREMENT,
isim VARCHAR(255),
soyisim VARCHAR(255),
PRIMARY KEY (id)
) TYPE=InnoDB

eskisinden farklı olarak tek yapmamız gereken parantezi kapattıktan sonra tablo’nun kullanacağı motoru belirtiyoruz:

TYPE=InnoDB

İşte bu kadar. Tabi burada belirtebileceğimiz motor türü, MySQL sunucusunun desteklediği bir tür olmalıdır, yani sunucuda kurulmuş olması gerekmektedir. (Ancak endişelenmeye gerek yok, MySQL’in varsayılan ayarlardaki kurulumunda bu motorlara destek zaten verilmektedir.)

Peki mevcut bir tablonun kullandığı motoru sonradan değiştirmek istersek ne olacak? Birinci ve uzun yol şöyle olabilir: tabloyu yedeklersiniz, sonra bu tablonun aynısını ama boş olanını istediğiniz motor ile oluşturursunuz ardından mevcut verileri yeni tabloya eklersiniz ve önceki tabloyu da silersiniz.

İkinci yol ise çok daha kolay;

ALTER TABLE denemetablosu CHANGE TYPE=MyISAM

Birinci yolda gerçekleştirilen işlemlerin aynısı bu küçük sorgu cümlesi ile gerçekleştirilebilir, böylece herhangi bir motor türü ile oluşturduğunuz tabloyu, ileride değişen ihtiyaçlarınıza göre değiştirebilirsiniz. Bu, pekte zor değildir!

Tüm bunlar aslında daha iyi performans için, çünkü daha fazla seçenek, daha fazla performans demek. Veritabanı motorları hakkında daha detaylı bilgileri mysql’in sitesinden alabilirsiniz.

- Bu blogda yer alan yazıları RSS ile takip edebilirsiniz. RSS aboneliği için tıklayın.

- Ya da bu blogda yer alan bütün yazıları içindekiler sayfasında görüntüleyebilirsiniz. Tıklayın!

Mysql motorları yazısına 8 Yorum yapılmış.

  • faruk 19 Mart 2008, 19:56

    Teşekkürler, yine güzel bir yazı… Bilgisayarla ilgili sorunlarınızın çözümüne sevindirecek kadar güzel bir yazı :)

  • Hüseyin -neXus- 20 Mart 2008, 22:47

    Faydalı bir yazı olmuş teşekkürler…

  • eburhan 23 Mart 2008, 12:35

    Gerçekten güzel ve açıklayıcı bir yazı olmuş. Çok faydalandım.
    Teşekkürler.

  • alialtugkoca 26 Mart 2008, 11:41

    yararlı bir yazı olmuş, dikkat etmediğim bir özellikti.tebrikler

  • UĞRAŞ 06 Ocak 2009, 02:50

    Gerçekten üzel bi yazı teşekkür edrim.:)

  • mirc 09 Ocak 2009, 11:23

    tskler..

  • beyo 28 Mart 2010, 10:31

    eline sağlık, güzel yazı

  • Ahmet Kayar 25 Ağustos 2010, 11:48

    Çok teşekkürler bilmediğim bir konuda bana yardımcı olduğunuz…

Arama


E-Posta Aboneliği


RSS Aboneliği

En Çok Yorumlanan Yazılar

Etiketler

404 ajax apache arama butonu as astrofizik açık kaynak banner blogger blogger/blogspot Blogger / Blogspot blogspot case chmod css date dosya yükleme editör etiket etkinlik favicon featured form ftp galeri Genel gimp hata sayfası header htaccess htpasswd ilişkisel veritabanı index innodb javascript join JQuery kategori koodla linux mysql opacity php resim url

Son Yorumlar

  • Murat: Güzel bir teknik, şu ana kadar sınırsız alt kategori lazım olmadı ama olmayacağı anlamına gelmiyor :)
  • iilyas: Bu kodlar çalışmıyor arkadaşım. Localde olduğu içinmi acaba ?
  • iilyas: Arkadaşım çok teşekkür ediyorum. Harika anlatmışsın ajaxla çalışmalara başlamak lazım estetik açısından.....
  • Nuri: bende bu şekilde bir çalışma yaptım ancak bir sorunum var ne yaptıysam url den index.php bölümünü kaldıramadım....
  • Kemal: Makale için çok teşekkürler, resimleri div tagları ile yapabilirmiyiz. Bu arada imagelara link verirsek daha...

Sayfalar


Faydalı Bağlantılar