首页 > 数据库 >【能力提升】SQL Server常见问题介绍及快速解决建议

【能力提升】SQL Server常见问题介绍及快速解决建议

时间:2024-06-19 12:33:40浏览次数:14  
标签:语句 常见问题 数据库 系统 Server 问题 索引 SQL 备份

前言

  本文旨在帮助SQL Server数据库的使用人员了解常见的问题,及快速解决这些问题。这些问题是数据库的常规管理问题,对于很多对数据库没有深入了解的朋友提供一个大概的常见问题框架。

  下面一些问题是在近千家数据库用户诊断时发现的常规问题,本文分为【常见问题诊断流程】-【常见问题】-【常见问题快速解决的建议】

常见问题诊断流程

  概览模块—[ 汇总] 了解系统

 了解系统性能(语句执行时间、会话等待)

 

语句执行时间:横坐标为时间范围,纵坐标为在执行时间在范围内分布的语句数量。

(本例:收集时间内语句执行时间在3-5秒的语句数量有1103条,5-10秒,10-20秒慢语句数量很多,说明系统语句执行缓慢,系统存在性能问题)

 

会话-等待类型:横坐标为等待类型,纵坐标为等待数量。

(本例:系统中发生大量的等待,说明系统存在性能问题)

 了解系统运行指标(CPU、内存、磁盘计数器)

通过3 个主要计数器诊断系统是否存在瓶颈和产生瓶颈的资源。

 

 

1.   了解系统请求压力(批处理请求/每秒、连接数)  

了解系统中每秒请求的语句数量和系统打开的连接数量,掌握系统压力量级。

(注:可多次收集分析,掌握系统压力波动和处理能力)

 

 

了解系统中的潜在风险与缺陷情况

(红色:严重程度高,建议问题全部解决)

 [ 检查项 ] 模块 —[ 全部 ] 发现系统问题

 

从系统、参数、会话、性能计数器、查询语句、作业、日志、执行计划、tempdb、业务数据库多方面呈现系统存在的问题与隐患。

(绿色:配置标准,蓝色:严重程度低,橙色:严重程度中等,红色:严重程度高,可能造成风险)

常见问题

 

 

 

 

 

性能问题

 

1.        性能参数配置不合理:硬件不能发挥最大性能

2.        系统等待严重:导致语句运行缓慢

3.        执行超过3 秒的语句数量多:客户体验差

4.        存在缺失索引情况:导致语句运行缓慢,消耗过多系统资源

  环境问题

1.        磁盘空间规划问题:磁盘空间不足或不能满足未来业务

2.        补丁不是最新:由于微软版本缺陷导致部分功能异常。

  备份问题

1.        备份缺失:故障

  可用性问题

1.        数据库单点风险:发生故障会导致业务中断,故障导致数据丢失

  安全问题

1.        缺少数据一致性检查(checkdb ):不能及时发现数据损坏而最终导致数据库故障和数据丢失

2.        大量登录失败: 检查系统是否受到攻击或是否程序修改导致大量登录失败

  结构设计问题

1.        超过10 分钟会话并带有事务:长时间存在不提交事务,会导致程序阻塞,检查应用程序是否有连接泄露

2.        存在隐式转换:导致不能使用索引(例:表字段定义varchar ,程序传参类型为nvarchar )

3.        表缺少聚集索引:导致性能问题

4.        表上外键缺失索引:导致性能问题

快速解决问题与常规建议

快速解决性能问题

    配置系统参数

查看不合理参数—点击操作按钮

 在弹出页查看当前运行值,与建议值。

 

弹出优化配置脚本—如需修改复制文本—在服务器运行即可修改

  添加缺失索引

在【数据库】模块的【缺失索引】中,创建数据库的缺失索引。

 

注:并非所有提示的索引都需要创建,根据【平均影响百分比】【平均用户开销百分比】【用户查找次数】情况综合评价,建立系统中缺失的重要索引。并综合【相等列】【不等列】【包含列】创建包含多种情况的最优索引。

  根据执行频率和开销分析重点语句

在【查询语句】模块的【查询语句】-【汇总视图】中,通过【执行次数】或【cpu时间】【读次数】【写次数】【影响行数】等对重点语句,重点优化。

 点击语句可以进入【分类视图】,语句的详细执行信息页

 在【分类视图】页面,可以点击语句进入【关联项】查看每条语句执行的具体信息及执行计划,等待等信息。

 

环境问题的建议

  磁盘规划

1.        按照文件类型划分:数据文件、日志文件、tempDB 文件、备份文件,分别放在一个物理磁盘(4 块物理磁盘)

2.        按照数据库划分:不同的业务数据库(压力大的)分别放在一个物理磁盘,tempDB 和备份文件各一个物理磁盘。(大型业务库数+2 )

  操作系统与版本

1.        建议使用64 位操作系统和SQL SERVER 软件

2.        建议SQL SERVER 补丁为最新补丁

备份问题的建议

1.        中小数据库备份方案:每天全备份、一小时一次日志备份。

2.        大型数据库备份方案:每周全备份、每天差异备份、一小时一次日志备份。

3.        备份文件与数据文件放置在不同物理磁盘

4.        备份文件拷贝异地(容灾)

可用性建议

任何数据库为了保证业务的连续性和高可用性,以及数据的安全性,都必须采用高可用方案规避单点的风险。

数据库主流的高可用技术:Always On可用性组,SQL故障转移群集,日志传送技术,镜像技术,及moebius负载均衡集群

安全问题建议

  账号安全与权限管理

通常的情况下,我们都是通过sa进行设置密码的,而且在config文件里面明文的写上我们的帐号和密码,这样的设计存在很大的安全隐患,无论是受攻击还是误删除都会给系统带来严重的后果,建议对用户进行权限规划,账号划分等安全措施。

  维护任务CHECKDB 保证数据安全

接触过上百家客户因为没有及时发现数据页损坏而导致的数据库不可用或数据丢失,建议每周运行及时发现数据库损坏。

结构设计的建议

  聚集索引与外键索引

在表结构设计中建议表中都有聚集索引,外键添加索引,以提升性能。

  隐式转换

在数据库物理设计和程序调用设计时字段类型不匹配(程序传入的类型转换优先级高于数据库中字段类型,如表中varchar 而程序传入nvarchar)会发生隐式转换,隐式转换增加数据库性能消耗,还会使索引无法使用而导致严重的性能问题。

通过工具语句的【执行计划】中找到对应的隐式转换处,分析程序传入和数据库表设计综合解决。

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

 

标签:语句,常见问题,数据库,系统,Server,问题,索引,SQL,备份
From: https://www.cnblogs.com/zhuancloud/p/18255982

相关文章

  • mysql中先进先出的例子
    在MySQL中,实现"先进先出"(FIFO,FirstInFirstOut)的数据结构通常不直接通过数据库的表结构来完成,因为数据库表本身并不保持元素的插入顺序。然而,你可以通过几种方法来模拟FIFO的行为。以下是一个简单的例子,说明如何在MySQL中模拟FIFO队列:使用带有时间戳的表你可以创建一个......
  • Java调用mysql后台函数的例子
    在Java中调用MySQL后台的存储函数(注意,这里我们区分存储过程和存储函数:存储过程没有返回值,但可以通过输出参数返回数据;而存储函数有一个返回值)时,你需要使用CallableStatement来执行这个函数并获取返回值。以下是一个简单的例子,说明如何在Java中调用MySQL的存储函数:MySQL存储函......
  • 小型企业人事管理系统java ssm mysql|全套源码+文章lw+毕业设计+课程设计+数据库+ppt
    小型企业人事管理系统javassmmysql|全套源码+文章lw+毕业设计+课程设计+数据库+ppt小型企业人事管理系统的设计与实现【摘要】:人才是企业发展的核心力量,所以人事管理是企业管理中一项重要的任务。传统的人事管理系统不仅效率慢而且极易出错,使管理者不能清楚的了解每一位......
  • SQL SERVER 动态行转列代码
    在实际的项目操作中,数据统计偶尔会用到SQLServer的行转列,数据表MG_TicketsHistoryData如下:列名数据类型描述TicketDatedateTicketCodenchar(10)TicketADJClosedecimal(18,2)使用SQLServer动态行转列,代码如下:CREATEproc[dbo].[PIVOT_TicketsHisData]@start_datevarch......
  • mybatis-mp 高级用法:ORM+SQL模板,真正意义实现ORM!!!
    官网:mybatis-mp.cn目前ORM以JPAPLUS为首的ORM,遇到稍微复杂的、或者数据库特性函数时通常需要自己写sql,或代码中,或xml中,这就有点难受了1:有没有好的办法?mybatis-mp的做法就是ORM+SQL模板,SQL模板不仅仅是sql字符串,它还帮你替换关系的信息:列SysUserRo......
  • MySQL存储引擎之MyISAM与InnoDB详解
    文章目录MySQL存储引擎之MyISAM与InnoDB详解MyISAM存储引擎MyISAM的特点InnoDB存储引擎InnoDB的特点InnoDB插入数据示例面试题总结解答为什么InnoDB一定要有一个主键?为什么主键要用整型?为什么主键建议使用自增?总结MySQL存储引擎之MyISAM与InnoDB详解在MySQL中,......
  • MySQL的字符集与排序规则
    在MySQL数据库中,字符集(CharacterSet)和排序规则(Collation)是两个至关重要的概念,它们共同决定了数据库中字符数据的存储、比较和排序方式。对于涉及多语言、国际化或特殊字符处理的应用来说,正确选择和使用字符集与排序规则尤为关键。一、字符集(CharacterSet)字符集定义了数据库......
  • 课题分享:学校招生信息管理系统,基于java+SSM+mysql
     一、前言介绍    在当今这个信息技术高度发展的时代,信息管理的革新已经成为了一个全球性的议题,它的影响深远而广泛。作为这一变革的一部分,“学校招生信息网”应运而生,它是一个基于Mysql数据库,通过JSP技术实现的在线平台。这个平台的建立,不仅是为了应对中国经济持续增......
  • MySQL之复制(四)
    复制复制的原理基于语句的复制在MySQL5.0及之前的版本中只支持基于语句的复制(也称为逻辑复制),这在数据库领域是很少见的,基于语句的复制模式下,主库会记录那些造成数据更改的查询,当备库读取并重放这些事件时,实际上只是把主库上执行过的SQL再执行一遍。这种方式既有好处、......
  • 关于MySQL数据库基础学习心得与体会
    引言在当今的信息化时代,数据已经成为企业和社会运行的重要驱动力。作为数据的载体,数据库管理系统(DBMS)扮演着至关重要的角色。MySQL作为最流行的开源关系型数据库管理系统之一,因其高性能、可靠性、易用性等特点,被广泛应用于各种规模的系统中。在学习了MySQL数据库基础课程之后,......