您好,登錄后才能下訂單哦!
下面一起來了解下解決MySQL高并發(fā)的一些方案,相信大家看完肯定會(huì)受益匪淺,文字在精不在多,希望解決MySQL高并發(fā)的一些方案這篇短內(nèi)容是你想要的。
一、判斷大型網(wǎng)站的標(biāo)準(zhǔn):
1.pv(page views)網(wǎng)頁(yè)的瀏覽量:一個(gè)網(wǎng)站所有的頁(yè)面,在24小時(shí)內(nèi)被訪問的總的次數(shù)。千萬級(jí)別,百萬級(jí)別,
2、uv值(unique vistor)獨(dú)立訪客:一個(gè)網(wǎng)站,在24小時(shí)內(nèi),有多少個(gè)用戶來訪問我們的網(wǎng)站。達(dá)到10萬
3、獨(dú)立ip(重點(diǎn)內(nèi)容):一個(gè)網(wǎng)站,在24小時(shí)內(nèi),有多少個(gè)ip來訪問我們的網(wǎng)站。
uv值約等于獨(dú)立ip.如果要考慮局域網(wǎng),uv值略大于獨(dú)立ip
二、大型網(wǎng)站帶來的一些問題
1、大的并發(fā)。
并發(fā)量:在同一時(shí)間點(diǎn)(1秒內(nèi)),有多少個(gè)用戶同時(shí)訪問我們的網(wǎng)站。對(duì)同一個(gè)網(wǎng)址,同時(shí)刷新瀏覽器。達(dá)到500,就非常大了。
假如并發(fā)量是500,pv值是多少。500*3600*10=18000000
2、大流量。
網(wǎng)站需要的大的帶寬。10g.
3、大的存儲(chǔ)。
網(wǎng)站中的數(shù)據(jù)庫(kù),表的容量成海量趨勢(shì),gt級(jí)別,如何快速的查找出想要的數(shù)據(jù)。
三、大并發(fā)的解決方案:
1、負(fù)載均衡器:
硬件:f5-bigip 性能比較好,立竿見影,價(jià)格昂貴,一般適合于大型網(wǎng)站公司,網(wǎng)游公司。
軟件:
lvs(linux virtual server)linux虛擬服務(wù),加入到linux的內(nèi)核中。
nginx:可以做web服務(wù)器(apache),還可以做負(fù)載均衡。
3、集群:
主要是解決計(jì)算機(jī)單點(diǎn)故障,在一個(gè)集群中的計(jì)算機(jī),只有一臺(tái)計(jì)算機(jī)工作,其他計(jì)算機(jī)處于休眠狀態(tài),監(jiān)視正在工作的計(jì)算機(jī),當(dāng)正在工作的計(jì)算機(jī)出現(xiàn)問題,則休眠的計(jì)算機(jī)立刻接替工作。
擴(kuò)展:
單點(diǎn)故障(英語(yǔ):single point of failure,縮寫spof)是指系統(tǒng)中一點(diǎn)失效,就會(huì)讓整個(gè)系統(tǒng)無法運(yùn)作的部件,換句話說,單點(diǎn)故障即會(huì)整體故障。
四、大流量解決方案:
1、防止我們的網(wǎng)站資源被盜鏈:可以采用一些非技術(shù)手段防止被盜鏈,在圖片上添加水印
2、減少http請(qǐng)求:主要手段就是合并js文件,css文件,背景圖片的文件。將瀏覽器需要的樣式文件或者js文件,合并成一個(gè)樣式文件或js文件。比如通過背景圖片舉個(gè)例子,就是將一些icons圖標(biāo)將其弄在一個(gè)大的背景圖上,通過位置截取某icons圖標(biāo)。
3、啟用壓縮:減少數(shù)據(jù)傳輸?shù)臄?shù)據(jù)量,常見的壓縮格式是:gzip,deflate.
4、通過瀏覽器緩存數(shù)據(jù)內(nèi)容:在網(wǎng)站中有一些資源,比如js文件,css文件,一些圖片文件,更新的頻率比較少。通過個(gè)設(shè)置http的cache-control expires屬性來進(jìn)行設(shè)置緩存,可以設(shè)置緩存的文件類型,設(shè)置緩存的緩存周期
5、可以把比較占用流量的一些資源,單獨(dú)組建一個(gè)服務(wù)器:比如圖片服務(wù)器,視頻服務(wù)器等。
五、大存儲(chǔ)解決方案:
1、緩存技術(shù):
通過緩存技術(shù),達(dá)到不查詢數(shù)據(jù)庫(kù)或者少查詢數(shù)據(jù)庫(kù)的目的。
計(jì)算機(jī)的訪問速度,內(nèi)存》硬盤文件》數(shù)據(jù)庫(kù)
緩存技術(shù)主要有:
磁盤緩存(頁(yè)面靜態(tài)化),把一個(gè)查詢數(shù)據(jù)庫(kù)的頁(yè)面變成一個(gè)不查詢數(shù)據(jù)庫(kù)的頁(yè)面
內(nèi)存緩存:把經(jīng)常查詢的數(shù)據(jù)保存到內(nèi)存里面,下次查詢數(shù)據(jù)時(shí)候直接在 內(nèi)存里面查詢。
(memcache/redis/mysql的memory引擎)
2、在設(shè)計(jì)表的時(shí)候,要滿足3范式:
第一范式是:原子性,字段不能再分割了。只要是關(guān)系型數(shù)據(jù)庫(kù)就自動(dòng)滿足第一范式:
數(shù)據(jù)庫(kù)的分類:
關(guān)系型數(shù)據(jù)庫(kù):有行和 列的概念,二維表格。常見的關(guān)系型數(shù)據(jù)庫(kù):mysql,sql server,oracle,db2
非關(guān)系型數(shù)據(jù)庫(kù)(nosql)面向集合和 文檔的,沒有行和列的概念常見的有redis/mongodb等
第二范式:在一個(gè)表中不能有完全相同的記錄。可以通過設(shè)置一個(gè)主鍵
第三范式:表中的字段不能冗余存儲(chǔ)
3、要給表添加適當(dāng)?shù)乃饕核饕浅V匾?,可以提高查詢速度?/span>
常見索引有:主鍵索引,唯一索引,普通索引,全文索引
4、要?jiǎng)?chuàng)建適當(dāng)?shù)拇鎯?chǔ)過程,函數(shù),觸發(fā)器等。
5、讀寫分離(主從服務(wù)器)
6、分表技術(shù)(垂直分割和水平分割)
7、分區(qū)技術(shù):把一個(gè)表的數(shù)據(jù)內(nèi)容,在不同的區(qū)域存儲(chǔ)
8、升級(jí)mysql服務(wù)器(添加配置:加大內(nèi)容,64位)
9**、要對(duì)sql語(yǔ)句進(jìn)行調(diào)優(yōu)**:select * from tablename 該語(yǔ)句不要使用,要按需查詢。需要哪個(gè)字段的數(shù)據(jù),就查詢哪個(gè)字段的數(shù)據(jù)
10、對(duì)配置文件進(jìn)行優(yōu)化配置
比如配置mysql數(shù)據(jù)庫(kù)的并發(fā)量:在mysql配置文件my.ini中找到 max_connections=100這個(gè)值可以調(diào)控mysql的并發(fā)量。
看完解決MySQL高并發(fā)的一些方案這篇文章后,很多讀者朋友肯定會(huì)想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。