99网
您的当前位置:首页SQL Server

SQL Server

来源:99网
维普资讯 http://www.cqvip.com

王承文 对于UNIX上应用RAW DEVICE的参数. 要求此值大于90%。当命中率低于标准时, 一、SQL Server数据库的优化 SQL Server数据库的优化方法很多,比 如优化内存、优化数据库磁盘I/O等等。下 面就各种优化措施做些简单的探讨。 1.优化内存 (】)DB—BLOCK—BUFFERS(高速缓冲 区块数) 此参数是定义内存中高速缓存的数据 库块缓冲区的数目。用户使用的所有数据 都要通过DB—BLOCK—BUFFERS数据高速 需要增加DB—BLOCK BUFFERS.使保证命 中率为80%以上。 增加高速缓冲区数目的步骤如下: ①设置db bl0ck—lm—extended—staei ti =750; ②重启动数据库; ③经过一段时间的运行后查询: SELECT 250★TRUNC(R0WNUM/ 250)+1 250)+1) to 250★(TRUNC(ROWNUM/ 缓存.高速缓存越大,SQL Server可装入内 存的数据就越多,磁盘的I/O就越少,系统 的性能越好。 Interval”.SUM(count) Buffer Cache Hits 通过计算机高速缓冲区命中率.我们 可以知道够。 SELECT NAME,VALUE FRoM VSRECENT BUCKET DB BLOCK BUFFERS是否足 25O): GR0Up BY TRUNC(R0WNUM/ 查询结果. Interval FR0M V¥SYSSTAT WHERE NAME IN( db block gels , consistent gets , physical reads ) 1 to 250 251 to 500 1608O 10950 710 查询结果: NAME VAI UE 501 to 750 根据查询的结果,DB~BLOCK— db block gets consistent gets 24372082 2.493E+09 BUFFERS增加前500时,高速缓冲区命中 率有较大提高。再加大此值,对系统的提高 较少.但却浪费了内存资源。所以我们在保 physical reads Hit Ratio=97 9% 50606953 证命率为80%以上的情况下.可以考虑减 少一定数量的DB—BLOCK BUFFERS。 减少高速缓冲区数目的步骤如下: 计算高速缓冲区命中率的公式: Hit Radio:1一(physical reads/(db block gets+consistent gets)) ①设置db bl0ck—lru tati tics:true: ②重启数据库: 对于通常的环境,要求此值大于80%; ——谴肛知 嘲 53 维普资讯 http://www.cqvip.com

③经过一段时间的运行后查询; SELECT 250★TRUNC(R0WNUM/ 查询结果: Gets Getmi s 25O)+1 TO 250 ★ ITRuNc 1 3502532 765065 5.6660854 (R0W UM/250)+1) lnte ̄,al .SUM(count J”Buffer Cache Hits 此Rate应小于1 5,否则要加大 SHARED PO0L—S1ZE。 FR0M V¥CURRENT—BUCKET WHERE R0WNUM>O (3)LOG BUFFER(重新Et志缓冲区大 小) GR0UP BY TRUNC f 1t0WNUM/ 此参数是用来定义内存中重做日志缓 冲区的大小,当此值设置太小时,LGWIt进 250); 查询结果: lnterval Buffer Cache Hits 程会频繁将LOG BUFFER中的数据写人磁 盘,增加1/0的次数,影响系统性能。 查v¥sYS AT表: l t0 250 251 to 500 4900 2l2O SELECT NAME. 8SYS5TAT VALUE FR0M V 5O1 t0 750 2865 WHERE NAME: redo log space re— 根据查询结果,减少250个DB quests ; BLOCK—BuFFERs后对缓冲区命中率的影 响较小。因此,我们可以把DB—BLOCK BUFFERS参数减小250。 (2)SHARED—POOL SLZW(共享缓冲 区大小) 查询结果: NAME VALUE redo log space reques|s 261 VALUE值应接近于零,否则每次LOG LIBRARY BUFFERS增大5%,再执行上面的查询,直 此参数是定义内存中CACHE(存放共享SQL和PL/SQL)和DA— 到VALUE接近零 (4)SORT AREA—SIZE(排序区大小) TA DIcⅡ0NARY CACHE( ̄放数据字典对 象信息)的字节数。LJBRARY CACHE和 DATA DIcT10NARY CACHE的大小只能通 此参数是用来指定排序的每个用户进 程内存的大小,它是PGA的一部分。对于含 有大量索引数据的排序,内存中的SORT 过SHARED POOL—SIZE间接调整。 检坝0 LIBRARY CACHE: SELECT SuM(REL0ADS)/SUM(PINS) ★1O0 FR0M V¥UBRARYCACHE; AREA可能不能完全存放下全部排序数据, 此时ORACLE不得不在磁盘上完成这一处 理,这样将引起大量的磁盘操作而影响系统 性能。V¥SYSSTAT表记载有系统的排序信 查询结果: SUM(RELOADS)/SUM(PINS)★lO0 息,通过查看此动态视图可确定是否有大量 的排序是在磁盘上完成的,从而决定修改此 参数;此参数可以动态调整。ALTER SES— SION改变当前会话,ALTER sYsTEM DE— FERltED为数据库的所有后继连接更改此 .59195703 此值应小于1,否则要加大sHARED— P00L SIzW。 检测DATA DIcT10NARY CACHE: SEI正cT SUM【GETS) Gets , SUM 【GETM1SSES) Getmisses . 参数 SELECT NAME,COUNT(★)FROM V ¥SYSSTAT WHERE NAME LIKE s0rt% GR0UP BY NAME: SUM(GETM1SSES)/SuM(GETS)★IO0 rate FR0M V¥R0WCACHE: 查询结果: 维普资讯 http://www.cqvip.com

NAME G0uNT(*A-) 4.优化数据库对象 数据库对象包括表、聚集、索引、表空间 sort disk J 24549 等 他们建立时存储参数的确定对于以后数 据空间是紧密相关的,不适当的存储参数将 导致空间动态分配并无扩张,表的分区 增多,链式记录行的出现,所有这些都会对 性能带来严重的影响 通过对表中数据记录增长的定期检查 和预测,合理地调整初始分区INITNAL和 扩展分区NEXT值,表空间元动态 扩展,降低因I/O增加而造成的性能下 降。根据表中数据记录的实际情况,合理对 PCTFREE和PCTUSED存储参数进行调 整。一般说来,对一个很少修改的表态表, PCTFREE设为0,而PCTL'SED设为99,能 节约存储空间 当对于一个需常常修改记录 的表来说,PCTFREE设为15,PcTusED设 sorts(memory) sorts(rows) 611780 294742953 如果有相当多的排序在磁盘上进行,应 增大SORT AREA SIZE的数值。 2.优化数据库磁盘I/O 数据库中大部分操作因为存储或检索 数据而需要读/写磁盘,故磁盘I/O次数多 了会使系统性能降低,而实际I/0的次数 又与数据文件的分配方式密切相关。以下 是建立和优化数据文件的基本准则,适用于 在数据库设计和性能优化方面的考虑。 a.为表和索引分别建立不同的数据库 表空间,分别单独存放: b.将袁空间和索引空间尽量存放在不 同的磁盘上; c将数据库的redo日志文件和数据库 的回滚段表空间尽可能在不同磁盘上存放; d将频繁访问的表、索引所在表空间 放在单独的磁盘上; e.为60更加台适些。但这也不能一概而论,理 想的情况是在程序运行稳定一段时间后,通 过ANALYZE TABLE命令来收集表的统计 量,得到记录的平均长度,然后根据定义的 块长就能估算出PCTUSED的值。 同样用ANALYZE TABLE命令收集到 的统计值,还可以查出有多少链式记录行, 当链式记录行很多时,采用的唯一修复方案 将SQL Server的可执行文件和数据 库文件分别放在单独磁盘上。 3.优化锁冲突 由于SQL Server对一事务处理发生死 锁没有自动测定时退出的功能,故当一事务 就是备份并导出表,删除后再导入表。 以上我们仅从几个方面探讨了如何对 SQE Se—er数据库进行性能优化、实际中还 执行时产生死锁时,需要数据库管理员能及 时检测出死锁的事务,执行的SQI 语句以 及获得执行该死锁事务的用户名并将死锁 用户强制退出。同时协助开发人员找出死 锁的原因和产生死锁的地方。 大多数锁冲突产生来自于应用程序,要 解除死锁引起的竞争,就需要释放被占用的 资源,可以考虑由以下几种方法来解决: 有很优化方法,比如优化SQE语句、优化回 滚段、优化重做日志文件等等。 二、SQL Server数据库的安全保护策略 数据库安全保护的主要任务就是防止 非法用户访问或合法用户越权访问数据库 中的数据。另一方面,为了有救地打击对数 据库的非法访问和越权访问,数据库系统往 往还提供了对机密数据加密和对用户的操 作审计跟踪的功能。下面就一些实践教学经 a.让锁的占有自己作确认或回滚段(ROLLBACK)操作; (COMMIT) b.通过命令强行删除引起锁的对话 (SESSION)。ALTER SESSION KILL SES— S10N SID,SERIAL# : 验谈谈windows NT环境下SQE Server数据 库的安全保护策略。 I.SQL Server的用户身份验证策略 c.强行删除锁的占有者的UNIX进程, 但这不是一个好方法,特别是在多线程的环 境下。 SQL Server使用服务器登录标识和数 据库用户名来记录合诛用户,并由系统管理 ——嚏熙扣乒;烈 55 维普资讯 http://www.cqvip.com

员(SA)、数据库拥有者(DBO)恰当授权来 予其他权限可将其拥有的权限授予其他用 户。 合法用户在数据库中能从事的工作、最 后由SA、DBO或数据库对象所有者授权来 3 SQL Server的角色管理 角色是一定权限的代表,用户只要成为 某个角色就拥有该角色代表的所有权限。角 用户对数据库对象的访问范围和访问 方式。 登录标识是服务器一级的,它是SQL Server接收用户登录连接时识别用户的标 识,登录标识信息存放在master数据库的 %vslo西ns系统中 SQL Server用windows NT  ̄色是简化用户管理的重要策略,目前大部分 系统都采用了,SQL Server安装成功后,系 统预定义的SQL Server(系统管理员)角色 有7种,常用的有: c 1)sysadmin(System Adminiatrator)角 的安全机制来验证用户的登录访问,即用户 可以使用同一个用户名和口令登录到wiⅡ一 dows NT和SQL Server 因此,Windows NT 色可以用SQL er,S'er执行任何任务; (2)dbereator(Database Creators)角色 的域用户账号以DOMAIN user me格式 作为SQL Server登录标识自动加入到sys 1ogins系统表中,所以当Windows NT用户 可以刨建个人数据库; (3)securityadmin(Secu ̄tv Administr tor)角色可以管理服务器的用户及注册; (4) serveradmin(Sel ̄,er Administrat0r) 请求连接SQL Server时,系统直接将其映射 为SQL Server的缺省登录标识完成登录,如 果Windows NT用户是Administrator,则映 射为SA身份登录SQL Server服务器;第二 种是标准安全模式,在此模式下,SQL Server 角色可以配置服务器设置。 创建新的数据库时,系统预定义的数据 库角色有9种,常用的有: c 1)db owneir(Database Owner)数据库 将自行验证所有的登录连接请求,用户要想 登录SQL Server,必须分别在wiⅡdows NT 所有者角色可以对该数据库执行任何操作 (2)db aceessadmin(Database Access 和SQL Server中有台法登录标识;第三种是 混合安全模式,在此模式下,用户可以同时 采用上面两种方式登录SQL Server。 Administrator)角色可以管理数据库用户列 表; (3)db.datareader(Database Data Read. 数据库用户是有权在某个数据库中完 成某些操作的用户,它是数据库一级的,即 er)角色可以查看数据库中的任何数据; (4)db datawlrter(Database Data Writer) 不同的数据库有不同的用户群,一个数据库 中的用户不能访问另一个数据库中的数据, 角色可以插入、修改、删除所有表中的数据; (5)db ddladmin(Database Data Defini. 数据库用户的信息存储在每个数据库的 sysusers系统表中。在SQL Server巾创建一 tion Language Administrator)角色可以创建、 修改、删除数据库的任何对象。 此外还有两种很有用的数据库角色:第 一个数据库时,系统自动生成两个用户:DBO 和guest,SA和DBO可以为已建立登录标识 个是“公共角色 (public),每个数据库均 的用户创建数据库用户(其名可以和登录标 识相同,也可以不同,建议使用相同的用户 名,以便用户记忆)。 2.SQL Server的用户权限管理 SQL Server的其他数据库系统一样.也 有一个公共角色,且每一个数据库都自动属 于这个角色.所以对这个角色分配的任何权 限都将对每一个数据库用户生效。教学环境 下往往只要恰当设置public角色的权限就 可以了;第二个是”应用程序角色”,它被分 配蛤一个应用程序,该程序只能访问其必须 访问的数据.被赋予这种角色的用户只能通 是通过用户权限来控制用户对数据库的越 权访问。根据用户的不同权限层次,可以将 用户分为四类:系统管理员、数据库所有者、 数据库对象所有者和其他用户。每一层次 的用户都自动拥有一定的权限,他可以被授 56 过程序访问数据.用户一旦脱离这个程序就 无法访问数据了。除以上角色外,管理员还 可以自定义数据库角色。 舞 

因篇幅问题不能全部显示,请点此查看更多更全内容