Mysql motorları
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.
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.
- 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 7 Yorum yapılmış.
görüşünü belirt
Arama
E-Posta Aboneliği
RSS Aboneliği
En Çok Yorumlanan Yazılar
- Ajax ile dinamik listeleme (22)
- Blogger’da “devamını oku” bağlantısı (21)
- MySQL’de Transaction ve PHP ile kullanımı (16)
- PHP ile sınırsız alt kategori mantığı (16)
- MySQL’de “join” kullanımı (13)
- Kullanıcı dostu url hazırlamak (12)
- PHP’nin (muhtemelen) az bilinen 10 özelliği (12)
- Kullandığınız programlama dili ne kadar popüler? (12)
- .htaccess konuları [Giriş] (11)
- Blogger’da arama kutusu ekleme (10)
Etiketler
Son Yorumlar
- Fatih: Açıkçası sitenizi yeni keşfettim ve gerçekten beğendim. Kaynak ve tutorial ihtiyacı olduğunda yabancı blog...
- beyo: emeğine sağlık, temiz bir anlatım olmuş
- gokhan: güzel bir anlatım yapmışsın.. devamını bekleriz.. kolay gelsin
- web yazılım şirketi: google blog araması ile .net üzerinden hizmet veren web yazılım şirketi ararken tesadüfen bu web...
- Codderol: çok teşekkürler bu çalışma bana çok yardımcı oldu….
19 / Mart / 2008
Teşekkürler, yine güzel bir yazı… Bilgisayarla ilgili sorunlarınızın çözümüne sevindirecek kadar güzel bir yazı
Faydalı bir yazı olmuş teşekkürler…
Gerçekten güzel ve açıklayıcı bir yazı olmuş. Çok faydalandım.
Teşekkürler.
yararlı bir yazı olmuş, dikkat etmediğim bir özellikti.tebrikler
Gerçekten üzel bi yazı teşekkür edrim.:)
tskler..
eline sağlık, güzel yazı