В PostgreSQL есть таблица, куда летит куча данных.
Разрослась табличка, уже на 70 гигов, и запросы, СУБД обрабатывает очень туго.
Можно ли настроить в PostgreSQL, что бы через месяц создавалась новая таблица, и информация начала попадать туда, но при запросе, СУБД, знала, где находятся старые данные, а где новые, и выборку делала из нужной таблицы, или даже сразу из двух.
Читал про "Партицирование", но как я понял, мне этот вариант не подходит. Бить таблицу по столбцам я не могу, их всего 2, "itemid" и "clock"
Партиционирование - это именно то, что вам нужно. Вы неправильно его поняли, оно делается не по столбцам, а значениям столбцов. То есть, если в clock у вас хранится время создания записи, то можно разбить огромную таблицу на таблицы содержащие записи, у которых в clock только значения с суточным периодом.
Шардинг нужен для снижения нагрузки на сервер с помощью распределения копии таблицы по нескольких узлам, а не для ускорения запросов через уменьшением размера таблицы.
Пасечник Кузьмич,
ну справедливости ради не копии таблицы. Копии - это репликация, при шардинге на разных хостах данные разные. По сути происходит "размазывание" таблицы на несколько серверов. По сути партицирование, но не на одном сервере, а на нескольких. Однако соглашусь, что задачу топикстартера решит именно партицирование, сервер то в задаче 1.
Может быть имеет смысл посмотреть в сторону масштабируемых СУБД, типа hbase?
Выше верно указали, что партиционирование это по сути и есть разбиение таблицы на несколько, например на помесячной основе.
70 Г для современных СУБД и современных серверов - это смешно.
Таблица из двух полей тормозит?
Да быть такого не может, если у вас есть индексы.
Вакуум, надеюсь, не догадались отключить?