నా అభిప్రాయం ప్రకారం, మునుపటి విడుదలల వలె కాకుండా, PostgreSQL 12 ఒకటి లేదా రెండు విప్లవాత్మక లక్షణాలను కలిగి ఉండదు (విభజన లేదా క్వెరీ సమాంతరత వంటివి). PostgreSQL 12 యొక్క ప్రధాన లక్షణం ఎక్కువ స్థిరత్వం అని నేను ఒకసారి జోక్ చేసాను. మీరు మీ వ్యాపారం యొక్క క్లిష్టమైన డేటాను నిర్వహించినప్పుడు మీకు ఇది అవసరం కాదా?
కానీ PostgreSQL 12 అక్కడ ఆగదు: కొత్త ఫీచర్లు మరియు మెరుగుదలలతో, అప్లికేషన్లు మెరుగ్గా పని చేస్తాయి, మరియు మీరు చేయాల్సిందల్లా అప్గ్రేడ్ చేయడం!
(సరే, ఇండెక్స్లను పునర్నిర్మించవచ్చు, కానీ ఈ విడుదలలో ఇది మనం ఉపయోగించినంత భయానకంగా లేదు.)
PostgreSQLని అప్గ్రేడ్ చేయడం మరియు అనవసరమైన గందరగోళం లేకుండా వెంటనే గణనీయమైన మెరుగుదలలను ఆస్వాదించడం చాలా బాగుంది. కొన్ని సంవత్సరాల క్రితం, నేను PostgreSQL 9.4 నుండి PostgreSQL 10కి అప్గ్రేడ్ని సమీక్షించాను మరియు PostgreSQL 10లోని మెరుగైన ప్రశ్న సమాంతరత కారణంగా అప్లికేషన్ ఎలా వేగవంతం అయిందో చూశాను. మరియు, ముఖ్యంగా, నా నుండి దాదాపు ఏమీ అవసరం లేదు (కేవలం కాన్ఫిగరేషన్ పరామితిని సెట్ చేయండి max_parallel_workers
).
అంగీకరిస్తున్నారు, అప్గ్రేడ్ చేసిన వెంటనే అప్లికేషన్లు మెరుగ్గా పనిచేసినప్పుడు ఇది సౌకర్యవంతంగా ఉంటుంది. మరియు మేము వినియోగదారులను సంతోషపెట్టడానికి చాలా కష్టపడతాము, ఎందుకంటే PostgreSQL వాటిని మరింత ఎక్కువగా కలిగి ఉంది.
కాబట్టి PostgreSQL 12కి ఒక సాధారణ అప్గ్రేడ్ మిమ్మల్ని ఎలా సంతోషపరుస్తుంది? నేను ఇప్పుడు చెబుతాను.
ప్రధాన ఇండెక్సింగ్ మెరుగుదలలు
ఇండెక్సింగ్ లేకుండా, డేటాబేస్ చాలా దూరం వెళ్లదు. మీరు త్వరగా సమాచారాన్ని ఎలా కనుగొనగలరు? PostgreSQL యొక్క ఫండమెంటల్ ఇండెక్సింగ్ సిస్టమ్ అంటారు
మేము కేవలం ఆపరేటర్ని ఉపయోగిస్తాము CREATE INDEX ON some_table (some_column)
, మరియు మేము నిరంతరం విలువలను చొప్పించేటప్పుడు, నవీకరించేటప్పుడు మరియు తొలగించేటప్పుడు సూచికను తాజాగా ఉంచడానికి PostgreSQL చాలా పని చేస్తుంది. మాయాజాలం వలె ప్రతిదీ దాని స్వంతదానిపై పనిచేస్తుంది.
కానీ PostgreSQL సూచికలకు ఒక సమస్య ఉంది - అవి
PostgreSQL 12 B-ట్రీ ఇండెక్స్ల పనితీరును బాగా మెరుగుపరుస్తుంది మరియు TPC-C వంటి బెంచ్మార్క్లతో చేసిన ప్రయోగాలు ఇప్పుడు సగటున 40% తక్కువ స్థలం ఉపయోగించబడుతున్నాయని చూపించాయి. ఇప్పుడు మనం B-ట్రీ ఇండెక్స్లను నిర్వహించడం (అంటే, రైట్ ఆపరేషన్లపై) మాత్రమే కాకుండా, డేటాను తిరిగి పొందడంలో కూడా తక్కువ సమయాన్ని వెచ్చిస్తాము, ఎందుకంటే సూచికలు చాలా చిన్నవిగా ఉంటాయి.
తమ టేబుల్లను సక్రియంగా అప్డేట్ చేసే అప్లికేషన్లు - సాధారణంగా OLTP అప్లికేషన్లు (
ఈ ప్రయోజనాల ప్రయోజనాన్ని పొందడానికి కొన్ని అప్గ్రేడ్ వ్యూహాలకు B-ట్రీ ఇండెక్స్లను పునర్నిర్మించడం అవసరం (ఉదా.
PostgreSQL 12లో ఇండెక్సింగ్ ఇన్ఫ్రాస్ట్రక్చర్కు ఇతర మెరుగుదలలు ఉన్నాయి. ఏదో మాయాజాలం ఉన్న మరొక విషయం -
PostgreSQL 12 ఇండెక్స్ నిర్మాణ సమయంలో GiST, GIN మరియు SP-GiST సూచికల ద్వారా సృష్టించబడిన WAL రికార్డుల ఓవర్హెడ్ను తగ్గించింది. ఇది అనేక ప్రత్యక్ష ప్రయోజనాలను అందిస్తుంది: WAL రికార్డ్లు తక్కువ డిస్క్ స్థలాన్ని తీసుకుంటాయి మరియు విపత్తు పునరుద్ధరణ లేదా పాయింట్-ఇన్-టైమ్ రికవరీ సమయంలో డేటా వేగంగా రీప్లే చేయబడుతుంది. మీరు మీ అప్లికేషన్లలో అటువంటి సూచికలను ఉపయోగిస్తే (ఉదాహరణకు, PostGIS-ఆధారిత జియోస్పేషియల్ అప్లికేషన్లు GiST సూచికను ఎక్కువగా ఉపయోగిస్తాయి), ఇది మీ వంతు ప్రయత్నం లేకుండానే అనుభవాన్ని గణనీయంగా మెరుగుపరిచే మరొక లక్షణం.
విభజన - పెద్దది, మంచిది, వేగవంతమైనది
PostgreSQL 10 పరిచయం చేయబడింది
PostgreSQL 12లో, విభజన వ్యవస్థ పనితీరు మెరుగ్గా మారింది, ప్రత్యేకించి పట్టికలో వేల సంఖ్యలో విభజనలు ఉంటే. ఉదాహరణకు, ఒక ప్రశ్న వేల సంఖ్యలో ఉన్న పట్టికలోని కొన్ని విభజనలను మాత్రమే ప్రభావితం చేస్తే, అది చాలా వేగంగా అమలు అవుతుంది. ఈ రకమైన ప్రశ్నల కోసం పనితీరు మెరుగుపరచబడలేదు. బహుళ విభజనలతో పట్టికలలో ఇన్సర్ట్ కార్యకలాపాలు ఎంత వేగంగా జరుగుతాయో కూడా మీరు గమనించవచ్చు.
ఉపయోగించి డేటాను రికార్డ్ చేస్తోంది
ఈ ప్రయోజనాలకు ధన్యవాదాలు, PostgreSQL మరింత పెద్ద డేటా సెట్లను నిల్వ చేయడానికి మరియు వాటిని సులభంగా తిరిగి పొందేందుకు మిమ్మల్ని అనుమతిస్తుంది. మరియు మీ వంతు ప్రయత్నం లేదు. అప్లికేషన్ సమయ శ్రేణి డేటాను రికార్డ్ చేయడం వంటి అనేక విభజనలను కలిగి ఉంటే, సాధారణ అప్గ్రేడ్ దాని పనితీరును గణనీయంగా మెరుగుపరుస్తుంది.
ఇది సరిగ్గా "అప్గ్రేడ్ మరియు ఆనందించండి" మెరుగుదల కానప్పటికీ, విభజన పట్టికలను సూచించే విదేశీ కీలను సృష్టించడానికి PostgreSQL 12 మిమ్మల్ని అనుమతిస్తుంది, విభజనతో పని చేయడం ఆనందంగా ఉంటుంది.
ప్రశ్నలతో చాలా మెరుగుపడింది
ఉన్నప్పుడు
SQLకి కొత్తవారు CTEలను ఉపయోగించడానికి ఇష్టపడతారని నేను తరచుగా గుర్తించాను; మీరు వాటిని ఒక నిర్దిష్ట మార్గంలో వ్రాస్తే, మీరు ఒక అత్యవసర ప్రోగ్రామ్ని వ్రాస్తున్నట్లు అనిపిస్తుంది. వ్యక్తిగతంగా, నేను ఈ ప్రశ్నలను తిరిగి వ్రాయడానికి ఇష్టపడతాను లేకుండా CTE మరియు ఉత్పాదకతను పెంచండి. ఇప్పుడు ప్రతిదీ భిన్నంగా ఉంది.
PostgreSQL 12 దుష్ప్రభావాలు లేకుండా నిర్దిష్ట రకం CTEని ఇన్లైన్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది (SELECT
), ఇది అభ్యర్థన ముగింపులో ఒక్కసారి మాత్రమే ఉపయోగించబడుతుంది. నేను తిరిగి వ్రాసిన CTE ప్రశ్నలను ట్రాక్ చేస్తే, వాటిలో చాలా వరకు ఈ వర్గంలోకి వస్తాయి. ఇది డెవలపర్లకు స్పష్టమైన కోడ్ను వ్రాయడంలో సహాయపడుతుంది, అది ఇప్పుడు త్వరగా కూడా నడుస్తుంది.
అంతేకాకుండా, PostgreSQL 12 మీరు ఏమీ చేయకుండానే SQL ఎగ్జిక్యూషన్ను ఆప్టిమైజ్ చేస్తుంది. నేను బహుశా ఇప్పుడు అలాంటి ప్రశ్నలను ఆప్టిమైజ్ చేయనవసరం లేనప్పటికీ, PostgreSQL ప్రశ్న ఆప్టిమైజేషన్పై పని చేయడం చాలా బాగుంది.
జస్ట్-ఇన్-టైమ్ (JIT) - ఇప్పుడు డిఫాల్ట్
మద్దతుతో PostgreSQL 12 సిస్టమ్స్లో
PostgreSQL 12లో JIT డిఫాల్ట్గా ప్రారంభించబడినందున, పనితీరు దానంతట అదే మెరుగుపడుతుంది, అయితే ప్రశ్న పనితీరును కొలవడానికి మరియు మీరు ఏదైనా ట్యూన్ చేయాలా అని చూడటానికి JITని పరిచయం చేసిన PostgreSQL 11లో అప్లికేషన్ను పరీక్షించమని నేను సిఫార్సు చేస్తున్నాను.
PostgreSQL 12లోని మిగిలిన కొత్త ఫీచర్ల గురించి ఏమిటి?
PostgreSQL 12 ప్రామాణిక SQL/JSON రూట్ ఎక్స్ప్రెషన్లను ఉపయోగించి JSON డేటాను పరిశీలించే సామర్థ్యం నుండి పారామీటర్తో బహుళ-కారకాల ప్రామాణీకరణ వరకు అనేక అద్భుతమైన కొత్త లక్షణాలను కలిగి ఉంది. clientcert=verify-full
, నిలువు వరుసలు మరియు మరిన్ని సృష్టించబడ్డాయి. ప్రత్యేక పోస్ట్ కోసం సరిపోతుంది.
PostgreSQL 10 వలె, PostgreSQL 12 అప్గ్రేడ్ అయిన వెంటనే మొత్తం పనితీరును మెరుగుపరుస్తుంది. మీరు, వాస్తవానికి, మీ స్వంత మార్గాన్ని కలిగి ఉండవచ్చు - నేను PostgreSQL 10తో చేసినట్లుగా, మెరుగుదలలను ప్రారంభించే ముందు ఉత్పత్తి సిస్టమ్లో సారూప్య పరిస్థితులలో అప్లికేషన్ను పరీక్షించండి. PostgreSQL 12 ఇప్పటికే నేను ఊహించిన దాని కంటే మరింత స్థిరంగా ఉన్నప్పటికీ, పరీక్షలో సోమరిగా ఉండకండి. అప్లికేషన్లను పూర్తిగా ఉత్పత్తికి విడుదల చేయడానికి ముందు.
మూలం: www.habr.com