多个线程读写MS SQL同一个数据库,该怎么处理

多个线程读写MS SQL同一个数据库,该怎么处理,第1张

可以用VS的Integration Services项目,速度挺快的,还不用写代码。 要提升速度还可以用多个线程和写线程,不过要注意的是同一时刻只能有一个线程插入一个表,比如thread1插入表A,thread2这时候只能插入表B,不能插入表A。 这里的能不能是从性能的角度上说的,本身不会出错,但多个线程插入同一张表速度反而会下降,而且降的很厉害。 这两个性能差不多,IS也可以并行转移多张表,只是IS只要一条记录出问题整个任务就失败全部回滚,而编程则处理可以更灵活。

这要看您对代码的驾驭能力。

通常意义上来讲,最有效率的方法应该是建立一个数据库连接池。当需要connection时从连接池中获取,使用完毕时丢回去。

连接池负责对数据库连接的建立(登录、初始设定如字符集等等)和销毁。

如果您担心这样做带来的代码复杂度,那么建议您每个线程使用一个单独的连接。

多个线程在访问同一个数据库中的记录的时候,在大并发的情况下,一定要做好事务机制。要不然后果还是很扎心的。可能遇到这样的问题的时候首先想到的就是同步锁机制了。

并发产生的情况

以我的平时工作的经验来说,凡是涉及多线程的并发访问的问题一定要小心。因为一不小心就会产生死锁问题。平时编程的时候更要多注意这方面的问题。我们可以产生问题的情况是复杂的,两个线程争同一个对象会有问题,如果你只静态的方法,简单的逻辑不是问题,但是如果你的线程是修改静态变量的值,那应该是线程问题造成的。

java多线程并发

最经典的多并发的情况就是生产者和消费者的问题了吧。之前在学校学习 *** 作系统的时候,经常因为类似的并发 *** 作的问题想很久。后来工作的时候真正的实践以后,更能很好的体会到并发线程 *** 作的难度。java是线程安全的,即对任何方法(包括静态方法)都可以不考虑线程冲突,但有一个前提,就是不能存在全局变量。如果存在全局变量,则需要使用同步机制。

并发连接数据库

其实在实际项目开发汇总,首先要做的就是避免多个线程共用一个数据库连接,这样会很容易出问题,最好是一个线程一个连接。在必要的时候需要线程同步或存储过程加锁。如果有比较复杂的事务 *** 作的话就需要加锁了,如果不加的话就会出现你说的脏读、死锁等问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6705043.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存