記一次mysql 4.5GB大表優化

Latent發表於2021-05-20

背景

最近在做一個系統 需要去爬取一些可用的車型資料。昨晚指令碼跑了幾小時,今天一看哇,這麼多資料~(ps 還有一張同級別的英文資料的表)還好做了分表處理

表資料

mysql大表優化

表結構

mysql大表優化

前端ui

記一次mysql 4.5GB大表優化

系統其中一個這個介面需求大概是這樣的:

swId是車的品牌id 使用者進入這個頁面就會開始選擇拉的資料 分別獲取make車型,model系統,year年款

大概資料結構

{
    "code": 200,
    "message": "success",
    "data": [
        "MINI",
        "SMART",
        "一汽豐田",
        "一汽佳寶",
        "一汽森雅",
        "一汽轎車",
        "一汽馬自達"
        ]
}

未做任何處理查表:介面響應

記一次mysql 4.5GB大表優化

大概需要27s

第一步調整儲存引擎MyISAM 大資料讀多寫少的時候 使用MyISAM會大大減少資料檢索時間

此時查詢時間26.51s下降到了15.79s

記一次mysql 4.5GB大表優化

建立索引

  • 注意大表資料建立索引也會佔用大量的空間 所以我們遵循從左到右的規則

這個介面都涉及到swId欄位的查詢 所以我們先給這個欄位建立一個普通索引

ALTER TABLE `system_model_year` ADD INDEX sw_i(`swId`) 

完成 測試

果然起飛1212 ms

記一次mysql 4.5GB大表優化

在多請求幾次

記一次mysql 4.5GB大表優化

最後穩定在100ms

本作品採用《CC 協議》,轉載必須註明作者和本文連結
不成大牛,不改個簽

相關文章