3 tip ayar, 1 reaktif ve 2 proaktif olacaksınız.
tepkili
Maviden, bazı sorgular size soruna neden oluyor Bir uygulama hatası veya özelliği, beklentilerin üzerinde büyüyen bir tablo, bir trafik artışı veya "en iyi duruma getirici" olan sorgu iyileştirici olabilir. Bu, gecenin bir yarısı, ahlaksız bir ilişki türü olabilir ya da kritik olmayan bir nitelikteki sistem yavaşlığına cevaben olabilir. Her iki durumda da, reaktif ayarlamanın tanımlayıcı karakteri, zaten bir sorun yaşamanızdır . Söylemeye gerek yok, mümkün olduğunca az bunu yapmak istiyorsun. Bu bizi ...
Proaktif
Tip 1: Rutin Bakım
Bir tür programda, şemanızın ne sıklıkla değiştiğine ve verilerinizin ne kadar hızlı büyüdüğüne bağlı olarak birkaç ayda veya haftada bir, veritabanınızın performans analizi araçlarının (örneğin Oracle DBA'lar için AWR raporları) çıktılarını gözden geçirmelisiniz. Yeni sorunlara bakıyorsunuz; bu, Reaktif ayarlama gerektirme yolunda, düşük asılı meyvelerin yanı sıra, yakında sorun çıkması muhtemel olmayan ancak çok fazla önleme umuduyla çok az çaba göstererek gelişebilecek olan şeylerdir. - gelecekteki problemler. Bunun için ne kadar zaman harcamanız gerektiğine ve ne kadar zaman harcayabileceğinize bağlı olacak, ancak en uygun miktar asla sıfır değildir. Ancak, daha fazlasını yaparak harcayacağınız miktarı kolayca azaltabilirsiniz ...
Tip 2: Uygun Tasarım
Knuth'un "erken optimizasyona" karşı uyarısı yaygın olarak bilinmekte ve usulüne uygun olarak saygı duyulmaktadır. Ancak "prematüre" nin doğru tanımı kullanılmalıdır. Bazı uygulama geliştiricileri, kendi sorgularını yazmalarına izin verildiğinde, üzerine vurdukları ilk sorguyu mantıken doğru bir şekilde benimseme eğilimindedirler ve performans, şimdi veya gelecek için hiçbir sakıncası yoktur. Ya da sadece üretim ortamını temsil etmeyen bir geliştirme veri setine karşı test edebilirler (ipucu: Bunu yapma! Geliştiriciler her zaman test için gerçekçi verilere erişebilmelidir.). Mesele şu ki, bir sorguyu ayarlamak için uygun zaman, ilk uygulandığı zaman, düşük performanslı bir SQL listesinde görünmediğinde ve kesinlikle kritik bir soruna neden olduğunda değil.
Öyleyse DBA topraklarında erken bir optimizasyon olarak nitelendirilecek olan nedir? Listemin başında kanıtlanmış bir ihtiyaç olmadan normalleşmeden fedakarlık olacaktır. Çalışma sırasında alt satırlardan hesaplamak yerine üst satırda toplam tutabildiğinizden emin olabilirsiniz, ancak gerçekten gerekli mi? Twitter veya Amazon iseniz, stratejik normalleştirme ve ön hesaplama en iyi arkadaşlarınız olabilir. 5 kullanıcı için küçük bir muhasebe veritabanı tasarlıyorsanız, veri bütünlüğünü kolaylaştıracak uygun yapının öncelikli olması gerekir. Diğer erken optimizasyonlar da aynı şekilde bir öncelik meselesidir. Günde bir kez çalıştırılan ve 0,1 saniyeye kesebileceğinizi düşünseniz bile, 10 saniye süren bir sorguyu ayarlayarak saatler harcamayın. Belki günde 6 saat çalışan bir raporunuz vardır. ancak ayarlama zamanına yatırım yapmadan önce toplu iş olarak zamanlamayı keşfedin. Üretim yükünüz asla% 10'un üzerine çıkmazsa (güvenliği yönetebileceğinizi varsayarak) ayrı, gerçek zamanlı olarak çoğaltılmış bir raporlama örneğine yatırım yapmayın.
Gerçekçi verilere karşı test ederek, büyüme ve trafik düzenleri hakkında eğitimli tahminler alarak (sivri uçlar için artılar) ve platformunuzun optimize edici tuhaflıkları hakkındaki bilgilerinizi uygulayarak, şu anda değil, gelecekte en iyi şekilde çalışan (en yakın) sorguları dağıtabilirsiniz. ve idealin altında koşullar altında. Uygun teknikleri uyguladığınızda, sorgu performansı doğru bir şekilde tahmin edilebilir ve optimize edilebilir (her bir bileşenin olması gerektiği kadar hızlı olması anlamında).
(Ve sen onun yanındayken istatistikleri öğren! )