关注飞总聊IT,了解IT行业的方方面面。
这事情,发生的时候挺早的,但是我最近才听说。
具体来说,可以看一下这篇文章:
https://blog.x.com/engineering/en_us/topics/insights/2021/forecasting-sql-query-resource-usage-with-machine-learning
文章讲的是Twitter的中国人搞的一个功能,通过对SQL语句进行机器学习,可以学习出来,哪些SQL语句需要多少CPU的时间,会消耗多少memory。
简单来说,这里用了机器学习的方法,把SQL语句变成数字串,然后,把使用多少CPU进行分类,分成短中长三类,内存也是。这样的数据集通过机器学习一下以后,就可以得到一个模型。
后面就可以用这个模型,来对新进来的SQL文本进行预测,看看新的SQL Query需要多少CPU,用多少memory。
数据层面,训练数据只需要SQL语句,然后用了多少CPU和多少内存就行了,因为是训练两个模型,所以我估计预测CPU的模型不需要内存信息,反之亦然。
根据作者的说法,precision和recall都相当的不错。

有了这个预测以后,就可以在SQL查询进来的时候,根据SQL语句决定到底应该去什么cluster跑了,查询快的给专属快查询的cluster,慢的就去慢的。
我当然不是什么机器学习的专家。我对机器学习懂的程度,大概也仅仅限于我上课学的那么一点。
但是关于能不能够只用SQL语句的文本,就可以预测出这个SQL大概需要多少的CPU time,要用掉多少memory这件事情,大概率来说,应该成功率比较低才对。

可能作者做的是分类,分类的话给与的模糊空间比较大,所以会准确一点。

但是我们知道现实世界里面,往往会有很多ETL的sql是重复跑的,所以一模一样的SQL出现很多次也很正常。
那么这些SQL就会同时出现在training set, validation set和test set里面,除非系统进行了dedup。但是我想从我对文章的理解,显然是没dedup的。
所以信息明显是已经在数据中给互相泄露出去了,最后到底学出了什么东西,我是真的看不懂了。
我感觉自己有点孤陋寡闻了。原来机器学习还可以这样用,最后还能达到这么好的效果。
就我简单朴素的理解来说,这个项目要想成功,真的需要有很多很多的假设条件,而我的确不知道,这些假设条件们分别都是什么。

但是,它貌似就真的很成功,作者也对这项目很骄傲。所以,真的是我孤陋寡闻了,我实在是没想到,这么用机器学习的。
作者们开源出来了这个项目,我很好奇的事,不知道到底有多少人在生产系统里真的用了这个开源项目。要是有人知道的话,欢迎给我留言。

不过我看了一下LinkedIn,作者似乎已经在Twitter被马斯克的大裁员中被裁了,然后迅速的去了Alluxio。也不知道这个开源项目还有没有人在维护
我最近写的专栏,讲职场的故事,有兴趣的可以订阅,有很多人说学到了经验,不喜欢的一天内可以退款
继续阅读
阅读原文