数据库连接对象疑问? [ 2.0 版本 ]
今天在网上看到一位同行的文章(http://blog.csdn.net/starrykey/article/details/52049639
原话如下:
数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源。数据库软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的,因为何用单例模式来维护,就可以大大降低这种损耗。
这里有个疑问,就是比如一个网站,有A,B,C三人在使用中,竟然在用这个网站那么系统都连接着数据库,请问这3个人连接的数据库对象是同一个对象还是不同对象?
还有就是在多并发情况下插入数据的时候,经常要获取最后一次插入的id,这个时候会不会出现id错乱情况(因为多并发,可能获取到其他数据id)?
共 4 个回答
-
johnny1991 回答于 2017-04-28 15:12 举报
我有些看法,不知道是否正确
1.单例模式是指程序运行过程中,只能生成一个对象,在web程序里面,也就是一个请求,只产生一个对象(也许多次用到这个对象,但是每次调用的都是同一个对象),但是a,b,c三个人是三次请求,故请求的不是同一个对象;
2.数据库写的操作是会上写锁的,插入数据获取到id是你刚才插入的数据的id,而不是真正意义上最后一个共 2 条回复@johnny1991 那他的'数据库连接池的设计一般也是采用单例模式'这句话 是有问题的吗
johnny1991 回复于 2017-04-28 15:36 回复@xyf90314 访问mysql服务是基于tcp协议的,应该是一个连接对象会有一个对象,两个连接会有两个对象
xyf90314
注册时间:2015-03-04
最后登录:2023-03-13
在线时长:95小时23分
最后登录:2023-03-13
在线时长:95小时23分
- 粉丝21
- 金钱5257
- 威望40
- 积分6607