supabaseトラブルシューティングをAIに丸投げして楽しく生きよう
#supabase#postgresql#ai#chatgpt#performance
事件は突然起こった 🔥
Supabaseでローカル開発環境を構築し、「よっしゃ、今日もバリバリコード書くぞ!」と意気込んでいたある日のこと。
突如として、画面に現れた不吉なエラーメッセージ:
{
"code": "57014",
"details": null,
"hint": null,
"message": "canceling statement due to statement timeout"
}
「タイムアウト...だと...!?」
しかもこれが「頻繁に」発生するという地獄。コーヒーを飲む暇もなく、エラーとの戦いが始まったのです。
解決プロセス(または「AIに泣きつく3ステップ」)
ステップ1: まずはDBに潜入捜査 🕵️
犯人を捕まえるには、まず現場に行かなければなりません。PostgreSQLのコマンドラインに勇敢にも飛び込みます:
psql "postgres://postgres:postgres@localhost:54322/postgres"
(パスワードがpostgresって...セキュリティ的にどうなの?と思ったあなた、ローカル環境だから許してください)
ステップ2: 犯人(遅いクエリ)を特定する 🔍
次に、「誰がサボってるんだ!」とばかりに実行中のクエリを監視します:
SELECT pid, state, wait_event_type, wait_event, query
FROM pg_stat_activity
WHERE state != 'idle';
このクエリは、まるで会社の監視カメラのように、今まさに働いている(または働いていない)クエリたちを丸裸にしてくれます。
ステップ3: AIに全てを委ねる 🤖✨
ここからが本番です。もう自分で考えるのは諦めました。ChatGPTという名の救世主に全てを託します:
SELECT pid, state, wait_event_type, wait_event, query FROM pg_stat_activity WHERE state != 'idle';
上記を実行して下記のような内容が出力されました。パフォーマンス改善をお願いします
pid | state | wait_event_type | wait_event | query -----+--------+-----------------+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<詳細内容は割愛>
「お願いします!助けてください!もう限界です!」
という心の叫びと共に、出力結果を丸ごとChatGPTに投げつけます。
ステップ4: AIの神託を実装する 📜
ChatGPTが優しく(時には厳しく)教えてくれた改善策を実装します。
結果:大体はIndexが適切に貼っていない問題でした。
「え、それだけ...?」
そうです。結局のところ、データベースパフォーマンスの9割は「インデックス貼り忘れ」で説明できるという真理を、またしても学んだのでした。
教訓 💡
- エラーが出たら、まず深呼吸(パニックは禁物)
- ログを見る(証拠は現場にある)
- AIに聞く(プライドは捨てよう)
- インデックスを貼る(これ大事)
そして何より、**「AIに任せられることはAIに任せて、人間は楽しく生きよう」**ということです。
めでたしめでたし 🎉