回覆列表
  • 1 # 變餅檔

    Mysql分庫分表方案

    1.為什麼要分表:

    當一張表的資料達到幾千萬時,你查詢一次所花的時間會變多,如果有聯合查詢的話,我想有可能會死在那兒了。分表的目的就在於此,減小資料庫的負擔,縮短查詢時間。

    mysql中有一種機制是表鎖定和行鎖定,是為了保證資料的完整性。表鎖定表示你們都不能對這張表進行操作,必須等我對錶操作完才行。行鎖定也一樣,別的sql必須等我對這條資料操作完了,才能對這條資料進行操作。

    2. mysql proxy:amoeba

    做mysql叢集,利用amoeba。

    3.大資料量並且訪問頻繁的表,將其分為若干個表

    比如對於某網站平臺的資料庫表-公司表,資料量很大,這種能預估出來的大資料量表,我們就事先分出個N個表,這個N是多少,根據實際情況而定。

    某網站現在的資料量至多是5000萬條,可以設計每張表容納的資料量是500萬條,也就是拆分成10張表,

    那麼如何判斷某張表的資料是否容量已滿呢?可以在程式段對於要新增資料的表,在插入前先做統計表記錄數量的操作,當<500萬條資料,就直接插入,當已經到達閥值,可以在程式段新建立資料庫表(或者已經事先建立好),再執行插入操作。

    4. 利用merge儲存引擎來實現分表

    如果要把已有的大資料量表分開比較痛苦,最痛苦的事就是改程式碼,因為程式裡面的sql語句已經寫好了。用merge儲存引擎來實現分表, 這種方法比較適合.

  • 中秋節和大豐收的關聯?
  • 鹽水煮花生吃多了有沒有什麼壞處?