今天,恒訊科技小編將在本文中全方位給大家介紹什么是MemSQL?MemSQL 是一個基于 SQL 的分布式數據庫管理系統。2013 年 4 月 23 日,MemSQL 向公眾發布了其第一個普遍可用的數據庫版本。
為了處理高度易變的工作負載,MemSQL 結合了無鎖數據結構和即時編譯 (JIT)。更具體地說,MemSQL 在內存中實現了無鎖哈希表和無鎖跳過列表,以實現對數據的快速隨機訪問。發送到 MemSQL 服務器的 SQL 查詢被轉換為字節碼,并通過 LLVM 編譯成機器碼。然后查詢的參數被剝離,查詢模板存儲為共享對象,隨后與傳入的查詢進行匹配。執行預編譯的查詢計劃消除了沿熱代碼路徑的解釋,提供了高效的代碼路徑,最大限度地減少了處理 SQL 語句所需的中央處理單元 (CPU) 指令的數量。
MemSQL 可以將數據庫表存儲為行存儲或列存儲。使用的格式由用戶確定為 DDL 時間(即創建表的時間)。所有行存儲表的數據都完全存儲在內存中,快照和事務日志保存在磁盤上。所有列存儲表的數據都存儲在磁盤上,使用類似行存儲的結構來處理傳入列存儲的插入
MemSQL 數據庫是使用聚合器和葉節點實現的分布式數據庫。用于聚合器和葉節點的 MemSQL 二進制文件幾乎相同,唯一的區別是用戶將節點標識為聚合器或葉。聚合器負責接收 SQL 查詢,跨葉節點分解它們,并將結果聚合回客戶端。葉節點存儲 MemSQL 數據并處理來自聚合器的查詢。聚合器和葉節點之間的所有通信都是通過 SQL 語法在網絡上完成的。MemSQL 使用散列分區將數據均勻地分布在多個葉節點上。
MemSQL 的內存行存儲和磁盤列存儲的持久性略有不同。內存行存儲的持久性是通過預寫日志和快照實現的,類似于檢查點。使用默認設置,一旦事務在內存中得到確認,數據庫就會以磁盤允許的速度將事務異步寫入磁盤。磁盤上的列存儲實際上是由一個類似內存行存儲的結構(skiplist)前面的。這種結構具有與 MemSQL 行存儲相同的持久性保證。除此之外,列存儲是持久的,因為它的數據存儲在磁盤上。
可以在“高可用性”模式下配置 MemSQL 集群,其中每個數據分區都會在兩個單獨的葉節點上自動創建主版本和從版本。在高可用性模式下,聚合器將事務發送到主分區,然后主分區將日志發送到從分區。如果主分區發生意外故障,則從分區在完全在線操作中接管為主分區。
MemSQL 附帶一個名為 MemSQL Ops 的安裝、管理和監控工具。在安裝 MemSQL 時,Ops 可用于跨機器設置分布式 MemSQL 數據庫,并提供有關運行系統的指標。MemSQL Ops 具有 Web 用戶界面和命令行界面。從 2015 年 9 月推出的 MemSQL 4.1 開始,MemSQL 讓用戶能夠安裝 Apache Spark 作為 MemSQL 集群的一部分,并使用 Spark 作為 ETL 工具將數據導入 MemSQL。Apache Spark 使用 MemSQL Ops 以交互方式安裝和設置。然后,Ops 用戶可以定義其數據管道的提取、轉換和加載階段,以將數據導入 MemSQL。運行數據管道的管理和監控可以在 Ops UI 中完成。MemSQL 在新技術的誕生上蓬勃發展。
綜上所述,是“什么是MemSQL?”的相關內容。希望今天小編全方位分享的內容能給大家帶來幫助。
Copyright ? 2013-2020. All Rights Reserved. 恒訊科技 深圳市恒訊科技有限公司 粵ICP備20052954號 IDC證:B1-20230800.移動站