Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

データベースのnoteテーブルの使用量を定期的に削減したい #12278

Open
kanade opened this issue Nov 7, 2023 · 10 comments
Open
Labels
✨Feature This adds/improves/enhances a feature 🔥high priority 🧑‍🔧Maintenance Related issues for maintaining server functionality packages/backend Server side specific issue/PR

Comments

@kanade
Copy link

kanade commented Nov 7, 2023

Summary

リレーサーバーに参加していると他サーバーのノートも大量に流れてきて、運用しているサーバーの規模によらずDBのサイズが肥大化していきますが、noteテーブルの中身を定期的にダイエットさせることはできないでしょうか?
(リレーには参加していたいですが、ノートがDBに際限なく溜まっていくのを解決したいです)

定期的にと書いてありますが手動実行でかまいません。

image

@kanade kanade added the ✨Feature This adds/improves/enhances a feature label Nov 7, 2023
@nakkaa
Copy link

nakkaa commented Nov 7, 2023

過去に似たようなissueを起票したのを思い出しました。
#9972

2023.10.1以前の時はこんな感じのSQLを叩いて消してましたね。最新版ではcreatedAtカラムは消えたので使えないです。
(似たようなことを実施している方の記事: https://nanasi-apps.xyz/Misskey-oldremotenote )

DELETE FROM note
 WHERE "userHost" is NOT NULL
 AND "reactions" = '{}'
 AND "repliesCount" = 0
 AND "renoteCount" = 0
 AND ("visibility" = 'public' OR "visibility" = 'home')
 AND "createdAt" < now() - interval '12 month';

ただ、Misskey側の機能として用意していただけた方がサーバー運営者としては助かります。

@kanade
Copy link
Author

kanade commented Nov 7, 2023

過去のIssueがうまく検索できておらず、気付けずにすみませんでした!
クエリの共有ありがとうございます、助かります!
直接SQLを発行して消す方法でもいいのですが、小規模なサーバーあるあるな悩みかと思い共有した次第です。
可能であればMisskeyのコントロールパネルあたりから操作できたらいいなと思っています。

@fruitriin
Copy link
Contributor

ちょうどノートを1ヶ月単位でパーティション切りたいなと思っていたらcreatedAtがなくて困っている

参考
https://www.postgresql.jp/document/10/html/ddl-partitioning.html
https://lab.mo-t.com/blog/introduce-table-partitioning-in-aurora-postgres

@kanade
Copy link
Author

kanade commented Nov 7, 2023

createdAtなくなっちゃったの不便ですね…単純にリアクションや返信のないリモートの公開ノートを消しちゃってもいいのかなと思いつつ、なにか弊害があったら嫌だなと思って実行できずにいます。

@syuilo
Copy link
Member

syuilo commented Nov 8, 2023

古いリモートのコンテンツ定期的に消すオプション作るか
クリップやお気に入りされている可能性はあるけど、ひとつひとつチェックするのは現実的ではなさそうだから問答無用で消しちゃう

@kanade
Copy link
Author

kanade commented Nov 8, 2023

あー…クリップに保存されている可能性なども考えないといけないのですね、、
サーバー内で参照しているものについては極力残したい気持ちと、全部消してもいいやという気持ちが拮抗しています。
消す前のクリップやお気に入り登録のチェックってかなり面倒くさいですかね…?(手間がかかりそうではある)

@kakkokari-gtyih
Copy link
Contributor

kakkokari-gtyih commented Nov 8, 2023

古いリモートのコンテンツ定期的に消すオプション作るか クリップやお気に入りされている可能性はあるけど、ひとつひとつチェックするのは現実的ではなさそうだから問答無用で消しちゃう

クリップ・お気にいりにリモートの投稿を登録するときは内部の投稿ID以外にオリジナルURLをもたせた状態で記録して、もしローカルに投稿がなければ再取得(フォールバック)するようにすればいいのでは

@syuilo syuilo added 🔥high priority packages/backend Server side specific issue/PR labels Nov 8, 2023
@syuilo
Copy link
Member

syuilo commented Nov 8, 2023

なるほど
それを実現する場合先に脱CASCADE削除する必要があるわね

@kakkokari-gtyih
Copy link
Contributor

kakkokari-gtyih commented Nov 8, 2023

クリップ・お気にいりにリモートの投稿を登録するときは内部の投稿ID以外にオリジナルURLをもたせた状態で記録して、もしローカルに投稿がなければ再取得(フォールバック)するようにすればいいのでは

これするくらいならいっそのことリモートのノート(内部ID・オリジナルURL以外)はRedis(保持数に上限があるやつ)に突っ込んでおいてもいい気がしてきた

@backrunner
Copy link
Contributor

Any updates? Really need this feature. QAQ

@samunohito samunohito added [Feat] ControlPanel Issues related to existing functionality, such as bugs or adding small features. 👮Moderation Issues to monitor server users and content and maintain public safety. 🧑‍🔧Maintenance Related issues for maintaining server functionality and removed [Feat] ControlPanel Issues related to existing functionality, such as bugs or adding small features. 👮Moderation Issues to monitor server users and content and maintain public safety. labels Nov 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨Feature This adds/improves/enhances a feature 🔥high priority 🧑‍🔧Maintenance Related issues for maintaining server functionality packages/backend Server side specific issue/PR
Projects
Status: No status
Development

No branches or pull requests

7 participants