powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как загрузить таблицу в кэш без выдачи сервером результата? (ASE 12.5)
10 сообщений из 10, страница 1 из 1
Как загрузить таблицу в кэш без выдачи сервером результата? (ASE 12.5)
    #36061062
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем дня!
Скажите, как можно загрузить таблицу в кэш, чтоб сервер не выдавал результата?
Например
Код: plaintext
1.
2.
Select * from my_tab
или 
Select count(*) from my_tab
закинет в кэш всю таблицу, но вернет результат.
А я хочу чтоб таблица всего лишь закэшировалась.
...
Рейтинг: 0 / 0
Как загрузить таблицу в кэш без выдачи сервером результата? (ASE 12.5)
    #36061260
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот как
Код: plaintext
set noexec on 
только для таблицы
а по сути, я хочу добиться того, чтоб перед выполнением определенной процедуры, кэшировался ряд таблиц связанных с этой процедурой
...
Рейтинг: 0 / 0
Как загрузить таблицу в кэш без выдачи сервером результата? (ASE 12.5)
    #36061643
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицу можно прикрепить к определенному кэшу. Если к кэшу при-
креплена не таблица, а база данных, то все ее операции ввода-вывода
выполняются в этом кэше.

sp_bindcache - Прикрепляет базу данных, таблицу, индекс или объект типа text и image к
кэшу данных.

Синтаксис sp_bindcache cachename, dbname [, [ownername.]tablename[, indexname| "text only"]]

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

ownername Имя владельца таблицы. Если владельцем таблицы является “dbo”,
имя владельца указывать необязательно.

tablename Имя таблицы, прикрепляемой к кэшу, либо имя таблицы, чей индекс
или объект типа text или image должен быть прикреплен к кэшу.

indexname Имя индекса, который должен быть прикреплен к кэшу.

text only Прикрепляет к кэшу объекты типа text или image. Вместе с этим пара-
метром нельзя указывать имя индекса.

sp_unbindcache - Открепляет базу данных, таблицу, индекс, объекты типа text или image от
кэша данных.
Синтаксис sp_unbindcache dbname [,[owner.]tablename
[, indexname | "text only"]]
...
Рейтинг: 0 / 0
Как загрузить таблицу в кэш без выдачи сервером результата? (ASE 12.5)
    #36061844
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Badger,
у меня сейчас все таблицы вешаются на дефолтный кэш.
создавать именованный кэш, чтоб потом на него цеплять необходимые таблицы не особо хочется...
...
Рейтинг: 0 / 0
Как загрузить таблицу в кэш без выдачи сервером результата? (ASE 12.5)
    #36062100
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousBadger,
у меня сейчас все таблицы вешаются на дефолтный кэш.
создавать именованный кэш, чтоб потом на него цеплять необходимые таблицы не особо хочется...А я именно так и сделал, и оказалось, что работает лучше если найти оптимальное сочетание между основной базой (засунутыми туда таблицами) отдельным кэшем для temp_db, (где будут создаваться временные таблицы из под процедур). Если бы кэша было побольше, я бы туда все засунул... :) а вот кэш по умолчанию у меня работает плохо, как будто его вообще нет. Но это так, я не настаиваю. Удачи.
...
Рейтинг: 0 / 0
Как загрузить таблицу в кэш без выдачи сервером результата? (ASE 12.5)
    #36066517
йцу1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
создай хп со вставкой всех данных во временную таблицу и дергай ее
...
Рейтинг: 0 / 0
Как загрузить таблицу в кэш без выдачи сервером результата? (ASE 12.5)
    #36073223
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous wrote:

> set noexec on

-- ничего в кеш не положит.
Потому что запрос не выполняется при этом.

И вообще, идея преднаполнять кэш для выполнения одной
процедуры или запроса вообще дурацкая, кэш на то и кэш,
чтобы наполнялся сам и тем, что серверу нужно. Ты не сможешь
предсказать, что ему будет нужно для выполнения твоего
запроса.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как загрузить таблицу в кэш без выдачи сервером результата? (ASE 12.5)
    #36073225
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous wrote:
> Скажите, как можно загрузить таблицу в кэш, чтоб сервер не выдавал
> результата?

Понимаешь, тут всё дело в "загрузить таблицу в кэш". Что это значит ?
В кэш вообще грузятся не таблицы, а страницы: данных, индексов и текстовых
/имеджёвых полей. Что нужно тебе -- не понятно. И не понятно, как бы ты
понял, какие именно страницы тебе нужны.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как загрузить таблицу в кэш без выдачи сервером результата? (ASE 12.5)
    #36074015
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Imperous wrote:
> Скажите, как можно загрузить таблицу в кэш, чтоб сервер не выдавал
> результата?

Понимаешь, тут всё дело в "загрузить таблицу в кэш". Что это значит ?
В кэш вообще грузятся не таблицы, а страницы: данных, индексов и текстовых
/имеджёвых полей. Что нужно тебе -- не понятно. И не понятно, как бы ты
понял, какие именно страницы тебе нужны.

нужны все страницы и все индексы необходимой таблицы
...
Рейтинг: 0 / 0
Как загрузить таблицу в кэш без выдачи сервером результата? (ASE 12.5)
    #36074080
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous wrote:

> /имеджёвых полей. Что нужно тебе -- не понятно. И не понятно, как бы ты
> понял, какие именно страницы тебе нужны.
>
>
> нужны все страницы и все индексы необходимой таблицы

А с чего ты взял, что они тебе именно все нужны ?
А как ты будешь уверен, что все они загружены ?

Вообще прогрузить кэш можно только опосредованно
через запросы, и то ты никогда не сможешь быть уверен,
что в итоге все страницы в результате будут в кэше.

Для загрузки самой таблицы обычно нужно выполнить

select * from the_table

но при этом надо обеспечить использование стратегии
заполнения кэша, а не замещения только что прочитанных
страниц. Это всё можно сделать хинтами,

select * from the_table (index 0) prefetch 16 lru

или абстрактным планом

select * from the_table
plan "(hints (t_scan (table the_table))
(prop the_table (lru) (prefetch 16)))"

Если нужно подавить вы-FETCH-ивание клиенту и вывод
данных там, то можно выбирать данные в переменную
(при этом как правило достаточно только одного поля
таблицы, лучше неключевого).

Индексы можно прогрузить аналогичным запросом, но с
использованием конкретного индекса.

И наконец, в такой постановке задача не имеет смысла.
Объясню, почему. Если таблица большая, это займёт
много времени, и причём времени, выброшенного впустую.
Если при работе будет использоваться только часть данных таблицы,
то время, потраченное на остальную часть, было потрачено зря.
Если будет использоваться вся таблица, то как бы всё нормально,
но та же работа могла бы быть выполнена и запросами,
посылаемыми пользователями, только при этом они бы ждали
немного больше, но только в первый раз, но старта сервера
они всё равно будут ждать то же время.
Если таблица маленькая, то засосать её в кэш не проблема,
и эта операция вообще не имеет смысла.

Единственное полезное применение набивки кэша -- это когда
таблица большая, но из неё чаще всего используется определённая
меньшая часть, при чём фиксированная. Тогда преднабить кэш можно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как загрузить таблицу в кэш без выдачи сервером результата? (ASE 12.5)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]