1、更新服务器配置,如果用户多的话(比如1000千以上的),数据库服务器 ----------应用服务器集群,前段先和应用服务器交互,应用服务器处理了以后,应用服务器和数据库服务器交互。
2、索引碎片,我总感觉索引碎片很影响数据库的速度,及时的对索引进行重建。
3、cpu的利用也是个很大问题。EXEC sp_configure 'awe enabled','1'--内存可以支持64G
EXEC sp_configure 'lightweight pooling','0'--不使用NT纤程
EXEC sp_configure 'priority boost','1'--增加SQLSERVER优先级
EXEC sp_configure 'network packet size (B)','8192'--增加SQLSERVER网络包的大小
RECONFIGURE WITH OVERRIDEGO
--优化数据库设置
DECLARE @currentdatabase SYSNAME
SELECT @currentdatabase = db_name((SELECT dbid from master.dbo.sysprocesses where spid = @@spid))
EXEC sp_dboption @currentdatabase, 'SELECT into/bulkcopy', 'TRUE' --对大容量数据操作不记录日志
EXEC sp_dboption @currentdatabase, 'trunc. log on chkpt.', 'TRUE' --自动截断日志
EXEC sp_dboption @currentdatabase, 'auto create statistics', 'TRUE'--自动创建统计
EXEC sp_dboption @currentdatabase, 'auto update statistics', 'TRUE'--自动更新统计

解决方案 »

  1.   


    %%
    ******************************************************************************************************/
    DECLARE @database_name sysname
    DECLARE @syntax sysnameDECLARE CUR_database CURSOR FOR
    SELECT name FROM sysobjects where xtype = 'u'
    OPEN CUR_databaseFETCH NEXT FROM CUR_database INTO @database_name
    WHILE @@FETCH_STATUS = 0 BEGIN
    SELECT @syntax = 'DBCC DBREINDEX ('+@database_name+', '''',0)'
    EXEC (@syntax)PRINT @database_name + '重建索引完成'
    FETCH NEXT FROM CUR_database INTO @database_name
    END--release memory
    CLOSE CUR_database
    DEALLOCATE CUR_databaseGODBCC CHECKDBGO
    /******************************************************************************************************
    %%
    %%  描述: 对所有的索引进行碎片整理
    执行本程序会用大量的时间,建议晚上无用户使用时进行

    ******************************************************************************************************
    %%  编写: 小穆:2008-07-03
    %%  修改:
    %%
    ******************************************************************************************************/
    DECLARE @table_name sysname
    DECLARE @index_name sysname
    DECLARE @syntax sysnameDECLARE CUR_table CURSOR FOR
    SELECT name FROM sysobjects where xtype = 'u'
    OPEN CUR_tableFETCH NEXT FROM CUR_table INTO @table_name
    WHILE @@FETCH_STATUS = 0 BEGIN DECLARE CUR_index CURSOR FOR
    select sysindexes.name 
    from sysindexes,sysobjects 
    where sysobjects.id = sysindexes.id and 
    sysobjects.name = @table_name and 
    keycnt > 0
    OPEN CUR_index
    FETCH NEXT FROM CUR_index INTO @index_name
    WHILE @@FETCH_STATUS = 0 
    BEGIN

    SELECT @syntax = 'DBCC INDEXDEFRAG (0, '+@table_name+','+ @index_name+')'
    EXEC (@syntax)
    PRINT '数据表'+@table_name + '索引'++@index_name+'碎片整理完成'
    FETCH NEXT FROM CUR_index INTO @index_name
    END --release memory
    CLOSE CUR_index
    DEALLOCATE CUR_indexFETCH NEXT FROM CUR_table INTO @table_name
    END--release memory
    CLOSE CUR_table
    DEALLOCATE CUR_tableGO
    EXEC Tool_GetArear 'yfldpass'GO
    UPDATE cj_in_out SET flag_ok = '1' 
     where h_amount_sub_total = h_amount and flag_ok = '0'UPDATE cj_in_out SET flag_ok = '0' 
     where h_amount_sub_total <> h_amount and flag_ok = '1'
    GO
    --优化统计
    EXEC sp_updatestatsGO