L數(shù)據(jù)庫
I的大小要求在一次采訪中被問到這樣一個問題:如果每個月處理650MB的數(shù)據(jù),一立的L服務(wù)器的DB大小是多少。我在面試中沒有回答這個問題,后來也沒有找到任何答案
解答動態(tài)
這是一個沒有確切答案的式面試問題。為了清楚起見,面試官可能希望你問一些額外的問題。
實際的空間需求將取決于“已處理”的含義,數(shù)據(jù)保留(是否刪除過數(shù)據(jù)?),列數(shù)據(jù)類型,索引,存儲開銷,使用壓縮特性(包括columnstore),加上額外的免費(fèi)空間用于日常維護(hù)。
在我看來,這類問題是愚蠢的面試問題,肯定需要更多的上下文。也許他們只是想看看你的想法,以及你會問什么后續(xù)問題來澄清問題。
如果經(jīng)過處理,他們的意思是每個月添加650MB的數(shù)據(jù)(即使在這里也會假設(shè)添加的650MB是數(shù)據(jù)+所有索引+任何其他消耗空間的補(bǔ)充對象),并且沒有給出其他上下文,因此我們必須假設(shè)它們純粹是指數(shù)據(jù)庫的總數(shù)據(jù)文件大。ǘ皇鞘聞(wù)日志文件或其他任何文件,因為這些文件大小取決于未知變量,如恢復(fù)模式和備份頻率),那么數(shù)據(jù)庫的大小是650 MB乘以它已聯(lián)機(jī)的月數(shù)。
如注釋中所述:在最簡單的示例中,如果使用完全恢復(fù)模式創(chuàng)建一個全新的數(shù)據(jù)庫,則它沒有索引(或任何其他可能導(dǎo)致數(shù)據(jù)重復(fù)的內(nèi)容),并且會向其中寫入650MB的數(shù)據(jù)。此時,大約1.3gb的磁盤空間正在被消耗,650mb用于數(shù)據(jù),650mb用于將數(shù)據(jù)插入數(shù)據(jù)庫的事務(wù),現(xiàn)在位于事務(wù)日志中。因為在我最簡單的示例中,它們沒有提供任何其他細(xì)節(jié),所以您只能假設(shè)它們最多表示原始數(shù)據(jù),此時的原始數(shù)據(jù)為650 MB。
但是您可以看到,即使在一個簡單的示例中,它的變化速度也非?臁<词乖谀莻例子中,我假設(shè)“處理”這個詞的意思是“添加”。但處理可能意味著添加了350MB,然后刪除了300MB,F(xiàn)在數(shù)據(jù)庫大。▋H用于原始數(shù)據(jù))只有50MB。在我前面的示例中,所消耗的總磁盤空間約為700 MB,因為事務(wù)日志中發(fā)生了650 MB的事務(wù),加上此時數(shù)據(jù)庫中額外的50 MB實際數(shù)據(jù)。
如果我們知道更多信息,例如事務(wù)日志的備份頻率,則這可能會改變上面的答案也是。例如,如果事務(wù)日志備份每5分鐘發(fā)生一次,如果350 MB的數(shù)據(jù)插入到同一示例數(shù)據(jù)庫中,7分鐘后300 MB被刪除,則當(dāng)前磁盤上消耗的總空間為350 MB。50 MB的實際數(shù)據(jù)+300 MB當(dāng)前位于事務(wù)日志中用于刪除操作。初始插入操作的事務(wù)在此時間點(diǎn)消失,因為在事務(wù)日志備份發(fā)生后,事務(wù)將從中刷新,并且它們以前占用的空間將被新事務(wù)重新使用。
因此,不幸的是,有很多方法可以解釋此問題,在面試中最好通過問一些正確的后續(xù)問題來展示你的知識,比如“我們談?wù)摰氖菙?shù)據(jù)庫文件數(shù)據(jù)還是事務(wù)日志數(shù)據(jù)?”?quot;(簡單恢復(fù)模式與完全恢復(fù)模式將導(dǎo)致在事務(wù)日志中存儲不同數(shù)量的數(shù)據(jù)),quot;,如果面試官知道他們在做什么,那么這些后續(xù)問題會告訴他們,重要的不是問題的實際答案,因為你通過詢問解決這類問題所需的知識來展示你的能力。
關(guān)于在運(yùn)行中增加可用磁盤空間和內(nèi)存的最后一個問題:是的,在運(yùn)行中,甚至在保持?jǐn)?shù)據(jù)庫聯(lián)機(jī)的情況下,確實可以添加更多的磁盤空間和內(nèi)存。真正做到這一點(diǎn)的方法將取決于您的服務(wù)器主機(jī),無論是在prem服務(wù)器上還是在云中,物理服務(wù)器還是虛擬機(jī),最后,這里有一些我發(fā)現(xiàn)非常有用的博客(沒有特別的順序):
Josh Darnell的BlogBrent Ozar團(tuán)隊的BlogErik Darling的blogaron Bertrand的Blogsqlperformofmance.com文件Bertrand的另一個L博客Kendra Little的BlogRedGate的Simple Talk博客像這樣含糊不清的問題,面試官并不期待(當(dāng)然,如果他們自己知道什么的話)。他們希望測試您如何意識到問題過于模糊,以及您如何在實際情況下開始嘗試回答此類問題,以了解您是否了解需要哪些額外的詳細(xì)信息,以及如何從文檔、開發(fā)團(tuán)隊或通過檢查現(xiàn)有數(shù)據(jù)庫來問求或查找這些詳細(xì)信息只有錯誤的答案才是沒有答案(包括直接的“我不知道”)或天真的答案(650MB*months),沒有任何警告。
我可能會用類似
的方式回答這樣的問題天真的答案是將650MB乘以我們期望服務(wù)運(yùn)行的月數(shù),假設(shè)該金額包括指數(shù)增長和其他附加成本,并且我們每月保留所有傳入的數(shù)據(jù),但要給出適當(dāng)?shù)墓烙嫞覀冃枰烙卸嗌俳?jīng)過處理的數(shù)據(jù)是新的,或是現(xiàn)有數(shù)據(jù)的更新,或是被丟棄,因為它已經(jīng)存在,但被外部系統(tǒng)重新發(fā)送,我們還需要知道數(shù)據(jù)如何存儲和索引的更多細(xì)節(jié),這將對存儲需求產(chǎn)生重大影響。另外,由于工作tempdb和事務(wù)日志的增長,數(shù)據(jù)的處理方式也會增加其他臨時存儲需求。
告訴他們,你知道問題是模糊的,你知道什么是天真的,可能是不正確的答案(因此你會從其他地方認(rèn)出這樣的答案),你知道為了得到一個有用的估計所需要的細(xì)節(jié)。然后,他們可能會要求你進(jìn)一步闡述其中的一些觀點(diǎn),或者從你所說的內(nèi)容中提出更具體的問題- End
免責(zé)聲明:
本頁內(nèi)容僅代表作者本人意見,若因此產(chǎn)生任何糾紛由作者本人負(fù)責(zé),概與琴島網(wǎng)公司無關(guān)。本頁內(nèi)容僅供參考,請您根據(jù)自身實際情況謹(jǐn)慎操作。尤其涉及您或第三方利益等事項,請咨詢專業(yè)人士處理。