免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3158 | 回复: 3
打印 上一主题 下一主题

Perl有个异步数据库的问题 [复制链接]

论坛徽章:
1
白羊座
日期:2013-11-09 20:03:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-16 17:03 |只看该作者 |倒序浏览
我是用Coro做异步调度的,数据库采用Berkeley DB。

BerkeleyDB本身支持高并发的,所以采用BerkeleyDB模块和采用Coro::BDB(BerkeleyDB的异步支持)模块性能上会差很大吗?

最好能简单说下两者工作的模式。

谢谢~

论坛徽章:
0
2 [报告]
发表于 2013-12-16 17:31 |只看该作者
回复 1# yvmu


    这其实就是线程与事件驱动编程的区别吧。

论坛徽章:
1
白羊座
日期:2013-11-09 20:03:00
3 [报告]
发表于 2013-12-16 19:02 |只看该作者
在CDS机制下,写入是顺序执行的,可能用异步会提高性能。并行写入有可能造成死锁,还要写代码检测。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2013-12-18 09:39 |只看该作者
回复 1# yvmu

我用过一段时间BerkeleyDB,只是简单使用,没深入研究。CDS只是一种锁机制,BerkeleyDB模块并不提供异步或并发写入的接口。
用BerkeleyDB实现并发,要不就是用threads/fork+CDS,要不就是非阻塞实现。

1。CDS的存在的目的就是考虑到了多进程写数据库的情况,一般情况下是不会死锁的,例外情况模块文档中已经给出,包括避免的方法。
2。如果用非阻塞实现,比如你说的Coro::BDB,那就可以不用CDS了,因为所有的操作都已经是顺序执行了。

ps. 不知道你的项目是不是一定要用Berkeley DB,这东西太麻烦,能不用就不用了
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP