一、MySQL引擎种类
(一)、InnoDB
1、InnoDB简介
InnoDB是my默认引擎,支持事务,in的数据存储在表空间(tablespace)中,通过间隙锁(next-key locking)防止幻读。
2、InnoDB特点
(1)In内部做了很多优化,in基于聚簇索引建立表,对主键查询有很高的性能。
(2)读取数据时,能够在内存中创建hash索引加速插入缓冲区,读取数据时采取可预读。
(3)支持热备份,my其他引擎不支持这一功能。
(二)、MyISAM
1、MyISAM简介
MyISAM是my5.1之前版本的默认引擎,支持全文索引、压缩、空间函数,但不支持事务及行级锁,适用于只读数据、表小可忍受修复操作的应用场景。
2、MyISAM特点
(1)MyISAM存储把表存放到两个文件中:数据文件和索引文件。
(2)MyISAM支持对整张表进行加锁,但不支持行加锁。
(3)MyISAM压缩表,针对某些不再修改的表数据,使用MyISAM将表进行压缩,以减少磁盘I/O操作,提高查询效率。
(三)、CSV
CSV引擎可以将普通的CSV文件作为Mysql表处理,在数据库运行时拷入拷出文件,另外也可将excel等形式文件转储成CSV,再通过Mysql的CSV引擎处理成mysql表类型。作为一种数据交换机制,非常实用。
(四)、Memory
Memory引擎是将所有的数据保存到内存中,不需要进行磁盘I/O,它所存储的数据主要是保存和查找数据处理时的中间数据,重启数据就清空。如果Mysql执行过程中,需要临时表来保存中间结果,内部使用的临时表便是Memory表。
(五)、NDB Cluster
NDB集群索引是mysql公司在收购了NDB数据库后开发的,支持分布式、容灾、高可用的数据库索引。
二、引擎相关操作
1、查看mysql当前版本引擎
使用命令show enginses;查看mysql引擎
5.1版本中的mysql 引擎:
![](https://img-blog.csdn.net/20160607145948669?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
5.7版本中的mysql 引擎(可通过mysql客户端执行命令查看):
![](https://img-blog.csdn.net/20160607150009122?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2、指定mysql引擎
方法一:修改my.cnf配置文件
![](https://img-blog.csdn.net/20160607150111767?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2、在创建库/表时指定引擎
CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB
ALTER TABLE mytable ENGINE = MyISAM
(一)、InnoDB
1、InnoDB简介
InnoDB是my默认引擎,支持事务,in的数据存储在表空间(tablespace)中,通过间隙锁(next-key locking)防止幻读。
2、InnoDB特点
(1)In内部做了很多优化,in基于聚簇索引建立表,对主键查询有很高的性能。
(2)读取数据时,能够在内存中创建hash索引加速插入缓冲区,读取数据时采取可预读。
(3)支持热备份,my其他引擎不支持这一功能。
(二)、MyISAM
1、MyISAM简介
MyISAM是my5.1之前版本的默认引擎,支持全文索引、压缩、空间函数,但不支持事务及行级锁,适用于只读数据、表小可忍受修复操作的应用场景。
2、MyISAM特点
(1)MyISAM存储把表存放到两个文件中:数据文件和索引文件。
(2)MyISAM支持对整张表进行加锁,但不支持行加锁。
(3)MyISAM压缩表,针对某些不再修改的表数据,使用MyISAM将表进行压缩,以减少磁盘I/O操作,提高查询效率。
(三)、CSV
CSV引擎可以将普通的CSV文件作为Mysql表处理,在数据库运行时拷入拷出文件,另外也可将excel等形式文件转储成CSV,再通过Mysql的CSV引擎处理成mysql表类型。作为一种数据交换机制,非常实用。
(四)、Memory
Memory引擎是将所有的数据保存到内存中,不需要进行磁盘I/O,它所存储的数据主要是保存和查找数据处理时的中间数据,重启数据就清空。如果Mysql执行过程中,需要临时表来保存中间结果,内部使用的临时表便是Memory表。
(五)、NDB Cluster
NDB集群索引是mysql公司在收购了NDB数据库后开发的,支持分布式、容灾、高可用的数据库索引。
二、引擎相关操作
1、查看mysql当前版本引擎
使用命令show enginses;查看mysql引擎
5.1版本中的mysql 引擎:
5.7版本中的mysql 引擎(可通过mysql客户端执行命令查看):
2、指定mysql引擎
方法一:修改my.cnf配置文件
(1)如果不太清楚mysql的my.cnf配置文件存放位置,可通过 sudo find /-name my.cnf查找该文件路径。
(2)修改如下:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-storage-engine=MyISAM
(3)使用service mysqld start 命令,重启mysql服务;查看engine类型
2、在创建库/表时指定引擎
CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB
ALTER TABLE mytable ENGINE = MyISAM