Simple Log Service içinde günlük sorgulama ve analizini hızlandırmak için aşağıdaki yöntemleri uygulayın.
Parça sayısını artırın veya Dedicated SQL'i etkinleştirin
Veri okuma ve yazma kapasitelerini artırmak için parça sayısını artırın. Ancak bu yöntem yalnızca artan veriler için geçerlidir. Parçalar, hesaplama kaynaklarıdır. Hesaplama hızı, parça sayısına bağlı olarak artar. Her bir parçada taranan veri girişlerinin 50 milyonu aşmadığından emin olun. Parça sayısını artırmak için bir parçayı bölebilirsiniz. Daha fazla bilgi için bkz. Parçayı bölme. Parçaların faturalandırması hakkında daha fazla bilgi için bkz. Faturalandırma yöntemlerine göre aktif parçaların faturalandırma örnekleri.
Dedicated SQL daha yüksek eşzamanlılıkta analiz ve daha büyük veri taramalarını destekler.
Zaman aralığını kısaltın ve veri hacmini azaltın
-
Uzun bir zaman aralığı sorgu işlemini yavaşlatır.
Hesaplama hızını artırmak istiyorsanız sorgu işleminin zaman aralığını kısaltın.
-
Büyük miktarda veri sorgu işlemini yavaşlatır.
Sorgu işleminin veri hacmini azaltın.
Sorguları tekrarlayın
Sorgu sonuçları doğru değilse verileri tekrar tekrar sorgulayabilirsiniz. Her sorgu işlemi gerçekleştirdiğinizde alttaki hızlandırma mekanizması mevcut sorgu sonuçlarını analiz eder. Verileri defalarca sorguladığınızda sistem daha doğru sonuçlar döndürebilir.
Analiz deyimlerini optimize edin
Zaman alan bir sorgu deyimi şu özelliklere sahiptir:
GROUP BY yan tümcesi, analiz sonuçlarını string türündeki bir veya daha fazla sütuna göre gruplamak için kullanılır.
GROUP BY yan tümcesi, analiz sonuçlarını beşten fazla sütuna göre gruplamak için kullanılır.
Deyim, string üreten işlemler içerir.
Analiz deyimlerini optimize etmek için aşağıdaki yöntemleri kullanabilirsiniz:
-
String üreten işlemleri dahil etmeyin.
Örneğin date_format işlevini kullanarak belirli bir formatta zaman damgası oluşturursanız sorgu verimliliği düşüktür. Zaman damgası oluşturmak için date_trunc veya time_series işlevini kullanın. Örnek:
* | select date_format(from_unixtime(__time__) , '%H_%i') as t, count(1) group by t -
Analiz sonuçlarını string türündeki bir veya daha fazla sütuna göre gruplamayın.
Örneğin GROUP BY yan tümcesini kullanarak analiz sonuçlarını string türündeki bir veya daha fazla sütuna göre gruplandırırsanız hash hesaplama iş yükü ağır olur. Hash hesaplama iş yükü, genel hesaplama iş yükünün %50'sinden fazlasını oluşturur. Örnekler:
-
Verimli sorgu deyimi
* | select count(1) as pv , from_unixtime(__time__-__time__%3600) as time group by __time__-__time__%3600 -
Verimsiz sorgu deyimi
* | select count(1) as pv , date_trunc('hour',__time__) as time group by time
İki sorgu deyimi de saat başına düşen günlük sayısını hesaplamak için kullanılır. İkinci deyimde zaman damgaları string'lere dönüştürülür. Ardından analiz sonuçları bu string'lere göre gruplanır. Örneğin 2021-12-12 00:00:00, string formatında bir zaman damgasıdır. İlk deyimde tam saatteki zaman damgaları alınır, analiz sonuçları bu zaman damgalarına göre gruplanır ve ardından zaman damgaları string'lere dönüştürülür.
-
-
Analiz sonuçlarını birden çok sütuna göre gruplamak istiyorsanız daha fazla değere sahip bir alanı daha az değere sahip bir alandan önce yerleştirin.
Örneğin belirli bir alan için değer sayısı 13 ise ve uid alanı için değer sayısı 100 milyon ise GROUP BY yan tümcesinde uid alanını ilgili alandan önce yerleştirmenizi öneririz. Örnekler:
-
Verimli sorgu deyimi
* | select province,uid,count(1) group by uid,province -
Verimsiz sorgu deyimi
* | select province,uid,count(1) group by province,uid
-
-
Yaklaşık işlevleri kullanın.
Yaklaşık işlevler, kesin işlevlerden daha iyi performans sunar. Yaklaşık işlevler, hız uğruna hassasiyetten feragat eder. Örnekler:
-
Verimli sorgu deyimi
* |select approx_distinct(ip) -
Verimsiz sorgu deyimi
* | select count(distinct(ip))
-
-
Bir analiz deyimi yalnızca sorgulamak istediğiniz sütunları belirtin. Tüm sütunları sorgulamayın.
Bir analiz deyimi yalnızca hesaplamada gerekli olan sütunları sorgulayın. Tüm sütunları sorgulamak istiyorsanız arama sözdizimini kullanın. Örnekler:
-
Verimli sorgu deyimi
* |select a,b c -
Verimsiz sorgu deyimi
* |select *
-
-
Gruplama için kullanılmayan sütunları bir toplama işlevine yerleştirin.
Örneğin userid ve username sütunlarının değerleri birbirleriyle eşleşmelidir. Verileri gruplamak için GROUP BY yan tümcesinde yalnızca userid sütununu belirtmeniz gerekir. Örnekler:
-
Verimli sorgu deyimi
* | select userid, arbitrary(username), count(1) group by userid -
Verimsiz sorgu deyimi
* | select userid, username, count(1) group by userid,username
-
-
IN yan tümcesini kullanmayın.
Bir analiz deyimi içinde IN yan tümcesini kullanmayın. Bir arama deyimi içinde OR yan tümcesini kullanabilirsiniz. Örnekler:
-
Hızlı sorgu ve analiz deyimleri
key: a or key: b or key: c | select count(1) -
Verimsiz sorgu deyimi
* | select count(1) where key in ('a','b')
-