部分关于SQL SERVER 08 优化方案:…

一:在大表上应用分区:
    1:将大表分区后,将每个分区放在一个独立的文件中,并将这个文件存放在独立的硬盘上,这样数据库引擎就可以同时并行检索多块硬盘上的不同DATAFILE,提高并发读写速度.
    2:对于"历史数据",可靠率基于数据的"年龄"进行分区,比如订单表:可使用[订单日期]列作为分区的依据,如将每年的订单做成一个个分区
eg:   A.创建一个文件组
 ALTER DATABASE db_name ADD FILEGROUP [1999] 在数据库中增加[文件组1999]
 ALTER DATABASE db_name ADD FILE(NAME=N'1999',FILENAME=N'e:\1999.ndf',SIZE=5MB,MAXSIZE=100MB,FILEGROWTH=5MB) to FILEGROUP [1999]
      B.创建分区函数:分区函数是定义临界点的一个对象
 CREATE PARTITION FUNCTION FNorderDBrange(DATETIME) AS
Range Left for values('1999','2000','2001')
其中Range Left表示应该进入左边分区的临界值
分区函数指明: DATETIME<=19991231的进入第一分区
19991231<DATETIME<=20001231进入第二分区
20001231<DATETIME<=20011231进入第三分区
DATETIME>20011231的进入第四分区
    C.创建分区方案
 CREATE PARTITION SCHEME sc_name AS PARTITION FNorderDBrange
to ([1999],[2000],[2001],[2002])
表示各方案进入对应的文件组1999~2002中
    D.在表上应用分区
      (1)首先删除聚集索引(一般PK上)
      (2)重新创建聚集索引: CREATE UNIQUE CLUSTERED index_name ON tb_name(orderdate)
                          ON sc_name(orderdate)
===============================================================================================
二:合理组织数据库文件和文件
    1.主文件组完全独立,只存放系统对象,所有的用户对象都不在主文件组中,主文件组也不应该设为默认文件组,将系统对象和用户对象分开可以获得更好的性能
    2.如果有多块硬盘,可以将每个文件组中的文件分配到每个硬盘上,这样可实现分布式磁盘I/O,提高读写速度
    3.将访问频繁的表及其索引放到一个独立的文件组中,这样可以提高读取数据和索引的速度.
    4.将访问频繁的包含TEXT和IMAGE数据类型的列的表放到一个单独的文件组中,最好将 TEXT 和IMAGE放在一个独立的硬盘中
    5.将事务日志文件放到一个独立的硬盘上,千万不要和DATEFILE共用一个硬盘;日志操作属于密集型操作.
    6.将'只读'表单放到一个单独的文件组中,同样,'只写'也是
    7.不要过度使用'自动增长',设置自动增长值为一个合适的值,如:一周,同样,'自动收缩'也是如此
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值