Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >传感器时间戳数据表中的MySQL查询时间太长

传感器时间戳数据表中的MySQL查询时间太长
EN

Stack Overflow用户
提问于 2018-04-24 20:22:05
回答 1查看 77关注 0票数 0

我有一个非常简单的表来记录来自传感器的读数。有一列表示传感器id号,一列表示传感器读数,另一列表示时间戳。此列的SQL类型为Timestamp。表中有大量数据,有几百万行。

当我使用某个传感器id号查询某个时间戳之前的所有行时,有时会花费很长时间。如果时间戳是很久以前的时间戳,则查询速度相当快,但如果是最近的时间戳,则可能需要2到3秒。

看起来好像SQL引擎正在对表进行迭代,直到它找到第一个大于查询时间戳的时间戳。或者可能更多的查询数据减慢了它的速度,我不知道。

无论如何,我在这里寻找设计建议,特别是针对以下几点:为什么它这么慢?我怎么才能让它更快呢?

有没有什么设计技巧可以应用在这里?我对SQL了解不多,也许有一种方法可以让SQL引擎知道数据是有序的(目前还没有,但我想我可以在插入时对其进行排序),并加快查询速度。也许我应该改变查询的方式,或者改变时间戳列的数据类型。

EN

回答 1

Stack Overflow用户

发布于 2018-04-24 20:32:37

使用EXPLAIN查看执行计划,并验证查询是否使用了合适的索引。如果没有,请验证是否有适当的索引可用。

INDEX是“按顺序”存储的,MySQL可以有效地使用某些查询模式。( InnoDB表也按集群键顺序存储,这是表的主键(如果存在)或非空列上的第一个唯一键。)

对于某些查询模式,通过使用索引,MySQL可以消除对大量行的检查。当MySQL不能使用索引时(因为合适的索引不存在,或者因为查询具有阻止它的构造),执行计划将执行完全扫描,即检查表中的每一行。当这种情况发生在非常大的表上时,有一种变慢的趋势。

编辑

问:为什么它这么慢?

答:影响运行时间的因素有几个。它可能是争用,例如,由另一个会话占用的排他表锁,或者可能是I/O (磁盘读取)的时间,或者是一个大型的“使用文件排序”操作。通过慢速网络连接返回结果集的时间。

由于所提供的信息有限,无法诊断问题。我们只能就一些常见的问题提供一些建议。

问:我如何才能让它更快?

答:不可能提出具体的建议。我们需要找出瓶颈在哪里,瓶颈是什么,以及瓶颈所在的地址。

查看EXPLAIN的输出以检查执行计划。是否使用了适当的索引,或者是否正在执行完全扫描?检查了多少行?是否有“使用文件排序”操作?等人提出的。

问:有没有可以在这里应用的设计技术?

答:通常情况下,拥有适当的索引,并仔细设计SQL语句,以便启用最有效的访问计划。

问:也许我应该改变查询的方式

答:更改SQL语句可能会提高性能,在查看了执行计划之后,这是一个很好的起点……是否可以修改查询以获得更有效的计划?

问:或者更改时间戳列的数据类型。

答:我认为更改TIMESTAMP列的数据类型不太可能提高性能。这只有4个字节。您会将其更改为什么?使用DATETIME将占用7个字节。

通常,我们希望行尽可能短,并将尽可能多的行打包到一个块中。它还希望以一种物理方式组织表,以便可以从较少的块满足查询……查询所需的行是在较少的页面中找到的,而不是分散在大量页面上的行。

对于InnoDB,增加缓冲池的大小可能会减少I/O。

来自固态硬盘(SSD)的I/O将比来自旋转硬盘( HDD )的I/O更快,如果HDD上存在来自其他进程的I/O争用,这一点尤其正确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50010194

复制
相关文章
Fortran知识 | 输出结果出现NaN
一旦输出结果出现NaN,编译器不会给出任何错误提示,这个时候该如何调试程序呢? 点击菜单栏的调试,最后一个为XXXX属性,打开对话框,左侧展开 Fortran分类,找到Floating Point选项
fem178
2018/04/08
4.4K0
Fortran知识 | 输出结果出现NaN
xgboost输出特征重要性排名和权重值
根据结构分数的增益情况计算出来选择哪个特征的哪个分割点,某个特征的重要性,就是它在所有树中出现的次数之和。
机器学习AI算法工程
2019/10/28
4.8K0
xgboost输出特征重要性排名和权重值
TensorFlow2.0(7):4种常用的激活函数
激活函数是深度学习,亦或者说人工神经网络中一个十分重要的组成部分,它可以对神经元的接收信息进行非线性变换,将变换后的信息输出到下一层神经元。激活函数作用方式如下公式所示:
统计学家
2019/12/23
1.4K0
TensorFlow2.0(7):4种常用的激活函数
NaN和Infinity,null和undefined
看到这个标题,大家对这4个变量应该都不陌生,但若说起他们的差别或者是举个小栗子判断结果,估计就有点晕乎乎的了。
jojo
2022/04/01
1.2K0
模型评估1(误差、偏差、方差)
1、方差:是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。描述数据离散程度,数据波动性,会影响模型的预测结果。
用户5745385
2019/07/04
1.9K0
模型评估1(误差、偏差、方差)
c/c++ -nan(ind) NAN
nan -- 表示 出错,“不是一个数” not a number 的缩写。 按 IEEE 754 国际标准,当运算中出现无效数据时,给出 NaN. 许多情况会出现,例如 0 除 0,负数开平方,...
acoolgiser
2019/01/17
3.5K0
【tensorflow2.0】使用TPU训练模型
如果想尝试使用Google Colab上的TPU来训练模型,也是非常方便,仅需添加6行代码。
西西嘛呦
2020/08/26
1.2K0
【干货】深度学习最佳实践之权重初始化
【导读】深度学习中有很多简单的技巧能够使我们在训练模型的时候获得最佳实践,比如权重初始化、正则化、学习率等。对于深度学习初学者来说,这些技巧往往是非常有用的。本文主要介绍深度学习中权重和偏差初始化以及
WZEARW
2018/04/13
1.1K0
【干货】深度学习最佳实践之权重初始化
原 NaN和Infinity,null和u
作者:汪娇娇 日期:2016.10.10 看到这个标题,大家对这4个变量应该都不陌生,但若说起他们的差别或者是举个小栗子判断结果,估计就有点晕乎乎的了。 1、NaN和Infinity 那先来说说JavaScript的数据类型,有Number、字符串、布尔值、对象等等,而NaN和Infinity就属于Number类型。先说说它俩的差别: NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示 Infinity; // Infinity表示无限大,当数值超过了JavaScript的Nu
jojo
2018/05/03
1.1K0
模型训练时损失出现Nan,解决方案
解决方法:报错的原因是函数返回值得数量不一致,查看函数返回值数量和调用函数时接收返回值的数量是不是一致,修改一致即可
狼啸风云
2020/10/19
2.6K0
模型训练时损失出现Nan,解决方案
lodash源码分析之NaN不是NaN
本文为读 lodash 源码的第五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
对角另一面
2018/01/17
1.8K0
lodash源码分析之NaN不是NaN
暗恋之纯粹,在于不求结果,完全把自己锁闭在一个单向的关系里面。 ——梁文道《暗恋到偷窥》 本文为读 lodash 源码的第五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash gitbook也会同步仓库的更新,gitbook地址:pocket-lodash 本篇分析的是 eq 函数。 作用与用法 eq 函数用来比较两个值是否相等。遵循的是 SameValueZero 规范。 var obj1 = {test: 1} var obj2 = {test: 1} var obj3 =
对角另一面
2018/03/30
1.9K0
20. 偏差和方差
假设你的训练集,开发集和测试集都来自同一分布。那么你会觉得获取更多的训练数据就可以提高性能,对吗? 尽管更多的数据是无害的,但它并不是总会像我们所期望的那样有用。获取更多的数据需要耗费很多时间。所以,你需要什么什么时候该增加数据量,什么时候不该增加。 机器学习中有两个主要的错误来源:偏差和方差。理解它们有助于你觉得是否添加数据,以及其它提高性能的策略,这将会很好的利用你的时间。 假设你正在构建一个错误率为5%的猫咪识别器。目前,你的训练集错误率为15%,并且你的开发集错误率为16%,在这种情况下,添加
YingJoy_
2018/05/30
3780
20. 偏差和方差
假设你的训练集,开发集和测试集都来自同一分布。那么你会觉得获取更多的训练数据就可以提高性能,对吗? 尽管更多的数据是无害的,但它并不是总会像我们所期望的那样有用。获取更多的数据需要耗费很多时间。所以,你需要什么什么时候该增加数据量,什么时候不该增加。 机器学习中有两个主要的错误来源:偏差和方差。理解它们有助于你觉得是否添加数据,以及其它提高性能的策略,这将会很好的利用你的时间。 假设你正在构建一个错误率为5%的猫咪识别器。目前,你的训练集错误率为15%,并且你的开发集错误率为16%,在这种情况下,添加数据可能不会有太大的帮助。你应该关注其它的办法。实际上,在你的训练集上添加更多的样本只会让你的算法难以在训练集上做的更好。(后面的章节我会解释原因) 如果你在训练集上的错误率为15%(85%的准确率),但是你的目标是5%的错误率(95%的准确率),那么第一个要解决的问题是提高算法在训练集上的性能。你的开发/测试集上的性能通常比训练集差。所以,如果算法在见过的样本上得到了85%的准确率,那么是不可能在没见过的样本上得到95%的准确率的。 假设如上述你的算法在开发集上有16%的错误率(84%的准确率)。我们将这16%的错误分为两部分: • 首先,算法在训练集上的错误率。在本例中,它是15%。我们非正式的认为这是算法的偏差(bias)。 • 其次,算法在开发(或测试)集上比训练集差多少。在本例中,开发集比训练集差1%。我们非正式的认为这是算法的方差(Variance)[1]。 学习算法的一些改变能解决错误的第一个组成部分——偏差,并且提高算法在训练集上的性能;一些改变能解决第二个组成部分——方差,并帮助算法从训练集到开发/测试集上得到更好的泛化[2] 。 为了选择最有希望的改变,了解这两组错误中哪个更值得去解决是非常有用的。 培养你对于偏差和方差的感觉可以帮你在优化算法上有非常大的帮助。
YingJoy_
2018/05/09
6911
TensorFlow和深度学习入门教程
前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络,并把其PPT的参考学习资料给了我们, 这是codelabs上的教程:《TensorFlow and deep learning,without a PhD》 https://codelabs.developers.google.com/codelabs/cloud-tensorflow-mnist/#0 当然需要安装python,教程推荐使用python3。 好多专业词太难译了,查了下,大家有些都是不译的。 比如:dropou
机器学习AI算法工程
2018/03/09
1.4K0
TensorFlow和深度学习入门教程
【TensorFlow2.0】如何搭建网络模型?
我们知道在不考虑输入层的情况下,一个典型的卷积神经网络通常由若干个卷积层、激活层、池化层及全连接层组成,无论是最经典的LeNet5,还是前两天刚出现的MobileNet V3,无一不都包含这些层。今天就带大家学习下如何使用TensorFlow2.0搭建卷积神经网络模型。
用户1508658
2019/07/23
1.2K0
TensorFlow和深度学习入门教程
关键词:Python,tensorflow,深度学习,卷积神经网络 正文如下: 前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络,并把其PPT的参考学习资料给了我们, 这是codelabs上的教程:《TensorFlow and deep learning,without a PhD》 https://codelabs.developers.google.com/codelabs/cloud-tensorflow-mnist/#0 当然需要安装python,教程推荐使用pytho
小莹莹
2018/04/18
1.6K0
TensorFlow和深度学习入门教程
【colab pytorch】模型权重初始化
注意 model.modules() 和 model.children() 的区别:model.modules() 会迭代地遍历模型的所有子层,而 model.children() 只会遍历模型下的一层。
西西嘛呦
2020/08/26
6750
点击加载更多

相似问题

如何绘制简单单层模型的输出(偏差和权重)?

12

TensorFlow线性回归-返回权重、偏差和信息损失的NaN

118

如何更新权重和偏差

10

如何从我的模型中获得权重和偏差?

478

如何从权重/偏差中重现Keras模型?

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档