{"id":366570,"date":"2024-05-21T03:02:50","date_gmt":"2024-05-21T03:02:50","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=366570"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=366570","title":{"rendered":"<span>\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f MySQL\/MariaDB<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042f <a href=\"https:\/\/eatonphil.com\/2024-01-wehack-mysql.html\">\u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043d\u0435\u0434\u0435\u043b\u044e<\/a>, \u043a\u043e\u043f\u0430\u044f\u0441\u044c \u0432\u043e\u00a0\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 MySQL\/MariaDB \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u00a0\u0435\u0449\u0451 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 80\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438. \u0425\u043e\u0442\u044f MySQL \u0438 MariaDB\u00a0\u2014 \u044d\u0442\u043e, \u043f\u043e\u00a0\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438, \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u00a0\u0436\u0435 (\u044f \u0435\u0449\u0451 \u043a\u00a0\u044d\u0442\u043e\u043c\u0443 \u0432\u0435\u0440\u043d\u0443\u0441\u044c), \u044f \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043b\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u00a0MariaDB.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/30e\/fb0\/408\/30efb0408d15c8ce5117de02a9f8a860.png\" width=\"780\" height=\"440\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/30e\/fb0\/408\/30efb0408d15c8ce5117de02a9f8a860.png\"\/><\/figure>\n<p>\u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0441\u0430\u043c \u043d\u0435\u00a0\u0441\u043e\u0431\u0438\u0440\u0430\u043b MySQL\/MariaDB. \u0412\u00a0\u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u0435\u043d\u044c \u00ab\u043d\u0435\u0434\u0435\u043b\u0438 \u0445\u0430\u043a\u0435\u0440\u0441\u0442\u0432\u0430\u00bb \u044f \u0441\u043c\u043e\u0433 \u043d\u0430\u043b\u0430\u0434\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 MariaDB \u0438 <a href=\"https:\/\/twitter.com\/eatonphil\/status\/1742649922791395501\">\u0442\u0432\u0438\u043a\u043d\u0443\u043b \u043a\u043e\u0434<\/a> \u0442\u0430\u043a, \u0447\u0442\u043e\u00a0\u0437\u0430\u043f\u0440\u043e\u0441 <code>SELECT 23<\/code>\u00a0\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b <code>213<\/code>. \u0421\u0434\u0435\u043b\u0430\u043b \u044f \u0438 <a href=\"https:\/\/twitter.com\/eatonphil\/status\/1742654868085526896\">\u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0432\u0438\u043a<\/a>\u00a0\u2014 \u0442\u0430\u043a\u043e\u0439, \u0447\u0442\u043e\u00a0\u0437\u0430\u043f\u0440\u043e\u0441 <code>SELECT 80\u00a0+ 20<\/code>\u00a0\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b <code>60<\/code>. \u041d\u0430\u00a0\u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u043d\u044c \u044f \u0441\u043c\u043e\u0433 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c <a href=\"https:\/\/twitter.com\/eatonphil\/status\/1742958892957446490\">\u043f\u0440\u043e\u0441\u0442\u0443\u044e UDF<\/a> \u043d\u0430\u00a0C, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 <code>SELECT mysum(20, 30)<\/code> \u0434\u0430\u0432\u0430\u043b <code>50<\/code>.<\/p>\n<p>\u041e\u0441\u0442\u0430\u0442\u043e\u043a \u043d\u0435\u0434\u0435\u043b\u0438 \u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u00a0\u0442\u0435\u043c, \u043a\u0430\u043a\u00a0\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0434\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u00a0\u043d\u0451\u043c \u044f \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443. \u042d\u0442\u043e\u00a0\u2014 218\u00a0\u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0430\u00a0C++.<\/p>\n<p>\u041c\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>CREATE<\/code>, <code>DROP<\/code>, <code>INSERT<\/code> \u0438 <code>SELECT<\/code> \u0434\u043b\u044f\u00a0\u0442\u0430\u0431\u043b\u0438\u0446, \u043f\u043e\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0433\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u0430 <code>INTEGER<\/code>. \u041e\u043d \u043d\u0435\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c. \u042f \u0442\u0430\u043a\u0438\u043c \u0435\u0433\u043e \u0438 \u0434\u0435\u043b\u0430\u043b, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0443\u00a0\u043c\u0435\u043d\u044f \u043d\u0435\u00a0\u0431\u044b\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f\u00a0\u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u00a0\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430\u043c\u0438 MariaDB.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0438 \u043e\u00a0\u0442\u043e\u043c, \u043a\u0430\u043a\u00a0API MariaDB \u0434\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u043e\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0441\u00a0\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c API Postgres. \u042d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u044f \u0441\u043c\u043e\u0433 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u043f\u044b\u0442\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 <a href=\"https:\/\/notes.eatonphil.com\/2023-11-01-postgres-table-access-methods.html\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0445\u0430\u043a\u2011\u043d\u0435\u0434\u0435\u043b\u0435<\/a>.<\/p>\n<p>\u0412\u0435\u0441\u044c \u043a\u043e\u0434 \u0434\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u00a0\u043c\u043e\u0451\u043c <a href=\"https:\/\/github.com\/eatonphil\/mariadb\/tree\/11.4\/storage\/memem\">\u0444\u043e\u0440\u043a\u0435<\/a> MariaDB \u043d\u0430\u00a0GitHub.<\/p>\n<h3>MySQL \u0438 MariaDB<\/h3>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e\u00a0\u0442\u043e\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0438\u0448\u0443 \u00abMySQL\/MariaDB\u00bb.<\/p>\n<p>MySQL \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u00a0\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 GPL (\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 MySQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 Oracle). \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e\u0442\u043a\u0440\u044b\u0442. \u041d\u043e\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0435\u0434\u0451\u0442\u0441\u044f, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0437\u0430\u00a0\u0437\u0430\u043a\u0440\u044b\u0442\u044b\u043c\u0438 \u0434\u0432\u0435\u0440\u044f\u043c\u0438. \u041f\u0440\u0430\u0432\u0434\u0430, <a href=\"https:\/\/github.com\/mysql\/mysql-server\/commits\/trunk\/\">\u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0441\u044f\u0446<\/a>, \u0438\u043b\u0438\u00a0\u043e\u043a\u043e\u043b\u043e \u0442\u043e\u0433\u043e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u0441\u0432\u0435\u0436\u0438\u0439 \u043a\u043e\u0434.<\/p>\n<p>MariaDB\u00a0\u2014 \u044d\u0442\u043e \u0444\u043e\u0440\u043a MySQL \u043e\u0442\u00a0\u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f MySQL (\u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435). \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0442\u043e\u0436\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u00a0\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 GPL (\u043e\u043f\u044f\u0442\u044c\u00a0\u0436\u0435\u00a0\u2014 \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u043e\u00a0\u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0443\u044e \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c MariaDB, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f MariaDB Corporation). \u041a\u043e\u0434 MariaDB \u043e\u0442\u043a\u0440\u044b\u0442, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u043e\u0436\u0435.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043d\u0435\u043a\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u00a0\u0441\u0432\u043e\u0451\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 Linux \u00abMySQL\u00bb, \u0442\u043e \u043e\u043d, \u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0447\u0430\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 MariaDB.<\/p>\n<p>\u042d\u0442\u0438 \u0434\u0432\u0435 \u0420\u0421\u0423\u0411\u0414, \u043f\u043e\u00a0\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b. \u0418\u0441\u0441\u043b\u0435\u0434\u0443\u044f \u0438\u0445, \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 <code>SELECT.. FROM VALUES..<\/code> \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0432\u00a0\u043d\u0438\u0445 \u043f\u043e\u2011\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 <a href=\"https:\/\/mariadb.com\/kb\/en\/moving-from-mysql\/\">\u0431\u0430\u0437\u0435 \u0437\u043d\u0430\u043d\u0438\u0439 MariaDB<\/a>. \u041d\u043e\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u044d\u0442\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0437\u043d\u0430\u043d\u0438\u0439 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043c\u0435\u043d\u044f \u043a\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430\u043c.<\/p>\n<p><a href=\"https:\/\/dev.mysql.com\/doc\/\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a> MySQL \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u043d\u0430. \u0415\u0451 \u043b\u0435\u0433\u043a\u043e \u0447\u0438\u0442\u0430\u0442\u044c, \u0432\u00a0\u043d\u0435\u0439 \u043b\u0435\u0433\u043a\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u043d\u0443\u0436\u043d\u043e, \u043e\u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f. \u0410\u00a0\u0432\u043e\u0442 <a href=\"https:\/\/mariadb.com\/kb\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a> MariaDB \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0435\u0451 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f. \u041f\u0440\u043e\u0441\u0442\u0438\u0442\u0435, \u043d\u043e\u00a0\u044f\u00a0\u2014 \u043d\u0435\u00a0\u043f\u0440\u0438\u0432\u0435\u0440\u0436\u0435\u043d\u0435\u0446 \u0441\u0442\u043e\u0438\u0446\u0438\u0437\u043c\u0430: \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u00a0\u043d\u0435\u0434\u0435\u043b\u044e \u044f \u0434\u043e\u0448\u0451\u043b \u0434\u043e\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u043f\u0440\u044f\u043c\u043e \u0442\u0430\u043a\u0438 \u0432\u043e\u0437\u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0435\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u00a0\u044d\u0442\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439. \u041a\u00a0\u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043a\u0430\u043a\u0438\u043c\u2011\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u043d\u0430 \u043d\u0435\u00a0\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439. \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u00a0\u044d\u0442\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0435\u043b\u044c\u0437\u044f, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043d\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0MySQL \u0438 MariaDB \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e.<\/p>\n<p>\u0412\u00a0\u0438\u0442\u043e\u0433\u0435 \u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043d\u0435\u0434\u0435\u043b\u044e, \u0440\u0430\u0431\u043e\u0442\u0430\u044f \u0441\u00a0MariaDB, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0443\u00a0\u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0442\u044f\u0433\u0430 \u043a\u00a0\u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c. \u041d\u043e\u00a0\u044f \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0437\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u043b \u0432\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e MySQL, \u043d\u0430\u0434\u0435\u044f\u0441\u044c \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u00a0\u043e\u043d\u0430 \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u0438 \u0434\u043b\u044f\u00a0MariaDB.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441\u00a0\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0434\u0435\u043b, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a\u00a0\u0441\u0430\u043c\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c\u0443!<\/p>\n<h3>\u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/h3>\n<p>\u0417\u0440\u0435\u043b\u044b\u0435 \u0421\u0423\u0411\u0414 \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0437\u0430\u043c\u0435\u043d\u0443 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 \u0437\u0430\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f? \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u00a0\u2014 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u00a0\u2014 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 B\u2011\u0434\u0435\u0440\u0435\u0432\u044c\u044f\u043c\u0438 (\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f\u00a0\u0447\u0442\u0435\u043d\u0438\u044f) \u0438 LSM\u2011\u0434\u0435\u0440\u0435\u0432\u044c\u044f\u043c\u0438 \u0438\u043b\u0438\u00a0\u043d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u0443\u0447\u0430\u043c\u0438 (\u043e\u043d\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0430\u043d\u043d\u044b\u0445). \u0418\u043b\u0438, \u043c\u043e\u0436\u0435\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u00a0\u2014 <a href=\"https:\/\/rocksdb.org\/\">RocksDB<\/a>, <a href=\"https:\/\/sled.rs\/\">Sled<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/tikv.org\/\">TiKV<\/a>).<\/p>\n<p>\u0421\u0438\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0438\u0436\u043a\u0430\u043c\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u00a0\u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0421\u0423\u0411\u0414, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0421\u0423\u0411\u0414 \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c, \u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u043d\u0435\u00a0\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f. \u041d\u043e\u00a0\u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u0447\u0443\u0434\u0435\u0441\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435.<\/p>\n<p>\u0417\u0430\u043c\u0435\u043d\u0430 \u0441\u043b\u043e\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0421\u0423\u0411\u0414 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u00a0\u043d\u0430\u0448\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u043c\u043e\u0449\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 SQL, \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u041c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u0435\u0442\u0441\u044f\u00a0\u043b\u0438\u0448\u044c \u043c\u0435\u0442\u043e\u0434, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h3>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/h3>\n<p>MySQL\/MariaDB \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a\u00a0MySQL \u0435\u0441\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/storage-engines.html\">\u0440\u0430\u0437\u0434\u0435\u043b<\/a>, \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d\u043d\u044b\u0439 \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435.<\/p>\n<p>\u0422\u0430\u043c \u043f\u0440\u044f\u043c\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u043e\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u043e\u00a0\u044d\u0442\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0435\u00a0\u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a\u00a0\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0437\u0430\u043f\u0440\u0435\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043d\u0438\u0447\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435, \u043f\u043e\u0445\u043e\u0436\u0435, \u043d\u0435\u00a0\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u00a0\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0434\u0432\u0438\u0436\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0412\u00a0\u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0432\u00a0\u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043c\u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430\u00a0\u0431\u044b\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b CSV\u2011\u0434\u0432\u0438\u0436\u043a\u0438. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0442\u0430\u043a\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430, \u0442\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0435 <a href=\"https:\/\/github.com\/MariaDB\/server\/blob\/11.4\/storage\/csv\/ha_tina.cc\">\u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f<\/a> \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u0436\u0443\u0449\u0435\u0439\u0441\u044f \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043a\u0430\u0436\u0443\u0449\u0435\u0439\u0441\u044f \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u0430 \u043f\u043e\u0441\u0435\u044f\u043b\u0430 \u0432\u043e\u00a0\u043c\u043d\u0435 \u0437\u0435\u0440\u043d\u043e \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412\u00a0\u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u043b\u044e\u0441 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u043e\u043d\u0438 \u0434\u0430\u044e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 API \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041c\u043d\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u044d\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u0438\u0437\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f MariaDB: <a href=\"https:\/\/github.com\/MariaDB\/server\/blob\/11.4\/storage\/csv\">csv<\/a>, <a href=\"https:\/\/github.com\/MariaDB\/server\/tree\/11.4\/storage\/blackhole\">blackhole<\/a>, <a href=\"https:\/\/github.com\/MariaDB\/server\/tree\/11.4\/storage\/example\">example<\/a> \u0438 <a href=\"https:\/\/github.com\/MariaDB\/server\/tree\/11.4\/storage\/heap\">heap<\/a>.<\/p>\n<p>\u0414\u0432\u0438\u0436\u043e\u043a heap\u00a0\u2014 \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u0440\u0430\u0432\u0434\u0430, \u00ab\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u00bb \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u00ab\u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u00bb. \u0423\u00a0\u043c\u0435\u043d\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u0442\u0430\u043a\u043e\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u00a0\u0432\u00a0\u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435 MariaDB \u043d\u0430\u0439\u0434\u0451\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f\u00a0\u0443\u0440\u0435\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u043c\u0443 \u0438 \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b! \u041d\u0430\u0447\u043d\u0443 \u0441\u00a0\u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u043e\u0431\u00a0\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h3>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0438\u0436\u043e\u043a \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u00a0\u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435\u00a0\u2014 \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e. \u041d\u043e\u00a0\u0442\u0443\u0442 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u0442\u0435\u043c, \u043a\u0430\u043a\u00a0\u0432\u00a0\u0421\u0423\u0411\u0414 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b API \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0418 Postgres, \u0438 MySQL\/MariaDB \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 API \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a.<\/p>\n<h4>\u041a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>\u042f <a href=\"https:\/\/notes.eatonphil.com\/2023-11-01-postgres-table-access-methods.html\">\u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b<\/a> \u043e\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0434\u0432\u0438\u0436\u043a\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u2011 \u0438 \u0441\u0442\u0440\u043e\u043a\u043e\u2011\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0435 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u043a\u043e\u043b\u043e\u043d\u043a\u0438. \u0412\u043e\u2011\u043f\u0435\u0440\u0432\u044b\u0445\u00a0\u2014 \u044d\u0442\u043e \u0434\u0430\u0451\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0436\u0430\u0442\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u043e\u2011\u0432\u0442\u043e\u0440\u044b\u0445\u00a0\u2014 \u044d\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0436\u0430\u0442\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u0434\u0438\u0441\u043a\u0435 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435\u00a0\u0434\u0435\u043d\u0435\u0442\u0441\u044f \u0438 \u0432\u00a0\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0432\u00a0\u0441\u043b\u043e\u0435 API \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0441\u0436\u0430\u0442\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u00a0\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u0434\u0438\u0441\u043a. \u041d\u043e\u00a0\u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0442\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043a\u00a0\u0441\u0442\u0440\u043e\u043a\u0430\u043c \u0434\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043d\u0438\u043c\u0438 \u0432\u00a0API, \u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0436\u0430\u0442\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043a\u00a0\u0441\u0442\u0440\u043e\u043a\u0430\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u0443\u0440\u043e\u0432\u043d\u0435 API \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u0443\u0440\u043e\u0432\u043d\u044f\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u00a0\u043f\u043e\u0442\u0435\u0440\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438\u00a0\u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438. \u041f\u0440\u0438\u00a0\u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441\u00a0\u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u043d\u0430\u00a0\u0441\u0442\u0440\u043e\u043a\u0438, \u0430\u00a0\u043d\u0435\u00a0\u043d\u0430\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u044b.<\/p>\n<p>\u0412\u0441\u0451 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e, \u0445\u043e\u0442\u044f \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u2011\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c, \u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043d\u0435\u00a0\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0441\u0435\u0431\u044f \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u044e\u0442 \u0441\u00a0\u0443\u0447\u0451\u0442\u043e\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 API \u0438 \u0432\u00a0MySQL\/MariaDB, \u0438 \u0432\u00a0Postgres.<\/p>\n<h4>\u0412\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/h4>\n<p>API \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u00a0\u043e\u0431\u044a\u0451\u043c\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043c\u043e\u0436\u0435\u0442, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c, \u0432\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0431\u044a\u0451\u043c\u0435, \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u00a0\u2014 \u043a\u043e\u0433\u0434\u0430 API \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443\u00a0\u2014 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 N \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u0437\u00a0\u0431\u0443\u0444\u0435\u0440\u0430 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u041d\u043e\u00a0\u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u0438\u0434\u0451\u0442 \u043e\u0431\u00a0API, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f, \u0432\u00a0\u043a\u0430\u043a\u043e\u0439\u2011\u0442\u043e \u043c\u0435\u0440\u0435, \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>\u041f\u0440\u0430\u0432\u0434\u0430, \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043e\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0435\u0441\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0442\u0440\u043e\u043a \u0432\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0441\u043b\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0435\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0435\u0439 \u0444\u043e\u0440\u043c\u044b \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u00a0\u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u0441\u0443\u0434\u0438\u0442\u044c \u043f\u043e\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c\u0443 \u043c\u043d\u043e\u0439 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u043d\u0438 \u0432\u00a0MySQL\/MariaDB, \u043d\u0438 \u0432\u00a0Postgres \u043d\u0435\u00a0\u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0418 \u044d\u0442\u043e\u00a0\u2014 \u043d\u0435\u00a0\u043a\u0440\u0438\u0442\u0438\u043a\u0430 API \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445\u00a0\u2014 \u044d\u0442\u043e\u00a0\u043b\u0438\u0448\u044c \u0444\u0430\u043a\u0442\u044b, \u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c.<\/p>\n<h4>\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438<\/h4>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0437\u0434\u0435\u0441\u044c \u0442\u043e, \u0447\u0442\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b API \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a \u0441\u043b\u043e\u044e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u043a\u0438\u0435 \u00ab\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432\u0440\u0435\u0434\u043d\u044b\u043c\u0438. \u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043a\u043e\u0435 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u043b\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438.<\/p>\n<h4>\u041d\u0438\u0447\u0442\u043e \u043d\u0435 \u0432\u0435\u0447\u043d\u043e<\/h4>\n<p>\u0422\u0435\u043a\u0443\u0449\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f API \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u00a0\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b MySQL\/MariaDB \u0438\u043b\u0438\u00a0Postgres. \u0420\u0430\u043d\u044c\u0448\u0435 \u043e\u0431\u0430 \u044d\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0435\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0435\u0431\u0435, \u0447\u0442\u043e\u00a0\u0432\u00a0\u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043a\u00a0\u043b\u044e\u0431\u043e\u043c\u0443 \u0438\u0437\u00a0\u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043f\u0430\u0442\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0432\u00a0\u043d\u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0442\u0440\u043e\u043a. \u0412\u0441\u0451 \u044d\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0435\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445, \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0414\u0430\u0436\u0435 \u0432\u00a0\u043d\u0430\u0448\u0438 \u0434\u043d\u0438 \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u044c \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u044b\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u00a0Postgres \u043f\u043e\u043b\u043d\u0443\u044e <a href=\"https:\/\/www.citusdata.com\/blog\/2021\/03\/06\/citus-10-columnar-compression-for-postgres\/\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443<\/a> \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445. \u041f\u043e\u044f\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0434\u0435\u043b\u0438\u0442\u044c Postgres \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u043e <a href=\"https:\/\/github.com\/citusdata\/postgres_vectorization_test\">\u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/a>.<\/p>\n<p>\u042f \u043d\u0435 \u0442\u0430\u043a \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435 MySQL, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u043c\u043e\u0433\u0443 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 \u044d\u0442\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445.<\/p>\n<h3>\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 MariaDB<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432\u00a0\u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 MariaDB!<\/p>\n<pre><code class=\"bash\">$ git clone https:\/\/github.com\/MariaDB\/server mariadb $ cd mariadb $ mkdir build $ cd build $ cmake -DCMAKE_BUILD_TYPE=Debug .. $ make -j8<\/code><\/pre>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u041a\u043e\u0433\u0434\u0430 \u044f \u0432\u043e\u0437\u0438\u043b\u0441\u044f \u0441\u00a0Postgres (\u044d\u0442\u043e\u00a0\u2014 \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u00a0C), \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u00a0\u043c\u043e\u0451\u043c \u043c\u043e\u0449\u043d\u043e\u043c Linux\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0430 \u0432\u0441\u0435\u0433\u043e \u043c\u0438\u043d\u0443\u0442\u0443. \u0410\u00a0\u0441\u0431\u043e\u0440\u043a\u0430 MySQL\/MariaDB \u0441\u00a0\u043d\u0443\u043b\u044f \u0437\u0430\u043d\u044f\u043b\u0430 20\u201330\u00a0\u043c\u0438\u043d\u0443\u0442. \u0412\u043e\u0442 \u0432\u0430\u043c C++!<\/p>\n<p>\u041d\u043e, \u043a\u00a0\u043c\u043e\u0435\u043c\u0443 \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 MySQL\/MariaDB \u0434\u043b\u044f\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0432\u0438\u043a\u043e\u0432, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e\u00a0\u0436\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 Postgres \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u0441\u0431\u043e\u0440\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<pre><code class=\"bash\">$ .\/build\/scripts\/mariadb-install-db --srcdir=$(pwd) --datadir=$(pwd)\/db<\/code><\/pre>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u2014 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<pre><code class=\"bash\">$ echo \"[client] socket=$(pwd)\/mariadb.sock  [mariadb] socket=$(pwd)\/mariadb.sock  basedir=$(pwd) datadir=$(pwd)\/db pid-file=$(pwd)\/db.pid\" > my.cnf<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440:<\/p>\n<pre><code class=\"bash\">$ .\/build\/sql\/mariadbd --defaults-extra-file=$(pwd)\/my.cnf --debug:d:o,$(pwd)\/db.debug .\/build\/sql\/mariadbd: Can't create file '\/var\/log\/mariadb\/mariadb.log' (errno: 13 \"Permission denied\") 2024-01-03 17:10:15 0 [Note] Starting MariaDB 11.4.0-MariaDB-debug source revision 3fad2b115569864d8c1b7ea90ce92aa895cfef08 as process 185550 2024-01-03 17:10:15 0 [Note] InnoDB: !!!!!!!! UNIV_DEBUG switched on !!!!!!!!! 2024-01-03 17:10:15 0 [Note] InnoDB: Compressed tables use zlib 1.2.13 2024-01-03 17:10:15 0 [Note] InnoDB: Number of transaction pools: 1 2024-01-03 17:10:15 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions 2024-01-03 17:10:15 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB 2024-01-03 17:10:15 0 [Note] InnoDB: Completed initialization of buffer pool 2024-01-03 17:10:15 0 [Note] InnoDB: Buffered log writes (block size=512 bytes) 2024-01-03 17:10:15 0 [Note] InnoDB: End of log at LSN=57155 2024-01-03 17:10:15 0 [Note] InnoDB: Opened 3 undo tablespaces 2024-01-03 17:10:15 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. 2024-01-03 17:10:15 0 [Note] InnoDB: Setting file '.\/ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... 2024-01-03 17:10:15 0 [Note] InnoDB: File '.\/ibtmp1' size is now 12.000MiB. 2024-01-03 17:10:15 0 [Note] InnoDB: log sequence number 57155; transaction id 16 2024-01-03 17:10:15 0 [Note] InnoDB: Loading buffer pool(s) from .\/db\/ib_buffer_pool 2024-01-03 17:10:15 0 [Note] Plugin 'FEEDBACK' is disabled. 2024-01-03 17:10:15 0 [Note] Plugin 'wsrep-provider' is disabled. 2024-01-03 17:10:15 0 [Note] InnoDB: Buffer pool(s) load completed at 240103 17:10:15 2024-01-03 17:10:15 0 [Note] Server socket created on IP: '0.0.0.0'. 2024-01-03 17:10:15 0 [Note] Server socket created on IP: '::'. 2024-01-03 17:10:15 0 [Note] mariadbd: Event Scheduler: Loaded 0 events 2024-01-03 17:10:15 0 [Note] .\/build\/sql\/mariadbd: ready for connections. Version: '11.4.0-MariaDB-debug'  socket: '.\/mariadb.sock'  port: 3306  Source distribution<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u043b\u0430\u0433\u0430 &#8212;debug \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u043b\u043e\u0433\u0438 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 $(pwd)\/db.debug. \u041d\u0435\u044f\u0441\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c. \u041c\u0435\u043d\u044f \u0431\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u0432\u0441\u0451 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u043e \u0431\u044b \u0432 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u043c\u0435\u0441\u0442\u043e.<\/p>\n<p>\u0412 \u0434\u0440\u0443\u0433\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043a\u043b\u0438\u0435\u043d\u0442 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441:<\/p>\n<pre><code class=\"bash\">$ .\/build\/client\/mariadb --defaults-extra-file=$(pwd)\/my.cnf --database=test Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A  Welcome to the MariaDB monitor.  Commands end with ; or \\g. Your MariaDB connection id is 3 Server version: 11.4.0-MariaDB-debug Source distribution  Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.  Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.  MariaDB [test]> SELECT 1; +---+ | 1 | +---+ | 1 | +---+ 1 row in set (0.001 sec)<\/code><\/pre>\n<p>\u0423\u0440\u0430! \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445!<\/p>\n<h3>\u0413\u0434\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434?<\/h3>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u0438\u0448\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0\u043a\u0430\u043a\u043e\u0433\u043e\u2011\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043e\u0436\u0438\u0434\u0430\u044e, \u0447\u0442\u043e\u00a0\u0432\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0443\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u00a0\u0442\u043e\u0442 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u044f \u043f\u0438\u0441\u0430\u043b <a href=\"https:\/\/github.com\/eatonphil\/pgtam\">\u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/a> \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f\u00a0Postgres. \u041d\u043e\u00a0\u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f\u00a0Postgres \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432\u00a0\u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445.<\/p>\n<p>\u041c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c UDF\u2011\u043f\u043b\u0430\u0433\u0438\u043d \u0437\u0430\u00a0\u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0434\u0435\u0440\u0435\u0432\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 MariaDB. \u041d\u043e\u00a0\u043a\u043e\u0433\u0434\u0430 \u0434\u0435\u043b\u043e \u0434\u043e\u0448\u043b\u043e \u0434\u043e\u00a0\u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u044f \u0432\u043f\u0443\u0441\u0442\u0443\u044e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043f\u043e\u0447\u0442\u0438 \u0446\u0435\u043b\u044b\u0439 \u0434\u0435\u043d\u044c (\u044d\u0442\u043e\u00a0\u2014 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u00a0\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u0445 \u0445\u0430\u043a\u2011\u043d\u0435\u0434\u0435\u043b\u0438).<\/p>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f\u00a0MySQL\/MariaDB \u043b\u0435\u0433\u0447\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u043f\u0440\u0438\u0431\u0435\u0433\u043d\u0443\u0432 \u043a\u00a0\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 CMake, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u0443 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u0437\u0430\u00a0\u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f. \u041d\u043e\u00a0\u043c\u043d\u0435, \u0437\u0430\u00a0\u0434\u0435\u043d\u044c, \u043d\u0435\u00a0\u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u00a0\u0442\u0435\u043c, \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0430\u00a0\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u00a0\u044d\u0442\u043e \u043c\u043d\u0435 \u043d\u0435\u00a0\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c.<\/p>\n<p>\u041f\u043e\u00a0\u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u0440\u0438\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u043b\u044f\u00a0MySQL\/MariaDB \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0432\u00a0\u0444\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u00a0\u2014 \u044d\u0442\u043e <a href=\"https:\/\/twitter.com\/kastauyra\/status\/1743346665442935174\">\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u044f\u0432\u043b\u0435\u043d\u0438\u0435<\/a>.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u044f \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u043d\u0430\u00a0\u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u00a0\u2014 \u044f \u0441\u043c\u043e\u0433 \u043e\u0447\u0435\u043d\u044c\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b\u0439\u0442\u0438 \u043d\u0430\u00a0\u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u0432\u0438\u0436\u043a\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043c \u0438 \u043c\u044b \u0441\u00a0\u0432\u0430\u043c\u0438.<\/p>\n<h4>\u0428\u0430\u0431\u043b\u043e\u043d<\/h4>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 MariaDB, \u0432 \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 storage, \u043d\u043e\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443.<\/p>\n<pre><code class=\"cpp\">$ mkdir storage\/memem \u0412 storage\/memem\/CMakeLists.txt \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u0435\u043a\u0441\u0442. # Copyright (c) 2006, 2010, Oracle and\/or its affiliates. All rights reserved. #  # This program is free software; you can redistribute it and\/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. #  # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the # GNU General Public License for more details. #  # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1335 USA  SET(MEMEM_SOURCES  ha_memem.cc ha_memem.h) MYSQL_ADD_PLUGIN(memem ${MEMEM_SOURCES} STORAGE_ENGINE)<\/code><\/pre>\n<p>\u0412\u0441\u0451 \u044d\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u00a0\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 MySQL\/MariaDB. \u0410\u00a0\u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \u043c\u044b \u0432\u044b\u0437\u043e\u0432\u0435\u043c \u0432\u00a0\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <code>build<\/code> \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>make<\/code>\u00a0\u2014 \u0442\u043e \u043e\u043d\u0430, \u043a\u0440\u043e\u043c\u0435 \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u0441\u043e\u0431\u0435\u0440\u0451\u0442 \u0438 \u043d\u0430\u0448 \u043a\u043e\u0434.<\/p>\n<h4>\u041a\u043b\u0430\u0441\u0441 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>\u0425\u043e\u0440\u043e\u0448\u043e\u00a0\u0431\u044b\u043b\u043e\u00a0\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 MySQL \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e C (\u0445\u043e\u0442\u044f\u00a0\u0431\u044b \u0438\u0437\u2011\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0433\u0447\u0435 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u0438\u0435 \u044f\u0437\u044b\u043a\u0438). \u041d\u043e\u00a0\u0432\u0441\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043a\u043b\u0430\u0441\u0441\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043b\u0430\u0441\u0441.<\/p>\n<p>\u041a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u043c <a href=\"https:\/\/github.com\/MariaDB\/server\/blob\/11.4\/sql\/handler.h#L3200\">handler<\/a>. \u0412\u00a0\u043e\u0434\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 handler, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043e\u0434\u043d\u043e\u043c\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0435\u043c\u0443\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0443. (Postgres \u0434\u0430\u0451\u0442 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0430\u00a0MySQL \u0434\u0430\u0451\u0442 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a.) \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b handler \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<p>\u0412\u00a0<code>handler<\/code> \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u00a0\u0441\u0432\u043e\u0451\u043c \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u0435. \u0412\u00a0\u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0438\u0437\u00a0\u043d\u0438\u0445 \u043c\u044b \u043d\u0435\u00a0\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0438\u0437\u00a0\u043d\u0438\u0445. \u042d\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432\u00a0<code>ha_memem.h<\/code>. \u041c\u0435\u0442\u043e\u0434\u044b \u0441\u00a0\u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432\u00a0<code>ha_memem.cc.<\/code><\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0432 <code>ha_memem.h<\/code> \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e.<\/p>\n<pre><code class=\"cpp\">\/* Copyright (c) 2005, 2010, Oracle and\/or its affiliates. All rights reserved.    This program is free software; you can redistribute it and\/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; version 2 of the License.    This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.    You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA *\/  #ifdef USE_PRAGMA_INTERFACE #pragma interface \/* gcc class implementation *\/ #endif  #include \"thr_lock.h\" #include \"handler.h\" #include \"table.h\" #include \"sql_const.h\"  #include &lt;vector> #include &lt;memory><\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<pre><code class=\"cpp\">typedef std::vector&lt;uchar> MememRow;  struct MememTable {   std::vector&lt;std::shared_ptr&lt;MememRow>> rows;   std::shared_ptr&lt;std::string> name; };  struct MememDatabase {   std::vector&lt;std::shared_ptr&lt;MememTable>> tables; };<\/code><\/pre>\n<p>\u0412 <code>ha_memem.cc<\/code> \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c <code>static MememDatabase*<\/code> (\u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0449\u0443\u044e\u0441\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439), \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0432\u0441\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b <code>handler<\/code> \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u043d\u0438\u043c. \u041d\u0430\u043c, \u043f\u0440\u0430\u0432\u0434\u0430, \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0431\u044b \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0445\u0440\u0430\u043d\u0438\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432 \u043d\u0435\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441, \u0432 \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u0435 <code>handler<\/code>.<\/p>\n<p>\u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 <code>write_row<\/code> \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0438\u043b\u0438 \u0432\u044b\u0437\u043e\u0432 <code>rnd_next<\/code> \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438, \u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, N \u0440\u0430\u0437 \u0437\u0430 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441.<\/p>\n<p>\u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u2014 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441 <code>handler<\/code> \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b.<\/p>\n<pre><code class=\"cpp\">class ha_memem final : public handler {   uint current_position= 0;   std::shared_ptr&lt;MememTable> memem_table= 0;  public:   ha_memem(handlerton *hton, TABLE_SHARE *table_arg) : handler(hton, table_arg)   {   }   ~ha_memem()= default;   const char *index_type(uint key_number) { return \"\"; }   ulonglong table_flags() const { return 0; }   ulong index_flags(uint inx, uint part, bool all_parts) const { return 0; }   \/* \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430\u0445 define, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u044b *\/ #define MEMEM_MAX_KEY MAX_KEY     \/* \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u044e\u0447\u0435\u0439 *\/ #define MEMEM_MAX_KEY_SEG 16      \/* \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u043a\u043b\u044e\u0447 *\/ #define MEMEM_MAX_KEY_LENGTH 3500 \/* \u041a\u0430\u043a \u0432 InnoDB *\/   uint max_supported_keys() const { return MEMEM_MAX_KEY; }   uint max_supported_key_length() const { return MEMEM_MAX_KEY_LENGTH; }   uint max_supported_key_part_length() const { return MEMEM_MAX_KEY_LENGTH; }   int open(const char *name, int mode, uint test_if_locked) { return 0; }   int close(void) { return 0; }   int truncate() { return 0; }   int rnd_init(bool scan);   int rnd_next(uchar *buf);   int rnd_pos(uchar *buf, uchar *pos) { return 0; }   int index_read_map(uchar *buf, const uchar *key, key_part_map keypart_map,                      enum ha_rkey_function find_flag)   {     return HA_ERR_END_OF_FILE;   }   int index_read_idx_map(uchar *buf, uint idx, const uchar *key,                          key_part_map keypart_map,                          enum ha_rkey_function find_flag)   {     return HA_ERR_END_OF_FILE;   }   int index_read_last_map(uchar *buf, const uchar *key,                           key_part_map keypart_map)   {     return HA_ERR_END_OF_FILE;   }   int index_next(uchar *buf) { return HA_ERR_END_OF_FILE; }   int index_prev(uchar *buf) { return HA_ERR_END_OF_FILE; }   int index_first(uchar *buf) { return HA_ERR_END_OF_FILE; }   int index_last(uchar *buf) { return HA_ERR_END_OF_FILE; }   void position(const uchar *record) { return; }   int info(uint flag) { return 0; }   int external_lock(THD *thd, int lock_type) { return 0; }   int create(const char *name, TABLE *table_arg, HA_CREATE_INFO *create_info);   THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to,                              enum thr_lock_type lock_type)   {     return to;   }   int delete_table(const char *name) { return 0; }  private:   void reset_memem_table();   virtual int write_row(const uchar *buf);   int update_row(const uchar *old_data, const uchar *new_data)   {     return HA_ERR_WRONG_COMMAND;   };   int delete_row(const uchar *buf) { return HA_ERR_WRONG_COMMAND; } };<\/code><\/pre>\n<p>\u0410\u0432\u0442\u043e\u0440 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u043f\u043e\u0434\u043e\u0439\u0442\u0438 \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u041c\u044b \u0436\u0435 \u0443\u0434\u0435\u043b\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043b\u0438\u0448\u044c 7 \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c \u2014 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u0432 <code>ha_memem.cc<\/code> \u0438 \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430\u043c\u0438 <code>include<\/code>.<\/p>\n<pre><code class=\"cpp\">\/* Copyright (c) 2005, 2012, Oracle and\/or its affiliates. All rights reserved.    This program is free software; you can redistribute it and\/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; version 2 of the License.    This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.    You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA *\/  #ifdef USE_PRAGMA_IMPLEMENTATION #pragma implementation \/\/ gcc: Class implementation #endif  #define MYSQL_SERVER 1 #include &lt;my_global.h> #include \"sql_priv.h\" #include \"unireg.h\" #include \"sql_class.h\"  #include \"ha_memem.h\"<\/code><\/pre>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0439\u043c\u0451\u043c\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430.<\/p>\n<h3>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<h4>\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u2014 \u043d\u0430\u0434\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <code>MememDatabase*.<\/code> \u041c\u044b, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e \u0438\u043c\u0435\u043d\u0438.<\/p>\n<pre><code class=\"cpp\">\/\/ \u041f\u0420\u0415\u0414\u0423\u041f\u0420\u0415\u0416\u0414\u0415\u041d\u0418\u0415! \u0412\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a `database` \u0432 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \/\/ \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c\u0438. \u0422\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0445\u0430\u043a-\u043d\u0435\u0434\u0435\u043b\u0438,  \/\/ \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438,\u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f  \/\/ \u0441 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u043c MySQL\/MariaDB \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430. static MememDatabase *database;  static int memem_table_index(const char *name) {   int i;   assert(database->tables.size() &lt; INT_MAX);   for (i= 0; i &lt; (int) database->tables.size(); i++)   {     if (strcmp(database->tables[i]->name->c_str(), name) == 0)     {       return i;     }   }    return -1; }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u00a0\u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u0438\u0441\u0430\u043b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u043d\u0430\u00a0\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435\u00a0\u043b\u0438\u0448\u044c \u043e\u0434\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0410\u00a0MySQL \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0430\u0447\u0435. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438\u00a0\u0432\u044b\u0437\u043e\u0432\u0435 \u0432\u00a0MySQL USE&#8230; \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0441\u044f \u0432\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0420\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u043d\u0430\u0442\u044c \u043e\u00a0\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430\u00a0\u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u00a0\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446. \u041d\u043e\u00a0\u0434\u043b\u044f\u00a0\u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u0440\u0430\u0437\u0434\u0443\u0432\u0430\u0442\u044c \u043a\u043e\u0434, \u043c\u044b, \u0432\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435\u00a0\u2014 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430.<\/p>\n<h4>\u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043f\u043b\u0430\u0433\u0438\u043d\u0430<\/h4>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0432\u00a0MariaDB, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f\u00a0\u0435\u0433\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0434\u043b\u044f\u00a0\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u041c\u0435\u0442\u043e\u0434 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430\u00a0\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>MememDatabase* database<\/code>. \u041e\u043d \u0437\u0430\u0434\u0430\u0441\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 <code>handler<\/code>. \u0415\u0449\u0451 \u043e\u043d \u0437\u0430\u0434\u0430\u0441\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u043b\u044f\u00a0\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446.<\/p>\n<pre><code class=\"cpp\">static handler *memem_create_handler(handlerton *hton, TABLE_SHARE *table,                                      MEM_ROOT *mem_root) {   return new (mem_root) ha_memem(hton, table); }  static int memem_init(void *p) {   handlerton *memem_hton;    memem_hton= (handlerton *) p;   memem_hton->db_type= DB_TYPE_AUTOASSIGN;   memem_hton->create= memem_create_handler;   memem_hton->drop_table= [](handlerton *, const char *name) {     int index= memem_table_index(name);     if (index == -1)     {       return HA_ERR_NO_SUCH_TABLE;     }      database->tables.erase(database->tables.begin() + index);     DBUG_PRINT(\"info\", (\"[MEMEM] Deleted table '%s'.\", name));      return 0;   };   memem_hton->flags= HTON_CAN_RECREATE;    \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u0439\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438.   database= new MememDatabase;    return 0; }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u00a0\u043c\u0430\u043a\u0440\u043e\u0441 <code>DBUG_PRINT<\/code>\u00a0\u2014 \u044d\u0442\u043e \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u043b\u044f\u00a0\u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043a\u043e\u0434\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 MySQL\/MariaDB. \u041a\u0430\u043a\u00a0\u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432\u00a0\u0444\u0430\u0439\u043b, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0444\u043b\u0430\u0433\u043e\u043c <code>--debug<\/code>. \u042f, \u043a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0435\u00a0\u0441\u043c\u043e\u0433 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u00a0\u0442\u0435\u043c, \u043a\u0430\u043a\u00a0\u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043d\u0430\u00a0\u0434\u0438\u0441\u043a \u043f\u043e\u0442\u043e\u043a, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0438\u0448\u0435\u0442 \u044d\u0442\u043e\u0442 \u043c\u0430\u043a\u0440\u043e\u0441. \u0423\u00a0\u043c\u0435\u043d\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u0442\u0430\u043a\u043e\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u00a0\u0432\u0440\u0435\u043c\u044f \u043e\u0442\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u043e\u0433\u0434\u0430 \u044f \u043e\u0436\u0438\u0434\u0430\u043b \u043d\u0430\u0439\u0442\u0438 \u043b\u043e\u0433, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431\u00a0\u043e\u0448\u0438\u0431\u043a\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043d\u0430\u0439\u0442\u0438 \u0435\u0433\u043e \u043d\u0435\u00a0\u0443\u0434\u0430\u0432\u0430\u043b\u043e\u0441\u044c. \u0424\u0430\u0439\u043b \u0447\u0430\u0441\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u043d\u0435\u0447\u0442\u043e, \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0435\u0435 \u043b\u043e\u0433\u0438, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435\u00a0\u043b\u0438\u0448\u044c \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e. \u041d\u043e, \u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0432\u00a0\u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e, \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u043b\u043e\u0433\u0438, \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u044b\u0435 <code>DBUG_PRINT<\/code>.<\/p>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u044c, \u0432\u043e\u0437\u043b\u0430\u0433\u0430\u0435\u043c\u0430\u044f \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0443\u044e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u2014 \u044d\u0442\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<pre><code class=\"cpp\">static int memem_fini(void *p) {   delete database;   return 0; }<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d!<\/p>\n<h4>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430<\/h4>\n<p>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 (\u0438\u043c\u0435\u043d\u0438, \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e) \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0435\u0433\u043e \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u043e\u0432, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>maria_declare_plugin<\/code> \u0438 <code>maria_declare_plugin_end<\/code>.<\/p>\n<pre><code class=\"cpp\">struct st_mysql_storage_engine memem_storage_engine= {     MYSQL_HANDLERTON_INTERFACE_VERSION};  maria_declare_plugin(memem){     MYSQL_STORAGE_ENGINE_PLUGIN,     &amp;memem_storage_engine,     \"MEMEM\",     \"MySQL AB\",     \"In-memory database.\",     PLUGIN_LICENSE_GPL,     memem_init, \/* \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 *\/     memem_fini, \/* \u0414\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 *\/     0x0100 \/* 1.0 *\/,     NULL,                          \/* \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f     *\/     NULL,                          \/* \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435     *\/     \"1.0\",                         \/* \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0432\u0435\u0440\u0441\u0438\u0438  *\/     MariaDB_PLUGIN_MATURITY_STABLE \/* \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0437\u0440\u0435\u043b\u043e\u0441\u0442\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 *\/ } maria_declare_plugin_end<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0438 \u0432\u0441\u0451! \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a, \u0430\u00a0\u0442\u0430\u043a\u00a0\u0436\u0435\u00a0\u2014 \u0434\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0443\u00a0\u043d\u0430\u0441 \u0435\u0449\u0451 \u043d\u0435\u00a0\u0431\u044b\u043b\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u00a0\u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c, \u0438 \u0447\u0442\u043e\u0431\u044b \u0432\u00a0\u043d\u0435\u0439\u00a0\u0431\u044b\u043b\u0438\u00a0\u0431\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u044f \u0442\u0438\u043f\u0430 <code>INTEGER<\/code>. \u0414\u0430\u043b\u0435\u0435\u00a0\u2014 \u043c\u044b \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u043e\u0434\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0435\u0451 \u043a\u00a0\u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<pre><code class=\"cpp\">int ha_memem::create(const char *name, TABLE *table_arg,                      HA_CREATE_INFO *create_info) {   assert(memem_table_index(name) == -1);    \/\/ \u041f\u043e\u043a\u0430 \u043c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u044f \u0442\u0438\u043f\u0430 INTEGER.   uint i = 0;   while (table_arg->field[i]) {     if (table_arg->field[i]->type() != MYSQL_TYPE_LONG)       {     DBUG_PRINT(\"info\", (\"Unsupported field type.\"));     return 1;       }      i++;   }    auto t= std::make_shared&lt;MememTable>();   t->name= std::make_shared&lt;std::string>(name);   database->tables.push_back(t);   DBUG_PRINT(\"info\", (\"[MEMEM] Created table '%s'.\", name));    return 0; }<\/code><\/pre>\n<p>\u041d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u0441\u043b\u043e\u0436\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0439\u043c\u0451\u043c\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u043e\u0432\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<h4>\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u043e\u043a<\/h4>\n<p>\u0422\u0443\u0442 \u043d\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u0430, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0432\u00a0\u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430 <code>INSERT<\/code>. \u0412\u00a0\u043d\u0430\u0448\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435 <code>table<\/code> \u0432\u00a0\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435 <code>handler<\/code>. \u0412\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043d\u0430\u00a0\u043e\u0431\u044a\u0435\u043a\u0442, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u0435\u043c, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 <code>SELECT<\/code> \u0438\u043b\u0438 <code>INSERT<\/code>. \u0422\u0435\u043a\u0443\u0449\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u043e\u0431\u0440\u0430\u0442\u0438\u0432\u0448\u0438\u0441\u044c \u043a\u00a0\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044e.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0443 \u043d\u0430\u0441 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f <code>std::shared_ptr&lt;MememTable> memem_table<\/code> \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 <code>ha_memem<\/code> \u2014 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0451 \u043d\u0430 <code>NULL<\/code> \u043f\u0440\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u0415\u0441\u043b\u0438 \u0442\u0430\u043c \u0438 \u043f\u0440\u0430\u0432\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 <code>NULL<\/code> \u2014 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 <code>this->memem_table<\/code> \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 MememTable.<\/p>\n<p>\u041d\u043e \u0442\u0443\u0442 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u0435\u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0435, \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0418\u043c\u044f <code>const char* name<\/code>, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0435 \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u043c\u0435\u0442\u043e\u0434\u0443 <code>create()<\/code>, \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u041d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e, \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b y \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 <code>test<\/code>, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>const char* name<\/code> \u0440\u0430\u0432\u043d\u044f\u0435\u0442\u0441\u044f <code>.\/test\/y<\/code>. \u041f\u0440\u0435\u0444\u0438\u043a\u0441 \u0432 \u0432\u0438\u0434\u0435 \u0442\u043e\u0447\u043a\u0438 \u2014 <code>.<\/code> \u2014 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439, \u043d\u043e \u044f \u0432 \u044d\u0442\u043e\u043c \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u0442\u0430\u043a\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<pre><code class=\"cpp\">void ha_memem::reset_memem_table() {   \/\/ \u0421\u0431\u0440\u043e\u0441 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.   current_position= 0;    std::string full_name= \".\/\" + std::string(table->s->db.str) + \"\/\" +                          std::string(table->s->table_name.str);   DBUG_PRINT(\"info\", (\"[MEMEM] Resetting to '%s'.\", full_name.c_str()));   assert(database->tables.size() > 0);   int index= memem_table_index(full_name.c_str());   assert(index >= 0);   assert(index &lt; (int) database->tables.size());    memem_table= database->tables[index]; }<\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u044d\u0442\u0438\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>write_row<\/code> \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e <code>MememTable<\/code>, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0437\u0430\u043f\u0440\u043e\u0441.<\/p>\n<p>\u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u0432\u043b\u0435\u0447\u0451\u043c\u0441\u044f \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a MySQL \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<h4>API MySQL \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438<\/h4>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 API \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u00a0Postgres\u00a0\u2014 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442, \u043e\u0431\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u043a\u00a0\u043c\u0430\u0441\u0441\u0438\u0432\u0443 <code>Datum<\/code>.<\/p>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0443\u043c\u043d\u043e.<\/p>\n<p>\u0412\u00a0MySQL \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0430\u00a0\u043c\u0430\u0441\u0441\u0438\u0432 \u0431\u0430\u0439\u0442\u043e\u0432. \u042d\u0442\u043e, \u043a\u0430\u043a\u00a0\u043f\u043e\u00a0\u043c\u043d\u0435, \u043d\u0435\u00a0\u0432\u043f\u043e\u043b\u043d\u0435 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u043e. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0432\u0435\u0440\u0445 \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\/\u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u041d\u043e\u00a0\u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c \u0442\u043e, \u0447\u0442\u043e\u00a0\u0432\u0441\u0435\u043c \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u00a0\u043b\u0438\u0446\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u00a0\u0442\u0430\u043a\u043e\u043c \u0432\u043e\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u043c API. \u0425\u043e\u0442\u044f \u044d\u0442\u043e\u0442 API, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, <a href=\"https:\/\/github.com\/MariaDB\/server\/blob\/11.4\/sql\/handler.h#L3152\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d<\/a>.<\/p>\n<p>\u0412\u00a0\u043d\u0430\u0448\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <code>NULL<\/code>. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u00a0\u043b\u0438\u0448\u044c \u043f\u043e\u043b\u044f <code>INTEGER<\/code>. \u041d\u043e\u00a0\u044d\u0442\u043e \u043d\u0435\u00a0\u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u043e\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u043f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0439\u0442 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u044f\u0442. \u041c\u044b, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u0441\u0442\u043e\u043b\u043a\u043d\u0451\u043c\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0441\u00a0\u043e\u0434\u043d\u0438\u043c \u0431\u0430\u0439\u0442\u043e\u043c <code>NULL<\/code>.<\/p>\n<p>\u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0442\u043e\u0442 \u0442\u0430\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 <code>read_row(uchar* buf)<\/code> \u0438 <code>write_row(const uchar* buf)<\/code>.<\/p>\n<h4>\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u043e\u043a (\u0434\u0443\u0431\u043b\u044c \u0434\u0432\u0430)<\/h4>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c \u0441\u0435\u0431\u0435 \u0436\u0438\u0437\u043d\u044c, \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 MememTable \u0432 \u0442\u043e\u043c \u0436\u0435 \u0432\u0438\u0434\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u043c\u0438 \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u0435\u0442 MySQL.<\/p>\n<pre><code class=\"cpp\">int ha_memem::write_row(const uchar *buf) {   if (memem_table == NULL)   {     reset_memem_table();   }    \/\/ \u0418\u0441\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0443\u0442 \u043d\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 NULL.   buf++;    uint field_count = 0;   while (table->field[field_count]) field_count++;    \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u043c \u0435\u0451 \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0430 MariaDB.   auto row= std::make_shared&lt;std::vector&lt;uchar>>(       buf, buf + sizeof(int) * field_count);   memem_table->rows.push_back(row);    return 0; }<\/code><\/pre>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a!<\/p>\n<h4>\u0427\u0442\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a<\/h4>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0447\u0442\u0435\u043d\u0438\u0435\u043c \u0438 \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0441\u0442\u0440\u043e\u043a\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e MySQL\/MariaDB \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0442 \u043e \u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 <code>SELECT<\/code> \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<p>\u041c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u044d\u0442\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 <code>current_row<\/code> \u0438 \u043f\u043e\u043b\u0435 <code>memem_table<\/code>. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e, \u043a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u043a\u043b\u0430\u0441\u0441 <code>handler<\/code>, \u043d\u043e \u044d\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<pre><code class=\"cpp\">int ha_memem::rnd_init(bool scan) {   reset_memem_table();   return 0; }  int ha_memem::rnd_next(uchar *buf) {   if (current_position == memem_table->rows.size())   {     \/\/ \u0421\u0431\u0440\u043e\u0441\u0438\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0445\u0440\u0430\u043d\u044f\u0449\u0443\u044e\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043c\u0435\u0442\u043d\u0435\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438.     memem_table= NULL;     return HA_ERR_END_OF_FILE;   }   assert(current_position &lt; memem_table->rows.size());    uchar *ptr= buf;   *ptr= 0;   ptr++;    \/\/ \u0412\u043d\u0443\u0442\u0440\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0442\u0440\u043e\u043a\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u0435\u043d MariaDB   \/\/ \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c.   std::shared_ptr&lt;std::vector&lt;uchar>> row= memem_table->rows[current_position];   std::copy(row->begin(), row->end(), ptr);    current_position++;   return 0; }<\/code><\/pre>\n<p>\u0412\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e!<\/p>\n<h4>\u0421\u0431\u043e\u0440\u043a\u0430 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h4>\n<p>\u0412\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u0432\u00a0\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>build<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0432\u00a0\u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0438 \u0435\u0449\u0451 \u0440\u0430\u0437 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c <code>make -j8<\/code>.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440 (\u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e\u2011\u0442\u043e \u0432\u0440\u043e\u0434\u0435 <code>killall mariadbd<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435\u00a0\u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043d\u0430\u00a0Ctrl\u2011C). \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n<p>\u041f\u043e\u00a0\u043a\u0430\u043a\u043e\u0439\u2011\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u043d\u0435\u00a0\u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041c\u043e\u0436\u043d\u043e, \u0432\u00a0CLI MariaDB, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>SHOW PLUGINS;<\/code>, \u0438 \u043c\u044b \u0435\u0433\u043e \u0443\u0432\u0438\u0434\u0438\u043c.<\/p>\n<pre><code class=\"cpp\">$ .\/build\/client\/mariadb --defaults-extra-file=\/home\/phil\/vendor\/mariadb\/my.cnf --database=test Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A  Welcome to the MariaDB monitor.  Commands end with ; or \\g. Your MariaDB connection id is 5 Server version: 11.4.0-MariaDB-debug Source distribution  Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.  Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.  MariaDB [test]> SHOW PLUGINS; +-------------------------------+----------+--------------------+-----------------+---------+ | Name                          | Status   | Type               | Library         | License | +-------------------------------+----------+--------------------+-----------------+---------+ | binlog                        | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     | ... | MEMEM                         | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     | ... | BLACKHOLE                     | ACTIVE   | STORAGE ENGINE     | ha_blackhole.so | GPL     | +-------------------------------+----------+--------------------+-----------------+---------+ 73 rows in set (0.012 sec)<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a! \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u2014 \u043d\u0430\u0434\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <code>ENGINE = MEMEM<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a <code>CREATE TABLE x (i INT) ENGINE = MEMEM<\/code>.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0438\u0436\u043e\u043a <code>memem<\/code> \u0432 \u0434\u0435\u043b\u0435. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0435\u0433\u043e \u0432 <code>storage\/memem\/test.sql<\/code>.<\/p>\n<pre><code class=\"cpp\">drop table if exists y; drop table if exists z;  create table y(i int, j int) engine = MEMEM; insert into y values (2, 1029); insert into y values (92, 8); select * from y where i + 8 = 10;  create table z(a int) engine = MEMEM; insert into z values (322); insert into z values (8); select * from z where a > 20;<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<pre><code class=\"cpp\">$ .\/build\/client\/mariadb --defaults-extra-file=$(pwd)\/my.cnf --database=test --table --verbose &lt; storage\/memem\/test.sql -------------- drop table if exists y --------------  -------------- drop table if exists z --------------  -------------- create table y(i int, j int) engine = MEMEM --------------  -------------- insert into y values (2, 1029) --------------  -------------- insert into y values (92, 8) --------------  -------------- select * from y where i + 8 = 10 --------------  +------+------+ | i    | j    | +------+------+ |    2 | 1029 | +------+------+ -------------- create table z(a int) engine = MEMEM --------------  -------------- insert into z values (322) --------------  -------------- insert into z values (8) --------------  -------------- select * from z where a > 20 --------------  +------+ | a    | +------+ |  322 | +------+<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u043c\u043e\u0449\u044c \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438! \u041d\u0430\u0448 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u044f\u0437\u044b\u043a SQL. \u0418 \u044d\u0442\u043e \u2014 \u0434\u0430\u0436\u0435 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0442\u0430\u043a\u0438\u043c, \u043a\u0430\u043a \u0442\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<h3>\u041c\u043d\u0435 \u043d\u0430\u0441\u043a\u0443\u0447\u0438\u043b\u0438 \u0437\u0430\u043d\u044f\u0442\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438<\/h3>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043d\u0435 \u0441\u043a\u0443\u0447\u043d\u043e \u0441\u043d\u043e\u0432\u0430 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0421\u0423\u0411\u0414. \u041d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0439\u043d\u0438\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0437\u043c\u043e\u043c, \u0447\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0437\u0434\u0435\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0435\u0449\u0451 \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0440\u0435\u0434\u0443.<\/p>\n<p>\u042f, \u0437\u0430\u043d\u0438\u043c\u0430\u044f\u0441\u044c \u044d\u0442\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u0441\u0442\u0440\u0435\u043c\u0438\u043b\u0441\u044f \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0431\u044b\u043b \u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u043c, \u043d\u043e \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u043c. \u0418 \u044f, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0434\u043b\u044f \u0441\u0435\u0431\u044f, \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u0434\u043e\u0441\u0442\u0438\u0433.<\/p>\n<h3>\u041e ChatGPT<\/h3>\n<p>\u042f \u0443\u0436\u0435 <a href=\"https:\/\/notes.eatonphil.com\/2023-11-19-exploring-a-postgres-query-plan.html#postscript:-on-chatgpt\">\u043f\u0438\u0441\u0430\u043b<\/a> \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u044d\u0442\u043e\u043c\u0443, \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043d\u043e\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u043c\u043a\u0430\u0445, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 ChatGPT. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f GPT4.<\/p>\n<p>\u041d\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f MySQL, \u043d\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f MariaDB \u043d\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u043c\u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e\u0439 \u043f\u043e\u043c\u043e\u0449\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u0442\u043e, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043c\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0440\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 (\u0447\u043b\u0435\u043d <code>table<\/code> \u043a\u043b\u0430\u0441\u0441\u0430 <code>handler<\/code>).<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 ChatGPT \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u00abIn a MySQL C++ plugin, how do I get the name of the table from a <code>handler<\/code> class as a C string?\u00bb. \u0418\u043d\u043e\u0433\u0434\u0430 \u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b, \u0438\u043d\u043e\u0433\u0434\u0430 \u2014 \u043d\u0435\u0442. \u041d\u043e, \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434. \u0415\u0441\u043b\u0438 \u043e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u0443\u043c\u0435\u0441\u0442\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e ChatGPT \u0434\u0430\u0451\u0442, \u043f\u043e \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u043c\u0435\u0440\u0435, \u043e\u0442\u0432\u0435\u0442\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u043d\u0435\u043a\u0443\u044e \u0434\u043e\u043b\u044e \u043f\u0440\u0430\u0432\u0434\u044b.<\/p>\n<details class=\"spoiler\">\n<summary>\u041e, \u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0435 \u043a \u043d\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c? ? ?<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041c\u044b \u0432\u00a0<a href=\"http:\/\/wunderfund.io\/\">wunderfund.io<\/a>\u00a0\u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/High-frequency_trading\">\u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0439 \u0430\u043b\u0433\u043e\u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0435\u0439<\/a>\u00a0\u0441 2014 \u0433\u043e\u0434\u0430. \u0412\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u0430\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u044f \u2014 \u044d\u0442\u043e \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u0443\u0447\u0448\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u043e\u0432 \u0432\u0441\u0435\u0433\u043e \u043c\u0438\u0440\u0430. \u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0432\u0448\u0438\u0441\u044c \u043a \u043d\u0430\u043c, \u0432\u044b \u0441\u0442\u0430\u043d\u0435\u0442\u0435 \u0447\u0430\u0441\u0442\u044c\u044e \u044d\u0442\u043e\u0439 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0445\u0432\u0430\u0442\u043a\u0438.<\/p>\n<p>\u041c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 low latency \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u043b\u044f \u0443\u0432\u043b\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432. \u0413\u0438\u0431\u043a\u0438\u0439 \u0433\u0440\u0430\u0444\u0438\u043a \u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0431\u044e\u0440\u043e\u043a\u0440\u0430\u0442\u0438\u0438, \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0438 \u0432\u043e\u043f\u043b\u043e\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0436\u0438\u0437\u043d\u044c.<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0438\u0449\u0435\u043c \u043f\u043b\u044e\u0441\u043e\u0432\u0438\u043a\u043e\u0432, \u043f\u0438\u0442\u043e\u043d\u0438\u0441\u0442\u043e\u0432, \u0434\u0430\u0442\u0430-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0438 \u043c\u043b-\u0440\u0438\u0441\u0435\u0440\u0447\u0435\u0440\u043e\u0432.<\/p>\n<p><a href=\"http:\/\/wunderfund.io\/#join_us\">\u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u043a \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435<\/a><\/p>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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\/articles\/789640\/\"> https:\/\/habr.com\/ru\/articles\/789640\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042f <a href=\"https:\/\/eatonphil.com\/2024-01-wehack-mysql.html\">\u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043d\u0435\u0434\u0435\u043b\u044e<\/a>, \u043a\u043e\u043f\u0430\u044f\u0441\u044c \u0432\u043e\u00a0\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 MySQL\/MariaDB \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u00a0\u0435\u0449\u0451 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 80\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438. \u0425\u043e\u0442\u044f MySQL \u0438 MariaDB\u00a0\u2014 \u044d\u0442\u043e, \u043f\u043e\u00a0\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438, \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u00a0\u0436\u0435 (\u044f \u0435\u0449\u0451 \u043a\u00a0\u044d\u0442\u043e\u043c\u0443 \u0432\u0435\u0440\u043d\u0443\u0441\u044c), \u044f \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043b\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u00a0MariaDB.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0441\u0430\u043c \u043d\u0435\u00a0\u0441\u043e\u0431\u0438\u0440\u0430\u043b MySQL\/MariaDB. \u0412\u00a0\u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u0435\u043d\u044c \u00ab\u043d\u0435\u0434\u0435\u043b\u0438 \u0445\u0430\u043a\u0435\u0440\u0441\u0442\u0432\u0430\u00bb \u044f \u0441\u043c\u043e\u0433 \u043d\u0430\u043b\u0430\u0434\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 MariaDB \u0438 <a href=\"https:\/\/twitter.com\/eatonphil\/status\/1742649922791395501\">\u0442\u0432\u0438\u043a\u043d\u0443\u043b \u043a\u043e\u0434<\/a> \u0442\u0430\u043a, \u0447\u0442\u043e\u00a0\u0437\u0430\u043f\u0440\u043e\u0441 <code>SELECT 23<\/code>\u00a0\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b <code>213<\/code>. \u0421\u0434\u0435\u043b\u0430\u043b \u044f \u0438 <a href=\"https:\/\/twitter.com\/eatonphil\/status\/1742654868085526896\">\u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0432\u0438\u043a<\/a>\u00a0\u2014 \u0442\u0430\u043a\u043e\u0439, \u0447\u0442\u043e\u00a0\u0437\u0430\u043f\u0440\u043e\u0441 <code>SELECT 80\u00a0+ 20<\/code>\u00a0\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b <code>60<\/code>. \u041d\u0430\u00a0\u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u043d\u044c \u044f \u0441\u043c\u043e\u0433 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c <a href=\"https:\/\/twitter.com\/eatonphil\/status\/1742958892957446490\">\u043f\u0440\u043e\u0441\u0442\u0443\u044e UDF<\/a> \u043d\u0430\u00a0C, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 <code>SELECT mysum(20, 30)<\/code> \u0434\u0430\u0432\u0430\u043b <code>50<\/code>.<\/p>\n<p>\u041e\u0441\u0442\u0430\u0442\u043e\u043a \u043d\u0435\u0434\u0435\u043b\u0438 \u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u00a0\u0442\u0435\u043c, \u043a\u0430\u043a\u00a0\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0434\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u00a0\u043d\u0451\u043c \u044f \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443. \u042d\u0442\u043e\u00a0\u2014 218\u00a0\u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0430\u00a0C++.<\/p>\n<p>\u041c\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>CREATE<\/code>, <code>DROP<\/code>, <code>INSERT<\/code> \u0438 <code>SELECT<\/code> \u0434\u043b\u044f\u00a0\u0442\u0430\u0431\u043b\u0438\u0446, \u043f\u043e\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0433\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u0430 <code>INTEGER<\/code>. \u041e\u043d \u043d\u0435\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c. \u042f \u0442\u0430\u043a\u0438\u043c \u0435\u0433\u043e \u0438 \u0434\u0435\u043b\u0430\u043b, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0443\u00a0\u043c\u0435\u043d\u044f \u043d\u0435\u00a0\u0431\u044b\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f\u00a0\u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u00a0\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430\u043c\u0438 MariaDB.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0438 \u043e\u00a0\u0442\u043e\u043c, \u043a\u0430\u043a\u00a0API MariaDB \u0434\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u043e\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0441\u00a0\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c API Postgres. \u042d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u044f \u0441\u043c\u043e\u0433 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u043f\u044b\u0442\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 <a href=\"https:\/\/notes.eatonphil.com\/2023-11-01-postgres-table-access-methods.html\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0445\u0430\u043a\u2011\u043d\u0435\u0434\u0435\u043b\u0435<\/a>.<\/p>\n<p>\u0412\u0435\u0441\u044c \u043a\u043e\u0434 \u0434\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u00a0\u043c\u043e\u0451\u043c <a href=\"https:\/\/github.com\/eatonphil\/mariadb\/tree\/11.4\/storage\/memem\">\u0444\u043e\u0440\u043a\u0435<\/a> MariaDB \u043d\u0430\u00a0GitHub.<\/p>\n<h3>MySQL \u0438 MariaDB<\/h3>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e\u00a0\u0442\u043e\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0438\u0448\u0443 \u00abMySQL\/MariaDB\u00bb.<\/p>\n<p>MySQL \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u00a0\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 GPL (\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 MySQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 Oracle). \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e\u0442\u043a\u0440\u044b\u0442. \u041d\u043e\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0435\u0434\u0451\u0442\u0441\u044f, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0437\u0430\u00a0\u0437\u0430\u043a\u0440\u044b\u0442\u044b\u043c\u0438 \u0434\u0432\u0435\u0440\u044f\u043c\u0438. \u041f\u0440\u0430\u0432\u0434\u0430, <a href=\"https:\/\/github.com\/mysql\/mysql-server\/commits\/trunk\/\">\u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0441\u044f\u0446<\/a>, \u0438\u043b\u0438\u00a0\u043e\u043a\u043e\u043b\u043e \u0442\u043e\u0433\u043e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u0441\u0432\u0435\u0436\u0438\u0439 \u043a\u043e\u0434.<\/p>\n<p>MariaDB\u00a0\u2014 \u044d\u0442\u043e \u0444\u043e\u0440\u043a MySQL \u043e\u0442\u00a0\u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f MySQL (\u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435). \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0442\u043e\u0436\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u00a0\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 GPL (\u043e\u043f\u044f\u0442\u044c\u00a0\u0436\u0435\u00a0\u2014 \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u043e\u00a0\u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0443\u044e \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c MariaDB, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f MariaDB Corporation). \u041a\u043e\u0434 MariaDB \u043e\u0442\u043a\u0440\u044b\u0442, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u043e\u0436\u0435.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043d\u0435\u043a\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u00a0\u0441\u0432\u043e\u0451\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 Linux \u00abMySQL\u00bb, \u0442\u043e \u043e\u043d, \u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0447\u0430\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 MariaDB.<\/p>\n<p>\u042d\u0442\u0438 \u0434\u0432\u0435 \u0420\u0421\u0423\u0411\u0414, \u043f\u043e\u00a0\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b. \u0418\u0441\u0441\u043b\u0435\u0434\u0443\u044f \u0438\u0445, \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 <code>SELECT.. FROM VALUES..<\/code> \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0432\u00a0\u043d\u0438\u0445 \u043f\u043e\u2011\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 <a href=\"https:\/\/mariadb.com\/kb\/en\/moving-from-mysql\/\">\u0431\u0430\u0437\u0435 \u0437\u043d\u0430\u043d\u0438\u0439 MariaDB<\/a>. \u041d\u043e\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u044d\u0442\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0437\u043d\u0430\u043d\u0438\u0439 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043c\u0435\u043d\u044f \u043a\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430\u043c.<\/p>\n<p><a href=\"https:\/\/dev.mysql.com\/doc\/\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a> MySQL \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u043d\u0430. \u0415\u0451 \u043b\u0435\u0433\u043a\u043e \u0447\u0438\u0442\u0430\u0442\u044c, \u0432\u00a0\u043d\u0435\u0439 \u043b\u0435\u0433\u043a\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u043d\u0443\u0436\u043d\u043e, \u043e\u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f. \u0410\u00a0\u0432\u043e\u0442 <a href=\"https:\/\/mariadb.com\/kb\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a> MariaDB \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0435\u0451 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f. \u041f\u0440\u043e\u0441\u0442\u0438\u0442\u0435, \u043d\u043e\u00a0\u044f\u00a0\u2014 \u043d\u0435\u00a0\u043f\u0440\u0438\u0432\u0435\u0440\u0436\u0435\u043d\u0435\u0446 \u0441\u0442\u043e\u0438\u0446\u0438\u0437\u043c\u0430: \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u00a0\u043d\u0435\u0434\u0435\u043b\u044e \u044f \u0434\u043e\u0448\u0451\u043b \u0434\u043e\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u043f\u0440\u044f\u043c\u043e \u0442\u0430\u043a\u0438 \u0432\u043e\u0437\u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0435\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u00a0\u044d\u0442\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439. \u041a\u00a0\u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043a\u0430\u043a\u0438\u043c\u2011\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u043d\u0430 \u043d\u0435\u00a0\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439. \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u00a0\u044d\u0442\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0435\u043b\u044c\u0437\u044f, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043d\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0MySQL \u0438 MariaDB \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e.<\/p>\n<p>\u0412\u00a0\u0438\u0442\u043e\u0433\u0435 \u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043d\u0435\u0434\u0435\u043b\u044e, \u0440\u0430\u0431\u043e\u0442\u0430\u044f \u0441\u00a0MariaDB, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0443\u00a0\u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0442\u044f\u0433\u0430 \u043a\u00a0\u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c. \u041d\u043e\u00a0\u044f \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0437\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u043b \u0432\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e MySQL, \u043d\u0430\u0434\u0435\u044f\u0441\u044c \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u00a0\u043e\u043d\u0430 \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u0438 \u0434\u043b\u044f\u00a0MariaDB.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441\u00a0\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0434\u0435\u043b, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a\u00a0\u0441\u0430\u043c\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c\u0443!<\/p>\n<h3>\u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/h3>\n<p>\u0417\u0440\u0435\u043b\u044b\u0435 \u0421\u0423\u0411\u0414 \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0437\u0430\u043c\u0435\u043d\u0443 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 \u0437\u0430\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f? \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u00a0\u2014 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u00a0\u2014 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 B\u2011\u0434\u0435\u0440\u0435\u0432\u044c\u044f\u043c\u0438 (\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f\u00a0\u0447\u0442\u0435\u043d\u0438\u044f) \u0438 LSM\u2011\u0434\u0435\u0440\u0435\u0432\u044c\u044f\u043c\u0438 \u0438\u043b\u0438\u00a0\u043d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u0443\u0447\u0430\u043c\u0438 (\u043e\u043d\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0430\u043d\u043d\u044b\u0445). \u0418\u043b\u0438, \u043c\u043e\u0436\u0435\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u00a0\u2014 <a href=\"https:\/\/rocksdb.org\/\">RocksDB<\/a>, <a href=\"https:\/\/sled.rs\/\">Sled<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/tikv.org\/\">TiKV<\/a>).<\/p>\n<p>\u0421\u0438\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0438\u0436\u043a\u0430\u043c\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u00a0\u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0421\u0423\u0411\u0414, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0421\u0423\u0411\u0414 \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c, \u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u043d\u0435\u00a0\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f. \u041d\u043e\u00a0\u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u0447\u0443\u0434\u0435\u0441\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435.<\/p>\n<p>\u0417\u0430\u043c\u0435\u043d\u0430 \u0441\u043b\u043e\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0421\u0423\u0411\u0414 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u00a0\u043d\u0430\u0448\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u043c\u043e\u0449\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 SQL, \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u041c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u0435\u0442\u0441\u044f\u00a0\u043b\u0438\u0448\u044c \u043c\u0435\u0442\u043e\u0434, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h3>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/h3>\n<p>MySQL\/MariaDB \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a\u00a0MySQL \u0435\u0441\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/storage-engines.html\">\u0440\u0430\u0437\u0434\u0435\u043b<\/a>, \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d\u043d\u044b\u0439 \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435.<\/p>\n<p>\u0422\u0430\u043c \u043f\u0440\u044f\u043c\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u043e\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u043e\u00a0\u044d\u0442\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0435\u00a0\u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a\u00a0\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0437\u0430\u043f\u0440\u0435\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043d\u0438\u0447\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435, \u043f\u043e\u0445\u043e\u0436\u0435, \u043d\u0435\u00a0\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u00a0\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0434\u0432\u0438\u0436\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0412\u00a0\u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0432\u00a0\u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043c\u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430\u00a0\u0431\u044b\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b CSV\u2011\u0434\u0432\u0438\u0436\u043a\u0438. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0442\u0430\u043a\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430, \u0442\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0435 <a href=\"https:\/\/github.com\/MariaDB\/server\/blob\/11.4\/storage\/csv\/ha_tina.cc\">\u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f<\/a> \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u0436\u0443\u0449\u0435\u0439\u0441\u044f \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043a\u0430\u0436\u0443\u0449\u0435\u0439\u0441\u044f \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u0430 \u043f\u043e\u0441\u0435\u044f\u043b\u0430 \u0432\u043e\u00a0\u043c\u043d\u0435 \u0437\u0435\u0440\u043d\u043e \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412\u00a0\u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u043b\u044e\u0441 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u043e\u043d\u0438 \u0434\u0430\u044e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 API \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041c\u043d\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u044d\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u0438\u0437\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f MariaDB: <a href=\"https:\/\/github.com\/MariaDB\/server\/blob\/11.4\/storage\/csv\">csv<\/a>, <a href=\"https:\/\/github.com\/MariaDB\/server\/tree\/11.4\/storage\/blackhole\">blackhole<\/a>, <a href=\"https:\/\/github.com\/MariaDB\/server\/tree\/11.4\/storage\/example\">example<\/a> \u0438 <a href=\"https:\/\/github.com\/MariaDB\/server\/tree\/11.4\/storage\/heap\">heap<\/a>.<\/p>\n<p>\u0414\u0432\u0438\u0436\u043e\u043a heap\u00a0\u2014 \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u0440\u0430\u0432\u0434\u0430, \u00ab\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u00bb \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u00ab\u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u00bb. \u0423\u00a0\u043c\u0435\u043d\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u0442\u0430\u043a\u043e\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u00a0\u0432\u00a0\u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435 MariaDB \u043d\u0430\u0439\u0434\u0451\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f\u00a0\u0443\u0440\u0435\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u043c\u0443 \u0438 \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b! \u041d\u0430\u0447\u043d\u0443 \u0441\u00a0\u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u043e\u0431\u00a0\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h3>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0438\u0436\u043e\u043a \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u00a0\u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435\u00a0\u2014 \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e. \u041d\u043e\u00a0\u0442\u0443\u0442 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u0442\u0435\u043c, \u043a\u0430\u043a\u00a0\u0432\u00a0\u0421\u0423\u0411\u0414 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b API \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0418 Postgres, \u0438 MySQL\/MariaDB \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 API \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a.<\/p>\n<h4>\u041a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>\u042f <a href=\"https:\/\/notes.eatonphil.com\/2023-11-01-postgres-table-access-methods.html\">\u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b<\/a> \u043e\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0434\u0432\u0438\u0436\u043a\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u2011 \u0438 \u0441\u0442\u0440\u043e\u043a\u043e\u2011\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0435 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u043a\u043e\u043b\u043e\u043d\u043a\u0438. \u0412\u043e\u2011\u043f\u0435\u0440\u0432\u044b\u0445\u00a0\u2014 \u044d\u0442\u043e \u0434\u0430\u0451\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0436\u0430\u0442\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u043e\u2011\u0432\u0442\u043e\u0440\u044b\u0445\u00a0\u2014 \u044d\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0436\u0430\u0442\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u0434\u0438\u0441\u043a\u0435 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435\u00a0\u0434\u0435\u043d\u0435\u0442\u0441\u044f \u0438 \u0432\u00a0\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0432\u00a0\u0441\u043b\u043e\u0435 API \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0441\u0436\u0430\u0442\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u00a0\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u0434\u0438\u0441\u043a. \u041d\u043e\u00a0\u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0442\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043a\u00a0\u0441\u0442\u0440\u043e\u043a\u0430\u043c \u0434\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043d\u0438\u043c\u0438 \u0432\u00a0API, \u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0436\u0430\u0442\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043a\u00a0\u0441\u0442\u0440\u043e\u043a\u0430\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u0443\u0440\u043e\u0432\u043d\u0435 API \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u0443\u0440\u043e\u0432\u043d\u044f\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u00a0\u043f\u043e\u0442\u0435\u0440\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438\u00a0\u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438. \u041f\u0440\u0438\u00a0\u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441\u00a0\u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u043d\u0430\u00a0\u0441\u0442\u0440\u043e\u043a\u0438, \u0430\u00a0\u043d\u0435\u00a0\u043d\u0430\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u044b.<\/p>\n<p>\u0412\u0441\u0451 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e, \u0445\u043e\u0442\u044f \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u2011\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c, \u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043d\u0435\u00a0\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0441\u0435\u0431\u044f \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u044e\u0442 \u0441\u00a0\u0443\u0447\u0451\u0442\u043e\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 API \u0438 \u0432\u00a0MySQL\/MariaDB, \u0438 \u0432\u00a0Postgres.<\/p>\n<h4>\u0412\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/h4>\n<p>API \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u00a0\u043e\u0431\u044a\u0451\u043c\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043c\u043e\u0436\u0435\u0442, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c, \u0432\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0431\u044a\u0451\u043c\u0435, \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u00a0\u2014 \u043a\u043e\u0433\u0434\u0430 API \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443\u00a0\u2014 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 N \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u0437\u00a0\u0431\u0443\u0444\u0435\u0440\u0430 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u041d\u043e\u00a0\u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u0438\u0434\u0451\u0442 \u043e\u0431\u00a0API, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f, \u0432\u00a0\u043a\u0430\u043a\u043e\u0439\u2011\u0442\u043e \u043c\u0435\u0440\u0435, \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>\u041f\u0440\u0430\u0432\u0434\u0430, \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043e\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0435\u0441\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0442\u0440\u043e\u043a \u0432\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0441\u043b\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0435\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0435\u0439 \u0444\u043e\u0440\u043c\u044b \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u00a0\u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u0441\u0443\u0434\u0438\u0442\u044c \u043f\u043e\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c\u0443 \u043c\u043d\u043e\u0439 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u043d\u0438 \u0432\u00a0MySQL\/MariaDB, \u043d\u0438 \u0432\u00a0Postgres \u043d\u0435\u00a0\u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0418 \u044d\u0442\u043e\u00a0\u2014 \u043d\u0435\u00a0\u043a\u0440\u0438\u0442\u0438\u043a\u0430 API \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445\u00a0\u2014 \u044d\u0442\u043e\u00a0\u043b\u0438\u0448\u044c \u0444\u0430\u043a\u0442\u044b, \u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c.<\/p>\n<h4>\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438<\/h4>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0437\u0434\u0435\u0441\u044c \u0442\u043e, \u0447\u0442\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b API \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a \u0441\u043b\u043e\u044e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u043a\u0438\u0435 \u00ab\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432\u0440\u0435\u0434\u043d\u044b\u043c\u0438. \u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043a\u043e\u0435 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u043b\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438.<\/p>\n<h4>\u041d\u0438\u0447\u0442\u043e \u043d\u0435 \u0432\u0435\u0447\u043d\u043e<\/h4>\n<p>\u0422\u0435\u043a\u0443\u0449\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f API \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u00a0\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b MySQL\/MariaDB \u0438\u043b\u0438\u00a0Postgres. \u0420\u0430\u043d\u044c\u0448\u0435 \u043e\u0431\u0430 \u044d\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0435\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0435\u0431\u0435, \u0447\u0442\u043e\u00a0\u0432\u00a0\u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043a\u00a0\u043b\u044e\u0431\u043e\u043c\u0443 \u0438\u0437\u00a0\u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043f\u0430\u0442\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0432\u00a0\u043d\u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0442\u0440\u043e\u043a. \u0412\u0441\u0451 \u044d\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0435\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445, \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0414\u0430\u0436\u0435 \u0432\u00a0\u043d\u0430\u0448\u0438 \u0434\u043d\u0438 \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u044c \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u044b\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u00a0Postgres \u043f\u043e\u043b\u043d\u0443\u044e <a href=\"https:\/\/www.citusdata.com\/blog\/2021\/03\/06\/citus-10-columnar-compression-for-postgres\/\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443<\/a> \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445. \u041f\u043e\u044f\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0434\u0435\u043b\u0438\u0442\u044c Postgres \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u043e <a href=\"https:\/\/github.com\/citusdata\/postgres_vectorization_test\">\u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/a>.<\/p>\n<p>\u042f \u043d\u0435 \u0442\u0430\u043a \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435 MySQL, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u043c\u043e\u0433\u0443 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 \u044d\u0442\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445.<\/p>\n<h3>\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 MariaDB<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432\u00a0\u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 MariaDB!<\/p>\n<pre><code class=\"bash\">$ git clone https:\/\/github.com\/MariaDB\/server mariadb $ cd mariadb $ mkdir build $ cd<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-366570","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/366570","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=366570"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/366570\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=366570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=366570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=366570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}