天天看點

MySQL存儲引擎及InnoDB并發控制介紹

MySQL存儲引擎采用了可插拔的結構,即使用者可以根據自己的需要來選擇不同的存儲引擎。

下表是MySQL不同的存儲引擎的不同的特性:

<b>Feature</b>

<b>MyISAM</b>

<b>BDB</b>

<b>Memory</b>

<b>InnoDB</b>

<b>Archive</b>

<b>NDB</b>

Storage limits

256TB

No

Yes

64TB

384EB[4]

Transactions

Locking granularity

Table

Page

Row

MVCC (snapshot read)

Geospatial support

Yes[1]

B-tree indexes

Hash indexes

Full-text search indexes

Clustered indexes

Data caches

N/A

Index caches

Compressed data

Encrypted data[2]

Cluster database support

Replication support[3]

Foreign key support

Backup / point-in-time recovery[3]

Query cache support

Update statistics for data dictionary

下面列舉幾個常用的存儲引擎:

l         MyISAM:MySQL預設的存儲引擎,它主要用于大多數的Web、資料倉庫和其它應用中。可以通過資料庫配置檔案中的storage_engine選項來改變預設的存儲引擎。

l         InnoDB:主要用于事務處理應用,并且支援事務的ACID特性和外鍵。

l         BDB:支援COMMIT,ROLLBACK和其它事務特性。

在建立表或修改表的時候,都可以指定需要使用的存儲引擎:

InnoDBBDBInnoDB

InnoDBMVCCCOMMIT, ROLLBACKsvepoints

BDBCOMMITROLLBACK

MySQLInnoDB

InnoDBInnoDBInnoDBMyISAM

InnoDBrowid

InnoDB

l         S

l         X

T1t

l         T2tST1T2tS

l         T2tX

T1tXt

l         ISTTS

l         IXTTX

l         SIS

l         XIX

1,0

X

IX

S

IS

1

InnoDBREPEATABLE READInnoDBSQL

InnoDBSELECT

REPEATABLE READ

DROP TABLE ALTER TABLEDROP TABLEMYSQLALTER TABLEMYSQL

<b>Next-Key Locking</b>

InnoDBnext-key lockingSX

InnoDBgapRSXR

InnoDB6-byte7-byte(roll pointer)undoundo

InnoDBundo

undoInnoDB

undo

本文轉自holy2009 51CTO部落格,原文連結:http://blog.51cto.com/holy2010/370158