色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

10張圖帶你輕松理解關系型數據庫系統的工作原理

冬至子 ? 來源:IT技術小密圈 ? 作者:IT技術小密圈 ? 2023-06-02 11:24 ? 次閱讀

什么是索引

索引是一種幫助減少數據查詢時間的數據結構。索引在實現這一目標時,需要付出存儲、內存和保持更新(較慢的寫入速度)的額外成本,這使得我們可以跳過檢查每一行表的繁瑣任務。

就像書后面的索引頁一樣,它可以幫助你找到正確的一頁。

為什么需要索引

小量的數據是易于管理的(比如一個小班級的出勤表), 但是, 當數據規模變得更大時(比如一個大城市的出生登記), 事情就不那么容易了。之前能夠很快執行的操作都開始變得緩慢。

想象一下,如果你需要在一頁 A4 紙的名單上上找到某個信息,與需要在上千頁的名單中找到它,你的查詢策略會有何變化。

無論你想到的查詢策略是什么,幾乎總會有某個數據庫在某個特定的時間點用到了和你相似的策略,因為隨著它們的發展,他們需要收集和存儲的數據會逐漸變得龐大,最終必將遇到上述的問題。

因此,我們需要索引來幫助我們盡可能快地獲得我們需要的相關數據。

索引是如何工作的?

圖片

一般而言,索引越多讀取性能越好,但這是以寫性能的降低為代價的,因為你需要保持對索引的更新

其中一個方案是根據查詢方式來維護數據存儲邏輯。比如你需要通過姓名來查詢某個名單,那就將名單按照姓名進行排序。但這個策略有許多問題需要考慮:

  1. 如果我有多種查詢方式呢? 比如,既有用姓名查詢也有用身份證查詢。
  2. 如果有新數據的寫入, 寫入速度會受到多大的影響?
  3. 如何處理數據的更新呢?
  4. 所有的數據操作的復雜度是什么樣的呢?

無論你的原始策略是什么,肯定都需要一種維護數據順序的方式以便獲取相關的無序數據。

如下表中的例子,幾乎不需要什么時間,我們就可以通過掃描整個表將查詢到我們想要的數據。

+─────+─────────+──────────────+
| id  | name    | city         |
+─────+─────────+──────────────+
| 1   | Mahdi   | Ottawa       |
| 2   | Elon    | Mars         |
| 3   | Jeff    | Orbit        |
| 4   | Klay    | Oakland      |
| 5   | Lebron  | Los Angeles  |
+─────+─────────+──────────────+

加入存儲的數據規模無法全部存放到內存,或者需要很長的時間才能將數據從磁盤加載到內存呢?如下表中,數據分散在磁盤中,無法完全加載到內存。

+──────────+─────────+───────────────────+
| id       | name    | city              |
+──────────+─────────+───────────────────+
| 1        | Mahdi   | Ottawa            |
| 2        | Elon    | Mars              |
| 3        | Jeff    | Orbit             |
| 4        | Klay    | Oakland           |
| 5        | Lebron  | Los Angeles       |
| ...      | ...     | ...               |
| 1000000  | Steph   | San Francisco     |
| 1001000  | Linus   | Portland          |
+───────+─────────+──────────────────────+

大部分 R&D 立刻想到了,我們需要字典(hash表)以及一種可以不需要掃描磁盤直接定位到正在查詢的指定行的手段。

索引葉子節點提供指定列到索引的映射,它能夠存儲符合條件的行所在的位置。

圖片

RowIDs indexes mapping to table data

這些索引葉子節點是索引列和相應行在磁盤上的位置之間的映射。它提供了一種通過索引列來快速獲取指定行的方法。掃描索引的速度會更快,因為它是你要搜索的列的緊湊表示(更少的字節)。它為你節省了讀取一堆塊來尋找所需數據的時間,而且更便于緩存,進一步加快了整個過程的速度。

這些索引的葉子節點是統一大小的,我們在每個塊中盡可能多地存儲這些葉子節點。由于這種結構需要對數據進行排序(邏輯上,而不是磁盤上的物理排序),我們需要解決必須快速添加和刪除數據的問題。通常我們用一個雙向鏈表來解決這個問題。

這里的好處有兩個:它允許我們向前和向后讀取索引葉子節點,并在我們刪除或添加新行時快速重建索引結構,因為我們只是在修改指針。

由于這些葉子節點在磁盤上并不是按順序排列的,我們需要一種方法來獲得正確的索引葉子節點。

平衡樹(B-Tree)

圖片

B樹 VS B+樹

?「B樹 VS B+樹」

B+樹主要區別是,不在中間節點存儲任何數據。所有的數據引用都鏈接到葉子節點上,這樣可以更好地緩存樹狀結構(中間節點數據規模小更便于緩存索引信息)。

其次,B+樹葉子節點是鏈接的,所以如果你需要做索引掃描,你可以簡單的線性遍歷,而不是向上和向下遍歷整個樹,從磁盤上加載更多的索引數據。

?

在關系型數據庫中,B+樹的結構如下圖:

圖片

數據庫中的B+樹

什么是事務

事務是數據庫操作的基本單位,它要么完全成功要么完全失敗,不可能存在部分成功部分失敗的情況。

數據不一致

在不同數據隔離級別中可能會出現一些數據不一致現象,了解這些現象對于調試你的系統以及了解你的系統能夠容忍什么樣的不一致是至關重要的。

不可重復讀(Non-repeatable reads)

圖片

不可重復讀

如上圖所示,如果你在事務中的兩次后續讀取之間不能獲得一致的數據視圖,就會發生不可重復的讀取。在特定的模式下,數據庫的并發操作可能會出現你剛讀的值被修改,導致不可重復的讀取。

臟讀(Dirty reads)

圖片

臟讀

類似地,當你執行了一次讀取,另一個事務更新了同一行,但沒有提交工作,你執行了另一次讀取,你可以訪問未提交的(臟)值(這不是一個持久的狀態變化,與數據庫的狀態不一致), 就會發生臟讀取。

幻讀(Phantom reads)

圖片

幻讀

幻象讀取是另一種已提交的數據不一致現象,他常發生在處理數據統計的場景。例如,你在一個特定的事務中兩次計算客戶的總數。在兩次連續的讀取之間,另一個客戶注冊或刪除了他們的賬戶(已提交),如果你的數據庫不支持這些事務的范圍鎖,這將導致你得到兩個不同的值。

隔離級別

圖片

SQL標準的四種隔離級別

SQL標準定義了4個標準隔離級別,這些級別可以而且應該被全局配置(如果我們不能可靠地知道隔離級別,就會發生一些奇怪的問題)。

可重復讀(REPEATABLE READ)

在這個隔離級別下,確保在一個事務中多次讀取同一數據時,得到的結果是一致的。

這意味著事務在開始時會創建一個一致的快照,然后在事務結束之前,其他事務對數據的修改不會影響該事務的讀取結果。

在可重復讀級別下,解決了不可重復讀的問題,但可能出現幻讀問題。

串行化(SERIALIZABLE)

這是最高的隔離級別,它確保事務之間的并發執行就像是順序執行一樣。

在這個級別下,事務串行執行,避免了臟讀、不可重復讀和幻讀的問題。

雖然序列化提供了最高的數據一致性,但也犧牲了并發性能,因為事務必須依次執行,不能并行處理。

讀提交(READ COMMITTED)

在這個隔離級別下,一個事務只能讀取到已經提交的數據。這意味著臟讀的問題被解決了,因為事務只能看到其他事務已經提交的數據。

然而,在這個級別下,可能會出現不可重復讀問題。

讀未提交

在這個隔離級別下,一個事務可以讀取到另一個事務尚未提交的數據。這意味著一個事務可能會讀取到臟數據(未經提交的數據),即臟讀。

這個級別提供了最低的隔離性,允許并發事務之間產生相互干擾。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    773

    瀏覽量

    44221
  • 數據庫
    +關注

    關注

    7

    文章

    3845

    瀏覽量

    64603
  • Hash算法
    +關注

    關注

    0

    文章

    43

    瀏覽量

    7408
收藏 人收藏

    評論

    相關推薦

    MobiLink關系數據庫同步系統是什么?

    近年來,隨著移動計算技術的快速發展,智能手機、PDA等移動設備的普遍使用,使得數據同步技術在分布式數據庫系統,特別是在移動數據庫系統中發揮了愈來愈大的作用[1-2]。數據同步技術可以使
    發表于 10-09 06:09

    DCS組態軟件實時數據庫系統的設計

    實時數據庫系統是DCS組態軟件體系結構的關鍵部分。通過分析實時數據庫的特點和DCS系統的使用要求,提出了采取傳統數據庫系統、文件系統和內存
    發表于 03-14 14:15 ?29次下載

    DCS仿真系統的內存-關系數據庫系統的構成

    對內存數據庫關系數據庫進行分析,設計完成內存—關系數據庫系統,并在實際的DCS 仿真系統中進
    發表于 09-07 15:39 ?15次下載

    什么是關系數據庫

    什么是關系數據庫 關系數據庫簡介   關系
    發表于 06-17 07:38 ?9124次閱讀

    數據庫系統輔助測試工具

    提出了一種數據庫系統測試的輔助工具,用于解決規范化管理的數據庫系統測試項目中測試數據構建及測試結果保留效率低下的問題。其具體做法是,采用Excel工作表規范設計輸入
    發表于 09-25 11:21 ?22次下載

    ch1 數據庫系統概論

    該文集包含了數據庫的所有信息,您可以輕松的的學會創建數據庫系統,他另外還有8個文檔。
    發表于 05-18 09:43 ?0次下載

    數據庫系統概論之如何進行關系查詢處理和查詢優化

    本文檔的主要內容詳細介紹的是數據庫系統概論之如何進行關系查詢處理和查詢優化主要內容包括了:1、關系數據庫系統的查詢處理 2、關系數據庫系統的查詢優化 3、代數優化4、物理優化
    發表于 11-15 15:12 ?11次下載
    <b class='flag-5'>數據庫系統</b>概論之如何進行<b class='flag-5'>關系</b>查詢處理和查詢優化

    關系數據庫系統的特點

    關系數據庫系統建立了關系模型,并用它來處理數據關系模型在表中將信息與字段關聯起來(也就是schemas),從而存儲數據
    的頭像 發表于 02-22 15:09 ?8266次閱讀

    數據庫系統的特點

    數據庫系統的特點 (1)數據結構化 數據庫系統實現整體數據的的結構化,這是數據庫的主要特征之一,也是數據
    的頭像 發表于 02-22 16:36 ?6095次閱讀

    數據庫系統的組成要素

    包括操作系統數據庫管理系統及應用程序。數據庫管理系統(databasemanagementsystem,DBMS)是
    的頭像 發表于 02-22 16:39 ?1.5w次閱讀

    數據庫系統的基礎知識點詳細概述

    數據庫應用程序 關系數據庫系統: 是支持關系模型的數據庫系統數據模型的三要素是: 數據結構、
    發表于 10-10 15:19 ?0次下載

    數據庫系統原理與應用教程之關系數據庫的詳細資料說明

    關系數據庫是目前應用最為廣泛的數據庫系統關系數據庫模型特點是:具有嚴格的數學理論基礎,用戶接口比較簡單,可用于并行式數據庫、分布式數據庫
    發表于 10-24 16:16 ?4次下載
    <b class='flag-5'>數據庫系統</b>原理與應用教程之<b class='flag-5'>關系數據庫</b>的詳細資料說明

    數據庫原理的關系代數詳細講解

    關系代數與關系數據庫操作   關系代數是關系數據庫系統查詢語言的理論基礎。
    發表于 10-31 11:53 ?5次下載

    恒訊科技分析:跨境電商網站有哪些數據庫系統是推薦使用的?

    對于跨境電商網站,數據庫系統的選擇非常關鍵,以下是一些推薦使用的數據庫系統: 1、MySQL:MySQL是一個流行的開源關系數據庫管理
    的頭像 發表于 08-12 15:01 ?430次閱讀

    關系數據庫和非關系區別

    關系數據庫和非關系數據庫在多個方面存在顯著差異,主機推薦小編為您整理發布
    的頭像 發表于 01-10 09:58 ?108次閱讀
    主站蜘蛛池模板: 母乳女神春日もな | 久久精品123 | 51成人精品午夜福利AV免费七 | 一区视频免费观看 | 亚洲精品无码国产爽快A片百度 | 无码日韩人妻精品久久蜜桃免费 | 毛片大全网站 | 免费在线观看国产 | 嗯啊快拔出来我是你老师视频 | 色悠久久久久综合欧美99 | 国产 浪潮AV性色四虎 | 色姊姊真舒服 | 麻豆AV久久无码精品九九 | 色就色综合 | 良家人妻无码专区九色颜射 | AAA级精品无码久久久国片 | 国产精品99久久久精品无码 | 暖暖 免费 日本 高清 在线1 | a视频在线观看 | 久久精品成人免费看 | 天天操狠狠操夜夜操 | 99热视频这里只有久久精品 | 国产精品久久久久久亚洲毛片 | 国产激情精品久久久久久碰 | 微拍秒拍99福利精品小视频 | 日本色高清 | 久久精品成人免费看 | AV亚洲精品少妇毛片无码 | 4438成人情人网站 | 中国xxxxxx片免费播放 | 潮 喷女王cytherea | 久草国产在线播放 | 耽美肉文 高h失禁 | JAPANRCEP老熟妇乱子伦视频 | 香蕉 在线播放 | 国产亚洲精品首页在线播放 | 99精品福利视频 | 爽死你个放荡粗暴小淫货漫画 | 差差差差差差差差免费观看 | 亚洲欧美精品无码大片在线观看 | 小莹的性荡生活 |