精华内容
下载资源
问答
  • 背景:测试hive,执行简单查询select count(*) from test.t1;,任务跑起来后卡住不动,也不报错,如下图: 原因:最后发现是参数:yarn.nodemanager.resource.memory-mb设置的太小导致的 进入CDH管理界面,Yarn的...

    背景:测试hive时,执行简单查询select count(*) from test.t1;,任务跑起来后卡住不动,也不报错,如下图:
    在这里插入图片描述
    原因:最后发现是参数:yarn.nodemanager.resource.memory-mb设置的太小导致的
    进入CDH管理界面,Yarn的配置中这个参数显示如下:
    在这里插入图片描述
    这里的“容器内存”这个解释误导了我,开始我以为这个参数是设置每个container容器的内存大小,于是设置的4G,后来发现这个参数是设置集群中某个计算节点分配给nodemanager的最大可用内存,这个最大可用内存不是该节点最大内存,而是该节点最大内存划分出来的给nodemanager使用的内存。把这个参数增大到20G,hive查询可以顺利执行。

    另外补充几个其它参数的含义:
    1.单个容器可申请的最小内存资源

    yarn.scheduler.minimum-allocation-mb
    
    • 这个配置时用来指定单个容器(container)可申请的最小内存资源,
    • 如果申请的内存资源小于这个配置项的值,则按最小值分配。(有的商业版禁止申请小于这个值的内存资源)
    • 这个配置是会影响到单个节点上container个数的,所以比较重要。有下面的经验推荐值:
    Total RAM per Node Recommended Minimum Container Size
    Less than 4 GB 256 MB
    Between 4 GB and 8 GB 512 MB
    Between 8 GB and 24 GB 1024 MB
    Above 24 GB 2048 MB

    2.单个容器可申请的最大内存资源

    yarn.scheduler.maximum-allocation-mb
    
    • 单个容器(container)可申请的最大内存资源,应用在运行时申请的内存不能超过这个配置项值,
    • 因为这个配置项是指定一个container最大的内存,实际分配内存时并不是按照这个配置项分配,所以这个配置项可以配置成和nodemanager的可用内存(yarn.nodemanager.resource.memory-mb)一样即可,这样的话,意味着只要这个节点的nodemanager可用内存哪怕只够跑一个container,这个container也是可以启动的。
    • 如果这个参数配置的比nodemanager的可用内存(yarn.nodemanager.resource.memory-mb)小,那么可能出现这个节点总内存即使足够提供所需内存的,但却无法启动container的情况。
    展开全文
  • 而这些步骤都需要运行成本,所以在数据库中有一个叫做执行计划的东西,编译器会将编译过后的SQL存入执行计划当中,当遇到同样的SQL,就直接调用执行计划来执行,而不需要再次编译。 通过对上面执行计划的认识,...
  • query-params.js一个简单的香草(ES6)js帮助程序,用于将查询参数捕获为对象。 用法 访问[removed].query将返回页面加载已知的查询参数。 如果希望更改它们,可以调用window.getQueryParams()返回当前查询...
  • 而这些步骤都需要运行成本,所以在数据库中有一个叫做执行计划的东西,编译器会将编译过后的SQL存入执行计划当中,当遇到同样的SQL,就直接调用执行计划来执行,而不需要再次编译。通过对上面执行计划的认...

    1概述

    SQL语言的本质就是一串伪代码,表达的是做什么,而不是怎么做的意思。如其它语言一样,SQL语句需要编译之后才能运行,所以每一条SQL是需要通过编译器解释才能运行的(在这之间还要做SQL的优化)。而这些步骤都是需要运行成本,所以在数据库中有一个叫做执行计划的东西,编译器会将编译过后的SQL存入执行计划当中,当遇到同样的SQL时,就直接调用执行计划来执行,而不需要再次编译。

    通过对上面执行计划的认识,为了提高数据库运行的效率,我们需要尽可能的命中执行计划,这样就可以节省运行时间。

    2相关SQL

    2.1查看当前数据库中所有的执行计划:

    SELECT cp.usecounts AS '使用次数'

    ,objtype AS '类型'

    ,st.[text] AS 'SQL文本'

    ,plan_handle AS '计划句柄'

    FROM sys.dm_exec_cached_plans cp

    CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st

    WHERE st.text not like '%sys%'

    2.2删除执行计划

    --删除所有计划

    DBCC FREEPROCCACHE

    2.3测试脚本(创建员工表,并向其插入1000条数据)

    IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Employee]'))

    DROP TABLE [dbo].Employee

    GO

    --人员表

    CREATE TABLE dbo.Employee

    (

    id int,

    name nvarchar(50)

    );

    --插入测试数据

    DECLARE @I INT=0,@ENDI INT=1000;

    WHILE(@I

    BEGIN

    SET @I+=1;

    INSERT dbo.Employee(id,name) VALUES(@I,'蒋大华'+CAST(@I AS NVARCHAR(20)));

    END;

    3测试执行计划

    3.1 先执行删除所有执行计划,然后执行SELECT * FROM Employee ,最后查看执行计划(2.1中的查看执行计划脚本)如下图

    4dc3b6f54f55cfbb4f6c74aff7511cd9.png

    即SQL SERVER会为每一条SQL建立一个执行计划,并将它缓存起来

    3.2 再运行一次SQL: SELECT * FROM Employee,并查看执行计划

    a2e0476ec79a0c9b0c90fb5c0b4cfa7a.png

    可以看到这个计划的重用次数为2,即这个计划被重用了;

    3.3 修改SQL:SELECT  * FROM Employee(在SELECT后多加一个空格),执行并查看执行计划

    d7f99f1e4357d66c29f7dd04591ee12a.png

    结果又新添加一个执行计划,即SQL SERVER认为这是两个不同的SQL语句并分别建立了执行计划;

    4重用执行计划——使用参数化查询方法

    4.1 未参数化SQL

    string selectCmdText = string.Format(@"SELECT * FROM Employee WHERE name='{0}'",” 蒋大华1”);

    SQLHelper.ExecuteNonQuery(SQLHelper.DefaulConnectiontString, System.Data.CommandType.Text, selectCmdText, null);

    查看执行计划:

    34190692bd783df57acb60fbf3fca99d.png

    即当执行一个未参数化SQL时,SQL SERVER需要先将其转换成一个参数SQL并执行它。一共需要两执行计划

    然后再执行下面的代码(查询的条件变了)

    string selectCmdText = string.Format(@"SELECT * FROM Employee WHERE name='{0}'",” 蒋大华2”);

    SQLHelper.ExecuteNonQuery(SQLHelper.DefaulConnectiontString, System.Data.CommandType.Text, selectCmdText, null);

    查看执行计划

    f2031aa2b28ad19af8c9b7e127b19dc0.png

    此时不需要再准备一个准备的SQL,但还是需要再产生一个执行计划,并缓存下来;

    4.2 参数化SQL

    SqlParameter[] param = { new SqlParameter("@name", txtEmployeeName.Text.Trim()) };

    string selectCmdText = string.Format(@"SELECT * FROM Employee WHERE name=@name");

    SQLHelper.ExecuteNonQuery(SQLHelper.DefaulConnectiontString, System.Data.CommandType.Text, selectCmdText, param);

    输入参数并执行,然后查看执行计划:

    953ca654d749d780751ba57dd28de4fb.png

    只需要一个准备SQL,然后,输入不同的参数,并执行,再查看执行计划

    3c490430c4ab316767af207352106c1a.png

    重用执行计划,perfect...

    5总结

    总的来说,SQL语句在执行时,会生成执行计划并将它缓存起来,我们可以通过提高使用缓存中的执行计划次数,来减少数据库的压力。而使用参数化的SQL是一个很好的选择,参数化查询的作用不仅只有防止SQL注入,还可以提高缓存中执行计划使用次数。

    展开全文
  • 在使用mybatis的过程中,多次检验传参、sql语句等查询条件,并未发现存在错误,直接执行后台日志中的sql也能够查到正确结果,但是后台mybatis返回的值一直空。 原因: 经过测试发现数据库表结构中使用了char作为...

    问题:
    在使用mybatis的过程中,多次检验传参、sql语句等查询条件,并未发现存在错误,直接执行后台日志中的sql也能够查到正确结果,但是后台mybatis返回的值一直是空。

    原因:
    经过测试发现是数据库表结构中使用了char作为字段类型,而参数的长度和char的长度不符。在oracle中如果char内容长度不够,那么会自动用空格补满。比如我们在char2中插入‘0’,那么数据库会自动补齐为‘0 ’,当我们从mybatis传参‘0’进行比较时,‘0’和‘0 ’不相同,返回值就会是空。

    解决方法:
    1.修改表结构或者传参的值,使两者长度适配

    2.修改dao层的xml语句,去除多余的空格,例如:select * from tb2 where trim(tb2.id)=#{id}

    转载于:https://www.cnblogs.com/notACoder/p/10132201.html

    展开全文
  • PHP中通过设置error_reporting的参数值可以控制错误报告级别,当然你可以在php.ini中配置也可以在PHP代码中动态修改。 下面error_reporting的参数值列表,以作... E_ERROR - 致命的运行时错误 ; E_RECOVERABLE_E

    PHP中通过设置error_reporting的参数值可以控制错误报告级别,当然你可以在php.ini中配置也可以在PHP代码中动态修改。

    下面是error_reporting的参数值列表,以作备忘:

    ; E_ALL             - 所有错误和警告 (不包含 E_STRICT)
    ; E_ERROR           - 致命的运行时错误
    ; E_RECOVERABLE_ERROR  - 几乎致命的运行时错误
    ; E_WARNING         - 运行时警告 (非致命错误)
    ; E_PARSE           - 编译时语法错误
    ; E_NOTICE          - 运行时提醒 (这些警告常常由你代码中的bug导致, 但是也有可能是有意的行为 (例如, 使用一个未初始化的变量并依赖于其会被自动初始化成为一个空字符串的事实)
    ; E_STRICT          - 运行时提醒, 打开后PHP会给出针对你代码的最易移植和最好向后兼容性的建议
    ; E_CORE_ERROR      - PHP初始化启动时的致命错误
    ; E_CORE_WARNING    - 在PHP初始化时发生的警告 (非致命错误)
    ; E_COMPILE_ERROR   - 致命的编译时错误
    ; E_COMPILE_WARNING - 编译时警告 (非致命)
    ; E_USER_ERROR      - 用户产生的错误信息
    ; E_USER_WARNING    - 用户产生的警告信息
    ; E_USER_NOTICE     - 用户产生的提示信息


    例子:


    error_reporting = E_ALL | E_STRICT          - 显示所有错误


    error_reporting = E_ALL & ~E_NOTICE          - 显示所有错误, 除了提示以及代码标准警告以外

    error_reporting = E_ALL & ~E_NOTICE | E_STRICT          - 显示所有错误,除了提示以外


    在PHP代码中加入error_reporting(0),屏蔽所有的错误提示


    展开全文
  • 如其它语言一样,SQL语句需要编译之后才能运行,所以每一条SQL需要通过编译器解释才能运行的(在这之间还要做SQL的优化)。而这些步骤都需要运行成本,所以在数据库中有一个叫做执行计划的东西,编译器会将编译...
  • 从零学会SQL:复杂查询​www.zhihu.com本篇主要...使用视图,视图会先运行里面的查询语句,从表中查找数据保存到临时表里。当客户端与数据库断开连接该表就会自动删除。视图本身不存放数据,它存放的sql查询语...
  • 它支持在运行时查询和操作对象图,它可以与基于XML和基于注解的Spring配置还有bean定义一起使用。由于它能够在运行时动态分配值,因此可以为我们节省大量Java代码。 SpEL官方文档 2、写注解 @Target({ElementTyp
  • 图1为junit Test方法及运行结果,控制台打印出了sql语句以及预期的查询结果,图2为controller及运行结果,controller中的语句与test几乎一样,打印的sql语句也一模一样,但是查询结果list.size=0;分别debug,如图3/4...
  • 但是Julia却不同,在Julia中参数是通过分享传递的。为了搞清楚什么是分享传递,让我们先看一下值传递和引用传递这两种常用的方法。值传递和引用传递当我们说传值的时候,则意味着无论给函数传递什么参数,函数都会将...
  • 对一条sql进行优化,发现原本很慢的一条sql(将近1分钟) 在第二次运行时, 瞬间就完成了(0.00sec) 这因为mysql对同一条sql进行了缓存,服务器直接从上次的查询结果缓存中读取数据,而不是重新分析、执行sql。...
  • mysql中的慢查询日志

    2015-07-22 23:45:00
    首先我们看一下关于mysql中的日志,主要包含:错误日志、查询日志、慢查询日志、事务日志...当数据库遭到意外的损坏,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复。 先看一下日志参数 ...
  • 获取oracle的隐含参数

    2014-08-17 22:09:37
    下面我们逐步研究如何得到获取隐含参数的方法。...我们平时通过show parameter xxx来查询参数都属于非隐含参数,这是通过v$parameter这个动态性能视图得到的, 这个动态性能视图记录了数据库运行时的信息和统...
  • 首先我们看一下关于mysql中的日志,主要包含:错误日志、查询日志、慢查询日志、事务...当数据库遭到意外的损坏,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复。先看一下日志参数mysql&g...
  • kettle中实现动态SQL查询

    千次阅读 2019-10-30 17:23:21
    本文通过kettle中的表输入(“table input”)步骤来说明动态查询、参数查询。示例代码使用内存数据库(H2),下载就可以直接运行通过示例学习更轻松。 SQL查询语句中占位符绑定字段值 第一个接近动态语句的...
  • statement运行的SQL语句,它的返回值通过resultType来指定 before表示查询语句statement运行的时机 keyProperty表示查询结果赋值给代码中的哪个对象,keyColumn表示将查询结果赋值给数据库表中哪一列 ...
  • 我在拼接本来想通过属性是否为null,或者是否为空字符来判断是否作为查询条件,但是由于默认值的存在,导致拼接错误。 2、代码 ``` /*** * 约定: * 1、类名与表名对应,表名全小写。 * 2、类属性与列名...
  • 查询 优化器分析语句运行时的所有因素,选择最优的方式去执行,提高了查询效率。因此,查询 优化数据库执行SQL语句的重要过程,决定了数据库的查询性能。 1、优化目标 达梦数据库查询优化器的优化目标为最快响应...
  • Hibernate中QBC限定条件查询

    千次阅读 2017-03-04 17:12:35
    QBC支持在运行时动态生成查询语句。 Criteria接口个容器,通过它的add()方法向其实例中添加查询条件,查询条件由 Expression 类进行描述。 第一步,使用Session的createCriteria()方法创建一个Criteria对象,...
  • 参数是构成某个例程的总 SGA 要求的若干参数之一。 默认值 : 派生: SESSIONS 参数的值 (如果正在使用共享服务器体系结构); 否则为 0。 Mts_multiple_listeners: 说明: 指定多个监听程序的地址分别指定的, ...
  • 各个站点的水情信息,选好条件后查询,...程序每次运行时通过读取txt向服务器传送这两个参数,但站点多,数据量大,请问怎样能自动获取这两个参数值?即"...HeDao1.aspx"网页上的viewstate和eventvalidation。非常感谢
  • 在较高的级别上,Noria接受一组参数化SQL查询(认为),并生成一个,该维护以输出这些查询。 读取现在可以直接在这些实例化视图中进行快速查找,就好像该值已直接缓存在memcached中一样。 然后,通过数据流使视图...
  • 说明:网络经验:后者效率高于前者,但是以上两个查询语句的性能通过查询计划可以看出其实一样的,后者不比前者性能好。可能SQLServer的后期版本进行了优化。 示例二: 网络经验:网络经验:三个效率不...
  • Sysctl一个功能强大的工具,用于在内核运行时动态地修改内核的参数,在这个命令的帮助下,可以修改内核参数,而无需重新编译内核或重启系统。可以在/proc/sys目录下找到可供修改的参数。因此,procfs(能够通过文件...
  • 任何不共享配置文件用户代理,URI路径,标头和查询参数的传入请求都将被重定向到可配置的诱饵网站。 验证后的C2流量将中继到同一虚拟网络内的团队服务器,该服务器将进一步受到网络安全组的限制。 允许VM仅公开SSH...
  • SQLServer2008查询性能优化 2/2

    热门讨论 2012-03-02 16:26:55
    当服务器的运行越来越慢,这个工作就变得更加困难。来自用户的愤怒的电话以及站在你办公桌周围的管理人员都使你很不快活。在开发代码的同时,如果你花费时间和精力来开发一个性能故障排错的方法。那么你就能避免...
  • 通过使用过程,不仅可以简化客户端应用程序的开发和维护,而且可以提高应用程序的运行性能。(假如某应用程序需要经常向某张表中插入数据,并且在插入数据需要对数据进行检查验证,为了简化客户端的维护,可以使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 853
精华内容 341
关键字:

参数查询是通过运行查询时的