[Azure] C# + Azure.Storage.Blobs v12 - 取得某個檔案夾下的數量多少?(不完美但可用)

2021-01-04

為何標題打上不完美但是可以用,是因為,這真的不完美,包括你使用 Microsoft Azure Storage Explorer 按下 資料夾統計資訊,你也是慢慢的等大概就是一千一千的在跳,我測試大概資料量舉在 10 萬左右,所以檔案夾底下檔案一多,撈取檔案數量是一個問題,這你在設計的時候必須要去考量的。





前置步驟,首先你得安裝新版的 Azure.Storage.Blobs ( https://www.nuget.org/packages/Azure.Storage.Blobs ) 12.7.0 ,不要裝到舊版的,這邊我撰寫案例是用 .net core 3.1;在 Azure Portal  開一個 儲存體帳戶,並且在左側的存取金鑰中拿到 Connection String.



然後這邊我一次放入的 10 萬 JSON 資料當作測試,如果不知道怎麼寫資料上去的,可以參考這篇 [Azure] C# + Azure.Storage.Blobs v12 - 建立 Container, 上傳檔案 , 列出資料 , 列出資料夾 , 刪除檔案 , 刪除檔案夾 。這邊也順便提供一下數據,我開在東南亞,寫入 10W JSON 的時間大概是 00:02:55.903456 ,剛好有保留數據就記錄一下。


1. 這方法稍微快點  GetBlobs + AsPages



測試三次結果


00:01:30.0555938
100000!!
00:00:44.5654774
100000!!00:01:26.7048668
100000!!

2.直接使用 GetBlobs



測試三次結果

00:01:39.3611115
100000!!
00:00:52.8222959
100000!!
00:01:59.4036585
100000!!

看起來沒有其他方法,而且數據差異不大,其中用 pages 作法一次就是  5000 筆,如果有更好的方法,或是之後有更新,我在文章奉上..

reference:

https://stackoverflow.com/questions/6861865/getting-blob-count-in-an-azure-storage-container


當麻許的超技八 2014 | Donma Hsu Design.