MySql高階部分總結(一)

2021-10-07 08:43:59 字數 1985 閱讀 2165

對比項myisam

innodb

外來鍵不支援

支援事務

不支援支援

行/表鎖

表鎖,即使操作一條記錄也會鎖住整個表,不適合高併發的操作

行鎖,操作時只鎖某一行,不對其它行有影響,

適合高併發的操作

快取只快取索引,不快取真實資料

不僅快取索引還要快取真實資料,對記憶體要求較高,而且記憶體大小對效能有決定性的影響

關注點節省資源、消耗少、簡單業務

併發寫、事務、更大資源

預設安裝是是

預設使用否是

自帶系統表使用是否

b+tree與b-tree 的區別

1)b-樹的關鍵字和記錄是放在一起的,葉子節點可以看作外部節點,不包含任何資訊;b+樹的非葉子節點中只有關鍵字和指向下乙個節點的索引,記錄只放在葉子節點中。

2)在b-樹中,越靠近根節點的記錄查詢時間越快,只要找到關鍵字即可確定記錄的存在;而b+樹中每個記錄的查詢時間基本是一樣的,都需要從根節點走到葉子節點,而且在葉子節點中還要再比較關鍵字。從這個角度看b-樹的效能好像要比b+樹好,而在實際應用中卻是b+樹的效能要好些。因為b+樹的非葉子節點不存放實際的資料,這樣每個節點可容納的元素個數比b-樹多,樹高比b-樹小,這樣帶來的好處是減少磁碟訪問次數。儘管b+樹找到乙個記錄所需的比較次數要比b-樹多,但是一次磁碟訪問的時間相當於成百上千次記憶體比較的時間,因此實際中b+樹的效能可能還會好些,而且b+樹的葉子節點使用指標連線在一起,方便順序遍歷(例如檢視乙個目錄下的所有檔案,乙個表中的所有記錄等),這也是很多資料庫和檔案系統使用b+樹的緣故。 

思考:為什麼說b+樹比b-樹更適合實際應用中作業系統的檔案索引和資料庫索引? 

1) b+樹的磁碟讀寫代價更低 

b+樹的內部結點並沒有指向關鍵字具體資訊的指標。因此其內部結點相對b 樹更小。如果把所有同一內部結點的關鍵字存放在同一盤塊中,那麼盤塊所能容納的關鍵字數量也越多。一次性讀入記憶體中的需要查詢的關鍵字也就越多。相對來說io讀寫次數也就降低了。 

2)b+樹的查詢效率更加穩定

由於非終結點並不是最終指向檔案內容的結點,而只是葉子結點中關鍵字的索引。所以任何關鍵字的查詢必須走一條從根結點到葉子結點的路。所有關鍵字查詢的路徑長度相同,導致每乙個資料的查詢效率相當。

聚簇索引並不是一種單獨的索引型別,而是一種資料儲存方式。

術語『聚簇』表示資料行和相鄰的鍵值聚簇的儲存在一起。

如下圖,左側的索引就是聚簇索引,因為資料行在磁碟的排列和索引排序保持一致。

聚簇索引的好處:

按照聚簇索引排列順序,查詢顯示一定範圍資料的時候,由於資料都是緊密相連,資料庫不不用從多個資料塊中提取資料,所以節省了大量的io操作。

聚簇索引的限制:

對於mysql資料庫目前只有innodb資料引擎支援聚簇索引,而myisam並不支援聚簇索引。

由於資料物理儲存排序方式只能有一種,所以每個mysql的表只能有乙個聚簇索引。一般情況下就是該錶的主鍵。

為了充分利用聚簇索引的聚簇的特性,所以innodb表的主鍵列盡量選用有序的順序id,而不建議用無序的id,比如uuid這種。

a、innodb在接受到一條update語句後,會先根據條件找資料所在的頁,如果有快取,先用快取(mysql8.0以前),如果沒有就直接查詢再把該頁放到快取buffer pool;

b、執行update語句,修改快取buffer pool中的資料;

c、針對update語句生成乙個redolog日誌,並存入log buffer中;

d、針對update語句生產乙個undolog日誌,用於事務回滾;

e、如果事務提交了,那麼把redolog日誌持久化,後續還有其他機制將buffer pool中修改的資料頁持久化到磁碟中;

f、如果事務回滾,則將undolog日誌回滾。

Mysql 下部分總結

1.列出mysql支援的所有字符集 show character set 2.當前mysql伺服器字符集設定 show variables like character set 3.當前mysql伺服器字符集校驗設定 show variables like collation 4.顯示某資料庫字符集...

MYSQL優化部分總結

設計好mysql的索引可以讓你的資料庫飛起來,大大的提高資料庫效率。設計mysql索引的時候有一下幾點注意 1,建立索引 對於查詢佔主要的應用來說,索引顯得尤為重要。很多時候效能問題很簡單的就是因為我們忘了新增索引而造成的,或者說沒有新增更為有效的索引導致。如果不加索引的話,那麼查詢任何哪怕只是一條...

物件導向高階特性部分總結

繼承規則 在構造方法中,呼叫構造方法可以使用this和super關鍵字。package test2 author xiaochen public class animal public animal string string public void test package test2 autho...