站長資訊網
        最全最豐富的資訊網站

        歸納整理MySQL數據庫常見面試題

        本篇文章給大家帶來了關于mysql的相關知識,其中主要介紹了關于數據庫廠家面試題的一些總結,下面一起來看一下,希望對大家有幫助。

        歸納整理MySQL數據庫常見面試題

        推薦學習:mysql視頻教程

        1、數據庫的常用范式:

        • 第一范式(1NF):指表的列不可再分,數據庫中表的每一列都是不可分割的基本數據項,同一列中不能有多個值;
        • 第二范式(2NF):在 1NF 的基礎上,還包含兩部分的內容:一是表必須有一個主鍵;二是表中非主鍵列必須完全依賴于主鍵,不能只依賴于主鍵的一部分;
        • 第三范式(3NF):在 2NF 的基礎上,消除非主鍵列對主鍵的傳遞依賴,非主鍵列必須直接依賴于主鍵。
        • BC范式(BCNF):在 3NF 的基礎上,消除主屬性對于碼部分的傳遞依賴

        2、SQL語句的執行過程:

        2.1、客戶端的數據庫驅動與數據庫連接池:

        (1)客戶端與數據庫進行通信前,通過數據庫驅動與MySQL建立連接,建立完成之后,就發送SQL語句

        (2)為了減少頻繁創建和銷毀連接造成系統性能的下降,通過數據庫連接池維護一定數量的連接線程,當需要進行連接時,就直接從連接池中獲取,使用完畢之后,再歸還給連接池。常見的數據庫連接池有 Druid、C3P0、DBCP

        2.2、MySQL架構的Server層的執行過程:

        (1)連接器:主要負責跟客戶端建立連接、獲取權限、維持和管理連接

        (2)查詢緩存:優先在緩存中進行查詢,如果查到了則直接返回,如果緩存中查詢不到,在去數據庫中查詢。

        MySQL緩存是默認關閉的,也就是說不推薦使用緩存,并且在MySQL8.0 版本已經將查詢緩存的整塊功能刪掉了。這主要是它的使用場景限制造成的:

        • 先說下緩存中數據存儲格式:key(sql語句)- value(數據值),所以如果SQL語句(key)只要存在一點不同之處就會直接進行數據庫查詢了;
        • 由于表中的數據不是一成不變的,大多數是經常變化的,而當數據庫中的數據變化了,那么相應的與此表相關的緩存數據就需要移除掉;

        (3)解析器/分析器:分析器的工作主要是對要執行的SQL語句進行詞法解析、語法解析,最終得到抽象語法樹,然后再使用預處理器對抽象語法樹進行語義校驗,判斷抽象語法樹中的表是否存在,如果存在的話,在接著判斷select投影列字段是否在表中存在等。

        (4)優化器:主要將SQL經過詞法解析、語法解析后得到的語法樹,通過數據字典和統計信息的內容,再經過一系列運算 ,最終得出一個執行計劃,包括選擇使用哪個索引

        在分析是否走索引查詢時,是通過進行動態數據采樣統計分析出來;只要是統計分析出來的,那就可能會存在分析錯誤的情況,所以在SQL執行不走索引時,也要考慮到這方面的因素

        (5)執行器:根據一系列的執行計劃去調用存儲引擎提供的API接口去調用操作數據,完成SQL的執行。

        2.3、Innodb存儲引擎的執行過程:

        • (1)首先MySQL執行器根據 執行計劃 調用存儲引擎的API查詢數據
        • (2)存儲引擎先從緩存池buffer pool中查詢數據,如果沒有就會去磁盤中查詢,如果查詢到了就將其放到緩存池中
        • (3)在數據加載到 Buffer Pool 的同時,會將這條數據的原始記錄保存到 undo 日志文件中
        • (4)innodb 會在 Buffer Pool 中執行更新操作
        • (5)更新后的數據會記錄在 redo log buffer 中
        • (6)提交事務在提交的同時會做以下三件事
        • (7)(第一件事)將redo log buffer中的數據刷入到redo log文件中
        • (8)(第二件事)將本次操作記錄寫入到 bin log文件中
        • (9)(第三件事)將bin log文件名字和更新內容在 bin log 中的位置記錄到redo log中,同時在 redo log 最后添加 commit 標記
        • (10)使用一個后臺線程,它會在某個時機將我們Buffer Pool中的更新后的數據刷到 MySQL 數據庫中,這樣就將內存和數據庫的數據保持統一了

        3、常用的存儲引擎?InnoDB與MyISAM的區別?

        存儲引擎是對底層物理數據執行實際操作的組件,為Server服務層提供各種操作數據的API。常用的存儲引擎有InnoDB、MyISAM、Memory。這里我們主要介紹InnoDB 與 MyISAM 的區別:

        (1)事務:MyISAM不支持事務,InnoDB支持事務

        (2)鎖級別:MyISAM只支持表級鎖,InnoDB支持行級鎖和表級鎖,默認使用行級鎖,但是行鎖只有通過索引查詢數據才會使用,否則將使用表鎖。行級鎖在每次獲取鎖和釋放鎖的操作需要消耗比表鎖

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 中文字幕一区二区三区日韩精品| 无码国产精品一区二区免费vr| 人人妻人人澡人人爽精品欧美 | 国模精品一区二区三区| 国产乱码精品一区二区三区中文| 鲸鱼传媒绿头鱼实验室之炮机测评日韩精品一级毛 | 久久精品国产亚洲av水果派| 日韩精品一区二区三区在线观看| 国产精品亚洲视频| 99riav国产精品| 精品福利资源在线| 97精品人妻系列无码人妻| 亚洲韩国精品无码一区二区三区| 老子影院午夜精品无码| 精品国产福利尤物免费| 国产精品美女网站在线观看| 四虎精品影院永久在线播放| 国产成人精品福利网站在线| 久久国产乱子伦免费精品| 亚洲精品高清在线| 偷拍精品视频一区二区三区| 国产久爱免费精品视频| 欧美日激情日韩精品| 欧美精品国产日韩综合在线| 精品久久久久久国产91| 国产AV午夜精品一区二区三区 | 久久99精品国产99久久| aaa级精品久久久国产片| 99久久99这里只有免费费精品 | 精品久久综合1区2区3区激情 | 亚洲国产精品成人网址天堂| 完整观看高清秒播国内外精品资源| 久久久久久国产精品无码下载 | 一本一道久久精品综合| 四虎成人欧美精品在永久在线| 久热这里只精品99re8久| 亚洲日本精品一区二区| 98精品国产自产在线XXXX| 国产精品嫩草影院一二三区| 国产一级精品高清一级毛片| 久久精品国产精品亚洲人人|