KamoCRM

パブリックチェンジログのコミットカウントをレジャーから読み、 COUNT(*) ではなく

PerformanceSecurityService
Shipped
2026年9月23日 13:48 UTC
Author
Kamo
Commit
41e4a00

pg stat statements:CommitLog c WHERE c.project から `SELECT COUNT(c) を出力する (:~33 公開プロジェクト) [AND c.commitTypeId = :t]` それぞれ100-200 ms で 1 日 ~140K 回 (生産で測定) この変更の前に — すべてのリストページビュー(page()、アドレス()/サイトマップ)、すべてのリスト /changelog/public/stats は、認証を受けないエンドポイントで呼び出します。 commit logs に ~19K 38プロジェクトを渡る行; カウント自体は安いですが、すべてのリクエストで実行されます。 create commit log ledger.sql は、同じ合計+journal形状 create lead intake ledger.sql を追加します。 use: commit log counts (プロジェクト、コミットタイプ) と append-only commit log count deltas ジャーナルで、 commit logs の行が同じに書き込まれる インサート、プロジェクト/タイプ変更の更新、または削除としてトランザクション。 手で応用する オーナーとバックフィルド。 DaemonService は、それを折り畳み、再カウントします(コンプリート)。 perf(changelog):パブリック・チェンジログのコミット・ログ・レジャーの展開、先頭にデプロイ)。 メニュー メニュー JPQL COUNT(c) ではなく 1 つのネイティブステートメントの合計 + ジャーナル — 新しいメソッド PublicChangelogService(そのヘッダーは、パブリックページのニーズをフィルタ/クエリする理由を既に説明しています) CommitLogRepository ではなく、ここに住んで、kamo-shared-library に住んでいません。 shared-library release. todayCount() は非接触です: バックアップされたバインドカウントです。 ix commit logs date uid は ~140K-call パターンではありません。 転換する前に生産から確認される: 導かれた合計は COUNT(*)を丁度一致しました 全 264 (プロジェクト、コミットタイプ) は、バックフィル後の (0 ミスマッチ) と 3 個の commit logs をペアリングします。 火災を正しくトリガーします (kamo app としてロールバックトランザクション内で、アプリの独自に承認します。 資格).

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing