[{"data":1,"prerenderedAt":272},["ShallowReactive",2],{"term-c\u002Fconnection-pool":3,"related-c\u002Fconnection-pool":255},{"id":4,"title":5,"acronym":6,"body":7,"category":237,"description":238,"difficulty":239,"extension":240,"letter":241,"meta":242,"navigation":173,"path":243,"related":244,"seo":249,"sitemap":250,"stem":253,"subcategory":6,"__hash__":254},"terms\u002Fterms\u002Fc\u002Fconnection-pool.md","Connection Pool",null,{"type":8,"value":9,"toc":231},"minimark",[10,15,19,23,26,30,220,224,227],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"A connection pool pre-opens a bunch of database connections and reuses them instead of opening a new one for every request. Opening a connection takes time — like 50-100ms. The pool keeps them warm and ready. It's like having a fleet of taxis waiting instead of calling one every time.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"A connection pool maintains a cache of reusable database connections to minimize the overhead of creating and destroying connections. Pool configurations include minimum\u002Fmaximum connections, idle timeout, and connection lifetime. The pool manager handles connection checkout, return, validation, and eviction. Critical for performance in high-concurrency applications. Implemented by pg-pool, HikariCP, SQLAlchemy pool, and PgBouncer.",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const pool = new Pool({\n  host: 'localhost',\n  database: 'myapp',\n  max: 20,        \u002F\u002F Max connections\n  min: 5,         \u002F\u002F Min idle connections\n  idleTimeoutMillis: 30000\n});\n\nconst result = await pool.query('SELECT * FROM users WHERE id = $1', [1]);\n","javascript","",[38,39,40,70,93,110,129,145,156,168,175],"code",{"__ignoreMap":36},[41,42,45,49,53,57,60,64,67],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"spNyl","const",[41,50,52],{"class":51},"sTEyZ"," pool ",[41,54,56],{"class":55},"sMK4o","=",[41,58,59],{"class":55}," new",[41,61,63],{"class":62},"s2Zo4"," Pool",[41,65,66],{"class":51},"(",[41,68,69],{"class":55},"{\n",[41,71,73,77,80,83,87,90],{"class":43,"line":72},2,[41,74,76],{"class":75},"swJcz","  host",[41,78,79],{"class":55},":",[41,81,82],{"class":55}," '",[41,84,86],{"class":85},"sfazB","localhost",[41,88,89],{"class":55},"'",[41,91,92],{"class":55},",\n",[41,94,96,99,101,103,106,108],{"class":43,"line":95},3,[41,97,98],{"class":75},"  database",[41,100,79],{"class":55},[41,102,82],{"class":55},[41,104,105],{"class":85},"myapp",[41,107,89],{"class":55},[41,109,92],{"class":55},[41,111,113,116,118,122,125],{"class":43,"line":112},4,[41,114,115],{"class":75},"  max",[41,117,79],{"class":55},[41,119,121],{"class":120},"sbssI"," 20",[41,123,124],{"class":55},",",[41,126,128],{"class":127},"sHwdD","        \u002F\u002F Max connections\n",[41,130,132,135,137,140,142],{"class":43,"line":131},5,[41,133,134],{"class":75},"  min",[41,136,79],{"class":55},[41,138,139],{"class":120}," 5",[41,141,124],{"class":55},[41,143,144],{"class":127},"         \u002F\u002F Min idle connections\n",[41,146,148,151,153],{"class":43,"line":147},6,[41,149,150],{"class":75},"  idleTimeoutMillis",[41,152,79],{"class":55},[41,154,155],{"class":120}," 30000\n",[41,157,159,162,165],{"class":43,"line":158},7,[41,160,161],{"class":55},"}",[41,163,164],{"class":51},")",[41,166,167],{"class":55},";\n",[41,169,171],{"class":43,"line":170},8,[41,172,174],{"emptyLinePlaceholder":173},true,"\n",[41,176,178,180,183,185,189,192,195,198,200,202,205,207,209,212,215,218],{"class":43,"line":177},9,[41,179,48],{"class":47},[41,181,182],{"class":51}," result ",[41,184,56],{"class":55},[41,186,188],{"class":187},"s7zQu"," await",[41,190,191],{"class":51}," pool",[41,193,194],{"class":55},".",[41,196,197],{"class":62},"query",[41,199,66],{"class":51},[41,201,89],{"class":55},[41,203,204],{"class":85},"SELECT * FROM users WHERE id = $1",[41,206,89],{"class":55},[41,208,124],{"class":55},[41,210,211],{"class":51}," [",[41,213,214],{"class":120},"1",[41,216,217],{"class":51},"])",[41,219,167],{"class":55},[11,221,223],{"id":222},"when-youll-hear-this","When You'll Hear This",[16,225,226],{},"\"Set the pool max to 20 connections — our Postgres can handle 100 total.\" \u002F \"The API was slow because every request opened a new database connection instead of using the pool.\"",[228,229,230],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":72,"depth":72,"links":232},[233,234,235,236],{"id":13,"depth":72,"text":14},{"id":21,"depth":72,"text":22},{"id":28,"depth":72,"text":29},{"id":222,"depth":72,"text":223},"backend","A connection pool pre-opens a bunch of database connections and reuses them instead of opening a new one for every request.","intermediate","md","c",{},"\u002Fterms\u002Fc\u002Fconnection-pool",[245,246,247,248],"Database","PgBouncer","Latency","Concurrency",{"title":5,"description":238},{"changefreq":251,"priority":252},"weekly",0.7,"terms\u002Fc\u002Fconnection-pool","qevkDFrjfs3phGi2HfysBoRW0GGHr9hyLljlovlq_vk",[256,260,265,269],{"title":248,"path":257,"acronym":6,"category":258,"difficulty":239,"description":259},"\u002Fterms\u002Fc\u002Fconcurrency","general","Concurrency is juggling multiple tasks at once — not necessarily at the exact same instant, but switching between them fast enough that they all seem to be...",{"title":245,"path":261,"acronym":6,"category":262,"difficulty":263,"description":264},"\u002Fterms\u002Fd\u002Fdatabase","database","beginner","A database is like a super-organized filing cabinet for your app's data.",{"title":247,"path":266,"acronym":6,"category":267,"difficulty":263,"description":268},"\u002Fterms\u002Fl\u002Flatency","networking","Latency is the delay before data starts moving — the time it takes for a request to go from your device to the server and back.",{"title":246,"path":270,"acronym":6,"category":262,"difficulty":239,"description":271},"\u002Fterms\u002Fp\u002Fpgbouncer","PgBouncer is a lightweight connection pooler that sits in front of PostgreSQL and recycles database connections like a good environmentalist.",1776518268635]