09:20:29
icon

うーん頭と喉が痛い

09:25:25
icon

というわけでおはようございます

09:27:02
icon

初夢、うーん、見てないかも

09:32:55
icon

この冬休みにやること、決めた

ミスキーのDBをAlloyDB Omniに切り替えてみる。それで、素のLIKE検索がどのくらい速くなるか試してみる

09:47:38
2025-01-02 09:46:40 くっしー :verify:の投稿 kussy_tessy@fedibird.com
icon

「絶句超えて律詩」←これすき

09:49:06
icon

駅伝みないで逃走中の録画を見てる子供達

10:40:48
icon

新ルルA錠の力で立ち直った

11:15:08
icon

alloyDBをローカルで動かしてみたけど、LIKE検索、はやいぞ⋯?

11:18:57
icon

メモリはすごいな、4GB召し上がってる

11:20:04
icon

ポスグレは⋯ おや、ポスグレも4GB召し上がるのか

11:21:21
icon

それで今はmeilisearchが3GB使っちゃってるんだから、AlloyDB Omni一本で動かせば運用楽になる上にメモリまで余裕増える

11:30:24
icon

AlloyDBのLIKE検索の速さ。
続きの検索に時間がかかるあたりを見ると、OFFSET/LIMITが入ると重くなるところがあるのかな?

11:32:46
icon

noteテーブルは707万行、3.8GB。

11:42:36
icon

AlloyDBのポスグレ互換性はすごいな、どう互換性が高いかというと、/docker-entrypoint-initdb.d/ にSQLファイルを置いておくと初期化に使ってくれるというあたりも再現されてる

再現されてるってか、ポスグレベースで作ったから使用を引き継いでるって感じかな?

11:43:35
icon

pg_dump と pg_restore も普通に動いてる

11:49:21
icon

AlloyDBに乗り換えるのを決断する前に、素のポスグレのLIKE検索の速さがどんなだかを見ておこっか

12:08:35
icon

わかったこと。

このくらいの検索対象行数だと、AlloyDBでも素のPostgreSQLでも検索速度変わらない

12:10:43
icon

結論としては⋯

単にmeilisearchやめるか。

12:24:39
icon

●​:reaxwork: reax.workからのお知らせ●

ノート検索に高速全文検索ソフトウェアのmeilisearchを使ってきましたが、使うのをやめました。
これによりノート検索の応答がこれまでほぼ一瞬だったのが5〜10秒ほど待たされるようになります。

その代わり、検索精度がこれまで一定低いところがあった(キーワード見逃しや、ある程度古いノートが対象外になったり etc.)問題がなくなっています。

12:37:09
icon

AlloyDB Omniを試した所感:

- dockerイメージのイメージ名を google/alloydbomni に書き換えるだけで、ポスグレイメージとまったく同じ感じに立ち上がる
- ポスグレのバックアップダンプをそのままリストアできる
- データベース内に、publicスキーマのほかにgoogleなんとかってスキーマも作ってくる。なんに使っているスキーマかはよくわからない
- よって、AlloyDB OmniのDBをバックアップしてそれをポスグレにリストアしようとすると、「そんなスキーマはない」というエラーが何回か発生することになる(リストア自体は成功する)
- LIKE全文検索の速度は、700万行、4GB程度のテーブルでは目に見えるほどはなかった
- メモリ使用量も目に見える差はなかった

16:09:07
icon

書き初めタイム

21:40:07
icon

ノートの高速検索っていうと皆さんmeilisearchかpgroongaかって議論しがちなんですけど、ポスグレの世界でもうちょいメジャーな選択肢ってpg_trgmじゃないですかねというのを考えており、Misskeyのコードをちょっといじってpg_trgmに対応させるのを試し中。

21:42:04
icon

pg_trgmはILIKE演算子が使えないという弱点があり、じゃあどうすればいいかというと lower(note) LIKE '%小文字化した検索語%' ですよね、そういう風にコードをちょっと書き換えちゃう感じ。

StackOverflowの皆様調べなんだけど、この書き方のほうがそもそも素でもILIKEよりちょっと速いケースが多いらしい

21:43:23
icon

pg_trgm、note.textでなくてlower(note.text)に対してインデックス張ること、もちろんできるよね⋯?

22:54:40
icon

ノート検索を ilike から lower() like に切り替えたバージョンで動き始めました

Attach image
23:35:37
icon

pg_trgmじゃないや、pg_bigm。

pg_trgmはポスグレに標準で入っているしILIKEにも使えるけど、日本語検索ができないやつ。pg_bigmね、サードパーティライブラリで、日本語検索もできて、ILIKEは使えないやつ。

23:37:08
icon

pg_bigmをインストールしたPG15イメージのdockerfileはわりと簡単に書けた。

FROM postgres:15

RUN apt update
RUN apt install -y curl make gcc postgresql-server-dev-15

RUN curl https://github.com/pgbigm/pg_bigm/archive/refs/tags/v1.2-20240606.tar.gz -L -o pg_bigm-1.2-20240606.tar.gz
RUN tar zxf pg_bigm-1.2-20240606.tar.gz
RUN cd pg_bigm-1.2-20240606 && make USE_PGXS=1 && make USE_PGXS=1 install

RUN echo shared_preload_libraries='pg_bigm' >> /var/lib/postgresql/data/postgresql.conf