{"id":1979,"date":"2017-10-14T12:27:16","date_gmt":"2017-10-14T09:27:16","guid":{"rendered":"http:\/\/www.profelis.com.tr\/tr\/blog\/?p=1979"},"modified":"2023-02-01T10:58:00","modified_gmt":"2023-02-01T07:58:00","slug":"postgresql-performans-max-connections","status":"publish","type":"post","link":"https:\/\/profelis.com.tr\/en\/2017\/10\/14\/postgresql-performans-max-connections\/","title":{"rendered":"PostgreSQL Performans: max_connections"},"content":{"rendered":"<h2>ostgreSQL Performans: max_connections<\/h2>\n<p><strong>max_connections<\/strong>\u00a0PostgreSQL performans ayarlar\u0131nda \u00f6nemli bir yere sahiptir. Her a\u00e7\u0131lan ba\u011flant\u0131n\u0131n, kapat\u0131l\u0131p yeniden a\u00e7\u0131lmas\u0131 esnas\u0131nda bir yo\u011funluk ve kaynak t\u00fcketimi olu\u015fmaktad\u0131r. Dolay\u0131s\u0131 ile g\u00fc\u00e7l\u00fc donan\u0131mlar \u00fczerinde bu de\u011fer y\u00fczlerce olarak ifade edilebilir ancak ihtiyac\u0131n\u0131n daha fazlas\u0131 ise, \u00f6rne\u011fin binlerce ba\u011flant\u0131 ihtiyac\u0131n\u0131z olacaksa bu de\u011ferle oynamak yerine ba\u011flant\u0131 havuzlama y\u00f6ntemlerinden birisi kullan\u0131labilir.<\/p>\n<p>Ba\u011flant\u0131 Havuzu olarak \u00e7evirebilece\u011fimiz y\u00f6ntem ile en y\u00fcksek ba\u011flant\u0131 say\u0131s\u0131 olan <strong>max_connections<\/strong> de\u011fi\u015fkeninin de\u011feri ile oynamadan PostgreSQL performans\u0131n\u0131 art\u0131rmak m\u00fcmk\u00fcn olabilir. max_connections ayar\u0131n\u0131n varsay\u0131lan de\u011feri 100&#8217;d\u00fcr. Bu de\u011ferin azalt\u0131lmas\u0131 <strong>work_mem<\/strong> de\u011ferinin art\u0131r\u0131labilmesini sa\u011flar. Ancak kullan\u0131m yo\u011funlu\u011funa g\u00f6re max_connections de\u011ferini azaltam\u0131yorsan\u0131z o zaman bir ba\u011flant\u0131 havuzu sistemi kullanarak ba\u011flant\u0131lar\u0131n kapat\u0131l\u0131p a\u00e7\u0131lmas\u0131 aras\u0131nda kaybedilen zamandan tasarruf etmek ve performans\u0131 art\u0131rmak m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<h2>Pgbouncer<\/h2>\n<p><a href=\"https:\/\/pgbouncer.github.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/pgbouncer.github.io\/<\/a><\/p>\n<p>Pgbouncer az kaynak t\u00fcketen bit ba\u011flant\u0131 havuzu (connection pooling) mekanizmas\u0131d\u0131r. 3 farkl\u0131 \u015fekilde \u00e7al\u0131\u015fabilir:<br \/>\n<strong>Session pooling<\/strong><br \/>\nEn standart \u00e7al\u0131\u015fma \u015feklidir. \u0130stemci ba\u011fland\u0131\u011f\u0131 zaman havuzdan bir ba\u011flant\u0131 istemciye sunulur, ba\u011fl\u0131 kald\u0131\u011f\u0131 s\u00fcre boyunca ayn\u0131 ba\u011flant\u0131 kullan\u0131larak sorgular\u0131 i\u015fletilir. \u0130stemci ba\u011flant\u0131y\u0131 kesti\u011fi zaman ayn\u0131 ba\u011flant\u0131 ucu tekrar havuza at\u0131l\u0131r ve ba\u015fka bir istemcinin ihtiyac\u0131 olana kadar s\u0131ras\u0131n\u0131 beklemeye ba\u015flar.<br \/>\n<strong>Transaction pooling<\/strong><br \/>\nSadece transaction esnas\u0131nda devreye girer ve istemciye bir ba\u011flant\u0131 verir. T\u00fcm transaction boyunca istemcinin ayn\u0131 baa\u011flant\u0131y\u0131 kullanmas\u0131 sa\u011flan\u0131r.<br \/>\n<strong>Statement pooling<\/strong><br \/>\nEn agresif kullan\u0131m metodudur. Transaction metoduna benzer ancak multi-statement sorgular dessteklenmez. Yani transaction s\u00f6z konusu oldu\u011funda \u201cautocommit\u201d modu devreye girer, daha \u00e7ok PL\/Proxy i\u00e7in kullan\u0131l\u0131r.<\/p>\n<ul>\n<li>Az bellek ihtiyac\u0131 vard\u0131r (2kb ba\u011flant\u0131 ba\u015f\u0131na).<\/li>\n<li>Hedef veritaban\u0131 sunucular\u0131 farkl\u0131 hostlar \u00fczerinde olabilir.<\/li>\n<li>\u00c7al\u0131\u015fmakta iken ayar de\u011fi\u015fikliklerine izin verir.<\/li>\n<li>Mevcut ba\u011flant\u0131lar\u0131 d\u00fc\u015f\u00fcrmeden yeniden ba\u015flatma, yeniden y\u00fckleme i\u015flemlerine izin verir.<\/li>\n<\/ul>\n<h2>Pgpool-II<\/h2>\n<p><a href=\"http:\/\/www.pgpool.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.pgpool.net\/<\/a><\/p>\n<p>pgpool-II, PostgreSQL sunucu ve istemci aras\u0131nda \u00e7al\u0131\u015fan bir orta katman (middleware) servisidir. Pgpool, gelen SELECT sorgular\u0131n\u0131 farkl\u0131 sunucuya y\u00f6nlendirmek \u015feklinde\u00a0 y\u00fck dengeleme yapabildi\u011fi gibi, replikasyon ve ba\u011flant\u0131 havuzlama (connection pooling) de yapabilir. Pgpool istemcinin \u00f6zelliklerine g\u00f6re, &#8211; kullan\u0131c\u0131 ad\u0131, veritaban\u0131, protokol &#8211; ba\u011flant\u0131lar\u0131 havuzdan kulland\u0131r\u0131r.<\/p>\n<p>Pgpool ayn\u0131 zamanda ba\u011flant\u0131 limitleme i\u00e7in de kullan\u0131labilir. max_connections de\u011ferinde belirlenenden farkl\u0131 olarak en fazla ba\u011flant\u0131 say\u0131s\u0131 de\u011ferini a\u015fan geri kalan ba\u011flant\u0131 istekleri reddedilmek yerine kuyru\u011fa al\u0131nabilmektedir.<\/p>","protected":false},"excerpt":{"rendered":"<p>max_connections\u00a0PostgreSQL performans ayarlar\u0131nda \u00f6nemli bir yere sahiptir. Her a\u00e7\u0131lan ba\u011flant\u0131n\u0131n, kapat\u0131l\u0131p yeniden a\u00e7\u0131lmas\u0131 esnas\u0131nda bir yo\u011funluk ve kaynak t\u00fcketimi olu\u015fmaktad\u0131r. Dolay\u0131s\u0131 ile g\u00fc\u00e7l\u00fc donan\u0131mlar \u00fczerinde bu de\u011fer y\u00fczlerce olarak ifade edilebilir ancak ihtiyac\u0131n\u0131n daha fazlas\u0131 ise, \u00f6rne\u011fin binlerce ba\u011flant\u0131 ihtiyac\u0131n\u0131z olacaksa bu de\u011ferle oynamak yerine ba\u011flant\u0131 havuzlama y\u00f6ntemlerinden birisi kullan\u0131labilir.<\/p>","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[75,45],"tags":[48,60],"class_list":["post-1979","post","type-post","status-publish","format-standard","hentry","category-postgresql","category-yazi","tag-enterprisedb","tag-postgresql"],"_links":{"self":[{"href":"https:\/\/profelis.com.tr\/en\/wp-json\/wp\/v2\/posts\/1979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/profelis.com.tr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/profelis.com.tr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/profelis.com.tr\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/profelis.com.tr\/en\/wp-json\/wp\/v2\/comments?post=1979"}],"version-history":[{"count":0,"href":"https:\/\/profelis.com.tr\/en\/wp-json\/wp\/v2\/posts\/1979\/revisions"}],"wp:attachment":[{"href":"https:\/\/profelis.com.tr\/en\/wp-json\/wp\/v2\/media?parent=1979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/profelis.com.tr\/en\/wp-json\/wp\/v2\/categories?post=1979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/profelis.com.tr\/en\/wp-json\/wp\/v2\/tags?post=1979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}