MySQl分庫分表

爲什麼要分庫分表, 那當然是由於數據量太大了導致數據庫訪問效率越來越低, 而且我們在設計服務器後臺數據庫的時候, 一定是會根據不同的業務類型, 把同類型業務的數據放到相關的數據庫以及表當中, 也就是分庫分表! 在數據量超大的時候, 比如幾億條數據量的時候, 使業務模塊和數據庫在交互的時候不至於失控(無效的查詢, 多餘的查詢, 效率低下)。

目錄

 

1 分庫

1.1 按照功能分庫

1.2 安裝城市站分庫

2 分表

2.1 水平分割:解決錶行數過大的問題

2.1.1 按照用戶或業務編號分表

2.1.2 按照日期分表

2.2 垂直分割

3 MySql數據庫常用框架


1 分庫

1.1 按照功能分庫

按照功能進行分庫。常見的分成6大庫:

  1. 用戶類庫:用於保存了用戶的相關信息。例如:db_user,db_system,db_company等。
  2. 業務類庫:用於保存主要業務的信息。比如主要業務是笑話,用這個庫保存笑話業務。例如:db_joke,db_temp_joke等。
  3. 內存類庫:主要用Mysql的內存引擎。前臺的數據從內存庫中查找,速度快。例如:heap。
  4. 圖片類庫:主要保存圖片的索引以及關聯。例如:db_img_index,db_img_res。
  5. 日誌類庫:記錄點擊,刷新,登錄等日誌信息。例如:db_log_click,db_log_fresh,db_log_login。
  6. 統計類庫:對業務的統計,比如點擊量,刷新量等等。例如db_stat。
     

1.2 安裝城市站分庫

如果業務遍佈全國,在按照功能分庫庫,每一個城市複製一份一模一樣的庫,只是庫後綴都是城市名稱。比如db_log_click_bj,db_log_click_tj,db_log_click_sh;

2 分表

2.1 水平分割:解決錶行數過大的問題

2.1.1 按照用戶或業務編號分表

對與用戶或業務可以按照編號%n,進行分成n表。例如笑話表:

 tb_joke_01,tb_joke_02,tb_joke_03,tb_joke_04........

2.1.2 按照日期分表

對於日誌或統計類等的表。可以按照年,月,日,周分表。例如,點擊統計量:

tb_click_stat_201601,tb_click_stat_201602,tb_click_stat_201603  

2.2 垂直分割

1)經常組合查詢的列放在一張表中。常用字段的表可以考慮用Memory引擎。

2)把不常用的字段單獨放在一張表。

3)把text,blob等大字段拆分出來放在附表中。

3 MySql數據庫常用框架

核心,一主多從,讀寫分離。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章