SQL事前巡检插件

背景:

事故频发

•在工作过程中每年都会看到SQL问题引发的线上问题,一条有问题的SQL足以拖垮整个数据库

不易发觉

•对于SQL性能问题测试在预发环境不易发现(数据量小)

•SAAS系统隔离字段在SQL条件中遗漏,造成越权风险

•业务初期SQL没问题,业务增长容易出现事故

•DBS慢SQL不支持实时报警,无法及时发现

•靠大家review代码总会出现遗漏

事后处理

•每次都是线上接口性能、数据库报警才意识到问题,再去优化SQL,此刻有可能引发线上的严重事故;

思考:

虽然我们上线前会做代码review,但是单纯通过人为去发现总是有遗漏;

而且我们更希望问题在测试和预发环境提前暴漏出来,尽量避免带到线上;

是否可以通过技术手段提前发现问题?

是否可以把人为发现变成自动预警?研发新工具来自动检测有问题的SQL!

问题:

我们可以通过拦截器进行拦截,并执行explain分析等操作,在高并发的情况下,我们如何减少对现有系统和数据库的影响??

对于相同的SQL重复请求我们是否可以做缓存进行拦截,避免重复解析?

既然找到有问题的SQL,我们是否可以结合大模型给出用户一个合理的优化建议?

综上所述,我们根据这些思考和遇到的问题设计一个可以事前进行SQL巡检的插件。

流程设计:

行动:

通过开发SQL巡检检插件查实现问题SQL自动预警

1.利用SQL拦截器,拦截系统执行的SQL

2.开启异步线程池,不阻碍业务流程的执行,解析SQL,忽略具体入参数据和格式,MD5加密SQL语句,为了防止重复SQL执行,将之前拦截过的MD5值缓存,可以自定义缓存时间,这段时间内容不会解析相同的SQL

3.为了保障业务系统的稳定性,接入插件的时候支持手动数据源的注入,可以选择主或者从,来执行后续的explain/show create table操作

4.通过explain/show create table执行的结果,以及SQL语句通过http/MQ发送给SQL巡检平台

5.SQL巡检平台接受信息进行内容拆分,获取表名和条件;

6.首先通过执行计划分析:如:[possible_keys][key]分析索引是否使用,如未使用会及时预警通知,并记录到巡检平台;

7.其次进行表和查询条件分析,通过读取平台的配置,设置某一个表的查询条件的校验规则(支持正则表达),如:xxx_info表条件必须使用xxx_code,如不符合规则也会及时预警通知,并记录到巡检平台;

SQL风险预警

【描 述】SQL安全检测-table_name(表名)不符合条件规则:.*org_no.* (正则表达式) 【traceId】wewrerew234234242342 (请求ID) 【执行方法】com.XXX.XXX.XX.FINDBYID(mapper方法) 【SQL内容】select * from table_name where xxx=1 and yyy=2 【系统名称】所属系统

SQL风险预警

【描 述】SQL索引检测-table_name(表名)未使用索引; 【traceId】aa6ac6c89bec4f7dfdfdf74719ae583 (请求ID) 【执行方法】XXXXXMapper.selectResult (mapper方法) 【SQL内容】select * from table_name where xxx=1 and yyy=2 【系统名称】所属系统

1.巡检平台提供了一些报警阈值管理、校验规则管理等,来满足不同系统的不同表的不同要求

2.巡检平台同时会把有问题的SQL进行展示,支持一键分析,因为之前咱们已经获取到执行计划结果和建表语句,把这些信息交给chatgpt,通过大模型分析,并返回响应的建议,辅助用户进行治理

总结:

插件接入成本低,能快速接入,不影响现有业务和流程;

通过自定义校验规则保障SQL的安全性,清除安全隐患;

通过自动巡检插件,我们能提前在测试预发环境自动发现SQL存在的问题;

通过精准报警,可以追踪到具体的功能请求链路,快递定位;

通过平台让大模型生成优化建议,指导我们快速优化SQL;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/584220.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言:文件操作(中)

片头 嗨!小伙伴们,大家好!在上一篇中,我们学习了C语言:文件操作(上),在这一篇中,我们将继续学习文件操作,准备好了吗?Ready Go ! ! ! 文件的顺序…

通过window的bash创建vue架构的项目文件,如何不用下载即可引用想要的图片

winr 通过window的bash创建vue架构的项目文件 先创建项目文件 用vscode打开并下载依赖 关于安装包版本小知识补充 例如 “^5.2.0”第一位是大版本号,第二位是小版本号,最后一位是补丁号 “^”尖括号指限定了只能下载大版本号为5的版本 “~4.17.21” …

ssm092基于Tomcat技术的车库智能管理平台+jsp

车库智能管理平台设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本车库智能管理平台就是在这样的大环境下诞生,其可以帮助管理者在短…

[机器学习系列]深入解析K-Means聚类算法:理论、实践与优化

目录 一、KMeans (一)Kmeans简介 (二)Kmeans作用和优点 (三)Kmeans局限和缺点 (四)Kmeans步骤 (五)如何选取最佳的K值的三种方法 (六)手肘法和目标函数的变化两种确定K值方法的区别 (七)如何选取第一次迭代的K个类中心------KMeans方法 (八)KMeans的常用参数介绍 二、…

CSS + HTML

目录 一.CSS(层叠样式表) 二. CSS 引入方式 三.选择器 3.1 标签选择器 3.2 类选择器 3.3 id选择器 3.4 通配符选择器 3.5 画盒子 四.文字控制属性 4.1字体大小 4.2字体粗细 4.3 字体倾斜 4.4行高 4.5行高--垂直居中 4.6 字体族 4.7 字体复…

智能优化算法及 MATLAB 实现(书籍推荐)

智能优化算法及 MATLAB 实现(书籍推荐) 介绍前言目录第1章 粒子群优化算法原理及其MATLAB实现第2章 哈里斯鹰优化算法原理及其MATLAB实现第3章 沙丘猫群优化算法原理及其MATLAB实现第4章 鲸鱼优化算法原理及其MATLAB实现第5章 大猩猩部队优化算法原理及其…

算法设计与分析 3.2 牛顿法及改进、迭代法、矩阵谱半径、雅可比迭代、高斯迭代

思考题1 改进cosx?优化算法 关键点在于cos计算过于麻烦,而每次都要求sinx的值 故直接简化为cosx的导数 -sinx 即: 原://double daoshu(double x) { // return 18 * x - cos(x); //} 改:double daoshu(double x) {retu…

数字旅游打造个性化旅程,科技让旅行更贴心:数字技术根据旅行者需求定制专属行程,让每一次旅行都充满惊喜与贴心服务

一、引言 随着科技的飞速发展和数字化转型的深入推进,数字旅游正逐渐成为现代旅行的新趋势。它借助数字技术,根据旅行者的个性化需求,为其量身打造专属的旅程,让每一次旅行都充满惊喜与贴心服务。数字旅游不仅提升了旅行的便捷性…

如何编写测试用例

总结 测试用例需求来源 文档 用户角度 编写测试用例步骤 分析需求 写测试点 对需求的拆分 辅助完成测试用例的编写 编写测试用例 编写测试用例原则 能看懂 能执行 测试结果状…

【STM32 IIC通信与温湿度传感器AHT20(I2C_AHT20)】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 最终效果展示AHT20温湿度传感器(I2C_AHT20) 1、工程配置2、代码如果您发现文章有错误请与我留言,感谢 最终效果展示 详细讲解视频…

Excel 批量获取sheet页名称,并创建超链接指向对应sheet页

参考资料 用GET.WORKBOOK函数实现excel批量生成带超链接目录且自动更新 目录 一. 需求二. 名称管理器 → 自定义获取sheet页名称函数三. 配合Index函数,获取所有的sheet页名称四. 添加超链接,指向对应的sheet页 一. 需求 ⏹有如下Excel表,需…

【如何使用SSH密钥验证提升服务器安全性及操作效率】(优雅的连接到自己的linux服务器)

文章目录 一、理论基础(不喜欢这部分的可直接看具体操作)1.为什么要看本文(为了zhuangbility)2.为什么要用密钥验证(更安全不易被攻破)3.密码验证与密钥验证的区别 二、具体操作1.生成密钥对1.1抉择&#x…

数据库|TiDB-Server API的高效应用指南

一、API介绍 1.Status 显示TiDB 连接数、版本和git_hash 信息 tidb-server_ip:status_port/status { "connections": 0, "version": "5.7.25-TiDB-v6.1.1", "git_hash": "5263a0abda61f102122735049fd0dfadc7b7f822" } 2.St…

Ollama +Docker+OpenWebUI

1 Ollama 1.1 下载Ollama https://ollama.com/download 1.2 运行llama3 $ ollama run llama3 pulling manifest pulling 00e1317cbf74... 100% ▕███████████████████████████████████████████████████████████…

SD-WAN的核心竞争力有哪些?

随着企业网络需求的飞速增长,SD-WAN作为一种新兴网络连接方式,正迅速受到企业的青睐。SD-WAN不仅仅是连接手段,更是网络优化、安全防护和综合管理的集大成技术。在这篇文章中,我们将简要探讨SD-WAN的核心竞争力,以帮助…

Flink checkpoint 源码分析

序言 最近因为工作需要在阅读flink checkpoint处理机制,学习的过程中记录下来,并分享给大家。也算是学习并记录。 目前公司使用的flink版本为1.11。因此以下的分析都是基于1.11版本来的。 在分享前可以简单对flink checkpoint机制做一个大致的了解。 …

mysql-sql-练习题-4-标记

标记 连续登录2-7天用户建表排名找规律 最大连胜次数建表只输出连胜结果输出所有连续结果 连续登录2-7天用户 建表 create table continuous_login(user_id1 integer comment 用户id,date_login date comment 登陆日期 ) comment 用户登录表;insert into continuous_login val…

这是一个简单网站,后续还会更新

1、首页效果图 代码 <!DOCTYPE html> <html> <head> <meta charset"utf-8" /> <title>爱德照明网站首页</title> <style> /*外部样式*/ charset "utf-8"…

【计算机毕业设计】基于SSM++jsp的社区管理与服务系统【源码+lw+部署文档+讲解】

目录 摘 要 Abstract 第一章 绪论 第二章 系统关键技术 第三章 系统分析 3.1.1技术可行性 3.1.2经济可行性 3.1.3运行可行性 3.1.4法律可行性 3.4.1注册流程 3.4.2登录流程 3.4.3活动报名流程 第四章 系统设计 4.3.1登录模块顺序图 4.3.2添加信息模块顺序图 4.4.1 数据库E-…

使用STM32CubeMX对STM32F4进行串口配置

目录 1. 配置1.1 Pin脚1.2 RCC开启外部晶振1.3 时钟1.4 串口配置 2. 代码2.1 默认生成代码2.1 开启串口中断函数2.3 接收中断2.4 接收回调函数2.5 增加Printf 的使用 1. 配置 1.1 Pin脚 1.2 RCC开启外部晶振 1.3 时钟 外部使用8MHz晶振 开启内部16MHz晶振 使用锁相环 开启最高…