SQL2000数据库开发之收缩数据库自动收缩数据库设置
1.在SQL Server企业管理器中,右击要收缩的数据库,在弹出的菜单中选择"所有任务"子菜单下的"收缩数据库"项。

2.在"收缩后文件中的最大可用空间"中输入收缩后数据库中剩余的可用空间量。选择“在收缩前将页移到文件起始位置”,使释放的文件空间保留在数据库文件中,并使包含数据的页移到数据库文件的起始位置。

3.点击“调度”命令创建或更改自动收缩数据库的频率和时间。点击更改按钮对调度进行具体的设置。在弹出的窗口中选择调度发生的时机。选择“反复出现”,点击右侧的更改按钮,设定调度发生的频率和每日发生的频率以及持续时间。


4.在步骤2中,还可以选择对单个的文件进行收缩。方法是点击“文件”,在“数据库文件”列表中选择一个要收缩的文件,在“收缩操作”中选择一种收缩文件的方式点击确定按钮。



7.除了手工设置数据库的收缩外,还可以设置让数据库自动收缩。双击要收缩的数据库图标,在数据对话框的“选项”页面中选中“自动收缩”选项,点击“确定”按钮。

8.通过本例我们学习了如何收缩数据库以及如何对数据库收缩进行调度设置。HOHO
9.通过语句我们也可以来收缩数据库,AIS20071219151707是数据库名,在查询分析器中执行。
DBCC SHRINKDATABASE(AIS20071219151707)
backup log AIS20071219151707 with no_log
注:
SQL Server 2000允许收缩数据库的每个文件以除掉未使用的页面,数据文件和事务日志文件都能被收缩。收缩可以成组进行,也可以个别进行。可以指定时间间隔使得数据库在给定的时间自动收缩,这时收缩操作是在后台发生的,不会影响任何数据库用户的活动。当使用了ALTER DATABASE 的AUTO_SHRINK 选项设置数据库的自动收缩(或者是系统存储过程sp_dboption)时,每当数据库中有大量的空闲空间时,数据库就会收缩,然而如果要移除的空闲空间百分比不能被设置的话则空闲空间将会尽可能地被释放。
不能收缩比其最初的规模小的完全的数据库,所以假定一个数据库在创建时的初始大小是10M,然后增长到了100M,如果此时数据库中所有的数据都被删除了,则它能收缩到的最小规模也是10M,不过使用DBCC SHRINKFILE语句可以将单个数据库文件收缩到小于初始规模的大小,如果使用这种方法就必须对每个文件进行操作而不能对整个数据库收缩。
事务日志文件的收缩有固定的界线,虚拟日志的规模决定了可能的减少。因此日志文件决不能收缩到比虚拟日志文件更小的规模,收缩事务日志文件将删除未使用的虚拟日志文件,但会留下至少一个虚拟日志文件。
SQL Server 2000中DBCC SHRINK DATABASE或DBCC SHRINKFILE操作会试图立即将事务日志文件收缩到要求的尺寸(在取整的条件下).应该在收缩文件之前就截取好日志文件已减少逻辑日志文件的大小,并且标记出不含有任何逻辑日志的虚拟日志。
不需要删除,不就是日志文件太大,想瘦身嘛,很简单。
首先用右键选择该数据库,然后点属性,在属性页里面选择“选项”选项卡,然后你能看到,故障还原模型里面默认的是“完全”,改成“简单”,确定
然后收缩数据库(最好单个文件的收缩),这个时候你能看到,日志文件大幅度减少了,之后再次把故障还原模式修改成“完全”即可
这种方法绝对不会产生文件丢失,也没有任何安全问题,放心使用吧,呵呵!
首先应该确定是谁慢的,往往是程序处理方面的问题而不是数据库的问题。
程序方面应该尽可能的减少数据查询返回的内容,比如可以查询返回ID,然后再根据ID一条一条的查询具体内容,看似慢了,在数据量达的时候快很多
对于数据可以参照下面几点
1、优化SQL语句,SQL语句对查询速度影响最大
2、对于经常查询的字段作索引。但是这样会增加修改时的压力
4、优化SQLServer,比如给其分配固定的内存,预先分配查询内存,调整CPU使用率等。
5、优化硬件资源,比如使用更高的服务器或者硬盘,独立安排数据库的数据文件和索引文件,将数据文件分布于不同的物理硬盘上等等
6、考虑使用分布数据库或者对大表进行拆分
另外,2G的数据库应该不算很大了,我处理过18G的数据库,8000万条记录,查询速度可以被接受