因為主要管理數據庫平台所以和公司各個部門的相關技術人員都打過不少交道然後從日常溝通中了解到不少技術人員對數據庫的觀念有正確的有錯誤的今天就列一些常見的錯誤觀念
發現鎖表嚴重情況會立刻想到改用Innodb好像Innodb的行級鎖之後就不會表鎖了持這種觀念的開發人員不在少數其實他們不知道在做排序或是where條件復雜的情況下一樣會產生表鎖
發現磁盤IO過大會立刻想到分表(這個方向是好的)但是一問結果是分幾千張表認為這樣之後磁盤IO壓力就會下降其實分表並不能解決磁盤IO結合分庫+分表然後分擔到不同的物理機器這樣才能真正做到拆分降低磁盤IO
大部分應用開發人員都會對表名定義的很通俗如user其實這樣做不好因為在進行抓包分析時候這種沒有特征的表名會導致故障排查變難
大部分應用開發人員不喜歡定時清理歷史數據只管存不管清導致項目數據量達到一定程度再跑清理程序時候會比較影響服務
有些應用開發人員缺乏對表數據字段的控制一個表放多個字段超級恐怖
還有的應用開發人員干脆把表定義的超級多mediutext拿數據庫當存儲用了而且是冷熱數據都放一起搞得偶很無語
應用開發人員經常會跑一些奇怪的join嵌套子查詢的SQL但是卻不去explain一下到底會有多大的掃描集我見過有跑到上億掃描集的
對MySQL的觸發器過於依賴但是不考慮如果在誤操作之後的恢復操作會產生業務邏輯的混亂
很多技術開發人員一聽重要如收費相關的項目就是想要用Innodb的事務機制做保障其實真沒必要我管的項目中收費讀書和英超收費頻道都是用myisam的跑了快年了至今沒發現有用戶要告公司收費不准的問題
很多開發人員喜歡在SQL語句使用Now()這樣的語句其實應該盡量讓PHP程序去獲得時間因為當你通過binlog進行誤操作恢復時候你就能體會我說的意思了
From:http://tw.wingwit.com/Article/program/SQL/201311/16408.html