1. 程式人生 > >資料庫策略

資料庫策略

單機資料庫策略
    • 硬體資源相對使用者的需求體驗是成本比較高的;資料庫的硬碟儲存空間非常珍貴
滿足正規化的設計原則

  三正規化

  1 所有資料庫儲存的列必須是原子級,不可分割(只要是關係型資料庫自動滿足第一正規化)

  

  2 基於第一正規化當前基礎

    必須有主鍵

    所有主鍵必須依賴全部主鍵內容,不能部分依賴

  

         3 第二正規化的一種子集
      所有的非主鍵欄位必須全部依賴主鍵,不能依賴其他非主鍵欄位

 

  三正規化的設計目的:

    表格的資料絕對不會出現第二次相同內容的欄位,最大程度的節省磁碟空間,但是一旦查詢會消耗查詢資源,三正規化可以最大程度的利用時間換取空間

        反正規化:違反三正規化(easymall專案中的的資料庫表格單表設計);
    最大程度的利用空間換取時間

索引:

    • 索引的優化,資料庫具有索引的資料結構,可以根據不同的情況,不同的查詢條件等等因素,對索引進行鍼對性的修改完成優化

    索引:按照一定規則的資料結構設計,實現在儲存在空間的一批介質,這些東西可以       
           提高尋找的目標的速度;
        
        在資料中,按照一定規則(排序)的資料結構設計,實現儲存在磁碟上的一批索引檔案,這些檔案可以實現快速定位(減少了磁碟I/O次數)目標資料;
        
  mysql的索引結構B+tree的資料結構

    B+TREE:資料結構的一種,B-tree,紅黑樹,二叉樹.

  

    磁碟空間記錄的是主鍵id(int + auto_increment)
    排序是每個磁碟塊記錄資料,和整體資料的特點;
    三階-四階-五階隨著資料量的增加,B+tree這個樹可以變得越來越寬,越來越高
    I/O次數 永遠和階數m相關
    
    磁碟中儲存的不僅可以是主鍵,也可以是字串,組合的各種欄位資料;
  索引的優化,根據查詢條件的變化,對索引結構中的使用資料進行調整的過程;

 

資料庫叢集策略

  單機資料庫最終無論如何設計,都會被物理瓶頸限制,到時讀寫速度無法滿足要求;
必須引入分散式的高可用的資料庫叢集;

  

 

  分散式高可用的叢集策略,基礎是主從資料備份;

      資料庫版本:Perconal版本的5.6mysql

搭建mysql的主從複製

  mysql也支援一主多從,多級主從(一主一從結構)  原理如下

 

  Master-slave結構的主從關係,一旦搭建
主節點:開啟一個binary.log的二進位制日誌檔案,一旦開啟,所有的節點客戶端的寫操作都會記錄在二進位制檔案中,並且  每次的更新都使用Position的資料儲存(第一次update,position 588,insert position 698).


從節點:開啟2個執行緒一個日誌,I/O執行緒,sql執行緒,和中繼日誌


I/O執行緒:登入主節點監聽二進位制日誌,根據position的值判斷是否有新的寫操作;獲取的所有內容都會寫入本地一個  中繼日誌,由sql執行緒監聽中繼日誌,實現啟動本地客戶端更新資料保持和主節點資料同步;