文章目录
- 一、概念介绍
- 二、数据库的事物
- 三、数据库的分类
- 1.关系型数据库
- 2.非关系型数据库
- 四、常见的Mysql引擎
一、概念介绍
数据库是一个存储数据的仓库,按照数据结构,来组织,管理和存储数据,并提供了增、删、改、查的功能。
二、数据库的事物
1.什么是事务
将一组增删改的操作看成一个独立的执行单元,要么都成功,如果有一个操作失败,那么数据库会执行回滚,一组操作都会不生效
2.事物的特性
特性 | 介绍 |
---|---|
原子性 | 事物被当做一个不可分割的执行单元,要么全部成功,要么全部失败,成功则将数据应用到数据库,失败不会对数据产生影响 |
一致性 | 事物开始前的状态和事物执行之后的状态是保持一致的 |
隔离性 | 当用户并发访问数据库时,数据库会给每个用户线程开启一个事物,事物和事物之间相互隔离,互不影响 |
持久性 | 一旦事物提交,那么数据就会永久的应用于数据库,就算机器出现故障,也不会将数据修改 |
3.事物的回滚
事物作为一个独立不可分割的执行单元,要么都成功,只要这一组操作中有一个失败,事物会执行回滚,恢复到事物执行之前的状态
4.在不考虑事物的隔离性的情况下,会导致以下情况
导致情况 | 介绍 |
---|---|
脏读 | 当以一个事物执行时,访问了另一个未提交事物的数据,并使用了这条数据 |
不可重复读 | 事物A多次读取一条数数据,事物B对这条数据做了修改,最终导致A事物两次读取的数据不一样 |
幻读 | 事物A读取一张表中的所有数据,事物B在这个表中添加或者删除了一条数据,导致A的结果和实际结果不符,类似于出现了幻觉。 |
不可重复读和幻读的区别:
幻读和不可重复读都读取另一条已经提交的事务,所不同的是不可重复读查询的都是同一数据项,而幻读针对的是一批数据整体
5.事物的四种隔离级别
隔离级别 | 介绍 |
---|---|
Read uncommitted(读未提交) | 最低级别,可能会出现任何情况 |
Read committed(读已提交) | 可以避免脏读 |
Repeatable read(可重复读) | 可以避免脏读和不可重复读 |
Serializable(串行化) | 可避免 脏读 不可重复读 幻读 最高的隔离级别 |
三、数据库的分类
1.关系型数据库
1.概念
关系型数据库是一个结构化的数据库,采用了关系模型来组织数据的数据库。关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
结构化数据指的是由二维表结构来逻辑表达和实现的数据,严格遵循数据格式与长度规范,也称作为行数据,特点为:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的
2.关系型数据库的优点:
- 便于理解:二维表构造非常贴近逻辑,关系模型相对网状、层次等其他模型来说更容易理解
- 使用方便:通用的SQL语言使得操作关系型数据库非常方便
- 易于维护:全部由表结构组成,文件格式一致
- 数据稳定:数据持久化到磁盘,没有丢失数据风险
3.关系型数据库的缺点:
- 对于海量信息的查询效率教低,读写能力较差
- 网站高并发读写需求对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
- 灵活度欠佳:为了保证数据库的ACID特性,必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一个格式化的数据结构。
4.常见的关系型数据库
Oracle,MySQL,sqllite
2.非关系型数据库
1.概念
所谓非关系型数据库,其实是相对于关系型数据库而言的,通常用于存储那些类型不固定的,也没有什么规律的数据。它严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。企业每天都产生大量的数据,非关系型数据库的应用非常广泛,应用场景也非常多,例如:办公文档、文本、图片、HTML、各类报表、视频音频等。
2.非关系型数据库的优点
- 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛
- 性能优:nosql是根据键值对的,不用历经sql层的分析,因此 性能非常高。
- 扩展性高:基于键值对,数据之间耦合度极低,因此容易水平扩展。
- 成本低:nosql数据库部署简单,基本都是开源软件
3.非关系型数据库的缺点
- 不提供sql支持,学习和使用成本较高
- 无事务处理机制
- 数据结构相对复杂,复杂查询不容易实现
4.常见的非关系型数据库
Elasticsearch,Redis,MongoDB
四、常见的Mysql引擎
MySQL 中最常见的存储引擎有:InnoDB、MyISAM 和 MEMORY,其中 InnoDB 是 MySQL 5.1 之后默认的存储引擎,它支持事务、支持外键、支持崩溃修复和自增列,它的特点是稳定(能保证业务的完整性),但数据的读写效率一般;而 MyISAM 的查询效率较高,但不支持事务和外键;MEMORY 的读写效率最高,但因为数据都保存在内存中的,所以 MySQL 服务重启之后数据就会丢失,因此它只适用于数据丢失不敏感的业务场景。
更多推荐
MySQL(二):MySQL的介绍+事务+分类+MySQL引擎
发布评论