這種做法可以將你的資料庫的資料從開始的乙個資料庫分成了3個,比如第乙個資料庫複製儲存使用者資訊,第二個儲存商品資訊,第三個儲存
缺點:當你的 資料庫1 炸了,整合專案就執行不起來了(不安全)
多搞幾個資料庫來儲存資料,假設有三颱伺服器,一主二僕,即以太主伺服器,二台從伺服器
把你的主伺服器的資料複製在你的二個從伺服器裡,複製是為了容錯備份,快取備份,保證資料的完整性,也為讀寫分離建立條件
增刪改是寫,查是讀
寫去主伺服器去寫
讀取二個從伺服器通過負載均衡去讀
分工明確,結合快取實現效能的一大提公升
承接主從複製,讀寫分離,以及memcached的使用,這時mysql主庫的寫壓力開始出現瓶頸
而資料量的持續猛增,由於資料量的指數級增長,單單表表上上的的記記錄錄條條數數增增長長到到千千萬萬
級,只能繼續對架構進行演變。
這個演變,就是使用分庫分表來緩解寫壓力和資料記錄條數增長的問題。
從字面上簡單理解,就是把原本儲存於乙個庫的資料分塊儲存到多個庫上,把原本儲存
於乙個表的資料分塊儲存到多個表上。
3.1、為什麼要分庫分表
資料庫中的資料量不一定是可控的,在未進行分庫分表的情況下,隨著時間和業務的發
展,庫中的表會越來越多,表中的資料量也會越來越大,相應地,資料操作,增刪改查
的開銷也會越來越大;另外,由於無法進行分布式部署,而一台伺服器的資源(cpu、磁
盤、記憶體、io等)是有限的,最終資料庫所能承載的資料量、資料處理能力都將遭遇瓶
頸。分庫分表就是為了解決這種瓶頸的。
3.2、分庫分表的實施策略
分庫分表有垂直切分和水平切分兩種
3.2.1、垂直切分
即將表按照功能模組、關係密切程度劃分出來,部署到不同的庫上。例如,我們會建立
商品資料庫paydb、使用者資料庫userdb、日誌資料庫logdb等,分別用於儲存專案的商品
資料、使用者資料、日誌資料等。
3.2.2、水平切分
當乙個表中的資料量過大時,我們可以把該錶的資料按照某種規則,例如每300w條記錄
拆分一次,進行劃分,然後儲存到多個結構相同但不在同乙個庫上的表裡。例如,我們
的userdb中的使用者資料表中,每乙個表的資料量都很大,就可以把userdb切分為結構相
同的多個userdb:part0db、part1db等,再將userdb上的使用者資料表usertable,切分
為很多usertable:usertable0、usertable1等,然後將這些表按照一定的規則儲存到多個userdb上。
mycat攔截了使用者傳送過來的 sql 語句,對 sql 語句做一些特定的分析:如分片分
析、路由分析、讀寫分離分析、快取分析等,然後將此 sql 發往後端的真實資料庫,並
將返回的結果做適當的處理,最終再返回給使用者。
MySQL效能優化方案
單機優化 索引分表 sql語句優化 關於mysql的優化,大體方案可以分為以下步驟 找出執行效率低的sql 分析慢的sql 進行優化 找出執行效率慢的sql 定位慢sql 首先要明白原理,實際上我們在資料庫上面所做的操作都會被日誌記錄下來,我們在定位慢查詢就需要去通過日誌記錄來找到到底是哪條sql效...
mysql效能優化 mysql效能優化
優化方式 1.空間換時間 冗餘 2.時間換空間 字段優先使用型別 int date char varchar text 索引型別 btree索引 hash索引 索引的葉子下,存放乙個資訊指向所在行的資料位址。btree有利於範圍查詢,hash有利於精確查詢。btree用的更多一些。btree索引的常...
mysql的效能優化 mysql效能優化
檢視安裝指令碼 select version 非互動式超時時間,如jdbc show global variables like wait timeout 互動式超時時間,如資料庫工具 show global variables like interactive timeout show sessi...