ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据库访问优化法则详解之利用更多的资源

数据库访问优化法则详解之利用更多的资源

原创 Linux操作系统 作者:ygzhou518 时间:2012-02-14 11:02:01 0 删除 编辑

数据库访问优化法则详解之利用更多的资源

利用更多的资源

可利用更多的资源,达到优化数据库的目的。

客户端的多进程并行访问

多进程并行访问是指在客户端创建多个进程(线程),每个进程建立一个与数据库的连接,然后同时向数据库提交访问请求。当数据库主机资源有空闲时,我们可以采用客户端多进程并行访问的方法来提高性能。如果数据库主机已经很忙时,采用多进程并行访问,性能不会提高,反而可能会更慢。所以,最好与DBA系统管理员进行沟通后再决定是否采用这种方式。

例如:我们有10 000个产品ID,现在需要根据ID取出产品的详细信息,如果单线程访问,按每个IO5ms计算,忽略主机的CPU运算及网络传输时间,我们需要50s才能完成任务。如果采用5个并行访问,每个进程访问2000ID,那么10s就有可能完成任务。

那是不是并行数越多越好呢?开1000个并行,是否只要50ms就能搞定?答案肯定是否定的。当并行数超过服务器主机资源的上限时性能就不会再提高,如果再增加,反而会增加主机的进程间调度成本和进程冲突概率。

以下是一些如何设置并行数的基本建议:

1)如果瓶颈在服务器主机,但是主机还有空闲资源,那么最大并行数取主机的CPU核数和主机提供数据服务的磁盘数两个参数中的最小值,同时要保证主机有资源做其他任务。

2)如果瓶颈在客户端处理上,但是客户端还有空闲资源,那建议不要增加SQL的并行,而是用一个进程取回数据后,在客户端起多个进程处理即可,进程数根据客户端的CPU核数计算。

3)如果瓶颈在客户端网络,那建议做数据压缩或者增加多个客户端,采用mapreduce的架构处理。

4)如果瓶颈在服务器网络,那需要增加服务器的网络带宽或者在服务端将数据压缩后再处理了。

数据库的并行处理

数据库的并行处理是指客户端一条SQL的请求,数据库内部自动分解成多个进程并行处理,如图3-8所示。

 

 

并不是所有的SQL都可以使用并行处理,一般只有对表或索引进行全部访问时才可以使用并行。数据库表默认是不打开并行访问的,所以需要指定SQL并行的提示,如下所示:

select /*+parallel(a,4)*/ * from employee;

并行的优点:

使用多进程处理,充分利用数据库主机资源(CPUIO),提高性能。

并行的缺点:

1)单个会话占用大量资源,影响其他会话,所以只适合在主机负载低的时期使用。

2)只能采用直接IO访问,不能利用缓存数据,所以执行前会触发将脏缓存数据写入磁盘的操作。

注:(1)并行处理在OLTP类系统中慎用。使用不当会导致一个会话把主机资源全部占用,而正常事务得不到及时响应,所以其一般只是用于数据仓库平台。

2)一般而言,对于百万级记录以下的小表采用并行访问的话,并不能提高,反而可能会更差。

写在最后:性能优化是一门艺术,选择了正确的方法可以让你事半功倍。本文的优化法则带给你的是正常思路,也可以说是基本知识。当然,也许有很多专家提出一些新的“奇门武功”,但往往不是常人可掌控,甚至会使人“走火入魔”,Oracle数据库中的一些配置参数优化就曾经让许多人“走火入魔”。在这里还需要强调一点,技术人最容易犯的错误是过度优化。

切记,性能优化是无止境的。当性能达到业务期望时,就不要再过度优化了,因为优化的成本会越来越高,过度优化会让系统的可维护性及可扩展性降低。

 

 

本文选自《Oracle DBA手记3:数据库性能优化与内部原理解析》一书

本书详细信息: http://space.itpub.net/?uid-13164110-action-viewspace-itemid-709596


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24867586/viewspace-716216/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Database Statistics
请登录后发表评论 登录
全部评论

注册时间:2011-02-11

  • 博文量
    167
  • 访问量
    359388