v0.5.9 — SQLite / D1 の SQL アクセス最適化
- Worker の待機ジョブ選択で、待機件数 × 過去の終了ジョブ件数の走査が発生する問題を修正しました。競合判定に使う実行所有者を SQL 内で一度だけ取り出し、status / execution token / lease の索引で実行を持たない終了履歴を除外します。同一サイトの直列化、作品単位の排他、中断した実行の token / lease 保護は維持します。
- 実データで残っていた、待機候補ごとの URL / N コードから作品 ID への全件検索も解消しました。SQL 内で URL・N コード・従来の URL suffix の対応表を一度作り、索引で照合します。数値 ID の解釈、複数作品に一致した場合の最小 ID、未登録 URL の排他は維持します。
- Native SQLite / Worker D1 のオブジェクト一覧を SQL 側でページ分割するようにしました。カーソル以前や他作品のキーを毎ページ読み直さず、ページ件数と次ページ判定用の 1 件だけを索引から取得します。Native の実ファイルとの統合、DB 優先、日本語キー、削除されたカーソルからの再開は維持します。
- タグ検索・非表示タグの照合を改善しました。Native / Worker 共通の SQL がタグ索引から作品 ID を引き、通常タグの完全一致用索引と属性タグ索引を追加します。大文字小文字・属性表示の ON / OFF・非表示条件の意味は変えません。
- Native SQLite のスナップショット保存で、変更のない作品・タグ索引・本文参照を書き直さなくなりました。追加・変更・削除と ID 予約の確定は従来のトランザクション内で行い、本文の重複排除・履歴復元・タグの順序は維持します。
- Worker の仮想小説の属性整合で、同じメンバー一覧を重複評価しないようにしました。混合作品の選択済み属性と、メンバーが欠けた場合の既存値を保持します。
計測は実データのコピーを使ったローカル検証です。本番 D1 での復旧・継続的な負荷削減は、修正版の配備後に別途確認する必要があります。
変更一覧は v0.5.8...v0.5.9 を参照してください。