1.现有2亿条数据,需要存到数据库
2.当用户请求时程序检索数据库,将检索(一次性可能要检索到几十万条数据)的数据库写到文本文件,供用户下载现在需要解决的问题是,如果在很短的时间内检索出数据,并不会造成程序执行时间过长,造成并发性的问题,如何优化程程序及数据库,
                                   兄弟在此先谢谢了

解决方案 »

  1.   

    2亿条数据是固定的吗?还是会不断变化?如果数据是固定的,我觉得是不是可以通过分析用户的查询需求,
    将数据预先分多张表存储,降低每次检索的数据量。为了提高检索效率,索引肯定是必要的,而且要加的非常合理,
    但涉及到数据导出,如果能够避开java,最好还是不要用java写,
    写存储过程吧。简单建议,仅供参考。
      

  2.   

    个数据量是变化的,现在有一亿多条,上限设定为两亿,
    现在采用Mysql,已实现为多表,分了一00多张,但是性能还是达不到想要的结果,同时谢谢楼上的朋友,你的建议很有价值,谢谢,此问题还有待解决!
      

  3.   

    LZ可以考虑使用数据仓库+存储过程,然后再优化一下SQL与存储过程.
      

  4.   


    分100多张表,每张表平均200万数据,这样量不算大,
    那么估计性能的瓶颈主要在索引的合理性和数据导出方式了。如果用jdbc取到数据再由java输出,肯定会有不必要的IO。
      

  5.   

    楼上几位兄弟说得都不错。楼主也做了分表,这些都是大数量时必须采取的措施。如果楼主已经做了必要的索引,那么我觉得性能的主要瓶颈在“一次性可能要检索到几十万条数据”,一次性如果可以检索到这么数据,那么说明这个查询的设计多少存在一些问题,而且几十万条数据数据的IO非常耗时,建议楼主减少查询返回的数据量。Google中搜到了几亿条记录,那是统计上的,它每次返回的并不会有那么多的。
      

  6.   

    pathuang68 说得很对,其实没有必要一次性全部导出,你可以常试分页式导出方法.
    结合数据仓库、存储过程、索引以及对数据库的优化来实现,效率上应该会有比较明显的提升。
    希望楼主找到好的方案后能和大家分享一下。