EntityFrameworkのメリット・デメリット
Microsoft.EntityFrameworkCoreを使用してC#のWEBアプリケーション開発を行っている。
開発方針として、なるべくSQLを記述しなくても済むようにという
生産性を意識した開発を行ってきたが、
大量データの追加・更新の際のレスポンスが遅いという問題が発生した。
————————————-
調査した結果、EntityFrameworkを使用してDB操作している箇所がボトルネックとなり、
処理遅延の原因になっていた事が分かった。
これを受けて、対策としてはEntityFrameworkによるDB操作をやめ、
NativeなSQLによるDB操作に切り替えをした。
感覚値だが、EntityFrameworkでのInsertが0.05秒だとして
NativeなSQLは0.01秒程度にまで改善された。
以下にメリットデメリットをまとめる。
————————————-
<メリット>
EF使用:
・SQLを記載しなくても、Entityへの項目移送さえきちんとできていれば、
Insert、Delete、Updateも容易。
→生産性が高い。
・DB変更(項目追加、変更)などに対応しやすい。
Entityさえ載せ替えてしまえばよいので、DB変更に伴うAbortなどが起きにくい。
SQL :
・EF使用と比較して、処理速度が圧倒的に速い。
大量データをさばくのなら、こちらが便利。
<デメリット>
EF使用:
・とにかくNativeなSQLに比べて遅い。体感的には3倍程度のイメージ。
SQL :
・DB変更に対してのインパクトが起きやすい。
————————————-
以上の事から、プロジェクトによる方針決めはあると思うが、
・それほどレスポンスが気にならない更新処理(マスメンなど)はEF使用。
・レスポンスの速さが求められる処理はNativeなSQLで実装する。
が、落としどころとしてはよいのではないかと思う。