İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

MySQL InnoDB MyISAM ve NO_AUTO_VALUE_ON_ZERO

Unutmam

0
İyinet Üyesi
Katılım
7 Ocak 2006
Mesajlar
1,567
Reaction score
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
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
63
Konum
Sakarya
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
İyinet Üyesi
Katılım
7 Ocak 2006
Mesajlar
1,567
Reaction score
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
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
63
Konum
Sakarya
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
İyinet Üyesi
Katılım
11 Ekim 2004
Mesajlar
6,964
Reaction score
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
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
63
Konum
Sakarya
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.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst