国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想

這篇具有很好參考價值的文章主要介紹了架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

大家好,我是sulny_ann,這期想跟大家分享一下我之前在面試?yán)锩鎲栠^比較難的數(shù)據(jù)庫相關(guān)的問題。

大家經(jīng)常也在調(diào)侃后端好像就是技術(shù)數(shù)據(jù)庫的增刪改查,所以作為后端開發(fā),你對應(yīng)數(shù)據(jù)庫這一塊掌握的怎么樣,是非常能看出你整個開發(fā)的技術(shù)能力水平。

接下來就分享 3 個我之前問到的關(guān)于數(shù)據(jù)庫的 3 個問題。

第一個問題就是如果一個事務(wù)當(dāng)中有更新操作,也有查詢操作,那我是先更新好呢?還是先查詢好?

很多小伙伴一聽到這個問題不知道我想考啥,我印象比較深刻就是這個候選人他還是比較聰明的,他還先問我一下,你這個更新操作依不依賴這個查詢的操作。我也提示了這兩個是沒有什么依賴關(guān)系的,所以這里我的重點是開啟了一個事物,那對于事物它肯定是要消耗資源的,那消耗的資源有哪些東西?

?文章來源地址http://www.zghlxwxcb.cn/news/detail-687937.html

架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想

?

?

有連接池,還有底層的鎖,那大家想一下,更新它可能是會持有什么鎖呢?有可能是行鎖,也有可能是間隙鎖,甚至可能是表鎖。那既然這個事物加鎖,那其他的事物只能在這些資源上去做一個等待,這就可能降低整個數(shù)據(jù)庫的并發(fā)性能。

?

?

架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想

?

?

所以這個問題應(yīng)該怎么去回答呢?其實在大部分的情況就應(yīng)該先去查詢,再去更新,但這里的查詢默認(rèn)是不會去加鎖的。如果先更新,再去查詢,如果這個查詢是一個慢SQL,那這個更新操作它持有的資源是會一直阻塞在這里。

?

?

架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想

?

?

那先查詢再更新,那你 select 就算是一個慢SQL,在這個查詢執(zhí)行過程當(dāng)中其實是沒有加鎖的,這能夠一定程度提升整個數(shù)據(jù)庫的并發(fā)能力。我之前在線上確實也做過類似的優(yōu)化,只要把他們執(zhí)行的順序稍微改一下,在一些并發(fā)比較高的接口確實能夠提升很大的性能。

?

?

架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

第二個問題就是我們經(jīng)常在設(shè)計數(shù)據(jù)庫表的時候,經(jīng)常會做一些字段的冗余,你覺得這樣做有什么優(yōu)缺點?

這其實也是非常常見的一種反范式設(shè)計。做字段冗余大部分情況下是為了便于去查詢,例如商品跟店鋪之間的關(guān)系,我可能有一個關(guān)系表,但是我在業(yè)務(wù)上有很多查詢,就是要基于店鋪去查詢他所有的商品,那難道每一次查詢都要去做一個join嗎?或者查兩次嗎?如果說我在商品這個表里面去加一個店鋪的字段,做這么一個字段的冗余就能夠很大程度提升整個查詢的性能。

那做字段冗余有什么缺點嗎?也有就是如果你要去更新這個關(guān)系,你可能要改多個地方,這個就有點類似于緩存的一致性問題,而且這種問題如果在同一個數(shù)據(jù)庫可能還比較好控制,如果是在多個數(shù)據(jù)庫,那你這個風(fēng)險就非常大了。

所以這里你還要看你的業(yè)務(wù)場景,就是查詢的占比比較高,還是寫的占比比較高。如果說是寫的占比比較高,那你這個帶來事物還有不一致的風(fēng)險可能會更大。

?

第三個問題確實也比較有挑戰(zhàn),就是我們的 MySQL 里面的 binlog redolog,哪一個是先產(chǎn)生的?

這個問題大家又覺得我是想問什么東西呢?要回答好這個問題,你首先要知道 binlog 跟 read log 它們分別是用來干嘛的,解決什么問題的。

簡單介紹一下, MySQL 底層其實是分了好幾個結(jié)構(gòu)的,其中有 Server 層,還有 engine 層。?

?

?

架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想

?

?

binlog它就是產(chǎn)生在 Server 層,是用來記錄數(shù)據(jù)庫DML 產(chǎn)生的二進(jìn)制日志,主要是用來做主從主備他們之間的一些數(shù)據(jù)備份。

?

?

架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想

?

?

那 redolog 它是產(chǎn)生在 MySQL 的?engine?層的,主要是用來保證數(shù)據(jù)操作的原子性。那這兩種日志他們其實都有自己的一個緩沖區(qū)。

?

?

架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想

?

?

但是他們持久化一般都是分兩個步驟:先寫在操作系統(tǒng)的內(nèi)核區(qū),再去做一個刷盤操作。

?

架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想

?

?

如果對可行性要求比較高,那我們每次產(chǎn)生事物的時候都是去做一個持久化,但是我們一般情況只會考慮把它刷在操作系統(tǒng)的內(nèi)核層,因為這種情況是性能跟它的數(shù)據(jù)可靠性做一個折中,只要操作系統(tǒng)層面沒有宕機(jī),那這個數(shù)據(jù)一般是不會丟失的。

說到這里我們好像并沒回答這個問題,就是這兩個操作哪個先產(chǎn)生?那這里產(chǎn)生是站在什么角度?是站在磁盤的角度,還是說站在 MySQL 進(jìn)程的角度?如果說是進(jìn)程,他們兩個基本上是同時產(chǎn)生的,但是坐在磁盤的角度,其實redolog 它可能先產(chǎn)生,為什么說是可能呢?因為 binlog 他一定說是事物提交之后才會去做一個持久化。

?

架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想

?

?

但是 Redo log 它其實有多種刷盤的機(jī)制,例如 MySQL 層面,它提供了一個同步的參數(shù),你只要每次事務(wù)都操作,都去做一個提交,這個性能可能是比較差的。

但是它還有另外兩種刷盤的機(jī)制,它默認(rèn)有一個 1 秒鐘去刷新整個內(nèi)核緩沖區(qū)的一個進(jìn)程,那這個時候你就算事務(wù)沒有提交,它也會把緩沖區(qū)的這個redolog進(jìn)行刷盤操作。

?

?

架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想

?

?

那在這個過程當(dāng)中,可能事務(wù)還沒有提交,那 redolog 已經(jīng)放在磁盤上了。

當(dāng)然有些小伙伴可能會覺得如果這個過程當(dāng)中斷電了怎么辦?那會不會有 redolog,然后binlog不一致??這就是 MySQL 它為什么要去實現(xiàn)一個二階段提交這么一個過程,這里時間有限,就不去做過多展開了。

?

架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想

?

?

當(dāng)然不同的 MySQL 它底層的版本參數(shù)也會有一些不一樣,比如說它有些可能還是基于你事物提交多少個它就進(jìn)行一個刷盤,或者中間你可以去設(shè)計一個緩沖區(qū),容量達(dá)到多少它也會進(jìn)行一個強(qiáng)制刷盤。

這個在不同的 MySQL 版本之間,它們的默認(rèn)值,還有這些緩沖區(qū)的參數(shù)可能都不太一樣。然后這里很多同學(xué)可能就會想,我學(xué)這些有什么用,平時在工作當(dāng)中又用不上。

怎么說呢,還是有一定用途的,你會發(fā)現(xiàn)這些很多參數(shù)基本上都是在可用性跟性能之間去做一個選擇,所以如果你在特定的業(yè)務(wù)場景下,你確實是可以在數(shù)據(jù)庫層面去做這么一些調(diào)優(yōu)。這也是為什么很多高級的DBA,他必須要去了解一定的業(yè)務(wù)場景。可能站在開發(fā)的角度就覺得 DBA 你只要管好運(yùn)維就行了,你不用去關(guān)心我的業(yè)務(wù)。那同樣呢,開發(fā)其實也可以去基于你的業(yè)務(wù)場景去反向給 DBA 提供一些建議,可以去調(diào)整哪些參數(shù)?可能在大部分小伙伴的工作環(huán)境下,其實并沒有必要去調(diào)整這些東西,你的業(yè)務(wù)也可以正常的運(yùn)行,所以大家就沒有學(xué)習(xí)這些東西的積極性了。

?但是我認(rèn)為作為后端開發(fā),你還是要去了解底層的一些結(jié)構(gòu)的,這些配置的參數(shù)名你沒必要去記,但是你至少知道大概有這么一個東西,然后用的時候你可以快速的去查,然后學(xué)到這些東西,你還可以把這種比較好的思想應(yīng)用在你的項目實際的工作當(dāng)中,他很多思想跟設(shè)計哲學(xué)其實是可以借鑒過來的,這也是我們對于技術(shù)專家和架構(gòu)師他需要的一個通用能力。

好,這一期就分享我之前在面試當(dāng)中問到這幾個數(shù)據(jù)庫比較復(fù)雜的問題,如果大家認(rèn)為寫的還不錯,也希望大家點贊轉(zhuǎn)發(fā),沒關(guān)注的小伙伴也別忘了關(guān)注下,后面就不會錯過很多技術(shù)的干貨了。

?

到了這里,關(guān)于架構(gòu)師必會之-DBA級問題的數(shù)據(jù)庫底層設(shè)計思想的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 架構(gòu)師必知必會系列:容器安全與容器漏洞管理

    作者:禪與計算機(jī)程序設(shè)計藝術(shù) 容器漏洞是一個敏感的話題。由于容器技術(shù)的普及和社區(qū)成熟,越來越多的企業(yè)、組織將容器技術(shù)作為一種“云”服務(wù)進(jìn)行應(yīng)用部署、運(yùn)維和管理,而容器成為一個“平臺”,其潛在危險性也越來越高。因此,保護(hù)容器環(huán)境免受攻擊并修補(bǔ)漏洞

    2024年02月04日
    瀏覽(16)
  • AI架構(gòu)師必知必會系列:AI與區(qū)塊鏈

    作者:禪與計算機(jī)程序設(shè)計藝術(shù) 人工智能(Artificial Intelligence)或簡稱AI,是近幾年隨著計算能力的提高而被廣泛關(guān)注的一門新興科技。其應(yīng)用范圍涵蓋從計算理論到機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、圖像識別、語音識別、語言處理等各個領(lǐng)域。但由于AI技術(shù)在發(fā)展的過程中還存在一些問

    2024年02月03日
    瀏覽(24)
  • 后端架構(gòu)師必知必會系列:網(wǎng)絡(luò)協(xié)議與通信機(jī)制

    作者:禪與計算機(jī)程序設(shè)計藝術(shù) 隨著互聯(lián)網(wǎng)的普及和互聯(lián)網(wǎng)服務(wù)平臺的崛起,越來越多的人開始了解到網(wǎng)絡(luò)協(xié)議和通信機(jī)制。而作為后端開發(fā)工程師,掌握網(wǎng)絡(luò)協(xié)議、通信機(jī)制對于系統(tǒng)的性能優(yōu)化和網(wǎng)絡(luò)安全來說至關(guān)重要。這幾年,網(wǎng)絡(luò)協(xié)議和通信機(jī)制在各個領(lǐng)域都得到了廣

    2024年02月07日
    瀏覽(29)
  • AI架構(gòu)師必知必會系列:云計算與AI

    作者:禪與計算機(jī)程序設(shè)計藝術(shù) 近年來,隨著互聯(lián)網(wǎng)的飛速發(fā)展,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等AI技術(shù)的應(yīng)用日益廣泛,越來越多的人開始對AI技術(shù)產(chǎn)生濃厚興趣,并開始探索如何運(yùn)用AI技術(shù)解決實際問題,而作為一名AI架構(gòu)師則成為許多企業(yè)、組織和個人的必備技能。但是,作為一

    2024年02月05日
    瀏覽(25)
  • 后端架構(gòu)師必知必會系列:性能優(yōu)化與負(fù)載均衡策略

    作者:禪與計算機(jī)程序設(shè)計藝術(shù) 在互聯(lián)網(wǎng)高速發(fā)展的今天,網(wǎng)站的流量越來越多,為了保證網(wǎng)站的正常運(yùn)行,優(yōu)化服務(wù)器的性能顯得尤為重要。同時為了提升網(wǎng)站的訪問速度、節(jié)省網(wǎng)絡(luò)帶寬成本、提供更好的用戶體驗,很多網(wǎng)站都會采用分布式架構(gòu)或云計算平臺來提高網(wǎng)站的

    2024年02月06日
    瀏覽(27)
  • 架構(gòu)師必知必會系列:區(qū)塊鏈與分布式賬本

    作者:禪與計算機(jī)程序設(shè)計藝術(shù) 區(qū)塊鏈,又稱分布式數(shù)據(jù)庫,是一個P2P網(wǎng)絡(luò),采用點對點的方式,將所有數(shù)據(jù)記錄在不斷增加的區(qū)塊中,每個區(qū)塊都具有校驗功能,利用密碼學(xué)的方法保證數(shù)據(jù)不被篡改。其主要優(yōu)點如下: 可追溯性:任何一方都可以驗證任意時刻上鏈的數(shù)據(jù)

    2024年02月08日
    瀏覽(30)
  • AI架構(gòu)師必知必會系列:遷移學(xué)習(xí)與領(lǐng)域自適應(yīng)

    作者:禪與計算機(jī)程序設(shè)計藝術(shù) 遷移學(xué)習(xí)(Transfer Learning)是當(dāng)今深度學(xué)習(xí)中一個重要應(yīng)用領(lǐng)域。主要解決的問題是如何利用別人的經(jīng)驗教訓(xùn)來快速學(xué)習(xí)新的任務(wù)。而領(lǐng)域自適應(yīng)(Domain Adaptation)則是根據(jù)不同領(lǐng)域的特點,設(shè)計不同的模型結(jié)構(gòu)來解決同類任務(wù)上的差異性?;?/p>

    2024年02月06日
    瀏覽(38)
  • AI架構(gòu)師必知必會系列:FPGA加速與AI

    作者:禪與計算機(jī)程序設(shè)計藝術(shù) 什么是FPGA?它是什么時候出現(xiàn)的?它又是如何工作的?這是需要了解的。FPGA加速對AI的影響又是什么樣的呢?如何利用好FPGA?總而言之,要掌握FPGA加速的相關(guān)知識、技巧與能力,才能更好的進(jìn)行AI應(yīng)用。因此,本文將從如下幾個方面進(jìn)行詳細(xì)

    2024年02月07日
    瀏覽(28)
  • AI架構(gòu)師必知必會系列:AI在智慧城市的應(yīng)用

    作者:禪與計算機(jī)程序設(shè)計藝術(shù) 隨著科技的進(jìn)步、經(jīng)濟(jì)的發(fā)展以及社會的變革,智慧城市也逐漸成為人們生活中不可缺少的一部分。據(jù)統(tǒng)計,截至2021年底,全球智慧城市占有土地面積超過5萬平方公里,規(guī)模達(dá)到10億美元,是世界第四大智慧城市。如今,智慧城市已經(jīng)成為人

    2024年02月07日
    瀏覽(23)
  • 后端架構(gòu)師必知必會系列:搜索引擎與全文檢索

    作者:禪與計算機(jī)程序設(shè)計藝術(shù) 什么是搜索引擎?它是指在互聯(lián)網(wǎng)上搜集、整理并快速索引海量信息的數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫,對用戶的查詢請求進(jìn)行快速、準(zhǔn)確的響應(yīng)的技術(shù)。搜索引擎又分為互聯(lián)網(wǎng)搜索引擎(英語: internet search engine)和本地搜索引擎(英語: local search engine)。 全文

    2024年02月05日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包