MySQL-存储引擎

  • 连接管理,查询缓存,查询优化 等不影响真实数据存储的功能划分为MySQL Server 功能
  • 将真实存取数据的功能划分为 存储引擎,存储引擎即表的类型

1、查看存储引擎

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | 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         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.37 sec)

  • Engine:表示存储引擎名称
  • Support:表示MySQL数据库管理系统是否支持该存储引擎,yes表示支持,no表示不支持
  • default:表示系统默认支持的存储引擎
  • Comment:表示对存储引擎的描述
  • Transactions:表示存储引擎是否支持事务,yes表示支持,no表示不支持
  • XA:表示存储引擎是否支持分布式事务,yes表示支持,no表示不支持
  • SavePoints:表示存储引擎是否支持部分事务回滚,yes表示支持,no表示不支持

2、默认存储引擎

  • 查看默认存储引擎,执行以下命令
mysql> show variables like '%default_storage_engine%';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.01 sec)

或

mysql> select @@default_storage_engine;
+--------------------------+
| @@default_storage_engine |
+--------------------------+
| InnoDB                   |
+--------------------------+
1 row in set (0.05 sec)

  • 修改默认存储引擎,执行以下命令
方式1:
[root@rqtanc ~]# vim /etc/my.cnf
[mysqld]
default_storage_engine=MyISAM
[root@rqtanc ~]# systemctl restart mysqld

方式2:
mysql> show variables like '%default_storage_engine%';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | MyISAM |
+------------------------+--------+
1 row in set (1.36 sec)

mysql> set default_storage_engine=InnoDB;
Query OK, 0 rows affected (0.08 sec)

mysql> show variables like '%default_storage_engine%';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.01 sec)

3、InnoDB引擎 具备外键支持功能的事务存储引擎

  • MySQL默认事务型引擎,用来处理大量的短期事务,以确保事务的完成提交和回滚。
  • 数据文件结构:[见MySQL-数据目录]。(https://blog.csdn.net/badBoy_badMan/article/details/138050081)
  • 当处理大量数据时,InnoDB兼顾CPU,为处理巨大数据量的最大性能设计
  • InnoDB写的处理效率相对于MyISAM来说差一些,会占用更多的磁盘空间保证数据和索引。
  • InnoDB不仅缓存索引还要缓存真实数据,对内存要求较高,而内存大小对性能有决定性影响。
  • 支持行锁,操作时只锁某一行,不对其它行有影响,适合高并发的操作。
  • 在使用MySQL过程中,除有特殊原因需要使用其它存储引擎外,优先考虑使用InnoDB存储引擎。

4、MyISAM引擎 主要的非事务存储引擎

  • MyISAM 提供大量特性,包括全文索引、压缩、空间函数等,但不支持事务、行级锁、外键,崩溃后无法安全恢复
  • 访问速度快,对事务完整性没有要求,以select、insert为主的应用
  • 针对数据统计有额外的常数存储。故而count(*)的查询效率很高
  • 只缓存索引,不缓存真实数据。
  • 数据文件结构:见MySQL-数据目录
  • 支持表级锁,即使操作一条记录也会锁住整个表,不适合高并发的操作
  • 应用场景:只读引用或以读为主的应用

5、ARCHIVE引擎 用于数据存档

  • 仅仅支持插入查询两种功能(行被插入后不能在修改)
  • 支持索引功能
  • 拥有很好的压缩机制,使用zlib压缩库,在记录请求时实时进行压缩,常被用来作为仓库使用。
  • 创建archive表时,存储引擎会创建名称以表明开头的文件。数据文件的拓展名为 .ARZ
  • 同样数据量下,Archive表比MyISAM表小约75%,比InnoDB表小约83%
  • 采用行级锁,并支持AUTO_INCREMENT列属性。在非AUTO_INCREMENT列上创建索引会导致报错
  • Archive适合日志和数据采集类应用,适合存储大量的独立的作为历史记录的数据。
  • 拥有很高的插入速度,但是查询效率较差。

6、BLACKHOLE引擎 丢弃写操作,读操作会返回空内容

  • 没有实现任何存储机制,它会丢弃所有插入的数据不做任何保留
  • MySQL服务器会记录blackhole表的日志记录,可以用于复制数据到备库或简单记录到日志

7、CSV引擎 存储数据时,以逗号分隔各个数据项

  • 可以将普通的csv文件作为MySQL的表来处理,但不支持索引
  • 可以作为数据交换的机制
  • 存储的数据可以在操作系统里用文本编辑器或excel读取
  • 对于数据的快速导入导出是有明显优势

8、MEMORY引擎 置于内存的表

  • 采用逻辑介质为:内存,响应速度快,MySQL守护进程崩溃 数据丢失
  • 存储的数据为长度不变的格式
  • 同时支持 哈希索引和B+树索引
    ①哈希索引相对的比较快,对于范围的比较慢很多
    ②默认使用哈希索引,其速度比使用B树索引快
    ③若使用B树索引,则在创建索引时选择使用
  • 至少比MyISAM表快一个数量级
  • memory表的大小时受到限制的,表的大小取决于 max_rows(在创建表的时候指定) 和 max_heap_table_size(默认16MB,按需扩大)
  • 数据文件和索引文件分开存储
    ①每个memory表实际对应一个磁盘文件,该文件与表名称相同,类型均为frm类型,只存储表结构,数据文件存储在内存中
    ②有利于数据的快速处理,提高整张表的效率
  • 缺点:数据易丢失,生命周期短
  • 使用场景
    ①目标数据较小,频繁进行访问的数据
    ②如果数据是临时的,而且必须立即使用得到

9、FEDERATED引擎 访问远程表

  • 访问其它MySQL服务器的一个代理,提供很好的 跨服务的灵活性
  • 默认禁用

10、MEMORY引擎

  • 管理多个MyISAM表构成表的集合

11、NDB引擎

  • MySQL集群专用存储引擎
  • 主要用于 MySQL Cluster 分布式集群环境,与Oracle RAC集群类似
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值