folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder Mysql Myısam Vs Innodb Karşılaştırması Ve Performans Hakkında Sorularım



Mysql Myısam Vs Innodb Karşılaştırması Ve Performans Hakkında Sorularım

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    Hocam hiz her zaman iyi değildir. Mysql de cok kullandim. Kendi deneyimlerime nazaran myisam daha hizli olacaktir cogu konuda ama innodb transaction harici bir avantaji yoktur deme sakin. Myisam da tutarsiz davranişlar cok fazla var.

    Birde veri tipine gore ve index tipi ne gore innodb myisam a esit oldugu noktalar oluyor. Hatta sorgunun kosullarina gore bile değişebiliyor. Reletional olmayacaksa zaten nosql e yönel ama diger turlu ben innodb derim. Mysql de myisam haricinde diger motorlara da bak derim ayroca..


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Cevdet
    Cevdet's avatar
    Kayıt Tarihi: 10/Ağustos/2017
    Erkek

    @lepusmorris google'da "myisam innodb" araması yaparsan innodb'nin doğru seçim olduğunu görürsün 

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    bende bu konuyu bayağı araştırmıştım doğru index ve iyi query ile innodb ile iyi performanslar yakalayabilirsin. Yani neye ihtiyacın varsa ona göre arama yap hocam. Projende ne yapaaksan ikisini karşlaştır ona göre birini kullan bence.


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Cevdet
    Cevdet's avatar
    Kayıt Tarihi: 10/Ağustos/2017
    Erkek
    MhmdAlmz bunu yazdı

    bende bu konuyu bayağı araştırmıştım doğru index ve iyi query ile innodb ile iyi performanslar yakalayabilirsin. Yani neye ihtiyacın varsa ona göre arama yap hocam. Projende ne yapaaksan ikisini karşlaştır ona göre birini kullan bence.

    Her şeyi geçtim, şu cümle bile innodb kullanmak için yeterli bence

    • MyISAM is s tagnant; all future enhancements will be in InnoDB. This was made abundantly clear with the r o l l o u t of Version 8

     

    Cevdet tarafından 01/Eyl/17 00:51 tarihinde düzenlenmiştir
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo
    Cevdet bunu yazdı

    Deney sonuçları "MyISAM daha hızlı" diyorsa kabul ederim ancak test ederken kullandığın queriler, tabloların indexleri ve benzeri dataları bu konuya eklersen bu iddianı kanıtlamış olursun

    MyIsam select ler hariç daha hızlıdır. Asıl nedeni ise myisam da data diske yazılmadan onay verir memory den işlem yapılır ayri bit thread acar diske yazacak o thread asenkron gider. Bu yüzden hızlıdır. Sorun elektrik kesintisi olursa tablo bozula bilir 

    Repair table komutları ile düzelir ama müdahale gerekir. Ve memory den diske yazılmamış veri Uçar transaction olmadiği için geridonus yoktur disk doldu myisam can not insert demez. Ama yine veri ucar.  Bunlar yüzünden önemli yerlerde innodb ye ihtiyaç duyuyorum. Job create mantiğinda tablo yaratıyorsam. Tabloyu runtime de yaratıp myisam ile içine insertleri yapıp. İşlemlerim bittiği zaman select Ile kontrol yapıp innodb ye ceviriyorduk teknikkartta iken en son yazılım geliştirdm 8 yil olnce bu fark vardı. Kart baskı programının iş emirlerini Boyle tutuyorduk perfons ciddi önemli ve veri güvenliği sağlanıyordu. 


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lepusmorris
    lepusmorris's avatar
    Kayıt Tarihi: 31/Mart/2007
    Erkek

    https://dev.mysql.com/doc/refman/5.7/en/optimization.html burada daha sağlıklı bilgiler varmı. özetle sizin dediğinize çıkıyor.

     

    sonuç: innodb ile optimizasyonu yapılmış sorgular çalıştırmak, en iyi performansı veriyor(muş).


    ..
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    rakkoc bunu yazdı
    Cevdet bunu yazdı

    Deney sonuçları "MyISAM daha hızlı" diyorsa kabul ederim ancak test ederken kullandığın queriler, tabloların indexleri ve benzeri dataları bu konuya eklersen bu iddianı kanıtlamış olursun

    MyIsam select ler hariç daha hızlıdır. Asıl nedeni ise myisam da data diske yazılmadan onay verir memory den işlem yapılır ayri bit thread acar diske yazacak o thread asenkron gider. Bu yüzden hızlıdır. Sorun elektrik kesintisi olursa tablo bozula bilir 

    Repair table komutları ile düzelir ama müdahale gerekir. Ve memory den diske yazılmamış veri Uçar transaction olmadiği için geridonus yoktur disk doldu myisam can not insert demez. Ama yine veri ucar.  Bunlar yüzünden önemli yerlerde innodb ye ihtiyaç duyuyorum. Job create mantiğinda tablo yaratıyorsam. Tabloyu runtime de yaratıp myisam ile içine insertleri yapıp. İşlemlerim bittiği zaman select Ile kontrol yapıp innodb ye ceviriyorduk teknikkartta iken en son yazılım geliştirdm 8 yil olnce bu fark vardı. Kart baskı programının iş emirlerini Boyle tutuyorduk perfons ciddi önemli ve veri güvenliği sağlanıyordu. 

    2 farklı motor kullandığınız halde nasıl bu kadar hızlı verimlilik sağlıyordunuz ki ? X bir insert işlemi için MyIsam dan innodb ye geçerken zaman kaybı cok mu kısa ? Çok merak ettim açıklar mısın abi biraz daha detaylı :)

    EDİT ; Anladım iş emirleri vt de olduğu için zaten sabit VT Yi sonradan hazırlayıp gömüyordunuz. Olay örgüsü realtime gerçekleşiyor sandım :) Teşekkürler.

    MhmdAlmz tarafından 01/Eyl/17 12:14 tarihinde düzenlenmiştir

    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo
    MhmdAlmz bunu yazdı
    rakkoc bunu yazdı
    Cevdet bunu yazdı

    Deney sonuçları "MyISAM daha hızlı" diyorsa kabul ederim ancak test ederken kullandığın queriler, tabloların indexleri ve benzeri dataları bu konuya eklersen bu iddianı kanıtlamış olursun

    MyIsam select ler hariç daha hızlıdır. Asıl nedeni ise myisam da data diske yazılmadan onay verir memory den işlem yapılır ayri bit thread acar diske yazacak o thread asenkron gider. Bu yüzden hızlıdır. Sorun elektrik kesintisi olursa tablo bozula bilir 

    Repair table komutları ile düzelir ama müdahale gerekir. Ve memory den diske yazılmamış veri Uçar transaction olmadiği için geridonus yoktur disk doldu myisam can not insert demez. Ama yine veri ucar.  Bunlar yüzünden önemli yerlerde innodb ye ihtiyaç duyuyorum. Job create mantiğinda tablo yaratıyorsam. Tabloyu runtime de yaratıp myisam ile içine insertleri yapıp. İşlemlerim bittiği zaman select Ile kontrol yapıp innodb ye ceviriyorduk teknikkartta iken en son yazılım geliştirdm 8 yil olnce bu fark vardı. Kart baskı programının iş emirlerini Boyle tutuyorduk perfons ciddi önemli ve veri güvenliği sağlanıyordu. 

    2 farklı motor kullandığınız halde nasıl bu kadar hızlı verimlilik sağlıyordunuz ki ? X bir insert işlemi için MyIsam dan innodb ye geçerken zaman kaybı cok mu kısa ? Çok merak ettim açıklar mısın abi biraz daha detaylı :)

    EDİT ; Anladım iş emirleri vt de olduğu için zaten sabit VT Yi sonradan hazırlayıp gömüyordunuz. Olay örgüsü realtime gerçekleşiyor sandım :) Teşekkürler.

    evet ilk farkli kaynaktan gelen veri db de olusuyor bir kere oluştuktan sonra sadece tek bir flag update edildiği için oradaki durumu cok onemsemiyorum ama ilk adımda data içeriye insert edilirken 10 milyon kart datasi insert edilicek mesela myisam ile runtime da bir tablo yaratilir standart kolonlar ID,PrintFrontStatus,PrintBackStatus gibi kolonlar standart sonrasi data da gelen her kolon için col1 col2 gibi (data kimi zaman excel kimi zaman txt kimi zama access olarak geliyor. FTP den mail ile veya güvenlikli ortamdan PGP ile geliyor olabiliyor) bunlar veritabanina cekilirken myissam ile cektiğimde 15-20 dk civari iken, innodb de 3 saat i buluyordu. bu yuzden myissam ile cekip daha sonra tabloyu innodb ye cekiyordum. bu işlem de yaklasık 5 dk sürüyordu.toplamda 10 milyon record bana 30dk de baskiya hazır hale geliyordu. Direk innodb yaptğimda ise 2,5-3 saat birde bu işlemde innodb de yaparken transaction kullanırsam diğer kullanicilar server da işlem yapamiyordu. (sadece tablo değil sistem lock oluyor yüksek IO yüzünden) myisam bu kadar iyi ken neden daha sonra myisam ile devam etmiyordum kismida kartlar basiliyor kart basimda iken elektrik gitti server kapandi son basilan 5 - 10 recorda yaptiğim update sistemde yok ve tablo select bile edilemiyor oluyor. Biraz araştırdıktan sonra oğrendim memory senkronizasyonu ile calisiyormuş senkronize olmayan recordlarin bilgisi diske yazilmadiği için servis aniden kapandiğinda (normal shutdown event'in da kendisi yaziyor, ama fabrikada elektrik sigortasi atiyor vs ) patlıyor.

    Update de güzel bir index ile büyük verilerde innodb daha perfornsli oldugunu da gözlemledim. bulk update işlemleri olmasa bile Primary key ile verilen updatelerde (tek record için) innodb daha performansli. butun tablo (yani where sorgusu olmayan) sorgularda Myissam açık ara önde.

    Şuan Enterpise Db 'nin partnerliğini almaya çalışıyorum Allah tekrar mysql'e düşürmesin beni inşallah :d


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    rakkoc bunu yazdı
    MhmdAlmz bunu yazdı
    rakkoc bunu yazdı
    Cevdet bunu yazdı

    Deney sonuçları "MyISAM daha hızlı" diyorsa kabul ederim ancak test ederken kullandığın queriler, tabloların indexleri ve benzeri dataları bu konuya eklersen bu iddianı kanıtlamış olursun

    MyIsam select ler hariç daha hızlıdır. Asıl nedeni ise myisam da data diske yazılmadan onay verir memory den işlem yapılır ayri bit thread acar diske yazacak o thread asenkron gider. Bu yüzden hızlıdır. Sorun elektrik kesintisi olursa tablo bozula bilir 

    Repair table komutları ile düzelir ama müdahale gerekir. Ve memory den diske yazılmamış veri Uçar transaction olmadiği için geridonus yoktur disk doldu myisam can not insert demez. Ama yine veri ucar.  Bunlar yüzünden önemli yerlerde innodb ye ihtiyaç duyuyorum. Job create mantiğinda tablo yaratıyorsam. Tabloyu runtime de yaratıp myisam ile içine insertleri yapıp. İşlemlerim bittiği zaman select Ile kontrol yapıp innodb ye ceviriyorduk teknikkartta iken en son yazılım geliştirdm 8 yil olnce bu fark vardı. Kart baskı programının iş emirlerini Boyle tutuyorduk perfons ciddi önemli ve veri güvenliği sağlanıyordu. 

    2 farklı motor kullandığınız halde nasıl bu kadar hızlı verimlilik sağlıyordunuz ki ? X bir insert işlemi için MyIsam dan innodb ye geçerken zaman kaybı cok mu kısa ? Çok merak ettim açıklar mısın abi biraz daha detaylı :)

    EDİT ; Anladım iş emirleri vt de olduğu için zaten sabit VT Yi sonradan hazırlayıp gömüyordunuz. Olay örgüsü realtime gerçekleşiyor sandım :) Teşekkürler.

    evet ilk farkli kaynaktan gelen veri db de olusuyor bir kere oluştuktan sonra sadece tek bir flag update edildiği için oradaki durumu cok onemsemiyorum ama ilk adımda data içeriye insert edilirken 10 milyon kart datasi insert edilicek mesela myisam ile runtime da bir tablo yaratilir standart kolonlar ID,PrintFrontStatus,PrintBackStatus gibi kolonlar standart sonrasi data da gelen her kolon için col1 col2 gibi (data kimi zaman excel kimi zaman txt kimi zama access olarak geliyor. FTP den mail ile veya güvenlikli ortamdan PGP ile geliyor olabiliyor) bunlar veritabanina cekilirken myissam ile cektiğimde 15-20 dk civari iken, innodb de 3 saat i buluyordu. bu yuzden myissam ile cekip daha sonra tabloyu innodb ye cekiyordum. bu işlem de yaklasık 5 dk sürüyordu.toplamda 10 milyon record bana 30dk de baskiya hazır hale geliyordu. Direk innodb yaptğimda ise 2,5-3 saat birde bu işlemde innodb de yaparken transaction kullanırsam diğer kullanicilar server da işlem yapamiyordu. (sadece tablo değil sistem lock oluyor yüksek IO yüzünden) myisam bu kadar iyi ken neden daha sonra myisam ile devam etmiyordum kismida kartlar basiliyor kart basimda iken elektrik gitti server kapandi son basilan 5 - 10 recorda yaptiğim update sistemde yok ve tablo select bile edilemiyor oluyor. Biraz araştırdıktan sonra oğrendim memory senkronizasyonu ile calisiyormuş senkronize olmayan recordlarin bilgisi diske yazilmadiği için servis aniden kapandiğinda (normal shutdown event'in da kendisi yaziyor, ama fabrikada elektrik sigortasi atiyor vs ) patlıyor.

    Update de güzel bir index ile büyük verilerde innodb daha perfornsli oldugunu da gözlemledim. bulk update işlemleri olmasa bile Primary key ile verilen updatelerde (tek record için) innodb daha performansli. butun tablo (yani where sorgusu olmayan) sorgularda Myissam açık ara önde.

    Şuan Enterpise Db 'nin partnerliğini almaya çalışıyorum Allah tekrar mysql'e düşürmesin beni inşallah :d

    Çok mantıklı geldi. Yazdığım uygulamada da buna benzer ihtiyacım vardı ama benim insert işlemi maximum 1M aldığndan direk Innodb ye yazdırdım. motoru değiştirmek aklıma hiç gelmemişti bir örnek ile bende bir test edeyim güzel bir yöntemmiş yeşillendirdiğin için teşekkürler :) 

    Innodb Select sorgusunda Intergeri değeri şart koyduğumuzda çok hızlı sonuçlar dönderdiğini biliyorum Myisam ile hiç karşılaştırmadım bu analizler zor olsa gerek :) Teşekkürler tekrardan yeşillendirdğini için :) Bizde uygulayalım :)


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Cevdet
    Cevdet's avatar
    Kayıt Tarihi: 10/Ağustos/2017
    Erkek
    rakkoc bunu yazdı
    MhmdAlmz bunu yazdı
    rakkoc bunu yazdı
    Cevdet bunu yazdı

    Deney sonuçları "MyISAM daha hızlı" diyorsa kabul ederim ancak test ederken kullandığın queriler, tabloların indexleri ve benzeri dataları bu konuya eklersen bu iddianı kanıtlamış olursun

    MyIsam select ler hariç daha hızlıdır. Asıl nedeni ise myisam da data diske yazılmadan onay verir memory den işlem yapılır ayri bit thread acar diske yazacak o thread asenkron gider. Bu yüzden hızlıdır. Sorun elektrik kesintisi olursa tablo bozula bilir 

    Repair table komutları ile düzelir ama müdahale gerekir. Ve memory den diske yazılmamış veri Uçar transaction olmadiği için geridonus yoktur disk doldu myisam can not insert demez. Ama yine veri ucar.  Bunlar yüzünden önemli yerlerde innodb ye ihtiyaç duyuyorum. Job create mantiğinda tablo yaratıyorsam. Tabloyu runtime de yaratıp myisam ile içine insertleri yapıp. İşlemlerim bittiği zaman select Ile kontrol yapıp innodb ye ceviriyorduk teknikkartta iken en son yazılım geliştirdm 8 yil olnce bu fark vardı. Kart baskı programının iş emirlerini Boyle tutuyorduk perfons ciddi önemli ve veri güvenliği sağlanıyordu. 

    2 farklı motor kullandığınız halde nasıl bu kadar hızlı verimlilik sağlıyordunuz ki ? X bir insert işlemi için MyIsam dan innodb ye geçerken zaman kaybı cok mu kısa ? Çok merak ettim açıklar mısın abi biraz daha detaylı :)

    EDİT ; Anladım iş emirleri vt de olduğu için zaten sabit VT Yi sonradan hazırlayıp gömüyordunuz. Olay örgüsü realtime gerçekleşiyor sandım :) Teşekkürler.

    evet ilk farkli kaynaktan gelen veri db de olusuyor bir kere oluştuktan sonra sadece tek bir flag update edildiği için oradaki durumu cok onemsemiyorum ama ilk adımda data içeriye insert edilirken 10 milyon kart datasi insert edilicek mesela myisam ile runtime da bir tablo yaratilir standart kolonlar ID,PrintFrontStatus,PrintBackStatus gibi kolonlar standart sonrasi data da gelen her kolon için col1 col2 gibi (data kimi zaman excel kimi zaman txt kimi zama access olarak geliyor. FTP den mail ile veya güvenlikli ortamdan PGP ile geliyor olabiliyor) bunlar veritabanina cekilirken myissam ile cektiğimde 15-20 dk civari iken, innodb de 3 saat i buluyordu. bu yuzden myissam ile cekip daha sonra tabloyu innodb ye cekiyordum. bu işlem de yaklasık 5 dk sürüyordu.toplamda 10 milyon record bana 30dk de baskiya hazır hale geliyordu. Direk innodb yaptğimda ise 2,5-3 saat birde bu işlemde innodb de yaparken transaction kullanırsam diğer kullanicilar server da işlem yapamiyordu. (sadece tablo değil sistem lock oluyor yüksek IO yüzünden) myisam bu kadar iyi ken neden daha sonra myisam ile devam etmiyordum kismida kartlar basiliyor kart basimda iken elektrik gitti server kapandi son basilan 5 - 10 recorda yaptiğim update sistemde yok ve tablo select bile edilemiyor oluyor. Biraz araştırdıktan sonra oğrendim memory senkronizasyonu ile calisiyormuş senkronize olmayan recordlarin bilgisi diske yazilmadiği için servis aniden kapandiğinda (normal shutdown event'in da kendisi yaziyor, ama fabrikada elektrik sigortasi atiyor vs ) patlıyor.

    Update de güzel bir index ile büyük verilerde innodb daha perfornsli oldugunu da gözlemledim. bulk update işlemleri olmasa bile Primary key ile verilen updatelerde (tek record için) innodb daha performansli. butun tablo (yani where sorgusu olmayan) sorgularda Myissam açık ara önde.

    Şuan Enterpise Db 'nin partnerliğini almaya çalışıyorum Allah tekrar mysql'e düşürmesin beni inşallah :d

    Hocam bu iş biraz da ne yapacağınla ilgili. Dediğiniz gibi tüm data bir anda kaydedilecekse, önce myisama atıp innodb'e cevirmek mantıklı

    Ancak ben bir websitesi yapıyorsam benim için data kaydetme hızı çok mühim değilse, innodb ile başlarım

    + Ben innodb ile birkaç milyonluk data ile çalıştım "select count(*) from table" dışında bir hız p roblemi görmedim

Toplam Hit: 5029 Toplam Mesaj: 24
mysql performans innodb myisam