随笔分类 - 福大大架构师每日一题
摘要:福哥答案2020-07-29: key 太长会导致一个页当中能够存放的 key 的数目变少,间接导致索引树的页数目变多,索引层次增加,从而影响整体查询变更的效率。 索引字段大小限制关于innodb_large_prefix这个配置的限制:对于MySQL5.7.7之前,这个值默认是False,之后(包
阅读全文
摘要:此答案来自群成员:使用一致性hash实现添加节点,并进行数据迁移.数据迁移完成之前保留原有的节点路由信息.每次添加节点重新计算key值所在hash,hash到新节点的key可以先复制一份到新的节点,并标记旧节点的key待删除.直到所有的key都计算好迁移完毕,切换新旧节点信息,删除掉所有旧节点多余的
阅读全文
摘要:福哥答案2020-07-26: 功能用户输入user username、pass password注册,注册后输入dir查看服务器文件列表,输入get filename path下载文件到指定路径。 思路①客户端建立连接,打开输入输出流,开循环支持多次数据交换,直到用户输入退出命令,再关闭流和连接。
阅读全文
摘要:福哥答案2020-07-25: 1.链表反转。反转,输出,反转。2.递归。3.数组。遍历存数组,然后反向遍历数组。4.栈。遍历存栈,然后pop栈输出。 golang代码采用第2种方法。代码如下: package test27_reverseprint import ( "fmt" "testing"
阅读全文
摘要:福哥答案2020-07-24: 同步算法基于 ZAB 协议,一种快速 Paxos 算法。 快速Paxos算法Paxos算法可能出现死循环,就是在两个Proposer总是在交替prepare。并且,Paxos算法在出现竞争的情况下,其收敛速度很慢,甚至可能出现活锁的情况,例如当有三个及三个以上的pro
阅读全文
摘要:福哥答案2020-07-22: 1.主从同步缓冲区设定大小,如果进行全量复制耗时太长,进行部分复制时发现数据已经存在丢失的情况,必须进行第二次全量复制,致使slave陷入死循环状态。在全量复制的时候,最好做好监控。2.有时候,redis存储过多,全量同步变得不可接受。这时考虑如果增量复制时,发生阻塞
阅读全文
摘要:福哥答案2020-07-23: Redis 在完成初始化全局服务器配置,加载配置文件,初始化服务器,开始加载持久化的数据到内存中。如果启用了 appendonly 了,则Redis从 appendfile 加载数据,否则就是开启了rdb,从dbfile 加载数据。appendfile 中保存的是re
阅读全文
摘要:福哥答案2020-07-20: 1.由于 Redis 是内存数据库,短时间内大量增加数据,可能导致内存不够用。2.redis是单线程的,单台服务器无法充分利用多核服务器的CPU。3.遇到大量查询时容易阻塞。4.缓存和数据库双写一致性问题。5.缓存雪崩问题。6.缓存击穿问题。7.缓存的并发竞争问题。8
阅读全文
摘要:福哥答案2020-07-21: 1.从服务发送一个sync同步命令给主服务要求全量同步。2.主服务接收到从服务的sync同步命令时,会fork一个子进程后台执行bgsave命令(非阻塞)快照保存,生成RDB文件,并将RDB文件发送给从服务。3.从服务再将接收到的RDB文件载入自己的redis内存。4
阅读全文
摘要:福哥答案2020-07-09: 1.参数说明 slow_query_log 慢查询开启状态slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)long_query_time 查询超过多少秒才记录 查看慢查询相关
阅读全文
摘要:福哥答案2020-07-11: 1.保存位置:session服务端。cookie客户端。2.安全性:session相对安全,cookie相对不安全。3.存储类型:session能够存储任意的对象,cookie只能存储String类型的对象。4.大小限制:session没有大小限制。cookie有大小
阅读全文
摘要:福哥答案2020-07-10:此答案来自群成员: SQL提高查询效率的几点建议 1.如果要用子查询,那就用EXISTS替代IN、用NOT EXISTS替代NOT IN。因为EXISTS引入的子查询只是测试是否存在符合子查询中指定条件的行,效率较高。无论在哪种情况下,NOT IN都是最低效的。因为它对
阅读全文
摘要:福哥答案2020-07-13: 有人觉得第一种方法好,也有人觉得第二种方法好。如果搜索字段远小于显示字段,比如搜索字段为3个,显示字段有20个,这个时候用第一种方法好。es+hbase,一般这样搭配。如果搜索字段跟显示字段接近,或者一条【行记录】的数据量并不大,这个时候用第二种方法好。 回答1:ES
阅读全文
摘要:福哥答案2020-07-12: 回表:先定位【主键值】,再定位【行记录】,扫描了两次B+树,这就是回表。 避免方法:用覆盖索引可以避免回表。将被查询的字段,建立到联合索引里去。explain的输出结果Extra字段为Using index时,能够触发覆盖索引。
阅读全文
摘要:福哥答案2020-07-07: 1.同服务跨库。表名称带上库名。SELECT * FROM 数据库名称1.表名称 JOIN 数据库名称2.表名称 ON 数据库名称1.表名称.tid = 数据库名称2.表名称.tid 2.不同服务跨库。使用federated引擎。在机器A上的数据库A中建一个表B。建表
阅读全文
摘要:福哥答案2020-07-08: 表锁是不会出现死锁的,但锁等待现象是有可能的。行锁是行级别的,有可能出现死锁。环形等待死锁和唯一键死锁 很常见。 避免死锁方法:1.减少事务操作的记录数。2.约定按相同顺序访问记录。3.对事务中要操作的记录进行排序。4.避免使用唯一键约束。5.用表锁,不用行锁。6.在
阅读全文
摘要:福哥答案2020-07-05: 区别:1.可靠性:tcp可靠。udp不可靠。2.连接性:tcp面向连接。udp无连接。3.报文:tcp字节流。udp面向报文。4.传输效率:tcp低。udp高。5.多点通信:tcp一对一通信。udp一对一、一对多、多对一,多对多通信。 应用场景:tcp:(1)文件传输
阅读全文
摘要:福哥答案2020-07-06:表a和表b的字段都是id和tid,数据类型都是int。查询结果顺序上以 表a 为准。1.JOIN。SELECT * FROM a JOIN b ON a.tid = b.tid LIMIT 200 OFFSET 500002.子查询。SELECT * FROM (SEL
阅读全文
摘要:福哥答案2020-07-04:三次握手如下:1.SYN j2.ACK j+1,SYN k3.ACK k+1 time_wait出现在断开连接第四次挥手的时候出现。TIME_WAIT状态存在有两个原因。<1>可靠终止TCP连接。如果最后一个ACK报文因为网络原因被丢弃,此时server因为没有收到AC
阅读全文
摘要:福哥答案2020-07-02: 简单回答: 域名解析。 建立TCP连接。 请求。 处理。 响应。 释放TCP连接。 页面渲染。 中级回答: 域名解析 浏览器DNS缓存。 操作系统DNS缓存。 路由器缓存。 ISP 服务商缓存。 根服务器递归查询。 建立TCP连接。三次握手。 请求。请求报文格式: 请
阅读全文

浙公网安备 33010602011771号