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 语句说明
id:
- 类型为
BIGINT
,设置为主键并启用自动递增。 - 这与 Mapper 文件中的
<insert>
标签中useGeneratedKeys="true"
和keyProperty="id"
的配置一致。
- 类型为
machine:
- 类型为
VARCHAR(255)
,表示机器名称或标识。 - 设置为
NOT NULL
,因为插入时通常需要提供此字段。
- 类型为
process:
- 类型为
VARCHAR(255)
,表示进程名称或标识。 - 设置为
NOT NULL
,因为它是进程的核心字段。
- 类型为
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 文件内容来看,目前没有明确的外键约束或关联关系的定义。以下是分析:
字段对比:
alert_process
表的字段包括machine
,process
, 和status
。alert_trigger
表的字段包括host
,trigger_id
,trigger_des
,severity
,status
, 等。- 两个表中都没有直接引用对方的字段(如
id
或其他字段),因此无法直接推断出它们之间存在外键约束。
业务逻辑推测:
alert_process
表可能记录的是与特定机器和进程相关的告警信息。alert_trigger
表可能记录的是触发器相关的告警信息。- 如果从业务角度考虑,可能会存在某种间接关联,例如:
alert_process.machine
可能对应于alert_trigger.host
(即机器/主机)。alert_process.status
和alert_trigger.status
可能表示类似的告警状态。
- 但这种关联并未通过外键或其他方式明确表达。
结论:
- 目前从提供的 Mapper 文件内容来看,
alert_process
和alert_trigger
没有明确的外键约束关系。 - 如果确实存在业务上的关联,可以通过新增字段(如
trigger_id
或process_id
)来建立外键关系,并在数据库设计中显式定义。
- 目前从提供的 Mapper 文件内容来看,
建议
如果需要进一步明确两者的关联关系,可以补充以下内容:
- 在
alert_process
表中增加一个字段trigger_id
,用于关联到alert_trigger
表的id
字段。 - 在
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 语句说明
id:
- 类型为
BIGINT
,设置为主键并启用自动递增。 - 这与 Mapper 文件中的
<insert>
标签中useGeneratedKeys="true"
和keyProperty="id"
的配置一致。
- 类型为
machine:
- 类型为
VARCHAR(255)
,表示机器名称或标识。 - 设置为
NOT NULL
,因为插入时通常需要提供此字段。
- 类型为
process:
- 类型为
VARCHAR(255)
,表示进程名称或标识。 - 设置为
NOT NULL
,因为它是进程的核心字段。
- 类型为
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 文件内容来看,目前没有明确的外键约束或关联关系的定义。以下是分析:
字段对比:
alert_process
表的字段包括machine
,process
, 和status
。alert_trigger
表的字段包括host
,trigger_id
,trigger_des
,severity
,status
, 等。- 两个表中都没有直接引用对方的字段(如
id
或其他字段),因此无法直接推断出它们之间存在外键约束。
业务逻辑推测:
alert_process
表可能记录的是与特定机器和进程相关的告警信息。alert_trigger
表可能记录的是触发器相关的告警信息。- 如果从业务角度考虑,可能会存在某种间接关联,例如:
alert_process.machine
可能对应于alert_trigger.host
(即机器/主机)。alert_process.status
和alert_trigger.status
可能表示类似的告警状态。
- 但这种关联并未通过外键或其他方式明确表达。
结论:
- 目前从提供的 Mapper 文件内容来看,
alert_process
和alert_trigger
没有明确的外键约束关系。 - 如果确实存在业务上的关联,可以通过新增字段(如
trigger_id
或process_id
)来建立外键关系,并在数据库设计中显式定义。
- 目前从提供的 Mapper 文件内容来看,
建议
如果需要进一步明确两者的关联关系,可以补充以下内容:
- 在
alert_process
表中增加一个字段trigger_id
,用于关联到alert_trigger
表的id
字段。 - 在
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。start
和end
:时间范围。limit
:限制返回的数据条数(默认为 1000)。
- 返回结果:
clock
:时间戳。value
:历史数据值。num
:固定为 1,表示每个数据点的数量。
集群历史数据查询
- SQL 方法:
selectClusterHistoryData
- 功能:查询多个节点的历史数据,并按节点和时间排序。
- 参数:
table
:动态表名。monitorItemIds
:监控项 ID 列表。start
和end
:时间范围。limit
:限制每个节点返回的数据条数(默认为 1000)。
- 逻辑:
- 使用 MySQL 的用户变量
@num
和@type
实现分组和排序。 - 按
itemid
和clock
排序后,为每个节点分配行号。 - 限制每个节点返回的数据条数。
- 使用 MySQL 的用户变量
- 返回结果:
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
字段实现逻辑删除,避免物理删除对性能的影响。 - 主键由
itemid
和clock
组成,确保每条记录唯一。
索引建议
为了提高查询性能,建议为以下字段创建索引:
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_schema
和 performance_schema
中,同时可以通过 SHOW STATUS
或 SHOW 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
:统计总查询次数,评估数据库负载。showInnodbBufferPoolReads
和showInnodbBufferPoolReadRequests
:监控 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。
- 返回结果:
- 包含
id
、app_running
、app_completed
、last_fetch_time
和version
的完整记录。
- 包含
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
。
- 返回一个字符串类型的集合,包含所有正在运行的 Spark 应用的
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_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 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
:包含多个记录的集合,每个记录包含yarnAppHeuristicResultId
、name
、value
和details
。
- 逻辑:
- 使用
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 应用启发式结果的详细信息,包括name
、value
和details
。- 提供了多种查询方式,包括主键查询、精确条件查询、列表查询、分页查询和分页计数。
- 支持记录的添加、批量插入、完全修改、选择性修改和逻辑删除操作。
索引建议
为了提高查询性能,建议为以下字段创建索引:
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_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 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
:包含多个记录的集合,每个记录包含yarnAppHeuristicResultId
、name
、value
和details
。
- 逻辑:
- 使用
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 应用启发式结果的详细信息,包括name
、value
和details
。- 提供了多种查询方式,包括主键查询、精确条件查询、列表查询、分页查询和分页计数。
- 支持记录的添加、批量插入、完全修改、选择性修改和逻辑删除操作。
索引建议
为了提高查询性能,建议为以下字段创建索引:
PRIMARY KEY (name)
:主键索引,加速按主键的查询。INDEX idx_yarn_app_heuristic_result_id (yarn_app_heuristic_result_id)
:加速按关联 ID 的查询。
如果需要进一步优化或调整,请提供更多业务背景或需求!