මගේ මතය අනුව, පෙර නිකුතු මෙන් නොව, 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-tree දර්ශකවල ක්රියාකාරිත්වය බෙහෙවින් වැඩි දියුණු කරන අතර, TPC-C වැනි මිණුම් සලකුණු සමඟ අත්හදා බැලීම් සාමාන්යයෙන් 40% අඩු ඉඩක් දැන් භාවිතා වන බව පෙන්වා දී ඇත. දැන් අපි B-tree indexs නඩත්තු කිරීමට (එනම්, ලිවීමේ මෙහෙයුම් සඳහා) පමණක් නොව, දත්ත ලබා ගැනීම සඳහා අඩු කාලයක් ගත කරමු, මන්ද දර්ශක ඉතා කුඩා බැවින්.
ඔවුන්ගේ වගු සක්රියව යාවත්කාලීන කරන යෙදුම් - සාමාන්යයෙන් OLTP යෙදුම් (
සමහර උත්ශ්රේණිගත කිරීමේ ක්රමෝපායන්ට මෙම ප්රතිලාභවලින් ප්රයෝජන ගැනීමට B-tree index නැවත ගොඩනැගීම අවශ්ය වේ (උදා.
PostgreSQL 12 හි සුචිගත කිරීමේ යටිතල පහසුකම් සඳහා වෙනත් වැඩිදියුණු කිරීම් තිබේ. මැජික් එකක් තිබූ තවත් දෙයක් -
PostgreSQL 12 විසින් දර්ශක ගොඩනැගීමේදී GiST, GIN, සහ SP-GiST දර්ශක මගින් නිර්මාණය කරන ලද WAL වාර්තා වල පොදු කාර්ය අඩු කර ඇත. මෙය ප්රත්යක්ෂ ප්රතිලාභ කිහිපයක් සපයයි: WAL වාර්තා අඩු තැටි ඉඩ ප්රමාණයක් ගනී, සහ ආපදා ප්රතිසාධනය හෝ ලක්ෂ්ය-කාලීන ප්රතිසාධනය වැනි දත්ත වේගයෙන් නැවත ධාවනය වේ. ඔබ ඔබේ යෙදුම්වල එවැනි දර්ශක භාවිතා කරන්නේ නම් (උදාහරණයක් ලෙස, PostGIS මත පදනම් වූ භූගෝලීය යෙදුම් බොහෝ විට GiST දර්ශකය භාවිතා කරයි), මෙය ඔබේ පැත්තෙන් කිසිදු උත්සාහයකින් තොරව අත්දැකීම් සැලකිය යුතු ලෙස වැඩිදියුණු කරන තවත් විශේෂාංගයකි.
කොටස් කිරීම - විශාල, වඩා හොඳ, වේගවත්
PostgreSQL 10 හඳුන්වා දෙන ලදී
PostgreSQL 12 හි, කොටස් කිරීමේ පද්ධතියේ ක්රියාකාරිත්වය සැලකිය යුතු ලෙස වඩා හොඳ වී ඇත, විශේෂයෙන් වගුවේ කොටස් දහස් ගණනක් තිබේ නම්. උදාහරණයක් ලෙස, විමසුමක් බලපාන්නේ ඒවා දහස් ගණනක් සහිත වගුවක කොටස් කිහිපයකට පමණක් නම්, එය වඩා වේගයෙන් ක්රියාත්මක වේ. මෙම ආකාරයේ විමසුම් සඳහා පමණක් කාර්ය සාධනය වැඩි දියුණු නොවේ. බහුවිධ කොටස් සහිත වගු මත INSERT මෙහෙයුම් කෙතරම් වේගවත් දැයි ඔබ දකීවි.
භාවිතා කරමින් දත්ත පටිගත කිරීම
මෙම වාසි වලට ස්තූතිවන්ත වන්නට, PostgreSQL ඔබට ඊටත් වඩා විශාල දත්ත කට්ටල ගබඩා කිරීමට සහ ඒවා පහසුවෙන් ලබා ගැනීමට ඉඩ සලසයි. ඒ වගේම ඔබේ පැත්තෙන් කිසිම උත්සාහයක් නැහැ. යෙදුමට කාල ශ්රේණි දත්ත පටිගත කිරීම වැනි බොහෝ කොටස් තිබේ නම්, සරල උත්ශ්රේණි කිරීම එහි ක්රියාකාරිත්වය සැලකිය යුතු ලෙස වැඩි දියුණු කරයි.
මෙය හරියටම "උත්ශ්රේණි කිරීම සහ භුක්ති විඳීම" වැඩිදියුණු කිරීමක් නොවන අතර, PostgreSQL 12 මඟින් ඔබට කොටස් කරන ලද වගු යොමු කරන විදේශීය යතුරු නිර්මාණය කිරීමට ඉඩ සලසයි, කොටස් කිරීම සමඟ වැඩ කිරීම සතුටක්.
විමසුම් සමඟ දැන් බොහෝ හොඳ වී ඇත
කවදාද?
SQL වෙත නවකයන් CTE භාවිතා කිරීමට ප්රිය කරන බව මට බොහෝ විට පෙනී යයි; ඔබ ඒවා යම් ආකාරයකට ලියන්නේ නම්, ඔබ අනිවාර්ය වැඩසටහනක් ලියන බවක් හැඟේ. පුද්ගලිකව, මම මෙම විමසුම් නැවත ලිවීමට කැමති විය තොරව CTE සහ ඵලදායිතාව වැඩි කිරීම. දැන් සියල්ල වෙනස් ය.
PostgreSQL 12 ඔබට අතුරු ආබාධ නොමැතිව නිශ්චිත CTE වර්ගයක් සම්බන්ධ කිරීමට ඉඩ සලසයි (SELECT
), එය ඉල්ලීමේ අවසානයට ආසන්නව එක් වරක් පමණක් භාවිතා වේ. මා නැවත ලියූ CTE විමසුම් පිළිබඳව සටහන් තබා ගත්තේ නම්, ඒවායින් බොහොමයක් මෙම ගණයට වැටෙනු ඇත. මෙය සංවර්ධකයින්ට දැන් ඉක්මනින් ක්රියාත්මක වන පැහැදිලි කේතයක් ලිවීමට උදවු කරයි.
එපමනක් නොව, PostgreSQL 12 ඔබට කිසිවක් නොකර SQL ක්රියාත්මක කිරීම ප්රශස්ත කරයි. මට දැන් එවැනි විමසුම් ප්රශස්ත කිරීමට අවශ්ය නොවනු ඇතත්, PostgreSQL විමසුම් ප්රශස්තකරණය මත දිගටම ක්රියා කිරීම සතුටක්.
Just-in-Time (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