update sql报执行慢

ob server:社区版4.4.2.2

在ocp上,查看租户的sql诊断,有一个慢sql,是根据主键更新:
UPDATE
t_device
SET
support_paper = ?,
big_paper_box_list = NULL,
run_status = ?,
fault_code = ?,
warn_info = ?,
heart_time = ?
WHERE
dev_id = ?

表定义:
CREATE TABLE t_device (
dev_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘设备ID’,
trademark_id bigint(20) DEFAULT NULL COMMENT ‘品牌id’,
model_id bigint(20) NOT NULL COMMENT ‘型号id’,
station_id bigint(20) DEFAULT NULL COMMENT ‘打印点ID’,
ticket_id varchar(100) DEFAULT NULL COMMENT ‘二维码ID,微信中的ticket_id’,
printer_name varchar(50) DEFAULT NULL COMMENT ‘打印机名称’,
mp_qrcode_img varchar(200) DEFAULT NULL COMMENT ‘小程序二维码图片’,
sn varchar(100) DEFAULT NULL COMMENT ‘序列号(自行编号)’,
dev_sn varchar(100) DEFAULT NULL COMMENT ‘设备序列号(厂家sn)’,
owner int(11) DEFAULT NULL COMMENT '所有权 0 自有 1租赁 ',
support_paper tinyint(255) DEFAULT ‘1’ COMMENT ‘A4:1;A3:2;A4+A3:3’,
paper_box1_count decimal(10,2) DEFAULT NULL COMMENT ‘纸盒1数量’,
paper_box2_count decimal(10,2) DEFAULT NULL COMMENT ‘纸盒2数量’,
paper_box3_count decimal(10,2) DEFAULT NULL COMMENT ‘纸盒3数量’,
paper_box4_count decimal(10,2) DEFAULT NULL COMMENT ‘纸盒4数量’,
paper_box5_count decimal(10,2) DEFAULT NULL COMMENT ‘纸盒5数量’,
big_paper_box_list varchar(10) DEFAULT NULL COMMENT ‘大纸盒清单,用逗号分隔’,
paper_count bigint(20) DEFAULT ‘0’ COMMENT ‘纸张数(自己加纸后计数)’,
month_paper_count bigint(20) DEFAULT ‘0’ COMMENT ‘本月纸张数’,
total_paper_count bigint(20) DEFAULT ‘0’ COMMENT ‘总纸张数’,
run_status char(1) DEFAULT NULL COMMENT '运行状态 A正常 X下线 W预警 (可打印) E错误(不能打印) ',
fault_code varchar(10) DEFAULT NULL COMMENT ‘错误码’,
warn_info text DEFAULT NULL COMMENT ‘预警或者错误消息’,
heart_time datetime DEFAULT NULL COMMENT ‘心跳时间’,
offline_time datetime DEFAULT NULL COMMENT ‘下线时间’,
offline_reason varchar(100) DEFAULT NULL COMMENT ‘下线原因’,
ip_address varchar(100) DEFAULT NULL COMMENT ‘ip地址’,
admin_password varchar(255) DEFAULT NULL COMMENT ‘管理员密码’,
model_name varchar(30) DEFAULT NULL,
machine_id varchar(30) DEFAULT NULL,
system_version varchar(30) DEFAULT NULL,
nib_version varchar(30) DEFAULT NULL,
wim_version varchar(30) DEFAULT NULL,
create_time datetime NOT NULL COMMENT ‘创建时间’,
state char(1) NOT NULL COMMENT ‘状态 A 有效 X 删除’,
state_date datetime DEFAULT NULL COMMENT ‘状态更改时间’,
r_tenant_id varchar(32) DEFAULT ‘woqu’ COMMENT ‘实际租户id’,
enable_ssl tinyint(4) DEFAULT ‘3’ COMMENT ‘允许ssl: 0-不允许,1-允许 2-未知 3-不支持’,
use_wsd tinyint(4) DEFAULT ‘3’ COMMENT ‘使用WSD: 0-否,1-是 2-未知 3-不支持’,
disable_wsd_scan tinyint(4) DEFAULT ‘3’ COMMENT ‘禁止WSD扫描命令:0-否,1-是 2-未知 3-不支持’,
usb tinyint(4) DEFAULT ‘3’ COMMENT ‘USB设置:0-无效,1-有效 2-未知 3-不支持’,
user_admin tinyint(4) DEFAULT ‘3’ COMMENT ‘用户管理员验证:0-关,1-开 2-未知 3-不支持’,
machine_admin tinyint(4) DEFAULT ‘3’ COMMENT ‘机器管理员验证: 0-关,1-开 2-未知 3-不支持’,
network_admin tinyint(4) DEFAULT ‘3’ COMMENT ‘网络管理员验证: 0-关,1-开 2-未知 3-不支持’,
document_admin tinyint(4) DEFAULT ‘3’ COMMENT ‘文件管理员验证: 0-关,1-开 2-未知 3-不支持’,
read_setting_error varchar(300) DEFAULT NULL COMMENT ‘读取异常信息’,
PRIMARY KEY (dev_id),
KEY idx_1 (station_id) BLOCK_SIZE 16384 LOCAL,
KEY idx_dev_station (dev_id, station_id) BLOCK_SIZE 16384 LOCAL
) ORGANIZATION INDEX AUTO_INCREMENT = 4218 AUTO_INCREMENT_MODE = ‘ORDER’ DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = ‘zstd_1.3.8’ REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE ENABLE_MACRO_BLOCK_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 COMMENT = ‘设备表’

请教为何根据主键更新还会执行慢?

能使用obdiag收集一下 plan_monitor信息么?这样更方便排查
obdiag gather plan_monitor --trace_id YB420BA2D99B-0005EBBFC45D5A00-0-0
–env host=xx.xx.xx.xx --env port=2881 --env user=root@test --env password=*** --env database=test

这个sql对应的trace_id 从哪里看?

– 方法一:通过sql_audit中获取
select query_sql,trace_id from oceanbase.GV$OB_SQL_AUDIT where query_sql like ‘xxx%’ order by REQUEST_TIME desc limit 5;

– 方法二:通过当前session执行SELECT last_trace_id();获取
SELECT last_trace_id();

文档中有你可以看看obdiag怎么使用的

这个warn信息有关系吗,没关系的话,我把log文件传上来

log信息如下
obdiag_gather_pack_20260920164534.zip (215.5 KB)