{"id":78742,"date":"2020-04-21T19:42:46","date_gmt":"2020-04-21T17:42:46","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/promyshlennyj-podhod-k-tyuningu-postgresql-eksperimenty-nad-bazami-dannyh-nikolaj-samohvalov"},"modified":"2020-04-21T19:42:46","modified_gmt":"2020-04-21T17:42:46","slug":"promyshlennyj-podhod-k-tyuningu-postgresql-eksperimenty-nad-bazami-dannyh-nikolaj-samohvalov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/promyshlennyj-podhod-k-tyuningu-postgresql-eksperimenty-nad-bazami-dannyh-nikolaj-samohvalov","title":{"rendered":"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL hangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek az adatb\u00e1zisokkal&#187;. Nikolaj Samohvalov","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Javaslom, hogy ismerkedjen meg Nikolai Samokhvalov \"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek az adatb\u00e1zisokkal\" c\u00edm\u0171 el\u0151ad\u00e1s\u00e1nak elk\u00e9sz\u00edtett ford\u00edt\u00e1s\u00e1val.<\/strong><\/p>\n<p><\/p>\n<p>A shared_buffers = 25% \u2013 sok vagy kev\u00e9s? Vagy \u00e9ppen megfelel\u0151? Hogyan lehet meg\u00e9rteni, hogy ez a \u2013 m\u00e1r elavult \u2013 aj\u00e1nl\u00e1s megfelel\u0151-e az \u00f6n konkr\u00e9t eset\u00e9ben?<\/p>\n<p><\/p>\n<p>El\u00e9rkezett az id\u0151, hogy komolyabban foglalkozzunk a postgresql.conf param\u00e9terek kiv\u00e1laszt\u00e1s\u00e1val. Ne vak \"autotuning\" eszk\u00f6z\u00f6k vagy elavult tan\u00e1csok alapj\u00e1n az \u00edr\u00e1sokb\u00f3l \u00e9s blogokb\u00f3l, hanem a k\u00f6vetkez\u0151k figyelembev\u00e9tel\u00e9vel:<\/p>\n<p><\/p>\n<ol>\n<li>szigor\u00faan ellen\u0151rz\u00f6tt k\u00eds\u00e9rletek az adatb\u00e1zison, automatiz\u00e1lt m\u00f3don, nagy mennyis\u00e9gben \u00e9s olyan k\u00f6r\u00fclm\u00e9nyek k\u00f6z\u00f6tt, amelyek a lehet\u0151 legjobban hasonl\u00edtanak a \"harci\" k\u00f6r\u00fclm\u00e9nyekhez,<\/li>\n<li>az adatb\u00e1zis-kezel\u0151 \u00e9s az oper\u00e1ci\u00f3s rendszer m\u0171k\u00f6d\u00e9s\u00e9nek m\u00e9lyrehat\u00f3 meg\u00e9rt\u00e9s\u00e9vel.<\/li>\n<\/ol>\n<p><\/p>\n<p>A Nancy CLI seg\u00edts\u00e9g\u00e9vel (<noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/postgres.ai\/nancy\">https:\/\/gitlab.com\/postgres.ai\/nancy<\/a><\/noindex>), konkr\u00e9t p\u00e9ldak\u00e9nt vizsg\u00e1ljuk meg a h\u00edrhedt shared_buffers-t k\u00fcl\u00f6nb\u00f6z\u0151 helyzetekben, k\u00fcl\u00f6nb\u00f6z\u0151 projektekben, \u00e9s megpr\u00f3b\u00e1ljuk kider\u00edteni, hogyan v\u00e1laszthatjuk ki az optim\u00e1lis be\u00e1ll\u00edt\u00e1st az infrastrukt\u00far\u00e1nk, az adatb\u00e1zisunk \u00e9s a terhel\u00e9s\u00fcnk sz\u00e1m\u00e1ra.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/a15b93734b6563abaec4a713c975732a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Az adatb\u00e1zisokon v\u00e9gzett k\u00eds\u00e9rletekr\u0151l lesz sz\u00f3. Ez egy t\u00f6rt\u00e9net, amely k\u00f6r\u00fclbel\u00fcl m\u00e1sf\u00e9l \u00e9ve tart. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/e77255c4abaa2a01ae37fe888fe67db7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Egy kicsit magamr\u00f3l. A Postgres-szel kapcsolatos tapasztalatom m\u00e1r t\u00f6bb mint 14 \u00e9v. Sz\u00e1mos t\u00e1rsadalmi h\u00e1l\u00f3zatot alap\u00edtottam, ahol a Postgres folyamatosan haszn\u00e1latban van.<\/p>\n<p><\/p>\n<p>Tov\u00e1bb\u00e1 a RuPostgres Meetup csoport, a vil\u00e1gon a m\u00e1sodik. Fokozatosan k\u00f6zel\u00edt\u00fcnk a 2000 f\u0151s l\u00e9tsz\u00e1mhoz. RuPostgres.org.<\/p>\n<p><\/p>\n<p>R\u00e9szese vagyok k\u00fcl\u00f6nf\u00e9le konferenci\u00e1knak, bele\u00e9rtve a Highload-ot is, ahol az adatb\u00e1zisok\u00e9rt, k\u00fcl\u00f6n\u00f6sen a Postgres-\u00e9rt felelek a kezdetek \u00f3ta.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/fa009b50f1c0293eee80fc03fd2c05f0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az utols\u00f3 n\u00e9h\u00e1ny \u00e9vben pedig \u00fajra elind\u00edtottam a Postgres konzult\u00e1ci\u00f3s gyakorlatomat, 11 id\u0151z\u00f3n\u00e1ban innen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/550c3ddcd516adca14d2b3de9c34b7ff.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Amikor ezt n\u00e9h\u00e1ny \u00e9vvel ezel\u0151tt megtettem, volt egy kis sz\u00fcnetem a Postgres-szel kapcsolatos akt\u00edv k\u00e9zi munk\u00e1ban, val\u00f3sz\u00edn\u0171leg 2010 \u00f3ta. Meglepetten tapasztaltam, hogy mennyire alig v\u00e1ltoztak a DBA-k h\u00e9tk\u00f6znapjai, \u00e9s mennyi k\u00e9zi munk\u00e1t kell m\u00e9g mindig v\u00e9gezni. Azonnal azt gondoltam, hogy itt valami nem stimmel, \u00e9s t\u00f6bbet kellene automatiz\u00e1lni.<\/p>\n<p><\/p>\n<p>Mivel mindezek t\u00e1volr\u00f3l zajlottak, a legt\u00f6bb \u00fcgyf\u00e9l a felh\u0151kben volt. M\u00e1r sok minden nyilv\u00e1nval\u00f3an automatiz\u00e1lt. Err\u0151l kicsit k\u00e9s\u0151bb. Teh\u00e1t ez az eg\u00e9sz egy olyan eszk\u00f6zk\u00e9szlet \u00f6tlet\u00e9hez vezetett, ami egy platformot alkothatna, amely szinte minden DBA tev\u00e9kenys\u00e9get automatiz\u00e1l, lehet\u0151v\u00e9 t\u00e9ve a nagy sz\u00e1m\u00fa adatb\u00e1zis kezel\u00e9s\u00e9t.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/b02097f0bb23fa9d7c30e38ab9f3de7b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ebben az el\u0151ad\u00e1sban nem lesz:<\/p>\n<p><\/p>\n<ul>\n<li>\u201eEz\u00fcst l\u00f6ved\u00e9kek\u201d \u00e9s olyan \u00e1ll\u00edt\u00e1sok, mint p\u00e9ld\u00e1ul \u2013 \u00e1ll\u00edtsa be a 8 GB-ot vagy 25% shared_buffers-t, \u00e9s minden rendben lesz. A shared_buffers-rel nem lesz t\u00fal sok sz\u00f3. <\/li>\n<li>Hardcore \u201ebels\u0151 r\u00e9szek\u201c. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/ccea359ec78a967c150ddcedc3e50a88.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi fog t\u00f6rt\u00e9nni?<\/p>\n<p><\/p>\n<ul>\n<li>Lesznek optimaliz\u00e1l\u00e1si elvek, amelyeket alkalmazunk \u00e9s fejleszt\u00fcnk. Lesznek k\u00fcl\u00f6nf\u00e9le \u00f6tletek, amelyek az utunk sor\u00e1n mer\u00fclnek fel, \u00e9s k\u00fcl\u00f6nb\u00f6z\u0151 eszk\u00f6z\u00f6k, amelyeket t\u00f6bbnyire Open Source-ben k\u00e9sz\u00edt\u00fcnk, azaz az alapokat Open Source-ban k\u00e9sz\u00edtj\u00fck. R\u00e1ad\u00e1sul a ticketek, szinte minden kommunik\u00e1ci\u00f3nk Open Source-ban folyik. Nyomon k\u00f6vetheti, hogy mit csin\u00e1lunk \u00e9ppen, mi v\u00e1rhat\u00f3 a k\u00f6vetkez\u0151 kiad\u00e1sban stb. <\/li>\n<li>Valamint tapasztalataink lesznek ezen elvek \u00e9s eszk\u00f6z\u00f6k alkalmaz\u00e1s\u00e1r\u00f3l sz\u00e1mos c\u00e9gn\u00e9l: kis startupokt\u00f3l a nagy v\u00e1llalatokig. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/86e6f379726dec814aca616a30d36a2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hogyan fejl\u0151dik mindez?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/c1422d9f2945e717c6ebb31f5fef6329.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>El\u0151sz\u00f6r is, a DBA f\u0151 feladata, hogy a p\u00e9ld\u00e1nyok l\u00e9trehoz\u00e1s\u00e1t, a biztons\u00e1gi ment\u00e9sek telep\u00edt\u00e9s\u00e9t stb. biztos\u00edtsa \u2013 a sz\u0171k keresztmetszetek felkutat\u00e1sa \u00e9s a teljes\u00edtm\u00e9ny optimaliz\u00e1l\u00e1sa mellett.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/8e682ca8666e94d6688348ebe4540327.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Most \u00edgy van ez megszervezve. Figyelj\u00fck a monitoroz\u00e1st, l\u00e1tunk valamit, amib\u0151l hi\u00e1nyzik n\u00e9h\u00e1ny r\u00e9szlet. Kezd\u00fcnk m\u00e9lyebben bele\u00e1sni, \u00e1ltal\u00e1ban k\u00e9zzel, \u00e9s pr\u00f3b\u00e1ljuk meg\u00e9rteni, mit kell kezdeni vele \u00edgy vagy \u00fagy.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/04599422ea6b6d57c79a4e48ba2db8b7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00e9t megk\u00f6zel\u00edt\u00e9s l\u00e9tezik. A Pg_stat_statements \u2013 alap\u00e9rtelmezett megold\u00e1s a lass\u00fa lek\u00e9rdez\u00e9sek azonos\u00edt\u00e1s\u00e1ra. \u00c9s a Postgres napl\u00f3k elemz\u00e9se a pgBadger seg\u00edts\u00e9g\u00e9vel.<\/p>\n<p><\/p>\n<p>Mindk\u00e9t megk\u00f6zel\u00edt\u00e9snek komoly h\u00e1tr\u00e1nya van. Az els\u0151 megk\u00f6zel\u00edt\u00e9sn\u00e9l minden param\u00e9ter ki van z\u00e1rva. \u00c9s ha l\u00e1tunk olyan SELECT * FROM table where oszlop = \u201e?\u201d vagy \u201e$\u201d csoportokat, a Postgres 10-es verzi\u00f3ja \u00f3ta, nem tudjuk, hogy index scan vagy seq scan. Nagyon nagyban f\u00fcgg a param\u00e9tert\u0151l. Ha ritk\u00e1n el\u0151fordul\u00f3 \u00e9rt\u00e9ket helyettes\u00edt, index scan lesz. Ha olyan \u00e9rt\u00e9ket helyettes\u00edt, amely a t\u00e1bl\u00e1zat 90%-\u00e1t teszi ki, nyilv\u00e1nval\u00f3an seq scan, mert a Postgres tud a statisztik\u00e1kr\u00f3l. Ez a pg_stat_statements nagy h\u00e1tr\u00e1nya, b\u00e1r folynak bizonyos munk\u00e1k.<\/p>\n<p><\/p>\n<p>A napl\u00f3k elemz\u00e9s\u00e9nek legnagyobb h\u00e1tr\u00e1nya, hogy \u00e1ltal\u00e1ban nem engedheti meg mag\u00e1nak a \u201elog_min_duration_statement = 0\u201d be\u00e1ll\u00edt\u00e1st. Err\u0151l is besz\u00e9lni fogunk. Ennek megfelel\u0151en nem l\u00e1tja a teljes k\u00e9pet. \u00c9s egy nagyon gyors lek\u00e9rdez\u00e9s \u00f3ri\u00e1si mennyis\u00e9g\u0171 er\u0151forr\u00e1st haszn\u00e1lhat, de nem fogja l\u00e1tni, mert az az \u00d6n k\u00fcsz\u00f6be alatt van.<\/p>\n<p><\/p>\n<p><strong>Hogyan oldj\u00e1k meg a DBA-k a felfedezett probl\u00e9m\u00e1kat?<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/5e57fefdec6256f82045aaac037b516c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00e9ld\u00e1ul tal\u00e1ltunk egy probl\u00e9m\u00e1t. Mit szoktak ilyenkor tenni? Ha te fejleszt\u0151 vagy, akkor valamit fogsz csin\u00e1lni egy olyan p\u00e9ld\u00e1nyon, amely nem akkora. Ha te DBA vagy, akkor van staginged. De abb\u00f3l csak egy l\u00e9tezik, \u00e9s az m\u00e1r f\u00e9l \u00e9ve le van maradva. Te pedig azt gondolod, hogy elj\u00f6hetsz a productionra. M\u00e9g a tapasztalt DBA-k is ut\u00f3lag ellen\u0151rzik a productiont, a m\u00e1solaton. N\u00e9ha ideiglenes indexet hoznak l\u00e9tre, megbizonyosodnak arr\u00f3l, hogy seg\u00edt, majd t\u00f6rlik, \u00e9s \u00e1tadj\u00e1k a fejleszt\u0151knek, hogy a migr\u00e1ci\u00f3s f\u00e1jlokba be\u00e9p\u00edthess\u00e9k. Ilyen ostobas\u00e1gok t\u00f6rt\u00e9nnek most. \u00c9s ez baj.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/402e80c7e5fbca6a054c0c9ec61e5fe3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Finom\u00edtani a konfigur\u00e1ci\u00f3kat.<\/li>\n<li>Optimaliz\u00e1lni az indexek k\u00e9szlet\u00e9t. <\/li>\n<li>Megv\u00e1ltoztatni mag\u00e1t az SQL-lek\u00e9rdez\u00e9st (ez a legnehezebb m\u00f3dszer).<\/li>\n<li>Tov\u00e1bbi er\u0151forr\u00e1sokat hozz\u00e1adni (ez a legk\u00f6nnyebb m\u00f3dszer a legt\u00f6bb esetben).<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/8a6b3cd56e0df5c7908714926ba1eb05.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ezekkel a dolgokkal nagyon sok minden foglalkozik. Sok dolog van a Postgresben. Sok mindent tudni kell. Sok index van a Postgresben, r\u00e9szben a konferencia szervez\u0151inek k\u00f6sz\u00f6nhet\u0151en. Ezt mind tudni kell, \u00e9s \u00e9ppen ez v\u00e1ltja ki a DBA-kban azt az \u00e9rz\u00e9st, hogy a DBA-k feketem\u00e1gi\u00e1t \u0171znek. Azaz k\u00f6r\u00fclbel\u00fcl 10 \u00e9vet kell foglalkozni a dologgal, hogy az ember norm\u00e1lisan kezdhessen \u00e9rteni mindehhez.<\/p>\n<p><\/p>\n<p>\u00c9n pedig harcolok ezzel a feketem\u00e1gi\u00e1val. Azt szeretn\u00e9m, hogy legyen technol\u00f3gia, \u00e9s ne intu\u00edci\u00f3 mindenben.<\/p>\n<p><\/p>\n<p><strong>P\u00e9ld\u00e1k az \u00e9letb\u0151l<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/70b11c3df9c41c66570635d5f309ed24.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Legal\u00e1bb k\u00e9t projektben tapasztaltam ezt, bele\u00e9rtve a saj\u00e1tomat is. Egy \u00faj bejegyz\u00e9s a blogban azt mondja nek\u00fcnk, hogy az 1 000-es \u00e9rt\u00e9k a default_statistic_targethez \u2013 ez j\u00f3. Rendben, pr\u00f3b\u00e1ljuk ki productionban.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/0b4c2bd6f73df06967c94d5d78b07279.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9s itt van, haszn\u00e1lva a k\u00e9t \u00e9ve l\u00e9v\u0151 eszk\u00f6z\u00fcnket az adatb\u00e1zisok k\u00eds\u00e9rletei r\u00e9v\u00e9n, amelyekr\u0151l ma sz\u00f3 van, \u00f6ssze tudjuk hasonl\u00edtani, hogy mi volt \u00e9s mi lett. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/3564eade6532003d2279c2736ab6d733.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ehhez k\u00eds\u00e9rletet kell l\u00e9trehoznunk. Ez n\u00e9gy r\u00e9szb\u0151l \u00e1ll. <\/p>\n<p><\/p>\n<ul>\n<li>Az els\u0151 \u2013 a k\u00f6rnyezet. Sz\u00fcks\u00e9g\u00fcnk van hardverre. Amikor b\u00e1rmilyen c\u00e9ghez megyek \u00e9s szerz\u0151d\u00e9st k\u00f6t\u00f6k, azt mondom, hogy olyan hardvert k\u00e9rn\u00e9k, mint ami a productionben van. Minden Mesterednek sz\u00fcks\u00e9ge van legal\u00e1bb egy olyan hardverre. Vagy ez egy Amazonban vagy Google-ben l\u00e9v\u0151 virtu\u00e1lis g\u00e9p p\u00e9ld\u00e1ny, vagy nekem ilyen hardverre van sz\u00fcks\u00e9gem. Azaz meg akarom reproduk\u00e1lni a k\u00f6rnyezetet. A k\u00f6rnyezet fogalm\u00e1ba beletartozik a Postgres f\u0151verzi\u00f3. <\/li>\n<li>A m\u00e1sodik r\u00e9sz \u2013 a kutat\u00e1saink t\u00e1rgya. Ez az adatb\u00e1zis. K\u00fcl\u00f6nb\u00f6z\u0151 m\u00f3dszerekkel l\u00e9trehozhat\u00f3. Meg fogom mutatni, hogyan. <\/li>\n<li>A harmadik r\u00e9sz \u2013 a terhel\u00e9s. Ez a legnehezebb pillanat. <\/li>\n<li>A negyedik r\u00e9sz az, amit ellen\u0151rz\u00fcnk, azaz hogy mit mivel \u00f6sszehasonl\u00edtunk. Tegy\u00fck fel, hogy a konfigur\u00e1ci\u00f3ban egy vagy t\u00f6bb param\u00e9tert megv\u00e1ltoztathatunk, vagy indexet hozhatunk l\u00e9tre stb. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/8ccd09ac4cdd336618413375617c10a6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00eds\u00e9rletet ind\u00edtunk. Itt van a pg_stat_statements. Bal oldalon az, ami volt. Jobb oldalon az, ami lett.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/6f82d7e25a77b700f2ddb01f42a861a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Bal oldalon default_statistics_target = 100, jobbra = 1 000. L\u00e1tjuk, hogy ez seg\u00edtett. \u00d6sszess\u00e9g\u00e9ben 8%-kal jobb lett.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/52dda8fb5fbcb9beecaa1eda8443a374.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>De ha lefel\u00e9 g\u00f6rd\u00edtj\u00fck, akkor ott csoportos k\u00e9r\u00e9sek lesznek a pgBadgerb\u0151l vagy a pg_stat_statementsb\u0151l. K\u00e9t lehet\u0151s\u00e9g van. L\u00e1tni fogjuk, hogy egy k\u00e9r\u00e9s 88%-kal cs\u00f6kkent. Itt m\u00e1r m\u00e9rn\u00f6ki megk\u00f6zel\u00edt\u00e9sra van sz\u00fcks\u00e9g. Tov\u00e1bb m\u00e9lyebben kell vizsg\u00e1l\u00f3dnunk, mert \u00e9rdekes, hogy mi\u00e9rt cs\u00f6kkent. Meg kell \u00e9rteni, hogy mi t\u00f6rt\u00e9nt a statisztik\u00e1kkal. Mi\u00e9rt a t\u00f6bb v\u00f6d\u00f6r a statisztik\u00e1ban rosszabb eredm\u00e9nyhez vezet.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/4e6dfc04af4b3fc2b626dd46c08bdf66.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vagy m\u00e9lyebb kutat\u00e1s n\u00e9lk\u00fcl egyszer\u0171en v\u00e9grehajthatunk egy \u201eALTER TABLE \u2026 ALTER COLUMN\u201d parancsot, \u00e9s vissza\u00e1ll\u00edthatjuk 100 v\u00f6dr\u00f6t ennek az oszlopnak a statisztik\u00e1j\u00e1ban. \u00c9s tov\u00e1bbi k\u00eds\u00e9rlettel meggy\u0151z\u0151dhet\u00fcnk arr\u00f3l, hogy ez a jav\u00edt\u00e1s seg\u00edtett. Ennyi. Ez egy m\u00e9rn\u00f6ki megk\u00f6zel\u00edt\u00e9s, amely seg\u00edt a helyzet meg\u00e9rt\u00e9s\u00e9ben \u00e9s az adatok alapj\u00e1n t\u00f6rt\u00e9n\u0151 d\u00f6nt\u00e9shozatalban, nem pedig az intu\u00edci\u00f3 alapj\u00e1n.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/c87df172b994a4523478beebaf4a0275.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/9e766aa4348bd1a77b697e3179d84bbd.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00e1r p\u00e9lda m\u00e1s ter\u00fcletekr\u0151l. A tesztek k\u00f6z\u00f6tt m\u00e1r sok \u00e9ve vannak CI-tesztek. \u00c9s egyetlen projekt sem \u00e9lhet j\u00f3zan \u00e9sszel automatikus tesztek n\u00e9lk\u00fcl.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/b6c21981dc8b2b285973ae42199e2b4c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>M\u00e1s ipar\u00e1gakban: a rep\u00fcl\u00e9sben, az aut\u00f3gy\u00e1rt\u00e1sban, amikor a aerodinamik\u00e1t tesztelj\u00fck, nek\u00fcnk is van lehet\u0151s\u00e9g\u00fcnk k\u00eds\u00e9rletek v\u00e9grehajt\u00e1s\u00e1ra. Nem fogunk azonnal rajz alapj\u00e1n fell\u0151ni valamit az \u0171rbe, \u00e9s nem fogunk azonnal ki\u00e1ll\u00edtani egy aut\u00f3t az aut\u00f3p\u00e1ly\u00e1ra. P\u00e9ld\u00e1ul van aerodinamikai csatorn\u00e1nk. <\/p>\n<p><\/p>\n<p>M\u00e1s ipar\u00e1gak megfigyel\u00e9seib\u0151l k\u00f6vetkeztet\u00e9seket vonhatunk le. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/cef02ea9280e5795d1e593c600f0541b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>El\u0151sz\u00f6r is, van egy speci\u00e1lis k\u00f6rnyezet. K\u00f6zel \u00e1ll a produkci\u00f3hoz, de nem annyira. F\u0151 jellemz\u0151je, hogy olcs\u00f3nak, ism\u00e9telhet\u0151nek \u00e9s maxim\u00e1lisan automatiz\u00e1ltnak kell lennie. \u00c9s speci\u00e1lis eszk\u00f6z\u00f6knek is lennie kell a r\u00e9szletes elemz\u00e9s lebonyol\u00edt\u00e1s\u00e1ra.<\/p>\n<p><\/p>\n<p>Val\u00f3sz\u00edn\u0171leg, amikor a rep\u00fcl\u0151t elind\u00edtottuk \u00e9s rep\u00fcl\u00fcnk, kevesebb lehet\u0151s\u00e9g\u00fcnk van a sz\u00e1rny fel\u00fclet\u00e9nek minden millim\u00e9ter\u00e9t tanulm\u00e1nyozni, mint a l\u00e9gcsatorn\u00e1ban. T\u00f6bb diagnosztikai eszk\u00f6z \u00e1ll rendelkez\u00e9s\u00fcnkre. Megengedhetj\u00fck magunknak, hogy t\u00f6bb neh\u00e9z dolgot szerelj\u00fcnk fel, amit nem engedhet\u00fcnk meg magunknak a leveg\u0151ben l\u00e9v\u0151 rep\u00fcl\u0151n. Ugyanez a helyzet a Postgres-szel is. Bizonyos esetekben enged\u00e9lyezhetj\u00fck a teljes lek\u00e9rdez\u00e9si napl\u00f3z\u00e1st k\u00eds\u00e9rletez\u00e9s k\u00f6zben. Ezt a produkci\u00f3s k\u00f6rnyezetben nem szeretn\u00e9nk megtenni. Tal\u00e1n a terveink k\u00f6z\u00f6tt szerepel az auto_explain seg\u00edts\u00e9g\u00e9vel val\u00f3 enged\u00e9lyez\u00e9se.<\/p>\n<p><\/p>\n<p>Ahogy m\u00e1r mondtam, a magas automatiz\u00e1lts\u00e1gi szint azt jelenti, hogy megnyomtuk a gombot \u00e9s megism\u00e9telt\u00fck. \u00cdgy kell lennie, hogy sok k\u00eds\u00e9rlet legyen, hogy folyamatosan \u00e1ramoljon.<\/p>\n<p><\/p>\n<p>Nancy CLI \u2013 az \u201eadatb\u00e1zislabor\u201d alapja<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/f8303df21f309fb209929acec260b757.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00cdme, l\u00e9trehoztunk egy ilyet. Teh\u00e1t ezekr\u0151l az \u00f6tletekr\u0151l m\u00e1r j\u00faniusban besz\u00e9ltem, majdnem egy \u00e9ve. M\u00e1r van egy \u00fagynevezett Nancy CLI a ny\u00edlt forr\u00e1sk\u00f3d\u00fa k\u00f6rnyezetben. Ez az alapja az adatb\u00e1zislabor fel\u00e9p\u00edt\u00e9s\u00e9nek.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/0ed3c72461123745be4fa9e58455baa0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/postgres-ai\/nancy\">Nancy<\/a><\/noindex> \u2014 Ez ny\u00edlt forr\u00e1sk\u00f3d\u00fa, a Gitlab-on. Elmondhatod, kipr\u00f3b\u00e1lhatod. Adtam egy linket a di\u00e1kban. Arra r\u00e1kattintva el\u00e9rhet\u0151. <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/postgres-ai\/nancy\/-\/blob\/master\/help\/nancy_run.md\">help<\/a><\/noindex> minden param\u00e9ter szerint.<\/p>\n<p><\/p>\n<p>Term\u00e9szetesen sok minden m\u00e9g fejleszt\u00e9s alatt \u00e1ll. Sok \u00f6tlet van. De m\u00e1r ez az, amit szinte nap mint nap alkalmazunk. Amikor felmer\u00fcl egy \u00f6tlet \u2013 p\u00e9ld\u00e1ul, hogy mi\u00e9rt akadtunk el IO-ra 40 000 000 sor t\u00f6rl\u00e9sekor, k\u00eds\u00e9rletet v\u00e9gezhet\u00fcnk \u00e9s alaposabban megvizsg\u00e1lhatjuk, hogy mi t\u00f6rt\u00e9nik, \u00e9s pr\u00f3b\u00e1lhatjuk azt azonnal jav\u00edtani. Teh\u00e1t k\u00eds\u00e9rletet csin\u00e1lunk. P\u00e9ld\u00e1ul m\u00f3dos\u00edtunk valamit \u00e9s n\u00e9zz\u00fck, mi az eredm\u00e9ny. Ezt pedig nem a produkci\u00f3ban tessz\u00fck. Ez az alapgondolat.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/c22d332de4b45d604dfb9c5a95404fd6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hol m\u0171k\u00f6dhet ez? Helyben m\u0171k\u00f6dhet, teh\u00e1t b\u00e1rhol v\u00e9gezhetj\u00fck, ak\u00e1r MacBook-on is elind\u00edthat\u00f3. Sz\u00fcks\u00e9ges a Docker, indulhatunk. \u00c9s k\u00e9sz. Ind\u00edthat\u00f3 b\u00e1rmilyen instance-ben, az eszk\u00f6z\u00f6n vagy virtu\u00e1lis g\u00e9pen, b\u00e1rhol.<\/p>\n<p><\/p>\n<p>Van m\u00e9g lehet\u0151s\u00e9g t\u00e1voli ind\u00edt\u00e1sra az Amazon EC2 Instance keretein bel\u00fcl, a spotokban. Ez egy nagyon klassz lehet\u0151s\u00e9g. P\u00e9ld\u00e1ul tegnap t\u00f6bb mint 500 k\u00eds\u00e9rletet v\u00e9gezt\u00fcnk i3 instance-en, a legkisebbt\u0151l kezdve az i3-16-xlarge-ig. Az 500 k\u00eds\u00e9rlet \u00f6sszesen 64 doll\u00e1rba ker\u00fclt. Mindez 15 percig tartott. Teh\u00e1t a spotok haszn\u00e1lat\u00e1nak k\u00f6sz\u00f6nhet\u0151en nagyon olcs\u00f3 \u2013 70%-os kedvezm\u00e9ny, per m\u00e1sodperces sz\u00e1ml\u00e1z\u00e1s az Amazont\u00f3l. Nagyon sok mindent el lehet v\u00e9gezni. Igazi kutat\u00e1sokat lehet folytatni.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/64c61cc9dd7181296b2ef5b815a17493.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>H\u00e1rom f\u0151 verzi\u00f3j\u00e1t t\u00e1mogatja a Postgres. Nem t\u00fal neh\u00e9z kieg\u00e9sz\u00edteni n\u00e9h\u00e1ny r\u00e9gi verzi\u00f3t, \u00e9s az \u00faj 12-es verzi\u00f3t is.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/ee147c91014ab698cbd3c60e193bef23.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az objektumot h\u00e1rom m\u00f3don lehet megadni. Ezek:<\/p>\n<p><\/p>\n<ul>\n<li>Dump\/sql f\u00e1jl. <\/li>\n<li>A f\u0151 m\u00f3d a PGDATA k\u00f6nyvt\u00e1r kl\u00f3noz\u00e1sa. \u00c1ltal\u00e1ban a ment\u00e9si szerverb\u0151l szokt\u00e1k venni. Ha norm\u00e1lis bin\u00e1ris ment\u00e9seid vannak, akkor onnan tudsz kl\u00f3nokat k\u00e9sz\u00edteni. Ha felh\u0151d van, akkor ezeket a felh\u0151szolg\u00e1ltat\u00f3, p\u00e9ld\u00e1ul az Amazon vagy a Google, automatikusan elv\u00e9gzi. Ez a legfontosabb m\u00f3dszer \u00e9les k\u00f6rnyezet kl\u00f3noz\u00e1s\u00e1ra. Mi \u00edgy telep\u00edtj\u00fck. <\/li>\n<li>Az utols\u00f3 m\u00f3dszer kutat\u00e1sokra alkalmas, amikor szeretn\u00e9nk meg\u00e9rteni, hogyan m\u0171k\u00f6dik valami a Postgresben. Ez a pgbench. A pgbench seg\u00edts\u00e9g\u00e9vel gener\u00e1lhatsz terhel\u00e9st. Ez csak egy opci\u00f3, a \"db-pgbench\". Megmondod neki, mekkora sk\u00e1l\u00e1r\u00f3l van sz\u00f3. Minden a felh\u0151ben lesz gener\u00e1lva, ahogy mondt\u00e1k.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/2bc3e30cb31a19f66c6b55480447126f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9s a terhel\u00e9s:<\/p>\n<p><\/p>\n<ul>\n<li>A terhel\u00e9st egy sz\u00e1lon SQL utas\u00edt\u00e1sok v\u00e9grehajt\u00e1s\u00e1val tudjuk v\u00e9gezni. Ez a legprimit\u00edvebb m\u00f3d. <\/li>\n<li>De emul\u00e1lhatjuk a terhel\u00e9st is. Az emul\u00e1ci\u00f3t els\u0151sorban \u00fagy tudjuk v\u00e9gezni, hogy minden napl\u00f3t gy\u0171jt\u00fcnk. Ez f\u00e1jdalmas. Megmutatom, mi\u00e9rt. A pgreplay seg\u00edts\u00e9g\u00e9vel j\u00e1tszuk le, amely be van \u00e9p\u00edtve Nancy-ba. <\/li>\n<li>Vagy egy m\u00e1sik lehet\u0151s\u00e9g. Az \u00fagynevezett k\u00e9zm\u0171ves terhel\u00e9s, amelyet bizonyos er\u0151fesz\u00edt\u00e9sek \u00e1r\u00e1n v\u00e9gz\u00fcnk. A termel\u00e9si rendszer\u00fcnk aktu\u00e1lis terhel\u00e9s\u00e9nek elemz\u00e9s\u00e9vel kiemelj\u00fck a legjobb lek\u00e9rdez\u00e9seket. A pgbench seg\u00edts\u00e9g\u00e9vel tudjuk emul\u00e1lni ezt a terhel\u00e9st a laborban. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/4adba12881faf9ad9d4f9e9f42c0f5c1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Vagy v\u00e9gre kell hajtani valamilyen SQL utas\u00edt\u00e1st, azaz ellen\u0151rizni kell egy migr\u00e1ci\u00f3t, l\u00e9tre kell hozni egy indexet, v\u00e9gre kell hajtani egy ANALYZE-t. \u00c9s megn\u00e9zz\u00fck, mi volt a v\u00e1kuum el\u0151tt \u00e9s ut\u00e1n. \u00c1ltal\u00e1ban b\u00e1rmilyen SQL.<\/li>\n<li>Vagy a konfigur\u00e1ci\u00f3ban m\u00f3dos\u00edtunk egy vagy t\u00f6bb param\u00e9tert. Meg tudjuk mondani, hogy p\u00e9ld\u00e1ul ellen\u0151rizz\u00e9k 100 \u00e9rt\u00e9k\u00fcnket az Amazonon a terab\u00e1jtos adatb\u00e1zisunkhoz. \u00c9s n\u00e9h\u00e1ny \u00f3r\u00e1n bel\u00fcl meg lesz az eredm\u00e9ny. Jellemz\u0151en a terab\u00e1jtos adatb\u00e1zist n\u00e9h\u00e1ny \u00f3r\u00e1n bel\u00fcl fogjuk telep\u00edteni. De a fejleszt\u00e9sben van egy jav\u00edt\u00e1s, van lehet\u0151s\u00e9g\u00fcnk sorozatra, azaz egy \u00e9s ugyanazon a szerveren haszn\u00e1lhatjuk ugyanazt a pgdata-t, \u00e9s ellen\u0151rizhetj\u00fck. A Postgres \u00fajraindul, a cache-ek t\u00f6rl\u0151dnek. \u00c9s terhel\u00e9st v\u00e9gezhet\u00fcnk. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/02985b47bf0ab62e8f1c4cc3ea003f26.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Meg\u00e9rkezik a k\u00f6nyvt\u00e1r, amely tele van k\u00fcl\u00f6nf\u00e9le f\u00e1jlokkal, kezdve a pg snapshotokt\u00f3l.<em>stat<\/em>***. \u00c9s itt a leg\u00e9rdekesebb a pg_stat_statements, pg_stat_kcache. Ezek k\u00e9t kiterjeszt\u00e9s, amelyek elemzik a lek\u00e9rdez\u00e9seket. A pg_stat_bgwriter nemcsak a pgwriter statisztik\u00e1it tartalmazza, hanem a checkpoint adatait is, \u00e9s azt, hogy a h\u00e1tt\u00e9rfolyamatok hogyan k\u00e9pesek elt\u00fcntetni a koszos puffereket. Ezek mind nagyon \u00e9rdekesek megn\u00e9zni. P\u00e9ld\u00e1ul, amikor be\u00e1ll\u00edtjuk a shared_buffers \u00e9rt\u00e9ket, nagyon \u00e9rdekes l\u00e1tni, hogy h\u00e1nyat k\u00e9pesek elt\u00fcntetni.<\/li>\n<li>A Postgres napl\u00f3i is meg\u00e9rkeznek. K\u00e9t napl\u00f3 van \u2013 a felk\u00e9sz\u00fcl\u00e9si napl\u00f3 \u00e9s a terhel\u00e9si napl\u00f3. <\/li>\n<li>Viszonylag \u00faj funkci\u00f3 \u2013 FlameGraphs.<\/li>\n<li>Ha haszn\u00e1ltad a pgreplay vagy pgbench terhel\u00e9svisszaj\u00e1tsz\u00e1si lehet\u0151s\u00e9geit, akkor a nat\u00edv kimenet\u00fck is l\u00e1that\u00f3 lesz. Akkor l\u00e1tni fogod a latency-t \u00e9s a TPS-t. Meg lehet \u00e9rteni, hogy \u0151k hogyan l\u00e1tt\u00e1k ezt. <\/li>\n<li>Rendszerinform\u00e1ci\u00f3. <\/li>\n<li>Alapvet\u0151 CPU \u00e9s IO ellen\u0151rz\u00e9sek. Ez ink\u00e1bb az EC2 p\u00e9ld\u00e1nyokhoz az Amazonban, amikor 100 azonos p\u00e9ld\u00e1nyt akarsz egyszerre futtatni, \u00e9s 100 k\u00fcl\u00f6nb\u00f6z\u0151 fut\u00e1st v\u00e9gezni, akkor 10 000 k\u00eds\u00e9rleted lesz. Meg kell gy\u0151z\u0151dn\u00f6d arr\u00f3l, hogy nem akadt\u00e1l bele egy hib\u00e1s p\u00e9ld\u00e1nyba, amelyet m\u00e1r valaki domesztik\u00e1lt. Ezen a hardveren m\u00e1sok is akt\u00edvak, \u00e9s neked kev\u00e9s marad az er\u0151forr\u00e1saib\u00f3l. Az ilyen eredm\u00e9nyeket \u00e9rdemes eldobni. Seg\u00edts\u00e9g\u00e9vel Alexey Kopytov sysbench-j\u00e9vel v\u00e9gz\u00fcnk n\u00e9h\u00e1ny r\u00f6vid ellen\u0151rz\u00e9st, amely meg\u00e9rkezik, \u00e9s \u00f6ssze lehet hasonl\u00edtani a t\u00f6bbi helyett, azaz meg\u00e9rted, hogyan viselkedik a CPU \u00e9s hogyan viselkedik az IO. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/c4ddf5283c3c79e3d4c2c061e7dd9e7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Milyen technikai neh\u00e9zs\u00e9gek vannak k\u00fcl\u00f6nb\u00f6z\u0151 c\u00e9gekn\u00e9l?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/959690b464a01a4a3cb67ec497becff1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tegy\u00fck fel, hogy val\u00f3s terhel\u00e9st akarunk vissza\u00e1ll\u00edtani a napl\u00f3k seg\u00edts\u00e9g\u00e9vel. Kiv\u00e1l\u00f3 \u00f6tlet, ha ez az Open Source pgreplay-en van \u00edrva. Mi ezt haszn\u00e1ljuk. De hogy j\u00f3l m\u0171k\u00f6dj\u00f6n, aktiv\u00e1lni kell a teljes lek\u00e9rdez\u00e9snapl\u00f3z\u00e1st param\u00e9terekkel \u00e9s id\u0151z\u00edt\u00e9ssel.<\/p>\n<p><\/p>\n<p>Vannak n\u00e9mi neh\u00e9zs\u00e9g a duration \u00e9s timestamp k\u00f6r\u00fcl. Ezt a t\u00e9m\u00e1t most elhagyjuk. A f\u0151 k\u00e9rd\u00e9s az, hogy megengedheti-e mag\u00e1nak, vagy nem? <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/5d08fadbaf67b8a137212302b6adf48a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/gist.github.com\/NikolayS\/08d9b7b4845371d03e195a8d8df43408\">https:\/\/gist.github.com\/NikolayS\/08d9b7b4845371d03e195a8d8df43408<\/a><\/noindex><\/p>\n<p><\/p>\n<p>A probl\u00e9ma az, hogy ez lehet, hogy nem el\u00e9rhet\u0151. El\u0151sz\u00f6r is meg kell \u00e9rtenie, hogy milyen adatfolyamot fognak a napl\u00f3ba \u00edrni. Ha van pg_stat_statements, ezzel a lek\u00e9rdez\u00e9ssel (a hivatkoz\u00e1s el\u00e9rhet\u0151 lesz a di\u00e1kn\u00e1l) meg\u00e9rtheti, hogy k\u00f6r\u00fclbel\u00fcl h\u00e1ny b\u00e1jt fog m\u00e1sodpercenk\u00e9nt \u00edrni.<\/p>\n<p><\/p>\n<p>A lek\u00e9rdez\u00e9s hossz\u00e1t n\u00e9zz\u00fck. Figyelmen k\u00edv\u00fcl hagyjuk, hogy nincsenek param\u00e9terek, de tudjuk a lek\u00e9rdez\u00e9s hossz\u00e1t \u00e9s azt, hogy h\u00e1nyszor hajtott\u00e1k v\u00e9gre m\u00e1sodpercenk\u00e9nt. \u00cdgy k\u00f6r\u00fclbel\u00fcl meg tudjuk becs\u00fclni, hogy h\u00e1ny b\u00e1jtot fogunk m\u00e1sodpercenk\u00e9nt \u00edrni. Lehet, hogy t\u00e9ved\u00fcnk k\u00e9tszer is, de a rangsorunkat pontosan fogjuk tudni \u00edgy meg\u00e1llap\u00edtani.<\/p>\n<p><\/p>\n<p>L\u00e1tjuk, hogy m\u00e1sodpercenk\u00e9nt 802 alkalommal fut le ez a lek\u00e9rdez\u00e9s. \u00c9s azt is l\u00e1tjuk, hogy a bytes_per_sec \u2013 300 kB\/s k\u00f6r\u00fcl fog \u00edr\u00f3dni. \u00c1ltal\u00e1ban pedig ezt a terhel\u00e9st meg tudjuk engedni magunknak. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/218f905073a8519115adf5c65825b74d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>De! A helyzet az, hogy k\u00fcl\u00f6nb\u00f6z\u0151 napl\u00f3z\u00f3 rendszerek l\u00e9teznek. Az emberek \u00e1ltal\u00e1ban alap\u00e9rtelmezetten a 'syslog'-ot haszn\u00e1lj\u00e1k.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/66054682083ba2ada174afb5e7ee3973.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ha van syslog, akkor ilyen k\u00e9pet kaphat. Haszn\u00e1lni fogjuk a pgbenchet, bekapcsoljuk a lek\u00e9rdez\u00e9sek napl\u00f3z\u00e1s\u00e1t, \u00e9s megn\u00e9zz\u00fck, mi t\u00f6rt\u00e9nik.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/a05723dcf10a7733f054ba108bb0f107.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Napl\u00f3z\u00e1s n\u00e9lk\u00fcl \u2013 ez a baloldali oszlop. 161 000 TPS-t \u00e9rt\u00fcnk el. Syslog-gal \u2013 ez Ubuntu 16.04 alatt az Amazonon 37 000 TPS. Ha pedig \u00e1t\u00e1ll\u00edtjuk k\u00e9t m\u00e1sik napl\u00f3z\u00e1si m\u00f3dra, akkor sokkal jobb a helyzet. V\u00e1rtuk, hogy cs\u00f6kkenni fog, de nem ennyire.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/a7d90af9d29761d3b80eb09bf050760f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>CentOS 7 alatt, ahol a journald is r\u00e9szt vesz, a napl\u00f3kat bin\u00e1ris form\u00e1tumba alak\u00edtva a k\u00e9nyelmes keres\u00e9s \u00e9rdek\u00e9ben, ott egy r\u00e9m\u00e1lom, 44-szeres TPS cs\u00f6kken\u00e9s tapasztalhat\u00f3.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/86d2af18a0e6364f297a62378b6ede56.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ez az, amivel az emberek \u00e9lnek. \u00c9s a nagyobb c\u00e9gekn\u00e9l gyakran nagyon neh\u00e9z megv\u00e1ltoztatni. Ha tud elhagyni a syslog-ot, akkor k\u00e9rem, hagyja el.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/a167a6fac7f28c7541515f7eff30bdb4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>\u00c9rt\u00e9kelje az IOPS-t \u00e9s az \u00edr\u00e1si sebess\u00e9get. <\/li>\n<li>Ellen\u0151rizze a napl\u00f3z\u00f3 rendszer\u00e9t. <\/li>\n<li>Ha a v\u00e1rhat\u00f3 terhel\u00e9s t\u00fal nagy, fontolja meg a mintav\u00e9telez\u00e9s lehet\u0151s\u00e9g\u00e9t. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/127fa1296578ba0ba6eac2b44c5c5398.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Van pg_stat_statements. Ahogyan mondtam, ennek felt\u00e9tlen\u00fcl ott kell lennie. \u00c9s k\u00fcl\u00f6nf\u00e9le lek\u00e9rdez\u00e9si csoportokat tudunk le\u00edrni speci\u00e1lis m\u00f3don egy f\u00e1jlban. Ezt k\u00f6vet\u0151en pedig nagyon k\u00e9nyelmes funkci\u00f3t vehet\u00fcnk ig\u00e9nybe a pgbench-ben \u2013 lehet\u0151s\u00e9g van t\u00f6bb f\u00e1jl \u00e1tad\u00e1s\u00e1ra az '-f' opci\u00f3 seg\u00edts\u00e9g\u00e9vel.<\/p>\n<p><\/p>\n<p>\u0150 sok \u00ab-f\u00bb-et meg\u00e9rt. Azt is meg lehet mondani \u00ab@\u00bb haszn\u00e1lat\u00e1val a v\u00e9g\u00e9n, hogy melyik f\u00e1jl ar\u00e1ny\u00e1t kellene betartani. Vagyis mondhatjuk, hogy ezt 10%-ban, azt pedig 20%-ban kell futtatni. Ez k\u00f6zelebb fog vinni minket ahhoz, amit a production-on l\u00e1tunk.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/b91d18a9861abdc36bfda54cd72a142f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hogyan tudjuk, mi van a production-on? Mekkora a r\u00e9szesed\u00e9s \u00e9s mib\u0151l mennyi? Ez egy kicsit elt\u00e9r a t\u00e9m\u00e1t\u00f3l. Van egy m\u00e1sik term\u00e9k\u00fcnk is, <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/postgres-ai\/postgres-checkup\">postgres-checkup<\/a><\/noindex>. Ez is Open Source alap\u00fa. Jelenleg akt\u00edvan fejlesztj\u00fck.<\/p>\n<p><\/p>\n<p>Ez egy kicsit m\u00e1s okokb\u00f3l sz\u00fcletett. Az\u00e9rt, mert a monitoring nem el\u00e9gs\u00e9ges. Vagyis elj\u00f6ssz, megn\u00e9zed az adatb\u00e1zist, megn\u00e9zed a felmer\u00fcl\u0151 probl\u00e9m\u00e1kat. \u00c9s \u00e1ltal\u00e1ban csin\u00e1lsz egy health_check-et. Ha tapasztalt DBA vagy, akkor v\u00e9gezz el health_check-et. Megn\u00e9zted az indexhaszn\u00e1latot, stb. Ha van OKmeter-ed, az nagyszer\u0171. Ez egy remek monitoring eszk\u00f6z a Postgres sz\u00e1m\u00e1ra. OKmeter.io \u2013 k\u00e9rlek, telep\u00edtsd, nagyon j\u00f3l meg van csin\u00e1lva. Ez egy fizet\u0151s szolg\u00e1ltat\u00e1s.<\/p>\n<p><\/p>\n<p>Ha nincs, akkor \u00e1ltal\u00e1ban nem sok mindened van. A monitoroz\u00e1s \u00e1ltal\u00e1ban csak CPU-t, IO-t \u00e9s az is fenntart\u00e1ssal, ennyi. Viszont nek\u00fcnk t\u00f6bb kell. L\u00e1tni akarjuk, hogyan m\u0171k\u00f6dik az autovakuum, hogyan m\u0171k\u00f6dik a checkpoint, az io-ban el kell k\u00fcl\u00f6n\u00edteni a checkpoint-ot a bgwriter-t\u0151l \u00e9s a backend-t\u0151l, stb.<\/p>\n<p><\/p>\n<p>A probl\u00e9m\u00e1t az jelenti, hogy amikor seg\u00edtesz egy nagy v\u00e1llalatnak, nem tudnak gyorsan bevezetni valamit. Nem tudj\u00e1k gyorsan megvenni az OKmeter-t. Lehet, hogy f\u00e9l \u00e9v m\u00falva megveszik. Nem tudj\u00e1k gyorsan telep\u00edteni a sz\u00fcks\u00e9ges csomagokat. <\/p>\n<p><\/p>\n<p>\u00cdgy sz\u00fcletett meg az \u00f6tlet, hogy sz\u00fcks\u00e9g\u00fcnk van egy olyan speci\u00e1lis eszk\u00f6zre, amely nem ig\u00e9nyel semmilyen telep\u00edt\u00e9st, vagyis nem kell semmit telep\u00edtened a production-ra. Telep\u00edtheted a laptopodra, vagy egy observing server-re, ahonnan ind\u00edtani fogod. \u00c9s ez rengeteg mindent elemez: az oper\u00e1ci\u00f3s rendszert, a f\u00e1jlrendszert, mag\u00e1t a Postgres-t, v\u00e9gezve valamilyen k\u00f6nny\u0171 lek\u00e9rdez\u00e9seket, amelyeket k\u00f6zvetlen\u00fcl a production-on lehet futtatni an\u00e9lk\u00fcl, hogy b\u00e1rmi le\u00e1llna.<\/p>\n<p><\/p>\n<p>Postgres-checkup-nak nevezt\u00fck. Ha orvosi \u00e9rtelemben n\u00e9zz\u00fck, akkor ez egy rendszeres eg\u00e9szs\u00e9g\u00fcgyi ellen\u0151rz\u00e9s. Ha aut\u00f3s szempontb\u00f3l, akkor ez olyan, mint egy szerviz. Az aut\u00f3dnak \u00e9vente vagy k\u00e9t \u00e9vente kell \u00e1tf\u00e9s\u00fclnie az \u00e1llapot\u00e1t, a m\u00e1rk\u00e1t\u00f3l f\u00fcgg\u0151en. De te elv\u00e9gzel hasonl\u00f3 ellen\u0151rz\u00e9seket az adatb\u00e1zisodra? Teh\u00e1t v\u00e9gzel m\u00e9lyrehat\u00f3 vizsg\u00e1latokat rendszeresen? Ezt meg kell tenni. Ha k\u00e9sz\u00edtesz biztons\u00e1gi m\u00e1solatokat, akkor k\u00e9sz\u00edts checkup-ot is, ez semmivel sem kev\u00e9sb\u00e9 fontos.<\/p>\n<p><\/p>\n<p>\u00c9s van egy ilyen eszk\u00f6z\u00fcnk. Csak h\u00e1rom h\u00f3napja kezdett akt\u00edvan fejl\u0151dni. M\u00e9g fiatal, de m\u00e1r sok funkci\u00f3val rendelkezik.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/514d00b5cb710a7997af0a5dde55b5a8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00d6sszegy\u0171jtj\u00fck a legbefoly\u00e1sosabb lek\u00e9rdez\u00e9si csoportokat \u2013 K003 jelent\u00e9s a Postgres-checkupban<\/p>\n<p><\/p>\n<p>Itt van egy jelent\u00e9scsoport K. Jelenleg h\u00e1rom jelent\u00e9s \u00e9rhet\u0151 el. L\u00e9tezik egy K003 jelent\u00e9s is. Ebben a pg_stat_statements cs\u00facsai szerepelnek, a total_time szerint rendezve.<\/p>\n<p><\/p>\n<p>Amikor a total_time szerint rendezz\u00fck a lek\u00e9rdez\u00e9si csoportokat, akkor a csoport tetej\u00e9n egy olyan csoportot l\u00e1tunk, amely a legnagyobb m\u00e9rt\u00e9kben terheli a rendszer\u00fcnket, azaz a legt\u00f6bb er\u0151forr\u00e1st fogyasztja. Mi\u00e9rt nevezem csoportoknak a lek\u00e9rdez\u00e9seket? Mert elt\u00e1vol\u00edtottuk a param\u00e9tereket. Ezek m\u00e1r nem lek\u00e9rdez\u00e9sek, hanem lek\u00e9rdez\u00e9si csoportok, azaz absztrakt csoportok.<\/p>\n<p><\/p>\n<p>Ha fel\u00fclr\u0151l lefel\u00e9 optimaliz\u00e1lunk, k\u00f6nnyebb\u00e9 tessz\u00fck az er\u0151forr\u00e1sainkat, \u00e9s elhalasztjuk azt az id\u0151pontot, amikor friss\u00edten\u00fcnk kell. Ez egy nagyon j\u00f3 m\u00f3dja a p\u00e9nzmegtakar\u00edt\u00e1snak.<\/p>\n<p><\/p>\n<p>Tal\u00e1n ez nem a legjobb megold\u00e1s a felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra, mert el\u0151fordulhat, hogy nem l\u00e1tjuk a ritka, de nagyon bosszant\u00f3 eseteket, amikor valaki 15 m\u00e1sodpercet v\u00e1rt. \u00d6sszess\u00e9g\u00e9ben ezek annyira ritk\u00e1k, hogy nem \u00e9szlelj\u00fck \u0151ket, de k\u00f6zben az er\u0151forr\u00e1sokkal foglalkozunk.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/d16abc423573e4d923b0c03683c2efee.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi t\u00f6rt\u00e9nt ebben a t\u00e1bl\u00e1zatban? K\u00e9t pillanatfelv\u00e9telt k\u00e9sz\u00edtett\u00fcnk. A Postgres_checkup minden metrik\u00e1n\u00e1l delta \u00e9rt\u00e9ket sz\u00e1m\u00edt: total-time, calls, rows, shared_blks_read stb. Minden, a delta kisz\u00e1m\u00edtva. A pg_stat_statements egyik nagy probl\u00e9m\u00e1ja, hogy nem eml\u00e9kezik a resetre. M\u00edg a pg_stat_database eml\u00e9kszik, a pg_stat_statements nem. L\u00e1tja, hogy ott 1 000 000 van, de nem tudjuk, honnan sz\u00e1moltuk.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/c370bf1237675e03c0a3d362c025ac24.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Itt viszont tudjuk, hogy k\u00e9t pillanatfelv\u00e9tel\u00fcnk van. A delta ebben az esetben 56 m\u00e1sodperc volt. Nagyon r\u00f6vid id\u0151tartam. A total_time szerint rendezt\u00fck. Tov\u00e1bb\u00e1 differenci\u00e1lhatunk, azaz minden metrik\u00e1t elosztunk a duration \u00e9rt\u00e9kkel. Ha minden metrik\u00e1t elosztunk a durationnal, akkor megkapjuk a m\u00e1sodpercenk\u00e9nti h\u00edv\u00e1sok sz\u00e1m\u00e1t.<\/p>\n<p><\/p>\n<p>A k\u00f6vetkez\u0151 a total_time per m\u00e1sodperc \u2013 ez a kedvenc metrik\u00e1m. M\u00e1sodpercekben m\u00e9rik, m\u00e1sodpercenk\u00e9nt, azaz mennyi id\u0151t vett ig\u00e9nybe a rendszer\u00fcnk a lek\u00e9rdez\u00e9si csoport v\u00e9grehajt\u00e1s\u00e1ra m\u00e1sodpercenk\u00e9nt. Ha ott t\u00f6bb mint egy m\u00e1sodpercet l\u00e1t, az azt jelenti, hogy t\u00f6bb mint egy magra volt sz\u00fcks\u00e9g. Ez egy nagyon j\u00f3 metrika. Meg\u00e9rtheti, hogy ennek a szem\u00e9lynek p\u00e9ld\u00e1ul minimum h\u00e1rom magra van sz\u00fcks\u00e9ge.<\/p>\n<p><\/p>\n<p>Ez a mi tal\u00e1lm\u00e1nyunk, ilyet sehol m\u00e1shol nem l\u00e1ttam. Figyeljen \u2013 ez egy nagyon egyszer\u0171 dolog \u2013 m\u00e1sodpercenk\u00e9nt. N\u00e9ha, amikor a CPU 100%-os, akkor f\u00e9l\u00f3r\u00e1t jelent m\u00e1sodpercenk\u00e9nt, azaz f\u00e9l \u00f3r\u00e1n kereszt\u00fcl csak ezek a lek\u00e9rdez\u00e9sek foglalt\u00e1k el az id\u0151t. <\/p>\n<p><\/p>\n<p>A k\u00f6vetkez\u0151 azaz a m\u00e1sodpercenk\u00e9nti sorok sz\u00e1ma. Tudjuk, hogy h\u00e1ny sort adtunk vissza m\u00e1sodpercenk\u00e9nt.<\/p>\n<p><\/p>\n<p>A k\u00f6vetkez\u0151 \u00e9rdekes dolog, hogy mennyi shared_buffers-t olvastunk m\u00e1sodpercenk\u00e9nt a shared_buffers-b\u00f3l. A tal\u00e1latok m\u00e1r ott voltak, a sorokat pedig a rendszer cache-b\u0151l vagy a lemezr\u0151l vett\u00fck. Az els\u0151 lehet\u0151s\u00e9g gyors, a m\u00e1sodik esetleg gyors, esetleg nem, a szitu\u00e1ci\u00f3t\u00f3l f\u00fcgg\u0151en. <\/p>\n<p><\/p>\n<p>A m\u00e1sodik diferenci\u00e1l\u00e1si m\u00f3dszer az, hogy a csoportban l\u00e9v\u0151 k\u00e9relmek sz\u00e1m\u00e1t osztjuk fel. A m\u00e1sodik oszlopban mindig lesz egy k\u00e9r\u00e9s osztva a k\u00e9r\u00e9shez. Azt\u00e1n \u00e9rdekes \u2013 h\u00e1ny milliszekundum volt ebben a k\u00e9r\u00e9sben. Tudjuk, hogy ez a k\u00e9r\u00e9s \u00e1tlagosan hogyan viselkedik. Minden k\u00e9r\u00e9shez 101 milliszekundumra volt sz\u00fcks\u00e9g. Ez a hagyom\u00e1nyos metrika, amelyre sz\u00fcks\u00e9g\u00fcnk van a meg\u00e9rt\u00e9shez.<\/p>\n<p><\/p>\n<p>H\u00e1ny sor \u00e1llt vissza \u00e1tlagosan minden k\u00e9r\u00e9sre. L\u00e1tjuk, hogy a csoport 8-at ad vissza. \u00c1tlagosan h\u00e1nyat vett \u00e9s olvasott a cache-b\u0151l. L\u00e1tjuk, hogy minden j\u00f3l cache-elt. Csak tal\u00e1latok az els\u0151 csoport sz\u00e1m\u00e1ra. <\/p>\n<p><\/p>\n<p>A sorok negyedik alkatr\u00e9sze \u2013 ez h\u00e1ny sz\u00e1zal\u00e9k az \u00f6sszes h\u00edv\u00e1sb\u00f3l. Van 1 000 000 h\u00edv\u00e1sunk. \u00c9s meg\u00e9rthetj\u00fck, hogy ez a csoport mekkora m\u00e9rt\u00e9kben j\u00e1rul hozz\u00e1. L\u00e1tjuk, hogy az els\u0151 csoport ebben az esetben kevesebb mint 0,01%-ot tesz ki. Teh\u00e1t annyira lass\u00fa, hogy nem l\u00e1tjuk az \u00f6sszk\u00e9pen. A m\u00e1sodik csoport \u2013 5%-ot a h\u00edv\u00e1sok k\u00f6z\u00f6tt. Teh\u00e1t az \u00f6sszes h\u00edv\u00e1s 5%-a a m\u00e1sodik csoport. <\/p>\n<p><\/p>\n<p>A total_time-mal is \u00e9rdekes. Az els\u0151 csoport k\u00e9rd\u00e9seire az id\u0151nk 14%-\u00e1t k\u00f6lt\u00f6tt\u00fck. A m\u00e1sodikra 11%-ot, \u00e9s \u00edgy tov\u00e1bb. <\/p>\n<p><\/p>\n<p>Nem fogok a r\u00e9szletekbe belemer\u00fclni, de ott vannak finoms\u00e1gok. Fent megjelen\u00edtj\u00fck a hib\u00e1t, mert amikor \u00f6sszehasonl\u00edtunk, a pillanatk\u00e9pek elmozdulhatnak, azaz n\u00e9h\u00e1ny k\u00e9r\u00e9s kieshet, \u00e9s a m\u00e1sodik m\u00e1r nem lehet jelen, \u00e9s n\u00e9h\u00e1ny \u00faj megjelenhet. \u00c9s ott kisz\u00e1m\u00edtjuk a hib\u00e1t. Ha 0-t l\u00e1tsz, az j\u00f3. Nincsenek hib\u00e1k. Ha a hiba sz\u00e1zal\u00e9ka 20% alatt van, az rendben van. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/327bbf167bc21d37a3e1597b52528e6d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Most visszat\u00e9r\u00fcnk a t\u00e9m\u00e1nkhoz. Meg kell alkotnunk a workload-ot. Fentr\u0151l lefel\u00e9 haladunk, am\u00edg el nem \u00e9rj\u00fck a 80%-ot vagy 90%-ot. \u00c1ltal\u00e1ban ez 10-20 csoport. \u00c9s f\u00e1jlokat k\u00e9sz\u00edt\u00fcnk a pgbench-hez. Ott a random-ot haszn\u00e1ljuk. N\u00e9ha ez sajnos nem siker\u00fcl. A Postgres 12-ben pedig t\u00f6bb lehet\u0151s\u00e9g lesz ennek a megk\u00f6zel\u00edt\u00e9snek a haszn\u00e1lat\u00e1ra. <\/p>\n<p><\/p>\n<p>\u00c9s \u00edgy 80-90%-ot el\u00e9r\u00fcnk a total_time-\u00e9rt\u00e9kekn\u00e9l. Mi j\u00f6n a \u201e@\u201d ut\u00e1n? N\u00e9zz\u00fck a h\u00edv\u00e1sokat, megn\u00e9zz\u00fck, h\u00e1ny sz\u00e1zal\u00e9kot mutatnak, \u00e9s meg\u00e9rtj\u00fck, hogy itt h\u00e1ny sz\u00e1zal\u00e9kot kellene el\u00e9rn\u00fcnk. Ebb\u0151l a sz\u00e1zal\u00e9kb\u00f3l felm\u00e9rhetj\u00fck, hogyan balansz\u00edrozzuk az egyes f\u00e1jlokat. Ezt k\u00f6vet\u0151en haszn\u00e1ljuk a pgbench-et, \u00e9s kezdj\u00fck el a munk\u00e1t. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/53edf787f49dcabb5e4731510839332d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Van m\u00e9g K001 \u00e9s K002 is. <\/p>\n<p><\/p>\n<p>A K001 egy nagy sorozat n\u00e9gy alkateg\u00f3ri\u00e1val, ami az eg\u00e9sz terhel\u00e9s\u00fcnket jellemzi. N\u00e9zz\u00fck a m\u00e1sodik oszlopot \u00e9s a m\u00e1sodik alkateg\u00f3ri\u00e1t. L\u00e1tjuk, hogy k\u00f6r\u00fclbel\u00fcl m\u00e1sf\u00e9l m\u00e1sodperc m\u00e1sodpercenk\u00e9nt, teh\u00e1t ha k\u00e9t magunk van, akkor az j\u00f3 lesz. K\u00f6r\u00fclbel\u00fcl 75%-os terhel\u00e9ssel fog m\u0171k\u00f6dni. Ha 10 magunk van, akkor teljesen nyugodtak lehet\u00fcnk. \u00cdgy \u00e9rt\u00e9kelhetj\u00fck a forr\u00e1sokat.<\/p>\n<p><\/p>\n<p>A K002-t a k\u00e9r\u00e9soszt\u00e1lyoknak h\u00edvom, teh\u00e1t SELECT, INSERT, UPDATE, DELETE. K\u00fcl\u00f6n a SELECT FOR UPDATE, mert az z\u00e1rolja. <\/p>\n<p><\/p>\n<p>Itt azt a k\u00f6vetkeztet\u00e9st vonhatjuk le, hogy a szok\u00e1sos SELECT h\u00edv\u00e1sok 82%-\u00e1t teszik ki az \u00f6sszes h\u00edv\u00e1snak, viszont a total_time alapj\u00e1n 74%-ot. Teh\u00e1t sokszor h\u00edvj\u00e1k \u0151ket, de kevesebb er\u0151forr\u00e1st haszn\u00e1lnak. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/0e0234e696ffe1c80f8b5acccc602dbd.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9s visszat\u00e9r\u00fcnk a k\u00e9rd\u00e9shez: \u201eHogyan v\u00e1lasszuk ki helyesen a shared_buffers-t?\u201d. Megfigyeltem, hogy a legt\u00f6bb benchmark arra az elk\u00e9pzel\u00e9sre \u00e9p\u00edt, hogy n\u00e9zz\u00fck meg, mekkora lesz a throughput, azaz a teljes\u00edtm\u00e9ny. Ez TPS-ben vagy QPS-ben van m\u00e9rve \u00e1ltal\u00e1ban.<\/p>\n<p><\/p>\n<p>Pr\u00f3b\u00e1lunk a lehet\u0151 legt\u00f6bb tranzakci\u00f3t kisajtolni az aut\u00f3b\u00f3l a finomhangol\u00e1si param\u00e9terek seg\u00edts\u00e9g\u00e9vel. Itt, a SELECT eset\u00e9n, \u00e9ppen 311 tranzakci\u00f3 m\u00e1sodpercenk\u00e9nt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/d5e73f2672d94bb92eed921ef3dfe0b7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>De senki sem j\u00e1r munk\u00e1ba \u00e9s haza aut\u00f3val teljes sebess\u00e9ggel. Ez butas\u00e1g. Ugyanez vonatkozik az adatb\u00e1zisokra is. Nem szabad maxim\u00e1lis sebess\u00e9ggel menni, \u00e9s senki sem teszi ezt. Senki sem \u00e9l olyan produkci\u00f3ban, ahol 100%-os a CPU. Persze lehet, hogy valaki m\u00e9gis, de az nem j\u00f3. <\/p>\n<p><\/p>\n<p>Az \u00f6tlet az, hogy \u00e1ltal\u00e1ban a lehet\u0151s\u00e9geink 20%-\u00e1n j\u00e1runk, \u00e9s lehet\u0151leg nem haladunk meg 50%-ot. Az els\u0151dleges c\u00e9lunk az, hogy optimaliz\u00e1ljuk a v\u00e1laszid\u0151t a felhaszn\u00e1l\u00f3ink sz\u00e1m\u00e1ra. Teh\u00e1t a kez\u00fcnket \u00fagy kell forgatnunk, hogy minim\u00e1lis latency legyen 20%-os sebess\u00e9gn\u00e9l, mondjuk. Ez az \u00f6tlet is r\u00e9sze az k\u00eds\u00e9rleteinknek.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/c32c2cfb76dce0ce6b50e929bbf914ac.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00d6sszegz\u00e9sk\u00e9nt a k\u00f6vetkez\u0151 aj\u00e1nl\u00e1sokat teszem: <\/p>\n<p><\/p>\n<ul>\n<li>Mindenk\u00e9ppen k\u00e9sz\u00edtsen Database Lab-ot.<\/li>\n<li>Ha lehet, k\u00e9sz\u00edtsen on-demand rendszert, hogy egy bizonyos id\u0151re beinduljon \u2013 j\u00e1tszanak vele \u00e9s azt\u00e1n dobj\u00e1k el. Ha felh\u0151i vannak, akkor ez mag\u00e1t\u00f3l \u00e9rtet\u0151d\u0151, teh\u00e1t legyen sok standing. <\/li>\n<li>Legyenek k\u00edv\u00e1ncsiak. Ha valami nem stimmel, tesztelj\u00e9k k\u00eds\u00e9rletekkel, hogyan m\u0171k\u00f6dik. A Nancy haszn\u00e1lhat\u00f3 az \u00f6nk\u00e9pz\u00e9sre, hogy ellen\u0151rizz\u00e9k, hogyan m\u0171k\u00f6dik az adatb\u00e1zis.<\/li>\n<li>C\u00e9lzottan minimaliz\u00e1lj\u00e1k a v\u00e1laszid\u0151t. <\/li>\n<li>Ne f\u00e9ljenek a Postgres forr\u00e1sait\u00f3l. Amikor a forr\u00e1sokkal dolgoznak, tudniuk kell angolul. Rengeteg megjegyz\u00e9s tal\u00e1lhat\u00f3 ott, minden el van magyar\u00e1zva. <\/li>\n<li>Rendszeresen ellen\u0151rizz\u00e9k az adatb\u00e1zis eg\u00e9szs\u00e9g\u00e9t, legal\u00e1bb h\u00e1romhavonta manu\u00e1lisan, vagy a Postgres-checkup seg\u00edts\u00e9g\u00e9vel. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/8d2ac05f44bd245b879799862ce9e233.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00e9rd\u00e9sek<\/p>\n<p><\/p>\n<p><em>Nagyon k\u00f6sz\u00f6n\u00f6m! Nagyon \u00e9rdekes dolog.<\/em> <\/p>\n<p><\/p>\n<p>K\u00e9t dolog.<\/p>\n<p><\/p>\n<p><em>Igen, k\u00e9t dolog. Csak nem teljesen \u00e9rtettem. Amikor a Nancyt haszn\u00e1ljuk, csak egy param\u00e9tert tudunk finom\u00edtani, vagy egy eg\u00e9sz csoportot?<\/em><\/p>\n<p><\/p>\n<p>Van delta-konfig param\u00e9ter\u00fcnk. Oda b\u00e1rmennyit be\u00e1ll\u00edthat egyszerre. De \u00e9rteni kell, hogy ha sok mindent megv\u00e1ltoztat, akkor rossz k\u00f6vetkeztet\u00e9seket vonhat le. <\/p>\n<p><\/p>\n<p><em>Igen. Mi\u00e9rt k\u00e9rdeztem? Mert neh\u00e9z k\u00eds\u00e9rletezni, amikor csak egy param\u00e9ter van. Finom\u00edtja, megn\u00e9zi, hogyan m\u0171k\u00f6dik. Be\u00e1ll\u00edtja. Azt\u00e1n j\u00f6n a k\u00f6vetkez\u0151.<\/em><\/p>\n<p><\/p>\n<p>Lehet egyszerre finom\u00edtani, de ez term\u00e9szetesen helyzett\u0151l f\u00fcgg. De jobb egy \u00f6tletet tesztelni. Tegnap jutott esz\u00fcnkbe egy \u00f6tlet. Nagyon hasonl\u00f3 helyzet\u00fcnk volt. K\u00e9t konfigur\u00e1ci\u00f3nk volt. Nem tudtuk, mi\u00e9rt van nagy k\u00fcl\u00f6nbs\u00e9g. \u00c9s felmer\u00fclt az \u00f6tlet, hogy dichot\u00f3mi\u00e1t kellene haszn\u00e1lni, hogy fokozatosan meg\u00e9rts\u00fck \u00e9s megtal\u00e1ljuk a k\u00fcl\u00f6nbs\u00e9get. Azonnal a param\u00e9terek fel\u00e9nek azonosnak kell lennie, azt\u00e1n a negyed\u00e9nek, \u00e9s \u00edgy tov\u00e1bb. Minden rugalmas.<\/p>\n<p><\/p>\n<p><em>Van m\u00e9g egy k\u00e9rd\u00e9sem. A projekt fiatal, fejl\u0151dik. K\u00e9szen \u00e1ll a dokument\u00e1ci\u00f3, van r\u00e9szletes le\u00edr\u00e1s?<\/em><\/p>\n<p><\/p>\n<p>Ott sz\u00e1nd\u00e9kosan tettem egy linket a param\u00e9terek le\u00edr\u00e1s\u00e1ra. Ez ott van. De sok minden m\u00e9g nincs k\u00e9sz. Keresem a hasonl\u00f3 gondolkod\u00e1s\u00fa embereket. \u00c9s tal\u00e1lkozom vel\u00fck, amikor el\u0151ad\u00e1sokat tartok. Ez nagyon klassz. Valaki m\u00e1r dolgozik velem, valaki seg\u00edtett \u00e9s valamit ott csin\u00e1lt. \u00c9s ha \u00e9rdekli ez a t\u00e9ma, adjon visszajelz\u00e9st \u2013 mi hi\u00e1nyzik. <\/p>\n<p><\/p>\n<p><em>Amint l\u00e9trehozzuk a laborat\u00f3riumot, lehet, hogy lesz visszajelz\u00e9s. Megl\u00e1tjuk. K\u00f6sz\u00f6n\u00f6m!<\/em><\/p>\n<p><\/p>\n<p><em>J\u00f3 napot! K\u00f6sz\u00f6n\u00f6m az el\u0151ad\u00e1st! L\u00e1ttam, hogy van t\u00e1mogat\u00e1s az Amazon sz\u00e1m\u00e1ra. Tervezik a GSP t\u00e1mogat\u00e1s\u00e1t?<\/em><\/p>\n<p><\/p>\n<p>J\u00f3 k\u00e9rd\u00e9s. Elkezdj\u00fck csin\u00e1lni. \u00c9s jelenleg le\u00e1ll\u00edtottuk, mert sp\u00f3rolni szeretn\u00e9nk. Azaz van t\u00e1mogat\u00e1s a localhost haszn\u00e1lat\u00e1val. Te magad is l\u00e9trehozhatsz egy p\u00e9ld\u00e1nyt, \u00e9s lok\u00e1lisan dolgozhatsz. K\u00fcl\u00f6nben \u00edgy csin\u00e1ljuk. A Getlabban \u00edgy csin\u00e1lom, ott GSP-n. De hogy ilyen orchestr\u00e1ci\u00f3t csin\u00e1ljunk, azt nem l\u00e1tjuk \u00e9rtelm\u00e9t, mert a Google-n\u00e9l nincsenek olcs\u00f3 spotok. Vannak ??? p\u00e9ld\u00e1nyok, de azokkorl\u00e1toz\u00e1sokkal j\u00e1rnak. El\u0151sz\u00f6r is, mindig csak 70%-os kedvezm\u00e9nnyel m\u0171k\u00f6dnek, \u00e9s ott nem lehet j\u00e1tszani az \u00e1rral. A spotokat 5-10%-kal emelj\u00fck meg, hogy cs\u00f6kkents\u00fck annak a val\u00f3sz\u00edn\u0171s\u00e9g\u00e9t, hogy t\u00e9ged lecipelnek. Azaz a spoton sp\u00f3rolsz, de b\u00e1rmikor elvehetik. Ha picit magasabb \u00e1ron dolgozol, mint a t\u00f6bbiek, akkor k\u00e9s\u0151bb meg\u00f6lnek. A Google-n\u00e9l teljesen m\u00e1s a specifik\u00e1ci\u00f3. \u00c9s van m\u00e9g egy nagyon rossz korl\u00e1toz\u00e1s \u2013 ezek csak 24 \u00f3r\u00e1ig \u00e9lnek. N\u00e9ha viszont 5 napig szeretn\u00e9nk k\u00eds\u00e9rletezni. De spoton ezt meg lehet csin\u00e1lni, a spotok n\u00e9ha h\u00f3napokig \u00e9letben maradnak. <\/p>\n<p><\/p>\n<p><em>J\u00f3 napot! K\u00f6sz\u00f6n\u00f6m az el\u0151ad\u00e1st! Megeml\u00edtetted a checkup-ot. Hogyan sz\u00e1molj\u00e1tok ki a stat_statements hib\u00e1kat?<\/em><\/p>\n<p><\/p>\n<p>Nagyon j\u00f3 k\u00e9rd\u00e9s. Nagyon r\u00e9szletesen tudom mutatni \u00e9s mes\u00e9lni. R\u00f6viden - megn\u00e9zz\u00fck, hogyan v\u00e1ltozott a lek\u00e9rdez\u00e9si csoportok \u00f6sszess\u00e9ge: mennyi hullott ki \u00e9s h\u00e1ny \u00faj jelent meg. Azt\u00e1n k\u00e9t metrik\u00e1t n\u00e9z\u00fcnk: total_time \u00e9s calls, ez\u00e9rt van ott k\u00e9t hiba. \u00c9s n\u00e9zz\u00fck, hogy milyen m\u00e9rt\u00e9kben j\u00e1rultak hozz\u00e1 a v\u00e1ltoz\u00f3 csoportok. K\u00e9t almetsz\u00e9s van: t\u00e1vozott \u00e9s \u00e9rkezett. N\u00e9zz\u00fck, hogy milyen a hozz\u00e1j\u00e1rul\u00e1suk a teljes k\u00e9pet tekintve. <\/p>\n<p><\/p>\n<p><em>De nem f\u00e9lsz, hogy az ott k\u00e9t-h\u00e1romszor meg fog fordulni a snapshotok k\u00f6z\u00f6tt?<\/em><\/p>\n<p><\/p>\n<p>Azaz \u00fajra regisztr\u00e1ltak, vagy mi?<\/p>\n<p><\/p>\n<p><em>P\u00e9ld\u00e1ul ez a lek\u00e9rdez\u00e9s egyszer m\u00e1r ki lett szor\u00edtva, azt\u00e1n \u00e9rkezett egy \u00fajabb, \u00e9s ism\u00e9t ki lett szor\u00edtva, azt\u00e1n m\u00e9g egyszer j\u00f6tt \u00e9s ism\u00e9t ki lett szor\u00edtva. \u00c9s te itt valamit sz\u00e1molt\u00e1l, \u00e9s hol van ez az eg\u00e9sz?<\/em><\/p>\n<p><\/p>\n<p>J\u00f3 k\u00e9rd\u00e9s, ezeket meg kell n\u00e9zni. <\/p>\n<p><\/p>\n<p><em>\u00c9n hasonl\u00f3 dolgot csin\u00e1ltam. Persze, egyszer\u0171bben, egyed\u00fcl csin\u00e1ltam. De le kellett \u00e1ll\u00edtanom, reset stat_statements-t kellett csin\u00e1lnom, \u00e9s a snapshot pillanat\u00e1ban arra orient\u00e1l\u00f3dtam, hogy ott kevesebb mint egy bizonyos ar\u00e1ny van, hogy nem \u00e9rte el a maxim\u00e1lis stat_statements m\u00e9rt\u00e9ket, ami felhalmoz\u00f3dhatott. Azt gondolom, hogy val\u00f3sz\u00edn\u0171leg nem szorult ki semmi.<\/em> <\/p>\n<p><\/p>\n<p>Igen-igen. <\/p>\n<p><\/p>\n<p><em>De hogyan lehetne m\u00e1shogy megb\u00edzhat\u00f3an csin\u00e1lni, azt nem \u00e9rtem.<\/em><\/p>\n<p><\/p>\n<p>Sajnos nem eml\u00e9kszem pontosan \u2013 haszn\u00e1lunk-e ott lek\u00e9rdez\u00e9s sz\u00f6veget vagy queryid-t a pg_stat_statements-b\u0151l, \u00e9s arra orient\u00e1l\u00f3dunk. Ha a queryid-re orient\u00e1l\u00f3dunk, akkor elvileg \u00f6sszehasonl\u00edthat\u00f3 dolgokat hasonl\u00edtunk. <\/p>\n<p><\/p>\n<p><em>Nem, hiszen t\u00f6bbsz\u00f6r is kiszorulhat a pillanatk\u00e9pek k\u00f6z\u00f6tt, \u00e9s \u00fajra meg\u00e9rkezhet.<\/em><\/p>\n<p><\/p>\n<p>Ugyanazzal az azonos\u00edt\u00f3val?<\/p>\n<p><\/p>\n<p><em>Igen.<\/em> <\/p>\n<p><\/p>\n<p>Ezt meg fogjuk vizsg\u00e1lni. J\u00f3 k\u00e9rd\u00e9s. Meg kell n\u00e9zni. De jelenleg az, amit l\u00e1tunk, vagy 0-j\u00e1t \u00edrja...<\/p>\n<p><\/p>\n<p><em>Ez persze ritka eset, de meglepett, amikor megtudtam, hogy a stat_statements ott kiszor\u00edthatja.<\/em> <\/p>\n<p><\/p>\n<p>A Pg_stat_statements-ben sok minden lehet. Tal\u00e1lkoztunk azzal, hogy ha a track_utility = on, akkor a k\u00e9szletek is nyomon k\u00f6vet\u00e9sre ker\u00fclnek. <\/p>\n<p><\/p>\n<p><em>Igen, term\u00e9szetesen.<\/em><\/p>\n<p><\/p>\n<p>\u00c9s ha van egy v\u00e9letlenszer\u0171 Java Hibernate-ed, akkor ott kezd el z\u00e1rol\u00f3dni a hash-t\u00e1bla. \u00c9s amint kikapcsolod a nagyon terhelt alkalmaz\u00e1st, 50-100 csoportod lesz. \u00c9s ott viszonylag minden stabil. Az egyik m\u00f3dja ennek a probl\u00e9m\u00e1nak a kezel\u00e9s\u00e9re az, hogy n\u00f6velj\u00fck a pg_stat_statements.max \u00e9rt\u00e9k\u00e9t. <\/p>\n<p><\/p>\n<p><em>Igen, de tudni kell, hogy mennyire. \u00c9s valahogy figyelemmel kell k\u00eds\u00e9rni. \u00c9n is \u00edgy csin\u00e1lom. Azaz van egy pg_stat_statements.max-om. \u00c9s n\u00e9zem, hogy az aktu\u00e1lis pillanatk\u00e9p id\u0151pontj\u00e1ban nem \u00e9rem el a 70%-ot. Rendben, azt jelenti, hogy semmit sem vesz\u00edtett\u00fcnk. Resetelj\u00fck. \u00c9s \u00fajra gy\u0171jtj\u00fck. Ha a k\u00f6vetkez\u0151 pillanatk\u00e9pn\u00e9l 70% alatt van, akkor val\u00f3sz\u00edn\u0171leg \u00fajra semmit sem vesz\u00edtett\u00fcnk.<\/em><\/p>\n<p><\/p>\n<p>Igen. Alap\u00e9rtelmez\u00e9s szerint most 5000. \u00c9s nagyon sokaknak ez el\u00e9g. <\/p>\n<p><\/p>\n<p><em>\u00c1ltal\u00e1ban - igen.<\/em> <\/p>\n<p><\/p>\n<p>Vide\u00f3:<\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"yvO1jjG-tDI\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/yvO1jjG-tDI\/hqdefault.jpg\" alt=\"Vide\u00f3 lej\u00e1tsz\u00e1sa\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>P.S. Hozz\u00e1tenn\u00e9m, hogy ha a Postgres-ben \u00e9rz\u00e9keny adatok tal\u00e1lhat\u00f3k, amelyek nem ker\u00fclhetnek tesztk\u00f6rnyezetbe, akkor \u00e9rdemes haszn\u00e1lni <noindex><a rel=\"nofollow\" href=\"https:\/\/labs.dalibo.com\/postgresql_anonymizer\">PostgreSQL Anonymizer<\/a><\/noindex>. A s\u00e9ma nagyj\u00e1b\u00f3l \u00edgy n\u00e9z ki:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon&quot;. Nikolaj Szamohvalov\" src=\"\/wp-content\/uploads\/2020\/04\/cf9a2052364e09a20e68d2347dd0c25b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/498060\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u041d\u0438\u043a\u043e\u043b\u0430\u044f \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432\u0430 &quot;\u041f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0442\u044e\u043d\u0438\u043d\u0433\u0443 PostgreSQL: \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0434 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445&quot; Shared_buffers = 25% \u2013 \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u043c\u0430\u043b\u043e? \u0418\u043b\u0438 \u0432 \u0441\u0430\u043c\u044b\u0439 \u0440\u0430\u0437? \u041a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u044c, \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043b\u0438 \u044d\u0442\u0430 \u2013 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0430\u044f \u2013 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435? \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u043e\u0439\u0442\u0438 \u043a \u0432\u043e\u043f\u0440\u043e\u0441\u0443 \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 postgresql.conf &quot;\u043f\u043e-\u0432\u0437\u0440\u043e\u0441\u043b\u043e\u043c\u0443&quot;. \u041d\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0435\u043f\u044b\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":78743,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-78742","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u041d\u0438\u043a\u043e\u043b\u0430\u044f \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432\u0430 &quot;\u041f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0442\u044e\u043d\u0438\u043d\u0433\u0443 PostgreSQL: \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0434 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445&quot; Shared_buffers = 25% \u2013 \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u043c\u0430\u043b\u043e?\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/promyshlennyj-podhod-k-tyuningu-postgresql-eksperimenty-nad-bazami-dannyh-nikolaj-samohvalov\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0442\u044e\u043d\u0438\u043d\u0433\u0443 PostgreSQL: \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0434 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445\u00bb. \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u041d\u0438\u043a\u043e\u043b\u0430\u044f \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432\u0430 &quot;\u041f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0442\u044e\u043d\u0438\u043d\u0433\u0443 PostgreSQL: \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0434 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445&quot; Shared_buffers = 25% \u2013 \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u043c\u0430\u043b\u043e?\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/promyshlennyj-podhod-k-tyuningu-postgresql-eksperimenty-nad-bazami-dannyh-nikolaj-samohvalov\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-04-21T17:42:46+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-21T17:42:46+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon\u00bb. Nikolaj Szamohvalov | ProHoster","description":"Javaslom, hogy ismerkedjen meg Nikolaj Szamohvalov el\u0151ad\u00e1s\u00e1nak r\u00e9szletez\u00e9s\u00e9vel \"Ipari megk\u00f6zel\u00edt\u00e9s a PostgreSQL finomhangol\u00e1s\u00e1hoz: k\u00eds\u00e9rletek adatb\u00e1zisokon\" Shared_buffers = 25% \u2013 ez sok vagy kev\u00e9s?","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/promyshlennyj-podhod-k-tyuningu-postgresql-eksperimenty-nad-bazami-dannyh-nikolaj-samohvalov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0442\u044e\u043d\u0438\u043d\u0433\u0443 PostgreSQL: \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0434 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445\u00bb. \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432 | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u041d\u0438\u043a\u043e\u043b\u0430\u044f \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432\u0430 &quot;\u041f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0442\u044e\u043d\u0438\u043d\u0433\u0443 PostgreSQL: \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0434 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445&quot; Shared_buffers = 25% \u2013 \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u043c\u0430\u043b\u043e?","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/promyshlennyj-podhod-k-tyuningu-postgresql-eksperimenty-nad-bazami-dannyh-nikolaj-samohvalov","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-04-21T17:42:46+00:00","article:modified_time":"2020-04-21T17:42:46+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"78742","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:51:38","updated":"2022-09-28 02:51:26","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/78742","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=78742"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/78742\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/78743"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=78742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=78742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=78742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}