分區設計__最佳實踐_雲數據庫 PetaData-阿裏雲
用戶存有海量數據的表應該按照數據規模進行拆解,表的數據將拆解成多個數據分區獨立存儲,通常的設計原則是:
主鍵(Primary Key)
單實例數據庫不要求表一定要有主鍵,但是對於分布式數據庫,主鍵則是必須的,以保證一行數據是全局唯一的,避免遷移過程出現問題。如果用戶沒有特殊的性能需求或業務耦合問題,則應將主鍵設計為無意義的整數值或者自增的;
分區鍵(Partition Key)
用戶的分區表必須按照一種維度進行數據劃分,用戶在按照分區鍵維度進行查詢時,就能做到線性性能增長,分區鍵通常有如下選擇方法:
1) 按業務ID切分,如用戶ID、商品ID等,適合每個業務ID的數據較均勻且查詢簡單的場景;
2) 按多個業務維度切分,用戶建立多張表存入相同數據,但是每張表按照不同業務維度切分,查詢時根據過濾條件選擇不同的表,以提升訪問性能,適合查詢複雜且單一切分方式不能滿足需求的場景;
3) 按自增主鍵切分,若表分區方式為分區表,主鍵為自增,且該字段同時為分區鍵,則此時寫入為隨機分區,查詢需要讀取所有分區,適合有數據偏斜且寫多讀少的場景;
4) 至少保證在分區鍵上有一個索引;
業務列
其它的列統歸為此類,僅用於存儲數據,通常要考慮:1) 列不宜過長,夠用即可,臨時加載的長列會消耗額外內存,影響查詢性能;2) 準確定義列的類型,避免查詢時使用的類型與表定義的類型不匹配,從而進行類型轉換,以致不能正確使用索引;3) 優先使用timestamp類型代替其它時間日期類型,且使用時嚴格遵守mysql的時間日期格式;
主鍵索引
若主鍵是自增類型,則主鍵索引不會對整體性能優化有改善,若主鍵與業務相關,則可以對最頻繁使用的SQL語句的查詢條件建立主鍵索引,這樣可以提升性能;
輔助索引
其他情況下,如果不能通過將SQL語句拆解成單分區的,且不能利用主鍵進行索引優化時,需要對全部分區進行掃描,此時可以對這部分全分區掃描的語句的查詢條件建立索引,使得在每個分區上進行訪問時,仍然能取得較高的性能
*注:PetaData目前暫不支持廣播表(廣播表的數據在每個數據分區均有相同副本,用於與分區表進行join)
最後更新:2016-11-23 17:16:03
上一篇:
公測服務條款__服務條款_雲數據庫 PetaData-阿裏雲
下一篇:
優化建議__最佳實踐_雲數據庫 PetaData-阿裏雲
API網關使用限製__使用手冊(開放API)_API 網關-阿裏雲
ECS 數據源 (3/3):分組管理__準備數據源_用戶指南_業務實時監控服務 ARMS-阿裏雲
創建雲監控code__用戶指南_推薦引擎-阿裏雲
輸入邊表示例__示例程序_圖模型_大數據計算服務-阿裏雲
運行離線任務__應用管理_用戶指南_容器服務-阿裏雲
微金融專區__金融雲介紹_金融雲-阿裏雲
專有網絡類型的實例通過內網連接OSS的方式__配置_用戶指南_專有網絡 VPC-阿裏雲
負載均衡超時問題__負載均衡性能常見問題_常見問題_負載均衡-阿裏雲
權限相關常見問題__常見問題_大數據開發套件-阿裏雲
InstanceMetrics__數據類型_API文檔_批量計算-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲