今年年初的时候一个客户打电话抱怨系统随着时间的推移越来越慢,在正常情况下还能够忍受,如果系统出现数据问题需要重新执行,那可以想象在某一个时间急着需要报告而系统确是默默唧唧在拉破车,换谁都无法忍受。随之,我们调查这个问题,系统本身的设计就没有考虑到有如此大的机构数和高的频度,所以造成了数据库膨胀得特别快,特别是几个主要存放数据表更是比较吓人。
| 年份 |
数据量 |
比上年增长率 |
| RMBCredit(万条) |
ForeCredit(万条) |
RMBCredit |
ForeCredit |
| 2007前 |
41867.00 |
12857.00 |
—— |
—— |
| 2007 |
3978.14 |
2044.53 |
—— |
—— |
| 2008 |
8933.24 |
5080.01 |
2.25 |
2.48 |
| 2009 |
10597.30 |
5790.29 |
1.19 |
1.14 |
| 2010 |
15235.03 |
9001.57 |
1.44 |
1.55 |
| 2011 |
2185.91 |
116.82 |
—— |
—— |
从上表可以看出RMBCredit表近8.3亿笔数据,这个数据量在不同的数据库都是一个不小的数目,在讨论后给出了如下方法:
(1)把历史数据移到其他地方进行存放,由于在做数据分析的时候需要保留两年的数据
(2)提高SQL Server2000内存使用量,可以通过开启AWE进行实现;
(3)修改程序,按照年份存放不同数据表中(由于这个产品在公司已经有公司替代,处于消亡阶段,该修改工作量大风险高,否决);
(4)使用数据库分区功能(该功能在SQL Server2000未提供,另外做分区速度提升也不大,否决)
通过讨论确定了1、2方法进行改造,具体AWE内存优化步骤如下面所介绍。
1. SQL SERVERAWE大内存设置方法
标准的32 位地址最多可映射4 GB 内存。因此32 位进程的标准地址空间限制为4 GB。默认情况下,在32 位Microsoft Windows 操作系统中,将为操作系统保留2 GB 空间,另外2 GB 空间可由应用程序使用。
在32位操作系统中,一般SQL Server可以使用的 存不到2G,如果要SQL SERVER2000可以使用大容量的 存,我们需要开启SQL-SERVER的AWE功能。
1.1. 前置条件
1.1.1. 数据库全备份
在开始菜单选择开始菜单--Micrsoft SQL Server--企业管理器:

选择Micrsoft SQL Server--SQL Server组---LOCAL---数据库---PBOCJRTJDB,点击右健选择所有任务--备份数据库:


数据库:选择PBOCJRTJDB数据库
名称:PBOCJRTJDB备份
目的:点击“添加”按键添加F:\release金融统计信息共享平台\2011-04-08备份\PBOCJRTDB-back 如图:


点击确定开始备份,完成后确定完成备份,如图:

1.1.2. 数据库补丁升级
1.1.2.1. SQL SP4补丁升级
从网站下载SQL SP4补丁,本文以下载SQL2KSP4.exe]为例:
SQL SP4补丁解压
数据库服务器:双击文件,跟据提示点击下一步,如图:




SQL SP4补丁升级
数据库服务器:进入C:\SQL2KSP4目录,如图:

双击Setup.bat文件。如图:

跟据提示点击下一步,如图

点击“是”如图:

点击下一步,如图:

点击下一步,如图:

选择“忽略安全威胁警告,保留密码为空”点击确定(此处以SA用户没有密码为例)如图:

点击确定,如图:

点击“确定”,完成SQL SP4补丁升级,如图:

1.1.2.2. SQL AWE补丁升级
从网站下载SQL AWE补丁,本文以下载[SQL2000-KB899761-v8.00.2040-x86x64-CHS.exe]为例数据库服务器:双击

如图:

点击下一步,如图:

选择“我同意”点击下一步,如图:

点击下一步,如图:

点击下一步,如图:

点击下一步,如图:

点击完成,完成AWE升级。
1.2. 修改系统启动参数
数据库服务器:打开C:\boot.ini 文件,设定 /PAE 参数后保存重新启动。如图

1.3. 开启SQL AWE 功能
数据库服务器: 开始--程序--Microsoft SQL Server--查询分析器:

点击“确定”
在SQL查询分析器中输入下列指令,来启动SQL Server的AWE功能(这里内存设置为32G):
1
sp_configure
'
show advanced options
'
,
1
2
RECONFIGURE
3
GO
4
sp_configure
'
awe enabled
'
,
1
5
RECONFIGURE
6
GO
7
sp_configure
'
max server memory
'
,
32000
8
RECONFIGURE
9
GO
10
sp_configure
'
allow updates
'
,
1
11
RECONFIGURE
WITH
OVERRIDE
12
GO

1.4. 为SQL启动用户设置本地安全策略
数据库服务器:控制面板--管理工具--本地安全策略--安全设置--本机策略--用 权限分配右边窗口中选择“ 存锁定页面”

在“内存中锁定页”页面中新增用 或组,加入SQL-SERVER服务的启动帐号(系统默认启动帐号是administrators。)

在命令提示符下输入 gpupdate,回车后更新策略

1.5. 重新启动SQL Server服务使设定生效
重新启动SQL Server服务使AWE扩展内存功能设定生效,如图:
停止SQL Server服务

重启SQL Server服务

1.6. 关闭SQL Server的allow updates功能
数据库服务器: 开始--程序--Microsoft SQL Server--查询分析器:

点击“确定”
在SQL 查询分析器中输入下列指令,来关闭SQL Server的allow updates功能:
1
sp_configure
'
allow updates
'
,
0
2
RECONFIGURE
WITH
OVERRIDE
3
GO

1.7. 查看SQL-SERVER内存设置后的情况
数据库服务器: 开始--程序--Microsoft SQL Server--查询分析器:

点击“确定”
在SQL 查询分析器中输入下列指令,来查看SQL-SERVER内存设置后的情况:
1
use
master
2
go
3
select
*
from
sysperfinfo
where
counter_name
like
'
%Memory%
'
4
go

查询结果中查看
Target Server Memory(KB) SQL目标内存情况
Total Server Memory(KB) SQL内存扩展后使用情况
2. 关闭SQL AWE功能
数据库服务器: 开始--程序--Microsoft SQL Server--查询分析器:

点击“确定”