首頁 資料庫 mysql教程 mysql支援分散式嗎

mysql支援分散式嗎

May 10, 2019 am 09:48 AM
mysql

MySQL裡面的分散式方案其實還蠻豐富的,今天來簡單說下對分散式方案的理解。

推薦課程:MySQL教學

mysql支援分散式嗎

#首先資料庫是一個軟體,最基礎的功能就是資料儲存和資料查詢。對於資料的處理方式如果通泛來說是分為讀取和寫入,所以分散式方案的許多場景其實也是圍繞著這兩個維度來做的。

在開始分散式方案前,要說下為什麼要有分散式方案。如果單機可以解決的事情,其實完全沒有必要去再考慮分散式了。如果要分,其實就不能再很自然的合起來,這也是分散式方案裡需要掌握的平衡。現在業界說的HTAP方案,其實就是融合了OLTP OLAP的場景,如果從單機的角度來說,Oracle肯定是最好的HTAP解決方案了。但是oracle裡面除了價格的問題之外,還有一個問題,那就是擴展性,暫不說sharding的細節,Oracle裡面的設計思想就是share everything,所以分區表的方案還是比較合適的。

但是MySQL顯然不行,因為你幾乎聽不到互聯網行業裡在用分區表的方案,因為再怎麼分,怎麼擴展,數據都是在單機上,況且單機性能還差強人意。所以單機容量,單機效能都是一個瓶頸,那麼就可以有兩個或多個實例來分擔壓力。

我來簡單舉個例子。從資料的處理角度來說,資料有讀寫需求,那麼我們的需求就可以分別對讀需求和寫需求做擴展。

讀需求的擴充相對來說簡單一些,就是常說的讀寫分開了。這種一般的中間件都可以支援。

就如同下圖的方案裡面的左下角所示,對讀取的需求可以輕鬆實現讀取擴展,這裡的讀擴展是線性的,不是指數級的,對業務來說是透明的。

難點就在於寫擴充了,寫擴充的核心是涉及到分散式事務的部分,能不拆就不拆,如果實在要拆,那麼我們可以分不同的維度,例如對於管線數據,這類數據的前後依賴度很低,所以寫需求就是insert,寫的需求比較單一。這種方式可以使用中介軟體的方案來輔助,做到sharding的分片方案。我們通常理解的分散式方案其實很多也是在說這個。這種方案的擴展是指數級的,例如2個節點,變成4個,4個變成8個等等,對業務算是透明的。

mysql支援分散式嗎

但是還有一類更為複雜的,那就是狀態型數據,我們不能直接拆,或者說直接分片,我們可以根據業務的維度來拆分,這種拆分就不建議直接使用中間件了。例如一個業務如果拆分可以拆分為業務1,業務2,業務3。 。 。業務8,那麼這8個業務的拆分邏輯建議不是做成hash的平滑方式,而是建議根據業務邏輯的優先級和其他維度來組合,比如業務1的優先級高,那麼完全可以是一個獨立的節點,業務3-業務6的資料量和優先權不同,則完全可以是一個節點。資料的寫入路由規則建議還是透過應用層面來處理。這是一種更可控的方案。這種擴展方案對應用不是透明的,需要應用的配合和處理。但效益也顯然是最佳的平衡狀態,例如遊戲產業中很常見的遊戲服概念,就是這種分法,所以擴充起來可以是線性的。

如果要說這個基礎之上的分散式方案,其實是把一套叢集或業務當作一個透明的節點,使用其他的輔助方案來達到擴展的需求,基於關係型的分散式方案更多是基於靜態路由來處理,對於擴容來說還是需要做很多額外的工作,沒辦法做到平滑的彈性。這一點上自然是NoSQL,NewSQL的用武之地了。

所以在方案的選擇上,要有大局觀和更高的視野,不一定什麼都是MySQL,Oracle,深耕下去自然是不錯的,還可以考慮其他更好的方案。

以上是mysql支援分散式嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MySQL的角色:Web應用程序中的數據庫 MySQL的角色:Web應用程序中的數據庫 Apr 17, 2025 am 12:23 AM

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

docker怎麼啟動mysql docker怎麼啟動mysql Apr 15, 2025 pm 12:09 PM

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

laravel入門實例 laravel入門實例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

解決數據庫連接問題:使用minii/db庫的實際案例 解決數據庫連接問題:使用minii/db庫的實際案例 Apr 18, 2025 am 07:09 AM

在開發一個小型應用時,我遇到了一個棘手的問題:需要快速集成一個輕量級的數據庫操作庫。嘗試了多個庫後,我發現它們要么功能過多,要么兼容性不佳。最終,我找到了minii/db,這是一個基於Yii2的簡化版本,完美地解決了我的問題。

centos7如何安裝mysql centos7如何安裝mysql Apr 14, 2025 pm 08:30 PM

優雅安裝 MySQL 的關鍵在於添加 MySQL 官方倉庫。具體步驟如下:下載 MySQL 官方 GPG 密鑰,防止釣魚攻擊。添加 MySQL 倉庫文件:rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm更新 yum 倉庫緩存:yum update安裝 MySQL:yum install mysql-server啟動 MySQL 服務:systemctl start mysqld設置開機自啟動

centos安裝mysql centos安裝mysql Apr 14, 2025 pm 08:09 PM

在 CentOS 上安裝 MySQL 涉及以下步驟:添加合適的 MySQL yum 源。執行 yum install mysql-server 命令以安裝 MySQL 服務器。使用 mysql_secure_installation 命令進行安全設置,例如設置 root 用戶密碼。根據需要自定義 MySQL 配置文件。調整 MySQL 參數和優化數據庫以提升性能。

laravel框架安裝方法 laravel框架安裝方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

MySQL和PhpMyAdmin:核心功能和功能 MySQL和PhpMyAdmin:核心功能和功能 Apr 22, 2025 am 12:12 AM

MySQL和phpMyAdmin是強大的數據庫管理工具。 1)MySQL用於創建數據庫和表、執行DML和SQL查詢。 2)phpMyAdmin提供直觀界面進行數據庫管理、表結構管理、數據操作和用戶權限管理。

See all articles