Microsoft+SQL+Server 企业平台管理实践

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

让知识与经验成为你宝贵的财富SQLServer自2000版后开始流行,2005版大幅增加功能并改进了核心引擎,2008版和即将上市的2008R2版,除了继续强化既有功能外,还针对大型企业内的SQLServer数据库,提供更佳的管控机制。虽然SQLServer以惊人的速度进步,但深入讨论其架构原理的书少之又少。市面上有很多书教你如何一步步配置、管理与监控SQLServer,这些书可以引领你进入数据库,但却很少涉及架构原理。但是,数据库管理员经常面临着各种棘手的情况。随着时间过去,系统累积了大量的数据,同时访问数据库的人数增加,硬件逐渐老旧,此外还有天灾人祸。而数据库是企业营运的核心,其性能必须稳定,更不能停机。所以多数大型企业跟数据库厂商签有合约,确保可以获得紧急的技术支持。若你的企业选用了SQLServer,但没有签这种合约,那么这本书是求助微软工程师外,最好的选择。翻阅本书的文稿,我感觉它写得很棒,很深入,涵盖内容广,讨论的多是横跨SQLServer各个版本的基本问题,颇能体现微软工程师的经验与气势。书中详细叙述了许多经典问题,例如DBCCShrinkfile指令无法释放数据文件空间的问题、Windows与SQLServer的内存管理问题、阻塞与死锁问题等。作者以精辟的论述,让人知其然,更知其所以然,并提供了详细的解法。由于切入点较深,读者需要对SQLServer有基本的认识,才能领略其风采。SQLServer上市至今已超过20年,累积了无数的用户,需求不断变化,实非一本书或一门课可以道尽,技术上分为规划、实施、维护、升级等不同的阶段,业务上有管理、开发、挖掘商业智能等不同的要求。数据库管理员要不断提升技术涵养,迎接不同阶段、不同业务的诸多挑战。本书可以助你更上一层楼。希望它激发你学习和实践的兴趣,让知识与经验成为你宝贵的财富。胡百敬微软特约顾问、MVP2010年1月越接触本质,越不会迷茫迄今为止,我写了16年的程序,接触了12年的数据库,最近10年主要研究微软SQLServer的各个版本。2005、2006年,我还没有加入微软,作为一个ISV,我经常向海蔚提问:我的某个表,数据量超过50万行了,SQLServer能应付吗?我用ASP.NET搭建了一个ERP系统,有200人要用,SQLServer能应付吗?某某数据库能分区,SQL能做到吗?当时问的得意,问得比较拽。也许做技术的人就是这样(至少我当时是这个德性):只要觉得自己比别人做得好,有了谈资,就会有一种想“秒杀掉”别人的、可笑的自豪感。只要我发现某某数据库比SQLServer强大,就借此刁难微软资深的SQLServer工程师。他们经常被我纠结得无语。慢慢地与海蔚接触时间长了,我的看法发生了改变,(这不是短暂吸收技术后的反思,而是一种思考方向的转折。)到微软工作后,我处理过SQLServer2005标准版上每个月增加1000万条记录的SQL单表,处理过SQLServer2000上6亿5千万条的单表,我同事处理过SQLServer2005上14TB的数据库。回想起自己当初那些傲慢的问题,真有些不好意思。在微软的工作经历,让我认识到:•性能好坏,需要精确的数字。你看过LogicalI/OReads&Writes吗?你看过执行计划吗?你分析过为什么SQL要执行这个Scan,而不是Seek吗?你分析过DiskQueue的影响吗?你看过Poolpagedbytes的大小吗?一句话,微软的工程师要看证据,一切要用数字说话。•性能调优的门槛不高,但是需要仔细研究。分析性能问题,第一步需要作什么,第二步作什么?我好久后才有感觉。万物万事万法,都是有规则的。窗户纸很薄,捅破了就是新世界。•文档太多,无所适从。如果你Bing(必应)“数据库索引优化”,会搜出不下100条教条,但是谁会全部记住?如果不理解Heaptable和ClusteredTable,不了解B-Tree和Seek/Scan,不了解Statistics和CheckPoint,那些所谓的教条,有何意义?在海蔚的这本书里面,没有教条。有的只是让你了解本质、触类旁通、一法破万法的、来自微软全球技术中心(GTEC)全体SQLServer工程师的经验汇集,来自于海蔚的积累和升华。对于迷茫的读者而言,这是让你捅破窗户纸,看遍窗含西岭千秋雪的经典之作。如果书中有两三句话让你顿悟,希望你把这份读书人的感动,及时地反馈给海蔚同学。从文字的角度讲,字字珠玑。从学习的角度讲,我只想说:不存在教条!你越接触本质,越不会迷茫!这也许是众多读者从本书中获得经验的唯一途径。鞠强微软企业现场服务部资深工程师2010年1月前言本书主要面向MicrosoftSQLServer各个版本的数据库系统管理和开发人员,介绍SQLServer关系型数据库引擎在日常使用和开发过程中经常会遇到的问题、其表现形式、背后运行机理、基本理论知识、搜集和分析问题日志的方法,以及解决实际问题的可选手段。本书的最大特点是面向实战。讨论的主题都是在企业开发数据库应用和使用SQLServer过程中,常见的经典的问题。而里面包含的案例分析,都来源于真实案例。阅读本书可以帮助数据库管理与开发人员更深入地理解SQLServer的原理和运行规律,以提高解决问题的能力。本书的缘起从1999年作者开始支持MicrosoftSQLServer以来,不觉10年过去了。作为一个数据库支持工程师,每天都能接触到各式各样的SQLServer问题。而在微软内部,又有大量的技术资料,有机会进行一些比较系统的学习,所以成长环境还是很优越的。这么些年和SQLServer打交道,对这个产品渐渐产生了感情。可以说,我个人是随着产品成长起来的。SQLServer作为微软比较成熟的产品,在过去的10年里有了长足的进步。在日常工作中,除了支持不同的客户以外,也要对自己所学进行总结,以便传承知识。所以开始搜集一些有意义的问题。一半是个人兴趣,一半也是技术总结的需要。对新工程师,通过案例分析学习效果很好。所以我积累了一些比较有代表性问题的小结和案例。在SQLServer的各类问题里,作者个人最感兴趣的是性能调优的问题。而这部分需求随着SQLServer在企业级平台上日益广泛的使用,渐渐突出起来。微软的SQLServer技术支持部门,总结了一套系统的分析和解决问题的方法。现在很多白皮书、Blog都有所介绍,但是完整地介绍这套方法的资料非常有限,而有分析案例的资源就更少。在支持SQLServer用户的时候,一个很深刻的体会,是大家对SQLServer的能力信心普遍不足。很多用户还把SQLServer当中小型数据库管理系统理解和使用。当系统出现各种问题的时候,将其归结为SQLServer能力有限。很多人在指责SQLServer的时候,本身对SQLServer的理解并不是那么深入。作为一个对SQLServer有感情的从业人员,作者常常感到惋惜和遗憾。SQLServer的确不是万能的,在有些地方,它的确有自己的局限和不足。但是,这并不妨碍SQLServer支持大数据量、大并发用户数、高负荷的企业级应用。作者曾经为客户做过压力测试,在一台并不十分强劲的服务器上运行SQLServer,前端同时支持十几台Web服务器,而每台Web服务器又同时模仿大量用户做压力测试。最大的压力下,这些Web服务器的CPU使用率已经达到100%,几乎没有响应了,但是SQLServer还运行得好好的,响应速度还不错。随着64位机器的普及和SQLServer2005vi&2008的更广泛使用,SQLServer的能力又提高了一个台阶。作者个人见过很多同时支持超过2000个SQLServer并发用户,每秒钟处理超过3000个Batch(批处理)请求的SQLServer。SQLServer本身的能力,对大部分的应用场景来讲应该算是合格的。可是在现实使用里,很多SQLServer应用远远没有达到上面的能力。每秒钟处理几百个,甚至只有几十个批处理请求,就已经无法支撑。这和数据库设计、应用设计、以及日常管理都有关系。虽然SQLServer可以被当作傻瓜机使用,但是如果要完全发挥SQLServer的能力,还是需要了解其工作原理、设计和配置方法,以及掌握分析和解决不同类型问题的能力。有些地方对开发者和数据库管理员的技术要求,并不比其他企业级数据库低。作为一个支持工程师,作者学会了很多方法和技巧。可是在和用户的沟通过程中,发现掌握这些方法的人并不是很多。有些人对某些方法,还有一些误解。在博文视点的几位老师的鼓励和支持下,作者把自己掌握的,有关关系型数据库引擎的知识作了一些梳理,总结出在SQLServer设计和管理过程中最常遇到的问题,进行了比较完整的阐述。这些知识来自于对很多技术文档、白皮书、联机丛书和Blog的学习,也来自于处理真实问题过程中产生的感悟。在介绍一些基本概念的时候,联机文档里的定义和说明是最权威的,所以我有意识地引用了一些,而不是自己写。有时候觉得联机丛书里的中文表达不太贴切,会加一些自己的理解。作者的一个小小希望,是通过这本书,能够对业界更顺利地使用SQLServer,起一点的推动作用。本书的结构本书主要分为两大部分。第一部分包括第1章到第5章,主要是谈SQLServer服务和数据库在使用过程中,比较容易遇到的问题,包括空间管理,数据库备份和恢复手段,SQLServer服务或数据库不可访问,数据库损坏修复与预防,连接和认证等问题。第二部分包括第6章到第13章,主要是谈论SQLServer在运行过程中对各种资源的使用,以及由此可能会遇到的服务器不稳定、或者是性能问题。最后第14章是个工具性章节,总结了处理SQLServer问题时可能需要检查的日志种类,以及搜集它们的方法。在读者阅读前面各章的时候,都可以做参考。下面是各个章节内容的粗略介绍,以及它们之间内涵的逻辑关系。第一部分讲的是SQLServer服务和数据库在使用过程中,比较容易遇到的问题。第1章:数据库空间管理在数据库里存储数据,是SQLServer存在的理由。管理员的一个比较头痛的问题,是数据库的数据文件或者日志文件,出人意料地增长。本书先从单个数据库谈起,从数据的存储方式,数据库空间检查方法入手,介绍文件空间是如何被SQLServer使用掉的。然后,会对数据文件和日志文件使用方式作深入分析,从而解决数据文件无法收缩或清空,以及日志文件无限增长的问题。最后,会讨论数据库自动增长与自动收缩设置的利弊。利用这一章的知识,管理员将可以比较自如地分析数据库空间使用,并采取适当的方法合理使用数据库文件空间。第2章:数据库备份与恢复把数据存储在数据库里以后,数据库管理员就有责任保护它们的安全。数据库备份是管理员的重要vii职责。而在灾难发生后能够根据现有的备份,用最短的时间恢复数据库,也是管理员面临的挑战。本章将介绍SQLServer提供的各种备份和恢复手段,以及它们最适合使用的时机。本章还会介绍用户数据库和系统数据库备份与恢复所要注意的不同要点。最后,有一个练习,详细展示了将数据库系统完全通过备份和恢复的方法,迁移到另一台服务器的具体步骤。第3章:SQLServer服务或数据库不可访问只有在SQLServer服务和每个数据库正常启动以后,用户才能访问他需要使用的数据库里的数据。本章将按照SQLServer服务启动的顺序,分析它在启动过程中的每一步可能会遇到的问题,以及这些问题的解决方法。通过这一章的介绍,读者将可以对大部分的SQLServer服务不可用问题有所认识,从而能够自己去解决问题。本章还会介绍系统数据库和用户数据库不能正常打开的原因,以及解决不同类型问题的方法。通过这些方法的介绍,管理员可以修复部分不能正常打开,但是还没有彻底损坏的数据库。第4章:数据库损坏修复数据库物理损坏对SQLServer的正常使用是一个严重的威胁。轻则单条数据记录访问失败,原先存储进去的数据无法取出,重则可能导致整个数据库无法启动,更严重时甚至可能影响到SQLServer的正常运行,导致整个SQLServer系统的崩溃。本章会

1 / 57
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功