|
而我们在建立一个用户数据库的时候,也要考虑数据文件放哪、日志文件放哪、用几个数据文件。数据文件访问当然希望尽可能快。但是通常数据文件对于用户具有极其重要,所以一般考虑数据保护和高可用性,将它们放到RAID5中。日志文件呢,它记录了对数库所做的历史记录,它用于校验数据库中的数据完整性。它也应该和你的数据文件分开存储,和数据文件一样事务日志也是会自动增长的,当空间够大的时候事务记录操作得很快。而这时你觉得它太大了,去缩减它,,而你再一操作数据库,它要花费时间去分配空间,如果你不让写入,数据库将被置疑。所以这不是个好办法。你应该通过文件截断或日志备份,这样可以从事务日志中释放空间。这里说的空间是指日志文件内部可用空间,而不是日志文件的大小。日志管理器每秒传输操作可以顺序写入60KB。对调整事务日志最好的建议是放到一个最快的阵列上,一个办法是RAID0+1。增加一个文件组中的文件数,往往会改善性能,因为会创建更多的线程来扫描数据文件。又比如你有两个上百万的表,分别建立索引。如果你放在一个文件组中性能会受很大影响。而比如你建立4个数据文件每个物理磁盘上建立一个,而且把数据文件放到单独的数据文件组,而把每个索引也放到它自己的文件组中。查询性能会显著提高。
使用DBCC命令来优化
D B C C命令就像名字的含义一样,本来是为了检查数据库的一致性。但后来D B C C命令变
成了一些有用的函数。D B C C命令的使用有一些限制。以下就是所支持的命令列表。
D B C C {
CHECKALLOC[(database_name [, NOINDEX])] |
C H E C K C ATALOG [(database_name)] |
C H E C K TABLE (table_name[,NOINDEX | index_id]) |
CHECKDB [(database_name [, NOINDEX])] |
dllname (FREE) |
INPUTBUFFER (spid) |CHECKIDENT [(table_name)] |
D B R E PAIR (database_name,DROPDB [,NOINDEX])] |
M E M U S A G E |
N E WALLOC[|(database_name[,NOINDEX])] |
OPENTRAN ({database_name} | {database_id})
[WITH TA B L E R E S U LTS] |
OUTPUTBUFFER(spid) |
PERFMON |
P I N TABLE (database_id,table_id) |
S H O W _ S TATISTICS (table_name,index_name) |
SHOWCONTIG(table_id,[index_id]) |
SHRINKDB (database_name[,new_size[,'MASTEROVERRIDE')]]) |
SQLPERF ({IOSTATS | LRUSTATS | NETSTATS | RASTATS[,CLEAR]} | {THREADS} |
{ L O G S PACE}) |
T E X TALL [({database_name | database_id} [,FULL | FAST])] |
T E X TALLOC [({table_name | table_id}[,FULL | FAST])] |
TRACEOFF(trace#) |
TRACEON(trace#) |
T R A C E S TATUS (trace#[,trace#]) |
U N P I N TABLE(database_id,table_id) |
U P D ATEUSAGE({0 | database_name} [,table_name [,index_id]]) |
[WITH NO_INFOMSGS]
有些D B C C命令需要数据库名,而有些需要数据库I D。你可以观看SQL Server的错误日志
或运行如下的查询并在S e l e c t语句中用数据库名代替d b n a m e就可得到数据库的I D。
下载
存储还有一点就是最后使用NTFS格式,NTFS格式的读取速度比FAT32快。其实这是属于SQLServer调优中,系统优化的部分。
说到这补充一点,一般影响SQLServer调优的有4个部分:系统调优占2.5%,数据库调优占17.5%,设计调优占20%,程序可调优的空间最大占60%。呵呵,但是一般DBA拿到一个系统的时候,设计调优和程序可调优是不可控的,应为他不可能去改买来的软件。
2
|