影響MySQL的性能因素
1、業(yè)務(wù)需求對(duì)mysql的影響(合適合度)
- 例如: 買家賣家評(píng)論帖子實(shí)時(shí)統(tǒng)計(jì)返干??血淌?
-
要求:
- 統(tǒng)計(jì)對(duì)該產(chǎn)品的評(píng)價(jià)帖子矩欠,要實(shí)時(shí)的!
-
問(wèn)題
- 假如這個(gè)數(shù)據(jù)量很小OK悠夯,可以實(shí)時(shí)查詢癌淮,假如越來(lái)越多,積累了好多萬(wàn)客戶評(píng)論帖子
- 1 select count(*)對(duì)于剛開始數(shù)量很小時(shí)可以沦补,如果數(shù)據(jù)增大已經(jīng)有千萬(wàn)級(jí)的乳蓄,一個(gè)查詢就哭吧,成為系統(tǒng)性能瓶頸夕膀。
- 2 你正在統(tǒng)計(jì)時(shí)候也有買家賣家修改增刪評(píng)論虚倒,你不能要求用戶說(shuō)我統(tǒng)計(jì)的時(shí)候你們不許動(dòng)
-
解決
- 單獨(dú)一個(gè)表,單獨(dú)一個(gè)字段來(lái)保存這個(gè)帖子數(shù)目。 每一個(gè)買家新增一條評(píng)論就是需要更新一個(gè)這個(gè)數(shù)字,各買家是多個(gè)(高并發(fā))不定時(shí)的在發(fā)布帖子,實(shí)時(shí)修改更新后再統(tǒng)計(jì)select count(*)势木。 就算我們使用的是Innodb存儲(chǔ)引擎,一個(gè)update數(shù)字他就是行鎖,高并發(fā)的瓶頸出現(xiàn)了
-
結(jié)論
- 很多的統(tǒng)計(jì)信息都是準(zhǔn)實(shí)時(shí)的而不是實(shí)時(shí)統(tǒng)計(jì)耻煤,網(wǎng)站的一些數(shù)量信息、分頁(yè)信息擦囊、排序信息违霞、點(diǎn)擊率信息等等一般都不是實(shí)時(shí)的而是準(zhǔn)實(shí)時(shí)的。攜程網(wǎng)絡(luò)訂機(jī)票看看瞬场。
-
要求:
2买鸽、存儲(chǔ)定位對(duì)MySQL的影響
-
不適合放進(jìn)mysql的數(shù)據(jù)
- 二進(jìn)制多媒體數(shù)據(jù)
- 流水隊(duì)列數(shù)據(jù)
- 超大文本數(shù)據(jù)
-
需要放進(jìn)緩存的數(shù)據(jù)
- 系統(tǒng)各種配置及規(guī)則數(shù)據(jù)
- 活躍用戶的基本信息數(shù)據(jù)
- 活躍用戶的個(gè)性化定制信息數(shù)據(jù)
- 準(zhǔn)實(shí)時(shí)的統(tǒng)計(jì)信息數(shù)據(jù)
- 其他一些訪問(wèn)頻繁但變更較少的數(shù)據(jù)
3、Schema設(shè)計(jì)對(duì)系統(tǒng)的性能影響
- 盡量減少對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的請(qǐng)求
- 盡量減少無(wú)用數(shù)據(jù)的查詢請(qǐng)求
- p2p中user_main和我的賬戶金額冗余問(wèn)題(user_main表信息中冗余部分金額信息)
4贯被、硬件環(huán)境對(duì)系統(tǒng)性能的影響
-
典型OLTP應(yīng)用系統(tǒng)
- 什么是OLTP:OLTP即聯(lián)機(jī)事務(wù)處理眼五,就是我們經(jīng)常說(shuō)的關(guān)系數(shù)據(jù)庫(kù),意即記錄即時(shí)的增彤灶、刪看幼、改、查幌陕,就是我們經(jīng)常應(yīng)用的東西诵姜,這是數(shù)據(jù)庫(kù)的基礎(chǔ)
- 對(duì)于各種數(shù)據(jù)庫(kù)系統(tǒng)環(huán)境中大家最常見的OLTP系統(tǒng),其特點(diǎn)是并發(fā)量大搏熄,整體數(shù)據(jù)量比較多棚唆,但每次訪問(wèn)的數(shù)據(jù)比較少暇赤,且訪問(wèn)的數(shù)據(jù)比較離散,活躍數(shù)據(jù)占總體數(shù)據(jù)的比例不是太大宵凌。對(duì)于這類系統(tǒng)的數(shù)據(jù)庫(kù)實(shí)際上是最難維護(hù)鞋囊,最難以優(yōu)化的,對(duì)主機(jī)整體性能要求也是最高的瞎惫。因?yàn)椴粌H訪問(wèn)量很高溜腐,數(shù)據(jù)量也不小。
- 針對(duì)上面的這些特點(diǎn)和分析瓜喇,我們可以對(duì)OLTP的得出一個(gè)大致的方向挺益。
- 雖然系統(tǒng)總體數(shù)據(jù)量較大,但是系統(tǒng)活躍數(shù)據(jù)在數(shù)據(jù)總量中所占的比例不大欠橘,那么我們可以通過(guò)擴(kuò)大內(nèi)存容量來(lái)盡可能多的將活躍數(shù)據(jù)cache到內(nèi)存中矩肩;
- 雖然IO訪問(wèn)非常頻繁现恼,但是每次訪問(wèn)的數(shù)據(jù)量較少且很離散肃续,那么我們對(duì)磁盤存儲(chǔ)的要求是IOPS表現(xiàn)要很好,吞吐量是次要因素叉袍;
- 并發(fā)量很高始锚,CPU每秒所要處理的請(qǐng)求自然也就很多,所以CPU處理能力需要比較強(qiáng)勁喳逛;
- 雖然與客戶端的每次交互的數(shù)據(jù)量并不是特別大瞧捌,但是網(wǎng)絡(luò)交互非常頻繁,所以主機(jī)與客戶端交互的網(wǎng)絡(luò)設(shè)備對(duì)流量能力也要求不能太弱润文。
-
典型OLAP應(yīng)用系統(tǒng)
- 用于數(shù)據(jù)分析的OLAP系統(tǒng)的主要特點(diǎn)就是數(shù)據(jù)量非常大姐呐,并發(fā)訪問(wèn)不多,但每次訪問(wèn)所需要檢索的數(shù)據(jù)量都比較多典蝌,而且數(shù)據(jù)訪問(wèn)相對(duì)較為集中曙砂,沒(méi)有太明顯的活躍數(shù)據(jù)概念。
- 什么是OLAP:OLAP即聯(lián)機(jī)分析處理骏掀,是數(shù)據(jù)倉(cāng)庫(kù)的核心部心鸠澈,所謂數(shù)據(jù)倉(cāng)庫(kù)是對(duì)于大量已經(jīng)由OLTP形成的數(shù)據(jù)的一種分析型的數(shù)據(jù)庫(kù),用于處理商業(yè)智能截驮、決策支持等重要的決策信息笑陈;數(shù)據(jù)倉(cāng)庫(kù)是在數(shù)據(jù)庫(kù)應(yīng)用到一定程序之后而對(duì)歷史數(shù)據(jù)的加工與分析
- 基于OLAP系統(tǒng)的各種特點(diǎn)和相應(yīng)的分析,針對(duì)OLAP系統(tǒng)硬件優(yōu)化的大致策略如下:
- 數(shù)據(jù)量非常大葵袭,所以磁盤存儲(chǔ)系統(tǒng)的單位容量需要盡量大一些涵妥;
- 單次訪問(wèn)數(shù)據(jù)量較大,而且訪問(wèn)數(shù)據(jù)比較集中坡锡,那么對(duì)IO系統(tǒng)的性能要求是需要有盡可能大的每秒IO吞吐量蓬网,所以應(yīng)該選用每秒吞吐量盡可能大的磁盤块请;
- 雖然IO性能要求也比較高,但是并發(fā)請(qǐng)求較少拳缠,所以CPU處理能力較難成為性能瓶頸墩新,所以CPU處理能力沒(méi)有太苛刻的要求;
- 雖然每次請(qǐng)求的訪問(wèn)量很大窟坐,但是執(zhí)行過(guò)程中的數(shù)據(jù)大都不會(huì)返回給客戶端海渊,最終返回給客戶端的數(shù)據(jù)量都較小,所以和客戶端交互的網(wǎng)絡(luò)設(shè)備要求并不是太高哲鸳;
- 此外臣疑,由于OLAP系統(tǒng)由于其每次運(yùn)算過(guò)程較長(zhǎng),可以很好的并行化徙菠,所以一般的OLAP系統(tǒng)都是由多臺(tái)主機(jī)構(gòu)成的一個(gè)集群讯沈,而集群中主機(jī)與主機(jī)之間的數(shù)據(jù)交互量一般來(lái)說(shuō)都是非常大的,所以在集群中主機(jī)之間的網(wǎng)絡(luò)設(shè)備要求很高婿奔。