posts - 6,  comments - 26,  trackbacks - 1

最新评论

StringDeal.GetBitLength()找不到啊
re: 【原创】数据库连接池问题 supersun 2008-10-09 20:07  
这个问题以前遇到过,是Access数据库本身的问题。
当时也很无奈,用了一个很无奈的方法:
在第二个conn执行前加延迟:
System.Threading.Thread.Sleep(2000);

要么就把这段程序做成一个conn。
insert/update/delete之后,commit一下,就是在代码里面显式的写commit

比如
...(I/U/D操作)
command.Text = "commit";
command.ExcuteNoQuery();
re: 【原创】关于C#多线程安全问题的讨论 我是菜鸟甲 2008-01-31 16:33  
代码一:
1private static Object o=new Object();
2
3public void MyF(){
4 lock(o){
5 //dosamething
6 }
7}代码二:
1public void MyF(){
2 Object o=new Object();
3 lock(o){
4 //dosamething
5 }
6}上面两个代码,代码一 就是n个人进来会阻塞,你认为代码二 n个人进来也会阻塞吗?你可以代码调式一下。
===========================================================================

楼主能解释一下吗?还有您的对这个问题的解决方案:
不过从完整的解决上来说,应该是新建一个字典,字典中key就是我们外面的key,字典中的value是我们的lockhelp,在读取之初,new一个lockhelp到字典中,然后加锁开始读取数据,而当字典中有这个key的lockhelp时,直接拿出来lock住。
不是很明白,能代码解释一下吗?
谢谢。
re: 关于C#多线程安全问题的讨论 Allen Zhang 2008-01-26 09:50  
不理解的是"无论来的是哪个key,都会导致阻赛等待",这个改用"新建一个字典,字典中key就是我们外面的key"后,就没这个问题了吗?
呵呵,我来回答你最后的问题。
如果这个集合不是非常巨大并且不需要强行重置正在进行的读取,可以考虑版本控制,这样就不需要锁了,只需更改入口引用即可,旧版本的所有读取完毕后你要怎么处理它都没人抢。
最理想的状况是就两个版本,一个用于读,一个用于写,轮流来。但还是得现实点,如果不加限制,在读取并发超大,更新频繁时可能导致版本过多,那就太消耗内存了。
我的实际做法是限制为两个,再加上老赵的“局部锁”来应付。

此法不具备通用性,慎用!
re: 关于C#多线程安全问题的讨论 rIPPER 2008-01-26 01:52  
文章开头谈操作一个全局对象,讲到后面变成从一组对象里面挑一个出来锁 -_-|||
re: 关于C#多线程安全问题的讨论 Jeffrey Zhao 2008-01-26 01:41  
“字典中key就是我们外面的key,字典中的value是我们的lockhelp,在读取之初,new一个lockhelp到字典中,然后加锁开始读取数据,而当字典中有这个key的lockhelp时,直接拿出来lock住”
这样又牵扯到这个lockhelp字典的同步问题了,不过——这个操作速度很快所以问题应该不大。不过还是有问题,key的数目可能是非常大的,这样lockhelp的数目就很夸张了。
re: 关于C#多线程安全问题的讨论 reaper 2008-01-26 01:39  
不错,,,不知何时能看到续或。。。。。
re: 关于C#多线程安全问题的讨论 Jeffrey Zhao 2008-01-25 23:22  
创建一个object[100],访问id=n的对象时,所住n % 100的对象。要锁住同样的对象概率就大大降低了。
re: 数据库连接池问题 dde 2008-01-21 17:09  
建议看看这篇文章,对您可能会有帮助 http://www.150it.cn/bianchengwendang/VB/854490793199.html
re: 数据库连接池问题[未登录] 孤剑 2007-07-16 21:34  
我看了你所描述的问题,我也遇到过。但是的注意,如果执行更新时,想立即获得数据更新,则必须保证读取数据的连接和进行update 的连接是同一个连接,如果你创建了两个连接,则这两个连接有一定的“时差”,不过你可以使用异步等操作更新连接。
比如:
Update()
{
if (null != conn2)
{
conn1= conn2;
}

conn1.update(...);
}
re: 数据库连接池问题 狂图 2007-04-17 15:06  
额。 == 你说的是用我上面的代码测试的吗。。。??

能不能看看你的测试代码?

至少我上面的代码出现了这样的症状。
re: 数据库连接池问题 臭石头 2007-04-17 09:46  
呵呵,我是用了两个不同的连接字符串来连接两个数据库,前一个更新,后一个读取。我也通过调试确定,连接池里面有两个池(池是根据连接字符串产生的),分别供两个操作使用,结果就是,马上更新^_^

我让别人帮我测试,也不存在你所说的问题。
re: 数据库连接池问题 狂图 2007-04-17 09:35  
如果你的连接池里只有一个连接当然是没有问题。 如果连接池里有两个连接, 然后第一个操作用第一个连接 紧接着 第二个操作用第二个连接 那么第二操作是读取不到第一个连接做的修改
re: 数据库连接池问题 狂图 2007-04-17 09:34  
连接池。 你用的是上次的连接池。 那你小心了。 你是没有碰到出问题的情况而已, 一旦你出现我上面的状况 就会出问题。
re: 数据库连接池问题 臭石头 2007-04-15 13:46  
经过测试,我这里不存在更新延迟的情况。两个连接,第一个更新,第二个马上取,数据改变了。

我用的就是我上次给你的那个AC连接池。

AC最大支持255个连接。

我用单表14W数据进行测试,取一页时间为2秒多。
re: 这才是高质量保存图片 狂图 2007-04-14 16:34  
额。 你既然这样问了。我就把 完整的各种缩略 各种水印 函数操作类出一个。 看我的另一篇文章。
http://www.cnblogs.com/pooeo/archive/2007/04/14/713373.html
re: 这才是高质量保存图片 兰亭 2007-04-14 15:25  
请问如何调整图片大小呢,一般我们在上传图片后会生成一个缩略图
re: 数据库连接池问题 朴攸 2007-04-09 09:02  
@悟
你的方法就是 多个人都使用同一个连接。 这样虽然能够即时反应,但是Access的Conn在有事务的情况下是不允许其他操作的,如A这个人正在事务操作,B这个人要读取某些信息,那么就会报错。

“另外,尽是不要使用参数查询”这句话何解? 我用的都是参数查询没什么问题发生。
re: 数据库连接池问题 悟 2007-04-09 07:33  
使用静态类的连接,保证和Access间只能有一个连接;另外,尽是不要使用参数查询,很多使用SQL 2005的思想在Access是行不通的。所以,在做可行性分析时,一定能对一些较特殊的设计思路进行编码验证。
re: 数据库连接池问题 jentrees 2007-04-08 19:52  
上微软网站去问问看了,估计是access本身的问题,它的同步机制而导致
re: 数据库连接池问题 编写人生 2007-04-08 17:38  
OleDbConnection 支持连接池功能的,在连接中使用 OLE DB Services=-1 (EnableAll = -1),在高压力测试下,性能提高100倍左右。
re: 数据库连接池问题 THIN 2007-04-08 12:12  
用SQLExpress 2005
re: 数据库连接池问题 Jason Cui 2007-04-08 10:59  
把整个数据库缓存到内存里进行操作,然后定时更新到硬盘上。
re: 数据库连接池问题[未登录] 戏水 2007-04-08 09:30  
也遇到过类似问题,access了解不多, 同求达人指点.
昵称:狂图
园龄:4年10个月
粉丝:1
关注:0

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

搜索

 
 

常用链接

我的标签

随笔分类

随笔档案

最新评论

阅读排行榜

评论排行榜

推荐排行榜