来源:http://www.soaspx.com/dotnet/sql/mssql/sql2000/sqlserver2000_20110919_8067.html
今年年初的时候一个客户打电话抱怨系统随着时间的推移越来越慢,在正常情况下还能够忍受,如果系统出现数据问题需要重新执行,那可以想象在某一个时间急着需要报告而系统确是默默唧唧在拉破车,换谁都无法忍受。随之,我们调查这个问题,系统本身的设计就没有考虑到有如此大的机构数和高的频度,所以造成了数据库膨胀得特别快,特别是几个主要存放数据表更是比较吓人。
年份 |
数据量 |
比上年增长率 |
||
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目录,如图:
点击“是”如图:
点击下一步,如图:
点击下一步,如图:
选择“忽略安全威胁警告,保留密码为空”点击确定(此处以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.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.7. 查看SQL-SERVER内存设置后的情况
数据库服务器: 开始--程序--Microsoft SQL Server--查询分析器:
点击“确定”
在SQL 查询分析器中输入下列指令,来查看SQL-SERVER内存设置后的情况:
查询结果中查看
Target Server Memory(KB) SQL目标内存情况
Total Server Memory(KB) SQL内存扩展后使用情况
2. 关闭SQL AWE功能
数据库服务器: 开始--程序--Microsoft SQL Server--查询分析器:
点击“确定”
在SQL 查询分析器中输入下列指令,来关闭SQL-SERVER AWE 功能:
3. SQL AWE功能测试案例
在一台内存为6.0G的服务器上开启了AWE功能,SQL Server2000内存扩展到5.3G,通过测试不同的场景速度上有了成倍的提升。在到正式环境后,性能上也得到了很大的提升,到现在客户没有打电话进行抱怨了。
测试机配置: |
CPU:6*2.0GHZ,RAM:6G |
SQL内存扩展 |
SQL寻址内存扩展为5.3G 左右 |
测试项目 |
并发处理AutoDataCatch,校验,分析报表,前台地区汇总 |
并发测试过程 |
|
AutoDataCatch |
2011年3月7日日报数据采集,汇总,归并(全国) |
测试结果:内存末扩展前,AutoDataCatch采集同样批次,同样数据量日报需6小时左右,内存扩展后日报采集,汇总,归并只需2小时左右。 |
|
校验 |
3月涉农月报校验,校验包含:逻辑校验,总分校验;(全国) |
测试结果:内存扩展前,同样报表校验需1.5-2小时;内存扩展后校验50分左右; |
|
汇总 |
前台汇总涉农季报A2333,A1333 |
测试结果:由于前台汇总组件末更新,导致汇总报错。(需要更新汇总组件) |
|
分机报表 |
2月14日头寸分析报表 |
测试结果:内存末扩展前,头寸分析报表生成20分钟左右,内存扩展后:头寸分析报表生成5分钟; |