連接:https://www.nowcoder.com/discuss/142537html
下午三點視頻面:一上來懟jvm和gcmysql
https://blog.csdn.net/strawqqhat/article/details/88807835面試
標記清除,複製,標記整理,分代回收。算法
https://blog.csdn.net/strawqqhat/article/details/88817163sql
答案:都有stw。數據庫
包括緩存
1.1 Young GC類算法:Serial Young GC(DefNew)、Parallel Young GC、ParNew GC;服務器
1.2 Full GC類算法:Serial Old GC、PS MarkSweep GC / Parallel Old GC、Full GC for CMS算法、Full GC for G1 GC算法;併發
1.3 G1 GC算法:Young GC/Mixed GC 是stw的;
2. CMS算法是怎麼回事呢?
2.1 CMS(Old)GC算法只在初始標記(initial mark)和再標記(remark)階段stw一下;
2.2 相似的,G1 GC算法在其標記階段某幾個時段是stop the world的,好比初始標記(initial mark)、再標記(remark)、清理(cleanup)階段;
InnoDB 引擎
MySQL 5.5 及之後版本中的默認存儲引擎,他的優勢以下:
災難恢復性好
支持事務
使用行級鎖
支持外鍵關聯
支持熱備份
對於InnoDB引擎中的表,其數據的物理組織形式是簇表(Cluster Table),主鍵索引和數據是在一塊兒的,數據按主鍵的順序物理分佈
實現了緩衝管理,不只能緩衝索引也能緩衝數據,而且會自動建立散列索引以加快數據的獲取
支持熱備份
MyISAM引擎
特性以下:
不支持事務
使用表級鎖,併發性差
主機宕機後,MyISAM表易損壞,災難恢復性不佳
能夠配合鎖,實現操做系統下的複製備份、遷移
只緩存索引,數據的緩存是利用操做系統緩衝區來實現的。可能引起過多的系統調用且效率不佳
數據緊湊存儲,所以可得到更小的索引和更快的全表掃描性能
MEMORY 存儲引擎
提供內存表,也不支持事務和外鍵。顯著提升訪問數據的速度,可用於緩存會頻繁訪問的、能夠重構的數據、計算結果、統計值、中間結果。
缺點以下:
使用表級鎖,雖然內存訪問快,但若是頻繁的讀寫,表級鎖會成爲瓶頸
只支持固定大小的行。Varchar類型的字段會存儲爲固定長度的Char類型,浪費空間
不支持TEXT、BLOB字段。當有些查詢須要使用到臨時表(使用的也是MEMORY存儲引擎)時,若是表中有TEXT、BLOB字段,那麼會轉換爲基於磁盤的MyISAM表,嚴重下降性能
因爲內存資源成本昂貴,通常不建議設置過大的內存表,若是內存表滿了,可經過清除數據或調整內存表參數來避免報錯
服務器重啓後數據會丟失,複製維護時須要當心
若是選擇合適的引擎?
是否須要事務支持
是否爲高併發,InnoDB實現了行鎖,這方面的表現大大優於MyISAM
索引,不一樣存儲引擎的索引實現不一樣
是否須要外鍵
高效緩衝數據,InnoDB緩衝數據而MyISAM只緩衝了索引
備份,是否須要支持熱備份
參考:http://www.javashuo.com/article/p-rtgonhfq-en.html
https://blog.csdn.net/strawqqhat/article/details/88818291
https://blog.csdn.net/strawqqhat/article/details/88818522
https://blog.csdn.net/zymx14/article/details/78324464
https://blog.csdn.net/strawqqhat/article/details/88818628
https://blog.csdn.net/strawqqhat/article/details/88819261
(一小時左右)
結束 面試官說三天內給消息?