mysql-常用存储引擎-MEMORY-CSV-Archive(11)

查看mysql引擎

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

show engines命令可以查看mysql支持的引擎,我测试的版本是5.7,默认采用innodb引擎,5.5之后的版本默认采用innodb引擎,而5.5之前默认采用myisam引擎。此次内容讲解memory、csv、Archive引擎。

1.memory引擎
可以在上面的表格中看出来,
Hash based, stored in memory, useful for temporary tables
基于hash,存储在内存中,适用于临时表格,不支持事务,不支持保存点,不支持XA事务(两阶段提交)
我们创建一个test_memory的表格,

mysql> show variables like '%datadir%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.03 sec)

mysql> create table test_memory(
    -> id int unsigned auto_increment key,
    -> name varchar(30) not null unique)engine=memory charset=utf8;
Query OK, 0 rows affected (0.02 sec)

–然后进入目录/var/lib/mysql/对应的数据库目录下查看,可以看到只有一个test_memory.frm表格文件,每个基于MEMORY存储引擎的表实际对应一个磁盘文件。该文件的文件名与表名相同,类型为frm类型。该文件中只存储表的结构。而其数据文件,都是存储在内存中,这样有利于数据的快速处理,提高整个表的效率。值得注意的是,服务器需要有足够的内存来维持MEMORY存储引擎的表的使用。如果不需要了,可以释放内存,甚至删除不需要的表。
MEMORY默认使用哈希索引,查询速度比使用B型树索引快,如果对于范围查询或者排序,速度比B树索引慢很多,这个是因为哈希的数据结构性质决定的。当然如果你想用B型树索引,可以在创建索引时指定。在使用上也有一定限制,只是支持表锁,并发性能差,并且不支持text和blob类型,而且存储边长字符串varchar时按照char的方式进行的,因此会浪费内存。

2.csv引擎
从show engines可以看到,csv引擎,不支持事务,不支持保存点,不支持XA事务(两阶段提交)。不支持索引,不支持为空的列,创建一个test_csv的表格试试,

create table test_csv( id int unsigned not null, email varchar(50) not null default '123222@126.com') engine=csv charset=utf8;
Query OK, 0 rows affected (0.00 sec)

--mysql目录下面的文件
-rw-r----- 1 mysql mysql     35 Aug 13 14:59 test_csv.CSM
-rw-r----- 1 mysql mysql      0 Aug 13 14:59 test_csv.CSV
-rw-r----- 1 mysql mysql   8588 Aug 13 14:59 test_csv.frm

可以看到增加了三个文件,test_csv.frm是熟悉的表格文件,test_csv.csv是数据文件,就是常用的以逗号为分隔符的表格文件,使用表格编辑器或者文本编辑器直接打开编辑,但是对数据库来说,不建议这么操作,因为单独操作数据文件,会使得数据库内部保存的某些不一致,test_csv.csm这个不了解。

3.Archive引擎
Archive引擎适用于数据归档,不支持事务,不支持保存点,不支持XA事务(两阶段提交)。

mysql> create table test_archive( id int unsigned auto_increment key, name varchar(30) not null default 'xusi' )engine=archive charset=utf8;
Query OK, 0 rows affected (0.01 sec)

--查看mysql目录下面的文件
-rw-r----- 1 mysql mysql 8674 Aug 13 18:00 test_archive.ARZ
-rw-r----- 1 mysql mysql 8586 Aug 13 18:00 test_archive.frm
--我们下面简单测试一下archive引擎的压缩情况,
统一创建(id int unsigned auto_increment key, name varchar(30) not null default 'ab') charset=utf8;的格式的表格,插入name中一样的数据
insert to test_*(name) values('ab'); --*表示不同的引擎名称,用以区别引擎的表格
--可以看到archive引擎的数据文件大小比innodb引擎还有myisam引擎小很多,

--archive引擎生成的文件
-rw-r----- 1 mysql mysql  3005748 Aug 15 09:27 test_archive.ARZ
-rw-r----- 1 mysql mysql     8586 Aug 13 18:00 test_archive.frm
--innodb引擎生成的文件
-rw-r----- 1 mysql mysql     8586 Aug 15 09:27 test_innodb.frm
-rw-r----- 1 mysql mysql 54525952 Aug 15 09:27 test_innodb.ibd

--myisam引擎生成的文件
-rw-r----- 1 mysql mysql     8586 Aug 15 09:29 test_myisam.frm
-rw-r----- 1 mysql mysql 31457280 Aug 15 09:29 test_myisam.MYD
-rw-r----- 1 mysql mysql 16167936 Aug 15 09:29 test_myisam.MYI

对应的test_archive.ARZ是数据文件,test_archive.frm是表格文件。
支持select、insert等操作;
不支持delete 、update、索引等操作;
使用zlib无损数据压缩算法,节省空间;
适用于大量历史数据(可查询但不能删除)的保存;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值