mysql ve innodb

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

mysql ve innodb

Mesaj gönderen serbek_tr »

S.A. arkadaşlar.
forumda bir çok yerde benimda takıldığım transaction olayı sorulmuş. Öğrendim ki mysql ile transaction olayı kullanabilmek için innodb tablo yapısını kullanmak gerekli şu an tablo türlerim myisam ve programda baya ilerlemiş durumdayım. Şu an tablo yapısını innodb ye çevirsem bir problem yaşarmıyım. Ne bileyim verilere birşey olurmu. Alan tip tanımlamarı innodb ye geçtikten sonra sorun çıkararırmı yani myisam iken kullandığım varchar örneğin varrrchar olarak değişmelimi örneğin yada sorgularda herhangi bir sorun çıkarmı. Yani transaction olayını kullanmak şart benim için zaten firebird e de çok alışmıştım ama internet üzerindeki bağlantı yavaşlığı yüzünden mysql e geçmek zorunda kaldım ve geçiş çok şeyi değiştirmeme sebep oldu yine bu tür sorunlar yaşamak istemem. Ve benim aklıma gelmeyen ama sizin bu konuda şöyle bir problem yaşarsın dediğiniz ne olursa paylaşırsanız sevinirim. Geçişte hiç bir sorun yaşamazsam bile myisam dan innodb ye geçtikten sonra ileride karşılaşabileceğim zorluklar ve problemler varmıdır. Aklınaza gelen her konuda beni aydınlatırsanız sevinirim.
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: mysql ve innodb

Mesaj gönderen vkamadan »

Merhabalar,
MyISAM dan InnoDB ye geçişte alan tipleriyle ilgili hiç bir sorun yaşamayacaksınız, fakat MyISAM ın desteklediği bazı index yapılarını InnoDB desteklemez örneğin,
AutoIncrement bir alan ile başka bir alanı aynı anda InnoDB de Primary Key yapamazsınız, bir diğer konu SELECT FOR UPDATE deyimini MyISAM tabloları desteklerken InnoDB desteklemeyecektir zaten gerekte yok çünkü InnoDB nin kendi içinde kayıt kilitleme mekanizması mevcuttur şimdilik aklıma gelen yaygın kullanılabilecek farklılıklar bunlar.

Kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Re: mysql ve innodb

Mesaj gönderen serbek_tr »

Teşekkürler arkadaşım. MySQL ile ilgili her konuda mutlakada desteğin var, açıkçası bu sorumda da ilk cevabı senden bekliyordum tahmin ettiğim gibi de oldu. Tekrar teşekkür ederim ancak birşey sormak istiyorum yanlış anlamış olabilirim SELECT FOR UPDATE derken konuyu biraz daha açabilirmisin benim bundan anladığım query içinde SELECT, UPDATE ile başlayan bir sorgu yazamayacağım. Yoksa bir bütün olarak SELECT FOR UPDATE komutndanmı bahsediyorsun öyle birşey olduğunuda açıkçası bilmiyordum. Oysaki query lerle SELECT, UPDATE en çok kullandığım sorgu türüm ben tablolarla değil query lerle çalışıyorum ve eğer bir güncelleme gerekirse tekrar update sorgusu ile bunu yapıyorum. Eğer böyle ise değişikliği göze alamam açıkçası.

Ayrıca bir sorum daha olacak sadece transaction olayına ihtiyaç duyduğum tabloları innodb yapsam diğerleri myisam kalsa bir problem olurmu.
Henüz cevap verilmediği için sonradan aklıma gelen sorularım için editliyorum kusuruma bakmayın. Tablo yapısında bende innodb görünmüyor neden olabilir yada ne yapmam gerekli. Teşekkür ederim
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: mysql ve innodb

Mesaj gönderen mkysoft »

"select for update" ile seçilen kayıtları başka bir kullanıcı o an için editleyemez yani kilitler, bu işe yarıyor.
InnoDB nin lisanslı olduğunu unutmayın, başınız ağrıyabilir.

Edit: "select for update" ile çekilen kayıtları başka bir kullanıcı select ile çekebilir ancak update edemez (readonly), ayrıca yine başka bir kullanıcı "select for update" ile çekemez.
En son mkysoft tarafından 15 Eki 2009 04:16 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Re: mysql ve innodb

Mesaj gönderen serbek_tr »

Teşekkür ederim. Bu büyük bir sorun gibi görünüyor innodb yapısının ayrıntıları bilmiyorum şimdilik ama. Şöyle bir durum söz konusu seçilen kriterlere göre kullanıcı gerekirse tüm kayıtları listeleyebilir ve listeden seçeceği kayıtı editleyebilir. Bu durumda kullanıcının tüm listeyi aldığını farz edelim ve öylecede bıraktı gitti. Desene bu durumda yandık kimse birşey yapamayacak.
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: mysql ve innodb

Mesaj gönderen vkamadan »

serbek_tr yazdı:Teşekkür ederim. Bu büyük bir sorun gibi görünüyor innodb yapısının ayrıntıları bilmiyorum şimdilik ama. Şöyle bir durum söz konusu seçilen kriterlere göre kullanıcı gerekirse tüm kayıtları listeleyebilir ve listeden seçeceği kayıtı editleyebilir. Bu durumda kullanıcının tüm listeyi aldığını farz edelim ve öylecede bıraktı gitti. Desene bu durumda yandık kimse birşey yapamayacak.
@mkysoft 'unda açıkladığı gibi SELECT FOR UPDATE seçilen kayıtları siz bırakana kadar kilitler ama anladığım kadarıyla siz böyle bir yapı ihtiyacı hissetmemiş ve kullanmamışsınız normal kayıtları listelerken sorun olmayacaktır. InnoDB tablo yapısı MySQL 4.0 ve üzeri versiyonlarda gelir mySQL 6 ile InnoDB gibi transactional yapıda çalışayan birde Falcon tablo yapısı gelmiştir InnoDB den daha performanslı çalışıyor genel anlamda fakat bazı dezavantajlarıda var ayrıntılı karşılaştırmaları nette bulabilirsiniz. Ayrıca MyISAM ve InnoDB yi bir arada kullanabilrsiniz sorun çıkmaz, tabi transcation başlattıp ROLLBACK yaptığınızda eğer arada MyISAM tablolarda işlem yaptıysanız ilgili işlemler geri alınmaz.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Re: mysql ve innodb

Mesaj gönderen serbek_tr »

Saygıya değer arkadaşlarım, açıklamarınız gerçekten mysql ile fazla bir tecrübesi olmayan ben için gerçekten faydalı oldu. Hakkınızı helal edin, emeğiniz ve ayırdığınız vakit için teşekkürümü kabul edin. Saygılar
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: mysql ve innodb

Mesaj gönderen Battosai »

Daha kestirme cevap vereyim MySQL kullancaksan MyISAM kullan :) İkisini karıştırmanı tavsiye etmem. Transaction,Foregein key..vb kullanacaksan Firebird'e yönel...
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Re: mysql ve innodb

Mesaj gönderen serbek_tr »

Battosai, çok profesyonel olmasamda uzun zamandır Firebird kullanıyorum, şu ana kadar yaptığım projelerde genellikle lokale hitap ediyordu. Ciddi anlamda projelerim oldu Firedird üde ihtiyacım olan kadar öğrendim sayılır ama şu ana kadar isteklerime cevap verememezlik etmedi açıkçası. Taki karşıma organizasyon olarak ciddi bir proje çıkıncaya kadar ciddiyetten kastım lokale hitap eden değil uluslar arası lokasyonlardan tek bir merkeze bağlanma durumundan bahsediyorum. Ve projeme öncelikle firebird ile başladım bayada ilerledim taki lokasyonlardan test etmek istediğimiz zamana kadar ve test aşamasında açıkçası yüzüm kızardı tek bir kaydı post etmek 20 sn leri buldu 10 kayıtlık bir listeyi almak dakikaları buldu. Yerin dibine girdim ve o an bu projede Firebird den vazgeçtim ve bu durumu daha önce burda sizlerle paylaştım ama hemen hemen herkes olamaz bu kadar fark dedi. Hatta ben acemice bir database tasarımı mı yaptım diye de düşündüm. Tek Tablo ve tek bir kayıt 10 sn in altına inmedi malesef bundan daha basit nasıl bir db yapısı olabilirki yine tek tablo 10 kayıt, listelemek dakika olmasada 15 sn altına düşmedi. Bunu aynı serverda mysql,firebird,mssql ile test ettim en başarılısı mysql oldu, saniye ile ifade edilmez işler anlık oldu sanki sadece 100 kayıtlı dolu dolu birden çok tablo bağlantısı içeren sorgular 4-5 saniye bekledi. Firebird diyince bunları açıklama gereği hissettim, ama şimdi söz konusu ortak bir proje ve birden fazla proje söz konusu olunca transaction olmadan sağlam bir kodlama mümkün değil. Çünkü aynı anda eklenecek yada değişecek bir kayıt hem firebird hem mssql hemde mysql deki tablolara güncelleniyor dolayısı ile birinde bir hata bütün işlemlerin iptalini gerektiriyor bu durumda mysql isteneni vermiyor malesef, o yüzden tercihim firebird den daha hızlı olan mssql olacak. İlgine teşekkür ederim. Daha önce bahsi geçen konu burda seninde katkıların olmuştu.viewtopic.php?f=18&t=25489
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: mysql ve innodb

Mesaj gönderen hi_selamlar »

Battosai yazdı:Daha kestirme cevap vereyim MySQL kullancaksan MyISAM kullan :) İkisini karıştırmanı tavsiye etmem. Transaction,Foregein key..vb kullanacaksan Firebird'e yönel...
S.A. Değerli arkadaşım

Acaba neden MySQL de (InnoDB) Transaction vs. kullanımını tercih etmediğinide belirtirmisin lütfen :?:
Bir sıkıntımı yaşadın veya başka türlü bir sorun mu ?

S.A.
Herkes cahildir, bazi konularda.
Cevapla