Доброго времени суток всем.
Ситуация следующая. Есть некая база с логами в СУБД MS SQL. В этой базе только одна таблица, которая может занимать за год порядка 1.5 Тб. Из этой таблицы как правило берутся данные за последний месяц, реже за 2, еще реже за год. Есть желание как-то оптимизировать работу и, в частности, рассматривается переход на Postgres. Сразу скажу, я не фанат MS, поэтому просьба на эту тему не нападать.
Так вот. Как и Postgres, MS умеет делать секционирование. Сама база сейчас крутится на 1.3 Тб RAID5 носителе, чтобы месячная выборка работала как можно быстрее. Поэтому есть желание применить механизм разделения большой таблицы на подтаблицы. При этом так, чтобы на быстром носителе оставался кусок таблицы только за последние 2-3 месяца, остальные - уходили в архив на более медленный диск. Ни у MS, ни у Postgre я таких штатных механизмов к сожалению не увидел.
Сталкивался ли кто-нибудь с подобной задачей и какие были тогда у Вас пути решения?
А в чём
А в чём проблема-то?
Разбиения:
http://postgresql.ru.net/manual/ddl-partitioning.html
затем
CREATE TABLESPACE
затем
CRETE TABLE с указанием TABLESPACE
затем для нужных таблиц поменять TABLESPACE
ALTER TABLE ... SET TABLESPACE
Спасибо за Ваш
Спасибо за Ваш ответ.
Проблема отнюдь не в том, как сделать разбиение, а в том, как убирать архивные секции на более медленный дисковый носитель. В принципе, как я могу себе представить, никто не отменял симлинки, то есть перенос файла на более медленный носитель, а в папку базы делать просто линк на этот файл. Вопрос тут в том, как эти секции отличить...
Понятно, что пока не попробуешь, не поймешь, но именно в этом по сути и был вопрос.
Так я ведь написал как? ALTER
Так я ведь написал как?
ALTER TABLE таблица_с_архивными_данными SET TABLESPACE
Понял, спасибо. Вопрос пока
Понял, спасибо. Вопрос пока можно закрыть.