日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

PolarDB-X 2.0:使用一个透明的分布式数据库是一种什么体验

發布時間:2024/8/23 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PolarDB-X 2.0:使用一个透明的分布式数据库是一种什么体验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介:?透明分布式,是PolarDB-X即將發布的能力,它能讓應用在使用PolarDB-X的過程中,猶如使用單機數據庫一般的體驗。與傳統的中間件類型的“分布式數據庫”相比,有了透明分布式能力的PolarDB-X,不再需要應用考慮分區鍵的概念,應用可以完全將單機MySQL上開發的建表語句、應用代碼直接遷移到PolarDB-X上運行起來。本文將為大家介紹PolarDB-X透明分布式的新體驗。

透明分布式,是PolarDB-X即將發布的能力,它能讓應用在使用PolarDB-X的過程中,猶如使用單機數據庫一般的體驗。

與傳統的中間件類型的“分布式數據庫”相比,有了透明分布式能力的PolarDB-X,不再需要應用考慮分區鍵的概念,應用可以完全將單機MySQL上開發的建表語句、應用代碼直接遷移到PolarDB-X上運行起來。

本文將為大家介紹PolarDB-X透明分布式的新體驗。

在PolarDB-X上安裝一個WordPress

WordPress是一個開源的博客軟件,它使用MySQL作為其數據庫。操作是在PolarDB-X上安裝一個WordPress,來體驗PolarDB-X的透明分布式能力。

我們將遵循簡單的三步走:

  • 不修改DDL直接建表
  • 不修改應用直接跑起來
  • 做下壓測,做下調優
  • 總結如下:

  • 使用官方的WordPress鏡像,不做任何修改,其安裝程序就能自動的在PolarDB-X上完成建表、數據初始化等工作,其使用的都是標準的MySQL語法。
  • 對此WordPress進行壓測,PolarDB-X的各項監控數據顯示,各節點處于的負載、數據量均處于均衡的狀態。
  • 通過PolarDB-X提供的SQL分析、DAS等工具,可以方便的找到系統中熱點SQL。
  • DBA可以直接通過創建索引、修改數據分布等DDL語句對系統性能做進一步的優化,不需要修改應用。
  • PolarDB-X實現透明分布式的武器

    下面為大家分享下,PolarDB-X是如何實現透明分布式的。

    透明數據分區

    PolarDB-X是一個典型的Share Nothing的分布式數據庫,其簡化架構如下:

    其核心組件為無狀態的計算節點CN,與有狀態的存儲節點DN。

    要了解PolarDB-X的透明分布式能力,首先要了解數據在PolarDB-X上是如何分布的。

    在PolarDB-X中,一個表由多個索引組成,包括主鍵、二級索引等。PolarDB-X會對每個索引進行獨立的進行分區,其分區鍵為索引的key。

    例如一個典型的電商場景,訂單表,擁有一個主鍵(id),兩個索引(seller_id與buyer_id):

    create table orders (id bigint, buyer_id varchar comment '買家', seller_id varchar comment '賣家',primary key(id),index sdx(seller_id),index bdx(buyer_id) )
    • 對于主鍵索引,會按照id對其進行分區
    • 對于索引sdx,會按照seller_id進行分區
    • 對于索引bdx,會按照buyer_id進行分區

    如下圖所示:

    對索引進行分片之后,PolarDB-X會將這些分片打散到不同的存儲節點里,并會按照數據量等信息進行負載均衡,如下圖所示:

    在PolarDB-X中,建表語句中可以不考慮分區鍵,PolarDB-X也能自動的對表進行分片與負載均衡。

    因此,應用遷移PolarDB-X時,可以將單機MySQL中的建表語句導出,不需要修改直接在PolarDB-X中執行即可。

    透明的分布式事務

    分布式事務是PolarDB-X中的最重要的基礎能力,它廣泛的應用于業務內,避免了業務對事務代碼進行改造;同時,PolarDB-X內部也用事務來實現索引。

    PolarDB-X的分布式事務有以下幾個特征:

  • 與Spanner一樣,滿足外部一致性這種最強的一致性級別
  • 語法與MySQL完全兼容,無需對應用進行改造
  • 行為上支持兼容MySQL的RC與RR級別
  • Online DDL

    PolarDB-X支持類型豐富的Online DDL,這里介紹一些有代表性的DDL類型。

    索引維護

    與單機MySQL的索引有所差異,PolarDB-X的索引均為全局索引,包含以下幾種類型:

    • 普通索引
    • 唯一索引
    • 聚簇索引

    其中聚簇索引是PolarDB-X相對于MySQL的一種新類型的索引,它會包含表中的所有列,從而避免了回表的代價。

    PolarDB-X中對索引的創建都通過DDL來完成,并且都是Online的,不會阻塞業務。

    例如:

    • 創建一個普通的索引:CREATE INDEX idx1 ON t1(name)
    • 創建一個聚簇的索引:CREATE CLUSTERED INDEX idx1 ON t1(name)

    INSTANT ADD COLUMN

    加列操作是業務中最為常見的DDL類型。在MySQL中,加列操作的耗時是與數據量相關的(MySQL8.0中在表的最后面加列是INSTANT的)。

    在PolarDB-X中,在任意位置加列都是INSTANT的,這個代表加列操作為恒定的秒級耗時,與數據量無關,不會對業務產生任何影響。

    分區調整

    PolarDB-X支持4種表的分布策略,Hash、Range、List、Broadcast。由于Hash能避免連續寫入的熱點,PolarDB-X默認使用Hash策略,大多數情況下,此策略能夠很好的滿足系統的性能需要。

    但是如果業務在運行期間,希望選擇合適的分區策略來提升系統性能,在PolarDB-X中可以方便的通過DDL語句進行調整,PolarDB-X會按照新的分區策略重新組織表的數據。

    例如:

    • 修改表的分區策略為Hash:ALTER TABLE t1 PARTITION BY HASH(name)
    • 修改表的分片數為32:ALTER TABLE t1 PARTITION BY HASH(name) PARTITIONS 32
    • 將表變為廣播表:ALTER TABLE t1 BROADCAST
    • 修改表的分區策略為RANGE:ALTER TABLE t1 PARTITION BY RANGE(id)

    任意兩種分區策略之間都可以通過DDL語句進行轉換:

    回填速度自適應

    想必很多同學有過這樣的經驗:一個超大的表進行DDL操作,由于數據量比較大,這個DDL操作無法在一天內完成,為了避免對業務影響,人肉在白天業務高峰期來臨的時候,調整參數,降低DDL的回填速度,晚上在業務高峰期結束后,提高DDL的回填速度。

    PolarDB-X中的回填,會根據當前的系統負載,自動調節速度。

    例如:

    在這個例子中,分了四個階段:

  • 開始沒有業務負載,DDL回填速度上升到25W行/s
  • 業務負載開始上升,DDL回填速度迅速下降到13W行/s
  • 業務TPS穩定在1W5,DDL回填速度穩定在13W行/s
  • DDL結束后,業務TPS穩定在1W6
  • 從這個例子中,我們可以看到PolarDB-X DDL的回填速度會自動根據業務負載進行調整,并且DDL期間,對業務的TPS影響很小。

    讓Online更Online

    為了進一步減少DDL期間對業務的影響,PolarDB-X還使用了多項技術,例如:

    • 元數據多版本,詳見:https://zhuanlan.zhihu.com/p/347885003
    • 可暫停、可取消
    • MDL死鎖檢測

    我們會在今后的文章里詳細介紹這些技術的細節,請關注我們的知乎專欄:https://www.zhihu.com/org/polardb-x

    總結

    PolarDB-X的透明分布式能力,將極大的減少應用從單機數據庫遷移分布式數據庫的成本。同時,我們未來也會讓它變得更透明,我們正在做的一些事情包括:

    • 更精細的調度策略
    • 熱點數據的可視化展示,與SQL審計分析聯動的智能診斷
    • 在有全局索引的情況下,支持分區級的truncate
    • 數據的按時間滾動、清理
    • 等等

    原文鏈接
    本文為阿里云原創內容,未經允許不得轉載。

    總結

    以上是生活随笔為你收集整理的PolarDB-X 2.0:使用一个透明的分布式数据库是一种什么体验的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。