Bu konuda, Database Autonomy Service (DAS) içindeki genel yavaş günlük analizi özelliğinin nasıl kullanılacağı açıklanmaktadır. Birden fazla veritabanı örneğini merkezi olarak izlemek ve analiz etmek için kullanıcı grupları oluşturup yönetebilirsiniz. Bu özellik, yavaş SQL ifadelerini etkin bir şekilde bulmanıza, teşhis etmenize ve yönetmenize yardımcı olur; yüksek veritabanı yükü ve performans dalgalanmaları gibi sorunları çözerek temel iş süreçlerinizin kararlılığını sağlar.
Temel kavram: Kullanıcı grubu
Kullanıcı grupları, yavaş günlük analizi özelliğinin temel bileşenidir. Bir kullanıcı grubu, özel bir örnek izleme panosu olarak işlev görür. Aşağıdaki işlemleri yapmak üzere bir kullanıcı grubu oluşturabilirsiniz:
Mantıksal gruplama: Farklı iş kollarındaki veritabanı örneklerini daha kolay yönetmek için gruplayın. Her kullanıcı grubunda en fazla 10 örnek bulunabilir.
Birleşik görünüm: Bir gruptaki tüm örneklerin yavaş günlük eğilimlerini, olay dağılımını ve SQL istatistiklerini tek bir sayfadan görüntüleyin.
Verimli geçiş: Örnekleri tekrar tekrar seçmek zorunda kalmadan farklı iş odak noktaları arasında hızlıca geçiş yapın.
DAS, Top Slow Log Group adlı varsayılan bir sistem grubu oluşturur. DAS, her saat hesabınız altındaki son 24 saatte en önemli anormal etkinliklere ve en yüksek sayıda yavaş sorgu günlüğüne sahip ilk beş örneği otomatik olarak seçer. Bu örnekler, kritik sorunları hızla bulmanıza ve çözmenize yardımcı olmak amacıyla gruba eklenir.
Önkoşullar
-
Desteklenen veritabanı altyapıları: Veritabanı örneğiniz aşağıdaki altyapı türlerinden birini kullanmalıdır:
-
İlişkisel veritabanları:
RDS for MySQL, PolarDB for MySQL, MyBase for MySQL
RDS for SQL Server, MyBase for SQL Server
RDS for PostgreSQL, PolarDB for PostgreSQL, PolarDB for PostgreSQL (Compatible with Oracle)
PolarDB-X 2.0
-
NoSQL veritabanları:
Tair (Redis OSS-compatible), MyBase for Redis
ApsaraDB for MongoDB
-
Örnek erişimi: Hedef veritabanı örneğinin DAS'a bağlı olması gerekir. Daha fazla bilgi için bkz. Connect to a database instance.
-
Bölge desteği:
Yavaş sorgu günlüğü ayrıntıları: Bu özellik tüm bölgelerde desteklenir.
Gerçek zamanlı yavaş sorgu günlüğü istatistikleri: Bu özellik Çin anakarası, Hong Kong (Çin), Singapur, Malezya (Kuala Lumpur), Endonezya (Cakarta), Japonya (Tokyo), Almanya (Frankfurt), İngiltere (Londra), ABD (Silikon Vadisi) ve ABD (Virginia) bölgelerinde desteklenir.
Kendi yönettiğiniz veritabanları: Yavaş günlük analizi sayfası kendi yönettiğiniz veritabanı örneklerini desteklemez.
Yavaş sorgu günlüğü eşiği: Yavaş sorgu günlüklerinin kaydedilmesi veritabanı çekirdeği tarafından kontrol edilir. DAS analizden sorumludur ve eşik değerini belirlemez. MySQL için
long_query_timeparametresi gibi yavaş sorgu günlüğü eşiğini yapılandırmak üzere belirli veritabanı örneğinde oturum açmanız gerekir.
Yordam
Global yavaş günlük sayfasına girin
DAS konsolu adresinde oturum açın.
Sol gezinme bölmesinde seçeneklerini seçin.
İsteğe bağlı: Eski görünüme geçmek için sağ üst köşedeki Back to Old Version düğmesini tıklayın. Daha fazla bilgi için bkz. Slow query logs (Old version).
Kullanıcı gruplarını yönetin ve geçiş yapın
Kullanıcı grupları arasında geçiş yapma: Sayfanın sol üst köşesindeki açılır listeden bir kullanıcı grubu seçerek analiz görünümünü değiştirin.
Kullanıcı grubu oluşturma: Add new user group düğmesini tıklayın. Görüntülenen iletişim kutusunda kullanıcı grubu için bir ad girin ve Confirm seçeneğini tıklayın.
-
Kullanıcı gruplarını yönetme:
Grubu düzenleme veya silme: Kullanıcı grubu panelinde, bir kullanıcı grubu adının yanındaki işlem simgesini tıklayarak grubu yeniden adlandırın veya silin.
-
Örnek ekleme: Hedef kullanıcı grubunu seçtikten sonra panelin altındaki Add more instances düğmesini tıklayın. Görüntülenen iletişim kutusunda:
Available Instances listesinde mevcut örneği tıklayarak geçerli kullanıcı grubuna ekleyin.
Selected instances listesinde seçili örneği tıklayarak geçerli kullanıcı grubundan kaldırın.
Örnek silme: Geçerli kullanıcı grubunun örnek listesinde, örneği kaldırmak için örnek kartındaki × simgesini tıklayın.
Örneği gizleme: Geçerli kullanıcı grubunun örnek listesinde, örneği görünümde gizlemek için örnek kartındaki
simgesini tıklayın. Örneğin yavaş sorgu günlüğü bilgileri (eğilimler, olaylar ve yavaş sorgu günlüğü listesi dahil) artık görüntülenmez. Örneği göstermek ve bilgilerini geri yüklemek için simgeyi tekrar tıklayın.Kullanıcı grubunu farklı kaydetme: Geçerli grubun örnek yapılandırmasına dayalı yeni bir kullanıcı grubu oluşturmak için Save as düğmesini tıklayın.
Örnek izinleri: Mavi ile vurgulanan bir örnek kartı, bu örnek için izniniz olduğunu gösterir. İzniniz olmayan bir örnek sarı ile vurgulanır. Yalnızca kimliğini görüntüleyebilir, özel verilerine erişemezsiniz. Erişilebilir örneklerin yalnızca grupta yer almasını sağlamak için özel bir kullanıcı grubu oluşturabilir ve izniniz olmayan örnekleri hariç tutabilirsiniz.
Eğilimleri ve olayları analiz edin
Slow Query Log Trends: Bir zaman aralığı seçtikten sonra üstteki eğilim grafiği, geçerli kullanıcı grubundaki tüm örneklerin toplam yavaş sorgu günlüğü sayısını ve eğilimini gösterir. Bu sayede performans dalgalanmalarının ne zaman meydana geldiğini hızla tespit edebilirsiniz.
-
Event Distribution: Eğilim grafiğinin altında, belirtilen zaman aralığında gerçekleşen temel veritabanı olayları görüntülenir. Bu olaylar şunları içerir:
Optimization Events: SQL optimizasyon analizi yapılan veya optimizasyon önerilerinin oluşturulduğu olaylar.
Security Events: Orta ila yüksek güvenlik riski oluşturan SQL saldırıları veya yapılandırma güvenlik açıkları gibi olaylar.
Throttling Event: SQL kısıtlama veya otomatik SQL kısıtlama eylemlerinin gerçekleştiği olaylar.
Automatic Scaling Events: Otomatik yatay ölçeklendirme veya ölçek küçültme eylemlerinin gerçekleştiği olaylar.
Yavaş SQL ifadelerini bulun ve teşhis edin
Sayfanın alt kısmında yer alan Slow log list ana analiz alanıdır. Geçerli kullanıcı grubundaki tüm örneklerin yavaş sorgu günlüğü bilgilerini bir araya getirir.
Genel istatistikler: Liste varsayılan olarak tüm yavaş SQL ifadelerini birleştirir ve her ifade için yürütme sayısı, maksimum yürütme süresi, maksimum kilit bekleme süresi, maksimum taranan satır sayısı, maksimum döndürülen satır sayısı ve maksimum CPU süresini gösterir.
Tek örnek detaylandırma: Belirli bir örneğin yavaş sorgu günlüklerinin detaylı analizini yapmak için Instance ID/Name öğesinin yanındaki
okunu tıklayın.-
Örneğin yavaş sorgu günlüğü bilgilerinde Slow Log Trend, Event Distribution, Slow Log Statistics ve Slow Log Details öğelerini görüntüleyebilirsiniz.
-
Slow Log Trend grafiğinde, o zamana ait Slow Log Statistics ve Slow Log Details verilerini görüntülemek üzere bir zaman noktası seçebilirsiniz.
NotYavaş bir SQL ifadesi tamamen görüntülenemeyecek kadar uzunsa, tam SQL ifadesini bir açılır kutuda görüntülemek için fare işaretçisini ifadenin üzerine getirin.
Slow Query Log Statistics ve Slow Query Log Details sekmelerinde, yavaş sorgu günlüğü bilgilerini bilgisayarınıza kaydetmek için
simgesini tıklayabilirsiniz.API hata ayıklama amacıyla şu anda seçili ve girilmiş olan parametreleri otomatik olarak taşımak için
simgesini tıklayarak OpenAPI Explorer konsoluna gidebilirsiniz.Event Distribution alanında, belirtilen bir zaman aralığındaki yavaş günlük olaylarını sorgulayabilirsiniz. Ayrıntılarını görüntülemek için bir olayı tıklayın.
-
Slow Log Statistics alanında:
Listenin üzerinde, verileri filtrelemek için filtre koşulları seçebilirsiniz. Kullanılabilir filtre koşulları veritabanı altyapısına göre değişir.
Kullanıcı dağıtımı, istemci dağıtımı ve ölçüm eğilimleri gibi ayrıntılı bir liste ile ilişkileri görüntülemek için hedef SQL ID sütununu tıklayın.
-
Hedef SQL şablonunun Actions sütununda Optimize seçeneğini tıklayın. Görüntülenen SQL Diagnostic Optimization iletişim kutusunda SQL teşhis sonuçlarını görüntüleyin.
Teşhis önerisini kabul ederseniz, sayfanın sağ üst köşesindeki Copy seçeneğini tıklayın ve optimize edilmiş SQL ifadesini veritabanı istemcinize veya DMS'ye yapıştırarak yürütün. Öneriyi kabul etmezseniz, teşhisi sonlandırmak için Cancel seçeneğini tıklayın.
NotDAS, SQL ifadesinin karmaşıklığına, ilgili tablonun veri hacmine ve veritabanı yüküne dayanarak SQL teşhisi yapar. Teşhis önerisinin döndürülmesi 20 saniyeden fazla sürebilir. Teşhis tamamlandığında, teşhis motoru bir teşhis sonucu, bir optimizasyon önerisi ve beklenen optimizasyon faydaları sağlar. Teşhis sonucuna göre öneriyi kabul edip etmemeye karar verebilirsiniz.
Hedef SQL şablonunun Actions sütununda Throttling seçeneğini tıklayın. Hedef SQL ifadesine hız sınırlaması uygulamak için SQL Throttling sayfasında kısıtlama parametrelerini yapılandırın. Daha fazla bilgi için bkz. SQL throttling.
-
Bir PolarDB for MySQL veritabanı örneği için, hedef SQL şablonunun Actions sütununda In-Memory Column Index (IMCI) belgelerini görüntülemek üzere IMCI seçeneğini tıklayın.
NotBir PolarDB for MySQL veritabanı örneğinde In-Memory Column Index düğümü yoksa, bir yavaş sorgu günlüğünün Max Execution Time değeri 20 saniyeyi aşarsa ve Max Scanned Rows değeri 200.000'i aşarsa IMCI düğmesi görüntülenir.
Büyük veri hacimli karmaşık sorgular için sorgu performansını artırmak amacıyla In-Memory Column Index (IMCI) kullanabilirsiniz.
Slow Log Details alanında, hedef SQL ifadesi için Actions sütunundaki Optimize ve Throttling seçeneklerini de tıklayarak SQL Diagnostic Optimization ve SQL Throttling işlemlerini yapabilirsiniz.
-
S: Neden herhangi bir yavaş sorgu günlüğü verisi göremiyorum?
C: Bunun nedeni, gerçek zamanlı hesaplama ve pencere toplama tekniklerinin kullanılması olabilir; bu durum en son yavaş sorgu günlüğü istatistiklerinin yaklaşık 3 dakika gecikmeyle görüntülenmesine neden olur. Ayrıca aşağıdakileri de kontrol edebilirsiniz:
Veritabanı örneği için yavaş sorgu günlüğü özelliğinin etkinleştirildiğini ve eşik değerinin makul bir değere ayarlandığını onaylayın.
Seçilen zaman aralığında yavaş sorgu günlüklerinin oluşturulduğunu onaylayın.
Kendi yönettiğiniz bir MySQL veritabanı için mysql.slow_log tablosunda çok fazla kayıt olmadığını onaylayın. Aşırı sayıda kayıt dbgateway koleksiyonunun zaman aşımına uğramasına neden olur. slow_log tablosunu kısaltın veya yerel dosyalardan yavaş sorgu günlüklerini toplamak için dbgateway host modunu kullanın.
Geçerli hesabın hedef örnek için DAS erişim izinlerine sahip olduğunu onaylayın.
-
S: Bir RAM kullanıcısının kullanıcı gruplarını görüntüleme veya yönetme izni yoksa ne yapmalıyım?
C: Bir yöneticinin RAM kullanıcısına hesap düzeyinde eylem izinleri vermesi gerekir. Bu yetkilendirme yalnızca genel yavaş günlük grupları üzerinde işlem yapma izinlerini etkiler ve RAM kullanıcısının diğer örnekler için veri izinlerini değiştirmez.
-
Genel grup yönetici ilkesi: Örneğin, DASGlobalGroupAdmin. Bu ilke, kullanıcının genel gruplar oluşturmasına, silmesine, değiştirmesine ve sorgulamasına olanak tanır.
{ "Version": "1", "Statement": [ { "Action": [ "hdm:DescribeGlobalGroups", "hdm:CreateGlobalGroup", "hdm:DeleteGlobalGroup", "hdm:ModifyGlobalGroup" ], "Resource": "*", "Effect": "Allow" } ] } -
Genel grup salt okunur ilkesi: Örneğin, DASGlobalGroupReadOnly. Bu ilke, kullanıcının yalnızca genel grupları görüntülemesine olanak tanır.
{ "Version": "1", "Statement": [ { "Action": "hdm:DescribeGlobalGroups", "Resource": "*", "Effect": "Allow" } ] }
-
-
S: Neden bazı örnekler sarı renkle vurgulanıyor ve bu, geçerli kullanıcının erişim iznine sahip olmadığını mı gösteriyor?
C: Sarı vurgu, RAM kullanıcısının örnek için veri erişim iznine sahip olmadığını gösterir. Bu sorunu aşağıdaki iki yoldan biriyle çözebilirsiniz:
Yönetici ile iletişime geçin: Yöneticiden RAM kullanıcısına örnek için erişim izinleri vermesini isteyin.
Genel grup izinleri verin: RAM kullanıcısına DASGlobalGroupAdmin iznini verin. Bu, RAM kullanıcısının kullanıcı grupları oluşturmasına ve toplu olarak erişim iznine sahip olduğu örneklerin verilerini görüntülemesine olanak tanır.
-
S: Sorgu aslında veri döndürse bile yavaş sorgu günlüğündeki döndürülen satır sayısı (Rows_sent) neden 0'dır?
C: Bu genellikle uygulamanın sunucu tarafı imleç modunu kullanmasından kaynaklanır. İmleç modunda bir SQL ifadesinin yürütülmesi iki aşamaya ayrılır:
EXECUTE aşaması: Sunucu sorguyu yürütür ve bir sonuç kümesi oluşturur ancak veri satırlarını istemciye hemen göndermez. Yalnızca sütun tanımları gibi meta verileri döndürür.
FETCH aşaması: İstemci, FETCH komutunu kullanarak veri satırlarını toplu halde çeker.
Yavaş sorgu günlüğü, EXECUTE aşamasındaki istatistikleri kaydeder. Bu aşamada MySQL verileri taramıştır (bu nedenle Rows_examined 0 değildir) ancak henüz istemciye herhangi bir veri satırı göndermemiştir (veriler sonraki FETCH aşamasında gönderilir). Bu nedenle Rows_sent 0 olarak kaydedilir.
Yaygın senaryolar:
Java/JDBC: Bağlantı URL'sinde useCursorFetch=true etkinleştirilir ve PreparedStatement.setFetchSize() 0'dan büyük bir değere veya Integer.MIN_VALUE değerine ayarlanır.
Python: MySQLdb.cursors.SSCursor veya pymysql.cursors.SSCursor kullanılır.
ORM çerçeveleri: Bazı Nesne-İlişkisel Eşleme (ORM) çerçeveleri, büyük veri kümesi sorgularını işlerken varsayılan olarak imleç moduna dayalı akış sorguları kullanır.
Bunun neden olup olmadığını doğrulamak için uygulama kodunuzda
fetchSizeyapılandırılıp yapılandırılmadığını veya akış imleci kullanılıp kullanılmadığını kontrol edin. Ayrıca FETCH isteklerini kontrol etmek için veritabanında SHOW GLOBAL STATUS LIKE 'Com_stmt_fetch'; komutunu çalıştırabilirsiniz. -
S: Neden yavaş sorgu günlüğündeki tamamlanma süresi SQL ifadesinin gerçek yürütme süresinden farklıdır?
C: Bu sorun genellikle SQL ifadesi yürütülürken saat diliminin değiştirilmesinden kaynaklanır. Yavaş sorgu günlüğünde kaydedilen SQL yürütme süresi için saat dilimi oturum, veritabanı veya sistem düzeyinde olabilir. Yavaş sorgu günlüğündeki zamanı belirleme mantığı şu şekildedir: Veritabanı için bir saat dilimi ayarlanmışsa veritabanı saat dilimi kullanılır. Aksi takdirde sistem saat dilimi kullanılır. Oturum düzeyindeki saat dilimi bir SQL ifadesi kullanılarak değiştirilirse, yavaş sorgu günlüğü kaydındaki saat dilimi doğru şekilde dönüştürülmeyebilir.
-
S: SQL ID nedir?
C: Aynı türdeki yavaş sorgu günlüklerinin istatistiksel analizini kolaylaştırmak için DAS, bir yavaş sorgu günlüğünden yorumları kaldırır ve parametreleri soru işaretleriyle değiştirerek bir yavaş sorgu günlüğü şablonu oluşturur. Ardından DAS, şablon üzerinde bir hash hesaplama yaparak 32 karakterlik bir SQL ID üretir. Aynı SQL ID'ye sahip kayıtlar aynı türdeki yavaş sorgu günlükleri olarak kabul edilir.
-
S: Neden bir yavaş sorgu günlüğü kısaltılmıştır? Kısaltılmamış yavaş sorgu günlüğünü nasıl elde edebilirim?
C: Altta yatan depolama sınırlamaları nedeniyle tek bir yavaş sorgu günlüğünün maksimum uzunluğu 16 KB'dir. Bu sınırı aşan içerik kısaltılır. Bu uzunluk sınırı değiştirilemez ve kısaltılmamış yavaş sorgu günlükleri elde edilemez. Tam SQL ifadelerini görüntülemek için denetim günlüğü özelliğini etkinleştirin.
-
S: Neden bir API tarafından döndürülen yavaş sorgu günlüğü verileri konsoldaki verilerle tutarsızdır?
C: Bu durum aşağıdaki iki nedenden birinden kaynaklanabilir:
Veritabanı altyapısı tarafından sağlanan yavaş sorgu günlüğü API'sini kullanıyorsunuz. Verilerin konsolla tutarlı olmasını sağlamak için DAS tarafından sağlanan yavaş sorgu günlüğü API'sini (DescribeSlowLogStatistic) kullanın. API'yi kullanmanın en basit yolu: Konsolda hedef verileri filtreledikten sonra sayfa verilerini almak için API'nin nasıl kullanılacağını görüntülemek üzere Go to Debug seçeneğini tıklayın.
Şu anki zaman noktasına yakın yavaş sorgu günlüklerini sorgularsanız veriler geç gelebilir; bu durum aynı API'nin iki sorguda tutarsız veriler döndürmesine neden olur.
SSS
Başvurular
Veritabanı örneğinizde yavaş SQL ifadeleri oluştuğunda bunları otomatik olarak optimize etmek için DAS'in otomatik veritabanı yönetimi özelliğini etkinleştirebilirsiniz.
-