全ての記事へ戻る

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割は「インデックス貼り忘れ」で説明できるという真理を、またしても学んだのでした。

教訓 💡

  1. エラーが出たら、まず深呼吸(パニックは禁物)
  2. ログを見る(証拠は現場にある)
  3. AIに聞く(プライドは捨てよう)
  4. インデックスを貼る(これ大事)

そして何より、**「AIに任せられることはAIに任せて、人間は楽しく生きよう」**ということです。

めでたしめでたし 🎉