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”,修改完成后
需要重启一下服务,修改才能生效。
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 | 有 | 有 |
空间使用 | 高 | 低 | 低 |
内存使用 | 高 | 低 | 高 |
插入数据的速度 | 低 | 高 | 高 |
对外键的支持 | 支持 | 无 | 无 |
本文出自 “11978551” 博客,请务必保留此出处http://11988551.blog.51cto.com/11978551/1879819
原文地址:http://11988551.blog.51cto.com/11978551/1879819