数据库相关概念

119 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情

                  常见的主流数据库

1、MySQL:开源数据库,已被 Oracle 收购,6.0 后版本开始收费

2、Oracle:甲骨文公司的核心产品

3、SQL Server:微软公司出品,一般与 C#、.net 编程语言结合使用

4、DB2 :IBM 出品的关系型数据库

5、PostgreSQL:国外新兴开源数据库(大象)

6、mariaDB:MySQL 的一个分支,和 MySQL 差别不大,由 MySQL 主导,名称小海豹


                   MySQL 数据库引擎


1.MyISAM

概述:MyISAM 是 ISAM 扩展格式,是 MySQL 的默认数据库引擎(5.5 版之前)。它提供了 ISAM 没有的索引和字段管理功能,以及一些扩展工具:如用来修复数据库文件的 MyISAMCHK 工具和用来恢复浪费空间的 MyISAMPACK 工具。

特点:

快速读取操作 不支持事务处理

使用表锁定的机制

来优化多个并发的读写操作。其代价是需要经常运行 OPTIMIZE TABLE 命令,来恢复被更新机制所浪费的空间。

存储了表的行数

SELECT COUNT(*) FROM TABLE 时只需要直接读取已经保存好的值而不需要进行全表扫描。

不能在表损坏后恢复数据

2.InnoDB

概述:

InnoDB 数据库引擎是 MySQL 灵活性的技术的直接产品,这项技术就是 MYSQL+API。

MySQL5.5 版本开始 Innodb 已经成为 Mysql 的默认引擎。

它的设计目标是处理大容量数据库系统,它本身其实就是基于 MySQL 后台的完整数据库系统,MySQL 运行时 Innodb 会在内存中建立缓冲池,用于缓冲数据和索引。

特点:

支持事务处理和故障恢复

故障恢复:利用事务日志进行数据恢复,速度比较快提供行级锁和外键约束

行级锁说明:写操作不会锁定全表,因此并发效率较高。但使用行级锁也不是绝对的,如果在执行一个 SQL 语句时不能确定要扫描的范围,InnoDB 表同样会锁全表。

不支持 FULLTEXT 类型的索引

没有保存表的行数

当 SELECT COUNT(*) FROM TABLE 时需要扫描全表。

3.MEMORY

概述:MEMORY 是一类特殊的存储引擎。

MEMORY 结构

使用存储在内存中的数据来创建表

每个基于 MEMORY 存储引擎的表实际对应一个磁盘文件。该文件的文件名与表名相同,类型为 frm 类型;文件中只存储表的结构,而其数据文件都存储在内存中

特点

利于数据的快速处理,提高整个表的效率。只使用在相对较小的数据库表

注意

服务器需要有足够的内存来维持 MEMORY 存储引擎的表的使用。如果不需要了,可以释放内存,甚至删除不需要的表。

基于 MEMORY 的表的生命周期很短,一般是一次性的。

MEMORY 用的很少。因为它是把数据存到内存中,如果内存出现异常就会影响数据

MEMORY 默认使用哈希索引,其速度比使用 B 型树索引快,当然如果想用 B 型树索引,可以在创建索引时指定。

总结:

同一个数据库可以使用多种存储引擎的表。

如果一个表要求比较高的事务处理,可以选择InnoDB 存储引;

如果一个表要求查询比较高,可以选择 MyISAM 存储引;

如果数据库需要一个用于查询的临时表,可以选择 MEMORY 存储引擎。

          数据库引擎的区别

1.InnoDB 支持事物,而 MyISAM 不支持事物

2.InnoDB 支持行级锁,而 MyISAM 支持表级锁

3.InnoDB 支持 MVCC, 而 MyISAM 不支持

4.InnoDB 支持外键,而 MyISAM 不支持

5.InnoDB 不支持全文索引,而 MyISAM 支持。