PlanetScaleを使っていて焦ったこと
こんにちは、皆さん!データベースを扱うときに「焦った瞬間」ってありませんか?今日は、僕が仕事で使っているPlanetScaleというDBで経験したヒヤリハットを共有します。
PlanetScaleとは?
PlanetScaleは、MySQL互換の分散データベースです。高性能でスケーラブルな点が魅力です。
ある日データ不整合が発生
ある日、データ不整合が発生してしまい、SQLで対応する必要がありました。こんな感じでUPDATE文を書いていたんです。
UPDATE Admin SET name = 'adminName' WHERE id ='clstv1nic000008l43e7r9zaa';
一般的なイレギュラー対応です。
トランザクションをかけて実行し、下記のように無事に実行されたと思いました。
[2024-07-09 00:05:19] 1 row affected in 37 ms
よしOK!と思ってもう一度確認してコミットしたら…。
[2024-07-09 00:07:00] [HY000][1105] target:xxxxxx.-.primary: vttablet: rpc error: code = Aborted desc = transaction 1719844899129891398: ended at 2024-07-08 15:05:40.334 UTC (exceeded timeout: 20s) (CallerID: nf8q2t4ya6l4keiftfrh)
本番だったので焦ってました....
焦った瞬間
焦りました。調べたらトランザクションのエラーだと分かりました。Planetscaleのドキュメントを読んでみると…。
Per-transaction timeout 20s
って書いてあるじゃないですか。ちゃんとドキュメントは読もう、と心に誓った瞬間でした。
まとめ
何事もドキュメントを読むことが大切です。僕のように焦ることがないように、しっかりと準備して使ってくださいね。