开启掘金成长之旅!这是我参与「掘金日新计划 · 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 支持。