一般的に「SharePointリストよりもDataverseの方がパフォーマンスが良い」とよく言われますが、どのくらいパフォーマンスが向上するか定量的な指標を知りたかったので計測してみました。
この記事では、レコード数(1, 5000, 20000, 100000, 500000, 1000000)ごとにレコードの作成、更新、削除処理の時間を計測したものを公開します。
また、SharePointリストとDataverseでどれだけパフォーマンスに差が出るか、定量的な数値を公開します。
※計測した数値はあくまで参考値ですので、実際のアプリでの責任は取れません。
結論:レコード数によって処理時間はほとんど変化しない
レコード作成の処理は1件のみの時とそれ以外では差があり、5000件以降ではそこまで変化がないことが確認できました。
これはPower Apps内部ではデータ行の制限までのレコードのみで処理しているためだと考えられます。
そして、他のコントロールを参照しない単純なCRUD処理は誤差の範囲でしか変動しませんでした。
またSharePointリストに対してDataverseは、CRUD処理が30~50%ほどの処理時間で処理されました。
以降の章で、詳細な結果と考察について説明します。
計測方法については【Dataverse VS SharePointリスト】コントロール数ごとの各種処理の時間を計測してみたをご覧ください。
単純なCRUD処理での処理時間計測結果と考察
レコード数ごとではCRUD処理でほとんど処理時間に差が見られなかったので、処理ごとの処理時間の平均を以下に示します。
Dataverseでは処理にほとんど差がないのに対して、SharePointでは更新、作成、削除の順に処理時間がかかっています。
数式を見ると、(当然ですが)データソースを参照した回数が多いほど処理時間が長くなっていることがわかります。
//SharePointリストのレコード作成処理
Patch(
パフォーマンステストList,Defaults(パフォーマンステストList),
{
Title:If(Last(パフォーマンステストList).タイトル = "Title", "タイトル", "Title"),
Date:Last(パフォーマンステストList).Date - 1,
Number:Rand(),
Choice:First(Shuffle(Choices(パフォーマンステストList.Choice)))
}
);
//SharePointリストのレコード更新処理
Patch(
パフォーマンステストList,Last(パフォーマンステストList),
{
Title:If(Last(パフォーマンステストList).タイトル = "Title", "タイトル", "Title"),
Date:Last(パフォーマンステストList).Date - 1,
Number:Rand(),
Choice:First(Shuffle(Choices(パフォーマンステストList.Choice)))
}
);
//SharePointリストのレコード削除処理
Remove(
パフォーマンステストList,
Last(パフォーマンステストList)
);
With関数でデータソースを参照する回数を減らしてあげることが解決策として挙げられます。
またSharePointとDataverseで処理時間を比較すると、Dataverseの方が2, 3倍ほど早く(処理時間50~70%減)処理できていることがわかります。
SharePointと比較してデータソースを参照した回数が多いほど処理時間を短縮できていることがわかります。
レコード数ごとの処理時間結果の考察
最初に記述した通り、レコード作成の処理は1件のみの時とそれ以外では差があり、5000件以降ではそこまで変化がないことが確認できました。
これはデータ行の制限によるものではないかと考え、データ行の制限を500→2000に変更して同様に計測してみました。
予想通り、SharePointリストでは152%、Dataverseでは257%処理時間が増加しました。
影響がなければ、データ行の制限は少なめにしておくのが良さそうですね。
まとめ
結論は以下の4点です。
- レコード数がデータ行の制限で指定した行数以降は誤差の範囲での変動しかしない
- 他のコントロールを参照しない単純なCRUD処理は誤差の範囲でしか変動しない
- データソースを参照した回数が多いほど処理時間を短縮できる
- SharePointリストに対してDataverseは、CRUD処理が40~60%ほどの処理時間で処理される
指摘・要望があれば他の条件でも調べてみようと思います。
この記事がみなさんのアプリ作成における、データソース選定の指標の参考になれば幸いです!!
コントロール数ごとの処理時間:【Dataverse VS SharePointリスト】コントロール数ごとの各種処理の時間を計測してみた
コメント