Datastore 统计信息

Datastore 模式 Firestore (Datastore) 可维护您在 例如实体数量、类型或数量 空间由给定类型的属性值使用。

您可以通过以下任一种方式在 Google Cloud 控制台中查看这些统计信息: 方式:

  • 信息中心页面上。
  • 实体页面上,以 SELECT * FROM __Stat_Kind__ 的形式运行 GQL 查询。
  • 在应用中,通过查询特定名称的 使用 Datastore API 创建实体。如需详细了解 请参阅 API 和参考文档

Datastore 使用以两条下划线开头和结尾的种类名称 识别可提供有关您数据的统计信息的特殊实体。这些是 称为统计信息实体。例如,每个应用都有一个类型为 __Stat_Total__:表示有关 Datastore 模式数据库。

统计信息实体会跟踪与您的数据相关的信息,并让您深入了解 您的流量消耗它们是系统自动创建的。每个统计信息实体都有 以下属性:

  • count:统计信息所涉及的内容数量(长整数)
  • bytes:此统计信息的项目的总大小(长整数)
  • timestamp:统计信息的最近更新时间(日期-时间值)

每个实体都属于特定的种类。“统计信息种类”指明了类别 收集或使用的统计信息使用类型来标识 统计信息,例如优化查询、提升性能或数据分析。

一些统计信息类型还在 统计信息部分。

统计信息系统在创建新的统计信息实体时,不会删除 先前的统计信息实体获得一致视图的最佳方式是 统计信息就是查询具有最近 timestamp 的统计信息实体,然后使用该 timestamp 值用作过滤条件。

统计信息系统还创建特定于每个命名空间的统计信息。特定于命名空间的统计信息的种类名称为 以 __Stat_Ns__ 为前缀,后跟与 应用的所有统计信息

如果应用不使用命名空间,则统计信息系统不会创建 特定于命名空间的统计信息。您只能找到特定于命名空间的统计信息 与容器相关的命名空间中

统计信息列表

下面列出了可用的统计信息:

统计信息 统计信息实体种类 说明
所有实体 __Stat_Total__
特定于命名空间的条目:
__Stat_Ns_Total__
所有实体。其他属性:

entity_bytes:实体表中的存储空间(以字节为单位)。
builtin_index_bytes:内置索引条目中的存储空间(以字节为单位)。
builtin_index_count:内置索引条目的计数。
composite_index_bytes:复合索引条目中的存储空间(以字节为单位)。
composite_index_count:复合索引条目的数量。
命名空间中的所有实体 __Stat_Namespace__
请注意,系统将为遇到的每个命名空间创建 __Stat_Namespace__ 实体,并且您只能在空字符串命名空间中找到此类实体。
命名空间中的所有实体。

subject_namespace:代表的命名空间(字符串)
entity_bytes:实体表中的存储空间(以字节为单位)。
builtin_index_bytes:内置索引条目中的存储空间(以字节为单位)。
builtin_index_count:内置索引条目的计数。
composite_index_bytes:复合索引条目中的存储空间(以字节为单位)。
composite_index_count:复合索引条目的数量。

如需了解详情,请参阅本文档的统计信息限制部分。
应用定义的索引中的所有条目 __Stat_Kind_CompositeIndex__
特定于命名空间的条目:__Stat_Ns_Kind_CompositeIndex__
复合索引表中的条目;存储的每个实体种类都有一个统计信息实体。其他属性:

index_id:索引 ID。
kind_name:所代表的种类的名称(字符串)
某个种类的实体 __Stat_Kind__
特定于命名空间的条目:
__Stat_Ns_Kind__
某个种类的实体;存储的每个实体种类都有一个统计信息实体。其他属性:

kind_name:代表的种类名称(字符串)
entity_bytes:实体表中的存储空间(以字节为单位)。
builtin_index_bytes:内置索引条目中的存储空间(以字节为单位)。
builtin_index_count:内置索引条目的计数。
composite_index_bytes:复合索引条目中的存储空间(以字节为单位)。
composite_index_count:复合索引条目的数量。
某个种类的根实体 __Stat_Kind_IsRootEntity__
特定于命名空间的条目:
__Stat_Ns_Kind_IsRootEntity__
作为实体组根实体(没有祖先父实体)的某个种类的实体;存储的每个实体种类都有一个统计信息实体。其他属性:

kind_name:代表的种类名称(字符串)
entity_bytes:实体表中的存储空间(以字节为单位)。
某个种类的非根实体 __Stat_Kind_NotRootEntity__
特定于命名空间的条目:
__Stat_Ns_Kind_NotRootEntity__
不是实体组根实体(具有祖先父实体)的某个种类的实体;存储的每个实体种类都有一个统计信息实体。其他属性:

kind_name:代表的种类名称(字符串)
entity_bytes:实体表中的存储空间(以字节为单位)。
某种类型的属性 __Stat_PropertyType__
特定于命名空间的条目:
__Stat_Ns_PropertyType__
所有实体中某种值类型的属性;每种值类型都有一个统计信息实体。其他属性:

property_type:值类型的名称(字符串)
entity_bytes:实体表中的存储空间(以字节为单位)。
builtin_index_bytes:内置索引条目中的存储空间(以字节为单位)。
builtin_index_count:内置索引条目的计数。
每个种类中某种类型的属性 __Stat_PropertyType_Kind__
特定于命名空间的条目:
__Stat_Ns_PropertyType_Kind__
某个给定类型的各个实体中属于某个值类型的属性;每个属性类型和类型的组合有一个统计信息实体。

其他属性:

property_type:值类型的名称(字符串)
kind_name:代表的种类名称(字符串)
entity_bytes:实体表中的存储空间(以字节为单位)。
builtin_index_bytes:内置索引中的存储空间(以字节为单位)。
builtin_index_count:内置索引条目的计数。

如需了解详情,请参阅本文档的统计信息限制部分。
具有某个名称的属性 __Stat_PropertyName_Kind__
特定于命名空间的条目:
__Stat_Ns_PropertyName_Kind__
给定种类的各实体中具有某个给定名称的属性;每个唯一属性名称和种类组合都有一个统计信息实体。其他属性:

property_name:属性的名称(字符串)
kind_name:代表的种类名称(字符串)
entity_bytes:实体表中的存储空间(以字节为单位)。
builtin_index_bytes:内置索引条目中的存储空间(以字节为单位)。
builtin_index_count:内置索引条目的计数。
某种类型的具有某个名称的属性 __Stat_PropertyType_PropertyName_Kind__
特定于命名空间的条目:
__Stat_Ns_PropertyType_PropertyName_Kind__
给定类型的各个实体中具有给定名称和给定值类型的属性;数据库中存在的每个属性名称、值类型和种类的组合都有一个统计信息实体。

其他属性:

property_type:值类型的名称(字符串)
property_name:属性的名称(字符串)。
kind_name:所代表的种类名称(字符串)。
entity_bytes:实体表中的存储空间(以字节为单位)。
builtin_index_bytes:内置索引条目中的存储空间(以字节为单位)。
builtin_index_count:内置索引条目的计数。

如需了解详情,请参阅本文档的统计信息限制部分。

某些统计信息按名称以字符串形式引用属性值类型。这些名称如下:

  • "Blob"
  • "BlobKey"
  • "Boolean"
  • "Category"
  • "Date/Time"
  • "Email"
  • "Float"
  • "GeoPt"
  • "IM"
  • "Integer"
  • "Key"
  • "Link"
  • "NULL"
  • "PhoneNumber"
  • "PostalAddress"
  • "Rating"
  • "ShortBlob"
  • "String"
  • "Text"
  • "User"

统计信息限制

统计信息具有以下限制:

  • __Stat_PropertyType_Kind__ 属性和 __Stat_PropertyType_PropertyName_Kind__ 属性会返回数组值类型的属性类型元数据,并单独记录数组中每个值的属性类型。例如,如果数组属性存储字符串列表,则该属性会将属性类型记录为 STRING,而实际属性类型则记录为 ARRAY<STRING>
  • __Stat_Namespace__ 实体包含的信息与 __Stat_Ns_Total__ 记录中的相同。__Stat_Namespace__ 实体存储在空的命名空间中,并包含描述其所属的命名空间的 subject_namespace 字段。__Stat_Ns_Total__ 记录存储在其对应的命名空间中,因此不包含 subject_namespace 字段。因此,在对种类 __Stat_Namespace__(来自空字符串命名空间)进行查询时(按 bytes 降序排列),将首先列出所占存储空间最大的命名空间。由于不能跨命名空间进行查询,因此对 __Stat_Ns_Total__ 实体的任何查询最多只能生成一条记录。

统计信息实体更改顺序

具有数千个命名空间、种类或属性名称的应用需要 大量统计信息实体。为了降低存储 Datastore 模式 Firestore 数据库会逐步更新统计信息, 删除统计信息实体。

汇总统计信息实体 __Stat_Kind_CompositeIndex____Stat_PropertyType__、 和 __Stat_Total__ 永远不会被丢弃。

系统会按照以下默认顺序将统计信息实体分组删除:

  1. 每个命名空间、每个种类和每个属性的统计信息:

    • __Stat_Ns_PropertyName_Kind__
    • __Stat_Ns_PropertyType_PropertyName_Kind__
  2. 每个种类和每个属性的统计信息

    • __Stat_PropertyName_Kind__
    • __Stat_PropertyType_PropertyName_Kind__
  3. 每个命名空间的统计信息

    • __Stat_Namespace__
    • __Stat_Ns_Kind_CompositeIndex__
    • __Stat_Ns_PropertyType__
    • __Stat_Ns_Total__

类型统计信息实体具有以下删除顺序:

  1. 每个命名空间、每个种类的统计信息

    • __Stat_Ns_Kind__
    • __Stat_Ns_Kind_IsRootEntity__
    • __Stat_Ns_Kind_NotRootEntity__
    • __Stat_Ns_PropertyType_Kind__
  2. 每个种类的统计信息

    • __Stat_Kind__
    • __Stat_Kind_IsRootEntity__
    • __Stat_Kind_NotRootEntity__
    • __Stat_PropertyType_Kind__

后续步骤