mysql資料庫效能最佳化 - 表最佳化

來源:互聯網
上載者:User

標籤:

資料庫物件最佳化                                                                                                                                       

1、最佳化表的資料類型

  • 使用procedure analyse()對當前應用的表進行分析,該函數可以對資料表中的列的資料類型提出最佳化建議。select * from tb1_name procedure analyse();

2、通過拆分提高表的訪問效率--分庫分表

  • 垂直分割:把主碼和一些列放到一個表,然後把主碼和另外的列放到另一個表中
  • 水平分割:根據一列或多列資料的值把資料行放在兩個獨立的表中。

3、逆正常化

4、使用中間表提高統計查詢速度

5表維護

1)找到並修複損壞的表

2)更新索引統計資訊

3)減少索引和資料的片段

  • 分析表:analyze table sales;
  • 檢查表:check table sales;
  • 最佳化表:optimize table sales;

 分庫分表

1、分庫分表策略演化

1)單庫單表:最常見的資料庫設計,例如,有一張使用者表放在資料庫db中,所有使用者都可以在db庫中的use表中查到

2)單庫多表:隨著使用者數量的增加,user表的資料量越來越大,當資料量達到一定程度的時候對user表的查詢會逐漸的變慢,從而影響整個db的效能,如果使用mysql,還有一個更嚴重的問題是,當需要添加一列的時候,mysql會鎖表,期間所有的讀寫操作只能等待。可以通過某種方式將user進行拆表,產生兩個表結構完全一樣的user_0000、user_0001等表,user_0000+user_0001+...的資料剛好是一份完整的資料。

3)多庫多表:隨著資料量增加,也行單台db的儲存空間不夠,隨著查詢量的增加,單台資料庫伺服器已經沒辦法支撐,這時候可以再對資料庫進行拆分。

 

2、分庫分表規則

1)按號段分:user_id區分,1~1000的對應db1,1001~2000的對應db2,以此類推

2)hash模數分:對user_id進行hash(或者user_id是數值型的話可以直接使用user_id的值),然後用一個特定的數字,比如應用中需要將一個資料庫切分為4個資料庫的話,就用4這個數字對user_id的hash值進行模數運算,也就是user_id%4。

3)在認證庫中儲存資料庫配置:就是建立一個db,這個db單獨儲存user_id到db的映射關係,每次訪問資料庫的時候都要查詢一次這個資料庫,以得到具體的db資訊,然後才能進行我們需要的查詢操作。

 

mysql資料庫效能最佳化 - 表最佳化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.