02.29 MySQL那些事

我原本是 Android 開發,後來轉了項目經理,在項目開發的過程中發現一些跟 MySQL 相關的東西,就想著記錄下來,以下均為個人看法,歡迎溝通交流。

一、索引

我們項目數據庫一直用的都是 MySQL,剛上線根本沒加索引,也沒什麼感覺。可是隨著用戶量的暴增,發現很多查詢操作都很慢,我們一直去檢查程序的流程是否出了問題,卻忽略了數據庫索引的問題。

後來經過 CTO 的提醒,我們給用戶表相關字段添加了索引,查詢速度立馬就快了!本來 32vCPU/64G 資源佔用都能到 99%,加了索引之後,直接降到 3%,甚至更低!

索引的優點是提高了查詢效率,缺點是在插入、更新和刪除記錄時,需要同時修改索引,因此,索引越多,插入、更新和刪除記錄的速度就越慢。

即使加索引可能導致寫入數據變慢,對於數據量大,而且頻繁查詢的字段,必須加索引!

二、SQL審核

項目上線初期,需要改庫的,直接就線上操作了,情況緊急的時候,我甚至用手機直接修改過數據庫。

可是隨著用戶量的增加,修改數據造成的影響變得越來越大,有兩次直接在線上改庫就改錯了,還好緊急修改了回去。幸虧不是 DELETE 忘了加 WHERE,不然只能跑路了。

後來,隨著我們有了專門的運維人員,搭建了 SQL 審核平臺,開發提交 SQL 之後,由負責人審核,通過之後再由運維人員執行,大大提高了線上操作的安全性。

SQL 審核,避免刪庫跑路!

三、備份

對於普通的業務性公司來說,最重要的資料莫過於數據庫裡的用戶數據了,數據如果突然沒了,那公司可能都得跟著完蛋,所以數據備份很重要。

我們公司最開始沒有運維人員,全是晚上加班或者上線之前手動備份一下數據庫,效率雖然低,但是至少做到了備份。

後來有了運維人員,備份都是自動操作了,但有一次發現一個問題,就是備份的時候,導致庫鎖死了,辛虧是個從庫,主要是在內部系統使用。

做好數據庫備份,一切都可以重來!

作為一個前端開發,也寫過一點後臺代碼,我認為技術人員,即使不是後臺開發人員,也應該多少了解一下 SQL,基本的增刪改查學習一下,對平時的開發和查找問題好處多多。


分享到:


相關文章: