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

来源:互联网 发布:igtt淘宝事件 编辑:程序博客网 时间:2024/06/08 16:39
一:在大表上应用分区:
  1:将大表分区后,将每个分区放在一个独立的文件中,并将这个文件存放在独立的硬盘上,这样数据库引擎就可以同时并行检索多块硬盘上的不同DATAFILE,提高并发读写速度.
  2:对于"历史数据",可靠率基于数据的"年龄"进行分区,比如订单表:可使用[订单日期]列作为分区的依据,如将每年的订单做成一个个分区
eg:  A.创建一个文件组
 ALTER DATABASE db_name ADD FILEGROUP [1999]在数据库中增加[文件组1999] ALTER DATABASE db_name ADDFILE(NAME=N'1999',FILENAME=N'e:\1999.ndf',SIZE=5MB,MAXSIZE=100MB,FILEGROWTH=5MB)to FILEGROUP [1999]   B.创建分区函数:分区函数是定义临界点的一个对象
 CREATE PARTITION FUNCTIONFNorderDBrange(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 PARTITIONFNorderDBrange
to ([1999],[2000],[2001],[2002])
表示各方案进入对应的文件组1999~2002中
  D.在表上应用分区
   (1)首先删除聚集索引(一般PK上)
   (2)重新创建聚集索引: CREATE UNIQUE CLUSTERED index_nameON tb_name(orderdate)
                     ON sc_name(orderdate)
===============================================================================================
二:合理组织数据库文件和文件
  1.主文件组完全独立,只存放系统对象,所有的用户对象都不在主文件组中,主文件组也不应该设为默认文件组,将系统对象和用户对象分开可以获得更好的性能
  2.如果有多块硬盘,可以将每个文件组中的文件分配到每个硬盘上,这样可实现分布式磁盘I/O,提高读写速度
  3.将访问频繁的表及其索引放到一个独立的文件组中,这样可以提高读取数据和索引的速度.
  4.将访问频繁的包含TEXT和IMAGE数据类型的列的表放到一个单独的文件组中,最好将 TEXT和IMAGE放在一个独立的硬盘中
  5.将事务日志文件放到一个独立的硬盘上,千万不要和DATEFILE共用一个硬盘;日志操作属于密集型操作.
  6.将'只读'表单放到一个单独的文件组中,同样,'只写'也是
  7.不要过度使用'自动增长',设置自动增长值为一个合适的值,如:一周,同样,'自动收缩'也是如此
原创粉丝点击