18:56:44
icon

muninで使われてるRRDtoolsとかは4GB rolloverを考慮した作りになってる

18:11:18
icon

gist.github.com/tateisu/58d8e5 FTLでは部分インデックスが使われなかったのでLTL専用のインデックスに書き直しました

18:07:45
icon

じゃあさっきのgist記事を更新しときますか…

18:07:37
2017-10-15 18:04:53 unaristの投稿 unarist@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

17:57:44
icon

LTLが過疎りがちなおひとり様タンスだとLTL専用に部分インデックス作った方がいいんだろうなあ… FTLの方は別に最適化いらないだろうと思わなくもない

17:56:53
icon

ほんとはLTLとFTL個別に部分インデックス作った方が速いけど、容量との兼ね合いもあるしどうなんだろ。FTLのクエリでさっきの部分インデックスが使われるのかどうか確認してない

16:53:21
icon

らずぱいゼロとカメラモジュールかな。らずぱい割と普通のLinuxで楽しいよね

15:40:00
2017-10-15 15:37:22 雪餅の投稿 YUKIMOCHI@toot.yukimochi.jp
icon

かなり速くなったような。(13MB 消費された。)

15:34:59
icon

このインデックス入れるとLTLが過疎ってる場合のAPI応答性が大幅に改善しますが、インデックスを増やすことによるコスト増加と見合うかどうかは人によると思います。
gist.github.com/tateisu/58d8e5

15:30:58
icon

というわけでLTL,FTLのクエリ負荷を軽くするインデックス。

CREATE INDEX accounts_not_silenced ON accounts using btree
(id)
WHERE not silenced;

CREATE INDEX statuses_public ON statuses using btree
(id,("statuses"."local" = TRUE OR "statuses"."uri" IS NULL))
WHERE "statuses"."visibility" = 0
AND (statuses.reblog_of_id IS NULL)
AND (statuses.reply = FALSE OR statuses.in_reply_to_account_id = statuses.account_id) ;

15:23:25
icon

gist.github.com/tateisu/58d8e5 部分インデックスを貼ると8msのクエリが1.5msになった

15:07:28
icon

ああ、このケースだとaccounts.silences 見てるから結局アカウントテーブルにもアクセスが必要になるのか… cost見ると別に減ってないしなあ…

15:02:15
icon

@zundan 時報か天気ボットでも入れてLTLを微妙に賑やかすと一発で解決するんでは。

あとaccounts へのjoinをin(select...) に置き換えると実行時間が44%下がります。
gist.github.com/tateisu/58d8e5

14:47:49
2017-10-15 11:42:42 zundaの投稿 zundan@mastodon.zunda.ninja
icon

久しぶりに詳細が見えた。/api/v1/timelines/public?local=true に20行で40秒

SELECT "statuses"."id", "statuses"."updated_at" FROM "statuses" LEFT OUTER JOIN "accounts" ON "accounts"."id" = "statuses"."account_id" WHERE ("statuses"."local" = ? OR "statuses"."uri" IS NULL) AND "statuses"."visibility" = ? AND (statuses.reblog_of_id IS NULL) AND (statuses.reply = FALSE OR statuses.in_reply_to_account_id = statuses.account_id) AND "accounts"."silenced" = ? ORDER BY "statuses"."id" DESC LIMIT ?