gpt4 book ai didi

sql - 如何创建不会导致 DB2 挂起的查询?

转载 作者:行者123 更新时间:2023-12-03 20:27:10 24 4
gpt4 key购买 nike

我有一个包含三个表 A、B 和 C 的 DB2 数据库。

数据库是这样创建的:

create database DB alias DB AUTOMATIC STORAGE YES ON /home/db2inst1 using codedeset UTF-8 territory en PAGESIZE 32768


  • 表 A 为 28 列宽,1.8 磨机。行和 PID 是主要的
    key 。这些列大多是 int 类型,但有些是 varchar(200-400)。
    索引:PID
  • 表 B 为 7 列宽,14 磨机。行和主键 PID_L。
    它还有列 C_SOURCE 和 ROW_COUNT。索引:PID,C_SOURCE
  • 表 C 为 20 列宽,14 磨机。行和主键 PID_S。
    它还有一个 ROLE 列。索引:PID,PID_S

  • 所有表都有列 PID

    我需要一个汇总表 B 和 C 中一些信息的表。选择适当项目的查询是:
    SELECT
    T.*,
    (
    SELECT
    COALESCE(SUM(ROW_COUNT),0)
    FROM
    C as ITS,
    B as ITL
    WHERE
    ITS.ROLE = 1
    AND ITS.PID = ITL.PID
    AND ITS.PID_S = ITL.C_SOURCE
    AND ITS.PID = T.PID
    ) AS RR
    FROM
    A as T;

    运行此查询时,DB2 服务器很快使用了大约 3Gb 内存。然而,使用 top 时,CPU 使用率很少超过 5%,有的会跳到 13% 左右。 DB2 服务器是一个 RedHat6.2 VM,有 4 个内核,每个内核 2Ghz。

    我让这个查询运行了 24 小时,似乎没有任何事情发生。其他查询,如简单的选择等等,工作顺利。

    问题:
  • 对于可以完成相同任务的不同的、更有效的查询,您有什么建议吗?
  • 这个性能问题有没有可能跟数据库的配置有关?
  • 最佳答案

    我会尝试“解释”功能,看看 db2 从你的查询中得到了什么

    db2exfmt -d 数据库 -e 模式 -t -v % -w -1 -s % -# 0 -n % -g OTIC

    关于sql - 如何创建不会导致 DB2 挂起的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14849622/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com