Відмінною всім п'ятниці! Дедалі менше часу залишається до запуску курсу
В процесі розробки
У PostgreSQL 10 ми побачили народження «декларативного секціонування» - фічі, призначеної для вирішення багатьох проблем, які були нерозв'язні при використанні старого методу спадкування. Це призвело до появи набагато потужнішого інструменту, що дозволяє нам розділяти дані по горизонталі!
Порівняння фіч
У PostgreSQL 11 з'явився вражаючий набір нових фіч, які допомагають підвищити продуктивність та зробити секційовані таблиці прозорішими для додатків.
1. Використовуючи обмежуючі винятки
2. Додає лише вузли
3. Тільки для секційованої таблиці, яка посилається на несекційовану
4. Індекси повинні містити всі ключові стовпці секції
5. Обмеження на секцію по обидва боки повинні збігатися
Продуктивність
Тут у нас також є добрі новини! Доданий новий метод WHERE
. Попередній алгоритм, у свою чергу, перевіряв кожну секцію, щоб визначити, чи вона може відповідати умові WHERE
. Це призводило до додаткового збільшення часу планування зі збільшенням кількості секцій.
У 9.6, з секціонуванням за допомогою успадкування, маршрутизація кортежів у секції зазвичай виконувалася шляхом написання тригерної функції, яка містила серію операторів IF для вставки кортежу в правильну секцію. Ці функції були дуже повільними під час виконання. З декларативним секціонуванням, доданим до 10 версії, це стало працювати набагато швидше.
Використовуючи секційовану таблицю зі 100 секціями, ми можемо оцінити продуктивність завантаження 10 мільйонів рядків у таблицю з 1 стовпця BIGINT та 5 стовпців INT.
Продуктивність запиту до цієї таблиці для пошуку одного індексованого запису та виконання DML для маніпулювання одним записом (використовуючи лише 1 процесор):
Тут бачимо, що продуктивність кожної операції значно зросла після PG 9.6. Запити SELECT
виглядають набагато краще, особливо ті, які можуть виключати безліч секцій під час планування запитів. Це означає, що планувальник може пропустити більшу частину роботи, яку він мав робити раніше. Наприклад, більше не будуються шляхи для непотрібних секцій.
Висновок
Секціонування таблиць починає ставати дуже потужною функцією в PostgreSQL. Воно дозволяє швидко виводити дані в online та переводити їх у offline, не чекаючи завершення повільних масивних операцій DML. Це також означає, що пов'язані дані можуть зберігатися разом, тобто до необхідних даних можна отримати доступ набагато ефективніше. Поліпшення, зроблені в цій версії, були б неможливими без розробників, ревьюєрів та комітерів, які невпинно працювали над усіма цими фічами.
Дякую їм усім! PostgreSQL 11 виглядає просто фантастично!
Ось така коротенька, але досить цікава стаття. Діліться коментарями, а також не забувайте записуватись на
Джерело: habr.com