8. 存储过程
DB2中的Stored Procedure Builder可以产生存储过程,运行并测试存储过程。存储过程可以包含巨大而复杂的查询或SQL操作,经过编译后存储在DB2数据库中。用户在多次使用同样的SQL操作时,可以先把这些SQL操作做成存储过程,在需要用到的地方直接引用其名字进行调用。存储过程在第一次执行时建立优化的查询方案,DB2 将查询方案保存在高速缓存里,以后调用运行时可以直接从高速缓存执行,省去了优化和编译的阶段,节省了执行时间,从而提高效率和系统利用率。
最优的查询方案按照某些标准选择往往不可行,要根据实际的要求和具体情况,通过比较进行选择。DB2提供的Query Patroller可以对不同的查询方案的查询代价进行比较,通过追踪查询语句,返回查询不同阶段的系统开销,从而作出最佳选择。DB2提供的 Performance Monitor也对整个数据库系统的性能进行监控,包括I/O时间、查询次数、排序时间、同步读写时间等等。
数据库系统的并发控制也能影响系统性能。多个用户的同时操作可能导致数据的不一致性,DB2为了防止同时修改造成数据丢失和访问未被提交的数据,以及数据的保护读,采用Lock机制来实现控制。
DB2中可以对表空间、表、表列和索引加锁。锁的粒度越大,锁越简单,开销小,并发度低;粒度小,锁机制复杂,开销大,并发度高。大型系统在并发处理中如果遇到所要分配的资源处于锁定状态,系统会把进程挂起等待。如果一个很耗时的查询操作工作于一个经常使用的表上,此时使用表一级锁,意味着整个系统都要等待你的查询结束以后才能够继续运行。所以在复杂查询中,尽量避免使用表一级锁。如果有这一类的需要该怎么办呢?可以利用视图来解决这一类问题。视图避免了对表的直接操作,同时有能够保证数据库的高效运转。
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 性能 优化 数据库 基于 查询 数据 系统 可以 索引 信息 |
注册
个人空间
