MySQL存储引擎介绍
存储引擎是和数据磁盘打交道的一个模块,我们平时对于数据的存贮都是基于存储引擎来完成的,相当于和数据磁盘的一个媒介(桥梁)。
- 文件系统
-- 操作系统组织和存取数据的一种机制。
-- 文件系统是一种软件 - 类型:ext2 3 4 ,xfs 数据
-- 不管使用什么文件系统,数据内容不会变化
-- 不同的是,存储空间、大小、速度。 - MySQL引擎:
-- 可以理解为,MySQL的“文件系统”,只不过功能更加强大。 - MySQL引擎功能:
-- 除了可以提供基本的存取功能,还有更多功能事务功能、锁定、备份和恢复、优化以及特殊功能。
MySQL存储引擎种类
- MySQL 提供以下存储引擎:
-- InnoDB (最常用)
-- MyISAM (最常用)
-- MEMORY
-- ARCHIVE
-- FEDERATED
-- EXAMPLE
-- BLACKHOLE
-- MERGE
-- NDBCLUSTER
-- CSV - 还可以使用第三方存储引擎
-- TokuDB (zabbix使用频繁,insert操作效率高)
Innodb功能总览
功能 |
支持 |
功能 |
支持 |
存储限制 |
64 TB |
索引高速缓存 |
是 |
MVCC |
是 |
数据高速缓存 |
是 |
B 树索引 |
是 |
自适应散列索引 |
是 |
群集索引 |
是 |
复制[c] |
是 |
压缩数据 |
是[a] |
更新数据字典 |
是 |
加密数据[b] |
是 |
地理空间数据类型 |
是 |
查询高速缓存 |
是[c] |
地理空间索引 |
否 |
事务 |
是 |
全文搜索索引 |
是 |
锁定粒度 |
行 |
群集数据库 |
否 |
外键 |
是 |
备份和恢复[c] |
是 |
文件格式管理 |
是 |
快速索引创建 |
是 |
多个缓冲区池 |
是 |
PERFORMANCE_SCHEMA |
是 |
更改缓冲 |
是 |
自动故障恢复 |
是 |
查看数据库的存储引擎设置
- 使用 SELECT 确认会话存储引擎:
mysql> SELECT @@default_storage_engine; +--------------------------+ | @@default_storage_engine | +--------------------------+ | InnoDB | +--------------------------+ 1 row in set (0.00 sec)
- 使用 SHOW 确认每个表的存储引擎:
mysql> SHOW CREATE TABLE city\G *************************** 1. row *************************** Table: city Create Table: CREATE TABLE `city` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Name` char(35) NOT NULL DEFAULT '', `CountryCode` char(3) NOT NULL DEFAULT '', `District` char(20) NOT NULL DEFAULT '', `Population` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`), KEY `CountryCode` (`CountryCode`), CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `country` (`Code`) ) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1 1 row in set (0.00 sec)
- 使用 INFORMATION_SCHEMA 确认每个表的存储引擎:
mysql> SELECT TABLE_NAME, ENGINE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'world'\G *************************** 1. row *************************** TABLE_NAME: city ENGINE: InnoDB *************************** 2. row *************************** TABLE_NAME: country ENGINE: InnoDB *************************** 3. row *************************** TABLE_NAME: countrylanguage ENGINE: InnoDB 3 rows in set (0.00 sec)
- 查看数据库支持的存储引擎:
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.00 sec)
设置存储引擎
- 在启动配置文件中设置服务器存储引擎:
[mysqld] default-storage-engine=<Storage Engine>
- 使用 SET 命令为当前客户机会话设置:
SET @@storage_engine=<Storage Engine>;
- 在 CREATE TABLE 语句指定:
CREATE TABLE t (i INT) ENGINE = <Storage Engine>;
最后修改于 2019-08-08 09:37:48
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

