
数据库
Susceptible0506
这个作者很懒,什么都没留下…
展开
-
JAVA面试准备之数据库 关键语法
GROUP BY作用:根据给定数据列的每个成员,对查询结果进行分组统计,最终得到一个分组汇总表注意:group by里出现某个表的字段,select里面的列要么是该group by 里出现的列,要么是别的表的列,或者带有函数的列案例:Groupby会将结果集缓存到一张结果表中,在通过函数对结果集进行统计HAVING通常与GROUP BY子句一起使...原创 2020-03-12 19:53:29 · 126 阅读 · 0 评论 -
JAVA面试准备之数据库 锁模块(5)InnoDB可重复读隔离级别下如何避免幻读
InnoDB可重复读隔离级别下如何避免幻读?表象:快照读(非堵塞读) 在Repeatable-read隔离级别下,如果先在别的事务操作数据之前,创建了快照读,不管别的事务怎么操作数据,当前事务再次使用快照读时,查到的依旧是老版本的数据。内在:next-key锁(行锁+gap锁) 真正防止幻读发生是因为事务在Repeatable-read隔离级别以上(包括)对数据加了ne...原创 2020-03-12 19:50:11 · 451 阅读 · 0 评论 -
JAVA面试准备之数据库 锁模块(4)RC、RR级别下的InnoDB的快照读的实现
当前读就是加了锁的增删改查语句,其读取的是当前数据的最新记录,还要保证读取后,其他事务不能修改当前记录(对数据进行增删改时,会先进行查询操作current read)快照读就是不加锁的非堵塞读,select(不加锁是事务隔离级别不为串行化serializable的条件下才会成立的,在serializable隔离级别下,快照读也退化为当前读)之所以出现快照读是基于提交...原创 2020-03-12 19:46:08 · 530 阅读 · 0 评论 -
JAVA面试准备之数据库 锁模块(3)事务隔离级别以及各级别下的并发访问问题
事务并发访问引起的问题以及如何避免?更新丢失,即一个事务的更新覆盖了另一个事务的更新。——mysql所有事务隔离级别在数据库层面上均可避免。 脏读,即一个事务读到另一个事务未提交的更新数据。——已提交读Read-committed事务隔离级别以上可避免。 不可重复读,即事务A多次读取同一数据,事务B在事务A多次读取过程中对数据进行了更新并提交,导致事务A前后读取到的数据不一致。——可重复读...原创 2020-03-12 19:39:53 · 216 阅读 · 0 评论 -
JAVA面试准备之数据库 锁模块(2)数据库事务的四大特性ACID
数据库事务的四大特性ACID?事务是作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么全部都不执行。原子性(Atomic):事务包含的全部操作,要么全部执行,要么全部失败回滚一致性(Consistency):事务应该保证数据库从一个一致状态转换到另外一个一致状态,一致状态是指数据库中的数据应满足完整性约束。比如A和B账户的总额是2000,无论双方如何相互转账,都要保证两个人账户总...原创 2020-03-12 10:24:15 · 188 阅读 · 0 评论 -
JAVA面试准备之数据库 锁模块(1)MyISAM与InnoDB关于锁方面的区别是什么
MyISAM与InnoDB关于锁方面的区别是什么?答:MyISAM默认用的是表级锁,不支持行级锁;InnoDB默认用的是行级锁,也支持表级锁举例:person_info_myisam是MyISAM引擎;person_info_large是InnoDB引擎两张表的字段相同MyISAM默认用的是表级锁,表级锁会锁住整张表。当表进行查询时,MyIS...原创 2020-03-12 10:22:40 · 288 阅读 · 0 评论 -
JAVA面试准备之数据库 索引模块(6)索引是建立得越多越好吗
索引是建立得越多越好吗?答:不是的。数据量小的表不需要建立索引,建立会增加额外的索引开销;数据变更需要维护索引,因此更多的索引意味着更多的维护成本;更多的索引意味着也需要更多的空间。...原创 2020-03-12 10:09:50 · 698 阅读 · 0 评论 -
JAVA面试准备之数据库 索引模块(5)联合索引的最左匹配原则的成因
联合索引的最左匹配原则的成因?答:Mysql创建联合索引的规则是首先会对联合索引的最左边索引字段的数据进行排序,在第一个字段的排序基础上,再对后面第二个索引字段进行排序,相当于实现了orderby 字段1,字段2排序规则,所以第一个字段是绝对有序的,而第二个字段就是无序的了,因此通常情况下直接使用第二个字段进行条件判断是用不到索引的。联合索引是col3,col2,如果想要根据这个...原创 2020-03-12 10:08:19 · 358 阅读 · 0 评论 -
JAVA面试准备之数据库 索引模块(4)如何定位并优化慢查询Sql
如何定位并优化慢查询Sql?1.根据慢日志定位慢查询sql2.使用explain工具分析sql3.修改sql或者让sql尽量走索引1.根据慢日志定位慢查询sql慢日志就是用来记录我们比较慢的一些sql。查询慢日志的相关变量:了解系统状态:代表本次会话的慢sql的条数,当重启sql服务后,会被清0设置慢查询变量:打开慢日志设置慢查询...原创 2020-03-12 10:03:38 · 435 阅读 · 0 评论 -
JAVA面试准备之数据库 索引模块(3)密集索引和稀疏索引的区别
密集索引和稀疏索引的区别? 密集索引文件中的每个搜索码值都对应一个索引值。密集索引的叶子结点保存的不仅是键值,还保存了位于同一行记录里的其他列的信息。由于密集索引决定了表的物理排列顺序,一个表只能有一个物理排列顺序,所以一个表只能创建一个密集索引。 稀疏索引文件只为索引码的某些值建立索引项。叶子结点仅保存了键位信息以及该行数据的地址。有些稀疏索引只保存了键位信息及其主键。定位到...原创 2020-03-12 09:53:15 · 267 阅读 · 0 评论 -
JAVA面试准备之数据库 索引模块(2)索引的数据结构
索引的数据结构?答:通常索引的数据结构是B+树,比较小众的也有Hash结构,BitMap等。Mysql数据库不支持BitMap索引。索引的数据结构让检索更高效:生成索引,建立二叉查找树进行二分查找;生成索引,建立B-Tree结构进行查找;生成索引,建立B+-Tree结构进行查找(mysql);生成索引,建立Hash结构进行查找;二叉查找树特点:左...原创 2020-03-10 21:31:13 · 374 阅读 · 0 评论 -
JAVA面试准备之数据库
1.数据库架构 1.1 如何设计一个关系型数据库? JAVA面试准备之数据库 数据库架构:https://blog.youkuaiyun.com/qq_31965925/article/details/1047832162.索引模块 2.1为什么要使用索引? 2.2什么样的信息能成为索引? JAVA面试准备之数据库 索引模块(1):htt...原创 2020-03-10 21:13:17 · 149 阅读 · 0 评论 -
JAVA面试准备之数据库 索引模块(1)
为什么要使用索引?答:索引能够让我们避免全表扫描,提升检索效率。查询数据的方式:全表扫描:将整张表的数据全部或者分批次加载到内存当中。存储的最小单位是块或者页,他们是由多行数据来组成的。将这些块都加载进来,逐个块去轮循,找到我们要的目标并返回。这种方式普遍被认为非常的慢,当只有少量的数据,只有几十行左右,直接加载到内存里进行全表扫描,比索引方式要快。但数据量很大的表里,该方法就不...原创 2020-03-10 21:06:03 · 150 阅读 · 0 评论 -
JAVA面试准备之数据库 数据库架构
如何设计一个关系型数据库?回答:要设计一个关系型数据库,首先要将其划分为两大部分:一个是存储部分,该部分类似一个文件系统,将数据持久化到存储设备当中;有存储是不够的,还需要一个程序实例模块,对存储进行逻辑上的管理,而程序实例部分将包含:将数据的逻辑关系转换为物理的存储关系的存储管理模块;优化执行效率的缓存模块;将SQL语句进行解析的SQL解析模块;记录操作的日志管理模块;进行多用户管理的权限划...原创 2020-03-10 21:04:02 · 317 阅读 · 0 评论 -
数据库 分解3NF
【例】关系模型R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D}算法一:将关系R转化3NF的保持函数依赖的分解第一步:首先计算出F的最小依赖集(算法详见最小函数依赖),得到F'={A→BC,AD→E,E→D}。第二步:观察U中是否有属性不在F'中的出现,如果有,则这个个属性组成一对关系R,并在原来的U中删除这些属性。而例子中U中的属性都出现在F中,则可以跳过这一步。第三步:对F'中的函数依赖,把左边的相同分为一组,一组中出现的所有属性为一个关系。如F原创 2020-06-20 19:32:22 · 5469 阅读 · 2 评论 -
数据库 范式判断
1NF如果一个关系模式R的所有属性都是不可分的基本数据项,则R为1NF。属性不可拆2NF属性间满足完全依赖,完全依赖是指不能存在仅依赖主键一部分的属性。例设关系模式R(A,B,C,D),函数依赖集F={A->C,C->A,B->AC,D->AC,BD->A}.候选码是BD,确定属于第几范式?第一范式,虽然BD- >A,但是存在B->A,存在部分函数依赖3NF属性不依赖于其他非主属性例如:学生档案表(学号,姓名,年龄,生源地编号,.原创 2020-06-20 19:31:20 · 905 阅读 · 0 评论 -
数据库 计算最小函数依赖
例7设关系模式R(A,B,C,D),函数依赖集F={A->C,C->A,B->AC,D->AC,BD->A}.求F的最小函数依赖.①将F中的函数依赖都分解为右部为单属性的函数依赖.F={A→C,C→A,B→A,B→C,D→A,D→C,BD→A}②去掉F中冗余的函数依赖.判断A→C是否冗余.设:G1={C→A,B→A,B→C,D→A,D→C,BD→A},得(A)G1+=A(G1是F去掉A->C,求去掉A->C后A的闭包)∵C不属于(A)G1+ ∴ A→..原创 2020-06-20 19:19:10 · 1625 阅读 · 0 评论 -
数据库 计算候选码
函数依赖闭包计算1.(AE)+ = AE2.因为A->D,E->C,所以 (AE)+=AEDC3.因为CD->I ,所以(AE)+=AEDCI候选码计算例1:R<U,F>,U=(A,B,C,D,E,G),F={AB->C,CD->E,E->A,A->G},求候选码。L:BD R:G LR:ACEX=BD(L类和N类) Y=ACE(LR类)因为BD+=BD,除了G以外(G是属于R,所以一定不...原创 2020-06-20 19:15:08 · 1843 阅读 · 0 评论