JAVA面試題(33)

    本文首發於cartoon的博客
    轉載請註明出處:cartoonyu.github.io/cartoon-blo…java

  • 說一下數據庫的事務隔離
    • 事務是一系列操做,結果只有兩種
      • 操做完成
      • 操做異常,回滾形成所有操做被撤銷
    • 特性
      • 原子性。系統將事務做爲一個總體。
      • 一致性。事務執行以前與執行以後系統的狀態是不變的。
      • 隔離性。各事務所使用數據都是肯定的值。
      • 持久性。事務操做結果被系統保存下來。
    • 隔離級別
      • read uncommited:讀取事務未提交數據
      • read commited:只能讀取已提交數據
      • repeatable read:容許讀取同一條記錄
      • serializable:事務操做被順序執行
  • 說一下 MySQL經常使用的引擎
    • Innodb(日常經常使用)
      • 優勢
        • 提供事務支持
        • 提供行級鎖和外鍵的約束
      • 缺點
        • 啓動較慢,佔用資源較多
        • 不會保存表的行數
        • 插入偏慢
    • MyIASM(MySQL默認)
      • 優勢
        • 佔用資源小
        • 批量插入速度快
      • 缺點
        • 不支持外鍵
        • 不支持事務
        • 表可能意外損壞
    • Memory
      • 使用內存中內容建立表
      • 優勢
        • 訪問速度快
      • 缺點
        • 數據不持久化
  • 說一下 MySQL的行鎖和表鎖
    • 行鎖
      • 對具體數據行進行鎖定
      • 特色
        • 開銷大,加鎖慢,會出現死鎖
        • 鎖定粒度最小,發生鎖衝突機率最低,併發度最高
    • 表鎖
      • 對數據表進行鎖定
      • 特色
        • 開銷小,加鎖快,不會出現死鎖
        • 鎖定粒度大,發生鎖衝突機率高,併發度低
  • 說一下樂觀鎖和悲觀鎖
    • 參考地址:blog.csdn.net/qq_34337272…
    • 樂觀鎖
      • 假設別人拿到數據不會進行修改
      • 實現方法
        • 版本號機制
        • CAS算法
      • 缺點
        • ABA問題
        • 自循環開銷大
        • 智能保證一個共享變量的原子操做
    • 悲觀鎖
      • 假設別人拿到數據老是進行修改
相關文章
相關標籤/搜索