天天看点

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