一般 DBA 最佳做法.doc_第1页
一般 DBA 最佳做法.doc_第2页
一般 DBA 最佳做法.doc_第3页
一般 DBA 最佳做法.doc_第4页
一般 DBA 最佳做法.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一般 DBA 最佳做法成为特殊的 SQL Server DBA 的最佳做法1.加入 (或启动) 本地 SQL Server 用户组 ()2.加入 SQL 通 ()3.参加每年至少一个专业的会议。4.参加每年至少一个培训会议。5.读 SQL 服务器上的至少四个书每年。6.阅读免费的电子书,如何成为特殊的 DBA7.你可以说你的工作,特别是那些领域,没有人喜欢或想要的一切学习掌握。8.志愿者在您的工作会使你已知在整个组织的新的和具有挑战性的任务。9.安装 SQL Server 的笔记本电脑或台式计算机在家与实践学习新的 SQL Server,尤其是 SQL Server 2008 的方面。10.参与 SQL Server 论坛 (提问和回答)1.www。SQLServerC2.//communities/newsgroups/en-us/default.aspx11.取得认证作为 SQL Server DBA:1.a.微软认证技术专家() /learning/en/us/certification/cert-sql-server.aspx#tab22.b.通过微软认证的 IT 专业人员 (/learning/en/us/certification/cert-sql server.aspx # tab3)日常1.检查操作系统事件日志以及 SQL 服务器日志不寻常的事件。2.验证所有预定的作业已成功运行。3.确认备份已提出和成功保存到一个安全的位置。4.监视磁盘空间,以确保您的 SQL 服务器将不会运行的磁盘空间不足。为获得最佳的性能,所有磁盘应都具有 15%或更多的可用空间。5.全天,定期监视性能使用系统监视器和/SQL 事件探查器跟踪。6.定期监测,并找出阻塞的问题。7.保持您的服务器,其中包括您识别并更正任何性能问题的说明文档所做的任何更改的日志。8.创建 SQL Server 通知,通知您潜在的问题,并让他们通过电子邮件发送给您。根据需要,采取行动。9 为了验证您可以将其还原.定期将备份还原到测试服务器。你不需要还原所有备份的每一天,但经常做,确保您确信你有好的备份。10.花一些时间学习作为 DBA 进一步你专业的发展新的东西。安装1.总是充分文档安装,以便在紧急情况下可以轻松地再现您的 SQL Server 实例。2.如果可能的话,安装和配置您的 SQL Server 实例的所有一致后一个商定的组织标准。3.不要在不使用它们,例如,Microsoft 的全文索引、 的实例上安装 SQL Server 服务报告服务或分析服务。4.为在 Windows 下运行的 SQL Server 的最佳性能,请关闭任何不需要的操作系统服务。5.优化 SQL Server 的性能,要为献给你们的物理服务器仅运行 SQL Server,连同没有其他应用程序的单个实例。6.7.为最佳的 I/O 性能,找到数据库文件 (.mdf) 和独立隔离磁盘访问模式的心轴上的日志文件 (.ldf)。8.如果 tempdb 将大量使用,请把它放在它自己独立的心轴上。9.不要在域控制器上安装 SQL Server。10.将确保 SQL Server 安装 NTFS 分区上。11.不要使用 NTFS 文件数据 (EFS) 加密和压缩对 SQL Server 数据库和日志文件。升级1.在升级之前运行 SQL 服务器升级顾问。在执行升级之前进行必要的更改。2.在升级您的生产服务器之前,执行测试升级你的测试 SQL 服务器。和测试您的应用程序的新版本,也别忘了。3.在升级之前,请确保您已回退到升级是有问题的情况下制定一个计划。4.不要升级 SQL 服务器群集中的地方。相反,重建他们新的硬件上。5.如果从 SQL Server 的以前的版本升级时,您应在所有数据库中更新所有的统计数据。这是因为在升级过程中不会自动更新统计信息。安全1.确保每个 SQL Server,防止任何未经授权的用户,从物理上访问您的服务器的物理安全性。2.只有在您的 SQL Server 实例上安装所需的网络库和网络协议。3.尽量减少系统管理员允许访问 SQL Server 的数目。4.作为数据库管理员,请与系统管理员特权,只在需要时登录。单独为创建帐户时,系统管理员权限,则不需要访问 SQL Server 数据库管理员。5.指定 SA 帐户密码非常晦涩,并永远不会用它来登录到 SQL Server。相反,使用 Windows身份验证访问 SQL Server 作为系统管理员帐户。6.给用户最少的权限,他们需要执行他们的工作。7.使用存储过程或允许用户访问数据,而不是让他们直接访问表的视图。8.如果可能,使用 Windows 身份验证登录而不是 SQL Server 登录名。9.所有 SQL Server 登录帐户都使用强密码。10.不要授予公共数据库角色的权限。11.移除用户登录不再需要访问 SQL Server 的 Id。12.使用撤消连接从来宾禁用 guest 用户帐户,从每个用户数据库。13.不要使用跨数据库所有权链接,如果不是所需。14.永远不要授予 xp_cmdshell 到非系统管理员的权限。15.从生产的所有 SQL Server 实例中删除示例数据库。16.使用 Windows 全局组或 SQL 服务器角色管理需要类似的权限的用户组。17.避免任何 SQL 服务器上创建网络共享。18.配置登录审核,因此您可以看到谁已经成功了,和失败,登录。19.不要使用 SA 帐户或是系统管理员组的成员作为用于从应用程序访问 SQL Server 的帐户的登录 Id。20.确保您的 SQL 服务器在防火墙后面,和直接向互联网不会公开。21.在 SQL Server 2005,较早前,要防止本地服务器管理员能够访问 SQL Server 的内置/管理员组中删除。SQL Server 2008 中的内置/管理员组不存在的默认情况。22.每个单独的 SQL Server 服务,不同的 Windows 域帐户下运行。23.只给 SQL Server 服务帐户的最低权利和运行该服务所需的权限。在大多数情况下,本地管理员权限,则不需要,也不需要域管理员权限。24.当使用分布式的查询时,使用链接的服务器而不是远程服务器。远程服务器只存在的向后兼容性。25.不要浏览 web 从生产 SQL Server 实例。26.而不是安装的病毒和反间谍保护 SQL 服务器上,当用户活动较少的一天的会期从远程服务器执行扫描。27.添加操作系统和 SQL Server 服务包和热修复补丁程序发布并进行测试,作为他们后不久通常包括增强的安全功能。28.加密所有 SQL Server 备份与第三方备份工具,如红门 SQL 备份临。29.仅启用 C2 审核或通用标准法规,如有需要,如他们增加显著的性能开销。30.考虑针对您的 SQL 服务器确定安全漏洞运行 SQL Server 安全扫描程序。31.考虑启用 SSL 或 IPSEC 为 SQL Server 及其客户端之间的连接。32.如果使用 SQL Server 2005/2008年,启用密码策略检查。33.如果使用 SQL Server 2008 在高安全性的环境,考虑实现透明数据加密保护机密数据。34.如果使用 SQL Server 2005,不要使用 SQL Server 外围应用配置工具解锁您绝对不需要的功能。35.如果使用的 SQL Server 2005/2008年并创建终结点,则只需要访问他们的登录连接权限授予。明确拒绝不需要用户的终结点的连接权限。维持就业1.避免重叠的同一 SQL Server 实例上的作业。理想情况下,每个作业应单独运行在不同的时间。2.当创造就业机会,一定要包括错误捕获,登录作业活动,并设置警报,这样就可以立即知道当作业失败时。3.创建特殊的 SQL Server 登录帐户的唯一目的是要运行作业,并将其分配给所有的作业。4.如果你的工作包括 TRANSACT-SQL 代码,确保它优化有效地运行。5.定期 (每日、 每周或每月),重新生成或重新组织索引的数据库中删除逻辑碎片和浪费的空间。6.定期,作为所有您数据库上运行 DBCC CHECKDB,您计划的数据库维护任务的一部分验证数据库完整性。7.避免一天忙时运行大多数 DBCC 命令。这些命令通常是 I/O 密集型,并且可以降低,造成负面影响用户的 SQL 服务器的性能。8.如果您很少会重新启动 SQL Server 服务,您可能会发现当前 SQL Server 日志变得非常大,需要很长的时间来加载和查看。您可以关闭当前的错误日志,并创建一个新的运行sp_cycle_errorlog 或 DBCC 错误日志,以便将日志不会过大。此设置为每周的作业。9.编写脚本的所有作业,并将这些脚本存储在安全区域,因此他们可以使用,如果您需要重新生成服务器。SQL 服务器配置设置1.SQL Server 配置设置应维持在其默认设置。只应由经验丰富的 DBA 明白的利弊进行更改这些设置的任何更改。2.如果您使用的是 32 位版本的 SQL Server,而如果使用 4 GB 或更多的 RAM,请确保您已正确设置的所有 AWE 设置。3.在大多数情况下,最大服务器内存和最小的服务器内存的设置应由它们的默认值。这是因为默认值允许 SQL 服务器动态分配的内存最佳整体最优性能的服务器。如果您使用此法则的例外情况可以会发挥32 位 AWE 内存或 64 位的内存,在您可能需要更改最大服务器内存金额小于物理服务器中的 RAM 量。数据库设置1.离开自动创建统计信息和自动更新统计信息选项对所有用户数据库。只有在极少数情况下应这些处于关闭状态,如果它们已被关闭,然后您必须手动更新统计信息你自己。2.不要试图使用自动收缩数据库选项,因为它可以不必要地浪费 SQL Server 资源并有助于索引碎片。相反,如果你需要收缩数据库,手动操作。3.不要依赖于自动增长,自动管理您的数据库的大小。相反,主动监视和更改数据库的大小,视情况所需。只使用自动增长,以应付意外增长。复制1.复制需要应明确界定之前创建复制拓扑。成功的复制可能很难,需要很多预规划。2.在理想情况下,出版商、 分销商和订阅服务器应在单独的物理硬件上。3.创建、 文档、 和测试备份和还原策略。还原复制的数据库可以很复杂,需要多大的规划与实践。4.编写脚本作为灾难恢复计划的一部分复制拓扑,所以您可以轻松地重新创建您复制拓扑,如果需要。5.使用复制的默认设置,除非您可以确保非默认设置会真正改善复制性能问题或其他问题。请确保您测试所有的更改,以确保它们像您期望的那样有效。6.充分了解的添加或删除项目,更改发布属性,以及更改在已发布的数据库上的架构进行任何更改之前的含义。7.定期对发布服务器和订阅服务器之间的数据进行验证。8.定期监视复制过程和就业机会,确保他们工作。9.定期监视复制性能和性能优化调试所需。10.添加通知所有复制作业,所以您会收到通知的任何作业失败。高可用性的最佳做法通用高可用性1.物理保护您的 SQL 服务器免受未经授权的用户。2.物理上文档的所有您的 SQL Server 实例。将纳入有效的更改管理。3.始终使用 SAN 或直接连接的存储启用 RAID 阵列,用于存储您的数据。4.使用 SQL Server 群集、 数据库镜像或日志传送,以提供额外的容错能力。5.复制不是从高可用性的角度看保护您的数据的有效手段。6.确保您的整个 IT 基础设施是多余。它只是一样强大最薄弱的环节。7.始终使用服务器级硬件,并尽可能多地在同一硬件上实现标准化。8.使用硬件和软件监视工具,所以你可以很快意识到第一次出现的问题。9.彻底测试后,所有新的服务包和修复的 OS 和适用 SQL Server。10.跨列车工作人员,有很多人都能够对付几乎任何问题或问题。灾难恢复1.你必须创建灾难恢复计划,并包括您将需要重新生成您的服务器的每个细节。2.如您的 SQL 服务器更改随着时间的推移,别忘了来更新您的灾难恢复计划。3.写的灾难恢复计划,使任何懂得使用计算机的人将能够阅读并遵循它。不要假定 DBA 将重新生成服务器。4.全面测试您的灾难恢复计划每年至少一次。5.审查所有的最佳做法您知道并酌情实现它们。记住,作为数据库管理员,我们都组织的数据的监护人。这是一种巨大的责任。备份1.所有的 OLTP 生产数据库应设置为使用完整恢复模式。这种方式,您可以创建事务日志备份周期的基础上。2.只要有可能,执行每日完整备份的所有系统和用户数据库。3.对于所有的 OLTP 生产数据库,执行常规事务日志备份,每小时至少一次。4.执行完整备份低用户活动期间为了备份对用户的影响降至最低。5.定期执行测试以确保您的备份好并可以还原的备份恢复。6.加密您的备份,以防他们应成为损失。7.存储区进行异地备份,并在安全的位置。8.如果使用 SQL Server 加密,请务必备份主密钥适当的服务、 数据库主密钥和证书。9.如果您发现备份时间长比您的备份窗口,或如果备份文件的大小以得太多存储设备上的空间,请考虑第三方备份程序,如红门 SQL 备份临。10.文档,循序渐进,要还原到相同或不同的服务器上的系统和用户数据库的过程。你不想被查找此信息在紧急情况期间。聚类1.详细规划的每个 SQL Server 群集安装成功至关重要。完全计划执行实际安装之前安装。2.一个昂贵的群集是价值很小的如果支持基础结构还不是容错。例如,别忘了电源冗余、 网络冗余等。3.运行只有单个实例 SQL 服务器的每个节点。不管你有两个或八个节点群集中,作为故障转移节点离开至少一个节点。4.群集节点必须不是域控制器,和所有节点都必须属于同一个域中,并应有对两个或多个域控制器的访问。5.所有群集硬件必须在 Microsoft Windows 群集硬件兼容性列表,并且作为群集的一部分一起工作的认证。6.由于聚类,不设计来保护数据 (只有 SQL Server 实例),由使用共享的存储设备群集必须纳入故障容错技术。考虑日志传送数据库镜像或 SAN 复制来进一步保护您的生产数据库。7.在安装 Windows 群集和 SQL 服务器群集之前,应确保所有驱动程序和软件已到-更新,包括最新的服务包或热修复补丁程序。8.每个群集节点应具有相同的硬件、 驱动程序、 软件和配置设置。9.光纤通道共享阵列在首选 SCSI 时建立群集,并且如果您在您的群集中包含两个以上的节点,则使用光纤通道。10.在传统的群集中,仲裁驱动器必须在其自己的容错、 敬业、 磁盘 500 MB 或更大11.如果已安装群集,请彻底的每一个可能的故障情况下进行试验。12.不要在 SQL 服务器群集上运行防病毒或反间谍软件。13.在开始安装群集服务或 SQL Server 群集之前,确定您的虚拟名称和收集您的 IP 地址的时间提前。这简化了安装时输入此信息的时候,配置您的群集。14.监视活动生产群集,每日,寻找任何潜在的问题。定期测试,确保所有运作良好的生产服务器上的故障转移。15.一旦你有一个稳定的 SQL 服务器群集运行,会非常的戒心它无论如何做任何更改。SQL Server 2005/2008年镜像1.在主体数据库和镜像数据库应单独的物理硬件上和理想情况下,在不同的物理位置。2.见证服务器应单独的物理硬件上和上一个单独的网络 (最佳如果在第三的位置)。3.初始数据库镜像设置应该做少忙时,因为安装过程可以产生负面影响正在镜像的生产数据库的性能。4.使用高可用性模式,只要有可能,和高性能模式,只在需要时。5.为了便于管理,硬件,随着操作系统和 SQL 服务器的配置,应相同 (至少是非常类似) 两个服务器之间。6.虽然不要求镜像的服务器、 连接速度越快和更好的质量,更好的连接之间快速连接。7.您会希望优化减少镜像进程本身引起的开销,尽可能多的镜像数据库的性能。8.全面测试数据库镜像之前将它投入生产。9.监视数据库镜像每日以确保它工作正常,并实现性能目标。10.制定正式业务和恢复过程 (和文档) 支持镜像。定期测试故障转移过程,以确保它正常工作。日志传送1.如果目前没有雇用聚类,或数据库镜像您的 SQL 服务器由于成本的考虑雇用日志传送,以提高您的高可用性。它提供了低成本的合理的高可用性。2.如果你利用 SQL Server 日志传送能力,要保留日志传送它自己,不在参与日志中的源或目标服务器上的航运的 SQL 服务器上的监控服务。不只这很重要的容错能力,但因为监测服务的日志传送招可以影响性能的源和目标服务器的开销。3.监视日志传送每日以确保成功地工作。4.了解你要知道要修复日志传送如果丢失生产和备份数据库之间的同步。5.文件,并测试您的服务器恢复计划,因此可以将服务器出现故障的情况下。性能调优的最佳做法性能监视1.定期监视系统性能,使用系统监视器或类似的工具。2.定期监视系统性能,使用性能监视器。使用性能监视器,为这两个实时分析和历史/基线调查分析。3.如果运行 SQL Server 2005,SP2 或以后,安装免费的 SQL 服务器的性能控制板。它可以用于实时监控和性能进行故障排除。如果您使用的 SQL Server 2008,请考虑使用性能数据收集器。4.定期监察使用事件探查器或 SQL 跟踪 SQL 服务器活动。请确保采取跟踪在一天的有代表性的典型活动的每个服务器上正在发生的时期。当运行 SQL 跟踪或事件探查器,不会收集更多数据比您需要收集,以便减少执行的开销跟踪。5.执行从不是您正在监视的 SQL Server 的计算机的性能监视。在单独的桌面或服务器上运行监视工具。硬件性能调优1.尽管重型硬件可以帮助 SQL Server 的性能,应用程序和数据库的设计可以比硬件总体性能发挥更大作用。记住这一点,作为赔了后坏的服务器硬件上并不总是能修复 SQL Server 的性能问题。之前获得更快的硬件,请确保您已经彻底调谐你的应用程序、 TRANSACT-SQL,和数据库索引。2.在许多情况下,向服务器添加 RAM 是提高 SQL 服务器的硬件性能的最便宜和最快的方式。但到 SQL Server 中添加更多的 RAM 之前, 首先确保它将由 SQL Server 使用。添加并不意味着更多的 RAM,SQL Server 将始终使用它。如果当前缓冲区高速缓存命中率是一贯您和 99%以上有好超过 100 MB 的可用的 RAM,您的服务器可能不会受益添加额外的 RAM。3.如果您的 SQL 服务器的总 CPU 利用率始终高于 80%或更多,你需要更多的 Cpu,更快的 Cpu,或者您需要找到一种方法,以减少当前服务器上的负载。4.如果逻辑磁盘: %空闲时间) 计数器是少于 50%;与逻辑磁盘: 平均磁盘每秒/读取计数器或逻辑磁盘: 平均磁盘每秒/写入计数器是超过 15 毫秒,那么您很可能遇到的磁盘 I/O 性能问题,需要开始寻找解决办法。5.不要必要实用程序的例外以外 SQL Server 的服务器上运行的任何应用程序。6.NTFS 格式的分区不应超过 85%的能力。例如,如果您有一个 100 GB 的驱动器,它绝不应超过 85 GB 更充分。为什么呢?NTFS 需要工作,空间,当你超过 85%的容量,NTFS 变得效率较低和 I/O 可以忍受它。此外,磁盘文件碎片实用程序需要至少 15%的可用磁盘空间才能正常工作。7.如果您的 SQL Server 数据库的经验大多是读取,然后 RAID 5 阵列提供了很好的保护和足够的性能。如果您的 SQL Server 数据库是主要的写操作,然后使用 RAID 10 阵列的最佳保护和性能。8.如果您的 SQL 服务器 tempdb 数据库使用频繁,考虑 (例如,定位在其自己的磁盘轴的数组RAID 1 或 RAID 10)。这将允许更均匀地进行分发的 SQL Server 实例,减少磁盘 I/O 争用问题,并加快 SQL 服务器的总体性能的磁盘 I/O。9.更多的磁盘轴,您有一个数组中,将会更快的磁盘 I/O。请确保磁盘控制器可以处理通过添加更多磁盘轴提供额外的 I/O。10.确保所有硬件正在都运行最新的、 经批准的驱动程序。索引1.定期对当前事件探查器跟踪识别潜在缺失索引运行数据库引擎优化顾问。2.删除从不使用的索引。3.不要意外地创建冗余索引。4.作为一个经验法则,每个表应该有至少一个聚集的索引。通常,但并不总是聚集的索引应该是单调增加的列上 如标识列或增值的一些其他列 并且是唯一的。在许多情况下,主键是理想列的聚集索引。5.由于您只能创建一个聚集的索引,每个表,则需要额外的时间来仔细考虑将如何使用。考虑对表,将使用和查询作出猜测,它查询 (最常用之一运行对表,也许) 的类型是最关键的如果此查询将受益最大有聚集的索引。6.创建一个复合的索引时,当所有其他因素都相等时,使最选择性的列的索引的第一列。7.一般来说,尽可能保持作为窄索引的宽度。这将减少索引的大小和减少的磁盘 I/O 读取需要读取索引,大大提高性能。8.避免将聚集的索引添加到一个 GUID 列 (唯一标识符的数据类型)。Guid 占用 16 个字节的存储,标识列,该列可以使索引更大,这增加了 I/O 的读取,可以伤害比更多性能。9.索引应考虑经常访问该连接的所有列,凡,命令由集团、 顶部和 DISTINCT 子句。10.不要自动添加索引的表上因为这似乎是要做正确的事。如果你知道他们会利用对表运行查询,只添加索引。11.当创建索引,请尝试,如果可能使它们唯一索引。SQL Server 可以经常搜索通过快于非唯一索引,因为唯一索引,每一行都是唯一的并且一旦找到所需的记录,SQL Server 没有看任何进一步的唯一索引。12.如果您执行定期在查询中的两个或多个表之间的联接,将优化性能,如果每个联接的列都有适当的索引。13.不会自动接受默认值的索引的填充因子为 100。它可能或不可能最好地满足您的需要。高填充因子是好的很少更改的数据,但高度已修改的数据需要较低的填充因子,减少页拆分。14.不要在索引 OLTP 表,作为您添加插入执行所需的时间的增加、 更新和删除的每个索引。有理想的索引数 (用于选择) 之间有细线和尽量减少索引出现在数据修改过程中的系统开销的理想数目。15.如果您知道您的应用程序将执行相同的查询反复在同一表中,则考虑在表上创建覆盖非聚集索引。覆盖索引,这是一种复合索引的形式,包括所有的选择中,联接中, 引用的列和查询的 WHERE 子句。对此,索引包含您正在寻找的数据,SQL Server 没有了在表中,实际的数据来看,减少 I/O,并提高性能。SQL 服务器 2008年压缩的最佳做法1.SQL Server 2008,Edtition 企业,提供了可用于减少的数据占用的空间量,在磁盘和缓冲池的行和列压缩可能会提高性能。2.压缩需要使用额外的 CPU 周期,以实现。对此,如果您的服务器当前具有CPU 瓶颈,然后压缩可能应该避免。3.压缩效果最好的经验大多是读取的表。体验一大批 DML 的表活动应可能不压缩。4.不要使用压缩,须经沉重的插入、 大容量插入命令 (例如,表上。SQL Server 2008 数据收集器的最佳做法1.SQL 服务器 2008年数据收集器可以用于收集、 存储和分析许多不同类型的 SQL Server 表演活动。2.使用 SQL 服务器 2008年的数据收集器产生一些性能开销,并为此,您可能要通过它收集的数据量最小。3.虽然管理数据仓库可以存在于每个 SQL Server 实例中,建议使用专用的 SQL 服务器存储管理数据仓库,用来存储所收集的数据。资源调控器的最佳做法1.SQL 服务器 2008年资源调控器可以用于限制多少 CPU 和内存资源分配给特定用户的连接,允许 DBA 资源于优先考虑某些连接对其它连接。2.如果您使用资源管理器,确保 DAC 打开的因为它是排查和修复坏的资源调控器配置的唯一方法。3.分类器的用户定义函数应该是很好的测试和优化。如果不正确地写,可以分类器功能导致连接超时时间,放慢脚步,甚至创建一个 SQL Server 的锁定的无限循环。4.监测资源调控实施后确认适当的使用。如果你不小心,可以引入不存在使用资源调控器之前的查询的性能问题。例如,如果内存是限制太多了,它可能会导致一个次优的执行计划创建并执行,从而影响性能。5.试验测试系统在生产中实施之前您的资源调控器实现应用程序设计和编码最佳实践数据库设计1.糟糕的逻辑数据库设计导致坏的物理数据库设计,并且一般会导致数据库性能降低。所以,如果是你的责任,在设计数据库从零开始,会确保您采取必要的时间和精力给出正确的逻辑数据库设计。一旦逻辑的设计是正确的您还需要花时间去获取正确的物理设计。2.当设计一个新的数据库,实现一致的命名标准,所有你的对象。3.利用 SQL Server 内置参照完整性。您不需要编写您自己。4.始终指定的最窄的列,您可以。此外,总是选择你要保存的数据,您需要存储在列中的最小数据类型。越窄的列,较少数量的 SQL Server 数据必须存储,并且更快的 SQL Server 能够读取和写入数据。5.在设计一个新的数据库时,完全文档每个表、 列、 默认值、 检查约束和关系,以便其他人可以轻松地找到他们意味着什么,或他们是如何使用。查询和存储的过程1.保持在源代码控制系统中的所有代码。2.保持尽可能短的事务。这降低了锁定,并提高应用同时,这有助于提高性能。3.避免使用查询提示,除非你知道你正在做什么,并且您已经验证的提示实际上提高了性能。4.将封装在程序中包括的开始事务和提交事务语句的存储过程内的所有事务。5.使用您的用户连接,而不是总是使用限制最少可能的事务隔离级别默认读取所犯。当然,不做任何事情,会损害您的数据的完整性。6.每当客户端应用程序需要将 TRANSACT-SQL 发送到 SQL Server,则将其发送的存储过程而不是脚本或嵌入式的 TRANSACT-SQL 的形式。存储的过程提供了许多好处,包括:a.减少网络通信量和滞后时间,提高应用程序性能。b.存储过程的执行计划可以重用,呆在 SQL Server 内存中的缓存,减少服务器的开销。这也是大部分是真实的 TRANSACT-SQL 代码发送到 SQL Server 存储过程以外。c.客户端执行请求将更加有效。例如,如果应用程序需要一个未使用的存储的过程的图像数据列中插入一个大的二进制值,它必须转换为二进制值一个字符的字符串 (其中两倍其大小),并将其发送到 SQL Server。当 SQL Server 收到它时,它然后必须将转换的字符值为二进制格式。这是很多浪费开销。A消除了这一问题的存储的过程的参数值留在从 SQL server 的应用程序的二进制格式,如减少开销,并提高性能。d.存储过程帮助促进代码重用。虽然这并没有直接提高应用程序的性能,它能增强开发人员的生产效率,通过减少所需,连同减少调试时间的代码量。e.存储过程可以将逻辑封装。您可以更改存储的过程的代码,而不会影响客户端(假定您保持相同的参数和不删除任何结果集列)。这可以节省开发人员的时间。f.存储过程提供更好的安全性,为您的数据。7.集 NOCOUNT 上的每个开头存储您编写的过程。8.前推出了一个存储的过程,投入生产,查看它的任何未使用的代码、 参数或变量,您可能忘记了时创建,删除,并将它们删除。TRANSACT-SQL1.不要害怕自由利用 TRANSACT-SQL 代码行中和块注释、 他们不会影响应用程序的性能和他们将提高您的工作效率,当您或其他人回来的代码,并尝试对其进行修改。2.如果可能,请避免使用 SQL 服务器游标。他们通常使用了大量的 SQL Server 资源并降低的性能和可扩展性的应用程序。如果您需要执行的操作按行,试着找另一种方法来执行任务。3.当使用 UNION 语句时,请记住默认情况下,它等效于选择不同对执行最终结果集。换句话说,联盟采用两个像记录集相结合的结果它们,然后再执行选择不同,以便消除任何重复的行。这个过程发生,即使最后记录集内有没有重复的记录。如果您知道有重复的记录,和这问题呈现您的应用程序,然后通过使用 UNION 语句来消除重复的行。4.仔细评估是否您选择的查询需要不同的子句或不。一些开发商时自动添加此子句每一个他们的 SELECT 语句,甚至不需要。5.在您的查询不返回列不需要的数据。例如,您不应使用选择 以返回表中的所有列,如果你不需要每一列中的所有数据。此外,使用选择 可能防止使用覆盖索引,进一步潜在伤害查询性能。6.始终包含在您缩小的行数的 SELECT 语句的 WHERE 子句返回。只返回那些你所需要的行。7.如果您的应用程序允许用户运行的查询,但您无法在您的应用程序很容易防止用户返回数百甚至数千不必要行的数据,请考虑使用中的最高经营SELECT 语句。这种方式,您可以限制返回的行数,即使用户没有输入任何条件帮助减少的数字或行返回客户端。8.尽量避免在非可优化的 WHERE 子句。如果 WHERE 子句可优化搜索谓语,这意味着它可以利用索引 (假设有的话) 的查询的速度完成。如果一个 WHERE 子句,则非-可优化搜索谓语,这意味着,在 where 子句 (或至少部分) 不能利用的索引,而执行表/索引扫描,这可能会降低查询的性能。非可优化搜索参数在 WHERE 子句中,如IS NULL,中的! =、! 、! 、不会,不存在、不在,不喜欢,和像 500%一般无法 (但不是总是),查询优化器使用索引来执行搜索。此外,包括列上的函数的表达式,表达式具有相同的两岸的运算符或列 (不是常量),对比较列不是可优化搜索谓语。9.如果您使用的 SQL Server 2008 调试器,只对测试数据库,永远不会生产数据库运行。SQL CLR Server1.使用 CLR 补充 TRANSACT-SQL 代码,不需要更换它。2.标准的数据访问,如选择、 插入、 更新和删除最好是通过 TRANSACT-SQL 代码,不,CLR。3.通过计算或程序上的密集的业务逻辑可以经常将封装作为函数中运行CLR。4.使用 CLR 错误处理,因为它是比 TRANSACT-SQL 的提供更可靠。5.使用 CLR 用于字符串操作,因为它是通常比使用 TRANSACT-SQL 更快。6.使用 CLR 时您需要利用大型基类库。7.使用 CLR 时您要访问的外部资源,如文件系统、 事件日志、 web 服务或注册表。8.设置 CLR 代码访问安全性来尽可能的限制性最强的权限。XML1.XML,最好使用灵活或丰富的结构与数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论