いまさら聞けないデータ削除の話

こんにちは!請求書チームのバックエンドエンジニアの中松です。クロスマートに入社してはや2年、入社したときにバックエンドに転向しました。日々テーブルを作成したり、コードを書いてAPIを作成したり・・・を行っているのですが、データベースのデータについていじることがあまりなく、先日データベースのデータを大量削除するミッションを行ったのでその学びについて書いてみます!とっても初歩的な内容です。

また、今回のミッションにあたってはチームメンバーにも助けられました。う〜ん、ちょっと不安かもしれないです、というと、Gatherでささっと集まってくださり、一緒に考えてくれるメンバーにはいつも助けられています。毎日デイリースクラムで顔を合わせているので、リモートだから話しかけにくいということはありません。すごくありがたい環境で働いています!

今回のミッションの内容

エラーログを溜めていて、規定の日数を超えるとお客様からは見えなくなるデータがあります。ありがたいことに利用してくださるお客様が日々増えているので、かなりのデータを溜め込んでおり、古いものを消そう!となりました。テスト環境では140万ほどのデータが削除対象で、本番では900万ほどが削除対象でした。

私 < 削除クエリで消してしまってもいいのでは???削除クエリを見てもらおう!

天の声 < ちょーっと待った!一気に消してデータベースに負荷をかけて、

 環境を圧迫させてしまうとお客様に影響があるかもしれないぞ!!!!!

なるべくCPUが100パーセントにならないようにデータをちょっとずつ消すことになりました。

テスト環境で実行した結果

5000ずつ消す

[テスト環境] 5000ずつ消す

あっという間にCPUが100%になってしまっています。

5000ずつsleepを10秒入れる

[テスト環境] 5000ずつsleepを10秒入れる

消す時間はかかりますが、あまりCPUの上昇がなく他の動作に影響がなさそうです

10000ずつsleepを3秒入れる

[テスト環境] 10000ずつsleepを3秒入れる

これでも大きくCPUが使われることはなさそうです。

本番環境にて

請求書サービスは月初使われることがほとんどなので、なるべく利用者が少ない、月中ばに実行しました。10000ずつsleepを3秒入れて実行しました。 CPUの利用率が100パーセントになることはなく、削除することができました!

[本番環境] 10000ずつsleepを3秒入れる

終わりに

すごく技術的な話ではなく恐縮なのですが、今回のミッションは基礎中の基礎を学ぶことができ、大変勉強になり、自分の中ではひとつ糧が増えたなぁという感じです。また、改めてこういったことを丁寧に教えてくれて、経験者ならすぐ終わってしまうようなことも挑戦させてくれる環境に感謝です。

クロスマートではフロントエンドエンジニアやバックエンドエンジニア、PM、BizDevなど一緒に働ける方を募集しています。 ご興味がある方は、是非こちらを御覧ください!

xorder.notion.site