lmdb.open()参数说明

数据库环境的结构
一个环境可能包含多个数据库,所有数据库都驻留在同一个共享内存映射和底层磁盘文件中。
在同一个进程中同时打开同一个 LMDB 文件是一个严重的错误。 不注意这一点可能会导致数据损坏和解释器崩溃。

  • path:
    存储数据库的目录位置(如果 subdir=True)或文件前缀。

  • map_size
    最大的数据库可能会增长的大小。用于调整内存映射的大小。如果数据库增长大于“map_size”,将引发异常,用户必须关闭并重新打开环境。在 64 位上,这样做不会受到惩罚(比如 1TB)。 在 32 位上必须小于 2GB。

  • subdir
    如果为“True”,则“path”指的是存储数据和锁定文件的子目录,否则指的是文件名前缀。

  • readonly
    如果为“真”,则禁止任何写操作。 注意锁定文件仍然被修改。 如果指定,则忽略 :py:meth:begin 或 :py:class:Transactionwrite 标志。

  • readahead
    如果为“False”,LMDB 将禁用 OS 文件系统预读机制,这可能会在数据库大于 RAM 时提高随机读取性能。

  • meminit
    如果 False LMDB 不会在将缓冲区写入磁盘之前对其进行零初始化。 这提高了性能,但可能会导致将旧堆数据写入保存在缓冲区的未使用部分中。 如果您的应用程序在内存中操作机密数据(例如明文密码),请不要使用此选项。 此选项仅在 writemap=False 时才有意义; 新页面总是零初始化
    writemap=True

  • max_readers
    同时读取事务的最大数量。 只能由打开环境的第一个进程设置,因为它会影响锁定文件和共享内存区域的大小。 尝试同时启动多个 read 事务将失败。

  • locker
    如果 False,不要做任何锁定。 如果预期并发访问,调用者必须自己管理所有并发。 为了正确操作,调用者必须强制执行单一写入者语义,并且必须确保在写入者处于活动状态时没有读取者正在使用旧事务。 最简单的方法是使用排他锁,这样当写入器开始时,根本没有读取器处于活动状态。

在这里插入图片描述
起因是复现时看到了这段代码,想知道每个变量都代表什么意思,以及lmdb.open返回的值是什么

最后,附上我觉得目前找到的关于lmdb讲的最好的文章连接:
https://www.cnblogs.com/zhangxianrong/p/14919706.html

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值