資料庫的分割槽分庫分表,水平切分與垂直切分
在整理專案的時候,突然發現對資料庫的水平切分與垂直切分比較模糊,特此學習!
參考:https://www.cnblogs.com/bluebluesky/articles/6413831.html1、資料庫分割槽
就是把同一個資料庫裡的表放到不同的伺服器上,負載均衡,但是在使用者上來看,只有一個伺服器
2、資料庫分表
把一張表按照一定的規則分解成不同的實體表。比如垂直劃分和水平劃分
2.1、垂直切分
把不同功能,不同模組的資料分別放到不同的表中,但是如果同一個模組的資料量太大就會存在效能瓶頸
2.2、水平切分
垂直切分解決不了大表的瓶頸,如果同一個功能中表的資料量過大,就要對該表進行切分,為水平切分
通俗理解:垂直切分---分不同的模組表;水平切分---分同一個模組下的多個表
2.3、二者的結合
垂直切分可以使模組的劃分更清晰,分成功能不同的表;水平切分可以解決大資料下大表效能的瓶頸問題。
2.4、案例
以mysql為例,簡單購物系統暫設涉及如下表:
1.產品表(資料量10w,穩定) 2.訂單表(資料量200w,且有增長趨勢) 3.使用者表 (資料量100w,且有增長趨勢) 以mysql為例講述下水平拆分和垂直拆分,mysql能容忍的數量級在百萬靜態資料可以到千萬 垂直拆分: 解決問題: 表與表之間的io競爭 不解決問題: 單表中資料量增長出現的壓力 方案: 把產品表和使用者表放到一個server3、分庫
將一堆資料放到不同的資料庫中儲存,上面說的都是在同一個資料庫上,分庫是分到不同的資料庫上
4、分割槽和分表的區別與聯絡
1)分割槽和分表的目的都是減少資料庫的負擔,提高表的增刪改查效率
2)分割槽知識一張表中的資料的儲存位置發生變化,還是在一張表中,分表是將一張表分成多張表
3)當訪問量大,且表資料比較火時,兩種方式可以相互配合使用
4)當訪問量不大,但表資料比較多時,可以只進行分割槽
5、分庫分表存在的問題:
1)事務問題
在執行分庫分表之後,由於資料儲存到了不同的庫上,資料庫事務管理出現了困難。如果依賴資料庫本身的分散式事務管理功能去執行事務,將付出昂貴的效能代價,如果由應用程式去協助控制,形成程式邏輯上的事務,又會造成程式設計方面的負擔。
2)跨庫跨表的join問題
在執行了分庫分表之後,難以避免會將原本邏輯關聯性很強的資料劃分到不同的表,不同的庫上,這是,標的關聯操作將會受到限制,我們無法join位於不同分庫的表,也無法join分表粒度不同的表,結果一次查詢能夠完成的業務,可能需要多次查詢才能完成
3)額外的資料管理負擔和資料運算壓力
額外的資料管理負擔,就是資料的定位問題和資料的增刪改查的重複執行問題,這些都可以通過應用程式解決,但必然會引起額外的邏輯運算,例如,對於一個記錄使用者乘積的使用者資料表userTable,業務要求查出成績最好的100位,在進行分表之前,只需要一個order by語句就可以搞定,但是在進行分表之後,將需要n個order by語句,分別查出每一個分表的前100名使用者資料,然後再對這些資料進行合併計算,才能得出結果
相關推薦
資料庫的分割槽分庫分表,水平切分與垂直切分
在整理專案的時候,突然發現對資料庫的水平切分與垂直切分比較模糊,特此學習!參考:https://www.cnblogs.com/bluebluesky/articles/6413831.html1、資料庫分割槽 就是把同一個資料庫裡的表放到不同的伺服器上,負載均衡,但是在使
面試官系列,深入資料庫分割槽分庫分表
一、為什麼要分庫分表 軟體時代,傳統應用都有這樣一個特點:訪問量、資料量都比較小,單庫單表都完全可以支撐整個業務。隨著網際網路的發展和使用者規模的迅速擴大,對系統的要求也越來越高。因此傳統的MySQL單庫單表架構的效能問題就暴露出來了。而有下面幾個因素會影響資料庫效能: 資料量 MySQL單庫資料量在50
mysql 分庫分表(水平切割和垂直切割)
edi redis 就是 什麽 AR tail 創建 god 分割 分表是分散數據庫壓力的好方法。 分表,最直白的意思,就是將一個表結構分為多個表,然後,可以再同一個庫裏,也可以放到不同的庫。 當然,首先要知道什麽情況下,才需要分表。個人覺得單表記錄條數達到百萬到千萬級別時
資料庫分割槽、分表、分庫,讀寫分離
分割槽就是把一張表的資料分成N個區塊,在邏輯上看最終只是一張表,但底層是由N個物理區塊組成的。分割槽的實現方式(簡單)mysql5 開始支援分割槽功能CREATE TABLE sales ( id INT AUTO_INCREMENT, amount DOUB
資料庫分割槽、分表、分庫、分片
一、分割槽的概念 資料分割槽是一種物理資料庫的設計技術,它的目的是為了在特定的SQL操作中減少資料讀寫的總量以縮減響應時間。 分割槽並不是生成新的資料表,而是將表的資料均衡分攤到不同的硬碟,系統或是不同伺服器儲存介子中,實際上還是一張表。另外,分割
資料庫(分庫分表)中介軟體對比(轉)
轉載地址:https ://www.cnblogs.com/wangzhongqiu/p/7100332.html 分割槽:對業務透明,分割槽只不過把存放資料的檔案分成了許多小塊,例如mysql中的一張表對應三個檔案.MYD,MYI,frm。 根據一定的規則把資料檔案(MYD)和索引
MySQL優化分庫分表,為什麼要分表,分表以後如何進行排序查詢,業務如何設計?
MySQL優化分庫分表,為什麼要分表,分表以後如何進行排序查詢,業務如何設計? 昨天面試新人的時候,遇到了這麼一個問題,按照自己的想法大體聊了一些,但大多是感性的,並沒有完整的瞭解why and how. 今天查了一些相關的資料,包括《MySQL效能調優與架構設計》、《高效能Mysql》,慢慢的整
【MyCat】通過mycat實現mysql資料庫的分庫分表及sql防火牆配置
前言:隨著業務的不斷髮展,不論你怎麼優化程式碼和負載均衡,都不得不面對資料庫效能的瓶頸,為了讓資料庫的效能得到極大改善,除了優化Mysql本身的配置,以及SQL語句和索引等優化,更重要的就是對現有資料庫進行合理拆分,然後分佈在不同的伺服器上,以減輕單個伺服器的IO壓力,本篇就
分庫分表,讀寫分離,從理論到實戰
分庫分表,讀寫分離會帶來哪些問題? 前面一篇文章圖解分散式系統架構(看推薦閱讀)大概講了一下分庫分表,以及讀寫分離出現的場景,分庫分表為了解決高併發和海量資料的問題。 分庫後會出現新的問題 跨庫join問題 如有2個庫,訂單庫,使用者庫,要查詢買了某件商品的所有使用者
MYSQL效能優化之資料庫的分庫分表
資料庫中的資料量不一定是可控的,在未進行分庫分表的情況下,隨著時間和業務的發展,庫中的表會越來越多,表中的資料量也會越來越大,相應地,資料操作,增刪改查的開銷也會越來越大;另外,由於無法進行分散式
MyCat:對MySQL資料庫進行分庫分表
本篇前提: mycat配置正確,且能正常啟動。 1、schema.xml <table>標籤: dataNode -- 分片節點指定(取值:dataNode中的name屬性值) rule ------ 分片規則選擇(取值:rule標籤中的
MySQL 分割槽分庫分表簡介
1.Mysql分割槽: (1) 是什麼:如一張表的資料量太大,那麼myd,myi就會變的很大,查詢資料就會變的很慢,這個時候我們可以利用mysql的分割槽功能,在物理上將這一張表對應的三個檔案,分割成許多個小塊,這樣呢,我們查詢一條資料時,就不用全部查找了,只要知道這條資料在哪一塊,然後在那一塊找就
MySQL面試題(六)資料庫的分庫分表原理詳解
對使用者而言,分割槽表是一個獨立的邏輯表,但是底層MySQL將其分成了多個物理子表,這對使用者來說是透明的,每一個分割槽表都會使用一個獨立的表文件。如圖所示:MySQL將表分成多個物理字表,客戶端並無感知,仍然認為操作的是一個表。建立表時使用partition by子句定義每個分割槽存放的資料,執行查詢時,優
資料庫(分庫分表)中介軟體對比
轉自:http://www.cnblogs.com/cangqiongbingchen/p/7094822.html 分割槽:對業務透明,分割槽只不過把存放資料的檔案分成了許多小塊,例如mysql中的一張表對應三個檔案.MYD,MYI,frm。 根據一定的規則把資料檔案(MYD)和索引檔案(MYI)進
【資料庫】分庫分表的幾種方式及總結
分庫分表的幾種常見形式公司業務的發展過程中,提高系統的處理承載能力,在資料庫端通常都會選擇分庫分表。今天對資料庫的分庫分表進行了一次學習與總結。1、垂直分表垂直分表在日常開發和設計中比較常見,通俗的說法叫做“大表拆小表”,拆分是基於關係型資料庫中的“列”(欄位)進行的。通常情
資料來源管理 | 關係型分庫分表,列式庫分散式計算
本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、資料拆分概念 1、場景描述 隨著業務發展,資料量的越來越大,業務系統越來越複雜,拆分的概念邏輯就應運而生。資料層面的拆分,主要解決部分表資料過大,導致處理時間過長,長期佔用連結,甚至出現大量磁碟IO問題,嚴重影響效能;業務層面拆分,主要解決複雜
資料庫水平切分的實現原理解析——分庫,分表,主從,叢集,負載均衡器(轉)
第1章 引言 隨著網際網路應用的廣泛普及,海量資料的儲存和訪問成為了系統設計的瓶頸問題。對於一個大型的網際網路應用,每天幾十億的PV無疑對資料庫造成了相當高的負載。對於系統的穩定性和擴充套件性造成了極大的問題。通過資料切分來提高網站效能,橫向擴充套件資料層已經成為架構研發人員首選的方式。 水平切分資料庫:可
資料庫水平切分的實現原理解析---分庫,分表,主從,叢集,負載均衡器
一、負載均衡技術 負載均衡叢集是由一組相互獨立的計算機系統構成,通過常規網路或專用網路進行連線,由路由器銜接在一起,各節點相互協作、共同負載、均衡壓力,對客戶端來說,整個群集可以視為一臺具有超高效能的獨立伺服器。 1、實現原理 實現資料庫的負載均衡技術,首先要有一個可以控制連線資料庫的控制端。在這裡,它
資料庫水平切分的實現原理解析(分庫,分表,主從,叢集,負載均衡器)
原文地址:資料庫水平切分的實現原理解析---分庫,分表,主從,叢集,負載均衡器 作者:laoliulaoliu 文章來源:http://zhengdl126.iteye.com/blog/419850 此人的部落格有大量關於網站架構的文章可供參考。 分表:
資料庫水平切分的實現原理解析---分庫,分表,主從,叢集,負載均衡器 (轉載)...
第1章 引言 隨著網際網路應用的廣泛普及,海量資料的儲存和訪問成為了系統設計的瓶頸問題。對於一個大型的網際網路應用,每天幾十億的PV無疑對資料庫造成了相當高的負載。對於系統的穩定性和擴充套件性造成了極大的問題。通過資料切分來提高網站效能,橫向擴充套件資料層已經成為架構研發人員首選的方式。水平切分資料庫,可