前言

  我1998年第一次接触SQL Server 6.5 for Windows NT 4.0,当时的感觉就认为SQL Server只是一个功能强大的Excel文件。现在回想起来,当年抱着这样一种态度,我开发的那些应用程序应该是非常幼稚的,其性能可想而知。记得那时候随便查询一笔记录就要花费十几秒,已是司空见惯。当时作为程序员(“码农”)兼DBA,我似乎只会抱怨这个数据库系统的“低级”、“质量差”,或者向boss提议升级服务器的硬件。由于一切都靠自学,我就没有反省过自身的数据库技术水平。

  2003年“非典”期间,我冒着生命危险去参加MCDBA2000的培训课程。XF Kong老师通过系统讲解,使我对SQL Server 2000的了解和掌握不再停留在肤浅的表面。随着逐步深入走向SQL Server底层技术,我对数据库的应用访问和日常运维终于摆脱了低级阶段。之后,各种性能问题的表症和对策也就逐清晰起来。

  最近几年看过Microsoft两位数据库“大拿”Howard Yin、Max Shen的文章,借助两位专家的研究成果,并参考一些技术书籍,借51CTO的这块风水宝地,我陆续会将SQL Server 性能优化的一系列心得与体会整理并发布出来。

一、概述

  《一、数据库设计与性能优化--概述》,即本文。http://jimshu.blog.51cto.com/3171847/1250066

  根据我的理解,OLTP的性能优化主要在于2个方面:

(1)系统架构和设计优化

  要在SQL Server方案中实现最优的性能,最关键的是要有一个很好的数据库设计方案。在实际工作中,许多SQL Server方案往往是由于数据库设计得不好导致性能很差。

  系统架构的设计对系统的性能有着直接的影响,如果设计不当,甚至将面临推倒重来的严重局面。一些大型软件企业或正规的软件开发团队一般都有专职的数据库架构专家参与设计系统架构,而且这个过程可能非常漫长。而“码农”们兼职在设计时往往忽略一些重要问题,或者因为开发周期太短而根本时间没有考虑这些因素,例如,没有考虑到未来3~5年的数据增长量,没有考虑到访问压力,等等。

  在设计数据库、表、索引、视图等对象时,不仅要熟悉这些对象的逻辑工作原理,更要了解这些对象可能存在的瓶颈,争取在设计阶段就实现优化。

  在数据库系统的维护阶段,需要通过一些工具对性能进行监视。

(2)查询优化

   SQL Server数据库查询速度慢的原因有很多,除了系统架构设计方面的问题,查询效率也值得重视。

  我首先将重点放在系统架构和设计优化方面,以下分别从软件生命周期的角度、从理解瓶颈的角度进行详细论述。

二、从软件生命周期的角度

  根据软件工程瀑布模型(Waterfall Model),软件的生命周期由多个部分组成。数据库的优化应当从设计阶段就开始,并贯穿整个软件生命周期。

1、设计

  建议由专职的数据库架构专家参与设计。

  需求分析时要具有前瞻性,至少要规划未来3~5年数据增长量。

  《二、服务器优化(1)实现负载平衡》 http://jimshu.blog.51cto.com/3171847/1250070

  《二、服务器优化(2)性能评测与负载预估》 http://jimshu.blog.51cto.com/3171847/1251142

  《二、服务器优化(3)服务器端优化措施》 http://jimshu.blog.51cto.com/3171847/1251545

  《二、服务器优化(4)资源调控器管理工作负荷》 http://jimshu.blog.51cto.com/blog/3171847/1251546

  《二、服务器优化(5)数据库版本的选型》 http://jimshu.blog.51cto.com/3171847/1251547

  《二、服务器优化(6)WSRM管理多个实例》 http://jimshu.blog.51cto.com/3171847/1252417

2、开发

  查询优化,索引优化

  《三、索引优化(1)堆上的非聚集索引》http://jimshu.blog.51cto.com/3171847/1252419

  《三、索引优化(2)聚集索引》 http://jimshu.blog.51cto.com/3171847/1252420

  《三、索引优化(3)聚集索引上的非聚集索引》 http://jimshu.blog.51cto.com/3171847/1252421

  《三、索引优化(4)索引碎片》 http://jimshu.blog.51cto.com/3171847/1254954

  《三、索引优化(5)索引设计指南》 http://jimshu.blog.51cto.com/3171847/1254956

  《三、索引优化(6)筛选索引》 http://jimshu.blog.51cto.com/3171847/1254965

  《查询优化(1)。。。》 、《查询优化(n)。。。》 将列入下一个专题。

3、测试、部署

  数据库物理优化,例如,数据库存储位置的设计。系统资源的优化。

  《四、物理优化(1)范式化》 http://jimshu.blog.51cto.com/3171847/1257298

  《四、物理优化(2)索引视图》http://jimshu.blog.51cto.com/3171847/1257306

  《四、物理优化(3)计算列及其索引》 http://jimshu.blog.51cto.com/3171847/1257310

  《四、物理优化(4)分区视图》 http://jimshu.blog.51cto.com/3171847/1258453

  《四、物理优化(5)表和索引分区》 http://jimshu.blog.51cto.com/3171847/1258459

  《四、物理优化(6)数据库引擎优化顾问》 http://jimshu.blog.51cto.com/3171847/1258469

  《四、物理优化(7)查看索引使用情况》 http://jimshu.blog.51cto.com/blog/3171847/1258817

4、日常运维

  数据库性能监测,资源优化。

  《五、性能监视(1)事件探查器》 http://jimshu.blog.51cto.com/3171847/1259089

  《五、性能监视(2)Windows性能日志》 http://jimshu.blog.51cto.com/3171847/1259091

  《五、性能监视(3)SQL 跟踪》 http://jimshu.blog.51cto.com/3171847/1259093

  《五、性能监视(4)扩展事件》 http://jimshu.blog.51cto.com/blog/3171847/1259321

  《五、性能监视(5)管理数据仓库》 http://jimshu.blog.51cto.com/3171847/1259322

  《五、性能监视(6)数据库审核》 http://jimshu.blog.51cto.com/3171847/1259323

  《五、性能监视(7)SQLDIAG》 http://jimshu.blog.51cto.com/3171847/1262406

三、从理解瓶颈的角度

  从数据库原理和实践经验来看,影响SQL Server有主要瓶颈有以下3项:

1、CPU

  《六、CPU优化(1)CPU技术分类》 http://jimshu.blog.51cto.com/3171847/1265166

  《六、CPU优化(2)超线程》 http://jimshu.blog.51cto.com/3171847/1265237

  《六、CPU优化(3)处理器组》 http://jimshu.blog.51cto.com/3171847/1265438

  《六、CPU优化(4)NUMA架构》http://jimshu.blog.51cto.com/3171847/1266977

  《六、CPU优化(5)最大并行度》 http://jimshu.blog.51cto.com/3171847/1266978

  《六、CPU优化(6)DMV与计数器》 http://jimshu.blog.51cto.com/3171847/1269174

2、内存

  《七、内存优化(1)启用AWE》 http://jimshu.blog.51cto.com/3171847/1269942

  《七、内存优化(2)动态内存分配》 http://jimshu.blog.51cto.com/3171847/1270005

  《七、内存优化(3)使用DMV》 http://jimshu.blog.51cto.com/3171847/1270018

  《七、内存优化(4)内存计数器》 http://jimshu.blog.51cto.com/3171847/1271576

  《七、内存优化(5)内存压力分析》

  《七、内存优化(6)SQL Server 2012内存管理的革新》

3、磁盘I/O

  《八、IO优化(1)磁盘簇》 http://jimshu.blog.51cto.com/3171847/1298514

  《八、IO优化(2)SQLIO工具》 http://jimshu.blog.51cto.com/3171847/1298515

  《八、IO优化(3)稀疏列》 http://jimshu.blog.51cto.com/3171847/1298558

  《八、IO优化(4)数据压缩》 http://jimshu.blog.51cto.com/3171847/1299047

  《八、IO优化(5)文件组》 http://jimshu.blog.51cto.com/3171847/1299170

  《八、IO优化(6)tempdb》 http://jimshu.blog.51cto.com/3171847/1299175

  《八、IO优化(7)减少IO竞争》 http://jimshu.blog.51cto.com/3171847/1299191

四、结语

  《九、OLTP 性能调整与优化--结语》 http://jimshu.blog.51cto.com/3171847/1300717

一、数据库设计与性能优化--概述相关推荐

  1. 熟悉mysql数据库设计和性能优化_Mysql数据库性能优化

    Mysql数据库性能优化,可以从下面三点入手: 数据库设计 SQL语句优化 架构优化 一.数据库设计优化 1.适度的违反范式,适度    遵循三大范式就会带来查询时经常需要join,导致查询效率降低 ...

  2. 熟悉mysql数据库设计和性能优化_MySQL性能优化学习笔记-(1)数据库设计

    一.数据库设计 1.数据类型优缺点分析 数据类型的选择要遵循的总体原则 更小的通常更好 一般情况下,应该尽量选择使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,因为它们站用更小的磁盘.内存 ...

  3. 论坛数据库设计与性能优化

    题目: 一个简单的论坛系统 1:包含下列信息:  2:每天论坛访问量300万左右,更新帖子10万左右. 请给出数据库表结构设计,并结合范式简要说明设计思路.  结合这个题目把论坛系统设计相关知识点进行 ...

  4. DB2设计与性能优化:原理、方法与实践

    DB2设计与性能优化:原理.方法与实践 王飞鹏  陈辉  张广舟  成孜论  编著 ISBN 978-7-121-13094-6 2011年4月出版 定价:89.80元(含光盘1张) 16开 416 ...

  5. 数据库设计对性能的影响

    数据库结构设计和数据库优化呢,是我们后面几张主要的内容,所以我们这里先简单的看几个和数据库的设计,和SQL优化有关的对数据库性能产生影响的一些易犯的错误,我们现在对如何高性能的数据库设计,和SQL优化 ...

  6. 阿里P8架构师谈:Web前端、应用服务器、数据库SQL等性能优化总结

    web前端性能优化 Web前端指网站业务逻辑之前的部分,包括: 1.浏览器加载 2.网站视图模型 3.图片服务 4.CDN服务等 主要优化手段有优化浏览器访问,使用反向代理,CDN等. 1.浏览器访问 ...

  7. 数据库的这些性能优化,你做了吗

    转载自   数据库的这些性能优化,你做了吗 在互联网项目中,当业务规模越来越大,数据也越来越多,随之而来的就是数据库压力会越来越大. 我们可能会采取各种方式去优化,比如之前文章提到的缓存方案,SQL优 ...

  8. Oracle性能优化概述

    Oracle优化概述 1.谁应该进行优化? 与oracle数据库相关的任何人,包括体系结构设计者,应用程序设计者, 应用程序开发者,数据库管理员,系统管理员都应该顾及性能和优化. 2.为什么要优化 数 ...

  9. Android 网络性能优化-概述和DNS优化

    1. 移动App网络优化背景 对于Android来说,开发者可以轻松的打造一套 MVP + Retrofit + RxJava 的框架来处理所有的网络请求.因为 Retrofit下层封装的OkHttp ...

最新文章

  1. Android - 广播机制和Service
  2. html5 Canvas画图教程(5)—canvas里画曲线之arc方法
  3. 疫情之下,将业务迁移至云端会是一个正确的选择吗?
  4. java redis 多节点,Redis单机多节点集群部署,超简单
  5. 嵌入式Linux开发|点亮那颗LED灯
  6. jdk工具keytool和jarsigner帮助(jdk keytooljarsigner tool manual)
  7. 北京邮电计算机学院保研概率,北京邮电大学计算机学院(专业学位)计算机技术保研细则...
  8. Excel如何制作直方图与正态分布曲线
  9. netcfg 进程分析
  10. android转服务器吗,王者荣耀角色迁移iOS区可以转安卓区吗 王者荣耀角色迁移iOS区转安卓区详情...
  11. 将输入金额转化为发票大写形式
  12. 将项目上传至GitHub
  13. JAVA_基础部分_综合篇
  14. 智学.com查成绩 html,智学.com查分数
  15. 【Bug】HTC Vive Pro连接电脑后,一带在头上就会发生卡顿现象,头盔内白屏,信号丢失
  16. uchome 数据字典
  17. 计算机系—实验报告(格式)
  18. 入门PCB设计(杜洋工作室)——Altium Designer Winter 09
  19. Leap Motion开发(六)多Leap Motion研究
  20. 【解决方案】基于视频直播点播平台EasyDSS搭建的校园电视台同步转播方案

热门文章

  1. Linux —— 目录(文件夹)及文件相关处理指令
  2. puppet相关问题统计
  3. 使用class-dump破解ipa获取.h文件
  4. 兰戈 —— Rango
  5. 理解oracle中连接和会话
  6. 祝我亲爱的天蝎GG生日快乐!+相识3周年小纪念
  7. 开源许可证 如何工作_开源许可证的工作方式以及如何将其添加到您的项目中...
  8. 编程术语_伟大的编程术语烘烤
  9. Hadoop集群的基本操作(二:HBase的基本操作)
  10. gprs 神奇宝典java,2016联通笔试知识点大全