以下是我最近生产中发生的隐式转换导致的负载增高案例,仅为记录。
1.背景:从昨天晚上通过钉钉和邮箱一直接收到频繁报cpu负载超过90%,刚好BI同事晚上、凌晨在线上配合审计频繁DML数据库(备注:BI有一个同事有个库的DML权限,后面等审计完会收回)加上我线上线下在做定时同步和以前这种事也有发生,就没有当回事。
今天早上一来巡检,就发现了异常。
cpu使用率:
在90-100之间频繁。

2.以下大量语句频繁,发现是另外一个库(另一个业务,并发量比较大),不是1的原因。

show create table xx ####查看表创建
show index from XXX ###查看表索引
explain分析,发现没有走索引 type:ALL
执行时间都是7秒以上。
3.desc table结构,发现ad_id这个字段是我来之前开发定义的varchar(20),
看到这里无语,这个表关联抖音及引流下单表,是以前开发弄的,建议这里弄成bigint替代varchar(20),开发暂时说不用转换
看到这里,就知道原因了,因为ad_id被开发定义了varchar(20),但sql ad_id后是int类型,发生了隐式转换。
`ad_id` = '1733062082364420'程序中修改完,cpu负载立马下来。
此前生产中已部署SQL审核平台和相关受权(推荐大家用某生平台的SQLE),开发不重视,直接跳过此步聚,现在看来生产前SQl审计多么重要。
最后修改时间:2022-06-21 14:31:04
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




