亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

簡(jiǎn)單了解MYSQL數(shù)據(jù)庫(kù)優(yōu)化階段

瀏覽:31日期:2023-10-15 16:15:54

引言

大家在面試的時(shí)候,是否遭遇過(guò),面試官詢問(wèn)

你們是如何進(jìn)行數(shù)據(jù)庫(kù)優(yōu)化的?

那這個(gè)問(wèn)題應(yīng)該怎么答呢?其實(shí)寫(xiě)這個(gè)題材的原因是我這幾天看到各公眾號(hào)轉(zhuǎn)的一篇數(shù)據(jù)庫(kù)調(diào)優(yōu)的知識(shí)(不上鏈接了),我就稍微翻了幾下,上面動(dòng)不動(dòng)就來(lái)說(shuō)要對(duì)數(shù)據(jù)庫(kù)進(jìn)行水平拆分,我就想反問(wèn)各位讀者,你們幾個(gè)人經(jīng)歷過(guò)水平拆分?現(xiàn)在很多文章,實(shí)踐性實(shí)在太差,只能說(shuō)純理論分析。

這篇文章最早來(lái)自知乎的一個(gè)提問(wèn),我在其基礎(chǔ)上完善了一下。

第一階段 優(yōu)化sql和索引

這才是調(diào)優(yōu)的第一階段啊,為什么呢?

因?yàn)檫@一步成本最低啊,不需要加什么中間件。你沒(méi)經(jīng)過(guò)索引優(yōu)化和SQL優(yōu)化,就來(lái)什么水平拆分,這不是坑人么。

那步驟是什么樣呢?我說(shuō)個(gè)大概

(1)用慢查詢?nèi)罩径ㄎ粓?zhí)行效率低的SQL語(yǔ)句

(2)用explain分析SQL的執(zhí)行計(jì)劃

(3)確定問(wèn)題,采取相應(yīng)的優(yōu)化措施,建立索引啊,等

我就不舉例了,因?yàn)槿绾蝺?yōu)化SQL的文章,一抓一大把,再貼過(guò)來(lái),讀者看著也累。

第二階段 搭建緩存

在優(yōu)化sql無(wú)法解決問(wèn)題的情況下,才考慮搭建緩存。畢竟你使用緩存的目的,就是將復(fù)雜的、耗時(shí)的、不常變的執(zhí)行結(jié)果緩存起來(lái),降低數(shù)據(jù)庫(kù)的資源消耗。

這里需要注意的是:搭建緩存后,系統(tǒng)的復(fù)雜性增加了。你需要考慮很多問(wèn)題,比如:

緩存和數(shù)據(jù)庫(kù)一致性問(wèn)題?(比如是更緩存,還是刪緩存),這點(diǎn)可以看我的一篇文章《數(shù)據(jù)庫(kù)和緩存雙寫(xiě)一致性方案解析》。緩存擊穿、緩存穿透、緩存雪崩問(wèn)題如何解決?是否有做緩存預(yù)熱的必要。不過(guò)我猜,大部分中小公司應(yīng)該都沒(méi)考慮。

第三階段 讀寫(xiě)分離

緩存也搞不定的情況下,搞主從復(fù)制,上讀寫(xiě)分離。在應(yīng)用層,區(qū)分讀寫(xiě)請(qǐng)求。或者利用現(xiàn)成的中間件mycat或者altas等做讀寫(xiě)分離。

需要注意的是,只要你敢說(shuō)你用了主從架構(gòu),有三個(gè)問(wèn)題,你要準(zhǔn)備:

(1)主從的好處?

回答:實(shí)現(xiàn)數(shù)據(jù)庫(kù)備份,實(shí)現(xiàn)數(shù)據(jù)庫(kù)負(fù)載均衡,提交數(shù)據(jù)庫(kù)可用性

(2)主從的原理?

回答:如圖所示(圖片不是自己畫(huà)的,偷懶了)

簡(jiǎn)單了解MYSQL數(shù)據(jù)庫(kù)優(yōu)化階段

主庫(kù)有一個(gè)log dump線程,將binlog傳給從庫(kù)

從庫(kù)有兩個(gè)線程,一個(gè)I/O線程,一個(gè)SQL線程,I/O線程讀取主庫(kù)傳過(guò)來(lái)的binlog內(nèi)容并寫(xiě)入到relay log,SQL線程從relay log里面讀取內(nèi)容,寫(xiě)入從庫(kù)的數(shù)據(jù)庫(kù)。

(3)如何解決主從一致性?

回答:這個(gè)問(wèn)題,我不建議在數(shù)據(jù)庫(kù)層面解決該問(wèn)題。根據(jù)CAP定理,主從架構(gòu)本來(lái)就是一種高可用架構(gòu),是無(wú)法滿足一致性的哪怕你采用同步復(fù)制模式或者半同步復(fù)制模式,都是弱一致性,并不是強(qiáng)一致性。所以,推薦還是利用緩存,來(lái)解決該問(wèn)題。

步驟如下:

1、自己通過(guò)測(cè)試,計(jì)算主從延遲時(shí)間,建議mysql版本為5.7以后,因?yàn)閙ysql自5.7開(kāi)始,多線程復(fù)制功能比較完善,一般能保證延遲在1s內(nèi)。不過(guò)話說(shuō)回來(lái),mysql現(xiàn)在都出到8.x了,還有人用5.x的版本么。

2、數(shù)據(jù)庫(kù)的寫(xiě)操作,先寫(xiě)數(shù)據(jù)庫(kù),再寫(xiě)cache,但是有效期很短,就比主從延時(shí)的時(shí)間稍微長(zhǎng)一點(diǎn)。

3、讀請(qǐng)求的時(shí)候,先讀緩存,緩存不存在(這時(shí)主從同步已經(jīng)完成),再讀數(shù)據(jù)庫(kù)。

第四階段 利用分區(qū)表

說(shuō)句實(shí)在話,你們面試的時(shí)候,其實(shí)可以略過(guò)這個(gè)階段。因?yàn)楹芏嗷ヂ?lián)網(wǎng)公司都不建議用分區(qū)表,我自己也不太建議用分區(qū)表,采用這個(gè)分區(qū)表,坑太多。

這里引用一下其他文章的回答:

什么是mysql的分區(qū)表?

回答:所有數(shù)據(jù)還在一個(gè)表中,但物理存儲(chǔ)根據(jù)一定的規(guī)則放在不同的文件中。這個(gè)是mysql支持的功能,業(yè)務(wù)代碼不需要改動(dòng),

但是sql語(yǔ)句需要改動(dòng),sql條件需要帶上分區(qū)的列。

缺點(diǎn)

(1)分區(qū)鍵設(shè)計(jì)不太靈活,如果不走分區(qū)鍵,很容易出現(xiàn)全表鎖

(2)在分區(qū)表使用ALTER TABLE … ORDER BY,只能在每個(gè)分區(qū)內(nèi)進(jìn)行order by。

(3)分區(qū)表的分區(qū)鍵創(chuàng)建索引,那么這個(gè)索引也將被分區(qū)。分區(qū)鍵沒(méi)有全局索引一說(shuō)。

(4)自己分庫(kù)分表,自己掌控業(yè)務(wù)場(chǎng)景與訪問(wèn)模式,可控。分區(qū)表,研發(fā)寫(xiě)了一個(gè)sql,都不確定該去哪個(gè)分區(qū)查,不太可控。...不列舉了,不推薦

第五階段 垂直拆分

上面四個(gè)階段都沒(méi)搞定,就來(lái)垂直拆分了。垂直拆分的復(fù)雜度還是比水平拆分小的。將你的表,按模塊拆分為不同的小表。大家應(yīng)該都看過(guò)《大型網(wǎng)站架構(gòu)演變之路》,這種類型的文章或者書(shū)籍,基本都有提到這一階段。如果你有幸能夠在什么運(yùn)營(yíng)商、銀行等公司上班,你會(huì)發(fā)現(xiàn)他們一個(gè)表,幾百個(gè)字段都是很常見(jiàn)的事情。所以,應(yīng)該要進(jìn)行拆分,拆分原則一般是如下三點(diǎn):

(1)把不常用的字段單獨(dú)放在一張表。

(2)把常用的字段單獨(dú)放一張表

(3)經(jīng)常組合查詢的列放在一張表中(聯(lián)合索引)。

第六階段 水平拆分

OK,水平拆分是最麻煩的一個(gè)階段,拆分后會(huì)有很多的問(wèn)題,我再?gòu)?qiáng)調(diào)一次,水平拆分一定是最最最最后的選擇。從某種意義上,我覺(jué)得還不如垂直拆分。因?yàn)槟阌么怪辈鸱郑殖刹煌K后,發(fā)現(xiàn)單模塊的壓力過(guò)大,你完全可以給該模塊單獨(dú)做優(yōu)化,例如提高該模塊的機(jī)器配置等。如果是水平拆分,拆成兩張表,代碼需要變動(dòng),然后發(fā)現(xiàn)兩張表還不行,再變代碼,再拆成三張表的?水平拆分模塊間耦合性太強(qiáng),成本太大,不是特別推薦。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 特黄特黄一级高清免费大片 | 色老头一级毛片 | 九九操视频 | 1024cc香蕉在线观看播放中文看 | 成人国产午夜在线视频 | 国产免费高清mv视频在线观看 | 欧美一级黄色片免费看 | 国产制服丝袜在线 | 中文在线观看视频 | 国产露脸国语对白在线 | www.日日爱| 免费一级黄色录像 | cijilu刺激 国产免费的 | 欧美综合亚洲 | 色婷婷激婷婷深爱五月老司机 | 国产精品aaa | 国产高清japanese国产在线观看 | 国产麻豆剧传媒精品网站 | 国产线路 中文字幕 | 亚洲日本黄色 | 久久精品国产74国产 | 亚洲综合色就色手机在线观看 | chinese国产hdsex水滴 | 中文字幕无线码欧美成人 | 国产成人精品亚洲一区 | 在线亚洲欧美日韩 | 亚洲线精品一区二区三区 | 精品一区二区三区水蜜桃 | 麻豆国产高清在线播放 | 午夜成年免费观看视频 | 国产日韩欧美视频在线观看 | 国产成人啪精品午夜在线播放 | 日韩美女专区中文字幕 | 在线播放日本爽快片 | 中文字幕在线精品视频万部 | 亚洲第一区在线 | 亚洲欧美中日韩中文字幕 | 在线一区视频 | 在线看日本a毛片 | 日日摸夜夜添夜夜添欧美毛片 | 国产成人综合久久精品亚洲 |