【第22期】观点:IT 行业加班,到底有没有价值?

多线程连接数据库问题

原创 2015年11月17日 22:25:47

今天突然想到一个问题,就是多线程情况下访问操作数据库中的并发问题。

数据库中的一个连接对应一个数据库的事务,一般有两种访问方案:

1,通过一个线程对应一个连接,不过中方式感觉太奢侈了,所有一般用连接池,限制总的连接数,但当访问线程较多的情况下,连接要不断的切换,性能上会有影响的。

2,一个连接限制一定数量的访问线程,虽然数据库中有事务并发访问安全机制,但这是正对多事务的,我们这里使用多线程共享一个连接(一个事务),肯定会有线程并发访问问题的,例如:A线程有事务提交和回滚,B线程也有事务提交和回滚操作,当A线程访问失败,需要回滚时,B线程运行了提交,那么A线程回滚就会失败,导致数据出现不正确,所以这部分在数据库访问之外要考虑多线程同步问题,首先可以考虑阻塞队列,将需要操作的线程放入队列中,按照队列头线程顺序同步访问数据库,或者其他加锁等机制也是可以的。

3,就代码级别的优化而言,我感觉还是使用1和2的结合可能好一点,也就是使用连接池,相同操作的线程公用同一个连接,并且连接中的线程要实现同步访问数据库。

可能考虑有所欠缺,请多多指出。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

多线程实现数据库的并发操作

http://www.cnblogs.com/hanfight/p/4701763.html

多线程操作数据库

1.      多线程最好不要共用一个连接 以下是来自MSDN的一段话http://msdn.microsoft.com/zh-cn/library/ms131686.aspx “SQL Serve...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

多线程操作数据库 (CoreData)

1: 主线程修改了数据库的某一条记录,但是子线程没有发生变化,反过来一样的问题。这种情况一般是发生在app有多个NSManagedObjectContext,两个线程分别对其进行了读写操作。 2...
  • jmulxg
  • jmulxg
  • 2012-11-16 15:30
  • 6565

多线程操作数据库

当多线程对同一数据库进行操作的时候会可能发生冲突。 读读不会冲突,读写,写读等操作应该会引起冲突(其中的写包括update、delete和insert)。 解决冲突的方法: ...

多线程操作数据库

1、多线程操作数据库--- FMDatabaseQueue    这个东西固然好用,但是一定要注意:他还是有弊端的,由于里边原理是block  GCD的使用,容易造成死锁,原因为明,继续研究中

大量数据情况下单线程插入和多线程insert数据库的性能测试

大量数据情况下单线程插入和多线程insert数据库的性能测试   之前一直没有遇到过大批量数据入库的场景,所以一直没有思考过在大量数据的情况下单线程插入和多线程插入的性能情况。今天在看一个...

从零开始实现Java多线程数据库连接池(附一个神秘的问题)

本例采用mysql数据库,因此请先下载mysql-connection.jar 众所周知,创建数据库连接需要消耗较多的资源,且创建时间也较长。如果网站一天100万PV(假设每个页面都有DB读取或修改操...

Spring+Hibernate多线程访问数据库

手头的项目采用Spring MVC框架,考虑到执行效率,需要在多线程下用native SQL访问数据库。留一份笔记备忘。 基本配置就不说了,网上有很多教程。 主叫类: @Component("mana...
  • cgjkjk
  • cgjkjk
  • 2013-11-18 10:37
  • 1593

SpringMVC并发访问的线程安全性问题

转:http://windows9834.blog.163.com/blog/static/27345004201391045539953/ springmvc的controller是sin...

java线程(超时等待+简单数据库连接池)

超时等待模式在一般的等待/通知机制上添加超时控制,使得方法执行时间过长也不会一直造成阻塞,而是在一段时间后返回。 通常java连接数据库时会将其执行过程交由一个线程进行处理,使得在一些I/O操作或需...
  • only06
  • only06
  • 2016-10-30 18:05
  • 1021
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)