系统获取数据性能优化方案,希望朋友们能够给出一些建议

本文详细介绍了通过优化数据连接、改进索引策略及实施数据缓存来提升快车数据获取性能的方法。分析了当前程序及数据库现状,提出了在EJB端进行数据缓存、建立位图索引与发布日期索引、使用数据连接池等措施,以减少数据库访问频率和提高整体性能。

提升快车数据获取性能建议解决方案

一般性数据性能提升途经

1.连接

提升方式:

  1. 使用数据连接池,异步连接
  2. 使用语句分析工具进行查询语句分析,调整语法以提高索引利用程度.
  3. 尽量避免每次返回大量结果集

 

2.索引

改善方式:

针对表连接建立索引

3.数据缓存

  1. 调整数据缓存大小,提升缓存命中率
  2. 将热点表放入keep buffer cache, 防止其被挤出default pool 。从而减少physical read所带来的I/O开销。
  3. 使用Result Cache进行结果集缓存

 

快车获取数据解决方案分析

程序现状

  1. 每十秒根据发布时间得到最新的最多两百条数据
  2. 货物信息状态可能会随时发生变更,状态由0变成1,发布时间变更为当前时间.
  3. 使用EJB直接操作,获取数据,继而向客户端返回数据请求,未使用连接池,数据缓存.

 

数据库现状(非确定)

  1. 针对表连接做了唯一索引(即主外键关联)
  2. 库缓存性能情况:

NAMESPACE

PINS

PINHITS

RELOADS

INVALIDATIONS

PINHITRATIO

SQL AREA

119389

116961

22

0

97.9663118042701

TABLE/PROCEDURE

201813

200076

1

0

99.1393022253274

BODY

47

39

0

0

82.9787234042553

TRIGGER

695

693

0

0

99.7122302158273

INDEX

31

0

0

0

0

CLUSTER

668

657

0

0

98.3532934131737

OBJECT

0

0

0

0

100

PIPE

0

0

0

0

100

JAVA SOURCE

0

0

0

0

100

JAVA RESOURCE

2

1

0

0

50

JAVA DATA

6

4

0

0

66.6666666666667

 

PINS

PINHITS

RELOADS

INVALIDATIONS

REPARSING

329089

324844

23

0

1.28992461005989

命中率到了接近99%,但是由于数据库是开发测试用,具体使用性能不能作准

共享池大小:

POOL       SIZE

shared pool    125829120

改善建议

  1. 针对十秒内获取的两百条数据在EJB端进行缓存,返回给客户端的即EJB上存储的数据,而非每次即时的向数据获取
  2. 在货物信息表状态列建立位图索引,在发布时间上建立索引,提升筛选速度.
  3. 建立数据连接池,减少创建Connection消耗.
  4. 更改读写同步的请求方式,以提升查询速度.

想要完全避免是不可能的,主要还是避免频繁查询数据库,尽量将数据缓存在程序端,这样就能尽可能的避免等待资源

  1. 将查询的热点表(KC_INFO)加入到keep buffer,减少物理读取过程.
  2. 在客户端提交变更请求并执行后,非必要应避免commit,这样避免频繁写入I/O,与数据读取竞争资源,oracle优先于写入.

 

 

 

 

转载于:https://www.cnblogs.com/huanju/archive/2010/06/04/1751484.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值