ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá
áºááŸá
áºááŒá®ážáá±á¬ááº
á¡ááá
- áá¶á·ááá¯ážáá°áá®ááŸá¯ áááºáá±á¬ááºáž "
áá±á¬áºáá¶áá»á¬ážááá¯áá¯ááºáá±ážáááºá "á áá°áá®áá±á¬ááá¬ážááŸá á¡ááŒá¬ážáá±á¬áºáá¶áá»á¬ážá áááºááá¯ážáá»á¬ážááᯠááœáŸááºážááŒá¯á¶áá¬ážááá·áº á áá¬ážáááºáá áºáá¯á¡áá±á«áº á¡ááŒá±áá¶á ááœááºáá»ááºáá¬ážááá·áº áááºááá¯áž (ááŒáá·áºááŸá¯ááŸá¯áá»á¬ážááŸáá·áº áááºáá°áá±á¬áºáááºáž áá±á¬áºáá¶áá áºáá¯á á®á¡ááœááº)á áá¯ááºáá¯ááºááá¯ááºáá±á¬ áá±á¬áºáá¶áá»á¬ážááẠááááºážáááºážáá¬ážáá±á¬ ááŸáá·áº virtual áá°á ááŸá áºáá»áá¯ážááŸáááá¯ááºáá«áááºá áááááá á¹á ááœááºá áá±áá¬ááᯠááá·áºááẠááá¯á·ááá¯áẠááŒá±á¬ááºážáá²áá»áááºááœáẠáááºááá¯ážááᯠááœááºáá»ááºááŒá®áž áá¯áááá¡ááŒá±á¡áá±ááœááºá á¡ááŒá¬ážáá±á¬áºáá¶áá»á¬ážá áááºááŸáá¡ááŒá±á¡áá±á¡áá±á«áº á¡ááŒá±áá¶á áááºááŸá¯ááŸá¯áá áºáá¯á á®ááœáẠáááºááá¯ážááᯠááœááºáá»ááºáááºá áááºááŸáááœááºá PostgreSQL ááẠááááºážáááºážáá¬ážáá±á¬ áá¯ááºáá±ážáá¬ážáá±á¬ áá±á¬áºáá¶áá»á¬ážááá¯áᬠáá¶á·ááá¯ážáá±ážáááºá - JSON á
á¬ááœááºá
á¬áááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áá±áá¬áá±ážááŒááºážááá¯ááºááŸá¯ááᯠááá·áºááœááºážáá¬ážáááºá
áááºá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬áž á¡ááŸááºáá áá¬áXPath SQL/JSON á á¶ááŸá¯ááºážáá»á¬ážááœáẠáááºááŸááºáá¬ážáááºá JSONB áá±á¬áºáááºááœáẠááááºážáááºážáá¬ážááá·áº á á¬ááœááºá á¬áááºážáá»á¬ážá¡ááœáẠááá¯áá±á¬áºááŒáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááŒááºážá á áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºáááºá¡ááœáẠááŸááááºážá áœá² á¡ááœáŸááºážááááºážááá¹ááá¬ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá - áá¯á¶áá±á¡á¬ážááŒáá·áº ááœáá·áºáá¬ážáááºááŸá¬ SQL query áá¯ááºáá±á¬ááºáá±á ááºá¡ááœááºáž á¡áá»áá¯á·áá±á¬ expression áá»á¬ážááᯠá¡ááŸáááºááŒáŸáá·áºááẠLLVM ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá»á¬ážááᯠá¡ááŒá±áá¶ááá·áº JIT (Just-in-Time) compiler ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒá áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá JIT ááᯠWHERE ááá±á¬ááºáá»á¬ážá áá áºááŸááºá á¬áááºážáá»á¬ážá á á¯á ááºážáá±á¬áºááŒáá»ááºáá»á¬ážááŸáá·áº á¡áá»áá¯á·áá±á¬ á¡ááœááºážááá¯ááºážáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááœááºáž áá±á¬áºááŒáá»ááºáá»á¬ážááᯠá¡ááŸáááºááŒáŸáá·áºáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áááºá
- Indexing Performance áááááá¬áᬠááá¯ážáááºáá¬áá«ááŒá®á B-tree á¡ááœáŸááºážááááºážáá»á¬ážááẠá¡ááœáŸááºážááááºážáá»á¬áž áááŒá¬ááááŒá±á¬ááºážáá²áá±ááá·áº áááºáááºážáá»ááºáá»á¬ážááœáẠá¡áá¯ááºáá¯ááºááẠá¡áá±á¬ááºážáá¯á¶ážááŒá
áºá¡á±á¬áẠáá¯ááºáá±á¬ááºááẠ- TPC-C á
ááºážáááºááŸá¯áá»á¬ážááẠá¡áá¯á¶ážá
á¯á¶á
áœááºážáá±á¬ááºáááºááá¯ážáááºááŸá¯ááŸáá·áº disk space áá¯á¶ážá
áœá²ááŸá¯ 40% áá»ááºážáá»áŸáá»áŸá±á¬á·áá»ááŸá¯ááᯠááŒááááºá GiSTá GIN ááŸáá·áº SP-GiST á¡ááœáŸááºážá¡áá»áá¯ážá¡á
á¬ážáá»á¬ážá¡ááœáẠáá±áž-ááŒáá¯áááºááŸááºáááºáž (WAL) ááá¯áá¯ááºáá±ážáá±á¬á¡áá«ááœáẠáá¯ááºáá»á
ááááºááᯠáá»áŸá±á¬á·áá»áá¬ážáááºá GiST á¡ááœááºá á¡ááá¯áá±á¬áºáá¶áá»á¬ážáá« á ááºáá±á¬ wrapper á¡ááœáŸááºážááááºážáá»á¬áž (á¡áá«á¡ á ááºá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááŸáááá·áº) áááºáá®ážááá¯ááºá
áœááºážááá¯ááá·áºááœááºážáá¬ážáááºá áááºáááºáá±áá«áááºá
á á¬áááºážá¡ááºážáááºáá®ážááŒááºáž ááá®ááᬠááŒáá·áºáá±áá¬ážáá±á¬ áá±á¬áºáá¶áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá·áºá¡áá« ááá¯ááá¯ááá·áºáá»á±á¬áºáá±á¬ á á¯á¶á ááºážáá±ážááŒááºážááŸá¯ á¡á á®á¡á ááºáá»á¬ážááᯠáááºáá®ážáááºá¡ááœáẠMost Common Value (MCV) á á¬áááºážááá¬ážáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯áá±ážáá«áááºá - ááá¯ááºážááŒá¬ážááŒááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááẠáá±á¬ááºáá±á«ááºážáá»á¬ážá áœá¬áá±á¬ á¡áááºážááá·áºáá»á¬ážáá«ááŸááá±á¬ ááá¬ážáá»á¬ážááᯠáá»á²á·ááœááºááá·áº queries á¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºáá¬ážáá±á¬áºáááºáž á¡ááá·áºá¡áááºááŸááá±á¬ áá±áá¬á¡á á¯ááœá²ááᯠááœá±ážáá»ááºááẠááá·áºáááºáá¬ážáááºá INSERT ááŸáá·áº Copy áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á¡ááá¯ááºážááá¯ááºážááœá²áá¬ážáá±á¬ ááá¬ážáá»á¬ážááá¯á· áá±áá¬ááá·áºááŒááºážá á áœááºážáá±á¬ááºáááºááẠááá¯ážááŒáá·áºáá¬áá²á·ááŒá®áž query execution ááᯠááááºááá¯á·ááŒááºážáááŒá¯áá² "ALTER TABLE ATTACH PARTITION" ááŸáááá·áº ááá¹áá¡áá áºáá»á¬ážááᯠáá±á«ááºážááá·áºááá¯ááºáááºá
- áá±áá°áá»á¡á¬ážááŒáá·áº ááá¬ážá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬áž á¡ááá¯á¡áá»á±á¬áẠá¡ááœááºážááá¯ááºážáá»á²á·ááœááºááŒááºážá¡ááœáẠáááºáá±á¬ááºážáá¶á·ááá¯ážááŸá¯ (
Common Table Expression , CTE) WITH áá¯ááºááŒááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯á áááºááŸááºáá¬ážáá±á¬ áá¬áá®á¡áááºáá±ážáá¬ážáá±á¬ ááááºá¡á á¯á¶áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºááŒá¯áááºá Inline ááŒáá·áºáá»ááºááŒááºážááẠáá±ážááœááºážá¡áá»á¬ážá á¯á á áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºáá±ážááá¯ááºáá±á¬áºáááºáž áááºááŸáááœáẠááŒááºáá°ááŒááºážáááŸááá±á¬ CTE áá»á¬ážá¡ááœááºáᬠá¡áá¯á¶ážááŒá¯áá«áááºá - áá¶á·ááá¯ážáá°áá®ááŸá¯ ááá¯á·ááᯠááá·áºááœááºážáá²á·áááºá
á¡áá¯á¶ážá¡ááŒááºáááŸááá±á¬ á á¬áá¯á¶ážáá»á¬ážá á¡áááá¹áá¬ááºááᯠááá·áºááœááºážá ááºážá á¬ážááẠááœáá·áºááŒá¯ááá·áº âCollationâ áá±áá áá¯ááºááá¹áááá»á¬áž (á¥ááá¬á áá áºáá»á áºáááºáááºááá¯ážáá»á¬ážááᯠá á®áááºá ááááºážáá áºáá¯á ááŸá±á·ááœáẠá¡áá¯ááºáá áºáá¯ááŸáá·áº á¡á ááºáá áºáᯠááŸááá±ááŒááºážá á á¬áá¯á¶ážáá±á«ááºážááᯠááá·áºááœááºážá ááºážá á¬ážááŒá®áž ááŸáá¯ááºážááŸááºááŒáá·áºáá±á¬á¡áá«ááœáẠá¡áá¹ááá¬áá»á¬ážá á¡ááŒá±á¡áá±ááŸáá·áº áá±áá°áá±ááááºáž á¡ááŸááºá¡áá¬áž ááŸááá±ááŒááºážááᯠááá·áºááœááºážá ááºážá á¬ážááŒááºáž áááŸááá«á - pg_hba.conf ááœáẠáááºááẠSSL áááºááŸáẠá á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬áž (clientcert=verify-full) ááᯠá á áºááŸááºááŒá±á¬ááºážáááºáá±ááŒáááºá¡ááœáẠscram-sha-256 áá²á·ááá¯á·áá±á¬ á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒááºážá¡ááœáẠáááºáá±á¬ááºážá á áºááŸááºááŒá±á¬ááºážááŒáááºážáááºážááŒáá·áº áá±á«ááºážááá·áºááá¯ááºáááº;
- ááŸáá
áºááá·áº á
á
áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááá·áºá¡áá« áááºááœááºáá±ážáá»ááºáááºá áá¯ááºááŸááºááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážááá·áºáá¬ážáááºá
GSSAPI client side ááŸáá·áº server side ááœááºáá±á¬á - PostgreSQL ááᯠOpenLDAP ááŒáá·áº áááºáá±á¬ááºáá¬ážáá«á âDNS SRVâ ááŸááºáááºážáá»á¬ážááᯠá¡ááŒá±áá¶á LDAP áá¬áá¬áá»á¬ážááᯠáááºááŸááºááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážááá·áºááœááºážáá¬ážáááºá
- áá¯ááºáá±á¬ááºáá»áẠáááºááá·áºáááº"
REINDEX ááẠáá áºááŒáá¯ááºáááºáááºáž » á¡ááœáŸááºážááá¯á·áá±ážáááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááá¯ááááºááá¯á·ááŒááºážáááŸááá²á¡ááœáŸááºážáá»á¬ážááá¯ááŒááºáááºáááºáá±á¬ááºáááºá - á¡áááá·áºááᯠááá·áºáá±ážáá²á·áááºá
pg_checksums ááŸáááŒá®ážáá¬ážáá±áá¬áá±á·á áºá¡ááœáẠáá±áá¬á á¬áá»ááºááŸá¬áá»á¬ážá checksums áá»á¬ážááᯠááœáá·áºááẠááá¯á·ááá¯áẠááááºááẠááœáá·áºááŒá¯áá±ážáá±á¬ (ááááºá á€áá¯ááºáá±á¬ááºáá»ááºááᯠáá±áá¬áá±á·á áºá¡á áá»áá¯ážá ááºááœááºáᬠáá¶á·ááá¯ážáá±ážáá²á·áááº)á - áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááœáẠááá¯ážáááºááŸá¯á¡ááœáŸááºážá á¡ááœááºááᯠáá¶á·ááá¯ážáá±ážáá¬ážáá±á¬ CREATE INDEXá REINDEXá CLUSTERá VACUUM FULL ááŸáá·áº pg_checksums;
- ááá·áºáá±ážááá¯ááºáá²á· á¡áááá·áº"
áááºááœáá·áºáááºážáááºážááᯠáááºáá®ážáá«á » á¡áá»áá¯ážáá»áá¯ážáá±á¬ áá¯ááºáááºážáá¬áááºáá»á¬ážá¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážááŒááºáááºáá¬ážáá±á¬ ááá¬ážááá¯ááŸá±á¬ááºááŸá¯áááºážáááºážá¡áá áºáá»á¬ážá¡ááœáẠááá¯ááºááœááºáá°áá»á¬ážááᯠáá»áááºáááºáááºá áá±á¬áá±á¬áááºááœáẠáá áºáá¯áááºážáá±á¬ built-in table access method ááŸá¬ "heap" ááŒá áºáááºá - recovery.conf ááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶ááá¯ááºááᯠpostgresql.conf ááŸáá·áº áá±á«ááºážáá¬ážáááºá ááŸá¯á¶ážáááá·áºááŒá®ážáá±á¬áẠááŒááºáááºáá°áá±á¬ááºáá±ážá¡ááŒá±á¡áá±ááá¯á· á¡ááœááºáá°ážááŒá±á¬ááºážááŸá¯á á¡ááœáŸááºážáá»á¬ážá¡ááŒá
Ạááá¯á
ááá·áºááẠrecovery.signal ááŸáá·áº standby.signal ááá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á
source: opennet.ru