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
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇