数据库理论8月份专题
徐明曉
这个作者很懒,什么都没留下…
展开
-
【烈日炎炎战后端】MySQL理论(2.8万字)
MySQL理论1. 数据库三大范式2. char 和 varchar 的区别?3. Mysql的存储引擎以及区别4. 一条SQL查询是如何执行的?5. 什么是回表6. MySQL是如何解决幻读的7. 主从复制原理8.mysql日志中redo和undo日志概念以及应用【MySQL索引】[1] 什么是MySQL索引?[2] B+树相对于B-树的优势?[3] MySQL索引实现[4] 聚簇索引(非聚簇索引)[6] 最左前缀原则[7] 联合索引[8] 覆盖索引[9] 什么情况下索引会失效?[10] 什么情况下不建议原创 2020-08-06 09:15:11 · 694 阅读 · 0 评论 -
[<MySQL优化总结>]
MySQL优化总结[1] 数据库设计和表创建时考虑性能[2] SQL的编写需要注意优化[3] 谈谈你对慢查询的理解,如何解决慢查询?[4] 分区[5] 分表[6] 分库https://www.nowcoder.com/discuss/150059?type=0&order=0&pos=8&page=0https://zhuanlan.zhihu.com/p/98146427[1] 数据库设计和表创建时考虑性能设计表时注意:表字段避免null值出现,null值很难查询优原创 2020-08-06 09:12:48 · 210 阅读 · 0 评论 -
【MySQL中的锁】
MySQL中的锁[1] 为什么要加锁[2] 不同引擎所支持的锁?[3] 行锁:悲观锁[4] 意向锁[5] 间隙锁[5] MVCC:乐观锁[6] 什么时候会加锁?原文链接:https://blog.csdn.net/soonfly/article/details/70238902首先从思想上无论在java还是mysql都有这乐观锁和悲观锁的概念,数据库可以分为悲观锁(共享锁和排他锁),本文就从这里入手[1] 为什么要加锁锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的原创 2020-08-06 09:11:32 · 84 阅读 · 0 评论 -
[<事务专题>]
事务专题[1] 事务的四种特性?[2] 并发操作会产生的问题[3]事务的隔离级别有哪些?[1] 事务的四种特性?原子性(Atomicity):事务作为一个整体被执行 ,要么全部执行,要么全部不执行一致性(Consistency):保证数据库状态从一个一致状态转变为另一个一致状态隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行持久性(Durability):一个事务一旦提交,对数据库的修改应该永久保存事务是数据库的概念**:园艺搁池**[原创 2020-08-06 09:10:41 · 105 阅读 · 0 评论 -
MySQL索引
MySQL索引【MySQL索引】[1] 什么是MySQL索引?[2] B+树相对于B-树的优势?[3] MySQL索引实现[4] 聚簇索引(非聚簇索引)[6] 最左前缀原则[7] 联合索引[8] 覆盖索引[9] 什么情况下索引会失效?[10] 什么情况下不建议建索引[11] Hash索引【MySQL索引】https://cloud.tencent.com/developer/article/1125452https://www.jianshu.com/p/7c0709976f40[1] 什么是M原创 2020-08-06 09:09:29 · 166 阅读 · 0 评论 -
mysql日志中redo和undo日志概念以及应用
https://blog.csdn.net/q1060701529/article/details/102393291ACID首先来讨论事务的四大特性ACID原子性(Atomicity):事务作为一个整体来执行,要不都执行,要不都不执行一致性(Consistency):事务必须保证数据库从一个一致状态转移到另一个一致状态。不能破坏关系数据的完整性以及业务逻辑的一致性。完整性一般就是数据的域完整性、实体完整性以及参照完整性。域完整性始址我们在创建表的时候指定的数据类型,输入限制。实体完整性.原创 2020-08-06 09:07:42 · 454 阅读 · 0 评论 -
主从复制原理
整理自深入浅出mysql:https://download.csdn.net/download/qq_16399991/10660150https://blog.csdn.net/qq_16399991/article/details/82749333概述mysql从3.23版本开始提供复制功能,复制是将主库的DDL和DML操作通过二进制日志传递到复制服务器(从库)上,然后从库对这些日志重新执行(重做),从而使得主库和从库保持数据一致。mysql复制的优点:如果主库出现问题,可以快速切换到从.原创 2020-08-06 09:07:10 · 121 阅读 · 0 评论 -
MySQL是如何解决幻读的
一、什么是幻读在一次事务里面,多次查询之后,结果集的个数不一致的情况叫做幻读。而多出来或者少的哪一行被叫做 幻行二、为什么要解决幻读在高并发数据库系统中,需要保证事务与事务之间的隔离性,还有事务本身的一致性。三、MySQL 是如何解决幻读的如果你看到了这篇文章,那么我会默认你了解了 脏读 、不可重复读与可重复读。1. 多版本并发控制(MVCC)(快照读)多数数据库都实现了多版本并发控制,并且都是靠保存数据快照来实现的。以 InnoDB 为例,每一行中都冗余了两个字段。一个是行的创建版本,一个是原创 2020-08-06 09:06:36 · 958 阅读 · 5 评论 -
什么是回表
回表就是先通过数据库索引扫描出数据所在的行,再通过行主键id取出索引中未提供的数据,即基于非主键索引的查询需要多扫描一棵索引树.因此,可以通过索引先查询出id字段,再通过主键id字段,查询行中的字段数据,即通过再次查询提供MySQL查询速度....原创 2020-08-06 09:06:06 · 20688 阅读 · 4 评论 -
一条SQL查询是如何执行的?
大体来说,MySQL 可以分为 Server 层和存储引擎层两部分.Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等.而存储引擎层负责数据的存储和提取.其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎.现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎.原创 2020-08-06 09:05:33 · 173 阅读 · 0 评论 -
Mysql的存储引擎以及区别
Innodb:Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别.该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引.但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表.当需要使用数据库事务时,该引擎当然是首选.由于锁的粒度更小,写操作不会锁定全表,所以.原创 2020-08-06 09:05:06 · 123 阅读 · 0 评论 -
char 和 varchar 的区别?
char(n) :固定长度类型.varchar(n) :可变长度.varchar(10) 和 varchar(20) 的区别?varchar(10) 中 10 的涵义最多存放 10 个字符,但varchar(10) 和 varchar(20) 存储在存储同样字符串时(如"hello")所占空间一样,但后者在排序时会消耗更多内存,因为 order by col 采用 fixed_length 计算 col 长度....原创 2020-08-06 09:04:18 · 198 阅读 · 0 评论 -
数据库三大范式
什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系.所以建立科学的,规范的的数据库是需要满足一些.第一范式(列不可再分): 数据库表中的所有字段值都是不可分解的原子值,如一张表里有一个字段是高级职称,但是在高校里高级职称包括副教授和教授,这属于可分的,所以不符合第一范式.第二范式(非主属性完全依赖于码 ):在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中.例如,在选课关系表(学号,课程号,成绩,学分),关键字为组合关键字原创 2020-08-06 09:03:46 · 156 阅读 · 0 评论