日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

日志分析

更新時(shí)間:

PolarDB-X支持SQL審計(jì)與分析功能,依托日志服務(wù)產(chǎn)品,提供強(qiáng)大的日志分析能力。本文將介紹常見場(chǎng)景的SQL日志分析語句及示例。

前提條件

開啟SQL審計(jì)與分析功能。

注意事項(xiàng)

  • 相同地域下的所有PolarDB-X數(shù)據(jù)庫的審計(jì)日志都會(huì)寫入同一個(gè)日志服務(wù)的Logstore中,因此PolarDB-X的SQL審計(jì)與分析搜索框內(nèi)會(huì)默認(rèn)為您帶上__topic__的過濾條件,保證您搜索到的SQL日志都屬于同一地域下的PolarDB-X數(shù)據(jù)庫。本文提供的所有查詢語句,都需要在已有的__topic__過濾條件后追加使用。

    例如圖中1部分的語句為默認(rèn)過濾條件,序號(hào)2部分的語句為追加的過濾條件。

    1

  • 您可以單擊原始日志各個(gè)字段后的詳細(xì)內(nèi)容,自動(dòng)生成包含對(duì)應(yīng)字段查詢語句。

    例如您可以單擊sql_type后的Delete,查看所有包含Delete字段的SQL語句。

    delete

快速定位SQL

您可以使用以下命令快速定位問題SQL。

  • 模糊搜索

    例如,您可以使用如下命令查詢包含關(guān)鍵字為200003的SQL語句:

    and sql: 200003
  • 字段搜索

    依賴預(yù)置的索引字段,PolarDB-X SQL審計(jì)還支持根據(jù)字段搜索。例如您可以使用如下命令查詢DROP類型的SQL:

    and sql_type:Drop
  • 多條件搜索

    您可以通過andor等關(guān)鍵字實(shí)現(xiàn)多條件的搜索。例如您可以使用如下命令查詢針對(duì)id=200003行進(jìn)行的所有DELETE語句:

    and sql: 200003 and sql_type: Delete
  • 數(shù)值比較搜索

    索引字段中的affect_rowsresponse_time是數(shù)值類型,支持比較操作符。例如您可以使用如下命令查詢response_time大于5毫秒的DROP語句:

    and response_time > 5 and sql_type: Drop

    或者使用如下命令查詢刪除100行以上數(shù)據(jù)的SQL語句:

    and affect_rows  > 100 and sql_type: Delete

SQL執(zhí)行狀況分析

您可以使用以下命令查看SQL執(zhí)行狀況。

  • SQL執(zhí)行失敗率

    您可以使用如下命令查詢SQL執(zhí)行的失敗率:

    | SELECT sum(case when fail = 1 then 1 else 0 end) * 1.0 / count(1) as fail_ratio

    查詢結(jié)果如下圖所示:

    告警

    說明

    若您的業(yè)務(wù)對(duì)SQL錯(cuò)誤率敏感,您可以在此查詢結(jié)果的基礎(chǔ)上,單擊頁面右上角的另存為告警并根據(jù)業(yè)務(wù)需要自定義告警信息。

  • SQL累計(jì)查詢行數(shù)

    您可以使用如下命令查詢SELECT語句累計(jì)查詢的行數(shù):

    and sql_type: Select | SELECT sum(affect_rows)
  • SQL類型分布

    您可以使用如下命令查詢SQL類型的分布情況:

    | SELECT  sql_type, count(sql) as times GROUP BY sql_type
  • SQL獨(dú)立用戶IP分布

    您可以使用如下命令查詢SQL獨(dú)立用戶的IP地址分布:

    | SELECT  user, client_ip, count(sql) as times GROUP BY user, client_ip

SQL性能分析

您可以使用以下命令查看SQL性能分析詳情。

  • SELECT平均耗時(shí)

    您可以使用如下命令查詢SELECT語句的平均耗時(shí):

    and sql_type: Select | SELECT avg(response_time)
  • SQL執(zhí)行耗時(shí)分布

    您可以使用如下命令查詢SQL執(zhí)行耗時(shí)分布:

    and response_time > 0 | select   case  when response_time <= 10 then '<=10毫秒'  when response_time > 10 and response_time <= 100 then '10~100毫秒'  when response_time > 100 and response_time <= 1000 then '100毫秒~1秒'  when response_time > 1000 and response_time <= 10000  then '1秒~10秒'  when response_time > 10000 and response_time <= 60000  then '10秒~1分鐘'  else '>1分鐘' end as latency_type,  count(1) as cnt group by latency_type order by latency_type DESC
    說明

    上述查詢將response_time按照小于等于10毫秒、大于10毫秒小于等于100毫秒、大于100毫秒小于等于1秒和大于1秒小于等于10秒這4個(gè)時(shí)間段對(duì)SQL執(zhí)行耗時(shí)進(jìn)行分布,您也可以自定義response_time的時(shí)間段,獲取更加精細(xì)的結(jié)果。

  • 慢SQL Top 50

    您可以使用如下命令查詢系統(tǒng)排名前50的慢SQL:

    | SELECT date_format(from_unixtime(__time__), '%m/%d %H:%i:%s') as time, user, client_ip, client_port, sql_type, affect_rows, response_time, sql ORDER BY  response_time desc LIMIT 50

    查詢結(jié)果如下圖所示,結(jié)果中包含SQL執(zhí)行時(shí)間、執(zhí)行的用戶名、IP地址、端口號(hào)、SQL類型、影響行數(shù)、執(zhí)行時(shí)間以及具體的SQL語句等信息。

    7

  • 高代價(jià)SQL模板Top 10

    在大多數(shù)應(yīng)用中,SQL通?;谌舾赡0鍎?dòng)態(tài)生成的,只是參數(shù)不同。您可以使用如下命令通過模板ID找到應(yīng)用中高代價(jià)的SQL模板:

    | SELECT sql_code as "SQL模板ID", round(total_time * 1.0 /sum(total_time) over() * 100, 2) as "總體耗時(shí)比例(%)" ,execute_times as "執(zhí)行次數(shù)", round(avg_time) as "平均執(zhí)行時(shí)間",round(avg_rows) as "平均影響行數(shù)", CASE WHEN length(sql) > 200 THEN  concat(substr(sql, 1, 200), '......') ELSE trim(lpad(sql, 200, ' ')) end as "樣例SQL" FROM  (SELECT sql_code, count(1) as execute_times, sum(response_time) as total_time, avg(response_time) as avg_time, avg(affect_rows) as avg_rows, arbitrary(sql) as sql FROM log GROUP BY sql_code) ORDER BY "總體耗時(shí)比例(%)" desc limit 10

    統(tǒng)計(jì)結(jié)果中包括SQL模板ID,該模板SQL占總體SQL的耗時(shí)比例、執(zhí)行次數(shù)、平均執(zhí)行時(shí)間、平均影響行數(shù)以及樣例SQL等信息。

    8

    說明

    上述查詢是按照總體耗時(shí)比例%排序,您也可以根據(jù)平均執(zhí)行時(shí)間執(zhí)行次數(shù)進(jìn)行排序幫助排查問題。

  • 事務(wù)平均執(zhí)行時(shí)長(zhǎng)

    對(duì)于相同事務(wù)內(nèi)的SQL,預(yù)置的trace_id字段前綴相同,后綴為'-' + 序號(hào);非事務(wù)的SQL的trace_id中則不包含'-'。因此,您可以使用如下命令對(duì)事務(wù)SQL的性能進(jìn)行相關(guān)分析。

    說明

    由于事務(wù)分析涉及前綴匹配操作,查詢效率會(huì)低于其它類型的查詢操作。

    • 查詢事務(wù)的平均執(zhí)行耗時(shí)

      您可以使用如下語句查詢事務(wù)的平均執(zhí)行耗時(shí):

       | SELECT  sum(response_time) / COUNT(DISTINCT substr(trace_id, 1, strpos(trace_id, '-') - 1)) where strpos(trace_id, '-') > 0
    • 慢事務(wù)Top 10

      您可以按照事務(wù)的執(zhí)行時(shí)間排序查詢慢事務(wù)的列表:

      | SELECT substr(trace_id, 1, strpos(trace_id, '-') - 1) as "事務(wù)ID" , sum(response_time) as "事務(wù)耗時(shí)" where strpos(trace_id, '-') > 0 GROUP BY substr(trace_id, 1, strpos(trace_id, '-') - 1) ORDER BY "事務(wù)耗時(shí)" DESC LIMIT 10

      在此基礎(chǔ)上,您可以使用如下命令,根據(jù)查到的慢事務(wù)ID搜索該事務(wù)下的所有SQL用于分析執(zhí)行慢的具體原因:

       and trace_id: db3226a20402000*
    • 大批量操作事務(wù)Top 10

      您可以使用如下命令按照事務(wù)內(nèi)SQL影響的行數(shù)排序,查詢大批量操作的事務(wù)列表:

      | SELECT substr(trace_id, 1, strpos(trace_id, '-') - 1) as  "事務(wù)ID" , sum(affect_rows) as "影響行數(shù)" where strpos(trace_id, '-') > 0 GROUP BY substr(trace_id, 1, strpos(trace_id, '-') - 1) ORDER BY "影響行數(shù)" DESC LIMIT 10

SQL安全性分析

您可以使用以下命令查看SQL安全性分析情況。

  • 錯(cuò)誤SQL類型分布

    您可以使用如下命令查看錯(cuò)誤SQL類型分布:

    and fail > 0 | select sql_type, count(1) as "錯(cuò)誤次數(shù)" group by sql_type
  • 高危SQL列表

    PolarDB-X中的高危SQL是指DROP或TRUNCATE類型的SQL(您也可以根據(jù)業(yè)務(wù)需求增加更多條件自定義高危SQL)。

    您可以使用如下命令查詢包含DROP或TRUNCATE類型的SQL列表:

    and sql_type: Drop OR sql_type: Truncate
  • 大批量刪除SQL列表

    您可以使用如下命令大批量刪除SQL列表:

    and affect_rows > 100 and sql_type: Delete | SELECT date_format(from_unixtime(__time__), '%m/%d %H:%i:%s') as time, user, client_ip, client_port, affect_rows, sql ORDER BY  affect_rows desc LIMIT 50