おそらくはそれさえも平凡な日々

外部キーNightで「我々(主語が大きい)は何故MySQLで外部キーを使わないのか」という発表をしてきました

発表資料:我々(主語が大きい)は何故MySQLで外部キーを使わないのか

もう一月以上前ですが、外部キーNightという勉強会で、MySQLの外部キーについての発表をしてきました。

よく言われていることですが、それなりの規模のWebサービスのMySQL運用となると外部キーを避けざるを得ない部分があり、とは言えその辺りに関してまとまった資料が余りなさそうだったので、自分なりにまとめた内容を話した次第です。

MySQLを使ったそこそこの規模のWebサービスを運用している人にとっては当たり前の内容しか書かれてません。ただ、「外部キー使わないとか馬鹿なの」とかそんな論調を見ることがあり、そういう意見に対して、実際問題外部キーを使えるとなれば便利だとは思いますが、それがわかった上で、使わないという選択をすることがあり得るということを示したかったというのがあります。

実際ブコメで「そこそこの規模ならば外部キーを使っても良い」というような意見も書かれていますが、それはまったくもって正しいです。大規模でもスケールさせることは可能でしょう。ただ、個人的にはMySQL開発・運用でパーティションを多用するので、そうなると外部キーが使えなくなることが多いです。

CASCADE DELETEを避けつつもデータを綺麗に削除したい場合に、リストパーティションを用いたパターンが有効だったりしますが、その辺りの話はもうちょっと盛り込んでも良かったかもしれないと思いつつ、その辺の話はそのうちどこかでするかも知れません。

僕は立場上これまでWeb開発では外部キーを避けてきたというところにフォーカスを当てて話しましたが、逆に外部キーの有効性についてちゃんと話ができる人が登壇できなかったのが少し残念でした。

とは言え、最初のichirin2501のMySQLのロックに関するマニアックな話に続いて、僕の話があり、締めがkamipoさんのさすがのトークだったので非常に良い会でした。LTも充実していて良かったです。

会場提供のpixivさん、ありがとうございました。

created at
last modified at

2019-06-01T22:19:27+0900

comments powered by Disqus