现需要建一个实时性要求教高的系统,一个100万左右的大表和两张小表(千条记录)关联查询数据,表的记录长度都不大,高峰段1秒中200个并发查询,需要每个查询能够在500ms内响应,查询结果为一条或几条记录。
在HP DL580G2(2*3.0GHz CPU,8G 内存)的服务器上搭建9i的系统有没有可能获得这样的性能?
可以采用大表分区,建索引等常规优化方式。如果不能,是不是只能写代码将数据LOAD到内存检索啊?请高手赐教,谢谢!

解决方案 »

  1.   

    最好把你的表结构和部分数据,及查询sql都贴出来,才能给出一个准确的答复.
      

  2.   

    sql很简单的,可以认为是从一个大表检索一条记录,没有涉及分组,排序等需要全表遍历的查询。
    现在主要是要知道有没有人用ORACLE做过类似的,或者实时性要求更高的系统?我担心目前的硬件性能根本无法达到这样的要求!
      

  3.   

    关联字段 的索引 和SQL 的执行计划
      

  4.   

    个人觉得Sql不是问题,可能需要在安装Oracle后,重新优化对应DB参数,最大程度的利用硬件性能,如果数据量很大的话,硬盘和主板的bus speed也有可能影响速度,倒不一定是CPU或者内存的原因。纯试验的话,感觉2Gb Memory就足够了
      

  5.   

    1s 200个并发query 可能达不到吧,如果是针对同一视图或者表,即使共享池足够大,估计磁盘也来不及数据响应啊
      

  6.   

    就像5楼的那位兄弟所说的,sql就直接通过Explain Plan和响应时间来调整表索引或其他结构,剩下的就需要看你的硬件能否抗得住了。看你的楼顶帖子上说也就100多万数据应该不是很多,如果真的想测试极端速度,最好调整到1000万行数据以上
      

  7.   

    回sanoul:肯定要将相关表都cach到内存的,所以不会涉及太多磁盘响应。现在还在设计阶段,还没有测试环境,现在初步选择在内存中做个二叉树来检索数据的方案。这样就需要一个高效稳定的后台程序了,谁让咱信不过ORACLE呢!不过就这个问题欢迎大家继续讨论。
      

  8.   

    嘿嘿,要不针对每一个Session都建立虚拟表、聚合表、临时表? 你的前台用什么开发?虚拟或聚合数据可以在客户端建立,减少服务器开销,(开发比较费劲,对胖客户端有效,瘦客户端有限)
    临时表应该可以缓冲对主表的读取压力吧
    ---------------------------------------
    我从没做过在内存里读取整张表 >_<
      

  9.   

    看来主要是吞吐量问题,楼主可以考虑采用RAC
      

  10.   

    客户端看你的需要,可以通过DBF、MDB、XML、DAT、TXT之类的作为数据过渡