当前位置:数据库 > Oracle >>

Oracle Database 11g性能优化攻略之优化表性能

Oracle Database 11g性能优化攻略之优化表性能
 
攻略1-1 创建具有最优性能的数据库
问题描述   www.zzzyk.com  
你认识到,最初创建数据库时,有一些属性(如果启用了的话)将会对数据库中表的性能和可用性产生长远的影响。具体来说,创建数据库时,需要做下面这些事情:
 强制数据库中创建的每一个表空间都必须是本地管理的。本地管理表空间能比已经被弃用的字典管理技术提供更好的性能。
确保数据库为每个用户自动分配一个默认的永久表空间。这可以保证在创建用户时,自动分配一个默认的表空间,而不是SYSTEM系统表空间。你不能让用户总是将对象建在SYSTEM表空间中,因为这样会对性能和可用性产生负面影响。
确保数据库会为每个用户自动分配一个默认的临时表空间。这可以保证在创建用户时,自动分配一个临时表空间,不是SYSTEM表空间。你不能总是让用户使用SYSTEM表空间作为排序运算的临时表空间,因为这样会对性能和可用性产生负面影响。
解决方案
使用类似下面这样的脚本创建遵循合理标准的数据库,这就为数据库的高性能打下了良好的基础:

上面这段CREATE DATABASE脚本通过实现下列功能,为数据库的性能打下良好基础。
通过EXTENT MANAGEMENT LOCAL子句,将SYSTEM系统表空间定义为本地管理表空间。这确保了数据库中创建的所有表空间都是本地管理的。在Oracle Database11gR2或更高版本中,EXTENT MANAGEMENT DICTIONARY子句已经被弃用了。
为创建时没有显式定义默认表空间的用户,定义一个默认的表空间USERS。这可以防止为用户分配SYSTEM系统表空间作为默认表空间。创建将SYSTEM作为默认表空间的用户,对性能有负面影响。
为所有用户定义一个默认临时表空间,名为TEMP。这可以防止为用户分配SYSTEM表空间作为默认的临时表空间。创建将SYSTEM作为默认临时表空间的用户,对性能有负面影响,因为这会造成SYSTEM表空间中的资源争夺。
良好的性能始于正确的数据库配置。以上推荐的这些配置有助于为表数据创建一个可靠的基础构造。

工作原理
合理地配置并创建数据库有助于保证数据库的优良性能。尽管确实可以在创建数据库之后再来修改其功能,但是,通常的情况是,写得很差的CREATE DATABASE脚本将会对数据库性能产生永久的影响。生产环境中,数据库有时很难有机会停机,对配置不恰当的地方进行重新配置。如果可能的话,最好是从创建数据库开始,在创建环境的每一步都仔细考虑性能问题。
创建数据库时,还需要考虑影响可维护性的功能。容易维护的数据库能正常运行更长时间,而这也正是总体性能的一个重要部分。“解决方案”部分的CREATE DATABASE语句同时还考虑了下面这些可维护性方面的特性。
创建一个自动的UNDO表空间(自动撤销管理通过设置UNDO_MANAGEMENT和UNDO_TABLESPACE初始化参数来启用)。这使Oracle可以自动管理回滚段,你也就不必定期进行监控和微调了。
按照环境中的一定标准,将数据文件放到相应文件夹中。这有助于维护和管理,从而使数据库具备更好的长期可用性,从而获得更好的性能。
将数据库管理员(DBA)相关用户的密码设置为非默认值。这可以进一步确保数据库的安全性,从长远来看也会影响到性能(如果有攻击者入侵数据库并删除数据,那么性能也将会受到损害)。
创建三组联机重做日志文件,每组两个成员,大小适合事务加载。重做日志文件的大小直接影响切换的频率。如果重做日志切换太过频繁,就会导致性能下降。
你应该花点时间确认每一个数据库都是按照广泛认可的标准创建的,这有助于保证数据库具有坚实的性能基础。
如果你接手了一个数据库,并且想检查一下默认的永久表空间设置,可以使用类似下面的查询:
如果你需要修改默认的永久表空间,按照下面这样来做:
要检验默认临时表空间的设置,使用这个查询:
要修改临时表空间的设置,可以像下面这样来做:
可以通过下面这个查询来检验UNDO表空间的设置:
如果你需要修改重做(undo)表空间,首先创建一个新的重做表空间,然后使用ALTER SYSTEM SET UNDO_TABLESPACE语句。
 

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,