Видно, что наибольшее количество времени процессор проводит внутри функции GetSnapshotData. Она вызывает GetTransactionSnapshot, а эта, в свою очередь, exec_eval_simple_expr.
Ну всё же наоборот. exec_eval_simple_expr вызывает GetTransactionSnapshot, а GetTransactionSnapshot вызывает GetSnapshotData. На картинке обратный стек вызовов, а не прямой.
В PostgreSQL есть подобное. Только записи WAL не объединяются, а просто процесс, который собирается сделать fsync на WAL, может подождать других. См. параметры commit_delay и commit_siblings. postgrespro.ru/docs/postgrespro/10/wal-configuration
Можно ссылку на источник по Маркусу Винанду? Просто на сайте у него тут и тут другое. Наверное, он просто на сайте ещё не обновил, нужно написать ему об этом.
Recheck в SP-GiST уже есть и кажется всегда был. См. структуру данных, которую возвращает leaf_consistent.
typedef struct spgLeafConsistentOut
{
Datum leafValue; /* reconstructed original data, if any */
bool recheck; /* set true if operator must be rechecked */
} spgLeafConsistentOut;
Патч о добавлении метода compress был на commitfest, но он как-то заглох. Будем его возобновлять. www.postgresql.org/message-id/flat/54907069.1030506@sigaev.ru#54907069.1030506@sigaev.ru
Насколько я понял отсюда, пока реализован opclass только для точек. Точки имеют ограниченный размер, поэтому для них compress не так чтобы прямо жизненно необходим. Но, конечно, с compress'ом намного лучше, мы будем им заниматься.
Извините, не удержусь от того, чтобы ответить вопросом на вопрос. Для вас Postgres-XL – это теоретическая возможность или вы его уже используете в продакшене? Если да, то какую версию?
Вот это уже слова «не мальчика, но мужа». Уважаю, без всякого сарказма!
Спасибо, я тебя тоже очень уважаю. Но ответить тем же на «не мальчика, но мужа», пока не могу (хотя надежды не оставляю). В твоих постах и комментариях на тему «PostgreSQL vs. MySQL» всё время сквозит какая-то обида. Если бы ты её преодолел, то дело продвижения MySQL только выиграло бы, ИМХО.
Интервью с Иваном Панченко я посмотрю, не думал, что вообще в нём что-то говорится о MySQL. Честно говоря, никогда не видел желания «спустить собак» на MySQL. Я бы сказал, что скорее MySQL вообще не брался в расчёт, а сравнение шло с коммерческими СУБД и NoSQL.
И Postgres Professional задаёт здесь локальный тренд как ни крути, в том числе и ты своими комментариями.
Да, задаёт. Но не вижу, где я своими комментариями задаю неправильный тренд, в том числе в тех комментариях, которые ты привёл в данной статье. Надо при этом учесть, что ты вырвал их из контекста. А эти комментарии делались под твоим провокационным постом в группе «PostgreSQL в России», что оправдывает их ироничный тон.
Ваша постгрес-профессиональная проблема заключается в абсолютно непрофессиональном подходе к дискусси с конкурентами.
Конкретно кто? Олег? Я мало вообще говорил про MySQL, дискуссии с тобой – редкое исключение. У нас в компании многим нравится MySQL. Во внутренних дискуссиях, сотрудники часто указывают на недостатки PostgreSQL и достоинства MySQL. Если во внешних дискуссиях кто-то кого-то обидел, то дай знать. Мы не можем это сами полностью контролировать, но и никому ничего не навязываем. По вопросам «проприетарности», «свободного ПО», «открытого ПО», и высказываниям на этот счёт Олега я буду разбираться. Не обещаю что это будет быстро. Но как только у меня будет законченное мнение, я его изложу.
Вообще, усиленная критика MySQL со стороны сообщества PostgreSQL – я думаю, вещь, естественная и закономерная. Дело в том, что MySQL – это действительно самая популярная в мире Open Source СУБД. И люди, которые пробовали работать с Open Source СУБД (использовать, разрабатывать и т.д.), начинали именно с MySQL. И только если их MySQL чем-то не устраивал, то они начинали знакомиться PostgreSQL (не скажу, что происходит всегда, но знаю лично много примеров). Поэтому сообщество PostgreSQL естественным образом (не потому что кто-то злые козьни строит), прошло селекцию нелюбви к MySQL, и потом активно критикует. Но в том есть своеобразная плата за популярность.
Но, по своему опыту, могу сказать, что поток критики не всегда направлен в сторону от PostgreSQL к MySQL. Довольно часто сталкивался с мнением, что PostgreSQL не нужен, потому что уже есть MySQL и он популярен; и на PostgreSQL не нужно тратить ни времени, ни сил. Аргументы при этом приводились разные, многие в духе тех, которые ты разоблачаешь. Но опыт, он у каждого свой. Бывает, что кто-то кого-то в детстве покусал. Но со временем это проходит.
P.S. Не в то место дискуссии отправил коммент. Цитата позволяет однозначно определить, что я отвечал вот на это.
Успех поста — вещь вообще никак не связанная с его качеством.
Ну, не знаю. На мой взгляд качество поста – один из факторов, влияющих на его успех. Не единственный, конечно.
Я написал хороший и качественный пост на сложную тему.
Это непреложная истина, а все кто думают по-другому – непременно врут и ведут пропаганду? :)
А сложная она исключительно потому что, что врать легко, а опровергать враньё сложно.
Вот этого я не понимаю. Почему те, кто думаю по-другому, непременно врут, а ты непременно говоришь одну лишь правду и только опровергаешь враньё?
У тебя в твоей серии постов «Памятка евангелиста» довольно много спорных и, я бы даже сказал, жульнических и манипуляторских аргументов. Зачастую приписываешь оппоненту (реальному или виртуальному) то, чего он не говорил, а потом выставляешь его дураком. Реально спорные и дискуссионные вопросы при этом обходятся стороной.
А сложная она исключительно потому что, что врать легко, а опровергать враньё сложно. На этом основана любая пропаганда.
Но ведь и ты написал свой пост в духе пропаганды. Он, как минимум, очень однобокий, избегает альтернативных мнений, и дискуссионных вопросов.
Если по сути поста сказать нечего, попробуй просто промолчать, например.
Честно скажу, что по итогам твоей серии статей «памятка евангелисту» стала вырисовываться идея статьи «разоблачаем разоблачителя». Смущает то, что это будет ещё большим разжиганием срача. И ещё какой-то подсознательный страх есть, когда видишь советские плакаты, безапелляционные суждения, а также посыпание альтернативных мнений словами «враньё» и «пропаганда» :)
В статье действительно много слов, и я своей целью ставил рассмотреть конкретные аргументы, которые набрасывает Postgres Professional. Иначе статья была бы настолько большой, что её бы вообще никто не прочитал, т.к. attention span у современного читателя довольно низкий.
Напротив, я думаю, если бы ты написал хороший пост, а не агитку, его успех был бы намного больше. Можно будет проверить. Боюсь, что не смотря на моё нежелание, в конце концов придётся мне самому придётся разобраться в теме и написать объективный и нейтральный пост на данную тему.
Я также старался сфокусироваться на сути высказываний, а не на личностях. Это не всегда просто, и если я где-то допустил ненамеренный переход на личности, пожалуйста, дай мне знать!
На мой взгляд, вырванные из контекста дискуссии скриншоты комментариев – это не самая лучшая идея (а в данном случае читатель не может увидеть контекст даже при желании). Попробуй отразить эту ситуацию зеркально на себя. Из твоих комментариев можно запросто надёргать подборку, которая дискредитирует и твою точку зрения, и тебя лично.
Я не хочу тебя обвинять в том, что ты эти комментарии злонамеренно выбирал против меня или Олега. Но хочу обратить внимание на сомнительность самой такой практики.
Мне действительно было трудно понять твою точку зрения, потому что в явном виде ты её нигде не высказывал.
Я не высказывал точку зрения, потому что её не было. Она и сейчас не сформирована полностью, потому что пока я не располагаю достаточной фактической информацией.
Если бы ты в комментариях на Facebook написал: «Я не считаю MySQL проприетарным ПО, но считаю *процесс разработки* PostgreSQL более открытым», у меня вообще бы никаких вопросов не возникало.
Так я бы не написал. Если нужна моя позиция *на текущий момент*, то её можно сформулировать следующим образом: «Я не называю никакое ПО, распространяемое под свободной лицензией проприетарным, потому что не считаю себя в этом вопросе достаточно компетентным. Но при этом считаю PostgreSQL *в целом как проект* более открытым, чем MySQL.»
Честно скажу, не понимаю почему дискуссия по спорным вопросам выплёскивается в виде таких публичных статей на хабр с переходом на личности. Я, например, никогда не говорил, что MySQL – «проприетарщина» (вообще не употребляю этого слова), но действительно считаю что «степень свободности» проекта MySQL гораздо меньше, чем в PostgreSQL (что, иногда кстати, в идёт в ущерб последнему, тоже этого не отрицаю). При этом у меня нет какой-то 100% уверенности в своей позиции, и я готов на эту тему дискутировать. Но когда я пытался на хабре это обсудить с тобой, в комментариях к одному из твоих прошлый постов, то довольно быстро столкнулся с FUD'ом и переходом на личности уже с твоей стороны. Что касается Олега, то у него своё понимание «проприетарщины», и он его придерживается. В любом случае, вряд ли можно монополизировать понимание этого слова и заставить всех трактовать его также, как и ты.
Вопрос то у меня в следующем. Не являются ли такие статьи, как эта, проявлением агрессивного евангелизма, с которым они номинально призваны бороться?
Да, мы завели проприетарный форк. И сделали это на общих правах, также как это мог бы сделать любой Вася Пупкин. Преимуществоство наше здесь только в знаниях и опыте, а не каких либо правах. В этом и заключается отличие от MySQL, которое я хотел подчеркнуть.
CREATE OR REPLACE FUNCTION slow_div(bigint, bigint) RETURNS bigint AS
$$
BEGIN
RETURN $1 / $2;
END;
$$ LANGUAGE plpgsql COST 1000;
SELECT slow_div(1, 10 - g) FROM generate_series(1,10) g ORDER BY g LIMIT 1;
Для того, чтобы постгрес отложил вычисление функции, нужно ей cost по-больше задать.
На 9.5 этот запрос у меня возвращает ошибку «division by zero», в 9.6 успешно возвращает одну строку.
SELECT random() r, pg_sleep(1) FROM generate_series(1,10) ORDER BY r LIMIT 1;
В 9.5 и ниже pg_sleep() будет вычислены до того, как будет выполнен ORDER BY и LIMIT. Поэтому запрос длится чуть больше 10 секунд.
В 9.6 pg_sleep() будет выполнен после ORDER BY и LIMIT, поэтому запрос будет длиться чуть больше одной секунды.
Ну всё же наоборот. exec_eval_simple_expr вызывает GetTransactionSnapshot, а GetTransactionSnapshot вызывает GetSnapshotData. На картинке обратный стек вызовов, а не прямой.
Не совсем так. В данном патче я выступил в качестве коммиттера и соавтора, основной автор – Paul Jungwirth.
А если MPP форки на подобном железе запускать, то должно помочь и им.
postgrespro.ru/docs/postgrespro/10/wal-configuration
www.postgresql.org/message-id/CACowWR2LhVi4JHEVV=PYzLSyBfnpMd5+bhr2R8t5vzs0o79Ndw@mail.gmail.com
Скорее стоит смотеть в сторону отображения 2-мерное прямоугольника в 4-мерную точку, по аналогии с acdf2a8b372aec1da09370fca77ff7dccac7646d.
Патч о добавлении метода compress был на commitfest, но он как-то заглох. Будем его возобновлять.
www.postgresql.org/message-id/flat/54907069.1030506@sigaev.ru#54907069.1030506@sigaev.ru
Насколько я понял отсюда, пока реализован opclass только для точек. Точки имеют ограниченный размер, поэтому для них compress не так чтобы прямо жизненно необходим. Но, конечно, с compress'ом намного лучше, мы будем им заниматься.
Спасибо, я тебя тоже очень уважаю. Но ответить тем же на «не мальчика, но мужа», пока не могу (хотя надежды не оставляю). В твоих постах и комментариях на тему «PostgreSQL vs. MySQL» всё время сквозит какая-то обида. Если бы ты её преодолел, то дело продвижения MySQL только выиграло бы, ИМХО.
Интервью с Иваном Панченко я посмотрю, не думал, что вообще в нём что-то говорится о MySQL. Честно говоря, никогда не видел желания «спустить собак» на MySQL. Я бы сказал, что скорее MySQL вообще не брался в расчёт, а сравнение шло с коммерческими СУБД и NoSQL.
Да, задаёт. Но не вижу, где я своими комментариями задаю неправильный тренд, в том числе в тех комментариях, которые ты привёл в данной статье. Надо при этом учесть, что ты вырвал их из контекста. А эти комментарии делались под твоим провокационным постом в группе «PostgreSQL в России», что оправдывает их ироничный тон.
Конкретно кто? Олег? Я мало вообще говорил про MySQL, дискуссии с тобой – редкое исключение. У нас в компании многим нравится MySQL. Во внутренних дискуссиях, сотрудники часто указывают на недостатки PostgreSQL и достоинства MySQL. Если во внешних дискуссиях кто-то кого-то обидел, то дай знать. Мы не можем это сами полностью контролировать, но и никому ничего не навязываем. По вопросам «проприетарности», «свободного ПО», «открытого ПО», и высказываниям на этот счёт Олега я буду разбираться. Не обещаю что это будет быстро. Но как только у меня будет законченное мнение, я его изложу.
Вообще, усиленная критика MySQL со стороны сообщества PostgreSQL – я думаю, вещь, естественная и закономерная. Дело в том, что MySQL – это действительно самая популярная в мире Open Source СУБД. И люди, которые пробовали работать с Open Source СУБД (использовать, разрабатывать и т.д.), начинали именно с MySQL. И только если их MySQL чем-то не устраивал, то они начинали знакомиться PostgreSQL (не скажу, что происходит всегда, но знаю лично много примеров). Поэтому сообщество PostgreSQL естественным образом (не потому что кто-то злые козьни строит), прошло селекцию нелюбви к MySQL, и потом активно критикует. Но в том есть своеобразная плата за популярность.
Но, по своему опыту, могу сказать, что поток критики не всегда направлен в сторону от PostgreSQL к MySQL. Довольно часто сталкивался с мнением, что PostgreSQL не нужен, потому что уже есть MySQL и он популярен; и на PostgreSQL не нужно тратить ни времени, ни сил. Аргументы при этом приводились разные, многие в духе тех, которые ты разоблачаешь. Но опыт, он у каждого свой. Бывает, что кто-то кого-то в детстве покусал. Но со временем это проходит.
P.S. Не в то место дискуссии отправил коммент. Цитата позволяет однозначно определить, что я отвечал вот на это.
Ну, не знаю. На мой взгляд качество поста – один из факторов, влияющих на его успех. Не единственный, конечно.
Это непреложная истина, а все кто думают по-другому – непременно врут и ведут пропаганду? :)
Вот этого я не понимаю. Почему те, кто думаю по-другому, непременно врут, а ты непременно говоришь одну лишь правду и только опровергаешь враньё?
У тебя в твоей серии постов «Памятка евангелиста» довольно много спорных и, я бы даже сказал, жульнических и манипуляторских аргументов. Зачастую приписываешь оппоненту (реальному или виртуальному) то, чего он не говорил, а потом выставляешь его дураком. Реально спорные и дискуссионные вопросы при этом обходятся стороной.
Но ведь и ты написал свой пост в духе пропаганды. Он, как минимум, очень однобокий, избегает альтернативных мнений, и дискуссионных вопросов.
Честно скажу, что по итогам твоей серии статей «памятка евангелисту» стала вырисовываться идея статьи «разоблачаем разоблачителя». Смущает то, что это будет ещё большим разжиганием срача. И ещё какой-то подсознательный страх есть, когда видишь советские плакаты, безапелляционные суждения, а также посыпание альтернативных мнений словами «враньё» и «пропаганда» :)
Напротив, я думаю, если бы ты написал хороший пост, а не агитку, его успех был бы намного больше. Можно будет проверить. Боюсь, что не смотря на моё нежелание, в конце концов придётся мне самому придётся разобраться в теме и написать объективный и нейтральный пост на данную тему.
На мой взгляд, вырванные из контекста дискуссии скриншоты комментариев – это не самая лучшая идея (а в данном случае читатель не может увидеть контекст даже при желании). Попробуй отразить эту ситуацию зеркально на себя. Из твоих комментариев можно запросто надёргать подборку, которая дискредитирует и твою точку зрения, и тебя лично.
Я не хочу тебя обвинять в том, что ты эти комментарии злонамеренно выбирал против меня или Олега. Но хочу обратить внимание на сомнительность самой такой практики.
Я не высказывал точку зрения, потому что её не было. Она и сейчас не сформирована полностью, потому что пока я не располагаю достаточной фактической информацией.
Так я бы не написал. Если нужна моя позиция *на текущий момент*, то её можно сформулировать следующим образом: «Я не называю никакое ПО, распространяемое под свободной лицензией проприетарным, потому что не считаю себя в этом вопросе достаточно компетентным. Но при этом считаю PostgreSQL *в целом как проект* более открытым, чем MySQL.»
Вопрос то у меня в следующем. Не являются ли такие статьи, как эта, проявлением агрессивного евангелизма, с которым они номинально призваны бороться?
Для того, чтобы постгрес отложил вычисление функции, нужно ей cost по-больше задать.
На 9.5 этот запрос у меня возвращает ошибку «division by zero», в 9.6 успешно возвращает одну строку.
В 9.5 и ниже pg_sleep() будет вычислены до того, как будет выполнен ORDER BY и LIMIT. Поэтому запрос длится чуть больше 10 секунд.
В 9.6 pg_sleep() будет выполнен после ORDER BY и LIMIT, поэтому запрос будет длиться чуть больше одной секунды.