澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

助力某移动OA系统,Server常见问题介绍及快速解决

2019-10-12 作者:数据库网络   |   浏览(159)

前言

  最近连续接触了4个OA系统,均存在着不同的性能问题,本文记述对某移动OA系统的优化全过程,让看官们对数据库优化流程有一个了解,并揭开隐式转换这无情杀手的神秘面纱。

  本文使用的工具:SQL专家云平台专业体检工具 :www.zhuancloud.com

前言

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

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

系统情况

  硬件配置

  澳门新萄京官方网站 1

  

  软件情况

  澳门新萄京官方网站 2

 

  数据库情况

  澳门新萄京官方网站 3

 

  系统情况可以看出,这是一个较小型的OA系统数据大小70G,硬件配置较为普通2路16CPU、48G内存,数据库为2008R2版本。

常见问题诊断流程

数据库指标

  我们来看一下数据库的性能相关情况:数据是从早上九点半到晚上8点的数据

  每秒请求数:

  澳门新萄京官方网站 4

  用户连接数

  澳门新萄京官方网站 5

  慢语句数量

  澳门新萄京官方网站 6

  系统等待情况

  澳门新萄京官方网站 7

  等待时间

  澳门新萄京官方网站 8

  

  CPU、内存、磁盘指标一切正常,还有很多指标,这里就不贴图了。

  其实看到这里,大多数看官可以得出结论,硬件指标正常,阻塞这么严重,系统的慢主要是因为阻塞!并且语句运行时间长也是因为阻塞的时间长!

 

  我的猜测

  OK 没问题就是这样的定位,同样我们看到大量的阻塞类型是LCK_M_IS、LCK_M_S、LCK_M_U ·····有了这样的定位,我可以猜测到,系统中一定有update语句不优化或太过频繁(OA这样的系统一般不会特别频繁,所以一定是不优化),而且设计核心的查询语句经常被阻塞(如果不是核心功能慢,用户也不会这样大叫!),而且80%的可能这部分核心查询也不够优化!

 

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

 澳门新萄京官方网站 9

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

澳门新萄京官方网站 10

 

 

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

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

 澳门新萄京官方网站 11

 

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

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

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

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

 澳门新萄京官方网站 12

澳门新萄京官方网站 13

澳门新萄京官方网站 14

 

 

 

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

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

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

 澳门新萄京官方网站 15

澳门新萄京官方网站 16

 

 

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

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

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

 澳门新萄京官方网站 17

 

问题诊断

  带着我的猜测我们看一下核心的一些语句:

  澳门新萄京官方网站 18

澳门新萄京官方网站 19

澳门新萄京官方网站 20

澳门新萄京官方网站 21

 

 

  很多语句都类似,看到这样的简单语句(都是基本的查询几个字段一个where条件),我就知道问题其实一定很简单!

  如此简单的语句设计那么跑出来是多长时间呢?

  澳门新萄京官方网站 22

 

  很多人想到着一定是缺失索引,这样关键的where 条件上没有索引!!!!!

  看一下结构:

  澳门新萄京官方网站 23

 

   澳门新萄京官方网站 24

 

 

  这个表是一个有280万数据的表,而不是像我们想象的那样缺失索引,相反where字段上的条件是一个聚集索引!!(其实如果只是条件单纯的缺失索引,技术人员怎么可能发现不了?)

 

  整个系统其他问题不大,也就是说明,系统经过优化,程序设计的也很好,没有那种非常复杂的SQL,都是拆成一步一步很简单SQL,也就是说明这其中的技术人员水平还是很可以的!

  那么问题来了,这是啥问题导致的?

  可能出现的情况是:

  1.我这条简单语句不缺少索引,而且单独在数据库跑很快很快(这是一定的)

  2.我系统中阻塞的这么严重,是不是有什么地方我没发现?怎么这样的语句会阻塞的这么狠?

  3.是不是我服务器有什么问题了?

  

  在创意粘性的一本书中写到“指挥官意图”相关,其中有一个比喻就和这个很接近,如果排除其他干扰,就只是看这样简单的语句为什么慢?这样我们就是意图明确,排除干扰,很快我们就会想到“隐式转换”导致索引不能使用的情况,但是正是因为上面的一些问题干扰,我们可能会被引导到,是不是服务器的问题,是不是阻塞情况我们有分析清呢?没有太多办法,数据库本身就是这样一个复杂的东西,各种因素的组合排查是最考验从业者的智慧的。

 

  回到正题,“隐式转换”确实是一个写程序的人员很难发现的东西,因为我写出的语句很快,到数据库跑的时候慢,这我可不知道。

  如果不知道什么是隐式转换,请参见:SQL SERVER中隐式转换的一些细节浅析

  但我们通过工具很清楚的分析出“隐式转换”

  澳门新萄京官方网站 25

  澳门新萄京官方网站 26

 

  在之前的表定义中,我们可以看出表的字段类型为varchar,而传入的参数是nvarchar(从隐式转换的提示中得知)

  澳门新萄京官方网站 27

 

  支持一个简单的问题得到定位,解决起来也是非常容易的,下面给出几个隐式转换的常见解决方式:

  1.程序定义字段类型与表定义不相符(优先级高于表定义类型),直接修改参数设定类型

  2.程序没有定义类型比如java程序定义string ,而驱动自动翻译成nvarchar ,这样一般可以在程序加入强制转换 如 “where a = @a ” 改写成 “where a = cast(@a as varchar(自定义长度))”

  3.程序如果很难修改,或第三方开发,可以直接修改表字段类型 

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

 澳门新萄京官方网站 28

 

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

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

性能对比

  经过1天的简单优化程序性能得到明显改善

  优化前

  澳门新萄京官方网站 29

  优化后

  澳门新萄京官方网站 30

 

  优化前

  澳门新萄京官方网站 31

  优化后

  澳门新萄京官方网站 32

 

--------------博客地址---------------------------------------------------------------------------------------

博客地址 

 

 欢迎转载,请注明出处,谢谢!


 

  总结 : 文章只是简单的描述了一下某移动公司OA优化的过程,主要讲述了隐式转换部分的发现与处理,其他部分的优化都是常见手段请参见其他文章。

    SQL SERVER全面优化-------Expert for SQL Server 诊断系列

  

    关于隐式转换的文章:SQL SERVER中隐式转换的一些细节浅析

 ----------------------------------------------------------------------------------------------------

注:此文章为原创,欢迎转载,请在文章页面明显位置给出此文链接!
若您觉得这篇文章还不错请点击下右下角的推荐,非常感谢!

 

常见问题

 澳门新萄京官方网站 33

 

  性能问题

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

  环境问题

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

  备份问题

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

  可用性问题

  1. 助力某移动OA系统,Server常见问题介绍及快速解决建议。数据库单点风险:发生故障会导致业务中断,故障导致数据丢失

  安全问题

  1. 缺少数据一致性检查(checkdb):不能及时发现数据损坏而最终导致数据库故障和数据丢失
  2. 大量登录失败:检查系统是否受到攻击或是否程序修改导致大量登录失败

  结构设计问题

  1. 超过10分钟会话并带有事务:长时间存在不提交事务,会导致程序阻塞,检查应用程序是否有连接泄露
  2. 存在隐式转换:导致不能使用索引(例:表字段定义varchar,程序传参类型为nvarchar)
  3. 表缺少聚集索引:导致性能问题
  4. 表上外键缺失索引:导致性能问题

快速解决问题与常规建议

快速解决性能问题

   配置系统参数

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

 澳门新萄京官方网站 34

 

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

 澳门新萄京官方网站 35

 

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

  添加缺失索引

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

 澳门新萄京官方网站 36

 

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

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

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

 澳门新萄京官方网站 37

 

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

 澳门新萄京官方网站 38

 

 

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

助力某移动OA系统,Server常见问题介绍及快速解决建议。 澳门新萄京官方网站 39

 

环境问题的建议

  磁盘规划

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

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

  澳门新萄京官方网站 40

 

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:助力某移动OA系统,Server常见问题介绍及快速解决

关键词: