Медленный запрос / отключение кеша - Sybase Adaptive Server

Этот запрос, похоже, выполняется невероятно медленно (25 секунд для 4 миллионов записей!) На Sybase v10 в базе данных клиентов:

Select max(tnr) from myTable; 

С tnr является первичным ключом.

Однако если я запустил его 1000x на нашем сервере, он, похоже, будет работать быстро (15 мс ...), что заставляет меня думать, что это потому, что результат запроса кешируется. Есть ли способ отключить кеш для этого запроса (или всей базы данных) в Sybase, чтобы воспроизвести эту проблему?

Я пытался:

call sa_flush_cache ();
call sa_flush_statistics ();

Но, похоже, это не помогло.


person Carra    schedule 11.02.2009    source источник
comment
Возможно, проблема не в том, что ваши результаты кешируются, а в том, что проблема с сервером вашего клиента.   -  person Tom H    schedule 11.02.2009
comment
Возможно, проверьте оба плана запроса, чтобы убедиться, что они оба используют какие-либо применимые индексы. Запросы MAX () обычно выигрывают от обратного просмотра индекса.   -  person Allethrin    schedule 12.02.2009
comment
Скажите клиенту, чтобы он обновился! V10 настолько стар и полностью лишился поддержки, что я действительно удивлен, что он все еще существует ...   -  person Vincent    schedule 20.02.2009
comment
Обновление сервера на самом деле не в моих руках. В новом Sybase EBF наши запросы теперь выполняются в 1000 раз медленнее (они перестали использовать некоторые индексы) ...   -  person Carra    schedule 20.02.2009


Ответы (2)


К сожалению, dbcc cacheremove не будет работать, поскольку он не очищает страницы из кеша, а скорее удаляет дескриптор и помещает его обратно в свободную цепочку.

Помимо перезапуска сервера данных, единственный способ сделать это - привязать объект к кешу, а затем выполнить ваши тесты, а затем отвязать объект, который удалит все страницы из кеша.

person Vincent    schedule 16.02.2009

Попробуйте dbcc cacheremove

person Allethrin    schedule 11.02.2009