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