Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

MySQL InnoDB MyISAM ve NO_AUTO_VALUE_ON_ZERO

Unutmam

0
Onaylı Üye
Üye
Katılım
7 Ocak 2006
Mesajlar
1,567
Açılan Konu
41
Tepki puanı
0
Db içerisinde SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
bu kod var bu ne işe yarıyor acaba?
bir de bir tabloda InnoDB yazıyor bunun dezavantajı varmıdır? Kasarmı yani.
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,034
Açılan Konu
485
Tepki puanı
75
Konum
SEO
1.
NO_AUTO_VALUE_ON_ZERO, AUTO_INCREMENT değerlerinin nasıl muamele göreceğini belirler.
Normalde AUTO_INCREMENT değerleri 1 den başlar.
Ama bir tabloda 0 değeri de olsun istiyorsanız
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
yaparsınız.
Normalde AUTO_INCREMENT olan bir alan 0 değeri taşırsa yedek yüklerken sorun yaratır ve bazı işlemlerde, örneğin optimizasyonlarda hata mesajı verir.
MySQL de AUTO_INCREMENT tanımlı alan içinde 0 değerinin olması tavsiye edilmez.

2.
InnoDB MySQL in gelişmiş depolama makinasının adıdır. InnoDB nin MyISAM a göre pekçok avantajları var. Ancak bu avantajları kullanmayacaksanız, performans açısından MyISAM tercih edilmelidir.
Bu nedenle bu sorunuza kesin bir cevap vermek için InnoDB yi ne amaçla kullandığınızı bilmek lazım. Eğer o tablo üzerinde transaction yapılıyor ise InnoDB şart.
InnoDB için de performans ayarı yapılabilir.
Ancak InnoDB kullanmanıza gerek yok ise boşuna InnoDB engine kullanmanıza da gerek yok, ona ayrılacak CPU ve belleği tamamen MyISAM a aktarabilirsiniz.
 

Unutmam

0
Onaylı Üye
Üye
Katılım
7 Ocak 2006
Mesajlar
1,567
Açılan Konu
41
Tepki puanı
0
Db kasacak birşey yok sanırım ilk defa gördüğüm için kasmasından korkuyordum daha çok.Peki db optimize yapmak yararlımıdır?Yararlıysa ne kadar sıklıkla yapmak gerekiyor.
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,034
Açılan Konu
485
Tepki puanı
75
Konum
SEO
Db kasacak birşey yok sanırım ilk defa gördüğüm için kasmasından korkuyordum daha çok.Peki db optimize yapmak yararlımıdır?Yararlıysa ne kadar sıklıkla yapmak gerekiyor.

Her gece yada hergün sitenizin en az yoğun olduğu saatlerde optimizasyon yapın.
Uygulamayı yazan kişiye sorun InnoDb gereklimiymiş.
 

ploop

0
Onaylı Üye
Üye
Katılım
11 Ekim 2004
Mesajlar
6,964
Açılan Konu
214
Tepki puanı
0
Konum
karavan
Yeni konu açmayayım. innodb'nin çok büyük bir avantajını öğrendim. myisam'da yapılıyor mu bilmiyorum ama, birden fazla tabloyu iliskilendirerek her 2 tabloyu etkileyen islemler yapabiliyorsunuz. Söyle ki;
Diyelim sarkı sözü siteniz var. Sarkıcılar tablonuz ve sarkı sözleri tablonuz var. innodb yapısını kullanarak, atıyorum bir sanatçıyı sildiğinizde, onun sarkı sözlerinin de silinmesini hiç bir PHP koduna gerek kalmadan sağlayabilirsiniz. Gözüme güzel gözüktü :) Ama okuduğum kadarıyla performans sorunları da varmıs. Sitenin admin tarafında innodb, kullanıcı tarafında myisam kullanacak bir seyler yapmak lazım herhalde :D

Örnek veritabanı yapısı:

CREATE TABLE doc (
docID INTEGER NOT lisanssız AUTO_INCREMENT,
langCode CHAR(2) NOT lisanssız,
title VARCHAR(32),
PRIMARY KEY (docID, langCode)
) Type=InnoDB;

CREATE TABLE author (
authorID INTEGER NOT lisanssız AUTO_INCREMENT,
docID CHAR(2) NOT lisanssız,
name VARCHAR(32),
PRIMARY KEY (authorID),
FOREIGN KEY (docID) REFERENCES doc(docID) ON DELETE CASCADE ON UPDATE CASCADE
) Type=InnoDB;

http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,034
Açılan Konu
485
Tepki puanı
75
Konum
SEO
Yeni konu açmayayım. innodb'nin çok büyük bir avantajını öğrendim. myisam'da yapılıyor mu bilmiyorum ama, birden fazla tabloyu iliskilendirerek her 2 tabloyu etkileyen islemler yapabiliyorsunuz. Söyle ki;
Diyelim sarkı sözü siteniz var. Sarkıcılar tablonuz ve sarkı sözleri tablonuz var. innodb yapısını kullanarak, atıyorum bir sanatçıyı sildiğinizde, onun sarkı sözlerinin de silinmesini hiç bir PHP koduna gerek kalmadan sağlayabilirsiniz. Gözüme güzel gözüktü :) Ama okuduğum kadarıyla performans sorunları da varmıs. Sitenin admin tarafında innodb, kullanıcı tarafında myisam kullanacak bir seyler yapmak lazım herhalde :D

Örnek veritabanı yapısı:



http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html

Buna kısaca relational database deniyor. Tablolar arasında foreign keyler ve constraintler aracılığı ile bağlantı kuruyorsunuz.

Oracle, MSSQL, Sybase bunların hepsi relational database lerdir.

Relational database in faydası, business logic dediğimiz ürünün mantığını sınırlamalarını veritabanı seviyesinde belirleyebilirsiniz.

Ek olarak bu tür dblerde mysql de olmayan yada yeni yeni gelen bir sürü özellikler vardır.

Basitçe triggerlar, stored procedure ler, fonksiyonlar, clusterlar, transaction ...

Örneğin Oracle veritabanında 1000 satırlık bir tablom var diyelim, Ploop bu tabloyu sabah saat 10 da yanlışlıkla update etti diyelim, sadece 1 kayıt update edecekken WHERE i unutmuş ve tüm tabloyu update etmiş...

Oracle da zaman için yolculuk yapabiliyorsunuz, evet yanlış duymadınız.

Tablonun saat 9 daki haline ulaşıp, saat 10 da yanlışlıkla update edilen tabloyu saat 9 daki haline yada 9:55 deki haline çevirebiliyorsunuz.

mySQL de olmayıp diğer veritabanlarında olan o kadar çok özellik var ki saymakla bitmez.

Diğer veritabanlarındaki bu özelliklerin mySQL de olmamasına rağmen mySQL in bu kadar çok kullanılmasının nedeni daha hafif (lightweight) olması, bu sayede de web uygulamalarında çok hızlı çalışabilmesidir. Performansı web uygulamarında çok iyidir.
 

ploop

0
Onaylı Üye
Üye
Katılım
11 Ekim 2004
Mesajlar
6,964
Açılan Konu
214
Tepki puanı
0
Konum
karavan
oracle bana çok uzak :) myisam güzel ondan devam edeyim :)
 
Üst