PAYATHON 2026

Firebase billing account 中多个 BLAZE 项目的免费读取额度

支付老李

结论

两个项目共用同一个 billing account,并不会将读取次数合并成 80,000 次,再统一扣除一份免费额度。

Cloud Firestore 的每日免费读取额度按 Firebase/Google Cloud 项目计算,不按 billing account 计算。假设:

  • 项目 1 当天有 40,000 次计费读取;
  • 项目 2 当天有 40,000 次计费读取;
  • 两个项目使用的 Firestore 数据库均具备免费额度;
  • 每个项目当天的其他读取量没有使总量超过免费额度。

在这种情况下,两个项目都没有超过各自每天 50,000 次文档读取的免费额度,因此这 80,000 次读取通常不会产生 Firestore 文档读取费用。

计算方式

两个项目的读取量需要分别计算:

项目 1:max(40,000 - 50,000, 0) = 0 次收费读取
项目 2:max(40,000 - 50,000, 0) = 0 次收费读取

合计收费读取:0 + 0 = 0

如果项目 1 读取 60,000 次,项目 2 读取 40,000 次,计算结果如下:

项目 1:max(60,000 - 50,000, 0) = 10,000 次收费读取
项目 2:max(40,000 - 50,000, 0) = 0 次收费读取

合计收费读取:10,000 次

这里的 50,000 次指“每天最多 50,000 次免费文档读取”,并非只有严格少于 50,000 次才免费。

为什么 billing account 不会合并免费额度

billing account 用于汇总和支付关联项目产生的费用。账单可以同时显示多个项目的费用,但不代表这些项目共用一份 Firestore 免费额度。

两者的作用可以这样理解:

  • 项目:统计 Firestore 使用量,并应用该项目的免费额度;
  • billing account:汇总各项目扣除免费额度后产生的实际费用。

Blaze plan 按实际使用量计费,但 Firestore 适用的免费用量仍会先从对应项目的使用量中扣除。

如何核对实际费用

核对时应分别查看两个项目,不要只看 billing account 的总使用量:

  1. 在 Firebase Console 中切换到项目 1。
  2. 打开 Firestore 的 Usage 或用量页面。
  3. 查看当天的 document reads。
  4. 切换到项目 2,并重复上述操作。
  5. 在 Google Cloud Billing 报表中按 Project 分组,确认费用来自哪个项目。
  6. 如需进一步区分,可在账单报表中同时按服务和 SKU 筛选 Cloud Firestore 读取费用。

也可以使用下面的 JavaScript 逻辑,估算每个项目超过免费额度的读取量:

const FREE_READS_PER_PROJECT_PER_DAY = 50_000;

function calculateBillableReads(reads) {
  return Math.max(reads - FREE_READS_PER_PROJECT_PER_DAY, 0);
}

const project1Reads = 40_000;
const project2Reads = 40_000;

const project1Billable = calculateBillableReads(project1Reads);
const project2Billable = calculateBillableReads(project2Reads);

console.log({
  project1Billable,
  project2Billable,
  totalBillable: project1Billable + project2Billable,
});

输出为:

{
  project1Billable: 0,
  project2Billable: 0,
  totalBillable: 0
}

这段代码仅用于估算。最终计费用量以 Google Cloud Billing 和 Firestore 的用量统计为准。

注意事项

读取次数不一定等于业务代码执行次数

一次查询可能产生多次计费读取。实时监听器重新连接、查询结果更新、事务重试、安全规则读取其他文档,以及部分查询涉及的索引条目读取,都可能增加实际计费用量。因此,业务代码执行了 40,000 次查询,不一定意味着账单只记录 40,000 次 document reads。

多个数据库需要单独确认免费额度资格

如果一个项目创建了多个 Firestore 数据库,不能直接认为每个数据库都有一份免费额度。通常,只有项目中符合条件的一套数据库用量可以享受免费配额,其他数据库可能从首次使用起便开始计费。遇到多数据库场景,应以当前 Firestore 定价规则和控制台显示为准。

每日额度有固定重置周期

Firestore 的每日免费配额按照平台规定的计费时区和周期重置,不一定与业务所在地的自然日完全一致。按中国时区统计“当天”用量时,统计结果可能与账单的每日边界不同。

其他 Firebase 服务可能仍会收费

文档读取量没有超过免费额度,不代表整个项目的账单一定为零。存储、网络出口、文档写入、文档删除、Cloud Functions 和 Cloud Storage 等资源都有各自的计费规则及免费额度。核对最终费用时,应按项目和 SKU 查看账单明细。

备注:内容仅供参考。