文章目录
存储引擎
1、简介
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。
因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(Table Type,即存储和操作此表的类型)。
存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。
在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySQL数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。
2、存储引擎种类
MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等
3、不同的存储引擎有什么区别
主要从以下几点来回答就可以(问题的核心),这个问题我们主要研究的是:MyISAM、InnoDB、Memory这三个引擎的区别,那其实我们下面的表格就已经能说明问题了:
种类 | 锁机制 | B-树索引 | 哈希索引 | 外键 | 事务 | 索引缓存 | 数据缓存 |
---|---|---|---|---|---|---|---|
MyISAM | 表锁 | 支持 | 不支持 | 不支持 | 不支持 | 支持 | 不支持 |
InnoDB | 行锁 | 支持 | 不支持 | 支持 | 支持 | 支持 | 支持 |
Memory | 表锁 | 支持 | 支持 | 不支持 | 不支持 | 支持 | 支持 |
4、查看当前MySQL版本都支持哪些存储引擎
如下命令:
mysql> show engines\G
*************************** 1. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 2. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 3. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
…后面还有很多支持的存储引擎,这里限于篇幅,就不粘贴完整的内容了,Support后面是DEFAULT,表示当前使用的存储引擎,上面是InnoDB。
5、更改存储引擎
(1)可以在创建表的时候指定存储引擎
CREATE TABLE ai (
i BIGINT(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (i)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(2)可以修改已存在表的存储引擎
ALTER TABLE user ENGINE = InnoDB;
(3)修改配置文件
还可以修改配置文件,MySQL Server启动的时候都会加载一个配置文件,windows下是my.ini文件,linux下是my.cnf文件,打开配置文件,在[mysqld]下面添加如下内容,保存,重启MySQL Server服务器,默认就采用配置项指定的存储引擎了。记得操作之后一定要保存再重新启动Mysql服务,需要新建数据库老的数据库用的还是老的存储引擎。