Как создать буферный пул в базе данных, предназначенный только для ОДНОЙ БОЛЬШОЙ таблицы?

У меня есть таблица TICKET с 400 тыс. записей в базе данных (DB2).

Я хочу создать один огромный буферный пул, который будет выделен только для этой одной большой таблицы для более быстрого ответа. Каковы шаги, чтобы сделать это?

Также на данный момент у меня есть один буферный пул, который покрывает все табличное пространство со всеми таблицами (около 200) в базе данных! что тогда произойдет с этой моей конкретной таблицей в этом старом, впервые созданном буферном пуле? должна ли эта таблица оставаться в первом пуле буферов или как ее удалить из этого пула буферов?? Также есть ли какие-то риски для этого действия???

Спасибо


person Stefke    schedule 12.02.2013    source источник


Ответы (1)


Думаю, эта статья поможет вам: http://www.ibm.com/developerworks/data/library/techarticle/0212wieser/index.html

Перемещение вашей большой таблицы в другой пул буферов может повысить производительность, но это зависит от вашего варианта использования. Соответствующая цитата из статьи:

Наличие более одного пула буферов может сохранить данные в буферах. Например, у вас может быть база данных со множеством очень часто используемых небольших таблиц, которые обычно полностью находятся в буфере, чтобы быть доступными очень быстро. У вас также может быть запрос, который выполняется для очень большой таблицы, использующей тот же пул буферов и требующей чтения большего количества страниц, чем общий размер буфера. При выполнении этого запроса страницы из небольших, очень часто используемых таблиц теряются, что приводит к необходимости их повторного чтения, когда они снова понадобятся. Если маленькие таблицы имеют собственный пул буферов, что делает необходимым наличие собственного табличного пространства, их страницы не могут быть перезаписаны большим запросом. Это может привести к повышению общей производительности системы, хотя и за счет небольшого отрицательного влияния на большой запрос.

Если вы решите это сделать, у вас может быть только один пул буферов на табличное пространство, поэтому вам нужно будет переместить большую таблицу в отдельное табличное пространство. В статье приведены примеры создания табличных пространств и буферных пулов.

Таблицу можно переместить в другое табличное пространство с помощью ADMIN_MOVE_TABLE. Я не думаю, что это рискованно. Он фиксирует изменения, которые могут быть внесены в исходную таблицу во время перемещения. Единственное, что он делает, это отключает несколько (редко используемых) действий над исходной таблицей во время перемещения.

Вы назначаете буферный пул табличному пространству, указывая его в файле CREATE TABLESPACE или ALTER TABLESPACE.

person Community    schedule 12.02.2013
comment
Здравствуйте, спасибо за ответ. Да, я знаю, что у меня может быть только один опрос буфера на табличное пространство. Я имел в виду два буферных пула и два TSpace. У меня сейчас MAXBP и MAXTS со всеми таблицами. БИЛЕТ в настоящее время находится в MAXTS. Я хотел бы создать TICKETBP и TICKETTS. Но как посвятить эти TICKETTS этой таблице TICKET?? Все меньшие таблицы я хотел бы сохранить в MAXTS. Должен ли я переместить таблицу TICKET из MAXTS в TICKETTS, это рискованно? И как это сделать? Я не знаю .. Я не мог увидеть руководство по вашей ссылке .. С уважением - person Stefke; 12.02.2013
comment
Спасибо, Дэн. Это выглядит здорово. Правильный способ вызвать это с помощью метода CALL?? Поправьте меня, если я ошибаюсь?? CALL ADMIN_MOVE_TABLE (MAX (имя схемы), TICKET, TICKETTS, ????, ????, null, null, null, null, null, MOVE ) да?? Что я должен поставить вместо индексного табличного пространства и табличного пространства LOB, то есть как определить, что такое мое индексное табличное пространство и табличное пространство LOB для моей таблицы TICKET? Также я сделаю резервную копию базы данных, поэтому, если что-то пойдет не так, я полагаю, восстановление вернется к своему предыдущему табличному пространству MAXTS, верно? - person Stefke; 12.02.2013
comment
вы можете помочь мне с этим, может быть? - person Stefke; 13.02.2013
comment
@Stefke, на ваши вопросы о том, как это сделать, похоже, прямо ответила документация. Я предлагаю вам попробовать это (попробуйте сначала с тестовой таблицей, если вы беспокоитесь), а затем задать новый вопрос, если у вас есть конкретная проблема. - person ; 13.02.2013