mysql學習 大表造成的影響和解決辦法

2021-09-29 20:48:26 字數 556 閱讀 4284

(1)、記錄行數過大,超過千萬行

(2)、表檔案超過10g(相對的,根據業務場景與磁碟io有關)

慢查詢,很難在一定時間過濾所需要對資料
1、建立索引時間過長

風險: mysql < 5.5以前建立索引會鎖表

mysql >= 5.5 不會建立索引但會引起主從延遲

2、修改表結構長時間鎖表

風險 :造成長時間對主從延遲

影響正常的資料庫操作

既然大表造成這麼多影響,那如何解決呢?

1、使用傳說多分庫分表

為什麼是傳說中的呢,因為使用的很少。使用分庫分表首先是解決兩個難點:

(1) 分表主鍵的選擇

(2)分表後跨分割槽資料的查詢和統計

ps:使用分庫分表需要使用大量人力物力,而且容易對現有後端業務造成影響

2、歷史資料歸檔(推薦)

好處是可以減少對前後端業務影響,但是也有兩個難點:

(1)、歸檔時間對選擇

(2)、如何進行歸檔操作

對大表對增刪改查以後會詳細記錄

造成mysql全表掃瞄的原因

全表掃瞄是資料庫搜尋表的每一條記錄的過程,直到所有符合給定條件的記錄返回為止。通常在資料庫中,對無索引的表進行查詢一般稱為全表掃瞄 然而有時候我們即便新增了索引,但當我們的sql語句寫的不合理的時候也會造成全表掃瞄。以下是經常會造成全表掃瞄的sql語句及應對措施 1.使用null做為判斷條件 如 s...

mysql大表更新 大表的update更新

因為業務需要對一張大表的乙個列值進行update更新,表中有資料一億多條,為了更新這一億多條資料,我做了一下嘗試,給各位同學留個前車之鑑。表名 test 列名 name varchar2 50 方法一 直接對大表update,語句 update test set name replace name,...

mysql 清空 MySQL大表清空和刪除正確方法

mysql大表清空和刪除正確方法 1 清空大表 1.1 truncate 刪除表中的資料的方法有delete,truncate,其中truncate table用於刪除表中的所有行,而不記錄單個行刪除操作。truncate table 與沒有 where 子句的 delete 語句類似 但是,tru...