新手sqlserver数据库dba需要注意的小细节

前言:任何的优化和修改都是以业务情况为前提,可能有的写的有误或者不准确的地方,欢迎各位来拍砖。

1.在创建db的时候自增长建议设置成按MB(M)增长,步长根据业务量来设置,一般情况建议设置100-200M(见图片),还有就是尽量别改初始大小,这个默认就好。

  如果按照数据文件(mdf)按照默认的1m增长,同时db的业务写入比较频繁,那数据库就会频繁的向磁盘请求空间,会造成不必要的io消耗,也会因为申请空间造成资源等待等问题。

  如果把日志文件(ldf)按照默认的百分比10%增长,同样当db业务量很大或者有大事务的时候,日志会蹭蹭的增长,假如现在日志文件大小是100G,那每次增长步长就是10G,各位可以想一下如果数据库突然像磁盘申请10个G的空间,那当时的io情况会是什么样。

2.建议给系统预留一些内存。根据内存大小预留(服务器64g内存一般我限制sqlserver到60g,留4个g给系统用,还是那句话根据业务情况来定)。因为sqlserver有一些操作是不消耗系统给sqlserver预留的内存的。比如你的服务器内存是64g,现在sqlserver进程占用50g,这时候如果你做备份操作的时候,这个操作消耗的不是sqlserver占用的50g,而是剩余的14g内存。还有一些其他的操作也会占用非sqlserver的内存,例如索引重建(这个记忆模糊了准确性有待考证)。假如现在sqlserver把64g内存都占满了,这时候你需要备份,那内存从哪来呢?只能让sqlserver释放缓存中的一些对象来给你提供备份的内存。如果现在业务繁忙可能就会因为内存不足或者内存命中引起性能问题了。

3.profiler是个好东西,谁用谁知道。

4.windows的性能监视器是监控sqlserver性能必备的工具(友情提示:快捷键是perfmon.msc)。具体监控指标我会在其他blog里写。

5.如果你们机房的防火墙足够流弊,程序代码写的足够严谨,数据库没有公网ip,那你可以使用xp_cmdshell这个存储过程,否则请关闭这个config。

  曾经有一台sqlserver服务器放在我面前我没有统一管理,后来我忘了服务器的登陆密码。于是我用sa口令登陆这台数据库,成功的通过xp_cmdshell添加了服务器管理员账号,成功的通过这个管理员账号登陆了服务器。本来这应该是一个皆大欢喜的故事,但是你有没有想过如果别人通过非法程序知道了你的数据库连接串,恰巧你又开启了xp_cmdshell呢,那么你就可以准备简历了。

6.不要勾选登陆框上边的保存密码选项(别问我为什么,任性,就是担心某一天我的服务器被别人登陆了随便就能进数据库了,随便就删我数据毁我db了怎样!!)。

7.如非特殊需求尽量不要用过ssms跨机器登陆(尤其是当你的服务器不是你一个人使用的时候)。比如你在192.168.1.3这个服务器上用ssms登陆通过ip账号密码192.168.1.4这台服务器的db,这是没问题的,但是当你使用完以后尽量养成随手关掉这个连接的习惯。否则下一个人或者你自己不注意就会把想在本机上执行的脚本执行到了远端的那个db上。

8.存放db物理文件的路径尽量别使用默认路径,自己在某个盘符下建个命叫db或者data之类的文件夹存放就好,否则找起来是个很痛苦的事也不方便管理。不要直接建在磁盘的根目录下,因为这样有的时候可能会涉及到权限的问题让你蛋疼好久。如果有2个磁盘阵列(例如一个raid10一个raid0)或者2个单独的物理磁盘,最好将mdf文件和ldf文件分开存放提高io性能(mdf放在raid10上,ldf放在raid0上)。

9.备份数据库的时候尽量选择业务量最小服务器负载最小的时候,如果可以选择压缩备份,节省磁盘空间(当然也会产生额外的io)。日志备份不用太频繁也不能太长,视业务量和允许丢失数据的程度而定。

10.如果这个实例下有除了备份以外其他的作业尽量别选择整点的时间跑,往前或者往后错开几分钟,因为一般的日志备份都会选择间隔一小时或者多少分钟,多数都是整点备份。所以其他的作业尽量避开这种备份操作的时间。

11.作业监视器只能看到作业最后一次执行的状态。

12.查看sql服务启动时间:SELECT LOGIN_TIME FROM MASTER..SYSPROCESSES WHERE SPID= 1

13.不要让程序使用sa作为数据库连接串,sa的密码尽可能的复杂,sa弱口令的危害不用多说吧。

14.查看当前数据库连接情况的快捷键是crtl+1(sp_who)锁情况的快捷键是ctrl+2(sp_lock),执行的快捷键是alt+x或者是f5(虽然有快捷键但是尽量别用),按win+r键调出来运行栏输入ssms可以打开sqlserver的management studio,选中表按alt+f1可以查看表的属性(sp_help),新建一个查询窗口的快捷键是alt+n,这些都是比较常用的快捷键,可以方便你的数据库操作。

15.有时候当你新建或者修改一个表或者字段的以后,你执行查询或者写出来新建的字段发现新添加的对象下边有个红线,鼠标放上去会显示列名无效,对于我这种有轻微强迫症的人很难受。造成这个现象的原因是:SQL Server的intellisense(智能感知功能),没有感知到这项修改,我们可以手动的执行快捷键ctrl+shift+r来重新感知。

大过年的脑子里都被各种吃吃喝喝的填满了- -暂时就想起来这么多,以后有想到的再补充,如果有不准确的或者不明白的地方欢迎各位拍砖。

时间: 2024-10-12 08:48:51

新手sqlserver数据库dba需要注意的小细节的相关文章

检测SqlServer数据库是否能连接的小技巧

有时候可能需要检测下某台机器的服务是不是起来了,或者某台机器的某个库是不是能被连接又不能打开ssms也不想登陆服务器的话就可以用这个方法. 1.在桌面上右键创建个文本,然后改后缀名为udl以后保存(1.udl). 注:udl(Universal Data Link)是通用数据连接文件,使用通用数据链接 (UDL) 文件来保存连接字符串(可百度查询含义). 2.打开这个文件以后输入服务器的ip(2016,为端口号:若使用默认端口1433,则只用输入IP即可)和用户名密码就可以测试连接了. 参照:h

SQLServer 数据库结构

一.数据库的组成 在SQL Server 2008中,用户如何访问及使用数据库,就需要正确了解数据库中所有对象及其设置.数据库就像一个容器,它里面除了存放着数据的表之外,还有视图.存储过程.触发器.约束等数据库对象.数据库管理的核心任务包括创建.操作和维护数据库. 二.数据库文件及其文件组 数据库的存储结构分为逻辑存储结构和物理存储结构. 逻辑存储结构:说明数据库是由哪些性质的信息所组成.SQL Server的数据库不仅仅只是数据的存储,所有与数据处理操作相关的信息都存储在数据库中. 物理存储结

(转)对SQLSERVER数据库事务日志的疑问

本文转载自桦仔的博客http://www.cnblogs.com/lyhabc/archive/2013/06/10/3130856.html 对SQLSERVER数据库事务日志的疑问 摸不透SQLSERVER了 实验环境:SQLSERVER2005 SP4,Windows7 本来没什么心情写文章,反正没人看,关于我文章中提到的问题,有些可以从文章结尾的MSDN补充那里找到答案,而有些还没有答案 根据CSDN博客的这篇文章介绍,大家可以先看一下,然后再继续往下看,因为下面会引用到CSDN博客里的

SQLServer数据库查询优化建议

虽然查询速度慢的原因很多,但是如果通过一定的优化,也可以使查询问题得到一定程度的解决. 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源

MYSQL,DB2,SQLSERVER数据库不同点浅探(一)

简单地比较一下MYSQL,DB2,SQLSERVER数据库设计不同点,为日后看MYSQL源代码先打打底,今天先比较数据库对象吧: 1.DB2上关于表有一个表空间的概念,简单地说, 表空间是数据库系统中数据库逻辑结构与操作系统物理结构之间建立映射的重要存储结构,一般来说一个表空间对应一个表.DB2在表空间上分配表空间对应表的一切物理属性,比如首次分配大小,扩展大小,页面每页初始空闲空间,空闲页面占总页面百分比等.因此,DB2上的系统DBA对表的操作更多是基于表空间上.比如因为表上的删改查不可避免地

PowerDesigner从SqlServer数据库导入数据模型

Powerdesigner 从数据库导入数据 第一步, 打开 powerdesigner, 在菜单选择 [File] 选项, 然后在弹出的下拉单中选择 [Reverse Engineer]选项,再选择[Database]选项 第二步 可以选择[Using a data source]选项右边的按钮 第三步 弹出[Connect to a Data Source]对话框 ,点击配置 第四步 创建一个新的ODBC连接 第五步在弹出的对话框,选择[系统数据源]选项,然后点击下一步 第六步在弹出的对话框

SQLSERVER 数据库性能的基本

很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据库服务器 做数据库服务器的那台服务器性能要相对较好,磁盘,内存,CPU等等, 那么在选用其中某一台服务器作为数据库服务器之前需要测试每一台服务器的性能 并且需要设置一些硬件的参数,例如设置磁盘控制器的参数,参考文章:Writeback和Writethrough区别 那么具体怎麽测试呢?怎麽得出测试指标呢? 大家可以参考这篇文章:SQL

sqlserver数据库的索引、视图和触发器

  Sqlserver数据库的索引.视图和触发器 数据库的索引类似于字典中的目录,无需阅读.可以直接利用目录快速查找所需要的信息 索引的种类: 聚集索引:反应的是数据存储的物理顺序,一个表只能包含一个聚集索引 非聚集索引:不反应数据存储的物理顺序,一个表可以有多个非聚集索引 1.1. 准备环境 1.1.1. 创建聚集索引 目前tstudent表中没有任何索引也没有主键 为tstudent表创建聚集索引 选中studentID,单击左上侧的主键按钮 为Tstuden表的studentID创建主键就

批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor

原文:批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11 之前写过一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便 SQLPROMPT5.3对各种加密对象的解密测试 SQL2005解密已经被加密的存储过程 昨天ahdung 童鞋介绍了这个工具给我,非常感谢他 dbForge SQL Decryptor这个工具的软件公司是dev