数据库-存储引擎

HyperSQL存储引擎 (java写的)

文档 http://hsqldb.org/doc/2.0/guide

MYSQL-8.0的所有存储引擎(c/c++写的)

1.NDB Cluster存储引擎 网络数据库集群 mysql-7.2后的存储引擎,8.0后正式版

“NDB” 全称为 “Network Database”.

cluster-components

NDB Cluster是集群内存数据库技术

NDB Cluster最初仅以内存形式实现,但当前所有可用版也提供了磁盘存储

NDB Cluster被设计为没有任何单点故障

  1. 它支持事务。但仅支持 READ COMMITTED事务隔离级别(它只有三种隔离级别。没有实现重复读,即MVCC引擎)

  2. 它用的是内存索引

  3. 每个NDB表都必须具有主键

  4. 不支持临时表

  5. 不支持FULLTEXT索引。

  6. 不支持索引前缀。只有完整的列可以被索引

  7. 在NDB 8.0,表行的最大大小为14 KB,排除BLOB类型,行数没有限制,行数取决于内存限制

  8. 关闭NDB群集后,内存中的数据将写入磁盘,并在下次启动群集时重新加载到内存中

共有三种类型的节点,对应于集群中的角色

  • 管理节点

该节点为整个集群提供管理服务,包括其他节点的启动,关闭,备份和配置数据。

管理节点服务器被实现为应用程序,有个客户端叫ndb_mgmd(NDB群集管理客户端);

  • 数据节点

用于节点存储和复制数据。它有一个 ”angel process”天使进程,用于检查(实际处理数据的主数据节点进程)是否正在运行

  • SQL节点

这只是Mysql-Server (即mysqld)的一个实例。

要运行一个可行的群集,至少需要三台计算机

一台同时充当管理节点SQL节点,两台充当数据节点(提供数据冗余)。

可以使用公式来估算NDB表在群集每个数据节点需要多少内存

    (SizeofDatabase × NumberOfReplicas × 1.1 ) / NumberOfDataNodes

官方常见问答 https://dev.mysql.com/doc/refman/8.0/en/faqs-mysql-cluster.html

官方文档描述 https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-overview.html


2.federated存储引擎 联合

这个引擎支持跨库连表查询

建表语句格式:
CREATE TABLE table_name(......) 
ENGINE =FEDERATED CONNECTION='mysql://[username]:[password]@[location]:[port]/[db-name]/[table-name]'

3.archive存储引擎 档案

这个引擎只允许插入和查询,不允许修改和删除。
Archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%
以zlib对表数据进行压缩,磁盘I/O更少
数据存储在ARZ为后缀的文件中

4.csv存储引擎

底层是用csv格式的excel存储, 你可以修改excel,数据表同时会发生变化

.CSM是表状态及表的数据量文件; .CSV是存放数据文件; .frm是表结构定义文件

-rw-rw---- 1 mysql mysql   35 Sep  1 14:29  table_csv.CSM  
-rw-rw---- 1 mysql mysql   18 Sep  1 14:38  table_csv.CSV  
-rw-rw---- 1 mysql mysql 8582 Sep  1 14:28  table_csv.frm

5.MRG_MYISAM存储引擎 合并的mysaim引擎

 全称 merge存储引擎。 是相同类型文件可以被当作一个来用的myisam表的集合

 和union原理相同,MRG_MYISAM不支持全文索引
 INSERT INTO `test` (`name`) VALUES('beijing3'); 
 SELECT * FROM test

-rw-rw---- 1 mysql mysql  8586 Feb  2 16:40 test1.frm
-rw-rw---- 1 mysql mysql    20 Feb  2 16:40 test1.MYD
-rw-rw---- 1 mysql mysql  2048 Feb  2 16:40 test1.MYI
-rw-rw---- 1 mysql mysql  8586 Feb  2 16:40 test2.frm
-rw-rw---- 1 mysql mysql    40 Feb  2 16:44 test2.MYD
-rw-rw---- 1 mysql mysql  2048 Feb  2 16:44 test2.MYI
-rw-rw---- 1 mysql mysql  8586 Feb  2 16:43 test.frm
-rw-rw---- 1 mysql mysql    32 Feb  2 16:43 test.MRG

(1)对于日志类应用的表.比如,你可以把每月的数据放进分离的表中,
用myisampack压缩这些表,创建一个MERGE表来把它们当作一个表来使用非常方便快捷.

(2)在查询速度上应该更优,对于一些表可以分割大的只读表,放进不同磁盘上的单个表中.
基于这个建立一个MERGE表会比单纯一个大表速度应该会快不少.

(3)超过操作系统的文件尺寸限制,每个MyISAM表都受制于这个限制,但是MRG_MYSIAM则不会.

6.blackhole存储引擎 黑洞

 任何写入到此引擎的数据均会被丢弃掉, 不做实际存储;Select语句的内容永远是空

7.innodb存储引擎

修改快(行锁) 支持事务
略

8.mysaim存储引擎

插入快 查询快
略

9.memory存储引擎


供新手学习的极简java数据库 (支持sql,带教学视频与讲师)

vanilladb http://www.vanilladb.org/

https://github.com/vanilladb/vanillacore

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

备案信息公示
京ICP备18003381号
京ICP备18003381号-1