当前位置: 首页 > news >正文

罗湖网站设计费用中国建筑室内设计网

罗湖网站设计费用,中国建筑室内设计网,网站左侧广告代码,百度登录入口其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、慢SQL导致的后果 二、可能导致慢SQL的原因 三、如何发现慢SQL 3.1 JVM Sandbox 四、识别高危SQL 4.1 阿里的重点强制SQL规… 其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、慢SQL导致的后果 二、可能导致慢SQL的原因 三、如何发现慢SQL 3.1 JVM Sandbox 四、识别高危SQL 4.1 阿里的重点强制SQL规约 4.2 SQL explain语句 五、总结 前言 在当今的数字化时代数据库已经成为企业不可或缺的核心组件。 然而随着数据量的不断增加和查询的复杂性提高慢查询成为了数据库性能的瓶颈之一。慢SQL不仅会影响系统的响应速度还可能导致数据丢失或损坏给企业带来巨大的损失。因此慢SQL的治理成为了数据库管理的重要任务之一。 本文将分享一些慢SQL的治理经验包括如何识别、分析和优化慢查询。通过了解慢查询的原因和解决方法我们可以提高数据库的性能和稳定性为企业的业务发展提供更好的支持。 一、慢SQL导致的后果 我一般认为的慢SQL的定义执行超过1s的SQL为慢SQL。 系统的响应时间延迟影响用户体验。资源占用增加增高了系统的负载其他请求响应时间也可能会收到影响。慢SQL占用数据库连接的时间长,如果有大量慢SQL查询同时执行可能会导致数据库连接池的连接被全部占用导致数据连接池打满、缓冲区溢出等问题使数据库无法响应其他请求。还有可能造成锁竞争增加、数据不一致等问题。 二、可能导致慢SQL的原因 缺乏索引/索引未生效导致数据库全表扫描会产生大量的IO消耗产生慢SQL。单表数据量太大会导致加索引的效果不够明显。SQL语句书写不当例如join或者子查询过多、in元素过多、limit深分页问题、order by导致文件排序、group by使用临时表等。数据库在刷“脏页”redo log写满了导致所有系统更新被堵住无法写入了。执行SQL的时候遇到表锁或者行锁只能等待锁被释放导致了慢SQL。 三、如何发现慢SQL 3.1 JVM Sandbox 今天介绍一下基于JVM Sandbox进行SQL流水记录的采集。 这是一个全量采集起到预防的作用。 关于JVM Sandbox的定义「JVM-Sandbox提供动态增强你所指定的类获取你想要的参数和行信息提供动态可插拔容器管理基于JVM-Sandbox的模块。」 简单来说JVM Sandbox可以动态地将你要实现的代码模板打包编织到目标代码中实现事件的监听、切入与代码增强。将目标代码的Java方法的调用分解为BEFORE、RETURN和THROWS三个环节由此在三个环节上引申出对应环节的事件探测和流程控制机制。不仅如此还有Line事件可以完成代码行的记录。 如下所示 // BEFORE-EVENT try {/** do something...*///LINE-EVENTa(); // RETURN-EVENTreturn;} catch (Throwable cause) {// THROWS-EVENT } jvm-sandbox-repeater是JVM-sandbox生态体系下的重要模块具备了JVM-Sandbox所有特点 封装请求录制/回放基础协议也提供了通用可拓展的丰富API。 repeator模块可以无侵入式地录制HTTP/Java/Dubbo入参/返回值业务系统无感知。基于这个能力我们可以方便的采集和SQL执行相关的Java方法参数以及返回值。通过配置采集点来采集执行sql的java代码的相关方法、参数和返回值辅助实现sql采集功能。 确认采集点 根据对MyBatis源码分析我们确认了如下采集点 JVMSandbox完成数据采集后通过发送metaq消息的方式与系统进行对话。对于不同种类的采集消息我们通过不同的字段加以匹配最终可以获得每一条SQL流水对应的SQL文本、执行时长、sql参数、db名称、ip端口、sql_mapper资源文件等全部信息。  四、识别高危SQL 4.1 阿里的重点强制SQL规约 规约如下 【强制】不要使用count(列名)或count(常量)来替代count(*)count(*)就是SQL92定义的标准统计行数的语法跟数据库无关跟NULL和非NULL无关。 【强制】count(distinct col) 计算该列除NULL之外的不重复数量。注意 count(distinct col1, col2) 如果其中一列全为NULL那么即使另一列有不同的值也返回为0。 【强制】当某一列的值全是NULL时count(col)的返回结果为0但sum(col)的返回结果为NULL因此使用sum()时需注意NPE问题。 【强制】使用ISNULL()来判断是否为NULL值。 【强制】对于数据库中表记录的查询和变更只要涉及多个表都需要在列名前加表的别名或表名进行限定。 【强制】在代码中写分页查询逻辑时若count为0应直接返回避免执行后面的分页语句。 【强制】不得使用外键与级联一切外键概念必须在应用层解决。 【强制】禁止使用存储过程存储过程难以调试和扩展更没有移植性。 【强制】IDB数据订正特别是删除或修改记录操作时要先select避免出现误删除确认无误才能提交执行。 可以使用Druid SQL Parser进行SQL解析Druid SQL Parser是阿里巴巴的开源项目可以将SQL语句解析为语法树可以解析SQL的各个部分如SELECT语句、FROM语、WHERE语句等并且可以方便获取SQL语句的结构信息如表名、列名、操作符等。通过分析SQL可以轻松判断SQL是否符合规约。 4.2 SQL explain语句 SQL explain语句可以提供关于SQL查询执行的详细信息和执行计划并且可以了解sql的索引使用情况以及数据访问方式。通过使用Explain语句可以了解SQL是如何执行的并且可以看出其可能存在的性能问题。 一个常见的返回结果示例如下 返回结果解析 我们重点关注的点如下 使用全表扫描性能最差即typeALL 扫描行数过多即rows阈值 查询时使用了排序操作也比较耗时即Extra包含Using filesort 索引类型为index代表全盘扫描了索引的数据Extra信息为Using where代表要搜索的列没有被索引覆盖需要回表性能较差。 以上几点都可能造成SQL性能的劣化是我们需要额外关注的高风险sql。 五、总结 总之慢 SQL 治理需要综合考虑多个方面包括查询语句优化、参数调整、分区和分片、缓存使用、定期维护和优化、分布式数据库解决方案等。通过这些措施的实施可以提高数据库的性能和稳定性提升应用程序的用户体验。
http://www.sadfv.cn/news/106704/

相关文章:

  • 大型网站构建实施方案杭州做网站的企业
  • 网站里面送礼物要钱怎么做代码南宁做网站找哪家好
  • 网站建设的应对措施网站建设属于劳务吗
  • 商标设计网站排行wordpress无法添加媒体
  • wordpress手机端网站深圳外贸建站
  • 虚拟网站官网山西网站建设情况汇总
  • 企业应该做几个网站网站建设与管理的网页
  • 浏览网站怎么用手机做寻找客户的平台
  • 合肥响应式网站建设建立一个网站需要会什么软件
  • 评论回复网站怎么做搜索引擎在线
  • 网站数据库模板下载jsp做网站de后台管理
  • 天门市网站建设seo泉州网站建设哪家好
  • ic商城网站建设怎么制作网站下载软件
  • 网站建设团队与分工网站改版对优化的影响
  • 科技风格网站深圳网站设计兴田德润简介
  • wordpress网站不收录html静态网站开发实验
  • 像素人物制作网站深圳市交易服务中心
  • 网站菜单素材深圳美联英语总部
  • 辽宁建设工程招标网站平阳住房和城乡规划建设局网站
  • 重庆医院网站建设李飞seo
  • 网站 点击量佛山外贸网站制作公司
  • 企业网站可信认证必须做吗百度权重工具
  • 长春seo公司长春网站设计wordpress自定义简单注册
  • 专业做根雕的网站网站seo和sem是什么意思
  • title 网站建设公司实力电子商务网站建设的一般过程
  • 成都商城网站开发设计电商网站都是用什么做的
  • 酒店网站制作公司湖北可以做网站方案的公司
  • 门户类网站开发多少钱湖南省做网站的
  • 手机有软件做ppt下载网站有哪些内容吗手机建筑网
  • 专业手机建站价格广东营销网站建设服务公司