技巧:网站SEO优化挖掘关键词的方法有哪些?

优采云 发布时间: 2022-11-18 08:32

  技巧:网站SEO优化挖掘关键词的方法有哪些?

  当我们在百度上搜索任何内容时,您可以在搜索结果页面的底部找到“相关推广”。这部分内容也和你输入的主要关键词相关度很高,也可以给百度关键词推广挖掘提供参考。

  4.百度指数

  使用百度指数,可以找到很多关键词,还可以看到搜索这些关键词的用户来源,帮助企业获取用户。

  5. 研究竞争对手的网站关键词

  

  去看看你的竞争对手 关键词 现有更好的排名,也可以作为 关键词 挖掘参考。

  6.百度百科

  百度百科是挖掘百度关键词的重要方法。上面的收录条目是关键词,可以一个一个使用。可以选择符合自己推广需求的target关键词,然后整合到对应的长尾关键词中。

  7.百度知道

  

  百度知道,虽然它是一个问答平台,但它确实挖掘了关键词的宝贵资源,因为它反映了大多数用户的搜索需求和关注点。进入正题关键词,可以找到与正题关键词相关的对应词、词组、短句等,然后自行选择整合。

  以上就是百恒科技小编分享的在网站SEO优化中挖掘关键词的一些方法,也是小编在日常生活中常用的方法。感谢您阅读。希望能对广大SEO站长有所帮助。如果您想了解更多,欢迎留言咨询百恒科技。南昌互联网公司百恒科技专注于建设南昌网站开发、小程序开发、APP开发、电子商务购物网站开发、物联网开发等互联网服务。

  推荐相关内容: 为什么网站关键词排名不稳定?

  站长是怎么把关键词放到百度下拉的?

  最佳实践:Oracle的SQL Tuning Advisor STA(SQL语句优化工具)

  SQL 调优顾问 STA 是 Oracle10g 中推出的一款 DBA 优化工具,具有简单、智能的特点,DBA 值需要调用函数才能针对性能不佳的语句给出优化结果。让我们来看看它的用途。

  使用 STA 时,请确保优化器处于 CBO 模式。

  首先,使用 STA 优化语句

  问题陈述的采集可以通过 Oracle10g 的另一个自动化工具完成:数据库自动诊断监视工具 (ADDM)。有关其用法,请参阅另一篇文章,文章“Oracle 10g 数据库自动诊断监视工具 (ADDM) 用户指南”。

  让我们简要描述一下如何优化找到的问题陈述。如前所述,STA 使用起来非常简单(只要可以调用存储过程,就可以使用此工具),可以通过三个步骤完成语句调优。

  测试环境创建:

  SQL> 创建表 BIGTAB 作为选择 rownum 作为 “id”, a.* 从 dba_objects a;

  已创建表。

  SQL>创建表小选项卡作为选择行数作为“id”,a.*从dba_tables a;

  已创建表。

  SQL> ALTER TABLE BIGTAB MODIFY (empno NUMBER);

  表已更改。

  SQL>声明

  n 数;

  开始

  对于 N 在 1..100

  圈

  插入到大标签中选择行数作为“ID”,a.*从dba_objects a;

  犯;

  结束循环;

  结束;

  /

  PL/SQL 过程已成功完成。

  这里创建一个大表和一个小表,并且没有索引,下面执行一个查询:

  SQL>设置计时

  SQL> set autot on

  SQL>从大标签 a 中选择 count(*),小标签 b 其中 a.object_name=b.table_name;

  计数(*)

  ----------

  135000已用:00

  :00:05.59

  执行计划

  ----------------------------------------------------------

  计划哈希值:3089226980

  --------------------------------------------------------------------------------

  |同上||操作名称|行|字节|成本(%CPU)|时间|

  --------------------------------------------------------------------------------

  | 0 |选择语句| |1 | 36 |3550 (2)|00:00:43 |

  | 1 |对聚合|进行排序 |1 | 36 | | |

  |*2 |哈希联接| |155K|5462K|3550 (2)|00:00:43 |

  | 3 | 表访问已满|小标签 |1223 |22014 | 11 (0)|00:00:01 |

  | 4 | 表访问已满|大标签 |1205K| 20米|3526 (1)|00:00:43 |

  --------------------------------------------------------------------------------

  谓词信息(由操作 ID 标识):

  ---------------------------------------------------

  2 - 访问(“A”.”OBJECT_NAME“=”B“。”TABLE_NAME”)

  统计学

  ----------------------------------------------------------

  0递归调用

  0db 块获取

  16013一致获取

  14491物理读取

  0重做大小

  412字节通过SQL*Net发送到客户端

  通过 SQL*Net 从客户端接收 385 字节

  2SQL*往返客户端的净往返

  0 排序(内存)

  0 排序(磁盘)

  1已处理行

  可以看出,该语句的执行性能很差:16013 一致 gets。

  步骤 1:创建并执行优化任务

  通过调用存储过程EXECUTE_TUNING_TASK执行的函数CREATE_TUNING_TASK来创建优化任务:

  SQL> set autot off

  SQL>设置定时关闭

  SQL>声明

  2 my_task_name 瓦尔查尔2(30);

  3 my_sqltext CLOB;

  4开始

  5 my_sqltext := '从大标签 A 中选择计数(*),小标签 B 其中 a.object_name=b.table_name';

  6 my_task_name := DBMS_SQLTUNE。CREATE_TUNING_TASK(

  7 sql_text => my_sqltext,

  8 user_name => '演示',

  9 范围 => “全面”,

  10 time_limit=> 60,

  11 task_name => 'tuning_sql_test',

  12 描述 => “调整指定表上的查询的任务”);

  13

  14 DBMS_SQLTUNE。EXECUTE_TUNING_TASK( task_name => 'tuning_sql_test');

  15完;

  16/

  PL/SQL 过程已成功完成。

  在函数CREATE_TUNING_TASK中,sql_text是需要优化的语句,user_name是语句通过哪个用户执行的,范围是优化范围(有限或全面),time_limit优化过程的时间限制,task_name优化任务名称,描述优化任务描述。

  您可以通过视图USER_ADVISOR_LOG和USER_ADVISOR_LOG查看已创建的优化任务。

  SQL>从USER_ADVISOR_LOG中选择task_name,状态,其中task_name='tuning_sql_

  测试';

  TASK_NAME状态

  ------------------------------ -----------

  tuning_sql_test已完成

  步骤 2:查看优化结果

  可以通过函数查看优化结果。

  SQL>设置长10000

  SQL>设置长块大小1000

  SQL>设置行大小100

  SQL>选择“DBMS_SQLTUNE”。REPORT_TUNING_TASK( 'tuning_sql_test') 来自 DUAL;

  DBMS_SQLTUNE。REPORT_TUNING_TASK(“TUNING_SQL_TEST”)

  ----------------------------------------------------------------------------------------------------

  一般信息部分

  -------------------------------------------------------------------------------

  调优任务名称:tuning_sql_test

  调优任务负责人 : 演示

  范围 : 综合

  时限(秒) : 60

  完成状态 : 已完成

  开始于 : 11/30/2005 13:16:43

  完成于 : 11/30/2005 13:16:44

  发现指数数量 : 1

  架构名称:演示

  SQL ID : 6p64dnnsqf9pm

  SQL 文本:从大标签 a 中选择计数(*),其中小标签 b

  a.object_name=b.table_name

  -------------------------------------------------------------------------------

  调查结果部分(1项)

  -------------------------------------------------------------------------------

  1-索引查找(请参阅下面的解释计划部分)

  可以通过创建一个或多个来改进此语句的执行计划

  指标。

  建议(估计获益:100%)

  ----------------------------------------

  - 考虑运行访问顾问以改进物理架构设计

  或创建建议的索引。

  创建索引演示。IDX$$_06C50001 演示。SMALLTAB('TABLE_NAME');

  - 考虑运行访问顾问以改进物理架构设计

  或创建建议的索引。

  创建索引演示。IDX$$_06C50002 演示版。BIGTAB('OBJECT_NAME');

  理由

  ---------

  创建推荐的索引可显著改进执行计划

  的声明。但是,最好运行“访问顾问”

  使用代表性的 SQL 工作负载,而不是单个语句。这

  将允许获得全面的指数建议,其中包括

  帐户索引维护开销和额外空间消耗。

  “解释计划”部分

  -------------------------------------------------------------------------------

  1-原装

  -----------

  计划哈希值:3089226980

  --------------------------------------------------------------------------------

  |同上||操作名称|行|字节|成本(%CPU)|时间|

  --------------------------------------------------------------------------------

  | 0 |选择语句| |1 | 36 |3550 (2)|00:00:43 |

  | 1 |对聚合|进行排序 |1 | 36 | | |

  |*2 |哈希联接| |155K|5462K|3550 (2)|00:00:43 |

  | 3 | 表访问已满|小标签 |1223 |22014 | 11 (0)|00:00:01 |

  | 4 | 表访问已满|大标签 |1205K| 20米|3526 (1)|00:00:43 |

  --------------------------------------------------------------------------------

  谓词信息(由操作 ID 标识):

  ---------------------------------------------------

  2 - 访问(“A”.”OBJECT_NAME“=”B“。”TABLE_NAME”)

  2-使用新指数

  --------------------

  计划哈希值:494801882

  -----------------------------------------------------------------------------------------

  |同上||操作名称|行|字节|成本(%CPU)|时间|

  -----------------------------------------------------------------------------------------

  | 0 |选择语句| |1 | 36 |1108 (3)|00:00:14 |

  | 1 |对聚合|进行排序 |1 | 36 | | |

  |*2 |哈希联接| |155K|5462K|1108 (3)|00:00:14 |

  | 3 | 索引快速完全扫描|IDX$_06C50001 |1223 |22014 |3 (0)|00:00:01 |

  | 4 | 索引快速完全扫描|IDX$_06C50002 |1205K| 20米|1093 (2)|00:00:14 |

  -----------------------------------------------------------------------------------------

  谓词信息(由操作 ID 标识):

  ---------------------------------------------------

  2 - 访问(“A”.”OBJECT_NAME“=”B“。”TABLE_NAME”)

  -------------------------------------------------------------------------------

  看看这个优化报告:

  第一部分是这个优化任务的基本信息:比如任务名称、执行时间、作用域、涉及的语句等。

  第二部分是关于在此优化任务中发现的问题以及给出的优化建议。前面已经描述了这个问题:可以通过构建更多的引文来提高性能;然后是建议的具体内容:在表小标签的字段table_name上创建索引,在表大表的字段object_name上创建索引;最后,还有相关说明:虽然本次优化给出了创建索引的建议,但最好结合整个数据库的工作负载,对 SQL Access Advisor SAA 进行深入分析,这样才能给出考虑索引维护、空间消耗等因素的更合理的建议。

  最后,报表还给出了原创查询计划以及使用优化建议后的查询计划对比。可以看出,成本值大幅下降。

  第 3 步:按照优化建议进行优化

  首先要注意的是,最好不要直接根据优化器给出的建议进行优化。因为索引等操作不会影响此语句。第二个是 SQL 配置文件可用于优化语句或某些会话(下一章将介绍如何使用 SQL 配置文件)。我们只是在这里验证优化建议的有效性。

  根据建议,创建两个索引:

  SQL> 在 smalltab(table_name) 上创建索引smalltab_idx1;

  已创建索引。

  SQL> 在 bigtab(object_name) 上创建索引bigtab_idx1;

  已创建索引。

  SQL>分析表小标签计算统计;

  表分析。

  SQL>分析表大表计算统计信息;

  表分析。

  SQL>设置计时

  SQL> set autot on

  SQL>从大标签 a 中选择 count(*),小标签 b 其中 a.object_name=b.table_name;

  计数(*)

  ----------

  135000已用:00

  :00:01.09

  执行计划

  ----------------------------------------------------------

  计划哈希值:2594317117

  ----------------------------------------------------------------------------------------

  

  |同上||操作名称|行|字节|成本(%CPU)|时间|

  ----------------------------------------------------------------------------------------

  | 0 |选择语句| |1 | 36|1119(3)|00:00:14 |

  | 1 |对聚合|进行排序 |1 | 36 | | |

  |*2 |哈希联接| |155K|5463K|1119 (3)|00:00:14 |

  | 3 | 索引快速完全扫描|SMALLTAB_IDX1 |1223 |22014 |3 (0)|00:00:01 |

  | 4 | 索引快速完全扫描|BIGTAB_IDX1 |1205K| 20米|1104 (2)|00:00:14 |

  ----------------------------------------------------------------------------------------

  谓词信息(由操作 ID 标识):

  ---------------------------------------------------

  2 - 访问(“A”.”OBJECT_NAME“=”B“。”TABLE_NAME”)

  统计学

  ----------------------------------------------------------

  332递归调用

  0db 块获取

  4999一致获取

  1物理读取

  0重做大小

  412字节通过SQL*Net发送到客户端

  通过 SQL*Net 从客户端接收 385 字节

  2SQL*往返客户端的净往返

  12种(内存)

  0 排序(磁盘)

  1已处理行

  可以看出,一致性 get 比优化前要低得多,优化建议确实提高了性能。

  Oracle 10g 让优化变得如此简单。

  其次,使用 SQL 配置文件存储优化策略

  使用 STA 优化语句后,

  STA对语句进行分析,采用最优优化策略,给出优化的查询方案。您可以根据 STA 给出的建议重写语句。但是,在某些情况下,您可能无法重写语句(例如,在语句位于包中的生产环境中)。此时可以使用 SQL 配置文件将优化策略存储在配置文件中,Oracle 在构建此语句的查询计划时不会使用现有的相关统计信息,而是使用配置文件策略生成新的查询计划。

  第一部分:配置文件的使用

  SQL 配置文件对以下类型语句有效:

  选择语句;

  更新声明;

  插入语句(仅在使用 SELECT 子句时有效);

  删除语句;

  CREATE 语句(仅在使用 SELECT 子句时有效);

  合并语句(仅作为更新和插入操作有效)。

  此外,使用 SQL 配置文件必须具有系统权限,例如创建任何 SQL 配置文件、删除任何 SQL 配置文件和更改任何 SQL 配置文件。

  我们举个例子:

  步骤 1:向用户分配权限

  SQL> conn sys/sys as sysdba

  连接。

  SQL>授予创建任何SQL配置文件进行演示;

  格兰特成功了。

  SQL>授予删除任何SQL配置文件到演示;

  格兰特成功了。

  SQL>授予更改任何SQL配置文件以进行演示;

  格兰特成功了。

  SQL> conn demo/demo

  连接。

  SQL> 在 smalltab(table_name) 上创建索引smalltab_idx1;

  已创建索引。

  SQL>分析表小标签计算统计;

  表分析。

  SQL> set autot on

  SQL>从小选项卡中选择 /*+no_index(smalltab smalltab_idx1)*/count(*),其中

  ble_name = 'TAB$';

  计数(*)

  ----------

  1

  执行计划

  ----------------------------------------------------------

  计划哈希值:2298554444

  -------------------------------------------------------------------------------

  |同上||操作名称|行|字节|成本(%CPU)|时间|

  -------------------------------------------------------------------------------

  | 0 |选择语句| |1 | 18 | 11 (0)|00:00:01 |

  | 1 |对聚合|进行排序 |1 | 18 | | |

  |*2 |表访问已满|小标签|1 | 18 | 11 (0)|00:00:01 |

  -------------------------------------------------------------------------------

  第二步是创建并执行优化任务

  SQL>声明

  2 my_task_name 瓦尔查尔2(30);

  3 my_sqltext CLOB;

  4开始

  5 my_sqltext := '选择 /*+no_index(小标签 smalltab_idx1)*/计数(*) 从

  小选项卡,其中table_name = “TAB$”;

  6 my_task_name := DBMS_SQLTUNE。CREATE_TUNING_TASK(

  7 sql_text => my_sqltext,

  8 user_name => '演示',

  9 范围 => “全面”,

  10 time_limit=> 60,

  11 task_name => 'sql_profile_test',

  12 描述 => “调整指定表上的查询的任务”);

  13

  14 DBMS_SQLTUNE。EXECUTE_TUNING_TASK( task_name => 'sql_profile_test');

  15完;

  16/

  PL/SQL 过程已成功完成。

  第 3 步:查看优化建议

  SQL> set autot off

  SQL>设置长10000

  SQL>设置长块大小1000

  SQL>设置行大小100

  SQL>选择“DBMS_SQLTUNE”。REPORT_TUNING_TASK( 'sql_profile_test') 来自 DUAL;

  DBMS_SQLTUNE。REPORT_TUNING_TASK(“SQL_PROFILE_TEST”)

  ----------------------------------------------------------------------------------------------------

  一般信息部分

  -------------------------------------------------------------------------------

  调优任务名称:sql_profile_test

  调优任务负责人 : 演示

  范围 : 综合

  时限(秒) : 60

  完成状态 : 已完成

  开始于 : 11/29/2005 14:52:09

  完成于 : 11/29/2005 14:52:09

  SQL 概要文件结果数 : 1

  DBMS_SQLTUNE。REPORT_TUNING_TASK(“SQL_PROFILE_TEST”)

  -------------------------------------------------------------------------------------------

  ----------------------------------------------------------------------------------------

  架构名称:演示

  SQL ID : 3kta54ycuqccb

  SQL 文本:从中选择 /*+no_index(小选项卡 smalltab_idx1)*/计数(*)

  小选项卡,其中table_name = 'TAB$'

  -------------------------------------------------------------------------------

  调查结果部分(1项)

  -------------------------------------------------------------------------------

  1-SQL配置文件查找(请参阅下面的解释计划部分)

  DBMS_SQLTUNE。REPORT_TUNING_TASK(“SQL_PROFILE_TEST”)

  --------------------------------------------------------------------------------

  ---------------------------------------------------------------------------

  为此语句找到了可能更好的执行计划。

  建议(估计收益:90.94%)

  ------------------------------------------

  - 考虑接受建议的 SQL 配置文件。

  execute dbms_sqltune.accept_sql_profile(task_name => 'sql_profile_test',

  替换 => 真);

  -------------------------------------------------------------------------------

  “解释计划”部分

  DBMS_SQLTUNE。REPORT_TUNING_TASK(“SQL_PROFILE_TEST”)

  --------------------------------------------------------------------------------

  ---------------------------------------------------------------------------------------------------

  1-原件,调整后成本

  ------------------------------

  计划哈希值:2298554444

  -------------------------------------------------------------------------------

  |同上||操作名称|行|字节|成本(%CPU)|时间|

  -------------------------------------------------------------------------------

  | 0 |选择语句| |1 | 18 | 11 (0)|00:00:01 |

  | 1 |对聚合|进行排序 |1 | 18 | | |

  DBMS_SQLTUNE。REPORT_TUNING_TASK(“SQL_PROFILE_TEST”)

  ----------------------------------------------------------------------------------------------------

  |*2 |表访问已满|小标签|1 | 18 | 11 (0)|00:00:01 |

  -------------------------------------------------------------------------------

  谓词信息(由操作 ID 标识):

  ---------------------------------------------------

  2 - 过滤器(“TABLE_NAME”='TAB$')

  2-使用SQL配置文件

  --------------------

  计划哈希值:2664476518

  DBMS_SQLTUNE。REPORT_TUNING_TASK(“SQL_PROFILE_TEST”)

  ----------------------------------------------------------------------------------------------------

  ----------------------------------------------------------------------------------

  |同上||操作名称|行|字节|成本(%CPU)|时间

  |

  -----------------------------------------------------------------------------------

  | 0 |选择“语句| |1 | 18 |1 (0)|00:00:01 |

  | 1 |对聚合|进行排序 |1 | 18 | ||

  |*2 |索引范围扫描|SMALLTAB_IDX1 |1 | 18 |1 (0)|00:00:01 |

  -----------------------------------------------------------------------------------

  谓词信息(由操作 ID 标识):

  ---------------------------------------------------

  DBMS_SQLTUNE。REPORT_TUNING_TASK(“SQL_PROFILE_TEST”)

  ----------------------------------------------------------------------------------------------------

  2 - 访问(“TABLE_NAME”='TAB$')

  -------------------------------------------------------------------------------

  在这里,您可以看到优化建议中给出了新的查询计划。现在,我们决定接受这个建议,而不是重写声明。

  第 3 步:接受配置文件

  SQL>声明

  2 my_sqlprofile_name 瓦尔查尔2(30);

  3开始

  4 my_sqlprofile_name := DBMS_SQLTUNE。ACCEPT_SQL_PROFILE (

  5 task_name => 'sql_profile_test',

  6 名称 => 'my_sql_profile');

  7完;

  8/

  PL/SQL 过程已成功完成。

  这里使用了包DBMS_SQLTUNE的另一个函数:ACCEPT_SQL_PROFILE。其中,参数task_name我们创建的优化推荐任务的名称,name 是配置文件的名称,可以是任意法定名称。此外,这个函数还有一些其他的功能,这里是这个函数的原型:

  DBMS_SQLTUNE。ACCEPT_SQL_PROFILE (

  task_name 因瓦尔查尔2,

  object_id 数字 := 空,

  名称 INVARCHAR2 := 空,

  描述INVARCHAR2 := NULL,

  类别 INVARCHAR2 := 空;

  task_owner 在 VARCHAR2:= 空,

  替换布尔值 := 假,

  force_matchIN布尔值:= 假)

  返回瓦尔查尔2;描述

  是配置文件的描述; task_owner是优化建议任务的所有者;当 REPLACE 为 TRUE 时,如果配置文件已存在,请替换该配置文件;当force_match为 TURE 时,表示强制匹配语句,即强制绑定变量,类似于系统参数 cursor_sharing 设置为 FORCE 时,FALSE 时类似于将cursor_sharing设置为 EXACT,即 它完全匹配。

  这里特别值得一提的是类别参数,您可以设置该参数以指定特定会话的配置文件。在 10g 中,每个会话都有一个新参数SQLTUNE_CATEGORY,他的默认值为 DEFAULT。当我们调用这个函数时,如果我们不指定这个参数,它的值也是默认的,如果我们为此配置文件指定一个不同的 CATEGORY 值,比如FOR_TUNING,那么这个 porfile 只会在会话参数 SQLTUNE_CATEGORY 也是FOR_TUNING时才使用。为什么此参数有用?想象一下这样一个环境,你使用 STA 在生产系统上调整一个语句,STA 给出了优化建议,但你不敢急于实现它给出的建议(毕竟它只是一台机器,你不能完全信任它),你可以创建一个带有特殊 CATEGORY 的配置文件,然后在你自己的会话中为这个特殊的 CATEGORY 开发SQLTUNE_CATEGORY。然后,您可以在不影响生产环境的情况下看到优化建议的实际效果。

  

  您还可以查看通过视图DBA_SQL_PROFILES创建的配置文件。

  步骤 4:检查配置文件的效果

  SQL>从小选项卡中选择 /*+no_index(smalltab smalltab_idx1)*/count(*),其中

  ble_name = 'TAB$';

  计数(*)

  ----------

  1

  执行计划

  ----------------------------------------------------------

  计划哈希值:2664476518

  -----------------------------------------------------------------------------------

  |同上||操作名称|行|字节|成本(%CPU)|时间|

  -----------------------------------------------------------------------------------

  | 0 |选择“语句| |1 | 18 |1 (0)|00:00:01 |

  | 1 |对聚合|进行排序 |1 | 18 | ||

  |*2 |索引范围扫描|SMALLTAB_IDX1 |1 | 18 |1 (0)|00:00:01 |

  -----------------------------------------------------------------------------------

  谓词信息(由操作 ID 标识):

  ---------------------------------------------------

  2 - 访问(“TABLE_NAME”='TAB$')

  注意

  -----

  - 用于此语句的 SQL 配置文件“my_sql_profile”

  如您所见,该语句获取配置文件中的数据并创建新的查询计划。并且查询计划中还有一些附加信息,表明此语句使用“my_sql_profile”的配置文件,而不是根据对象的统计信息生成查询计划。

  第二部分:配置文件的控制

  配置文件的控制相对简单:修改和删除。包DBMS_SQLTUNE提供了两个存储过程来完成这两个过程:ALTER_SQL_PROFILE 和 DROP_SQL_PROFILE。

  开始

  DBMS_SQLTUNE。DROP_SQL_PROFILE(名称 => 'my_sql_profile');

  结束;

  /

  1.配置文件的修改

  ALTER_SQL_PROFILE的原型是:

  DBMS_SQLTUNE。ALTER_SQL_PROFILE (

  名称 INVARCHAR2,

  attribute_name 因瓦尔查尔2,

  值 INVARCHAR2);

  其中,name 是配置文件的名称;attribute_name是需要修改的属性的名称;value 是修改后的值。例如,如果需要使“my_sql_profile”失效,可以将“状态”属性更改为“已禁用”:

  SQL>开始

  2 DBMS_SQLTUNE。ALTER_SQL_PROFILE(

  3 名称 => 'my_sql_profile',

  4 attribute_name=> “状态”,

  5 值 => “禁用”);

  6完;

  7/

  PL/SQL 过程已成功完成。

  SQL>

  SQL> set autot on exp

  SQL>从小选项卡中选择 /*+no_index(smalltab smalltab_idx1)*/count(*),其中

  ble_name = 'TAB$';

  计数(*)

  ----------

  1

  执行计划

  ----------------------------------------------------------

  计划哈希值:2298554444

  -------------------------------------------------------------------------------

  |同上||操作名称|行|字节|成本(%CPU)|时间|

  -------------------------------------------------------------------------------

  | 0 |选择语句| |1 | 18 | 11 (0)|00:00:01 |

  | 1 |对聚合|进行排序 |1 | 18 | | |

  |*2 |表访问已满|小标签|1 | 18 | 11 (0)|00:00:01 |

  -------------------------------------------------------------------------------

  谓词信息(由操作 ID 标识):

  ---------------------------------------------------

  2 - 过滤器(“TABLE_NAME”='TAB$')

  2. 删除配置文件

  DROP_SQL_PROFILE的原型是:

  DBMS_SQLTUNE。DROP_SQL_PROFILE (

  名称 INVARCHAR2,

  忽略 INBOOLEAN:= FALSE);

  其中,name 是配置文件的名称,当忽略为 TRUE 时,当指定的配置文件不存在时,不会报告任何错误。

  3. 检查语句是否已经有对应的配置文件

  当然,我们也想确认某个语句是否已经形成了配置文件,看看是否需要对其进行调整。此时,您可以利用SQLTEXT_TO_SIGNATURE功能:

  SQL>将服务器输出设置为打开

  SQL>声明

  2 v_signature号码;

  3开始

  4 v_signature:=DBMS_SQLTUNE。SQLTEXT_TO_SIGNATURE (

  5 sql_text => '选择 /*+no_index(smalltab smalltab_idx1)*/count(*) 从 smalltab 中 table_name = ''TAB$''',

  6 force_match => 假);

  7 如果v_signature为空,则

  8 DBMS_OUTPUT.put_line('profile中没有这样的sql文本');

  其他 9 个

  10 DBMS_OUTPUT.put_line('sql text is in profile');

  11 结束如果;

  12结束;

  13/

  sql 文本在配置文件中

  PL/SQL 过程已成功完成。

  其中,sql_text是需要检测的内容;force_match的解释与ACCEPT_SQL_PROFILE中的相应参数相同。

  第 3 部分:转储和移植配置文件在某些环境中,例如生产环境的安全要求非常高,不可能直接优化生产环境,

  只能在与生产环境一致的镜像环境中进行优化,那么如果要将优化结果实现到生产环境中,该怎么办?DBMS_SQLTUNE包提供了几个附加函数,用于将数据从配置文件导出到表,然后可以将其移植到其他环境,下面介绍了如何使用它们。

  步骤一:创建存储表

  首先使用存储过程创建一个存储配置文件的表:

  SQL>开始

  2DBMS_SQLTUNE。CREATE_STGTAB_SQLPROF (

  3 table_name => 'PROFILE_STGTAB',

  4 schema_name => “演示”,

  5 tablespace_name => '埃德加德莫');

  6完;

  7/

  PL/SQL 过程已成功完成。

  SQL> desc PROFILE_STGTAB

  名称为空? 类型

  ----------------------------------------------------- -------- ----------------

  --------------------

  PROFILE_NAME 瓦尔查尔2(30)

  类别 瓦尔查尔2(30)

  签名号码

  SQL_TEXT 克洛布

  描述 瓦尔查2(500)

  瓦尔查尔2型(9)

  状态瓦尔查尔2(8)

  BOOLEAN_FLAGS编号

  属性SQLPROF_ATTR

  版本号

  备用1 CLOB

  Spaare2 BLOB

  Table_name 是要创建的存储表的名称,schema_name它所属的模式的名称tablespace_name它所属的表空间。

  此外,请务必注意,此存储过程实际上确实会创建表操作,即 DDL 操作,因此不要在事务中调用它。使用此存储过程需要“创建任何表”权限。

  步骤 2:将配置文件中的数据存储在存储表中

  使用存储过程将数据存储在刚刚创建的存储表中的配置文件中:

  SQL>开始

  2DBMS_SQLTUNE。PACK_STGTAB_SQLPROF (

  3 profile_name => '%',

  4 profile_category => “默认”,

  5 staging_table_name => 'PROFILE_STGTAB',

  6 staging_schema_owner=> '演示');

  7完;

  8/

  PL/SQL 过程已成功完成。

  SQL>设置长10000

  SQL>设置长块大小1000

  SQL>设置行大小100

  SQL>从PROFILE_STGTAB中选择profile_name、类别sql_text;

  PROFILE_NAME类别SQL_TEXT

  ------------------------------ ---------------------------------------------------------------------------------------

  my_sql_profile默认选择 /*+no_index(小标签 smalltab_idx1)*/计数(*)

  frommalltab,其中table_name = 'TAB$'

  profile_name是

  需要存储的配置文件的名称(区分大小写),默认为“%”,即此 CATEGORY 下的所有配置文件;profile_category 是需要存储配置文件的类别的名称(区分大小写),默认值为 DEFAULT;staging_table_name 是用于存储配置文件数据的表的名称(区分大小写);staging_schema_owner表所属的架构。调用此函数需要对存储表具有“创建任何 SQL 配置文件系统”权限和“选择”权限。

  需要注意的一点是:如果调用此存储过程,将执行 COMMIT,因此请注意对上一个事务的影响。

  此外,还可以通过存储过程修改存储表中的信息:

  SQL>开始

  2DBMS_SQLTUNE。REMAP_STGTAB_SQLPROF (

  3 old_profile_name => 'my_sql_profile',

  4 new_profile_name => 'new_sql_profile',

  5 new_profile_category=> 'DEV',

  6 staging_table_name => 'PROFILE_STGTAB',

  7 staging_schema_owner=> “演示”);

  8完;

  9/

  PL/SQL 过程已成功完成。

  Old_profile_name是存储在存储表中需要修改的配置文件的名称(区分大小写);new_profile_name是需要修改的新名称,默认值为 NULL,并且不修改名称;new_profile_category是需要修改为的新目录名称, 默认情况下为 NULL,不会修改;staging_table_name是需要修改的存储表的名称(区分大小写);staging_schema_owner是存储表所属的架构。

  当然,调用此函数需要对存储表具有 UPDATE 权限。

  步骤 3:从存储表中导入配置文件数据

  将配置文件中的数据导入存储

  表,我们可以将存储表中的数据导入到其他数据库中:

  SQL>创建表 STGTAB 作为选择 * 从 [url=mailto

  ROFILE_STGTAB@EDGAR]PROFILE_STGTAB@EDGAR[/网址];

  已创建表。

  然后将数据导出为配置文件:

  SQL>开始

  2DBMS_SQLTUNE。UNPACK_STGTAB_SQLPROF (

  3 profile_name => 'new_sql_profile',

  4 profile_category => 'DEV',

  5 替换 => 假,

  6 staging_table_name => 'STGTAB',

  7 staging_schema_owner=> “演示”);

  8完;

  9/

  PL/SQL 过程已成功完成。

  SQL>从DBA_SQL_PROFILES中选择名称、类别sql_text

  阿拉伯数字;

  名称类别SQL_TEXT

  ------------------------------ ------------------------------ ----------------------------------------------------

  new_sql_profile DEV 选择 /*+no_index(小标签 smalltab_idx1)*/计数(*)

  从小标签,其中 table_name = 'TAB$'

  如您所见,配置文件已成功导入。调用此存储过程需要“创建任何 SQL 配置文件系统”权限。参数的含义与上一个函数中的含义相同。

  补充:删除存储表中的数据和删除存储表。

  事实上,删除存储表

  数据和存储表的删除与普通表相同,可以使用 DELETE 和 DROP:

  SQL>从STGTAB中删除;

  删除了 1 行。

  SQL> drop table STGTAB;

  表掉落。

  三、小结

  正如文章开头提到的,这个工具让语句调优变得非常简单,DBA 可以在最短的时间内、以最好的方式给出优化建议,并且有最安全的方式来调试优化结果。

  此外,STA 还有一组工具,它们对于在数据仓库环境中进行调试非常有用:SQL 优化集。我们将在以后文章的另一篇文章中介绍它。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线