日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql 表与表之间的条件比对_Mysql分库分表面试题(mysql高可用方案解析)

發(fā)布時(shí)間:2025/3/15 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 表与表之间的条件比对_Mysql分库分表面试题(mysql高可用方案解析) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)大的系統(tǒng)架構(gòu)-mysql分庫(kù)分表高可用

如果當(dāng)你的數(shù)據(jù)量達(dá)到千萬(wàn)級(jí),億級(jí)的時(shí)候,我們用常規(guī)的方式去做優(yōu)化那么效果可能就不是很好了。這已經(jīng)不是說(shuō)性能的問(wèn)題了,而是數(shù)據(jù)量響應(yīng)的處理問(wèn)題了,所以我們需要針對(duì)根本的問(wèn)題去使用對(duì)應(yīng)的技術(shù)去進(jìn)行徹底的解決

如果對(duì)于這塊技術(shù)內(nèi)容不是很熟悉的話,或者沒(méi)有去真正接觸到這樣的一個(gè)大項(xiàng)目實(shí)戰(zhàn),那么你在面試的時(shí)候你可能就只能答出一些技術(shù)名詞來(lái)了,而有一些解決方案,細(xì)節(jié)問(wèn)題你可能就答不上來(lái)了,可能你就嗝屁了。

1.目前準(zhǔn)備做數(shù)據(jù)庫(kù)水平切分,需要注意什么關(guān)鍵問(wèn)題?目前了解需要避免跨庫(kù)事務(wù)。

答:(1)需要注意分庫(kù)patition key的選取,要保證兩個(gè)均衡:數(shù)據(jù)量的均衡,請(qǐng)求量的均衡。

(2)庫(kù)后,需要注意分之前用SQL滿足的需求是否還能滿足,需要怎么改進(jìn)滿足,例如max, min, avg, sum都需要在服務(wù)層再做一次聚合。

(3)夸庫(kù)事務(wù),分布式事務(wù),在吞吐量是主要矛盾的互聯(lián)網(wǎng)場(chǎng)景,目前沒(méi)有能夠很好解決的方案,盡量避免。

2.如果分庫(kù)分表的情況下碰到要對(duì)一個(gè)表或多個(gè)表關(guān)聯(lián)并且按多個(gè)字段為條件進(jìn)行檢索的情況下怎么辦呢?

答:分庫(kù)后join怎么辦:

(1)前端用戶側(cè)業(yè)務(wù),流量大,并發(fā)大,join真的很少,58同城用戶庫(kù)幾億數(shù)據(jù),帖子庫(kù)300億數(shù)據(jù),沒(méi)有join。

(2)如果真要join,分庫(kù)后冗余數(shù)據(jù)、索引表、分頁(yè),for循環(huán)低效查詢 -> 總能解決的,只是看性能是不是主要矛盾、一致性是不是主要矛盾了。

(3)拆成小sql是互聯(lián)網(wǎng)的玩法,互聯(lián)網(wǎng)很少用join、子查詢、視圖、外鍵、用戶自定義函數(shù)、存儲(chǔ)過(guò)程的。當(dāng)然,我指面向用戶側(cè)的高并發(fā)業(yè)務(wù)。

如果你對(duì)于索引的優(yōu)化還不是非常了解的話,也可以看看以下我整理的mysql索引面試題

IT架構(gòu)師luke:Mysql索引面試題(精品)?zhuanlan.zhihu.com

3.采用hash取模方式的表擴(kuò)容策略及采用一致性hash分表的表擴(kuò)容策略如何實(shí)現(xiàn)?

答:數(shù)據(jù)庫(kù)水平切分的方式,常用的有兩種:

(1)hash取模:user_id%2=0為0庫(kù),user_id%2=1為1庫(kù)。

(2)數(shù)據(jù)分段:user_id屬于[0, 1億]為0庫(kù),屬于[1億, 2億]為2庫(kù)。

方案一

優(yōu)點(diǎn):簡(jiǎn)單、數(shù)據(jù)均衡、負(fù)載均衡。

缺點(diǎn):擴(kuò)容困難,要遷移數(shù)據(jù),%2變%3麻煩。

方案二

優(yōu)點(diǎn):簡(jiǎn)單、數(shù)據(jù)均衡、擴(kuò)容簡(jiǎn)單。

缺點(diǎn):負(fù)載不均衡,大號(hào)段的庫(kù)往往壓力更大。

大部分互聯(lián)網(wǎng)公司使用方案一。

4.設(shè)定網(wǎng)站用戶數(shù)量在千萬(wàn)級(jí),但是活躍用戶數(shù)量只有1%,如何通過(guò)優(yōu)化數(shù)據(jù)庫(kù)提高活躍用戶訪問(wèn)速度?

答:(1)可以使用MySQL的分區(qū),把活躍用戶分在一個(gè)區(qū),不活躍用戶分在另外一個(gè)區(qū),本身活躍用戶區(qū)數(shù)據(jù)量比較少,因此可以提高活躍用戶訪問(wèn)速度。
(2)還可以水平分表,把活躍用戶分在一張表,不活躍用戶分在另一張表,可以提高活躍用戶訪問(wèn)速度。

5.分庫(kù)分表之后,id 主鍵如何處理

(1)數(shù)據(jù)庫(kù)自增 id

這個(gè)就是說(shuō)你的系統(tǒng)里每次得到一個(gè) id,都是往一個(gè)庫(kù)的一個(gè)表里插入一條沒(méi)什么業(yè)務(wù)含義的數(shù)據(jù),然后獲取一個(gè)數(shù)據(jù)庫(kù)自增的一個(gè) id。拿到這個(gè) id 之后再往對(duì)應(yīng)的分庫(kù)分表里去寫入。

(2)設(shè)置數(shù)據(jù)庫(kù) sequence 或者表自增字段步長(zhǎng)

可以通過(guò)設(shè)置數(shù)據(jù)庫(kù) sequence 或者表的自增字段步長(zhǎng)來(lái)進(jìn)行水平伸縮。

6.現(xiàn)在有一個(gè)未分庫(kù)分表的系統(tǒng),未來(lái)要分庫(kù)分表,如何設(shè)計(jì)才可以讓系統(tǒng)從未分庫(kù)分表動(dòng)態(tài)切換到分庫(kù)分表上?

答:雙寫遷移方案。同時(shí)寫倆庫(kù),老庫(kù)和新庫(kù)。然后系統(tǒng)部署之后,新庫(kù)數(shù)據(jù)差太遠(yuǎn),用之前說(shuō)的導(dǎo)數(shù)工具,跑起來(lái)讀老庫(kù)數(shù)據(jù)寫新庫(kù),寫的時(shí)候要根據(jù) gmt_modified 這類字段判斷這條數(shù)據(jù)最后修改的時(shí)間,除非是讀出來(lái)的數(shù)據(jù)在新庫(kù)里沒(méi)有,或者是比新庫(kù)的數(shù)據(jù)新才會(huì)寫。導(dǎo)完一輪之后,有可能數(shù)據(jù)還是存在不一致,那么就程序自動(dòng)做一輪校驗(yàn),比對(duì)新老庫(kù)每個(gè)表的每條數(shù)據(jù),接著如果有不一樣的,就針對(duì)那些不一樣的,從老庫(kù)讀數(shù)據(jù)再次寫。反復(fù)循環(huán),直到兩個(gè)庫(kù)每個(gè)表的數(shù)據(jù)都完全一致為止。

7.你們具體是如何對(duì)數(shù)據(jù)庫(kù)如何進(jìn)行垂直拆分或水平拆分的?

一般來(lái)說(shuō),垂直拆分,你可以在表層面來(lái)做,對(duì)一些字段特別多的表做一下拆分;水平拆分,你可以說(shuō)是并發(fā)承載不了,或者是數(shù)據(jù)量太大,容量承載不了,拆了,按什么字段來(lái)拆。分表,你如果哪怕是拆到每個(gè)庫(kù)里去,并發(fā)和容量都o(jì)k了,但是每個(gè)庫(kù)的表還是太大了,那么你就分表,將這個(gè)表分開(kāi),保證每個(gè)表的數(shù)據(jù)量并不是很大。

8.分庫(kù)分表的拆分方式有?他們分別主要解決什么問(wèn)題?

(1)水平切分,主要解決單表過(guò)大造成的性能問(wèn)題,單表過(guò)大造成的單服務(wù)器空間問(wèn)題。

(2)垂直切分,主要解決表與表之間資源爭(zhēng)用問(wèn)題,鎖爭(zhēng)用機(jī)率小,實(shí)現(xiàn)核心與非核心的分級(jí)存儲(chǔ),如UDB登陸庫(kù)拆分成一級(jí)二級(jí)三級(jí)庫(kù),數(shù)據(jù)庫(kù)同步壓力問(wèn)題。

如果你喜歡我寫的技術(shù)文章以及面試總結(jié),歡迎關(guān)注收看我的視頻,并且點(diǎn)贊、收藏、關(guān)注我哦。

IT架構(gòu)師luke:Redis面試題(BAT大廠真題)?zhuanlan.zhihu.com

我是luke,感謝你的關(guān)注!

IT架構(gòu)師luke:laravel面試題(全網(wǎng)最全必考面試題)?zhuanlan.zhihu.comIT架構(gòu)師luke:分布式消息中間件-RabbitMQ面試題(必問(wèn))?zhuanlan.zhihu.com

據(jù)說(shuō)點(diǎn)贊,喜歡,收藏了的小伙伴面試必過(guò),拿到心儀offer!

面試系列文章,視頻,簡(jiǎn)歷集體上線,距離漲薪,心儀offer就差一步,你還在等什么?

知乎視頻?www.zhihu.com

總結(jié)

以上是生活随笔為你收集整理的mysql 表与表之间的条件比对_Mysql分库分表面试题(mysql高可用方案解析)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。