Skip to content
VDS · డేటాబేస్‌లు

మీ టియర్ కోసం డేటాబేస్ మెమరీ కాన్ఫిగరేషన్

VDS-1…VDS-6 కోసం PostgreSQL మరియు MySQL కోసం నిర్దిష్ట బఫర్ విలువలు, మరియు డేటాబేస్, అప్లికేషన్, మరియు సిస్టమ్ మధ్య మెమరీని పంపిణీ చేసే నియమం.

23 ఆగస్టు, 2026న నవీకరించబడింది

డిఫాల్ట్ డేటాబేస్ సెట్టింగ్‌లు ఎక్కడైనా ప్రారంభం కావడానికి రూపొందించబడ్డాయి, వేగంగా నడవడానికి కాదు. 8 GB మెమరీ ఉన్న VDS-3లో, PostgreSQL డిఫాల్ట్‌గా క్యాష్ కోసం 128 MB ఉపయోగిస్తుంది — అంటే మెమరీ నుండి చదవగలిగినా, దాదాపు ప్రతిదీ డిస్క్ నుండే చదువుతుంది.

కేటాయింపు నియమం

టియర్ మెమరీని సుమారుగా ఇలా విభజించండి:

  • సిస్టమ్ మరియు సర్వీస్ ప్రాసెస్‌లు — 10–15%;
  • అప్లికేషన్ (PHP-FPM, Node, gunicorn) — వర్కర్ల సంఖ్య ప్రకారం;
  • డేటాబేస్ — మిగిలినది, కానీ మొత్తం మెమరీలో 60–70% కంటే ఎక్కువ కాదు.

డేటాబేస్‌కు ఎప్పుడూ మొత్తం మెమరీ ఇవ్వకండి: సిస్టమ్ స్వాప్‌లోకి వెళ్తుంది, NVMe సహాయపడదు — లేటెన్సీ పదుల రెట్లు పెరుగుతుంది.

ప్రస్తుతం ఎంత వాడుకలో ఉంది:

free -h
ps -eo pmem,rss,comm --sort=-rss | head

ఒక గంట, ఒక రోజు, ఒక వారం మరియు ఒక నెల మెమరీ గ్రాఫ్‌లు ప్యానెల్ /hosting/vds/m/<id> లోని "Overview"లో అందుబాటులో ఉన్నాయి — అవి ప్రస్తుత క్షణాన్ని కాదు, నిజమైన పీక్‌ను చూపుతాయి.

PostgreSQL

/etc/postgresql/17/main/postgresql.conf:

టియర్shared_bufferseffective_cache_sizework_memmaintenance_work_memmax_connections
VDS-1 (2 GB)384MB1GB8MB96MB40
VDS-2 (4 GB)1GB2GB12MB256MB60
VDS-3 (8 GB)2GB5GB16MB512MB100
VDS-4 (16 GB)4GB10GB24MB1GB150
VDS-5 (24 GB)6GB16GB32MB2GB200
VDS-6 (32 GB)8GB22GB48MB2GB250

దీనికి తోడు సాధారణ NVMe సెట్టింగ్‌లు:

random_page_cost = 1.1
effective_io_concurrency = 200

work_mem ప్రతి కనెక్షన్‌కు కాదు, ప్రతి సార్ట్ ఆపరేషన్‌కు కేటాయించబడుతుంది: సంక్లిష్ట సార్టింగ్‌తో వంద సమాంతర క్వెరీలు దాన్ని వందల రెట్లు గుణిస్తాయి. దీన్ని చాలా ఎక్కువగా సెట్ చేయకండి.

వర్తింపజేయడం: systemctl restart postgresql (shared_buffers మార్చడానికి ప్రత్యేకంగా రీస్టార్ట్ అవసరం).

MySQL మరియు MariaDB

టియర్innodb_buffer_pool_sizeinnodb_log_file_sizemax_connections
VDS-1512M128M60
VDS-21G256M100
VDS-33G512M150
VDS-48G1G200
VDS-512G1G250
VDS-618G2G300
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 1
innodb_io_capacity = 2000

బఫర్ పూల్ ప్రధాన పారామీటర్: అది పని చేసే డేటా సెట్‌కు సరిపోతే, డిస్క్ దాదాపు చదవబడదు.

ప్రభావాన్ని తనిఖీ చేయడం

SELECT sum(blks_hit)*100/sum(blks_hit+blks_read) FROM pg_stat_database;

MySQL కోసం, SHOW ENGINE INNODB STATUS మరియు Innodb_buffer_pool_reads నుండి Innodb_buffer_pool_read_requests నిష్పత్తిని చూడండి. 95% కంటే తక్కువ క్యాష్ హిట్ రేట్ అంటే డేటాబేస్‌కు సరిపడా మెమరీ లేదు.

సాధారణ తప్పులు

లక్షణంకారణం
మార్పు తర్వాత డేటాబేస్ ప్రారంభం కావడం లేదుఅందుబాటులో ఉన్న దానికంటే ఎక్కువ మెమరీ అభ్యర్థించారు — జర్నల్‌ని తనిఖీ చేయండి
ప్రాసెస్ OOM చేత చంపబడిందిడేటాబేస్, అప్లికేషన్ మరియు సిస్టమ్ కలిసి టియర్ మెమరీని మించిపోయాయి
"ఆప్టిమైజేషన్" తర్వాత నెమ్మదిగా అయిందిwork_mem చాలా ఎక్కువగా సెట్ చేయబడింది, మెషిన్ స్వాప్ చేస్తోంది
డిస్క్ నిరంతరం చదవబడుతోందిబఫర్‌లు చాలా చిన్నవి, పని చేసే సెట్ సరిపోవడం లేదు

మెమరీని ట్యూన్ చేసిన తర్వాత కూడా మీరు ఇంకా గోడను తాకుతుంటే, సమస్య కాన్ఫిగ్ కాదు, డేటా పరిమాణం. మీరు మీ ప్లాన్‌ని మాత్రమే అప్‌గ్రేడ్ చేయగలరు, చెల్లించిన కాలానికి మిగిలిన రోజులకు ప్రోరేటెడ్ చెల్లింపుతో; డౌన్‌గ్రేడ్‌లు అందుబాటులో లేవు, కాబట్టి తదుపరి టియర్‌ని ఆలోచనపూర్వకంగా ఎంచుకోండి.