あー、出た出た。「負荷試験で全部検出できる」っていう過信系エンジニアの典型的自己放尿ね。
それっぽい口ぶりしてるけど、中身はかなり雑。
それ、現実では成立しないことのほうが多い。
実データの複雑さ、偏り、スパイク、タイミングの揺らぎ、全部再現不能。
とくにJOINが関わると、クエリプランはデータ量や分布に応じて変化する。
たとえば初期はNestedLoopで爆速だったJOINが、数百万件超えるとIndex Mergeになり、さらにデータが偏ると一気にフルスキャンに堕ちる。「その場では平気」でも、翌月には地獄が来る。
それに、負荷試験では「時間の経過による蓄積的劣化」は測れない。
たとえばバッチ処理や月次分析クエリ、広告配信ログなど、JOIN対象が少しずつ増えていく処理では、初期の負荷試験では一切異常が出ない。半年後、1年後に突然クエリ1本でサーバが沈む。
つまり、「リリース前に大丈夫だった」は、将来の保証にはならない。時間は最強の敵だ。
本当に経験積んでるエンジニアは、「負荷試験で詰めきれないものが必ずある」ことを理解して、そもそもそういう危うい構造を最初から作らないようにする。
JOINを避けるのは、「MySQLがいけてないから」じゃない。「JOINという構造自体が後から効いてくる爆弾だから」。
どんなDB使ってようが、JOINのスケール問題は必ず起きる。
逆。JOINを無警戒に使って設計して、死んだときに「こんなにデータ増えるとは思わなかった」とか言い出すやつが素人。
こっちは、死ぬとわかってる構造を未然に潰してるだけ。その結果が、辞書化・プリロード・キャッシュ・パーティション・非正規形の併用設計。
「JOINのせいにしてる」んじゃない、JOINの限界を理解してるから設計で回避してる。それだけ。
というわけで、負荷試験万能説、JOIN無罪論、MySQLディスり、全部現場経験不足と理屈のすり替えから来てる自己放尿である。
知識の断片で語るな。
JOINは便利。でも無敵じゃない。
また自己放尿か? まず君は現場でのパフォーマンス要件を完全に無視している。 理論と実務の乖離が甚だしい。 RDBの第三正規形について何も分かっていない 巨大なusersやitemsテーブルを...
巨大なテーブルを扱っているというのが誤解です 今後巨大なテーブルになるというのも誤解です 本当に巨大なら手元に辞書作るのも無理なので問題ありません
「巨大なテーブルじゃない」「今後も巨大にならない」「だから辞書じゃなくてJOINでも問題ない」 全部甘い。現場知らないヤツの脳内放尿だな。 まず、もしテーブルが小さいならそ...
あなたの不安が大きいのはわかりましたが、現実としてデータは大きくならないし、joinは破綻しません 思い込みで無駄に複雑にするのが一番よくありません まずはシンプルにコードを...
そうよね リリース前に負荷試験で危ないクエリ洗い出しておけば安心してリリース迎えられるのに 後でデータが巨大になって死ぬって話を繰り返してて 負荷試験やらない素人がでかい...
あー、出た出た。「負荷試験で全部検出できる」っていう過信系エンジニアの典型的自己放尿ね。 それっぽい口ぶりしてるけど、中身はかなり雑。 「リリース前に負荷試験で危ないク...
「負荷試験で現実からかけ離れた雑なデータしか作れない素人です」って札を首から下げて生きた方がいいよ RDB扱ってるのにマトモな負荷試験やったことない奴って本当に多いよね
「負荷試験で現実からかけ離れた雑なデータしか作れない素人です」 それ、お前の妄想上の素人に向かって自己放尿してるだけで、俺の話には一切当たらない。 こっちは負荷試験その...
あー、それ完全に自己放尿のマジックワード連打だな。「現実として〜」「破綻しません」「シンプルにしましょう」中身ゼロ。 こっちが挙げた定量的リスク(件数増加、I/O負荷、JOINの...
JOINの動きが分かりづらいから自分がわかるエンジニアリングに逃げてるだけなのでは
あー、なるほどね。「JOINが難しくて避けてるだけなんじゃね?」ってわけか。 甘い。構造わかってない奴ほどそういう浅い自己放尿をしたがる。 まず前提を修正しろ。JOINの動きなんて...
DBにはこだわりは有るようだが、事業全体のコストとかは見えてないエンジニアなんだろうなと。 まあ、少数のシステムしか経験のない飼い殺しエンジニアみたいな感じだろうが。 事業...
お前の反論、自分が引き算の美学で事業コストを語れてると勘違いしてるパターン。 でも実態は、事業規模に対する思考スコープの狭さがにじみ出てる。 まず最初に、 「事業全体の...