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"をフルスキャンするのを解消する #12947

Closed
1 task done
yszkst opened this issue Jan 8, 2024 · 3 comments
Labels
⚠️bug? This might be a bug

Comments

@yszkst
Copy link
Contributor

yszkst commented Jan 8, 2024

💡 Summary

主題

ファイルが添付されているノートを検索するクエリが"note"をフルスキャンする

解消策

  • note.fileIds についているINDEXがbtreeなのでGINにする
  • クエリを :file = ANY(note.fileIds) から note.fileIds @> '{ファイルID}' にする

影響

  • fileIds に対するクエリで Where('note.fileIds != \'{}\''); の個所は btree でも GIN でもインデックスが効かないので無影響
  • packages/backend/src/server/api/endpoints/notes.ts L74 に = {} がありこれは btree で有効になる
    • あえて "ファイル無しノート" を取得することはユーザーとして無いのでこれも無視できる
      • プロフィールから "ファイル付きノート" はある

その他

問題なさそうならついでに行いたいもの

noteテーブルとpackages/backend/src/models/Note.ts 

以下のインデックスに対応するカラムについてGINインデックスがあるが btree インデックスが残っている

  • IDX_NOTE_VISIBLE_USER_IDS
  • IDX_NOTE_MENTIONS
  • IDX_NOTE_TAGS

対応

  • 明示的なbtreeインデックス削除
  • 複合インデックスでないのでcolumnの上にアノテーションする
    • 特にルールは無いと思いますがこの方が見やすいと思っただけです

🥰 Expected Behavior

結果が返って表示される

🤬 Actual Behavior

時間がかかるのでノート数が多いサーバーでDBクエリタイムアウトを設定している場合に返ってこない

📝 Steps to Reproduce

  1. ドライブで任意のファイルを選択する
  2. 添付されているノートを開く

💻 Frontend Environment

* Model and OS of the device(s):
* Browser:
* Server URL:
* Misskey:

🛰 Backend Environment (for server admin)

* Installation Method or Hosting Service: development environment
* Misskey: 2023.12.2
* Node: 20.10
* PostgreSQL: 15.1
* Redis: 7.0.8
* OS and Architecture: 22.04.3 LTS amd64

Do you want to address this bug yourself?

  • Yes, I will patch the bug myself and send a pull request
@yszkst yszkst added the ⚠️bug? This might be a bug label Jan 8, 2024
@u1-liquid
Copy link
Contributor

FYI: MisskeyIO#239

@yszkst
Copy link
Contributor Author

yszkst commented Jan 8, 2024

@u1-liquid 後で取り込むということならこのIssueをCloseします。

@yszkst
Copy link
Contributor Author

yszkst commented Jan 14, 2024

インデックス追加と MisskeyIO@24d2f2a を cherry-pick してPRにしてみます

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⚠️bug? This might be a bug
Projects
None yet
Development

No branches or pull requests

2 participants