|
|
@@ -150,6 +150,11 @@ const (
|
|
|
// - 推荐配置: 1000-5000页 (16-78MB)
|
|
|
// - 高性能场景: 10000+页 (156MB+)
|
|
|
DefaultBufferPoolCapacity = 1000
|
|
|
+
|
|
|
+ // MaxBufferPoolCapacity 自适应缓冲池容量的硬上限 (页数)
|
|
|
+ // OpenWithOptions 按文件 1/4 分配容量, 但上限 8000 页 = 128MB,
|
|
|
+ // 防止巨型库把缓冲池撑爆物理内存。
|
|
|
+ MaxBufferPoolCapacity = 8000
|
|
|
)
|
|
|
|
|
|
// =============================================================================
|
|
|
@@ -171,3 +176,26 @@ const (
|
|
|
// - 禁用方法: 设置为 0 可完全禁用防抖,仅靠脏页阈值触发
|
|
|
DefaultAutoCommitDelay = time.Second
|
|
|
)
|
|
|
+
|
|
|
+// =============================================================================
|
|
|
+// 跨进程文件锁配置 (Windows LockFileEx / Unix flock 共用)
|
|
|
+// =============================================================================
|
|
|
+const (
|
|
|
+ // FileLockByteCount 跨进程文件锁锁定的字节数。
|
|
|
+ // Windows LockFileEx 的锁是【字节范围锁】, 锁文件末尾之后的 1 字节虚拟区域
|
|
|
+ // [EOF, EOF+1) 即可实现跨进程互斥, 又完全避开所有有效数据页 (历史曾用偏移 0,
|
|
|
+ // 结果 Windows NTFS 按 4KB 页粒度落锁, 整个头页被锁死, ReadHeader 读到零数据)。
|
|
|
+ // Unix flock 是整文件锁, 不使用此值。
|
|
|
+ FileLockByteCount = 1
|
|
|
+)
|
|
|
+
|
|
|
+// =============================================================================
|
|
|
+// Blob 配置
|
|
|
+// =============================================================================
|
|
|
+const (
|
|
|
+ // BlobChainMax 单个 Blob 列的最大内容长度 (字节)。
|
|
|
+ // 超出此值 Blob 写入会被拒绝, 提示 "blob 内容超过上限"。
|
|
|
+ // 上限由来: 链长用 uint32 计数, 单页 16KB, 256K 页 ≈ 4GB,
|
|
|
+ // 对绝大多数 binary 大对象够用; 超大文件 (>4GB) 应改用对象存储。
|
|
|
+ BlobChainMax = 256 * 1024 // 256KB
|
|
|
+)
|