日韩欧美视频第二区,秋霞成人午夜鲁丝一区二区三区,美女日批视频在线观看,av在线不卡免费

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 編程學習 >> 數據庫語言 >> 正文

數據庫中的基本數據結構

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2023/5/20

MySQL索引定義:索引(Index) 是幫助MySQL高效獲取數據的數據結構。 提取句子主干, 就可以得到索引的本質: 索引是數據結構。
大部分數據庫系統及文件系統都采用B-Tree或其變種B+Tree作為索引結構

數據結構具體應用場景:

數據庫是如何做到快速檢索的功能。
特別有意思的小例子。
 

mysql索引原理的理解和數據結構

數據結構

B+樹(為什么使用B+數)

  • 所有數據都存儲在磁盤中,讀取數據由于IO問題會讀取慢,如何加快IO速度

IO

  1. 量:減少IO量
    *禁止使用slect ,避免增加不必要的量
  2. 次數:減少IO次數

相關知識點

  • 加入索引(加快查詢速度)
  • 數據結構設計:key、文件編號、當前文件的offset(存在問題:當數據量特別大時,索引所占用的存儲空間也特別大。)
  • 解決方法:索引的數據文件也需要持久化存儲到磁盤中,當需要使用時直接讀取到內存中,加快數據的訪問(分而治之:分塊讀取)
  • 操作系統基本概念:
    1.局部性原理:數據和程序都有聚集成群的傾向,之前被查詢過的數據很快會再次被查詢。冷熱數據(一級緩存,二級緩存的意思)
    2.磁盤預讀:在數據交換時,會有一個基本邏輯單位頁,一般占用空間是4k,每次在進行數據獲取時可以獲取整頁的整數倍。(mysql中innodb的存儲引擎讀取數據會讀取16k show variables like ‘%innodb’)

ket-value格式數據結構存儲:

  1. 哈希表
  2. 樹(二叉樹、BST、AVL、紅黑樹、B樹、B+樹)
    二分支的缺點:深度太深,解決方法:B樹(多叉樹)

B樹

  • 搜索樹
  • 多節點多分支的數
     
    問題:假設磁盤塊存放16條數據,如果是三層樹,最多存放的數據:161616=4096,即48k才存放4096條數據
     

B數存在問題:存放了數據,依然占用空間,如何減少數據,需要用到B+數

B+樹

  • 最下面的葉子節點存放的是順序全量數據
  • 非葉子節點可以不用存放data
     
  • 問題:讀取數據,假設三層樹48k磁盤塊,1000字節為1kb,指針和鍵值占10字節,1行記錄1k 161000/10=160016001600=40960000的數據范圍,即Key鍵值,最下面的只存放一遍數據*
  • 建索引時,key要盡可能少的占用空間
     

索引技術名詞

**回表:**從非聚簇索引跳轉到聚簇索引中查找數據的過程(避免回表操作select * from table )
索引覆蓋當非聚簇索引的葉子節點中包含了查詢需要的所有字段時,不需要回表的過程(推薦使用select id,name from table )
最左匹配:、索引下推

Tags:sql,數據庫,數據結構  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章: 沒有了
  • 請文明參與討論,禁止漫罵攻擊。 昵稱:注冊  登錄
    [ 查看全部 ] 網友評論
    推薦文章
    • 此欄目下沒有推薦文章
    熱門文章
    • 此欄目下沒有熱點文章
    關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁面
    下到頁底
    晶體管查詢
    主站蜘蛛池模板: 禹州市| 屯留县| 南澳县| 河东区| 铜陵市| 互助| 綦江县| 莒南县| 高碑店市| 维西| 鹤壁市| 门头沟区| 福建省| 乌什县| 襄樊市| 琼结县| 庆安县| 福安市| 汝南县| 石阡县| 屏东市| 巴彦淖尔市| 墨竹工卡县| 马公市| 托里县| 出国| 渭南市| 邛崃市| 东阿县| 壶关县| 彩票| 天门市| 金山区| 渭源县| 政和县| 石渠县| 五常市| 湟中县| 青浦区| 三台县| 洛南县|