Mysql實戰45講第4,5 講學習筆記

2021-09-12 19:51:18 字數 1343 閱讀 3861

二.innodb的索引模型

三.常見問題及答案

優點:雜湊表以key-value 儲存,這種結構適合等值查詢的場景,比如memached以及其他的nosql 引擎。

缺點:做區間查詢,需要全部掃瞄

有序陣列只適用於靜態儲存引擎,比如儲存一些不會修改的資料

優點:有序陣列在 等值查詢和區間查詢的時候表現都不錯。

我們假設有儲存user 的陣列,按照身份證遞增排序。

等值查詢:參照id_card_n2 對應的名字, 用二分法就能得到,時間複雜度o(log(n))

區間查詢:查詢身份證號[id_card_x, id_card_y] 區間的user,先用二分法找到id_card_x, 然後向右遍歷,直到查到第乙個大於id_card_y的身份證號,推出迴圈。

缺點:更新資料的時候比較麻煩,往中間插入乙個記錄就必須挪動後面所有的記錄,成本太高

二叉搜尋樹特點:每個節點的左兒子小於父節點,父節點又小於右兒子。但是實際上大多數的資料庫儲存卻並不使用二叉樹。索引不止存在記憶體中,還要寫到磁碟上。(100 萬節點的平衡二叉樹,樹高20, 一次查詢可能需要訪問20個資料塊, 讀取磁碟20次)這個比較慢,所以 盡量使用n 叉樹。

n叉樹在讀寫上的效能優點 以及適配磁碟的訪問模式,被廣泛的應用在資料庫引擎中。

innodb 使用的b+ 樹索引模型, 所有的資料都儲存在 b+ 樹表中。 每乙個索引在innodb 裡面對應一顆b+ 樹。

mysql> create table t(

id int primary key,

k int not null,

name varchar(16),

index (k))engine=innodb;

r1~r5 的(id,k) 值分別為(100,1),(200,2),(300,3),(500,5),(600,6)

每乙個索引 包含多個page, 下面看一下 b+ tree simplified level

有什麼場景是比較適合用業務字段直接做主鍵的呢?

典型的kv 場景: 1. 只有乙個索引; 2 該索引 必須是唯一索引。

實戰mysql45講 MySQL實戰45講

作者簡介 林曉斌,網名 丁奇 前阿里資深技術專家,曾負責阿里雲rds核心開發團隊和運維團隊,並推動了alisql分支開源。作為活躍的mysql社群貢獻者,丁奇專注於資料儲存系統 mysql原始碼研究和改進 mysql效能優化和功能改進,熱衷於解決mysql疑難問題。課程亮點 你將獲得 前阿里資深技術...

mysql實戰45講筆記 07

07 行鎖功過 怎麼減少行鎖對效能的影響 mysql的行鎖是在引擎層由各個引擎自己實現的,不是所有資料庫都支援行鎖比如myisam 行鎖就是針對資料表中行記錄的鎖。在innodb事務中,行鎖是在需要的時候才加上的,但並不是不需要了就立刻回訪,而是等到事務結束時才釋放,這就是兩階段鎖協議。因此,如果事...

最新MySQL實戰45講教程

目錄 01.基礎架構 一條sql查詢語句是如何執行的?html 01.基礎架構 一條sql查詢語句是如何執行的?01.基礎架構 一條sql查詢語句是如何執行的?pdf 02.日誌系統 一條sql更新語句是如何執行的?html 02.日誌系統 一條sql更新語句是如何執行的?02.日誌系統 一條sql...