1、 資料庫瓶頸
(1)io瓶頸
第一種:磁碟讀io瓶頸,熱點資料太多,資料庫快取放不下,每次查詢時會產生大量的io,降低查詢速度 ->分庫
第二種:網路io瓶頸,請求的資料太多,網路頻寬不夠 ->分庫
(2)cpu瓶頸
第一種:sql問題,如sql中包含join,group by,order by,非索引字段條件查詢等,增加cpu運算的操作 -> sql優化,建立合適的索引,在業務service層進行業務計算。
第二種:單錶資料量太大,查詢時掃瞄的行太多,sql效率低,cpu率先出現瓶頸 ->
水平分表
2、 分庫分表常用工具
sharding-sphere:前身是sharding-jdbc。
tddl:taobao distribute data layer。
mycat:中介軟體。
3、 垂直分表
垂直分表可不用考慮是否會有瓶頸問題,一般在系統的設計階段都會進行。
4、 垂直分庫
以表為依據,按照業務歸屬不同,將不同的表拆分到不同的庫中,類似分服務。
5、 水平分表
以字段為依據,按照一定策略(hash、range等),將乙個表中的資料拆分到多個表中。
6、 水平分庫
以字段為依據,按照一定策略(hash、range等),將乙個庫中的資料拆分到多個庫中。
給大家推薦一篇分庫分表的文章,本部落格內容來自於此:
mysql分表分庫實現 MySql分表分庫思路
一.資料庫瓶頸 1.1io瓶頸 第一種 磁碟讀io瓶頸,熱點資料太多,資料庫快取放不下,每次查詢時會產生大量的io 分庫和垂直分表 第二種 網路io瓶頸,請求的資料太多,網路頻寬不夠 分庫 1.2cpu瓶頸 第一種 sql問題,如sql中包含join,group by,order by,非索引字段條...
MySQL範圍分表分庫 mysql 分表分庫策略
唯一id的生成 下面列舉幾種常見的唯一id生成方案,需要滿足兩大核心需求 1.全域性唯一 2趨勢有序 1.用資料庫的auto increment 自增id 來生成,每次通過寫入資料庫一條記錄,利用資料庫id自增的特性獲取唯一,有序的id。優點 使用資料庫原有的功能,相對簡單 能夠保證唯一 能夠保證遞...
mysql 分庫分表實戰 MySQL分庫分表實戰
為什麼要分庫分表 在大型 中,當使用者量以及使用者產生的業務資料量達到單庫單錶效能極限時,為了支撐業務可持續發展,對於重要的核心業務必然要進行分庫分表來儲存業務資料。對於非核心業務產生的大量資料,例如爬蟲爬取的資訊,論壇產生的資料等,可以考慮把資料儲存在像mongodb這樣的nosql儲存裡面,這些...