const.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package core
  2. import (
  3. "time"
  4. )
  5. var Magic = [4]byte{'T', 'S', 'D', 'B'}
  6. // =============================================================================
  7. // 页面与存储常量
  8. // =============================================================================
  9. const (
  10. // Version 数据库文件格式版本
  11. Version = 1
  12. // PageSize 数据页大小 (16KB) — 索引页、数据页、WAL 页统一使用
  13. PageSize uint32 = 4096 * 4
  14. // PageSize4K 头页大小 (4KB) — HeaderPage、TablePage 元数据等固定页
  15. PageSize4K = 4096
  16. // TableNameSize 表名最大字节数
  17. TableNameSize = 24
  18. // MinFieldAllocateSize 字段定义最小预分配空间 (字节)
  19. MinFieldAllocateSize = 256
  20. // MaxFieldSize 单次创建字段最大数量
  21. MaxFieldSize = 256
  22. )
  23. // =============================================================================
  24. // BufferPool 配置
  25. // =============================================================================
  26. const (
  27. // DefaultBufferPoolCapacity 默认缓冲池容量 (页数)
  28. // 50000 页 × 16KB = ~800MB
  29. DefaultBufferPoolCapacity = 50000
  30. // DefaultDirtyThreshold 脏页阈值 (页数)
  31. // 脏页超过此数量时自动触发 Commit 刷盘, 防止内存暴涨
  32. // 2000 页 × 16KB = ~32MB
  33. DefaultDirtyThreshold = 2000
  34. )
  35. // =============================================================================
  36. // WAL 与自动提交配置
  37. // =============================================================================
  38. const (
  39. // DefaultAutoCommitDelay 默认防抖自动提交延迟
  40. // 每次写操作重置计时器, 停止操作后该时间内无新操作则自动 Commit
  41. DefaultAutoCommitDelay = time.Second
  42. )