设为首页 收藏本站
查看: 436|回复: 0

[经验分享] MySQL入门学习笔记之存储引擎

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-7 09:05:29 | 显示全部楼层 |阅读模式
1、什么是存储引擎?
存储引擎就是指表的类型,数据库的存储引擎决定了表在计算机中的存储方式。而存储引擎的概念是MySQL的特点,是一种插入式的存储引擎概念。MySQL数据库中的表可以使用不同的方式存储。

2、如何查看MySQL 中支持的存储引擎?
       在命令行中输入: SHOW ENGINES;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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> SHOWENGINES \G
mysql>SHOW ENGINES \G
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
*************************** 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%'
查询结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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';
1
2
3
4
5
6
7
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”,修改完成后
需要重启一下服务,修改才能生效。

3、InnoDB存储引擎
InnoDB 是MySQL数据库中的默认的存储引擎,InnoDB给MySQL表提供了事务、回滚、崩溃修
复能力 和多版本并发控制的事务安全 。
特点:
        1> 支持自增长列AUTO_INCREMENT ,自增长列不能为空,而且值必须唯一,在MySQL中规定自增长列必须为主键。
      2> 支持外键FOREIGN KEY 外键所在的表为子表,外键所依赖的表为父表。父表中被子表
外键关联 的字段必须为主键。当删除、更新父表中的某条信息时,子表也必须有相应的改变。
      3> InnoDB存储引擎创建的表的表结构存储在.frm文件中。数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。
优点:提供良好的事务管理、崩溃修复能力和并发控制。
缺点: 读写效率稍差,占用的数据空间相对较大。

4、 MyISAM存储引擎
特点:MyISAM存储引擎的表存储为3个文件。文件名与表名相同。扩展名包括frm、MYD、
MYI 。frm为扩展名的文件存储表的结构,MYD为扩展名的文件存储数据,MYI为扩展名的文件存储索引。
优点:占用空间小。处理速度快。
缺点:不支持事务的完整性和并发性。
5、MEMORY 存储引擎
    MEMORY存储引擎是存储在内存中的内容来创建表,所有的数据都是放在内存中的。每个MEMORY存储引擎的表对应一个磁盘文件。文件名与表名相同,类型为frm 该文件只存储表的结构。数据文件是存储在内存当中的,有利于数据的快速处理,提高整个表的处理效率。

6、InnoDB 、MyISAM、MEMORY三种存储引擎的对比
表1 3种存储引擎的对比

特性
InnoDB
MyISAM
MEMORY
事务安全
支持
存储限制
64TB
空间使用
内存使用
插入数据的速度
对外键的支持
支持



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-310779-1-1.html 上篇帖子: mysql 5.6 myisam 引擎表损坏 下篇帖子: mysql启动之:报错解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表