【无标题】

发布于:2025-03-05 ⋅ 阅读:(188) ⋅ 点赞:(0)

log

1. alert_log

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
id BIGINT NOT NULL 主键,自增
occur_time DATETIME NOT NULL 告警发生时间
host VARCHAR(255) NULL 主机名称或标识
user VARCHAR(255) NULL 用户信息
software VARCHAR(255) NULL 软件名称
component VARCHAR(255) NULL 组件名称
content TEXT NULL 告警内容
fault_type INT NULL 故障类型

建表 SQL 语句
CREATE TABLE alert_log (
    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增',
    occur_time DATETIME NOT NULL COMMENT '告警发生时间',
    host VARCHAR(255) DEFAULT NULL COMMENT '主机名称或标识',
    user VARCHAR(255) DEFAULT NULL COMMENT '用户信息',
    software VARCHAR(255) DEFAULT NULL COMMENT '软件名称',
    component VARCHAR(255) DEFAULT NULL COMMENT '组件名称',
    content TEXT DEFAULT NULL COMMENT '告警内容',
    fault_type INT DEFAULT NULL COMMENT '故障类型'
) COMMENT='告警日志表';

2. alert_process

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
id BIGINT NOT NULL 主键,自增
machine VARCHAR(255) NOT NULL 机器名称或标识
process VARCHAR(255) NOT NULL 进程名称或标识
status INT NULL 状态(如:0-关闭,1-开启)

建表 SQL 语句
CREATE TABLE alert_process (
    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增',
    machine VARCHAR(255) NOT NULL COMMENT '机器名称或标识',
    process VARCHAR(255) NOT NULL COMMENT '进程名称或标识',
    status INT DEFAULT NULL COMMENT '状态(如:0-关闭,1-开启)'
) COMMENT='告警进程表';

3. alert_trigger

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
id BIGINT NOT NULL 主键,自增
host VARCHAR(255) NOT NULL 主机名称或标识
trigger_id VARCHAR(255) NOT NULL 触发器 ID
trigger_des VARCHAR(1024) NULL 触发器描述
severity INT NULL 告警严重程度(如:1-5)
status INT NULL 状态(如:0-关闭,1-开启)
info TEXT NULL 其他信息
time DATETIME NOT NULL 时间戳

建表 SQL 语句
CREATE TABLE alert_trigger (
    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增',
    host VARCHAR(255) NOT NULL COMMENT '主机名称或标识',
    trigger_id VARCHAR(255) NOT NULL COMMENT '触发器 ID',
    trigger_des VARCHAR(1024) DEFAULT NULL COMMENT '触发器描述',
    severity INT DEFAULT NULL COMMENT '告警严重程度(如:1-5)',
    status INT DEFAULT NULL COMMENT '状态(如:0-关闭,1-开启)',
    info TEXT DEFAULT NULL COMMENT '其他信息',
    time DATETIME NOT NULL COMMENT '时间戳'
) COMMENT='告警触发器表';

总结

以上是根据 MyBatis Mapper 文件内容推测的三个表的结构及对应的建表 SQL 语句。如果需要进一步调整字段长度、约束条件或索引,请根据实际业务需求进行修改。

trigger

推测数据库表结构

根据提供的 MyBatis Mapper 文件内容,可以推测出数据库表 alert_process 的结构。以下是基于文件中字段定义和 SQL 语句推测的数据库表形式。


推测的数据库表结构

表名:alert_process

字段名 数据类型 注释
id BIGINT 主键,自增
machine VARCHAR(255) 机器名称或标识
process VARCHAR(255) 进程名称或标识
status INT 状态(如:0-关闭,1-开启)

创建数据库表的 SQL 语句
CREATE TABLE alert_process (
    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增',
    machine VARCHAR(255) NOT NULL COMMENT '机器名称或标识',
    process VARCHAR(255) NOT NULL COMMENT '进程名称或标识',
    status INT DEFAULT NULL COMMENT '状态(如:0-关闭,1-开启)'
) COMMENT='告警进程表';

SQL 语句说明

  1. id

    • 类型为 BIGINT,设置为主键并启用自动递增。
    • 这与 Mapper 文件中的 <insert> 标签中 useGeneratedKeys="true"keyProperty="id" 的配置一致。
  2. machine

    • 类型为 VARCHAR(255),表示机器名称或标识。
    • 设置为 NOT NULL,因为插入时通常需要提供此字段。
  3. process

    • 类型为 VARCHAR(255),表示进程名称或标识。
    • 设置为 NOT NULL,因为它是进程的核心字段。
  4. status

    • 类型为 INT,表示进程的状态(如:0 表示关闭,1 表示开启)。
    • 默认值为 NULL,允许某些记录不指定状态。

索引建议

为了提高查询性能,可以根据实际需求为以下字段添加索引:

  • machine
  • process

例如:

CREATE INDEX idx_machine ON alert_process(machine);
CREATE INDEX idx_process ON alert_process(process);

判断是否与 alert_trigger 存在约束关系

从提供的两个 Mapper 文件内容来看,目前没有明确的外键约束或关联关系的定义。以下是分析:

  1. 字段对比

    • alert_process 表的字段包括 machine, process, 和 status
    • alert_trigger 表的字段包括 host, trigger_id, trigger_des, severity, status, 等。
    • 两个表中都没有直接引用对方的字段(如 id 或其他字段),因此无法直接推断出它们之间存在外键约束。
  2. 业务逻辑推测

    • alert_process 表可能记录的是与特定机器和进程相关的告警信息。
    • alert_trigger 表可能记录的是触发器相关的告警信息。
    • 如果从业务角度考虑,可能会存在某种间接关联,例如:
      • alert_process.machine 可能对应于 alert_trigger.host(即机器/主机)。
      • alert_process.statusalert_trigger.status 可能表示类似的告警状态。
    • 但这种关联并未通过外键或其他方式明确表达。
  3. 结论

    • 目前从提供的 Mapper 文件内容来看,alert_processalert_trigger 没有明确的外键约束关系
    • 如果确实存在业务上的关联,可以通过新增字段(如 trigger_idprocess_id)来建立外键关系,并在数据库设计中显式定义。

建议

如果需要进一步明确两者的关联关系,可以补充以下内容:

  1. alert_process 表中增加一个字段 trigger_id,用于关联到 alert_trigger 表的 id 字段。
  2. alert_trigger 表中增加一个字段 process_id,用于关联到 alert_process 表的 id 字段。

例如:

ALTER TABLE alert_process ADD COLUMN trigger_id BIGINT DEFAULT NULL COMMENT '关联的触发器 ID';
ALTER TABLE alert_trigger ADD COLUMN process_id BIGINT DEFAULT NULL COMMENT '关联的进程 ID';

-- 添加外键约束
ALTER TABLE alert_process ADD CONSTRAINT fk_alert_process_trigger FOREIGN KEY (trigger_id) REFERENCES alert_trigger(id);
ALTER TABLE alert_trigger ADD CONSTRAINT fk_alert_trigger_process FOREIGN KEY (process_id) REFERENCES alert_process(id);

这样可以更清晰地定义两者之间的关联关系。

process

推测数据库表结构

根据提供的 MyBatis Mapper 文件内容,可以推测出数据库表 alert_process 的结构。以下是基于文件中字段定义和 SQL 语句推测的数据库表形式。


推测的数据库表结构

表名:alert_process

字段名 数据类型 注释
id BIGINT 主键,自增
machine VARCHAR(255) 机器名称或标识
process VARCHAR(255) 进程名称或标识
status INT 状态(如:0-关闭,1-开启)

创建数据库表的 SQL 语句
CREATE TABLE alert_process (
    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增',
    machine VARCHAR(255) NOT NULL COMMENT '机器名称或标识',
    process VARCHAR(255) NOT NULL COMMENT '进程名称或标识',
    status INT DEFAULT NULL COMMENT '状态(如:0-关闭,1-开启)'
) COMMENT='告警进程表';

SQL 语句说明

  1. id

    • 类型为 BIGINT,设置为主键并启用自动递增。
    • 这与 Mapper 文件中的 <insert> 标签中 useGeneratedKeys="true"keyProperty="id" 的配置一致。
  2. machine

    • 类型为 VARCHAR(255),表示机器名称或标识。
    • 设置为 NOT NULL,因为插入时通常需要提供此字段。
  3. process

    • 类型为 VARCHAR(255),表示进程名称或标识。
    • 设置为 NOT NULL,因为它是进程的核心字段。
  4. status

    • 类型为 INT,表示进程的状态(如:0 表示关闭,1 表示开启)。
    • 默认值为 NULL,允许某些记录不指定状态。

索引建议

为了提高查询性能,可以根据实际需求为以下字段添加索引:

  • machine
  • process

例如:

CREATE INDEX idx_machine ON alert_process(machine);
CREATE INDEX idx_process ON alert_process(process);

判断是否与 alert_trigger 存在约束关系

从提供的两个 Mapper 文件内容来看,目前没有明确的外键约束或关联关系的定义。以下是分析:

  1. 字段对比

    • alert_process 表的字段包括 machine, process, 和 status
    • alert_trigger 表的字段包括 host, trigger_id, trigger_des, severity, status, 等。
    • 两个表中都没有直接引用对方的字段(如 id 或其他字段),因此无法直接推断出它们之间存在外键约束。
  2. 业务逻辑推测

    • alert_process 表可能记录的是与特定机器和进程相关的告警信息。
    • alert_trigger 表可能记录的是触发器相关的告警信息。
    • 如果从业务角度考虑,可能会存在某种间接关联,例如:
      • alert_process.machine 可能对应于 alert_trigger.host(即机器/主机)。
      • alert_process.statusalert_trigger.status 可能表示类似的告警状态。
    • 但这种关联并未通过外键或其他方式明确表达。
  3. 结论

    • 目前从提供的 Mapper 文件内容来看,alert_processalert_trigger 没有明确的外键约束关系
    • 如果确实存在业务上的关联,可以通过新增字段(如 trigger_idprocess_id)来建立外键关系,并在数据库设计中显式定义。

建议

如果需要进一步明确两者的关联关系,可以补充以下内容:

  1. alert_process 表中增加一个字段 trigger_id,用于关联到 alert_trigger 表的 id 字段。
  2. alert_trigger 表中增加一个字段 process_id,用于关联到 alert_process 表的 id 字段。

例如:

ALTER TABLE alert_process ADD COLUMN trigger_id BIGINT DEFAULT NULL COMMENT '关联的触发器 ID';
ALTER TABLE alert_trigger ADD COLUMN process_id BIGINT DEFAULT NULL COMMENT '关联的进程 ID';

-- 添加外键约束
ALTER TABLE alert_process ADD CONSTRAINT fk_alert_process_trigger FOREIGN KEY (trigger_id) REFERENCES alert_trigger(id);
ALTER TABLE alert_trigger ADD CONSTRAINT fk_alert_trigger_process FOREIGN KEY (process_id) REFERENCES alert_process(id);

这样可以更清晰地定义两者之间的关联关系。

history

1. history

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
itemid BIGINT NOT NULL 监控项 ID
clock INT NOT NULL 时间戳(秒级时间戳)
value DOUBLE NOT NULL 历史数据值
ns INT NOT NULL 纳秒部分,用于高精度时间

建表 SQL 语句
CREATE TABLE history (
    itemid BIGINT NOT NULL COMMENT '监控项 ID',
    clock INT NOT NULL COMMENT '时间戳(秒级时间戳)',
    value DOUBLE NOT NULL COMMENT '历史数据值',
    ns INT NOT NULL COMMENT '纳秒部分,用于高精度时间',
    PRIMARY KEY (itemid, clock)
) COMMENT='历史数据表';

2. 推测的 metrics_data 表(间接推测)

从 Mapper 文件中的 <resultMap> 定义和查询逻辑来看,可能存在一个与 metrics_data 相关的表或视图。以下是推测的结构:

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
sum DOUBLE NOT NULL 数据总和
process_time INT NOT NULL 处理时间(秒级时间戳)
num INT NOT NULL 数据点数量

建表 SQL 语句
CREATE TABLE metrics_data (
    sum DOUBLE NOT NULL COMMENT '数据总和',
    process_time INT NOT NULL COMMENT '处理时间(秒级时间戳)',
    num INT NOT NULL COMMENT '数据点数量'
) COMMENT='指标数据表';

注意:此表可能是一个聚合结果表或临时视图,具体实现方式需要根据业务逻辑进一步确认。


3. 查询逻辑分析

单节点历史数据查询
  • SQL 方法selectSingleNodeHistoryData
  • 功能:查询单个节点的历史数据。
  • 参数
    • table:动态表名。
    • itemid:监控项 ID。
    • startend:时间范围。
    • limit:限制返回的数据条数(默认为 1000)。
  • 返回结果
    • clock:时间戳。
    • value:历史数据值。
    • num:固定为 1,表示每个数据点的数量。

集群历史数据查询
  • SQL 方法selectClusterHistoryData
  • 功能:查询多个节点的历史数据,并按节点和时间排序。
  • 参数
    • table:动态表名。
    • monitorItemIds:监控项 ID 列表。
    • startend:时间范围。
    • limit:限制每个节点返回的数据条数(默认为 1000)。
  • 逻辑
    • 使用 MySQL 的用户变量 @num@type 实现分组和排序。
    • itemidclock 排序后,为每个节点分配行号。
    • 限制每个节点返回的数据条数。
  • 返回结果
    • itemid:监控项 ID。
    • clock:时间戳。
    • value:历史数据值。

4. 总结

表关系推测
  • history 表是核心表,记录了所有监控项的历史数据。
  • metrics_data 表可能是基于 history 表的聚合结果表或视图,用于存储指标数据的统计信息。
  • 动态表 ${table} 的使用表明系统可能支持多张历史数据表(如按时间分区),以优化查询性能。
索引建议

为了提高查询性能,建议为以下字段创建索引:

  • history(itemid, clock):联合主键,加速按监控项和时间范围的查询。
  • metrics_data(process_time):加速按时间范围的聚合查询。

完整建表 SQL 示例

history
CREATE TABLE history (
    itemid BIGINT NOT NULL COMMENT '监控项 ID',
    clock INT NOT NULL COMMENT '时间戳(秒级时间戳)',
    value DOUBLE NOT NULL COMMENT '历史数据值',
    ns INT NOT NULL COMMENT '纳秒部分,用于高精度时间',
    PRIMARY KEY (itemid, clock),
    INDEX idx_clock (clock)
) COMMENT='历史数据表';
metrics_data
CREATE TABLE metrics_data (
    sum DOUBLE NOT NULL COMMENT '数据总和',
    process_time INT NOT NULL COMMENT '处理时间(秒级时间戳)',
    num INT NOT NULL COMMENT '数据点数量',
    PRIMARY KEY (process_time)
) COMMENT='指标数据表';

如果需要进一步明确表之间的关系或调整字段定义,请提供更多业务背景或数据样例!

history str mapper

1. history_str

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
itemid BIGINT NOT NULL 监控项 ID
clock INT NOT NULL 时间戳(秒级时间戳)
value VARCHAR(255) NOT NULL 历史数据值(字符串类型)
ns INT NOT NULL 纳秒部分,用于高精度时间
is_delete TINYINT NOT NULL 删除标记(0-未删除,1-已删除)

建表 SQL 语句
CREATE TABLE history_str (
    itemid BIGINT NOT NULL COMMENT '监控项 ID',
    clock INT NOT NULL COMMENT '时间戳(秒级时间戳)',
    value VARCHAR(255) NOT NULL COMMENT '历史数据值(字符串类型)',
    ns INT NOT NULL COMMENT '纳秒部分,用于高精度时间',
    is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
    PRIMARY KEY (itemid, clock)
) COMMENT='字符串类型的历史数据表';

2. 查询逻辑分析

单条记录查询
  • SQL 方法selectHistoryStrById
  • 功能:根据 itemid 查询单条记录。
  • 返回结果
    • itemid:监控项 ID。
    • clock:时间戳。
    • value:历史数据值(字符串类型)。
    • ns:纳秒部分。

精确条件查询
  • SQL 方法selectOne
  • 功能:根据精确条件查询单条记录。
  • 参数
    • itemid:监控项 ID。
    • clock:时间戳。
    • value:历史数据值。
    • ns:纳秒部分。
  • 返回结果
    • 满足条件的第一条记录。

列表查询
  • SQL 方法selectHistoryStrList
  • 功能:查询满足条件的多条记录,最多返回 1000 条。
  • 参数
    • itemid:监控项 ID。
    • clock:时间戳。
    • value:历史数据值。
    • ns:纳秒部分。
  • 返回结果
    • 满足条件的前 1000 条记录。

分页查询
  • SQL 方法selectHistoryStrPage
  • 功能:支持分页查询。
  • 参数
    • itemid:监控项 ID。
    • clock:时间戳。
    • value:历史数据值。
    • ns:纳秒部分。
    • pageIndex:分页起始位置。
    • pageSize:分页大小。
  • 返回结果
    • 满足条件的指定分页范围内的记录。

分页计数
  • SQL 方法selectHistoryStrCount
  • 功能:统计满足条件的记录总数。
  • 参数
    • itemid:监控项 ID。
    • clock:时间戳。
    • value:历史数据值。
    • ns:纳秒部分。
  • 返回结果
    • 符合条件的记录总数。

插入记录
  • SQL 方法insertHistoryStr
  • 功能:插入一条新的历史数据记录。
  • 参数
    • itemid:监控项 ID。
    • clock:时间戳。
    • value:历史数据值。
    • ns:纳秒部分。

完全修改
  • SQL 方法updateHistoryStr
  • 功能:更新指定 itemid 的所有字段。
  • 参数
    • itemid:监控项 ID。
    • clock:时间戳。
    • value:历史数据值。
    • ns:纳秒部分。

选择性修改
  • SQL 方法updateHistoryStrSelective
  • 功能:仅更新指定字段。
  • 参数
    • itemid:监控项 ID。
    • clock:时间戳(可选)。
    • value:历史数据值(可选)。
    • ns:纳秒部分(可选)。

删除记录
  • SQL 方法deleteHistoryStr
  • 功能:将指定 itemid 的记录标记为已删除。
  • 参数
    • itemid:监控项 ID。
  • 逻辑
    • 更新 is_delete 字段为 1,表示逻辑删除。

3. 总结

表设计特点
  • history_str 表与 history 表类似,但存储的是字符串类型的监控数据。
  • 使用 is_delete 字段实现逻辑删除,避免物理删除对性能的影响。
  • 主键由 itemidclock 组成,确保每条记录唯一。
索引建议

为了提高查询性能,建议为以下字段创建索引:

  • PRIMARY KEY (itemid, clock):联合主键,加速按监控项和时间范围的查询。
  • INDEX idx_clock (clock):加速按时间范围的查询。

完整建表 SQL 示例

CREATE TABLE history_str (
    itemid BIGINT NOT NULL COMMENT '监控项 ID',
    clock INT NOT NULL COMMENT '时间戳(秒级时间戳)',
    value VARCHAR(255) NOT NULL COMMENT '历史数据值(字符串类型)',
    ns INT NOT NULL COMMENT '纳秒部分,用于高精度时间',
    is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
    PRIMARY KEY (itemid, clock),
    INDEX idx_clock (clock)
) COMMENT='字符串类型的历史数据表';

如果需要进一步优化或调整,请提供更多业务背景或需求!

host

1. hosts

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
hostid BIGINT NOT NULL 主机 ID
proxy_hostid BIGINT NULL 代理主机 ID
host VARCHAR(255) NOT NULL 主机名称或 IP 地址
status INT NOT NULL 主机状态(如启用、禁用等)
available INT NOT NULL 主机可用性状态
jmx_available INT NOT NULL JMX 可用性状态
name VARCHAR(255) NOT NULL 主机显示名称
flags INT NOT NULL 标志位(用于区分类型等)

建表 SQL 语句
CREATE TABLE hosts (
    hostid BIGINT NOT NULL COMMENT '主机 ID',
    proxy_hostid BIGINT NULL COMMENT '代理主机 ID',
    host VARCHAR(255) NOT NULL COMMENT '主机名称或 IP 地址',
    status INT NOT NULL COMMENT '主机状态(如启用、禁用等)',
    available INT NOT NULL COMMENT '主机可用性状态',
    jmx_available INT NOT NULL COMMENT 'JMX 可用性状态',
    name VARCHAR(255) NOT NULL COMMENT '主机显示名称',
    flags INT NOT NULL COMMENT '标志位(用于区分类型等)',
    PRIMARY KEY (hostid),
    INDEX idx_proxy_hostid (proxy_hostid),
    INDEX idx_host (host),
    INDEX idx_status (status)
) COMMENT='主机信息表';

2. 查询逻辑分析

单条记录查询
  • SQL 方法selectHostsById
  • 功能:根据 hostid 查询单条记录。
  • 返回结果
    • hostid:主机 ID。
    • proxy_hostid:代理主机 ID。
    • host:主机名称或 IP 地址。
    • status:主机状态。
    • available:主机可用性状态。
    • jmx_available:JMX 可用性状态。
    • name:主机显示名称。
    • flags:标志位。

精确条件查询
  • SQL 方法selectOne
  • 功能:根据精确条件查询单条记录。
  • 参数
    • hostid:主机 ID。
    • proxy_hostid:代理主机 ID。
    • host:主机名称或 IP 地址。
    • status:主机状态。
    • available:主机可用性状态。
    • jmx_available:JMX 可用性状态。
    • name:主机显示名称。
    • flags:标志位。
  • 返回结果
    • 满足条件的第一条记录。

列表查询
  • SQL 方法selectHostsList
  • 功能:查询满足条件的多条记录,最多返回 1000 条。
  • 参数
    • hostid:主机 ID。
    • proxy_hostid:代理主机 ID。
    • host:主机名称或 IP 地址。
    • status:主机状态。
    • available:主机可用性状态。
    • jmx_available:JMX 可用性状态。
    • name:主机显示名称。
    • flags:标志位。
  • 返回结果
    • 满足条件的前 1000 条记录。

分页查询
  • SQL 方法selectHostsPage
  • 功能:支持分页查询。
  • 参数
    • hostid:主机 ID。
    • proxy_hostid:代理主机 ID。
    • host:主机名称或 IP 地址。
    • status:主机状态。
    • available:主机可用性状态。
    • jmx_available:JMX 可用性状态。
    • name:主机显示名称。
    • flags:标志位。
    • pageIndex:分页起始位置。
    • pageSize:分页大小。
  • 返回结果
    • 满足条件的指定分页范围内的记录。

分页计数
  • SQL 方法selectHostsCount
  • 功能:统计满足条件的记录总数。
  • 参数
    • hostid:主机 ID。
    • proxy_hostid:代理主机 ID。
    • host:主机名称或 IP 地址。
    • status:主机状态。
    • available:主机可用性状态。
    • jmx_available:JMX 可用性状态。
    • name:主机显示名称。
    • flags:标志位。
  • 返回结果
    • 符合条件的记录总数。

3. 总结

表设计特点
  • hosts 表存储了监控系统中主机的相关信息,包括主机 ID、代理主机 ID、主机名称/IP 地址、状态、可用性等字段。
  • 主键为 hostid,确保每条记录唯一。
  • 提供了多种查询方式,包括精确查询、列表查询、分页查询和计数查询,以满足不同场景的需求。
索引建议

为了提高查询性能,建议为以下字段创建索引:

  • PRIMARY KEY (hostid):主键索引,加速按主机 ID 的查询。
  • INDEX idx_proxy_hostid (proxy_hostid):加速按代理主机 ID 的查询。
  • INDEX idx_host (host):加速按主机名称/IP 地址的查询。
  • INDEX idx_status (status):加速按主机状态的查询。

完整建表 SQL 示例

CREATE TABLE hosts (
    hostid BIGINT NOT NULL COMMENT '主机 ID',
    proxy_hostid BIGINT NULL COMMENT '代理主机 ID',
    host VARCHAR(255) NOT NULL COMMENT '主机名称或 IP 地址',
    status INT NOT NULL COMMENT '主机状态(如启用、禁用等)',
    available INT NOT NULL COMMENT '主机可用性状态',
    jmx_available INT NOT NULL COMMENT 'JMX 可用性状态',
    name VARCHAR(255) NOT NULL COMMENT '主机显示名称',
    flags INT NOT NULL COMMENT '标志位(用于区分类型等)',
    PRIMARY KEY (hostid),
    INDEX idx_proxy_hostid (proxy_hostid),
    INDEX idx_host (host),
    INDEX idx_status (status)
) COMMENT='主机信息表';

如果需要进一步优化或调整,请提供更多业务背景或需求!

metrics mapper

1. metrics

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
id BIGINT NOT NULL 主键 ID
sum DECIMAL(20, 4) NOT NULL 指标值的总和
num INT NOT NULL 数据点数量
process_time DATETIME NOT NULL 处理时间

建表 SQL 示例
CREATE TABLE metrics (
    id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    sum DECIMAL(20, 4) NOT NULL COMMENT '指标值的总和',
    num INT NOT NULL COMMENT '数据点数量',
    process_time DATETIME NOT NULL COMMENT '处理时间',
    PRIMARY KEY (id),
    INDEX idx_process_time (process_time)
) COMMENT='指标数据表';

2. 查询逻辑分析

列表查询
  • SQL 方法selectMetricsList
  • 功能:查询满足条件的多条记录,最多返回 10000 条。
  • 参数
    • metricsName:动态表名。
    • start:开始时间(process_time >= start)。
    • end:结束时间(process_time <= end)。
    • desc:是否按降序排序(默认升序)。
    • limit:限制返回的记录数(若未指定,则默认为 10000)。
  • 返回结果
    • sum:指标值的总和。
    • num:数据点数量。
    • process_time:处理时间。

分页查询
  • SQL 方法selectMetricsPage
  • 功能:支持分页查询。
  • 参数
    • metricsName:动态表名。
    • start:开始时间(process_time >= start)。
    • end:结束时间(process_time <= end)。
    • desc:是否按降序排序(默认升序)。
    • pageIndex:分页起始位置。
    • pageSize:分页大小。
  • 返回结果
    • 满足条件的指定分页范围内的记录。

分页计数
  • SQL 方法selectMetricsCount
  • 功能:统计满足条件的记录总数。
  • 参数
    • metricsName:动态表名。
    • start:开始时间(process_time >= start)。
    • end:结束时间(process_time <= end)。
  • 返回结果
    • 符合条件的记录总数。

删除数据
  • SQL 方法deleteMetricsData
  • 功能:根据指定的时间范围删除数据。
  • 参数
    • metricsName:动态表名。
    • start:开始时间(process_time >= start)。
    • end:结束时间(process_time <= end)。
  • 逻辑
    • 删除 process_time[start, end] 范围内的所有记录。

3. 总结

表设计特点
  • metrics 表存储了监控系统中的指标数据,包括指标值的总和、数据点数量以及处理时间。
  • 使用动态表名 ${metricsName},允许灵活操作不同的指标数据表。
  • 提供了多种查询方式,包括列表查询、分页查询、分页计数和删除操作,以满足不同场景的需求。
索引建议

为了提高查询性能,建议为以下字段创建索引:

  • PRIMARY KEY (id):主键索引,加速按主键的查询。
  • INDEX idx_process_time (process_time):加速按时间范围的查询。

完整建表 SQL 示例

CREATE TABLE metrics (
    id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    sum DECIMAL(20, 4) NOT NULL COMMENT '指标值的总和',
    num INT NOT NULL COMMENT '数据点数量',
    process_time DATETIME NOT NULL COMMENT '处理时间',
    PRIMARY KEY (id),
    INDEX idx_process_time (process_time)
) COMMENT='指标数据表';

如果需要进一步优化或调整,请提供更多业务背景或需求!

monitor items mapper

1. items

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
itemid BIGINT NOT NULL 监控项 ID
type INT NOT NULL 监控项类型
hostid BIGINT NOT NULL 主机 ID
name VARCHAR(255) NOT NULL 监控项名称
key_ VARCHAR(255) NOT NULL 监控项键值
delay INT NOT NULL 更新间隔(秒)
history INT NOT NULL 历史数据保留天数
trends INT NOT NULL 趋势数据保留天数
status INT NOT NULL 监控项状态(启用、禁用等)
value_type INT NOT NULL 数据类型
units VARCHAR(255) NULL 单位
multiplier INT NOT NULL 倍乘因子
delta INT NOT NULL 差值计算模式
formula VARCHAR(255) NULL 公式
lastlogsize BIGINT NULL 最后日志大小
logtimefmt VARCHAR(64) NULL 日志时间格式
data_type INT NOT NULL 数据类型
mtime INT NOT NULL 修改时间戳
flags INT NOT NULL 标志位
description TEXT NULL 描述
lifetime VARCHAR(255) NULL 生命周期
state INT NOT NULL 状态

建表 SQL 示例
CREATE TABLE items (
    itemid BIGINT NOT NULL AUTO_INCREMENT COMMENT '监控项 ID',
    type INT NOT NULL COMMENT '监控项类型',
    hostid BIGINT NOT NULL COMMENT '主机 ID',
    name VARCHAR(255) NOT NULL COMMENT '监控项名称',
    key_ VARCHAR(255) NOT NULL COMMENT '监控项键值',
    delay INT NOT NULL COMMENT '更新间隔(秒)',
    history INT NOT NULL COMMENT '历史数据保留天数',
    trends INT NOT NULL COMMENT '趋势数据保留天数',
    status INT NOT NULL COMMENT '监控项状态(启用、禁用等)',
    value_type INT NOT NULL COMMENT '数据类型',
    units VARCHAR(255) NULL COMMENT '单位',
    multiplier INT NOT NULL COMMENT '倍乘因子',
    delta INT NOT NULL COMMENT '差值计算模式',
    formula VARCHAR(255) NULL COMMENT '公式',
    lastlogsize BIGINT NULL COMMENT '最后日志大小',
    logtimefmt VARCHAR(64) NULL COMMENT '日志时间格式',
    data_type INT NOT NULL COMMENT '数据类型',
    mtime INT NOT NULL COMMENT '修改时间戳',
    flags INT NOT NULL COMMENT '标志位',
    description TEXT NULL COMMENT '描述',
    lifetime VARCHAR(255) NULL COMMENT '生命周期',
    state INT NOT NULL COMMENT '状态',
    PRIMARY KEY (itemid),
    INDEX idx_hostid (hostid),
    INDEX idx_key (key_),
    INDEX idx_status (status)
) COMMENT='监控项信息表';

2. 查询逻辑分析

精确条件查询
  • SQL 方法selectOne
  • 功能:根据精确条件查询单条记录。
  • 参数
    • itemid:监控项 ID。
    • type:监控项类型。
    • hostid:主机 ID。
    • name:监控项名称。
    • key_:监控项键值。
    • status:监控项状态。
    • valueType:数据类型。
    • units:单位。
    • dataType:数据类型。
    • flags:标志位。
    • state:状态。
    • hostIds:主机 ID 列表(支持批量查询)。
  • 返回结果
    • 满足条件的第一条记录。

列表查询
  • SQL 方法selectMonitorItemsList
  • 功能:查询满足条件的多条记录,最多返回 1000 条。
  • 参数
    • itemid:监控项 ID。
    • type:监控项类型。
    • hostid:主机 ID。
    • name:监控项名称。
    • key_:监控项键值。
    • status:监控项状态。
    • valueType:数据类型。
    • units:单位。
    • dataType:数据类型。
    • flags:标志位。
    • state:状态。
    • hostIds:主机 ID 列表(支持批量查询)。
  • 返回结果
    • 满足条件的前 1000 条记录。

3. 总结

表设计特点
  • items 表存储了监控系统中监控项的相关信息,包括监控项 ID、类型、主机 ID、名称、键值、更新间隔、历史数据保留天数等字段。
  • 主键为 itemid,确保每条记录唯一。
  • 提供了多种查询方式,包括精确查询和列表查询,以满足不同场景的需求。
索引建议

为了提高查询性能,建议为以下字段创建索引:

  • PRIMARY KEY (itemid):主键索引,加速按监控项 ID 的查询。
  • INDEX idx_hostid (hostid):加速按主机 ID 的查询。
  • INDEX idx_key (key_):加速按监控项键值的查询。
  • INDEX idx_status (status):加速按监控项状态的查询。

完整建表 SQL 示例

CREATE TABLE items (
    itemid BIGINT NOT NULL AUTO_INCREMENT COMMENT '监控项 ID',
    type INT NOT NULL COMMENT '监控项类型',
    hostid BIGINT NOT NULL COMMENT '主机 ID',
    name VARCHAR(255) NOT NULL COMMENT '监控项名称',
    key_ VARCHAR(255) NOT NULL COMMENT '监控项键值',
    delay INT NOT NULL COMMENT '更新间隔(秒)',
    history INT NOT NULL COMMENT '历史数据保留天数',
    trends INT NOT NULL COMMENT '趋势数据保留天数',
    status INT NOT NULL COMMENT '监控项状态(启用、禁用等)',
    value_type INT NOT NULL COMMENT '数据类型',
    units VARCHAR(255) NULL COMMENT '单位',
    multiplier INT NOT NULL COMMENT '倍乘因子',
    delta INT NOT NULL COMMENT '差值计算模式',
    formula VARCHAR(255) NULL COMMENT '公式',
    lastlogsize BIGINT NULL COMMENT '最后日志大小',
    logtimefmt VARCHAR(64) NULL COMMENT '日志时间格式',
    data_type INT NOT NULL COMMENT '数据类型',
    mtime INT NOT NULL COMMENT '修改时间戳',
    flags INT NOT NULL COMMENT '标志位',
    description TEXT NULL COMMENT '描述',
    lifetime VARCHAR(255) NULL COMMENT '生命周期',
    state INT NOT NULL COMMENT '状态',
    PRIMARY KEY (itemid),
    INDEX idx_hostid (hostid),
    INDEX idx_key (key_),
    INDEX idx_status (status)
) COMMENT='监控项信息表';

如果需要进一步优化或调整,请提供更多业务背景或需求!

RDB

1. 数据库监控相关表结构与查询分析

MySQL 系统表和状态变量

在 MySQL 中,系统状态变量和性能数据存储在 information_schemaperformance_schema 中,同时可以通过 SHOW STATUSSHOW GLOBAL STATUS 命令动态获取某些性能指标。

以下是对 MyBatis 配置文件中涉及的 SQL 查询及其用途的详细分析:


2. 查询逻辑分析

用户列表查询
  • SQL 方法selectUserList
  • 功能:查询 MySQL 数据库中的所有用户。
  • 返回结果
    • user:数据库用户的名称。
SELECT user FROM mysql.user;

缓冲池总页数查询
  • SQL 方法showBufferPoolPagesTotal
  • 功能:查询 InnoDB 缓冲池的总页数。
  • 返回结果
    • Variable_name:变量名(如 Innodb_buffer_pool_pages_total)。
    • Value:对应的值。
SHOW GLOBAL STATUS LIKE '%Innodb_buffer_pool_pages_tota%';

进程列表查询
  • SQL 方法showProcessList
  • 功能:查询当前 MySQL 数据库中的所有运行进程。
  • 返回结果
    • Id:进程 ID。
    • User:用户名称。
    • Host:客户端主机地址。
    • db:当前连接的数据库。
    • Command:执行的命令类型。
    • Time:命令执行时间。
    • State:当前状态。
    • Info:执行的 SQL 语句。
SHOW PROCESSLIST;

数据库运行时间查询
  • SQL 方法showTime
  • 功能:查询 MySQL 数据库的运行时间(Uptime)。
  • 返回结果
    • Variable_name:变量名(如 Uptime)。
    • Value:对应的值。
SHOW GLOBAL STATUS LIKE 'Uptime';

查询总数查询
  • SQL 方法showQuestions
  • 功能:查询 MySQL 数据库自启动以来的总查询次数。
  • 返回结果
    • Variable_name:变量名(如 Questions)。
    • Value:对应的值。
SHOW GLOBAL STATUS LIKE 'Questions';

InnoDB 缓冲池读取次数查询
  • SQL 方法showInnodbBufferPoolReads
  • 功能:查询从磁盘读取到 InnoDB 缓冲池的数据页数量。
  • 返回结果
    • Variable_name:变量名(如 Innodb_buffer_pool_reads)。
    • Value:对应的值。
SHOW STATUS LIKE 'Innodb_buffer_pool_reads';

InnoDB 缓冲池读取请求总数查询
  • SQL 方法showInnodbBufferPoolReadRequests
  • 功能:查询对 InnoDB 缓冲池的总读取请求次数。
  • 返回结果
    • Variable_name:变量名(如 Innodb_buffer_pool_read_requests)。
    • Value:对应的值。
SHOW STATUS LIKE 'Innodb_buffer_pool_read_requests';

3. 总结

查询用途
  • 用户管理:通过 selectUserList 查询数据库中的所有用户,用于用户权限管理和审计。
  • 性能监控
    • showBufferPoolPagesTotal:监控 InnoDB 缓冲池的总页数,评估内存使用情况。
    • showProcessList:查看当前运行的进程,定位潜在的慢查询或锁问题。
    • showTime:获取数据库运行时间,用于长期性能趋势分析。
    • showQuestions:统计总查询次数,评估数据库负载。
    • showInnodbBufferPoolReadsshowInnodbBufferPoolReadRequests:监控 InnoDB 缓冲池的读取效率,优化缓存命中率。
优化建议
  • 索引优化:对于频繁查询的表(如 mysql.user),可以考虑为常用字段创建索引。
  • 监控频率:根据实际需求调整性能指标的采集频率,避免过于频繁的查询影响数据库性能。
  • 持久化监控数据:将采集到的性能指标存储到专用的监控表中,便于后续分析和可视化。

完整 SQL 示例

以下是部分查询的完整 SQL 示例:

-- 查询用户列表
SELECT user FROM mysql.user;

-- 查询 InnoDB 缓冲池总页数
SHOW GLOBAL STATUS LIKE '%Innodb_buffer_pool_pages_tota%';

-- 查询进程列表
SHOW PROCESSLIST;

-- 查询数据库运行时间
SHOW GLOBAL STATUS LIKE 'Uptime';

-- 查询总查询次数
SHOW GLOBAL STATUS LIKE 'Questions';

-- 查询 InnoDB 缓冲池读取次数
SHOW STATUS LIKE 'Innodb_buffer_pool_reads';

-- 查询 InnoDB 缓冲池读取请求总数
SHOW STATUS LIKE 'Innodb_buffer_pool_read_requests';

如果需要进一步优化或调整,请提供更多业务背景或需求!

SPARK

1. spark_app_statistics

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
id BIGINT NOT NULL 主键 ID
app_running INT NOT NULL 当前运行中的 Spark 应用数
app_completed INT NOT NULL 已完成的 Spark 应用数
last_fetch_time DATETIME NOT NULL 最后一次数据采集时间
version INT NOT NULL 数据版本号

建表 SQL 示例
CREATE TABLE spark_app_statistics (
    id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    app_running INT NOT NULL COMMENT '当前运行中的 Spark 应用数',
    app_completed INT NOT NULL COMMENT '已完成的 Spark 应用数',
    last_fetch_time DATETIME NOT NULL COMMENT '最后一次数据采集时间',
    version INT NOT NULL COMMENT '数据版本号',
    PRIMARY KEY (id),
    INDEX idx_last_fetch_time (last_fetch_time)
) COMMENT='Spark 应用统计信息表';

2. 查询逻辑分析

根据主键查询是否存在
  • SQL 方法selectSparkAppStatisticsCountById
  • 功能:根据主键 id 查询记录是否存在。
  • 参数
    • id:主键 ID。
  • 返回结果
    • 返回值为 0 或 1,表示记录是否存在。
SELECT COUNT(1)
FROM spark_app_statistics s
WHERE s.id = #{id};

根据主键查询
  • SQL 方法selectSparkAppStatisticsById
  • 功能:根据主键 id 查询单条记录。
  • 参数
    • id:主键 ID。
  • 返回结果
    • 包含 idapp_runningapp_completedlast_fetch_timeversion 的完整记录。
SELECT s.id, s.app_running, s.app_completed, s.last_fetch_time, s.version
FROM spark_app_statistics s
WHERE s.id = #{id};

精确条件查询
  • SQL 方法selectOne
  • 功能:根据精确条件查询单条记录。
  • 参数
    • id:主键 ID。
    • appRunning:当前运行中的 Spark 应用数。
    • appCompleted:已完成的 Spark 应用数。
    • lastFetchTime:最后一次数据采集时间。
  • 返回结果
    • 满足条件的第一条记录。
SELECT s.id, s.app_running, s.app_completed, s.last_fetch_time, s.version
FROM spark_app_statistics s
WHERE 1=1
  <include refid="ConditionExact" />
LIMIT 1;

列表查询
  • SQL 方法selectSparkAppStatisticsList
  • 功能:查询满足条件的多条记录,最多返回 1000 条。
  • 参数
    • id:主键 ID。
    • appRunning:当前运行中的 Spark 应用数。
    • appCompleted:已完成的 Spark 应用数。
    • lastFetchTime:最后一次数据采集时间。
  • 返回结果
    • 满足条件的前 1000 条记录。
SELECT s.id, s.app_running, s.app_completed, s.last_fetch_time, s.version
FROM spark_app_statistics s
WHERE 1=1
  <include refid="ConditionExact" />
LIMIT 1000;

分页查询
  • SQL 方法selectSparkAppStatisticsPage
  • 功能:支持分页查询。
  • 参数
    • id:主键 ID。
    • appRunning:当前运行中的 Spark 应用数。
    • appCompleted:已完成的 Spark 应用数。
    • lastFetchTime:最后一次数据采集时间。
    • pageIndex:分页起始位置。
    • pageSize:分页大小。
  • 返回结果
    • 满足条件的指定分页范围内的记录。
SELECT s.id, s.app_running, s.app_completed, s.last_fetch_time, s.version
FROM spark_app_statistics s
WHERE 1=1
  <include refid="Condition" />
LIMIT #{pageIndex}, #{pageSize};

分页计数
  • SQL 方法selectSparkAppStatisticsCount
  • 功能:统计满足条件的记录总数。
  • 参数
    • id:主键 ID。
    • appRunning:当前运行中的 Spark 应用数。
    • appCompleted:已完成的 Spark 应用数。
    • lastFetchTime:最后一次数据采集时间。
  • 返回结果
    • 符合条件的记录总数。
SELECT COUNT(1)
FROM spark_app_statistics s
WHERE 1=1
  <include refid="Condition" />;

添加记录
  • SQL 方法insertSparkAppStatistics
  • 功能:插入一条新的记录。
  • 参数
    • id:主键 ID。
    • appRunning:当前运行中的 Spark 应用数。
    • appCompleted:已完成的 Spark 应用数。
    • lastFetchTime:最后一次数据采集时间。
    • version:数据版本号。
  • 逻辑
    • 自动生成主键 id,并插入新记录。
INSERT INTO spark_app_statistics (
    id,
    app_running,
    app_completed,
    last_fetch_time,
    version
) VALUES (
    #{id},
    #{appRunning},
    #{appCompleted},
    #{lastFetchTime},
    #{version}
);

完全修改
  • SQL 方法updateSparkAppStatistics
  • 功能:更新指定记录的所有字段。
  • 参数
    • id:主键 ID。
    • appRunning:当前运行中的 Spark 应用数。
    • appCompleted:已完成的 Spark 应用数。
    • lastFetchTime:最后一次数据采集时间。
    • version:数据版本号。
  • 逻辑
    • 更新所有字段,并将 version 自增 1。
    • 仅在版本号匹配时执行更新操作。
UPDATE spark_app_statistics
SET 
    app_running = #{appRunning},
    app_completed = #{appCompleted},
    last_fetch_time = #{lastFetchTime},
    version = #{version} + 1
WHERE id = #{id} AND version = #{version};

选择性修改
  • SQL 方法updateSparkAppStatisticsSelective
  • 功能:更新指定记录的部分字段。
  • 参数
    • id:主键 ID。
    • appRunning:当前运行中的 Spark 应用数(可选)。
    • appCompleted:已完成的 Spark 应用数(可选)。
    • lastFetchTime:最后一次数据采集时间(可选)。
    • version:数据版本号。
  • 逻辑
    • 根据传入参数动态更新字段,并将 version 自增 1。
    • 仅在版本号匹配时执行更新操作。
UPDATE spark_app_statistics
<set>
    <if test="appRunning != null">
        app_running = #{appRunning},
    </if>
    <if test="appCompleted != null">
        app_completed = #{appCompleted},
    </if>
    <if test="lastFetchTime != null">
        last_fetch_time = #{lastFetchTime},
    </if>
    version = #{version} + 1
</set>
WHERE id = #{id} AND version = #{version};

3. 总结

表设计特点
  • spark_app_statistics 表存储了 Spark 应用的统计信息,包括运行中的应用数、已完成的应用数、最后一次数据采集时间和版本号。
  • 提供了多种查询方式,包括主键查询、精确条件查询、列表查询、分页查询和分页计数。
  • 支持记录的添加、完全修改和选择性修改操作。
索引建议

为了提高查询性能,建议为以下字段创建索引:

  • PRIMARY KEY (id):主键索引,加速按主键的查询。
  • INDEX idx_last_fetch_time (last_fetch_time):加速按时间范围的查询。

如果需要进一步优化或调整,请提供更多业务背景或需求!

spark_running

1. spark_running_app

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
app_id VARCHAR(255) NOT NULL Spark 应用的唯一标识符

建表 SQL 示例
CREATE TABLE spark_running_app (
    app_id VARCHAR(255) NOT NULL COMMENT 'Spark 应用的唯一标识符',
    PRIMARY KEY (app_id)
) COMMENT='正在运行的 Spark 应用列表';

2. 查询逻辑分析

查询列表
  • SQL 方法selectSparkRunningAppList
  • 功能:查询所有正在运行的 Spark 应用的 app_id 列表。
  • 返回结果
    • 返回一个字符串类型的集合,包含所有正在运行的 Spark 应用的 app_id
SELECT s.app_id
FROM spark_running_app s;

添加记录
  • SQL 方法insertSparkRunningApp
  • 功能:批量插入或更新 Spark 应用的 app_id
  • 参数
    • appIds:一个包含多个 app_id 的集合。
  • 逻辑
    • 使用 REPLACE INTO 语句,确保如果 app_id 已存在,则更新记录;如果不存在,则插入新记录。
REPLACE INTO spark_running_app(app_id)
VALUES <foreach collection="appIds" separator="," item="i">(#{i})</foreach>;

例如,当 appIds = ['app1', 'app2', 'app3'] 时,生成的 SQL 为:

REPLACE INTO spark_running_app(app_id)
VALUES ('app1'), ('app2'), ('app3');

删除记录
  • SQL 方法deleteSparkRunningApp
  • 功能:批量删除指定的 Spark 应用记录。
  • 参数
    • appIds:一个包含多个 app_id 的集合。
  • 逻辑
    • 使用 DELETE 语句,根据 app_id 批量删除记录。
DELETE FROM spark_running_app
WHERE app_id IN <foreach collection="appIds" open="(" close=")" separator="," item="i">#{i}</foreach>;

例如,当 appIds = ['app1', 'app2', 'app3'] 时,生成的 SQL 为:

DELETE FROM spark_running_app
WHERE app_id IN ('app1', 'app2', 'app3');

3. 总结

表设计特点
  • spark_running_app 表用于存储当前正在运行的 Spark 应用的唯一标识符 app_id
  • 表结构简单,仅包含一个字段 app_id,并将其设置为主键,确保每条记录的唯一性。
操作功能
  • 查询列表:支持一次性查询最多 1000 条记录,返回所有正在运行的 Spark 应用的 app_id
  • 添加记录:支持批量插入或更新 Spark 应用的 app_id,使用 REPLACE INTO 实现幂等性操作。
  • 删除记录:支持批量删除指定的 Spark 应用记录。
索引建议

由于表中只有一个字段 app_id,并且已经作为主键,因此无需额外创建索引。


如果需要进一步优化或调整,请提供更多业务背景或需求!

result details

1. yarn_app_heuristic_result_details

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
yarn_app_heuristic_result_id INT NOT NULL 关联的 YARN 应用启发式结果 ID
name VARCHAR(255) NOT NULL 记录名称
value VARCHAR(255) NOT NULL
details LONGVARCHAR NULL 详细信息
is_delete TINYINT NOT NULL 删除标记(0:未删除,1:已删除)

建表 SQL 示例
CREATE TABLE yarn_app_heuristic_result_details (
    yarn_app_heuristic_result_id INT NOT NULL COMMENT '关联的 YARN 应用启发式结果 ID',
    name VARCHAR(255) NOT NULL COMMENT '记录名称',
    value VARCHAR(255) NOT NULL COMMENT '值',
    details LONGVARCHAR COMMENT '详细信息',
    is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记(0:未删除,1:已删除)',
    PRIMARY KEY (name),
    INDEX idx_yarn_app_heuristic_result_id (yarn_app_heuristic_result_id)
) COMMENT='YARN 应用启发式结果详情表';

2. 查询逻辑分析

根据主键查询是否存在
  • SQL 方法selectYarnAppHeuristicResultDetailsCountById
  • 功能:根据 name 查询记录是否存在。
  • 参数
    • name:记录名称。
  • 返回结果
    • 返回值为 0 或 1,表示记录是否存在。
SELECT COUNT(1)
FROM yarn_app_heuristic_result_details y
WHERE y.name = #{name};

根据主键查询
  • SQL 方法selectYarnAppHeuristicResultDetailsById
  • 功能:根据 name 查询单条记录。
  • 参数
    • name:记录名称。
  • 返回结果
    • 包含 yarn_app_heuristic_result_idnamevaluedetails 的完整记录。
SELECT y.yarn_app_heuristic_result_id, y.name, y.value, y.details
FROM yarn_app_heuristic_result_details y
WHERE y.name = #{name};

精确条件查询
  • SQL 方法selectOne
  • 功能:根据精确条件查询单条记录。
  • 参数
    • yarnAppHeuristicResultId:关联的 YARN 应用启发式结果 ID。
    • name:记录名称。
    • value:值。
    • details:详细信息。
  • 返回结果
    • 满足条件的第一条记录。
SELECT y.yarn_app_heuristic_result_id, y.name, y.value, y.details
FROM yarn_app_heuristic_result_details y
WHERE 1=1
  <include refid="ConditionExact" />
LIMIT 1;

列表查询
  • SQL 方法selectYarnAppHeuristicResultDetailsList
  • 功能:查询满足条件的多条记录,最多返回 1000 条。
  • 参数
    • yarnAppHeuristicResultId:关联的 YARN 应用启发式结果 ID。
    • name:记录名称。
    • value:值。
    • details:详细信息。
  • 返回结果
    • 满足条件的前 1000 条记录。
SELECT y.yarn_app_heuristic_result_id, y.name, y.value, y.details
FROM yarn_app_heuristic_result_details y
WHERE 1=1
  <include refid="ConditionExact" />
LIMIT 1000;

分页查询
  • SQL 方法selectYarnAppHeuristicResultDetailsPage
  • 功能:支持分页查询。
  • 参数
    • yarnAppHeuristicResultId:关联的 YARN 应用启发式结果 ID。
    • name:记录名称。
    • value:值。
    • details:详细信息。
    • pageIndex:分页起始位置。
    • pageSize:分页大小。
  • 返回结果
    • 满足条件的指定分页范围内的记录。
SELECT y.yarn_app_heuristic_result_id, y.name, y.value, y.details
FROM yarn_app_heuristic_result_details y
WHERE 1=1
  <include refid="Condition" />
LIMIT #{pageIndex}, #{pageSize};

分页计数
  • SQL 方法selectYarnAppHeuristicResultDetailsCount
  • 功能:统计满足条件的记录总数。
  • 参数
    • yarnAppHeuristicResultId:关联的 YARN 应用启发式结果 ID。
    • name:记录名称。
    • value:值。
    • details:详细信息。
  • 返回结果
    • 符合条件的记录总数。
SELECT COUNT(1)
FROM yarn_app_heuristic_result_details y
WHERE 1=1
  <include refid="Condition" />;

添加记录
  • SQL 方法insertYarnAppHeuristicResultDetails
  • 功能:插入一条新的记录。
  • 参数
    • value:值。
    • details:详细信息。
  • 逻辑
    • 自动生成主键 name,并插入新记录。
INSERT INTO yarn_app_heuristic_result_details (
    value,
    details
) VALUES (
    #{value},
    #{details}
);

批量插入
  • SQL 方法insertBatch
  • 功能:批量插入多条记录。
  • 参数
    • list:包含多个记录的集合,每个记录包含 yarnAppHeuristicResultIdnamevaluedetails
  • 逻辑
    • 使用 FOREACH 动态生成多条插入语句。
INSERT INTO yarn_app_heuristic_result_details (
    yarn_app_heuristic_result_id,
    name,
    value,
    details
) VALUES
<foreach collection="list" item="item" index="index" separator=",">
    (#{item.yarnAppHeuristicResultId}, #{item.name}, #{item.value}, #{item.details})
</foreach>;

完全修改
  • SQL 方法updateYarnAppHeuristicResultDetails
  • 功能:更新指定记录的所有字段。
  • 参数
    • name:记录名称。
    • value:值。
    • details:详细信息。
  • 逻辑
    • 更新所有字段。
UPDATE yarn_app_heuristic_result_details
SET 
    value = #{value},
    details = #{details}
WHERE name = #{name};

选择性修改
  • SQL 方法updateYarnAppHeuristicResultDetailsSelective
  • 功能:更新指定记录的部分字段。
  • 参数
    • name:记录名称。
    • value:值(可选)。
    • details:详细信息(可选)。
  • 逻辑
    • 根据传入参数动态更新字段。
UPDATE yarn_app_heuristic_result_details
<set>
    <if test="value != null">
        value = #{value},
    </if>
    <if test="details != null">
        details = #{details}
    </if>
</set>
WHERE name = #{name};

删除记录
  • SQL 方法deleteYarnAppHeuristicResultDetails
  • 功能:逻辑删除指定记录。
  • 参数
    • name:记录名称。
  • 逻辑
    • is_delete 设置为 1。
UPDATE yarn_app_heuristic_result_details
SET is_delete = 1
WHERE name = #{name};

按关联 ID 查询
  • SQL 方法selectListByAppHeuristicId
  • 功能:根据 yarn_app_heuristic_result_id 查询相关记录。
  • 参数
    • Id:关联的 YARN 应用启发式结果 ID。
  • 返回结果
    • 满足条件的所有记录。
SELECT y.yarn_app_heuristic_result_id, y.name, y.value, y.details
FROM yarn_app_heuristic_result_details y
WHERE y.yarn_app_heuristic_result_id = #{Id};

3. 总结

表设计特点
  • yarn_app_heuristic_result_details 表存储了 YARN 应用启发式结果的详细信息,包括 namevaluedetails
  • 提供了多种查询方式,包括主键查询、精确条件查询、列表查询、分页查询和分页计数。
  • 支持记录的添加、批量插入、完全修改、选择性修改和逻辑删除操作。
索引建议

为了提高查询性能,建议为以下字段创建索引:

  • PRIMARY KEY (name):主键索引,加速按主键的查询。
  • INDEX idx_yarn_app_heuristic_result_id (yarn_app_heuristic_result_id):加速按关联 ID 的查询。

如果需要进一步优化或调整,请提供更多业务背景或需求!

Mapper_details

1. yarn_app_heuristic_result_details

表结构(Markdown 格式)
字段名 数据类型 是否为空 注释
yarn_app_heuristic_result_id INT NOT NULL 关联的 YARN 应用启发式结果 ID
name VARCHAR(255) NOT NULL 记录名称
value VARCHAR(255) NOT NULL
details LONGVARCHAR NULL 详细信息
is_delete TINYINT NOT NULL 删除标记(0:未删除,1:已删除)

建表 SQL 示例
CREATE TABLE yarn_app_heuristic_result_details (
    yarn_app_heuristic_result_id INT NOT NULL COMMENT '关联的 YARN 应用启发式结果 ID',
    name VARCHAR(255) NOT NULL COMMENT '记录名称',
    value VARCHAR(255) NOT NULL COMMENT '值',
    details LONGVARCHAR COMMENT '详细信息',
    is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记(0:未删除,1:已删除)',
    PRIMARY KEY (name),
    INDEX idx_yarn_app_heuristic_result_id (yarn_app_heuristic_result_id)
) COMMENT='YARN 应用启发式结果详情表';

2. 查询逻辑分析

根据主键查询是否存在
  • SQL 方法selectYarnAppHeuristicResultDetailsCountById
  • 功能:根据 name 查询记录是否存在。
  • 参数
    • name:记录名称。
  • 返回结果
    • 返回值为 0 或 1,表示记录是否存在。
SELECT COUNT(1)
FROM yarn_app_heuristic_result_details y
WHERE y.name = #{name};

根据主键查询
  • SQL 方法selectYarnAppHeuristicResultDetailsById
  • 功能:根据 name 查询单条记录。
  • 参数
    • name:记录名称。
  • 返回结果
    • 包含 yarn_app_heuristic_result_idnamevaluedetails 的完整记录。
SELECT y.yarn_app_heuristic_result_id, y.name, y.value, y.details
FROM yarn_app_heuristic_result_details y
WHERE y.name = #{name};

精确条件查询
  • SQL 方法selectOne
  • 功能:根据精确条件查询单条记录。
  • 参数
    • yarnAppHeuristicResultId:关联的 YARN 应用启发式结果 ID。
    • name:记录名称。
    • value:值。
    • details:详细信息。
  • 返回结果
    • 满足条件的第一条记录。
SELECT y.yarn_app_heuristic_result_id, y.name, y.value, y.details
FROM yarn_app_heuristic_result_details y
WHERE 1=1
  <include refid="ConditionExact" />
LIMIT 1;

列表查询
  • SQL 方法selectYarnAppHeuristicResultDetailsList
  • 功能:查询满足条件的多条记录,最多返回 1000 条。
  • 参数
    • yarnAppHeuristicResultId:关联的 YARN 应用启发式结果 ID。
    • name:记录名称。
    • value:值。
    • details:详细信息。
  • 返回结果
    • 满足条件的前 1000 条记录。
SELECT y.yarn_app_heuristic_result_id, y.name, y.value, y.details
FROM yarn_app_heuristic_result_details y
WHERE 1=1
  <include refid="ConditionExact" />
LIMIT 1000;

分页查询
  • SQL 方法selectYarnAppHeuristicResultDetailsPage
  • 功能:支持分页查询。
  • 参数
    • yarnAppHeuristicResultId:关联的 YARN 应用启发式结果 ID。
    • name:记录名称。
    • value:值。
    • details:详细信息。
    • pageIndex:分页起始位置。
    • pageSize:分页大小。
  • 返回结果
    • 满足条件的指定分页范围内的记录。
SELECT y.yarn_app_heuristic_result_id, y.name, y.value, y.details
FROM yarn_app_heuristic_result_details y
WHERE 1=1
  <include refid="Condition" />
LIMIT #{pageIndex}, #{pageSize};

分页计数
  • SQL 方法selectYarnAppHeuristicResultDetailsCount
  • 功能:统计满足条件的记录总数。
  • 参数
    • yarnAppHeuristicResultId:关联的 YARN 应用启发式结果 ID。
    • name:记录名称。
    • value:值。
    • details:详细信息。
  • 返回结果
    • 符合条件的记录总数。
SELECT COUNT(1)
FROM yarn_app_heuristic_result_details y
WHERE 1=1
  <include refid="Condition" />;

添加记录
  • SQL 方法insertYarnAppHeuristicResultDetails
  • 功能:插入一条新的记录。
  • 参数
    • value:值。
    • details:详细信息。
  • 逻辑
    • 自动生成主键 name,并插入新记录。
INSERT INTO yarn_app_heuristic_result_details (
    value,
    details
) VALUES (
    #{value},
    #{details}
);

批量插入
  • SQL 方法insertBatch
  • 功能:批量插入多条记录。
  • 参数
    • list:包含多个记录的集合,每个记录包含 yarnAppHeuristicResultIdnamevaluedetails
  • 逻辑
    • 使用 FOREACH 动态生成多条插入语句。
INSERT INTO yarn_app_heuristic_result_details (
    yarn_app_heuristic_result_id,
    name,
    value,
    details
) VALUES
<foreach collection="list" item="item" index="index" separator=",">
    (#{item.yarnAppHeuristicResultId}, #{item.name}, #{item.value}, #{item.details})
</foreach>;

完全修改
  • SQL 方法updateYarnAppHeuristicResultDetails
  • 功能:更新指定记录的所有字段。
  • 参数
    • name:记录名称。
    • value:值。
    • details:详细信息。
  • 逻辑
    • 更新所有字段。
UPDATE yarn_app_heuristic_result_details
SET 
    value = #{value},
    details = #{details}
WHERE name = #{name};

选择性修改
  • SQL 方法updateYarnAppHeuristicResultDetailsSelective
  • 功能:更新指定记录的部分字段。
  • 参数
    • name:记录名称。
    • value:值(可选)。
    • details:详细信息(可选)。
  • 逻辑
    • 根据传入参数动态更新字段。
UPDATE yarn_app_heuristic_result_details
<set>
    <if test="value != null">
        value = #{value},
    </if>
    <if test="details != null">
        details = #{details}
    </if>
</set>
WHERE name = #{name};

删除记录
  • SQL 方法deleteYarnAppHeuristicResultDetails
  • 功能:逻辑删除指定记录。
  • 参数
    • name:记录名称。
  • 逻辑
    • is_delete 设置为 1。
UPDATE yarn_app_heuristic_result_details
SET is_delete = 1
WHERE name = #{name};

按关联 ID 查询
  • SQL 方法selectListByAppHeuristicId
  • 功能:根据 yarn_app_heuristic_result_id 查询相关记录。
  • 参数
    • Id:关联的 YARN 应用启发式结果 ID。
  • 返回结果
    • 满足条件的所有记录。
SELECT y.yarn_app_heuristic_result_id, y.name, y.value, y.details
FROM yarn_app_heuristic_result_details y
WHERE y.yarn_app_heuristic_result_id = #{Id};

3. 总结

表设计特点
  • yarn_app_heuristic_result_details 表存储了 YARN 应用启发式结果的详细信息,包括 namevaluedetails
  • 提供了多种查询方式,包括主键查询、精确条件查询、列表查询、分页查询和分页计数。
  • 支持记录的添加、批量插入、完全修改、选择性修改和逻辑删除操作。
索引建议

为了提高查询性能,建议为以下字段创建索引:

  • PRIMARY KEY (name):主键索引,加速按主键的查询。
  • INDEX idx_yarn_app_heuristic_result_id (yarn_app_heuristic_result_id):加速按关联 ID 的查询。

如果需要进一步优化或调整,请提供更多业务背景或需求!

result_mapper