白天大家都在查询出报表,导致一个查询要1个小时还出不来,晚上5个以内的用户在线时,只要1分钟就能出来。
目前有些报表我只能晚上帮用户生成到临时表中,这样缓解了一些白天用户等待的时间,但没有根本解决。
针对此情况,请高手指教:如何解决此类问题?

解决方案 »

  1.   

    目前我的数据库不到150G,大表也基本分区了,现在白天的查询慢得让人无法忍受(同一个查询,白天要30分钟以上,晚上只要1分钟),注:白天约有50人并发,晚上1~3个的并发数;
    请高手指教,针对此现象,我要做哪些工作?
    目前正打算采购小型机或PCSERVER做集群。
    谁能给我些优化建议,以及一些采购建议,以及采用何种软硬件架构?首先,非常感谢以上的好心人!
    目前现象很明显,2~3个用户并发做查询速度可以,10个以上并发时明显变慢,请问你们有过此现象吗,是否物理磁盘IO太厉害导致性能下降?
    我目前的PC SERVER为IBM3850,4个双核至强3.16GCPU,8G内存,OS为WINDOW2003 64位+ORACLE 10.2G个64位;5个146G的硬盘,其中2个做了镜像,安装OS并用于备份,另外3个做了RAID5存放数据库文件。
      

  2.   

    先考虑优化SQL,其次再考虑其他方式
      

  3.   

    4个双核至强3.16GCPU,8G内存。
    硬件应该没问题,看看数据库参数设置吧。
      

  4.   

    看看白天忙的时候系统瓶颈在CPU还是IO,然后再看如何优化系统。数据库系统最好不要用raid5,可能的话用raid0+1。还有你的查询很复杂吗?看看那个查询的SQL是否可以再优化下。
      

  5.   

    对于这样的问题,很难以下决定要采取什么样的方案.
    1)作为最简单和理想的情况,那么就是可以采取物化视图,或者类似的临时表来解决.
    2)其次是,和客户商量以下,在不增加太多投资的情况下,稍微改变业务的操作模式(太大的灵活性有的时候不是必要的),
    这样虽然有些小小的不变,但是可以解决用户的投资.在这种情况下,可以通过前面一种方式来辅助完成.
    3)最后就是看看,客户是否一定要那么样的需求,如果还是那样,那么就需要通过查看Cpu的负荷以及I/O的负荷来决定系统的瓶颈在哪里,从而作出适当的处理.
    以我个人的观点来说,你用PC的服务器来处理这么多的数据,不太合适.必须针对你们的业务重新安装系统,设计逻辑数据库结构,同时看看对sql语句是否存在优化的可能.
    -------------------------
    希望能看到版主解决问题之后的方案.
      

  6.   

    1。检查并发用户的参数是多少个?如果小于50,就要改大一些;
    2。检查你的查询语句。以现在的硬件配置来说,应该处理速度是很快的;SQL语句是,特别是关联查询,在大数据量时,是一门学问,要多推敲;
    3。最后来尝试bobfang 指出的:“数据库系统最好不要用raid5,可能的话用raid0+1。”
      

  7.   

    做个statspack查一下在等待什么,逐个分析,找出瓶颈所在
    这样的问题多为万恶的SQL所致,呵呵