`
tower
  • 浏览: 241746 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FastDB不同访问模式带来的影响

阅读更多
本文原创作品,如需转载请注明来源,作者:姜涛, towerjt@gmail.com

FastDB中不同的访问DataBase的模式在程序中能体现不一样的结果。
从试验可以知道,不同访问模式主要体现在对表的锁上。
(具体的试验,大家如果觉得有必要,可以自己做一下,用
subsql -access [read-only concurrent-read concurrent-update normal]
可以指定访问数据的模式,然后自己构建相关测试用例进行测试
dbDatabase::dbAllAccess,一旦某个进程使用该模式访问表,如果该进程使用了insert、update、delete等修改数据的操作,
其他访问该库的进程的所有操作(包括open、select)都会被阻塞,直到该操作提交或回滚
dbDatabase::dbConcurrentUpdate,使用该模式访问表,如果某个进程对数据进行修改性的操作,同时另外的进程使用
dbDatabase::dbReadOnly或者dbDatabase::dbConcurrentRead读取数据,不会出现阻塞的情况。
但是dbDatabase::dbReadOnly会把未提交的脏数据读出来;而dbDatabase::dbConcurrentRead则不会
如果多个进程都使用dbDatabase::dbConcurrentUpdate,实际效果和dbDatabase::dbAllAccess一样,一旦一个进程修改了数据,
其他进程所有的操作(包括open、select)都将阻塞,直到该操作提交或回滚
结论:
FastDB没有提供商用数据库的记录锁甚至是页级锁的机制,锁的范围是一个DataBase文件,
所以在日常的使用过程中:
1、仔细分析业务需求,如果你只需要访问数据,那么最好是使用dbDatabase::dbReadOnly或者是
dbDatabase::dbConcurrentRead。这样的话,你的访问操作不会因为这个表被其他进程修改数据而阻塞。
2、如果一个表有不止一个使用者,那么涉及修改数据的进程应该使用dbDatabase::dbConcurrentUpdate,
而只读的进程使用则使用dbDatabase::dbConcurrentRead。
3、如果表只有一个使用者,则可以根据需要,使用dbDatabase::dbAllAccess或者dbDatabase::dbReadOnly
4、所有的数据修改操作,如果有并发要求,一定要及时提交
分享到:
评论

相关推荐

    fastDB 数据库访问 STL式封装

    fastdb 插入器 迭代器 STL式访问 dbdatabase dbcursor dbquery

    fastdb,开源的内存数据库

    4. **多线程访问**:FastDB支持多线程并发访问,保证了在多线程环境下的数据安全。 5. **Java接口**:通过libjnicli.so,FastDB能够与Java应用程序无缝集成,方便Java开发者使用。 **二、libjnicli.so的生成与使用*...

    内存数据库 fastdb源码

    内存数据库 FastDB 是一款高效、轻量级的数据库系统,其设计目标是在内存中存储数据,从而实现极快的数据访问速度。与传统的磁盘数据库相比,FastDB 的性能优势在于避免了磁盘I/O操作,这通常是数据库系统性能瓶颈的...

    fastdb 3.58开发包

    此外,FastDB的缓存策略确保了频繁访问的数据始终在内存中,进一步提升了访问速度。 3. **事务处理与并发控制** 尽管是内存数据库,FastDB依然提供了ACID(原子性、一致性、隔离性、持久性)事务支持,确保数据的...

    fastdb-375源码

    FastDB采用嵌入式数据库模式,可以直接集成到应用程序中,无需独立的服务器进程,从而简化部署和管理。 FastDB支持SQL子集,名为subsql,这是一种精简但功能强大的查询语言,允许开发者执行基本的数据库操作,如...

    fastdb心得

    FastDB心得 FastDB是一种高性能的数据库管理系统,它提供了高速的数据存储和查询功能。在本文中,我们将对FastDB的心得进行详细的说明,包括功能归纳、工作原理、部署方法和接口调用方法。 一、功能归纳 FastDB的...

    fastdb 2.55 源代码

    1. **高性能**:FastDB设计的目标是提供高并发和低延迟的数据访问。它采用了内存映射技术,将数据文件直接映射到进程的虚拟地址空间,极大地提升了数据存取速度。 2. **事务支持**:FastDB支持ACID(原子性、一致性...

    fastdb数据库最新版本

    FastDB充分利用这一点,提供了近乎实时的数据访问性能,尤其适合需要快速响应时间的应用场景,如高频交易、实时分析或大数据处理。 2. **C++集成** FastDB被设计为可嵌入到C++程序中的数据库系统,允许开发者直接...

    fastdb源码 (一个高效率的内存数据库系统)

    FastDB为具有主导读取访问模式的应用程序作了优化。通过消除数据传输的开销和使用高性能的锁工具实现了查询执行的高速度。数据库文件和使用该数据库的每一个应用程序占用的虚拟内存空间相映射。所以查询在应用程序的...

    可以使用的fastdb用例

    可以使用的fastdb用例,方便学习,包括fastdb的安装,和一个简单用例,包括一些资料说明。 fastdb个人使用心得.doc fastdb-361 FastDb 使用说明.txt FastDB.doc FastDB_应用开发指南.docx FastDB+很难得的一篇分析+....

    FastDB和SQLite的性能测试。

    详细介绍在这里: http://blog.csdn.net/RookieRock/archive/2010/12/06/6057338.aspx

    fastdb3.85

    《深入理解FastDB 3.85:内存嵌入式数据库的应用与实践》 FastDB是一款高效、轻量级的内存数据库系统,以其强大的性能和灵活性在嵌入式数据库领域独树一帜。最新发布的3.85版本,无疑为用户提供了更优化的功能和更...

    fastdb.rar

    《深入理解FastDB:内存开源数据库的探索与实践》 FastDB是一款轻量级、高性能、内存型的开源数据库系统,特别适用于对数据...通过深入学习和实践,我们可以充分利用FastDB的优势,为我们的项目带来显著的性能提升。

    fastDB Csharp实例

    **fastDB Csharp实例详解** `fastDB`是一款高性能、轻量级的关系型数据库管理系统,主要设计用于嵌入式系统和分布式应用。它以其优秀的内存管理、高效的事务处理和简单的API而受到开发者们的青睐。在C#环境中,通过...

    FastDB 很难得的一篇分析

    此外,FastDB还允许嵌套结构,但不支持无符号数据类型,这简化了查询语言,避免了符号数与无符号数比较时可能产生的问题,同时减小了数据库引擎的体积。 #### 元信息与字段描述 由于C++缺乏在运行时获取类的元信息...

    FastDb内存数据库调用源码例子-fastdb.dll(delphi)

    fastdb.dll标准DLLapi, 346k,比较迷你很值的学习。里面有好几个工程,几个模块,外国网站上找的。在中国想找几个简单点的FASTDB例子都难。好多都要编绎,结果又失败。还有更好的欢迎联系我一起学习(Q:527524938)...

Global site tag (gtag.js) - Google Analytics