• 16-02-2017, 10:49:36
    #1
    Merhabalar
    arkadaşlar, elimizde bir otomasyon var.
    otomasyon şuan bir vps üzerinde cpanel kurulu bir sunucuda host etmekte.
    bu otomasyon için dakikada bir çalışan 15 adet cron var.
    her cron ortalama 100 sorgu çalışltırıyor ve bu sorgular veri listeleme ve güncelleme işlemi yapıyor.birde yaklaşık 10 dakikada bir çalışan cronlar var.
    bu cronlar ise listeleme güncelleme ve ekleme işlemi yapıyor ve bu cronlar binlerce işlem yapıyor.
    bu otomasyonda ortalama bir tabloda 50bin ile 150bin arası data bulunuyor.
    sorgularımız acayip yavaş veritabanı olarak mysql kullanıyoruz ve tablo türleri ağırlıklı olarak innodb.
    şuan en çok işlem yapılan tabloda 120bin data var fakat bu sayı şuan oldukca az hedefte ortalama 2 milyon kadar data var.işin özü sürekli sorgulama yapılan bir veri tabanımızda sorgularımız çok ağır işliyor bunu nasıl çözebiliriz?
    sunucumu yükseltmeliyiz yoksa başka bişeymi yapmalıyız ne yapmalıyız tam olarak?
  • 16-02-2017, 23:42:27
    #2
    Ne yazıkki mysql bu gibi olaylarda yetersiz kalıyor. NoSql veritaban sistemleri kullanabilirsiniz. MongoDB güzel alternatif'dir.
  • 17-02-2017, 11:08:39
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    İlk arternatif sunucu yükseltmek olmayabilir. Öncelikle aynı sorgular için cache tutmayı düşünün. Eğer yapamıyorsanız PostgreSQL gibi, MySQLden hızlı veritabanlarına data yoğunluğu artmadan geçiş yapmanızı öneririm. MongoDB 'de sql tarzı kod çağrımı olmadığı için zorluk yaşayacaksınızdır. PostgreSQL en iyi alternatif görünüyor. Bunların dışında evet Sunucuyu yükselterek hızınızı arttırabilirsiniz. Tabi bu data yoğunluğu arttıkça masraflarınızın sürekli artacağına işaret ediyor.
  • 18-02-2017, 21:50:32
    #4
    Merhabalar,

    Öyle kafadan popülist bir şekilde NoSQL kullanın, PostgreSQL'e geçin veya sunucuyu yükseltin demek kadar saçma bir şey olamaz. İş doğru yapılmaz ise veritabanı ve sunucu kaynağı seçiminiz ne olursa olsun verim alamazsınız!!!

    1. Öncelikle MySQL yapılandırmanız doğru mu?
    2. İşletim sistemi ve veritabanı tarafında yapılandırmada optimizasyon yapıldı mı?
    3. Veritabanında çalışan sorgularda bir hata var mı?
    4. İndeksler ne durumda? Eksik indeks var mı?
    5. Tablolarda bloating var mı?
    6. Partitioning yapıldı mı?
    7. MySQL'de hangi versiyonu kullanıyorsunuz?
    8. MySQL'de kulllanılan veritabanı motoru nedir?
    9. Caching kullanılıyor mu? Nerelerde kullanılabilir veya kullanılabilir mi?
    ........
    Bu liste uzayıp gider. 2 milyon satır veri miktarı olarak MySQL için bile küçük.

    Sistem incelenir, yapılabilecek optimizasyonlar değerlendirilir daha sonra kaynak artırımı gündeme gelir.
    Yok yapısal bir sınırlandırmaya takılıyor iseniz veya büyüme planınız var ise o zaman PostgreSQL'e göç edilir. PostgreSQL yetersiz kalır ise, EDB PAS'a geçiş yapılır. İş analiz edilmeden adım atılır ise daha büyük iş, daha büyük maliyet çıkar ve günün sonunda hem performans alamazsınız hem de pişman olursunuz. Belirli bir noktadan sonra geriye dönüşü de yapamazsınız.

    Açıkçası sadece indekslerin düzenlenmesi ve mysql yapılandırmasının gözden geçirilmesi bile sizi kurtaracaktır diye düşünüyorum.

    NoSQL çözümlerini listeye eklemiyorum bile. Doğru şeyi doğru yerde kullanmak gerekir. NoSQL çözümüne gitmek demek bütün uygulamanızı yeniden yazmanız demektir. Yapısal olmayan bir veri tutuyorsanız onu MySQL veya PostgreSQL üzerindeki json kolonlarda tutmak çok daha mantıklı olacaktır. Hem yapısallığı ve ilişkiselliği korursunuz, hem de yapılsal olmayan veriler üzerinde konforlu bir şekilde çalışabilirsiniz.

    İyi günler.