博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库原理基础总结
阅读量:4881 次
发布时间:2019-06-11

本文共 1836 字,大约阅读时间需要 6 分钟。

1.什么是内连接、左(外)连接、右(外)连接、外连接

内连接:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。

 

 左连接:left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。

左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。

 

右连接:right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。

与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。

 

 

(全)外连接

 


 

 

 

2.数据库的事务有哪些特性?

ACID,原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。原子性(Atomicity):事务是数据库逻辑工作单元,事务中包含的操作要么执行成功,要么都执行失败。一致性(Consistency):事务要保证数据库整体数据的完整性和业务的数据的一致性,事务成功提交整体数据修改,事务错误则回滚到数据回到原来的状态;隔离性(Isolation):一个事务的执行过程中不能影响到其他事务的执行,即一个事务内部的操作及使用的数据对其他事务是隔离的,并发执行各个事务之间无不干扰。持久性(Durability):即一个事务执一旦提交,它对数据库数据的改变是永久性的。之后的其它操作不应该对其执行结果有任何影响。
View Code

 

3.数据库中的隔离等级有哪些?

先简单介绍一下什么是脏读,不可重复读,幻读脏读是一个事务读取到另一个事务的中间状态的数据;不可重复读是一个事务读取到另一个事务提交后更新的数据,导致该事务前后两次读取的数据不一致;幻读是一个事务在读取某个范围内的数据时由于另一个事务在该范围内添加或删除了某些数据,导致该事务前后两次读取的数据量不一致;隔离等级:未提交读(READ UNCOMMITTED)事务中的修改,即使没有提交,对其它事务也是可见的。提交读(READ COMMITTED)一个事务只能读取已经提交的事务所做的修改。换句话说,一个事务所做的修改在提交之前对其它事务是不可见的。可重复读(REPEATABLE READ)保证在同一个事务中多次读取同样数据的结果是一样的。可串行化(SERIALIZABLE)强制事务串行执行。隔离级别	脏读	不可重复读	幻影读  加锁读未提交读	√	√	√	×提交读	×	√	√	×可重复读	×	×	√	×可串行化	×	×	×	√
View Code

 

4.乐观锁和悲观锁

https://zhuanlan.zhihu.com/p/40396971

https://zhuanlan.zhihu.com/p/50098743

 

https://juejin.im/post/5b4977ae5188251b146b2fc8

定义:悲观锁(Pessimistic Lock): 每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。乐观锁(Optimistic Lock): 每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时候需要判断该数据是否被别人修改过。如果数据被其他线程修改,则不进行数据更新,如果数据没有被其他线程修改,则进行数据更新。由于数据没有进行加锁,期间该数据可以被其他线程进行读写操作。适用场景:悲观锁:比较适合写入操作比较频繁的场景,如果出现大量的读取操作,每次读取的时候都会进行加锁,这样会增加大量的锁的开销,降低了系统的吞吐量。乐观锁:比较适合读取操作比较频繁的场景,如果出现大量的写入操作,数据发生冲突的可能性就会增大,为了保证数据的一致性,应用层需要不断的重新获取数据,这样会增加大量的查询操作,降低了系统的吞吐量。总结:两种所各有优缺点,读取频繁使用乐观锁,写入频繁使用悲观锁。
View Code

 

转载于:https://www.cnblogs.com/Roni-i/p/10280286.html

你可能感兴趣的文章
Mysql单表查询(胖胖老师)
查看>>
Linux的基本命令(CentOS)
查看>>
超链接的几个样式
查看>>
asp.net mvc验证特性
查看>>
接口interface和抽象类型abstract
查看>>
【高精度】贝贝与国王
查看>>
Math
查看>>
git安装配置
查看>>
从CPU的运行到函数调用做个了解
查看>>
记录一次无聊的(经历了Nodejs -> Shell -> C)的探索问题过程
查看>>
接口请求失败处理,重新请求并限制请求次数.自己封装搞定retry函数
查看>>
C# 数据库连接增删改查
查看>>
Xcode 最近使用的一些问题
查看>>
JSP 自定义标签
查看>>
ACM_水题你要信了(修改版)
查看>>
题解报告:hdu 1087 Super Jumping! Jumping! Jumping!
查看>>
汇编实验一
查看>>
2015 Multi-University Training Contest 6 hdu 5357 Easy Sequence
查看>>
HDU 4856 Tunnels
查看>>
常用的页面加载慢的解决方案
查看>>