非语言向关题解 多路复用 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程. 而不是阻塞在单个IO上面, 提高处理性能. select、poll、epoll select: 使用轮询(效率低)是否有感兴趣的事件发生, 底层使用bitmap标记, 现在了1024的文件描述服上限 poll: 使用pollfd数组替换bitmap的实现,没有1024的限制了, 还是轮询(效率低) epoll: 使用事件触发通知,内核回调的方式, 避免了轮询,能够高效处理. TCP拥塞控制 拥塞控制, 工具网络拥塞情况调整数据发送速度(拥塞窗口cwnd) 拥塞控制算法: 慢启动(指数增长) ,到达阈值后,拥塞避免(线性增长), 遇到拥塞后(超时), 将阈值调整为当前的一半,然后进入重启动. 快重传(优化): 当收到同一个ack3次后, 认为发送拥塞, 重传ack对应的数据, 快恢复(优化): 然后cwnd调整为当前的一半, 不进入慢启动,自己进入拥塞避免 TCP 沾包 应该是tcp 粘包, 说的是tcp是传输的数据是字节流, 数据是连续的, tcp协议层无法区分一次数据传输的其实位置, 需要应用层处理. TCP 沾包解决方式 固定长度 固定头部(头部中固定位置表示整个body的长度)+可变长度的body 特殊字符做分隔符 mysql底层索引结构 底层采用B+树实现索引. 回表 回表指通过普通索引查到对应的数据行主建id之后, 再使用主建id到数据表中查询需要的数据行数据, 如果索引中已经包含了所有要查询的数据(覆盖索引), 就可以避免回表查询, 提高性能. 索引失效场景 1. 查询条件使用了函数或表达式 2. 隐式类型转换 3. LIKE 查询以通配符开头 4. OR 条件未全部使用索引列 5. 不满足最左前缀原则(复合索引) 6. 查询条件包含范围查询(复合索引) 7. NULL 值处理 8. 查询优化器选择错误的执行计划 9. ORDER BY 与 LIMIT 不匹配索引 10. 数据量太小
点赞 1

相关推荐

牛客网
牛客企业服务