关系型数据库与非关系型数据库

关系型数据库:mysql /oracle/sql server/sqlite

优点:

1.易于维护:都是使用表结构,格式一致;

2.使用方便:sql语言通用,可用于复杂查询

3.复杂操作:可用于一个表以及多个表之间非常复杂的查询

缺点:

1.读写性能比较差,尤其海量数据的高效率读写;

2.固定的表结构,灵活度不够

3.高并发读写需求,传统的关系型数据库来说,硬盘I/O是一个很大的瓶颈

非关系型数据库(nosql):redis / hbase /mongoDB

类型:

文档数据库、键值数据库、宽列存储和图形数据库

优点:

1.格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型

2.速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘

3.高扩展性

4.成本低

缺点:

1.不提供sql支持

2.无事务处理

3.数据结构相对复杂,复杂查询方面稍欠

Mysql数据库的四大特征、四大隔离级别、三大范式、三大现象

一.数据概念

在数据库系统中,多个事务并发执行时,针对数据库不同的隔离级别,可能会出现一些问题。可能出现的问题有:脏读,不可重复读,幻读

1.脏读:

假设A和B两个事务都出现了并发,A先读取了表的数据,然后更新了表,但是这时A事务还没提交。此时B事务读取了表数据,这时候B实际上读取的是A

事务更新完的表数据。如果A事务提交,那么该数据有意义;如果A事务回滚,B读取的数据就没有意义,这就是脏读

2.不可重复读:

就是字面意思,不能重复读同一个数据,如果重复读的话,有可能返回的结果不一样。事务A先读取了表的数据,没有进行提交。然后事务B更新了表的数据,

此时事务A又读取了表的数据,两次数据不一样,A无法处理。

3.幻读:

事务A读了一次表,最后得到的ID是3.事务B也读了一次表,得到ID是3.此时事务A先插入了一条数据,然后读了表,最新的ID是4;然后事务B也插入了一条

数据,读取表,得到ID是5.此时就是幻读。 删除数据,修改数据都会有类似发生的情况

二.数据库的隔离级别

读未提交、读已提交、可重复读、可串行化

读未提交:隔离级别最低,隔离度最弱。 脏读、不可重复读、幻读都可能会发生

读已提交: 解决了脏读问题,存在不可重复读、幻读问题

可重复读:存在一定的幻读可能,Mysql默认的隔离级别

可串行化:级别最高,问题都解决,但是性能最低

三.事务的四大特性:

事务简介:

1.在Mysql中只有使用了Innodb数据库引擎的数据库或者表才支持事务

2.事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行

3.事务用来管理insert,update,delete语句

特性:原子性、一致性、隔离性、持久性

1.原子性(Atomic):事务包含的所有数据库操作,要么全部都成功,要么全部失败,不可以分开执行

2.一致性(Consistent):将一个大事务拆分成若干小事务,小事务完成的数据状态与使用一个大事务完成后的数据状态一致

3.隔离性(Isolated):一个事务的执行不会被另一个事务干扰

4.持久性(Durable):事务执行的结果持久化到磁盘中

事务的操作:

start transaction;  #开启事务

#sql语句 增删改查

savepoint 节点名;  #保存节点

rollback;    #取消全部事务 回滚

rollback to 节点名 #回到某个节点

commit    #提交

四.数据库设计的三大范式

1.第一范式(确保每列保持原子性)

比如某个人的地址,可以拆分成 (省份 城市 详细住址)三个字段,这样对用户进行分类非常方便,也会提高数据库的性能

2.第二范式(确保表中的每列都和主键相关)

3.第三范式(确保每列都和主键列直接相关,而不是间接相关)

五.Mysql数据库中常用的几种引擎以及区别

常用的包括三种:InnoDB、Myisam、Memory

InnoDB和Myisam的默认索引是B+ tree,Memory的默认索引是hash

区别:

1.InnoDB支持事务,支持外键,支持行级锁,写入数据时操作快

2.Myisam不支持事务,不支持外键,支持表级锁,支持全文索引,读取数据快

3.Memory所有的数据都保留在内存中,不需要进行磁盘的IO所以读取的速度很快,但是一旦关机的话表的结构会保留但是数据就会丢失,表支持Hash索引,因此查找速度很快

Redis,MongoDb的特点

Redis

优点:

1.支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、

2.支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失  的手段。

3.支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。

4.单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。

5.支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。

6.支持简单的事务需求,但业界使用场景很少,并不成熟

缺点:

1.Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右)。

2.支持简单的事务需求,但业界使用场景很少,并不成熟,既是优点也是缺点。

3.Redis在string类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存耗用

MongoDb

优点:

1.更高的写负载,MongoDB拥有更高的插入速度。

2.处理很大的规模的单表,当数据表太大的时候可以很容易的分割表。

3.高可用性,设置M-S不仅方便而且很快,MongoDB还可以快速、安全及自动化的实现节点(数据中心)故障转移。

4.快速的查询,MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内存资源相当丰富的话,这将极大地提高数据库的查询速度。

5.非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响,整个过程会非常快速。

缺点:

1.不支持事务。

2.MongoDB占用空间过大 。

3.MongoDB没有成熟的维护工具

mysql数据库简单介绍_数据库的简单介绍相关推荐

  1. MySQL删除空值语句_数据库语句sql 删除空记录

    最简单删除SQL Server中所有数据的方法 原文:最简单删除SQL Server中所有数据的方法 最简单删除SQL Server中所有数据的方法   编写人:CC阿爸   2014-3-14 其实 ...

  2. 【MySQL 第10章_数据库的设计规范】

    第10章_数据库的设计规范 1. 为什么需要数据库设计 2.范式 2.1范式简介 2.2范式都包括哪些 2.3 键和相关属性的概念 2.4第一范式(1st NF) 2.5 第二范式(2nd NF) 2 ...

  3. mysql打错了怎么办_数据库出错了怎么办?

    下面是网上收集的多种方法,大家可以测试下. (一) 昨晚浏览自己的Blog的时候,突然发现所有页面都无法显示,到后台查看的时候,发现一个"Table 'xxx' is marked as c ...

  4. mysql多租户视频_数据库实现多租户支持的思路

    前言 在云领域我们经常会听到一个词:多租户.这个词在不同的语境中有着不同的含义,接下来将从理论到实践对以往的项目进行一次总结,同时实战一个Demo.本篇先从理论介绍云平台中的多租户的概念以及实现多租户 ...

  5. mysql 查找相似数据_数据库存储引擎大揭秘,不看不知道这里面的骚操作可真多!...

    吊打各种树这篇文章 带大家学习一遍数据结构中的各种树,对数据结构还不够熟悉的同学,那篇文章可以作为基础入门,我画了很多图理解起来不困难,建议回头先学习下那篇文章,更容易理解本文要讲的内容. 文章里有提 ...

  6. 电脑mysql是什么意思_数据库是什么意思

    展开全部 数据库需要从以下几个方面去了解: 一.数据库功能: 数据库(Database)是按照数据结构来组织.存储和管理数e5a48de588b6323131333532363134313032313 ...

  7. mysql dbms是什么_数据库管理系统(DBMS)是用来做什么的?

    展开全部 数据库管理系统(database management system)是一种操纵和32313133353236313431303231363533e58685e5aeb93133326235 ...

  8. mysql router是什么_数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作...

    摘要:墨天轮数据库周刊第28期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档.本周分享 开发者最喜爱的数据库是什么?阿里云脱口秀爆聊程序员转型:MySQL update误操作后进行数据 ...

  9. MySQL保存计算结果_数据库保存计算结果 fluent计算完成后怎么保存

    数据库里保存的字段为数学公式,怎样实现查出时自动计算结果? 怎么保存vf命令输出结果? 建议保存到文本t或excel文件中,或直接保存为DBF的自由表数据库.例如,如果将结果计算到数值变量x并添加另一 ...

最新文章

  1. sae上部署第一个站
  2. php获取当前时间的毫秒数,并且利用它测试代码段执行时间
  3. Dotnet 2.0配置系统
  4. word2026第十套计算机二级,计算机二级第十套练习真题
  5. nginx搭建静态文件服务器,Nginx 静态文件服务器搭建及autoindex模块解析
  6. vc2010+openCV1.0实现将指定目录下的所有jpg文件缩放后存放到目标文件夹
  7. 时序动作定位:Rethinking the Faster R-CNN Architecture for Temporal Action Localization(TAL-Net)
  8. Java GC种类以及触发时机
  9. 拓端tecdat|R语言极值分析:分块极大值Block-maxima、阈值超额法threshold excess、广义帕累托分布GPD拟合降水数据时间序列
  10. IDEA软件中的五子棋~
  11. Gradle的神奇之处
  12. html5 页面整体居中,html5标题居中 DIV布局怎么在页面水平居中
  13. 小E开发板wifi音箱二实现网络助手发送整个WAV音乐
  14. 三大框架之---MyBaits第二章
  15. 使android桌面图标变大
  16. 阿里云配置二级域名与nginx代理踩坑
  17. 一步一步oa办公系统java,OA项目 一个OA办公系统的java源码 联合开发网 - pudn.com
  18. ThinkPHP3.2/ThinkPHP5对比
  19. 统计数组中各数字出现的次数
  20. 面向Web的数据挖掘

热门文章

  1. python中cv2库_Python cv2库(人脸检测)
  2. dama数据管理知识体系指南_DAMA知识体系解读(6)数据操作管理
  3. SigmaStar SSD201 操作记录
  4. Android 11 修改libcore update-api 遇到的问题
  5. java http请求 乱码_怎么解决java中的http请求乱码
  6. deepin卸载了python_Deepin-Linux下python卸载与安装(失败的折腾)
  7. 2019年上半年总结__下半年计划
  8. 【题解】 Codeforces Edu41 F. k-substrings (字符串Hash)
  9. codeforce 589B枚举
  10. arc 和 非arc兼容