• 关于 多操作数故障排除 的搜索结果

问题

一例所有文件都打不开的数据恢复过程

elinks 2019-12-01 21:14:39 9721 浏览量 回答数 0

回答

以前上网很快,最近1周网速突然很慢,我是3个人共用一个路由器的,以前3个人用时也是很快。现在是我看视频很卡,用了优化大师优化,c盘文件及桌面文件都清理了,用360也清理了垃圾文件,用小红伞杀毒也没杀出病毒,就是老样子。现在两个人用一个,也是很慢,到半夜了在搜狐视频或是酷六什么那看电影,只剩我一个人在用,还是卡。 请问高手能帮我诊断下怎么回事,或是怎么设置下改变下状况。另一个人也是发现网速慢了,我们都是一个样子,可能是被盗了吗? 我用360查看网络连接,system id process 的连接很多,显示是没有连接上,状态是等待,都是端口80,目标归属地什么北京联通,大连联通,深圳联通的,有7个左右,我qq也没开啊,想结束也结束不了,只是在迅雷看看里看电影,没有装他的插件。把它关了还是有。向高手请教?插件只有搜狗输入法,迅雷,360,迅雷看看没有其他的 " 网速变慢的原因有很多可能,比如网络本身的问题、网卡硬件问题,有或者是系统问题等等。可以通过其他联网设备确认下是否有网速变慢的情况;如果网络本身没有问题(其他设备可以正常连接),问题就出现电脑本身: 1,、疑难解答 可以先试试更新网卡驱动,若无效,我们可以利用系统自身提供的【疑难解答】功能来寻求解决。直接搜索进入【疑难解答】然后点击右侧的对应项目,选择【运行疑难解答】,按照向导提示进行操作即可,看是否能够解决网络连接问题。 <img src=""https://gss0.baidu.com/-fo3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=f415cd6cda3f8794d3aa4028e22b22cc/a6efce1b9d16fdfac901e83aba8f8c5495ee7bf0.jpg""> <img src=""https://gss0.baidu.com/-Po3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=1695c9ff00f41bd5da06e0f261eaadf3/f2deb48f8c5494ee9b9421cd23f5e0fe98257eab.jpg""> 2、网络重置 上述均不能解决的话,最后可通过进行网络重置来彻底解决。路径:【开始】—【设置】—【网络和Internet】—【状态】,在右侧列表中找到【网络重置】并点击,按提示完成操作即可。 <img src=""https://gss0.baidu.com/-Po3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=e6034daa9c58d109c4b6a1b4e168e087/11385343fbf2b211a844ab9ac48065380dd78eff.jpg""> 另外,在有限的硬件条件下,想让现有的网速能够快一些,具体可以参考以下步骤: 步骤1. Win+R组合键后输入gpedit.msc进入组策略编辑器,依次进入“计算机配置-Windows设置”后,再右侧找到“基于策略的Qos”的这个选项。 <img src=""https://gss0.baidu.com/-Po3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=c08ee009a564034f0f98ca009ff35509/a71ea8d3fd1f41341c7f2baa2b1f95cad0c85e9d.jpg""> 步骤2. 在“基于策略的Qos”上点击鼠标右键,选择“高级QoS设置”,在入站TCP流量选项卡中,勾选”制定入站TCP吞吐量级别“,选择最后那个”级别3“。 <img src=""https://gss0.baidu.com/9fo3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=f340223fb8fd5266a77e34129b28bb13/e1fe9925bc315c604623453b83b1cb13485477ab.jpg""> 注意的:如果在更改完设置后发现上网时系统出现假死、卡顿等问题,可以把上面的“制定入站TCP吞吐量级别“设置调整到“级别2”,减少数据处理对系统硬件的压力(内存小于4GB,则建议使用默认最小吞吐量)。 “高级QoS设置“是什么呢? 通过高级服务质量 (QoS) 设置,您可以管理带宽使用以及计算机处理应用程序和服务设置的 DSCP 标记(而不是组策略设置的标记)的方式。高级 QoS 设置仅可在计算机级别应用,而 QoS 策略在计算机级别和用户级别均可应用。 若要更改吞吐量级别,选中“指定入站 TCP 吞吐量级别”复选框,然后根据下表选择吞吐量级别。吞吐量级别可以等于或小于最大值,具体取决于网络条件。 <img src=""https://gss0.baidu.com/9vo3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=eea0cfe33bfae6cd0ce1a3673f83231c/ca1349540923dd542fc589bcdf09b3de9d8248ab.jpg"">" 一、网络自身问题 您想要连接的目标网站所在的服务器带宽不足或负载过大。处理办法很简单,请换个时间段再上或者换个目标网站。 二、网线问题导致网速变慢 我们知道,双绞线是由四对线按严格的规定紧密地绞和在一起的,用来减少串扰和背景噪音的影响。同时,在T568A标准和T568B标准中仅使用了双绞线的 1、2和3、6四条线,其中,1、2用于发送,3、6用于接收,而且1、2必须来自一个绕对,3、6必须来自一个绕对。只有这样,才能最大限度地避免串扰,保证数据传输。本人在实践中发现不按正确标准(T586A、T586B)制作的网线,存在很大的隐患。表现为:一种情况是刚开始使用时网速就很慢;另一种情况则是开始网速正常,但过了一段时间后,网速变慢。后一种情况在台式电脑上表现非常明显,但用笔记本电脑检查时网速却表现为正常。对于这一问题本人经多年实践发现,因不按正确标准制作的网线引起的网速变慢还同时与网卡的质量有关。一般台式计算机的网卡的性能不如笔记本电脑的,因此,在用交换法排除故障时,使用笔记本电脑检测网速正常并不能排除网线不按标准制作这一问题的存在。我们现在要求一律按T586A、T586B标准来压制网线,在检测故障时不能一律用笔记本电脑来代替台式电脑。 三、网络中存在回路导致网速变慢 当网络涉及的节点数不是很多、结构不是很复杂时,这种现象一般很少发生。但在一些比较复杂的网络中,经常有多余的备用线路,如无意间连上时会构成回路。比如网线从网络中心接到计算机一室,再从计算机一室接到计算机二室。同时从网络中心又有一条备用线路直接连到计算机二室,若这几条线同时接通,则构成回路,数据包会不断发送和校验数据,从而影响整体网速。这种情况查找比较困难。为避免这种情况发生,要求我们在铺设网线时一定养成良好的习惯:网线打上明显的标签,有备用线路的地方要做好记载。当怀疑有此类故障发生时,一般采用分区分段逐步排除的方法。 四、网络设备硬件故障引起的广播风暴而导致网速变慢 作为发现未知设备的主要手段,广播在网络中起着非常重要的作用。然而,随着网络中计算机数量的增多,广播包的数量会急剧增加。当广播包的数量达到30%时,网络的传输效率将会明显下降。当网卡或网络设备损坏后,会不停地发送广播包,从而导致广播风暴,使网络通信陷于瘫痪。因此,当网络设备硬件有故障时也会引起网速变慢。当怀疑有此类故障时,首先可采用置换法替换集线器或交换机来排除集线设备故障。如果这些设备没有故障,关掉集线器或交换机的电源后,DOS下用 “Ping”命令对所涉及计算机逐一测试,找到有故障网卡的计算机,更换新的网卡即可恢复网速正常。网卡、集线器以及交换机是最容易出现故障引起网速变慢的设备。 五、网络中某个端口形成了瓶颈导致网速变慢 实际上,路由器广域网端口和局域网端口、交换机端口、集线器端口和服务器网卡等都可能成为网络瓶颈。当网速变慢时,我们可在网络使用高峰时段,利用网管软件查看路由器、交换机、服务器端口的数据流量;也可用 Netstat命令统计各个端口的数据流量。据此确认网络数据流通瓶颈的位置,设法增加其带宽。具体方法很多,如更换服务器网卡为100M或1000M、安装多个网卡、划分多个VLAN、改变路由器配置来增加带宽等,都可以有效地缓解网络瓶颈,可以最大限度地提高数据传输速度。 六、蠕虫病毒的影响导致网速变慢 通过E-mail散发的蠕虫病毒对网络速度的影响越来越严重,危害性极大。这种病毒导致被感染的用户只要一上网就不停地往外发邮件,病毒选择用户个人电脑中的随机文档附加在用户机子的通讯簿的随机地址上进行邮件发送。成百上千的这种垃圾邮件有的排着队往外发送,有的又成批成批地被退回来堆在服务器上。造成个别骨干互联网出现明显拥塞,网速明显变慢,使局域网近于瘫痪。因此,我们必须及时升级所用杀毒软件;计算机也要及时升级、安装系统补丁程序,同时卸载不必要的服务、关闭不必要的端口,以提高系统的安全性和可靠性。 七、防火墙的过多使用 防火墙的过多使用也可导致网速变慢,处理办法不必多说,卸载下不必要的防火墙只保留一个功能强大的足以。 八、系统资源不足 您可能加载了太多的运用程序在后台运行,请合理的加载软件或删除无用的程序及文件,将资源空出,以达到提高网速的目的。 您好,如您的宽带出现故障,可关注“中国联通”微信公众号,点击“客户服务>宽带报障>常见故障指引”,查看对应故障的处理方式。 如仍无法解决,可通过以下方式自助报障: 【方式一】关注“中国联通”微信公众号,点击“客户服务>宽带报障>在线报障”; 【方式二】登录中国联通手机营业厅APP,点击“服务>宽带>宽带办理服务>宽带报障”。 1...用360安全卫士查一下启动项,可能是垃圾插件太多了。现在P2P插件很吸血的。优化一下。 2...把3台电脑恢复系统,还有问题就是线路的问题了。 你把路由器 关掉重启 或者 重装 网卡驱动 试试吧。 最好还是重装。 重装还不好使 就是 宽带问题。

保持可爱mmm 2019-12-02 02:14:41 0 浏览量 回答数 0

回答

下图显示了无法连接 ECS 实例的原因分类和出现概率。若无法连接实例,建议您根据如下原因进行排查。 首先尝试远程连接 无论何种原因导致无法远程连接实例,请先尝试用阿里云提供的远程连接功能进行连接,然后再按原因分类进行故障排查。 登录   云服务器管理控制台。 找到需要连接的实例,在找到需要连接的实例,在   操作  列,单击   远程连接。 连接   管理终端。首次连接,需要先复制密码。 输入密码后,连接实例 。 若忘记密码,单击若忘记密码,单击   修改管理终端的密码,设置新密码。I/O 优化的实例,修改密码后即时生效,无需重启。 无法连接ECS实例排查思路 请根据如下各原因序逐一排查: 客户端本地网络异常 [出现概率:3%] 重置实例密码,未重启 ECS 实例 [出现概率:7%] iptables 配置异常(Centos 6)[出现概率:10%] 安全组公网规则 [出现概率:8%] 远程访问端口配置异常 [出现概率:10%] CPU 负载过高 [出现概率:9%] 1. 客户端本地网络异常 [出现概率:3%] 故障现象:用户无法登录外网。 可能原因:网卡驱动未开启或网卡配置有问题。 解决方法:查找 /etc/hosts.deny 看是否有拦截IP;检查网卡驱动,重新安装。 2. 重置实例密码,未重启实例 [出现概率:7%] 故障现象:有实例密码修改记录,但无重启实例记录。 可能原因:您修改了实例密码,但是未重启 ECS 实例。 解决方法: 登录 云服务器管理控制台。 单击左侧导航栏中的   实例。 单击页面顶部的地域。 选择需要的实例。单击   重启。 在弹出的提示框中,选择   重启,单击   确定。 3. iptables 配置异常(Centos 6)[出现概率:10%] 前提条件:您只有在已授权可关闭 iptables 的情况下,才能做该项排查。 故障现象:SSH 无法连接,关闭 iptables 后连接恢复。 解决方法:调整 iptables 配置策略。 查看防火墙规则: iptables -nvL –line-number L 查看当前表的所有规则,默认查看的是 filter 表,如果要查看 NAT 表,可以加上 -t NAT 参数。 n 不对 IP 地址进行反查,加上这个参数显示速度会快很多。 v 输出详细信息,包含通过该规则的数据包数量、总字节数及相应的网络接口。 修改规则。 若之前已设置过规则策略的,将原有的 iptables 文件保存一份,避免之前设置的策略丢失。 cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak 清空服务器上所有的规则。 iptables -F 设置 INPUT 方向所有的请求都拒绝。如果是线上业务请勿直接操作,会导致业务直接中断。 iptables -P INPUT DROP 设置 iptables 防火墙后需放行 22 号端口,否则会导致无法远程。 iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 指定 IP 访问22号端口。 iptables -I INPUT -s 192.168.1.1 -p tcp --dport 22 -j ACCEPT 说明: 192.168.1.1 为请求端 IP 地址。 使用   iptables -L  查看一下添加的规则是否生效。 iptables -L 保存添加的规则。 iptables-save > /etc/sysconfig/iptables 设置后需要重启iptables。 service iptables restart 或 /etc/init.d/iptables restart 操作完成后,重启服务器进行配置验证。 systemctl reboot 完成操作后,请再进行 SSH 连接。 4. 安全组公网规则 [出现概率:8%] 故障现象:ECS 服务器无法ping通,排查iptables、网卡IP配置无误,回滚系统后仍然无法ping通。 可能原因:ECS 实例安全组默认的公网规则被删除。 解决方法:重新配置 ECS 实例的安全组公网规则,具体操作详见 ECS实例安全组默认的公网规则被删除导致无法ping通。 5. 远程访问端口配置异常 [出现概率:10%] 故障现象:SSH 远程无法连接,远程访问端口非默认端口。 可能原因:更改了远程访问端口配置,有可能防火墙未对自定义端口放开。 解决方法:客户端无法正常登录时,建议先使用不同的 SSH 客户端基于相同账户信息进行登录测试。如能正常登录,则判断是客户端配置问题,需对客户端配置做排查分析。 使用 telnet 测试现有监听端口连通性。使用 Linux 自带的 telnet 工具测试现有端口的连通性。telnet <host> <port> # host 是目标服务器 IP,port是待测试端口号 修改或查看Linux远程端口: vi /etc/ssh/sshd_config 找到 #port 22 这一行,默认端口为 22,可以把前面的#删除,把 22 改为其它的端口。 重启SSH服务: /etc/init.d/sshd restart 或 service sshd restart 创建新的监听端口测试。 可以使用 python 自带的 Web 服务器用于临时创建新的监听端口进行测试。python -m SimpleHTTPServer <所需端口号> 说明: 您可以通过自动测试默认端口来检测远程访问端口的问题。 服务监听能使用的端口范围为 0~65535,错误配置监听端口会导致远程桌面服务监听失败。 6. CPU 负载过高 [出现概率:9%] 故障现象:CPU 负载过高导致系统无法进行远程连接。 解决方法:您无法主动监控系统内部的程序运行状态,可以借助   云监控  >   主机监控  >   进程监控  来实现。 查看应用运行情况,排除 CPU 负载过高的原因。查看 CPU 负载问题详见 云服务器 ECS Linux 系统 CPU 占用率较高问题排查思路。 注意:在某个时间段 CPU 负载过高可能导致远程连接失败,建议您查询是否程序或者实例资源不满足现有要求。 最后尝试重启实例 若用阿里云提供的远程连接功能仍无法成功连接实例,请尝试重启实例。重启操作会使实例停止工作,从而中断业务,请谨慎执行。 注意:重启实例前,需对实例创建快照,用于数据备份或者制作镜像。创建快照的方法详见:创建快照。 在控制台重启实例。重启实例后,请再次尝试实例连接。 通过上述排查后,若 ECS 实例仍不能连接,请您记录前述各步骤的排查结果、相关日志信息或截图,然后联系售后技术支持。 望采纳,谢谢🙏

元芳啊 2019-12-02 00:12:57 0 浏览量 回答数 0

试用中心

为您提供0门槛上云实践机会,企业用户最高免费12个月

问题

DRDS 错误代码如何解决?

猫饭先生 2019-12-01 21:21:21 7993 浏览量 回答数 0

问题

Azure 中的 Windows 虚拟机概述

cbits 2019-12-01 21:36:59 2114 浏览量 回答数 0

问题

最佳实践 -MySQL-为应用选择和创建最佳索引,加速数据读取

李沃晟 2019-12-01 21:40:05 575 浏览量 回答数 0

回答

概述 当网站访问很慢或无法访问时,若已经排除显著的问题,而使用ping命令检测到有明显丢包时,建议您做链路测试。在Windows环境中,推荐优先使用WinMTR工具,或者tracert命令行进行链路测试以判断问题来源。通常情况下,链路测试步骤如下。 利用链路测试工具探测网络状况和服务器状态。 根据链路测试结果分析处理。 详细信息 阿里云提醒您: 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 WinMTR工具 mtr(My traceroute)作为一款网络测试工具,集成了tracert与ping这两个命令的图形界面。ping与tracert通常被用于检测网络状况和服务器状态,具体说明如下。 命令名称 具体说明 ping 送出封包到指定的服务器。如果服务器有回应就会传送回封包,并附带返回封包来回的时间 tracert 返回从用户的电脑到指定的服务器中间经过的所有节点(路由)以及每个节点的回应速度。 WinMTR是mtr工具在Windows环境下的图形化实现,适合Windows下做路由追踪及ping测试。WinMTR默认发送ICMP数据包进行探测,无法切换。 相比tracert命令行工具,WinMTR能避免节点波动对测试结果的影响,测试结果更正确。Windows环境下,建议优先使用WinMTR进行链路测试。下载WinMTR工具。 下载WinMTR工具后,直接解压运行。运行程序后,在 Host 字段输入目标服务器域名或IP。 1 单击 Start 开始测试。开始测试后,相应按钮变成了 Stop。 运行一段时间后,单击 Stop 停止测试。 说明:您可以多测试几分钟,测试结束后,将结果导出。 常见可选参数说明 Copy Text to clipboard:将测试结果以文本格式复制到粘贴板。 Copy HTML to clipboard:将测试结果以HTML格式复制到粘贴板。 Export TEXT:将测试结果以文本格式导出到指定文件。 Export HTML:将测试结果以HTML格式导出到指定文件。 Options:为可选参数。具体包括以下参数。 Interval(sec):每次探测的间隔(过期)时间,默认为1秒。 Ping size(bytes):ping 探测所使用的数据包大小,默认为64字节。 Max hosts in LRU list:LRU列表支持的最大主机数,默认值为128。 Resolve names:通过反查IP以域名显示相关节点。 WinMTR运行后的返回结果说明 默认配置下,WinMTR测试结果说明如下。 第一列(Hostname):到目标服务器要经过的每个节点主机IP或域名。 第二列(Nr):节点编号。 第三列(Loss%):节点丢包率。ping数据包回复失败的百分比,由此可判断哪个节点(线路)出现故障,是服务器所在机房还是国际路由干路。 第四列(Sent):已发送的数据包数量。 第五列(Recv):已成功接收的数据包数量。 第六、七、八、九列(Best 、Avg、Worst、Last):分别是回应时间的最小值、平均值、最大值和最后一个数据包的回应时间。 tracert命令行工具 tracert (Trace Route) 是Windows自带的网络诊断命令行实用程序,用于跟踪Internet协议(IP)数据包传送到目标地址时经过的路径。 tracert通过向目标地址发送ICMP数据包来确定到目标地址的路由。在这些数据包中,tracert使用了不同的IP生存期 (TTL) 值。由于要求沿途的路由器在转发数据包前至少必须将TTL减少1,因此TTL实际上相当于一个跃点计数器 (hop counter)。当某个数据包的TTL达到零时,相应节点就会向源计算机发送一个ICMP超时的消息。tracert第一次发送TTL为1的数据包,并在每次后续传输时将TTL增加1,直到目标地址响应或达到TTL的最大值。中间路由器发送回来的ICMP超时消息中包含了相应节点的信息。 在桌面底部单击 开始 菜单,选择 运行。 打开运行框后,在框中输入 cmd,并单击 确定。 在命令运行界面中,输入 tracert ,按回车键后,界面将显示tracert的用法说明。 2 根据具体用法,输入待跟踪的目标地址,示例如下。 C:> tracert -d 223.5.5.5 通过最多 30 个跃点跟踪到 223.5.5.5 的路由 1 * * * 请求超时。 2 9 ms 3 ms 12 ms 192.X.X.20 3 4 ms 9 ms 2 ms 111.X.X.41 4 9 ms 2 ms 1 ms 111.X.X.197 5 11 ms * * 211.X.X.57 6 3 ms 2 ms 2 ms 211.X.X.62 7 2 ms 2 ms 1 ms 42.X.X.190 8 32 ms 4 ms 3 ms 42.X.X.238 9 * * * 请求超时。 10 3 ms 2 ms 2 ms 223.5.5.5 分析链路测试结果 以如下链路测试结果示例图为基础进行阐述。 判断各区域是否存在异常,并根据各区域的情况分别处理。 区域A:客户端本地网络,即本地局域网和本地网络提供商网络。针对该区域异常,客户端本地网络相关节点问题,请对本地网络进行排查分析;本地网络提供商网络相关节点问题,请向当地运营商反馈。 区域B:运营商骨干网络。针对该区域异常,可根据异常节点IP查询归属运营商,然后直接或通过阿里云售后技术支持,向相应运营商反馈问题。 区域C:目标服务器本地网络,即目标主机归属网络提供商网络。针对该区域异常,需要向目标主机归属网络提供商反馈问题。 结合Avg(平均值)和StDev(标准偏差),判断各节点是否存在异常。 若StDev很高,则同步观察相应节点的Best和Worst,来判断相应节点是否存在异常。 若StDev不高,则通过Avg来判断相应节点是否存在异常。 注意:上述StDev高或者不高,并没有具体的时间范围标准。而需要根据同一节点其它列的延迟值大小来进行相对评估。比如,如果Avg为30ms,那么,当StDev为25ms,则认为是很高的偏差。而如果Avg为325ms,则同样的StDev为25ms,反而认为是不高的偏差。 查看节点丢包率,若“Loss%”不为零,则说明这一跳路由的网络可能存在问题。导致节点丢包的原因通常有两种。 人为限制了节点的ICMP发送速率,导致丢包。 节点确实存在异常,导致丢包。 确定当前异常节点的丢包原因。 若随后节点均没有丢包,说明当前节点丢包是由于运营商策略限制所致,可以忽略。如前文链路测试结果示例图中的第2跳路由的网络所示。 若随后节点也出现丢包,说明当前节点存在网络异常,导致丢包。如前文链路测试结果示例图中的第5跳路由的网络所示。 说明:前述两种情况可能同时发生,即相应节点既存在策略限速,又存在网络异常。对于这种情况,若当前节点及其后续节点连续出现丢包,而且各节点的丢包率不同,则通常以最后几跳路由的网络的丢包率为准。如前文链路测试结果示例图所示,在第5、6、7跳路由的网络均出现了丢包。所以,最终丢包情况,以第7跳的40%作为参考。 通过查看是否有明显的延迟,来确认节点是否存在异常。通过如下两个方面进行分析。 若某一跳路由的网络之后延迟明显陡增,则通常判断该节点存在网络异常。如前文链路测试结果示例图所示,从第5跳路由的网络之后的后续节点延迟明显陡增,则推断是第5跳路由的网络节点出现了网络异常。 注:高延迟并不一定完全意味着相应节点存在异常,延迟大也有可能是在数据回包链路中引发的,建议结合反向链路测试一并分析。 ICMP策略限速也可能会导致相应节点的延迟陡增,但后续节点通常会恢复正常。如前文链路测试结果示例图所示,第3跳路由的网络有100%的丢包率,同时延迟也明显陡增。但随后节点的延迟马上恢复了正常。所以判断该节点的延迟陡增及丢包是由于策略限速所致。 操作建议 若数据包在目标地址出现了100%的丢包,建议对目标服务器的安全策略配置进行排查。 若数据包出现循环跳转,导致无法到达目标服务器,建议联系相应节点归属运营商处理。 若数据包在跳转后无法收到任何反馈,建议结合反向链路测试作进一步确认,并联系相应节点归属运营商进行处理。 阿里云中国内地机房和其他国家或地区有网络通信的专线,为降低通信时候的丢包率,推荐使用高速通道。 若主机掉包和延迟非常高,建议做WinMTR双向测试,即本地到服务器的和服务器到本地的测试。无法远程登录时,请通过管理终端进行登录。

1934890530796658 2020-03-25 23:51:46 0 浏览量 回答数 0

回答

有多种方法可以从数据库的多个表中检索数据。在此答案中,我将使用ANSI-92连接语法。这可能与其他使用较旧的ANSI-89语法的其他教程有所不同(如果您习惯使用89,可能看起来不那么直观-但我只能说尝试一下),因为它更容易了解查询何时开始变得更复杂。为什么要使用它?有性能提升吗?在简短的回答是否定的,但它是更易于阅读,一旦你习惯了它。使用此语法更容易读取其他人编写的查询。 我还将使用小型堆场的概念,该堆场具有一个数据库来跟踪其可用的汽车。所有者已将您雇用为他的IT计算机人员,并希望您能够一口气就把他要求的数据丢给他。 我制作了许多最终表将使用的查找表。这将为我们提供一个合理的工作模型。首先,我将对具有以下结构的示例数据库运行查询。我将尝试思考刚开始时所犯的常见错误,并解释错误的根源-以及当然会显示如何纠正错误。 第一张桌子只是一个颜色列表,以便我们知道车场中的颜色。 mysql> create table colors(id int(3) not null auto_increment primary key, -> color varchar(15), paint varchar(10)); Query OK, 0 rows affected (0.01 sec) mysql> show columns from colors; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(3) | NO | PRI | NULL | auto_increment | | color | varchar(15) | YES | | NULL | | | paint | varchar(10) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 3 rows in set (0.01 sec) mysql> insert into colors (color, paint) values ('Red', 'Metallic'), -> ('Green', 'Gloss'), ('Blue', 'Metallic'), -> ('White' 'Gloss'), ('Black' 'Gloss'); Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> select * from colors; +----+-------+----------+ | id | color | paint | +----+-------+----------+ | 1 | Red | Metallic | | 2 | Green | Gloss | | 3 | Blue | Metallic | | 4 | White | Gloss | | 5 | Black | Gloss | +----+-------+----------+ 5 rows in set (0.00 sec) 品牌表标识了车库外可能出售的汽车的不同品牌。 mysql> create table brands (id int(3) not null auto_increment primary key, -> brand varchar(15)); Query OK, 0 rows affected (0.01 sec) mysql> show columns from brands; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(3) | NO | PRI | NULL | auto_increment | | brand | varchar(15) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set (0.01 sec) mysql> insert into brands (brand) values ('Ford'), ('Toyota'), -> ('Nissan'), ('Smart'), ('BMW'); Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> select * from brands; +----+--------+ | id | brand | +----+--------+ | 1 | Ford | | 2 | Toyota | | 3 | Nissan | | 4 | Smart | | 5 | BMW | +----+--------+ 5 rows in set (0.00 sec) 模型表将涵盖不同类型的汽车,使用不同类型的汽车而不是实际的汽车模型会更简单。 mysql> create table models (id int(3) not null auto_increment primary key, -> model varchar(15)); Query OK, 0 rows affected (0.01 sec) mysql> show columns from models; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(3) | NO | PRI | NULL | auto_increment | | model | varchar(15) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec) mysql> insert into models (model) values ('Sports'), ('Sedan'), ('4WD'), ('Luxury'); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> select * from models; +----+--------+ | id | model | +----+--------+ | 1 | Sports | | 2 | Sedan | | 3 | 4WD | | 4 | Luxury | +----+--------+ 4 rows in set (0.00 sec) 最后,要捆绑所有其他表,该表将所有内容捆绑在一起。ID字段实际上是用于识别汽车的唯一批号。 mysql> create table cars (id int(3) not null auto_increment primary key, -> color int(3), brand int(3), model int(3)); Query OK, 0 rows affected (0.01 sec) mysql> show columns from cars; +-------+--------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------+------+-----+---------+----------------+ | id | int(3) | NO | PRI | NULL | auto_increment | | color | int(3) | YES | | NULL | | | brand | int(3) | YES | | NULL | | | model | int(3) | YES | | NULL | | +-------+--------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) mysql> insert into cars (color, brand, model) values (1,2,1), (3,1,2), (5,3,1), -> (4,4,2), (2,2,3), (3,5,4), (4,1,3), (2,2,1), (5,2,3), (4,5,1); Query OK, 10 rows affected (0.00 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> select * from cars; +----+-------+-------+-------+ | id | color | brand | model | +----+-------+-------+-------+ | 1 | 1 | 2 | 1 | | 2 | 3 | 1 | 2 | | 3 | 5 | 3 | 1 | | 4 | 4 | 4 | 2 | | 5 | 2 | 2 | 3 | | 6 | 3 | 5 | 4 | | 7 | 4 | 1 | 3 | | 8 | 2 | 2 | 1 | | 9 | 5 | 2 | 3 | | 10 | 4 | 5 | 1 | +----+-------+-------+-------+ 10 rows in set (0.00 sec) 这将为我们提供足够的数据(我希望),以掩盖下面不同类型的联接的示例,并提供足够的数据以使它们值得。 因此,老板想了解这个问题,老板想知道他拥有的所有跑车的ID。 这是一个简单的两张表联接。我们有一个表,用于标识模型以及具有可用库存的表。正如你所看到的,在数据model的列cars表涉及models的列cars,我们有表。现在,我们知道models表的ID为1for,Sports因此让我们编写联接。 select ID, model from cars join models on model=ID 所以这个查询看起来不错吧?我们已经识别了两个表并包含我们需要的信息,并使用一个联接来正确识别要联接的列。 ERROR 1052 (23000): Column 'ID' in field list is ambiguous 哦,不!我们的第一个查询有错误!是的,它是一个李子。您会看到,查询确实有正确的列,但是两个表中都存在一些列,因此数据库对于实际的含义和位置感到困惑。有两种解决方案可以解决此问题。第一个很简单,我们可以用来tableName.columnName准确地告诉数据库我们的意思,就像这样: select cars.ID, models.model from cars join models on cars.model=models.ID +----+--------+ | ID | model | +----+--------+ | 1 | Sports | | 3 | Sports | | 8 | Sports | | 10 | Sports | | 2 | Sedan | | 4 | Sedan | | 5 | 4WD | | 7 | 4WD | | 9 | 4WD | | 6 | Luxury | +----+--------+ 10 rows in set (0.00 sec) 另一个可能更常用,称为表别名。该示例中的表具有简单易用的简单名称,但是键入类似的名称KPI_DAILY_SALES_BY_DEPARTMENT可能很快就会变老,因此一种简单的方法是对表进行昵称,如下所示: select a.ID, b.model from cars a join models b on a.model=b.ID 现在,返回到请求。如您所见,我们拥有所需的信息,但我们也有未要求提供的信息,因此我们需要在语句中包含where子句,以便仅按要求获取跑车。由于我更喜欢​​表别名方法,而不是一遍又一遍地使用表名,因此从现在开始,我将坚持使用它。 显然,我们需要在查询中添加where子句。我们可以通过ID=1或识别跑车model='Sports'。由于ID已被索引并且主键(而且恰好键入的次数较少),因此请在查询中使用它。 select a.ID, b.model from cars a join models b on a.model=b.ID where b.ID=1 +----+--------+ | ID | model | +----+--------+ | 1 | Sports | | 3 | Sports | | 8 | Sports | | 10 | Sports | +----+--------+ 4 rows in set (0.00 sec) 答对了!老板很高兴。当然,作为老板,对自己的要求从不满意,他会查看信息,然后说我也要颜色。 好的,因此我们已经编写了很大一部分查询,但是我们需要使用第三个表颜色。现在,我们的主要信息表cars存储了汽车颜色ID,该链接返回到颜色ID列。因此,以与原始表类似的方式,我们可以连接第三个表: select a.ID, b.model from cars a join models b on a.model=b.ID join colors c on a.color=c.ID where b.ID=1 +----+--------+ | ID | model | +----+--------+ | 1 | Sports | | 3 | Sports | | 8 | Sports | | 10 | Sports | +----+--------+ 4 rows in set (0.00 sec) 该死,尽管表已正确连接并且相关列已链接,但我们忘记从刚链接的新表中提取实际信息。 select a.ID, b.model, c.color from cars a join models b on a.model=b.ID join colors c on a.color=c.ID where b.ID=1 +----+--------+-------+ | ID | model | color | +----+--------+-------+ | 1 | Sports | Red | | 8 | Sports | Green | | 10 | Sports | White | | 3 | Sports | Black | +----+--------+-------+ 4 rows in set (0.00 sec) 是的,那是我们的老板暂时离开了。现在,更详细地解释其中的一些。如您所见,from语句中的子句链接了我们的主表(我经常使用一个包含信息的表,而不是查找表或维度表。该查询在所有被切换的表中也能正常工作,但是当我们会在几个月后回到此查询中进行阅读,因此通常最好尝试编写一个简单易懂的查询-直观地进行排列,使用漂亮的缩进以使所有内容都清晰易懂如果您继续教别人,请尝试在他们的查询中灌输这些特征-尤其是要对它们进行故障排除时。 完全有可能以此方式链接越来越多的表。 select a.ID, b.model, c.color from cars a join models b on a.model=b.ID join colors c on a.color=c.ID join brands d on a.brand=d.ID where b.ID=1 虽然我忘记在表中包含一个我们可能希望在其中联接多个列的join表,但这里有一个示例。如果该models表具有特定于品牌的模型,因此也有一个称为的列brand,该列链接回brands该ID字段中的表,则可以这样进行: select a.ID, b.model, c.color from cars a join models b on a.model=b.ID join colors c on a.color=c.ID join brands d on a.brand=d.ID and b.brand=d.ID where b.ID=1 您可以看到,上面的查询不仅将联接表链接到主cars表,而且还指定了已联接表之间的联接。如果不这样做,结果称为笛卡尔联接-dba不好。笛卡尔联接是返回行的联接,因为该信息不会告诉数据库如何限制结果,因此查询将返回所有符合条件的行。 因此,举一个笛卡尔联接的例子,让我们运行以下查询: select a.ID, b.model from cars a join models b +----+--------+ | ID | model | +----+--------+ | 1 | Sports | | 1 | Sedan | | 1 | 4WD | | 1 | Luxury | | 2 | Sports | | 2 | Sedan | | 2 | 4WD | | 2 | Luxury | | 3 | Sports | | 3 | Sedan | | 3 | 4WD | | 3 | Luxury | | 4 | Sports | | 4 | Sedan | | 4 | 4WD | | 4 | Luxury | | 5 | Sports | | 5 | Sedan | | 5 | 4WD | | 5 | Luxury | | 6 | Sports | | 6 | Sedan | | 6 | 4WD | | 6 | Luxury | | 7 | Sports | | 7 | Sedan | | 7 | 4WD | | 7 | Luxury | | 8 | Sports | | 8 | Sedan | | 8 | 4WD | | 8 | Luxury | | 9 | Sports | | 9 | Sedan | | 9 | 4WD | | 9 | Luxury | | 10 | Sports | | 10 | Sedan | | 10 | 4WD | | 10 | Luxury | +----+--------+ 40 rows in set (0.00 sec) 天哪,这很丑。但是,就数据库而言,正是所要求的。在查询中,我们要求IDfrom cars和modelfrom models。但是,因为我们没有指定如何联接表,数据库匹配了每一个从第一表行与每一从第二表行。 好的,老板回来了,他希望再次提供更多信息。我想要相同的列表,但还要包含4WD。 但是,这为我们提供了一个很好的借口来研究实现此目的的两种不同方法。我们可以向where子句添加另一个条件,如下所示: select a.ID, b.model, c.color from cars a join models b on a.model=b.ID join colors c on a.color=c.ID join brands d on a.brand=d.ID where b.ID=1 or b.ID=3 尽管上面的方法可以很好地工作,但是让我们以不同的方式来看待它,这是一个很好的借口来说明union查询将如何工作。 我们知道以下将返回所有跑车: select a.ID, b.model, c.color from cars a join models b on a.model=b.ID join colors c on a.color=c.ID join brands d on a.brand=d.ID where b.ID=1 以下将返回所有的四轮驱动车: select a.ID, b.model, c.color from cars a join models b on a.model=b.ID join colors c on a.color=c.ID join brands d on a.brand=d.ID where b.ID=3 因此,通过union all在它们之间添加子句,第二个查询的结果将附加到第一个查询的结果。 select a.ID, b.model, c.color from cars a join models b on a.model=b.ID join colors c on a.color=c.ID join brands d on a.brand=d.ID where b.ID=1 union all select a.ID, b.model, c.color from cars a join models b on a.model=b.ID join colors c on a.color=c.ID join brands d on a.brand=d.ID where b.ID=3 +----+--------+-------+ | ID | model | color | +----+--------+-------+ | 1 | Sports | Red | | 8 | Sports | Green | | 10 | Sports | White | | 3 | Sports | Black | | 5 | 4WD | Green | | 7 | 4WD | White | | 9 | 4WD | Black | +----+--------+-------+ 7 rows in set (0.00 sec) 如您所见,首先返回第一个查询的结果,然后返回第二个查询的结果。 在此示例中,简单地使用第一个查询当然会容易得多,但是union查询在特定情况下可能会很好。它们是从不容易连接在一起的表中返回表中特定结果的好方法-或完全无关的表。但是,有一些规则要遵循。 来自第一个查询的列类型必须与下面的每个其他查询的列类型匹配。 第一个查询中的列名称将用于标识整个结果集。 每个查询中的列数必须相同。 现在,您可能想知道使用union和之间有什么区别union all。一个union查询将删除重复,而union all不会。这确实意味着使用union过度时性能会受到较小的影响,union all但结果可能是值得的-尽管我不会在这种情况下进行推测。 关于此注释,在这里可能需要注意一些其他注释。 如果要订购结果,可以使用an,order by但不能再使用别名。在上面的查询中,附加an order by a.ID将导致错误-就结果而言,该列将被调用,ID而不是a.ID-即使两个查询都使用了相同的别名。 我们只能有一个order by声明,并且必须作为最后一个声明。 对于下一个示例,我将向表中添加一些额外的行。 我已添加Holden到品牌表。我还添加了一行,到cars具有color的价值12-它在颜色表中没有提及。 好的,老板又回来了,咆哮着请求-*我想统计一下我们经营的每个品牌以及其中的汽车数量!`-典型的,我们只是进入了一个有趣的讨论部分,老板希望做更多的工作。 Rightyo,所以我们要做的第一件事就是完整列出所有可能的品牌。 select a.brand from brands a +--------+ | brand | +--------+ | Ford | | Toyota | | Nissan | | Smart | | BMW | | Holden | +--------+ 6 rows in set (0.00 sec) 现在,当我们将其连接到汽车表时,将得到以下结果: select a.brand from brands a join cars b on a.ID=b.brand group by a.brand +--------+ | brand | +--------+ | BMW | | Ford | | Nissan | | Smart | | Toyota | +--------+ 5 rows in set (0.00 sec) 这当然是个问题-我们没有提到Holden我添加的可爱品牌。 这是因为联接在两个表中都查找匹配的行。由于汽车中没有任何类型的数据,Holden因此不会返回。这是我们可以使用outer联接的地方。这将返回一个表中的所有结果,无论它们是否与另一表中的结果匹配: select a.brand from brands a left outer join cars b on a.ID=b.brand group by a.brand +--------+ | brand | +--------+ | BMW | | Ford | | Holden | | Nissan | | Smart | | Toyota | +--------+ 6 rows in set (0.00 sec) 现在,有了这个功能,我们可以添加一个可爱的聚合函数来获得计数,并让老板暂时离开。 select a.brand, count(b.id) as countOfBrand from brands a left outer join cars b on a.ID=b.brand group by a.brand +--------+--------------+ | brand | countOfBrand | +--------+--------------+ | BMW | 2 | | Ford | 2 | | Holden | 0 | | Nissan | 1 | | Smart | 1 | | Toyota | 5 | +--------+--------------+ 6 rows in set (0.00 sec) 这样一来,老板就走了。 现在,为了更详细地说明这一点,外部联接可以是left或right类型。左或右定义完全包含哪个表。A left outer join将包括左侧表中的所有行,而(您猜对了)a right outer join将右侧表中的所有结果带入结果中。 某些数据库允许使用a full outer join,这将从两个表中带回结果(无论是否匹配),但是并非所有数据库都支持。 现在,我可能想知道此时,您想知道是否可以在查询中合并联接类型-答案是肯定的,您绝对可以。 select b.brand, c.color, count(a.id) as countOfBrand from cars a right outer join brands b on b.ID=a.brand join colors c on a.color=c.ID group by a.brand, c.color +--------+-------+--------------+ | brand | color | countOfBrand | +--------+-------+--------------+ | Ford | Blue | 1 | | Ford | White | 1 | | Toyota | Black | 1 | | Toyota | Green | 2 | | Toyota | Red | 1 | | Nissan | Black | 1 | | Smart | White | 1 | | BMW | Blue | 1 | | BMW | White | 1 | +--------+-------+--------------+ 9 rows in set (0.00 sec) 那么,为什么不是预期的结果呢?这是因为尽管我们选择了从汽车到品牌的外部联接,但未在颜色联接中指定-因此特定联接只会带回在两个表中都匹配的结果。 这是可以获取我们期望的结果的查询: select a.brand, c.color, count(b.id) as countOfBrand from brands a left outer join cars b on a.ID=b.brand left outer join colors c on b.color=c.ID group by a.brand, c.color +--------+-------+--------------+ | brand | color | countOfBrand | +--------+-------+--------------+ | BMW | Blue | 1 | | BMW | White | 1 | | Ford | Blue | 1 | | Ford | White | 1 | | Holden | NULL | 0 | | Nissan | Black | 1 | | Smart | White | 1 | | Toyota | NULL | 1 | | Toyota | Black | 1 | | Toyota | Green | 2 | | Toyota | Red | 1 | +--------+-------+--------------+ 11 rows in set (0.00 sec) 如我们所见,查询中有两个外部联接,结果按预期进行。 现在,您问这些其他类型的联接如何?那路口呢? 好吧,并非所有数据库都支持,intersection但是几乎所有数据库都将允许您通过联接(或至少结构良好的where语句)创建交集。 Intersection是一种连接类型,与union上述的连接有点类似-但区别在于,它仅返回由联合连接的各个单个查询之间相同(并且我的意思是相同)的数据行。仅返回在各方面相同的行。 一个简单的例子是这样的: select * from colors where ID>2 intersect select * from colors where id<4 虽然普通union查询将返回表的所有行(第一个查询返回,ID>2而第二个返回具有ID<4)将形成一个完整的集合,但相交查询将仅返回id=3符合两个条件的行。 现在,如果您的数据库不支持intersect查询,则可以通过以下查询轻松完成以上操作: select a.ID, a.color, a.paint from colors a join colors b on a.ID=b.ID where a.ID>2 and b.ID<4 +----+-------+----------+ | ID | color | paint | +----+-------+----------+ | 3 | Blue | Metallic | +----+-------+----------+ 1 row in set (0.00 sec) 如果希望使用本身不支持交集查询的数据库在两个不同的表之间执行交集,则需要在表的每一列上创建一个联接。

保持可爱mmm 2020-05-08 11:31:28 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播