一、儲存引擎
mysql的儲存引擎是mysql底層對於檔案的一種訪問機制。儲存引擎的建立是基於表的。
1.myisam
一、儲存引擎
myisam 是 mysql 的預設儲存引擎。myisam 不支援事務、也不支援外來鍵,支援全文索引。資料檔案和索引檔案放置在不同的目錄(非聚集索引),平均分布 i/o,獲得更快的速度。myisam支援表鎖,表生成三個檔案:
.frm 存放表定義的基本資訊
.myi 存放索引
.myd 存放資料
2.innodb
innodb 支援外來鍵和事務,不支援全文索引,b+樹索引結構,將索引當作資料的一部分(聚集索引),支援行鎖。
3.memory
memory 儲存引擎在記憶體中建立表。每個 memory 表只實際對應乙個磁碟檔案,格式是.frm。memory 型別的表訪問非常得快,因為它的資料是放在記憶體中的。適用於臨時檔案的儲存,不支援text欄位(大文字字段)和blob欄位(型別),若有,則交給myisam處理。
4.archive
archive是歸檔儲存引擎,以1:10的比例先進行壓縮再進行處理,適用於資料量大、查詢較少的檔案,比如日誌檔案。archive儲存引擎僅支援插入和查詢,刪除和修改代價太大。
全文索引和普通索引的區別:
二、索引
不同儲存引擎中的索引
1.myisam
myisam底層使用的是b+樹索引,它是一種多路樹、排序樹。b+樹支援兩種查詢方式,一種是通過分支查詢,另一種是葉子結點順序遍歷。myisam中的索引是一種非聚集索引結構,它的資料和索引是分離開來的,它的葉子結點存放資料位址(唯一標識),分支結點存放區間。
主索引:索引值不能重複(一般為主鍵)
輔助索引:索引值可以重複
2.innodb
innodb的底層也使用的是b+樹索引,不過innodb中的索引是一種聚集索引。它將索引當作資料的一部分,並且它的葉子節點中存放的是真實的資料。
系統建立索引規則:(1)主鍵;(2)唯一鍵;(3)新增隱藏字段,6個位元組長,只能系統操作。autoincreament,可自增長型別,系統自動新增。
主索引:存放資料(鍵不可重複)
輔助索引:不存放資料,存放主索引,通過輔助索引查詢到主索引,通過主索引查詢資料。
索引的建立是基於欄位的。
索引的分類基於字段屬性。
1.普通索引,建立方法:
(1)create index
(2)alter add index
(3)create table(index)
2.主鍵索引
3.唯一索引
4.全文索引
5.組合索引:多個字段共同構成索引值,最左字首原則。
三、事務
事務是一組特定sql語句的集合。事務有四大特性:1.a 原子性,要麼全部執行,要麼不執行;2.c 一致性,完整性約束;3. i 隔離性,消除事務間影響;4.d 永續性,永久儲存。
沒有隔離性的事務會出現的幾種情況:1.髒讀,事務讀取其他事務未提交的結果;2.不可重複讀,事務讀取其他事務不同階段的結果,一般由update引起;3.幻讀,事務讀取其他事務不同階段的結果,一般由insert/delete引起。
事務的隔離級別:1.未提交讀,會出現髒讀、不可重複讀、幻讀;2.已提交讀,會出現不可重複讀、幻讀;3.可重複讀,會出現幻讀;4.可序列化。
解決髒讀:事務未提交對其他事務不可見。
解決不可重複度讀:乙個事務修改時對其他事務透明。
解決幻讀:間歇鎖。
MySQL MySQL儲存引擎
mysql可以將資料以不同的技術儲存在檔案 記憶體 中,這種技術就稱為儲存引擎。每一種儲存引擎使用不同的儲存機制 索引技巧 鎖定水平 最終提供廣泛而不同的功能。myisam innodb memory csvarchive 併發控制 當多個連線對記錄進行修改時保證資料的一致性和完整性。鎖共享鎖 讀鎖...
mysql MySQL儲存IP位址
首先就來闡明一下部分人得反問 為什麼要問ip得怎樣存,直接varchar型別不就得了嗎?其實做任何程式設計都要在功能實現的基礎上最大限度的優化效能。而資料庫設計是程式設計中不可忽略的乙個重要部分,所以巧存ip位址可以一定程度獲得很大提公升。在mysql中沒有直接提供ip型別字段,但如果有兩個函式可以...
MySQL MySQL儲存引擎簡介
引入 在介紹完mysql的邏輯架構之後。我們發現mysql的一大亮點就是它的儲存引擎,我們可以根據我們開發中的實際要求去選用我們需要的儲存引擎進行對資料庫表的儲存操作。但是呢並不是所有的儲存引擎我們都會使用到,下面我們一起來看一下我們經常使用的倆個mysql儲存引擎innodb和myisam。儲存引...