MySQL数据库存储引擎
MySQL数据库是一种关系型数据库,数据时存放在数据库中的一张一张的表中的,各个表之间或有关联,表中的每行相关,每列是不相关。这是关系型数据库的基本存储方式。
MySQL存储引擎是为了在各种不同的条件下对数据存放的可靠性、关联性、读写等方面做出的一个可供选择的存储模式。
当前使用较多的MySQL存储引擎主要有以下几个,MyISAM,InnoDB,BdB,Memory等,这些存储引擎主要在以下几个方面有所区分,锁定水平、处理方式、存储方式和索引技巧方面有所不同。
mysql下显示存储引擎和更改存储引擎的方法都很简单
show engines;显示所支持的
alter table tablename engine = whichengine;修改存储引擎
create table tablename (id int,name char(15)) engine = whichengine;新建时更改
常见存储引擎的区别:
1>MyISAM:它的前身是ISAM,它是ISAM的扩展,支持ISAM所不支持的索引和字段管理功能,它的特点是表锁定,可以处理高并发的读写操作,是默认的存储引擎。
2>InnoDB和BdB:这两个存储引擎是唯一可支持事务处理的存储引擎,区别是InnoDB是行锁定的而BDB是页锁定的。
3>Memory:听名字就知道这是一个用内存来暂存数据的存储模式,读写效率自然不用说,但在数据库关闭的时候数据会全部丢失。
三种锁定水平:
1>表锁定:为了防止多个用户同时更新一张表,表锁定在数据更新的时候它会锁定整个表,所以在多用户访问时会造成很大延时,所以并发性差,但开销小。
2>行锁定:因为表锁定的低并发,所以产生了行锁定,在访问数据库时对数据库的每一行进行锁定,可以使得访问不同行的用户同时访问同一张表,但它的开销大,并且还会造成死锁。(对于为什么会产生死锁的分析这里给出一个博客链接说的很尽http://www.cnblogs.com/bamboos/p/3532150.html)
3>页锁定:在行锁定和表锁定的中间生存着的便是页锁定了,它是折中方式。