Long running queries

{问题}

您能帮我识别长期运行的SQL查询和不正确的统计数据吗?

{问题}

{回答}

找到长时间运行的查询,查询 system.Connections., system.transactions., 和 system.nodes. table:

SELECT c.USER, 
       c.SCHEMA, 
       c.clienthost, 
       c.clientinfo, 
       Substr(c.sqlstring, 0, 60) AS "SQL Statement (partial)", 
       c.runtime / 1000000        AS "runtime (seconds)", 
       c.transruntime / 1000000   AS "transruntime(seconds)", 
       c.transid                  AS "TransId", 
       n.hostname, 
       CASE 
         WHEN t.blockedby = -1 THEN NULL 
         ELSE t.blockedby 
       END                        AS "BlockedBy TransId" 
FROM   system.connections c 
       INNER JOIN (SELECT DISTINCT id, 
                                   nodeid, 
                                   sourcenode, 
                                   blockedby 
                   FROM   system.transactions) t 
               ON t.id = c.transid 
                  AND t.nodeid = c.nodeid 
                  AND t.sourcenode = c.nodeid 
       INNER JOIN system.nodes n 
               ON n.id = c.nodeid 
WHERE  ( c.runtime / 1000000 ) >= {# of Seconds considered a long query} 
ORDER  BY runtime DESC;  

示例输出:

USER  SCHEMA  CLIENTHOST  CLIENTINFO    SQL Statement (partial)    runtime (seconds)  transruntime(seconds)  TransId  HOSTNAME  BlockedBy TransId
 ----- ------- ----------- ----------- ---------------------------- ------------------ ---------------------- -------- --------- ------------------

  DBA   USER   172.22.0.2    nuosql    select distinct(f1) from t1;         20                   20           4197506  test-te-1       <null>

 

要查找一个不正确的统计信息,请查询 system.IndexStatistics. table:

SELECT i.SCHEMA, 
       i.tablename, 
       i.indexname, 
       i.statstype, 
       i.keycount, 
       i.valid, 
       i.maxkeysize, 
       i.minkey, 
       i.maxkey 
FROM   system.IndexStatistics. i 
WHERE  i.valid = 0 
       AND i.SCHEMA <> 'SYSTEM' 
ORDER  BY i.SCHEMA, 
          i.tablename, 
          i.indexname;
示例输出:
 SCHEMA  TABLENAME  INDEXNAME  STATSTYPE  KEYCOUNT  VALID  MAXKEYSIZE  MINKEY  MAXKEY
 ------- ---------- ---------- ---------- --------- ------ ----------- ------- -------

  USER       T1         I1      Unknown    <null>   FALSE     1024     'NULL'  'NULL'

上面的输出显示了一个索引的无效统计信息。这些统计数据可以通过使用Analyze {表|来手动计算所有可用的记录版本指数}。

分析 INDEX USER.I1;

有关更多信息,请检查 分析索引库 system table. 

{回答}

Have more questions? 提交申请

注释