Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как сбросить кэш сервера для конкретной таблицы?  [new]
Виталий Е.С.
Member

Откуда: Университет
Сообщений: 105
Добрый день!
print @@version
Microsoft SQL Server 2005 - 9.00.4035.00
Express

Скажите, пожалуйста, как сбросить кэш (и статистику) запросов сервера к конкретной таблице. Чтобы запрос к ней исполнялся так, будто она создана впервые на сервере секунду назад. И чтобы серверный кэш/статистика не ускорял запрос к этой таблице.
9 ноя 11, 13:50    [11569368]     Ответить | Цитировать Сообщить модератору
 Re: Как сбросить кэш сервера для конкретной таблицы?  [new]
Glory
Member

Откуда:
Сообщений: 104751
А как статистика использования таблицы ускоряет запросы к ней ?
9 ноя 11, 13:55    [11569413]     Ответить | Цитировать Сообщить модератору
 Re: Как сбросить кэш сервера для конкретной таблицы?  [new]
Виталий Е.С.
Member

Откуда: Университет
Сообщений: 105
Glory
А как статистика использования таблицы ускоряет запросы к ней ?


Мне нужно что-то вроде DBCC FREEPROCCACHE ( http://msdn.microsoft.com/en-us/library/ms174283.aspx ) только для таблицы.

Сообщение было отредактировано: 9 ноя 11, 14:04
9 ноя 11, 14:03    [11569510]     Ответить | Цитировать Сообщить модератору
 Re: Как сбросить кэш сервера для конкретной таблицы?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Виталий Е.С.
Glory
А как статистика использования таблицы ускоряет запросы к ней ?


Мне нужно что-то вроде DBCC FREEPROCCACHE ( http://msdn.microsoft.com/en-us/library/ms174283.aspx ) только для таблицы.
DBCC DROPCLEANBUFFERS. Только это вообще для всего буффер-пула.

Сообщение было отредактировано: 9 ноя 11, 14:04
9 ноя 11, 14:04    [11569520]     Ответить | Цитировать Сообщить модератору
 Re: Как сбросить кэш сервера для конкретной таблицы?  [new]
komrad
Member

Откуда:
Сообщений: 5736
можно начитать в кэш большую таблицу
и проверить отсутствие в нём нужной таблицы, например, таким запросом (выполнять в интересующей БД)

SELECT count(*)AS cached_pages_count , count(*)/128. 'Size (Mb)',
    name ,index_id , obj_id
FROM sys.dm_os_buffer_descriptors AS bd 
    INNER JOIN 
    (
        SELECT object_id [obj_id],object_name(object_id) AS name 
            ,index_id ,allocation_unit_id
        FROM sys.allocation_units AS au
            INNER JOIN sys.partitions AS p 
                    ON au.container_id = p.hobt_id 
                    AND (au.type = 1 OR au.type = 3)
        UNION ALL
        SELECT object_id [obj_id],object_name(object_id) AS name   
            ,index_id, allocation_unit_id
        FROM sys.allocation_units AS au
            INNER JOIN sys.partitions AS p 
                  ON au.container_id = p.hobt_id 
                    AND au.type = 2
    ) AS obj 
        ON bd.allocation_unit_id = obj.allocation_unit_id
WHERE database_id = db_id()
and obj_id=object_id('ТАБЛИЦА')
GROUP BY name, index_id, obj_id 
ORDER BY cached_pages_count DESC
9 ноя 11, 14:13    [11569634]     Ответить | Цитировать Сообщить модератору
 Re: Как сбросить кэш сервера для конкретной таблицы?  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Виталий Е.С.,

А если для таблицы создать новую статистику командой
CREATE STATISTICS
со всеми необходимыми полями, оптимизатор не будет использовать старую статистику.
9 ноя 11, 14:16    [11569674]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить