資料分片(1 sql)

2021-10-11 02:00:14 字數 1583 閱讀 8980

邏輯表

真實表資料節點

繫結表廣播表

邏輯表水平拆分的資料庫(表)的相同邏輯和資料結構表的總稱。例:訂單資料根據主鍵尾數拆分為 10 張表,分別是 t_order_0 到 t_order_9,他們的邏輯表名為 t_order。

真實表在分片的資料庫中真實存在的物理表。即上個示例中的 t_order_0 到 t_order_9。

資料節點

資料分片的最小單元。由資料來源名稱和資料表組成,例:ds_0.t_order_0。

繫結表指分片規則一致的主表和子表。例如:t_order 表和 t_order_item 表,均按照 order_id 分片,則此兩張表互為繫結表關係。繫結表之間的多表關聯查詢不會出現笛卡爾積關聯,關聯查詢效率將大大提公升。舉例說明,如果 sql 為:

select i.* from t_order o join t_order_item i on o.order_id=i.order_id where o.order_id in (10,

11);

在不配置繫結表關係時,假設分片鍵 order_id 將數值 10 路由至第 0 片,將數值 11 路由至第 1 片,那麼路由後的 sql 應該為 4 條,它們呈現為笛卡爾積:

select i.* from t_order_0 o join t_order_item_0 i on o.order_id=i.order_id where o.order_id in (10,

11);select i.* from t_order_0 o join t_order_item_1 i on o.order_id=i.order_id where o.order_id in (10,

11);select i.* from t_order_1 o join t_order_item_0 i on o.order_id=i.order_id where o.order_id in (10,

11);select i.* from t_order_1 o join t_order_item_1 i on o.order_id=i.order_id where o.order_id in (10,

11);

在配置繫結表關係後,路由的 sql 應該為 2 條:

select i.* from t_order_0 o join t_order_item_0 i on o.order_id=i.order_id where o.order_id in (10,

11);select i.* from t_order_1 o join t_order_item_1 i on o.order_id=i.order_id where o.order_id in (10,

11);

其中 t_order 在 from 的最左側,shardingsphere 將會以它作為整個繫結表的主表。 所有路由計算將會只使用主表的策略,那麼 t_order_item 表的分片計算將會使用 t_order 的條件。故繫結表之間的分割槽鍵要完全相同。

廣播表指所有的分片資料來源中都存在的表,表結構和表中的資料在每個資料庫中均完全一致。適用於資料量不大且需要與海量資料的表進行關聯查詢的場景,例如:字典表。

SQL資料庫 1 SQL語言

sql structured query language 結構化查詢語言 資料庫分為 層次型,網狀型,關係型。關係型資料庫 是乙個二維表的集合,可以用來儲存不同型別資料資訊,易於檢索,冗餘度較小。常用的資料庫包括 oracle mysql microsoft sql server access d...

SQL學習筆記1 SQL語句型別

資料型別 描述varchar2 size 可變長字元資料 char size 定長字元資料 number p,s 可變長數值資料 date 日期型資料 long 可變長字元資料,最大可達到2g clob 字元資料,最大可達到4g raw long raw 原始的二進位制資料 blob 二進位制資料,...

PHP常見漏洞(1) SQL注入

sql注入攻擊 sql injection 是攻擊者在表單中提交精心構造的sql語句,改動原來的sql語句,如果web程式沒有對提交的資料經過檢查,那麼就會造成sql注入攻擊。sql注入攻擊的一般步驟 1 攻擊者訪問有sql注入漏洞的站點,尋找注入點 2 攻擊者構造注入語句,注入語句和程式中的sql...