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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

面试不知道如何回答这六大知识点,你还敢说熟悉MySQL?

發布時間:2024/8/26 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试不知道如何回答这六大知识点,你还敢说熟悉MySQL? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄
一、事務

  • 什么是事務

  • 事務的四大特性

  • 事務的并發問題
    ① 事務并發問題什么時候發生?
    ② 事務的并發問題有哪些?
    ③ 如何避免事務的并發問題?
    二、索引

  • 什么是索引

  • 索引的優缺點

  • 索引的設計原則
    三、數據庫設計三大范式

  • 第一范式

  • 第二范式

  • 第三范式
    四、MySQL的主從復制

  • 概念

  • 原理

  • 主從復制用途
    五、MySQL中的鎖

  • 為什么要加鎖

  • 鎖的分類
    六、如何做 MySQL的性能優化
    一、事務

  • 什么是事務
    MySQL事務是一組sql語句或一個獨立運行的工作單元。這個工作單元要么全部執行,要么全部不執行。

  • 事務的四大特性
    原子性:一個事務不可再分割,事務中的所有操作,要么全部完成,要么全部不完成。

  • 一致性:一個事務執行會使數據從一個一致狀態切換到另外一個一致狀態。也就是說,在事務開始之前和事務結束以后,數據庫的完整性沒有被破壞。

    隔離性:一個事務所做的修改在最終提交之前,對其它事務是不可見的。也就是說一個事務的執行不會受到其它事務的干擾。

    持久性:一個事務一旦提交以后,對數據的修改就會永久的保存到數據庫中,即便系統故障也不會丟失。

  • 事務的并發問題
    ① 事務并發問題什么時候發生?
    當多個事務同時操作同一個數據庫的相同數據時,就會發生并發問題。
  • ② 事務的并發問題有哪些?
    臟讀:對于兩個事務T1、T2, T1 讀取了已經被T2 更新但還沒有被提交的數據。如果事務T2進行了回滾, T1讀取到的數據就是臨時且無效的。

    不可重復讀:對于兩個事務T1、T2, T1 讀取了一個數據, 然后 T2 更新了該數據。如果T1再次讀取同一個數據, 值就不相同了。

    幻讀:對于兩個事務T1、T2, T1 從一個表中讀取了一個數據, 然后T2 在該表中插入了一些新的行。如果T1 再次讀取同一個表, 就會多出幾行。

    ③ 如何避免事務的并發問題?
    通過設置事務的隔離級別進行避免事務的并發問題。事務有以下四個隔離級別:

    讀未提交(read-uncommitted)
    讀已提交(read-committed) 可以避免臟讀
    可重復讀(repeatable-read) 可以避免臟讀、不可重復讀和一部分幻讀
    串行化(serializable) 可以避免臟讀、不可重復讀和幻讀

    事務隔離級別 臟讀 不可重復讀 幻讀
    讀未提交(read-uncommitted) 是 是 是
    讀已提交(read-committed) 否 是 是
    可重復讀(repeatable-read) 否 否 是
    串行化(serializable) 否 否 否
    MySQL數據庫(InnoDB引擎)默認使用的隔離級別是:可重復讀( Repeatable read );

    隔離級別越高,越能保證數據的完整性和一致性,但是對并發性能的影響也越大。

    二、索引

  • 什么是索引
    索引是對數據庫表中一列或多列的值進行排序的一種結構,使用索引可以提高數據庫中特定數據的查詢速度

  • 索引的優缺點
    優點

  • ① 使用索引可以大大加快數據的查詢速度

    ② 通過創建唯一索引,可以保證數據庫表中每一行數據的唯一性。

    ③ 在使用分組和排序子句進行數據查詢時,使用索引可以減少在查詢中分組和排序的時間。

    缺點

    ① 創建索引和維護索引需要時間,隨著數據量的增加所需要時間也會增加。

    ② 當對表中的數據進行增加、刪除和修改的時候,索引也要動態地維護,這樣就降低了數據的維護速度。

    ③ 索引需要占磁盤空間,除了數據表占數據空間之外,每一個索引還要占定的物理空間,如果有大量的索引,索引文件可能比數據文件更快達到最大文件尺寸

  • 索引的設計原則
    索引設計不合理或者缺少索引都會對數據庫和應用程序的性能造成障礙。高效的索引對于獲得良好的性能非常重要。設計索引時,應該考慮以下準則:
  • ① 索引并非越多越好,一個表中如有大量的索引,不僅占用磁盤空間,而且會影響 INSERT、 DELETE、UPDATES等語句的性能,因為當表中的數據更改的同時索引也會進行調整和更新。

    ② 避免對經常更新的表進行過多的索引,并且索引中的列盡可能少。而對經常用于查詢的字段應該創建索引,但要避免添加不必要的字段。

    ③ 數據量小的表最好不要使用索引,由于數據較少,查詢花費的時間可能比遍歷索引的時間還要短,索引可能不會產生優化效果。

    ④ 在條件表達式中經常用到的不同值較多的列上建立索引,在不同值很少的列上不要建立索引。比如在學生表的“性別”字段上只有“男”與“女”兩個不同值,因此就無須建立索引。如果建立索引不但不會提高查詢效率,反而會嚴重降低數據更新速度。

    ⑤ 當唯一性是某種數據本身的特征時,指定唯一索引。使用唯一索引副需能確保定義的列的數據完整性,以提高查詢速度。

    ⑥ 在頻繁進行排序或分組(即進行group by或 order by操作)的列上建立索引,如果待排序的列有多個,可以在這些列上建立組合索引。

    三、數據庫設計三大范式

  • 第一范式
    確保每列保持原子性
  • 第一范式是最基本的范式。要求數據庫表的每一列都是不可分割的原子數據項。

    學號 姓名 課程號 課程名 學分 成績
    001 揚帆向海 101 Java 4 80
    002 起帆朝陽 102 數據結構 6 90
    表一
    2. 第二范式
    確保表中的每列都和主鍵相關

    第二范式在第一范式的基礎上,第二范式需要確保數據庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。也就是說在一個數據庫表中,一個表中只能保存一種數據,不可以把多種數據保存在同一張數據庫表中。

    學號 姓名 課程號 成績
    001 揚帆向海 101 80
    002 起帆朝陽 102 90
    表二

    課程號 課程名 學分
    101 Java 4
    102 數據結構 6
    表三
    3. 第三范式
    確保每列都和主鍵列直接相關,而不是間接相關

    第三范式是在第二范式的基礎上,需要確保數據表中的每一列數據都和主鍵直接相關,而不是間接相關。

    學生表:

    學號 姓名
    001 揚帆向海
    002 起帆朝陽
    表四

    課程表:

    課程號 課程名 學分
    101 Java 4
    102 數據結構 6
    表五

    成績表:

    學號 課程號 成績
    001 101 80
    002 102 90
    表六
    四、MySQL的主從復制

  • 概念
    MySQL 主從復制是指數據可以從一個MySQL數據庫服務器主節點復制到一個或多個從節點。

  • 原理
    在這里插入圖片描述

  • 從庫生成兩個線程,一個I/O線程,一個SQL線程。

    I/O線程 去請求主庫 的binlog,并將得到的binlog日志寫到relay log(中繼日志) 文件中;

    主庫會生成一個 log dump 線程,用來給從庫 I/O線程傳binlog。

    SQL線程 會讀取relay log文件中的日志,并解析成具體操作,來實現主從的操作一致,而最終數據一致。

  • 主從復制用途
    ① 讀寫分離,在開發工作中,有時候會遇見某個sql
    語句需要鎖表,導致暫時不能使用讀的服務,這樣就會影響現有業務,使用主從復制,讓主庫負責寫,從庫負責讀,這樣即使主庫出現了鎖表的情景,通過讀從庫也可以保證業務的正常運作。
  • ② 數據實時備份,當系統中某個節點發生故障時,可以方便的故障切換。

    五、MySQL中的鎖

  • 為什么要加鎖
    數據庫的鎖是為了支持對共享資源進行并發訪問,提供數據的完整性和一致性。在數據庫中加鎖是保證在高并發的情況下,訪問數據庫的時候,數據不會出現問題。

  • 鎖的分類
    按操作分:

  • ① 讀鎖(共享鎖):針對同一份數據,多個讀取操作可以同時進行而不互相影響。

    ② 寫鎖(排它鎖):當前寫操作沒有完成前,會阻斷其他寫鎖和讀鎖。

    按粒度分:

    ① 表鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖沖突的概率最高,并發度最低。

    ② 行鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,并發度也最高。

    ③ 頁鎖:開銷和加鎖時間界于表鎖和行鎖之間;會出現死鎖;鎖定粒度界于表鎖和行鎖之間,并發度一般。

    六、如何做 MySQL的性能優化
    ① 當只需要一條數據的時候,使用 limit 1

    ② 盡量避免使用 select * ,在查詢的時候列出需要查詢的字段。

    ③ 使用 join 代替子查詢。

    ④ 減少使用 or,使用 in 或者 union(union all) 代替。

    ⑤ 為搜索字段創建索引。但是不要過度索引,索引越多,占用空間越大,反而性能變慢。

    ⑥ 避免進行類型轉換,不然會導致索引失效。

    ⑦ 對查詢語句使用explain 。 使用explain ,可以幫助了解MySQL是如何處理sql語句的, 可以查看到sql的執行計劃,這樣就能更好的去了解的sql語句的不足,然后優化語句。

    ⑧ 垂直分割,將常用和有關系的字段放在相同的表中,把一張表的數據分成幾張表 這樣可以降低表的復雜度和字段的數目,從而達到優化的目的

    總結

    以上是生活随笔為你收集整理的面试不知道如何回答这六大知识点,你还敢说熟悉MySQL?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久国产中文字幕 | 99re在线视频 | 手机看片日本 | 91香蕉嫩草 | 午夜影院视频 | 亚洲精品久久久久久久久 | 欧美性猛交xxxⅹ富婆 | 亚洲一区综合 | 青草操| 看黄网站在线 | 欧美日韩一区二区久久 | 91日韩欧美 | 日本 奴役 捆绑 受虐狂xxxx | a天堂中文在线观看 | 女优在线观看 | 国产精品xxx视频 | 国产精品国产三级国产aⅴ9色 | 潮喷失禁大喷水无码 | 亚州春色 | 国产传媒视频在线观看 | 国产亚韩| 性感美女av在线 | 九九黄色片| 欧美日韩免费做爰视频 | 欧美天堂在线观看 | 国产又粗又猛又爽又黄的网站 | 成人免费网站www网站高清 | 亚洲精品一区二 | 亚洲污污视频 | 一本一道久久a久久精品蜜桃 | 狠狠躁夜夜躁人人爽天天高潮 | 国产精品久久国产精麻豆96堂 | 国产精品久久久久永久免费看 | 欧美在线性视频 | 国产精品无码专区av免费播放 | 精品国产乱码久久久人妻 | 亚洲男人第一天堂 | 黄色精品一区 | 香蕉久久夜色精品国产使用方法 | 精品国产无码AV | 欧美亚洲精品一区二区 | 美女高潮黄又色高清视频免费 | 青草精品| 伊人久久伊人 | 99亚洲视频 | 日本一区二区三区在线观看视频 | 别揉我奶头啊嗯一区二区 | 悟空影视大全免费高清观看在线 | 夏晴子在线 | 精品免费观看 | 欧美精品国产动漫 | 五月花成人网 | 欧美福利网 | 欧美aⅴ在线观看 | 日批在线 | 精品午夜一区二区三区 | 中文字幕一区二区三区乱码人妻 | 男女污污视频在线观看 | 国产一区二区三区在线观看 | 69天堂| 黑色丝袜吻戏亲胸摸腿 | 好吊妞这里有精品 | 丝袜人妖 | 日本少妇xxxxxx | 波多在线播放 | 日韩精品福利视频 | 日韩视频在线观看 | 绯色av一区二区 | 免费看女生隐私 | 99久久精品国产一区二区三区 | 亚洲视频精品在线观看 | 亚洲一区偷拍 | 少妇献身老头系列 | 就要操av| 国产一级片在线播放 | 狠狠做深爱婷婷久久综合一区 | a视频在线看 | 久久婷婷国产 | 久操伊人网 | 亚洲视频精品一区 | 日韩av中文在线观看 | 热久久精品免费视频 | 美女视频一区 | 9191在线视频| 成人av电影免费观看 | 18禁免费观看网站 | 毛片毛片女人毛片毛片 | 亚洲成人7777| 日韩精品一区二区av | 日韩av综合在线 | 91无限观看 | 超碰人人做 | 亚洲av无码国产精品永久一区 | av在线色| 日本aa大片 | 久久久久欧美 | 国产搞逼视频 | 夫妻自拍偷拍 | 中国女人黄色大片 |