• 20-03-2016, 00:23:52
    #1
    Merhabalar arkadaşlar mysql veritabanında 60milyon veri var, normal olarak like sorgusu ile çoklu özellikte arama yapma ve ya tekil farketmiyor arama sorgusu patlıyor çok geç yanıt veriyor bazen zaman aşımına uğruyor nette araştırmama rağmen bunla ilgili bir açıklama göremedim milyon kayıtlar içerisinde hızlı sonuç verebililecek ymsql performans artırıcı bir sorgu yöntemi varmı ? neler yapılmalı bilgisi olan paylaşabilir mi ?
  • 20-03-2016, 12:13:42
    #2
    google kendi algoritmasını kurtu ve geliştiriyor bu konuda.

    Ancak sizin kullanabileceğiniz mysql alt yapısıyla örnek vermem gerekirse like yerine full index şeklinde sorguların yapılması daha hızlı olur.

    Bunun dışında sunucu alt yapınız nedir. (SSD hdd mi kullanıyorsunuz mesela. İşlemci nedir. Ram nedir.)
    Böyle bir kayıdın normalizasyon kurallarına göre kurulduysa sorgular tablo ilişkilendimeleri vs bunların hepsi sorgunun cevap süresine etki eder.
  • 21-03-2016, 17:01:07
    #3
    Bu sorguları hızlandırmak için hem sunucusal hem yazılımsal farklı yöntemler uygulanabilir. Öncelikle projenize ve ihtiyaçlarınıza göre yöntemler değişiklik gösterebilir ama ben aşağıda belli başlı bir kaç yöntemden bahsedeceğim.

    Öncelikle mysql serverınızın optimizasyonunun iyi yapıldığını ve server gereksinimlerinin yeterli olduğunu varsayarak;

    - Sql tablonuzdaki sutünların tipleri ve sorgulama yaptığınız ilgili sutünların doğru bir şekilde index tanımlarının yapılması sorgu hızınızı ziyadesiyle arttıracaktır.

    - ve yine bu iki yöntemle birlikte php tarafında bir cacheleme sistemi hazırlayabilirsiniz. örneğin /?q=ankara şeklinde bir arama sayfanız var, bu sonuç sayfası için cache oluşturup belli bir süre (örn: 1 saat, 2saat ihtiyaçlarınıza göre) tutarsınız. Sonraki aramalarda ankara sonucunu mysqlde sorgulamak yerine cache dosyasından getirirsiniz böylelikle o sorgu için mysql bağlantısı kurulmayacağından hem sayfa açılış hızları hemde server loadı optimize etmiş olursunuz.

    - Üstteki yöntemlerin ikiside yeterli gelmezse ve sürekli büyüyen bir veritabanınız varsa bu yöntemlerle birlikte sphinx vb. bir search engine kullanabilirsiniz.