total總內存
used已用內存
free空閒內存
buff/cache已使用的緩存
avaiable可用內存
面試官:那你知道怎麼清理已使用的緩存嗎(buff/cache)?面試官:sync; echo 3 > /proc/sys/vm/drop_caches就可以清理buff/cache了,你說說我在線上執行這條命令做好不好?我:(送分題,內心大喜)好處大大的有,清理出緩存我們就有更多可用的內存空間, 就跟pc上面xx衛士的小火箭一樣,點一下,就釋放出好多的內存。SQL 中的 Join 可以根據某些條件把指定的表給結合起來並將數據返回給客戶端。面試官:在項目開發中如果需要使用 Join 語句,如何優化提升性能?面試官:可以總結為 Join 語句是相對比較耗費性能,對嗎?我: 在執行 Join 語句的時候必然要有一個比較的過程。我:逐條比較兩個表的語句是比較慢的,因此我們可以把兩個表中數據依次讀進一個內存塊中, 以 MySQL的InnoDB 引擎為例,使用以下語句我們必然可以查到相關的內存區域 show variables like 『%buffer%』如圖所示 Join_buffer_size的大小將會影響我們 Join 語句的執行性能。我:任何項目終究要上線,不可避免的要產生數據,數據的規模又不可能太小。我:大部分資料庫中的數據最終要保存到硬碟上,並且以文件的形式進行存儲。InnoDB 以頁(page)為基本的IO單位,每個頁的大小為16KB, InnoDB 會為每個表創建用於存儲數據的 .ibd 文件。我:這意味著我們有多少表要連接就需要讀多少個文件,雖然可以利用索引,但還是免不了頻繁的移動硬碟的磁頭。我:是的,現在的開源框架不都喜歡說自己通過順序讀寫大大的提升了性能嗎,比如 hbase、kafka。面試官:說的沒錯,那你認為 Linux 有對此做出優化嗎?提示,你可以再執行一次 Free 命令看一下。面試官:你有沒有想過?buff/cache 裡面存的是什麼?為什麼 buff/cache 佔了那麼多內存,可用內存即 availlable 還有1.1G?為什麼你可以通過兩條命令來清理 buff/cache 佔用的內存,而想要釋放used只能通過結束進程來實現?我:這麼隨便就釋放了 buff/cache 所佔用的內存,說明它就不重要, 清除它不會對系統的運行造成影響我:難道是?想起來《CSAPP》(深入理解計算機系統)裡面說過一句話:存儲器層次結構的本質是,每一層存儲設備都是較低一層設備的緩存。通俗來說,就是說 Linux 會把內存當作是硬碟的高速緩存。面試官:再給你個機會,如果讓你來實現 Join 算法你會怎麼做?我:無索引的話,嵌套循環就完事了嗷。有索引的話,則可以利用索引來提升性能。面試官:說回 Join_buffer 你認為 Join_buffer 裡面存儲的是什麼?我:在掃描過程中,資料庫會選擇一個表把他要返回以及需要進行和其他表進行比較的數據放進 Join_buffer。我:這個就比較簡單了,直接讀取兩個表的索引樹進行比較就完事了,我這邊介紹一下無索引的處理方式:嵌套循環,每次只讀取表中的一行數據,也就是說如果 outerTable有10萬行數據, innerTable 有100行數據,需要讀取10000000次(假設這兩個表的文件沒有被作業系統給緩存到內存, 我們稱之為冷數據表)。Block塊,也就是說每次都會取一塊數據到內存以減少I/O的開銷。當沒有索引可以使用的時候,MySQL InnoDB 就會使用這種算法。當無法使用索引執行 Join 操作的時候,InnoDB 會自動使用Block nested loop 算法。上學時,資料庫老師最喜歡考資料庫範式,直到上班才學會一切以性能為準,能冗餘就冗餘,實在冗餘不了的就 Join 如果 Join 真的影響到性能。試著調大你的 Join_buffer_size , 或者換固態硬碟。版權聲明:本文為CSDN博主「Java發財」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本聲明。原文連結:https://blog.csdn.net/weixin_47067712/article/details/1059726206月2日20:00,CSDN 創始人&董事長、極客幫創投創始合伙人蔣濤攜手全球頂級開源基金會主席、董事,聚焦中國開源現狀,直面開發者在開源技術、商業上的難題,你絕不可錯過的開源巔峰對談!立即免費圍觀:更多精彩推薦
☞你的 AI 程序無人問津?不是不夠好,而是缺一個展示的舞臺
☞航拍高手、吉他十級,6500+Star 開源項目作者,後浪程式設計師給力!
☞5 月程式語言排行榜:C 重回第一,今年程式語言名人堂冠軍還會是它嗎? | 原力計劃
☞基於深度學習和傳統算法的人體姿態估計,技術細節都講清楚了
☞面試中遇到這 3 個SQL問題,最容易掉坑裡!
☞好撲科技結合區塊鏈行業發展趨勢,重磅推出「好撲區塊鏈合伙人」計劃
點擊閱讀原文,精彩繼續。