数据库优化建议

2022-04-03 05:06:30   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《数据库优化建议》,欢迎阅读!
优化,建议,数据库
1 表空间分离

建议首先表和索引的表空间分离,某些不常用的日志表与业务表的表空间相分离 建表指定表空间示例: Create table .. (

Cs number(6), )

Tablespace ;

建索引指定表空间示例: Create index .. on tab1(col,..) Tablespace ..;

2 建表和索引时指定起始数据段存储

为了在一定程度上减少数据库为对象分配存储空间的工作可为某些大存储对象,某些表和索引指定初始存储段大小,预先将空间分配给对象。这主要在实际发布部署中进行,前期需要监控对象增长状况时请不要使用,如开发环境。预先分配存储段大小的示例如下: Create table .. (

Xh number(2), )

Storage (initial 5m); --初始化段设为5m

3 定期收集对象状态信息

Oracle决定访问路径基于对象的状态信息随着时间的积累,有可能由于对象状态不及时造成访问路径的选择问题。

收集状态需要定期执行,如每月,可使用oracle的定时任务方式,收集状态语句示例: exec dbms_stats.gather_schema_stats(schema_name,dbms_stats.auto_sample_size); dbms_stats.auto_sample_size可用100代替,表示数据的采样集为全部。

4 数据库参数调整

Db_cache_size:数据缓冲区,调大(尽可能大些,防止物理读)



Shared_pool_size:共享池,调大(sql解析、数据字典等)需要跟踪是否够用[SELECT * FROM V$SGASTAT WHERE NAME = 'free memory'

AND POOL = 'shared pool';检查共享池是否尚有空闲空间

]



Pga_aggregate_target:全局排序区,调小,原值400多兆。




5 归档模式测试

目前的测试环境未打开数据库的归档模式,由于实际环境中可能用户有基于安全的要求需要打开归档模式,而该模式会对数据库性能有一定影响。建议有条件进行相关测试。

6 数据库对象大小监控

数据库对象存储通过段分配实现,可通过如下语句检查:

Select segment_name,segment_type,sum(bytes)/1024/1024 size-m from Dba_segments where owner = ? Group by segment_name,segment_type;

注意,这是数据库对象已得到的存储段空间,但并不代表实际数据占用的空间,尤其是对指定了初始段大小的数据库对象。但仍可用于大对象的检测

7 其他

表缓存,可将常用的表(如代码表、参数表cache在缓冲区中)Alter table cache 对象缓存,常用的procedurefunctiontriggersequence可考虑固定到共享池中,dbms_shared_pool.keep

使用sequence可适当调大cache值,但如果数据库关闭或异常,cache中值将被跳过; Sql脚本有条件、循环或复用的可考虑使用绑定变量,而不要每次直接将变量固定写入sql脚本,这样可减少数据库对类似脚本的分析时间;

定期重建索引,由于数据的更改删除,一段时间后索引可能碎片增多,效率下降,可考虑定期重建索引,alter index rebuild

8 数据库监控

Oracle提供了statspack这个工具对自身进行监控,该工具使用参见spdoc.txt 可结合测试工具使用,在测试开始前截取系统快照,运行测试,测试结束后再截取系统快照,以两个快照为基准生成报告文档,重点关注报告中的topsql 0 创建用户:@%ORACLE_HOME%\rdbms\admin\spcreate 1 连接perfstat用户

2 执行快照:exec statspack..snap 3 执行应用

4 执行快照:exec statspack..snap

5 @%ORACLE_HOME%\rdbms\admin\spreport

@%ORACLE_HOME%\bin目录下

注:用sql plus执行; 当创建用户时设置密码为数字时用””引住;

9 Lob存储放在单独的表空间; 10


数据库性能调优

数据库往往可能是应用性能的主要瓶颈,因此应确保数据库在最佳的性能下 运行。在J2EE中,JDBC程序的性能主要由两个因素决定,一是数据服务器本身 的性能,如数据库管理系统、数据库结构设计,以及所编写的SQL语句,都很大 程序上影响JDBC程序的性能;另一方面,与数据库服务器相对独立的JDBC API 的使用也很大程度上影响着JDBC的性能。关于数据库服务器配置、数据库管理 系统管理数据库结构设计或者SQL的性能超出这里的讨论范围,这里只做简单 论述,提供一些参考。 以下是一些提高数据库性能通用的建议以及Oracle 数调整的一个实例: 良好的数据库设计 跨磁盘的负载平衡;通过数据的规范化达到快速 检索数据的目标;索引会提高查询的性能,但会降低DML 操作的性能, 因为DML 操作必须维护索引,因此设计人员需要和 DBA 以及用户一 起来平衡快速地查询数据和快速地改变数据的得失。 优化磁盘I/O: /O 瓶颈是最容易识别的性能问题。跨所有可用的磁盘 均匀地平衡I/O,可以减少磁盘存取的时间。对于较小的数据库和不使 用并行查询选项的那些数据库,要确保不同的数据文件和表空间跨可用 的磁盘分布。可以调整DBWR(数据库写进程),增加写带宽;选择合适 的文件系统类型,Solaris 允许选择文件系统。文件系统有不同特性, 它们用于存取数据的技术对数据库性能有实质性的影响 控制Checkpointing 的频率

Channel SE

WLS 应用性能考虑及调优v0.85 8

在测试调优时可利用数据库监控工具来收集数据库性能数据,包括缓存 命中率、磁盘操作特征(如排序速率、表扫描速率)、SQL 响应时间和数 据库表活动。例如,可以使用 Oracle 9i 性能管理器来监控这些数据。 Oracle 参数优化(Oracle 9.2.0.1.0 on a 4X 1.6 GHz Intel Pentium 4 Xeon)

下面是一个调整后的Oracle 参数值:(仅供参考)

# tuning parameters db_name=specdb

control_files = D:/oracle/oradata/specdb/cntrlspecdb compatible=9.2.0.0.0

cursor_space_for_time = TRUE db_block_buffers = 524288

db_file_multiblock_read_count = 128 db_files = 256 dml_locks = 2000

enqueue_resources = 2000 log_buffer = 16777216

log_checkpoint_interval = 2147483647 processes = 1000 open_cursors = 2000

shared_pool_size = 64000000 sessions


本文来源:https://www.wddqxz.cn/582efbd5b9f3f90f76c61b2b.html

相关推荐