古詩詞大全網 - 成語用法 - adbmrio數據庫怎麽計

adbmrio數據庫怎麽計

ADB筆記:

目標:主要用於數據分析,後端支持BI報表和數據大屏。mysql協議,學習成本低。

特有名詞:

表組,對應RDS的schema。

維度表組(系統自帶):自帶維度概念的表(例如省份表等),可以放到維度表組下

普通表組:壹般會把需要關聯的普通表放在相同普通表組中,建議這個表組中的所有普通表的壹級分區數壹致,join性能會有很大提升。

維度表:***享表。

普通表:分區表。默認壹級分區,可創建二級分區。

分區:普通表才有,壹級分區采用hash算法,單表數據量在60億以內,推薦。

主鍵:表必須包含主鍵。由業務id、壹級分區鍵組成,有些情況業務id與壹級分區相同。對於記錄量特別大的表,從存儲空間和insert性能考慮,壹定要減少主鍵的字段數。

數據庫創建完畢後,系統會默認創建壹個維度表組,所有維度相關的表,可以放到維度表組下。

特殊字段:timestamp timestamp AnalyticDB精確到秒,MySQL支持自定義精度

常用sql連接:

/document_detail/94859.html?spm=a2c4g.11186623.2.38.22c965313Zwnsd

navicat連接後,無法顯示建表語句。

輸入導入方式:1、DTS;2、數據集成。

insert插入顯示延遲5-10S,可單獨提工單修改。

更新數據:AnalyticDB不支持update操作,可以通過主鍵覆蓋的方式進行insert操作來實現和update同等的功能。

數據導出功能較弱,dump方式到OSS/MaxCompute

推薦權限定義方式:/document_detail/95546.html?spm=a2c4g.11186623.6.578.702d620fyspxAo

索引&掃描原理

AnalyticDB內部采用列存方式,通過單列高效過濾後,可直接通過內部記錄指針掃描其他列值,減少其他列的索引查詢開銷。

子查詢修改為表關聯

普通表join普通表,盡量包含分區列join條件,如果不包含則,盡量通過where條件過濾掉多余的數據。

維度表join普通表,沒有限制。

默認是全索引,建表成功後,某列刪除索引操作,需提工單解決。

二級分區用於刪除數據,對於“回溯表”類場景,避免手動刪除。

壹級分區鍵選擇:

1、分布均勻,避免數據傾斜。park_record_id?

2、建議選擇壹級分區列的數據類型為tinyint、smallint、int、bigint或者varchar。

3、如果是多個普通表(不包括維度表)JOIN,則選擇參與JOIN的列作為分區列。park_record_id?park_id?

4、選擇GROUP BY或DISTINCT包含的列作為分區列

5、如果常用的SQL包含某列的等值或IN查詢條件,則選擇該列作為分區列。以下列子則選擇id作為分區列。

select * from table where id=123 and …;

select * from table where user in(1, 2,3);

使用場景以管理員使用為主,範圍掃描較多,park_id分區優勢更大。

歷史單條數據,管理員查詢較少,可忽略。

用戶單條查詢,在RDS完成。

多參考設計樣例:/document_detail/97587.html?spm=a2c4g.11186623.6.655.207b43c1yl28Kx

/document_detail/97620.html?spm=a2c4g.11186623.6.656.5ebb12f55cr9Pf

為滿足高QPS,從設計上采用大寬表、冗余字段,並且避免表關聯。

場景描述:全量sql,查詢頻率低,以區域統計查詢為主。

最佳實踐:區域查詢、車場查詢讀擴大,數據分布均勻+聚集列效果。缺點:

PRIMARY KEY (park_record_id,TS)

PARTITION BY HASH KEY (park_record_id) PARTITION NUM 128

SUBPARTITION BY LIST KEY (TS)

SUBPARTITION OPTIONS (available_partition_num = 300)

CLUSTERED BY (area_id,park_id)

單個AnalyticDB最多表數 256

單個表組總表數 256

最大壹級分區數 255

不支持存儲過程

是否支持修改表的壹級分區數:當前不支持動態修改,只能刪表重建。