Anatomia de um perfil de otimização
Um perfil de otimização pode conter diretrizes de otimização global, e pode conter diretrizes de otimização específicas que se aplicam a instruções individuais do DML em um pacote. Diretrizes de otimização global aplicam-se a todas as instruções de linguagem de manipulação de dados (DML) que são executadas enquanto o perfil está em vigor.
- Você poderia gravar uma orientação de otimização global solicitando que o otimizador se referisse às tabelas de consulta materializada (MQTs) Test.SumSales e Test.AvgSales sempre que uma instrução fosse processada enquanto o perfil de otimização atual estava ativo.
- Você poderia escrever uma diretriz de otimização de nível de instrução solicitando que o otimizador utilize o índice I_SUPPKEY para acessar a tabela FORNECEDORES sempre que o otimizador encontrar a instrução especificada.
- A seção de diretrizes de otimização global pode conter um elemento OPTGUIDELINES
- A seção de perfis de instrução que pode conter qualquer número de elementos STMTPROFILE
<?xml version="1.0" encoding="UTF-8"?>
<OPTPROFILE>
<!--
Global optimization guidelines section.
Optional but at most one.
-->
<OPTGUIDELINES>
<MQT NAME="Test.AvgSales"/>
<MQT NAME="Test.SumSales"/>
</OPTGUIDELINES>
<!--
Statement profile section.
Zero or more.
-->
<STMTPROFILE ID="Guidelines for SAMP Q9">
<STMTKEY SCHEMA="SAMP">
<![CDATA[SELECT S.S_NAME, S.S_ADDRESS, S.S_PHONE,
S.S_COMMENT FROM PARTS P, SUPPLIERS S, PARTSUPP PS
WHERE P_PARTKEY = PS.PS_PARTKEY AND S.S_SUPPKEY = PS.PS_SUPPKEY
AND P.P_SIZE = 39 AND P.P_TYPE = 'BRASS'
AND S.S_NATION = 'MOROCCO' AND S.S_NATION IN ('MOROCCO', 'SPAIN')
AND PS.PS_SUPPLYCOST = (SELECT MIN(PS1.PS_SUPPLYCOST)
FROM PARTSUPP PS1, SUPPLIERS S1
WHERE P.P_PARTKEY = PS1.PS_PARTKEY AND S1.S_SUPPKEY = PS1.PS_SUPPKEY
AND S1.S_NATION = S.S_NATION)]]>
</STMTKEY>
<OPTGUIDELINES>
<IXSCAN TABID="Q1" INDEX="I_SUPPKEY"/>
</OPTGUIDELINES>
</STMTPROFILE>
</OPTPROFILE>O elemento OPTPROFILE
Um perfil de otimização começa com o elemento OPTPROFILE. No exemplo anterior, esse elemento consiste em um atributo VERSION que especifica que a versão do perfil de otimização é 9.1
A seção de diretrizes de otimização global
Diretrizes de otimização global aplicam-se a todas as instruções para as quais o perfil de otimização está em vigor. A seção de diretrizes de otimização global é definida no elemento OPTGUIDELINES global. No exemplo anterior, esta seção contém uma única diretriz de otimização global informando ao otimizador para considerar os MQTs Test.AvgSales e Test.SumSales ao processar quaisquer instruções para as quais o perfil de otimização está em vigor
A seção de perfil de instrução
Um perfil de instrução define diretrizes de otimização que se aplicam a uma instrução específica. Pode haver zero ou mais perfis de instrução em um perfil de otimização. A seção de perfil de instrução é definida no elemento STMTPROFILE. No exemplo anterior, esta seção contém diretrizes para uma instrução específica para a qual o perfil de otimização está em vigor.
- A chave de instrução identifica a instrução a que se aplicam as diretrizes de otimização de nível de instrução. No exemplo, o elemento STMTKEY contém o texto de instrução original e outras informações necessárias para identificar inequivocamente a instrução. Usando a tecla de instrução, o otimizador corresponde a um perfil de instrução com a instrução apropriada. Esse relacionamento possibilita fornecer diretrizes de otimização para uma instrução sem ter que modificar o aplicativo.
- A seção de diretrizes de otimização de nível de instrução do perfil de instrução é representada pelo elemento OPTGUIDELINES. Esta seção é composta por um ou mais pedidos de acesso ou de junção, que especificam métodos para acessar ou unir tabelas no enunciado. Após uma correspondência bem-sucedida com a chave de instrução em um perfil de instrução, o otimizador refere-se às diretrizes de otimização de nível de instrução associadas ao otimizar a instrução. O exemplo contém uma solicitação de acesso, que especifica que a tabela FORNECEDORES referenciada na subselect nested use um índice denominado I_SUPPKEY.
Elementos comuns a ambas as diretrizes de otimização global e seções de perfil de instrução
- O elemento REGISTRO pode configurar certas variáveis de registro em nível de instrução ou nível global. O elemento REGISTRO está aninhado no elemento OPTGUIDELINES.
O elemento REGISTRO contém um elemento OPTION. O elemento OPTION possui atributos NOME e VALOR que são utilizados para configurar o valor da variável de registro nomeado.
Se você especificar um valor para uma variável de registro em nível global, esse valor aplica-se a todas as instruções na conexão em que o perfil é aplicado. Se você especificar um valor para uma variável de registro no nível de instrução, esse valor aplica-se somente a essa instrução dentro do STMTKEY. Esse valor no nível de instrução tem precedência sobre o valor em nível global.
- O elemento STMTMATCH define o tipo de correspondência utilizado quando a instrução compilada é corresponsável às instruções no perfil de otimização.
O elemento STMTMATCH possui um atributo EXACT que pode ser configurado como TRUE ou FALSE. O valor padrão de STMTMATCH EXATO é TRUE.
Se STMTMATCH EXATO for configurado para TRUE, correspondência exata será aplicada. Se STMTMATCH EXATO for configurado como FALSE, correspondência inexata é aplicada.