четверг, 15 ноября 2012 г.

Стоимостная оптимизация и статистика: MSSQL и Oracle

Книга  - Оптимизация запросов в системах баз данных
статья - Методы оптимизации запросов в реляционных системах

Использование статистики оптимизатором запросов Microsoft SQL Server 2005

1. Статистика в MSSQL
    1.1.Получение статистики для внутренних и пользовательских объектов текущей БД.
Синтаксис:
 sp_createstats [ [ @indexonly = ] 'indexonly' ]
        [ , [ @fullscan = ] 'fullscan' ]
    [ , [ @norecompute = ] 'norecompute' ]

    1.2. Получение статистики по объекту БД (таблице, представлению, полю)
Синтаксис:

CREATE STATISTICS statistics_name
ON { table | view } ( column [ ,...n ] )
    [ WITH
        [ [ FULLSCAN
          | SAMPLE number { PERCENT | ROWS }
          | STATS_STREAM = stats_stream ] [ , ] ]
        [ NORECOMPUTE ]
    ] ;

Показать созданные объекты статистики
Синтаксис:
DBCC SHOW_STATISTICS ( table_or_indexed_view_name , target )
[ WITH [ NO_INFOMSGS ] < option > [ , n ] ]
< option > :: =
    STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM

Пример:

create statistics myfirst on personal(lastname) with fullscan 
dbcc show_statistics (personal,myfirst)



 2. Статистика в Oracle

2.1. Для получения информации о последней дате сбора статистики по объекту  конкретного пользователя,можно использовать запрос:
select * from USER_TABLE

2.2. Для получения статистики аппаратной части
Собираем статистику:

begin
dbms_stats.gather_system;
end;

Просмотр собранной статистики:

select * from sys.aux_stats$

Хорошая статья по анализу собранной системной статистики тут

2.3. Для получения статистики по database

begin
dbms_stats.gather_database_stats;
end;

2.4. Для получения статистики по schema

begin
dbms_stats.gather_schema_stats('nya', stattab=>'mystat');
end;


2.5. Для получения статистики по table

begin
dbms_stats.gather_table_stats ('nyaka',tabname=>'nya',stattab=>'mystat');
end;

Справочная информация  по DBMS_STATS - тут и тут

Комментариев нет:

Отправить комментарий