У мене велика кількість даних погодних моделей, що вводяться в базу даних PostgreSQL. Машина має 8 ядер і 16 ГБ оперативної пам’яті. Я запускаю PostgreSQL 9.3 з PostGIS 2.1. Кожна таблиця матиме різну різноманітність погодних даних (темп, точка роси, вітер тощо). Кожна таблиця матиме 6-7 стовпців: широту, довготу, геометрію точок, висоту, дату та час, для якої модель відповідає, та 1-2 значення даних, що цікавлять. Дані будуть в основному запитуватися для обмежувального вікна за часом та висотою. Буде приблизно 145,757,360 рядків у таблиці (дані, старіші, ніж зараз, більше не стосуються, буде видалено). Я орієнтовно оцінюю розмір таблиць приблизно 10 ГБ кожна без індексів. (Це 52 байти даних плюс 23 байти накладних витрат на рядок). Дані будуть регулярно оновлюватися / вставлятися, коли дані нових моделей стануть доступними. Примітка:
Тож я дивлюся на ці два плани:
- Просто індексуйте та кластеризуйте (дату, висоту) з додатковим індексом для геометрії точки. Запустіть звичайну роботу cron, яка видаляє старі рядки, виконує вакуум / аналіз та повторно кластеризує.
- Розділення за датою, а потім кластером та індексом по висоті в таблиці з індексом геометрії. Виконайте звичайну роботу cron, щоб додати нові таблиці вперед і скинути старі таблиці.
Далі,
- Отже, я знаю, що викидання таблиці набагато ефективніше, а також видалення та пилосос. Але я б побачив підвищення продуктивності в іншому випадку?
- Чи підходящі розділи, коли всі таблиці будуть рівномірно оновлюватися та вибиратись до тих пір, поки не будуть видалені як неактуальні (документація вказує на те, що розділи працювали найкраще, коли на них буде вибрано лише декілька)?
При наданні даних вибір буде швидше, ніж кластерний індекс? Чи змінюється відповідь, якщо одразу надходить кілька запитів?
Дякую. Я сподіваюся, що я зібрав усі необхідні дані. Якщо не дайте мені знати, я додам його.
xmin
абоxmax
тощо. Існує функція, яка може перетворити її на 9.4, яка, ймовірно, буде хвилювати вас, називаються minmax індексами, що зробить такі речі набагато зручнішими.