zoukankan      html  css  js  c++  java
  • SQLSERVER DBA容易犯的十个错误

    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 

  • 相关阅读:
    sql 连表
    Laravel 数据验证
    zend studio 破解、汉化和字体颜色及快捷键相关设置
    关于storm的一些知识点
    storm架构原理及集群部署
    storm使用过程中出现的错误:Caused by: java.net.UnknownHostException: storm: 未知的名称或服务
    ElasticSearch基础知识
    ElasticSearch java客户端更新时出现的错误:NoNodeAvailableException[None of the configured nodes are available
    sublime text3 注册码 (Version 3.0)
    使用HTMLTestRunner生产报告
  • 原文地址:https://www.cnblogs.com/lyhabc/p/3785467.html
Copyright © 2011-2022 走看看