{"id":320873,"date":"2021-04-05T15:00:15","date_gmt":"2021-04-05T15:00:15","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=320873"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=320873","title":{"rendered":"Postgresso 30"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rx\/mm\/y6\/rxmmy6_uzgh2b5n3iraemsyt_qe.jpeg\"><br \/>  <i>\u041c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c \u0432\u0430\u0441 \u0441 \u0441\u0430\u043c\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u043c\u0438 PostgreSQL. \u042d\u0442\u043e\u0442 \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0443\u043a\u043b\u043e\u043d\u043e\u043c \u0432 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438. \u041d\u0435\u0442, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/i><\/p>\n<h3>\u0425\u0430\u0440\u0434\u0432\u0435\u0440\u043d\u044b\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0438: FPGA<\/h3>\n<p>  \u0412 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 <i>\u042d\u043d\u0434\u0438 \u042d\u043b\u0438\u043a\u043e\u0442\u0442\u0430<\/i> (Andy Ellicott) \u0432 \u0431\u043b\u043e\u0433\u0435 <b>Swarm64<\/b> <b><a href=\"https:\/\/swarm64.com\/post\/postgres-hardware-acceleration-2020\/?fbclid=IwAR11zjcf6Xepwo7adxYPOmylsvoESQgxEoJFhYJzMA4BXgXXfVTVMiZ1O6A\">3 hardware acceleration options Postgres users should know in 2020<\/a><\/b> \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u0440\u0451\u0445 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u044f\u0445, \u043d\u0435 GPU, \u0430 FRGA, \u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0432 \u043e\u0431\u043b\u0430\u043a\u0430\u0445. \u0423 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441: \u0443 Swarm64 \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 FPGA-\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0435. \u0417\u043d\u0430\u0447\u0438\u043c\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u043e\u043d \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 Amazon \u043e\u0431 FPGA-\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0435 \u043a\u044d\u0448\u0430 (FPGA-powered caching layer) \u0432 <a href=\"https:\/\/pages.awscloud.com\/AQUA_Preview.html\">Redshift AQUA<\/a> (Advanced Query Accelerator) \u0432 <b>Amazon<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0431\u044b\u0441\u0442\u0440\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0410 \u0432\u043e\u043e\u0431\u0449\u0435 \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 (\u0432\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Amazon, Alibaba, \u0438 Azure) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 FPGA-\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0438, \u043f\u0440\u043e\u0441\u0432\u0435\u0449\u0430\u0435\u0442 \u043d\u0430\u0441 \u042d\u043d\u0434\u0438.<\/p>\n<p>  \u0418\u0442\u0430\u043a:<\/p>\n<p>  <b>Swarm64 Data Accelerator (DA)<\/b><br \/>  \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u043c\u0435\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0430 \u0441\u043e\u0442\u043d\u0438 \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0445 \u0438\u043b\u0438 \u043f\u0438\u0448\u0443\u0449\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043d\u0430 FPGA. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0442\u0430\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u044b <a href=\"https:\/\/docs.microsoft.com\/ru-ru\/sql\/relational-databases\/indexes\/columnstore-indexes-overview?view=sql-server-ver15\">columnstore<\/a>, \u043a\u0430\u043a \u0432 MS SQL Server. \u0415\u0441\u0442\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 <a href=\"https:\/\/swarm64.com\/wp-content\/uploads\/2020\/08\/Swarm64-V5-Technical-Overview-WP.pdf\">\u0432 PDF<\/a>, \u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e FPGA \u0432 \u043d\u0451\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442. \u0417\u0430\u0442\u043e <a href=\"https:\/\/www.youtube.com\/watch?v=M8-qUDy9Bx8\">\u0435\u0441\u0442\u044c \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e<\/a>, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0435, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c Postgres \u043d\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435 Amazon EC2 F1 \u0441 FPGA. \u0415\u0449\u0451 \u0435\u0441\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432 TPC-H (\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u044d\u0442\u0430 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0441 FPGA \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043a\u0430\u043a \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e-\u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u2014 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hybrid_transactional\/analytical_processing\">HTAP<\/a>), \u0438 \u0442\u0430\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0432 50 \u0440\u0430\u0437 \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0414\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u042d\u043d\u0434\u0438: <a href=\"https:\/\/www.intel.ru\/content\/www\/ru\/ru\/products\/programmable\/fpga\/arria-10.html\">Intel Arria 10 GX FPGA<\/a> \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 NVM-\u043f\u0430\u043c\u044f\u0442\u044c\u044e Intel Optane DC, SSD \u0438 PostgreSQL 11 \u0441 \u0442\u0435\u043c \u0436\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c Swarm64 DA. \u0412\u0441\u0451 \u044d\u0442\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u043e \u0432 \u0434\u0435\u043c\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 PostgreSQL \u043f\u043e\u0442\u043e\u043a\u0438 \u0431\u0438\u0440\u0436\u0435\u0432\u044b\u0445 \u043a\u043e\u0442\u0438\u0440\u043e\u0432\u043e\u043a \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e 200 \u0442\u044b\u0441 \u0438\u043d\u0441\u0435\u0440\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043d\u0438\u043c\u0438 \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c SQL.<\/p>\n<p>  \u0422\u0440\u0435\u0442\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u0441 <a href=\"https:\/\/samsungsemiconductor-us.com\/smartssd\/\/\">Samsung SmartSSD<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 FPGA-\u0447\u0438\u043f \u043e\u0442 Xilinx. \u0418\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f (\u0441 \u0442\u0435\u043c \u0436\u0435 \u0441\u0432\u043e\u0440\u043c\u043e\u0432\u0441\u043a\u0438\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f) \u0434\u0430\u043b\u0438 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0432 40 \u0440\u0430\u0437 \u043d\u0430 TPC-H \u0438 \u0432 10-15 \u0440\u0430\u0437 \u043d\u0430 JOIN-\u0430\u0445.<\/p>\n<p>  \u0421 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u044d\u0442\u0438 \u0443\u0441\u0438\u043b\u0438\u044f \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u044b \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0442\u0438\u0432 \u0445\u0430\u0440\u0434\u0432\u0435\u0440\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f WH \u0432\u0440\u043e\u0434\u0435 Netezza \u0438\u043b\u0438 Teradata.<\/p>\n<p>  \u041e\u0431\u0435\u0449\u0430\u043d\u043e, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 FPGA vs. GPU (\u0432 \u0442. \u0447. \u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/wiki.postgresql.org\/wiki\/PGStrom\">PGStrom<\/a>).<\/p>\n<p>  <i>(\u0441\u043f\u0430\u0441\u0438\u0431\u043e <\/i>\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0443 \u0421\u043c\u043e\u043b\u0438\u043d\u0443<i> \u0437\u0430 \u043d\u0430\u0432\u043e\u0434\u043a\u0443 \u0432 FB-\u0433\u0440\u0443\u043f\u043f\u0435 <a href=\"https:\/\/www.facebook.com\/groups\/postgresql\">PostgreSQL \u0432 \u0420\u043e\u0441\u0441\u0438\u0438<\/a>)<\/i><\/p>\n<p>  <\/p>\n<h3>\u041a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438<\/h3>\n<p>  <b><i>\u0431\u044b\u043b\u0438:<\/i><\/b><\/p>\n<p>  <b><a href=\"https:\/\/pgconf.ru\/\">PGConf.online<\/a><\/b><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u044b \u0432\u0441\u0435 \u0432\u0438\u0434\u0435\u043e \u0438 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u2014 \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/pgconf.ru\/2021\/schedule\">\u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/a>.<\/p>\n<p>  <b><a href=\"https:\/\/fosdem.org\/2021\/schedule\/\">FOSDEM 21<\/a><\/b><\/p>\n<p>  \u041f\u043e\u0442\u043e\u043a <a href=\"https:\/\/fosdem.org\/2021\/schedule\/track\/postgresql\/\">PostgreSQL devroom<\/a> \u0442\u0451\u043a \u0434\u0432\u0430 \u0434\u043d\u044f 6-7 \u0444\u0435\u0432\u0440\u0430\u043b\u044f \u0441 10 \u0443\u0442\u0440\u0430 \u0434\u043e 6 \u0432\u0435\u0447\u0435\u0440\u0430. \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e. \u0412\u043e\u0442 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0431\u043e\u043a\u0430\u044f, \u0437\u0430\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u2014 <a href=\"https:\/\/postgrespro.ru\/blog\/company\/5967930\">\u0434\u043e\u043a\u043b\u0430\u0434\u044b<\/a> \u043e\u0442 Postgres Professional (\u0433\u043b\u0430\u0433\u043e\u043b\u044b \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u0443\u043c\u0435 \u043d\u0430 \u0433\u043b\u0430\u0433\u043e\u043b\u044b \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0435\u0433\u043e).<\/p>\n<p>  <b><i>\u0431\u0443\u0434\u0435\u0442:<\/i><\/b><\/p>\n<p>  <b><a href=\"https:\/\/www.highload.ru\/\">Highload++<\/a><\/b><\/p>\n<p>  \u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043e, \u0447\u0442\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442\u0441\u044f \u043e\u0444\u043b\u0430\u0439\u043d 17 -18 \u043c\u0430\u044f 2021 \u0432 \u041a\u0440\u043e\u043a\u0443\u0441-\u042d\u043a\u0441\u043f\u043e, \u041c\u043e\u0441\u043a\u0432\u0430. \u0415\u0441\u0442\u044c <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/13fKaRjDISwz2k_C50Fnm-1rfqU8m6wpt0Q3rLtjp-jQ\/edit?source=highload.ru#gid=0\">\u0420\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/a>. \u042f \u0431\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u043b \u043e\u0441\u043e\u0431\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0442\u043e\u043a\u0438<br \/>  <b><i>\u0421\u0423\u0411\u0414 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/i><\/b> \u0432 \u0417\u0430\u043b\u0435 3, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<br \/>  \u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0441 \u043d\u0443\u043b\u044f, <i>\u0421\u0435\u043c\u0435\u043d \u041a\u0430\u0442\u0430\u0435\u0432<\/i> (\u0410\u0432\u0438\u0442\u043e);<br \/>  \u00ab\u041f\u0440\u043e\u043a\u0440\u0443\u0441\u0442\u043e\u0432\u043e \u043b\u043e\u0436\u0435\u00bb \u0438\u043b\u0438 \u00ab\u0438\u0441\u043f\u0430\u043d\u0441\u043a\u0438\u0439 \u0441\u0430\u043f\u043e\u0433\u00bb \u2014 \u043c\u0438\u0444\u044b \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0421\u0423\u0411\u0414 \u0432 \u041e\u0431\u043b\u0430\u043a\u0430\u0445, <i>\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0417\u0430\u0439\u0446\u0435\u0432<\/i> (Altinity)<br \/>  \u0438 \u043d\u0430<br \/>  <b><i>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c<\/i><\/b> \u0432 \u0417\u0430\u043b 4 (\u0433\u043b\u0430\u0432\u043d\u043e\u043c), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<br \/>  \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u042d\u043b\u044c\u0431\u0440\u0443\u0441 2000, <i>\u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0417\u0430\u0432\u0430\u043b\u0438\u0448\u0438\u043d<\/i> (Digital Zone);<br \/>  SQL\/JSON \u0432 PostgreSQL: \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0438 \u0431\u0443\u0434\u0443\u0449\u0435\u0435, <i>\u041e\u043b\u0435\u0433 \u0411\u0430\u0440\u0442\u0443\u043d\u043e\u0432<\/i> (Postgres Professional);<br \/>  \u0420\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c\u044b \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 PostgreSQL, <i>\u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432<\/i> (Postgres.ai).<\/p>\n<h3>\u0412\u0435\u0431\u0438\u043d\u0430\u0440\u044b \u0438 \u043c\u0438\u0442\u0430\u043f\u044b<\/h3>\n<p>  <b><a href=\"https:\/\/www.youtube.com\/watch?app=desktop&amp;v=16y-y1BnHKY\">RuPostgres-\u0432\u0442\u043e\u0440\u043d\u0438\u043a s02e13 \u0410\u043d\u0434\u0440\u0435\u0439 \u0417\u0443\u0431\u043a\u043e\u0432 (PostgresPro) \u2014 pg_profile, pgpro_pwr<\/a><\/b><\/p>\n<p>  \u0412\u0442\u043e\u0440\u043d\u0438\u043a, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0439 <a href=\"https:\/\/github.com\/zubkov-andrei\/pg_profile\">pg_profile<\/a> \/ <a href=\"https:\/\/postgrespro.ru\/docs\/postgrespro\/13\/pgpro-pwr\">PWR<\/a>, \u0442\u0430\u043a \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b \u0443\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u0435\u0439, \u0447\u0442\u043e \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043c\u043e\u0436\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f: \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u043d\u0435 \u0432\u043e \u0432\u0441\u0435\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u044f\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043d\u0443 \u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f <a href=\"https:\/\/postgrespro.ru\/docs\/postgrespro\/13\/pgpro-stats\">pgpro_stats<\/a>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 PWR, \u043a\u043e\u0441\u043d\u0443\u043b\u0438\u0441\u044c \u043f\u043e \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e \u0431\u044b\u043b \u0435\u0449\u0451 <a href=\"https:\/\/www.youtube.com\/watch?v=4SwzmjGhYmw\">\u0432\u0442\u043e\u0440\u043d\u0438\u043a<\/a> \u0441 <i>\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u043e\u043c \u041a\u0443\u043a\u0443\u0448\u043a\u0438\u043d\u044b\u043c<\/i> (Zalando). \u0422\u0435\u043c\u0430 \u2014 \u0440\u0438\u0441\u043a\u0438 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0430 \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u0441 \u0444\u043e\u043a\u0443\u0441\u043e\u043c \u043d\u0430 PG12 \u0438 PG13, \u0430 \u043f\u043e\u0441\u043e\u0431\u043d\u0438\u043a \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0430 \u2014 <a href=\"https:\/\/github.com\/zalando\/spilo\">Spilo<\/a>: \u043a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u044b\u0439 \u0430\u043f\u0433\u0440\u0435\u0439\u0434 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 <a href=\"https:\/\/github.com\/zalando\/patroni\">Patroni<\/a> \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0430\u043c\u0431\u0438\u0446\u0438\u043e\u0437\u043d\u0430\u044f, \u0430 \u0432\u043e\u0442 Spilo, \u0442\u043e \u0435\u0441\u0442\u044c Docker-\u043e\u0431\u0440\u0430\u0437 \u0441 PostgreSQL \u0438 Patroni, \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f. \u041d\u043e \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u043d\u044e\u0430\u043d\u0441\u043e\u0432 \u043f\u0440\u0438 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u0435\u043c\u0430\u043b\u043e. \u0413\u043e\u0432\u043e\u0440\u0438\u043b\u043e\u0441\u044c \u043e \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u0430\u0445 \u043e\u0442 VACUUM, ANALYZE, \u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043e CTE \u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043e JIT.<\/p>\n<p>  <b><a href=\"https:\/\/noti.st\/rgordeev\/bkjMMN\/database-delivery-the-big-problem?fbclid=IwAR20dATGbv2mTUAmbW4t4f0AkFOVzw2fvoc4kmpj38fFSf_8a3SbA08EERc\">Database Delivery: The Big Problem<\/a><\/b><\/p>\n<p>  \u042d\u0442\u043e \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0442 <b>\u0420\u043e\u0441\u0442\u0435\u043b\u0435\u043a\u043e\u043c-\u0418\u0422<\/b>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0432\u0451\u043b <i>\u0420\u043e\u043c\u0430\u043d \u0413\u043e\u0440\u0434\u0435\u0435\u0432<\/i> (\u0432 \u0432\u0438\u0434\u0435\u043e \u0433\u043b\u044e\u043a\u0438, \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 11 \u043c\u0438\u043d\u0443\u0442). \u0415\u0433\u043e \u043f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u043b\u0438 \u043d\u0430 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0442\u0440\u0438\u043c\u043e\u0432 <a href=\"https:\/\/tver.io\/\">Tver.io<\/a> \u2014 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u0442\u0432\u0435\u0440\u0441\u043a\u0438\u0445 \u0430\u0439\u0442\u0438\u0448\u043d\u0438\u043a\u043e\u0432 (\u043d\u043e \u043c\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u0435\u0439 \u0431\u044b\u043b\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u044d\u0442\u043e\u0442 \u0436\u0435 \u0440\u043e\u043b\u0438\u043a \u043d\u0430 <a href=\"https:\/\/www.youtube.com\/watch?v=cwjkLyCEqVk&amp;t=3830s\">\u043d\u0430 youtube<\/a>). \u0420\u0435\u0447\u044c \u0448\u043b\u0430 \u043e\u0431 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438. \u0420\u043e\u043c\u0430\u043d \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043e \u0432\u0435\u0449\u0430\u0445, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b\u0445 \u043a \u0440\u0430\u0437\u043d\u044b\u043c \u0421\u0423\u0411\u0414 \u0438 \u0441\u0440\u0435\u0434\u0430\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0441 \u0431\u0430\u0437\u044b PostgreSQL \u043d\u0430 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/H2\">H2<\/a> \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c <a href=\"https:\/\/www.jetbrains.com\/datagrip\/\">DataGrip<\/a>. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u0438\u0441\u044c \u0438 \u0440\u0435\u0448\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u043e\u0432\u044b\u043c \u0442\u0438\u043f\u043e\u043c <code>text<\/code> \u0438 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438.<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e, \u0431\u044b\u043b \u0432\u0437\u044f\u0442 \u043f\u043b\u0430\u0433\u0438\u043d <b><a href=\"https:\/\/github.com\/liquibase\/liquibase-gradle-plugin\">liquibase<\/a><\/b> \u0434\u043b\u044f \u0441\u0440\u0435\u0434\u044b <b><a href=\"https:\/\/gradle.org\/\">gradle<\/a><\/b>. \u041e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0435 liquibase gradle \u043d\u0430 <a href=\"https:\/\/github.com\/rtk-it\/migrations\">\u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a> \u0413\u043e\u0440\u0434\u0435\u0435\u0432\u0430. \u041a\u0441\u0442\u0430\u0442\u0438, \u00ab\u0420\u043e\u0441\u0442\u0435\u043b\u0435\u043a\u043e\u043c \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438\u00bb \u2014 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0441 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u0434 2 \u0442\u044b\u0441. \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u041d\u0430 <a href=\"https:\/\/rtkit.ru\/company\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435<\/a> \u0435\u0441\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u043e\u0439 \u0421\u0423\u0411\u0414 in-memory <a href=\"https:\/\/rtkit.ru\/directions\/database\">Reindexer<\/a> \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0411\u043e\u043b\u044c\u0448\u0435 \u043e \u0431\u0430\u0437\u0430\u0445 \u0442\u0430\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u043a\u0430 \u043d\u0430\u0439\u0442\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c.<\/p>\n<p>  <\/p>\n<h3>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u0412\u044b\u043b\u043e\u0436\u0435\u043d\u044b \u0432 \u043e\u0431\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0432\u0438\u0434\u0435\u043e:<\/p>\n<ul>\n<li><a href=\"https:\/\/postgrespro.ru\/education\/courses\/DEV1\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 PostgreSQL 12. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u0443\u0440\u0441<\/a>.<\/li>\n<li><a href=\"https:\/\/postgrespro.ru\/education\/courses\/DEV2\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 PostgreSQL 12. \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u043a\u0443\u0440\u0441<\/a><\/li>\n<\/ul>\n<p>  \u041e\u0431\u0430 \u044d\u0442\u0438 \u043a\u0443\u0440\u0441\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0433\u043e\u0434\u0430, \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u043f\u043e\u043b\u043d\u044b\u0439: \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0432\u0438\u0434\u0435\u043e.<\/p>\n<p>  \u0422\u0435\u043c, \u043a\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e, \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0430\u0442\u044c <a href=\"https:\/\/pgconf.ru\/2021\/288510\">\u0434\u043e\u043a\u043b\u0430\u0434<\/a> \u043e \u043a\u0443\u0440\u0441\u0430\u0445 <i>\u0415\u0433\u043e\u0440\u0430 \u0420\u043e\u0433\u043e\u0432\u0430<\/i> \u043d\u0430 PGConf.online 2021. <\/p>\n<p>  <\/p>\n<h3>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433<\/h3>\n<p>  <b><a href=\"https:\/\/www.highgo.ca\/2021\/03\/15\/monitoring-postgresql-with-nagios-and-checkmk\/\">Monitoring PostgreSQL with Nagios and Checkmk<\/a><\/b><\/p>\n<p>  \u041f\u0438\u0448\u0435\u0442 <a href=\"https:\/\/www.highgo.ca\/2021\/02\/08\/troubleshooting-performance-issues-due-to-disk-and-ram\/\">\u043e\u043f\u044f\u0442\u044c<\/a> \u0425\u0430\u043c\u0438\u0434 \u0410\u0445\u0442\u0430\u0440 (Hamid Akhtar, \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0430\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f High Go), \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043f\u0438\u0448\u0435\u0442 \u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u0445 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 <a href=\"https:\/\/support.nagios.com\/wiki\/index.php\/Main_Page\">Nagios<\/a> (\u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0430\u043a\u0440\u043e\u043d\u0438\u043c Nagios Ain&#8217;t Gonna Insist On Sainthood \u2014 Nagios \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0430\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0432\u044f\u0442\u043e\u0441\u0442\u0438, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u0430 NetSaint) \u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Check_MK\">Checkmk<\/a>. \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0435\u0437 \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u0439: \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044f \u0434\u0430\u0436\u0435 \u0432 \u044d\u0442\u043e\u043c \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0442\u0443.<\/p>\n<p>  <b><a href=\"https:\/\/blog.crunchydata.com\/blog\/get-started-with-explain-analyze\">Explaining Your Postgres Query Performance<\/a><\/b><\/p>\n<p>  \u0418\u0434\u0451\u043c \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043a \u0441\u043b\u043e\u0436\u043d\u043e\u043c\u0443. \u041f\u043e\u043a\u0430 URL \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u043f\u043e\u0434\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0430\u0442\u044c\u0438: <b>Get Started with EXPLAIN ANALYZE.<\/b> <i>\u041a\u044d\u0442 \u0411\u044d\u0442\u044c\u044e\u0439\u0433\u0430\u0441<\/i> (Kat Batuigas, Crunchy Data) \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442 \u0441 \u0441\u0430\u043c\u044b\u043c\u0438 \u0430\u0437\u0430\u043c\u0438 EXPLAIN, \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u043e\u043f\u0446\u0438\u0439. \u0416\u0430\u043d\u0440 For dummies, \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e: \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e EXPLAIN ANALYZE \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043e\u0431 (\u043d\u0435)\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432, \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0447\u0442\u043e \u0442\u0430\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0432\u0441\u0451 \u043d\u0430 \u0431\u0430\u0437\u0435 <a href=\"https:\/\/download.geonames.org\/\">Geonames<\/a>.<\/p>\n<p>  \u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0435\u0451 <a href=\"https:\/\/blog.crunchydata.com\/blog\/tentative-smarter-query-optimization-in-postgres-starts-with-pg_stat_statements\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u0431\u044b\u043b\u0430 \u043e Query Optimization in Postgres with <code>pg_stat_statements<\/code>.<\/p>\n<p>  \u0412\u043e\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0435\u0451 \u0441\u0442\u0430\u0442\u044c\u044f: <b><a href=\"https:\/\/blog.crunchydata.com\/blog\/three-easy-things-to-remember-about-postgres-indexes\">Three Easy Things To Remember About Postgres Indexes<\/a><\/b>. \u0412 \u043d\u0435\u0439 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0434\u0438\u0441\u043a\u0435, \u043d\u043e \u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f:<br \/>  \u00ab\u0412\u0430\u0436\u0435\u043d \u0438 \u0442\u0438\u043f \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u043a\u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (wildcards)<br \/>  wildcards, e.g. \u2026 WHERE name LIKE &#8216;Ma%&#8217;,<br \/>  \u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u043d\u0434\u0435\u043a\u0441 B-tree, \u043d\u043e \u0432\u0430\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u043e\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441.\u00bb<\/p>\n<p>  <b><a href=\"https:\/\/www.pgmustard.com\/blog\/auto-explain-overhead-with-timing\">Can auto_explain (with timing) Have Low Overhead?<\/a><\/b><\/p>\n<p>  <i>\u041c\u0438\u0445\u0430\u044d\u043b\u044c \u0425\u0440\u0438\u0441\u0442\u043e\u0444\u0438\u0434\u0435\u0441<\/i> (Michael Christofides) \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/13\/auto-explain\">auto_explain<\/a> \u0441 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u043c. \u0412\u044b\u0432\u043e\u0434\u044b:<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u043e\u0449\u0443\u0442\u0438\u043c\u044b\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0438 <code>min_duration<\/code>, \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u043e\u0442 auto_explain \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435 )\u0431\u044b\u043b\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 1% \u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u043c \u0438 ~2% \u0441 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c. \u0421\u0435\u043c\u043f\u043b\u0438\u043d\u0433\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0435\u0442\u0430\u043b\u0438 \u043f\u0440\u043e\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043d\u043e \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u0432 \u043b\u043e\u0433 \u0434\u043b\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445. \u0410 \u043a\u043e\u0433\u0434\u0430 <code>min_duration=0ms<\/code>, \u0438 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0451, \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0435 25%, \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430 \u0438 ANALYZE. \u0412\u0438\u0434\u0438\u043c\u043e, \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 auto_explain \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c.<\/p>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441 \u0443 \u041c\u0438\u0445\u0430\u044d\u043b\u044f \u043d\u0435 \u043d\u0435\u0432\u0438\u043d\u043d\u044b\u0439 \u2014 \u043e\u043d \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0443\u0442\u0438\u043b\u0438\u0442\u044b <b><a href=\"https:\/\/www.pgmustard.com\/\">pgMustard<\/a><\/b>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043f\u043b\u0430\u043d\u044b. \u041e\u043d\u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f (\u0432 \u0442.\u0447. \u0446\u0438\u043a\u043b\u044b; \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0443\u0437\u043b\u044b \u043f\u043b\u0430\u043d\u043e\u0432 \u2014 subplans; <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/13\/queries-with\">CTE<\/a>). \u041c\u0430\u043b\u043e \u0442\u043e\u0433\u043e, pgMustard \u0443\u043c\u0435\u0435\u0442 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<ul>\n<li>(\u043d\u0435)\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432;<\/li>\n<li>\u043f\u043b\u043e\u0445\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u0447\u0438\u0441\u043b\u0430 \u0441\u0442\u0440\u043e\u043a;<\/li>\n<li>\u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043a\u044d\u0448\u0430;<\/li>\n<li>\u0443\u0433\u0440\u043e\u0437\u0430 \u0440\u0430\u0441\u043f\u0443\u0445\u0430\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430 (bloat);<\/li>\n<li>CTE-\u0441\u043a\u0430\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e 1 \u0440\u0430\u0437.<\/li>\n<\/ul>\n<p>  <b><a href=\"https:\/\/www.highgo.ca\/2021\/03\/04\/how-to-create-a-system-information-function-in-postgresql\/\">How to create a system information function in PostgreSQL<\/a><\/b><\/p>\n<p>  \u0414\u0430\u0432\u0438\u0434 \u042f\u043d (David Zhang, \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0432 \u0442\u043e\u0439 \u0436\u0435 High Go) \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0415\u043c\u0443 \u043c\u0430\u043b\u043e \u0442\u0435\u0445, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 \u0432\u043e\u0442 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/13\/functions-info\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435<\/a>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0433\u043e \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442, \u0447\u0442\u043e <code>txid_current()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u043c\u0443 \u0442\u043e\u0442 \u0436\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0447\u0442\u043e \u0438 \u0431\u044b\u043b\u043e \u0434\u043e SAVEPOINT.<\/p>\n<p>  \u0421\u0441\u044b\u043b\u0430\u044f\u0441\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0443 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/13\/system-catalog-initial-data\">\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432<\/a>, \u0414\u0430\u0432\u0438\u0434 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0432\u044b\u0431\u0440\u0430\u0442\u044c <code>OID<\/code> \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043d\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432\u0430\u043b \u0441 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438. \u041f\u043e\u0442\u043e\u043c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u043e\u0434 \u0441\u0432\u043e\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0435\u0439 xtid \u043f\u043e\u0441\u043b\u0435 SAVEPOINT. \u041d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043d\u0430 <code>txid_current_snapshot<\/code> \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 C. \u0418 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442 \u0435\u0451. \u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<p>  <b><a href=\"https:\/\/www.cybertec-postgresql.com\/en\/how-the-postgresql-query-optimizer-works\/\">How The PostgreSQL Optimizer Works<\/a><\/b><\/p>\n<p>  <i>\u0425\u0430\u043d\u0441-\u042e\u0440\u0433\u0435\u043d \u0428\u0451\u043d\u0438\u0433<\/i> (Hans-J\u00fcrgen Sch\u00f6nig, Crunchy Data) \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e, \u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043f\u043e \u043e\u0431\u044a\u0451\u043c\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0435:<\/p>\n<p>  <b>\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442<\/b>: \u043f\u043e\u0447\u0435\u043c\u0443  <\/p>\n<pre><code class=\"pgsql\">WHERE x = 7 + 1<\/code><\/pre>\n<p>\u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u0442\u043e \u0436\u0435, \u0447\u0442\u043e   <\/p>\n<pre><code class=\"pgsql\">WHERE x - 1 = 7<\/code><\/pre>\n<p>  <b>\u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/b> (function inlining): \u0443\u043c\u0435\u043d\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u044f\u0437\u044b\u043a\u0430, \u0432 SQL \u043e\u043d \u043a\u0430\u043a \u0434\u043e\u043c\u0430, \u043d\u043e \u043d\u0435 \u0432 PL-\u044f\u0445.<\/p>\n<p>  \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 <b>VOLATILE\/STABLE\/IMMUTABLE<\/b>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<pre><code class=\"pgsql\">WHERE x = clock_timestamp()<\/code><\/pre>\n<p>\u043f\u0440\u043e\u0442\u0438\u0432  <\/p>\n<pre><code class=\"pgsql\">WHERE x = now()<\/code><\/pre>\n<p>  \u0447\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u043f\u043e\u043d\u044f\u0442\u044c PostgreSQL, \u0437\u0430\u0434\u0443\u043c\u0430\u0432\u0448\u0438\u0441\u044c \u043e \u0442\u043e\u043c, <b>\u0447\u0442\u043e \u0447\u0435\u043c\u0443 \u0440\u0430\u0432\u043d\u043e<\/b>:<br \/>  \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 x = y AND y = 4, \u0442\u043e x = 4, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u043e x \u2014 \u044d\u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442.<\/p>\n<p>  \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 <b>view inlining<\/b> \u0438 <b>subselect flattening<\/b>:<br \/>  \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 SELECT-\u044b, \u0430 \u043e\u043d\u0438 \u2014 \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0439, \u00ab\u043f\u043b\u043e\u0441\u043a\u0438\u0439\u00bb SELECT.<\/p>\n<p>  \u041d\u0443 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u043a\u0430\u043a \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u0440\u0430\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 <b>JOIN<\/b>. \u0422\u0443\u0442 \u0425\u0430\u043d\u0441-\u042e\u0440\u0433\u0435\u043d \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431 \u043e\u0447\u0435\u0440\u0451\u0434\u043d\u043e\u0441\u0442\u0438 \u0434\u0436\u043e\u0439\u043d\u043e\u0432, \u043e \u044f\u0432\u043d\u044b\u0445 \u0438 \u043d\u0435\u044f\u0432\u043d\u044b\u0445; \u043e\u0431 OUTER JOIN; \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 (pruning) \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0445; \u043e\u0431 EXIST \u0438 \u0430\u043d\u0442\u0438-\u0434\u0436\u043e\u0439\u043d\u0430\u0445.<\/p>\n<h3>\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u0438:<\/h3>\n<p>  <b><a href=\"https:\/\/habr.com\/ru\/company\/tensor\/blog\/547108\/\">\u041e\u043d\u0438 \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b<\/a><\/b><\/p>\n<p>  <i>\u041a\u0438\u0440\u0438\u043b\u043b \u0411\u043e\u0440\u043e\u0432\u0438\u043a\u043e\u0432<\/i> \u0430\u043a\u0430 <a href=\"https:\/\/habr.com\/ru\/users\/kilor\/\" class=\"user_link\">kilor<\/a> \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u043b \u0432 \u0440\u043e\u043b\u0438 \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u0438\u043a\u0430: \u043e\u043d \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430! \u041e\u043d \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u0434\u0430\u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043b \u0435\u0451 <code>magic()<\/code>. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043e\u043d\u0430 \u0431\u0435\u0440\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0451\u043d\u043d\u043e\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <code>random()<\/code> \u0447\u0438\u0441\u043b\u043e \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:  <\/p>\n<pre><code class=\"pgsql\">SELECT r random, magic(r) random_next FROM random() r;        random       |    random_next --------------------+--------------------  0.3921143477755571 | 0.6377947747296489  tst=# SELECT r random, magic(r) random_next FROM random() r;        random       |    random_next --------------------+--------------------  0.6377947747296489 | 0.5727554063674667<\/code><\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0430\u0432\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 <i>\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u043c \u043a\u043e\u043d\u0433\u0440\u0443\u044d\u043d\u0442\u043d\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 <code>random()<\/code>, \u0437\u0430\u043b\u0435\u0437\u0430\u0435\u0442 \u0432 <a href=\"https:\/\/github.com\/postgres\/postgres\">\u043a\u043e\u0434<\/a> \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>setseed()<\/code> \u0432 \u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/github.com\/postgres\/postgres\/blob\/REL_13_STABLE\/src\/backend\/utils\/adt\/float.c\"><i>float.c<\/i><\/a> \u0438 \u0442\u0430\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0439 \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>  \u0418\u0442\u043e\u0433\u043e, \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 <code>random()<\/code> \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b, \u043e \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0438 \u0440\u0435\u0447\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c. \u041d\u043e \u043a\u043e\u0435-\u043a\u0430\u043a\u0438\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0438\u043c\u0435\u044e\u0442\u0441\u044f: \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/pgcrypto\">pgcrypto<\/a>.<\/p>\n<p>  <\/p>\n<h3>\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435<\/h3>\n<p>  <b><a href=\"https:\/\/www.citusdata.com\/blog\/2021\/03\/25\/speeding-up-recovery-and-vacuum-in-postgres-14\/\">Speeding up recovery &amp; VACUUM in Postgres 14<\/a><\/b><\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 Citus, \u043d\u043e \u0440\u0435\u0447\u044c \u043d\u0435 \u043e Citus, \u0430 \u043e \u043f\u0430\u0442\u0447\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0432\u0435\u0442\u043a\u0443 PostgreSQL. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044f (\u0438 <a href=\"https:\/\/git.postgresql.org\/gitweb\/?p=postgresql.git;a=commit;h=19c60ad69a91f346edf66996b2cf726f594d3d2b\">\u043f\u0430\u0442\u0447<\/a>) \u0414\u044d\u0432\u0438\u0434\u043e\u043c \u0420\u043e\u0443\u043b\u0438 (David Rowley), \u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0438\u043c \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u0443\u0436\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 Microsoft. \u041e\u043d \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>compactify_tuples<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 PostgreSQL \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0432\u043d\u0435\u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e (\u043d\u0435\u0447\u0438\u0441\u0442\u043e\u0433\u043e) \u0448\u0430\u0442\u0434\u0430\u0443\u043d\u0430 (crash recovery), \u0438 \u043a\u043e\u0433\u0434\u0430 \u0438\u0434\u0451\u0442 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 standby-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u0435\u043c WAL \u043f\u043e \u0438\u0445 \u043f\u0440\u0438\u0431\u044b\u0442\u0438\u0438 \u0441 primary-\u0441\u0435\u0440\u0432\u0435\u0440\u0430; VACUUM.<\/p>\n<p>  \u042d\u0442\u0438 \u0441\u043b\u0443\u0447\u0430\u0438 \u0414\u044d\u0432\u0438\u0434 \u0438 \u0440\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u043f\u043e\u044f\u0441\u043d\u044f\u044f \u0441\u0445\u0435\u043c\u0430\u043c\u0438. \u041d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442 \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043a\u043e\u0440\u0442\u0435\u0436\u0435\u0439 \u0432 <code>heap<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041d\u0430 pgbench \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0432 2.4 \u0440\u0430\u0437\u0430 \u043d\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0438 \u043d\u0430 25% \u043f\u0440\u0438 \u0432\u0430\u043a\u0443\u0443\u043c\u0435.<\/p>\n<p>  <\/p>\n<h3>\u0421\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u044f<\/h3>\n<p>  <b><a href=\"https:\/\/arctype.com\/blog\/performance-difference-between-postgresql-and-mysql\/\">Performance differences between Postgres and MySQL<\/a><\/b><\/p>\n<p>  \u0412 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 <a href=\"https:\/\/www.arctype.com\/\">Arctype<\/a> \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e PostgreSQL \u0438 MySQL. \u042d\u0442\u0430 \u0441\u0443\u043c\u0431\u0443\u0440\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0441 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u043c\u0438 \u0432\u044b\u0432\u043e\u0434\u0430\u043c\u0438 \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0432\u043e\u0442 <a href=\"https:\/\/arctype.com\/blog\/mysqlvspostgres\/\">\u044d\u0442\u043e\u0439<\/a>, \u0433\u0434\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0442\u043e\u0439 \u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0421\u0423\u0411\u0414 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u043b\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438 \u043f\u0440\u0438\u0448\u043b\u0438 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043a \u0432\u044b\u0432\u043e\u0434\u0430\u043c \u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430\u0445 PostgreSQL. \u041e\u043d \u043b\u0443\u0447\u0448\u0435 \u043a\u043e\u0433\u0434\u0430:<\/p>\n<ul>\n<li>\u043d\u0430\u0434\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u043e\u0431\u044a\u0451\u043c\u0438\u0441\u0442\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438;<\/li>\n<li>\u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438;<\/li>\n<li>\u043d\u0443\u0436\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f;<\/li>\n<li>\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0433\u0435\u043e\u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/li>\n<\/ul>\n<p>  \u0410 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u043c\u0435\u0440\u0438\u0442\u044c, \u043f\u0440\u0438\u0447\u0451\u043c \u0441 \u0443\u043a\u043b\u043e\u043d\u043e\u043c \u0432 JSON, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u0430 \u0442\u0435\u043c\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u0438\u0445 \u0438 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e. \u0412\u043e\u0442 \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e:<br \/>  \u0441\u043e\u0437\u0434\u0430\u043d \u043f\u0440\u043e\u0435\u043a\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c PostgreSQL \u0438 MySQL;<br \/>  \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 JSON \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438, \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043e\u043a\u043e\u043b\u043e14 \u041c\u0411, \u043e\u043a\u043e\u043b\u043e 200\u2013210 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  \u0418 \u043e\u043f\u044f\u0442\u044c \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434:<br \/>  JSON-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0439 \u0432 Postgres!<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440 \u043f\u043e \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/13\/indexes-expressional\">\u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043f\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c<\/a> \u0438 \u043f\u0440\u043e\u0447\u0438\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u044f MVCC \u0432 InnoDB MySQL \u0438 \u0432 PostgreSQL.<\/p>\n<p>  <\/p>\n<h3>PostGIS<\/h3>\n<p>  <b><a href=\"https:\/\/postgresweekly.com\/link\/104731\/04436a58a8\">Traveling Salesman Problem With PostGIS And pgRouting<\/a><\/b><\/p>\n<p>  \u0423 \u0424\u043b\u043e\u0440\u0438\u0430\u043d\u0430 \u041d\u0430\u0434\u043b\u0435\u0440\u0430 (Florian Nadler, Cybertec) \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0432\u043e\u044f\u0436\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044f\u043c \u0413\u0430\u043c\u0431\u0443\u0440\u0433\u0430. \u042d\u0442\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 <b><a href=\"https:\/\/www.cybertec-postgresql.com\/en\/catchment-areas-with-postgresql-and-postgis\/\">&#8216;Catchment Areas&#8217; With PostgreSQL And PostGIS<\/a><\/b>. \u0422\u0430\u043c \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0433\u043e\u0440\u043e\u0434\u043e\u0432, \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u043a \u043a\u0440\u0443\u043f\u043d\u044b\u043c \u0430\u044d\u0440\u043e\u043f\u043e\u0440\u0442\u0430\u043c, \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u0432 \u0438\u0445 \u043f\u043e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0_%D0%92%D0%BE%D1%80%D0%BE%D0%BD%D0%BE%D0%B3%D0%BE\">\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430\u043c \u0412\u043e\u0440\u043e\u043d\u043e\u0433\u043e<\/a>.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043d\u0430\u0434\u043e \u0440\u0435\u0448\u0438\u0442\u044c, \u043a\u0430\u043a \u043b\u0443\u0447\u0448\u0435 \u044d\u0442\u0438 \u0433\u043e\u0440\u043e\u0434\u0430 \u043e\u0431\u043e\u0439\u0442\u0438, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043a\u0440\u043e\u043c\u0435 PostGIS \u0424\u043b\u043e\u0440\u0438\u0430\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f <a href=\"https:\/\/pgrouting.org\/\">pgRouting<\/a>. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a \u0432 \u0433\u0440\u0430\u0444, \u043e\u043d \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <a href=\"https:\/\/osm2po.de\/releases\/\">osm2po<\/a>.<\/p>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 <code>pgr_createverticestable<\/code> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0437 pgRouting \u2014 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442 \u0433\u0440\u0430\u0444 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443. \u042d\u0442\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430-\u0433\u0440\u0430\u0444 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u043b\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445 \u0441\u043b\u043e\u0451\u0432 OpenStreetMap. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0424\u043b\u043e\u0440\u0438\u0430\u043d, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>pgr_dijkstraCostMatrix<\/code> \u0438\u0437 pgRouting, \u0440\u0435\u0448\u0430\u0435\u0442 \u044d\u0442\u0443 \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0441 CTE, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438\/\u0432\u0435\u0441\u0430, \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u043d\u044b\u0435 \u0435\u0449\u0451 osm2po.<\/p>\n<p>  <b><a href=\"https:\/\/blog.crunchydata.com\/blog\/performance-improvements-in-geos\">Performance Improvements in GEOS<\/a><\/b><\/p>\n<p>  GEOS \u2014 \u0432\u0430\u0436\u043d\u0435\u0439\u0448\u0430\u044f \u0434\u043b\u044f \u0433\u0435\u043e\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 (\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 C \u0438\u0437 Java Topology Suite \u0438\u043b\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/JTS_Topology_Suite\">JTS<\/a>). Crunchy Data \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u0432 \u0435\u0451 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0441\u0438\u043b, \u0447\u0435\u043c \u0432 \u0441\u0430\u043c\u0443 PostGIS.<\/p>\n<p>  <i>\u041f\u043e\u043b \u0420\u0430\u043c\u0441\u0438<\/i> ( Paul Ramsey) \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e \u0442\u0435\u0441\u0442\u0430\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 GEOS (\u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445), \u0430 \u0432\u0437\u0433\u043b\u044f\u0434\u043e\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u043a\u0430 GEOS \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u043c\u0438 \u0445\u0440\u043e\u043d\u043e\u043b\u043e\u0433\u0438\u044e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439 \u0432 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u2014 \u043e\u0442 \u0440\u0435\u043b\u0438\u0437\u0430 3.6 \u043a \u0441\u0432\u0435\u0436\u0430\u0439\u0448\u0435\u043c\u0443 \u2014 3.9. \u0412\u043e\u043e\u0431\u0449\u0435-\u0442\u043e, \u043e GEOS 3.9 \u041f\u043e\u043b \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u2014 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0434\u0435\u043a\u0430\u0431\u0440\u044f \u0432 \u0431\u043b\u043e\u0433\u0435 Crunchy Data \u2014 <a href=\"https:\/\/blog.crunchydata.com\/blog\/waiting-for-postgis-3.1-geos-3.9\">Waiting for PostGIS 3.1: GEOS 3.9<\/a> \u0438 <a href=\"http:\/\/blog.cleverelephant.ca\/2020\/12\/waiting-postgis-31-3.html\">\u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c<\/a>. \u0422\u0430\u043c \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0440\u043e\u0441\u043a\u043e\u0448\u043d\u044b\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u043d\u043e \u043d\u0435\u0442 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u0410 \u0432\u043e\u0442 \u0437\u0430\u043c\u0435\u0442\u043a\u0443 \u041f\u043e\u043b\u0430 \u0420\u0430\u043c\u0441\u0438 \u2014 <a href=\"http:\/\/blog.cleverelephant.ca\/2021\/04\/psql-binary.html\">Dumping a ByteA with psql<\/a> \u2014 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0435\u0433\u043e \u0431\u043b\u043e\u0433\u0435. \u041e\u043d\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0442\u0435\u043c, \u043a\u0442\u043e:<\/p>\n<ul>\n<li>\u0445\u0440\u0430\u043d\u0438\u0442 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445 \u0431\u0430\u0437\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f-\u044f\u0440\u043b\u044b\u0447\u043a\u0438 (thumbnails);<\/li>\n<li>\u0445\u043e\u0447\u0435\u0442 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u0435\u0441\u043d\u0438, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Protocol_Buffers\">protobuf<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/desktop.arcgis.com\/ru\/arcmap\/10.3\/manage-data\/las-dataset\/what-is-lidar-data-.htm\">LIDAR-\u0444\u0430\u0439\u043b<\/a>;<\/li>\n<li>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0437\u0438\u0442\u0430 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432.<\/li>\n<\/ul>\n<p>  \u0425\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043c\u043e\u0436\u043d\u043e, \u0430 \u0432\u043e\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u2014 \u043d\u0443\u0436\u0435\u043d \u0444\u0430\u0439\u043b. \u0412\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0435\u0440\u0451\u0442 \u0438\u0437 \u0431\u0430\u0437\u044b \u044f\u0440\u043b\u044b\u0447\u043e\u043a \u0432 \u0442\u0438\u043f\u0435 <b>bytea<\/b>, \u0447\u0435\u0440\u0435\u0437 <b>psql<\/b> \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u0435\u0440\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <code>encode<\/code> \u0438 \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435. \u0412\u044b\u0432\u043e\u0434 psql \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <b>xxd<\/b>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0442\u043e\u043a (\u043a\u043b\u044e\u0447 <code>-r<\/code>) \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0432\u0438\u0434 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 \u0444\u0430\u0439\u043b <code>.png<\/code>:  <\/p>\n<pre><code class=\"plaintext\">echo &quot;SELECT encode(thumbnail, 'hex') FROM persons WHERE id = 12345&quot; \\   | psql --quiet --tuples-only -d dbname \\   | xxd -r -p \\   &gt; thumbnail.png<\/code><\/pre>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u043e\u043b\u044f bytea.<\/p>\n<p>  <\/p>\n<h3>\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0436\u0438\u0437\u043d\u044c \u0432 \u043a\u043e\u043c\u043c\u044c\u044e\u043d\u0438\u0442\u0438<\/h3>\n<p>  <b><a href=\"https:\/\/erthalion.info\/2021\/03\/03\/subscripting\/\">How many engineers does it take to make subscripting work?<\/a><\/b><\/p>\n<p>  <i>\u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0414\u043e\u043b\u0433\u043e\u0432<\/i> (Zalando) \u043f\u0438\u0448\u0435\u0442 \u0432 \u0441\u0432\u043e\u0451\u043c <a href=\"https:\/\/erthalion.info\/\">\u043b\u0438\u0447\u043d\u043e\u043c \u0431\u043b\u043e\u0433\u0435<\/a> \u0432 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u043c \u0436\u0430\u043d\u0440\u0435: \u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0430\u0442\u0447\u0430, \u043d\u043e \u0438 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438\u0437 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u0430\u043a\u0443\u044e \u043c\u043e\u0440\u0430\u043b\u044c \u0434\u043b\u044f \u043f\u0438\u0441\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0430\u0442\u0447\u0435\u0439. \u0422\u0430\u043a\u0438\u0445, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e PostgreSQL \u0431\u044b\u043b\u043e \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0438\u0445 \u0437\u0430 \u0432\u0440\u0435\u043c\u044f \u043c\u0435\u043d\u044c\u0448\u0435 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u041f\u0430\u0442\u0447 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <i>subscribting<\/i> \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 JSONB \u2014 \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u0430\u043a \u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<pre><code class=\"pgsql\">SET jsonb_column['key'] = '&quot;value&quot;';<\/code><\/pre>\n<p>\u0432\u043c\u0435\u0441\u0442\u043e  <\/p>\n<pre><code class=\"pgsql\">SET jsonb_column = jsonb_set(jsonb_column, '{&quot;key&quot;}', '&quot;value&quot;');<\/code><\/pre>\n<p>  \u041d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0442\u0447\u0430 \u0432 2015 \u0433\u043e\u0434\u0443 \u0441 \u0431\u0435\u0441\u0435\u0434\u044b \u0414\u043c\u0438\u0442\u0440\u0438\u044f \u0441 <i>\u041e\u043b\u0435\u0433\u043e\u043c \u0411\u0430\u0440\u0442\u0443\u043d\u043e\u0432\u044b\u043c<\/i> \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0432\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u043e\u0433\u043e \u043f\u0430\u0442\u0447\u0430 \u0414\u043e\u043b\u0433\u043e\u0432\u0430. \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u043d\u0435\u0441\u043b\u043e\u0441\u044c \u043a \u043f\u0430\u0442\u0447\u0443 \u0441\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0431\u043e\u043b\u0435\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u043d\u0435\u0440\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0430\u0442\u0447 \u0414\u043c\u0438\u0442\u0440\u0438\u044f \u0431\u044b\u043b \u043d\u0435\u043f\u0440\u043e\u0441\u0442, \u0438 \u0440\u0435\u0432\u044e\u0435\u0440\u044b \u043d\u0435 \u0442\u043e\u0440\u043e\u043f\u0438\u043b\u0438\u0441\u044c \u0435\u0433\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u043e\u0446\u0435\u043d\u0438\u0442\u044c. \u0415\u0449\u0451 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0442\u0447\u0430 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u044e\u0442 <a href=\"https:\/\/www.postgresql.org\/message-id\/112397.1608236975%40sss.pgh.pa.us\"><i>\u0422\u043e\u043c \u041b\u0435\u0439\u043d<\/i><\/a> (Tom Lane), <a href=\"https:\/\/git.postgresql.org\/gitweb\/?p=postgresql.git;a=commit;h=676887a3b0b8e3c0348ac3f82ab0d16e9a24bd43\">\u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0442\u0438\u0432\u0448\u0438\u0439<\/a> \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0442\u0447 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u041a\u043e\u0440\u043e\u0442\u043a\u043e\u0432, <i>\u041f\u0430\u0432\u0435\u043b \u0421\u0442\u0435\u0445\u0443\u043b\u0435<\/i> (Pavel Stehule) \u0438 <i>\u041d\u0438\u043a\u0438\u0442\u0430 \u0413\u043b\u0443\u0445\u043e\u0432<\/i>.<\/p>\n<p>  \u0417\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u043c\u044b \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u00ab\u043b\u0443\u0447\u0448\u0435\u0435 \u0432\u0440\u0430\u0433 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e\u00bb. \u041f\u0430\u0442\u0447 \u043f\u0440\u043e\u0434\u0432\u0438\u0433\u0430\u043b\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044f\u043b\u043e, \u0447\u0442\u043e \u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0432 \u043e\u0442\u0447\u0430\u044f\u043d\u0438\u0438 \u0434\u0430\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a \u043f\u0430\u0442\u0447\u0443: \u0435\u0441\u043b\u0438 \u0432\u044b \u0434\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0439 \u0444\u0440\u0430\u0437\u044b \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u0442\u0435 \u0440\u044c\u0432\u044e, \u044f \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044e \u0431\u0443\u0442\u044b\u043b\u043a\u0443 \u043f\u0438\u0432\u0430 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 PGConfEU (\u043e \u0441\u0443\u0434\u044c\u0431\u0435 \u0431\u0443\u0442\u044b\u043b\u043a\u0438 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043d\u0435 \u0443\u0437\u043d\u0430\u043b\u0438).<\/p>\n<p>  \u0412 \u0444\u0438\u043d\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 8 \u0441\u043e\u0432\u0435\u0442\u043e\u0432. \u0412\u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0432 \u043c\u043e\u0451\u043c \u0432\u043e\u043b\u044c\u043d\u043e\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u2014 Last but not least:<\/p>\n<p>  \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0432\u044e \u043f\u0430\u0442\u0447\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0443\u0441\u0438\u043b\u0438\u044f, \u0434\u0435\u043b\u0430\u044f \u0440\u0435\u0432\u044e \u043f\u0430\u0442\u0447\u0435\u0439 \u0432\u0430\u0448\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u0433.<\/p>\n<p>  \u041b\u0443\u0447\u0448\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u0434\u0431\u0435\u043a \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u0440\u0435\u0435. \u042d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0430 \u0440\u0430\u043d\u043d\u0435\u0439 \u0441\u0442\u0430\u0434\u0438\u0438.<\/p>\n<p>  \u0420\u0430\u0437\u0431\u0435\u0439\u0442\u0435 \u043f\u0430\u0442\u0447 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0435\u0439 \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0440\u0435\u0432\u044c\u044e\u0435\u0440\u043e\u0432.<\/p>\n<p>  \u0412\u044b \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u0441\u044c, \u043d\u043e \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u043c\u043d\u043e\u0433\u043e \u043b\u044e\u0434\u0435\u0439 \u0433\u043e\u0442\u043e\u0432\u044b \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0434\u0435\u0442\u0430\u043b\u044f\u043c\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0442\u0440\u0435\u0434\u0430 \u0432 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0435 \u0438 \u0437\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0434\u0435\u043b, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u044f \u0434\u043b\u0438\u0442\u0441\u044f \u0433\u043e\u0434\u044b. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0443 \u043a\u043e\u043c\u043c\u0438\u0442\u0444\u0435\u0441\u0442\u0430 \u0438 \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0432\u043a\u043b\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u0440\u0435\u0434, \u043f\u0438\u0448\u0438\u0442\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0430\u043c\u043c\u0430\u0440\u0438.<\/p>\n<p>  <\/p>\n<h3>\u041e\u0431\u043b\u0430\u043a\u0430 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b<\/h3>\n<p>  <b><a href=\"https:\/\/www.cybertec-postgresql.com\/en\/running-postgres-in-docker-why-and-how\/\">Running Postgres In Docker \u2014 Why And How?<\/a><\/b><\/p>\n<p>  <i>\u041a\u0430\u0430\u0440\u0435\u043b \u041c\u043e\u043f\u043f\u0435\u043b<\/i> (Kaarel Moppel, Cybertec) \u0437\u0430\u0434\u0430\u0451\u0442 \u0441\u0435\u0431\u0435 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0443\u0436\u043d\u043e \u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PostgreSQL \u0432 Docker \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d, \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u043e\u043d \u0432\u043e\u043e\u0431\u0449\u0435 \u0442\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c?\u00bb \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442: \u00ab\u0434\u0430, \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0442\u044c\u0441\u044f, \u0438 \u0435\u0441\u043b\u0438 \u0434\u043b\u044f \u0444\u0430\u043d\u0430 \u0438\u043b\u0438 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb.<\/p>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432, \u043d\u043e \u043d\u0430\u0447\u043d\u0451\u043c \u0441 \u043f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u2014 \u00ab\u041a\u0430\u043f\u043b\u0438 \u0434\u0451\u0433\u0442\u044f \u0432 \u0431\u043e\u0447\u043a\u0443 \u043c\u0451\u0434\u0430\u00bb.<\/p>\n<p>  \u0414\u043e\u043a\u0435\u0440-\u0438\u043c\u0438\u0434\u0436\u0438 \u0434\u0430 \u0438 \u0432\u0441\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e\u0434 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0442\u0438\u043b\u0435 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u043e\u0432 . \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0430\u043c \u0434\u0430\u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u0440\u0430\u0437\u0432\u0435\u0434\u0435\u043d\u044b \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e \u0442\u043e\u043c\u0430\u043c (persistent units). \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0437\u0430\u0442\u0435\u044f \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u043e\u0439.<\/p>\n<p>  \u041e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0435 \u0436\u0434\u0438\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u0423 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0451\u0433\u043a\u0430\u044f \u0436\u0438\u0437\u043d\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0442\u0430\u043a\u043e\u0439 \u0432\u0441\u0435\u043e\u0431\u044a\u0435\u043c\u043b\u044e\u0449\u0438\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u043a\u0430\u043a Kubernetes \u043f\u043b\u044e\u0441 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 (\u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u0442 Zalando \u0438\u043b\u0438 Crunchy). <\/p>\n<h3>\u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>  <b><a href=\"https:\/\/www.postgresql.org\/about\/policies\/coc\/reports\/2020\/\">The PostgreSQL Community Code of Conduct Committee Annual Report for 2020<\/a><\/b><\/p>\n<p>  \u042d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043b\u0438 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 <i>\u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u044f \u041b\u0443\u0431\u0435\u043d\u043d\u0438\u043a\u043e\u0432\u0430<\/i>, <i>\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u041b\u0430\u0445\u0438\u043d<\/i> \u0438 <i>\u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u044f \u0420\u0430\u0441\u043f\u043e\u043f\u0438\u043d\u0430<\/i> (\u0432\u0441\u0435 \u0438\u0437 Postgres Professional), \u0442\u0430\u043a\u0436\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 <i>\u0412\u0438\u043a\u0442\u043e\u0440 \u0415\u0433\u043e\u0440\u043e\u0432<\/i> \u0438 <i>\u0412\u0430\u043b\u0435\u0440\u0438\u044f \u041a\u0430\u043f\u043b\u0430\u043d<\/i>. \u0415\u0449\u0451 \u043e\u043d \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d \u0441 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u043d\u0430 \u044f\u043f\u043e\u043d\u0441\u043a\u0438\u0439 \u0438 \u0438\u0432\u0440\u0438\u0442.<\/p>\n<p>  \u0427\u0438\u0441\u043b\u043e \u0436\u0430\u043b\u043e\u0431 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u043e\u0441\u044c \u0432 2020: 18 \u043f\u0440\u043e\u0442\u0438\u0432 12 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0433\u043e\u0434\u0443. \u041c\u0443\u0436\u0447\u0438\u043d\u044b \u0436\u0430\u043b\u0443\u044e\u0442\u0441\u044f \u0447\u0430\u0449\u0435: 15\/3. \u041e\u0431\u044b\u0447\u043d\u043e \u043e\u0442 \u0441\u0442\u0440\u0430\u043d\u044b \u043f\u043e \u0436\u0430\u043b\u043e\u0431\u0435. \u041f\u043e 2 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u0420\u0424, \u0410\u0440\u0433\u0435\u043d\u0442\u0438\u043d\u044b, UK \u0438 US.<\/p><\/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\/545796\/\"> https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/545796\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rx\/mm\/y6\/rxmmy6_uzgh2b5n3iraemsyt_qe.jpeg\"><br \/>  <i>\u041c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c \u0432\u0430\u0441 \u0441 \u0441\u0430\u043c\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u043c\u0438 PostgreSQL. \u042d\u0442\u043e\u0442 \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0443\u043a\u043b\u043e\u043d\u043e\u043c \u0432 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438. \u041d\u0435\u0442, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/i><\/p>\n<h3>\u0425\u0430\u0440\u0434\u0432\u0435\u0440\u043d\u044b\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0438: FPGA<\/h3>\n<p>  \u0412 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 <i>\u042d\u043d\u0434\u0438 \u042d\u043b\u0438\u043a\u043e\u0442\u0442\u0430<\/i> (Andy Ellicott) \u0432 \u0431\u043b\u043e\u0433\u0435 <b>Swarm64<\/b> <b><a href=\"https:\/\/swarm64.com\/post\/postgres-hardware-acceleration-2020\/?fbclid=IwAR11zjcf6Xepwo7adxYPOmylsvoESQgxEoJFhYJzMA4BXgXXfVTVMiZ1O6A\">3 hardware acceleration options Postgres users should know in 2020<\/a><\/b> \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u0440\u0451\u0445 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u044f\u0445, \u043d\u0435 GPU, \u0430 FRGA, \u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0432 \u043e\u0431\u043b\u0430\u043a\u0430\u0445. \u0423 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441: \u0443 Swarm64 \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 FPGA-\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0435. \u0417\u043d\u0430\u0447\u0438\u043c\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u043e\u043d \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 Amazon \u043e\u0431 FPGA-\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0435 \u043a\u044d\u0448\u0430 (FPGA-powered caching layer) \u0432 <a href=\"https:\/\/pages.awscloud.com\/AQUA_Preview.html\">Redshift AQUA<\/a> (Advanced Query Accelerator) \u0432 <b>Amazon<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0431\u044b\u0441\u0442\u0440\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0410 \u0432\u043e\u043e\u0431\u0449\u0435 \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 (\u0432\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Amazon, Alibaba, \u0438 Azure) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 FPGA-\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0438, \u043f\u0440\u043e\u0441\u0432\u0435\u0449\u0430\u0435\u0442 \u043d\u0430\u0441 \u042d\u043d\u0434\u0438.<\/p>\n<p>  \u0418\u0442\u0430\u043a:<\/p>\n<p>  <b>Swarm64 Data Accelerator (DA)<\/b><br \/>  \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u043c\u0435\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0430 \u0441\u043e\u0442\u043d\u0438 \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0445 \u0438\u043b\u0438 \u043f\u0438\u0448\u0443\u0449\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043d\u0430 FPGA. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0442\u0430\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u044b <a href=\"https:\/\/docs.microsoft.com\/ru-ru\/sql\/relational-databases\/indexes\/columnstore-indexes-overview?view=sql-server-ver15\">columnstore<\/a>, \u043a\u0430\u043a \u0432 MS SQL Server. \u0415\u0441\u0442\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 <a href=\"https:\/\/swarm64.com\/wp-content\/uploads\/2020\/08\/Swarm64-V5-Technical-Overview-WP.pdf\">\u0432 PDF<\/a>, \u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e FPGA \u0432 \u043d\u0451\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442. \u0417\u0430\u0442\u043e <a href=\"https:\/\/www.youtube.com\/watch?v=M8-qUDy9Bx8\">\u0435\u0441\u0442\u044c \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e<\/a>, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0435, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c Postgres \u043d\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435 Amazon EC2 F1 \u0441 FPGA. \u0415\u0449\u0451 \u0435\u0441\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432 TPC-H (\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u044d\u0442\u0430 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0441 FPGA \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043a\u0430\u043a \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e-\u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u2014 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hybrid_transactional\/analytical_processing\">HTAP<\/a>), \u0438 \u0442\u0430\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0432 50 \u0440\u0430\u0437 \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.  <\/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-320873","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/320873","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=320873"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/320873\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=320873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=320873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=320873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}