本文介紹邏輯表查詢的操作步驟。
背景資訊
-
分庫分表後,需要快速地查詢單個分表或查詢多個分表並返回結果,可以對使用者屏蔽人為尋找分庫、分表情境。使用者最終使用查詢操作都是被當做單個表查詢,這樣的操作相對較透明,也符合使用者當下的訴求。
-
Data Management基於產品內的
邏輯庫、邏輯表的彙總實現了透明化的邏輯表查詢操作。
操作步驟
-
選擇
邏輯庫進行相關的查詢與匯出操作。您可先嘗試寫入資料,無路由配置時只支援查詢SELECT、UPDATE、DELETE語句,不支援INSERT語句。此時執行 INSERT 語句將報錯:
[Error] dsql.DSQLException: 未找到分表路由,無法執行,請確保對應的邏輯表配置了路由演算法。 -
配置路由演算法。此處以簡單模數為例,複雜演算法配置步驟,請參見配置路由演算法。
在建立演算法對話方塊中,設定演算法類型為單列模數,模數方式為簡單模數,分表欄位為user_id (bigint),模數為
128,然後單擊儲存。 -
使用
INSERT語句插入值。例如,執行
INSERT INTO scend_test(gmt_create,gmt_modified,user_id) VALUES (now(),now(),2);向scend_test表插入一條記錄,執行成功後結果地區顯示綠色對勾。 -
進行快速查詢。
-
配置了路由演算法後,帶路由欄位則可以快速查詢指定物理表(免去人為計算、切換物理庫表的操作)。在 DMS 的 SQLConsole 中執行 SQL 陳述式
SELECT * FROM,以路由欄位scend_testWHEREuser_id= 4user_id作為查詢條件。執行日誌顯示邏輯表scend_test被路由到物理分表poc_dev.scend_test_000。 -
查詢結果會額外提供一個欄位表示資料來源的資料庫、表資訊,單擊則可以跳轉至對應的物理庫表並帶入查詢SQL與查詢條件資訊。例如,執行 SQL 陳述式
SELECT * FROM,查詢結果中資料座標列顯示為scend_testWHEREuser_id= 1poc_dev.scend_test_000,表明資料已被路由至對應的物理分表,返回一條匹配記錄。 -
查詢也可以不帶路由欄位作為條件,進行全表(所有分表)掃描查詢操作,如匯總統計 。
說明同時也支援
GROUP BY等文法操作,其他SQL文法操作與資料庫源文法支援基本一致,但目前不支援子查詢操作。例如,在 SQL Console 中執行
SELECT COUNT(*) FROM,返回結果為 1,表示該表共有 1 條記錄。scend_test;
-