Replies: 14 comments 30 replies
-
どっちがいいだろう |
Beta Was this translation helpful? Give feedback.
-
TLに流れてきたりページを開いたりするたびに記録となると結構DB負荷高くなる気がする(特に大規模サーバーでなりそう) |
Beta Was this translation helpful? Give feedback.
-
|
愚直にSQL書いて参照されていないノートを抽出 & ポスグレのVacuumよろしく定期的なメンテナンスという扱いでジョブキューを利用しちまちま消していけるようにする |
Beta Was this translation helpful? Give feedback.
-
|
lastActiveDateはあるけどストリーミング接続時にしか判定されないのね |
Beta Was this translation helpful? Give feedback.
-
|
削除の仕方でpostgresのデータ消費量を調べてみた DELETEの場合 https://www.db-fiddle.com/f/2Dpdqzonx9pk9GEs652Ved/3
|
Beta Was this translation helpful? Give feedback.
-
|
削除の仕方でpostgresのデータ消費量を調べてみた VACUUM FULL版 DELETEの場合 https://www.db-fiddle.com/f/2Dpdqzonx9pk9GEs652Ved/6
|
Beta Was this translation helpful? Give feedback.
-
|
削除の仕方でpostgresのデータ消費量を調べてみた VACUUM後に同じ量INSERT・さらにINSERTしたらどうなる? DELETEの場合 https://www.db-fiddle.com/f/2Dpdqzonx9pk9GEs652Ved/9
|
Beta Was this translation helpful? Give feedback.
-
|
削除の仕方でpostgresのデータ消費量を調べてみた
DELETEの場合 https://www.db-fiddle.com/f/2Dpdqzonx9pk9GEs652Ved/11
|
Beta Was this translation helpful? Give feedback.
-
|
インデックスサイズ(メモリ負荷)が気になるわね |
Beta Was this translation helpful? Give feedback.
-
|
https://github.com/tamaina/postgres-size-test/actions/runs/16351192657/job/46198131168#step:9:16 作った |
Beta Was this translation helpful? Give feedback.
-
|
私が直リンクで残っててほしいってのはノートリンクとかのことを想定してるので、普段ほぼアクサスされない別テーブルに分けておいて、 /notes/id の処理に見当たらない(かつ日時が一定以上古い id)ならそっちのテーブル引いて ap show したりリモートを見るようにすすめる代替表示をする形でも良い気もします。 orphan orローカルが関わってないノートを消す前提だと思うので |
Beta Was this translation helpful? Give feedback.
-
|
|
Beta Was this translation helpful? Give feedback.
-
|
やっぱ欲しいのでReopen? |
Beta Was this translation helpful? Give feedback.
-
Redisの方が良さそう(Postgresはsaveすることになってパフォーマンス的に不味そう) Redisは吹っ飛ばしてもいい様に、idが0として統計開始日時を書き込んでおいて(起動時にチェックしてなかったら書き込む?)それが閾日時より前だったらジョブプロセスはスキップされるという実装がいいかもしれない |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
連合が多く数年単位で運営されているサーバーでは、リモートノートによるデータベースの肥大化が喫緊の課題となっている。p1.a9z.devではnoteテーブルだけで50GB近くの容量を消費しており、インデックスを含めるとさらに容量を消費する。受信後一定期間が過ぎた未利用のリモートノートは削除されるべきである。
Related Issue: #9972 #12278 #7342
「未利用のリモートノート」をどう定義・検出する?
ローカルユーザーによって返信, Renote, リアクション, クリップ, お気に入りなどがされていない?
ローカルユーザーによって反応されているリモートノートは削除するべきでない。
しかし、返信, Renote, リアクション, クリップ, お気に入りなどがローカルユーザーが反応しているかを検出するには、SQLにしろnodeで処理するにしろ計算が多くなりそうである。
(特にクリップやお気に入りの判定はとんでもないことになりそう)
参照された期間で決めよう
ローカルユーザーやAPIによって参照・操作された日時を記録し、参照から一定時間経過したノートを削除すれば良いのだ。計算量は軽いはず。
日時の記録(参照からの時間経過の検出)は、Redisでexpire指定でnoteIdを記録するとか、PostgreSQLにlastSeenAtを記録するとかが考えられる。
経過日時は設定ファイルで変えられると良さそう。
コンテンツだけ削除
削除はコンテンツの中身だけを消去するものとする。期間削除時にローカルユーザーからの反応を考慮しないので、idを確保したりデータベースの関連付けを保持しておくためだ。
Beta Was this translation helpful? Give feedback.
All reactions