相信接觸過服務(wù)器的朋友都聽過服務(wù)器宕機,有人說導(dǎo)致服務(wù)器宕機最主要的原因是編寫SQL查詢性能很差,真的是這樣嗎?如果不是究竟又是何原因呢?
首先我們要對服務(wù)器宕機事件按表現(xiàn)方式而非導(dǎo)致的原因進行分類。一般來說,“運行環(huán)境”是排名第一的服務(wù)器宕機類別,大約35%的時間屬于這一類。運行環(huán)境可以看作是支持?jǐn)?shù)據(jù)庫服務(wù)器運行的系統(tǒng)和資源集合,包括操作系統(tǒng)、硬件以及網(wǎng)絡(luò)等。性能問題緊隨其后,也是約占35%;然后是復(fù)制;最后剩下的10%包含各種類型的數(shù)據(jù)丟失或損壞,以及其他問題。
我們對服務(wù)器宕機事件按類型進行分類后,才能夠確定了導(dǎo)致這些事件的原因。以下是一些可能引發(fā)服務(wù)器宕機的地方。
1、在運行環(huán)境的問題中,最普遍的問題時磁盤空間耗盡。
2、在性能問題中,最普通的服務(wù)器宕機原因確實是運行很糟糕的SQL,但也不一定都是這個原因,比如也有很多問題時由于服務(wù)器Bug或錯誤的行為導(dǎo)致的。
3、糟糕的Schema和索引設(shè)計是第二大影響性能的問題。
4、復(fù)制問題通常由于主備數(shù)據(jù)不一致導(dǎo)致。
5、數(shù)據(jù)丟失問題通常由于drop table的錯誤操作導(dǎo)致,并總是便隨著缺少可用備份的問題。