自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

翻译 How Good Are Query Optimizers, Really?【论文内容翻译】

寻找良好的连接顺序问题是数据库领域研究最多的问题之一。图1展示了经典的、基于成本的方法,它可以追溯到System R[36]。为了获得有效的查询计划,查询优化器枚举有效连接顺序的某些子集,例如使用动态规划。使用基数估计作为其主要输入,成本模型然后从语义等效的计划备选方案中选择最便宜的备选方案。理论上,只要基数估计和成本模型准确,该体系结构就能得到最优的查询计划。实际上,基数估计通常是基于简化的假设,如一致性和独立性来计算的。

2023-07-25 20:18:55 161

翻译 Neo:A Learned Query Optimizer【论文内容翻译】

面对大量机器学习的成功案例,每个数据库研究人员可能都想知道是否有可能学习一个查询优化器。查询优化器是在数据库系统中实现良好性能的关键,可以将查询执行速度提高几个数量级。然而,今天构建一个好的优化器需要成千上万的人-工程-小时,并且是一门只有少数专家完全掌握的艺术。更糟糕的是,查询优化器需要进行冗长的维护,特别是当系统的执行和存储引擎不断发展时。因此,没有一个免费的开源查询优化器能达到IBM、Oracle或Microsoft提供的商业优化器的性能。

2023-07-24 20:23:46 451

翻译 Deep Reinforcement Learning for Join Order Enumeration【论文内容翻译】

确定关系查询的良好连接顺序是数据库系统(例如[6,12,13,18])中研究得最多的问题之一,因为选择的连接顺序对查询性能有重大影响[11]。连接顺序选择的一个主要挑战是枚举一组候选顺序并确定最经济有效的顺序。搜索更大的候选空间增加了找到低成本排序的几率,但代价是花费更多时间进行查询优化。因此,连接顺序枚举器同时寻求最小化所枚举计划的数量和所选计划的最终成本。传统的DBMS采用各种连接枚举策略。例如,System R[18]使用动态规划。

2023-07-19 20:02:35 166

翻译 SkinnerDB:Regret-Bounded Query Evaluation via Reinforcement Learning【论文内容翻译】

行为的后果影响其再次发生的可能性”。——B.F.斯金纳估计候选计划的执行成本可能是查询优化中的主要挑战[34]。查询优化器根据粗粒度数据统计和简化的假设(例如,独立谓词)预测成本。如果估计是错误的,查询优化器会选择执行成本按数量级次优的计划。我们介绍SkinnerDB,这是一个全新的数据库系统,为可靠的查询优化而设计。SkinnerDB不维护数据统计,也不使用简化的成本和基数模型。相反,SkinnerDB从零开始学习(接近)最优的左深查询计划,即在执行给定查询期间。

2023-07-19 16:40:30 148

翻译 Reinforcement Learning with Tree-LSTM for Join Order Selection【论文内容翻译】

Join order selection (Join order selection, JOS)是一个关键的DBMS优化问题,已经被广泛研究了几十年[1],[26],[32],[36],[38]。传统方法通常基于基数估计和成本模型,使用一些修剪技术搜索所有可能连接顺序的解空间。基于动态规划(DP)的算法[10]通常选择最佳计划,但成本非常高。启发式方法,如GEQO[3]、QuickPick-1000[38]和GOO[4],可以更快地计算计划,但通常产生较差的计划。

2023-07-12 14:30:15 228

翻译 Towards a Learning Optimizer for Shared Clouds【论文内容翻译】

所有罪恶的根源,查询优化的阿喀琉斯之踵,是对中间结果大小的估计,称为基数。[27]众所周知,在传统的查询优化器中,差的基数估计会导致不准确[17,26,18],而在大数据系统中,这个问题更加困难。这是由于:(i)大量的数据,分析和收集统计数据非常昂贵,(ii)存在在运行时强加模式的非结构化数据,因此不能先验地分析,以及 (iii)普遍使用嵌入任意应用程序逻辑的自定义用户代码(例如UDFs),导致任意输出基数。

2023-07-11 11:00:58 64

翻译 Bao: Making Learned Query Optimization Practical【论文内容翻译】

查询优化是数据库管理系统的一项重要任务。尽管经过数十年的研究[70],查询优化中最重要的元素——基数估计和成本建模——已被证明难以破解[45]。一些工作已经将机器学习技术应用于这些棘手的问题[37,40,44,51,53,59,72,73,76]。虽然所有这些新解决方案都显示出显著的效果,但我们认为,这些技术都还不实用,因为它们存在几个基本问题:Long training time:大多数提出的机器学习技术在对查询性能产生积极影响之前都需要大量不切实际的训练数据。

2023-07-07 19:33:29 352

翻译 Steering Query Optimizers: A Practical Take on Big Data Workloads【论文内容翻译】

级联式查询优化器[7]在商业和开源数据库系统中都很流行,例如Spark[31]、Calcite[2]、Greenplum[25]、Snowflake[4]、F1[23]、SQL Server[17]和SCOPE[3]。它们的核心是一组规则,用于枚举所有有效的查询计划。使用成本模型和估计基数,为每个计划分配一个成本作为计划的中间结果。优化器选择执行成本最低的计划。优化器可能会犯多种类型的错误,例如基数错误估计、成本模型中的不准确性[13]以及其他糟糕的启发式方法。

2023-07-04 16:49:36 84

翻译 SkinnerMT: Parallelizing for Efficiency and Robustness in Adaptive Query Processing on ...【论文内容翻译】

传统的查询优化器基于粗粒度数据统计和许多简化的假设来选择连接顺序[34]。通常,这些假设(例如,统一的数据和不相关的查询谓词)并不成立。在这种情况下,查询优化器可能会生成执行成本超过最优值的查询计划。这些长期存在的问题最近促使机器学习用于查询优化[23,25,26,31]。该领域的大部分工作都集中在“内部查询学习”上。这意味着从过去的查询中获得的经验将用于为下一个查询做出更好的优化决策。然而,这样的方法可能会导致“冷启动”问题,并且对新数据或不寻常的查询(例如,引入新的用户定义函数的查询)没有帮助。

2023-06-30 19:35:50 64

翻译 Balsa:Learning a Query Optimizer Without Expert Demonstrations【论文内容翻译】

查询优化器是每个数据库和查询引擎中的性能关键组件,它将声明性查询转换为高效的执行计划。这些优化器必须为每个查询导向候选计划的巨大搜索空间,通过利用有关数据的统计信息以足够的准确性对每个计划进行评分。由于这种复杂性,优化器的开发成本很高。人类专家可能会花几个月的时间来编写第一个版本,然后花几年的时间来完善它。例如,PostgreSQL是世界上使用最广泛的数据库之一,其优化器在发布20多年后不断发生变化[6]。由于开发成本高,一些关系系统满足于基于启发式的优化,并推迟构建成熟的基于成本的优化器。

2023-06-20 20:27:50 274

翻译 Workload-driven, Lazy Discovery of Data Dependencies for Query Optimization【论文内容翻译】

我们提出了一种方法,可以根据具体的、给定的工作负载有效地确定数据依赖关系,并在查询优化期间应用它们来生成更有效的查询计划,从而提高性能。在应用数据依赖关系进行查询优化时,面临的三个挑战是发现、选择和改变相关依赖关系。我们提出了一个集成的解决方案,通过我们的工作负载驱动、惰性依赖关系发现方法、增量验证和维护技术以及列存储DBMS的概念来解决这些挑战。

2023-06-14 21:04:02 62

翻译 LOGER: A Learned Optimizer towards Generating Efficient and Robust Query Execution Plans【论文内容翻译】

查询优化一直是数据库领域的关键问题,因为查询优化的难度和查询执行性能的重要性。为了给每个查询找到一个有效的执行计划,查询优化器必须在一个非常大的搜索空间中进行搜索,我们知道,在这个搜索空间中,寻找最优的连接顺序是一个NP-hard问题[7]。此外,物理算子的选择也会影响性能,使问题更加复杂。因此,目前几乎所有的关系数据库管理系统都采用启发式方法和各种策略来平衡查询优化的复杂性和执行延迟。这些传统的查询优化方法经过不懈的努力,在不同的环境下都实现了稳定的性能。

2023-06-08 21:21:30 378

翻译 BASE:Bridging the Gap between Cost and Latency for Query Optimization【论文内容翻译】

查询优化器是数据库管理系统(DBMS)中的一个关键组件,用于为每个给定的SQL查询找到最有效的执行计划。近年来,机器学习(ML)增强DBMS的研究越来越受到关注,并显示出以数据驱动的方式提升数据库性能的优越性[1,9,17]。特别是,强化学习(RL)被应用于生成执行计划,并展示了其在寻找竞争执行计划方面的优势,而不需要启发式方法强化学习以试错的方式训练策略,以最大化/最小化奖励函数的累积回报。当应用于查询优化时,学习的查询优化器根据其当前策略生成执行计划,并检索奖励作为反馈,表示该计划的好坏。

2023-06-06 19:41:05 178

翻译 COOOL_ A Learning-To-Rank Approach for SQL Hint Recommendations【论文内容翻译】

查询优化的目标是从庞大的搜索空间中以足够的精度为每个查询选择具有最低延迟的最佳候选计划。查询优化已经研究了几十年[31],并且仍然是一个活跃的研究领域[35]。人们提出了各种基于ML的研究思路:成本建模、基数估计、端到端查询优化等,其中最实用的方法是Bao[23]。Bao是一个利用树卷积神经网络[27]和[33]来推荐SQL提示的查询优化系统。Bao在端到端查询优化的实用性方面取得了显著的进步,但它存在两个继承自以前模型的问题[19,25,32,41,42]。

2023-06-05 15:47:56 340

翻译 Leveraging Query Logs and Machine Learning for Parametric Query Optimization【论文内容翻译】

数据库应用程序广泛使用参数化查询,其中使用不同的参数绑定(例如,存储过程)重复执行相同的SQL语句。对于复杂SQL查询,优化每个查询实例(Opt-Always),但会消耗大量CPU和内存资源;另一种方式是,只优化参数化查询的第一个(或用户指定的)查询实例,并缓存该计划以便在后续查询实例中重用(Opt-Once),虽然减少了优化时间,但缓存的计划对后续查询实例可能是次优的。

2023-06-05 11:20:46 369

翻译 Lero_ A Learning-to-Rank Query Optimizer【论文内容翻译】

查询优化器是数据库中最重要的角色之一。它的目的是为每个查询选择一个有效的执行计划。提高其性能一直是一个长期存在的问题。最近的研究[32,33,51]用机器学习技术改进了传统的成本模型和计划枚举算法。尽管取得了一些进展,但它们仍然存在固有困难-延迟预测问题所导致的缺陷。在本文中,我们提出了Lero,一个learning-to-rank query optimizer,它具有用于查询优化的新的轻量级pairwise machine learning model。

2023-05-26 10:59:00 345

翻译 Cost-based or Learning-based? A Hybrid Query Optimizer forQuery Plan Selection【论文内容翻译】

查询优化是DBMS中一个被广泛研究多年的基本问题[2,34,37,43]。最近提出了基于学习的优化器[21,29 - 31,42,44,48 - 50,53],它利用机器学习技术从过去的经验中学习高质量的计划。例如,DQ [21],ReJoin[30]和RTOS[50]使用强化学习来选择良好的连接顺序。Neo[31]使用Tree-CNN实现了端到端的基于学习的优化器。除了传统的基于成本的优化器外,近年来又提出了基于学习的优化器。这两种类型的优化器各有其局限性和优点。

2023-05-24 17:13:07 257

原创 darknet训练自己的模型权重-yolo4

注:此过程是运行在darknet已编译完成后的情况,具体参考上一篇博文:编译darknet网络-下载git版本时间20210520一、在darknet主目录下创建yolo-obj.cfg配置文件,拷贝yolov4-custom.cfg的内容到yolo-obj.cfg中,并对部分内容进行修改。修改batch=64,修改subdivisions=64(如果显卡性能较高,可以设置batch=96或subdivisions=16) 修改width=416,height=416(如果显卡性能较高,..

2021-05-24 09:56:25 1818

原创 编译darknet网络-下载git版本时间20210520

本文基于较新的darknet源码进行编译,安装环境已经过测试我的软件环境:WIN10,CUDA10.2,cuDNN8.0.2,python3.7,VS2019,OpenCV3.4.10、CMake 3.18.2(如果提示缺少cudart64_101.dll、cudnn64_7.dll,请单独下载并放到C:\Windows\System32目录下)硬件环境:GTX1660Ti ×1,6G显存一、前期准备总的环境版本要求如下图(这里的版本一定要符合要求!!!):除CMake..

2021-05-24 09:42:53 462

原创 深度学习的基础——笔记

本文内容根据 网易云课堂 吴恩达《深度学习工程师》整理课程的文字版内容参考:https://blog.csdn.net/yangshaojun1992/article/details/105151717学习内容摘要:一、具有神经网络思维的Logistic回归的实现过程:定义模型结构(例如输入特征的数量) 初始化模型的参数 循环:计算当前损失(前向传播)计算当前梯度(反向传播)更新参数(梯度下降)涉及知识点:数据集操作(训练集/测试集)、numpy数组操作(.

2021-05-21 19:02:10 145

原创 Python学习笔记

本文是参考菜鸟教程 Python3整理1.Python关键字['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonloc...

2021-05-21 16:52:27 366

原创 走向深度学习之路

因为项目的原因,未接触过深度学习的我也需要做开发和应用,加上没有人引路,所以一开始的感觉自然是懵逼状态 o((⊙﹏⊙))o不过既然是有需求,自然得找到出路。学习需要循序渐进,在参考了很多前辈的博客和B站的相关视频,我把学习过程分为以下几个部分:首先,当前做机器学习和深度学习的大多是用对Python...

2021-05-21 16:09:33 210

转载 Spark Dataset的join操作

以下是两个具有相同列名的Dataset按照同名列相等进行join操作,join结果中同名列只会出现一个:val df1 = Seq((1, 2, 3),(1, 1, 1)).toDF("a", "b", "c")val df2 = Seq((1, 2, 4),(2, 2, 2)).toDF("a", "b", "c")df1.show+---+---+---+| a| b| c|...

2019-09-24 21:33:38 2279

转载 SparkSQL中DataFrame的常用操作

SparkSQL中DataFrame的常用操作前言基础操作类方法 Action基本函数(Basic Dataset functions)流式函数(streaming)强类型转换(Typed transformations)弱类型转换(Untyped transformations)未分组(Ungrouped)参考博客前言本文介绍DataFrame的用法,它是Dataset[Row]的别名,而o...

2019-09-24 21:28:18 736

原创 hive 创建临时表和往表插入数据

hive 创建临时表和往表插入数据前言实现前言本文讲述了如何将生成的DataFrame数据批量插入hive表。实现往hive表中插入数据有两种方式,一种是向指定数据库、数据表中写入数据,hiveContext.sql("use DataBaseName")data.toDF().insertInto("tableName")另一种是把DataFrame数据注册为临时表,再写入hiv...

2019-09-24 20:40:19 9933 2

原创 hive 创建和删除库、表

hive 创建和删除库、表前言hive 库操作hive表操作参考博客前言本文主要介绍hive 中操作库和表的语句。hive 库操作查看数据库:show databases创建数据库:create database if not exists hive_testdb使用某个数据库:use hive_testdb查询数据库:show databases like ‘hive*’显示数...

2019-09-24 17:49:11 1014

转载 Scala创建新的空DataFrame

Scala创建新的空DataFrame前言实现参考博客前言本文主要是对Scala中创建空DataFrame的方式进行介绍,以下将会列举不同的代码示例实现方式一: /** * 创建一个空的DataFrame,代表用户 * 有四列,分别代表ID、名字、年龄、生日 */ val colNames = Array("id", "name", "age", "...

2019-09-24 17:13:49 5204

原创 Win10下安装大数据开发环境 spark+hadoop+hive(实测可用)

Win10下安装大数据开发环境 spark+hadoop+hive(实测可用)基础环境安装基础环境安装首先,我们需要搭建软件的运行环境,本文中所使用的软件均需要运行在Java环境之上,所以在您的电脑中安装JDK,并设置好环境变量,参考链接:传送门 。( 作者已将相关软件上传网盘:点击下载 提取码:8cmm )注意事项:JDK版本建议1.8,1.9会报错所有软件的安装路径不能存在空...

2019-09-24 15:41:03 3976

原创 Java开发环境配置

本节将为大家介绍如何在计算机上配置Java开发环境,一共分为两部分:一、Windows下的Java开发环境安装及环境变量配置;二、Linux下的Java开发环境安装及环境变量配置。下面我们开发配置环境,一、Windows下配置开发环境浏览器打开Java SDK下载地址(根据需要选择对应版本下载)https://www.oracle.com/technetwork/java/java...

2019-04-06 15:56:14 452

转载 SQL server游标

# SQL server游标 update触发器只会被update触发一次,无论更新的记录数是多少,同理Delete触发器也是一样,对于处理集合性的数据,sql往往是同时处理的,没有按照先后顺序,这样相应的触发器就不会一一触发,这时就需要用游标处理CURSOR。ALTER TRIGGER [dbo].[trg_AdminRole_insert_update] ON [dbo].[Admin_rol

2017-02-22 19:43:24 173

转载 【转载】在Windows下Memcache缓存系统构建(Java)

【转载】在Windows下Memcache缓存系统构建(Java)原文出自 http://www.cnblogs.com/itred/p/4217073.html在如今这个高效率的社会中,怎样将这个高效率应用到自己的程序中,是一个值得追寻和值得探讨的问题。因为这个memcache能够很好的提高检索速度,提升用户体验,而且重要的是减少数据库的访问。这就大大的提高了整个应用系统的档次。因此,在应用

2016-03-28 22:46:57 566

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除