设为首页 收藏本站
查看: 790|回复: 0

[经验分享] SQL Server常见问题介绍及快速解决建议

[复制链接]

尚未签到

发表于 2017-12-7 14:51:18 | 显示全部楼层 |阅读模式
前言
  本文旨在帮助SQL Server数据库的使用人员了解常见的问题,及快速解决这些问题。这些问题是数据库的常规管理问题,对于很多对数据库没有深入了解的朋友提供一个大概的常见问题框架。
  下面一些问题是在近千家数据库用户诊断时发现的常规问题,本文分为【常见问题诊断流程】-【常见问题】-【常见问题快速解决的建议】
常见问题诊断流程
  概览模块—[汇总]了解系统
DSC0000.png


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

  语句执行时间:横坐标为时间范围,纵坐标为在执行时间在范围内分布的语句数量。
  (本例:收集时间内语句执行时间在3-5秒的语句数量有1103条,5-10秒,10-20秒慢语句数量很多,说明系统语句执行缓慢,系统存在性能问题)
DSC0002.png

  会话-等待类型:横坐标为等待类型,纵坐标为等待数量。
  (本例:系统中发生大量的等待,说明系统存在性能问题)

  • 了解系统运行指标(CPU、内存、磁盘计数器)
  通过3个主要计数器诊断系统是否存在瓶颈和产生瓶颈的资源。
DSC0003.png

DSC0004.png

DSC0005.png


  • 了解系统请求压力(批处理请求/每秒、连接数)
  了解系统中每秒请求的语句数量和系统打开的连接数量,掌握系统压力量级。
  (注:可多次收集分析,掌握系统压力波动和处理能力)
DSC0006.png

DSC0007.png


  • 了解系统问题严重度(检查项、SQL错误日志类型)
  了解系统中的潜在风险与缺陷情况
  (红色:严重程度高,建议问题全部解决)
DSC0008.png

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

  从系统、参数、会话、性能计数器、查询语句、作业、日志、执行计划、tempdb、业务数据库多方面呈现系统存在的问题与隐患。
  (绿色:配置标准,蓝色:严重程度低,橙色:严重程度中等,红色:严重程度高,可能造成风险)
常见问题
DSC00010.png

  性能问题

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

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

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

  • 数据库单点风险:发生故障会导致业务中断,故障导致数据丢失
  安全问题

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

  • 超过10分钟会话并带有事务:长时间存在不提交事务,会导致程序阻塞,检查应用程序是否有连接泄露
  • 存在隐式转换:导致不能使用索引(例:表字段定义varchar,程序传参类型为nvarchar)
  • 表缺少聚集索引:导致性能问题
  • 表上外键缺失索引:导致性能问题
快速解决问题与常规建议
快速解决性能问题
   配置系统参数
  查看不合理参数—点击操作按钮
DSC00011.png

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

  弹出优化配置脚本—如需修改复制文本—在服务器运行即可修改
  添加缺失索引
  在【数据库】模块的【缺失索引】中,创建数据库的缺失索引。
DSC00013.png

  注:并非所有提示的索引都需要创建,根据【平均影响百分比】【平均用户开销百分比】【用户查找次数】情况综合评价,建立系统中缺失的重要索引。并综合【相等列】【不等列】【包含列】创建包含多种情况的最优索引。
  根据执行频率和开销分析重点语句
  在【查询语句】模块的【查询语句】-【汇总视图】中,通过【执行次数】或【cpu时间】【读次数】【写次数】【影响行数】等对重点语句,重点优化。
DSC00014.png

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

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

环境问题的建议
  磁盘规划

  • 按照文件类型划分:数据文件、日志文件、tempDB文件、备份文件,分别放在一个物理磁盘(4块物理磁盘)
  • 按照数据库划分:不同的业务数据库(压力大的)分别放在一个物理磁盘,tempDB和备份文件各一个物理磁盘。(大型业务库数+2)
  操作系统与版本

  • 建议使用64位操作系统和SQL SERVER软件
  • 建议SQL SERVER补丁为最新补丁
备份问题的建议

  • 中小数据库备份方案:每天全备份、一小时一次日志备份。
  • 大型数据库备份方案:每周全备份、每天差异备份、一小时一次日志备份。
  • 备份文件与数据文件放置在不同物理磁盘
  • 备份文件拷贝异地(容灾)
可用性建议
  任何数据库为了保证业务的连续性和高可用性,以及数据的安全性,都必须采用高可用方案规避单点的风险。
  数据库主流的高可用技术:Always On可用性组,SQL故障转移群集,日志传送技术,镜像技术,及moebius负载均衡集群
安全问题建议
  账号安全与权限管理
  通常的情况下,我们都是通过sa进行设置密码的,而且在config文件里面明文的写上我们的帐号和密码,这样的设计存在很大的安全隐患,无论是受攻击还是误删除都会给系统带来严重的后果,建议对用户进行权限规划,账号划分等安全措施。
  维护任务CHECKDB保证数据安全
接触过上百家客户因为没有及时发现数据页损坏而导致的数据库不可用或数据丢失,建议每周运行及时发现数据库损坏。

结构设计的建议
  聚集索引与外键索引
  在表结构设计中建议表中都有聚集索引,外键添加索引,以提升性能。
  隐式转换
  在数据库物理设计和程序调用设计时字段类型不匹配(程序传入的类型转换优先级高于数据库中字段类型,如表中varchar 而程序传入nvarchar)会发生隐式转换,隐式转换增加数据库性能消耗,还会使索引无法使用而导致严重的性能问题。
  通过工具语句的【执行计划】中找到对应的隐式转换处,分析程序传入和数据库表设计综合解决。
DSC00017.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421758-1-1.html 上篇帖子: 详解Tomcat 配置文件server.xml 下篇帖子: 基于Windows服务的聊天程序(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表