MS SQL入门基础:SQL Query Analyzer

  19.3.1 SQL Query Analyzer 简介

  SQL Query Analyzer 是一个图形化的管理工具,主要用于编写、测试Transact-SQL 语句、批处理。系统管理员和开发者通过SQL Query Analyzer 能够同时执行多个查询、查看查询结果、分析查询计划,从而了解如何提高查询执行的性能。从SQL Server Enterprise Manager 可以将其启动。SQL Query Analyzer 提供了以下特性:

  为编写Transact-SQL 语句提供了自由格式的文本编辑器; 将Transact-SQL 语法用彩色代码显示,从而提高了复杂语句的可读性; 对象浏览和搜索工具使在数据库中寻找某一数据库对象变得更为容易; 包含创建数据库对象的基本语句的模板文件,从而提高了使用Transact-SQL 语句创建数据库对象的速度; 分析存储过程的调试器; 结果集可以以表格或文本格式显示; 图形化的执行计划显示了执行Transact-SQL 的每一个逻辑步骤。 19.3.2 配置SQL Query Analyzer

  在使用SQL Query Analyzer 之前,首先要对其查询选项进行配置。因为这些选项直接决定了查询的显示信息、查询结果和SQL 语句执行计划的显示格式和内容。配置SQL Query Analyzer 主要有两种方法:一种是通过SQL Query Analyzer, 另一种是通过SET 命令来实现。在这里我们只介绍前一种方法。

  首先启动SQL Query Analyzer, 然后在工具栏的Query 菜单下选择Current Connection Properties 菜单项。打开Current Connection Properties 对话框,如图19-7 所示。

  其中各选项的含义为: Set nocount

  表示在返回信息中不包括查询语句所影响行数信息。 Set noexec

  表示编译但不执行语句。 Set parseonly

  表示解析但不编译或执行语句。 Set concat_null_yields_null

  表示如果串联中的任何一个操作数为NULL, 则返回值为NULL。 Set rowcount

  表示返回指定行数的查询结果集然后结束查询处理。

  1167834694_ddvip_6421.gif Set arithabort

  表示在查询处理中,如果出现零做除数或运算溢出错误,则终止查询。 Set showplan_text

  表示显示查询的执行信息。 Set statistics time

  表示显示解析、编译、执行语句所需要的时间,其单位为微秒。 Set statistics IO

  表示显示磁盘活动信息。 Set status I/O

  表示显示执行查询时磁盘活动的状态信息。 Set ansi_default

  表示按SQL-92 标准设置以下选项。 19.3.3 使用SQL Query Analyzer

  在本节开头部分,我们已经介绍了有关SQL Query Analyzer 的特性以及它所具有的功能.通常来说,SQL Query Analyzer 主要可以帮助实现以下四大功能: 执行SQL 语句 分析查询计划 显示查询统计情况 实现索引分析   下面以一个实际例子来讲解SQL Query Analyzer 是如何实现这些功能,的以及它又是怎样帮助系统管理员或应用程序开发者实现索引分析和查询计划分析。

  首先在文本编译器中输入以下的查询语句:

  然后选择工具栏的Query 菜单下的show execution plan 和show client statistics 选项。接着单击工具栏上Execute Query, 此时在文本编辑器的下半部分的三个标签页上分别显示查询的结果集查,询执行计划以及统计信息。

  1167834694_ddvip_9526.gif

  1167834695_ddvip_4572.gif

  该图显示了由查询优化器(Query Optimizer) 所决定的查询数据的方法。在这里所使用的图形化执行计划是使用图标而不是表格来代表具体某一语句和查询的执行情况,从而有利于理解执行的详细情形。除此之外,SQL Query Analyzer 还能够指出还应该在哪些列上创建索引以便提高查询性能,以及给出有关非索引列的统计信息。

  选中Statistics 标签页,如图19-9 所示。

  1167834695_ddvip_7879.gif

  这些统计信息主要由查询处理器使用,通过统计信息,其能够在查询评估阶段来决定最优的查询策略是什么。在表上创建索引之后,SQL Server 自动将有关索引列分布值的统计信息存储起来,以备查询优化器以后使用。所以,如果某一列的值发生变化,则其最佳的查询策略也将改变,因查询优化器仍使用其存储的统计信息来进行查询决策,从而降低了查询效率。

  本章小结

  本章主要介绍了SQL Mail、 SQL Server Profiler 、Query Analyzer 的重要功能及其用法,较为详细地阐述了各主题、各工具所涉及的有关问题。SQL Mail 为SQL Server 提供邮件传送服务;SQL Server Profiler 帮助系统管理员监视数据库和服务器的行为,提高了管理效率;SQL Query Analyzer 为系统管理员和开发者能够查看查询结果、分析查询计划提供了便利条件,从而了解如何提高查询执行的性能。

转载于:https://www.cnblogs.com/Athrun/archive/2007/07/27/833864.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 问题描述: 在使用Spark SQL操作Hive时,出现了报错,如下所示: ``` Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.exec.Utilities.clearWorkMap()V at org.apache.spark.sql.hive.client.ClientWrapper.<init>(ClientWrapper.scala:204) at org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:271) at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:362) at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:266) at org.apache.spark.sql.hive.HiveSharedState.metadataHive$lzycompute(HiveSharedState.scala:39) at org.apache.spark.sql.hive.HiveSharedState.metadataHive(HiveSharedState.scala:38) at org.apache.spark.sql.hive.HiveSharedState.externalCatalog$lzycompute(HiveSharedState.scala:46) at org.apache.spark.sql.hive.HiveSharedState.externalCatalog(HiveSharedState.scala:45) at org.apache.spark.sql.hive.HiveSessionState.catalog$lzycompute(HiveSessionState.scala:50) at org.apache.spark.sql.hive.HiveSessionState.catalog(HiveSessionState.scala:48) at org.apache.spark.sql.hive.HiveSessionState$$anon$1.<init>(HiveSessionState.scala:63) at org.apache.spark.sql.hive.HiveSessionState.analyzer$lzycompute(HiveSessionState.scala:63) at org.apache.spark.sql.hive.HiveSessionState.analyzer(HiveSessionState.scala:62) at org.apache.spark.sql.execution.QueryExecution.assertAnalyzed(QueryExecution.scala:49) at org.apache.spark.sql.Dataset$.ofRows(Dataset.scala:64) at org.apache.spark.sql.SparkSession.sql(SparkSession.scala:582) ``` 解决方法: 该问题是由于Hive版本与Spark版本不兼容导致的。解决方法如下: 1. 确认Hive版本与Spark版本是否兼容,可以在Spark官网查看版本兼容性。 2. 如果版本不兼容,可以升级或降级Hive版本,或者升级或降级Spark版本。 3. 如果版本兼容,可以尝试重新启动Spark和Hive服务,或者重新编译Spark和Hive。 4. 如果以上方法都无法解决问题,可以尝试使用其他的SQL操作Hive的工具,如Beeline等。 总之,要保证Spark和Hive版本兼容,并且正确配置Spark和Hive的环境,才能避免出现该问题。 ### 回答2: 在使用Spark-SQL操作Hive时,常常会遇到一些错误。其中一些常见的错误可能包括: 1. ClassNotFoundException: org.apache.hadoop.hive.ql.metadata.HiveException 这个错误通常表示你的 Spark 集群无法找到 Hive 函数库。可能的解决方案是确认你是否正确安装 Hive 或者使用了正确配置的 Spark 路径: - 如果你没有安装 Hive,你需要从 Hive 下载页面下载Hive 安装。成功安装后,需要将 $HIVE_HOME/lib/hive-exec.jar 添加到 Spark 的 classpath 中(例如通过 spark.driver.extraClassPath 和 spark.executor.extraClassPath 参数来添加)。 - 如果你安装了 Hive,但是仍然出现此错误,你需要检查你的 Spark 是否在使用正确的类路径。可能需要设置 PATH 或者 SPARK_DIST_CLASSPATH 等环境变量。 2. org.apache.spark.SparkException: Exception thrown in awaitResult 如果出现这个错误,通常说明 Spark-SQL 查询需要更多的内存或者计算能力。可能需要调整 Spark-SQL 相关的配置: - 设置 Spark 的执行器内存和执行器核心(例如通过 spark.executor.memory 和 spark.executor.cores 这两个参数),以确保足够的计算资源; - 增加 Spark-SQL 相关的内存限制(例如通过设置 spark.sql.shuffle.partitions、spark.sql.autoBroadcastJoinThreshold、spark.driver.memory 等参数); - 减小查询数据量等其他引起内存不足的原因。 3. Command failed: java.io.IOException: Cannot run program "hadoop" 如果出现这个错误,可能是由于缺少 Hadoop CLI 或者 Hadoop 开发包(Hadoop SDK)。 - 确认你已经安装了 Hadoop CLI 和 Hadoop SDK - 确认 Spark 的 Hadoop 配置和你的集群匹配。具体来说,你需要确保环境变量 HADOOP_HOME 或者 HADOOP_CONF_DIR 指向正确的路径,或者在 Spark 集群初始化时正确设置好 Hadoop 配置。 总之,遇到 Spark-SQL 操作 Hive 中的错误时,首先需要明确错误的原因,然后根据具体情况采用相应的解决方案。常见的解决方案包括: - 确认 Hive 安装及环境变量设置是否正确; - 调整 Spark-SQL 相关参数以适应查询需求; - 确保 Hadoop CLI 及 Hadoop SDK 是否已正确安装。 ### 回答3: 在使用Spark-SQL操作Hive时,可能会遇到一些常见的报错,以下是其中一些问题和可能的解决方案。 1. hive文件丢失或权限不足 有时候,您在使用Spark-SQL操作Hive时,可能会遇到hive文件丢失或无法访问的权限问题。这可能是由于文件系统权限或文件本身的原因导致的。为了解决这个问题,您应该确保获取足够的权限来访问hive文件,并且检查您的文件系统是否正确。 2. classnotfoundexception:HiveCli 当您使用Spark-SQL操作Hive时,您可能会遇到一个类找不到的错误-"classnotfoundexception:HiveCli"。 这是因为hive-jdbc驱动程序文件缺失或未正确设置驱动程序路径所导致的。Solution是安装hive-jdbc驱动程序,并将其正确设置为Spark应用程序的驱动程序路径。 3. NoClassDefFoundError: org/apache/hive/service/cli/thrift/ThriftCLIService 这个错误的原因是由于您的Spark版本与Hive版本不适配,具体来说是Spark版本过高,导致Hive使用的jar包不兼容。解决方法是降低Spark版本或使用Spark程序库的API时使用其兼容的Hive版本。 4. MetaException(message: NoSuchObjectException:database not found) 如果您正在尝试使用Spark-SQL查询Hive数据库,并且收到此错误消息,则表示您正在尝试访问不存在的数据库。 解决方法是创建一个名为该数据库的数据库或检查查询中是否存在语法错误。 5. Spark-SQL执行查询失败 Spark-SQL执行查询失败往往是由于应用程序逻辑或数据源的不足所致。解决方法包括检查您的查询语句是否正确设置,处理空值和异常情况,以及监视应用程序和集群资源以提高性能。 为了避免上述报错,您应该确保在使用Spark-SQL操作Hive之前做好准备工作,包括检查应用程序和数据源的兼容性,设置正确的驱动程序路径,并提供足够的资源来处理您的查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值