用途:database worker 通过按库管理的连接池连接 PostgreSQL、MySQL、SQLite。驱动由数据库 URL 的 scheme(sqlite:、postgres://、postgresql://、mysql://)决定。运行设置位于配置 worker 的 id database 下,值变化时连接池热重载。建议从 SQLite 开始。占位符语法:SQLite 与 MySQL 用 ?,Postgres 用 $1/$2/…。
主要能力:database::query 运行只读 SQL,返回行、行数与列元数据;database::execute 运行写 SQL(INSERT/UPDATE/DELETE/DDL),返回受影响行数、可选的最后插入 id 和 RETURNING 行。批量原子操作可用 database::transaction 或 database::executeBatch,失败即回滚并报告 failed_index。预处理语句用 database::prepareStatement 解析规划一次,database::runStatement 以新参数重复执行。交互式事务由 database::beginTransaction 开始,配 transactionQuery、transactionExecute,最后 commitTransaction 或 rollbackTransaction。
模式读取:listTables、describeTable、describeSchema、schemaDiagram 在三种驱动上统一提供结构与图示。数据读取:browseTable 支持分页、排序、过滤而无需写 SQL;explain 以树形返回计划与成本;columnStats 提供规划器统计或精确扫描。运维:health 查看池占用、活跃查询、表大小、锁、缓存比;terminateQuery 结束会话或取消语句;saveQuery 等管理命名查询;history 记录最近查询。写入通知可注册 database::row-changed 触发器,在本 worker 提交时触发,事件为 { db, table, op, affected_rows, returning?, at }。
限制:不是迁移工具、ORM 或模式设计器,只接受原始 SQL;不是通用发布订阅总线,row-changed 仅报告本 worker 在提交时的写入,不构成变更数据捕获,rollback 不通知,经 psql 或其它 worker 的写入不可见;runStatement 不触发。query 面向读取,写入用 execute,用 execute 跑 SELECT 会丢弃结果。预处理句柄会占用池连接直到 TTL 过期(默认 1 小时,最长 24 小时),没有显式释放调用。批量事务需预先给出全部语句,需要分支时用交互式事务。交互式事务超时自动回滚(默认 30 秒,最长 5 分钟)。MySQL 忽略 execute 的 returning 选项(仅警告一次);SQLite 将 read_committed / repeatable_read 隔离级别降级为 serializable。文件系统或 shell 操作请改用 shell worker。