线程中如何向数据库存数据,才会不影响其它线程的速度,而且要确保系统稳定长期运行!!!!(100分)

  • 主题发起人 主题发起人 finewei
  • 开始时间 开始时间
F

finewei

Unregistered / Unconfirmed
GUEST, unregistred user!
  本人利用多线程向不同的通道采集数据,然后分别保存入sql server中,如何才是最高效稳定的处理方法,希望有实际经验的同学,谈谈看法。
 
最容易出问题的地方是SQL Server被大量的INSERT语句堵塞,如果数据采集量比较少,就不会有这个问题,我认为你应该使用缓冲池来处理这种情况,创建一个用于缓冲采集到的数据的队列,可以重载TList来实现,但必须带有安全锁支持,起动N个线程用于数据采集,每采集一个数据时,先对缓冲器加锁,并写入到缓冲器中,然后才解锁;再启动一个线程专门用于执行SQL Server的INSERT语句操作,一样需要加锁、解锁步骤。同时为了避免缓冲池过量,可以在写数据到缓冲池时先看看缓冲池的数量,如果数据过多,需要使用一定的策略来处理它。作为一个长时间运行的系统,最好不要过于频繁的分配释放小内存块,你可以根据需要一次分配足够大小的缓冲池,这样,系统运行一定没有问题,
 
来学习一下,我来帮你up
 
单独设置一个线程完成:数据库的操作. /写.
其它的线程协作完成,作为操作参数的提供者就好了!
 
后退
顶部