利用データのメトリクスガイド

このガイドでは、usage_data.rb におけるメトリクスの非推奨の使用法について説明します。

note
usage_data.rb で直接メトリクスを実装することは非推奨です。usage_data.rbインスツルメンテーション・クラスをusage_data.rb使用することをお勧めします。

通常のバッチカウンタ

指定されたActiveRecord_Relation の単純なカウント、区別されないバッチカウントを行い、batch_size をスマートに削減し、エラーを処理します。ActiveRecord::StatementInvalid エラーを処理します。

メソッドを使用します:

count(relation, column = nil, batch: true, start: nil, finish: nil)

引数:

  • relation カウントを実行する ActiveRecord_Relation
  • column デフォルトは主キーです。
  • batchデフォルトはtrue です。
  • start: 複雑な分単位の計算を避けるために、バッチカウントの開始をカスタムします。
  • end: 複雑な最小値計算を避けるためのバッチ終了時のカスタムカウント

例:

count(User.active)
count(::Clusters::Cluster.aws_installed.enabled, :cluster_id)
count(::Clusters::Cluster.aws_installed.enabled, :cluster_id, start: ::Clusters::Cluster.minimum(:id), finish: ::Clusters::Cluster.maximum(:id))

個別のバッチ・カウンタ

与えられた列の与えられたActiveRecord_Relation の区別されたカウント、区別されたバッチカウントは、batch_size をスマートに削減し、エラーを処理します。ActiveRecord::StatementInvalid エラーを処理します。

メソッドを使用します:

distinct_count(relation, column = nil, batch: true, batch_size: nil, start: nil, finish: nil)

引数:

  • relation: カウントを実行する ActiveRecord_Relation
  • columnデフォルトは主キーです。
  • batchデフォルトはtrue です。
  • batch_size何も設定されていない場合、デフォルト値10000が使用されます。Gitlab::Database::BatchCounter
  • start: 複雑な分単位の計算を避けるために、バッチカウントの開始をカスタムします。
  • end: 複雑な最小値計算を避けるためのバッチ終了時のカスタムカウント
caution
一意でないカラムをカウントすると、パフォーマンスのイシューが発生する可能性があります。詳細については、バッチでのテーブルの反復処理ガイドを参照してください。

例:

distinct_count(::Project, :creator_id)
distinct_count(::Note.with_suggestions.where(time_period), :author_id, start: ::User.minimum(:id), finish: ::User.maximum(:id))