摘要:
SQL和NoSQL的区别 SQL|NoSQL | 采用关系型的表来存储数据,具有严格的数据模式约束,因此存储数据很难出错|采用类JSON格式的文档来存储键值对信息,更加灵活,但也会导致数据不一致问题的发生 使用表之前需要先定义表的模式|存储数据不需要特定的模式 使用规范化来减少数据冗余|使用非规范化 阅读全文
摘要:
准备知识 候选码:可以唯一确定一个元组的属性,可以是联合属性,候选码可以有多个。 如:在学生表中,学号可以唯一确定一个学生,那么学号就是候选码 如:再学生选课表中,学号不能唯一确定一个选课关系,而是学号和课号共同确定一个选课关系,所以学号和课号的组合是候选码。 如:在学生表中加入身份证属性,那么学号 阅读全文
摘要:
什么是MySQL InnoDB下的当前读和快照读? 当前读 它读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。 快照读 快照读的前提是隔离级别不是可串行化,串行级别下的快照读会退化成当前读。 快照读是基于提高并发性的考虑,快照读的实现基于MVCC。可以认为 阅读全文
摘要:
悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁。 传统的关系型数据库中用到了很多这种锁机制,比如行级锁、表级锁、读锁、写锁等,都是在做操作之前先上锁。 使用场景:多写的场景 实现方式:加锁 乐观锁 总是假设最好的情况,每次去拿数据的时候都认为别人不会修 阅读全文
摘要:
封锁粒度 MySQL提供了两种封锁粒度:行级锁、表级锁 应该尽量只锁定需要修改的那部分数据,而不是所有的资源。 锁定的数据量越少,发生锁争用的可能性就越小,系统的并发程度就越高。 但是加锁需要消耗资源,锁的各种操作(获取锁、释放锁、检查锁状态)都会增加系统开销。 因此封锁粒度越小,系统开销就越大。 阅读全文
摘要:
脏读、不可重复读、幻读 事务隔离级别 隔离级别|脏读|不可重复读|幻读 | | | Read Uncommitted(读未提交)|可能|可能|可能 Read Committed(读已提交)|不可能|可能|可能 Repeatable Read(可重复读)|不可能|不可能|可能 Serializable 阅读全文
摘要:
数据库事务:构成单一逻辑工作单元的操作集合 数据库事务可以包含一个或多个数据库操作,但这些操作构成一个逻辑上的整体 构成逻辑整体的这些数据库操作,要么全部执行成功,要么全部不执行 构成事务的所有操作,要么全都对数据库产生影响,要么全都不产生影响,即不管事务是否执行成功,数据库总能保持一致性状态 以上 阅读全文
摘要:
HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。 HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。 IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传输数据。 TCP协议可靠、面向连接。 HTTP协议是无状 阅读全文
摘要:
缓存命中 缓存再验证成功 缓存再验证失败 = 缓存未命中 Cache_Control 可缓存性|解释 | public|HTTP请求返回的过程中,在cache_control中设置这个值,代表HTTP请求返回的内容所经过的任何路径当中(包括中间一些HTTP代理服务器以及发出请求的客户端浏览器),都可 阅读全文
摘要:
HTTP响应报文 状态行:HTTP版本 + 状态码 + 解释状态码的简单短语 状态码: 1xx表示通知信息的,如请求收到了或正在进行处理 2xx表示成功,如接受或知道了 3xx表示重定向,如要完成请求还必须采取进一步的行动 4xx表示客户的差错,如请求中有错误的语法或不能完成 5xx表示服务器的差错 阅读全文