У меня есть огромная база данных, которая содержит пары чисел (A, B), каждая из которых находится в диапазоне от 0 до 10000 и хранится в виде чисел с плавающей точкой.
например.,
(1, 9984.4), (2143.44, 124.243), (0.55, 0), ...
Поскольку таблица PostgreSQL, в которой хранятся эти пары, стала довольно большой, я решил разбить ее на унаследованные подтаблицы . Я намерен создать 100 таких таблиц, каждая из которых хранит диапазон 1000x1000.
Проблема в том, что эти числа имеют тенденцию приходить большими кусками соседних чисел. Это означает, что в будущем некоторые таблицы будут почти пустыми, а некоторые будут занимать очень большую часть базы данных. К сожалению, распределение будущих пар пока неизвестно.
Я ищу способ автоматического перераспределения моей таблицы. Это означает, что если в некотором подтаблице содержится больше определенного числа пар, он будет автоматически разбит на четыре подподставки и т. Д.
Мои вопросы:
- Возможно ли в PostgreSQL 8.3 рекурсивное разбиение и наследование? Понимают ли это индексы и планы запросов?
- Какой лучший способ разделить подтаблицу, если она стала слишком большой? Я должен отметить, что это не живая база данных, поэтому простои в несколько часов каждую неделю вполне приемлемы.
- ОБНОВЛЕНИЕ: Я мог бы разделить наследующие таблицы на четыре таблицы, которые заменили бы исходную (то есть наследовали непосредственно от основной таблицы). Я не буду использовать более одного уровня наследования, но буду иметь тысячи, если таблицы наследуются непосредственно из одной таблицы. Каковы плюсы и минусы этого подхода?
Заранее спасибо,
Адам