关系型数据库

1、基于关系代数理论
2、缺点:表结构不直观,实现复杂,速度慢
3、优点:健壮性高,社区庞大。

笛卡尔集结果
一个表查询另一个表的Join数据(不带on和任何条件),查询出的结果就是两个表的乘积,这个结果就称为笛卡尔集。数据库在做内连接语句的时候,它不会去查找笛卡尔集。它会根据你连接的条件去进行查询。

左连接、右连接、内连接,四张图给你讲清楚。

左联接和右连接
表A在左边,表B在右边,这个就是说包含表A中是Null的值也被显示出来,同理,反之就是右连接。

内连接
取它们两者之间的条件一致的数据,说简单点就是取它们的交集

全连接

事务

ACID
原子性(Atomicity)
事务必须是一个自动工作的单元,要么全部执行,要么全部不执行。
一致性(Consistent)
事务结束的时候,所有的内部数据都是正确的。
隔离性(Isolation)
并发多个事务时,各个事务不干涉内部数据,处理的都是另外一个事务处理之前或之后的数据。
持久性(Durability)
事务提交之后,数据是永久性的,不可再回滚。

数据库的隔离级别

脏读:第一个事务读取第二个事务正在更新的数据表,如果第二个事务还没有更新完成,那么第一个事务读取的数据将是一半为更新过的,一半还没更新过的数据,这样的数据毫无意义。
幻读:第一个事务读取一个结果集后,第二个事务,对这个结果集经行增删操作,然而第一个事务中再次对这个结果集进行查询时,数据发现丢失或新增。

Read uncommitted(脏读)
事务中的修改,即使没有提交,其他事务也可以看得到,比如说上面的两步这种现象就叫做脏读,这种隔离级别会引起很多问题,如无必要,不要随便使用

Read Committed (读取提交的值)
只能看到已经完成的事务的结果,正在执行的,是无法被其他事务看到的。这种级别会出现读取旧数据的现象

Repeatable Reads(可重复读)
解决了脏读的问题,该级别保证了每行的记录的结果是一致的,但是却无法解决另一个问题,幻行,顾名思义就是突然蹦出来的行数据。指的就是某个事务在读取某个范围的数据,但是另一个事务又向这个范围的数据去插入数据,导致多次读取的时候,数据的行数不一致。

Serializable(可串行化)
最高的隔离级别,它通过强制事务串行执行(注意是串行),避免了前面的幻读情况,由于他大量加上锁,导致大量的请求超时,因此性能会比较底下,再特别需要数据一致性且并发量不需要那么大的时候才可能考虑这个隔离级别。

悲观锁
悲观锁假定其他用户企图访问或者改变你正在访问、更改的对象的概率是很高的,因此在悲观锁的环境中,在你开始改变此对象之前就将该对象锁住,并且直到你提交了所作的更改之后才释放锁。

乐观锁
与悲观锁相反,乐观锁则认为其他用户企图改变你正在更改的对象的概率是很小的,因此乐观锁直到你准备提交所作的更改时才将对象锁住,当你读取以及改变该对象时并不加锁。

死锁
我们先来提两个疑问:什么是死锁,为什么会产生死锁?先来看看一个例子。
A更新earth,请求earth的排它锁,由于B占用着earth的排它锁,等待。
B更新lives,请求lives的排它锁,由于A占用着lives的排它锁,等待。

向这样相互等待对方释放资源,造成资源读写拥挤堵塞的情况,就被称为死锁现象,也叫做阻塞,当然原因也是如此,解决方法只有牺牲某一方的事务让它回滚,让另一方的事务通行,这样就不至于都堵着了。
那么如何减少死锁的产生呢?
1、按照同一顺序访问数据库资源,上述例子就不会发生死锁啦。
2、保持是事务的简短,尽量不要让一个事务处理过于复杂的读写操作。事务过于复杂,占用资源会增多,处理时间增长,容易与其它事务冲突,提升死锁概率。
3、尽量不要在事务中要求用户响应,比如修改新增数据之后在完成整个事务的提交,这样延长事务占用资源的时间,也会提升死锁概率。
4、尽量减少数据库的并发量。
5、尽可能使用分区表,分区视图,把数据放置在不同的磁盘和文件组中,分散访问保6、存在不同分区的数据,减少因为表中放置锁而造成的其它事务长时间等待。
7、避免占用时间很长并且关系表复杂的数据操作。
8、使用较低的隔离级别,使用较低的隔离级别比使用较高的隔离级别持有共享锁的时间更短。这样就减少了锁争用。

关系型数据库的基本知识相关推荐

  1. 关系型数据库(一)---关系数据模型与关系

    文章目录 前言 一.数据模型 1.什么是数据模型 2.数据模型的基本要素 (1)数据结构 (2)数据操作 (3)数据的约束条件 二.关系数据模型 1.关系数据模型的基本概念 (1)关系实例 (2)关系 ...

  2. MySQL数据库是非关系_MySQL(数据库)基础知识、关系型数据库yu非关系型数据库、连接认证...

    什么是数据库? 数据库(Database):存储数据的仓库 高效地存储和处理数据的介质(介质主要是两种:磁盘和内存) 数据库系统:DBS(Database System):是一种虚拟系统,将多种内容关 ...

  3. 数据库知识 | 关系型数据库与非关系型数据库小记录

    用一句话来概括数据库作用--数据库用来组织.存储.管理数据.现在信息时代,可以说数据已经成为了一个十分重要的资源,对一家企业来说甚至可以称为最为核心的竞争力,管理好数据资源尤为重要. 文章目录 一.数 ...

  4. 关系型数据库知识小结

    一.基础术语 DML(data manipulation language): 如SELECT.UPDATE.INSERT.DELETE,主要用来对数据库里的数据进行操作的语言 DDL(data de ...

  5. MYSQL (关系型数据库管理系统)的基础知识详解

    一.什么是数据库? 数据库,简而言之可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数据进行新增.查询.更新.删除等操作 所谓"数据库"是以一定方式储存在一起.能与多 ...

  6. 阿里云新一代关系型数据库 PolarDB 剖析

    本文通过描述关系型数据库发展的背景以及云计算的时代特征,分享了数据库计算力的螺旋式上升的进化理念.并且结合阿里云 RDS 产品的发展路径,阐述了自主研发的新一代云托管关系型数据库 PolarDB 的产 ...

  7. mariadb导入sql数据_「译」关系型数据库介绍

    原文来自MariaDB官网的基础知识储备库中关系型数据库的介绍,原文链接:https://mariadb.com/kb/en/library/introduction-to-relational-da ...

  8. 腾讯关系型数据库达成“双百”里程碑——6大企业级MySQL特性全面解析

    腾讯关系型数据库-企业级MySQL(原CDB,腾讯云TencentDB for MySQL)达成了 百万核 和 百PB 的"双百"里程碑!存储规模同比增速高达 80% ,连续两年在 ...

  9. 大数据时代的数据存储,非关系型数据库MongoDB(一)(转)

    出处:http://www.cnblogs.com/mokafamily/p/4076954.html 爆炸式发展的NoSQL技术 在过去的很长一段时间中,关系型数据库(Relational Data ...

  10. 关系型数据库(Relational Database)与非关系型数据库(NoSQL)的区别:(MySQL,Redis,Memcache,MongoDB)

    Table of Contents 关系型数据库(Relational Database) 什么是关系数据库 什么是SQL? 关系数据库的结构 关系模型 关系数据库的好处 数据一致性 隔离性和原子性 ...

最新文章

  1. Linux下安装JDK和Eclipse
  2. 一步一步写二叉查找树
  3. 多项式幂函数(加强版)
  4. Python开发一个股票类库
  5. 75个PPT下载丨2020中国系统架构师大会PPT分享(SACC2020)
  6. Spring Boot : Whitelabel Error Page解决方案
  7. FFmpeg中AVFrame中width与linesize的关系
  8. LINUX下载编译iLBC
  9. python开源bi_推荐一套开源BI工具?
  10. c语言中整形的最大最小值,c语言整数和浮点数的最大最小值
  11. ziheng -接小球游戏
  12. 《西部世界》与《头号玩家》:哪个才是人类与人工智能相处的正确方式?
  13. android textview 文字倒影,textview 倒影
  14. 已经有了阿里云OSS还需要开通CDN吗?
  15. 求多个数最大公约数、最小公倍数的一种变换算法
  16. Linux 内核通知链随笔【中】
  17. 微信小程序——View背景设置
  18. python实现百度新闻爬取并存入数据库(二)
  19. SkipList跳表详解
  20. 在Proteus中用8×8来实现16×16点阵屏

热门文章

  1. 大四学生发明文言文编程语言,脑洞新奇
  2. 软件工程师必读技术书籍推荐
  3. 计算机生存代码,方舟生存进化OL代码大全 最新最全的代码
  4. Win10自带无线投屏功能(含无安装失败解决办法)
  5. 如何建立高效的需求管理机制?
  6. mysql触发器实例
  7. [网络安全自学篇] 五十六.i春秋老师分享小白渗透之路及Web渗透技术总结
  8. 运用Fluxion高效破解WiFi密码
  9. 51单片机+DS18B20+LCD1602显示+Proteus仿真
  10. hyperterminal使用教程_Win 7 使用 XP的超级终端 hyper terminal