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