面試問題解答記錄(2016 08 23)

2021-07-17 04:33:09 字數 952 閱讀 7938

一般來說,索引本身也很大,不可能全部儲存在記憶體中,因此索引往往以索引檔案的形式儲存的磁碟上。這樣的話,索引查詢過程中就要產生磁碟i/o消耗,相對於記憶體訪問,i/o訪問的消耗要高幾個數量級,所以評價乙個資料結構作為索引的優劣最重要的指標就是在查詢過程中磁碟i/o操作次數的漸進複雜度。換句話說,索引的結構組織要儘量減少查詢過程中磁碟i/o的訪問次數。

b+樹是為磁碟及其他儲存輔助裝置而設計一種平衡查詢樹(不是二叉樹)。b+樹中,所有記錄的節點按大小順序存放在同一層的葉節點中,各葉節點用指標進行連線。

從mysql(inoodb)的角度來看,b+樹是用來充當索引的,一般來說索引非常大,尤其是關係性資料庫這種資料量大的索引能達到億級別,所以為了減少記憶體的占用,索引也會被儲存在磁碟上。

那麼mysql如何衡量查詢效率呢?磁碟io次數,b-樹(b類樹)的特定就是每層節點數目非常多,層數很少,目的就是為了就少磁碟io次數,當查詢資料的時候,最好的情況就是很快找到目標索引,然後讀取資料,使用b+樹就能很好的完成這個目的,但是b-樹的每個節點都有data域(指標),這無疑增大了節點大小,說白了增加了磁碟io次數(磁碟io一次讀出的資料量大小是固定的,單個資料變大,每次讀出的就少,io次數增多,一次io多耗時啊!),而b+樹除了葉子節點其它節點並不儲存資料,節點小,磁碟io次數就少。這是優點之一。

另乙個優點是什麼,b+樹所有的data域在葉子節點,一般來說都會進行乙個優化,就是將所有的葉子節點用指標串起來。這樣遍歷葉子節點就能獲得全部資料,這樣就能進行區間訪問啦。

介面不知道在日誌中是如何表示的

檢視日誌中訪問次數最多的前10個ip

cat access_log |cut -d

' '-f

1|sort |uniq -c

| sort -nr

| awk ''

| head -n

10|less

[參考:linux下apache日誌分析與狀態檢視方法]

oracle 索引使用面試問題解答

1,建立索引一定會減少查詢時間嗎?也就是提高查詢效率 2,乙個系統,你使用了一年後,系統響應 突然變慢了,請分析變慢的原因 3,有乙個很大的表,建立索引一般需要注意些什麼,在什麼字段合理?1.建立索引的目的是為了加速查詢速度,按照b tree索引的原理,索引樹表裡最後一級儲存的一定是記錄的唯一id,...

gridview問題解答

這樣寫 printisopen convert.toboolean datebinder.eval container.dataitem,isopen cs 是這樣的 public string printisopen bool bisopen else return strhhtml 或者說是這樣...

gridview問題解答

這樣寫 printisopen convert.toboolean datebinder.eval container.dataitem,isopen cs 是這樣的 public string printisopen bool bisopen else return strhhtml 或者說是這樣...