デッドロックが発生します。デッドロックは、更新ロックをかける順番を考慮することで回避することが可能です。実行されないことが保証されるため、デッドロックは回避されます。トランザクションの終わりに置くことでブロッキングの時間を最小化することが出来ます。可能性を高めるため、トランザクションを短くする必要があります。実装しているクエリの最適化を行うことでトランザクションを短くできる可能性があります。インデックスを利用する一連の処理におけるイベントを減らすプラグインやワークフローを同期処理として実装している場合、トランザクションは長くなります。非同期処理を導入することでトランザクションの長さを短くすることができます。非同期処理で作成した場合で比較しています。開始位置を比べると一目瞭然です。実行することが可能です。更新処理を入れることになります。トランザクションで実施されることとなり、トランザクションが長くなります。ユーザー情報の更新処理をなくし、全体の処理を短くすることが可能です。同じイベントの複数呼び出し同じイベントに対して複数の実装している場合、潜在的にリソースが競合する可能性が高まります。取引先企業の更新処理にて競合が発生する可能性が高まります。異なる開発者により実装される場合、競合を見落とす可能性があるため慎重に検討する必要があります。プラグイン、ワークフロープラグインやワークフローのタイプにはそれぞれ意味があります。以下の表は一般的に適切な処理とそうでないものを記載します。非常にコストが小さい処理。常にプラットフォームイベントから呼び出される処理(プラグイン、ワークフローを利用すべき)また、プラグインやワークフロー内に長時間を要するバッチ処理を実行することは想定されていません。別のサービスとして実行してください。セキュリティ設定セキュリティ設定の拡張は、コストのかかる操作のため慎重に実施する必要があります。チームにユーザーを追加する場合、デッドロックを避けるため常に同じ順序でユーザーを追加します。ユーザーを更新する場合、必要以上のキャッシュを避けるため必要なユーザーのみ更新します。所有者となっているチームの更新には注意が必要です。大量のチームや部署の追加は、多くの複雑な計算が必要となるため慎重に実施する必要があります。所有者をアサインする場合、共有範囲を考慮する必要があります。ユーザー情報にオープンの活動数を保持するような設計は極力控えてください。ユーザー情報が更新されるたびに、コストの高い再計算処理が実行されます。ダイアグラムの作成ブロッキングや問題を事前に防ぐツールとして、処理をダイアグラムに図式化する方法があります。図式化することで処理がループすることを事前に検知することができます。より楽観的な分離レベルに変更することで、多くのブロッキングの問題に対処できます。読み取り時のブロッキングから解放されます。書き込み処理が追加されます。設計の最適化によるブロッキングの回避のほうがはるかに有益なアプローチです。回に渡り紹介してきましたがいかがだったでしょうか。パフォーマンスはユーザー操作に直結する重要な項目です。仕組みを理解し、適切に利用いただくことでよりパフォーマンス改善につながります。合わせてご確認ください。01:58いつもお世話になっております。参考になるドキュメントの紹介ありがとうございます。Plug-INの見直しを予定していたので助かりました。03:17コメントいただき誠にありがとうございます。プラグインの見直しに本記事を参考としていただきありがとうございます。フィードバックをいただければ幸いです。本ブログがよりお役に立てる内容となるよう反映していきたいと思います。