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