MySQL入门学习笔记之存储引擎

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL入门学习笔记之存储引擎相关的知识,希望对你有一定的参考价值。

1、什么是存储引擎?

存储引擎就是指表的类型,数据库的存储引擎决定了表在计算机中的存储方式。而存储引擎的概念是mysql的特点,是一种插入式的存储引擎概念。MySQL数据库中的表可以使用不同的方式存储。

 

2、如何查看MySQL 中支持的存储引擎?

       在命令行中输入: SHOW ENGINES;

mysql>SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | 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         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

        在命令后面通过参数 \G’可以调整数据的输出格式,使得显示更加直观。

        mysql> SHOW ENGINES \G

mysql>SHOW ENGINES \G

*************************** 1. row ***************************
      Engine: FEDERATED
     Support: NO
     Comment: Federated MySQL storage engine
Transactions: NULL
          XA: NULL
  Savepoints: NULL
*************************** 2. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 3. row ***************************
      Engine: MyISAM
     Support: YES
     Comment: MyISAM storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 4. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 5. row ***************************
      Engine: CSV
     Support: YES
     Comment: CSV storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 6. row ***************************
      Engine: MEMORY
     Support: YES
     Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 7. row ***************************
      Engine: ARCHIVE
     Support: YES
     Comment: Archive storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 8. row ***************************
      Engine: InnoDB
     Support: DEFAULT
     Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
          XA: YES
  Savepoints: YES
*************************** 9. row ***************************
      Engine: PERFORMANCE_SCHEMA
     Support: YES
     Comment: Performance Schema
Transactions: NO
          XA: NO
  Savepoints: NO
9 rows in set (0.00 sec)

 查询结果参数说明:

         Engine参数:表示存储引擎的名称

         Support参数:表示是否支持该类型的存储引擎,YES表示支持,NO表示不支持。

         Comment参数:对该引擎的一些描述。

        Transactions 参数:表示是否支持事务处理,YES表示支持,NO不支持。

XA参数:表示是否遵循分布式交易处理的XA规范,YES 支持,NO不支持。

Savepoints参数:表示是否支持保存点,可以使事务回滚到保存点,yes表示支持。

其它方法查询:

      mysql> SHOW  VARIABLES LIKE ‘have%‘

查询结果如下:

mysql>SHOW VARIABLES LIKE ‘have%‘;
+----------------------+----------+
| Variable_name        | Value    |
+----------------------+----------+
| have_compress        | YES      |
| have_crypt           | NO       |
| have_dynamic_loading | YES      |
| have_geometry        | YES      |
| have_openssl         | DISABLED |
| have_profiling       | YES      |
| have_query_cache     | YES      |
| have_rtree_keys      | YES      |
| have_ssl             | DISABLED |
| have_symlink         | YES      |
+----------------------+----------+
10 rows in set (0.00 sec)

参数说明:Variable_name表示存储引擎的名称, Value表示MySQL的支持情况

YES 表示支持,NO表示不支持,DISABLED 表示支持但没有开启。


查看默认支持的存储引擎:

Mysql> SHOW VARIABLE LIKE ‘storage_engine‘;

mysql>SHOW VARIABLES LIKE ‘storage_engine‘;
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| storage_engine | InnoDB |
+----------------+--------+
1 row in set (0.00 sec)

从输出结果中看出,本版本中用的默认存储引擎为InnoDB

注意:本实验中用到的mysql版本为5.6,在使用5.7的版本输入该命令时,发现

不能输出,出现警告信息,原因未知。

可以 通过修改MySQL的配置文件,来修改MySQL中默认的存储引擎,在my.ini文件

中将"default-storage-engine=INNODB"改为“default-storage-engine=MyISAM,修改完成后

需要重启一下服务,修改才能生效。

 

3InnoDB存储引擎

InnoDB MySQL数据库中的默认的存储引擎,InnoDBMySQL表提供了事务、回滚、崩溃修

复能力 和多版本并发控制的事务安全

特点:

        1> 支持自增长列AUTO_INCREMENT ,自增长列不能为空,而且值必须唯一,在MySQL中规定自增长列必须为主键。

       2> 支持外键FOREIGN KEY 外键所在的表为子表,外键所依赖的表为父表。父表中被子表

外键关联 的字段必须为主键。当删除、更新父表中的某条信息时,子表也必须有相应的改变。

       3> InnoDB存储引擎创建的表的表结构存储在.frm文件中。数据和索引存储在innodb_data_home_dirinnodb_data_file_path定义的表空间中。

优点:提供良好的事务管理、崩溃修复能力和并发控制。

缺点 读写效率稍差,占用的数据空间相对较大。

 

4 MyISAM存储引擎

特点:MyISAM存储引擎的表存储为3个文件。文件名与表名相同。扩展名包括frmMYD

MYI frm为扩展名的文件存储表的结构,MYD为扩展名的文件存储数据,MYI为扩展名的文件存储索引。

优点:占用空间小。处理速度快。

缺点:不支持事务的完整性和并发性。

5MEMORY 存储引擎

    MEMORY存储引擎是存储在内存中的内容来创建表,所有的数据都是放在内存中的。每个MEMORY存储引擎的表对应一个磁盘文件。文件名与表名相同,类型为frm 该文件只存储表的结构。数据文件是存储在内存当中的,有利于数据的快速处理,提高整个表的处理效率。

 

6InnoDB MyISAMMEMORY三种存储引擎的对比

1 3种存储引擎的对比

 

特性

InnoDB

MyISAM

MEMORY

事务安全

支持

存储限制

64TB

空间使用

内存使用

插入数据的速度

对外键的支持

支持

 

本文出自 “11978551” 博客,请务必保留此出处http://11988551.blog.51cto.com/11978551/1879819

以上是关于MySQL入门学习笔记之存储引擎的主要内容,如果未能解决你的问题,请参考以下文章

Drill 学习笔记之 入门体验

MySQL学习笔记 - 存储引擎概述

MySQL基础入门学习14存储引擎

《MySQL技术内幕 InnoDB存储引擎 》学习笔记

MySQL学习笔记 - MyISAM存储引擎

Mysql索引学习笔记