主頁 > 資料庫 > 分庫分表 21 招

分庫分表 21 招

2023-06-24 08:12:12 資料庫

(一)好好的系統,為什么要分庫分表?

咱們先介紹下在分庫分表架構實施程序中,會接觸到的一些通用概念,了解這些概念能夠幫助理解市面上其他的分庫分表工具,盡管它們的實作方法可能存在差異,但整體思路基本一致,因此,在開始實際操作之前,我們有必要先掌握這些通用概念,以便更好地理解和應用分庫分表技術,

我們結合具體業務場景,以t_order表為例進行架構優化,由于資料量已經達到億級別,查詢性能嚴重下降,因此我們采用了分庫分表技術來處理這個問題,具體而言,我們將原本的單庫分成了兩個庫,分別為DB_1DB_2,并在每個庫中再次進行分表處理,生成t_order_1t_order_2兩張表,實作對訂單表的分庫分表處理,

圖片

資料分片

通常我們在提到分庫分表的時候,大多是以水平切分模式(水平分庫、分表)為基礎來說的,資料分片它將原本一張資料量較大的表 t_order 拆分生成數個表結構完全一致的小資料量表(拆分表) t_order_0t_order_1、···、t_order_n,每張表只存盤原大表中的一部分資料,

圖片

資料節點

資料節點是資料分片中一個不可再分的最小單元(表),它由資料源名稱和資料表組成,例如上圖中 DB_1.t_order_1DB_2.t_order_2 就表示一個資料節點,

圖片

邏輯表

邏輯表是指具有相同結構的水平拆分表的邏輯名稱,

比如我們將訂單表t_order 分表拆分成 t_order_0 ··· t_order_9等10張表,這時我們的資料庫中已經不存在 t_order這張表,取而代之的是若干的t_order_n表,

分庫分表通常對業務代碼都是無侵入式的,開發者只專注于業務邏輯SQL編碼,我們在代碼中SQL依然按 t_order來寫,而在執行邏輯SQL前將其決議成對應的資料庫真實執行的SQL,此時 t_order 就是這些拆分表的邏輯表

業務邏輯SQL

select * from t_order where order_no='A11111'

真實執行SQL

select * from DB_1.t_order_n where order_no='A11111'

真實表

真實表就是在資料庫中真實存在的物理表DB_1.t_order_n

圖片

廣播表

廣播表是一類特殊的表,其表結構和資料在所有分片資料源中均完全一致,與拆分表相比,廣播表的資料量較小、更新頻率較低,通常用于字典表或配置表等場景,由于其在所有節點上都有副本,因此可以大大降低JOIN關聯查詢的網路開銷,提高查詢效率,

需要注意的是,對于廣播表的修改操作需要保證同步性,以確保所有節點上的資料保持一致,

廣播表的特點

  • 在所有分片資料源中,廣播表的資料完全一致,因此,對廣播表的操作(如插入、更新和洗掉)會實時在每個分片資料源中執行一遍,以保證資料的一致性,

  • 對于廣播表的查詢操作,僅需要在任意一個分片資料源中執行一次即可,

  • 與任何其他表進行JOIN操作都是可行的,因為由于廣播表的資料在所有節點上均一致,所以可以訪問到任何一個節點上的相同資料,

什么樣的表可以作為廣播表呢?

訂單管理系統中,往往需要查詢統計某個城市地區的訂單資料,這就會涉及到省份地區表t_city與訂單流水表DB_n.t_order_n進行JOIN查詢,因此可以考慮將省份地區表設計為廣播表,核心理念就是避免跨庫JOIN操作

圖片

注意:上邊我們提到廣播表在資料插入、更新與洗掉會實時在每個分片資料源均執行,也就是說如果你有1000個分片資料源,那么修改一次廣播表就要執行1000次SQL,所以盡量不在并發環境下和業務高峰時進行,以免影響系統的性能,

單表

單表指所有的分片資料源中僅唯一存在的表(沒有分片的表),適用于資料量不大且無需分片的表,

如果一張表的資料量預估在千萬級別,且沒有與其他拆分表進行關聯查詢的需求,建議將其設定為單表型別,存盤在默認分片資料源中,

分片鍵

分片鍵決定了資料落地的位置,也就是資料將會被分配到哪個資料節點上存盤,因此,分片鍵的選擇非常重要,

比如我們將 t_order 表進行分片后,當插入一條訂單資料執行SQL時,需要通過決議SQL陳述句中指定的分片鍵來計算資料應該落在哪個分片中,以表中order_no欄位為例,我們可以通過對其取模運算(比如 order_no % 2)來得到分片編號,然后根據分片編號分配資料到對應的資料庫實體(比如 DB_1 和 DB_2),拆分表也是同理計算,

在這個程序中,order_no 就是 t_order 表的分片鍵,也就是說,每一條訂單資料的 order_no 值決定了它應該存放的資料庫實體和表,選擇一個適合作為分片鍵的欄位可以更好地利用水平分片帶來的性能提升,

圖片

這樣同一個訂單的相關資料就會落在同一個資料庫、表中,查詢訂單時同理計算,就可直接定位資料位置,大幅提升資料檢索的性能,避免了全庫表掃描,

不僅如此 ShardingSphere 還支持根據多個欄位作為分片健進行分片,這個在后續對應章節中會詳細講,

分片策略

分片策略來指定使用哪種分片演算法、選擇哪個欄位作為分片鍵以及如何將資料分配到不同的節點上,

分片策略是由分片演算法分片健組合而成,分片策略中可以使用多種分片演算法和對多個分片鍵進行運算,

圖片

分庫、分表的分片策略配置是相對獨立的,可以各自使用不同的策略與演算法,每種策略中可以是多個分片演算法的組合,每個分片演算法可以對多個分片健做邏輯判斷,

分片演算法

分片演算法則是用于對分片鍵進行運算,將資料劃分到具體的資料節點中,

常用的分片演算法有很多:

  • 哈希分片:根據分片鍵的哈希值來決定資料應該落到哪個節點上,例如,根據用戶 ID 進行哈希分片,將屬于同一個用戶的資料分配到同一個節點上,便于后續的查詢操作,
  • 范圍分片:分片鍵值按區間范圍分配到不同的節點上,例如,根據訂單創建時間或者地理位置來進行分片,
  • 取模分片:將分片鍵值對分片數取模,將結果作為資料應該分配到的節點編號,例如, order_no % 2 將訂單資料分到兩個節點之一,
  • .....

實際業務開發中分片的邏輯要復雜的多,不同的演算法適用于不同的場景和需求,需要根據實際情況進行選擇和調整,

系結表

系結表是那些具有相同分片規則的一組分片表,由于分片規則一致所產生的的資料落地位置相同,在JOIN聯合查詢時能有效避免跨庫操作,

比如:t_order 訂單表和 t_order_item 訂單專案表,都以 order_no 欄位作為分片鍵,并且使用 order_no 進行關聯,因此兩張表互為系結表關系,

使用系結表進行多表關聯查詢時,必須使用分片鍵進行關聯,否則會出現笛卡爾積關聯或跨庫關聯,從而影響查詢效率,

當使用 t_order 和 t_order_item 表進行多表聯合查詢,執行如下聯合查詢的邏輯SQL,

SELECT * FROM t_order o JOIN t_order_item i ON o.order_no=i.order_no

如果不配置系結表關系,兩個表的資料位置不確定就會全庫表查詢,出現笛卡爾積關聯查詢,將產生如下四條SQL

SELECT * FROM t_order_0 o JOIN t_order_item_0 i ON o.order_no=i.order_no 
SELECT * FROM t_order_0 o JOIN t_order_item_1 i ON o.order_no=i.order_no 
SELECT * FROM t_order_1 o JOIN t_order_item_0 i ON o.order_no=i.order_no 
SELECT * FROM t_order_1 o JOIN t_order_item_1 i ON o.order_no=i.order_no
圖片

而配置系結表關系后再進行關聯查詢時,分片規則一致產生的資料就會落到同一個庫表中,那么只需在當前庫中 t_order_n 和 t_order_item_n 表關聯即可,

SELECT * FROM t_order_0 o JOIN t_order_item_0 i ON o.order_id=i.order_id 
SELECT * FROM t_order_1 o JOIN t_order_item_1 i ON o.order_id=i.order_id 
圖片

注意:在關聯查詢時 t_order 它作為整個聯合查詢的主表,所有相關的路由計算都只使用主表的策略,t_order_item 表的分片相關的計算也會使用 t_order 的條件,所以要保證系結表之間的分片鍵要完全相同,

SQL 決議

分庫分表后在應用層面執行一條 SQL 陳述句時,通常需要經過以下六個步驟:SQL 決議 -> 執?器優化 -> SQL 路由 -> SQL 改寫 -> SQL 執? -> 結果歸并 ,

圖片
在這里插入圖片描述

SQL決議程序分為詞法決議語法決議兩步,比如下邊查詢用戶訂單的SQL,先用詞法決議將這條SQL拆解成不可再分的原子單元,在根據不同資料庫方言所提供的字典,將這些單元歸類為關鍵字,運算式,變數或者運算子等型別,

SELECT order_no FROM t_order where  order_status > 0  and user_id = 10086 

接著語法決議會將拆分后的SQL關鍵字轉換為抽象語法樹,通過對抽象語法樹遍歷,提煉出分片所需的背景關系,背景關系包含查詢欄位資訊(Field)、表資訊(Table)、查詢條件(Condition)、排序資訊(Order By)、分組資訊(Group By)以及分頁資訊(Limit)等,并標記出 SQL中有可能需要改寫的位置,

圖片
抽象語法樹

執?器優化

執?器優化是根據SQL查詢特點和執行統計資訊,選擇最優的查詢計劃并執行,比如user_id欄位有索引,那么會調整兩個查詢條件的位置,主要是提高SQL的執行效率,

SELECT order_no FROM t_order where user_id = 10086 and order_status > 0

SQL 路由

通過上邊的SQL決議得到了分片背景關系資料,在匹配用戶配置的分片策略和演算法,就可以運算生成路由路徑,將 SQL 陳述句路由到相應的資料節點上,

簡單點理解就是拿到分片策略中配置的分片鍵等資訊,在從SQL決議結果中找到對應分片鍵欄位的值,計算出 SQL該在哪個庫的哪個表中執行,SQL路由又根據有無分片健分為 分片路由 和 廣播路由

圖片

有分?鍵的路由叫分片路由,細分為直接路由、標準路由和笛卡爾積路由這3種型別,

標準路由

標準路由是最推薦也是最為常?的分??式,它的適?范圍是不包含關聯查詢或僅包含系結表之間關聯查詢的SQL,

當 SQL分片健的運算子為 = 時,路由結果將落?單庫(表),當分?運算子是 BETWEEN 或 IN 等范圍時,路由結果則不?定落?唯?的庫(表),因此?條邏輯SQL最終可能被拆分為多條?于執?的真實SQL,

SELECT * FROM t_order  where t_order_id in (1,2)

SQL路由處理后

SELECT * FROM t_order_0  where t_order_id in (1,2)
SELECT * FROM t_order_1  where t_order_id in (1,2)

直接路由

直接路由是直接將SQL路由到指定?庫、表的一種分?方式,而且直接路由可以?于分?鍵不在SQL中的場景,還可以執?包括?查詢、?定義函式等復雜情況的任意SQL,

笛卡爾積路由

笛卡爾路由是由?系結表之間的關聯查詢產生的,比如訂單表t_order 分片鍵是t_order_id 和用戶表t_user分片鍵是t_order_id ,兩個表的分片鍵不同,要做聯表查詢,會執行笛卡爾積路由,查詢性能較低盡量避免走此路由模式,

SELECT * FROM t_order_0 t LEFT JOIN t_user_0 u ON u.user_id = t.user_id WHERE t.user_id = 1
SELECT * FROM t_order_0 t LEFT JOIN t_user_1 u ON u.user_id = t.user_id WHERE t.user_id = 1
SELECT * FROM t_order_1 t LEFT JOIN t_user_0 u ON u.user_id = t.user_id WHERE t.user_id = 1
SELECT * FROM t_order_1 t LEFT JOIN t_user_1 u ON u.user_id = t.user_id WHERE t.user_id = 1

無分?鍵的路由又叫做廣播路由,可以劃分為全庫表路由、全庫路由、 全實體路由、單播路由和阻斷路由這 5種型別,

全庫表路由

全庫表路由針對的是資料庫 DQL 和 DML,以及 DDL等操作,當我們執行一條邏輯表 t_order SQL時,在所有分片庫中對應的真實表 t_order_0 ···  t_order_n 內逐一執行,

全庫路由

全庫路由主要是對資料庫層面的操作,比如資料庫 SET 型別的資料庫管理命令,以及 TCL 這樣的事務控制陳述句,

對邏輯庫設定 autocommit 屬性后,所有對應的真實庫中都執行該命令,

SET autocommit=0;

全實體路由

全實體路由是針對資料庫實體的 DCL 操作(設定或更改資料庫用戶或角色權限),比如:創建一個用戶 order ,這個命令將在所有的真實庫實體中執行,以此確保 order 用戶可以正常訪問每一個資料庫實體,

CREATE USER [email protected] identified BY '程式員小富';

單播路由

單播路由用來獲取某一真實表資訊,比如獲得表的描述資訊:

DESCRIBE t_order; 

t_order 的真實表是 t_order_0 ···· t_order_n,他們的描述結構相完全同,我們只需在任意的真實表執行一次就可以,

阻斷路由

?來屏蔽SQL對資料庫的操作,例如:

USE order_db;

這個命令不會在真實資料庫中執?,因為 ShardingSphere 采?的是邏輯 Schema(資料庫的組織和結構) ?式,所以無需將切換資料庫的命令發送?真實資料庫中,

SQL 改寫

SQL經過決議、優化、路由后已經明確分片具體的落地執行的位置,接著就要將基于邏輯表開發的SQL改寫成可以在真實資料庫中可以正確執行的陳述句,比如查詢 t_order 訂單表,我們實際開發中 SQL是按邏輯表 t_order 寫的,

SELECT * FROM t_order

這時需要將分表配置中的邏輯表名稱改寫為路由之后所獲取的真實表名稱,

SELECT * FROM t_order_n

SQL執?

將路由和改寫后的真實 SQL 安全且高效發送到底層資料源執行,但這個程序并不能將 SQL 一股腦的通過 JDBC 直接發送至資料源執行,需平衡資料源連接創建以及記憶體占用所產生的消耗,它會自動化的平衡資源控制與執行效率,

結果歸并

將從各個資料節點獲取的多資料結果集,合并成一個大的結果集并正確的回傳至請求客戶端,稱為結果歸并,而我們SQL中的排序、分組、分頁和聚合等語法,均是在歸并后的結果集上進行操作的,

分布式主鍵

資料分?后,一個邏輯表(t_order)對應諸多的真實表(t_order_n),它們之間由于?法互相感知,主鍵ID都從初始值累加,所以必然會產?重復主鍵ID,此時主鍵不再唯一那么對于業務來說也就沒意義了,

圖片

盡管可通過設定表?增主鍵 初始值 和 步? 的?式避免ID碰撞,但這樣會使維護成本加大,可擴展性差,

這個時候就需要我們手動為一條資料記錄,分配一個全域唯一的ID,這個ID被叫做分布式ID,而生產這個ID的系統通常被叫做發號器,

大家可以參考我之前發布的這篇文章 9種分布式ID生成方案

資料脫敏

分庫分表資料脫敏是一種有效的資料保護措施,可以確保敏感資料的機密性和安全性,減少資料泄露的風險,

比如,我們在分庫分表時可以指定表的哪些欄位為脫敏列,并設定對應的脫敏演算法,在資料分片時決議到執行SQL中有待脫敏欄位,會直接將欄位值脫敏后的寫入庫表內,

對于用戶的個人資訊,如姓名、地址和電話號碼等,可以通過加密、隨機化或替換成偽隨機資料的方式進行脫敏,以確保用戶的隱私得到保護,

大家可以參考我之前發布的這篇文章 大廠也在用的 6種 資料脫敏方案

分布式事務

分布式事務的核心問題是如何實作跨多個資料源的原子性操作,

由于不同的服務通常會使用不同的資料源來存盤和管理資料,因此,跨資料源的操作可能會導致資料不一致性或丟失的風險,因此,保證分布式事務的一致性是非常重要的,

以訂單系統為例,它需要呼叫支付系統、庫存系統、積分系統等多個系統,而每個系統都維護自己的資料庫實體,系統間通過API介面交換資料,

圖片

為了保證下單后多個系統同時呼叫成功,可以使用強一致性事務的XA協議,或者柔性事務的代表工具Seata,來實作分布式事務的一致性,這些工具可以幫助開發人員簡化分布式事務的實作,減少錯誤和漏洞的出現,提高系統的穩定性和可靠性,

經過分庫分表之后,問題的難度進一步提升,自身訂單服務,也需要處理跨資料源的操作,這樣一來,系統的復雜度顯著增加,因此,不到萬不得已的情況下,最好避免采用分庫分表的解決方案,

圖片

關于分布式事務詳細的介紹,大家可以參考我之前發布的這篇文章 對比 5 種分布式事務方案,還是寵幸了阿里的 Seata(原理 + 實戰)

資料遷移

分庫分表后還有個讓人頭疼的問題,那就是資料遷移,為了不影響現有的業務系統,通常會新建資料庫集群遷移資料,將資料從舊集群的資料庫、表遷移到新集群的分庫、分表中,這是一個比較復雜的程序,在遷移程序中需要考慮資料量資料一致性遷移速度等諸多因素,

遷移主要針對 存量資料 和 增量資料 的處理,存量資料指舊資料源中已經存在且有價值的歷史資料,增量資料指當下持續增長以及未來產生的業務資料,

存量資料可以采用定時、分批次的遷移,遷移程序可能會持續幾天,

增量資料可以采用新、舊資料庫集群雙寫模式,待資料遷移完畢,業務驗證了資料一致性,應用直接切換資料源即可,

后續我們會結合三方工具,來演示遷移的程序,

影子庫

什么是影子庫(Shadow Table)?

影子庫是一個與生產環境資料庫結構完全相同的實體,它存在的意義是為了在不影響線上系統的情況下,驗證資料庫遷移或者其他資料庫變更操作的正確性,以及全鏈路壓測,影子庫中存盤的資料是從生產環境中定期復制過來的,但是它不對線上業務產生任何影響,僅用于測驗,驗證和除錯,

圖片

在進行資料庫升級、版本變更、引數調優等操作前,通過在影子庫上模擬這些操作,可以發現潛在的問題,因為測驗環境的資料是不可靠的,

在使用影子庫時,需要遵循以下幾個原則:

  • 與生產環境資料庫的結構應該完全一致,包括表結構、索引、約束等;

  • 資料要與生產環境保持一致,可以通過定期同步方式實作;

  • 讀寫操作不會影響生產環境,一般情況下應該禁止在影子庫上執行更新、洗掉等操作;

  • 由于影子庫的資料特點,訪問權限應該嚴格控制,只允許授權人員進行訪問和操作;

     

     

    作者|程式員內點事

本文來自博客園,作者:古道輕風,轉載請注明原文鏈接:https://www.cnblogs.com/88223100/p/21-bidding-for-database-and-table-division.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/555848.html

標籤:SQL Server

上一篇:Elasticsearch核心應用場景-日志優化實踐

下一篇:返回列表

標籤雲
其他(161516) Python(38244) JavaScript(25513) Java(18251) C(15238) 區塊鏈(8271) C#(7972) AI(7469) 爪哇(7425) MySQL(7265) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4606) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2436) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) HtmlCss(1971) 功能(1967) Web開發(1951) C++(1942) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • 分庫分表 21 招

    (一)好好的系統,為什么要分庫分表? 咱們先介紹下在分庫分表架構實施程序中,會接觸到的一些通用概念,了解這些概念能夠幫助理解市面上其他的分庫分表工具,盡管它們的實作方法可能存在差異,但整體思路基本一致。因此,在開始實際操作之前,我們有必要先掌握這些通用概念,以便更好地理解和應用分庫分表技術。 我們結 ......

    uj5u.com 2023-06-24 08:12:12 more
  • Elasticsearch核心應用場景-日志優化實踐

    1. 背景 日志領域是Elasticsearch(ES)最重要也是規模最大的應用場景之一。這得益于 ES 有高性能倒排索引、靈活的 schema、易用的分布式架構,支持高吞吐寫入、高性能查詢,同時有強大的資料治理生態、端到端的完整解決方案。但原生 ES 在高吞吐寫入、低成本存盤、高性能查詢等方面還有 ......

    uj5u.com 2023-06-24 08:05:19 more
  • 2-Redis概述

    ?![image](https://img2023.cnblogs.com/blog/2942345/202306/2942345-20230622081504394-95093556.png)? ? # 1. 應用場景 ? ## 1.1 配合關系型資料庫做高速快取 ? - 高頻次,熱門訪問的資料, ......

    uj5u.com 2023-06-22 08:37:52 more
  • 2-Redis概述

    ?![image](https://img2023.cnblogs.com/blog/2942345/202306/2942345-20230622081504394-95093556.png)? ? # 1. 應用場景 ? ## 1.1 配合關系型資料庫做高速快取 ? - 高頻次,熱門訪問的資料, ......

    uj5u.com 2023-06-22 08:31:44 more
  • MySQL 8的MGR集群中設定autocommit=0引起ERROR 1064 (42000)錯誤

    在一套MySQL MGR集群測驗環境中,同事測驗時,在my.cnf引數檔案中修改了autocommit引數(修改為autocommit=0),結果上周五,由于系統管理員要升級RHEL 8.8的系統補丁,所以將這這三臺MySQL的資料庫服務關閉了,升級完RHEL 8.8的系統補丁后,啟動MySQL的集 ......

    uj5u.com 2023-06-22 08:10:21 more
  • 穩,從資料庫連接池 testOnBorrow 看架構設計

    本文從 Commons DBCP testOnBorrow 的作用機制著手,管中窺豹,從一點去分析資料庫連接池獲取的程序以及架構分層設計。以下內容會按照每層的作用,貫穿分析整個呼叫流程。 ......

    uj5u.com 2023-06-22 08:10:18 more
  • InnoDB鎖初探(一):鎖分類和RR不同場景下的鎖機制

    # Mysql資料庫鎖(Innodb) 資料庫鎖是Mysql實作資料一致性的基礎之一,是在事務的基礎之上,基于Mysql Server層或存盤引擎層實作的。 ## 鎖日志 前置條件: ```sql set GLOBAL innodb_status_output=ON; set GLOBAL inno ......

    uj5u.com 2023-06-22 08:10:09 more
  • 全球唯一云廠商!華為云高分入選2023Gartner Peer Insights?云資料

    本文分享自華為云社區《華為云高分入選2023Gartner Peer Insights?云資料庫管理系統“客戶之選”》,作者:GaussDB 資料庫 。 近日,Gartner最新發布Gartner Peer Insights 《Voice of the Customer for Cloud Data ......

    uj5u.com 2023-06-22 08:09:57 more
  • HiveSQL在使用聚合類函式的時候性能分析和優化詳解

    帶聚合函式的SQL邏輯,我們可以根據其執行程序的不同,將其分成三大類來進行分析:
    僅在Reduce階段聚合的SQL執行邏輯
    在Map和Reduce階段都有聚合操作的SQL執行邏輯
    高級分組聚合的執行SQL邏輯 ......

    uj5u.com 2023-06-22 08:09:48 more
  • 性能提升30%!袋鼠云數堆疊基于 Apache Hudi 的性能優化實戰決議

    Apache Hudi 是一款開源的[資料湖解決方案](https://www.dtstack.com/dtengine/easylake?src=https://www.cnblogs.com/DTinsight/archive/2023/06/21/szsm),它能夠幫助企業更好地管理和分析海量資料,支持高效的[資料更新和查詢](https://www.dtstack.com/dtengine/ea ......

    uj5u.com 2023-06-22 08:09:38 more