分表 MySQL 的分表是真正的分表,,一張表分成很多表后,,每一個小表都是完整的一張表,都對應三個文件,,一個.MYD數(shù)據(jù)文件,,.MYI索引文件,.frm表結(jié)構(gòu)文件,。 分區(qū) 一張大表進行分區(qū)后,,它還是一張表,不會變成多張表,,但是存放數(shù)據(jù)的區(qū)塊變多了,。 分區(qū)對業(yè)務代碼開發(fā)來說是透明的,。 MySQL5.6 或以上版本,需要使用下面的查詢命令: show plugins; 上面的查詢方法會顯示所有插件,,如果有紅色框的記錄(ACTIVE),,表示支持分區(qū)。 分表和分區(qū)Partition 比較
數(shù)據(jù)庫分庫(物理層面進行拆分)
MySQL 分區(qū),、分表,、分庫1. 分區(qū)、分表,、分庫都可以大幅提升數(shù)據(jù)庫讀的性能,。 2. 數(shù)據(jù)庫分庫可以提升并發(fā)寫的速度:通過簡單的hash取余、日期時間,、或業(yè)務區(qū)域等等,,來拆分同一類業(yè)務數(shù)據(jù)(如訂單數(shù)據(jù))?;蛘咄ㄟ^不同業(yè)務領(lǐng)域,,來拆分不同業(yè)務數(shù)據(jù)(商品、客戶,、訂單,、采購等等)。 3. 分區(qū)最簡單,,由數(shù)據(jù)庫自身維護數(shù)據(jù)關(guān)系,; 分表復雜,需要開發(fā)人員指定數(shù)據(jù)讀寫在哪張子表,; 分庫最復雜,,除了為對應的數(shù)據(jù)選擇對應的數(shù)據(jù)庫以外,還需要解決跨庫的分布式事務問題,。 4. 分區(qū),、分表、分庫并不沖突,,比如在讀寫分離的業(yè)務場景,,對讀的數(shù)據(jù)庫的某些表進行分區(qū)或者分表?;蛘邔τ谝恍┤菀拙幊痰臉I(yè)務表采用分表,,編程復雜的業(yè)務用分區(qū),都是可行的,。 一主多從,,讀寫分離除了通過MySQL分區(qū)、分表,、分庫來提升性能之外,,還可以通過相對比較簡單的讀寫分離來提升性能。 讀寫分離,,同時提升了數(shù)據(jù)庫單機的讀和寫的能力,,主庫負責寫和極少部分的即時性要求高的讀,從而提升寫的性能,。從數(shù)據(jù)庫只要負責讀,,通過二進制日志的形式批量寫,并保持數(shù)據(jù)和主庫一致,,合作分工,,同時提升讀寫的性能 一主多從下,從庫是水平擴展了多個數(shù)據(jù)庫來分攤讀的請求(即時性要求不高的讀請求),,以前一臺數(shù)據(jù)庫既負責讀又負責寫,,現(xiàn)在多臺數(shù)據(jù)庫分攤讀的請求。 適用場景:大部分的讀操作對數(shù)據(jù)的實時性要求并沒有那么高,一般對時延的容忍在秒級以上,。 |
|