sqlserver插入大数据量,3000条/秒!
用什么方法能够满足要求,在我们的测试中仅仅能够满足300条/秒!
使用的是Delphi+sqlserver+ado!
有没有好的方法达到此要求!

解决方案 »

  1.   

    一般只用oracle,不过,大批量数据插入时,最好不要有索引或约束,在数据导入后再建索引或约束可以提高导入速度(不知你的原始数据是什么,如果是文本,可直接用ODBC或ADO的SQL将文本导入:参考我回过的:
    http://community.csdn.net/Expert/topic/4686/4686187.xml?temp=.1655695
    ,如果数据从另一表来,就用
    select * into ... from ...
    这样的效率也是很高的)
    当然.导入速度还与你的服务器配制有关
      

  2.   

    传统的关系数据库应该无法满足楼主的需求;考虑使用特种数据库的概念;
    有种实时系统与数据库系统结合的概念叫实时数据库;简单点说,譬如你的这个需求;可以考虑采集得到的数据不先存储入sql或者oracle;
    而是直接通过多线程存入文件系统;
    这样避免了关系数据库中有关的约束或者其他的附加操作;
      

  3.   

    3000条/秒!
    ~~~~~~~~~~
    SQL Server是不可能达到这个要求的
      

  4.   

    用bcp, 
    select into应该可以达到
      

  5.   

    用ORACLE把别的达不到这种要求你可以试试
    我们一般都用SQLSEVER或ORACLE你可以试试
    用别的思维你也可以实现写程序头脑一定要活你可以好好想想
      

  6.   

    对于SQL Server似乎做不到楼主的的要求,以前我们也遇到过这个情况。我们的测试是只能达到550-650条/秒。 与计算机硬件配置有一定关系。 使用多线程提交也是一样的结果。可以考虑单独写一个提交服务器,分批提交,加上缓冲机制。 (不可能24小时都是每秒3000条吧?:)
      

  7.   

    另外,还可以考虑插入数据先组成SQL 语句,多条打包提交。这个方法应该可以满足楼主的要求。
      

  8.   

    kingkee的方法好是好,但是仍然无法满足要求!
    但是还是要感谢各位的意见!
      

  9.   

    我是通过SQL的API处理的,如果这都达不到,那别的更不可能达到了
      

  10.   

    有个方法估计可以,
    写成DTS,然后delphi调用dts_name.bat文档,
    DTS在转资料时可以达到这个速度,甚至更快!
      

  11.   

    你用DTS测试下看看
    我导入1k数据都要2秒