`
SQL专家云技术团队
  • 浏览: 16992 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

前言

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

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

常见问题诊断流程

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

 

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

 

 

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

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

 

 

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

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

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

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

 

 

 

 

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

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

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

 

 

 

  1. 了解系统问题严重度(检查项、SQL错误日志类型)

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

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

 

 

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

 

 

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

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

常见问题

 

 

  性能问题

  1. 性能参数配置不合理:硬件不能发挥最大性能
  2. 系统等待严重:导致语句运行缓慢
  3. 执行超过3秒的语句数量多:客户体验差
  4. 存在缺失索引情况:导致语句运行缓慢,消耗过多系统资源

  环境问题

  1. 磁盘空间规划问题:磁盘空间不足或不能满足未来业务
  2. 补丁不是最新:由于微软版本缺陷导致部分功能异常。

  备份问题

  1. 备份缺失:故障发生会导致全部数据丢失
  2. 备份计划不合理:导致性能问题或长时间数据丢失风险
  3. 备份文件与数据文件同盘:磁盘发生故障,导致数据与备份一起丢失或损坏

  可用性问题

  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)会发生隐式转换,隐式转换增加数据库性能消耗,还会使索引无法使用而导致严重的性能问题。

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

  

 

0
0
分享到:
评论

相关推荐

    SQL Server 2008 商业智能完美解决方案(3)

    利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。...

    SQLServer安全及性能优化

    SQLServer安全及性能优化 修补漏洞 安装程序补丁修补漏洞 随时关注微软官方网站补丁升级 关闭不必要的端口 关闭联必要的服务 数据库引擎 SQL Server Analysis Services SQL Server Reporting Services SQL ...

    SQL Server 2008商业智能完美解决方案 1/3

    利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。...

    SQL Server 2008商业智能完美解决方案 3/3

    利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。...

    SQL Server 2008商业智能完美解决方案 2/3

    利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。...

    一本精心整理的SQL Server精华手册,旨在为广大数据库从业者和学习者提供一份全面而实用的学习指南

    (3)手册还整理了大量SQL Server的经典面试题,涵盖了基础知识、技巧应用、常见问题等多个方面,帮助您更好地应对面试挑战,展现自己的专业水平。(4)本手册适用于广大数据库管理员、开发人员、测试人员以及对SQL ...

    浅谈sqlserver的负载均衡问题

    在以前的文章中,小编也总结了一些常见的“sqlserver集群”“sqlserver数据同步”“sqlserver故障转移”…等相关的实现技巧。今天就不仔细讲解了。 今天想推荐大家尝试使用第三方的组件和工具,典型的就是一款ICX...

    SQL注入攻击与防御

    另外,本书还专门从代码层和系统层的角度介绍了避免SQL注入的各种策略和需要考虑的问题。  本书主要内容  SQL注入一直长期存在,但最近有所增强。本书包含所有与SQL注入攻击相关的、当前已知的信息,凝聚了由本书...

    SQL注入攻击与防御(安全技术经典译丛)

    另外,本书还专门从代码层和系统层的角度介绍了避免SQL注入的各种策略和需要考虑的问题。  本书主要内容  SQL注入一直长期存在,但最近有所增强。本书包含所有与SQL注入攻击相关的、当前已知的信息,凝聚了由本书...

    SQL Server 2005 BI系列课程(19):数据挖掘实践在架构设计中的常见问题以及性能提升策略(上)

    数据仓库意味着大数据量,BI系统能够稳定、持续、...我们将根据大型BI系统实施中的点滴经验,解释BI系统架构设计中应该考虑的问题、运用的技巧;其中包括:分布式的ETL、AS的处理查询分离技术、以及cube的数据同步等

    SQL Server 2005 BI系列课程(20):数据挖掘实践在架构设计中的常见问题以及性能提升策略(下)

    数据仓库意味着大数据量,BI系统能够稳定、持续、...我们将根据大型BI系统实施中的点滴经验,解释BI系统架构设计中应该考虑的问题、运用的技巧;其中包括:分布式的ETL、AS的处理查询分离技术、以及cube的数据同步等

    SmartSoftHelp最专业的SqlServer优化工具,最专业的c#代码生成器

    SmartSoftHelp 6.0 SmartSoftHelp 极简,极速,极致提高程序员内涵,改变编程习惯,智慧与效率的化身!...10.高复用功能代码DLL公共类库(常见功能经典收藏)蓦然回首魔法智能,智慧,效率,经验的产物!

    sql2005全文检索.doc

    为了提升全文索引过程的效率,Microsoft SQL Server 2005 改进了全文收集机制的体系结构,从而大大增强了性能。 Microsoft Full-Text Engine for SQL Server (MSFTESQL) 服务是一个全文索引和搜索引擎。MSFTESQL ...

    超级SQL注入工具,支持布尔盲注,报错盲注,union注入等

    超级SQL注入工具目前支持Bool型盲注、错误显示注入、Union注入,支持Access、MySQL5以上版本、SQLServer、Oracle等数据库。 超级SQL注入工具采用C#开发,底层采用Socket发包进行HTTP交互,极大的提升了发包效率,...

    数据库课设:博客系统

    使用VS2010 + SQL Server2008开发。资源中包含VS项目一个,.sql文件一个,下载后先在SQL Server中打开.sql文件,设置好数据库连接后,点击打开VS项目后可运行。 项目为我独立设计开发,含有博客发布,浏览,评论,...

    Devart_SQL_Server_Data_Access_Components_SDAC_for_Delphi_8.0.2_D6-XE10.2

    修复了DT编辑器中丢失数据的常见错误(D2137) 修复了DataModule中设计时MSConnection的错误(O2290) 修复MSTable错误的设计时编辑器(2433) 优化服务器游标的BLOB字段发布(2117) 修复ClientDataSet的主/明细...

    ASP.NET面试宝典(附赠经典SQL语句查询)

    1. ASP.NET面试中 常见的二叉树算法。 2. ASP.NET 常见的基础方面的面试题。 3. ASP.NET 常见的数据库方面的面试题。 4. SQL经典查询大全 (1)基础 (2)提升 (3)开发技巧 (4)经典操作 (5)数据库函数 ...

    asp.net知识库

    常见的 ASP.NET 2.0 转换问题和解决方案 Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1) -- 异步WebService调用 ASP.NET 2.0页面框架的几点新功能 ASP.NET 2.0 中收集的小功能点 asp.net2.0中的webpart使用...

    如何使用CASE WHEN语法判断入参代替if test=user-name != null and user-name !=

    不同于MyBatis `<if>` 标签在特定ORM框架下的应用,CASE WHEN是标准SQL的一部分,广泛支持于Oracle、SQL Server、MySQL等多种数据库系统乃至PL/SQL等SQL窗口。这意味着,无论身处何种开发环境或数据库平台,CASE ...

    Discuz!NT V3.0.0(Bulid090929)安装版源码

    Discuz!NT V3.0.0(Bulid090929)安装版源码 Discuz!NT 3.0 版本针对SQL Server 2005/2008的新特性做了存储...数据库选择sqlserver 填写数据库信息,在此前,请在数据库中创建一个空的数据库,然后用这个数据库名称。

Global site tag (gtag.js) - Google Analytics