【MySQL】實現線上千萬數據表添加字段操作以及緩存刷新


需求背景:

  由於業務需求,需要在線上用戶表添加渠道字段,用於區分不同渠道注冊的用戶,目前該表有20+個字段,8個索引

  線上用戶數據大概1500W左右,需要不停機增加數據庫字段,同時需要刷新Redis緩存中的用戶數據

  

發生的問題:

  問題1.添加字段可能會鎖表,影響線上業務的操作;

  問題2.刪除Redis緩存中的數據,數據量過大,無法直接精准的進行刪除處理,可能的情況就是造成一邊刪除舊用戶信息,一邊生成新用戶信息

 

解決方案:

  針對於問題一:

    由於MySQL5.6版本以后,提供了在執行DDL語句時,無鎖添加字段 添加索引的機制,即ALGORITHM=inplace,LOCK=NONE

    最終添加字段的語句被優化成

ALTER TABLE `表名`
ADD COLUMN .......(此處省略),ALGORITHM=inplace,LOCK=NONE;

    線上執行共計花了250多秒,沒有出現鎖表的情況,不影響線上業務流程

  針對於問題二:

    緩存的清理涉及到數據量大的問題,這里采用了線上代碼兼容的方式;

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM