前言
本文旨在帮助SQL Server数据库的使用人员了解常见的问题,及快速解决这些问题。这些问题是数据库的常规管理问题,对于很多对数据库没有深入了解的朋友提供一个大概的常见问题框架。
下面一些问题是在近千家数据库用户诊断时发现的常规问题,本文分为【常见问题诊断流程】-【常见问题】-【常见问题快速解决的建议】
常见问题诊断流程
概览模块—[汇总]了解系统
- 了解系统性能(语句执行时间、会话等待)
语句执行时间:横坐标为时间范围,纵坐标为在执行时间在范围内分布的语句数量。
(本例:收集时间内语句执行时间在3-5秒的语句数量有1103条,5-10秒,10-20秒慢语句数量很多,说明系统语句执行缓慢,系统存在性能问题)
会话-等待类型:横坐标为等待类型,纵坐标为等待数量。
(本例:系统中发生大量的等待,说明系统存在性能问题)
- 了解系统运行指标(CPU、内存、磁盘计数器)
通过3个主要计数器诊断系统是否存在瓶颈和产生瓶颈的资源。
- 了解系统请求压力(批处理请求/每秒、连接数)
了解系统中每秒请求的语句数量和系统打开的连接数量,掌握系统压力量级。
(注:可多次收集分析,掌握系统压力波动和处理能力)
- 了解系统问题严重度(检查项、SQL错误日志类型)
了解系统中的潜在风险与缺陷情况
(红色:严重程度高,建议问题全部解决)
[检查项]模块—[全部]发现系统问题
从系统、参数、会话、性能计数器、查询语句、作业、日志、执行计划、tempdb、业务数据库多方面呈现系统存在的问题与隐患。
(绿色:配置标准,蓝色:严重程度低,橙色:严重程度中等,红色:严重程度高,可能造成风险)
常见问题
性能问题
- 性能参数配置不合理:硬件不能发挥最大性能
- 系统等待严重:导致语句运行缓慢
- 执行超过3秒的语句数量多:客户体验差
- 存在缺失索引情况:导致语句运行缓慢,消耗过多系统资源
环境问题
- 磁盘空间规划问题:磁盘空间不足或不能满足未来业务
- 补丁不是最新:由于微软版本缺陷导致部分功能异常。
备份问题
- 备份缺失:故障发生会导致全部数据丢失
- 备份计划不合理:导致性能问题或长时间数据丢失风险
- 备份文件与数据文件同盘:磁盘发生故障,导致数据与备份一起丢失或损坏
可用性问题
- 数据库单点风险:发生故障会导致业务中断,故障导致数据丢失
安全问题
- 缺少数据一致性检查(checkdb):不能及时发现数据损坏而最终导致数据库故障和数据丢失
- 大量登录失败:检查系统是否受到攻击或是否程序修改导致大量登录失败
结构设计问题
- 超过10分钟会话并带有事务:长时间存在不提交事务,会导致程序阻塞,检查应用程序是否有连接泄露
- 存在隐式转换:导致不能使用索引(例:表字段定义varchar,程序传参类型为nvarchar)
- 表缺少聚集索引:导致性能问题
- 表上外键缺失索引:导致性能问题
快速解决问题与常规建议
快速解决性能问题
配置系统参数
查看不合理参数—点击操作按钮
在弹出页查看当前运行值,与建议值。
弹出优化配置脚本—如需修改复制文本—在服务器运行即可修改
添加缺失索引
在【数据库】模块的【缺失索引】中,创建数据库的缺失索引。
注:并非所有提示的索引都需要创建,根据【平均影响百分比】【平均用户开销百分比】【用户查找次数】情况综合评价,建立系统中缺失的重要索引。并综合【相等列】【不等列】【包含列】创建包含多种情况的最优索引。
根据执行频率和开销分析重点语句
在【查询语句】模块的【查询语句】-【汇总视图】中,通过【执行次数】或【cpu时间】【读次数】【写次数】【影响行数】等对重点语句,重点优化。
点击语句可以进入【分类视图】,语句的详细执行信息页
在【分类视图】页面,可以点击语句进入【关联项】查看每条语句执行的具体信息及执行计划,等待等信息。
环境问题的建议
磁盘规划
- 按照文件类型划分:数据文件、日志文件、tempDB文件、备份文件,分别放在一个物理磁盘(4块物理磁盘)
- 按照数据库划分:不同的业务数据库(压力大的)分别放在一个物理磁盘,tempDB和备份文件各一个物理磁盘。(大型业务库数+2)
操作系统与版本
- 建议使用64位操作系统和SQL SERVER软件
- 建议SQL SERVER补丁为最新补丁
备份问题的建议
- 中小数据库备份方案:每天全备份、一小时一次日志备份。
- 大型数据库备份方案:每周全备份、每天差异备份、一小时一次日志备份。
- 备份文件与数据文件放置在不同物理磁盘
- 备份文件拷贝异地(容灾)
可用性建议
任何数据库为了保证业务的连续性和高可用性,以及数据的安全性,都必须采用高可用方案规避单点的风险。
数据库主流的高可用技术:Always On可用性组,SQL故障转移群集,日志传送技术,镜像技术,及moebius负载均衡集群
安全问题建议
账号安全与权限管理
通常的情况下,我们都是通过sa进行设置密码的,而且在config文件里面明文的写上我们的帐号和密码,这样的设计存在很大的安全隐患,无论是受攻击还是误删除都会给系统带来严重的后果,建议对用户进行权限规划,账号划分等安全措施。
维护任务CHECKDB保证数据安全
接触过上百家客户因为没有及时发现数据页损坏而导致的数据库不可用或数据丢失,建议每周运行及时发现数据库损坏。
结构设计的建议
聚集索引与外键索引
在表结构设计中建议表中都有聚集索引,外键添加索引,以提升性能。
隐式转换
在数据库物理设计和程序调用设计时字段类型不匹配(程序传入的类型转换优先级高于数据库中字段类型,如表中varchar 而程序传入nvarchar)会发生隐式转换,隐式转换增加数据库性能消耗,还会使索引无法使用而导致严重的性能问题。
通过工具语句的【执行计划】中找到对应的隐式转换处,分析程序传入和数据库表设计综合解决。
相关推荐
在“lijie.doc”和“sql server常见问题及其解决方法.txt”中,可能包含具体的.NET代码片段,如ADO.NET的连接数据库示例,或者Entity Framework的CRUD操作。这些代码段可以帮助开发者理解和应用上述知识点。 总的...
通过深入学习和实践这些知识点,你将能够提升SQL Server的使用能力,无论是在日常的数据管理,还是在复杂的业务逻辑实现上,都能得心应手。请参考“SQL能力提升”这个压缩包文件中的资料,进一步加深理解和应用这些...
标题中的“Sql server一些常见性能问题的解决方法”是指针对SQL Server数据库系统,在处理查询和数据操作时可能会遇到的性能瓶颈及其对应的优化策略。描述提到的文档详细记载了解决这些问题的方法,旨在帮助用户提高...
SQL Server死锁是数据库系统中常见的问题,它发生在两个或多个事务之间,因为它们相互等待对方释放资源,导致事务无法继续执行。理解死锁的原因和解决策略对于优化数据库性能至关重要。 首先,我们要深入理解死锁的...
本文详细介绍了如何诊断和解决SQL Server 2005中的常见性能问题。通过合理利用系统监视器、SQL Server Profiler、SQL Trace和DMVs等工具,可以有效地发现并解决各种性能瓶颈。此外,通过优化查询、增加硬件资源、...
4. **性能分析**:内置的性能分析器可以帮助我们快速识别慢查询,提供优化建议,帮助我们写出更高效的SQL语句,从而提升数据库的运行效率。 5. **模板与片段**:预定义的SQL模板和自定义代码片段,让我们能够快速...
从Microsoft Access迁移到SQL Server,不仅可以获得更高的数据处理能力、更丰富的功能和更强大的安全机制,还可以利用SQL Server的高级特性,如事务日志管理、性能监控等,进一步提升系统的稳定性和效率。...
4. **性能优化建议**:当编写可能影响性能的查询时,SQLPrompt会给出优化建议,比如使用更高效的索引或者重写查询结构,有助于提升SQL Server的执行效率。 5. **代码片段管理**:内置了大量的代码片段,可以自定义...
综上所述,SQLSERVER日志分析工具是数据库管理员的得力助手,它不仅可以帮助我们理解数据库的运行状态,还能提供宝贵的洞察来提升数据库性能、安全性和稳定性。通过深入挖掘日志数据,我们可以及时发现并解决潜在...
SQLPrompt是一款强大的SQL代码编辑辅助工具,由Red Gate Software公司开发,旨在提升SQL Server数据库开发人员的生产力。在SQLPrompt v5.3.0.3版本中,它特别强调了对Microsoft SQL Server 2012的兼容和支持,这意味...
在SQL Server 2005及更高版本中,这样的工具尤其受到欢迎,因为它能够与这些版本的数据库管理系统无缝集成。 RedGate.SQL.Prompt是这款插件的具体名称,由知名数据库解决方案提供商Red Gate Software开发。Red Gate...
《Navicat for SQL Server:全能数据库管理利器》 Navicat for SQL Server是一款强大...无论你是数据库新手还是经验丰富的开发者,都能在Navicat的辅助下提升工作效率,更好地管理和维护你的SQL Server及MySQL数据库。
标题和描述均提到了"SQL SERVER中一些常见性能问题的总结",这表明文章旨在讨论并提供解决SQL Server数据库性能瓶颈的方法。以下是对文件中提到的关键知识点的详细阐述: 1. **查询优化与索引使用**:为了避免全表...
3. **兼容性与互操作性**:SP4提升了SQL Server与不同操作系统及硬件环境的兼容性,如支持Windows Server 2008 R2。此外,它还增强了与其他数据库系统的互操作性,比如Oracle和MySQL。 4. **工具和功能增强**:SQL ...
8. **学习资源**:除了实际的开发辅助,SQLPrompt还包含了许多学习资源和最佳实践,帮助开发者提升SQL技能,更好地理解和掌握SQL Server。 9. **易用性**:安装过程简单,即装即用,无需复杂的配置,使得用户能够...
《SQL Server数据库原理及应用》是一本深入探讨SQL Server数据库管理系统的专著,旨在帮助读者理解和掌握SQL Server的核心概念、设计原则以及实际操作技巧。本书覆盖了从基础理论到高级特性的广泛内容,适合数据库...
在SQL Server中,批量创建表是一项常见的数据库管理任务,尤其在构建数据库结构或者进行数据迁移时。本场景中,我们关注的是如何利用SQL Server 2008来实现这一目标。这里有两个关键文件:`SQL批量插入数据.sql` 和 ...
3. **说明.txt**:这是一个文本文件,可能包含了关于安装和使用SQL Server Compact 4.0 SP1 的详细步骤、注意事项以及常见问题解答。 在实际开发中,SQL Server Compact 4.0 SP1 通常用于桌面应用、移动应用或轻量...
为了确保SQL Server能够高效稳定地运行,并及时发现和解决问题,性能监视与优化显得尤为重要。 #### 二、评估性能的方法 1. **建立性能基线**:通过监控关键指标并在正常运行条件下记录这些指标的数据,从而为后续...
SQL Server 2005是微软推出的一款关系型数据库管理系统,具有强大的数据处理能力和高度的可扩展性。这个压缩包包含四本关于SQL Server 2005技术内幕的中文PDF书籍,涵盖了从基础到高级的各个层面,是学习和掌握SQL ...