select top yerine select max desteği olan ayrıca bence sorunsuz ve süper hızlı çalışan php sistemlerde birebir olması ile birlikte asp hatta vb yazılımlarda da canavar gibi çalışan beleş yazılım.ayrıca ms sql de dokun/yap modeli gibi mysql front diye de bir arayüzü bulunkakta.
bir çok özellikten mahrum bırakılmasının sebebi de işin önemli kısmının kontorolünü programcıya bırakılmasıdır.yani büyük yazılımlarda veritabanından bağımsız olarak çalışmak ve diğer veritabanlarına ani bir geçişin kolay,sorunsuz olması gerekmektedir.yoksa affedersin eşşeğe bile ms sql kullandırmak mümkündür(tabi bağlantı yapılabilirse.günlerce asp.nete mssqli tanıtmakla uğraştım da).
parası olmayanların sql server'i ms sql ile başa çıkacamaz ben mssql servere 45gb lık veri tabanını 400 bilgisayardan paso sorgulatıyorum ve sorun yaşamıyorum. dikkatinizi çekerim 45gb veri tabanı.
ve bu veriler büyük bir tıp fakültesinin verileri günde kaç hasta geliyordur tahmin edin.
tek rakibi oracle. 5.0 versiyonu ile en önemli eksiklikleri olan view, trigger, stored procedure ve user defined type eksikliklerini gideren gpl lisanslı (ticari olmadığı sürece beleş) veritabanı. bizzat yaptığım benchmark testlerinde microsoft sql server'a tozunu yutturdu. eğer ticari olarak kullanacaksanız destek için 250 avro ödemeniz gerekiyor ama diğer veritabanı sistemleri ile karşılaştırınca cüzi denebilir. ayrıca open source oluşu nedeniyle tamamen kendinize ve projenize has bir veritabanı sistemi geliştirmeniz mümkün. zaten anket sonuçları kullanıcılarının 1/4'ünün source compile ederek kullandığını gösteriyor. foreign key ve transaction kullanabilmek için storage engine olarak ınnodb kullanmak gerekir. linux, apache, php'nin kankası. max db'nin kardeşi.
microsoft sql server'la her ne kadar en azından 5. sürümüne kadar kıyas kaldırmasa da bu, mssql'in de muhteşem bir alet olduğunu ispatlamaz.
bilhassa mysql 5 öncesi karakteristikleri hemen hemen şöyledir:
- mysql, kendisiyle default olarak gelen myisam'la bir halt desteklemez. bu zaten mysql ab'nin de kabul ettiği bir gerçektir. performanstan ödün vermemek üzere foreign key'den view'e, stored procedure'e kadar birçok özellik barındırılmıyordu.
- mysql 4'le beraber gelmeye başlayan innodb ile beraber foreign key ve transaction desteği geldi. zaten az biraz sağlamlık isteyen her neferin de innodb kullanmakta olduğu farzedildi. sp, view, trigger gibi şeyler hala destekli değildi.
- mysql 5 ile beraber view, sp ve trigger geldi. okuduğum dökümantasyonların alpha versiyonuna mı ait olduğunu tam hatırlamıyorum ama "trigger'lar hala tam oturmamıştır ve bug doludur. mission critical sistemlerde kullanmayın" uyarılarını her yerde görmek mümkündü. belki şu an düzelmiştir, bilmiyorum. denemelerimde view'lerin oldukça iyi çalıştığını gördüm. sp'lerde ise konuya alışkın insanlar da gözetilerek mssql syntax'i temel alınmış sanki.
- mysql, sonuç itibarıyle bu kadar eksik barındırıyorsa da bu eksiklikler mysql'in üretim amacıyla oldukça örtüşür eksiklerdir. eğer mysql yapılacak uygulama için yeterli değilse biraz daha üst seviyede postgresql, daha da üstünde oracle vardır. mysql için "parası olmayanların sql server'ı" gibi bir ifade kullanılırsa adamın önüne freebsd'yi kurarlar, çoğu ticari olmayan uygulama için ücretsiz oracle'ı da kurarlar o lafları çevirip münasip bir tabloya insert etmenizi beklerler.
mysql 5'te yeni bir join standardı uygulanmıştır. virgül ile kullandığınız inner join'in önceliği değişmiş olup, herhangi bir join operatorü ile birlikte kullanıldığında "unknown column xxx" hatası vermesi muhtemeldir. çözümü ise; virgül ile join yaptığınız tablo isimlerini parantez içine alın.
örnek vermek gerekirse;
select * from tablo1 t1,tablo2 t2 left join tablo3 t3 ...
yerine
select * from (tablo1 t1,tablo2 t2) left join tablo3 t3 ...
select sorgusu içerisinde use index(...) kalıbı ile mysql motoruna hangi index'i kullanması konusunda ön bilgi verebiliyorsunuz. böylelikle zaman açısından daha yüksek maliyetli ancak daha az sonuç döndüren bir index'i seçmesi engellenebilir.
asp.net ile kullanmak için bin takla atmanız gereken, güzel bir arayüze sahip olmayan ama hız bakımından küçük uygulamalarda ms sql ile arasında hiç bir fark bulunmayan, bedava bir veritabanı.
ms sql mi? mysql mi? derseniz, ms sql derim.
bilmiyorum daha rahat geliyor bana kullanması, ms sql'de express edition ile kısmen bedava sayılabilir küçük uygulamalar için.
hele ki 6. sürümünün beklendiği bugünlerde, hakkındaki en büyük yanılgılardan biri php ile organik bir bağa sahip ve basit bir veritabanı motoru olduğudur.
5.1.x versiyonlarını ms server 2003 r2'ye msi installer ile kuramadım ve sık karşılaşılan bir sorun olduğunu öğrendim. servis basladığı halde, "servisi baslatamadım" diye hata vermiştir. bu durumda yapılacaklar sunlardır; msi dosyasından mysql i remove edip, sonra tekrar kurup sonra repair etmek (ve buna benzer bircok islem daha) ya da hiç zaman kaybetmeden (ki ben burada 3 saat kadar kaybettim) 5.0.x versiyonlarından birini sorunsuzca yuklemek.
not : eger 5.1.x denemiş başarısız olmuşsanız ve 5.0.x yüklemeyi planlıyorsanız, yüklemeye başlamadan önce bilgisayarda mysql'in esamesinin kalmadığından emin olun.