读发布!设计与部署稳定的分布式系统(第2版)笔记11_无限长的结果集

news2024/11/18 15:27:00

1. 无限长的结果集是导致响应缓慢的常见原因

1.1. 当违反稳态模式时,就可能产生无限长的结果集

1.2. 当调用方允许另一个系统支配调用时,就会出现一个无限长的结果集

2. 数据库突然返回500万行,而不是通常的100多行时会发生什么?

2.1. 在用户失去兴趣后的很长时间内,还在一个while循环中打转

2.2. 除非应用程序明确限制了其可以处理的结果数量,否则系统就可能会耗尽内存

3. 早期的社交媒体网站假定每个用户的连接数量将会呈现钟形曲线一样的分布,但事实上是一个幂律分布

3.1. 如果使用钟形曲线分布式关系进行测试,则永远不会期望能加载一个其关系数量比平均值多几百万倍的实体

3.2. 但是当使用幂律分布时,肯定会出现这种情况

4. 某表从不会超过1000行,但DBA发现,它位于最大系统开销查询列表之首

4.1. 高CPU使用率看起来像是垃圾回收造成的

4.2. 这个通常很小的表,当时竟然拥有超过1000万行的记录

4.2.1. 由于在开发过程中的数据集往往很小,因此应用程序开发工程师可能永远不会体验到这样的负面后果

4.3. 避免这台应用程序服务器查询中缺少LIMIT子句所造成的灾难

4.4. sql

-- Microsoft SQL Server

SELECT TOP 15 colspec FROM tablespec
-- Oracle(since 8i)
SELECT colspec FROM tablespec
WHERE rownum <= 15
-- MySQL and PostgreSQL
SELECT colspec FROM tablespec
LIMIT 15

5. 解决方案

5.1. 在所有API或协议中,调用方应该始终指出准备接受的响应数目

5.2. 注意所有可能会累积无限子记录的数据库关系

5.2.1. 标准的SQL语法限定结果集的大小

5.3. 可以先对完整的结果集进行查询,但在达到最大行数后,就跳出处理循环

5.3.1. 给应用程序服务器提供一些额外的稳定性,但代价是浪费了数据库的系统容量

5.4. 使用切合实际的数据量

5.5. 在前端发送分页请求

5.6. 不要依赖数据生产者

5.6.1. 由于系统某个其他部分的作用,这个数量可能会在没有警告的情况下发生变化

5.6.2. 合理的数量只能是“零”“一”和“许多”

5.6.3. 除非单单查询某一行,否则就有可能返回太多结果

5.6.4. 要想对创建的数据量加以限制,不要依赖数据生产者

5.7. 在其他应用程序级别的协议中使用返回数量限制机制

5.7.1. 服务调用、RMI、DCOM、XML-RPC以及任何其他类型的请求-回复调用,都容易返回巨量的对象,从而消耗太多内存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/681752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

密码找回流程绕过测试-业务安全测试实操(20)

密码找回流程绕过测试 测试原理和方法 很多网站的密码找回功能一般有以下几个步骤 (1) 用户输入找回密码的账号: (2) 校验凭证:向用户发送短信验证码或者找回密码链接,用户回填验证码或单击链接进入密码重置页面,以此方式证明当前操作用户是账号主人;(3) 校验成功进入重置密…

重构项目的十大注意事项

文章目录 1. 确认重构的目的和范围2. 建立好重构计划3. 检查重构前的代码4. 测试重构后的代码5. 避免过度重构6. 保持团队成员沟通7. 使用重构工具8. 使用版本控制系统9. 持续监控重构进度10. 不断改进技能 1. 确认重构的目的和范围 在开始重构之前,需要明确重构的…

Spring(五)基于注解的自动装配

注解:和XML配置文件一样,注解本身并不能执行,注解本身仅仅只是做一个标记,具体的功能是框架检测到注解标记的位置,然后针对这个位置按照注解标记的功能来执行具体操作。 本质上:所以一切的操作都是java代码…

K8S调度器之污点和容忍

1. Taint和Toleration 节点亲和性,是pod的一种属性(偏好或硬性要求),它使pod被吸引到一类特定的节点。Taint则相反,它使节点能够排斥一类特定的pod。Taint和Toleration相互配合,可以用来避免pod被分配到不合适的节点上。每个节点上都可以应用…

阿里云ECS服务器vCPU什么意思?

阿里云ECS服务器vCPU和CPU是什么意思?CPU和vCPU有什么区别?一台云服务器ECS实例的CPU选项由CPU物理核心数和每核线程数决定,CPU是中央处理器,一个CPU可以包含若干个物理核,通过超线程HT(Hyper-Threading&am…

chatgpt赋能python:Python中如何合并相同key的元素?

Python 中如何合并相同 key 的元素? 在 Python 编程中,很多时候需要对列表或字典进行合并相同 key 的操作,这篇文章将介绍合并相同 key 的方法及应用。 什么是相同 key 合并? 相同 key 合并指的是将具有相同 key 的元素合并为一…

关于防火墙配置长连接的设置

长连接的使用场景 当业务中客户端和服务器长时间无数据交互,空闲时间超过1800秒,会话会因超时被清除。后续客户端没有重新发起连接,直接发送控制报文时导致数据不通。常见于数据库连接。 重点说明 以天为单位的会话超时需要开启长效会话比例…

考研高数考点总结

一.极限 1.函数的四性&#xff1a; 单调性、周期性、奇偶性、有界性&#xff1a; 周期性、奇偶性各记住一个结论。 有界性判定&#xff1a; 1.定义法&#xff1a;-M<绝对值<M2.函数性质&#xff1a;函数在闭区间上连续一定有界 闭区间连续》开区间连续加左端点右极限…

ML算法——最优化|凸优化随笔【机器学习】【端午节创作】

文章目录 数学预备知识1、最优化问题2、凸优化2.1、梯度下降2.2、牛顿法2.3、阻尼牛顿法2.4、拟牛顿法2.5、总结 数学预备知识 1、最优化问题 最优化问题指的是在给定条件下&#xff0c;找到一个目标函数的最优解&#xff0c;即找到能够使目标函数取得最大值或最小值的变量取…

​LeetCode解法汇总1254. 统计封闭岛屿的数目

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 二维矩阵 grid 由 0 &#xff08;土地&#xff09;和 1 &#xff08;水&#xf…

HuggingFace-RL-Unit2-Part2——初探Q-Learning

初探Q-Learning 文章目录 初探Q-Learning什么是Q-Learning&#xff1f;Q-Learning 算法第一步: 初始化Q-表第二步: 使用epsilon贪心策略选择一个动作第三步: 执行动作At, 得到奖励Rt1和下一个状态St1第四步: 更新Q(St, At) 异策略 vs 同策略Q-Learning算法实例第一步: 初始化Q-…

drone、gogs、docker与项目集成实现自动化部署

目录 前言项目目录结构目录结构测试文件 文件内容Dockerfilerun.shdrone.yml 测试打包部署中查看容器访问项目成功 常见问题Gogs 推送 URL 被解析到默认禁用的本地网络地址1、drone登录没有权限2、cannot ping the remote server3、推送代码以后不能自动clone4、maven编译报错F…

SynchronousQueue源码

介绍 SynchronousQueue作为阻塞队列的时候&#xff0c;对于每一个take的线程会阻塞直到有一个put的线程放入元素为止&#xff0c;反之亦然。在SynchronousQueue内部没有任何存放元素的能力。所以类似peek操作或者迭代器操作也是无效的&#xff0c;元素只能通过put类操作或者ta…

JDBC 和数据库连接池

JDBC 和数据库连接池 1. JDBC 概述 1.1 基本介绍 JDBC为访问不同的数据库提供了统一的接口&#xff0c;为使用者屏蔽了细节问题Java程序员使用JDBC&#xff0c;可以连接任何提供了JDBC驱动程序的数据库系统&#xff0c;从而完成对数据库的各种操作。JDBC的基本原理图[重要!]…

【编译、链接、装载十三】内存中的栈——图解栈的运行过程

【编译、链接、装载十三】内存中的栈——图解栈的运行过程 一、程序的内存布局二、栈1、什么是栈2、寄存器 三、函数执行四、结合汇编——分析函数调用1、demo2、反汇编3、反汇——图解反汇编、栈帧、寄存器 一、程序的内存布局 看看加上动态链接之后进程的地址空间是如何分布…

详解Spring配置文件

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;JavaEE、Spring Spring配置文件 1、简介2、XML3、\<Bean\>3.1、Bean标签范围配置3.2、生命周期3.3、⭐实例…

word文档批量生成工具(附免费软件)(按Excel表格内容自动替换内容生成文档)

批量生成word文档是让人无比厌恶但有时又不得不做的事情。比如学校要给拟录取的学生发通知书&#xff0c;就可能需要批量生成一批只有“姓名”、“学院”和“专业”不同&#xff0c;其他内容都相同的word文档以供打印&#xff08;事实上直接生成pdf是更好的选择&#xff0c;这个…

chatgpt赋能python:Python如何计算p值?

Python如何计算p值&#xff1f; 在统计学中&#xff0c;p值是估计观察到的结果是由随机因素导致的概率。在Python中&#xff0c;我们可以使用一些统计库来计算p值。 常见的统计库 Python中有很多统计库可以用来计算p值。其中&#xff0c;SciPy是最常用的统计库之一。它包含了…

【American English】去超市买东西常用对话,物品名字

不懂不丢人&#xff0c;不懂装懂才丢人。最近有点犯这毛病&#xff0c;多写一些东西消除一下。 无论什么知识都是多了才能成体系&#xff0c;更多自己在美国的小总结可见专栏&#xff1a;English。 文章目录 找寻物品优惠或折扣试吃结账退货离开 找寻物品 Excuse me, where can…

Linux——文件的概念、操作和理解

引言 文件 文件内容 文件属性 要操作文件&#xff0c;就要先打开文件。根据冯诺依曼体系&#xff0c;只能操作内存中的数据。因此要先把文件内容加载到存储器&#xff0c;即内存中。 文件接口 语言层面的文件接口 FILE* fopen(const char *path, const char *mode); int …