SQL SERVER日常运维巡检系列——结构设计

news/2024/11/28 18:02:02/文章来源:https://www.cnblogs.com/zhuancloud/p/18569898

前言

  做好日常巡检是数据库管理和维护的重要步骤,而且需要对每次巡检日期、结果进行登记,同时可能需要出一份巡检报告。

  本系列旨在解决一些常见的困扰:

不知道巡检哪些东西
不知道怎么样便捷体检
机器太多体检麻烦
生成报告困难,无法直观呈现结果

  前面两篇对服务器软硬件配置、数据库概况进行了巡检,下面我们要对数据库的一些结构设计进行检查,这些检查主要针对系统开发初期一些不优化的结构设计或在系统不断有新功能增加或运维变动而产生的结构变化。

物理结构概览


  在【检查项】-【全部】中查看每个数据库的信息,当数据库结构未通过常规检查,平台会提示出警告。

  注:检查信息主要包含不规范的表、缺失索引、无索引外键、没有使用的索引、重复索引、老化的索引。

 

 

不规范的表


  在【数据库】-【不规范的表】中检查系统中表是否存在有不规范设计。这些不规范设计主要包含无聚集索引,使用旧数据类型,聚集索引的列是随机增长的(GUID,uniqueidentifier类型)

  注:

  1.微软建议在表中都建议有聚集索引。聚集索引除了可以提高查询性能之外,还可以按需重新生成或重新组织来控制表碎片。

  2.在 Microsoft SQL Server 的未来版本中将删除 ntext、text 和 image 数据类型。 请避免在新开发工作中使用这些数据类型,并考虑修改当前使用这些数据类型的应用程序。 请改用 nvarchar(max)、varchar(max) 和 varbinary(max)。

  3.聚集索引本身是要排序的,而GUID(uniqueidentifier类型)这样插入数据时导致过多的页拆分。

 

缺失索引

 

  数据库设计中索引是性能的一大关键,当数据库缺失大量索引,那么也必然导致数据库的性能很差。

无索引外键

对主表数据操作时(如删除),需要到外键表中查找校验,如果缺少外键索引可能导致全表扫描,严重影响性能。

当在查询中组合相关表中的数据时,经常在联接条件中使用外键列,方法是将一个表的 FOREIGN KEY 约束中的列与另一个表中的主键列或唯一键列匹配。索引使 数据库引擎可以在外键表中快速查找相关数据,提升性能。

没有使用的索引

 

  随着开发和优化的进行,很多人会对数据库进行索引的创建操作,很多时候创建了一个较优的联合索引或者覆盖索引,会让原本单列的索引失去使用的场景,这部分索引会出现在,长时间未使用的索引中,建议删除。

重复索引


  

   随着开发和优化的进行,很多人会对数据库进行索引的创建操作,那么页难免会产生一些功能相近或相同的索引,索引本身也是有维护成本,在更新、插入、删除时会有一定的开销,那么重复的索引只会增加这部分维护开销。

老化的索引

  索引维护是配置常规维护任务之一,随着数据的不断写入和变更,会产生大量的索引碎片,缺少维护任务的索引,无法及时重新组织索引数据,导致索引低效,甚至失效。

程序设计结构概览

  1.在【检查项】-【结构设计】中查看会话信息和执行计划,当设计结构未通过常规检查,平台会提示出警告。

  注:检查信息主要会话隔离级别、是否存在带有事务的长时间会话、执行计划中是否存在隐式转换。

 

会话信息

 

  1.在【会话】-【空闲会话】中查看会话信息。

  注:主要关注,长时间未关闭会话和长时间未关闭并带有事务的会话。长时间带有事务的会话可能是因为程序连接泄露导致,长时间带有事务会阻塞其他会话的正常进行,造成系统卡死等严重性能问题。

 

2.在【会话】-【概览】页中查看会话详细信息,主要关注事务隔离级别。

  事务隔离级别简述:事务隔离级别主要控制查询(共享锁),隔离级别越高并发能力就越差。(详细信息请参见:平台技术资料,最佳配置)

  如果在程序中发现大量REPEATABLE_READ(可重复读)或SERIALIZABLE(可序列化),请检查程序是否有必要使用高级别的隔离级别,而导致阻塞等待增加,数据库并发能力下降。
  
  注:如果在系统中存在大量高级别的事务级别,请确认是否需要高的隔离级别而牺牲并发能力。

 

隐式转换

  存在隐式转换的执行计划:语句存在隐式转换导致性能消耗,或不能使用索引。

  注:隐式转换常发生在表设计的字段类型(varchar)优先级别低于程序传递的参数类型(nvarchar)

  在【执行计划】-【隐式转换】页中查看具体信息。

 

总结

  整个程序和数据库是否稳定、高效和结构设计的好坏密不可分,在巡检过程中,结构设计时比较重要的一部分。很多时候运维人员和设计人员、开发人员沟通不畅、专业技能有差距,所以结构设计常常出现问题。

 

北京格瑞趋势科技有限公司是聚焦于数据服务的高新技术企业,成立于2008年,创始团队及核心技术人员来自微软和雅虎。微软数据平台金牌合作伙伴,卫宁健康数据平台战略合作伙伴。通过产品+服务双轮驱动的业务模式,14年间累计服务4000+客户,覆盖互联网、市政、交通、电信、医疗、教育、电力、制造业等各个领域。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitLab的备份与恢复

一、备份 1. docker执行备份 docker exec gitlab gitlab-rake gitlab:backup:create 默认将备份文件保存至docker的/var/opt/gitlab/backups/ 目录 这条命令是在 Docker 容器内部执行 GitLab 的备份操作。让我来解释一下这个命令的各个部分: docker exec:这是 Docker 命令,用…

Contrastive Learning 对比学习 | RL 学 representation 时的对比学习

在 RL 的 representation learning 中,应用对比学习思想和 InfoNCE loss。记录一下读的三篇相关文章。 01. Representation Learning with Contrastive Predictive Codingarxiv:https://arxiv.org/abs/1807.03748 ,2018 年的文章。 参考博客:知乎 | 理解 Contrastive Pred…

datart非Docker镜像如何部署并配置截图

这里展示的是Windows系统非Docker镜像如何部署并配置截图服务 Linux系统可以参考:https://www.bilibili.com/video/BV1LW4y1m7Rs/?spm_id_from=333.999.0.0&vd_source=bfded88efa5870523e32ef275283d984 安装Chrome浏览器并查看版本 下载地址:https://www.google.cn/int…

jupyter 入门

Jupyter介绍 Jupyter可以理解为python笔记本,可以分块运行python代码并展示输出结果,支持markdown格式的文本显示。 简单来说,jupyter中有三部分内容:markdown格式的文本块; python代码块; python的输出结果块。 Jupyter文件的后缀为.ipynb。 Vscode或Pycharm中可以直接新建…

SARscape6.1新特性

SARscape6.1于2024年11月正式发布,匹配ENVI6.1版本,最低支持版本为ENVI5.6.0,主要包含以下新功能和功能改进: 突出变化:洪水监测工具 移动目标速率估算工具:估算SAR影像中移动目标速度的新工具。 自动形变建模工具:能够自主执行非线性和线性反演,以确定地震后的滑动分布…

中电金信:数据管理的“工艺”和“柔”性艺术

数字化转型将数据作为重要的资源和决策依据,通过收集、加工、分析和利用大数据,来优化业务流程和支撑业务决策。中国信通院在“2023数据资产管理大会”上分享了数据管理发展的六大趋势,其中认为“DataOps将打造数据开发治理融合的新范式”“数据编织塑造下一代数据架构”。那…

macOS电脑数据转换:Easy Data Transform直装版安装包资源

Easy Data Transform是一款专为Mac用户设计的数据转换工具,支持CSV、Excel、JSON等多种文件格式。它提供直观的拖放界面,无需编写代码即可完成数据合并、过滤、排序、拆分等操作。此外,该软件拥有丰富的转换模板和自动化功能,支持42种转换和60种文本编码,能够显著提高数据…

Shiro 漏洞复现

Shiro 漏洞复现 shiro是什么? ApacheShiro是一个灵活且全面的Java安全框架,它为现代应用程序提供了认证、授权、加密和会话管理等核心安全功能。shiro组件识别 1.在访问及登录时抓包,如果响应头 set-cookie 中显示 rememberMe=deleteMe,说明使用了 Shiro 组件。2.有时 Shir…

什么是网格变形?HyperWorks网格变形设置方法

HyperMorph 是 HyperMesh 向用户提供的强大的网格变形工具。它可以在保证基本网格形态和质量的前提下,按照用户使用需求,自如的对已有的有限元模型进行网格变形。 HyperMorph 可用于: • 改变已有的网格,生成新的设计方案。 • 将已有的网格映射至全新的几何模型。 • 用于…

Kafka集群管理:大数据运维专家来教你如何实现数据均衡与性能最大化

Kafka 概述 Kafka 起初是 由 LinkedIn 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper 协调的分布式消息系统,现已被捐献给 Apache 基金会。目前 Kafka 已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛…

x-easypdf 初始与简单使用

一、概述 一个 java 语言简化处理 pdf 的框架 项目主页https://x-easypdf.cn项目概述x-easypdf是一个java语言简化处理pdf的框架,包含fop模块与pdfbox模块,fop模块以创建功能为主,基于xsl-fo模板生成pdf文档,以数据源的方式进行模板渲染;pdfbox模块以编辑功能为主,对标准…

x-easypdf 初始

一、概述 一个 java 语言简化处理 pdf 的框架 项目主页https://x-easypdf.cn项目概述x-easypdf是一个java语言简化处理pdf的框架,包含fop模块与pdfbox模块,fop模块以创建功能为主,基于xsl-fo模板生成pdf文档,以数据源的方式进行模板渲染;pdfbox模块以编辑功能为主,对标准…