Coleta de estatisticas

Dúvidas, dicas e atualizações sobre o Treinamento Oracle Performance Diagnostics & Tuning.
gcomenale

Re: Coleta de estatisticas

Post by gcomenale » Tue Mar 15, 2016 7:45 am

Portilho, olha o que eu encontrei na DBA_OPTSTAT_OPERATIONS:


Code: Select all

SQL> select OPERATION, TARGET, START_TIME, END_TIME, STATUS, JOB_NAME from DBA_OPTSTAT_OPERATIONS order by START_TIME;

OPERATION                      TARGET               START_TIME                            END_TIME                              STATUS     JOB_NAME
------------------------------ -------------------- ------------------------------------- ------------------------------------- ---------- -------------------------
gather_table_stats             SYS.AUD$             22-FEB-16 04.30.58.386567 PM -03:00   22-FEB-16 04.30.59.058941 PM -03:00   COMPLETED
gather_table_stats             SYS.FGA_LOG$         22-FEB-16 04.32.31.285252 PM -03:00   22-FEB-16 04.32.31.751287 PM -03:00   COMPLETED
gather_table_stats             SYS.AUD$             22-FEB-16 04.34.09.899513 PM -03:00   22-FEB-16 04.34.10.297622 PM -03:00   COMPLETED
gather_table_stats             SYS.FGA_LOG$         22-FEB-16 04.34.10.477934 PM -03:00   22-FEB-16 04.34.10.701758 PM -03:00   COMPLETED
gather_table_stats             SYS.AUD$             22-FEB-16 04.34.47.203916 PM -03:00   22-FEB-16 04.34.47.439824 PM -03:00   COMPLETED
gather_table_stats             SYS.FGA_LOG$         22-FEB-16 04.34.47.460064 PM -03:00   22-FEB-16 04.34.47.508919 PM -03:00   COMPLETED
gather_database_stats (auto)   AUTO                 28-FEB-16 09.03.30.267615 AM -03:00   28-FEB-16 09.04.41.021895 AM -03:00   COMPLETED  ORA$AT_OS_OPT_SY_161
purge_stats                                         28-FEB-16 09.04.41.022211 AM -03:00   28-FEB-16 09.04.41.396842 AM -03:00   COMPLETED  ORA$AT_OS_OPT_SY_161
purge_stats                                         28-FEB-16 09.04.41.397056 AM -03:00   28-FEB-16 09.04.41.871230 AM -03:00   COMPLETED  ORA$AT_OS_OPT_SY_161
gather_table_stats             EODA.BIG_TABLE       07-MAR-16 08.40.28.023554 AM -03:00   07-MAR-16 08.40.28.740909 AM -03:00   COMPLETED
gather_table_stats             SYS.T5               14-MAR-16 09.36.58.110560 AM -03:00   14-MAR-16 09.37.01.942305 AM -03:00   COMPLETED



Code: Select all

SQL> select notes from DBA_OPTSTAT_OPERATIONS where target ='AUTO';

NOTES
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<params><param name="block_sample" val="FALSE"/><param name="cascade" val="NULL"/><param name="concurrent" val="FALSE"/><param name="degree" val="DEFAULT_DEGREE_VALUE"/><param name="estimate_percent"
val="DEFAULT_ESTIMATE_PERCENT"/><param name="granularity" val="DEFAULT_GRANULARITY"/><param name="method_opt" val="DEFAULT_METHOD_OPT"/><param name="no_invalidate" val="DBMS_STATS.AUTO_INVALIDATE"/><p
aram name="reporting_mode" val="FALSE"/><param name="stattype" val="DATA"/></params>


Será que seria esse o job default das estatísticas? :)

portilho
Site Admin
Posts: 482
Joined: Wed May 29, 2013 8:51 am

Re: Coleta de estatisticas

Post by portilho » Tue Mar 15, 2016 3:35 pm

Desculpe, não tinha visto que tinha uma página 2 neste tópico, e coloquei um :-D para marcar como que eu respondi por último.
Parece sim ser o registro das operações automáticas de manutenção.

gcomenale

Re: Coleta de estatisticas

Post by gcomenale » Thu Mar 17, 2016 7:11 am

Quando coletar as estatísticas?

Na documentação temos a seguinte afirmação:


13.3.3 When to Gather Statistics

"When gathering statistics manually, you not only need to determine how to gather statistics, but also when and how often to gather new statistics.

For an application in which tables are incrementally modified, you may only need to gather new statistics every week or every month. The simplest way to gather statistics in these environments is to use a script or job scheduling tool to regularly run the GATHER_SCHEMA_STATS and GATHER_DATABASE_STATS procedures. The frequency of collection intervals should balance the task of providing accurate statistics for the optimizer against the processing overhead incurred by the statistics collection process.

For tables that are substantially modified in batch operations, such as with bulk loads, gather statistics on these tables as part of the batch operation. Call the DBMS_STATS procedure as soon as the load operation completes.

Sometimes only a single partition is modified. In such cases, you can gather statistics only on the modified partitions rather than on the entire table. However, gathering global statistics for the partitioned table may still be necessary."

http://docs.oracle.com/cd/E25178_01/ser ... htm#i41496

Ou seja, não existe um valor default, se houver 10%, 20%, 3% de alteração então colete.

Na sua experiência, com qual frequência você costuma coletar?

portilho
Site Admin
Posts: 482
Joined: Wed May 29, 2013 8:51 am

Re: Coleta de estatisticas

Post by portilho » Thu Mar 17, 2016 8:50 am

Acho que temos que partir sempre do ideal.
O ideal seria coletar estatísticas de todos os objetos sempre que estes tivessem alguma (qualquer uma) alteração, em 100%.
Como isto não é possível por conta da carga da coleta, coloca-se estas regras, sendo que a padrão é quando o objeto atingir 10% de alterações. E a coleta será feita apenas no próximo agendamento, o que já pode dar margem a erros até lá.
Estas regras atendem bem, digamos, 85% dos casos. É quando foge disso que temos problemas.
Por exemplo, imagine uma tabela de Notas Fiscais, com 10.000.000.000 de linhas. Ela só receberá uma nova coleta quando forem adicionadas mais 1.000.000.000. E se nesse meio tempo, for adicionado um novo vendedor, ou um novo produto, este dado não será refletido nas estatísticas.
Então, eu gosto de trabalhar pela regra, e vou adicionando as exceções conforme os problemas vão aparecendo. Nessa hora, o DBA tem que conhecer o dado, o modelo, não tem jeito.

gcomenale

Re: Coleta de estatisticas

Post by gcomenale » Thu Mar 17, 2016 3:28 pm

Legal! Concordo contigo, obrigado!

portilho
Site Admin
Posts: 482
Joined: Wed May 29, 2013 8:51 am

Re: Coleta de estatisticas

Post by portilho » Fri Mar 18, 2016 7:07 pm

:-D

Post Reply