powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / PostgreSQL [закрыт для гостей] / Запилил статью на Хабре
25 сообщений из 61, страница 2 из 3
Запилил статью на Хабре
    #1316424
Тень на плетень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
«Если русский человек скажет вам, что не любит Россию, не верьте ему. Он не русский.»
Ф.М. Достоевский
Когда я учился в аспирантуре ОИВТ РАН, шеф нам говорил, что если вы не можете найти название чему то - не ссыте , придумываете его сами. :))) Вот и я не ссу, придумываю )
...
С уважением, КѢдра МiтрейЪ.
Изменено: 10.02.2025, 23:47 - Тень на плетень
Рейтинг: 1 / 0
Нравится: Гарыныч
Запилил статью на Хабре
    #1316429
Тень на плетень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
«Если русский человек скажет вам, что не любит Россию, не верьте ему. Он не русский.»
Ф.М. Достоевский
Вот еще интересна проблема возникла. По определению фактического профиля нагрузки. OLAP он или OLTP. И собственно если система заявлена как OLAP, но на самом деле ведет себя как OLTP или наоборот, это должно быть видно в мониторинге.

Для определения профиля нагрузки используется 4 критерия. Назовем их "4 критерия Ольгинских дев определения профиля нагрузки OLAP/OLTP." 😀
...
С уважением, КѢдра МiтрейЪ.
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1316431
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Тень на плетень  10.02.2025, 23:53
[игнорируется]
4 критерия Ольгинских дев
:))))
...
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1369642
Терабайт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вышла статья про Basket partitioning. Такая архитектура хранения используется, например в pg awr.

Поправили форматирование. Очень внимательно относимся к замечаниям. Критика приветствуется! 👍

https://habr.com/ru/companies/vtb/articles/894950/
...
Изменено: 30.03.2025, 12:07 - Терабайт
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1369654
Терабайт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас плотно переквалифицируюсь в Data Science. Фактически то чем я занимаюсь этим и является. Сплав математики, архитектур БД и AI.
9b389ab7909bffed8bf8eb3653fb23bf.jpg
...
Изменено: 30.03.2025, 12:27 - Терабайт
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1373387
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Терабайт  30.03.2025, 11:58
[игнорируется]
Очень внимательно относимся к замечаниям. Критика приветствуется!
Предлагается руками создавать схемы? Отличное решение!
А удалять партиции вы не умеете или просто не хотите?
...
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1373398
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Терабайт  30.03.2025, 12:26
[игнорируется]
Сейчас плотно переквалифицируюсь в Data Science. Фактически то чем я занимаюсь этим и является.
Вот это правильно. Занимайся лучше этой хуйнёй и не лезь ты в базы.
А там и до инфоцыганства недалеко.
...
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1373403
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Терабайт  30.03.2025, 11:58
[игнорируется]
Вышла статья про Basket partitioning.
Что мы выявили при таком хранении?
..........................
  • Очистка данных через DELETE не приводит к фактическому уменьшению размера таблицы. Если удаляемых строк миллионы, то удаление может занять значительное время.


Чтобы выяснить, что DML оператор DELETE не приводит к очистке сегментов и освобождению места, вам надо было написать статью про секционирование?
...
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1373407
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь самое интересное. Удалим все данные за позавчера:
Код: SQL
1.
DROP SCHEMA basket_20250203 CASCADE;
А зачем эти выкрутасы со схемами и каскадными удалениями, если можно просто сделать DROP/TRUNCATE partition? Это тоже DDL операция, которая не генерит много журнальных данных и по сути обновляет словарь (метаданные), поэтому выполняется она быстро.

Или в PG нельзя удалять/обнулять отдельные партиции?

To remove old data quickly, simply drop the child table that is no longer necessary:
Код: SQL
1.
DROP TABLE measurement_y2006m02;
https://www.postgresql.org/docs/current/ddl-partitioning.html#DDL-PARTITIONING-USING-INHERITANCE
Код: SQL
1.
TRUNCATE ONLY childtablename
https://www.postgresql.org/docs/current/sql-truncate.html
...
Изменено: 02.04.2025, 22:44 - Кусь
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1376762
Фотография Ифрит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Терабайт  30.03.2025, 11:58
[игнорируется]
Вышла статья про Basket partitioning. Такая архитектура хранения используется, например в pg awr.

Поправили форматирование. Очень внимательно относимся к замечаниям. Критика приветствуется! 👍

https://habr.com/ru/companies/vtb/articles/894950/
из статьи не понятно - для какой цели в реализации нужны схемы
и что именно значимое вносит термин "корзинное", кроме префикса в имени схем.. %
вот это интригует - может в статье есть какой-то с ходу неуловимый хак...
так-то, чего бы не: public.apple_20250203, public.apple_20250204...
...
Изменено: 06.04.2025, 16:41 - Ифрит
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1378452
megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кусь  02.04.2025, 22:33
[игнорируется]
Или в PG нельзя удалять/обнулять отдельные партиции?

To remove old data quickly, simply drop the child table that is no longer necessary:
Код: SQL
1.
DROP TABLE measurement_y2006m02;
https://www.postgresql.org/docs/current/ddl-partitioning.html#DDL-PARTITIONING-USING-INHERITANCE
Код: SQL
1.
TRUNCATE ONLY childtablename
https://www.postgresql.org/docs/current/sql-truncate.html
Конечно можно.
...
коротко о себе по версии дедофорумчан:
либераст, хохол, жыд, ЗОЖовец-наркоман на антидепрессантах, сталинист, протохохол, желающий поменять родных православных коррупционеров на иноземных,
идейный укр, который родился не в России
иноагент, но без официального статуса
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1378885
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
megabyte  08.04.2025, 14:49
[игнорируется]
Кусь  02.04.2025, 22:33
[игнорируется]
Или в PG нельзя удалять/обнулять отдельные партиции?

To remove old data quickly, simply drop the child table that is no longer necessary:
Код: SQL
1.
DROP TABLE measurement_y2006m02;
https://www.postgresql.org/docs/current/ddl-partitioning.html#DDL-PARTITIONING-USING-INHERITANCE
Код: SQL
1.
TRUNCATE ONLY childtablename
https://www.postgresql.org/docs/current/sql-truncate.html
Конечно можно.
Тогда в чём вообще цимес этой статьй? Автор почему-то молчит как партизан и не хочет общаться с коллегами. Интересно, почему?
...
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1378895
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гарыныч  08.04.2025, 22:20
[игнорируется]
Кусь  08.04.2025, 22:16
[игнорируется]
megabyte [игнорируется] 

Тогда в чём вообще цимес этой статьй? Автор почему-то молчит как партизан и не хочет общаться с коллегами. Интересно, почему?
а почему статья на инглише? Мегачлен не осилил на русском?
Гарыныч, сходи лучше в тему про монаду. Насри там кмаву чёрными властелинами.
...
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1378900
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Кусь  08.04.2025, 22:22
[игнорируется]
Гарыныч  08.04.2025, 22:20
[игнорируется]
Кусь  08.04.2025, 22:16
[игнорируется]
megabyte [игнорируется] 

Тогда в чём вообще цимес этой статьй? Автор почему-то молчит как партизан и не хочет общаться с коллегами. Интересно, почему?
а почему статья на инглише? Мегачлен не осилил на русском?
Гарыныч, сходи лучше в тему про монаду. Насри там кмаву чёрными властелинами.
я знаю только хламидо-монаду.... :)))
...
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1388982
Терабайт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ифрит  06.04.2025, 16:39
[игнорируется]
Терабайт  30.03.2025, 11:58
[игнорируется]
Вышла статья про Basket partitioning. Такая архитектура хранения используется, например в pg awr.

Поправили форматирование. Очень внимательно относимся к замечаниям. Критика приветствуется! 👍

https://habr.com/ru/companies/vtb/articles/894950/
из статьи не понятно - для какой цели в реализации нужны схемы
и что именно значимое вносит термин "корзинное", кроме префикса в имени схем.. %
вот это интригует - может в статье есть какой-то с ходу неуловимый хак...
так-то, чего бы не: public.apple_20250203, public.apple_20250204...
Схема - это дата. В ней сотни таблиц. Ты удаляешь кучу старых данных.
...
Изменено: 21.04.2025, 00:18 - Терабайт
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1388984
Терабайт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  02.04.2025, 22:14
[игнорируется]
Терабайт  30.03.2025, 11:58
[игнорируется]
Очень внимательно относимся к замечаниям. Критика приветствуется!
Предлагается руками создавать схемы? Отличное решение!
А удалять партиции вы не умеете или просто не хотите?
Это все делается не руками, а процедурой. Она проверяет при вставке наличие схем за указанную дату. Если ее нет - схема и секции создаются.
...
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1388988
Терабайт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
megabyte  08.04.2025, 14:49
[игнорируется]
Кусь [игнорируется] 

Конечно можно.
Здесь нужно не обнулять старые секции, а ваще удалять. Хотя если секционирование по типу LIST - то конечно проще транкейтить. Например те данные которые obsolete. Они сразу переезжают в нужную секцию. И соответственно ничто не мешает их не delete, а truncate. Что гораздо быстрее.
...
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1388999
Терабайт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем это хоть и не выглядит сильно впечатляюще как сиськи Мэрлин Монро. Но работает сейчас на десятках тысяч серверов. С совершенно разными профилями. Удаляется пулей. Обслуживания вообще не требует. В этом и была цель. Понимающие люди идею поймут.

Например стат данные размером гигов под 50 через обычный delete могли удаляться часами. А тут за секунду. В этом и профит.
...
Изменено: 21.04.2025, 00:34 - Терабайт
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1389064
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Терабайт  21.04.2025, 00:17
[игнорируется]
Горбатый ёж  02.04.2025, 22:14
[игнорируется]
Терабайт  30.03.2025, 11:58
[игнорируется]
Очень внимательно относимся к замечаниям. Критика приветствуется!
Предлагается руками создавать схемы? Отличное решение!
А удалять партиции вы не умеете или просто не хотите?
Это все делается не руками, а процедурой. Она проверяет при вставке наличие схем за указанную дату. Если ее нет - схема и секции создаются.
Ещё раз вопрос.
Зачем делать схемы, если можно удалять партиции?
...
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1389148
Тень на плетень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
«Если русский человек скажет вам, что не любит Россию, не верьте ему. Он не русский.»
Ф.М. Достоевский
Горбатый ёж  21.04.2025, 07:18
[игнорируется]
Терабайт  21.04.2025, 00:17
[игнорируется]
Горбатый ёж  02.04.2025, 22:14
[игнорируется]
Терабайт  30.03.2025, 11:58
[игнорируется]
Очень внимательно относимся к замечаниям. Критика приветствуется!
Предлагается руками создавать схемы? Отличное решение!
А удалять партиции вы не умеете или просто не хотите?
Это все делается не руками, а процедурой. Она проверяет при вставке наличие схем за указанную дату. Если ее нет - схема и секции создаются.
Ещё раз вопрос.
Зачем делать схемы, если можно удалять партиции?
Потому что удалить схему - это гораздо проще. Не нужно делать DEATTACH секции каждой, затем DROP TABLE по каждой таблице. Их может быть сотни.

DROP SCHEMA CASCADE - делает всё сама.

Если у вас так секционирована одна или несколько таблиц - здесь вы правы, городить баскеты может быть избыточно.
...
С уважением, КѢдра МiтрейЪ.
Изменено: 21.04.2025, 10:20 - Тень на плетень
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1389152
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тень на плетень  21.04.2025, 10:18
[игнорируется]
Потому что удалить схему - это гораздо проще. Не нужно делать DEATTACH секции каждой, затем DROP TABLE по каждой таблице. Их может быть сотни.
Цитата 
[игнорируется]
ALTER TABLE sales DROP PARTITION FOR ('2023-01-01'::date);
...
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1389157
Тень на плетень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
«Если русский человек скажет вам, что не любит Россию, не верьте ему. Он не русский.»
Ф.М. Достоевский
Да, можно так. Теперь сравни:

Ситуация 1:

ALTER TABLE sales DROP PARTITION FOR ('2023-01-01'::date);
ALTER TABLE invoice DROP PARTITION FOR ('2023-01-01'::date);
ALTER TABLE order DROP PARTITION FOR ('2023-01-01'::date);
ALTER TABLE gl DROP PARTITION FOR ('2023-01-01'::date);
ALTER TABLE backs DROP PARTITION FOR ('2023-01-01'::date);

и Ситуация 2:

DROP SCHEMA data_20230101 CASCADE;

Что проще? Собственно все.
...
С уважением, КѢдра МiтрейЪ.
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1389166
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть кучу таблиц в одну схему...
В этом смысле.

Всё равно это какая-то ненужная ерунда, потому что это полёт фантазии на определённую тему. Непонятный отказ от использования стандартного встроенного инструментария. Профит от этого очень сомнителен.
Что касается количества команд, то наверное ты сможешь перечитать сам себя
Терабайт  21.04.2025, 00:17
[игнорируется]
Это все делается не руками, а процедурой.
Кстати и вот это
Тень на плетень  21.04.2025, 10:29
[игнорируется]
ALTER TABLE sales DROP PARTITION FOR ('2023-01-01'::date);
ALTER TABLE invoice DROP PARTITION FOR ('2023-01-01'::date);
ALTER TABLE order DROP PARTITION FOR ('2023-01-01'::date);
ALTER TABLE gl DROP PARTITION FOR ('2023-01-01'::date);
ALTER TABLE backs DROP PARTITION FOR ('2023-01-01'::date);
с лёгкостью заменяется циклом в той самой процедуре. При этом получаешь одну процедуру для удаления партиций и не занимаешься созданием схем при добавлении новой партиционированной таблицы.
...
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1389185
Тень на плетень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
«Если русский человек скажет вам, что не любит Россию, не верьте ему. Он не русский.»
Ф.М. Достоевский
Это излишнее усложнение процедуры. Можешь какую то из таблиц забыть.
А может и такое случиться что по какой то таблице данных за это число нет вообще. И нет секции.

Здесь же не нужно думать ни о чем кроме даты.

Процедура просто перебирает все даты менее определенной. Нужно просто сгенерить: DROP SCHEMA data_xxxxxxxxxx CASCADE по условию:
Код: SQL
1.
... where schema_name < 'data_20230101'
...
С уважением, КѢдра МiтрейЪ.
Рейтинг: 0 / 0
Запилил статью на Хабре
    #1389197
Тень на плетень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
«Если русский человек скажет вам, что не любит Россию, не верьте ему. Он не русский.»
Ф.М. Достоевский
Вот пример кода удаления данных по баскетам старше 9 дней. Работает и на кластере PG
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
CREATE OR REPLACE FUNCTION delete_obsolete(d integer)
RETURNS void
LANGUAGE plpgsql
STRICT
AS $function$
declare
  r record;
  node_role bool;
  schema_nm varchar ='';
  schema_to varchar = '';
  r1 record;
  tmp1 record;
begin
  set search_path=data,public,pg_catalog;
    select into node_role pg_is_in_recovery();
    raise notice 'Delete obsolete schemas.';
    raise notice '==============================================';
    raise notice 'Node role in cluster is replica?: %', node_role;
    if node_role = false then
       raise notice 'LEADER: start procedure.';
           -- delete old schemas data_, older then 9 days
           select into schema_to 'data_'||TO_CHAR (now()- interval '9 days', 'YYYYMMDD_HHMMSS');
           for r1 in
             select schema_name FROM information_schema.schemata WHERE schema_name like 'data_2%'
           loop
                raise notice '> % : ',r1.schema_name;
                if r1.schema_name < schema_to then
                     raise notice 'delete schema % : ',r1.schema_name;
                      execute 'drop schema ' || r1.schema_name || ' cascade;';
                end if;
           end loop;
       else
             raise notice 'REPLICA: skip procedure.';
    end if;
    raise notice 'Delete obsolete schemas finished.';
    raise notice '==============================================';
  reset search_path;
end;
$function$
;
...
С уважением, КѢдра МiтрейЪ.
Изменено: 21.04.2025, 11:05 - Тень на плетень
Рейтинг: 0 / 0
25 сообщений из 61, страница 2 из 3
Форумы / PostgreSQL [закрыт для гостей] / Запилил статью на Хабре
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]