您的位置:首页 > 数据库

引起数据库性能问题的因素

2013-10-17 20:13 218 查看

引起数据库性能问题的因素

1.软件设计对数据库的影响
1.1软件架构对数据库性能的影响
     如果一套系统的并发数非常大,常会考虑搭建一个中间层,其目的就是用来构建一个缓冲池,在数据库之前对大量的并发进行处理,以便于每次只有少量的用户连接到数据库中,其他的用户在缓冲池的队列中等待。
1.2软件代码的编写对数据库性能的影响
1.2.1人为的在SQL代码中加入Hint来约束SQL的执行计划
 案例1:开发人员为了要求每次对一个表做操作时,都使用索引,于是在代码中强行加入了Hint约束SQL的执行计划
             select /*+ index(t1 ind_t1 )*/ col1,col2 from t1 where col1>.....and col1<.....,系统上线后,开始没有问题,后来用户反映查询非常慢。最后对比最近的数据发现,近期的数据在创建索引的列上的值重复率要远远高于以前,因此Oracle在选择索引之后,比以前读取了更多的索引块和数据块,造成了大量的I/O操作。
            数据库里的数据不是一成不变的,最好让数据库自己决定SQL执行计划。
1.2.2不必要的外连接
1.2.3CBO下优化器模式的选择
          对于OLAP系统,绝大多数时候系统运行的是报表作业,执行的基本上是聚合类函数,这时候,把优化器模式设置成all_rows是恰当的。
          对于一些分页操作比较多的网站类数据库,设置成first_rows会比较好。
1.2.4没有绑定变量的SQL
        绑定变量的真正用途是在OLTP系统中,这个系统通常有这样的特点:用户并发数非常大,用户的请求十分密集,并且这些请求的SQL大多数是可以重用的。如果一条SQL语句执行一遍后,就被缓存到数据库的内存当中(共享池),以后的用户请求都使用这个SQL解析后的结果,那效率必定大大提高。
 
2.数据库的设计
2.1OLTP系统
        OLTP系统(在线事务处理系统)的用户并发数非常多,但他们只是对数据库做很小的操作,数据库侧重于对用户操作的快速响应,这是对该类型数据库最重要的性能要求。OLTP系统是一个数据库变化非常频繁、SQL语句提交非常频繁的系统。对于数据库来说,应尽可能的让数据块保存在内存中,对于SQL语句来说,尽可能的使用绑定变量达到SQL语句的重用,减少物理I/O和重复的SQL解析,这样可以极大的提高数据库的性能。
2.2OLAP系统
    内存的优化,对于OLAP来讲影响很小,这种系统的瓶颈往往在于磁盘I/O上面。SQL的优化对于OLAP数据库来说很重要。分区技术在OLAP数据库中的重要性主要体现在数据库管理上,比如数据加载,可以通过分区交换的方式来实现,备份可以通过备份分区表空间实现,删除数据可以通过删除分区来实现,值得一提的是,分区索引并不一定比全局索引在任何时候都快,有时候塔反而会更慢。
 
3.数据库的硬件设计,主要体现在CPU,I/O和负载3个方面
3.1存储容量
     大致估算出数据库所存存放的数据量的大小,可以作为存储设备采购的一个依据,不要忘记系统备份数据所占用的空间的考虑。
3.2数据的安全性
   要求高的用RAC+DataGuard的备份方式,常规的用RMAN+归档的备份方式。
 
 
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息