{"id":308502,"date":"2020-08-14T21:00:43","date_gmt":"2020-08-14T21:00:43","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=308502"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=308502","title":{"rendered":"PostgreSQL 14: \u0427\u0430\u0441\u0442\u044c 1 \u0438\u043b\u0438 \u00ab\u0438\u044e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u043e\u0433\u0440\u0435\u0432\u00bb (\u041a\u043e\u043c\u043c\u0438\u0442\u0444\u0435\u0441\u0442 2020-07)"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/510124\/\">\u0412\u044b\u0445\u043e\u0434 PostgreSQL 13, \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0443\u0436\u0435 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/493106\/\">\u043f\u0438\u0441\u0430\u043b\u0438<\/a>, \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u0435\u043d\u044c\u044e. \u041d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0432 \u043d\u0435\u043c \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a PostgreSQL 14.<\/p>\n<p>  \u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439 14 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 5 \u043a\u043e\u043c\u043c\u0438\u0442\u0444\u0435\u0441\u0442\u043e\u0432. \u041f\u0435\u0440\u0432\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u2014 <a href=\"https:\/\/commitfest.postgresql.org\/28\/\">\u0438\u044e\u043b\u044c\u0441\u043a\u0438\u0439<\/a> \u2014 \u0443\u0436\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0435\u0441\u0442\u044c \u0447\u0442\u043e \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0431\u044b\u043b\u043e \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043e. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u0430\u0442\u0447\u0438 \u0441 \u043d\u043e\u0432\u044b\u043c \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c \u0421\u0423\u0411\u0414. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 PostgreSQL. \u0410 \u0442\u043e \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u043e, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u044f\u043c: \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a, \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433, \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f(\u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430), \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. <\/p>\n<p>  \u0414\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435, \u0446\u0435\u043b\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0451 \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u043b\u0430\u0441\u044c. \u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0432\u0430\u0436\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043f\u043e <a href=\"https:\/\/www.postgresql.org\/docs\/13\/release.html\">\u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u043c \u043a \u0432\u044b\u043f\u0443\u0441\u043a\u0443<\/a>. \u0410 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0441\u0441\u043b\u0430\u0431\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u00ab\u0432\u0435\u0441\u0442\u0438 \u0441 \u043f\u043e\u043b\u0435\u0439\u00bb \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0415\u0441\u043b\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0438\u043d\u043a\u0438, \u0442\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c PostgreSQL \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432. \u0410 \u0432\u043e\u0442 <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/index.html\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a> \u043d\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0435 \u043f\u0430\u0442\u0447\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043e\u043d\u043b\u0430\u0439\u043d.<\/p>\n<p>  \u0412\u043f\u043e\u043b\u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u043a\u0440\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043a\u043e\u043c\u043c\u0438\u0442\u0444\u0435\u0441\u0442\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u0432 git. \u041f\u0440\u0438 \u043b\u044e\u0431\u044b\u0445 \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u044f\u0445 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0434\u043e\u0447\u0435\u0442\u0430\u0445. <\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c.<\/p>\n<h1>\u041d\u043e\u0432\u043e\u0441\u0442\u0438 PostgreSQL 13<\/h1>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e \u043d\u043e\u0432\u043e\u0441\u0442\u0438 14 \u0432\u0435\u0440\u0441\u0438\u0438, \u043d\u043e \u043a\u0430\u043a \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u043f\u0435\u0440\u0432\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u0430\u0442\u0447\u0435\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043a 13 \u0432\u0435\u0440\u0441\u0438\u0438. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0430\u043f\u0440\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0438 \u043a\u043e\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u043e\u0432\u0448\u0435\u0441\u0442\u0432 \u0431\u044b\u043b \u0438\u0437\u043c\u0435\u043d\u0435\u043d \u0438 \u043e\u0431 \u044d\u0442\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c.<\/p>\n<p>  <a name=\"p1\"><\/a><b>pg_stat_activity.leader_pid IS NULL \u0434\u043b\u044f \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430<\/b><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/11a68e\">11a68e<\/a><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0438 \u043a\u043e\u0434\u0430 13 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 leader_pid \u0432 <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW\">pg_stat_activity<\/a> \u2014 \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043d\u043e \u0438 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 leader_pid \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c.<\/p>\n<p>  <a name=\"p2\"><\/a><b>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f: \u043d\u043e\u0432\u043e\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 \u0432 \u0433\u043b\u0430\u0432\u0435 \u00ab\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b\u00bb<\/b><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/e894c61\">e894c61<\/a><\/p>\n<p>  \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u0434\u043b\u044f 13 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0443\u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0432 \u043d\u043e\u0432\u043e\u043c \u0441\u0442\u0438\u043b\u0435. \u0422\u0430\u043a\u043e\u0435 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0435\u0441\u0442\u0430, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 PDF. \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0432 <a href=\"https:\/\/www.postgresql.org\/docs\/13\/functions-math.html\">\u043d\u043e\u0432\u043e\u043c<\/a> \u0438 <a href=\"https:\/\/www.postgresql.org\/docs\/12\/functions-math.html\">\u0441\u0442\u0430\u0440\u043e\u043c<\/a> \u0441\u0442\u0438\u043b\u0435.<\/p>\n<p>  <a name=\"p3\"><\/a><b>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 wal_keep_segments \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442<\/b><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/c3fe108\">c3fe108<\/a><\/p>\n<p>  \u0412\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/runtime-config-replication.html#GUC-WAL-KEEP-SIZE\">wal_keep_size<\/a>. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 pg_wal, \u0430 \u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c. \u0421\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0443\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441 \u043d\u043e\u0432\u044b\u043c \u0434\u043b\u044f 13 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <a href=\"https:\/\/www.postgresql.org\/docs\/13\/runtime-config-replication.html#GUC-MAX-SLOT-WAL-KEEP-SIZE\">max_slot_wal_keep_size<\/a> \u2014 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u043e\u0432 WAL, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u0441\u043b\u043e\u0442\u043e\u0432 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u041c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f <a href=\"https:\/\/www.depesz.com\/2020\/07\/27\/waiting-for-postgresql-14-rename-wal_keep_segments-to-wal_keep_size\/\">\u043d\u0435 \u0441\u043c\u043e\u0433 \u043f\u0440\u043e\u0439\u0442\u0438<\/a> depesz \u0432 \u0441\u0432\u043e\u0435\u0439 \u043d\u043e\u0432\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 Waiting for PostgreSQL 14. \u041d\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u0430\u0434\u0435\u0442 \u0438 \u0432 13 \u0432\u0435\u0440\u0441\u0438\u044e, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 beta3.<\/p>\n<p>  <a name=\"p4\"><\/a><b>pg_validatebackup \u2192 pg_verifybackup<\/b><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/dbc60c5\">dbc60c5<\/a><\/p>\n<p>  \u041d\u043e\u0432\u0430\u044f \u0434\u043b\u044f 13 \u0432\u0435\u0440\u0441\u0438\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 pg_validatebackup \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0438 \u043a\u043e\u0434\u0430 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0430 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f pg_verifybackup.<\/p>\n<p>  <a name=\"p5\"><\/a><b>sslminprotocolversion \u2192 ssl_min_protocol_version, sslmaxprotocolversion \u2192 ssl_max_protocol_version<\/b><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/401aad6\">401aad6<\/a><\/p>\n<p>  \u041d\u043e\u0432\u044b\u0435 \u0434\u043b\u044f 13 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b sslminprotocolversion \u0438 sslmaxprotocolversion \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u044b: <a href=\"https:\/\/www.postgresql.org\/docs\/13\/runtime-config-connection.html#GUC-SSL-MIN-PROTOCOL-VERSION\">ssl_min_protocol_version<\/a> \u0438 <a href=\"https:\/\/www.postgresql.org\/docs\/13\/runtime-config-connection.html#GUC-SSL-MAX-PROTOCOL-VERSION\">ssl_max_protocol_version<\/a>.<\/p>\n<p>  <a name=\"p6\"><\/a><b>ALTER\u2026 <i>NO<\/i> DEPENDS ON EXTENSION &#8230;<\/b><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/5fc7039\">5fc7039<\/a><\/p>\n<p>  \u0412 \u0432\u0435\u0440\u0441\u0438\u0438 9.6 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 ALTER\u2026 DEPENDS ON EXTENSION\u2026 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f, \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. \u041d\u043e \u0437\u0430\u0431\u044b\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u0441\u043d\u044f\u0442\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. \u0423\u043f\u0443\u0449\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432 13 \u0432\u0435\u0440\u0441\u0438\u044e. \u0418\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0436\u0430\u043b\u043e\u0431 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435 \u0441\u0442\u0430\u043b\u0438.<\/p>\n<p>  <a name=\"p7\"><\/a><b>\u041d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/runtime-config-resource.html#GUC-HASH-MEM-MULTIPLIER\">hash_mem_multiplier<\/a><\/b><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/d6c08e2\">d6c08e2<\/a><\/p>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u044c \u0437\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438(work_mem) \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0445\u0435\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0435\u0449\u0435 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0438 \u043a\u043e\u0434\u0430 13 \u0432\u0435\u0440\u0441\u0438\u0438. \u0415\u0441\u043b\u0438 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043e\u0448\u0438\u0431\u0441\u044f \u0432 \u043e\u0446\u0435\u043d\u043a\u0430\u0445 \u0438 work_mem \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u2014 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u0442.\u043a. \u043d\u044b\u043d\u0435\u0448\u043d\u0435\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043c\u044f\u0442\u0438, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0430 \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435 \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 OOM-killer. <\/p>\n<p>  \u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b\u0438\u0441\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b enable_groupingsets_hash_disk \u0438 enable_hashagg_disk. \u041a \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u044b\u043f\u0443\u0441\u043a\u0430 13 beta2 \u043e\u0431\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438 \u043d\u0430 hashagg_avoid_disk_plan. \u041d\u043e \u0438 \u044d\u0442\u043e\u0433\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043c\u0435\u0441\u0442\u043e hashagg_avoid_disk_plan \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f hash_mem_multiplier. <\/p>\n<p>  \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u0437\u044f\u0442\u043e \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 bgwriter_lru_multiplier \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0443\u043c\u043d\u043e\u0436\u0430\u0435\u0442 work_mem, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 1, \u0447\u0442\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u2014 \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u043b\u044f \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0442\u044c work_mem.<\/p>\n<p>  \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u044d\u0442\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c, \u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u044f work_mem, \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443 \u0431\u043e\u043b\u044c\u0448\u0435 \u0448\u0430\u043d\u0441\u043e\u0432 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0441 \u0445\u0435\u0448 \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u0435\u043d\u0435\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a \u043d\u0430\u043b\u0438\u0447\u0438\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043e\u043a (\u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 hash join \u0432\u043c\u0435\u0441\u0442\u043e merge join).<\/p>\n<p>  <a name=\"p8\"><\/a><b>EXPLAIN ANALYZE: \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u0443\u0437\u043b\u0430 HashAggregate<\/b><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/0e3e1c4\">0e3e1c4<\/a><\/p>\n<p>  \u0410 \u0432\u043e\u0442 \u043a\u0430\u043a \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u043b\u0430\u043d\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a <a href=\"https:\/\/postgrespro.ru\/education\/demodb\">\u0434\u0435\u043c\u043e-\u0431\u0430\u0437\u0435<\/a>:<\/p>\n<pre><code class=\"pgsql\">EXPLAIN (ANALYZE) SELECT tf.fare_conditions, count(*)                     FROM ticket_flights tf GROUP BY tf.fare_conditions; <\/code><\/pre>\n<p>  \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c\u0441\u044f \u043b\u0438\u0448\u044c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u043b\u0430\u043d\u0430 \u0441 \u0443\u0437\u043b\u043e\u043c HashAggregate.<\/p>\n<p>  \u0412\u0435\u0440\u0441\u0438\u044f 12:<\/p>\n<pre><code class=\"plaintext\">-&gt;  Partial HashAggregate       Group Key: fare_conditions       -&gt;  Parallel Seq Scan on ticket_flights tf <\/code><\/pre>\n<p>  \u0412\u0435\u0440\u0441\u0438\u044f 13beta2:<\/p>\n<pre><code class=\"plaintext\">-&gt;  Partial HashAggregate       Group Key: fare_conditions       Peak Memory Usage: 24 kB       Worker 0:  Peak Memory Usage: 24 kB       Worker 1:  Peak Memory Usage: 24 kB       -&gt;  Parallel Seq Scan on ticket_flights tf <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c:<\/p>\n<pre><code class=\"plaintext\">-&gt;  Partial HashAggregate       Group Key: fare_conditions       Batches: 1  Memory Usage: 24kB       Worker 0:  Batches: 1  Memory Usage: 24kB       Worker 1:  Batches: 1  Memory Usage: 24kB       -&gt;  Parallel Seq Scan on ticket_flights tf <\/code><\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0438\u0433\u0440\u0443 \u00ab\u043d\u0430\u0439\u0434\u0438 10 \u043e\u0442\u043b\u0438\u0447\u0438\u0439\u00bb \u0432\u043e\u0442 \u043e\u043d\u0438, \u0438 \u0438\u0445 5:<\/p>\n<ul>\n<li>\u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043f\u0430\u043a\u0435\u0442\u043e\u0432 (batches) \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 1, \u0430 \u043d\u0435 0;<\/li>\n<li>Batches \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u0430\u043a\u0435\u0442 \u0431\u044b\u043b \u0432\u0441\u0435\u0433\u043e 1;<\/li>\n<li>\u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f Batches \u0432\u043c\u0435\u0441\u0442\u043e HashAgg Batches;<\/li>\n<li>\u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f Memory Usage \u0432\u043c\u0435\u0441\u0442\u043e Peak Memory Usage;<\/li>\n<li>Batches \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 Memory Usage<\/li>\n<\/ul>\n<p>  \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043f\u043b\u0430\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<p>  <a name=\"p9\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2515\/\"><b>\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0443\u0437 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u043a\u0438<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/cedffbd\">cedffbd<\/a><\/p>\n<p>  \u041f\u0430\u0443\u0437\u044b \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 ([autovacuum_]vacuum_cost_delay) \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 pg_stat_activity.wait_event_type=Timeout \u0438 wait_event=VacuumDelay. \u0414\u043e \u044d\u0442\u043e\u0433\u043e \u0441\u0447\u0438\u0442\u0430\u043b\u043e\u0441\u044c \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0436\u0434\u0435\u0442 \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u044b wait_enent* \u0431\u044b\u043b\u0438 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b.<\/p>\n<p>  \u0425\u0432\u0430\u0442\u0438\u0442 \u043e 13 \u0432\u0435\u0440\u0441\u0438\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u044d\u043a\u0441\u043a\u043b\u044e\u0437\u0438\u0432\u0443 \u0432\u0435\u0440\u0441\u0438\u0438 14.<\/p>\n<h1>\u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h1>\n<p>  <a name=\"p10\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2598\/\"><b>vacuumdb &#8212;no-truncate &#8212;no-index-cleanup<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/9550ea3\">9550ea3<\/a><\/p>\n<p>  \u0423\u0442\u0438\u043b\u0438\u0442\u0430 vacuumdb \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u0434\u0432\u0430 \u043d\u043e\u0432\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438: &#8212;no-truncate \u0438 &#8212;no-index-cleanup. \u0421 \u0438\u0445 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b VACUUM, \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0432 12 \u0432\u0435\u0440\u0441\u0438\u0438: TRUNCATE (\u043d\u0443\u0436\u043d\u043e \u043b\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c \u0444\u0430\u0439\u043b, \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0447\u0438\u0449\u0435\u043d\u044b) \u0438 INDEX_CLEANUP (\u043d\u0443\u0436\u043d\u043e \u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u0447\u0438\u0441\u0442\u043a\u0443 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432).<\/p>\n<h1>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h1>\n<p>  <a name=\"p11\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2543\/\"><b>pg_stat_statements: \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/6023b7e\">6023b7e<\/a><\/p>\n<p>  \u0420\u0430\u043d\u044c\u0448\u0435 \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434 CREATE TABLE AS, SELECT INTO, CREATE MATERIALIZED VIEW, FETCH \u0432 pg_stat_statements.rows \u043d\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u0422\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430:<\/p>\n<pre><code class=\"pgsql\">CREATE TABLE bookings_copy AS SELECT * FROM bookings; <\/code><\/pre>\n<pre><code class=\"plaintext\">SELECT 262788<\/code><\/pre>\n<pre><code class=\"pgsql\">SELECT query,rows FROM pg_stat_statements      WHERE query LIKE 'CREATE TABLE bookings_copy%'; <\/code><\/pre>\n<pre><code class=\"plaintext\">                        query                         |  rows   ------------------------------------------------------+--------  CREATE TABLE bookings_copy AS SELECT * FROM bookings | 262788 <\/code><\/pre>\n<p>  <a name=\"p12\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2571\/\"><b>\u041d\u043e\u0432\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0432 pg_prepared_statements: generic_plans, custom_plans<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/d05b172\">d05b172<\/a><\/p>\n<p>  \u0412 pg_prepared_statements \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0441 \u043e\u0431\u0449\u0438\u043c \u0438 \u0447\u0430\u0441\u0442\u043d\u044b\u043c \u043f\u043b\u0430\u043d\u043e\u043c. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0446\u0435\u043b\u044c \u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 pg_stat_statements.<\/p>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (plan_cache_mode = auto), \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u044f\u0442\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u043e\u0431\u0449\u0438\u0439 \u043f\u043b\u0430\u043d \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0445\u0443\u0436\u0435 \u0447\u0430\u0441\u0442\u043d\u043e\u0433\u043e, \u0442\u043e \u043e\u043d \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043e\u0431\u0449\u0438\u0439 \u043f\u043b\u0430\u043d, \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u044f \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0435\u043c\u044c \u0440\u0430\u0437 \u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u044f\u0442\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0443\u0436\u0435 \u0441 \u043e\u0431\u0449\u0438\u043c \u043f\u043b\u0430\u043d\u043e\u043c:<\/p>\n<pre><code class=\"pgsql\">\\d pg_prepared_statements <\/code><\/pre>\n<pre><code class=\"plaintext\">                  View &quot;pg_catalog.pg_prepared_statements&quot;      Column      |           Type           | Collation | Nullable | Default -----------------+--------------------------+-----------+----------+---------  name            | text                     |           |          |  statement       | text                     |           |          |  prepare_time    | timestamp with time zone |           |          |  parameter_types | regtype[]                |           |          |  from_sql        | boolean                  |           |          |  generic_plans   | bigint                   |           |          |  custom_plans    | bigint                   |           |          | <\/code><\/pre>\n<pre><code class=\"pgsql\">PREPARE q(text) AS SELECT count(*) FROM bookings WHERE book_ref = $1; SELECT $$EXECUTE q('ABCDEF')$$ FROM generate_series(1,7)\\gexec  SELECT generic_plans, custom_plans FROM pg_prepared_statements WHERE name = 'q'; <\/code><\/pre>\n<pre><code class=\"plaintext\"> generic_plans | custom_plans ---------------+--------------              2 |            5 <\/code><\/pre>\n<p>  <a name=\"p13\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2577\/\"><b>\u0414\u043e\u0441\u0442\u0443\u043f \u043d\u0435 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/cc07264\">cc07264<\/a><\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 (pg_*replication_origin*), \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438. \u0420\u0430\u043d\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u044b\u043b\u0430 \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u0448\u0438\u0442\u0430 \u0432 \u043a\u043e\u0434\u0435. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0443\u0431\u0440\u0430\u043b\u0438 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u043b\u0438 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0443 public. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 GRANT \u0432\u044b\u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043b\u044e\u0431\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c. \u042d\u0442\u043e \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f pg_replication_origin_status \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c.<\/p>\n<p>  \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u043e\u043b\u0438 pg_monitor \u0434\u043e\u0441\u0442\u0443\u043f \u043a pg_replication_origin_status. \u041d\u043e \u044d\u0442\u043e \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e.<\/p>\n<p>  <a name=\"p14\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2595\/\"><b>\u0424\u0443\u043d\u043a\u0446\u0438\u044f pgstattuple_approx \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u044b TOAST<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/ee0202d\">ee0202d<\/a><\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f pgstattuple_approx \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e, \u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0443\u044e, \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 pgstattuple \u0438\u0437 \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u0440\u0430\u0441\u043f\u0443\u0445\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0423\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0430 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043a\u0430\u0440\u0442\u044b \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043a\u0430\u0440\u0442\u044b \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u0414\u043e 14 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u0443\u044e \u043e\u0446\u0435\u043d\u043a\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446 TOAST. \u0422\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e.<\/p>\n<h1>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h1>\n<p>  \u0423 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u0430\u0442\u0447\u0435\u0439 \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438 \u0432\u0441\u0451 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0425\u043e\u0442\u044f \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u00ab\u0440\u0443\u0447\u043a\u0438\u00bb (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043f\u043e\u0434\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430.<\/p>\n<p>  \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0437\u0430\u043c\u0435\u0440\u043e\u0432. \u041d\u043e \u0438\u0445 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0430\u044f \u043e\u0447\u0435\u043d\u044c \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0438 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432. \u0410 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043a\u0430\u043a\u0438\u0435 \u0431\u044b \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0432 \u0437\u0430\u043c\u0435\u0440\u0430\u0445, \u043e\u043d\u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u043d\u0430 \u043d\u0435\u043a\u043e\u0439 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0418 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438\u043c \u043d\u0435 \u0441\u0442\u043e\u0438\u0442. \u041b\u044e\u0431\u0443\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0440\u0438\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c PostgreSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0442\u0435\u0441\u0442\u0430\u0445 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/p>\n<p>  <a name=\"p15\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2471\/\"><b>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 pg_attribute \u0438 pg_shdepend<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/e3931d0\">e3931d0<\/a><\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0431\u043e\u0440\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 pg_attribute, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430 \u043e\u0434\u0438\u043d \u0440\u0430\u0437. \u041f\u043e \u0441\u043b\u043e\u0432\u0430\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a 15% \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044e \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 WAL. \u0422\u0430\u043a\u0430\u044f \u0436\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f pg_shdepend.<\/p>\n<p>  <a name=\"p16\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2590\/\"><b>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 PL\/pgSQL<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/1f902d4\">1f902d4<\/a>, <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/fe2e206\">fe2e206<\/a><\/p>\n<p>  PL\/pgSQL \u0441\u0442\u0430\u043b \u0447\u0443\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041f\u0440\u0430\u0432\u0434\u0430, \u044d\u0442\u043e \u043d\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043d\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 x86_64, \u0430 \u0432\u043e\u0442 aarch64 \u0432\u044b\u0438\u0433\u0440\u0430\u043b\u0430 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e.<\/p>\n<p>  <a name=\"p17\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2516\/\"><b>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f RETURN QUERY \u0432 PL\/pgSQL<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/2f48ede\">2f48ede<\/a><\/p>\n<p>  \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0434\u0430\u0447\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u043e \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 RETURN QUERY, RETURN QUERY EXECUTE.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c RETURN QUERY.<\/p>\n<pre><code class=\"pgsql\">CREATE FUNCTION get_fc(OUT fare_conditions varchar, OUT total bigint)     RETURNS SETOF RECORD AS $$ BEGIN     RETURN QUERY SELECT tf.fare_conditions, count(*)                    FROM ticket_flights tf GROUP BY tf.fare_conditions; END; $$ LANGUAGE plpgsql STABLE PARALLEL SAFE; <\/code><\/pre>\n<p>  \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c auto_explain \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<pre><code class=\"pgsql\">SET auto_explain.log_min_duration = 0; SET auto_explain.log_nested_statements = on; SELECT * FROM get_fc();<\/code><\/pre>\n<p>  \u0412 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u043b\u0430\u043d \u0441 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c:<\/p>\n<pre><code class=\"pgsql\">\\! tail -n18 logfile <\/code><\/pre>\n<pre><code class=\"plaintext\">2020-08-06 23:23:34.825 MSK [17278] LOG:  duration: 80.701 ms  plan:     Query Text: SELECT tf.fare_conditions, count(*)                        FROM ticket_flights tf GROUP BY tf.fare_conditions     Finalize GroupAggregate  (cost=16250.86..16251.62 rows=3 width=16)       Group Key: fare_conditions       -&gt;  Gather Merge  (cost=16250.86..16251.56 rows=6 width=16)             Workers Planned: 2             -&gt;  Sort  (cost=15250.84..15250.85 rows=3 width=16)                   Sort Key: fare_conditions                   -&gt;  Partial HashAggregate  (cost=15250.79..15250.82 rows=3 width=16)                         Group Key: fare_conditions                         -&gt;  Parallel Seq Scan on ticket_flights tf  (cost=0.00..13072.19 rows=435719 width=8) 2020-08-06 23:23:34.825 MSK [17278] CONTEXT:  SQL statement &quot;SELECT tf.fare_conditions, count(*)                        FROM ticket_flights tf GROUP BY tf.fare_conditions&quot;     PL\/pgSQL function get_fc() line 3 at RETURN QUERY 2020-08-06 23:23:34.825 MSK [17278] LOG:  duration: 82.101 ms  plan:     Query Text: SELECT * FROM get_fc();     Function Scan on get_fc  (cost=0.25..10.25 rows=1000 width=40) <\/code><\/pre>\n<p>  <a name=\"p18\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2527\/\"><b>\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u00ab\u0431\u044b\u0441\u0442\u0440\u043e\u0439\u00bb \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/84b1c63\">84b1c63<\/a><\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u043e\u0432\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/runtime-config-resource.html#GUC-MIN-DYNAMIC-SHARED-MEMORY\">min_dynamic_shared_memory<\/a> \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u0443 \u00ab\u0431\u044b\u0441\u0442\u0440\u0443\u044e\u00bb \u043f\u0430\u043c\u044f\u0442\u044c, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u043c \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432 dynamic_shared_memory_type, \u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>  <a name=\"p19\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2560\/\"><b>\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b: \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0443\u0437\u043b\u0435 Gather \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/cdc7169\">cdc7169<\/a><\/p>\n<p>  \u0418 \u044d\u0442\u0438\u043c \u0432\u0441\u0451 \u0441\u043a\u0430\u0437\u0430\u043d\u043e. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441\u0442\u0430\u043d\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/p>\n<p>  <a name=\"p20\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2605\/\"><b>\u0412\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 btree_gist \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u043a\u0430\u043a PARALLEL_SAFE<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/d98c08c\">d98c08c<\/a><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435.<\/p>\n<p>  <a name=\"p21\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2609\/\"><b>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/56788d2\">56788d2<\/a><\/p>\n<p>  \u0420\u0430\u043d\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0431\u043b\u043e\u043a\u0443 \u0437\u0430 \u0440\u0430\u0437. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u043f\u043e\u0440\u0446\u0438\u044f\u043c\u0438, \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0442\u0447\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445 SSD \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c Linux, FreeBSD, Windows. \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u043b\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0435 \u0441\u0442\u043e\u043b\u044c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b.<\/p>\n<p>  <a name=\"p22\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2606\/\"><b>\u041a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/c5315f4\">c5315f4<\/a><\/p>\n<p>  \u041f\u0440\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438, \u0437\u0430 \u0441\u0447\u0435\u0442 \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b\u043e\u0441\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u043e\u0432 lseek(SEEK_END). \u0410 \u044d\u0442\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. \u0420\u0435\u043f\u043b\u0438\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u041b\u044e\u0431\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0434\u0435\u0441\u044c \u043a \u043c\u0435\u0441\u0442\u0443.<\/p>\n<p>  <a name=\"p23\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2632\/\"><b>COPY FROM \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0441\u0442\u0430\u043b\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/0a0727c\">0a0727c<\/a><\/p>\n<p>  \u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 COPY FROM \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043d\u0430 30% \u0432 Linux, \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432 MacOS.<\/p>\n<p>  <a name=\"p24\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2626\/\"><b>COPY FROM \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u0443\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0430\u043c\u044f\u0442\u0438<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/cd22d3c\">cd22d3c<\/a><\/p>\n<p>  \u0415\u0449\u0435 \u043e\u0434\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f COPY FROM \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c ~ 65\u041a\u0431 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a.<\/p>\n<h1>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f<\/h1>\n<p>  <a name=\"p25\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2152\/\"><b>\u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/9de77b5\">9de77b5<\/a><\/p>\n<p>  \u042d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438\/\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435:<\/p>\n<pre><code class=\"pgsql\">CREATE|ALTER SUBSCRIPTION \u2026 WITH (BINARY = ON) <\/code><\/pre>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d. \u041f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0442\u0435\u0445 \u0442\u0438\u043f\u043e\u0432, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 send\/receive. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f input\/output.<\/p>\n<h1>\u0421\u0435\u0440\u0432\u0435\u0440<\/h1>\n<p>  <a name=\"p26\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/1947\/\"><b>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 NULL \u0434\u043b\u044f \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/2a10fdc\">2a10fdc<\/a><\/p>\n<p>  \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0432\u044b\u0437\u043e\u0432 <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/functions-info.html#FUNCTIONS-INFO-OBJECT-TABLE\">\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/a> \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b \u043a \u043e\u0448\u0438\u0431\u043a\u0435:<\/p>\n<pre><code class=\"pgsql\">SELECT pg_describe_object('pg_class'::regclass, 0::oid, 0); <\/code><\/pre>\n<pre><code class=\"plaintext\">ERROR:  cache lookup failed for relation 0 <\/code><\/pre>\n<p>  \u041d\u043e \u043e\u0448\u0438\u0431\u043a\u0430 cache lookup failed \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c. \u0412\u0441\u0435 \u0432\u0438\u0434\u0438\u043c\u044b\u0435 <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/errcodes-appendix.html\">\u0442\u0438\u043f\u044b \u043e\u0448\u0438\u0431\u043e\u043a<\/a> \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 NULL. <\/p>\n<p>  \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0442\u0435\u043c, \u043a\u0442\u043e \u043f\u0438\u0448\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\/\u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c.<\/p>\n<p>  <a name=\"p27\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2587\/\"><b>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/d2bddc2\">d2bddc2<\/a><\/p>\n<p>  \u041d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/runtime-config-resource.html#GUC-HUGE-PAGE-SIZE\">huge_page_size<\/a> \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 0, \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u041e\u0421.<\/p>\n<p>  <a name=\"p28\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2594\/\"><b>\u0423 \u0442\u0438\u043f\u0430 numeric \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u00ab\u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u044c\u00bb \u0438 \u00ab\u043c\u0438\u043d\u0443\u0441 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u044c\u00bb<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/a57d312\">a57d312<\/a><\/p>\n<p>  \u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u043e\u0435 \u0436\u0435 \u043a\u0430\u043a \u0438 \u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0442\u0438\u043f\u043e\u0432 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439. \u042d\u0442\u043e \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 (\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435) \u0432 \u0447\u0438\u0441\u043b\u0430 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<h1>\u0420\u0430\u0437\u043d\u043e\u0435<\/h1>\n<p>  <a name=\"p29\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2243\/\"><b>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 amadjustmembers \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0447\u043b\u0435\u043d\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/9f96827\">9f96827<\/a><\/p>\n<p>  \u041d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0451 \u0441 <a href=\"https:\/\/www.postgresql.org\/message-id\/458.1565114141@sss.pgh.pa.us\">\u0442\u043e\u0433\u043e<\/a>, \u0447\u0442\u043e \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 intarray \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 SQL \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 &lt;@ \u0438\u0437 \u043a\u043b\u0430\u0441\u0441\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f GiST. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0431\u044b\u043b \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/index-functions.html\">\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/a>. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f amadjustmembers. \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 intarray \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>  <a name=\"p30\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2549\/\"><b>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b + \u0438 \u2212 \u0434\u043b\u044f \u0442\u0438\u043f\u0430 pg_lsn<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/9bae7e4\">9bae7e4<\/a><\/p>\n<p>  \u0415\u0449\u0435 \u043d\u0435 \u0443\u0441\u043f\u0435\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0432 13 \u0432\u0435\u0440\u0441\u0438\u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 min \u0438 max \u0434\u043b\u044f \u0442\u0438\u043f\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 pg_lsn, \u043a\u0430\u043a \u0432 14-\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f\/\u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u044f \u0431\u0430\u0439\u0442\u043e\u0432:<\/p>\n<pre><code class=\"pgsql\">SELECT w.lsn, w.lsn +1, w.lsn -1 FROM (SELECT pg_current_wal_lsn()) AS w(lsn); <\/code><\/pre>\n<pre><code class=\"plaintext\">    lsn    | ?column?  | ?column?   -----------+-----------+-----------  0\/EF04B78 | 0\/EF04B79 | 0\/EF04B77 <\/code><\/pre>\n<p>  <a name=\"p31\"><\/a><a href=\"https:\/\/commitfest.postgresql.org\/28\/2555\/\"><b>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438<\/b><\/a><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/b1e48bb\">b1e48bb<\/a><\/p>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 pg_xact_commit_timestamp_origin. \u042d\u0442\u0443 \u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 pg_last_committed_xact.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 track_commit_timestamp:<\/p>\n<pre><code class=\"pgsql\">SHOW track_commit_timestamp; <\/code><\/pre>\n<pre><code class=\"plaintext\"> track_commit_timestamp ------------------------  on <\/code><\/pre>\n<pre><code class=\"pgsql\">SELECT pg_current_xact_id(); <\/code><\/pre>\n<pre><code class=\"plaintext\"> pg_current_xact_id  --------------------                 721 <\/code><\/pre>\n<pre><code class=\"pgsql\">SELECT * FROM pg_xact_commit_timestamp_origin('721'::xid); <\/code><\/pre>\n<pre><code class=\"plaintext\">           timestamp           | roident -------------------------------+---------  2020-08-10 13:57:18.103297+03 |       0 <\/code><\/pre>\n<pre><code class=\"pgsql\">SELECT * FROM pg_last_committed_xact(); <\/code><\/pre>\n<pre><code class=\"plaintext\"> xid |           timestamp           | roident -----+-------------------------------+---------  721 | 2020-08-10 13:57:18.103297+03 |       0 <\/code><\/pre>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u043a\u0430 \u0432\u0441\u0451. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 <a href=\"https:\/\/commitfest.postgresql.org\/29\/\">\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0444\u0435\u0441\u0442\u0430<\/a>.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/510124\/\"> https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/510124\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/510124\/\">\u0412\u044b\u0445\u043e\u0434 PostgreSQL 13, \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0443\u0436\u0435 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/493106\/\">\u043f\u0438\u0441\u0430\u043b\u0438<\/a>, \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u0435\u043d\u044c\u044e. \u041d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0432 \u043d\u0435\u043c \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a PostgreSQL 14.<\/p>\n<p>  \u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439 14 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 5 \u043a\u043e\u043c\u043c\u0438\u0442\u0444\u0435\u0441\u0442\u043e\u0432. \u041f\u0435\u0440\u0432\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u2014 <a href=\"https:\/\/commitfest.postgresql.org\/28\/\">\u0438\u044e\u043b\u044c\u0441\u043a\u0438\u0439<\/a> \u2014 \u0443\u0436\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0435\u0441\u0442\u044c \u0447\u0442\u043e \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-308502","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/308502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=308502"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/308502\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=308502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=308502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=308502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}