在面試的時候你會被問到各種各樣的怪問題,在絞盡腦汁想著解決方案的時候你或許可以從實際的角度給出最完美的方案。 以下舉個數據庫相關的面試問題: CSDN論壇帖子總量的統計,要求實時更新! MyISAM 存儲引擎的情況SELECT COUNT(*)的Query就能解決了!注:M
在面試的時候你會被問到各種各樣的怪問題,在絞盡腦汁想著解決方案的時候你或許可以從實際的角度給出最完美的方案。
以下舉個數據庫相關的面試問題:
CSDN論壇帖子總量的統計,要求實時更新!
MyISAM 存儲引擎的情況SELECT COUNT(*)的Query就能解決了!注:MyISAM 存儲引擎互聯網基本不會選擇。
Innodb 存儲引擎的情況呢?千萬的帖子呢?訪問量再大一點呢?
或許有些哥們會想到增加一個統計表,每次有新的帖子產生的時候,都將統計表中統計量這個值增加1,
這個哥們的方法肯定能解決查詢的問題不錯,但是高峰時期可能每秒就有幾十甚至上百個帖子新增操作的時候呢?
又是一場噩夢了,是不是......
其實這種問題我們換個思維,這是一個合理的需求嗎?明顯需求造成的資源投入產出比相當低。
多少人會關心實時更新的帖子總量統計?有誰會在乎這個數據短時間內的不準確性?
其實去掉實時更新這個問題就很好解決了,創建一張統計表,隔一段時間去統計一次就OK了,不是嗎?
這樣既可以解決統計值查詢的效率問題,又可以保證不影響新發貼的效率,一舉兩得。
別看這個問題出現的不多,其實實際有很多類似的功能,如:某些表達到一個數量級之后,我們去分頁顯示他的時候,完全可以
不用準確的顯示這個列表總共有多少條信息,總共分了多少頁,而只需要一個大概的估計值或者一個時間段之前的統計值就OK了。
這樣也可用省去實時大數據的COUNT操作。
總結:從面試題看生產,很多時候我們可用換個角度思考問題,更多的發散思維。
從需求性看實際,并非一味的實時和精準是比較好的,有價值的方案。
從問題出發,我們更需要的是知道問題的本質原因。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com