日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库面试题

發(fā)布時(shí)間:2025/3/17 数据库 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库面试题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)據(jù)庫面試題

DBS DBMS DB區(qū)別

  • DBS 數(shù)據(jù)庫系統(tǒng)
  • DBMS 數(shù)據(jù)庫管理系統(tǒng)
  • DB 數(shù)據(jù)庫
  • 數(shù)據(jù)庫系統(tǒng)dbs包括但不限于數(shù)據(jù)庫管理系統(tǒng)dbms和數(shù)據(jù)庫db

    MySQL存儲引擎

  • InnoDB(默認(rèn)):支持事物,表鎖,行鎖設(shè)計(jì),支持外鍵
  • MyISAM:不支持事物和表鎖設(shè)計(jì),不支持外鍵
  • 事物

    • 使用場景
    • 轉(zhuǎn)賬:

    • a轉(zhuǎn)賬給b,a賬戶減少
    • b賬戶增加
    • 過程就要用到事物,轉(zhuǎn)賬事物就回滾
    • 解釋:一組原子性的SQL查詢(結(jié)合ACID)
    • ACID特性

      • A:原子性
      • C:一致性
      • I:隔離性
      • D:持久性
    • 隔離級別(低到高)

    • read uncommitted(未提交讀)
    • read committed(提交讀):大多數(shù)數(shù)據(jù)庫默認(rèn)的級別
    • repeatable read (可重復(fù)讀):mysql默認(rèn)級別,解決了臟讀問題,InnoDB通過mvcc可解決幻讀問題
    • serializable(可串行化):最高的隔離級別,不能并發(fā),解決了幻讀問題,會產(chǎn)生超時(shí) 鎖爭用問題

    樂觀鎖與悲觀鎖

    • 悲觀鎖

      • 特征(what):每次操作數(shù)據(jù)都會加鎖
      • 常見例子:mysql中行鎖 表鎖 讀鎖 寫鎖 ;java的中重量級鎖synchronized
    • 樂觀鎖

      • 特征(what):操作數(shù)據(jù)時(shí)不加鎖
      • 實(shí)現(xiàn)方法(how):通過版本控制和cas算法實(shí)現(xiàn)
      • 優(yōu)點(diǎn):適用于多讀的應(yīng)用類型,可以提高吞吐量
      • 常見例子:java中的原子變量類(cas算法)

    MVCC多版本并發(fā)控制

    • 是啥(what):

      • 可以認(rèn)為是行級鎖的變種,他在很多情況下避免加鎖,花銷更低
    • 分類:

      • 樂觀并發(fā)控制和悲觀并發(fā)控制
    • 實(shí)現(xiàn)(mysal的innodb引擎):

      • 通過在每行記錄后面保存兩個(gè)隱藏的列來實(shí)現(xiàn),一個(gè)是保存行的創(chuàng)建時(shí)間,一個(gè)是保存行的過期時(shí)間。不過這里的時(shí)間指的是系統(tǒng)版本號

    死鎖(數(shù)據(jù)庫的)

    • 解釋現(xiàn)象:兩個(gè)或兩個(gè)以上事務(wù)在同一資源相互占用,并請求鎖定對方占用的資源,從而導(dǎo)致惡性循環(huán)的現(xiàn)象。

    并發(fā)控制

    • 解決問題:我在讀數(shù)據(jù),你在刪數(shù)據(jù)的情況
    • 鎖分類:

      • 讀鎖:共享鎖,不阻塞
      • 寫鎖:排他鎖,排除其他寫鎖和讀鎖。
    • 鎖策略

      • 解決問題:提高性能
      • 分類:

        表鎖:開銷最小
        行級鎖:最大程度支持并發(fā),但開銷最大

    范式分類

  • 1nf:屬性具有原子性
  • 2nf:在1nf基礎(chǔ)上消除非主屬性對主碼的部分依賴
  • 3nf:在2nf基礎(chǔ)上消除傳遞依賴
  • 范式與反范式

    • 范式:

      • 優(yōu)點(diǎn):

        更新比反范式快
        修改數(shù)據(jù)少
        表比較小,存在內(nèi)存中,執(zhí)行快
      • 缺點(diǎn):

        需要關(guān)聯(lián)
    • 反范式:

      • 優(yōu)點(diǎn):

        避免關(guān)聯(lián)
      • 缺點(diǎn):

        信息冗余

    Char varchar

    • Char是定長 剩余空間會用空格填充
    • Varchar是可變長

    MySQL date、datetime和timestamp類型的區(qū)別

    • https://zhuanlan.zhihu.com/p/...

    索引(書的目錄)

    • 解決問題(why):方便查找數(shù)據(jù)
    • 優(yōu)點(diǎn):

      • 大大減少服務(wù)器需要掃描的數(shù)據(jù)量
      • 幫助服務(wù)器避免排序和臨時(shí)表
      • 將隨機(jī)io變成順序io
    • 缺點(diǎn):

      • 時(shí)間:創(chuàng)建索引,維護(hù)索引需要時(shí)間
      • 空間:創(chuàng)建索引占用物理空間
    • 創(chuàng)建索引的原則

      • 最左前綴匹配原則,具體在聯(lián)合索引體現(xiàn),mysql會一直向右匹配,當(dāng)遇到范圍查詢會停止,此時(shí)把范圍查詢的索引放到最后即可
      • 經(jīng)常作為查詢的字段作為索引
      • 更新頻繁的字段不適合做索引
      • 定義有外鍵的字段一定要做索引
      • 盡量擴(kuò)展索引,不要重新新建索引
    • 索引分類

      • 按底層數(shù)據(jù)結(jié)構(gòu)分:

        b數(shù)索引(底層是b+數(shù))
        哈希索引
        空間數(shù)據(jù)(r-tree)索引
        全文索引
      • 按邏輯分類

        主鍵索引(特殊的唯一索引,不允許null值)
        單列索引
        多列索引
        唯一索引
        空間索引

    Group by

    • 后面接條件時(shí)用having
    • 一般與cout()函數(shù)一起使用,實(shí)現(xiàn)查詢重復(fù)數(shù)據(jù)功能
    • 查重:

    • 結(jié)果

    分頁查詢(limit(mysql) top(sqlserver))

    • 練習(xí):
      https://www.nowcoder.com/prac...
    • 解釋:limit x, y 表示從x+1行(x從0開始算)開始查詢y條數(shù)據(jù)

    公眾號

    • 歡迎關(guān)注公眾號 布爾bl ,分享Java相關(guān)信息技術(shù)、生活感悟。

    總結(jié)

    以上是生活随笔為你收集整理的数据库面试题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。