FastDB杂谈

FastDB在小数据规模下表现出高性能,尤其适合百万级数据的并发读操作。但当数据量达到千万级,内存消耗大,性能下降,且并发写入会出现阻塞。在非磁盘模式下,内存限制可能导致进程崩溃。需要调整系统参数和源代码以支持更大共享内存。FastDB的dbDatabase类控制数据库交互,提供并发控制和事务管理。适合简单并发和大量插入、查找、计算场景。
摘要由CSDN通过智能技术生成

fastdb用起来还是很方便简单的,但是在使用的过程当中发现了很多问题:

比如:

1、数据库对于内存的消耗实在是太大,尤其是数据量到达千万级时尤为明显。

2、数据量上千万级别以后,性能远地于预期,可能是服务器内存不够的缘故。事务过大后,提交时间很长。

3、在并发访问模式上,同一进程的线程只能用同一模式,只read能够并发。不能够write并发(多个write线程)。进程间也是如此,也就是说多个write并发的话会出现相互阻塞,连write进程读操作都阻塞。所以适用于那些并发读操作,或者只要一个并发写操作的模式。(毕竟只有3万来行的程序,没有提供记录锁甚至页级锁是很正常的)

4、程序出现异常,可以通过清理信号量来进行恢复数据文件,但是有时候数据文件没法恢复造成数据损失。幸亏有在线备份机制和多机器备份功能。

虽然如此,但是在适量的数据规模上,其性能是很彪悍的,加上在使用上特别方便。所以如果对于百万级数据规模的项目,需要简单并发和大量插入、查找、计算时,fastdb是个很不错的选择。毕竟代码很精炼,适当的时候自己可以根据需要进行修改源码。

 

磁盘模式与非磁盘模式的性能http://blog.csdn.net/hejianhua/article/details/6694356

在磁盘模式下,所有的数据将写到磁盘的文件中,对于这种模式,性能和一般的数据库差不多。对于非磁盘模式,效率非常高,网上有一篇文章,对fastdb和磁盘数据库的性能进行了对比。默认情况下是磁盘模式,要使用非磁盘模式,重新编译,加入

-DDISKLESS_CONFIGURATION

 

推荐文章:http://www.360doc.com/content/11/0227/02/6001117_96477992.shtml

 

在采用非磁盘模式的时候,要注意因为内存越界的问题导致进程crash。因为,对于非磁盘模式fastdb是实现划分了一大块共享内存,当超出这块内存的容量时,就会有可能导致程序crash

fastdb 共享内存模式下的限制

最近项目中使用了fast db,为了提高访问效率,fast db采用diskless模式编译。
共享内存的最大尺寸受系统参数限制,
下面数据是在Linux im_monitor 2.6.9-42.ELsmp 下的缺省值:
cat /proc/sys/kernel/shmmax
33554432
默认大小都是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值