針對查詢和掃瞄資料的最佳實踐

2022-06-26 05:03:08 字數 897 閱讀 5019

一般來說,在 dynamodb 中,scan操作的效率低於其他操作。scan操作始終掃瞄整個表或二級索引。之後,它篩選出值以提供所需結果,從本質上講,這增加了從結果集中刪除資料這個額外步驟。

如有可能,應避免對大型表或索引使用帶有會刪除很多結果的篩選條件的scan操作。同時,隨著表或索引的增大,scan操作的速度會變慢。scan操作根據請求的值檢查每個專案,可以在單次操作中用盡大型表或索引的預置吞吐量。為了縮短響應時間,請對錶和索引進行設計,以便應用程式可以使用query而非scan。(對於表,還可以考慮使用getitembatchgetitemapi。)

或者,如果要在應用程式設計中使用scan操作,應最大程度地降低這一操作對您的請求率的影響。

您可以使用以下技巧最大程度地減小掃瞄操作對錶的預置吞吐量的影響,而不使用消耗大量資源的scan操作。

很多應用程式都可以從使用並行scan操作(而非按順序掃瞄)中獲益。例如,如果要處理含有歷史資料的大型表,應用程式並行掃瞄比按順序掃瞄速度快得多。後台「清理程式」程序中的多個工作執行緒可以對優先順序比較低的表進行掃瞄,而不影響生產流量。在每個示例中,並行scan的使用並不會限制其他應用程式的預置吞吐量資源。

儘管並行掃瞄比較有利,但是它可能會需要大量預置吞吐量。借助並行掃瞄,您的應用程式將具有多個工作執行緒,這些工作執行緒都同時執行scan操作。這會快速占用表的所有預置讀取容量。在這種情況下,需要訪問此表的其他應用程式就有可能受到限制。

如果滿足以下條件,就可以選擇並行掃瞄:

資料庫優化的最佳實踐

1 謹慎而有效地使用索引 選擇合理的索引 字首性及可選性 刪除沒有用的索引。2 使用規範化,但不要使用過頭 規範化 至少是第三正規化 是乙個易於理解且標準的方法。然而,在有些情況下,你可能希望違反這些規則。查詢表通常是規範化的產物,也就是說,你建立了乙個特殊的表,這個表包含了在其他表中被頻繁使用的相...

資料庫優化的最佳實踐

1 謹慎而有效地使用索引 選擇合理的索引 字首性及可選性 刪除沒有用的索引。2 使用規範化,但不要使用過頭 規範化 至少是第三正規化 是乙個易於理解且標準的方法。然而,在有些情況下,你可能希望違反這些規則。查詢表通常是規範化的產物,也就是說,你建立了乙個特殊的表,這個表包含了在其他表中被頻繁使用的相...

資料庫設計的最佳實踐

資料庫設計的最佳實踐 1 使用定義明確的表或列名,並保持一致 例如,school studentcourse courseid 2 使用單數形式的表名 即,用studentcourse而非studentcourses 表代表了實體的合集,不需要複數形式。3 不要在表名中使用空格。否則你將在定義表時不...