程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> innodb 存儲引擎特性,innodb引擎特性

innodb 存儲引擎特性,innodb引擎特性

編輯:MySQL綜合教程

innodb 存儲引擎特性,innodb引擎特性


使用獨立表空間後,系統表空間存儲什麼內容呢?

 

1.innodb 數據字典信息

  和存儲引擎相關。

  frm 是服務器的數據字典和存儲引擎無關。

2. undo 回滾段。

  可以單獨存儲。

 

INNODB存儲引擎特性

1.事務性存儲引擎。

2.支持ACID特性

redo log 和 undo log

redo log 實現事務的持久性。

包括兩部分:

1.內存中的重做日志緩沖區。

2.文件系統的 ib_logfilex.

show variables like ‘innodb_log_buffer_size’ 字節為單位。

image

內存中 默認 16M.

image

數量由參數innodb_log_files_in_group決定。

image

 

redo log 存放的是提交的事務,undolog 存放的是未提交的事務。

undo log 作用:

1.用於回滾

2.多版本並發控制 (Multi-Version Concurrency Control )

當對表中的數據進行修改時不僅產生redolog 也會產生一定的undo log。

使用rollback時會用到undolog。

redo log 為順序寫入,在數據庫運行時不需要讀取操作。

undo log 需要隨機讀寫。可以存放於SSD 上提升性能。

2.INNODB 支持行級鎖。

行級鎖可以最大程度支持並發。

行級鎖在存儲引擎層實現。

什麼是鎖?

鎖主要作用是管理共享資源的並發訪問,用於實現事務的隔離性。

鎖的類型

共享鎖(讀鎖)

讀鎖相互不會被阻塞。

獨占鎖 (寫鎖)

會阻塞其他的讀鎖和寫鎖。實現事務隔離性。

image

鎖的粒度

1.表級鎖

lock table myinnodb write;

這樣就會阻塞其他讀取。

unlock tables;

2.行級鎖

  在存儲引擎實現,不在服務器層實現。

阻塞和死鎖

什麼是阻塞?

一個事務中的鎖需要等待另外一個事務鎖的資源釋放。

什麼是死鎖?

相互占用對方的等待資源,可以由系統自動處理。

1.按照相同的順序使用資源。

2.增加相關的索引。

3.innodb 狀態檢查。

show engine innodb status; 兩次需要至少間隔30秒。

4.適用場景

  innodb 適合大多數的OLTP應用,支持全文索引和空間函數。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved