引起数据库性能问题的因素
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下优化器模式的选择