mysql存储引擎:mysql
MySQL服务器采用了模块化风格,各部分之间保持相对独立,尤为体如今存储架构上。存储引擎负责管理数据存储,以及MySQL的索引管理。经过定义的API,MySQL服务器可以与存储引擎进行通讯。目前使用最多的是MyISAM和InnoDB。InnoDB被Oracle收购后,MySQL自行开发的新存储引擎Falcon将在MySQL6.0版本引进。linux
MyISAM引擎是一种非事务性的引擎,提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用。MyISAM中,一个table实际保存为三个文件,.frm存储表定义,.MYD存储数据,.MYI存储索引。sql
InnoDB则是一种支持事务的引擎。因此的数据存储在一个或者多个数据文件中,支持相似于Oracle的锁机制。通常在OLTP(联机事务处理系统(OLTP)也称为面向交易的处理系统,其基本特征是顾客的原始数据能够当即传送到计算中心进行处理,并在很短的时间内给出处理结果。)应用中使用较普遍。若是没有指定InnoDB配置选项,MySQL将在MySQL数据目录下建立一个名为ibdata1的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的日志文件。数据库
建立table时能够经过engine关键字指定使用的存储引擎,若是省略则使用系统默认的存储引擎:服务器
CREATE TABLE t (i INT) ENGINE = MYISAM;架构
查看系统中支持的存储引擎类型:app
1 |
mysql> show engines; |
2 |
| MEMORY | YES | Hash based, stored in memory, useful for temporarytables | |
3 |
| InnoDB | DEFAULT | Supports transactions, row-level locking, andforeign keys | |
4 |
| BerkeleyDB | NO | Supports transactions and page-level locking| |
5 |
| BLACKHOLE | NO | /dev/null storage engine (anything you write toit disappears) | |
6 |
| EXAMPLE | NO | Example storage engine | |
7 |
| ARCHIVE | YES | Archive storage engine | |
8 |
| CSV | NO | CSV storage engine | |
9 |
| ndbcluster | NO | Clustered, fault-tolerant, memory-based tables| |
10 |
| FEDERATED | NO | Federated MySQL storage engine | |
11 |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | |
12 |
| ISAM | NO | Obsolete storage engine |12 rows in set (0.00 sec) |
标准安装程序中只提供部分引擎的支持,若是须要使用其余的存储引擎,须要使用源代码加不一样的参数从新编译。其中DEFAULT代表系统的默认存储引擎,能够经过修改配置参数来变动:ide
default-storage-engine=MyISAM模块化
查看某个存储引擎的具体信息spa
1 |
mysql> show engine InnoDB status\G; |
通常安装系统默认是INNODB
default-storage-engine=INNODB
1.能够在启动数据库服务器时在命令行后面加上–default-storage-engine或–default-table-type选项。
2.更灵活的方式是在随MySQL服务器发布同时提供的MySQL客户端时指定使用的存储引擎。最直接的方式是在建立表时指定存储引擎的类型,向下面这样:
1 |
CREATE TABLE mytable (id int, titlechar(20)) ENGINE = INNODB |
修改表的存储引擎:
1 |
ALTER TABLE engineTest ENGINE = INNODB; |
修改默认存储引擎:
在mysql配置文件(linux下为/etc/my.cnf),在mysqld后面增长default-storage-engine=INNODB便可。
可是若是表创建的时候是MyISAM,要更改整个数据库表的存储引擎,通常要一个表一个表的修改,比较繁琐,能够采用先把数据库导出,获得SQL,把MyISAM修改为INNODB,再导入的方式。