本文共 1726 字,大约阅读时间需要 5 分钟。
存储引擎是关系数据库中的核心组件,它决定了数据如何存储、如何为数据建立索引、如何更新和查询数据等技术的实现方式。在关系数据库中,数据以表的形式存储,因此存储引擎也被称为表类型。它定义了数据存储和操作的机制。
在Oracle和SQL Server等数据库中,只有一种存储引擎,所有数据存储管理机制都是一致的。而MySQL提供了多种存储引擎,用户可以根据需求为数据表选择不同的存储引擎,甚至可以编写自己的存储引擎。
MySQL默认使用InnoDB存储引擎,从MySQL 5.5.8版本开始InnoDB成为默认存储引擎。InnoDB支持事务,其设计目标主要面向在线事务处理(OLTP)应用。其特点包括:
MyISAM存储引擎不支持事务,主要面向OLAP数据库应用。其特点包括:
NDB存储引擎是MySQL的一个集群存储引擎,采用共享没有的集群架构,提供高可用性和高扩展性。其特点包括:
Memory存储引擎的数据完全存放在内存中,适合临时数据表和数据仓库维度表。其默认使用哈希索引,而不是B+树索引。
Infobright存储引擎以列存储为特点,适合OLAP数据仓库应用。其官方网站为http://www.infobright.org/。
NTStore存储引擎由网易公司开发,目前不支持事务,但提供压缩和行级缓存功能。
BLACKHOLE存储引擎用于主备复制中的分发主库,所有插入数据都会被丢失。
可以在创建表时指定存储引擎:
MariaDB [db1]> create table innodb_t1(id int,name char) engine=innodb;MariaDB [db1]> create table innodb_t2(id int) engine=innodb;MariaDB [db1]> show create table innodb_t1;MariaDB [db1]> show create table innodb_t2;
在/etc/my.cnf
中设置:
[mysqld]default-storage-engine=INNODBinnodb_file_per_table=1
[root@duoduo db1]# ls /var/lib/mysql/db1/db.opt innodb_t1.frm innodb_t1.ibd innodb_t2.frm innodb_t2.ibd
创建四个表,分别使用InnoDB、MyISAM、Memory、BLACKHOLE存储引擎,进行插入数据测试:
MariaDB [db1]> create table t1(id int) engine=innodb;MariaDB [db1]> create table t2(id int) engine=myisam;MariaDB [db1]> create table t3(id int) engine=memory;MariaDB [db1]> create table t4(id int) engine=blackhole;
注意:Memory存储引擎在MySQL重启或机器重启后会丢失数据,BLACKHOLE存储引擎插入数据会被丢失。
转载地址:http://qcbfk.baihongyu.com/