SQLSERVER DBA容易犯的十个错误

翻译自:http://sqlsentry.tv/top-10-administrative-mistakes-on-sql-server/

除了排名前十的错误之外,其他排名靠前的错误

抛开SQL Server方面的错误,这些错误主要体现在开发或者是设计的时候:

1、不合理的规范和不合理的数据库设计

2、没有设计好可伸缩性的需求

3、没有数据库性能基线或基准

4、索引的问题

5、对语句调优不够重视


错误倒数第十位(磁盘-只要磁盘空间充足就不理会磁盘IO了)

经常只考虑磁盘子系统的磁盘空间,不理会IO负载

没有足够的专业知识,有可能会出现以下问题:

选择了不恰当的容错机制

IO性能不足:

OLTP系统需要较高的TPS

OLAP需要较高的传输速度

选择了较差的RAID类型、控制器、通道

没有足够的磁盘主轴

SSD固态硬盘可以改变这个IO游戏的规则


错误倒数第九位(对业务规则不理解)

作为一位IT PRO,你应该知道SQL Server内部是如何工作的

什么是checkpoint?什么是Lazy writer?

TempDB的使用方式是怎样的?plan cache里面有什么?

你要知道DBA是企业资产数据的保护者

业务和IT之间的联系,你应该知道如何以及在何种方式使用您的服务器

当程序down掉的时候谁会在意,每分钟的停机时间公司需要损失多少钱?

商业周期是什么?

什么时候是最好的宕机?

什么样的的基线、基准是正常的?


错误倒数第八位(没有一套自己的故障排除方法)

危急时,DBA需要一个强大的、一步一步的方法进行根源分析。

如果没有,你将会:

1、错过了数据库的错误和问题

2、由于错误引起的数据丢失或者灾难性的问题

3、很差的响应时间或者会违反SLA服务级别协议

4、失去信誉

如果您还没有一套方法论,那么可以参考

End-to-End Troubleshooting on http://SQLSentry.TV

SQL Server Troubleshooting Guide by J. Kehayias on http://www.simple-talk.com


错误倒数第七位(基本上都使用默认值)

使用默认值安装SQL Server安装的目的是尽快让服务器启动并运行

但是这样会造成运行时得不到最优,例如如下设置:

数据库自动增长 、自动收缩

数据库自动增长的大小

默认文件组

一些小问题也会成为大问题

1、并行度

2、填充因子

其他一些服务器和数据库的设置选项


错误倒数第六位(在事后才想起数据库的安全性)

现在互联网上面的SQL 注入漏洞成为第一位

值得注意的是,十年前很多关于防SQL注入的方法,直到今天我们依然继续在使用

提前计划好使问题最小化:

确保您的服务器上运行的应用程序只有最小的权限,并且这个权限能够保证你的程序能正常运行

你的服务器暴露面有多少?暴露越多受攻击面就越广

谁有权访问你的服务器?

当出问题的时候你如何找出谁开了一些不恰当的权限?


错误倒数第五位(没有充分使用自动化)

自动化能减轻DBA的很多工作,讽刺的是,一开始DBA就需要将大量的工作进行自动化

没有自动化,DBA必须面对下面问题:

如果全靠人去操作有可能容易出错和遗漏

当服务器的数量增加的时候你的工作将会加倍

使用自动化的例子:

自动报错通知

维护计划作业

基本都是脚本,而不需要使用GUI


错误倒数第四位(在工作上使用了不合适的功能或技术)

DBA是公司里IT程序的“性能工程师”

他的工作是对于每个业务需求使用最合适的功能

否则就会:

使应用程序变复杂

过度的资源消耗

有一条定理:没有IT的项目,只有利用IT解决商业项目


错误倒数第三位(对管理的变更很冷漠)

变更管理是很重要的!没有管理变更,dba将面临:

如果不变,那么他们所做的事情将会更加糟糕

改变控制对改变管理

合理的管理改变意味着:

在规定好的时间限制里面预先规划好时间

在生产环境里面,管理改变的好坏会被验证和测试

改变是隔离的、原子的、可逆的


错误倒数第二位(不恰当的维护计划)

适当的预防性维护(PM)可以帮助您:

在出现问题之前抓住问题

能确定优化方向

用户在系统上执行资源密集型的操作会减少

预防性维护在SQLSERVER里应该包括

数据库一致性检查和DBCC CHECKIDENT

备份和还原数据库的时候使用校验选项

索引填充因子、碎片整理

索引统计信息

不要依赖数据库维护计划向导!!

不用重复做轮子,有很多维护计划已经有仙人帮我们写好了


错误倒数第一位(备份和还原)

DBA不会经常验证备份的可用性

这会带来一些问题:

您对客户的SLA不能保证,还有RTO和RPO不能保证

没人能确保备份可用

如有不对的地方,欢迎大家拍砖o(∩_∩)o 

SQLSERVER DBA容易犯的十个错误的更多相关文章

  1. Java开发者常犯的十个错误

    翻译自:Top 10 Mistakes Java Developers Make 文章列出了Java开发者最常犯的是个错误. 1.将数组转换为ArrayList 为了将数组转换为ArrayList,开 ...

  2. SQLServer DBA 三十问(加强版)

    距离最初发布SQLServer DBA 三十问 已有一年多了,大家对其中的某些问题讨论比较激烈,要回答出来这些问题需要比较扎实的SQLServer 基础和一定的实际操作经验,如果你试着去回答其中的问题 ...

  3. 【转载学习前辈的经验】-- Mistakes I made (as a developer) 我(作为一名开发者)所犯过的错误

    我 2006 年开始工作,至今已经 10 年.10 年是个里程碑,我开始回顾自己曾经犯过的错误,以及我希望从同行那里得到什么类型的忠告.一切都在快速改变,10 年了,我不能确定这些秘诀是否还有用. 不 ...

  4. PHP开发者常犯的MySQL错误

    PHP开发者常犯的MySQL错误   数据库是WEB大多数应用开发的基础.如果你是用PHP,那么大多数据库用的是MYSQL也是LAMP架构的重要部分. PHP看起来很简单,一个初学者也可以几个小时内就 ...

  5. 使用Core Data应避免的十个错误

    原文:Avoiding Ten Big Mistakes iOS Developers Make with Core Data   http://www.cocoachina.com/applenew ...

  6. 关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议)

    关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议) 前言:最近在学习JDBC,总结了几个小问题,特地分享给大家,让大家不要犯这样的错误,也希望大家养成学会总结的 ...

  7. Sqlserver 2008 error 40出现连接错误的解决方法

    说明(2017-5-25 15:00:16): 核心:把端口号改成1433 Sqlserver 2008 error 40出现连接错误的解决方法

  8. iOS开发过程中使用Core Data应避免的十个错误

    原文出处: informit   译文出处:cocoachina Core Data是苹果针对Mac和iOS平台开发的一个框架,主要用来储存数据.对很多开发者来说,Core Data比较容易入手,但很 ...

  9. Socket编程, 在server端read()函数调用后显示错误:Transport endpoint is not connected (犯了低级错误)

    for(;;){ socklen_t len = sizeof(client_address); connfd = accept(listenfd, (struct sockaddr *)&c ...

随机推荐

  1. 【转】关于LWF——线性工作流

    1.什么是LWF? LWF全称Linear Workflow,中文翻译为线性工作流.“工作流”在这里可以当作工作流程来理解.LWF就是一种通过调整图像Gamma值,来使得图像得到线性化显示的技术流程. ...

  2. [转]分享一个用Telnet代替JLinkRTTClient的办法,实现同时显示和记录

    原帖子http://www.amobbs.com/thread-5614514-1-1.html Jlink 驱动 升级到4.96后,提供了一个 JLinkRTTViewer,确实方便了很多,但似乎不 ...

  3. 通过IL分析C#中的委托、事件、Func、Action、Predicate之间的区别与联系

    先说一下个人理解的结论吧: delegate是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类. delegate声明的变量与delegate声明的事件,并没有本质的区别,事件是在dele ...

  4. python生成器和迭代器

    生成器:具有生成能力的对象 迭代器:具有取值功能的对象 def func(): yield 1 yield 2 yield 3 ret = func() #func()函数体称为生成器 r=ret._ ...

  5. {POJ}{树状数组}

    总结一下树状数组的题目: {POJ}{3928}{Ping Pong} 非常好的题目,要求寻找一个数组中满足A[i]<A[k]<A[j]的个数,其中i<k<j(或者相反).很巧 ...

  6. PHP世纪万年历

    <?  //世纪万年历  #这是唯一的设置-请输入php文件的位置  $file="http://192.168.1.168/php/rl/s2m.php";  //#农历每 ...

  7. git服务器的搭建

    http://blog.jobbole.com/25944/ 1,概念 git服务器:就是一个仓储,一个大家都可以访问的公共仓储,大家可以从这个仓储中拉取和推送数据. 协议: 与gist服务通讯的仓储 ...

  8. asp.net GDI+绘制矩形渐变

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  9. redis与memcached比较

    引用自:http://blog.csdn.net/e_wsq/article/details/23551799 最近需要用no-sql数据库来保存大量的数据,插入和查询都比较频繁,相对而言查询更加频繁 ...

  10. shell scripts

    本文涉及的命令:test.[].shift.if.case.for.while.until.function.sh. 撰写 shell script 的良好习惯 在每个 script 的文件头处记录好 ...