SQLSERVER 批量数据写入

1.数据库记录日志,用户发起的每个访问,如果都采取即时写入SQLServer的表中,因为频繁的数据库连接,一个造成数据库压力过大,另一个是频繁的连接,降低程序性能。

  最好的办法是,采用DataTabale内存缓存,当记录数达到一个量级是,采用SqlBulkCopy批量写入数据库。采用此中办法记录日志,对于大批量频繁的数据写入,性能会有个明显的改善。

例如,我们先创建一个空的DataTable表结构,列对应和数据库中的列对应。

    static DataTable dtLog = InitTable();

      /// <summary>
       /// 日志批量插入日志数据库中
       /// </summary>
       /// <param name="sIP">用户IP</param>
       /// <param name="curTime">当前系统时间</param>
       /// <param name="iTime">验证系统响应时间</param>
       public static void WriteLog(string sName, string sURL, string sIP, DateTime curTime, int iTime)
       {

          //如果记录数达到10000次,写入数据库中
           if (iTableCount >=10000)
           {
               tempLog = dtLog;

              //单独开辟一个线程,往数据库中写入记录

              //AsynWriteLog ,数据库中写入日志方法
               ThreadPool.QueueUserWorkItem(AsynWriteLog, null);
               dtLog = InitTable();
               iTableCount = 0;
           }
           else       

         {

                 //记录数没有达到写入数据库中的记录数,继续往内存中添加
               AddRowTable(sName, sURL, sIP, curTime, iTime);
           }
       }

转载于:https://www.cnblogs.com/tank-lizi/archive/2012/01/05/2313199.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值