mysql 知识整理(待续)
生活随笔
收集整理的這篇文章主要介紹了
mysql 知识整理(待续)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1:MySQL 索引的數據結構有那些
- 2:MySQL的存儲引擎有哪些
- 3:InnoDB 是否支持hash
- 4:擾動函數
- 5:hash表的索引結構
- 6:二叉樹,紅黑樹的索引結構
- 10:最左匹配
- 12:MRR
- 13:FIC
1:MySQL 索引的數據結構有那些
- B 樹
- B + 樹
- hash 索引
2:MySQL的存儲引擎有哪些
show engines;- innoDB -B +
- MyISAM - B+
- MEMORY - hash
3:InnoDB 是否支持hash
- 支持自適應的hash
- 索引是系統自動幫我們創建的
- 用戶是沒辦法干預的
- InnoDB
- emp.frm 存儲的數據的結構
- emp.ibd 存儲的實際數據文件 {真實數據文件+ 索引}
- MyISAM
- emp.frm 存儲的數據結構
- emp.MYD mydata,實際的數據
- emp.MYI myindex,實際的索引
4:擾動函數
- 16 個位置 ,實際上只需要了最后的四位
- 所以我們要讓高位向右移動,散列的更加均勻一些
5:hash表的索引結構
- hash需要將所有的數據文件添加到內存中,比較消耗內存空間
- 如果所有的查詢都是等值查詢,那么hash確定很快,但是實際工作中用的更多的是范圍查詢,而不是等值查詢,因此,這種hash就不太合適了
- MEMORY存儲引擎使用
- 占內存,我不怕
- hash算法比較麻煩,我是用一個比較通用的算法
- 保證盡可能的都是等值查詢
6:二叉樹,紅黑樹的索引結構
- 樹的深度過深,而造成 I/O 的次數變多,影響數據的讀取效率
- AVL 樹和 紅黑樹基本是在基于內存情況才會使用的數據結構
- InnoDB 默認一次取得是 16K 的數據
- 減少 I/O 的次數
- 減少 I/O 的大小
- mysql 中有一個服務層,每次從存儲引擎中把數據取出來,在服務層進行篩選之后,返回客戶端
10:最左匹配
- 回表
- 使用二級索引,或者是輔助索引的時候
- 先查 name字段的B +樹,得到ID 之后
- 再查 主鍵的 B+ 樹
- 索引覆蓋
- select * from table where name = ‘jiang’ 需要回表
- select id from table where name = ‘jiang’ 不需要回表
- 最左匹配
- 在組合索引的時候使用,例如name 和 age 建立聯合索引
- 1 2 4 走索引
-
優化器
- CBO
- RBO
12:MRR
- mult_rang read
- 給了一千個ID ,我們可以先進行排序,這樣我們就可以進行范圍的查詢
- 加快速度,不必要一個一個的進行查詢
13:FIC
- fast index create
- 插入和刪除數據
- 先創建臨時的表格,把數據導入到臨時表
- 把原始表刪除
- 修改臨時表的名字
- 給當前添加一個Share鎖,不會有創建臨時文件的消耗,但是在操作源文件的時候,如果此時有人發起DML操作,就會造成數據的不一致現象。所以讀寫是沒有問題的,但是在DML還是有問題
總結
以上是生活随笔為你收集整理的mysql 知识整理(待续)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 归并排序相关题目(待编辑)
- 下一篇: 服务端第三次课程:面向切面编程AOP