From f6fb72a815361cb95f6e80fb7f4ce0abc2abd9bd Mon Sep 17 00:00:00 2001 From: Anotia Date: Sat, 4 Dec 2021 00:20:40 +0800 Subject: [PATCH] Add spaces --- .../Administratorguide/Administratorguide.md | 8 +- ...13\350\241\214\347\273\264\346\212\244.md" | 3442 ++-- .../\345\220\257\345\201\234openGauss.md" | 124 +- ...75\344\270\216\346\201\242\345\244\215.md" | 5493 +++---- ...73\345\244\207\345\210\207\346\215\242.md" | 260 +- ...45\345\277\227\345\217\202\350\200\203.md" | 337 +- ...66\346\200\201\346\237\245\350\257\242.md" | 455 +- ...15\347\275\256\346\226\207\344\273\266.md" | 126 +- ...34\344\270\200\350\247\210\350\241\250.md" | 196 +- .../AI\350\203\275\345\212\233-0.md" | 28 +- ...02\345\270\270\347\233\221\346\216\247.md" | 76 +- ...BO\344\274\230\345\214\226\345\231\250.md" | 60 +- .../CharacteristicDescription.md | 8 +- ...71\351\224\231\346\234\272\345\210\266.md" | 60 +- ...\345\206\205AI\347\256\227\346\263\225.md" | 64 +- ...30\345\202\250\345\274\225\346\223\216.md" | 60 +- ...42\345\274\225\346\216\250\350\215\220.md" | 68 +- ...73\345\206\231\345\210\206\347\246\273.md" | 60 +- ...45\345\217\243\345\205\274\345\256\271.md" | 60 +- .../Parallel-Page-based-Redo-For-Ustore.md | 60 +- ...66\351\227\264\351\242\204\346\265\213.md" | 84 +- ...66\350\241\214\346\211\247\350\241\214.md" | 76 +- .../CharacteristicDescription/SQL-by-pass.md | 60 +- ...346\205\242SQL\345\217\221\347\216\260.md" | 66 +- ...47\350\203\275\350\257\212\346\226\255.md" | 198 +- ...30\344\270\216\350\257\212\346\226\255.md" | 80 +- .../Xlog-no-Lock-Flush.md | 60 +- .../\344\270\273\345\244\207\346\234\272.md" | 72 +- ...32\347\272\247\347\211\271\346\200\247.md" | 54 +- .../\344\274\252\345\210\227ROWNUM.md" | 74 +- ...52\345\212\250\351\207\215\350\257\225.md" | 442 +- ...11\345\200\274\346\237\245\350\257\242.md" | 382 +- ...00\344\270\264\346\227\266\350\241\250.md" | 78 +- ...50\346\226\207\347\264\242\345\274\225.md" | 96 +- ...07\347\250\213\346\224\257\346\214\201.md" | 64 +- .../\345\210\206\345\214\272.md" | 106 +- ...61\346\225\217\346\234\272\345\210\266.md" | 380 +- ...17\345\214\226\345\274\225\346\223\216.md" | 74 +- ...73\345\212\240\347\264\242\345\274\225.md" | 68 +- ...02\347\202\271\346\233\277\346\215\242.md" | 60 +- ...36\345\212\240\345\210\240\351\231\244.md" | 126 +- ...00\345\217\221\346\216\245\345\217\243.md" | 22 +- ...66\346\227\266\345\233\236\346\224\276.md" | 80 +- ...346\205\242SQL\350\257\212\346\226\255.md" | 274 +- ...56\346\235\203\345\210\206\347\246\273.md" | 80 +- .../\346\224\257\346\214\201HyperLogLog.md" | 64 +- .../\346\224\257\346\214\201LLVM.md" | 60 +- .../\346\224\257\346\214\201PL-Java.md" | 264 +- .../\346\224\257\346\214\201SQL-hint.md" | 68 +- ...12\346\226\255\346\212\245\345\221\212.md" | 312 +- ...07\347\250\213\350\260\203\350\257\225.md" | 64 +- ...346\214\201\346\240\207\345\207\206SQL.md" | 64 +- ...00\345\217\221\346\216\245\345\217\243.md" | 60 +- ...40\351\253\230\345\271\266\345\217\221.md" | 64 +- ...40\345\257\206\345\255\230\345\202\250.md" | 76 +- ...56\345\272\223\345\256\211\345\205\250.md" | 54 +- ...56\345\272\223\345\256\241\350\256\241.md" | 60 +- ...44\350\257\201\346\234\272\345\210\266.md" | 60 +- .../\346\236\201\350\207\264RTO.md" | 66 +- ...60\345\272\246\345\215\207\347\272\247.md" | 60 +- ...51\345\214\226\350\247\206\345\233\276.md" | 60 +- ...51\347\220\206\345\244\207\344\273\275.md" | 92 +- ...41\351\252\214\346\234\272\345\210\266.md" | 134 +- ...05\345\212\251\350\257\212\346\226\255.md" | 114 +- ...47\350\201\224\345\244\207\346\234\272.md" | 78 +- ...41\350\256\241\346\234\272\345\210\266.md" | 220 +- .../\347\273\264\346\212\244\346\200\247.md" | 26 +- ...32\344\277\241\345\256\211\345\205\250.md" | 76 +- ...52\346\262\273\344\272\213\345\212\241.md" | 76 +- ...02\345\272\224\345\216\213\347\274\251.md" | 198 +- ...67\345\220\210\345\255\230\345\202\250.md" | 138 +- ...77\351\227\256\346\216\247\345\210\266.md" | 74 +- ...47\345\210\266\346\250\241\345\236\213.md" | 72 +- ...56\345\272\223\346\234\272\345\210\266.md" | 74 +- ...07\347\255\276\346\234\272\345\210\266.md" | 86 +- ...60\346\215\256\345\212\240\345\257\206.md" | 94 +- ...73\350\276\221\345\244\207\344\273\275.md" | 68 +- ...73\350\276\221\345\244\215\345\210\266.md" | 62 +- .../\351\253\230\345\217\257\347\224\250.md" | 46 +- .../\351\253\230\346\200\247\350\203\275.md" | 42 +- ...75\346\225\260\346\224\257\346\214\201.md" | 102 +- ...66\346\236\204\344\274\230\345\214\226.md" | 68 +- .../zh/docs/Compilationguide/Compilation.md | 18 +- content/zh/docs/Compilationguide/FAQ.md | 120 +- ...26\350\257\221\347\216\257\345\242\203.md" | 176 +- ...10\346\234\254\347\274\226\350\257\221.md" | 1142 +- content/zh/docs/Description/Description.md | 8 +- ...47\345\223\201\345\256\232\344\275\215.md" | 26 +- ...47\345\223\201\347\211\271\347\202\271.md" | 54 +- ...36\345\274\272\347\211\271\346\200\247.md" | 720 +- ...75\345\222\214\347\211\271\346\200\247.md" | 66 +- ...24\347\224\250\345\234\272\346\231\257.md" | 22 +- ...00\346\234\257\346\214\207\346\240\207.md" | 162 +- ...73\347\273\237\346\236\266\346\236\204.md" | 92 +- ...20\350\241\214\347\216\257\345\242\203.md" | 42 +- content/zh/docs/Developerguide/ABORT.md | 140 +- content/zh/docs/Developerguide/AI_MANAGER.md | 152 +- content/zh/docs/Developerguide/AI_SERVER.md | 166 +- .../AI\347\211\271\346\200\247-GUC.md" | 116 +- .../AI\347\211\271\346\200\247.md" | 8 +- ...71\346\200\247\345\207\275\346\225\260.md" | 362 +- .../zh/docs/Developerguide/ALTER-AGGREGATE.md | 130 +- .../docs/Developerguide/ALTER-AUDIT-POLICY.md | 176 +- .../docs/Developerguide/ALTER-DATA-SOURCE.md | 206 +- .../zh/docs/Developerguide/ALTER-DATABASE.md | 284 +- .../ALTER-DEFAULT-PRIVILEGES.md | 414 +- .../zh/docs/Developerguide/ALTER-DIRECTORY.md | 82 +- .../zh/docs/Developerguide/ALTER-EXTENSION.md | 280 +- .../Developerguide/ALTER-FOREIGN-TABLE.md | 222 +- .../zh/docs/Developerguide/ALTER-FUNCTION.md | 384 +- content/zh/docs/Developerguide/ALTER-GROUP.md | 112 +- content/zh/docs/Developerguide/ALTER-INDEX.md | 330 +- .../zh/docs/Developerguide/ALTER-LANGUAGE.md | 62 +- .../docs/Developerguide/ALTER-LARGE-OBJECT.md | 72 +- .../Developerguide/ALTER-MASKING-POLICY.md | 278 +- .../Developerguide/ALTER-MATERIALIZED-VIEW.md | 152 +- .../zh/docs/Developerguide/ALTER-OPERATOR.md | 108 +- .../Developerguide/ALTER-RESOURCE-LABEL.md | 134 +- .../Developerguide/ALTER-RESOURCE-POOL.md | 234 +- content/zh/docs/Developerguide/ALTER-ROLE.md | 250 +- .../ALTER-ROW-LEVEL-SECURITY-POLICY.md | 214 +- content/zh/docs/Developerguide/ALTER-RULE.md | 80 +- .../zh/docs/Developerguide/ALTER-SCHEMA.md | 174 +- .../zh/docs/Developerguide/ALTER-SEQUENCE.md | 164 +- .../zh/docs/Developerguide/ALTER-SERVER.md | 206 +- .../zh/docs/Developerguide/ALTER-SESSION.md | 170 +- .../zh/docs/Developerguide/ALTER-SYNONYM.md | 116 +- .../ALTER-SYSTEM-KILL-SESSION.md | 100 +- .../docs/Developerguide/ALTER-SYSTEM-SET.md | 140 +- .../Developerguide/ALTER-TABLE-PARTITION.md | 572 +- .../ALTER-TABLE-SUBPARTITION.md | 154 +- content/zh/docs/Developerguide/ALTER-TABLE.md | 1060 +- .../docs/Developerguide/ALTER-TABLESPACE.md | 248 +- .../ALTER-TEXT-SEARCH-CONFIGURATION.md | 350 +- .../ALTER-TEXT-SEARCH-DICTIONARY.md | 206 +- .../zh/docs/Developerguide/ALTER-TRIGGER.md | 90 +- content/zh/docs/Developerguide/ALTER-TYPE.md | 314 +- .../docs/Developerguide/ALTER-USER-MAPPING.md | 140 +- content/zh/docs/Developerguide/ALTER-USER.md | 216 +- content/zh/docs/Developerguide/ALTER-VIEW.md | 260 +- .../zh/docs/Developerguide/ANALYZE-ANALYSE.md | 406 +- ...30\345\214\226\346\214\207\345\257\274.md" | 376 +- content/zh/docs/Developerguide/BEGIN.md | 116 +- .../zh/docs/Developerguide/BGWRITER_STAT.md | 190 +- .../BIOS\351\205\215\347\275\256.md" | 38 +- content/zh/docs/Developerguide/CALL.md | 158 +- content/zh/docs/Developerguide/CHECKPOINT.md | 60 +- .../docs/Developerguide/CLASS_VITAL_INFO.md | 94 +- .../docs/Developerguide/CLEAN-CONNECTION.md | 144 +- content/zh/docs/Developerguide/CLOSE.md | 80 +- content/zh/docs/Developerguide/CLUSTER.md | 240 +- content/zh/docs/Developerguide/COMMENT.md | 308 +- content/zh/docs/Developerguide/COMMIT-END.md | 134 +- .../zh/docs/Developerguide/COMMIT-PREPARED.md | 84 +- .../zh/docs/Developerguide/CONFIG_SETTINGS.md | 260 +- content/zh/docs/Developerguide/COPY.md | 1286 +- content/zh/docs/Developerguide/CPU.md | 236 +- .../docs/Developerguide/CREATE-AGGREGATE.md | 174 +- .../Developerguide/CREATE-AUDIT-POLICY.md | 214 +- content/zh/docs/Developerguide/CREATE-CAST.md | 162 +- .../CREATE-CLIENT-MASTER-KEY.md | 114 +- .../CREATE-COLUMN-ENCRYPTION-KEY.md | 108 +- .../docs/Developerguide/CREATE-CONVERSION.md | 120 +- .../docs/Developerguide/CREATE-DATA-SOURCE.md | 184 +- .../zh/docs/Developerguide/CREATE-DATABASE.md | 1674 +- .../docs/Developerguide/CREATE-DIRECTORY.md | 110 +- .../docs/Developerguide/CREATE-EXTENSION.md | 118 +- .../Developerguide/CREATE-FOREIGN-TABLE.md | 274 +- .../zh/docs/Developerguide/CREATE-FUNCTION.md | 624 +- .../zh/docs/Developerguide/CREATE-GROUP.md | 112 +- .../CREATE-INCREMENTAL-MATERIALIZED-VIEW.md | 132 +- .../zh/docs/Developerguide/CREATE-INDEX.md | 726 +- .../zh/docs/Developerguide/CREATE-LANGUAGE.md | 126 +- .../Developerguide/CREATE-MASKING-POLICY.md | 226 +- .../CREATE-MATERIALIZED-VIEW.md | 138 +- .../zh/docs/Developerguide/CREATE-MODEL.md | 160 +- .../zh/docs/Developerguide/CREATE-OPERATOR.md | 222 +- .../zh/docs/Developerguide/CREATE-PACKAGE.md | 168 +- .../docs/Developerguide/CREATE-PROCEDURE.md | 226 +- .../Developerguide/CREATE-RESOURCE-LABEL.md | 164 +- .../Developerguide/CREATE-RESOURCE-POOL.md | 276 +- content/zh/docs/Developerguide/CREATE-ROLE.md | 494 +- .../CREATE-ROW-LEVEL-SECURITY-POLICY.md | 464 +- content/zh/docs/Developerguide/CREATE-RULE.md | 134 +- .../zh/docs/Developerguide/CREATE-SCHEMA.md | 170 +- .../zh/docs/Developerguide/CREATE-SEQUENCE.md | 280 +- .../zh/docs/Developerguide/CREATE-SERVER.md | 228 +- .../zh/docs/Developerguide/CREATE-SYNONYM.md | 214 +- .../zh/docs/Developerguide/CREATE-TABLE-AS.md | 320 +- .../Developerguide/CREATE-TABLE-PARTITION.md | 1910 +-- .../CREATE-TABLE-SUBPARTITION.md | 1814 +-- .../zh/docs/Developerguide/CREATE-TABLE.md | 2074 +-- .../docs/Developerguide/CREATE-TABLESPACE.md | 264 +- .../CREATE-TEXT-SEARCH-CONFIGURATION.md | 246 +- .../CREATE-TEXT-SEARCH-DICTIONARY.md | 286 +- .../zh/docs/Developerguide/CREATE-TRIGGER.md | 710 +- content/zh/docs/Developerguide/CREATE-TYPE.md | 548 +- .../Developerguide/CREATE-USER-MAPPING.md | 156 +- content/zh/docs/Developerguide/CREATE-USER.md | 230 +- content/zh/docs/Developerguide/CREATE-VIEW.md | 148 +- .../CREATE-WEAK-PASSWORD-DICTIONARY.md | 96 +- content/zh/docs/Developerguide/CURSOR.md | 130 +- content/zh/docs/Developerguide/Cache-IO.md | 122 +- .../zh/docs/Developerguide/Configuration.md | 14 +- content/zh/docs/Developerguide/CopyManager.md | 218 +- ...er\347\261\273\347\256\200\344\273\213.md" | 218 +- ...51\200\211\346\213\251\347\232\204Hint.md" | 104 +- .../Developerguide/DB4AI-ARCHIVE_SNAPSHOT.md | 78 +- .../Developerguide/DB4AI-CREATE_SNAPSHOT.md | 120 +- .../DB4AI-CREATE_SNAPSHOT_INTERNAL.md | 120 +- .../DB4AI-MANAGE_SNAPSHOT_INTERNAL.md | 92 +- .../Developerguide/DB4AI-PREPARE_SNAPSHOT.md | 120 +- .../DB4AI-PREPARE_SNAPSHOT_INTERNAL.md | 204 +- .../Developerguide/DB4AI-PUBLISH_SNAPSHOT.md | 78 +- .../Developerguide/DB4AI-PURGE_SNAPSHOT.md | 78 +- .../DB4AI-PURGE_SNAPSHOT_INTERNAL.md | 64 +- ...03\345\222\214\346\216\250\346\226\255.md" | 1066 +- .../Developerguide/DB4AI-SAMPLE_SNAPSHOT.md | 134 +- .../zh/docs/Developerguide/DB4AI-SNAPSHOT.md | 274 +- .../zh/docs/Developerguide/DB4AI-Schema.md | 54 +- ...10\346\234\254\347\256\241\347\220\206.md" | 528 +- ...\347\224\237AI\345\274\225\346\223\216.md" | 22 +- .../zh/docs/Developerguide/DBE_PERF-Schema.md | 54 +- .../Developerguide/DBE_PLDEBUGGER-Schema.md | 420 +- .../Developerguide/DBE_PLDEBUGGER-abort.md | 64 +- .../DBE_PLDEBUGGER-add_breakpoint.md | 78 +- .../Developerguide/DBE_PLDEBUGGER-attach.md | 124 +- .../DBE_PLDEBUGGER-backtrace.md | 106 +- .../Developerguide/DBE_PLDEBUGGER-continue.md | 106 +- .../DBE_PLDEBUGGER-delete_breakpoint.md | 64 +- .../DBE_PLDEBUGGER-disable_breakpoint.md | 64 +- .../DBE_PLDEBUGGER-enable_breakpoint.md | 64 +- .../Developerguide/DBE_PLDEBUGGER-finish.md | 92 +- .../DBE_PLDEBUGGER-info_breakpoints.md | 92 +- .../DBE_PLDEBUGGER-info_code.md | 92 +- .../DBE_PLDEBUGGER-info_locals.md | 120 +- .../DBE_PLDEBUGGER-local_debug_server_info.md | 78 +- .../Developerguide/DBE_PLDEBUGGER-next.md | 92 +- .../DBE_PLDEBUGGER-print_var.md | 134 +- .../Developerguide/DBE_PLDEBUGGER-set_var.md | 78 +- .../Developerguide/DBE_PLDEBUGGER-step.md | 92 +- .../Developerguide/DBE_PLDEBUGGER-turn_off.md | 78 +- .../Developerguide/DBE_PLDEBUGGER-turn_on.md | 92 +- ...02\346\225\260\350\256\276\347\275\256.md" | 676 +- ...25\344\270\200\350\247\210\350\241\250.md" | 164 +- ...25\344\270\200\350\247\210\350\241\250.md" | 1150 +- content/zh/docs/Developerguide/DEALLOCATE.md | 66 +- content/zh/docs/Developerguide/DECLARE.md | 182 +- content/zh/docs/Developerguide/DELETE.md | 212 +- ...25\344\270\200\350\247\210\350\241\250.md" | 120 +- content/zh/docs/Developerguide/DO.md | 102 +- .../zh/docs/Developerguide/DROP-AGGREGATE.md | 102 +- .../docs/Developerguide/DROP-AUDIT-POLICY.md | 64 +- content/zh/docs/Developerguide/DROP-CAST.md | 102 +- .../Developerguide/DROP-CLIENT-MASTER-KEY.md | 94 +- .../DROP-COLUMN-ENCRYPTION-KEY.md | 76 +- .../docs/Developerguide/DROP-DATA-SOURCE.md | 102 +- .../zh/docs/Developerguide/DROP-DATABASE.md | 102 +- .../zh/docs/Developerguide/DROP-DIRECTORY.md | 82 +- .../zh/docs/Developerguide/DROP-EXTENSION.md | 92 +- .../docs/Developerguide/DROP-FOREIGN-TABLE.md | 82 +- .../zh/docs/Developerguide/DROP-FUNCTION.md | 102 +- content/zh/docs/Developerguide/DROP-GROUP.md | 52 +- content/zh/docs/Developerguide/DROP-INDEX.md | 100 +- .../zh/docs/Developerguide/DROP-LANGUAGE.md | 86 +- .../Developerguide/DROP-MASKING-POLICY.md | 76 +- .../Developerguide/DROP-MATERIALIZED-VIEW.md | 84 +- content/zh/docs/Developerguide/DROP-MODEL.md | 56 +- .../zh/docs/Developerguide/DROP-OPERATOR.md | 134 +- content/zh/docs/Developerguide/DROP-OWNED.md | 68 +- .../zh/docs/Developerguide/DROP-PACKAGE.md | 34 +- .../zh/docs/Developerguide/DROP-PROCEDURE.md | 66 +- .../Developerguide/DROP-RESOURCE-LABEL.md | 76 +- .../docs/Developerguide/DROP-RESOURCE-POOL.md | 82 +- content/zh/docs/Developerguide/DROP-ROLE.md | 74 +- .../DROP-ROW-LEVEL-SECURITY-POLICY.md | 106 +- content/zh/docs/Developerguide/DROP-RULE.md | 84 +- content/zh/docs/Developerguide/DROP-SCHEMA.md | 94 +- .../zh/docs/Developerguide/DROP-SEQUENCE.md | 98 +- content/zh/docs/Developerguide/DROP-SERVER.md | 76 +- .../zh/docs/Developerguide/DROP-SYNONYM.md | 78 +- content/zh/docs/Developerguide/DROP-TABLE.md | 90 +- .../zh/docs/Developerguide/DROP-TABLESPACE.md | 96 +- .../DROP-TEXT-SEARCH-CONFIGURATION.md | 86 +- .../DROP-TEXT-SEARCH-DICTIONARY.md | 104 +- .../zh/docs/Developerguide/DROP-TRIGGER.md | 94 +- content/zh/docs/Developerguide/DROP-TYPE.md | 86 +- .../docs/Developerguide/DROP-USER-MAPPING.md | 66 +- content/zh/docs/Developerguide/DROP-USER.md | 110 +- content/zh/docs/Developerguide/DROP-VIEW.md | 82 +- .../DROP-WEAK-PASSWORD-DICTIONARY.md | 56 +- content/zh/docs/Developerguide/DV_SESSIONS.md | 98 +- .../docs/Developerguide/DV_SESSION_LONGOPS.md | 92 +- ...\222\214Schema\350\256\276\350\256\241.md" | 42 +- ...\345\206\205AI\347\256\227\346\263\225.md" | 4 +- .../zh/docs/Developerguide/Developerguide.md | 32 +- .../zh/docs/Developerguide/EXECUTE-DIRECT.md | 156 +- content/zh/docs/Developerguide/EXECUTE.md | 108 +- .../zh/docs/Developerguide/EXPLAIN-PLAN.md | 158 +- content/zh/docs/Developerguide/EXPLAIN.md | 518 +- content/zh/docs/Developerguide/FETCH.md | 430 +- content/zh/docs/Developerguide/FILE_IOSTAT.md | 218 +- .../docs/Developerguide/FILE_REDO_IOSTAT.md | 134 +- content/zh/docs/Developerguide/File.md | 42 +- .../Developerguide/Foreign-Data-Wrapper.md | 28 +- .../GAUSS-00001----GAUSS-00010.md | 2 +- .../GAUSS-00011----GAUSS-00020.md | 6 +- .../GAUSS-00021----GAUSS-00030.md | 2 +- .../GAUSS-00031----GAUSS-00040.md | 16 +- .../GAUSS-00041----GAUSS-00050.md | 8 +- .../GAUSS-00051----GAUSS-00060.md | 12 +- .../GAUSS-00061----GAUSS-00070.md | 4 +- .../GAUSS-00071----GAUSS-00080.md | 4 +- .../GAUSS-00081----GAUSS-00090.md | 18 +- .../GAUSS-00101----GAUSS-00110.md | 8 +- .../GAUSS-00111----GAUSS-00120.md | 12 +- .../GAUSS-00121----GAUSS-00130.md | 4 +- .../GAUSS-00131----GAUSS-00140.md | 8 +- .../GAUSS-00141----GAUSS-00150.md | 12 +- .../GAUSS-00151----GAUSS-00160.md | 18 +- .../GAUSS-00161----GAUSS-00170.md | 30 +- .../GAUSS-00171----GAUSS-00180.md | 16 +- .../GAUSS-00181----GAUSS-00190.md | 8 +- .../GAUSS-00191----GAUSS-00200.md | 10 +- .../GAUSS-00201----GAUSS-00210.md | 4 +- .../GAUSS-00211----GAUSS-00220.md | 20 +- .../GAUSS-00221----GAUSS-00230.md | 22 +- .../GAUSS-00231----GAUSS-00240.md | 8 +- .../GAUSS-00241----GAUSS-00250.md | 14 +- .../GAUSS-00251----GAUSS-00260.md | 10 +- .../GAUSS-00261----GAUSS-00270.md | 12 +- .../GAUSS-00271----GAUSS-00280.md | 22 +- .../GAUSS-00281----GAUSS-00290.md | 16 +- .../GAUSS-00291----GAUSS-00300.md | 14 +- .../GAUSS-00301----GAUSS-00310.md | 14 +- .../GAUSS-00311----GAUSS-00320.md | 32 +- .../GAUSS-00321----GAUSS-00330.md | 30 +- .../GAUSS-00331----GAUSS-00340.md | 16 +- .../GAUSS-00341----GAUSS-00350.md | 6 +- .../GAUSS-00351----GAUSS-00360.md | 16 +- .../GAUSS-00361----GAUSS-00370.md | 18 +- .../GAUSS-00371----GAUSS-00380.md | 30 +- .../GAUSS-00381----GAUSS-00390.md | 18 +- .../GAUSS-00391----GAUSS-00400.md | 18 +- .../GAUSS-00401----GAUSS-00410.md | 10 +- .../GAUSS-00411----GAUSS-00420.md | 12 +- .../GAUSS-00421----GAUSS-00430.md | 4 +- .../GAUSS-00431----GAUSS-00440.md | 2 +- .../GAUSS-00481----GAUSS-00490.md | 4 +- .../GAUSS-00491----GAUSS-00500.md | 14 +- .../GAUSS-00501----GAUSS-00510.md | 28 +- .../GAUSS-00511----GAUSS-00520.md | 8 +- .../GAUSS-00521----GAUSS-00530.md | 8 +- .../GAUSS-00531----GAUSS-00540.md | 6 +- .../GAUSS-00541----GAUSS-00550.md | 4 +- .../GAUSS-00551----GAUSS-00560.md | 8 +- .../GAUSS-00561----GAUSS-00570.md | 26 +- .../GAUSS-00571----GAUSS-00580.md | 6 +- .../GAUSS-00581----GAUSS-00590.md | 6 +- .../GAUSS-00601----GAUSS-00610.md | 2 +- .../GAUSS-00611----GAUSS-00620.md | 2 +- .../GAUSS-00621----GAUSS-00630.md | 10 +- .../GAUSS-00631----GAUSS-00640.md | 148 +- .../GAUSS-00641----GAUSS-00650.md | 8 +- .../GAUSS-00651----GAUSS-00660.md | 20 +- .../GAUSS-00661----GAUSS-00670.md | 10 +- .../GAUSS-00671----GAUSS-00680.md | 12 +- .../GAUSS-00681----GAUSS-00690.md | 12 +- .../GAUSS-00691----GAUSS-00700.md | 10 +- .../GAUSS-00701----GAUSS-00710.md | 8 +- .../GAUSS-00711----GAUSS-00720.md | 14 +- .../GAUSS-00721----GAUSS-00730.md | 8 +- .../GAUSS-00731----GAUSS-00740.md | 18 +- .../GAUSS-00741----GAUSS-00750.md | 6 +- .../GAUSS-00751----GAUSS-00760.md | 6 +- .../GAUSS-00761----GAUSS-00770.md | 10 +- .../GAUSS-00771----GAUSS-00780.md | 2 +- .../GAUSS-00781----GAUSS-00790.md | 6 +- .../GAUSS-00791----GAUSS-00800.md | 2 +- .../GAUSS-00801----GAUSS-00810.md | 14 +- .../GAUSS-00811----GAUSS-00820.md | 6 +- .../GAUSS-00821----GAUSS-00830.md | 18 +- .../GAUSS-00831----GAUSS-00840.md | 16 +- .../GAUSS-00841----GAUSS-00850.md | 14 +- .../GAUSS-00851----GAUSS-00860.md | 18 +- .../GAUSS-00861----GAUSS-00870.md | 6 +- .../GAUSS-00871----GAUSS-00880.md | 16 +- .../GAUSS-00881----GAUSS-00890.md | 4 +- .../GAUSS-00891----GAUSS-00900.md | 8 +- .../GAUSS-00901----GAUSS-00910.md | 20 +- .../GAUSS-00911----GAUSS-00920.md | 18 +- .../GAUSS-00921----GAUSS-00930.md | 12 +- .../GAUSS-00931----GAUSS-00940.md | 6 +- .../GAUSS-00941----GAUSS-00950.md | 4 +- .../GAUSS-00951----GAUSS-00960.md | 18 +- .../GAUSS-00961----GAUSS-00970.md | 30 +- .../GAUSS-00971----GAUSS-00980.md | 22 +- .../GAUSS-00981----GAUSS-00990.md | 8 +- .../GAUSS-00991----GAUSS-01000.md | 6 +- .../GAUSS-01001----GAUSS-01010.md | 24 +- .../GAUSS-01011----GAUSS-01020.md | 26 +- .../GAUSS-01021----GAUSS-01030.md | 26 +- .../GAUSS-01041----GAUSS-01050.md | 6 +- .../GAUSS-01051----GAUSS-01060.md | 22 +- .../GAUSS-01061----GAUSS-01070.md | 12 +- .../GAUSS-01071----GAUSS-01080.md | 12 +- .../GAUSS-01091----GAUSS-01100.md | 10 +- .../GAUSS-01101----GAUSS-01110.md | 38 +- .../GAUSS-01111----GAUSS-01120.md | 26 +- .../GAUSS-01121----GAUSS-01130.md | 22 +- .../GAUSS-01131----GAUSS-01140.md | 16 +- .../GAUSS-01141----GAUSS-01150.md | 10 +- .../GAUSS-01151----GAUSS-01160.md | 14 +- .../GAUSS-01161----GAUSS-01170.md | 12 +- .../GAUSS-01171----GAUSS-01180.md | 24 +- .../GAUSS-01181----GAUSS-01190.md | 20 +- .../GAUSS-01191----GAUSS-01200.md | 16 +- .../GAUSS-01201----GAUSS-01210.md | 30 +- .../GAUSS-01211----GAUSS-01220.md | 20 +- .../GAUSS-01221----GAUSS-01230.md | 26 +- .../GAUSS-01231----GAUSS-01240.md | 14 +- .../GAUSS-01241----GAUSS-01250.md | 12 +- .../GAUSS-01251----GAUSS-01260.md | 18 +- .../GAUSS-01261----GAUSS-01270.md | 12 +- .../GAUSS-01271----GAUSS-01280.md | 6 +- .../GAUSS-01281----GAUSS-01290.md | 4 +- .../GAUSS-01291----GAUSS-01300.md | 2 +- .../GAUSS-01301----GAUSS-01310.md | 8 +- .../GAUSS-01311----GAUSS-01320.md | 6 +- .../GAUSS-01321----GAUSS-01330.md | 6 +- .../GAUSS-01331----GAUSS-01340.md | 18 +- .../GAUSS-01341----GAUSS-01350.md | 8 +- .../GAUSS-01351----GAUSS-01360.md | 16 +- .../GAUSS-01361----GAUSS-01370.md | 14 +- .../GAUSS-01371----GAUSS-01380.md | 24 +- .../GAUSS-01381----GAUSS-01390.md | 16 +- .../GAUSS-01391----GAUSS-01400.md | 24 +- .../GAUSS-01401----GAUSS-01410.md | 8 +- .../GAUSS-01411----GAUSS-01420.md | 12 +- .../GAUSS-01421----GAUSS-01430.md | 28 +- .../GAUSS-01431----GAUSS-01440.md | 32 +- .../GAUSS-01441----GAUSS-01450.md | 28 +- .../GAUSS-01451----GAUSS-01460.md | 32 +- .../GAUSS-01461----GAUSS-01470.md | 24 +- .../GAUSS-01471----GAUSS-01480.md | 34 +- .../GAUSS-01481----GAUSS-01490.md | 38 +- .../GAUSS-01491----GAUSS-01500.md | 32 +- .../GAUSS-01501----GAUSS-01510.md | 24 +- .../GAUSS-01511----GAUSS-01520.md | 24 +- .../GAUSS-01531----GAUSS-01540.md | 8 +- .../GAUSS-01581----GAUSS-01590.md | 2 +- .../GAUSS-01601----GAUSS-01610.md | 4 +- .../GAUSS-01611----GAUSS-01620.md | 10 +- .../GAUSS-01641----GAUSS-01650.md | 2 +- .../GAUSS-01651----GAUSS-01660.md | 16 +- .../GAUSS-01671----GAUSS-01680.md | 4 +- .../GAUSS-01691----GAUSS-01700.md | 4 +- .../GAUSS-01701----GAUSS-01710.md | 20 +- .../GAUSS-01711----GAUSS-01720.md | 10 +- .../GAUSS-01721----GAUSS-01730.md | 14 +- .../GAUSS-01731----GAUSS-01740.md | 148 +- .../GAUSS-01741----GAUSS-01750.md | 18 +- .../GAUSS-01751----GAUSS-01760.md | 8 +- .../GAUSS-01761----GAUSS-01770.md | 4 +- .../GAUSS-01771----GAUSS-01780.md | 4 +- .../GAUSS-01781----GAUSS-01790.md | 2 +- .../GAUSS-01811----GAUSS-01820.md | 14 +- .../GAUSS-01821----GAUSS-01830.md | 14 +- .../GAUSS-01831----GAUSS-01840.md | 16 +- .../GAUSS-01841----GAUSS-01850.md | 20 +- .../GAUSS-01851----GAUSS-01860.md | 14 +- .../GAUSS-01861----GAUSS-01870.md | 4 +- .../GAUSS-01871----GAUSS-01880.md | 4 +- .../GAUSS-01881----GAUSS-01890.md | 2 +- .../GAUSS-01891----GAUSS-01900.md | 12 +- .../GAUSS-01901----GAUSS-01910.md | 10 +- .../GAUSS-01911----GAUSS-01920.md | 28 +- .../GAUSS-01921----GAUSS-01930.md | 6 +- .../GAUSS-01931----GAUSS-01940.md | 6 +- .../GAUSS-01951----GAUSS-01960.md | 8 +- .../GAUSS-01961----GAUSS-01970.md | 10 +- .../GAUSS-01981----GAUSS-01990.md | 4 +- .../GAUSS-02011----GAUSS-02020.md | 4 +- .../GAUSS-02021----GAUSS-02030.md | 4 +- .../GAUSS-02041----GAUSS-02050.md | 2 +- .../GAUSS-02061----GAUSS-02070.md | 4 +- .../GAUSS-02081----GAUSS-02090.md | 2 +- .../GAUSS-02091----GAUSS-02100.md | 12 +- .../GAUSS-02101----GAUSS-02110.md | 4 +- .../GAUSS-02121----GAUSS-02130.md | 6 +- .../GAUSS-02131----GAUSS-02140.md | 12 +- .../GAUSS-02141----GAUSS-02150.md | 20 +- .../GAUSS-02151----GAUSS-02160.md | 20 +- .../GAUSS-02161----GAUSS-02170.md | 2 +- .../GAUSS-02181----GAUSS-02190.md | 6 +- .../GAUSS-02191----GAUSS-02200.md | 10 +- .../GAUSS-02201----GAUSS-02210.md | 2 +- .../GAUSS-02211----GAUSS-02220.md | 14 +- .../GAUSS-02221----GAUSS-02230.md | 4 +- .../GAUSS-02251----GAUSS-02260.md | 4 +- .../GAUSS-02261----GAUSS-02270.md | 6 +- .../GAUSS-02271----GAUSS-02280.md | 10 +- .../GAUSS-02281----GAUSS-02290.md | 16 +- .../GAUSS-02291----GAUSS-02300.md | 18 +- .../GAUSS-02301----GAUSS-02310.md | 18 +- .../GAUSS-02311----GAUSS-02320.md | 6 +- .../GAUSS-02321----GAUSS-02330.md | 6 +- .../GAUSS-02331----GAUSS-02340.md | 8 +- .../GAUSS-02341----GAUSS-02350.md | 12 +- .../GAUSS-02351----GAUSS-02360.md | 10 +- .../GAUSS-02361----GAUSS-02370.md | 12 +- .../GAUSS-02371----GAUSS-02380.md | 10 +- .../GAUSS-02381----GAUSS-02390.md | 6 +- .../GAUSS-02391----GAUSS-02400.md | 38 +- .../GAUSS-02401----GAUSS-02410.md | 16 +- .../GAUSS-02421----GAUSS-02430.md | 2 +- .../GAUSS-02441----GAUSS-02450.md | 2 +- .../GAUSS-02461----GAUSS-02470.md | 2 +- .../GAUSS-02471----GAUSS-02480.md | 6 +- .../GAUSS-02481----GAUSS-02490.md | 8 +- .../GAUSS-02491----GAUSS-02500.md | 10 +- .../GAUSS-02501----GAUSS-02510.md | 8 +- .../GAUSS-02561----GAUSS-02570.md | 4 +- .../GAUSS-02571----GAUSS-02580.md | 4 +- .../GAUSS-02581----GAUSS-02590.md | 14 +- .../GAUSS-02601----GAUSS-02610.md | 2 +- .../GAUSS-02611----GAUSS-02620.md | 8 +- .../GAUSS-02621----GAUSS-02630.md | 4 +- .../GAUSS-02631----GAUSS-02640.md | 2 +- .../GAUSS-02641----GAUSS-02650.md | 2 +- .../GAUSS-02661----GAUSS-02670.md | 4 +- .../GAUSS-02671----GAUSS-02680.md | 6 +- .../GAUSS-02721----GAUSS-02730.md | 8 +- .../GAUSS-02731----GAUSS-02740.md | 10 +- .../GAUSS-02791----GAUSS-02800.md | 4 +- .../GAUSS-02801----GAUSS-02810.md | 8 +- .../GAUSS-02811----GAUSS-02820.md | 8 +- .../GAUSS-02821----GAUSS-02830.md | 30 +- .../GAUSS-02831----GAUSS-02840.md | 16 +- .../GAUSS-02841----GAUSS-02850.md | 6 +- .../GAUSS-02851----GAUSS-02860.md | 6 +- .../GAUSS-02861----GAUSS-02870.md | 10 +- .../GAUSS-02871----GAUSS-02880.md | 8 +- .../GAUSS-02881----GAUSS-02890.md | 2 +- .../GAUSS-02901----GAUSS-02910.md | 14 +- .../GAUSS-02911----GAUSS-02920.md | 2 +- .../GAUSS-02931----GAUSS-02940.md | 8 +- .../GAUSS-02941----GAUSS-02950.md | 4 +- .../GAUSS-02951----GAUSS-02960.md | 14 +- .../GAUSS-02961----GAUSS-02970.md | 6 +- .../GAUSS-02971----GAUSS-02980.md | 8 +- .../GAUSS-02981----GAUSS-02990.md | 6 +- .../GAUSS-02991----GAUSS-03000.md | 164 +- .../GAUSS-03001----GAUSS-03010.md | 4 +- .../GAUSS-03011----GAUSS-03020.md | 4 +- .../GAUSS-03021----GAUSS-03030.md | 8 +- .../GAUSS-03031----GAUSS-03040.md | 4 +- .../GAUSS-03041----GAUSS-03050.md | 6 +- .../GAUSS-03051----GAUSS-03060.md | 4 +- .../GAUSS-03061----GAUSS-03070.md | 18 +- .../GAUSS-03071----GAUSS-03080.md | 8 +- .../GAUSS-03081----GAUSS-03090.md | 8 +- .../GAUSS-03091----GAUSS-03100.md | 6 +- .../GAUSS-03101----GAUSS-03110.md | 8 +- .../GAUSS-03111----GAUSS-03120.md | 6 +- .../GAUSS-03121----GAUSS-03130.md | 12 +- .../GAUSS-03131----GAUSS-03140.md | 28 +- .../GAUSS-03141----GAUSS-03150.md | 16 +- .../GAUSS-03161----GAUSS-03170.md | 2 +- .../GAUSS-03171----GAUSS-03180.md | 8 +- .../GAUSS-03181----GAUSS-03190.md | 6 +- .../GAUSS-03211----GAUSS-03220.md | 2 +- .../GAUSS-03241----GAUSS-03250.md | 4 +- .../GAUSS-03251----GAUSS-03260.md | 4 +- .../GAUSS-03291----GAUSS-03300.md | 4 +- .../GAUSS-03301----GAUSS-03310.md | 6 +- .../GAUSS-03311----GAUSS-03320.md | 12 +- .../GAUSS-03321----GAUSS-03330.md | 28 +- .../GAUSS-03331----GAUSS-03340.md | 14 +- .../GAUSS-03351----GAUSS-03360.md | 20 +- .../GAUSS-03371----GAUSS-03380.md | 2 +- .../GAUSS-03381----GAUSS-03390.md | 2 +- .../GAUSS-03391----GAUSS-03400.md | 2 +- .../GAUSS-03401----GAUSS-03410.md | 4 +- .../GAUSS-03411----GAUSS-03420.md | 12 +- .../GAUSS-03421----GAUSS-03430.md | 8 +- .../GAUSS-03431----GAUSS-03440.md | 12 +- .../GAUSS-03441----GAUSS-03450.md | 6 +- .../GAUSS-03491----GAUSS-03500.md | 4 +- .../GAUSS-03501----GAUSS-03510.md | 2 +- .../GAUSS-03541----GAUSS-03550.md | 4 +- .../GAUSS-03571----GAUSS-03580.md | 12 +- .../GAUSS-03581----GAUSS-03590.md | 8 +- .../GAUSS-03601----GAUSS-03610.md | 2 +- .../GAUSS-03611----GAUSS-03620.md | 6 +- .../GAUSS-03621----GAUSS-03630.md | 12 +- .../GAUSS-03631----GAUSS-03640.md | 12 +- .../GAUSS-03671----GAUSS-03680.md | 2 +- .../GAUSS-03681----GAUSS-03690.md | 6 +- .../GAUSS-03701----GAUSS-03710.md | 4 +- .../GAUSS-03711----GAUSS-03720.md | 4 +- .../GAUSS-03721----GAUSS-03730.md | 6 +- .../GAUSS-03731----GAUSS-03740.md | 12 +- .../GAUSS-03741----GAUSS-03750.md | 24 +- .../GAUSS-03751----GAUSS-03760.md | 18 +- .../GAUSS-03761----GAUSS-03770.md | 10 +- .../GAUSS-03781----GAUSS-03790.md | 14 +- .../GAUSS-03791----GAUSS-03800.md | 24 +- .../GAUSS-03801----GAUSS-03810.md | 12 +- .../GAUSS-03811----GAUSS-03820.md | 22 +- .../GAUSS-03821----GAUSS-03830.md | 14 +- .../GAUSS-03831----GAUSS-03840.md | 20 +- .../GAUSS-03841----GAUSS-03850.md | 10 +- .../GAUSS-03851----GAUSS-03860.md | 8 +- .../GAUSS-03861----GAUSS-03870.md | 6 +- .../GAUSS-03871----GAUSS-03880.md | 14 +- .../GAUSS-03881----GAUSS-03890.md | 2 +- .../GAUSS-03931----GAUSS-03940.md | 6 +- .../GAUSS-03971----GAUSS-03980.md | 8 +- .../GAUSS-03981----GAUSS-03990.md | 14 +- .../GAUSS-04001----GAUSS-04010.md | 6 +- .../GAUSS-04011----GAUSS-04020.md | 4 +- .../GAUSS-04021----GAUSS-04030.md | 4 +- .../GAUSS-04071----GAUSS-04080.md | 6 +- .../GAUSS-04091----GAUSS-04100.md | 8 +- .../GAUSS-04101----GAUSS-04110.md | 2 +- .../GAUSS-04131----GAUSS-04140.md | 4 +- .../GAUSS-04191----GAUSS-04200.md | 4 +- .../GAUSS-04201----GAUSS-04210.md | 8 +- .../GAUSS-04211----GAUSS-04220.md | 8 +- .../GAUSS-04221----GAUSS-04230.md | 2 +- .../GAUSS-04231----GAUSS-04240.md | 12 +- .../GAUSS-04241----GAUSS-04250.md | 10 +- .../GAUSS-04251----GAUSS-04260.md | 14 +- .../GAUSS-04261----GAUSS-04270.md | 2 +- .../GAUSS-04271----GAUSS-04280.md | 2 +- .../GAUSS-04281----GAUSS-04290.md | 2 +- .../GAUSS-04291----GAUSS-04300.md | 4 +- .../GAUSS-04311----GAUSS-04320.md | 20 +- .../GAUSS-04321----GAUSS-04330.md | 10 +- .../GAUSS-04331----GAUSS-04340.md | 6 +- .../GAUSS-04341----GAUSS-04350.md | 8 +- .../GAUSS-04351----GAUSS-04360.md | 12 +- .../GAUSS-04361----GAUSS-04370.md | 8 +- .../GAUSS-04371----GAUSS-04380.md | 4 +- .../GAUSS-04381----GAUSS-04390.md | 12 +- .../GAUSS-04391----GAUSS-04400.md | 4 +- .../GAUSS-04401----GAUSS-04410.md | 14 +- .../GAUSS-04411----GAUSS-04420.md | 10 +- .../GAUSS-04421----GAUSS-04430.md | 12 +- .../GAUSS-04431----GAUSS-04440.md | 14 +- .../GAUSS-04441----GAUSS-04450.md | 8 +- .../GAUSS-04461----GAUSS-04470.md | 4 +- .../GAUSS-04471----GAUSS-04480.md | 12 +- .../GAUSS-04481----GAUSS-04490.md | 6 +- .../GAUSS-04491----GAUSS-04500.md | 4 +- .../GAUSS-04501----GAUSS-04510.md | 2 +- .../GAUSS-04521----GAUSS-04530.md | 6 +- .../GAUSS-04531----GAUSS-04540.md | 14 +- .../GAUSS-04541----GAUSS-04550.md | 14 +- .../GAUSS-04551----GAUSS-04560.md | 6 +- .../GAUSS-04561----GAUSS-04570.md | 6 +- .../GAUSS-04571----GAUSS-04580.md | 4 +- .../GAUSS-04581----GAUSS-04590.md | 10 +- .../GAUSS-04591----GAUSS-04600.md | 22 +- .../GAUSS-04601----GAUSS-04610.md | 38 +- .../GAUSS-04611----GAUSS-04620.md | 8 +- .../GAUSS-04621----GAUSS-04630.md | 16 +- .../GAUSS-04631----GAUSS-04640.md | 14 +- .../GAUSS-04641----GAUSS-04650.md | 22 +- .../GAUSS-04651----GAUSS-04660.md | 10 +- .../GAUSS-04661----GAUSS-04670.md | 24 +- .../GAUSS-04681----GAUSS-04690.md | 6 +- .../GAUSS-04691----GAUSS-04700.md | 20 +- .../GAUSS-04701----GAUSS-04710.md | 6 +- .../GAUSS-04711----GAUSS-04720.md | 4 +- .../GAUSS-04721----GAUSS-04730.md | 10 +- .../GAUSS-04731----GAUSS-04740.md | 12 +- .../GAUSS-04741----GAUSS-04750.md | 20 +- .../GAUSS-04751----GAUSS-04760.md | 10 +- .../GAUSS-04761----GAUSS-04770.md | 16 +- .../GAUSS-04771----GAUSS-04780.md | 4 +- .../GAUSS-04781----GAUSS-04790.md | 8 +- .../GAUSS-04791----GAUSS-04800.md | 148 +- .../GAUSS-04801----GAUSS-04810.md | 116 +- .../GAUSS-04911----GAUSS-04920.md | 164 +- .../GAUSS-04971----GAUSS-04980.md | 148 +- .../GAUSS-05001----GAUSS-05010.md | 2 +- .../GAUSS-05091----GAUSS-05100.md | 2 +- .../GAUSS-05111----GAUSS-05120.md | 68 +- .../GAUSS-05121----GAUSS-05130.md | 20 +- .../GAUSS-05131----GAUSS-05140.md | 52 +- .../GAUSS-05141----GAUSS-05150.md | 36 +- .../GAUSS-05151----GAUSS-05160.md | 116 +- .../GAUSS-05161----GAUSS-05170.md | 2 +- .../GAUSS-05171----GAUSS-05180.md | 4 +- .../GAUSS-05221---GAUSS-05230.md | 6 +- .../GAUSS-05381----GAUSS-05390.md | 164 +- .../GAUSS-05391----GAUSS-05400.md | 148 +- .../GAUSS-05451----GAUSS-05460.md | 2 +- .../GAUSS-05471----GAUSS-05480.md | 148 +- .../GAUSS-05541----GAUSS-05550.md | 2 +- .../GAUSS-05551----GAUSS-05560.md | 2 +- .../GAUSS-05691----GAUSS-05700.md | 2 +- .../GAUSS-05701----GAUSS-05710.md | 2 +- .../GAUSS-05811----GAUSS-05820.md | 68 +- .../GAUSS-05821----GAUSS-05830.md | 68 +- .../GAUSS-05831----GAUSS-05840.md | 132 +- .../GAUSS-05861----GAUSS-05870.md | 84 +- .../GAUSS-05881----GAUSS-05890.md | 132 +- .../GAUSS-05961----GAUSS-05970.md | 100 +- .../GAUSS-05971----GAUSS-05980.md | 84 +- .../GAUSS-05981----GAUSS-05990.md | 100 +- .../GAUSS-06001----GAUSS-06010.md | 148 +- .../GAUSS-06051----GAUSS-06060.md | 148 +- .../GAUSS-06071----GAUSS-06080.md | 2 +- .../GAUSS-06121----GAUSS-06130.md | 148 +- .../GAUSS-06131----GAUSS-06140.md | 10 +- .../GAUSS-06151----GAUSS-06160.md | 2 +- .../GAUSS-06161----GAUSS-06170.md | 148 +- .../GAUSS-06231----GAUSS-0640.md | 10 +- .../GAUSS-06321----GAUSS-06330.md | 148 +- .../GAUSS-06361----GAUSS-06370.md | 2 +- .../GAUSS-06451----GAUSS-06460.md | 68 +- .../GAUSS-06461----GAUSS-06470.md | 148 +- .../GAUSS-06471----GAUSS-06480.md | 116 +- .../GAUSS-06551----GAUSS-06560.md | 2 +- .../GAUSS-06991----GAUSS-07000.md | 2 +- .../GAUSS-07071----GAUSS-07080.md | 2 +- .../GAUSS-07081----GAUSS-07090.md | 2 +- .../GAUSS-07111----GAUSS-07120.md | 2 +- .../GAUSS-07311----GAUSS-07320.md | 2 +- .../GAUSS-07341----GAUSS-07350.md | 2 +- .../GAUSS-07391----GAUSS-07400.md | 2 +- .../GAUSS-50000----GAUSS-50099.md | 4 +- .../GAUSS-50100----GAUSS-50199.md | 14 +- .../GAUSS-50200----GAUSS-50299.md | 2 +- .../GAUSS-50300----GAUSS-50399.md | 10 +- .../GAUSS-50400----GAUSS-50499.md | 6 +- .../GAUSS-50500----GAUSS-50599.md | 8 +- .../GAUSS-50600----GAUSS-50699.md | 18 +- .../GAUSS-51000----GAUSS-51099.md | 10 +- .../GAUSS-51100----GAUSS-51199.md | 30 +- .../GAUSS-51200----GAUSS-51299.md | 68 +- .../GAUSS-51300----GAUSS-51399.md | 8 +- .../GAUSS-51400----GAUSS-51499.md | 4 +- .../GAUSS-51600----GAUSS-51699.md | 42 +- .../GAUSS-51700----GAUSS-51799.md | 84 +- .../GAUSS-51800----GAUSS-51899.md | 6 +- .../GAUSS-52000----GAUSS-52099.md | 2 +- .../GAUSS-52200----GAUSS-52299.md | 8 +- .../GAUSS-52300----GAUSS-52399.md | 2 +- .../GAUSS-52400----GAUSS-52499.md | 4 +- .../GAUSS-52600----GAUSS-52699.md | 436 +- .../GAUSS-52700----GAUSS-52799.md | 26 +- .../GAUSS-52800----GAUSS-52899.md | 34 +- .../GAUSS-52900----GAUSS-52999.md | 16 +- .../GAUSS-53000----GAUSS-53099.md | 12 +- .../GAUSS-53200----GAUSS-53299.md | 44 +- .../GAUSS-53300----GAUSS-53399.md | 16 +- .../GAUSS-53400----GAUSS-53499.md | 2 +- .../GAUSS-53700----GAUSS-53799.md | 196 +- ...10\345\272\237\345\274\203\357\274\211.md" | 8 +- .../Developerguide/GET_GTM_LITE_STATUS.md | 64 +- ...72\344\270\216\346\212\200\345\267\247.md" | 38 +- .../GIN\347\264\242\345\274\225.md" | 22 +- .../Developerguide/GLOBAL_BGWRITER_STAT.md | 204 +- .../Developerguide/GLOBAL_CANDIDATE_STATUS.md | 134 +- .../docs/Developerguide/GLOBAL_CKPT_STATUS.md | 134 +- .../Developerguide/GLOBAL_CONFIG_SETTINGS.md | 274 +- .../GLOBAL_DOUBLE_WRITE_STATUS.md | 190 +- .../docs/Developerguide/GLOBAL_FILE_IOSTAT.md | 232 +- .../Developerguide/GLOBAL_FILE_REDO_IOSTAT.md | 148 +- .../GLOBAL_GET_BGWRITER_STATUS.md | 8 +- .../Developerguide/GLOBAL_INSTANCE_TIME.md | 92 +- .../zh/docs/Developerguide/GLOBAL_LOCKS.md | 258 +- .../GLOBAL_MEMORY_NODE_DETAIL.md | 80 +- .../Developerguide/GLOBAL_OPERATOR_HISTORY.md | 346 +- .../GLOBAL_OPERATOR_HISTORY_TABLE.md | 8 +- .../Developerguide/GLOBAL_OPERATOR_RUNTIME.md | 360 +- .../docs/Developerguide/GLOBAL_OS_RUNTIME.md | 120 +- .../docs/Developerguide/GLOBAL_OS_THREADS.md | 106 +- .../GLOBAL_PAGEWRITER_STATUS.md | 148 +- .../Developerguide/GLOBAL_PLANCACHE_CLEAN.md | 2 +- .../Developerguide/GLOBAL_PLANCACHE_STATUS.md | 132 +- .../GLOBAL_RECORD_RESET_TIME.md | 64 +- .../Developerguide/GLOBAL_RECOVERY_STATUS.md | 162 +- .../docs/Developerguide/GLOBAL_REDO_STATUS.md | 358 +- .../docs/Developerguide/GLOBAL_REL_IOSTAT.md | 106 +- .../GLOBAL_REPLICATION_SLOTS.md | 190 +- .../Developerguide/GLOBAL_REPLICATION_STAT.md | 264 +- .../Developerguide/GLOBAL_SESSION_MEMORY.md | 106 +- .../GLOBAL_SESSION_MEMORY_DETAIL.md | 162 +- .../Developerguide/GLOBAL_SESSION_STAT.md | 120 +- .../GLOBAL_SESSION_STAT_ACTIVITY.md | 340 +- .../Developerguide/GLOBAL_SESSION_TIME.md | 106 +- .../GLOBAL_SHARED_MEMORY_DETAIL.md | 134 +- .../GLOBAL_SINGLE_FLUSH_DW_STATUS.md | 120 +- ...QUERY_HISTORY_\345\272\237\345\274\203.md" | 8 +- ...OW_QUERY_INFO_\345\272\237\345\274\203.md" | 8 +- .../GLOBAL_STATEMENT_COMPLEX_HISTORY.md | 990 +- .../GLOBAL_STATEMENT_COMPLEX_HISTORY_TABLE.md | 8 +- .../GLOBAL_STATEMENT_COMPLEX_RUNTIME.md | 710 +- .../Developerguide/GLOBAL_STATEMENT_COUNT.md | 398 +- .../GLOBAL_STATIO_ALL_INDEXES.md | 148 +- .../GLOBAL_STATIO_ALL_SEQUENCES.md | 120 +- .../GLOBAL_STATIO_ALL_TABLES.md | 204 +- .../GLOBAL_STATIO_SYS_INDEXES.md | 148 +- .../GLOBAL_STATIO_SYS_SEQUENCES.md | 120 +- .../GLOBAL_STATIO_SYS_TABLES.md | 204 +- .../GLOBAL_STATIO_USER_INDEXES.md | 148 +- .../GLOBAL_STATIO_USER_SEQUENCES.md | 120 +- .../GLOBAL_STATIO_USER_TABLES.md | 204 +- .../Developerguide/GLOBAL_STAT_ALL_INDEXES.md | 162 +- .../Developerguide/GLOBAL_STAT_ALL_TABLES.md | 344 +- .../Developerguide/GLOBAL_STAT_BAD_BLOCK.md | 148 +- .../Developerguide/GLOBAL_STAT_DATABASE.md | 316 +- .../GLOBAL_STAT_DATABASE_CONFLICTS.md | 148 +- .../docs/Developerguide/GLOBAL_STAT_DB_CU.md | 106 +- .../Developerguide/GLOBAL_STAT_SESSION_CU.md | 78 +- .../Developerguide/GLOBAL_STAT_SYS_INDEXES.md | 162 +- .../Developerguide/GLOBAL_STAT_SYS_TABLES.md | 344 +- .../GLOBAL_STAT_USER_FUNCTIONS.md | 134 +- .../GLOBAL_STAT_USER_INDEXES.md | 162 +- .../Developerguide/GLOBAL_STAT_USER_TABLES.md | 344 +- .../GLOBAL_STAT_XACT_ALL_TABLES.md | 204 +- .../GLOBAL_STAT_XACT_SYS_TABLES.md | 204 +- .../GLOBAL_STAT_XACT_USER_FUNCTIONS.md | 134 +- .../GLOBAL_STAT_XACT_USER_TABLES.md | 204 +- .../GLOBAL_THREADPOOL_STATUS.md | 8 +- .../GLOBAL_THREAD_WAIT_STATUS.md | 210 +- .../GLOBAL_TRANSACTIONS_PREPARED_XACTS.md | 106 +- .../GLOBAL_TRANSACTIONS_RUNNING_XACTS.md | 176 +- .../Developerguide/GLOBAL_USER_TRANSACTION.md | 230 +- .../docs/Developerguide/GLOBAL_WAIT_EVENTS.md | 160 +- .../GLOBAL_WORKLOAD_TRANSACTION.md | 232 +- .../GOTO\350\257\255\345\217\245.md" | 256 +- content/zh/docs/Developerguide/GRANT.md | 1152 +- content/zh/docs/Developerguide/GS_ASP.md | 418 +- content/zh/docs/Developerguide/GS_AUDITING.md | 138 +- .../docs/Developerguide/GS_AUDITING_ACCESS.md | 134 +- .../docs/Developerguide/GS_AUDITING_POLICY.md | 106 +- .../GS_AUDITING_POLICY_ACCESS.md | 106 +- .../GS_AUDITING_POLICY_FILTERS.md | 120 +- .../GS_AUDITING_POLICY_PRIVILEGES.md | 106 +- .../Developerguide/GS_AUDITING_PRIVILEGE.md | 130 +- .../Developerguide/GS_CLIENT_GLOBAL_KEYS.md | 120 +- .../GS_CLIENT_GLOBAL_KEYS_ARGS.md | 106 +- .../GS_CLUSTER_RESOURCE_INFO.md | 134 +- .../zh/docs/Developerguide/GS_COLUMN_KEYS.md | 148 +- .../Developerguide/GS_COLUMN_KEYS_ARGS.md | 106 +- .../Developerguide/GS_ENCRYPTED_COLUMNS.md | 148 +- .../docs/Developerguide/GS_ENCRYPTED_PROC.md | 104 +- .../zh/docs/Developerguide/GS_FILE_STAT.md | 218 +- .../zh/docs/Developerguide/GS_GLOBAL_CHAIN.md | 190 +- .../docs/Developerguide/GS_GLOBAL_CONFIG.md | 64 +- .../docs/Developerguide/GS_INSTANCE_TIME.md | 98 +- content/zh/docs/Developerguide/GS_LABELS.md | 116 +- content/zh/docs/Developerguide/GS_MASKING.md | 116 +- .../docs/Developerguide/GS_MASKING_POLICY.md | 106 +- .../GS_MASKING_POLICY_ACTIONS.md | 120 +- .../GS_MASKING_POLICY_FILTERS.md | 120 +- content/zh/docs/Developerguide/GS_MATVIEW.md | 120 +- content/zh/docs/Developerguide/GS_MATVIEWS.md | 148 +- .../Developerguide/GS_MATVIEW_DEPENDENCY.md | 106 +- .../docs/Developerguide/GS_MODEL_WAREHOUSE.md | 358 +- .../zh/docs/Developerguide/GS_OPT_MODEL.md | 290 +- .../zh/docs/Developerguide/GS_OS_RUN_INFO.md | 106 +- content/zh/docs/Developerguide/GS_PACKAGE.md | 148 +- .../zh/docs/Developerguide/GS_POLICY_LABEL.md | 136 +- .../zh/docs/Developerguide/GS_RECYCLEBIN.md | 320 +- .../zh/docs/Developerguide/GS_REDO_STAT.md | 134 +- .../GS_SESSION_CPU_STATISTICS.md | 174 +- .../docs/Developerguide/GS_SESSION_MEMORY.md | 92 +- .../GS_SESSION_MEMORY_CONTEXT.md | 152 +- .../GS_SESSION_MEMORY_DETAIL.md | 156 +- .../GS_SESSION_MEMORY_STATISTICS.md | 182 +- .../zh/docs/Developerguide/GS_SESSION_STAT.md | 106 +- .../zh/docs/Developerguide/GS_SESSION_TIME.md | 92 +- .../Developerguide/GS_SHARED_MEMORY_DETAIL.md | 120 +- ...QUERY_HISTORY_\345\272\237\345\274\203.md" | 8 +- ...OW_QUERY_INFO_\345\272\237\345\274\203.md" | 428 +- .../zh/docs/Developerguide/GS_SQL_COUNT.md | 408 +- .../docs/Developerguide/GS_STAT_SESSION_CU.md | 78 +- .../GS_THREAD_MEMORY_CONTEXT.md | 166 +- .../Developerguide/GS_TOTAL_MEMORY_DETAIL.md | 80 +- .../zh/docs/Developerguide/GS_TXN_SNAPSHOT.md | 92 +- .../docs/Developerguide/GS_WLM_CGROUP_INFO.md | 162 +- .../Developerguide/GS_WLM_EC_OPERATOR_INFO.md | 232 +- .../GS_WLM_EC_OPERATOR_STATISTICS.md | 180 +- .../Developerguide/GS_WLM_INSTANCE_HISTORY.md | 254 +- .../Developerguide/GS_WLM_OPERATOR_HISTORY.md | 12 +- .../Developerguide/GS_WLM_OPERATOR_INFO.md | 346 +- .../GS_WLM_OPERATOR_STATISTICS.md | 358 +- .../GS_WLM_PLAN_ENCODING_TABLE.md | 146 +- .../GS_WLM_PLAN_OPERATOR_HISTORY.md | 12 +- .../GS_WLM_PLAN_OPERATOR_INFO.md | 274 +- .../GS_WLM_REBUILD_USER_RESOURCE_POOL.md | 50 +- .../Developerguide/GS_WLM_RESOURCE_POOL.md | 176 +- .../Developerguide/GS_WLM_SESSION_HISTORY.md | 990 +- .../Developerguide/GS_WLM_SESSION_INFO.md | 12 +- .../Developerguide/GS_WLM_SESSION_INFO_ALL.md | 442 +- .../GS_WLM_SESSION_QUERY_INFO_ALL.md | 1258 +- .../GS_WLM_SESSION_STATISTICS.md | 726 +- .../docs/Developerguide/GS_WLM_USER_INFO.md | 176 +- .../GS_WLM_USER_RESOURCE_HISTORY.md | 288 +- ...77\347\224\250\350\257\264\346\230\216.md" | 20 +- ...47\232\204core\351\227\256\351\242\230.md" | 8 +- ...02\346\225\260\350\257\264\346\230\216.md" | 166 +- .../docs/Developerguide/Global-Plancache.md | 2 +- ...14\346\223\215\344\275\234\347\254\246.md" | 1968 +-- ...60\346\215\256\347\261\273\345\236\213.md" | 528 +- .../HashFunc\345\207\275\346\225\260.md" | 1184 +- ...01\345\217\212\345\221\212\350\255\246.md" | 126 +- content/zh/docs/Developerguide/HyperLogLog.md | 198 +- content/zh/docs/Developerguide/I-O.md | 152 +- .../INFORMATION_SCHEMA_CATALOG_NAME.md | 50 +- content/zh/docs/Developerguide/INSERT.md | 324 +- .../zh/docs/Developerguide/INSTANCE_TIME.md | 100 +- ...42\345\274\225\346\216\250\350\215\220.md" | 4 +- .../docs/Developerguide/Information-Schema.md | 50 +- content/zh/docs/Developerguide/Instance.md | 14 +- .../Ispell\350\257\215\345\205\270.md" | 86 +- content/zh/docs/Developerguide/JDBC.md | 66 +- ...14\347\216\257\345\242\203\347\261\273.md" | 160 +- ...45\345\217\243\345\217\202\350\200\203.md" | 8 +- .../JDBC\351\205\215\347\275\256.md" | 112 +- ...14\346\223\215\344\275\234\347\254\246.md" | 1962 +-- .../JSON-JSONB\347\261\273\345\236\213.md" | 286 +- ...46\226\271\345\274\217\347\232\204Hint.md" | 70 +- ...51\241\272\345\272\217\347\232\204Hint.md" | 124 +- ...77\347\224\250\345\273\272\350\256\256.md" | 22 +- ...57\344\270\216\351\231\220\345\210\266.md" | 70 +- .../Developerguide/LOCAL_ACTIVE_SESSION.md | 428 +- .../docs/Developerguide/LOCAL_REL_IOSTAT.md | 92 +- .../Developerguide/LOCAL_THREADPOOL_STATUS.md | 138 +- content/zh/docs/Developerguide/LOCK-1.md | 54 +- content/zh/docs/Developerguide/LOCK.md | 14 +- content/zh/docs/Developerguide/LOCKS.md | 304 +- ...56\346\225\260\346\215\256\346\272\220.md" | 1032 +- .../docs/Developerguide/MEMORY_NODE_DETAIL.md | 80 +- content/zh/docs/Developerguide/MERGE-INTO.md | 278 +- ...36\345\274\272\347\211\271\346\200\247.md" | 6 +- ...26\345\222\214\351\231\220\345\210\266.md" | 28 +- .../MOT-VACUUM\346\270\205\347\220\206.md" | 16 +- ...66\345\217\221\346\216\247\345\210\266.md" | 40 +- .../MOT\344\273\213\347\273\215.md" | 2 +- ...OT\344\275\216\345\273\266\350\277\237.md" | 4 +- .../MOT\344\275\277\347\224\250.md" | 14 +- ...77\347\224\250\346\246\202\350\277\260.md" | 12 +- ...63\351\224\256\346\212\200\346\234\257.md" | 20 +- ...30\345\202\250\350\247\204\345\210\222.md" | 56 +- .../MOT\345\207\206\345\244\207.md" | 2 +- ...14\351\253\230\345\217\257\347\224\250.md" | 6 +- ...57\346\214\201\345\267\245\345\205\267.md" | 12 +- ...47\345\210\266\346\234\272\345\210\266.md" | 4 +- ...24\347\224\250\345\234\272\346\231\257.md" | 18 +- ...47\350\203\275\345\237\272\345\207\206.md" | 14 +- .../MOT\346\201\242\345\244\215.md" | 12 +- ...57\345\212\250\346\227\266\351\227\264.md" | 20 +- ...42\345\244\215\346\246\202\345\277\265.md" | 16 +- ...OT\346\214\201\344\271\205\346\200\247.md" | 82 +- ...05\346\200\247\346\246\202\345\277\265.md" | 8 +- ...07\351\233\206\351\200\237\345\272\246.md" | 8 +- ...45\345\277\227\346\246\202\345\277\265.md" | 76 +- ...45\231\250\344\274\230\345\214\226-x86.md" | 22 +- ...4P\346\234\215\345\212\241\345\231\250.md" | 12 +- ...50\345\261\200\345\206\205\345\255\230.md" | 6 +- ...47\224\237\347\274\226\350\257\221_JIT.md" | 40 +- ...350\257\221\357\274\210JIT\357\274\211.md" | 40 +- ...4\276\213TPC-C\345\237\272\345\207\206.md" | 40 +- ...45\347\202\271\346\246\202\345\277\265.md" | 8 +- ...13\350\257\225\346\200\273\347\273\223.md" | 8 +- ...47\345\217\212\344\273\267\345\200\274.md" | 8 +- ...OT\347\232\204\346\246\202\345\277\265.md" | 4 +- .../MOT\347\233\221\346\216\247.md" | 14 +- .../MOT\347\241\254\344\273\266.md" | 12 +- .../MOT\347\256\200\344\273\213.md" | 16 +- .../MOT\347\256\241\347\220\206.md" | 2 +- .../MOT\347\264\242\345\274\225.md" | 18 +- ...51\345\256\271\346\236\266\346\236\204.md" | 52 +- .../MOT\347\273\237\350\256\241.md" | 2 +- ...20\345\210\251\347\224\250\347\216\207.md" | 6 +- .../MOT\351\203\250\347\275\262.md" | 2 +- .../MOT\351\205\215\347\275\256.md" | 100 +- ...31\350\257\257\346\266\210\346\201\257.md" | 840 +- ...24\347\246\273\347\272\247\345\210\253.md" | 224 +- ...30\345\220\236\345\220\220\351\207\217.md" | 62 +- content/zh/docs/Developerguide/MOVE.md | 150 +- content/zh/docs/Developerguide/MPP_TABLES.md | 120 +- content/zh/docs/Developerguide/Memory.md | 22 +- ...14\344\272\262\345\222\214\346\200\247.md" | 12 +- content/zh/docs/Developerguide/ODBC.md | 102 +- ...14\345\244\264\346\226\207\344\273\266.md" | 12 +- ...45\345\217\243\345\217\202\350\200\203.md" | 8 +- .../docs/Developerguide/OPERATOR_HISTORY.md | 8 +- .../Developerguide/OPERATOR_HISTORY_TABLE.md | 346 +- .../docs/Developerguide/OPERATOR_RUNTIME.md | 358 +- content/zh/docs/Developerguide/OS.md | 22 +- content/zh/docs/Developerguide/OS_RUNTIME.md | 106 +- content/zh/docs/Developerguide/OS_THREADS.md | 106 +- content/zh/docs/Developerguide/Object.md | 174 +- content/zh/docs/Developerguide/Operator.md | 30 +- content/zh/docs/Developerguide/PGXC_CLASS.md | 178 +- content/zh/docs/Developerguide/PGXC_GROUP.md | 166 +- content/zh/docs/Developerguide/PGXC_NODE.md | 286 +- .../Developerguide/PGXC_PREPARED_XACTS.md | 50 +- content/zh/docs/Developerguide/PGXC_SLICE.md | 224 +- .../zh/docs/Developerguide/PG_AGGREGATE.md | 224 +- content/zh/docs/Developerguide/PG_AM.md | 616 +- content/zh/docs/Developerguide/PG_AMOP.md | 210 +- content/zh/docs/Developerguide/PG_AMPROC.md | 154 +- .../PG_APP_WORKLOADGROUP_MAPPING.md | 78 +- content/zh/docs/Developerguide/PG_ATTRDEF.md | 120 +- .../zh/docs/Developerguide/PG_ATTRIBUTE.md | 388 +- content/zh/docs/Developerguide/PG_AUTHID.md | 446 +- .../zh/docs/Developerguide/PG_AUTH_HISTORY.md | 94 +- .../zh/docs/Developerguide/PG_AUTH_MEMBERS.md | 92 +- .../Developerguide/PG_AVAILABLE_EXTENSIONS.md | 92 +- .../PG_AVAILABLE_EXTENSION_VERSIONS.md | 148 +- content/zh/docs/Developerguide/PG_CAST.md | 124 +- content/zh/docs/Developerguide/PG_CLASS.md | 812 +- .../zh/docs/Developerguide/PG_COLLATION.md | 166 +- .../zh/docs/Developerguide/PG_COMM_DELAY.md | 138 +- .../Developerguide/PG_COMM_RECV_STREAM.md | 276 +- .../Developerguide/PG_COMM_SEND_STREAM.md | 276 +- .../zh/docs/Developerguide/PG_COMM_STATUS.md | 218 +- .../zh/docs/Developerguide/PG_CONSTRAINT.md | 446 +- .../Developerguide/PG_CONTROL_GROUP_CONFIG.md | 50 +- .../zh/docs/Developerguide/PG_CONVERSION.md | 184 +- content/zh/docs/Developerguide/PG_CURSORS.md | 120 +- content/zh/docs/Developerguide/PG_DATABASE.md | 246 +- .../docs/Developerguide/PG_DB_ROLE_SETTING.md | 82 +- .../zh/docs/Developerguide/PG_DEFAULT_ACL.md | 108 +- content/zh/docs/Developerguide/PG_DEPEND.md | 186 +- .../zh/docs/Developerguide/PG_DESCRIPTION.md | 116 +- .../zh/docs/Developerguide/PG_DIRECTORY.md | 106 +- content/zh/docs/Developerguide/PG_ENUM.md | 120 +- .../zh/docs/Developerguide/PG_EXTENSION.md | 148 +- .../PG_EXTENSION_DATA_SOURCE.md | 166 +- .../zh/docs/Developerguide/PG_EXT_STATS.md | 280 +- .../Developerguide/PG_FOREIGN_DATA_WRAPPER.md | 164 +- .../docs/Developerguide/PG_FOREIGN_SERVER.md | 184 +- .../docs/Developerguide/PG_FOREIGN_TABLE.md | 94 +- .../Developerguide/PG_GET_INVALID_BACKENDS.md | 106 +- .../PG_GET_SENDERS_CATCHUP_TIME.md | 148 +- content/zh/docs/Developerguide/PG_GROUP.md | 78 +- .../Developerguide/PG_GTT_ATTACHED_PIDS.md | 92 +- .../zh/docs/Developerguide/PG_GTT_RELSTATS.md | 148 +- .../zh/docs/Developerguide/PG_GTT_STATS.md | 232 +- .../zh/docs/Developerguide/PG_HASHBUCKET.md | 120 +- content/zh/docs/Developerguide/PG_INDEX.md | 332 +- content/zh/docs/Developerguide/PG_INDEXES.md | 130 +- content/zh/docs/Developerguide/PG_INHERITS.md | 94 +- content/zh/docs/Developerguide/PG_JOB.md | 278 +- content/zh/docs/Developerguide/PG_JOB_PROC.md | 92 +- content/zh/docs/Developerguide/PG_LANGUAGE.md | 200 +- .../zh/docs/Developerguide/PG_LARGEOBJECT.md | 102 +- .../Developerguide/PG_LARGEOBJECT_METADATA.md | 94 +- content/zh/docs/Developerguide/PG_LOCKS.md | 382 +- .../zh/docs/Developerguide/PG_NAMESPACE.md | 134 +- content/zh/docs/Developerguide/PG_NODE_ENV.md | 134 +- content/zh/docs/Developerguide/PG_OBJECT.md | 152 +- content/zh/docs/Developerguide/PG_OPCLASS.md | 210 +- content/zh/docs/Developerguide/PG_OPERATOR.md | 312 +- content/zh/docs/Developerguide/PG_OPFAMILY.md | 138 +- .../zh/docs/Developerguide/PG_OS_THREADS.md | 106 +- .../zh/docs/Developerguide/PG_PARTITION.md | 450 +- .../zh/docs/Developerguide/PG_PLTEMPLATE.md | 148 +- .../Developerguide/PG_PREPARED_STATEMENTS.md | 106 +- .../docs/Developerguide/PG_PREPARED_XACTS.md | 130 +- content/zh/docs/Developerguide/PG_PROC.md | 592 +- content/zh/docs/Developerguide/PG_RANGE.md | 152 +- .../Developerguide/PG_REPLICATION_SLOTS.md | 176 +- .../docs/Developerguide/PG_RESOURCE_POOL.md | 232 +- content/zh/docs/Developerguide/PG_REWRITE.md | 166 +- .../zh/docs/Developerguide/PG_RLSPOLICIES.md | 134 +- .../zh/docs/Developerguide/PG_RLSPOLICY.md | 134 +- content/zh/docs/Developerguide/PG_ROLES.md | 524 +- content/zh/docs/Developerguide/PG_RULES.md | 92 +- .../docs/Developerguide/PG_RUNNING_XACTS.md | 178 +- content/zh/docs/Developerguide/PG_SECLABEL.md | 134 +- .../zh/docs/Developerguide/PG_SECLABELS.md | 184 +- .../docs/Developerguide/PG_SESSION_IOSTAT.md | 180 +- .../docs/Developerguide/PG_SESSION_WLMSTAT.md | 374 +- content/zh/docs/Developerguide/PG_SETTINGS.md | 260 +- content/zh/docs/Developerguide/PG_SHADOW.md | 296 +- content/zh/docs/Developerguide/PG_SHDEPEND.md | 222 +- .../docs/Developerguide/PG_SHDESCRIPTION.md | 102 +- .../zh/docs/Developerguide/PG_SHSECLABEL.md | 124 +- .../Developerguide/PG_STATIO_ALL_INDEXES.md | 132 +- .../Developerguide/PG_STATIO_ALL_SEQUENCES.md | 106 +- .../Developerguide/PG_STATIO_ALL_TABLES.md | 190 +- .../Developerguide/PG_STATIO_SYS_INDEXES.md | 134 +- .../Developerguide/PG_STATIO_SYS_SEQUENCES.md | 106 +- .../Developerguide/PG_STATIO_SYS_TABLES.md | 190 +- .../Developerguide/PG_STATIO_USER_INDEXES.md | 132 +- .../PG_STATIO_USER_SEQUENCES.md | 106 +- .../Developerguide/PG_STATIO_USER_TABLES.md | 190 +- .../zh/docs/Developerguide/PG_STATISTIC.md | 230 +- .../docs/Developerguide/PG_STATISTIC_EXT.md | 230 +- content/zh/docs/Developerguide/PG_STATS.md | 314 +- .../docs/Developerguide/PG_STAT_ACTIVITY.md | 358 +- .../Developerguide/PG_STAT_ACTIVITY_NG.md | 370 +- .../Developerguide/PG_STAT_ALL_INDEXES.md | 150 +- .../docs/Developerguide/PG_STAT_ALL_TABLES.md | 344 +- .../docs/Developerguide/PG_STAT_BAD_BLOCK.md | 172 +- .../docs/Developerguide/PG_STAT_BGWRITER.md | 188 +- .../docs/Developerguide/PG_STAT_DATABASE.md | 300 +- .../PG_STAT_DATABASE_CONFLICTS.md | 134 +- .../Developerguide/PG_STAT_REPLICATION.md | 250 +- .../Developerguide/PG_STAT_SYS_INDEXES.md | 148 +- .../docs/Developerguide/PG_STAT_SYS_TABLES.md | 344 +- .../Developerguide/PG_STAT_USER_FUNCTIONS.md | 120 +- .../Developerguide/PG_STAT_USER_INDEXES.md | 148 +- .../Developerguide/PG_STAT_USER_TABLES.md | 346 +- .../Developerguide/PG_STAT_XACT_ALL_TABLES.md | 190 +- .../Developerguide/PG_STAT_XACT_SYS_TABLES.md | 190 +- .../PG_STAT_XACT_USER_FUNCTIONS.md | 120 +- .../PG_STAT_XACT_USER_TABLES.md | 190 +- content/zh/docs/Developerguide/PG_SYNONYM.md | 120 +- content/zh/docs/Developerguide/PG_TABLES.md | 220 +- .../zh/docs/Developerguide/PG_TABLESPACE.md | 136 +- content/zh/docs/Developerguide/PG_TDE_INFO.md | 82 +- .../Developerguide/PG_THREAD_WAIT_STATUS.md | 2666 +-- .../Developerguide/PG_TIMEZONE_ABBREVS.md | 78 +- .../docs/Developerguide/PG_TIMEZONE_NAMES.md | 92 +- .../Developerguide/PG_TOTAL_MEMORY_DETAIL.md | 78 +- .../PG_TOTAL_USER_RESOURCE_INFO.md | 286 +- .../PG_TOTAL_USER_RESOURCE_INFO_OID-0.md | 272 +- .../PG_TOTAL_USER_RESOURCE_INFO_OID.md | 272 +- content/zh/docs/Developerguide/PG_TRIGGER.md | 280 +- .../zh/docs/Developerguide/PG_TS_CONFIG.md | 152 +- .../docs/Developerguide/PG_TS_CONFIG_MAP.md | 112 +- content/zh/docs/Developerguide/PG_TS_DICT.md | 152 +- .../zh/docs/Developerguide/PG_TS_PARSER.md | 184 +- .../zh/docs/Developerguide/PG_TS_TEMPLATE.md | 130 +- content/zh/docs/Developerguide/PG_TYPE.md | 486 +- content/zh/docs/Developerguide/PG_USER.md | 260 +- .../zh/docs/Developerguide/PG_USER_MAPPING.md | 116 +- .../docs/Developerguide/PG_USER_MAPPINGS.md | 150 +- .../zh/docs/Developerguide/PG_USER_STATUS.md | 152 +- .../docs/Developerguide/PG_VARIABLE_INFO.md | 190 +- content/zh/docs/Developerguide/PG_VIEWS.md | 112 +- .../docs/Developerguide/PG_WLM_STATISTICS.md | 166 +- .../docs/Developerguide/PG_WORKLOAD_GROUP.md | 92 +- ...55\350\250\200\345\207\275\346\225\260.md" | 40 +- content/zh/docs/Developerguide/PLAN_TABLE.md | 176 +- .../zh/docs/Developerguide/PLAN_TABLE_DATA.md | 202 +- content/zh/docs/Developerguide/PLDEBUGGER.md | 524 +- content/zh/docs/Developerguide/PQcancel.md | 108 +- content/zh/docs/Developerguide/PQclear.md | 78 +- .../zh/docs/Developerguide/PQconnectStart.md | 70 +- content/zh/docs/Developerguide/PQconnectdb.md | 88 +- .../docs/Developerguide/PQconnectdbParams.md | 110 +- .../zh/docs/Developerguide/PQconninfoParse.md | 80 +- .../zh/docs/Developerguide/PQerrorMessage.md | 78 +- content/zh/docs/Developerguide/PQexec.md | 102 +- .../zh/docs/Developerguide/PQexecParams.md | 154 +- .../docs/Developerguide/PQexecParamsBatch.md | 166 +- .../zh/docs/Developerguide/PQexecPrepared.md | 142 +- .../Developerguide/PQexecPreparedBatch.md | 154 +- content/zh/docs/Developerguide/PQfinish.md | 78 +- content/zh/docs/Developerguide/PQflush.md | 86 +- content/zh/docs/Developerguide/PQfname.md | 90 +- .../zh/docs/Developerguide/PQfreeCancel.md | 78 +- content/zh/docs/Developerguide/PQgetCancel.md | 86 +- content/zh/docs/Developerguide/PQgetvalue.md | 110 +- content/zh/docs/Developerguide/PQnfields.md | 78 +- content/zh/docs/Developerguide/PQntuples.md | 78 +- content/zh/docs/Developerguide/PQprepare.md | 142 +- content/zh/docs/Developerguide/PQreset.md | 78 +- .../zh/docs/Developerguide/PQresultStatus.md | 156 +- .../zh/docs/Developerguide/PQsendPrepare.md | 134 +- content/zh/docs/Developerguide/PQsendQuery.md | 96 +- .../docs/Developerguide/PQsendQueryParams.md | 170 +- .../Developerguide/PQsendQueryPrepared.md | 158 +- .../zh/docs/Developerguide/PQsetdbLogin.md | 160 +- content/zh/docs/Developerguide/PQstatus.md | 138 +- content/zh/docs/Developerguide/PREDICT-BY.md | 84 +- .../Developerguide/PREPARE-TRANSACTION.md | 74 +- content/zh/docs/Developerguide/PREPARE.md | 82 +- content/zh/docs/Developerguide/PURGE.md | 222 +- ...03\344\274\230\346\246\202\350\277\260.md" | 484 +- content/zh/docs/Developerguide/Psycopg.md | 50 +- .../Developerguide/Psycopg\345\214\205.md" | 18 +- ...45\345\217\243\345\217\202\350\200\203.md" | 8 +- content/zh/docs/Developerguide/Query-22.md | 350 +- content/zh/docs/Developerguide/Query.md | 82 +- ...47\350\241\214\346\265\201\347\250\213.md" | 152 +- .../zh/docs/Developerguide/REASSIGN-OWNED.md | 68 +- .../REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md | 82 +- .../REFRESH-MATERIALIZED-VIEW.md | 90 +- content/zh/docs/Developerguide/REINDEX.md | 344 +- .../docs/Developerguide/RELEASE-SAVEPOINT.md | 126 +- .../docs/Developerguide/REPLICATION_SLOTS.md | 176 +- .../docs/Developerguide/REPLICATION_STAT.md | 266 +- content/zh/docs/Developerguide/RESET.md | 126 +- .../RETURN-NEXT\345\217\212RETURN-QUERY.md" | 128 +- content/zh/docs/Developerguide/RETURN.md | 34 +- content/zh/docs/Developerguide/REVOKE.md | 486 +- .../docs/Developerguide/ROLLBACK-PREPARED.md | 56 +- .../Developerguide/ROLLBACK-TO-SAVEPOINT.md | 106 +- content/zh/docs/Developerguide/ROLLBACK.md | 76 +- content/zh/docs/Developerguide/RTO.md | 10 +- .../Retry\347\256\241\347\220\206.md" | 42 +- content/zh/docs/Developerguide/SAVEPOINT.md | 184 +- content/zh/docs/Developerguide/SELECT-INTO.md | 196 +- content/zh/docs/Developerguide/SELECT.md | 1322 +- .../SEQUENCE\345\207\275\346\225\260.md" | 252 +- .../Developerguide/SESSION_CPU_RUNTIME.md | 176 +- .../zh/docs/Developerguide/SESSION_MEMORY.md | 92 +- .../Developerguide/SESSION_MEMORY_DETAIL.md | 146 +- .../Developerguide/SESSION_MEMORY_RUNTIME.md | 178 +- .../zh/docs/Developerguide/SESSION_STAT.md | 106 +- .../Developerguide/SESSION_STAT_ACTIVITY.md | 328 +- .../zh/docs/Developerguide/SESSION_TIME.md | 92 +- .../zh/docs/Developerguide/SET-CONSTRAINTS.md | 108 +- content/zh/docs/Developerguide/SET-ROLE.md | 140 +- .../SET-SESSION-AUTHORIZATION.md | 148 +- .../zh/docs/Developerguide/SET-TRANSACTION.md | 118 +- content/zh/docs/Developerguide/SET.md | 238 +- content/zh/docs/Developerguide/SHOW.md | 90 +- content/zh/docs/Developerguide/SHUTDOWN.md | 94 +- ...77\347\224\250\345\273\272\350\256\256.md" | 54 +- ...57\344\270\216\351\231\220\345\210\266.md" | 84 +- .../docs/Developerguide/SNAPSHOT-SNAPSHOT.md | 94 +- .../SNAPSHOT-TABLES_SNAP_TIMESTAMP.md | 130 +- content/zh/docs/Developerguide/SNAPSHOT.md | 252 +- content/zh/docs/Developerguide/SNAP_SEQ.md | 8 +- .../zh/docs/Developerguide/SQL-on-Anywhere.md | 194 +- .../zh/docs/Developerguide/SQL-on-Hadoop.md | 34 +- .../zh/docs/Developerguide/SQL-on-Oracle.md | 1264 +- .../zh/docs/Developerguide/SQL-on-Spark.md | 614 +- .../Developerguide/SQL-on-other-openGauss.md | 18 +- .../zh/docs/Developerguide/SQLAllocConnect.md | 8 +- content/zh/docs/Developerguide/SQLAllocEnv.md | 8 +- .../zh/docs/Developerguide/SQLAllocHandle.md | 122 +- .../zh/docs/Developerguide/SQLAllocStmt.md | 8 +- content/zh/docs/Developerguide/SQLBindCol.md | 152 +- .../docs/Developerguide/SQLBindParameter.md | 198 +- .../zh/docs/Developerguide/SQLColAttribute.md | 164 +- content/zh/docs/Developerguide/SQLConnect.md | 166 +- .../zh/docs/Developerguide/SQLDisconnect.md | 92 +- .../zh/docs/Developerguide/SQLExecDirect.md | 122 +- content/zh/docs/Developerguide/SQLExecute.md | 98 +- content/zh/docs/Developerguide/SQLFetch.md | 96 +- .../zh/docs/Developerguide/SQLFreeConnect.md | 8 +- content/zh/docs/Developerguide/SQLFreeEnv.md | 8 +- .../zh/docs/Developerguide/SQLFreeHandle.md | 108 +- content/zh/docs/Developerguide/SQLFreeStmt.md | 8 +- content/zh/docs/Developerguide/SQLGetData.md | 156 +- .../zh/docs/Developerguide/SQLGetDiagRec.md | 318 +- content/zh/docs/Developerguide/SQLPrepare.md | 118 +- .../docs/Developerguide/SQLSetConnectAttr.md | 128 +- .../zh/docs/Developerguide/SQLSetEnvAttr.md | 130 +- .../zh/docs/Developerguide/SQLSetStmtAttr.md | 128 +- ...346\205\242SQL\345\217\221\347\216\260.md" | 10 +- .../SQL\345\217\202\350\200\203.md" | 66 +- ...04\346\265\213\347\211\271\346\200\247.md" | 22 +- ...41\345\210\222\344\273\213\347\273\215.md" | 14 +- ...41\345\210\222\346\246\202\350\277\260.md" | 54 +- ...57\347\240\201\350\257\264\346\230\216.md" | 3596 ++--- .../SQL\347\274\226\345\206\231.md" | 318 +- ...QL\350\207\252\350\257\212\346\226\255.md" | 108 +- .../SQL\350\257\255\346\263\225.md" | 732 +- ...02\346\225\260\350\260\203\346\225\264.md" | 160 +- ...03\344\274\230\346\214\207\345\215\227.md" | 48 +- ...\344\271\246\347\256\241\347\220\206-6.md" | 18 +- ...01\344\271\246\347\256\241\347\220\206.md" | 18 +- .../docs/Developerguide/START-TRANSACTION.md | 166 +- content/zh/docs/Developerguide/STATEMENT.md | 610 +- .../STATEMENT_COMPLEX_HISTORY.md | 8 +- .../STATEMENT_COMPLEX_HISTORY_TABLE.md | 8 +- .../STATEMENT_COMPLEX_RUNTIME.md | 712 +- .../zh/docs/Developerguide/STATEMENT_COUNT.md | 406 +- .../docs/Developerguide/STATEMENT_HISTORY.md | 974 +- .../STATEMENT_IOSTAT_COMPLEX_RUNTIME.md | 162 +- .../STATEMENT_RESPONSETIME_PERCENTILE.md | 64 +- .../STATEMENT_USER_COMPLEX_HISTORY.md | 8 +- .../STATEMENT_WLMSTAT_COMPLEX_RUNTIME.md | 362 +- .../docs/Developerguide/STATIO_ALL_INDEXES.md | 134 +- .../Developerguide/STATIO_ALL_SEQUENCES.md | 106 +- .../docs/Developerguide/STATIO_ALL_TABLES.md | 190 +- .../docs/Developerguide/STATIO_SYS_INDEXES.md | 134 +- .../Developerguide/STATIO_SYS_SEQUENCES.md | 106 +- .../docs/Developerguide/STATIO_SYS_TABLES.md | 190 +- .../Developerguide/STATIO_USER_INDEXES.md | 134 +- .../Developerguide/STATIO_USER_SEQUENCES.md | 106 +- .../docs/Developerguide/STATIO_USER_TABLES.md | 190 +- .../docs/Developerguide/STAT_ALL_INDEXES.md | 148 +- .../zh/docs/Developerguide/STAT_ALL_TABLES.md | 330 +- .../zh/docs/Developerguide/STAT_BAD_BLOCK.md | 162 +- .../zh/docs/Developerguide/STAT_DATABASE.md | 302 +- .../Developerguide/STAT_DATABASE_CONFLICTS.md | 134 +- .../docs/Developerguide/STAT_SYS_INDEXES.md | 148 +- .../zh/docs/Developerguide/STAT_SYS_TABLES.md | 330 +- .../Developerguide/STAT_USER_FUNCTIONS.md | 120 +- .../docs/Developerguide/STAT_USER_INDEXES.md | 148 +- .../docs/Developerguide/STAT_USER_TABLES.md | 330 +- .../Developerguide/STAT_XACT_ALL_TABLES.md | 190 +- .../Developerguide/STAT_XACT_SYS_TABLES.md | 190 +- .../STAT_XACT_USER_FUNCTIONS.md | 120 +- .../Developerguide/STAT_XACT_USER_TABLES.md | 190 +- .../Developerguide/SUMMARY_FILE_IOSTAT.md | 218 +- .../SUMMARY_FILE_REDO_IOSTAT.md | 134 +- .../docs/Developerguide/SUMMARY_REL_IOSTAT.md | 90 +- .../docs/Developerguide/SUMMARY_STATEMENT.md | 610 +- .../Developerguide/SUMMARY_STATEMENT_COUNT.md | 386 +- .../SUMMARY_STATIO_ALL_INDEXES.md | 102 +- .../SUMMARY_STATIO_ALL_SEQUENCES.md | 92 +- .../SUMMARY_STATIO_ALL_TABLES.md | 176 +- .../SUMMARY_STATIO_SYS_INDEXES.md | 106 +- .../SUMMARY_STATIO_SYS_SEQUENCES.md | 92 +- .../SUMMARY_STATIO_SYS_TABLES.md | 176 +- .../SUMMARY_STATIO_USER_INDEXES.md | 106 +- .../SUMMARY_STATIO_USER_SEQUENCES.md | 92 +- .../SUMMARY_STATIO_USER_TABLES.md | 176 +- .../SUMMARY_STAT_ALL_INDEXES.md | 120 +- .../Developerguide/SUMMARY_STAT_ALL_TABLES.md | 316 +- .../Developerguide/SUMMARY_STAT_BAD_BLOCK.md | 134 +- .../Developerguide/SUMMARY_STAT_DATABASE.md | 288 +- .../SUMMARY_STAT_DATABASE_CONFLICTS.md | 120 +- .../SUMMARY_STAT_SYS_INDEXES.md | 120 +- .../Developerguide/SUMMARY_STAT_SYS_TABLES.md | 316 +- .../SUMMARY_STAT_USER_FUNCTIONS.md | 106 +- .../SUMMARY_STAT_USER_INDEXES.md | 120 +- .../SUMMARY_STAT_USER_TABLES.md | 316 +- .../SUMMARY_STAT_XACT_ALL_TABLES.md | 176 +- .../SUMMARY_STAT_XACT_SYS_TABLES.md | 176 +- .../SUMMARY_STAT_XACT_USER_FUNCTIONS.md | 106 +- .../SUMMARY_STAT_XACT_USER_TABLES.md | 176 +- .../SUMMARY_TRANSACTIONS_PREPARED_XACTS.md | 106 +- .../SUMMARY_TRANSACTIONS_RUNNING_XACTS.md | 176 +- .../docs/Developerguide/SUMMARY_USER_LOGIN.md | 106 +- .../SUMMARY_WORKLOAD_SQL_COUNT.md | 162 +- .../SUMMARY_WORKLOAD_SQL_ELAPSE_TIME.md | 288 +- .../SUMMARY_WORKLOAD_TRANSACTION.md | 218 +- ...46\226\271\345\274\217\347\232\204Hint.md" | 84 +- content/zh/docs/Developerguide/Schema.md | 126 +- content/zh/docs/Developerguide/Schema01.md | 214 +- .../zh/docs/Developerguide/Session-Thread.md | 74 +- .../Simple\350\257\215\345\205\270.md" | 118 +- .../Snowball\350\257\215\345\205\270.md" | 16 +- .../Synonym\350\257\215\345\205\270.md" | 222 +- .../docs/Developerguide/THREAD_WAIT_STATUS.md | 204 +- .../docs/Developerguide/TIMECAPSULE-TABLE.md | 238 +- ...13\350\257\225\346\214\207\345\257\274.md" | 10 +- ...17\347\232\204\351\227\256\351\242\230.md" | 6 +- .../TRANSACTIONS_PREPARED_XACTS.md | 106 +- .../TRANSACTIONS_RUNNING_XACTS.md | 176 +- content/zh/docs/Developerguide/TRUNCATE.md | 258 +- .../Thesaurus\350\257\215\345\205\270.md" | 174 +- content/zh/docs/Developerguide/Transaction.md | 18 +- ...70\345\205\263\346\236\204\351\200\240.md" | 232 +- content/zh/docs/Developerguide/UPDATE.md | 256 +- content/zh/docs/Developerguide/USER_LOGIN.md | 104 +- .../docs/Developerguide/USER_TRANSACTION.md | 218 +- .../UUID\347\261\273\345\236\213.md" | 42 +- content/zh/docs/Developerguide/Undo.md | 76 +- ...73\347\273\237\345\207\275\346\225\260.md" | 113 +- content/zh/docs/Developerguide/Utility.md | 42 +- ...17\346\227\240\345\217\230\345\214\226.md" | 14 +- content/zh/docs/Developerguide/VACUUM.md | 232 +- content/zh/docs/Developerguide/VALUES.md | 124 +- content/zh/docs/Developerguide/WAIT_EVENTS.md | 2 +- .../Developerguide/WDR-Snapshot-Schema.md | 20 +- ...37\344\277\241\346\201\257\350\241\250.md" | 18 +- ...t-\346\225\260\346\215\256\350\241\250.md" | 12 +- ...47\350\203\275\346\212\245\345\221\212.md" | 428 +- .../WLM_USER_RESOURCE_CONFIG.md | 176 +- .../WLM_USER_RESOURCE_RUNTIME.md | 188 +- .../docs/Developerguide/WORKLOAD_SQL_COUNT.md | 148 +- .../WORKLOAD_SQL_ELAPSE_TIME.md | 274 +- .../Developerguide/WORKLOAD_TRANSACTION.md | 218 +- content/zh/docs/Developerguide/Wait-Events.md | 14 +- .../docs/Developerguide/Workload-Manager.md | 14 +- content/zh/docs/Developerguide/Workload.md | 26 +- .../XML\347\261\273\345\236\213.md" | 60 +- .../_PG_FOREIGN_DATA_WRAPPERS.md | 132 +- .../Developerguide/_PG_FOREIGN_SERVERS.md | 160 +- .../docs/Developerguide/_PG_FOREIGN_TABLES.md | 132 +- .../_PG_FOREIGN_TABLE_COLUMNS.md | 90 +- .../docs/Developerguide/_PG_USER_MAPPINGS.md | 132 +- ...24\345\257\271\347\255\226\347\225\245.md" | 14 +- .../docs/Developerguide/connection-close.md | 54 +- .../docs/Developerguide/connection-commit.md | 54 +- .../docs/Developerguide/connection-cursor.md | 108 +- .../Developerguide/connection-rollback.md | 54 +- ...56\351\242\230\345\256\232\344\275\215.md" | 6 +- .../curosr-executemany-query-vars_list.md | 88 +- .../zh/docs/Developerguide/cursor-close.md | 48 +- .../cursor-execute-query-vars_list.md | 88 +- .../zh/docs/Developerguide/cursor-fetchall.md | 48 +- .../zh/docs/Developerguide/cursor-fetchone.md | 48 +- content/zh/docs/Developerguide/dblink.md | 148 +- .../STATEMENT_IOSTAT_COMPLEX_RUNTIME.md | 176 +- content/zh/docs/Developerguide/file_fdw.md | 152 +- .../docs/Developerguide/global_rto_status.md | 64 +- .../java-sql-CallableStatement.md | 404 +- .../Developerguide/java-sql-Connection.md | 728 +- .../java-sql-DatabaseMetaData.md | 2472 +-- .../zh/docs/Developerguide/java-sql-Driver.md | 134 +- .../java-sql-PreparedStatement.md | 720 +- .../docs/Developerguide/java-sql-ResultSet.md | 1924 +-- .../java-sql-ResultSetMetaData.md | 330 +- .../docs/Developerguide/java-sql-Statement.md | 724 +- .../Developerguide/javax-naming-Context.md | 176 +- .../javax-naming-spi-InitialContextFactory.md | 50 +- .../javax-sql-ConnectionPoolDataSource.md | 66 +- .../Developerguide/javax-sql-DataSource.md | 120 +- .../javax-sql-PooledConnection.md | 92 +- content/zh/docs/Developerguide/libpq.md | 30 +- content/zh/docs/Developerguide/mysql_fdw.md | 24 +- .../zh/docs/Developerguide/openGauss-SQL.md | 62 +- .../openGauss\344\272\213\345\212\241.md" | 26 +- content/zh/docs/Developerguide/package.md | 26 +- ...lpython-fenced\346\250\241\345\274\217.md" | 254 +- .../zh/docs/Developerguide/postgres_fdw.md | 14 +- .../docs/Developerguide/psycopg2-connect.md | 158 +- content/zh/docs/Developerguide/record.md | 232 +- ...15\345\244\207\345\215\241\344\275\217.md" | 2 +- ...42\345\274\225\346\216\250\350\215\220.md" | 196 +- ...11\346\235\203\345\210\206\347\253\213.md" | 376 +- ...60\346\215\256\344\270\215\345\220\214.md" | 8 +- ...60\350\275\254\346\215\242\351\224\231.md" | 2 +- ...55\346\226\255\350\260\203\344\274\230.md" | 40 +- ...33\345\273\272\347\264\242\345\274\225.md" | 30 +- ...73\346\234\215\345\212\241\345\231\250.md" | 78 +- ...13\345\212\241\346\216\247\345\210\266.md" | 48 +- ...13\345\212\241\347\256\241\347\220\206.md" | 858 +- ...24\347\246\273\350\257\264\346\230\216.md" | 26 +- ...14\346\223\215\344\275\234\347\254\246.md" | 376 +- ...33\345\210\266\347\261\273\345\236\213.md" | 208 +- .../\344\273\213\347\273\215-10.md" | 20 +- .../\344\273\213\347\273\215-17.md" | 20 +- .../\344\273\213\347\273\215-19.md" | 20 +- .../\344\273\213\347\273\215.md" | 22 +- ...31\351\207\214\345\274\200\345\247\213.md" | 312 +- ...45\217\202\346\225\260\347\232\204Hint.md" | 74 +- ...00\351\224\200\345\270\270\351\207\217.md" | 174 +- ...71\346\263\225\351\205\215\347\275\256.md" | 626 +- .../\344\274\252\347\261\273\345\236\213.md" | 244 +- ...14\346\223\215\344\275\234\347\254\246.md" | 302 +- ...15\344\270\262\347\261\273\345\236\213.md" | 92 +- ...74\345\205\245\346\225\260\346\215\256.md" | 22 +- ...61\345\261\202\345\244\215\345\210\266.md" | 62 +- ...61\345\261\202\345\244\215\345\210\266.md" | 80 +- ...17\345\206\231\346\227\245\345\277\227.md" | 394 +- ...44\346\233\264\346\226\260\350\241\250.md" | 140 +- ...01\346\225\260\346\215\256\345\272\223.md" | 264 +- .../\344\275\277\347\224\250MOT.md" | 2 +- ...33\350\241\214\350\260\203\344\274\230.md" | 46 +- ...73\350\276\221\350\247\243\347\240\201.md" | 34 +- ...74\345\207\272\346\225\260\346\215\256.md" | 22 +- ...74\345\205\245\346\225\260\346\215\256.md" | 626 +- ...74\345\205\245\346\225\260\346\215\256.md" | 400 +- ...01\346\225\260\346\215\256\345\272\223.md" | 216 +- ...47\224\250gsql\350\277\236\346\216\245.md" | 36 +- ...\347\224\250\345\207\206\345\244\207-8.md" | 350 +- ...77\347\224\250\345\207\206\345\244\207.md" | 430 +- ...50\345\210\206\345\214\272\350\241\250.md" | 24 +- ...71\346\216\245\351\205\215\347\275\256.md" | 164 +- ...22\345\205\245\346\225\260\346\215\256.md" | 282 +- ...00\351\203\250\350\201\232\347\260\207.md" | 18 +- ...77\347\224\250\346\214\207\345\215\227.md" | 384 +- ...347\224\250\346\214\207\345\257\274-13.md" | 66 +- ...347\224\250\346\214\207\345\257\274-20.md" | 422 +- ...\347\224\250\346\214\207\345\257\274-3.md" | 202 +- ...\347\224\250\347\244\272\344\276\213-8.md" | 192 +- ...77\347\224\250\347\244\272\344\276\213.md" | 290 +- ...54\346\225\260\346\215\256\345\272\223.md" | 128 +- ...25\344\270\215\345\255\230\345\234\250.md" | 16 +- .../\345\200\274\345\255\230\345\202\250.md" | 62 +- .../\345\201\234\347\224\250\350\257\215.md" | 54 +- ...00\344\270\264\346\227\266\350\241\250.md" | 6 +- ...66\350\241\250\345\207\275\346\225\260.md" | 400 +- ...50\346\226\207\346\243\200\347\264\242.md" | 42 +- ...00\347\264\242\346\246\202\350\277\260.md" | 70 +- ...04\351\234\262\351\227\256\351\242\230.md" | 124 +- ...74\345\205\245\346\225\260\346\215\256.md" | 14 +- ...16\346\234\254\346\226\207\346\241\243.md" | 158 +- .../\345\205\263\351\224\256\345\255\227.md" | 13378 ++++++++-------- ...\351\227\255\350\277\236\346\216\245-1.md" | 14 +- ...63\351\227\255\350\277\236\346\216\245.md" | 22 +- ...26\345\231\250\351\200\211\351\241\271.md" | 1446 +- ...75\347\232\204\345\275\261\345\223\215.md" | 34 +- ...75\347\232\204\345\275\261\345\223\215.md" | 26 +- ...66\344\273\226\346\223\215\344\275\234.md" | 26 +- ...73\347\273\237\345\207\275\346\225\260.md" | 8756 +++++----- ...66\344\273\226\347\274\272\347\234\201.md" | 96 +- ...66\344\273\226\350\257\255\345\217\245.md" | 14 +- ...66\345\256\203\345\207\275\346\225\260.md" | 1306 +- ...66\345\256\203\351\200\211\351\241\271.md" | 406 +- ...QL\350\260\203\344\274\230\347\202\271.md" | 26 +- ...72\346\231\257\351\205\215\347\275\256.md" | 982 +- .../\345\206\205\345\255\230-21.md" | 650 +- .../\345\206\205\345\255\230.md" | 142 +- ...15\350\266\263\351\227\256\351\242\230.md" | 2 +- .../\345\206\205\345\255\230\350\241\250.md" | 134 +- ...70\345\236\213\345\272\224\347\224\250.md" | 18 +- ...30\350\241\250\347\211\271\346\200\247.md" | 24 +- ...04\346\272\220\344\275\277\347\224\250.md" | 68 +- ...31\350\257\257\344\277\241\346\201\257.md" | 2644 +-- ...05\351\203\250\345\207\275\346\225\260.md" | 2656 +-- ...45\345\217\243\345\207\275\346\225\260.md" | 4450 ++--- ...73\345\206\231\346\223\215\344\275\234.md" | 26 +- ...14\346\223\215\344\275\234\347\254\246.md" | 1890 +-- ...40\344\275\225\347\261\273\345\236\213.md" | 358 +- ...eft-on-device-\346\217\220\347\244\272.md" | 2 +- .../\345\207\275\346\225\260.md" | 194 +- ...14\346\223\215\344\275\234\347\254\246.md" | 154 +- ...52\346\262\273\344\272\213\345\212\241.md" | 2 +- ...06\346\224\257\350\257\255\345\217\245.md" | 112 +- ...46\350\242\253\351\230\273\345\241\236.md" | 140 +- ...16\347\232\204\351\227\256\351\242\230.md" | 6 +- ...46\350\242\253\351\230\273\345\241\236.md" | 8 +- ...20\350\241\214\347\212\266\346\200\201.md" | 16 +- ...14\347\232\204\351\227\256\351\242\230.md" | 10 +- .../\345\210\206\346\236\220\350\241\250.md" | 80 +- .../\345\210\206\350\257\215\345\231\250.md" | 30 +- ...15\345\231\250\346\265\213\350\257\225.md" | 118 +- ...60\346\215\256\347\261\273\345\236\213.md" | 428 +- ...45\273\272-\345\210\240\351\231\244MOT.md" | 14 +- ...\222\214\347\256\241\347\220\206schema.md" | 310 +- ...06\345\210\206\345\214\272\350\241\250.md" | 698 +- ...41\347\220\206\345\272\217\345\210\227.md" | 160 +- ...06\346\225\260\346\215\256\345\272\223.md" | 216 +- ...41\347\220\206\347\264\242\345\274\225.md" | 490 +- ...14\347\256\241\347\220\206\350\241\250.md" | 26 +- ...06\350\241\250\347\251\272\351\227\264.md" | 360 +- ...41\347\220\206\350\247\206\345\233\276.md" | 110 +- ...33\345\273\272\347\264\242\345\274\225.md" | 118 +- .../\345\210\233\345\273\272\350\241\250.md" | 56 +- ...72\350\265\204\346\272\220\346\261\240.md" | 610 +- ...50\344\270\255\346\225\260\346\215\256.md" | 64 +- ...51\227\256HDFS\346\225\260\346\215\256.md" | 96 +- ...15\346\217\220\346\235\241\344\273\266.md" | 22 +- ...57\344\273\266\345\256\211\350\243\205.md" | 88 +- ...\350\275\275\351\251\261\345\212\250-1.md" | 30 +- ...40\350\275\275\351\251\261\345\212\250.md" | 26 +- ...61\346\225\217\345\207\275\346\225\260.md" | 110 +- ...50\346\200\201\350\257\255\345\217\245.md" | 22 +- ...50\345\214\277\345\220\215\345\235\227.md" | 46 +- ...30\345\202\250\350\277\207\347\250\213.md" | 44 +- ...14\346\240\274\345\274\217\345\214\226.md" | 356 +- .../\345\214\277\345\220\215\345\235\227.md" | 42 +- ...52\346\262\273\344\272\213\345\212\241.md" | 46 +- ...07\347\272\247\345\217\202\346\225\260.md" | 78 +- ...42\345\274\225\346\216\250\350\215\220.md" | 136 +- ...54\345\205\274\345\256\271\346\200\247.md" | 254 +- ...02\350\200\203\346\226\207\347\214\256.md" | 14 +- ...14\346\234\272\345\244\215\345\210\266.md" | 18 +- ...57\346\234\215\345\212\241\345\231\250.md" | 754 +- ...06\347\232\204\346\237\245\350\257\242.md" | 22 +- ...57\345\206\231\350\277\233\347\250\213.md" | 246 +- ...22\345\205\245\346\225\260\346\215\256.md" | 440 +- ...41\347\220\206\345\212\237\350\203\275.md" | 140 +- ...12\350\255\246\346\243\200\346\265\213.md" | 134 +- ...344\273\244\345\217\202\350\200\203-10.md" | 210 +- ...344\273\244\345\217\202\350\200\203-20.md" | 506 +- ...\344\273\244\345\217\202\350\200\203-5.md" | 80 +- ...42\351\224\201\345\207\275\346\225\260.md" | 370 +- ...70\345\205\263\345\217\202\346\225\260.md" | 24 +- ...36\351\231\205\345\244\247\345\260\217.md" | 12 +- ...07\344\273\266\346\215\237\345\235\217.md" | 6 +- ...60\346\215\256\345\244\204\347\220\206.md" | 870 +- ...60\346\215\256\345\244\204\347\220\206.md" | 390 +- ...44\272\216JDBC\345\274\200\345\217\221.md" | 60 +- ...44\272\216ODBC\345\274\200\345\217\221.md" | 122 +- ...272\216Psycopg\345\274\200\345\217\221.md" | 98 +- ...4\272\216libpq\345\274\200\345\217\221.md" | 12 +- ...05\347\220\206\345\273\266\350\277\237.md" | 140 +- ...42\344\274\230\345\214\226\345\231\250.md" | 198 +- ...07\346\234\254\345\214\271\351\205\215.md" | 106 +- ...72\346\234\254\347\273\223\346\236\204.md" | 94 +- ...72\346\234\254\350\257\255\345\217\245.md" | 28 +- ...60\346\230\216\350\257\255\346\263\225.md" | 18 +- .../\345\244\204\347\220\206tsvector.md" | 54 +- ...04\347\220\206\346\237\245\350\257\242.md" | 102 +- ...\347\273\223\346\236\234\351\233\206-1.md" | 10 +- ...06\347\273\223\346\236\234\351\233\206.md" | 372 +- ...06\351\224\231\350\257\257\350\241\250.md" | 294 +- ...07\344\273\275\346\201\242\345\244\215.md" | 80 +- ...47\345\210\266\345\207\275\346\225\260.md" | 506 +- ...07\346\234\215\345\212\241\345\231\250.md" | 40 +- ...66\346\200\201\351\227\256\351\242\230.md" | 4 +- ...66\346\200\201\351\227\256\351\242\230.md" | 28 +- ...26\350\241\250\344\275\277\347\224\250.md" | 160 +- ...42\350\241\250\350\276\276\345\274\217.md" | 270 +- ...45\350\257\242\350\260\203\344\274\230.md" | 1002 +- .../\345\255\220\347\250\213\345\272\217.md" | 8 +- ...45\235\227\345\220\215\347\232\204hint.md" | 62 +- ...27\346\256\265\350\256\276\350\256\241.md" | 194 +- ...14\346\223\215\344\275\234\347\254\246.md" | 3230 ++-- ...27\347\254\246\347\261\273\345\236\213.md" | 316 +- ...345\202\250\350\277\207\347\250\213-18.md" | 20 +- ...345\202\250\350\277\207\347\250\213-20.md" | 20 +- ...30\345\202\250\350\277\207\347\250\213.md" | 58 +- ...52\346\262\273\344\272\213\345\212\241.md" | 78 +- ...11\345\205\250\345\207\275\346\225\260.md" | 720 +- ...50\256\244\350\257\201_postgresql-conf.md" | 788 +- ...11\345\205\250\351\205\215\347\275\256.md" | 156 +- ...32\344\271\211\345\217\230\351\207\217.md" | 154 +- ...32\346\227\266\344\273\273\345\212\241.md" | 72 +- .../\345\256\236\347\216\260.md" | 36 +- ...03\344\274\230\346\241\210\344\276\213.md" | 10 +- ...71\350\241\250\345\256\232\344\271\211.md" | 26 +- ...32\344\271\211\346\246\202\350\277\260.md" | 18 +- .../\345\256\241\350\256\241.md" | 18 +- ...41\350\256\241\345\274\200\345\205\263.md" | 214 +- ...41\350\256\241\346\246\202\350\277\260.md" | 948 +- ...\345\205\245\350\256\244\350\257\201-0.md" | 30 +- ...45\345\205\245\350\256\244\350\257\201.md" | 30 +- ...72\347\234\201\350\256\276\347\275\256.md" | 18 +- .../\345\256\271\351\224\231\346\200\247.md" | 40 +- ...30\345\202\250\350\277\207\347\250\213.md" | 172 +- ...45\350\257\242\346\246\202\350\277\260.md" | 8 +- ...74\347\232\204\345\207\275\346\225\260.md" | 370 +- ...347\243\201\347\233\230\344\270\216MOT.md" | 2 +- ...\241\250\346\211\247\350\241\214VACUUM.md" | 34 +- ...06\347\254\246\347\261\273\345\236\213.md" | 382 +- ...74\345\205\245\346\225\260\346\215\256.md" | 100 +- ...50\345\261\200\345\257\271\350\261\241.md" | 194 +- ...52\346\225\260\346\215\256\345\272\223.md" | 18 +- ...346\225\260\346\215\256\345\272\223-13.md" | 190 +- ...\346\225\260\346\215\256\345\272\223-6.md" | 196 +- ...11\346\225\260\346\215\256\345\272\223.md" | 14 +- ...74\345\207\272\346\225\260\346\215\256.md" | 10 +- ...72\346\225\260\346\215\256\345\272\223.md" | 250 +- ...74\345\207\272\346\250\241\345\274\217.md" | 302 +- .../\345\257\274\345\207\272\350\241\250.md" | 380 +- ...350\275\254\346\215\242\344\270\272MOT.md" | 28 +- ...45\345\205\267\345\257\271\346\216\245.md" | 10 +- ...03\345\260\224\347\261\273\345\236\213.md" | 146 +- ...32\344\275\215\346\211\213\346\256\265.md" | 60 +- ...32\344\275\215\346\241\210\344\276\213.md" | 6 +- ...351\242\230\345\244\204\347\220\206-20.md" | 8 +- ...351\242\230\345\244\204\347\220\206-21.md" | 14 +- ...351\242\230\345\244\204\347\220\206-22.md" | 16 +- ...351\242\230\345\244\204\347\220\206-23.md" | 28 +- ...70\351\207\217\344\270\216\345\256\217.md" | 230 +- ...57\345\205\274\345\256\271\346\200\247.md" | 528 +- ...73\351\224\201\346\203\205\345\206\265.md" | 14 +- ...31\345\205\245\347\244\272\344\276\213.md" | 34 +- ...00\345\217\221\346\225\231\347\250\213.md" | 26 +- ...13\345\272\217\346\216\245\345\217\243.md" | 72 +- ...37\345\274\203\345\207\275\346\225\260.md" | 196 +- ...72\345\221\230\351\200\211\351\241\271.md" | 602 +- ...\345\217\221\346\265\201\347\250\213-1.md" | 208 +- ...00\345\217\221\346\265\201\347\250\213.md" | 10 +- ...00\345\217\221\350\247\204\350\214\203.md" | 18 +- ...76\350\256\241\345\273\272\350\256\256.md" | 26 +- ...72\350\256\256\346\246\202\350\277\260.md" | 18 +- ...47\232\204core\351\227\256\351\242\230.md" | 10 +- .../\345\274\202\346\255\245IO.md" | 294 +- ...75\344\273\244\345\244\204\347\220\206.md" | 52 +- ...56\351\242\230\344\274\232\350\257\235.md" | 12 +- .../\345\275\222\346\241\243.md" | 28 +- ...54\346\225\260\346\215\256\345\272\223.md" | 168 +- ...52\347\216\257\350\257\255\345\217\245.md" | 262 +- ...14\346\255\245\345\207\275\346\225\260.md" | 38 +- ...47\350\203\275\346\227\245\345\277\227.md" | 12 +- ...47\350\203\275\347\273\237\350\256\241.md" | 56 +- ...47\350\203\275\350\260\203\344\274\230.md" | 22 +- ...03\344\274\230\346\200\235\350\267\257.md" | 94 +- ...\217\220\347\244\272-Lock-wait-timeout.md" | 4 +- ...0\241\214SQL\350\257\255\345\217\245-1.md" | 10 +- ...350\241\214SQL\350\257\255\345\217\245.md" | 334 +- ...34\346\227\266\346\212\245\351\224\231.md" | 10 +- ...45\350\257\242\350\257\255\345\217\245.md" | 94 +- ...45\350\257\242\350\257\255\345\217\245.md" | 112 +- ...3\226openGauss\347\211\271\346\200\247.md" | 42 +- ...51\345\261\225\345\207\275\346\225\260.md" | 82 +- .../\346\211\251\345\261\225\346\200\247.md" | 98 +- ...51\345\261\225\350\257\255\346\263\225.md" | 130 +- ...47\274\223\345\255\230\347\232\204Hint.md" | 42 +- ...45\261\225\345\274\200\347\232\204Hint.md" | 68 +- ...50\346\210\267\346\235\203\351\231\220.md" | 4 +- ...45\350\257\242\347\273\223\346\236\234.md" | 204 +- ...45\345\217\243\345\217\202\350\200\203.md" | 18 +- ...07\346\234\254\346\220\234\347\264\242.md" | 22 +- ...47\345\210\266\350\257\255\345\217\245.md" | 34 +- ...41\346\201\257\345\207\275\346\225\260.md" | 86 +- .../\346\220\234\347\264\242\350\241\250.md" | 172 +- ...13\350\257\225\347\216\257\345\242\203.md" | 38 +- ...15\344\275\234\345\256\241\350\256\241.md" | 582 +- .../\346\223\215\344\275\234\347\254\246.md" | 178 +- ...15\344\275\234\347\263\273\347\273\237.md" | 8 +- ...02\346\225\260\350\260\203\344\274\230.md" | 302 +- ...73\347\273\237\351\205\215\347\275\256.md" | 60 +- ...\345\222\214\347\272\246\346\235\237-2.md" | 12 +- ...01\345\222\214\347\272\246\346\235\237.md" | 2 +- ...60\346\215\256\347\261\273\345\236\213.md" | 236 +- ...07\347\214\256\347\273\237\350\256\241.md" | 88 +- ...73\347\273\237\345\207\275\346\225\260.md" | 30 +- ...60\345\200\274\347\261\273\345\236\213.md" | 876 +- ...14\346\223\215\344\275\234\347\254\246.md" | 2236 +-- ...42\347\232\204\345\271\266\345\217\221.md" | 66 +- ...56\345\272\223\344\275\277\347\224\250.md" | 38 +- ...02\346\225\260\350\260\203\344\274\230.md" | 52 +- ...71\350\261\241\345\207\275\346\225\260.md" | 962 +- ...71\350\261\241\345\221\275\345\220\215.md" | 48 +- ...71\350\261\241\350\256\276\350\256\241.md" | 26 +- ...02\346\225\260\350\260\203\344\274\230.md" | 40 +- ...55\345\217\245\345\207\275\346\225\260.md" | 58 +- ...67\347\253\257\347\273\221\346\240\270.md" | 60 +- ...02\346\225\260\350\260\203\344\274\230.md" | 16 +- ...47\345\210\266\345\207\275\346\225\260.md" | 46 +- ...21\347\273\223\346\236\204\345\233\276.md" | 28 +- ...04\347\220\206\350\277\207\347\250\213.md" | 10 +- ...346\215\256\347\261\273\345\236\213-19.md" | 8 +- ...346\215\256\347\261\273\345\236\213-21.md" | 8 +- ...60\346\215\256\347\261\273\345\236\213.md" | 86 +- ...73\345\236\213\350\275\254\346\215\242.md" | 356 +- ...\233\206\345\220\210\345\222\214record.md" | 18 +- .../\346\225\260\347\273\204.md" | 66 +- ...14\346\223\215\344\275\234\347\254\246.md" | 1156 +- ...\225\260\347\273\204\345\222\214record.md" | 14 +- ...04\350\241\250\350\276\276\345\274\217.md" | 186 +- ...07\344\273\266\344\275\215\347\275\256.md" | 126 +- ...73\347\273\237\351\205\215\347\275\256.md" | 90 +- ...34\347\264\242\347\261\273\345\236\213.md" | 324 +- ...14\346\223\215\344\275\234\347\254\246.md" | 1064 +- ...07\346\241\243\346\246\202\345\277\265.md" | 56 +- ...74\345\207\272\346\225\260\346\215\256.md" | 270 +- ...45\345\277\227\345\233\236\346\224\276.md" | 180 +- ...45\345\277\227\347\256\241\347\220\206.md" | 274 +- ...66\351\227\264\347\261\273\345\236\213.md" | 1250 +- ...14\346\223\215\344\275\234\347\254\246.md" | 3232 ++-- ...76\345\274\217\346\270\270\346\240\207.md" | 162 +- ...37\350\256\241\344\277\241\346\201\257.md" | 96 +- ...344\270\255\346\225\260\346\215\256-11.md" | 14 +- ...\344\270\255\346\225\260\346\215\256-4.md" | 14 +- ...50\344\270\255\346\225\260\346\215\256.md" | 80 +- ...344\275\263\345\256\236\350\267\265-14.md" | 378 +- ...344\275\263\345\256\236\350\267\265-20.md" | 8 +- ...57\345\212\250\345\244\261\350\264\245.md" | 16 +- ...41\345\217\267\345\207\275\346\225\260.md" | 122 +- .../\346\234\257\350\257\255\350\241\250.md" | 6 +- ...66\350\241\250\350\276\276\345\274\217.md" | 426 +- ...76\345\274\217\345\207\275\346\225\260.md" | 346 +- ...41\344\273\266\350\257\255\345\217\245.md" | 204 +- ...23\345\211\215\345\217\226\345\200\274.md" | 140 +- ...41\350\256\241\347\273\223\346\236\234.md" | 122 +- ...45\347\234\213\346\225\260\346\215\256.md" | 102 +- ...\350\277\236\346\216\245\346\225\260-5.md" | 228 +- ...23\350\277\236\346\216\245\346\225\260.md" | 268 +- ...13\347\263\273\347\273\237\350\241\250.md" | 274 +- ...15\344\275\234\350\256\260\345\275\225.md" | 230 +- ...37\347\224\237\347\274\226\350\257\221.md" | 26 +- ...41\346\224\266\351\233\206\345\231\250.md" | 40 +- ...346\200\247\350\203\275\347\232\204SQL.md" | 166 +- ...45\350\257\242\350\247\204\345\210\222.md" | 36 +- ...45\350\257\242\351\207\215\345\206\231.md" | 128 +- ...56\344\270\200\350\207\264\346\200\247.md" | 126 +- ...UC\345\217\202\346\225\260rewrite_rule.md" | 274 +- .../\346\243\200\346\237\245\347\202\271.md" | 264 +- .../\346\246\202\350\277\260-0.md" | 2 +- .../\346\246\202\350\277\260-12.md" | 154 +- .../\346\246\202\350\277\260-14.md" | 8 +- .../\346\246\202\350\277\260-15.md" | 94 +- .../\346\246\202\350\277\260-18.md" | 94 +- .../\346\246\202\350\277\260-19.md" | 2 +- .../\346\246\202\350\277\260-20.md" | 8 +- .../\346\246\202\350\277\260-40.md" | 4 +- .../\346\246\202\350\277\260-41.md" | 2 +- .../\346\246\202\350\277\260-42.md" | 2 +- .../\346\246\202\350\277\260-43.md" | 6 +- .../\346\246\202\350\277\260-44.md" | 1030 +- .../\346\246\202\350\277\260-5.md" | 14 +- .../\346\246\202\350\277\260-50.md" | 18 +- .../\346\246\202\350\277\260.md" | 22 +- ...15\346\223\215\344\275\234\347\254\246.md" | 626 +- ...30\345\202\250\345\207\275\346\225\260.md" | 380 +- ...03\346\223\215\344\275\234\347\254\246.md" | 104 +- ...50\257\225TPCC\346\200\247\350\203\275.md" | 538 +- ...07\346\234\254\346\220\234\347\264\242.md" | 18 +- ...61\345\261\202\345\244\215\345\210\266.md" | 26 +- ...21\346\216\247\345\217\202\346\225\260.md" | 70 +- .../\346\270\270\346\240\207.md" | 22 +- ...70\346\240\207\345\276\252\347\216\257.md" | 36 +- ...70\346\240\207\346\223\215\344\275\234.md" | 16 +- ...70\346\240\207\346\246\202\350\277\260.md" | 72 +- ...60\345\205\274\345\256\271\346\200\247.md" | 14 +- ...51\345\214\226\350\247\206\345\233\276.md" | 2 +- ...345\242\203\351\203\250\347\275\262-12.md" | 40 +- ...345\242\203\351\203\250\347\275\262-20.md" | 458 +- ...32\204TCP-IP\350\277\236\346\216\245-4.md" | 60 +- ...\232\204TCP-IP\350\277\236\346\216\245.md" | 60 +- ...32\204TCP-IP\350\277\236\346\216\245-3.md" | 1088 +- ...\232\204TCP-IP\350\277\236\346\216\245.md" | 1104 +- ...56\345\214\205\350\243\205\345\231\250.md" | 28 +- .../\347\224\250\346\210\267.md" | 112 +- ...03\351\231\220\345\256\241\350\256\241.md" | 24 +- ...03\351\231\220\350\256\276\347\275\256.md" | 86 +- ...\344\271\211\345\207\275\346\225\260-2.md" | 98 +- ...32\344\271\211\345\207\275\346\225\260.md" | 10 +- ...70\345\205\263\346\246\202\345\277\265.md" | 44 +- ...\222\214DELETE\345\271\266\345\217\221.md" | 66 +- ...\232\204\345\271\266\345\217\221INSERT.md" | 66 +- ...\232\204\345\271\266\345\217\221UPDATE.md" | 68 +- ...10\347\202\271\345\210\206\346\236\220.md" | 26 +- ...54\344\273\266\350\246\201\346\261\202.md" | 18 +- ...03\344\274\230\350\214\203\345\233\264.md" | 92 +- ...36\346\216\245\344\277\241\346\201\257.md" | 90 +- ...47\232\204core\351\227\256\351\242\230.md" | 6 +- ...01\347\233\230\347\251\272\351\227\264.md" | 58 +- ...56\345\272\223\345\217\252\350\257\273.md" | 8 +- .../\347\244\272\344\276\213-10.md" | 892 +- .../\347\244\272\344\276\213-2.md" | 678 +- .../\347\244\272\344\276\213-20.md" | 40 +- .../\347\244\272\344\276\213-3.md" | 892 +- ...02\346\225\260\351\205\215\347\275\256.md" | 112 +- ...60\346\215\256\350\277\201\347\247\273.md" | 182 +- ...71\351\207\217\347\273\221\345\256\232.md" | 868 +- ...\347\224\250\346\223\215\344\275\234-1.md" | 112 +- ...70\347\224\250\346\223\215\344\275\234.md" | 474 +- ...74\345\207\272\346\225\260\346\215\256.md" | 226 +- ...43\347\240\201\347\244\272\344\276\213.md" | 12 +- ...350\241\214\345\272\224\347\224\250SQL.md" | 398 +- .../\347\244\272\344\276\213.md" | 678 +- ...74\345\207\272\346\225\260\346\215\256.md" | 222 +- ...60\346\215\256\350\277\201\347\247\273.md" | 182 +- ...60\346\215\256\350\277\201\347\247\273.md" | 182 +- .../\347\251\272\350\257\255\345\217\245.md" | 40 +- ...27\345\217\243\345\207\275\346\225\260.md" | 1254 +- ...57\347\240\201\350\257\264\346\230\216.md" | 4 +- ...11\345\276\205\344\272\213\344\273\266.md" | 30 +- ...25\350\241\250\350\276\276\345\274\217.md" | 260 +- ...20\347\272\247\350\260\203\344\274\230.md" | 108 +- ...41\347\220\206\344\272\213\345\212\241.md" | 84 +- .../\347\256\241\347\220\206\345\221\230.md" | 160 +- ...31\345\205\245\346\223\215\344\275\234.md" | 22 +- ...56\345\272\223\345\256\211\345\205\250.md" | 18 +- ...67\345\217\212\346\235\203\351\231\220.md" | 42 +- ...73\345\236\213\350\275\254\346\215\242.md" | 26 +- ...54\346\215\242\345\207\275\346\225\260.md" | 2846 ++-- ...41\346\201\257\345\207\275\346\225\260.md" | 3984 ++--- ...47\350\203\275\345\277\253\347\205\247.md" | 236 +- ...73\347\273\237\346\223\215\344\275\234.md" | 64 +- ...41\347\220\206\345\207\275\346\225\260.md" | 54 +- .../\347\263\273\347\273\237\350\241\250.md" | 414 +- ...73\347\273\237\350\247\206\345\233\276.md" | 18 +- ...06\345\233\276\346\246\202\350\277\260.md" | 28 +- ...73\347\273\237\350\247\206\345\233\276.md" | 458 +- ...03\344\274\230\346\214\207\345\215\227.md" | 22 +- ...77\347\224\250\347\272\246\346\235\237.md" | 74 +- ...46\346\235\237\350\256\276\350\256\241.md" | 72 +- .../\347\272\277\347\250\213\346\261\240.md" | 70 +- ...71\345\206\231\350\247\204\345\210\231.md" | 114 +- ...41\346\201\257\345\207\275\346\225\260.md" | 5790 +++---- ...41\346\201\257\346\224\266\351\233\206.md" | 84 +- ...41\346\201\257\350\260\203\344\274\230.md" | 186 +- ...41\350\256\241\346\227\245\345\277\227.md" | 392 +- ...44\344\270\216\346\233\264\346\226\260.md" | 104 +- ...37\345\210\227\350\256\276\347\275\256.md" | 108 +- .../\347\275\221\347\273\234.md" | 120 +- ...14\346\223\215\344\275\234\347\254\246.md" | 906 +- ...60\345\235\200\347\261\273\345\236\213.md" | 350 +- ...21\347\273\234\351\205\215\347\275\256.md" | 18 +- ...32\351\233\206\345\207\275\346\225\260.md" | 1644 +- ...52\345\212\250\346\270\205\347\220\206.md" | 362 +- ...52\346\262\273\344\272\213\345\212\241.md" | 26 +- ...14\346\223\215\344\275\234\347\254\246.md" | 864 +- ...03\345\233\264\347\261\273\345\236\213.md" | 314 +- ...345\217\226\345\270\256\345\212\251-20.md" | 106 +- ...\345\217\226\345\270\256\345\212\251-4.md" | 85 +- ...\345\217\226\345\270\256\345\212\251-9.md" | 143 +- ...32\346\213\237\347\264\242\345\274\225.md" | 348 +- ...50\241\214\346\225\260\347\232\204Hint.md" | 84 +- ...77\351\227\256\346\216\247\345\210\266.md" | 166 +- ...14\350\241\250\350\276\276\345\274\217.md" | 44 +- ...50\345\222\214\347\264\242\345\274\225.md" | 18 +- .../\350\241\250\350\256\276\350\256\241.md" | 246 +- .../\350\241\250\350\276\276\345\274\217.md" | 26 +- ...30\345\202\250\346\250\241\345\236\213.md" | 238 +- ...04\346\240\274\347\272\246\346\235\237.md" | 248 +- ...24\350\241\250\350\256\276\350\256\241.md" | 26 +- .../\350\247\222\350\211\262.md" | 180 +- .../\350\247\243\346\236\220\345\231\250.md" | 676 +- ...20\345\231\250\346\265\213\350\257\225.md" | 126 +- ...43\346\236\220\346\226\207\346\241\243.md" | 92 +- ...43\346\236\220\346\237\245\350\257\242.md" | 136 +- ...21\345\231\250\345\207\275\346\225\260.md" | 104 +- ...27\347\232\204\344\275\215\347\275\256.md" | 348 +- ...27\347\232\204\345\206\205\345\256\271.md" | 834 +- ...27\347\232\204\346\227\266\351\227\264.md" | 366 +- .../\350\256\276\347\275\256.md" | 108 +- ...11\345\205\250\347\255\226\347\225\245.md" | 18 +- ...11\345\200\274\346\237\245\350\257\242.md" | 22 +- ...11\345\205\250\347\255\226\347\225\245.md" | 1120 +- ...67\346\234\211\346\225\210\346\234\237.md" | 114 +- ...11\345\205\250\347\255\226\347\225\245.md" | 266 +- ...56\346\216\247\345\210\266\347\273\204.md" | 648 +- ...56\345\272\223\345\256\241\350\256\241.md" | 22 +- ...\345\205\250\347\255\226\347\225\245-9.md" | 354 +- ...11\345\205\250\347\255\226\347\225\245.md" | 352 +- ...54\346\225\260\346\215\256\345\272\223.md" | 26 +- ...\344\271\246\346\233\277\346\215\242-8.md" | 126 +- ...01\344\271\246\346\233\277\346\215\242.md" | 126 +- ...\344\271\246\347\224\237\346\210\220-7.md" | 538 +- ...01\344\271\246\347\224\237\346\210\220.md" | 538 +- .../\350\257\215\345\205\270.md" | 34 +- ...15\345\205\270\346\246\202\350\277\260.md" | 66 +- ...15\345\205\270\346\265\213\350\257\225.md" | 48 +- .../\350\257\246\350\247\243.md" | 202 +- ...55\345\217\245\350\241\214\344\270\272.md" | 468 +- ...03\344\274\230\346\265\201\347\250\213.md" | 24 +- ...03\347\224\250\350\257\255\345\217\245.md" | 76 +- .../\350\260\203\350\257\225-20.md" | 244 +- .../\350\260\203\350\257\225-22.md" | 244 +- .../\350\260\203\350\257\225.md" | 322 +- ...37\350\275\275\347\256\241\347\220\206.md" | 166 +- ...60\346\215\256\347\261\273\345\236\213.md" | 104 +- ...56\345\272\223\346\246\202\350\277\260.md" | 380 +- ...23\347\232\204\345\207\275\346\225\260.md" | 202 +- ...47\345\270\201\347\261\273\345\236\213.md" | 94 +- ...75\347\232\204\345\275\261\345\223\215.md" | 38 +- ...04\346\272\220\346\266\210\350\200\227.md" | 30 +- ...41\347\220\206\345\207\206\345\244\207.md" | 22 +- ...04\346\272\220\350\247\204\345\210\222.md" | 168 +- ...37\350\275\275\347\256\241\347\220\206.md" | 14 +- ...41\347\220\206\346\246\202\350\277\260.md" | 40 +- ...13\345\200\274\350\257\255\345\217\245.md" | 120 +- ...57\344\273\266\344\276\235\350\265\226.md" | 68 +- ...57\344\273\266\350\246\201\346\261\202.md" | 14 +- ...14\346\227\266\347\273\237\350\256\241.md" | 14 +- ...24\345\233\236\350\257\255\345\217\245.md" | 18 +- ...10\347\232\204\345\207\275\346\225\260.md" | 260 +- ...45\345\222\214\350\256\244\350\257\201.md" | 18 +- ...\346\225\260\346\215\256\345\272\223-0.md" | 288 +- ...\346\225\260\346\215\256\345\272\223-1.md" | 10 +- ...45\346\225\260\346\215\256\345\272\223.md" | 286 +- ...\272\223_SSL\346\226\271\345\274\217_1.md" | 140 +- ...344\273\245SSL\346\226\271\345\274\217.md" | 282 +- ...45\346\261\240\345\217\202\346\225\260.md" | 34 +- ...36\346\216\245\350\256\276\347\275\256.md" | 386 +- ...30\345\202\250\346\250\241\345\236\213.md" | 54 +- ...60\346\215\256\347\261\273\345\236\213.md" | 34 +- ...41\345\272\223\345\217\202\346\225\260.md" | 174 +- ...77\351\227\256\345\207\275\346\225\260.md" | 286 +- ...31\345\205\245\346\225\260\346\215\256.md" | 30 +- ...61\345\261\202\345\244\215\345\210\266.md" | 72 +- ...33\350\241\214\346\237\245\350\257\242.md" | 274 +- ...15\345\210\266\345\207\275\346\225\260.md" | 550 +- ...21\346\223\215\344\275\234\347\254\246.md" | 188 +- ...73\350\276\221\350\247\243\347\240\201.md" | 2 +- ...43\347\240\201\346\246\202\350\277\260.md" | 92 +- .../\351\205\215\347\275\256LLVM.md" | 26 +- .../\351\205\215\347\275\256SMP.md" | 26 +- ...\345\205\245\350\256\244\350\257\201-1.md" | 238 +- ...45\345\205\245\350\256\244\350\257\201.md" | 248 +- ...07\344\273\266\345\217\202\350\200\203.md" | 304 +- ...34\347\250\213\350\277\236\346\216\245.md" | 114 +- ...15\347\275\256\347\244\272\344\276\213.md" | 222 +- ...76\347\275\256\345\207\275\346\225\260.md" | 114 +- ...20\350\241\214\345\217\202\346\225\260.md" | 14 +- ...42\345\274\225\345\244\261\350\264\245.md" | 4 +- ...15\350\256\276\345\217\202\346\225\260.md" | 992 +- ...55\346\255\242\344\272\213\345\212\241.md" | 8 +- ...76\346\216\245\345\255\227\347\254\246.md" | 174 +- .../\351\224\201\346\223\215\344\275\234.md" | 8 +- .../\351\224\201\347\256\241\347\220\206.md" | 288 +- ...12\345\222\214\346\227\245\345\277\227.md" | 22 +- ...25\350\216\267\350\257\255\345\217\245.md" | 224 +- ...41\346\201\257\345\217\202\350\200\203.md" | 10 +- ...70\345\205\263\345\217\202\346\225\260.md" | 94 +- ...04\345\212\240\345\212\237\350\203\275.md" | 22 +- .../\351\231\204\345\275\225.md" | 18 +- ...20\345\210\266\347\272\246\346\235\237.md" | 20 +- ...20\345\274\217\346\270\270\346\240\207.md" | 92 +- ...31\345\274\217\346\227\245\345\277\227.md" | 22 +- ...04\347\225\231\345\217\202\346\225\260.md" | 42 +- ...34\347\264\242\347\273\223\346\236\234.md" | 128 +- ...33\345\273\272\347\272\277\347\250\213.md" | 8 +- ...03\351\231\220\346\234\272\345\210\266.md" | 28 +- content/zh/docs/FAQ/FAQ.md | 6 +- .../docs/FAQ/\344\272\247\345\223\201FAQ.md" | 68 +- .../docs/FAQ/\344\275\277\347\224\250FAQ.md" | 138 +- content/zh/docs/Glossary/Glossary.md | 1472 +- content/zh/docs/Quickstart/FAQ.md | 458 +- content/zh/docs/Quickstart/Quickstart.md | 22 +- ...67\347\253\257\350\277\236\346\216\245.md" | 492 +- ...06\350\247\243\344\272\247\345\223\201.md" | 252 +- ...77\347\224\250\344\272\247\345\223\201.md" | 34 +- ...60\346\215\256\347\256\241\347\220\206.md" | 1562 +- ...03\351\231\220\347\256\241\347\220\206.md" | 842 +- ...5\256openGauss\345\217\202\346\225\260.md" | 368 +- ...277\207JDBC\346\211\247\350\241\214SQL.md" | 692 +- ...345\205\267\346\211\247\350\241\214SQL.md" | 122 +- ...20\350\241\214\345\217\202\346\225\260.md" | 1452 +- .../CVE\346\274\217\346\264\236.md" | 64 +- content/zh/docs/Releasenotes/Releasenotes.md | 4 +- ...02\344\270\216\350\264\241\347\214\256.md" | 48 +- ...62\347\237\245\351\227\256\351\242\230.md" | 28 +- ...25\345\276\213\345\243\260\346\230\216.md" | 52 +- .../\346\272\220\344\273\243\347\240\201.md" | 38 +- ...10\346\234\254\344\273\213\347\273\215.md" | 152 +- ...50\346\204\217\344\272\213\351\241\271.md" | 12 +- ...71\346\200\247\344\273\213\347\273\215.md" | 336 +- ...50\346\210\267\351\241\273\347\237\245.md" | 12 +- .../Releasenotes/\350\207\264\350\260\242.md" | 8 +- .../Technicalwhitepaper.md | 6 +- ...47\345\223\201\345\256\232\344\275\215.md" | 24 +- ...70\345\236\213\347\273\204\347\275\221.md" | 90 +- ...24\347\224\250\345\234\272\346\231\257.md" | 22 +- ...00\346\234\257\346\214\207\346\240\207.md" | 194 +- ...00\346\234\257\347\211\271\347\202\271.md" | 70 +- ...70\345\277\203\346\212\200\346\234\257.md" | 1534 +- .../\346\234\257\350\257\255\350\241\250.md" | 1340 +- ...57\344\273\266\346\236\266\346\236\204.md" | 86 +- ...15\347\275\256\350\246\201\346\261\202.md" | 168 +- ...50\347\275\262\346\226\271\346\241\210.md" | 16 +- content/zh/docs/Toolreference/FAQ.md | 260 +- .../zh/docs/Toolreference/Toolreference.md | 8 +- content/zh/docs/Toolreference/gaussdb.md | 924 +- content/zh/docs/Toolreference/gs_backup.md | 304 +- .../zh/docs/Toolreference/gs_basebackup.md | 326 +- content/zh/docs/Toolreference/gs_cgroup.md | 1246 +- content/zh/docs/Toolreference/gs_check.md | 2684 ++-- content/zh/docs/Toolreference/gs_checkos.md | 1176 +- content/zh/docs/Toolreference/gs_checkperf.md | 736 +- content/zh/docs/Toolreference/gs_clean.md | 196 +- content/zh/docs/Toolreference/gs_collector.md | 628 +- ...06\345\233\276\345\210\227\350\241\250.md" | 474 +- content/zh/docs/Toolreference/gs_ctl.md | 768 +- content/zh/docs/Toolreference/gs_dropnode.md | 264 +- content/zh/docs/Toolreference/gs_dump.md | 1228 +- content/zh/docs/Toolreference/gs_dumpall.md | 560 +- content/zh/docs/Toolreference/gs_encrypt.md | 266 +- content/zh/docs/Toolreference/gs_expansion.md | 342 +- content/zh/docs/Toolreference/gs_guc.md | 826 +- content/zh/docs/Toolreference/gs_initdb.md | 642 +- content/zh/docs/Toolreference/gs_install.md | 256 +- content/zh/docs/Toolreference/gs_om.md | 1166 +- .../docs/Toolreference/gs_plan_simulator.md | 226 +- .../zh/docs/Toolreference/gs_postuninstall.md | 236 +- .../zh/docs/Toolreference/gs_preinstall.md | 712 +- content/zh/docs/Toolreference/gs_probackup.md | 1322 +- content/zh/docs/Toolreference/gs_restore.md | 778 +- content/zh/docs/Toolreference/gs_ssh.md | 144 +- content/zh/docs/Toolreference/gs_sshexkey.md | 320 +- content/zh/docs/Toolreference/gs_tar.md | 8 +- content/zh/docs/Toolreference/gs_uninstall.md | 156 +- .../zh/docs/Toolreference/gs_upgradectl.md | 488 +- content/zh/docs/Toolreference/gstrace.md | 318 +- content/zh/docs/Toolreference/kadmin-local.md | 20 +- content/zh/docs/Toolreference/kdb5_util.md | 20 +- content/zh/docs/Toolreference/kdestroy.md | 20 +- content/zh/docs/Toolreference/kinit.md | 20 +- content/zh/docs/Toolreference/klist.md | 20 +- content/zh/docs/Toolreference/krb5kdc.md | 20 +- .../docs/Toolreference/pg_archivecleanup.md | 106 +- content/zh/docs/Toolreference/pg_config.md | 272 +- .../zh/docs/Toolreference/pg_controldata.md | 92 +- .../zh/docs/Toolreference/pg_recvlogical.md | 300 +- content/zh/docs/Toolreference/pg_resetxlog.md | 136 +- content/zh/docs/Toolreference/pscp.md | 136 +- content/zh/docs/Toolreference/pssh.md | 128 +- content/zh/docs/Toolreference/transfer-py.md | 112 +- ...67\347\253\257\345\267\245\345\205\267.md" | 4798 +++--- ...67\344\270\200\350\247\210\350\241\250.md" | 194 +- ...41\347\253\257\345\267\245\345\205\267.md" | 38 +- ...50\347\232\204\345\267\245\345\205\267.md" | 130 +- content/zh/docs/installation/installation.md | 18 +- ...02\347\202\271\345\256\211\350\243\205.md" | 180 +- ...11\350\243\205\346\265\201\347\250\213.md" | 16 +- ...12\347\224\250\346\210\267\347\273\204.md" | 10 +- ...32\347\211\210\345\256\211\350\243\205.md" | 8 +- ...11\350\243\205\347\216\257\345\242\203.md" | 66 +- ...1\350\243\205\347\216\257\345\242\2031.md" | 628 +- ...15\347\275\256\346\226\207\344\273\266.md" | 238 +- ...11\350\243\205\347\216\257\345\242\203.md" | 152 +- ...26\346\225\260\346\215\256\345\272\223.md" | 6 +- ...02\347\202\271\345\256\211\350\243\205.md" | 156 +- .../\345\215\270\350\275\275openGauss.md" | 34 +- ...07\346\234\272\345\217\257\350\257\273.md" | 2 +- .../\345\256\211\350\243\205openGauss.md" | 8 +- ...11\350\243\205\345\207\206\345\244\207.md" | 8 +- ...1\350\243\205\345\207\206\345\244\2071.md" | 18 +- ...11\350\243\205\346\246\202\350\277\260.md" | 4 +- ...11\350\243\205\351\252\214\350\257\201.md" | 10 +- ...71\345\231\250\345\256\211\350\243\205.md" | 30 +- ...47\350\241\214\345\256\211\350\243\205.md" | 32 +- ...00\347\211\210\345\256\211\350\243\205.md" | 22 +- ...26\345\256\211\350\243\205\345\214\205.md" | 8 +- ...6\345\256\211\350\243\205\345\214\2051.md" | 74 +- 2088 files changed, 195858 insertions(+), 195794 deletions(-) diff --git a/content/zh/docs/Administratorguide/Administratorguide.md b/content/zh/docs/Administratorguide/Administratorguide.md index 8992bb2e4..7a836377e 100644 --- a/content/zh/docs/Administratorguide/Administratorguide.md +++ b/content/zh/docs/Administratorguide/Administratorguide.md @@ -1,4 +1,4 @@ -# 管理员指南 - -本文档提供了openGauss数据库常用的管理员操作,方便管理员更好地使用openGauss。本文档适用于所有使用openGauss数据库的管理员。 - +# 管理员指南 + +本文档提供了 openGauss 数据库常用的管理员操作,方便管理员更好地使用 openGauss 。本文档适用于所有使用 openGauss 数据库的管理员。 + diff --git "a/content/zh/docs/Administratorguide/\344\276\213\350\241\214\347\273\264\346\212\244.md" "b/content/zh/docs/Administratorguide/\344\276\213\350\241\214\347\273\264\346\212\244.md" index bd7e2fb91..d7e738db6 100644 --- "a/content/zh/docs/Administratorguide/\344\276\213\350\241\214\347\273\264\346\212\244.md" +++ "b/content/zh/docs/Administratorguide/\344\276\213\350\241\214\347\273\264\346\212\244.md" @@ -1,1721 +1,1721 @@ -# 例行维护 - - - -- [日维护检查项](#日维护检查项) -- [检查操作系统参数](#检查操作系统参数) -- [检查openGauss健康状态](#检查opengauss健康状态) -- [检查数据库性能](#检查数据库性能) -- [检查和清理日志](#检查和清理日志) -- [检查时间一致性](#检查时间一致性) -- [检查应用连接数](#检查应用连接数) -- [例行维护表](#例行维护表) -- [例行重建索引](#例行重建索引) -- [数据安全维护建议](#数据安全维护建议) -- [慢SQL诊断](#慢SQL诊断) - - - -为保证openGauss数据库中的数据安全,避免丢失数据和非法访问数据等事故发生,请仔细阅读以下内容。 - -## 日维护检查项 - -### 检查openGauss状态 - -通过openGauss提供的工具查询数据库和实例状态,确认数据库和实例都处于正常的运行状态,可以对外提供数据服务。 - -- 检查实例状态 - - ``` - gs_check -U omm -i CheckClusterState - ``` - -- 检查参数 - - ``` - openGauss=# SHOW parameter_name; - ``` - - 上述命令中,parameter_name需替换成具体的参数名称。 - -- 修改参数 - - ``` - gs_guc reload -D /gaussdb/data/dbnode -c "paraname=value" - ``` - - -### 检查锁信息 - -锁机制是数据库保证数据一致性的重要手段,检查相关信息可以检查数据库的事务和运行状况。 - -- 查询数据库中的锁信息 - - ``` - openGauss=# SELECT * FROM pg_locks; - ``` - -- 查询等待锁的线程状态信息 - - ``` - openGauss=# SELECT * FROM pg_thread_wait_status WHERE wait_status = 'acquire lock'; - ``` - - - -- 结束系统进程 - - 查找正在运行的系统进程,然后使用kill命令结束此进程。 - - ``` - ps ux - kill -9 pid - ``` - - -### 统计事件数据 - -SQL语句长时间运行会占用大量系统资源,用户可以通过查看事件发生的时间,占用内存大小来了解现在数据库运行状态。 - -- 查询事件的时间 - - 查询事件的线程启动时间、事务启动时间、SQL启动时间以及状态变更时间。 - - ``` - openGauss=# SELECT backend_start,xact_start,query_start,state_change FROM pg_stat_activity; - ``` - -- 查询当前服务器的会话计数信息 - - ``` - openGauss=# SELECT count(*) FROM pg_stat_activity; - ``` - -- 系统级统计信息 - - 查询当前使用内存最多的会话信息。 - - ``` - openGauss=# SELECT * FROM pv_session_memory_detail() ORDER BY usedsize desc limit 10; - ``` - - -### 对象检查 - -表、索引、分区、约束等是数据库的核心存储对象,其核心信息和对象维护是DBA重要的日常工作。 - -- 查看表的详细信息 - - ``` - openGauss=# \d+ table_name - ``` - -- 查询表统计信息 - - ``` - openGauss=# SELECT * FROM pg_statistic; - ``` - -- 查看索引的详细信息 - - ``` - openGauss=# \d+ index_name - ``` - -- 查询分区表信息 - - ``` - openGauss=# SELECT * FROM pg_partition; - ``` - -- 收集统计信息 - - 使用ANALYZE语句收集数据库相关的统计信息。 - - 使用VACUUM语句可以回收空间并更新统计信息。 - -- 查询约束信息 - - ``` - openGauss=# SELECT * FROM pg_constraint; - ``` - - -### SQL报告检查 - -使用EXPLAIN语句查看执行计划。 - -### 备份 - -数据备份重于一切,日常应检查备份执行情况,并检查备份有效性,确保备份能够保障数据安全,备份安全加密也应兼顾。 - -- 指定用户导出数据库 - - ``` - gs_dump dbname -p port -f out.sql -U user_name -W password - ``` - -- 导出schema - - ``` - gs_dump dbname -p port -n schema_name -f out.sql - ``` - -- 导出table - - ``` - gs_dump dbname -p port -t table_name -f out.sql - ``` - - -### 基本信息检查 - -基本信息包括版本、组件、补丁集等信息,定期检查数据库信息并登记在案是数据库生命周期管理的重要内容之一。 - -- 版本信息 - - ``` - openGauss=# SELECT version(); - ``` - -- 容量检查 - - ``` - openGauss=# SELECT pg_table_size('table_name'); - openGauss=# SELECT pg_database_size('database_name'); - ``` - - -## 检查操作系统参数 - -### 检查办法 - -通过openGauss提供的gs\_checkos工具可以完成操作系统状态检查。 - -**前提条件** - -- 当前的硬件和网络环境正常。 -- 各主机间root互信状态正常。 -- 只能使用root用户执行gs\_checkos命令。 - -**操作步骤** - -1. 以root用户身份登录任意一台服务器。 -2. 执行如下命令对openGauss节点服务器的OS参数进行检查。 - - ``` - gs_checkos -i A - ``` - - 检查节点服务器的OS参数的目的是保证openGauss正常通过预安装,并且在安装成功后可以安全高效的运行。详细的检查项目请参见《openGauss 工具参考》中“服务端工具 \> gs\_checkos”章节。 - - -**示例** - -执行gs\_checkos前需要先使用gs\_preinstall工具执行前置脚本,准备环境。以参数“A”为例。 - -``` -gs_checkos -i A -Checking items: - A1. [ OS version status ] : Normal - A2. [ Kernel version status ] : Normal - A3. [ Unicode status ] : Normal - A4. [ Time zone status ] : Normal - A5. [ Swap memory status ] : Normal - A6. [ System control parameters status ] : Normal - A7. [ File system configuration status ] : Normal - A8. [ Disk configuration status ] : Normal - A9. [ Pre-read block size status ] : Normal - A10.[ IO scheduler status ] : Normal - A11.[ Network card configuration status ] : Normal - A12.[ Time consistency status ] : Warning - A13.[ Firewall service status ] : Normal - A14.[ THP service status ] : Normal -Total numbers:14. Abnormal numbers:0. Warning number:1. -``` - -以参数“B”为例。 - -``` -gs_checkos -i B -Setting items: - B1. [ Set system control parameters ] : Normal - B2. [ Set file system configuration value ] : Normal - B3. [ Set pre-read block size value ] : Normal - B4. [ Set IO scheduler value ] : Normal - B5. [ Set network card configuration value ] : Normal - B6. [ Set THP service ] : Normal - B7. [ Set RemoveIPC value ] : Normal - B8. [ Set Session Process ] : Normal -Total numbers:6. Abnormal numbers:0. Warning number:0. -``` - -### 异常处理 - -使用gs\_checkos检查或设置状态为Abnormal,可以使用如下命令查看详细的错误信息。 - -``` -gs_checkos -i A --detail -``` - -其中,Abnormal为必须处理项,影响openGauss安装。Warning可以不处理,不会影响openGauss安装。 - -- 如果操作系统版本(A1)检查项检查结果为Abnormal,需要将不属于混编范围的操作系统版本替换为混编范围内的操作系统版本。 -- 如果内核版本(A2)检查项检查结果为Warning,则表示openGauss集群内操作系统平台的内核版本不一致。 -- 如果Unicode状态(A3)检查项检查结果为Abnormal,需要将各主机的字符集设置为相同的字符集,可以在/etc/profile文件中添加“export LANG=XXX”(XXX为Unicode编码)。 - - ``` - vim /etc/profile - ``` - -- 如果时区状态(A4)检查项检查结果为Abnormal,需要将各主机的时区设置为相同时区,可以将/usr/share/zoneinfo/目录下的时区文件拷贝为/etc/localtime文件。 - - ``` - cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime - ``` - -- 如果交换内存状态(A5)检查项检查结果为Abnormal,可能是因为Swap空间大于Mem空间,可减小Swap解决或者增大Mem空间解决。 -- 如果系统控制参数(A6)检查项检查结果为Abnormal,可以使用以下两种方法进行设置。 - - 可以使用如下命令进行设置。 - - ``` - gs_checkos -i B1 - ``` - - - 根据错误提示信息,在/etc/sysctl.conf文件中进行设置。然后执行sysctl -p使其生效。 - - ``` - vim /etc/sysctl.conf - ``` - - - -- 如果文件系统配置状态(A7)检查项检查结果为Abnormal,可以使用如下命令进行设置。 - - ``` - gs_checkos -i B2 - ``` - -- 如果磁盘配置状态(A8)检查项检查结果为Abnormal,需修改磁盘挂载格式为:“rw,noatime,inode64,allocsize=16m”。 - - 使用linux的man mount命令挂载XFS选项: - - ``` - rw,noatime,inode64,allocsize=16m - ``` - - 也可以在/etc/fstab文件中设定XFS选项。如下示例: - - ``` - /dev/data /data xfs rw,noatime,inode64,allocsize=16m 0 0 - ``` - -- 如果预读块大小(A9)检查项检查结果为Abnormal,可以使用如下命令进行设置。 - - ``` - gs_checkos -i B3 - ``` - -- 如果IO调度状态(A10)检查项检查结果为Abnormal,可以使用如下命令进行设置。 - - ``` - gs_checkos -i B4 - ``` - - -- 如果网卡配置状态(A11)检查项检查结果为Warning,可以使用如下命令进行设置。 - - ``` - gs_checkos -i B5 - ``` - -- 如果时间一致性(A12)检查项检查结果为Abnormal,需检查是否安装ntp服务,以及ntp服务是否启动;并与ntp时钟源同步。 -- 如果防火墙状态(A13)检查项检查结果为Abnormal,需关闭防火墙服务。使用如下命令进行设置。 - - SuSE: - - ``` - SuSEfirewall2 stop - ``` - - - RedHat7: - - ``` - systemctl disable firewalld - systemctl stop firewalld - ``` - - - RedHat6: - - ``` - service iptables stop - ``` - - -- 如果THP服务(A14)检查项检查结果为Abnormal,可以使用如下命令进行设置。 - - ``` - gs_checkos -i B6 - ``` - - -## 检查openGauss健康状态 - -### 检查办法 - -通过openGauss提供的gs\_check工具可以开展openGauss健康状态检查。 - -**注意事项** - -- 扩容新节点检查只能在root用户下执行,其他场景都必须在omm用户下执行。 -- 必须指定-i或-e参数,-i会检查指定的单项,-e会检查对应场景配置中的多项。 -- 如果-i参数中不包含root类检查项或-e场景配置列表中没有root类检查项,则不需要交互输入root权限的用户及其密码。 -- 可使用--skip-root-items跳过检查项中包含的root类检查,以免需要输入root权限用户及密码。 -- 检查扩容新节点与现有节点之间的一致性,在现有节点执行gs\_check命令指定--hosts参数进行检查,其中hosts文件中需要写入新节点ip。 - -**操作步骤** - -方式1: - -1. 以操作系统用户omm登录数据库主节点。 -2. 执行如下命令对openGauss数据库状态进行检查。 - - ``` - gs_check -i CheckClusterState - ``` - - 其中,-i指定检查项,注意区分大小写。格式:-i CheckClusterState、-i CheckCPU或-i CheckClusterState,CheckCPU。 - - 取值范围为所有支持的检查项名称,详细列表请参见《openGauss 工具参考》中“服务端工具 \> gs\_checkos \> openGauss状态检查表”,用户可以根据需求自己编写新检查项。 - - -方式2: - -1. 以操作系统用户omm登录数据库主节点。 - -2. 执行如下命令对openGauss数据库进行健康检查。 - - ``` - gs_check -e inspect - ``` - - 其中,-e指定场景名,注意区分大小写。格式:-e inspect或-e upgrade。 - - 取值范围为所有支持的巡检场景名称,默认列表包括:inspect(例行巡检)、upgrade(升级前巡检)、install(安装)、binary\_upgrade(就地升级前巡检)、health(健康检查巡检)、slow_node(节点)、longtime(耗时长巡检),用户可以根据需求自己编写场景。 - - -openGauss巡检的主要作用是在openGauss运行过程中,检查整个openGauss状态是否正常,或者重大操作前(升级、扩容),确保openGauss满足操作所需的环境条件和状态条件。详细的巡检项目和场景请参见《openGauss 工具参考》中“服务端工具 \> gs\_checkos \> openGauss状态检查表”。 - -**示例** - -执行单项检查结果: - -``` -perfadm@lfgp000700749:/opt/huawei/perfadm/tool/script> gs_check -i CheckCPU -Parsing the check items config file successfully -Distribute the context file to remote hosts successfully -Start to health check for the cluster. Total Items:1 Nodes:3 - -Checking... [=========================] 1/1 -Start to analysis the check result -CheckCPU....................................OK -The item run on 3 nodes. success: 3 - -Analysis the check result successfully -Success. All check items run completed. Total:1 Success:1 Failed:0 -For more information please refer to /opt/huawei/wisequery/script/gspylib/inspection/output/CheckReport_201902193704661604.tar.gz -``` - -本地执行结果: - -``` -perfadm@lfgp000700749:/opt/huawei/perfadm/tool/script> gs_check -i CheckCPU -L - -2017-12-29 17:09:29 [NAM] CheckCPU -2017-12-29 17:09:29 [STD] 检查主机CPU占用率,如果idle 大于30%并且iowait 小于 30%.则检查项通过,否则检查项不通过 -2017-12-29 17:09:29 [RST] OK - -2017-12-29 17:09:29 [RAW] -Linux 4.4.21-69-default (lfgp000700749) 12/29/17 _x86_64_ - -17:09:24 CPU %user %nice %system %iowait %steal %idle -17:09:25 all 0.25 0.00 0.25 0.00 0.00 99.50 -17:09:26 all 0.25 0.00 0.13 0.00 0.00 99.62 -17:09:27 all 0.25 0.00 0.25 0.13 0.00 99.37 -17:09:28 all 0.38 0.00 0.25 0.00 0.13 99.25 -17:09:29 all 1.00 0.00 0.88 0.00 0.00 98.12 -Average: all 0.43 0.00 0.35 0.03 0.03 99.17 -``` - -执行场景检查结果: - -``` -[perfadm@SIA1000131072 Check]$ gs_check -e inspect -Parsing the check items config file successfully -The below items require root privileges to execute:[CheckBlockdev CheckIOrequestqueue CheckIOConfigure CheckCheckMultiQueue CheckFirewall CheckSshdService CheckSshdConfig CheckCrondService CheckBootItems CheckFilehandle CheckNICModel CheckDropCache] -Please enter root privileges user[root]:root -Please enter password for user[root]: -Please enter password for user[root] on the node[10.244.57.240]: -Check root password connection successfully -Distribute the context file to remote hosts successfully -Start to health check for the cluster. Total Items:59 Nodes:2 - -Checking... [ ] 21/57 -Checking... [=========================] 59/57 -Start to analysis the check result -CheckClusterState...........................OK -The item run on 2 nodes. success: 2 - -CheckDBParams...............................OK -The item run on 1 nodes. success: 1 - -CheckDebugSwitch............................OK -The item run on 2 nodes. success: 2 - -CheckDirPermissions.........................OK -The item run on 2 nodes. success: 2 - -CheckReadonlyMode...........................OK -The item run on 1 nodes. success: 1 - -CheckEnvProfile.............................OK -The item run on 2 nodes. success: 2 (consistent) -The success on all nodes value: -GAUSSHOME /usr1/gaussdb/app -LD_LIBRARY_PATH /usr1/gaussdb/app/lib -PATH /usr1/gaussdb/app/bin - - -CheckBlockdev...............................OK -The item run on 2 nodes. success: 2 - -CheckCurConnCount...........................OK -The item run on 1 nodes. success: 1 - -CheckCursorNum..............................OK -The item run on 1 nodes. success: 1 - -CheckPgxcgroup..............................OK -The item run on 1 nodes. success: 1 - -CheckDiskFormat.............................OK -The item run on 2 nodes. success: 2 - -CheckSpaceUsage.............................OK -The item run on 2 nodes. success: 2 - -CheckInodeUsage.............................OK -The item run on 2 nodes. success: 2 - -CheckSwapMemory.............................OK -The item run on 2 nodes. success: 2 - -CheckLogicalBlock...........................OK -The item run on 2 nodes. success: 2 - -CheckIOrequestqueue.....................WARNING -The item run on 2 nodes. warning: 2 -The warning[host240,host157] value: -On device (vdb) 'IO Request' RealValue '256' ExpectedValue '32768' -On device (vda) 'IO Request' RealValue '256' ExpectedValue '32768' - -CheckMaxAsyIOrequests.......................OK -The item run on 2 nodes. success: 2 - -CheckIOConfigure............................OK -The item run on 2 nodes. success: 2 - -CheckMTU....................................OK -The item run on 2 nodes. success: 2 (consistent) -The success on all nodes value: -1500 - -CheckPing...................................OK -The item run on 2 nodes. success: 2 - -CheckRXTX...................................NG -The item run on 2 nodes. ng: 2 -The ng[host240,host157] value: -NetWork[eth0] -RX: 256 -TX: 256 - - -CheckNetWorkDrop............................OK -The item run on 2 nodes. success: 2 - -CheckMultiQueue.............................OK -The item run on 2 nodes. success: 2 - -CheckEncoding...............................OK -The item run on 2 nodes. success: 2 (consistent) -The success on all nodes value: -LANG=en_US.UTF-8 - -CheckFirewall...............................OK -The item run on 2 nodes. success: 2 - -CheckKernelVer..............................OK -The item run on 2 nodes. success: 2 (consistent) -The success on all nodes value: -3.10.0-957.el7.x86_64 - -CheckMaxHandle..............................OK -The item run on 2 nodes. success: 2 - -CheckNTPD...................................OK -host240: NTPD service is running, 2020-06-02 17:00:28 -host157: NTPD service is running, 2020-06-02 17:00:06 - - -CheckOSVer..................................OK -host240: The current OS is centos 7.6 64bit. -host157: The current OS is centos 7.6 64bit. - - -CheckSysParams..........................WARNING -The item run on 2 nodes. warning: 2 -The warning[host240,host157] value: -Warning reason: variable 'net.ipv4.tcp_retries1' RealValue '3' ExpectedValue '5'. -Warning reason: variable 'net.ipv4.tcp_syn_retries' RealValue '6' ExpectedValue '5'. - - -CheckTHP....................................OK -The item run on 2 nodes. success: 2 - -CheckTimeZone...............................OK -The item run on 2 nodes. success: 2 (consistent) -The success on all nodes value: -+0800 - -CheckCPU....................................OK -The item run on 2 nodes. success: 2 - -CheckSshdService............................OK -The item run on 2 nodes. success: 2 - -Warning reason: UseDNS parameter is not set; expected: no - -CheckCrondService...........................OK -The item run on 2 nodes. success: 2 - -CheckStack..................................OK -The item run on 2 nodes. success: 2 (consistent) -The success on all nodes value: -8192 - -CheckSysPortRange...........................OK -The item run on 2 nodes. success: 2 - -CheckMemInfo................................OK -The item run on 2 nodes. success: 2 (consistent) -The success on all nodes value: -totalMem: 31.260929107666016G - -CheckHyperThread............................OK -The item run on 2 nodes. success: 2 - -CheckTableSpace.............................OK -The item run on 1 nodes. success: 1 - - -CheckSysadminUser...........................OK -The item run on 1 nodes. success: 1 - - -CheckGUCConsistent..........................OK -All DN instance guc value is consistent. - -CheckMaxProcMemory..........................OK -The item run on 1 nodes. success: 1 - -CheckBootItems..............................OK -The item run on 2 nodes. success: 2 - -CheckHashIndex..............................OK -The item run on 1 nodes. success: 1 - -CheckPgxcRedistb............................OK -The item run on 1 nodes. success: 1 - -CheckNodeGroupName..........................OK -The item run on 1 nodes. success: 1 - -CheckTDDate.................................OK -The item run on 1 nodes. success: 1 - -CheckDilateSysTab...........................OK -The item run on 1 nodes. success: 1 - -CheckKeyProAdj..............................OK -The item run on 2 nodes. success: 2 - -CheckProStartTime.......................WARNING -host157: -STARTED COMMAND -Tue Jun 2 16:57:18 2020 /usr1/dmuser/dmserver/metricdb1/server/bin/gaussdb --single_node -D /usr1/dmuser/dmb1/data -p 22204 -Mon Jun 1 16:15:15 2020 /usr1/gaussdb/app/bin/gaussdb -D /usr1/gaussdb/data/dn1 -M standby - - -CheckFilehandle.............................OK -The item run on 2 nodes. success: 2 - -CheckRouting................................OK -The item run on 2 nodes. success: 2 - -CheckNICModel...............................OK -The item run on 2 nodes. success: 2 (consistent) -The success on all nodes value: -version: 1.0.1 -model: Red Hat, Inc. Virtio network device - - -CheckDropCache..........................WARNING -The item run on 2 nodes. warning: 2 -The warning[host240,host157] value: -No DropCache process is running - -CheckMpprcFile..............................NG -The item run on 2 nodes. ng: 2 -The ng[host240,host157] value: -There is no mpprc file - -Analysis the check result successfully -Failed. All check items run completed. Total:57 Success:50 Warning:5 NG:2 -For more information please refer to /usr1/gaussdb/tool/script/gspylib/inspection/output/CheckReport_inspect611.tar.gz - -``` - -### 异常处理 - -如果发现检查结果异常,可以根据以下内容进行修复。 - -**表 1** 检查openGauss运行状态 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

检查项

-

异常状态

-

处理方法

-

CheckClusterState(检查openGauss状态)

-

openGauss未启动或openGauss实例未启动

-

使用以下命令启动openGauss及实例。

-
gs_om -t start
-

openGauss状态异常或openGauss实例异常

-

检查各主机、实例状态,根据状态信息进行排查。

-
gs_check -i CheckClusterState
-

CheckDBParams(检查数据库参数)

-

数据库参数错误

-

通过gs_guc工具修改数据库参数为指定值。

-

CheckDebugSwitch(检查调试日志)

-

日志级别不正确

-

使用gs_guc工具将log_min_messages改为指定内容。

-

CheckDirPermissions(检查目录权限)

-

路径权限错误

-

修改对应目录权限为指定数值(750/700)。

-
chmod 750 DIR
-

CheckReadonlyMode(检查只读模式)

-

只读模式被打开

-

确认数据库节点所在磁盘使用率未超阈值(默认60%)且未在执行其他运维操作。

-
gs_check -i CheckDataDiskUsage
-ps ux
-

使用gs_guc工具关闭openGauss只读模式。

-
gs_guc reload -N all -I all -c 'default_transaction_read_only = off' 
-

CheckEnvProfile(检查环境变量)

-

环境变量不一致

-

重新执行前置更新环境变量信息。

-

CheckBlockdev(检查磁盘预读块)

-

磁盘预读块大小不为16384

-

使用gs_checkos设置预读块大小为16384KB,并写入自启动文件。

-
gs_checkos -i B3
-

CheckCursorNum(检查游标数)

-

检查游标数失败

-

检查数据库能否正常连接,openGauss状态是否正常。

-

CheckPgxcgroup(检查重分布状态)

-

有未完成重分布的pgxc_group表

-

继续完成扩容或缩容的数据重分布操作。

-
gs_expand、gs_shrink
-

CheckDiskFormat(检查磁盘配置)

-

各节点磁盘配置不一致

-

将各节点的磁盘规格改为相同。

-

CheckSpaceUsage(检查磁盘空间使用率)

-

磁盘可用空间不足

-

清理或扩展对应目录所在的磁盘。

-

CheckInodeUsage(检查磁盘索引使用率)

-

磁盘可用索引不足

-

清理或扩展对应目录所在的磁盘。

-

CheckSwapMemory(检查交换内存)

-

交换内存大于物理内存

-

将交换内存调小或关闭。

-

CheckLogicalBlock(检查磁盘逻辑块)

-

磁盘逻辑块大小不为512

-

使用gs_checkos修改磁盘逻辑块大小为512KB,并写入开机自启动文件。

-
gs_checkos -i B4
-

CheckIOrequestqueue(检查IO请求)

-

IO请求值不为32768

-

使用gs_checkos设置IO请求值为32768,并写入开机自启动文件。

-
gs_checkos -i B4
-

CheckCurConnCount(检查当前连接数)111

-

当前连接数超过最大连接数的90%

-

断开未使用的数据库主节点连接。

-

CheckMaxAsyIOrequests(检查最大异步请求)

-

最大异步请求值小于104857600或当前节点数据库实例数乘以1048576

-

使用gs_checkos设置最大异步请求值为104857600和当前节点数据库实例数乘以1048576中的最大值。

-
gs_checkos -i B4
-

CheckMTU(检查MTU值)

-

MTU值不一致

-

设置各节点的MTU一致为1500或8192。

-
ifconfig eth* MTU 1500
-

CheckIOConfigure(检查IO配置)

-

IO配置不是deadline

-

使用gs_checkos设置IO配置为deadline,并写入开机自启动文件。

-
gs_checkos -i B4
-

CheckRXTX(检查RXTX值)

-

网卡RX/TX值不是4096

-

使用checkos设置openGauss使用的物理网卡RX/TX值为4096。

-
gs_checkos -i B5
-

CheckPing(检查网络通畅)

-

存在openGauss IP无法ping通

-

检查异常ip间网络设置和状态、防火墙状态。

-

CheckNetWorkDrop(检查网络丢包率)

-

网络通信丢包率高于1%

-

检查对应IP间网络负载、状态。

-

CheckMultiQueue(检查网卡多队列)

-

未开启网卡多队列并未将网卡中断绑定到不同CPU核心

-

开启网卡多队列并将网卡队列中断绑定到不同的CPU核心。

-

CheckEncoding(检查编码格式)

-

各节点编码格式不一致

-

在/etc/profile中写入一致的编码信息。

-
echo "export LANG=XXX" >> /etc/profile
-

CheckFirewall(检查防火墙)

-

防火墙未关闭

-

关闭防火墙服务。

-
systemctl disable firewalld.service
-systemctl stop firewalld.service
-

CheckMaxHandle(检查最大文件句柄数)

-

最大文件句柄数小于1000000

-

设置91-nofile.conf/90-nofile.conf最大文件句柄数软硬限制为1000000。

-
gs_checkos -i B2
-

CheckNTPD(检查时间同步服务)

-

NTPD服务未开启或时间误差超过一分钟

-

开启NTPD服务并设置时钟一致。

-

CheckSysParams(检查操作系统参数)

-

操作系统参数设置不满足要求

-

使用gs_checkos进行参数设置或手动设置。

-
gs_checkos -i B1
-vim /etc/sysctl.conf
-

CheckTHP(检查THP服务)

-

THP服务未开启

-

使用gs_checkos设置THP服务。

-
gs_checkos -i B6
-

CheckTimeZone(检查时区)

-

时区不一致

-

设置各节点为同一时区。

-
cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime
-

CheckCPU(检查CPU)

-

CPU占用过高或IO等待过高

-

进行CPU配置升级或磁盘性能升级。

-

CheckSshdService(检查SSHD服务)

-

未开启SSHD服务

-

启动SSHD服务并写入开机自启动文件。

-
service sshd start
-echo "server sshd start" >> initFile
-

CheckSshdConfig(检查SSHD配置)

-

SSHD服务配置错误

-

设置SSHD服务,

-
PasswordAuthentication=no;
-MaxStartups=1000;
-UseDNS=yes;
-ClientAliveInterval=10800/ClientAliveInterval=0
-

并重启服务:

-
server sshd start
-

CheckCrondService(检查Crond服务)

-

Crond服务未启动

-

安装Crond服务并启用。

-

CheckStack(检查堆栈大小)

-

堆栈大小小于3072

-

使用gs_checkos设置为3072并重启堆栈值过小进程。

-
gs_checkos -i B2
-

CheckSysPortRange(检查系统端口设置)

-

系统ip端口不在预期范围内或openGauss端口在系统ip端口内

-

设置系统ip端口范围参数到26000-65535之中;设置openGauss端口在系统ip端口范围外。

-
vim /etc/sysctl.conf
-

CheckMemInfo(检查内存信息)

-

各节点内存大小不一致

-

使用相同规格的物理内存。

-

CheckHyperThread(检查超线程)

-

未开启CPU超线程

-

开启CPU超线程。

-

CheckTableSpace(检查表空间)

-

表空间路径和openGauss路径存在嵌套或表空间路径相互存在嵌套

-

将表空间数据迁移到路径合法的表空间中。

-
- - - - -## 检查数据库性能 - -### 检查办法 - -通过openGauss提供的性能统计工具gs\_checkperf可以对硬件性能进行检查。 - -**前提条件** - -- openGauss运行状态正常。 -- 运行在数据库之上的业务运行正常。 - -**操作步骤** - -1. 以操作系统用户omm登录数据库主节点。 -2. 执行如下命令对openGauss数据库进行性能检查。 - - ``` - gs_checkperf - ``` - - -具体的性能统计项目请参见《openGauss 工具参考》中“服务端工具 \> gs\_checkperf \> 性能检查项”。 - -**示例** - -以简要格式在屏幕上显示性能统计结果。 - -``` -gs_checkperf -i pmk -U omm -Cluster statistics information: - Host CPU busy time ratio : 1.43 % - MPPDB CPU time % in busy time : 1.88 % - Shared Buffer Hit ratio : 99.96 % - In-memory sort ratio : 100.00 % - Physical Reads : 4 - Physical Writes : 25 - DB size : 70 MB - Total Physical writes : 25 - Active SQL count : 2 - Session count : 3 -``` - -### 异常处理 - -使用gs\_checkperf工具检查openGauss性能状态后,如果发现检查结果发现异常,可以根据以下内容进行修复。 - -**表 1** 检查openGauss级别性能状态 - - - - - - - - - - - - - - - - - - - - - - - - - -

异常状态

-

处理方法

-

主机CPU占有率高

-

1、更换和增加高性能的CPU。

-

2、使用top命令查看系统哪些进程的CPU占有率高,然后使用kill命令关闭没有使用的进程。

-
top
-

openGauss CPU占有率高

-

1、更换和增加高性能的CPU。

-

2、使用top命令查看数据库哪些进程的CPU占有率高,然后使用kill命令关闭没有使用的进程。

-
top
-

3、使用gs_expand工具扩容,增加新的主机均衡CPU占有率。

-

共享内存命中率低

-

1、扩大内存。

-

2、使用如下命令查看操作系统配置文件/etc/sysctl.conf,调大共享内存kernel.shmmax值。

-
vim /etc/sysctl.conf
-

内存中排序比率低

-

扩大内存。

-

I/O、磁盘使用率高

-

1、更换高性能的磁盘。

-

2、调整数据布局,尽量将I/O请求较合理的分配到所有物理磁盘中。

-

3、全库进行VACUUM FULL操作。

-
vacuum full;
-

4、进行磁盘整理,参考上面执行全库vacuum full或针对性做单表vacuum/vacuum full操作。

-

5、降低并发数。

-

事务统计

-

查询pg_stat_activity系统表,将不必要的连接断开。(登录数据库后查询:openGauss=# \d+ pg_stat_activity;)

-
- -**表 2** 检查节点级别性能状态 - - - - - - - - - - - - - - - - -

异常状态

-

处理方法

-

CPU占有率高

-

1、更换和增加高性能的CPU。

-

2、使用top命令查看系统哪些进程的CPU占有率高,然后使用kill命令关闭没有使用的进程。

-
top
-

内存使用率过高情况

-

扩大或清理内存。

-

I/O使用率过高情况

-

1、更换高性能的磁盘。

-

2、进行磁盘清理。

-

3、尽可能用内存的读写代替直接磁盘I/O,使频繁访问的文件或数据放入内存中进行操作处理。

-
- -**表 3** 会话/进程级别性能状态 - - - - - - - - - - -

异常状态

-

处理方法

-

CPU、内存、I/O使用率过高情况

-

查看哪个进程占用CPU/内存高或I/O使用率高,若是无用的进程,则kill掉,否则排查具体原因。例如SQL执行占用内存大,查看是否SQL语句需要优化。

-
- -**表 4** SSD性能状态 - - - - - - - - - - -

异常状态

-

处理方法

-

SSD读写性能故障

-

使用以下命令查看SSD是否有故障,排查具体故障原因。

-
gs_checkperf -i SSD -U omm
-
- -## 检查和清理日志 - -日志是检查系统运行及故障定位的关键手段。建议按月度例行查看操作系统日志及数据库的运行日志。同时,随着时间的推移,日志的增加会占用较多的磁盘空间。建议按月度清理数据库的运行日志。 - -### 检查操作系统日志 - -建议按月检查操作系统日志,排除操作系统运行异常隐患。 - -执行如下命令查看操作系统日志文件。 - -``` -vim /var/log/messages -``` - -关注其中近一个月出现的kernel、error、fatal等字样,根据系统报警信息进行处理。 - -### 检查openGauss运行日志 - -数据库运行时,某些操作在执行过程中可能会出现错误,数据库依然能够运行。但是此时数据库中的数据可能已经发生不一致的情况。建议按月检查openGauss运行日志,及时发现隐患。 - -**前提条件** - -- 收集日志的主机网络通畅且未宕机,数据库安装用户互信正常。 -- 日志收集工具依赖操作系统工具如gstack,如果未安装该工具,则提示错误后,跳过该收集项。 - -**操作步骤** - -1. 以操作系统用户omm登录数据库主节点。 -2. 执行如下命令收集数据库日志。 - - ``` - gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" - ``` - - 20160616 01:01为日志的开始时间,20160616 23:59为日志的结束时间。 - -3. 根据[2](#zh-cn_topic_0237088806_zh-cn_topic_0059778412_l87490fc259434bc6ac7800ec9881a6ab)的界面输出提示,进入相应的日志收集目录,解压收集的日志,并检查数据库日志。 - - 以下以日志收集路径“/opt/gaussdb/tmp/gaussdba\_mppdb/collector\_20160726\_105158.tar.gz”为例进行操作。 - - ``` - tar -xvzf /opt/gaussdb/tmp/gaussdba_mppdb/collector_20160726_105158.tar.gz - cd /opt/gaussdb/tmp/gaussdba_mppdb/collector_20160726_105158 - ``` - - -**示例** - -- 以--begin-time与--end-time为参数执行gs\_collector命令。 - - ``` - gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" - ``` - - 当显示类似如下信息表示日志已经归档。 - - ``` - Successfully collected files - All results are stored in /tmp/gaussdba_mppdb/collector_20160616_175615.tar.gz. - ``` - -- 以--begin-time、--end-time与-h为参数执行gs\_collector命令。 - - ``` - gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -h plat2 - ``` - - 当显示类似如下信息表示日志已经归档。 - - ``` - Successfully collected files - All results are stored in /tmp/gaussdba_mppdb/collector_20160616_190225.tar.gz. - ``` - -- 以--begin-time、--end-time与-f为参数执行gs\_collector命令。 - - ``` - gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -f /opt/software/gaussdb/output - ``` - - 当显示类似如下信息表示日志已经归档。 - - ``` - Successfully collected files - All results are stored in /opt/software/gaussdb/output/collector_20160616_190511.tar.gz. - ``` - -- 以--begin-time、--end-time与--keyword为参数执行gs\_collector命令。 - - ``` - gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" --keyword="os" - ``` - - 当显示类似如下信息表示日志已经归档。 - - ``` - Successfully collected files. - All results are stored in /tmp/gaussdba_mppdb/collector_20160616_190836.tar.gz. - ``` - -- 以--begin-time、--end-time与-o为参数执行gs\_collector命令。 - - ``` - gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -o /opt/software/gaussdb/output - ``` - - 当显示类似如下信息表示日志已经归档。 - - ``` - Successfully collected files. - All results are stored in /opt/software/gaussdb/output/collector_20160726_113711.tar.gz. - ``` - -- 以--begin-time、--end-time与-l为参数(文件名必须以.log为后缀)执行gs\_collector命令。 - - ``` - gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -l /opt/software/gaussdb/logfile.log - ``` - - 当显示类似如下信息表示日志已经归档。 - - ``` - Successfully collected files. - All results are stored in /opt/software/gaussdb/output/collector_20160726_113711.tar.gz. - ``` - - -### 清理运行日志 - -数据库运行过程中会产生大量运行日志,占用大量的磁盘空间,建议清理过期日志文件,只保留一个月的日志。 - -**操作步骤** - -1. 以操作系统用户omm登录数据库主节点。 -2. 清理日志。 - - a. 将超过1个月的日志备份到其他磁盘。 - - b. 进入日志存放目录。 - - ``` - cd $GAUSSLOG - ``` - - c. 进入相应的子目录,使用如下方式删除1个月之前产生的日志。 - - ``` - rm 日志名称 - ``` - - 日志文件的命名格式为“postgresql-年-月-日\_HHMMSS”。 - - - -## 检查时间一致性 - -数据库事务一致性通过逻辑时钟保证,与操作系统时间无关,但是系统时间不一致会导致诸多潜在问题,主要是后台运维和监控功能异常,因此在月度检查时建议检查各个节点的时间一致性。 - -### 操作步骤 - -1. 以操作系统用户omm登录数据库主节点。 -2. 创建记录openGauss各节点的配置文件(_mpphosts文件目录_用户可随意指定,建议放在/tmp下)。 - - ``` - vim /tmp/mpphosts - ``` - - 增加各节点的主机名称。 - - ``` - plat1 - plat2 - plat3 - ``` - -3. 保存配置文件。 - - ``` - :wq! - ``` - -4. 执行如下命令,输出各节点上的时间到“/tmp/sys\_ctl-os1.log”文件中。 - - ``` - for ihost in `cat /tmp/mpphosts`; do ssh -n -q $ihost "hostname;date"; done > /tmp/sys_ctl-os1.log - ``` - -5. 根据输出确认各个节点的时间一致性,节点之间时间差异不能超过30秒。 - - ``` - cat /tmp/sys_ctl-os1.log - plat1 - Thu Feb 9 16:46:38 CST 2017 - plat2 - Thu Feb 9 16:46:49 CST 2017 - plat3 - Thu Feb 9 16:46:14 CST 2017 - ``` - - -## 检查应用连接数 - -如果应用程序与数据库的连接数超过最大值,则新的连接无法建立。建议每天检查连接数,及时释放空闲的连接或者增加最大连接数。 - -### 操作步骤 - -1. 以操作系统用户omm登录数据库主节点。 -2. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - openGauss=# - ``` - -3. 执行如下SQL语句查看连接数。 - - ``` - openGauss=# SELECT count(*) FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s; - ``` - - 显示类似如下的信息,其中2表示当前有两个应用连接到数据库。 - - ``` - count - ------- - 2 - (1 row) - ``` - -4. 查看现有最大连接数。 - - ``` - openGauss=# SHOW max_connections; - ``` - - 显示信息如下,其中200为现在的最大连接数。 - - ``` - max_connections - ----------------- - 200 - (1 row) - ``` - - -### 异常处理 - -如果显示的连接数接近数据库的最大连接数max\_connections,则需要考虑清理现有连接数或者增加新的连接数。 - -1. 执行如下SQL语句,查看state字段等于idle,且state\_change字段长时间没有更新过的连接信息。 - - ``` - openGauss=# SELECT * FROM pg_stat_activity where state='idle' order by state_change; - ``` - - 显示类似如下的信息: - - ``` - datid | datname | pid | usesysid | usename | application_name | client_addr - | client_hostname | client_port | backend_start | xact_start | quer - y_start | state_change | waiting | enqueue | state | resource_pool - | query - -------+----------+-----------------+----------+----------+------------------+--------------- - -+-----------------+-------------+-------------------------------+------------+-------------- - -----------------+-------------------------------+---------+---------+-------+--------------- - +---------------------------------------------- - 13626 | postgres | 140390162233104 | 10 | gaussdba | | - | | -1 | 2016-07-15 14:08:59.474118+08 | | 2016-07-15 14 - :09:04.496769+08 | 2016-07-15 14:09:04.496975+08 | f | | idle | default_pool - | select count(group_name) from pgxc_group; - 13626 | postgres | 140390132872976 | 10 | gaussdba | cn_5002 | 10.180.123.163 - | | 48614 | 2016-07-15 14:11:16.014871+08 | | 2016-07-15 14 - :21:17.346045+08 | 2016-07-15 14:21:17.346095+08 | f | | idle | default_pool - | SET SESSION AUTHORIZATION DEFAULT;RESET ALL; - (2 rows) - ``` - -2. 释放空闲的连接数。 - - 查看每个连接,并与此连接的使用者确认是否可以断开连接,或执行如下SQL语句释放连接。其中,pid为上一步查询中空闲连接所对应的pid字段值。 - - ``` - openGauss=# SELECT pg_terminate_backend(140390132872976); - ``` - - 显示类似如下的信息: - - ``` - openGauss=# SELECT pg_terminate_backend(140390132872976); - pg_terminate_backend - ---------------------- - t - (1 row) - ``` - - 如果没有可释放的连接,请执行下一步。 - -3. 增加最大连接数。 - - ``` - gs_guc set -D /gaussdb/data/dbnode -c "max_connections= 800" - ``` - - 其中800为新修改的连接数。 - -4. 重启数据库服务使新的设置生效。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >重启openGauss操作会导致用户执行操作中断,请在操作之前规划好合适的执行窗口。 - - ``` - gs_om -t stop && gs_om -t start - ``` - - -## 例行维护表 - -为了保证数据库的有效运行,数据库必须在插入/删除操作后,基于客户场景,定期做VACUUM FULL和ANALYZE,更新统计信息,以便获得更优的性能。 - -### 相关概念 - -使用VACUUM、VACUUM FULL和ANALYZE命令定期对每个表进行维护,主要有以下原因: - -- VACUUM FULL可回收已更新或已删除的数据所占据的磁盘空间,同时将小数据文件合并。 -- VACUUM对每个表维护了一个可视化映射来跟踪包含对别的活动事务可见的数组的页。一个普通的索引扫描首先通过可视化映射来获取对应的数组,来检查是否对当前事务可见。若无法获取,再通过堆数组抓取的方式来检查。因此更新表的可视化映射,可加速唯一索引扫描。 -- VACUUM可避免执行的事务数超过数据库阈值时,事务ID重叠造成的原有数据丢失。 -- ANALYZE可收集与数据库中表内容相关的统计信息。统计结果存储在系统表PG\_STATISTIC中。查询优化器会使用这些统计数据,生成最有效的执行计划。 - -### 操作步骤 - -1. 使用VACUUM或VACUUM FULL命令,进行磁盘空间回收。 - - **VACUUM**: - - 对表执行VACUUM操作 - - ``` - openGauss=# VACUUM customer; - ``` - - ``` - VACUUM - ``` - - 可以与数据库操作命令并行运行。(执行期间,可正常使用的语句:SELECT、INSERT、UPDATE和DELETE。不可正常使用的语句:ALTER TABLE)。 - - 对表分区执行VACUUM操作 - - ``` - openGauss=# VACUUM customer_par PARTITION ( P1 ); - ``` - - ``` - VACUUM - ``` - - - **VACUUM FULL**: - - ``` - openGauss=# VACUUM FULL customer; - ``` - - ``` - VACUUM - ``` - - 需要向正在执行的表增加排他锁,且需要停止其他所有数据库操作。 - -2. 使用ANALYZE语句更新统计信息。 - - ``` - openGauss=# ANALYZE customer; - ``` - - ``` - ANALYZE - ``` - - 使用ANALYZE VERBOSE语句更新统计信息,并输出表的相关信息。 - - ``` - openGauss=# ANALYZE VERBOSE customer; - ``` - - ``` - ANALYZE - ``` - - 也可以同时执行VACUUM ANALYZE命令进行查询优化。 - - ``` - openGauss=# VACUUM ANALYZE customer; - ``` - - ``` - VACUUM - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >VACUUM和ANALYZE会导致I/O流量的大幅增加,这可能会影响其他活动会话的性能。因此,建议通过“vacuum\_cost\_delay”参数设置《开发者指南》中“GUC参数说明 \> 资源消耗 \> 基于开销的清理延迟”。 - -3. 删除表。 - - ``` - openGauss=# DROP TABLE customer; - openGauss=# DROP TABLE customer_par; - openGauss=# DROP TABLE part; - ``` - - 当结果显示为如下信息,则表示删除成功。 - - ``` - DROP TABLE - ``` - - -### 维护建议 - -- 定期对部分大表做VACUUM FULL,在性能下降后为全库做VACUUM FULL,目前暂定每月做一次VACUUM FULL。 -- 定期对系统表做VACUUM FULL,主要是PG\_ATTRIBUTE。 -- 启用系统自动清理线程(AUTOVACUUM)自动执行VACUUM和ANALYZE,回收被标识为删除状态的记录空间,并更新表的统计数据。 - -## 例行重建索引 - -### 背景信息 - -数据库经过多次删除操作后,索引页面上的索引键将被删除,造成索引膨胀。例行重建索引,可有效的提高查询效率。 - -数据库支持的索引类型为B-tree索引,例行重建索引可有效的提高查询效率。 - -- 如果数据发生大量删除后,索引页面上的索引键将被删除,导致索引页面数量的减少,造成索引膨胀。重建索引可回收浪费的空间。 -- 新建的索引中逻辑结构相邻的页面,通常在物理结构中也是相邻的,所以一个新建的索引比更新了多次的索引访问速度要快。 - -### 重建索引 - -重建索引有以下两种方式: - -- 先删除索引(DROP INDEX),再创建索引(CREATE INDEX)。 - - 在删除索引过程中,会在父表上增加一个短暂的排他锁,阻止相关读写操作。在创建索引过程中,会锁住写操作但是不会锁住读操作,此时读操作只能使用顺序扫描。 - -- 使用REINDEX语句重建索引。 - - 使用REINDEX TABLE语句重建索引,会在重建过程中增加排他锁,阻止相关读写操作。 - - 使用REINDEX INTERNAL TABLE语句重建desc表(包括列存表的cudesc表)的索引,会在重建过程中增加排他锁,阻止相关读写操作。 - - -### 操作步骤 - -假定在导入表“areaS”上的“area\_id”字段上存在普通索引“areaS\_idx”。重建索引有以下两种方式: - -- 先删除索引(DROP INDEX),再创建索引(CREATE INDEX)。 - 1. 删除索引。 - - ``` - openGauss=# DROP INDEX areaS_idx; - DROP INDEX - ``` - - 2. 创建索引。 - - ``` - openGauss=# CREATE INDEX areaS_idx ON areaS (area_id); - CREATE INDEX - ``` - - -- 使用REINDEX重建索引。 - - 使用REINDEX TABLE语句重建索引。 - - ``` - openGauss=# REINDEX TABLE areaS; - REINDEX - ``` - - - 使用REINDEX INTERNAL TABLE重建desc表(包括列存表的cudesc表)的索引。 - - ``` - openGauss=# REINDEX INTERNAL TABLE areaS; - REINDEX - ``` - - - ->![](public_sys-resources/icon-note.gif) **说明:** ->在重建索引前,用户可以通过临时增大maintenance\_work\_mem和psort\_work\_mem的取值来加快索引的重建。 - -## 数据安全维护建议 - -为保证openGauss数据库中的数据安全,避免丢失数据、非法访问数据等事故发生,请仔细阅读以下内容。 - -### 避免数据被丢失 - -建议用户规划周期性的物理备份,且对备份文件进行可靠的保存。在系统发生严重错误的情况下,可以利用备份文件,将系统恢复到备份前的状态。 - -### 避免数据被非法访问 - -- 建议对数据库用户进行权限分级管理。数据库管理员根据业务需要,建立用户并赋予权限,保证各用户对数据库的合理访问。 -- 对于openGauss的服务端和客户端(或基于客户端库开发的应用程序),最好也部署在可信任的内网中。如果服务端和客户端一定要部署在非信任的网络中,需要在服务启动前,打开SSL加密,保证数据在非信任网络上的传输安全。需要注意的是,打开SSL加密会降低数据库的性能。 - -### 避免系统日志泄露个人数据 - -- 将调试日志发给他人进行分析前,请删除个人数据。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >因为日志级别(log\_min\_messages)设置为DEBUGx(x为DEBUG级别,取值范围为1\~5)时,调试日志中记录的信息可能包含用户的个人数据。 - -- 将系统日志发给其他人进行分析前,请删除个人数据。因为在默认配置下,当SQL语句执行错误时,日志中会记录出错的SQL语句,而这些SQL语句中可能包含用户个人数据。 -- 将log\_min\_error\_statement参数的值设置为PANIC可以避免在系统日志中记录出错的SQL语句,但是关闭此功能将导致发生错误时难以定位。 - -## 慢SQL诊断 - -### 背景信息 - -在SQL语句执行性能不符合预期时,可以查看SQL语句执行信息,便于事后分析SQL语句执行时的行为,从而诊断SQL语句执行出现的相关问题。 - -### 前提条件 - -- 数据库实例运行正常。 -- 查询SQL语句信息,需要正确设置GUC参数track\_stmt\_stat\_level。 -- 只能用系统管理员和监控管理员权限进行操作。 - -``` -执行命令查看数据库实例中SQL语句执行信息 -gsql> select * from dbe_perf.get_global_full_sql_by_timestamp(start_timestamp, end_timestamp); -执行命令查看数据库实例中慢SQL语句执行信息 -gsql> select * from dbe_perf.get_global_slow_sql_by_timestamp(start_timestamp, end_timestamp); -查看当前节点SQL语句执行信息 -gsql> select * from statement_history; -``` - +# 例行维护 + + + +- [日维护检查项](#日维护检查项) +- [检查操作系统参数](#检查操作系统参数) +- [检查 openGauss 健康状态](#检查 opengauss 健康状态) +- [检查数据库性能](#检查数据库性能) +- [检查和清理日志](#检查和清理日志) +- [检查时间一致性](#检查时间一致性) +- [检查应用连接数](#检查应用连接数) +- [例行维护表](#例行维护表) +- [例行重建索引](#例行重建索引) +- [数据安全维护建议](#数据安全维护建议) +- [慢 SQL 诊断](#慢 SQL 诊断) + + + +为保证 openGauss 数据库中的数据安全,避免丢失数据和非法访问数据等事故发生,请仔细阅读以下内容。 + +## 日维护检查项 + +### 检查 openGauss 状态 + +通过 openGauss 提供的工具查询数据库和实例状态,确认数据库和实例都处于正常的运行状态,可以对外提供数据服务。 + +- 检查实例状态 + + ``` + gs_check -U omm -i CheckClusterState + ``` + +- 检查参数 + + ``` + openGauss=# SHOW parameter_name; + ``` + + 上述命令中, parameter_name 需替换成具体的参数名称。 + +- 修改参数 + + ``` + gs_guc reload -D /gaussdb/data/dbnode -c "paraname=value" + ``` + + +### 检查锁信息 + +锁机制是数据库保证数据一致性的重要手段,检查相关信息可以检查数据库的事务和运行状况。 + +- 查询数据库中的锁信息 + + ``` + openGauss=# SELECT * FROM pg_locks; + ``` + +- 查询等待锁的线程状态信息 + + ``` + openGauss=# SELECT * FROM pg_thread_wait_status WHERE wait_status = 'acquire lock'; + ``` + + + +- 结束系统进程 + + 查找正在运行的系统进程,然后使用 kill 命令结束此进程。 + + ``` + ps ux + kill -9 pid + ``` + + +### 统计事件数据 + +SQL 语句长时间运行会占用大量系统资源,用户可以通过查看事件发生的时间,占用内存大小来了解现在数据库运行状态。 + +- 查询事件的时间 + + 查询事件的线程启动时间、事务启动时间、SQL启动时间以及状态变更时间。 + + ``` + openGauss=# SELECT backend_start, xact_start , query_start ,state_change FROM pg_stat_activity; + ``` + +- 查询当前服务器的会话计数信息 + + ``` + openGauss=# SELECT count(*) FROM pg_stat_activity; + ``` + +- 系统级统计信息 + + 查询当前使用内存最多的会话信息。 + + ``` + openGauss=# SELECT * FROM pv_session_memory_detail() ORDER BY usedsize desc limit 10; + ``` + + +### 对象检查 + +表、索引、分区、约束等是数据库的核心存储对象,其核心信息和对象维护是 DBA 重要的日常工作。 + +- 查看表的详细信息 + + ``` + openGauss=# \d+ table_name + ``` + +- 查询表统计信息 + + ``` + openGauss=# SELECT * FROM pg_statistic; + ``` + +- 查看索引的详细信息 + + ``` + openGauss=# \d+ index_name + ``` + +- 查询分区表信息 + + ``` + openGauss=# SELECT * FROM pg_partition; + ``` + +- 收集统计信息 + + 使用 ANALYZE 语句收集数据库相关的统计信息。 + + 使用 VACUUM 语句可以回收空间并更新统计信息。 + +- 查询约束信息 + + ``` + openGauss=# SELECT * FROM pg_constraint; + ``` + + +### SQL报告检查 + +使用 EXPLAIN 语句查看执行计划。 + +### 备份 + +数据备份重于一切,日常应检查备份执行情况,并检查备份有效性,确保备份能够保障数据安全,备份安全加密也应兼顾。 + +- 指定用户导出数据库 + + ``` + gs_dump dbname -p port -f out.sql -U user_name -W password + ``` + +- 导出schema + + ``` + gs_dump dbname -p port -n schema_name -f out.sql + ``` + +- 导出table + + ``` + gs_dump dbname -p port -t table_name -f out.sql + ``` + + +### 基本信息检查 + +基本信息包括版本、组件、补丁集等信息,定期检查数据库信息并登记在案是数据库生命周期管理的重要内容之一。 + +- 版本信息 + + ``` + openGauss=# SELECT version(); + ``` + +- 容量检查 + + ``` + openGauss=# SELECT pg_table_size('table_name'); + openGauss=# SELECT pg_database_size('database_name'); + ``` + + +## 检查操作系统参数 + +### 检查办法 + +通过 openGauss 提供的gs\_checkos工具可以完成操作系统状态检查。 + +**前提条件** + +- 当前的硬件和网络环境正常。 +- 各主机间 root 互信状态正常。 +- 只能使用 root 用户执行gs\_checkos命令。 + +**操作步骤** + +1. 以 root 用户身份登录任意一台服务器。 +2. 执行如下命令对 openGauss 节点服务器的 OS 参数进行检查。 + + ``` + gs_checkos -i A + ``` + + 检查节点服务器的 OS 参数的目的是保证 openGauss 正常通过预安装,并且在安装成功后可以安全高效的运行。详细的检查项目请参见《openGauss 工具参考》中“服务端工具 \> gs\_checkos”章节。 + + +**示例** + +执行gs\_checkos前需要先使用gs\_preinstall工具执行前置脚本,准备环境。以参数“A”为例。 + +``` +gs_checkos -i A +Checking items: + A1. [ OS version status ] : Normal + A2. [ Kernel version status ] : Normal + A3. [ Unicode status ] : Normal + A4. [ Time zone status ] : Normal + A5. [ Swap memory status ] : Normal + A6. [ System control parameters status ] : Normal + A7. [ File system configuration status ] : Normal + A8. [ Disk configuration status ] : Normal + A9. [ Pre-read block size status ] : Normal + A10.[ IO scheduler status ] : Normal + A11.[ Network card configuration status ] : Normal + A12.[ Time consistency status ] : Warning + A13.[ Firewall service status ] : Normal + A14.[ THP service status ] : Normal +Total numbers:14. Abnormal numbers:0. Warning number:1. +``` + +以参数“B”为例。 + +``` +gs_checkos -i B +Setting items: + B1. [ Set system control parameters ] : Normal + B2. [ Set file system configuration value ] : Normal + B3. [ Set pre-read block size value ] : Normal + B4. [ Set IO scheduler value ] : Normal + B5. [ Set network card configuration value ] : Normal + B6. [ Set THP service ] : Normal + B7. [ Set RemoveIPC value ] : Normal + B8. [ Set Session Process ] : Normal +Total numbers:6. Abnormal numbers:0. Warning number:0. +``` + +### 异常处理 + +使用gs\_checkos检查或设置状态为 Abnormal ,可以使用如下命令查看详细的错误信息。 + +``` +gs_checkos -i A --detail +``` + +其中, Abnormal 为必须处理项,影响 openGauss 安装。 Warning 可以不处理,不会影响 openGauss 安装。 + +- 如果操作系统版本(A1)检查项检查结果为 Abnormal ,需要将不属于混编范围的操作系统版本替换为混编范围内的操作系统版本。 +- 如果内核版本(A2)检查项检查结果为 Warning ,则表示 openGauss 集群内操作系统平台的内核版本不一致。 +- 如果 Unicode 状态(A3)检查项检查结果为 Abnormal ,需要将各主机的字符集设置为相同的字符集,可以在/etc/profile文件中添加“export LANG=XXX”(XXX为 Unicode 编码)。 + + ``` + vim /etc/profile + ``` + +- 如果时区状态(A4)检查项检查结果为 Abnormal ,需要将各主机的时区设置为相同时区,可以将/usr/share/zoneinfo/目录下的时区文件拷贝为/etc/localtime文件。 + + ``` + cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime + ``` + +- 如果交换内存状态(A5)检查项检查结果为 Abnormal ,可能是因为 Swap 空间大于 Mem 空间,可减小 Swap 解决或者增大 Mem 空间解决。 +- 如果系统控制参数(A6)检查项检查结果为 Abnormal ,可以使用以下两种方法进行设置。 + - 可以使用如下命令进行设置。 + + ``` + gs_checkos -i B1 + ``` + + - 根据错误提示信息,在/etc/sysctl.conf文件中进行设置。然后执行sysctl -p使其生效。 + + ``` + vim /etc/sysctl.conf + ``` + + + +- 如果文件系统配置状态(A7)检查项检查结果为 Abnormal ,可以使用如下命令进行设置。 + + ``` + gs_checkos -i B2 + ``` + +- 如果磁盘配置状态(A8)检查项检查结果为 Abnormal ,需修改磁盘挂载格式为:“rw, noatime , inode64 ,allocsize=16m”。 + + 使用 linux 的 man mount 命令挂载 XFS 选项: + + ``` + rw , noatime , inode64 ,allocsize=16m + ``` + + 也可以在/etc/fstab文件中设定 XFS 选项。如下示例: + + ``` + /dev/data /data xfs rw, noatime , inode64 ,allocsize=16m 0 0 + ``` + +- 如果预读块大小(A9)检查项检查结果为 Abnormal ,可以使用如下命令进行设置。 + + ``` + gs_checkos -i B3 + ``` + +- 如果 IO 调度状态(A10)检查项检查结果为 Abnormal ,可以使用如下命令进行设置。 + + ``` + gs_checkos -i B4 + ``` + + +- 如果网卡配置状态(A11)检查项检查结果为 Warning ,可以使用如下命令进行设置。 + + ``` + gs_checkos -i B5 + ``` + +- 如果时间一致性(A12)检查项检查结果为 Abnormal ,需检查是否安装 ntp 服务,以及 ntp 服务是否启动;并与 ntp 时钟源同步。 +- 如果防火墙状态(A13)检查项检查结果为 Abnormal ,需关闭防火墙服务。使用如下命令进行设置。 + - SuSE: + + ``` + SuSEfirewall2 stop + ``` + + - RedHat7: + + ``` + systemctl disable firewalld + systemctl stop firewalld + ``` + + - RedHat6: + + ``` + service iptables stop + ``` + + +- 如果 THP 服务(A14)检查项检查结果为 Abnormal ,可以使用如下命令进行设置。 + + ``` + gs_checkos -i B6 + ``` + + +## 检查 openGauss 健康状态 + +### 检查办法 + +通过 openGauss 提供的gs\_check工具可以开展 openGauss 健康状态检查。 + +**注意事项** + +- 扩容新节点检查只能在 root 用户下执行,其他场景都必须在 omm 用户下执行。 +- 必须指定-i或-e参数,-i会检查指定的单项,-e会检查对应场景配置中的多项。 +- 如果-i参数中不包含 root 类检查项或-e场景配置列表中没有 root 类检查项,则不需要交互输入 root 权限的用户及其密码。 +- 可使用--skip-root-items跳过检查项中包含的 root 类检查,以免需要输入 root 权限用户及密码。 +- 检查扩容新节点与现有节点之间的一致性,在现有节点执行gs\_check命令指定--hosts参数进行检查,其中 hosts 文件中需要写入新节点 ip 。 + +**操作步骤** + +方式1: + +1. 以操作系统用户 omm 登录数据库主节点。 +2. 执行如下命令对 openGauss 数据库状态进行检查。 + + ``` + gs_check -i CheckClusterState + ``` + + 其中,-i指定检查项,注意区分大小写。格式:-i CheckClusterState、-i CheckCPU或-i CheckClusterState, CheckCPU 。 + + 取值范围为所有支持的检查项名称,详细列表请参见《openGauss 工具参考》中“服务端工具 \> gs\_checkos \> openGauss状态检查表”,用户可以根据需求自己编写新检查项。 + + +方式2: + +1. 以操作系统用户 omm 登录数据库主节点。 + +2. 执行如下命令对 openGauss 数据库进行健康检查。 + + ``` + gs_check -e inspect + ``` + + 其中,-e指定场景名,注意区分大小写。格式:-e inspect或-e upgrade。 + + 取值范围为所有支持的巡检场景名称,默认列表包括:inspect(例行巡检)、upgrade(升级前巡检)、install(安装)、binary\_upgrade(就地升级前巡检)、health(健康检查巡检)、slow_node(节点)、longtime(耗时长巡检),用户可以根据需求自己编写场景。 + + +openGauss 巡检的主要作用是在 openGauss 运行过程中,检查整个 openGauss 状态是否正常,或者重大操作前(升级、扩容),确保 openGauss 满足操作所需的环境条件和状态条件。详细的巡检项目和场景请参见《openGauss 工具参考》中“服务端工具 \> gs\_checkos \> openGauss状态检查表”。 + +**示例** + +执行单项检查结果: + +``` +perfadm@lfgp000700749:/opt/huawei/perfadm/tool/script> gs_check -i CheckCPU +Parsing the check items config file successfully +Distribute the context file to remote hosts successfully +Start to health check for the cluster. Total Items:1 Nodes:3 + +Checking... [=========================] 1/1 +Start to analysis the check result +CheckCPU....................................OK +The item run on 3 nodes. success: 3 + +Analysis the check result successfully +Success. All check items run completed. Total:1 Success:1 Failed:0 +For more information please refer to /opt/huawei/wisequery/script/gspylib/inspection/output/CheckReport_201902193704661604.tar.gz +``` + +本地执行结果: + +``` +perfadm@lfgp000700749:/opt/huawei/perfadm/tool/script> gs_check -i CheckCPU -L + +2017-12-29 17:09:29 [NAM] CheckCPU +2017-12-29 17:09:29 [STD] 检查主机 CPU 占用率,如果 idle 大于30%并且 iowait 小于 30%.则检查项通过,否则检查项不通过 +2017-12-29 17:09:29 [RST] OK + +2017-12-29 17:09:29 [RAW] +Linux 4.4.21-69-default (lfgp000700749) 12/29/17 _x86_64_ + +17:09:24 CPU %user %nice %system %iowait %steal %idle +17:09:25 all 0.25 0.00 0.25 0.00 0.00 99.50 +17:09:26 all 0.25 0.00 0.13 0.00 0.00 99.62 +17:09:27 all 0.25 0.00 0.25 0.13 0.00 99.37 +17:09:28 all 0.38 0.00 0.25 0.00 0.13 99.25 +17:09:29 all 1.00 0.00 0.88 0.00 0.00 98.12 +Average: all 0.43 0.00 0.35 0.03 0.03 99.17 +``` + +执行场景检查结果: + +``` +[perfadm@SIA1000131072 Check]$ gs_check -e inspect +Parsing the check items config file successfully +The below items require root privileges to execute:[CheckBlockdev CheckIOrequestqueue CheckIOConfigure CheckCheckMultiQueue CheckFirewall CheckSshdService CheckSshdConfig CheckCrondService CheckBootItems CheckFilehandle CheckNICModel CheckDropCache] +Please enter root privileges user[root]:root +Please enter password for user[root]: +Please enter password for user[root] on the node[10.244.57.240]: +Check root password connection successfully +Distribute the context file to remote hosts successfully +Start to health check for the cluster. Total Items:59 Nodes:2 + +Checking... [ ] 21/57 +Checking... [=========================] 59/57 +Start to analysis the check result +CheckClusterState...........................OK +The item run on 2 nodes. success: 2 + +CheckDBParams...............................OK +The item run on 1 nodes. success: 1 + +CheckDebugSwitch............................OK +The item run on 2 nodes. success: 2 + +CheckDirPermissions.........................OK +The item run on 2 nodes. success: 2 + +CheckReadonlyMode...........................OK +The item run on 1 nodes. success: 1 + +CheckEnvProfile.............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +GAUSSHOME /usr1/gaussdb/app +LD_LIBRARY_PATH /usr1/gaussdb/app/lib +PATH /usr1/gaussdb/app/bin + + +CheckBlockdev...............................OK +The item run on 2 nodes. success: 2 + +CheckCurConnCount...........................OK +The item run on 1 nodes. success: 1 + +CheckCursorNum..............................OK +The item run on 1 nodes. success: 1 + +CheckPgxcgroup..............................OK +The item run on 1 nodes. success: 1 + +CheckDiskFormat.............................OK +The item run on 2 nodes. success: 2 + +CheckSpaceUsage.............................OK +The item run on 2 nodes. success: 2 + +CheckInodeUsage.............................OK +The item run on 2 nodes. success: 2 + +CheckSwapMemory.............................OK +The item run on 2 nodes. success: 2 + +CheckLogicalBlock...........................OK +The item run on 2 nodes. success: 2 + +CheckIOrequestqueue.....................WARNING +The item run on 2 nodes. warning: 2 +The warning[host240,host157] value: +On device (vdb) 'IO Request' RealValue '256' ExpectedValue '32768' +On device (vda) 'IO Request' RealValue '256' ExpectedValue '32768' + +CheckMaxAsyIOrequests.......................OK +The item run on 2 nodes. success: 2 + +CheckIOConfigure............................OK +The item run on 2 nodes. success: 2 + +CheckMTU....................................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +1500 + +CheckPing...................................OK +The item run on 2 nodes. success: 2 + +CheckRXTX...................................NG +The item run on 2 nodes. ng: 2 +The ng[host240,host157] value: +NetWork[eth0] +RX: 256 +TX: 256 + + +CheckNetWorkDrop............................OK +The item run on 2 nodes. success: 2 + +CheckMultiQueue.............................OK +The item run on 2 nodes. success: 2 + +CheckEncoding...............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +LANG=en_US.UTF-8 + +CheckFirewall...............................OK +The item run on 2 nodes. success: 2 + +CheckKernelVer..............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +3.10.0-957.el7.x86_64 + +CheckMaxHandle..............................OK +The item run on 2 nodes. success: 2 + +CheckNTPD...................................OK +host240: NTPD service is running, 2020-06-02 17:00:28 +host157: NTPD service is running, 2020-06-02 17:00:06 + + +CheckOSVer..................................OK +host240: The current OS is centos 7.6 64bit. +host157: The current OS is centos 7.6 64bit. + + +CheckSysParams..........................WARNING +The item run on 2 nodes. warning: 2 +The warning[host240,host157] value: +Warning reason: variable 'net.ipv4.tcp_retries1' RealValue '3' ExpectedValue '5'. +Warning reason: variable 'net.ipv4.tcp_syn_retries' RealValue '6' ExpectedValue '5'. + + +CheckTHP....................................OK +The item run on 2 nodes. success: 2 + +CheckTimeZone...............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: ++0800 + +CheckCPU....................................OK +The item run on 2 nodes. success: 2 + +CheckSshdService............................OK +The item run on 2 nodes. success: 2 + +Warning reason: UseDNS parameter is not set; expected: no + +CheckCrondService...........................OK +The item run on 2 nodes. success: 2 + +CheckStack..................................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +8192 + +CheckSysPortRange...........................OK +The item run on 2 nodes. success: 2 + +CheckMemInfo................................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +totalMem: 31.260929107666016G + +CheckHyperThread............................OK +The item run on 2 nodes. success: 2 + +CheckTableSpace.............................OK +The item run on 1 nodes. success: 1 + + +CheckSysadminUser...........................OK +The item run on 1 nodes. success: 1 + + +CheckGUCConsistent..........................OK +All DN instance guc value is consistent. + +CheckMaxProcMemory..........................OK +The item run on 1 nodes. success: 1 + +CheckBootItems..............................OK +The item run on 2 nodes. success: 2 + +CheckHashIndex..............................OK +The item run on 1 nodes. success: 1 + +CheckPgxcRedistb............................OK +The item run on 1 nodes. success: 1 + +CheckNodeGroupName..........................OK +The item run on 1 nodes. success: 1 + +CheckTDDate.................................OK +The item run on 1 nodes. success: 1 + +CheckDilateSysTab...........................OK +The item run on 1 nodes. success: 1 + +CheckKeyProAdj..............................OK +The item run on 2 nodes. success: 2 + +CheckProStartTime.......................WARNING +host157: +STARTED COMMAND +Tue Jun 2 16:57:18 2020 /usr1/dmuser/dmserver/metricdb1/server/bin/gaussdb --single_node -D /usr1/dmuser/dmb1/data -p 22204 +Mon Jun 1 16:15:15 2020 /usr1/gaussdb/app/bin/gaussdb -D /usr1/gaussdb/data/dn1 -M standby + + +CheckFilehandle.............................OK +The item run on 2 nodes. success: 2 + +CheckRouting................................OK +The item run on 2 nodes. success: 2 + +CheckNICModel...............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +version: 1.0.1 +model: Red Hat, Inc. Virtio network device + + +CheckDropCache..........................WARNING +The item run on 2 nodes. warning: 2 +The warning[host240,host157] value: +No DropCache process is running + +CheckMpprcFile..............................NG +The item run on 2 nodes. ng: 2 +The ng[host240,host157] value: +There is no mpprc file + +Analysis the check result successfully +Failed. All check items run completed. Total:57 Success:50 Warning:5 NG:2 +For more information please refer to /usr1/gaussdb/tool/script/gspylib/inspection/output/CheckReport_inspect611.tar.gz + +``` + +### 异常处理 + +如果发现检查结果异常,可以根据以下内容进行修复。 + +**表 1** 检查 openGauss 运行状态 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

检查项

+

异常状态

+

处理方法

+

CheckClusterState(检查 openGauss 状态)

+

openGauss未启动或 openGauss 实例未启动

+

使用以下命令启动 openGauss 及实例。

+
gs_om -t start
+

openGauss状态异常或 openGauss 实例异常

+

检查各主机、实例状态,根据状态信息进行排查。

+
gs_check -i CheckClusterState
+

CheckDBParams(检查数据库参数)

+

数据库参数错误

+

通过 gs_guc 工具修改数据库参数为指定值。

+

CheckDebugSwitch(检查调试日志)

+

日志级别不正确

+

使用 gs_guc 工具将 log_min_messages 改为指定内容。

+

CheckDirPermissions(检查目录权限)

+

路径权限错误

+

修改对应目录权限为指定数值(750/700)。

+
chmod 750 DIR
+

CheckReadonlyMode(检查只读模式)

+

只读模式被打开

+

确认数据库节点所在磁盘使用率未超阈值(默认60%)且未在执行其他运维操作。

+
gs_check -i CheckDataDiskUsage
+ps ux
+

使用 gs_guc 工具关闭 openGauss 只读模式。

+
gs_guc reload -N all -I all -c 'default_transaction_read_only = off' 
+

CheckEnvProfile(检查环境变量)

+

环境变量不一致

+

重新执行前置更新环境变量信息。

+

CheckBlockdev(检查磁盘预读块)

+

磁盘预读块大小不为16384

+

使用 gs_checkos 设置预读块大小为 16384KB ,并写入自启动文件。

+
gs_checkos -i B3
+

CheckCursorNum(检查游标数)

+

检查游标数失败

+

检查数据库能否正常连接, openGauss 状态是否正常。

+

CheckPgxcgroup(检查重分布状态)

+

有未完成重分布的 pgxc_group 表

+

继续完成扩容或缩容的数据重分布操作。

+
gs_expand、gs_shrink
+

CheckDiskFormat(检查磁盘配置)

+

各节点磁盘配置不一致

+

将各节点的磁盘规格改为相同。

+

CheckSpaceUsage(检查磁盘空间使用率)

+

磁盘可用空间不足

+

清理或扩展对应目录所在的磁盘。

+

CheckInodeUsage(检查磁盘索引使用率)

+

磁盘可用索引不足

+

清理或扩展对应目录所在的磁盘。

+

CheckSwapMemory(检查交换内存)

+

交换内存大于物理内存

+

将交换内存调小或关闭。

+

CheckLogicalBlock(检查磁盘逻辑块)

+

磁盘逻辑块大小不为512

+

使用 gs_checkos 修改磁盘逻辑块大小为 512KB ,并写入开机自启动文件。

+
gs_checkos -i B4
+

CheckIOrequestqueue(检查 IO 请求)

+

IO请求值不为32768

+

使用 gs_checkos 设置 IO 请求值为 32768 ,并写入开机自启动文件。

+
gs_checkos -i B4
+

CheckCurConnCount(检查当前连接数)111

+

当前连接数超过最大连接数的90%

+

断开未使用的数据库主节点连接。

+

CheckMaxAsyIOrequests(检查最大异步请求)

+

最大异步请求值小于 104857600 或当前节点数据库实例数乘以1048576

+

使用 gs_checkos 设置最大异步请求值为 104857600 和当前节点数据库实例数乘以 1048576 中的最大值。

+
gs_checkos -i B4
+

CheckMTU(检查 MTU 值)

+

MTU值不一致

+

设置各节点的 MTU 一致为 1500 或 8192 。

+
ifconfig eth* MTU 1500
+

CheckIOConfigure(检查 IO 配置)

+

IO配置不是deadline

+

使用 gs_checkos 设置 IO 配置为 deadline ,并写入开机自启动文件。

+
gs_checkos -i B4
+

CheckRXTX(检查 RXTX 值)

+

网卡RX/TX值不是4096

+

使用 checkos 设置 openGauss 使用的物理网卡RX/TX值为 4096 。

+
gs_checkos -i B5
+

CheckPing(检查网络通畅)

+

存在 openGauss IP 无法 ping 通

+

检查异常 ip 间网络设置和状态、防火墙状态。

+

CheckNetWorkDrop(检查网络丢包率)

+

网络通信丢包率高于1%

+

检查对应 IP 间网络负载、状态。

+

CheckMultiQueue(检查网卡多队列)

+

未开启网卡多队列并未将网卡中断绑定到不同 CPU 核心

+

开启网卡多队列并将网卡队列中断绑定到不同的 CPU 核心。

+

CheckEncoding(检查编码格式)

+

各节点编码格式不一致

+

在/etc/profile中写入一致的编码信息。

+
echo "export LANG=XXX" >> /etc/profile
+

CheckFirewall(检查防火墙)

+

防火墙未关闭

+

关闭防火墙服务。

+
systemctl disable firewalld.service
+systemctl stop firewalld.service
+

CheckMaxHandle(检查最大文件句柄数)

+

最大文件句柄数小于1000000

+

设置91-nofile.conf/90-nofile.conf最大文件句柄数软硬限制为 1000000 。

+
gs_checkos -i B2
+

CheckNTPD(检查时间同步服务)

+

NTPD服务未开启或时间误差超过一分钟

+

开启 NTPD 服务并设置时钟一致。

+

CheckSysParams(检查操作系统参数)

+

操作系统参数设置不满足要求

+

使用 gs_checkos 进行参数设置或手动设置。

+
gs_checkos -i B1
+vim /etc/sysctl.conf
+

CheckTHP(检查 THP 服务)

+

THP服务未开启

+

使用 gs_checkos 设置 THP 服务。

+
gs_checkos -i B6
+

CheckTimeZone(检查时区)

+

时区不一致

+

设置各节点为同一时区。

+
cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime
+

CheckCPU(检查CPU)

+

CPU占用过高或 IO 等待过高

+

进行 CPU 配置升级或磁盘性能升级。

+

CheckSshdService(检查 SSHD 服务)

+

未开启 SSHD 服务

+

启动 SSHD 服务并写入开机自启动文件。

+
service sshd start
+echo "server sshd start" >> initFile
+

CheckSshdConfig(检查 SSHD 配置)

+

SSHD服务配置错误

+

设置 SSHD 服务,

+
PasswordAuthentication=no;
+MaxStartups=1000;
+UseDNS=yes;
+ClientAliveInterval=10800/ClientAliveInterval=0
+

并重启服务:

+
server sshd start
+

CheckCrondService(检查 Crond 服务)

+

Crond服务未启动

+

安装 Crond 服务并启用。

+

CheckStack(检查堆栈大小)

+

堆栈大小小于3072

+

使用 gs_checkos 设置为 3072 并重启堆栈值过小进程。

+
gs_checkos -i B2
+

CheckSysPortRange(检查系统端口设置)

+

系统 ip 端口不在预期范围内或 openGauss 端口在系统 ip 端口内

+

设置系统 ip 端口范围参数到26000-65535之中;设置 openGauss 端口在系统 ip 端口范围外。

+
vim /etc/sysctl.conf
+

CheckMemInfo(检查内存信息)

+

各节点内存大小不一致

+

使用相同规格的物理内存。

+

CheckHyperThread(检查超线程)

+

未开启 CPU 超线程

+

开启 CPU 超线程。

+

CheckTableSpace(检查表空间)

+

表空间路径和 openGauss 路径存在嵌套或表空间路径相互存在嵌套

+

将表空间数据迁移到路径合法的表空间中。

+
+ + + + +## 检查数据库性能 + +### 检查办法 + +通过 openGauss 提供的性能统计工具gs\_checkperf可以对硬件性能进行检查。 + +**前提条件** + +- openGauss运行状态正常。 +- 运行在数据库之上的业务运行正常。 + +**操作步骤** + +1. 以操作系统用户 omm 登录数据库主节点。 +2. 执行如下命令对 openGauss 数据库进行性能检查。 + + ``` + gs_checkperf + ``` + + +具体的性能统计项目请参见《openGauss 工具参考》中“服务端工具 \> gs\_checkperf \> 性能检查项”。 + +**示例** + +以简要格式在屏幕上显示性能统计结果。 + +``` +gs_checkperf -i pmk -U omm +Cluster statistics information: + Host CPU busy time ratio : 1.43 % + MPPDB CPU time % in busy time : 1.88 % + Shared Buffer Hit ratio : 99.96 % + In-memory sort ratio : 100.00 % + Physical Reads : 4 + Physical Writes : 25 + DB size : 70 MB + Total Physical writes : 25 + Active SQL count : 2 + Session count : 3 +``` + +### 异常处理 + +使用gs\_checkperf工具检查 openGauss 性能状态后,如果发现检查结果发现异常,可以根据以下内容进行修复。 + +**表 1** 检查 openGauss 级别性能状态 + + + + + + + + + + + + + + + + + + + + + + + + + +

异常状态

+

处理方法

+

主机 CPU 占有率高

+

1、更换和增加高性能的 CPU 。

+

2、使用 top 命令查看系统哪些进程的 CPU 占有率高,然后使用 kill 命令关闭没有使用的进程。

+
top
+

openGauss CPU占有率高

+

1、更换和增加高性能的 CPU 。

+

2、使用 top 命令查看数据库哪些进程的 CPU 占有率高,然后使用 kill 命令关闭没有使用的进程。

+
top
+

3、使用 gs_expand 工具扩容,增加新的主机均衡 CPU 占有率。

+

共享内存命中率低

+

1、扩大内存。

+

2、使用如下命令查看操作系统配置文件/etc/sysctl.conf,调大共享内存kernel.shmmax值。

+
vim /etc/sysctl.conf
+

内存中排序比率低

+

扩大内存。

+

I/O、磁盘使用率高

+

1、更换高性能的磁盘。

+

2、调整数据布局,尽量将I/O请求较合理的分配到所有物理磁盘中。

+

3、全库进行 VACUUM FULL 操作。

+
vacuum full;
+

4、进行磁盘整理,参考上面执行全库 vacuum full 或针对性做单表vacuum/vacuum full操作。

+

5、降低并发数。

+

事务统计

+

查询 pg_stat_activity 系统表,将不必要的连接断开。(登录数据库后查询:openGauss=# \d+ pg_stat_activity;)

+
+ +**表 2** 检查节点级别性能状态 + + + + + + + + + + + + + + + + +

异常状态

+

处理方法

+

CPU占有率高

+

1、更换和增加高性能的 CPU 。

+

2、使用 top 命令查看系统哪些进程的 CPU 占有率高,然后使用 kill 命令关闭没有使用的进程。

+
top
+

内存使用率过高情况

+

扩大或清理内存。

+

I/O使用率过高情况

+

1、更换高性能的磁盘。

+

2、进行磁盘清理。

+

3、尽可能用内存的读写代替直接磁盘I/O,使频繁访问的文件或数据放入内存中进行操作处理。

+
+ +**表 3** 会话/进程级别性能状态 + + + + + + + + + + +

异常状态

+

处理方法

+

CPU、内存、I/O使用率过高情况

+

查看哪个进程占用CPU/内存高或I/O使用率高,若是无用的进程,则 kill 掉,否则排查具体原因。例如 SQL 执行占用内存大,查看是否 SQL 语句需要优化。

+
+ +**表 4** SSD性能状态 + + + + + + + + + + +

异常状态

+

处理方法

+

SSD读写性能故障

+

使用以下命令查看 SSD 是否有故障,排查具体故障原因。

+
gs_checkperf -i SSD -U omm
+
+ +## 检查和清理日志 + +日志是检查系统运行及故障定位的关键手段。建议按月度例行查看操作系统日志及数据库的运行日志。同时,随着时间的推移,日志的增加会占用较多的磁盘空间。建议按月度清理数据库的运行日志。 + +### 检查操作系统日志 + +建议按月检查操作系统日志,排除操作系统运行异常隐患。 + +执行如下命令查看操作系统日志文件。 + +``` +vim /var/log/messages +``` + +关注其中近一个月出现的kernel、error、fatal等字样,根据系统报警信息进行处理。 + +### 检查 openGauss 运行日志 + +数据库运行时,某些操作在执行过程中可能会出现错误,数据库依然能够运行。但是此时数据库中的数据可能已经发生不一致的情况。建议按月检查 openGauss 运行日志,及时发现隐患。 + +**前提条件** + +- 收集日志的主机网络通畅且未宕机,数据库安装用户互信正常。 +- 日志收集工具依赖操作系统工具如 gstack ,如果未安装该工具,则提示错误后,跳过该收集项。 + +**操作步骤** + +1. 以操作系统用户 omm 登录数据库主节点。 +2. 执行如下命令收集数据库日志。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" + ``` + + 20160616 01:01为日志的开始时间,20160616 23:59为日志的结束时间。 + +3. 根据[2](#zh-cn_topic_0237088806_zh-cn_topic_0059778412_l87490fc259434bc6ac7800ec9881a6ab)的界面输出提示,进入相应的日志收集目录,解压收集的日志,并检查数据库日志。 + + 以下以日志收集路径“/opt/gaussdb/tmp/gaussdba\_mppdb/collector\_20160726\_105158.tar.gz”为例进行操作。 + + ``` + tar -xvzf /opt/gaussdb/tmp/gaussdba_mppdb/collector_20160726_105158.tar.gz + cd /opt/gaussdb/tmp/gaussdba_mppdb/collector_20160726_105158 + ``` + + +**示例** + +- 以--begin-time与--end-time为参数执行gs\_collector命令。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" + ``` + + 当显示类似如下信息表示日志已经归档。 + + ``` + Successfully collected files + All results are stored in /tmp/gaussdba_mppdb/collector_20160616_175615.tar.gz. + ``` + +- 以--begin-time、--end-time与-h为参数执行gs\_collector命令。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -h plat2 + ``` + + 当显示类似如下信息表示日志已经归档。 + + ``` + Successfully collected files + All results are stored in /tmp/gaussdba_mppdb/collector_20160616_190225.tar.gz. + ``` + +- 以--begin-time、--end-time与-f为参数执行gs\_collector命令。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -f /opt/software/gaussdb/output + ``` + + 当显示类似如下信息表示日志已经归档。 + + ``` + Successfully collected files + All results are stored in /opt/software/gaussdb/output/collector_20160616_190511.tar.gz. + ``` + +- 以--begin-time、--end-time与--keyword为参数执行gs\_collector命令。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" --keyword="os" + ``` + + 当显示类似如下信息表示日志已经归档。 + + ``` + Successfully collected files. + All results are stored in /tmp/gaussdba_mppdb/collector_20160616_190836.tar.gz. + ``` + +- 以--begin-time、--end-time与-o为参数执行gs\_collector命令。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -o /opt/software/gaussdb/output + ``` + + 当显示类似如下信息表示日志已经归档。 + + ``` + Successfully collected files. + All results are stored in /opt/software/gaussdb/output/collector_20160726_113711.tar.gz. + ``` + +- 以--begin-time、--end-time与-l为参数(文件名必须以.log为后缀)执行gs\_collector命令。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -l /opt/software/gaussdb/logfile.log + ``` + + 当显示类似如下信息表示日志已经归档。 + + ``` + Successfully collected files. + All results are stored in /opt/software/gaussdb/output/collector_20160726_113711.tar.gz. + ``` + + +### 清理运行日志 + +数据库运行过程中会产生大量运行日志,占用大量的磁盘空间,建议清理过期日志文件,只保留一个月的日志。 + +**操作步骤** + +1. 以操作系统用户 omm 登录数据库主节点。 +2. 清理日志。 + + a. 将超过 1 个月的日志备份到其他磁盘。 + + b. 进入日志存放目录。 + + ``` + cd $GAUSSLOG + ``` + + c. 进入相应的子目录,使用如下方式删除 1 个月之前产生的日志。 + + ``` +rm 日志名称 + ``` + + 日志文件的命名格式为“postgresql-年-月-日\_HHMMSS”。 + + + +## 检查时间一致性 + +数据库事务一致性通过逻辑时钟保证,与操作系统时间无关,但是系统时间不一致会导致诸多潜在问题,主要是后台运维和监控功能异常,因此在月度检查时建议检查各个节点的时间一致性。 + +### 操作步骤 + +1. 以操作系统用户 omm 登录数据库主节点。 +2. 创建记录 openGauss 各节点的配置文件(_mpphosts文件目录_用户可随意指定,建议放在/tmp下)。 + + ``` + vim /tmp/mpphosts + ``` + + 增加各节点的主机名称。 + + ``` + plat1 + plat2 + plat3 + ``` + +3. 保存配置文件。 + + ``` + :wq! + ``` + +4. 执行如下命令,输出各节点上的时间到“/tmp/sys\_ctl-os1.log”文件中。 + + ``` + for ihost in `cat /tmp/mpphosts`; do ssh -n -q $ihost "hostname;date"; done > /tmp/sys_ctl-os1.log + ``` + +5. 根据输出确认各个节点的时间一致性,节点之间时间差异不能超过 30 秒。 + + ``` + cat /tmp/sys_ctl-os1.log + plat1 + Thu Feb 9 16:46:38 CST 2017 + plat2 + Thu Feb 9 16:46:49 CST 2017 + plat3 + Thu Feb 9 16:46:14 CST 2017 + ``` + + +## 检查应用连接数 + +如果应用程序与数据库的连接数超过最大值,则新的连接无法建立。建议每天检查连接数,及时释放空闲的连接或者增加最大连接数。 + +### 操作步骤 + +1. 以操作系统用户 omm 登录数据库主节点。 +2. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + +postgres 为需要连接的数据库名称, 8000 为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + openGauss=# + ``` + +3. 执行如下 SQL 语句查看连接数。 + + ``` + openGauss=# SELECT count(*) FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s; + ``` + + 显示类似如下的信息,其中 2 表示当前有两个应用连接到数据库。 + + ``` + count + ------- + 2 + (1 row) + ``` + +4. 查看现有最大连接数。 + + ``` + openGauss=# SHOW max_connections; + ``` + + 显示信息如下,其中 200 为现在的最大连接数。 + + ``` + max_connections + ----------------- + 200 + (1 row) + ``` + + +### 异常处理 + +如果显示的连接数接近数据库的最大连接数max\_connections,则需要考虑清理现有连接数或者增加新的连接数。 + +1. 执行如下 SQL 语句,查看 state 字段等于 idle ,且state\_change字段长时间没有更新过的连接信息。 + + ``` + openGauss=# SELECT * FROM pg_stat_activity where state='idle' order by state_change; + ``` + + 显示类似如下的信息: + + ``` + datid | datname | pid | usesysid | usename | application_name | client_addr + | client_hostname | client_port | backend_start | xact_start | quer + y_start | state_change | waiting | enqueue | state | resource_pool + | query + -------+----------+-----------------+----------+----------+------------------+--------------- + -+-----------------+-------------+-------------------------------+------------+-------------- + -----------------+-------------------------------+---------+---------+-------+--------------- + +---------------------------------------------- + 13626 | postgres | 140390162233104 | 10 | gaussdba | | + | | -1 | 2016-07-15 14:08:59.474118+08 | | 2016-07-15 14 + :09:04.496769+08 | 2016-07-15 14:09:04.496975+08 | f | | idle | default_pool + | select count(group_name) from pgxc_group; + 13626 | postgres | 140390132872976 | 10 | gaussdba | cn_5002 | 10.180.123.163 + | | 48614 | 2016-07-15 14:11:16.014871+08 | | 2016-07-15 14 + :21:17.346045+08 | 2016-07-15 14:21:17.346095+08 | f | | idle | default_pool + | SET SESSION AUTHORIZATION DEFAULT;RESET ALL; + (2 rows) + ``` + +2. 释放空闲的连接数。 + + 查看每个连接,并与此连接的使用者确认是否可以断开连接,或执行如下 SQL 语句释放连接。其中, pid 为上一步查询中空闲连接所对应的 pid 字段值。 + + ``` + openGauss=# SELECT pg_terminate_backend(140390132872976); + ``` + + 显示类似如下的信息: + + ``` + openGauss=# SELECT pg_terminate_backend(140390132872976); + pg_terminate_backend + ---------------------- + t + (1 row) + ``` + + 如果没有可释放的连接,请执行下一步。 + +3. 增加最大连接数。 + + ``` + gs_guc set -D /gaussdb/data/dbnode -c "max_connections= 800" + ``` + + 其中 800 为新修改的连接数。 + +4. 重启数据库服务使新的设置生效。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >重启 openGauss 操作会导致用户执行操作中断,请在操作之前规划好合适的执行窗口。 + + ``` + gs_om -t stop && gs_om -t start + ``` + + +## 例行维护表 + +为了保证数据库的有效运行,数据库必须在插入/删除操作后,基于客户场景,定期做 VACUUM FULL 和 ANALYZE ,更新统计信息,以便获得更优的性能。 + +### 相关概念 + +使用VACUUM、VACUUM FULL和 ANALYZE 命令定期对每个表进行维护,主要有以下原因: + +- VACUUM FULL可回收已更新或已删除的数据所占据的磁盘空间,同时将小数据文件合并。 +- VACUUM对每个表维护了一个可视化映射来跟踪包含对别的活动事务可见的数组的页。一个普通的索引扫描首先通过可视化映射来获取对应的数组,来检查是否对当前事务可见。若无法获取,再通过堆数组抓取的方式来检查。因此更新表的可视化映射,可加速唯一索引扫描。 +- VACUUM可避免执行的事务数超过数据库阈值时,事务 ID 重叠造成的原有数据丢失。 +- ANALYZE可收集与数据库中表内容相关的统计信息。统计结果存储在系统表PG\_STATISTIC中。查询优化器会使用这些统计数据,生成最有效的执行计划。 + +### 操作步骤 + +1. 使用 VACUUM 或 VACUUM FULL 命令,进行磁盘空间回收。 + - **VACUUM**: + + 对表执行 VACUUM 操作 + + ``` + openGauss=# VACUUM customer; + ``` + + ``` + VACUUM + ``` + + 可以与数据库操作命令并行运行。(执行期间,可正常使用的语句:SELECT、INSERT、UPDATE和 DELETE 。不可正常使用的语句:ALTER TABLE)。 + + 对表分区执行 VACUUM 操作 + + ``` + openGauss=# VACUUM customer_par PARTITION ( P1 ); + ``` + + ``` + VACUUM + ``` + + - **VACUUM FULL**: + + ``` + openGauss=# VACUUM FULL customer; + ``` + + ``` + VACUUM + ``` + + 需要向正在执行的表增加排他锁,且需要停止其他所有数据库操作。 + +2. 使用 ANALYZE 语句更新统计信息。 + + ``` + openGauss=# ANALYZE customer; + ``` + + ``` + ANALYZE + ``` + + 使用 ANALYZE VERBOSE 语句更新统计信息,并输出表的相关信息。 + + ``` + openGauss=# ANALYZE VERBOSE customer; + ``` + + ``` + ANALYZE + ``` + + 也可以同时执行 VACUUM ANALYZE 命令进行查询优化。 + + ``` + openGauss=# VACUUM ANALYZE customer; + ``` + + ``` + VACUUM + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >VACUUM和 ANALYZE 会导致I/O流量的大幅增加,这可能会影响其他活动会话的性能。因此,建议通过“vacuum\_cost\_delay”参数设置《开发者指南》中“GUC参数说明 \> 资源消耗 \> 基于开销的清理延迟”。 + +3. 删除表。 + + ``` + openGauss=# DROP TABLE customer; + openGauss=# DROP TABLE customer_par; + openGauss=# DROP TABLE part; + ``` + + 当结果显示为如下信息,则表示删除成功。 + + ``` + DROP TABLE + ``` + + +### 维护建议 + +- 定期对部分大表做 VACUUM FULL ,在性能下降后为全库做 VACUUM FULL ,目前暂定每月做一次 VACUUM FULL 。 +- 定期对系统表做 VACUUM FULL ,主要是PG\_ATTRIBUTE。 +- 启用系统自动清理线程(AUTOVACUUM)自动执行 VACUUM 和 ANALYZE ,回收被标识为删除状态的记录空间,并更新表的统计数据。 + +## 例行重建索引 + +### 背景信息 + +数据库经过多次删除操作后,索引页面上的索引键将被删除,造成索引膨胀。例行重建索引,可有效的提高查询效率。 + +数据库支持的索引类型为B-tree索引,例行重建索引可有效的提高查询效率。 + +- 如果数据发生大量删除后,索引页面上的索引键将被删除,导致索引页面数量的减少,造成索引膨胀。重建索引可回收浪费的空间。 +- 新建的索引中逻辑结构相邻的页面,通常在物理结构中也是相邻的,所以一个新建的索引比更新了多次的索引访问速度要快。 + +### 重建索引 + +重建索引有以下两种方式: + +- 先删除索引(DROP INDEX),再创建索引(CREATE INDEX)。 + + 在删除索引过程中,会在父表上增加一个短暂的排他锁,阻止相关读写操作。在创建索引过程中,会锁住写操作但是不会锁住读操作,此时读操作只能使用顺序扫描。 + +- 使用 REINDEX 语句重建索引。 + - 使用 REINDEX TABLE 语句重建索引,会在重建过程中增加排他锁,阻止相关读写操作。 + - 使用 REINDEX INTERNAL TABLE 语句重建 desc 表(包括列存表的 cudesc 表)的索引,会在重建过程中增加排他锁,阻止相关读写操作。 + + +### 操作步骤 + +假定在导入表“areaS”上的“area\_id”字段上存在普通索引“areaS\_idx”。重建索引有以下两种方式: + +- 先删除索引(DROP INDEX),再创建索引(CREATE INDEX)。 + 1. 删除索引。 + + ``` + openGauss=# DROP INDEX areaS_idx; + DROP INDEX + ``` + + 2. 创建索引。 + + ``` + openGauss=# CREATE INDEX areaS_idx ON areaS (area_id); + CREATE INDEX + ``` + + +- 使用 REINDEX 重建索引。 + - 使用 REINDEX TABLE 语句重建索引。 + + ``` + openGauss=# REINDEX TABLE areaS; + REINDEX + ``` + + - 使用 REINDEX INTERNAL TABLE 重建 desc 表(包括列存表的 cudesc 表)的索引。 + + ``` + openGauss=# REINDEX INTERNAL TABLE areaS; + REINDEX + ``` + + + +>![](public_sys-resources/icon-note.gif) **说明:** +>在重建索引前,用户可以通过临时增大maintenance\_work\_mem和psort\_work\_mem的取值来加快索引的重建。 + +## 数据安全维护建议 + +为保证 openGauss 数据库中的数据安全,避免丢失数据、非法访问数据等事故发生,请仔细阅读以下内容。 + +### 避免数据被丢失 + +建议用户规划周期性的物理备份,且对备份文件进行可靠的保存。在系统发生严重错误的情况下,可以利用备份文件,将系统恢复到备份前的状态。 + +### 避免数据被非法访问 + +- 建议对数据库用户进行权限分级管理。数据库管理员根据业务需要,建立用户并赋予权限,保证各用户对数据库的合理访问。 +- 对于 openGauss 的服务端和客户端(或基于客户端库开发的应用程序),最好也部署在可信任的内网中。如果服务端和客户端一定要部署在非信任的网络中,需要在服务启动前,打开 SSL 加密,保证数据在非信任网络上的传输安全。需要注意的是,打开 SSL 加密会降低数据库的性能。 + +### 避免系统日志泄露个人数据 + +- 将调试日志发给他人进行分析前,请删除个人数据。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >因为日志级别(log\_min\_messages)设置为DEBUGx(x为 DEBUG 级别,取值范围为1\~5)时,调试日志中记录的信息可能包含用户的个人数据。 + +- 将系统日志发给其他人进行分析前,请删除个人数据。因为在默认配置下,当 SQL 语句执行错误时,日志中会记录出错的 SQL 语句,而这些 SQL 语句中可能包含用户个人数据。 +- 将log\_min\_error\_statement参数的值设置为 PANIC 可以避免在系统日志中记录出错的 SQL 语句,但是关闭此功能将导致发生错误时难以定位。 + +## 慢 SQL 诊断 + +### 背景信息 + +在 SQL 语句执行性能不符合预期时,可以查看 SQL 语句执行信息,便于事后分析 SQL 语句执行时的行为,从而诊断 SQL 语句执行出现的相关问题。 + +### 前提条件 + +- 数据库实例运行正常。 +- 查询 SQL 语句信息,需要正确设置 GUC 参数track\_stmt\_stat\_level。 +- 只能用系统管理员和监控管理员权限进行操作。 + +``` +执行命令查看数据库实例中 SQL 语句执行信息 +gsql> select * from dbe_perf.get_global_full_sql_by_timestamp(start_timestamp, end_timestamp); +执行命令查看数据库实例中慢 SQL 语句执行信息 +gsql> select * from dbe_perf.get_global_slow_sql_by_timestamp(start_timestamp, end_timestamp); +查看当前节点 SQL 语句执行信息 +gsql> select * from statement_history; +``` + diff --git "a/content/zh/docs/Administratorguide/\345\220\257\345\201\234openGauss.md" "b/content/zh/docs/Administratorguide/\345\220\257\345\201\234openGauss.md" index e1765195a..7f25b2656 100644 --- "a/content/zh/docs/Administratorguide/\345\220\257\345\201\234openGauss.md" +++ "b/content/zh/docs/Administratorguide/\345\220\257\345\201\234openGauss.md" @@ -1,62 +1,62 @@ -# 启停openGauss - -## 启动openGauss - -1. 以操作系统用户omm登录数据库主节点。 -2. 使用以下命令启动openGauss。 - - ``` - gs_om -t start - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >双机启动必须以双机模式启动,若中间过程以单机模式启动,则必须修复才能恢复双机关系,用gs\_ctl build进行修复,gs\_ctl的使用方法请参见《openGauss 工具参考》。 - - -## 停止openGauss - -1. 以操作系统用户omm登录数据库主节点。 -2. 使用以下命令停止openGauss。 - - ``` - gs_om -t stop - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >启停节点及AZ的操作请参见《openGauss 工具参考》中“服务端工具 \> gs\_om”章节。 - - -## 示例 - -启动openGauss: - -``` -gs_om -t start -Starting cluster. -========================================= -========================================= -Successfully started. - -``` - -停止openGauss: - -``` -gs_om -t stop -Stopping cluster. -========================================= -Successfully stopped cluster. -========================================= -End stop cluster. -``` - -## 错误排查 - -如果启动openGauss或者停止openGauss服务失败,请根据日志文件中的日志信息排查错误,参见[日志参考](日志参考.md)。 - -如果是超时导致启动失败,可以执行如下命令,设置启动超时时间,默认超时时间为300s。 - -``` -gs_om -t start --time-out=300 -``` - +# 启停openGauss + +## 启动openGauss + +1. 以操作系统用户 omm 登录数据库主节点。 +2. 使用以下命令启动 openGauss 。 + + ``` + gs_om -t start + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >双机启动必须以双机模式启动,若中间过程以单机模式启动,则必须修复才能恢复双机关系,用gs\_ctl build进行修复,gs\_ctl的使用方法请参见《openGauss 工具参考》。 + + +## 停止openGauss + +1. 以操作系统用户 omm 登录数据库主节点。 +2. 使用以下命令停止 openGauss 。 + + ``` + gs_om -t stop + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >启停节点及 AZ 的操作请参见《openGauss 工具参考》中“服务端工具 \> gs\_om”章节。 + + +## 示例 + +启动openGauss: + +``` +gs_om -t start +Starting cluster. +========================================= +========================================= +Successfully started. + +``` + +停止openGauss: + +``` +gs_om -t stop +Stopping cluster. +========================================= +Successfully stopped cluster. +========================================= +End stop cluster. +``` + +## 错误排查 + +如果启动 openGauss 或者停止 openGauss 服务失败,请根据日志文件中的日志信息排查错误,参见[日志参考](日志参考.md)。 + +如果是超时导致启动失败,可以执行如下命令,设置启动超时时间,默认超时时间为 300s 。 + +``` +gs_om -t start --time-out=300 +``` + diff --git "a/content/zh/docs/Administratorguide/\345\244\207\344\273\275\344\270\216\346\201\242\345\244\215.md" "b/content/zh/docs/Administratorguide/\345\244\207\344\273\275\344\270\216\346\201\242\345\244\215.md" index 899b3cbcf..2b94a67f9 100644 --- "a/content/zh/docs/Administratorguide/\345\244\207\344\273\275\344\270\216\346\201\242\345\244\215.md" +++ "b/content/zh/docs/Administratorguide/\345\244\207\344\273\275\344\270\216\346\201\242\345\244\215.md" @@ -1,2745 +1,2748 @@ -# 备份与恢复 - - - -- [概述](#概述) - -- [物理备份恢复](#物理备份恢复) - -- [逻辑备份恢复](#逻辑备份恢复) - -- [闪回恢复](#闪回恢复) - - - - -## 概述 - -数据备份是保护数据安全的重要手段之一,为了更好的保护数据安全,openGauss数据库支持三种备份恢复类型、多种备份恢复方案,备份和恢复过程中提供数据的可靠性保障机制。 - -备份与恢复类型可分为逻辑备份与恢复、物理备份与恢复、闪回恢复。 - -- 逻辑备份与恢复:通过逻辑导出对数据进行备份,逻辑备份只能基于备份时刻进行数据转储,所以恢复时也只能恢复到备份时保存的数据。对于故障点和备份点之间的数据,逻辑备份无能为力,逻辑备份适合备份那些很少变化的数据,当这些数据因误操作被损坏时,可以通过逻辑备份进行快速恢复。如果通过逻辑备份进行全库恢复,通常需要重建数据库,导入备份数据来完成,对于可用性要求很高的数据库,这种恢复时间太长,通常不被采用。由于逻辑备份具有平台无关性,所以更为常见的是,逻辑备份被作为一个数据迁移及移动的主要手段。 - -- 物理备份与恢复:通过物理文件拷贝的方式对数据库进行备份,以磁盘块为基本单位将数据从主机复制到备机。通过备份的数据文件及归档日志等文件,数据库可以进行完全恢复。物理备份速度快,一般被用作对数据进行备份和恢复,用于全量备份的场景。通过合理规划,可以低成本进行备份与恢复。 - -- 闪回恢复:利用回收站的闪回恢复删除的表。数据库的回收站功能类似于windows系统的回收站,将删除的表信息保存到回收站中。利用MVCC机制闪回恢复到指定时间点或者CSN点。 - - 以下为openGauss支持的三类数据备份恢复方案,备份方案也决定了当异常发生时该如何恢复。 - - **表 1** 三种备份恢复类型对比 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

备份类型

-

应用场景

-

支持的介质

-

工具名称

-

恢复时间

-

优缺点

-

逻辑备份与恢复

-

适合于数据量小的场景。

-

可以备份单表和多表,单database和所有database。备份后的数据需要使用gsql或者gs_restore工具恢复。数据量大时,恢复需要较长时间。

-

磁盘

-

SSD

-

-

gs_dump

-

纯文本格式数据恢复时间长。归档格式数据恢复时间中等。

-

导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式、表、视图等)。支持导出的数据库可以是默认数据库postgres,也可以是自定义数据库。导出的格式可选择纯文本格式或者归档格式。纯文本格式的数据只能通过gsql进行恢复,恢复时间较长。归档格式的数据只能通过gs_restore进行恢复,恢复时间较纯文本格式短。

-

gs_dumpall

-

数据恢复时间长。

-

导出所有数据库相关信息工具,它可以导出openGauss数据库的所有数据,包括默认数据库postgres的数据、自定义数据库的数据、以及openGauss所有数据库公共的全局对象。

-

只能导出纯文本格式的数据,导出的数据只能通过gsql进行恢复,恢复时间较长。

-

物理备份与恢复

-

适用于数据量大的场景,主要用于全量数据备份恢复,也可对整个数据库中的WAL归档日志和运行日志进行备份。

-

gs_backup

-

数据量小数据恢复时间快。

-

导出数据库相关信息的OM工具,可以导出数据库参数文件和二进制文件。帮助openGauss备份、恢复重要数据、显示帮助信息和版本号信息。在进行备份时,可以选择备份内容的类型,在进行还原时,需要保证各节点备份目录中存在备份文件。在集群恢复时,通过静态配置文件中的集群信息进行恢复。只恢复参数文件恢复时间较短。

-

gs_basebackup

-

恢复时可以直接拷贝替换原有的文件, 或者直接在备份的库上启动数据库,恢复时间快。

-

对服务器数据库文件的二进制进行全量拷贝,只能对数据库某一个时间点的时间作备份。结合PITR恢复,可恢复全量备份时间点后的某一时间点。

-

gs_probackup

-

恢复时可以直接恢复到某个备份点,在备份的库上启动数据库,恢复时间快。

-

gs_probackup是一个用于管理openGauss数据库备份和恢复的工具。它对openGauss 实例进行定期备份。可用于备份单机数据库或者集群主节点数据库,为物理备份。 可备份外部目录的内容,如脚本文件、配置文件、日志文件、dump文件等。 支持增量备份、定期备份和远程备份。增量备份时间相对于全量备份时间比较短,只需要备份修改的文件。当前默认备份是数据目录,如果表空间不在数据目录,需要手动指定备份的表空间目录进行备份。当前只支持在主机上执行备份。

-

闪回恢复

-

适用于:

-

1)误删除表的场景;

-

2)需要将表中的数据恢复到指定时间点或者CSN。

-

-

可以将表的状态恢复到指定时间点或者是表结构删除前的状态,恢复时间快。

-

闪回技术能够有选择性的高效撤销一个已提交事务的影响,从人为错误中恢复。在采用闪回技术之前,只能通过备份恢复、PITR等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。

-

闪回支持两种恢复模式:

-
  • 基于MVCC多版本的数据恢复:适用于误删除、误更新、误插入数据的查询和恢复,用户通过配置旧版本保留时间,并执行相应的查询或恢复命令,查询或恢复到指定的时间点或CSN点。
  • 基于类似windows系统回收站的恢复:适用于误DROP、误TRUNCATE的表的恢复。用户通过配置回收站开关,并执行相应的恢复命令,可以将误DROP、误TRUNCATE的表找回。
-
- - - 当需要进行备份恢复操作时,主要从以下四个方面考虑数据备份方案。 - - - 备份对业务的影响在可接受范围。 - - - 数据库恢复效率。 - - 为尽量减小数据库故障的影响,要使恢复时间减到最少,从而使恢复的效率达到最高。 - - - 数据可恢复程度。 - - 当数据库失效后,要尽量减少数据损失。 - - - 数据库恢复成本。 - - 在现网选择备份策略时参考的因素比较多,如备份对象、数据大小、网络配置等,[表2](#zh-cn_topic_0283140581_zh-cn_topic_0237088826_zh-cn_topic_0100209712_table1179095017218)列出了可用的备份策略和每个备份策略的适用场景。 - - **表 2** 备份策略典型场景 - - - - - - - - - - - - - - - - - - - - -

备份策略

-

关键性能因素

-

典型数据量

-

性能规格

-

数据库实例备份

-
  • 数据大小
  • 网络配置
-

数据:PB级

-

对象:约100万个

-

备份:

-
  • 每个主机80 Mbit/s(NBU/EISOO+磁盘)
  • 约90%磁盘I/O速率(SSD/HDD)
-

表备份

-
  • 表所在模式
  • 网络配置(NBU)
-

数据:10 TB级

-

备份:基于查询性能速度+I/O速度

-
说明:

多表备份时,备份耗时计算方式:

-
总时间 = 表数量 x 起步时间 + 数据总量 /  数据备份速度
-

其中:

-
  • 磁盘起步时间为5s左右,NBU起步时间比DISK长(取决于NBU部署方案)。
  • 数据备份速度为单节点50MB/s左右(基于1GB大小的表,物理机备份到本地磁盘得出此速率)。
-

表越小,备份性能更低。

-
-
- - - - -## 物理备份恢复 - - -### gs\_basebackup - -#### 背景信息 - -openGauss部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。openGauss提供了gs\_basebackup工具做基础的物理备份。gs\_basebackup的实现目标是对服务器数据库文件的二进制进行拷贝,其实现原理使用了复制协议。远程执行gs\_basebackup时,需要使用系统管理员账户。gs\_basebackup当前支持热备份模式和压缩格式备份。 - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** -> ->- gs\_basebackup仅支持主机和备机的全量备份,不支持增量。 ->- gs\_basebackup当前支持热备份模式和压缩格式备份。 ->- gs\_basebackup在备份包含绝对路径的表空间时,如果在同一台机器上进行备份,可以通过tablespace-mapping重定向表空间路径,或使用归档模式进行备份。 ->- 若打开增量检测点功能且打开双写,gs\_basebackup也会备份双写文件。 ->- 若pg\_xlog目录为软链接,备份时将不会建立软链接,会直接将数据备份到目的路径的pg\_xlog目录下。 ->- 备份过程中收回用户备份权限,可能导致备份失败或者备份数据不可用。 ->- 如果因为网络临时故障等原因导致Server端无应答,gs\_basebackup将在最长等待120秒后退出。 - -#### 前提条件 - -- 可以正常连接openGauss数据库。 - -- 备份过程中用户权限没有被回收。 - -- pg\_hba.conf中需要配置允许复制链接,且该连接必须由一个系统管理员建立。 - -- 如果xlog传输模式为stream模式,需要配置max\_wal\_senders的数量, 至少有一个可用。 - -- 如果xlog传输模式为fetch模式,有必要把wal\_keep\_segments参数设置得足够高,这样在备份末尾之前日志不会被移除。 - -- 在进行还原时,需要保证各节点备份目录中存在备份文件,若备份文件丢失,则需要从其他节点进行拷贝。 - -#### 语法 - -- 显示帮助信息 - - ``` - gs_basebackup -? | --help - ``` - -- 显示版本号信息 - - ``` - gs_basebackup -V | --version - ``` - -参数说明 - -gs\_basebackup参数可以分为如下几类: - -- -D directory - - 备份文件输出的目录,必选项。 - - -- 常用参数: - - - -c,--checkpoint=fast|spread - - 设置检查点模式为fast或者spread(默认)。 - - - -l,--label=LABEL - - 为备份设置标签。 - - - -P,--progress - - 启用进展报告。 - - - -v, --verbose - - 启用冗长模式。 - - - -V, --version - - 打印版本后退出。 - - - -?,--help - - 显示gs\_basebackup命令行参数。 - - - -T,–tablespace-mapping=olddir=newdir - - 在备份期间将目录olddir中的表空间重定位到newdir中。为使之有效,olddir必须正好匹配表空间所在的路径(但如果备份中没有包含olddir中的表空间也不是错误)。olddir和newdir必须是绝对路径。如果一个路径凑巧包含了一个=符号,可用反斜线对它转义。对于多个表空间可以多次使用这个选项。 - - - -F,–format=plain|tar - - 设置输出格式为plain\(默认\)或者tar。没有设置该参数的情况下,默认–format=plain。plain格式把输出写成平面文件,使用和当前数据目录和表空间相同的布局。当集簇没有额外表空间时,整个数据库将被放在目标目录中。如果集簇包含额外的表空间,主数据目录将被放置在目标目录中,但是所有其他表空间将被放在它们位于服务器上的相同的绝对路径中。tar模式将输出写成目标目录中的 tar 文件。主数据目录将被写入到一个名为base.tar的文件中,并且其他表空间将被以其 OID 命名。生成的tar包,需要用gs\_tar命令解压。 - - - -X, –xlog-method=fetch|stream - - 设置xlog传输方式。没有设置该参数的情况下,默认–xlog-method=stream。在备份中包括所需的预写式日志文件(WAL文件)。这包括所有在备份期间产生的预写式日志。fetch方式在备份末尾收集预写式日志文件。因此,有必要把wal\_keep\_segments参数设置得足够高,这样在备份末尾之前日志不会被移除。如果在要传输日志时它已经被轮转,备份将失败并且是不可用的。stream方式在备份被创建时流传送预写式日志。这将开启一个到服务器的第二连接并且在运行备份时并行开始流传输预写式日志。因此,它将使用最多两个由max\_wal\_senders参数配置的连接。只要客户端能保持接收预写式日志,使用这种模式不需要在主控机上保存额外的预写式日志。 - - - -x, - - –xlog 使用这个选项等效于和方法fetch一起使用-X。 - - - -Z –compress=level - - 启用对 tar 文件输出的 gzip 压缩,并且制定压缩级别(0 到 9,0 是不压缩,9 是最佳压缩)。只有使用 tar 格式时压缩才可用,并且会在所有tar文件名后面自动加上后缀.gz。 - - - -z - - 启用对 tar 文件输出的 gzip 压缩,使用默认的压缩级别。只有使用 tar 格式时压缩才可用,并且会在所有tar文件名后面自动加上后缀.gz。 - - - -t,–rw-timeout - - 设置备份期间checkpoint的时间限制,默认限制时间为120s。当数据库全量checkpoint耗时较长时,可以适当增大rw-timeout限制时间。 - - -- 连接参数 - - - -h, --host=HOSTNAME - - 指定正在运行服务器的主机名或者Unix域套接字的路径。 - - - -p,--port=PORT - - 指定数据库服务器的端口号。 - - 可以通过port参数修改默认端口号。 - - - -U,--username=USERNAME - - 指定连接数据库的用户。 - - - -s, --status-interval=INTERVAL - - 发送到服务器的状态包的时间(以秒为单位)。 - - - -w,--no-password - - 不出现输入密码提示。 - - - -W, --password - - 当使用-U参数连接本地数据库或者连接远端数据库时,可通过指定该选项出现输入密码提示。 - - - -#### 示例 - -``` -gs_basebackup -D /home/test/trunk/install/data/backup -h 127.0.0.1 -p 21233 -INFO: The starting position of the xlog copy of the full build is: 0/1B800000. The slot minimum LSN is: 0/1B800000. -``` - -#### 从备份文件恢复数据 - -当数据库发生故障时需要从备份文件进行恢复。因为gs\_basebackup是对数据库按二进制进行备份,因此恢复时可以直接拷贝替换原有的文件,或者直接在备份的库上启动数据库。 - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** -> ->- 若当前数据库实例正在运行,直接从备份文件启动数据库可能会存在端口冲突,这时需要修改配置文件的port参数,或者在启动数据库时指定一下端口。 ->- 若当前备份文件为主备数据库,可能需要修改一下主备之间的复制连接。即配置文件中的postgre.conf中的replconninfo1、 replconninfo2等。 ->- 若配置文件postgresql.conf的参数data\_directory打开且有配置,当使用备份目录启动数据库时候,data\_directory和备份目录不同会导致启动失败。可以修改data\_directory的值为新的数据目录,或者注释掉该参数。 - -若要在原库的地方恢复数据库,参考步骤如下: - -1. 停止数据库服务器, 具体操作请参见《管理员指南》。 -2. 将原数据库和所有表空间复制到另外一个位置,以备后面需要。 -3. 清理原库中的所有或部分文件。 -4. 使用数据库系统用户权限从备份中还原需要的数据库文件。 -5. 若数据库中存在链接文件,需要修改使其链接到正确的文件。 -6. 重启数据库服务器,并检查数据库内容,确保数据库已经恢复到所需的状态。 - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** -> ->- 暂不支持备份文件增量恢复。 ->- 恢复后需要检查数据库中的链接文件是否链接到正确的文件。 - - - - -### PITR恢复 - -#### 背景信息 - -当数据库崩溃或希望回退到数据库之前的某一状态时,openGauss的即时恢复功能(Point-In-Time Recovery,简称PITR)可以支持恢复到备份归档数据之后的任意时间点。 - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** -> ->- PITR仅支持恢复到物理备份数据之后的某一时间点。 ->- 仅主节点可以进行PITR恢复,备机需要进行全量build达成与主机数据同步。 - - - -#### 前提条件 - -- 基于经过物理备份的全量数据文件。 -- 基于已归档的WAL日志文件。 - -#### PITR恢复流程 - -1. 将物理备份的文件替换目标数据库目录。 -2. 删除数据库目录下pg\_xlog/中的所有文件。 -3. 将归档的WAL日志文件复制到pg\_xlog文件中(此步骤可以省略,通过配置recovery.conf恢复命令文件中的restore\_command项替代)。 -4. 在数据库目录下创建恢复命令文件recovery.conf,指定数据库恢复的程度。 -5. 启动数据库。 -6. 连接数据库,查看是否恢复到希望预期的状态。 -7. 若已经恢复到预期状态,通过pg\_xlog\_replay\_resume\(\)指令使主节点对外提供服务。 - -#### recovery.conf文件配置 - -**归档恢复配置** - -- restore\_command = string - -这个SHELL命令是获取WAL文件系列中已归档的WAL文件。字符串中的任何一个%f是用归档检索中的文件名替换, 并且%p是用服务器上的复制目的地的路径名替换。 任意一个%r是用包含最新可用重启点的文件名替换。 - -示例: - -``` -restore_command = 'cp /mnt/server/archivedir/%f %p' -``` - -- archive\_cleanup\_command = string - -这个选项参数声明一个shell命令。在每次重启时会执行这个shell命令。 archive\_cleanup\_command为清理备库不需要的归档WAL文件提供一个机制。 任何一个%r由包含最新可用重启点的文件名代替。这是最早的文件,因此必须保留以允许恢复能够重新启动,因此所有早于%r的文件可以安全的移除。 - -示例: - -``` -archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r' -``` - -需要注意的是,如果多个备服务器从相同的归档路径恢复时, 需要确保在任何一个备服务器在需要之前,不能删除WAL文件。 - -- recovery\_end\_command = string - -这个参数是可选的,用于声明一个只在恢复完成时执行的SHELL命令。recovery\_end\_command是为以后的复制或恢复提供一个清理机制。 - -**恢复目标设置** - -- recovery\_target\_name = string - -此参数声明命名还原到一个使用pg\_create\_restore\_point\(\)创建的还原点。 - -示例: - -``` -recovery_target_name = 'restore_point_1' -``` - -- recovery\_target\_time = timestamp - -此参数声明命名还原到一个指定时间戳。 - -示例: - -``` -recovery_target_time = '2020-01-01 12:00:00' -``` - -- recovery\_target\_xid = string - -这个参数声明还原到一个事务ID。 - -示例: - -``` -recovery_target_xid = '3000' -``` - -- recovery\_target\_lsn = string - -这个参数声明还原到日志的指定LSN点。 - -示例: - -``` -recovery_target_lsn = '0/0FFFFFF' -``` - -- recovery\_target\_inclusive = boolean - -声明是否在指定恢复目标(true)之后停止,或在这(false)之前停止。改声明仅支持恢复目标为recovery\_target\_time、recovery\_target\_xid和recovery\_target\_lsn的配置。 - -示例: - -``` -recovery_target_inclusive = true -``` - -![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** - -- recovery\_target\_name、recovery\_target\_time、recovery\_target\_xid、recovery\_target\_lsn这四个配置项仅同时支持一项。 - -- 如果不配置任何恢复目标,或配置目标不存在,则默认恢复到最新的WAL日志点。 - -### gs\_probackup - -#### 背景信息 - -gs\_probackup是一个用于管理openGauss数据库备份和恢复的工具。它对openGauss实例进行定期备份,以便在数据库出现故障时能够恢复服务器。 - -- 可用于备份单机数据库,也可对主机或者主节点数据库备机进行备份,为物理备份。 -- 可备份外部目录的内容,如脚本文件、配置文件、日志文件、dump文件等。 -- 支持增量备份、定期备份和远程备份。 -- 可设置备份的留存策略。 - -#### 前提条件 - -- 可以正常连接openGauss数据库。 -- 若要使用PTRACK增量备份,需在postgresql.conf中手动添加参数“enable\_cbm\_tracking = on”。 -- 为了防止xlog在传输结束前被清理,请适当调高postgresql.conf文件中wal\_keep\_segments的值。 - -#### 限制说明 - -- 备份必须由运行数据库服务器的用户执行。 -- 备份和恢复的数据库服务器的主版本号必须相同。 -- 如果要通过ssh在远程模式下备份数据库,需要在本地和远程主机安装相同主版本的数据库,并通过ssh-copy-id remote\_user@remote\_host命令设置本地主机备份用户和远程主机数据库用户的无密码ssh连接。 -- 远程模式下只能执行add-instance、backup、restore子命令。 -- 使用restore子命令前,应先停止gaussdb进程。 -- 当存在用户自定义表空间时,备份的时候要加上 --external-dirs 参数,否则,该表空间不会被备份。 -- 当备份的规模比较大时,为了防止备份过程中timeout发生,请适当调整postgresql.conf文件的参数 session\_timeout、wal\_sender\_timeout。并且在备份的命令行参数中适当调整参数--rw-timeout的值。 -- 恢复时,使用-T选项把备份中的外部目录重定向到新目录时,请同时指定参数--external-mapping。 -- 增量备份恢复后,之前创建的逻辑复制槽不可用,需删除重建。 -- 当使用远程备份时,请确保远程机器和备份机器的时钟同步,以防止使用--recovery-target-time恢复的场合,启动gaussdb时有可能会失败。 -- 当远程备份有效时\(remote-proto=ssh\),请确保-h和--remote-host指定的是同一台机器。当远程备份无效时,如果指定了-h选项,请确保-h指定的是本机地址或本机主机名。 - -#### 命令说明 - -- 打印gs\_probackup版本。 - - ``` - gs_probackup -V|--version - gs_probackup version - ``` - -- 显示gs\_probackup命令的摘要信息。如果指定了gs\_probackup的子命令,则显示可用于此子命令的参数的详细信息。 - - ``` - gs_probackup -?|--help - gs_probackup help [command] - ``` - -- 初始化备份路径_backup-path_中的备份目录,该目录将存储已备份的内容。如果备份路径_backup-path_已存在,则_backup-path_必须为空目录。 - - ``` - gs_probackup init -B backup-path [--help] - ``` - -- 在备份路径_backup-path_内初始化一个新的备份实例,并生成pg\_probackup.conf配置文件,该文件保存了指定数据目录_pgdata-path_的gs\_probackup设置。 - - ``` - gs_probackup add-instance -B backup-path -D pgdata-path --instance=instance_name - [-E external-directories-paths] - [remote_options] - [--help] - ``` - -- 在备份路径_backup-path_内删除指定实例相关的备份内容。 - - ``` - gs_probackup del-instance -B backup-path --instance=instance_name - [--help] - ``` - -- 将指定的连接、压缩、日志等相关设置添加到pg\_probackup.conf配置文件中,或修改已设置的值。不推荐手动编辑pg\_probackup.conf配置文件。 - - ``` - gs_probackup set-config -B backup-path --instance=instance_name - [-D pgdata-path] [-E external-directories-paths] [--archive-timeout=timeout] - [--retention-redundancy=retention-redundancy] [--retention-window=retention-window] [--wal-depth=wal-depth] - [--compress-algorithm=compress-algorithm] [--compress-level=compress-level] - [-d dbname] [-h hostname] [-p port] [-U username] - [logging_options] [remote_options] - [--help] - ``` - -- 将备份相关设置添加到backup.control配置文件中,或修改已设置的值。 - - ``` - gs_probackup set-backup -B backup-path --instance=instance_name -i backup-id - [--note=text] [pinning_options] - [--help] - ``` - -- 显示位于备份目录中的pg\_probackup.conf配置文件的内容。可以通过指定--format=json选项,以json格式显示。默认情况下,显示为纯文本格式。 - - ``` - gs_probackup show-config -B backup-path --instance=instance_name - [--format=plain|json] - [--help] - ``` - -- 显示备份目录的内容。如果指定了instance\_name和backup\_id,则显示该备份的详细信息。可以通过指定--format=json选项,以json格式显示。默认情况下,备份目录的内容显示为纯文本格式。 - - ``` - gs_probackup show -B backup-path - [--instance=instance_name [-i backup-id]] [--archive] [--format=plain|json] - [--help] - ``` - -- 创建指定实例的备份。 - - ``` - gs_probackup backup -B backup-path --instance=instance_name -b backup-mode - [-D pgdata-path] [-C] [-S slot-name] [--temp-slot] [--backup-pg-log] [-j threads_num] [--progress] - [--no-validate] [--skip-block-validation] [-E external-directories-paths] [--no-sync] [--note=text] - [--archive-timeout=timeout] [-t rwtimeout] - [logging_options] [retention_options] [compression_options] - [connection_options] [remote_options] [pinning_options] - [--help] - ``` - -- 从备份目录_backup-path_中的备份副本恢复指定实例。如果指定了恢复目标选项,gs\_probackup将查找最近的备份并将其还原到指定的恢复目标。否则,使用最近一次备份。 - - ``` - gs_probackup restore -B backup-path --instance=instance_name - [-D pgdata-path] [-i backup_id] [-j threads_num] [--progress] [--force] [--no-sync] [--no-validate] [--skip-block-validation] - [--external-mapping=OLDDIR=NEWDIR] [-T OLDDIR=NEWDIR] [--skip-external-dirs] [-I incremental_mode] - [recovery_options] [remote_options] [logging_options] - [--help] - ``` - -- 将指定的增量备份与其父完全备份之间的所有增量备份合并到父完全备份。父完全备份将接收所有合并的数据,而已合并的增量备份将作为冗余被删除。 - - ``` - gs_probackup merge -B backup-path --instance=instance_name -i backup_id - [-j threads_num] [--progress] [logging_options] - [--help] - ``` - -- 删除指定备份,或删除不满足当前保留策略的备份。 - - ``` - gs_probackup delete -B backup-path --instance=instance_name - [-i backup-id | --delete-expired | --merge-expired | --status=backup_status] - [--delete-wal] [-j threads_num] [--progress] - [--retention-redundancy=retention-redundancy] [--retention-window=retention-window] - [--wal-depth=wal-depth] [--dry-run] - [logging_options] - [--help] - ``` - -- 验证恢复数据库所需的所有文件是否存在且未损坏。如果未指定_instance\_name_,gs\_probackup将验证备份目录中的所有可用备份。如果指定_instance\_name_而不指定任何附加选项,gs\_probackup将验证此备份实例的所有可用备份。如果指定了_instance\_name_并且指定_backup-id_或恢复目标相关选项,gs\_probackup将检查是否可以使用这些选项恢复数据库。 - - ``` - gs_probackup validate -B backup-path - [--instance=instance_name] [-i backup-id] - [-j threads_num] [--progress] [--skip-block-validation] - [--recovery-target-time=time | --recovery-target-xid=xid | --recovery-target-lsn=lsn | --recovery-target-name=target-name] - [--recovery-target-inclusive=boolean] - [logging_options] - [--help] - ``` - - -#### 参数说明 - -**通用参数** - -- command - - gs\_probackup除version和help以外的子命令:init、add-instance、del-instance、set-config、set-backup、show-config、show、backup、restore、merge、delete、validate。 - -- -?, --help - - 显示gs\_probackup命令行参数的帮助信息,然后退出。 - - 子命令中只能使用--help,不能使用-?。 - -- -V, --version - - 打印gs\_probackup版本,然后退出。 - -- -B _backup-path_, --backup-path=_backup-path_ - - 备份的路径。 - - 系统环境变量:$BACKUP\_PATH - -- -D _pgdata-path_, --pgdata=_pgdata-path_ - - 数据目录的路径。 - - 系统环境变量:$PGDATA - -- --instance=_instance\_name_ - - 实例名。 - -- -i _backup-id_, --backup-id=_backup-id_ - - 备份的唯一标识。 - -- --format=_format_ - - 指定显示备份信息的格式,支持plain和json格式。 - - 默认值:plain - -- --status=_backup\_status_ - - 删除指定状态的所有备份,包含以下状态: - - - OK:备份已完成且有效。 - - DONE:备份已完成但未经过验证。 - - RUNNING:备份正在进行中。 - - MERGING:备份正在合并中。 - - DELETING:备份正在删除中。 - - CORRUPT:部分备份文件已损坏。 - - ERROR:由于意外错误,备份失败。 - - ORPHAN:由于其父备份之一已损坏或丢失,备份无效。 - -- -j _threads\_num_, --threads=_threads\_num_ - - 设置备份、还原、合并进程的并行线程数。 - -- --archive - - 显示WAL归档信息。 - -- --progress - - 显示进度。 - -- --note=_text_ - - 给备份添加note。 - - -**备份相关参数** - -- -b _backup-mode_, --backup-mode=_backup-mode_ - - 指定备份模式,支持FULL和PTRACK。 - - FULL:创建全量备份,全量备份包含所有数据文件。 - - PTRACK:创建PTRACK增量备份。 - -- -C, --smooth-checkpoint - - 将检查点在一段时间内展开。默认情况下,gs\_probackup会尝试尽快完成检查点。 - -- -S _slot-name_, --slot=_slot-name_ - - 指定WAL流处理的复制slot。 - -- --temp-slot - - 在备份的实例中为WAL流处理创建一个临时物理复制slot,它确保在备份过程中,所有所需的WAL段仍然是可用的。 - - 默认的slot名为pg\_probackup\_slot,可通过选项--slot/-S更改。 - -- --backup-pg-log - - 将日志目录包含到备份中。此目录通常包含日志消息。默认情况下包含日志目录,但不包含日志文件。如果修改了默认的日志路径,需要备份日志文件时可使用-E参数进行备份,使用方法见下文。 - -- -E _external-directories-paths_, --external-dirs=_external-directories-paths_ - - 将指定的目录包含到备份中。此选项对于备份位于数据目录外部的脚本、sql转储和配置文件很有用。如果要备份多个外部目录,请在Unix上用冒号分隔它们的路径。 - - 例如:-E /tmp/dir1:/tmp/dir2 - -- --skip-block-validation - - 关闭块级校验,加快备份速度。 - -- --no-validate - - 在完成备份后跳过自动验证。 - -- --no-sync - - 不将备份文件同步到磁盘。 - -- --archive-timeout=_timeout_ - - 以秒为单位设置流式处理的超时时间。 - - 默认值:300 - -- -t rwtimeout - - 以秒为单位的连接的超时时间。 - - 默认值: 120 - - -**恢复相关参数** - -- -I, --incremental-mode=none|checksum|lsn - - 若PGDATA中可用的有效页没有修改,则重新使用它们。 - - 默认值:none - -- --external-mapping=_OLDDIR=NEWDIR_ - - 在恢复时,将包含在备份中的外部目录从_OLDDIR_重新定位到_NEWDIR_目录。_OLDDIR_和_NEWDIR_都必须是绝对路径。如果路径中包含“=”,则使用反斜杠转义。此选项可为多个目录多次指定。 - -- -T _OLDDIR=NEWDIR_, --tablespace-mapping=_OLDDIR=NEWDIR_ - - 在恢复时,将表空间从_OLDDIR_重新定位到_NEWDIR_目录。_OLDDIR_和_NEWDIR_必须都是绝对路径。如果路径中包含“=”,则使用反斜杠转义。多个表空间可以多次指定此选项。此选项必须和--external-mapping一起使用。 - -- --skip-external-dirs - - 跳过备份中包含的使用--external-dirs选项指定的外部目录。这些目录的内容将不会被恢复。 - -- --skip-block-validation - - 跳过块级校验,以加快验证速度。在恢复之前的自动验证期间,将仅做文件级别的校验。 - -- --no-validate - - 跳过备份验证。 - -- --force - - 允许忽略备份的无效状态。如果出于某种原因需要从损坏的或无效的备份中恢复数据,可以使用此标志。请谨慎使用。 - - -**恢复目标相关参数\(recovery\_options\)** - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** ->当前不支持配置连续的WAL归档的PITR,因而使用这些参数会有一定限制,具体如下描述。 ->如果需要使用持续归档的WAL日志进行PITR恢复,请按照下面描述的步骤: -> ->1. 将物理备份的文件替换目标数据库目录。 ->2. 删除数据库目录下pg\_xlog/中的所有文件。 ->3. 将归档的WAL日志文件复制到pg\_xlog文件中(此步骤可以省略,通过配置recovery.conf恢复命令文件中的restore\_command项替代)。 ->4. 在数据库目录下创建恢复命令文件recovery.conf,指定数据库恢复的程度。 ->5. 启动数据库。 ->6. 连接数据库,查看是否恢复到希望预期的状态。若已经恢复到预期状态,通过pg\_xlog\_replay\_resume\(\)指令使主节点对外提供服务。 - -- --recovery-target-lsn=_lsn_ - - 指定要恢复到的lsn,当前只能指定备份的stop lsn。 - -- --recovery-target-name=_target-name_ - - 指定要将数据恢复到的已命名的保存点,保存点可以通过查看备份中recovery-name字段得到。 - -- --recovery-target-time=_time_ - - 指定要恢复到的时间,当前只能指定备份中的recovery-time。 - -- --recovery-target-xid=_xid_ - - 指定要恢复到的事务ID,当前只能指定备份中的recovery-xid。 - -- --recovery-target-inclusive=_boolean_ - - 当该参数指定为true时,恢复目标将包括指定的内容。 - - 当该参数指定为false时,恢复目标将不包括指定的内容。 - - 该参数必须和--recovery-target-name、--recovery-target-time、--recovery-target-lsn或--recovery-target-xid一起使用。 - - -**留存相关参数\(retention\_options\)** - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** ->可以和backup和delete命令一起使用这些参数。 - -- --retention-redundancy=_retention-redundancy_ - - 指定在数据目录中留存的完整备份数。必须为正整数。0表示禁用此设置。 - - 默认值:0 - -- --retention-window=_retention-window_ - - 指定留存的天数。必须为正整数。0表示禁用此设置。 - - 默认值:0 - -- --wal-depth=_wal-depth_ - - 每个时间轴上必须留存的执行PITR能力的最新有效备份数。必须为正整数。0表示禁用此设置。 - - 默认值:0 - -- --delete-wal - - 从任何现有的备份中删除不需要的WAL文件。 - -- --delete-expired - - 删除不符合pg\_probackup.conf配置文件中定义的留存策略的备份。 - -- --merge-expired - - 将满足留存策略要求的最旧的增量备份与其已过期的父备份合并。 - -- --dry-run - - 显示所有可用备份的当前状态,不删除或合并过期备份。 - - -**固定备份相关参数\(pinning\_options\)** - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** ->如果要将某些备份从已建立的留存策略中排除,可以和backup和set-backup命令一起使用这些参数。 - -- --ttl=_interval_ - - 指定从恢复时间开始计算,备份要固定的时间量。必须为正整数。0表示取消备份固定。 - - 支持的单位:ms, s, min, h, d(默认为s)。 - - 例如:--ttl=30d。 - -- --expire-time=_time_ - - 指定备份固定失效的时间戳。必须是ISO-8601标准的时间戳。 - - 例如:--expire-time='2020-01-01 00:00:00+03' - - -**日志相关参数\(logging\_options\)** - -日志级别:verbose、log、info、warning、error和off。 - -- --log-level-console=_log-level-console_ - - 设置要发送到控制台的日志级别。每个级别都包含其后的所有级别。级别越高,发送的消息越少。指定off级别表示禁用控制台日志记录。 - - 默认值:info - -- --log-level-file=_log-level-file_ - - 设置要发送到日志文件的日志级别。每个级别都包含其后的所有级别。级别越高,发送的消息越少。指定off级别表示禁用日志文件记录。 - - 默认值:off - -- --log-filename=_log-filename_ - - 指定要创建的日志文件的文件名。文件名可以使用strftime模式,因此可以使用%-escapes指定随时间变化的文件名。 - - 例如,如果指定了“pg\_probackup-%u.log”模式,则pg\_probackup为每周的每一天生成单独的日志文件,其中%u替换为相应的十进制数字,即pg\_probackup-1.log表示星期一;pg\_probackup-2.log表示星期二,以此类推。 - - 如果指定了--log-level-file参数启用日志文件记录,则该参数有效。 - - 默认值:“pg\_probackup.log” - -- --error-log-filename=_error-log-filename_ - - 指定仅用于error日志的日志文件名。指定方式与--log-filename参数相同。 - - 此参数用于故障排除和监视。 - -- --log-directory=_log-directory_ - - 指定创建日志文件的目录。必须是绝对路径。此目录会在写入第一条日志时创建。 - - 默认值:$BACKUP\_PATH/log - -- --log-rotation-size=_log-rotation-size_ - - 指定单个日志文件的最大大小。如果达到此值,则启动gs\_probackup命令后,日志文件将循环,但help和version命令除外。0表示禁用基于文件大小的循环。 - - 支持的单位:KB、MB、GB、TB(默认为KB)。 - - 默认值:0 - -- --log-rotation-age=_log-rotation-age_ - - 单个日志文件的最大生命周期。如果达到此值,则启动gs\_probackup命令后,日志文件将循环,但help和version命令除外。$BACKUP\_PATH/log/log\_rotation目录下保存最后一次创建日志文件的时间。0表示禁用基于时间的循环。 - - 支持的单位:ms, s, min, h, d(默认为min)。 - - 默认值:0 - - -**连接相关参数\(connection\_options\)** - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** ->可以和backup命令一起使用这些参数。 - -- -d _dbname_, --pgdatabase=_dbname_ - - 指定要连接的数据库名称。该连接仅用于管理备份进程,因此您可以连接到任何现有的数据库。如果命令行、PGDATABASE环境变量或pg\_probackup.conf配置文件中没有指定此参数,则gs\_probackup会尝试从PGUSER环境变量中获取该值。如果未设置PGUSER变量,则从当前用户名获取。 - - 系统环境变量:$PGDATABASE - -- -h _hostname_, --pghost=_hostname_ - - 指定运行服务器的系统的主机名。如果该值以斜杠开头,则被用作到Unix域套接字的路径。 - - 系统环境变量:$PGHOST - - 默认值:local socket - -- -p _port_, --pgport=_p__ort_ - - 指定服务器正在侦听连接的TCP端口或本地Unix域套接字文件扩展名。 - - 系统环境变量:$PGPORT - - 默认值:5432 - -- -U _username_, --pguser=_username_ - - 指定所连接主机的用户名。 - - 系统环境变量:$PGUSER - -- -w, --no-password - - 不出现输入密码提示。如果主机要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。 - -- -W _password_, --password=_password_ - - 指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W选项;如果没有-W选项,并且不是系统管理员,则会提示用户输入密码。 - - -**压缩相关参数\(compression\_options\)** - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** ->可以和backup命令一起使用这些参数。 - -- --compress-algorithm=_compress-algorithm_ - - 指定用于压缩数据文件的算法。 - - 取值包括zlib、pglz和none。如果设置为zlib或pglz,此选项将启用压缩。默认情况下,压缩功能处于关闭状态。 - - 默认值:none - -- --compress-level=_compress-level_ - - 指定压缩级别。取值范围:0\~9 - - - 0表示无压缩。 - - 1表示压缩比最小,处理速度最快。 - - 9表示压缩比最大,处理速度最慢。 - - 可与--compress-algorithm选项一起使用。 - - 默认值:1 - -- --compress - - 以--compress-algorithm=zlib和--compress-level=1进行压缩。 - - -**远程模式相关参数\(remote\_options\)** - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** ->通过SSH远程运行gs\_probackup操作的相关参数。可以和add-instance、set-config、backup、restore命令一起使用这些参数。 - -- --remote-proto=_protocol_ - - 指定用于远程操作的协议。目前只支持SSH协议。取值包括: - - ssh:通过SSH启用远程备份模式。这是默认值。 - - none:显式禁用远程模式。 - - 如果指定了--remote-host参数,可以省略此参数。 - -- --remote-host=_destination_ - - 指定要连接的远程主机的IP地址或主机名。 - -- --remote-port=_port_ - - 指定要连接的远程主机的端口号。 - - 默认值:22 - -- --remote-user=_username_ - - 指定SSH连接的远程主机用户。如果省略此参数,则使用当前发起SSH连接的用户。 - - 默认值:当前用户 - -- --remote-path=_path_ - - 指定gs\_probackup在远程系统的安装目录。 - - 默认值:当前路径 - -- --remote-lib=_libpath_ - - 指定gs\_probackup在远程系统安装的lib库目录。 - -- --ssh-options=_ssh\_options_ - - 指定SSH命令行参数的字符串。 - - 例如:--ssh-options='-c cipher\_spec -F configfile' - - >![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** - > - >- 如果因为网络临时故障等原因导致server端无应答,gs\_probackup将在等待archive-timeout(默认300秒)后退出。 - >- 如果备机lsn与主机有差别时,数据库会不停地刷以下log信息,此时应重新build备机。 - > - >``` - >LOG: walsender thread shut down - >LOG: walsender thread started - >LOG: received wal replication command: IDENTIFY_VERSION - >LOG: received wal replication command: IDENTIFY_MODE - >LOG: received wal replication command: IDENTIFY_SYSTEM - >LOG: received wal replication command: IDENTIFY_CONSISTENCE 0/D0002D8 - >LOG: remote request lsn/crc: [xxxxx] local max lsn/crc: [xxxxx] - >``` - - -#### 备份流程 - -1. 初始化备份目录。在指定的目录下创建backups/和wal/子目录,分别用于存放备份文件和WAL文件。 - - ``` - gs_probackup init -B backup_dir - ``` - -2. 添加一个新的备份实例。gs\_probackup可以在同一个备份目录下存放多个数据库实例的备份。 - - ``` - gs_probackup add-instance -B backup_dir -D data_dir --instance instance_name - ``` - -3. 创建指定实例的备份。在进行增量备份之前,必须至少创建一次全量备份。 - - ``` - gs_probackup backup -B backup_dir --instance instance_name -b backup_mode - ``` - -4. 从指定实例的备份中恢复数据。 - - ``` - gs_probackup restore -B backup_dir --instance instance_name -D pgdata-path -i backup_id - ``` - - -#### 故障处理 - - - - - - - - - - - -

问题描述

-

原因和解决方案

-

ERROR: query failed: ERROR: canceling statement due to conflict with recovery

-

(错误:查询失败:由于与恢复操作冲突,正在取消语句命令)

-

原因:在备机上执行的操作正在访问存储行,主机上更改或者删除了对应的行,并将xlog在备机上重放,迫使备机上操作取消。

-

解决方案:

-

1. 适当增加如下配置参数的值

-

max_standby_archive_delay

-

max_standby_streaming_delay

-

2. 增加如下配置

-

hot_standby_feedback = on

-
- - - -## 逻辑备份恢复 - -### gs\_dump - -#### 背景信息 - -gs\_dump是openGauss用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式、表、视图等),回收站对象除外。支持导出的数据库可以是默认数据库postgres,也可以是自定义数据库。 - -gs\_dump工具由操作系统用户omm执行。 - -gs\_dump工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。 - -gs\_dump工具支持导出完整一致的数据。例如,T1时刻启动gs\_dump导出A数据库,那么导出数据结果将会是T1时刻A数据库的数据状态,T1时刻之后对A数据库的修改不会被导出。 - -gs\_dump时生成列不会被转储。 - -gs\_dump支持导出兼容v1版本数据库的文本格式文件。 - -gs\_dump支持将数据库信息导出至纯文本格式的SQL脚本文件或其他归档文件中。 - -- 纯文本格式的SQL脚本文件:包含将数据库恢复为其保存时的状态所需的SQL语句。通过[gsql](zh-cn_topic_0289899215.md)运行该SQL脚本文件,可以恢复数据库。即使在其他主机和其他数据库产品上,只要对SQL脚本文件稍作修改,也可以用来重建数据库。 -- 归档格式文件:包含将数据库恢复为其保存时的状态所需的数据,可以是tar格式、目录归档格式或自定义归档格式,详见[表1](#zh-cn_topic_0289899246_zh-cn_topic_0287275988_zh-cn_topic_0237152335_zh-cn_topic_0058967678_t17db29a12e7342cfbf02b2f6e50ff1a5)。该导出结果必须与gs\_restore配合使用来恢复数据库,gs\_restore工具在导入时,系统允许用户选择需要导入的内容,甚至可以在导入之前对等待导入的内容进行排序。 - -主要功能 - -gs\_dump可以创建四种不同的导出文件格式,通过**\[**-F或者--format=**\]**选项指定,具体如[表1](#zh-cn_topic_0289899246_zh-cn_topic_0287275988_zh-cn_topic_0237152335_zh-cn_topic_0058967678_t17db29a12e7342cfbf02b2f6e50ff1a5)所示。 - -**表 1** 导出文件格式 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

格式名称

-

-F的参数值

-

说明

-

建议

-

对应导入工具

-

纯文本格式

-

p

-

纯文本脚本文件包含SQL语句和命令。命令可以由gsql命令行终端程序执行,用于重新创建数据库对象并加载表数据。

-

小型数据库,一般推荐纯文本格式。

-

使用gsql工具恢复数据库对象前,可根据需要使用文本编辑器编辑纯文本导出文件。

-

自定义归档格式

-

c

-

一种二进制文件。支持从导出文件中恢复所有或所选数据库对象。

-

中型或大型数据库,推荐自定义归档格式。

-

使用gs_restore可以选择要从自定义归档导出文件中导入相应的数据库对象。

-

目录归档格式

-

d

-

该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。

-

-

-

tar归档格式

-

t

-

tar归档文件支持从导出文件中恢复所有或所选数据库对象。tar归档格式不支持压缩且对于单独表大小应小于8GB。

-

-

-
- - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** ->可以使用gs\_dump程序将文件压缩为目录归档或自定义归档导出文件,减少导出文件的大小。生成目录归档或自定义归档导出文件时,默认进行中等级别的压缩。gs\_dump程序无法压缩已归档导出文件。 - -#### 注意事项 - -- 禁止修改导出的文件和内容,否则可能无法恢复成功。 -- 为了保证数据一致性和完整性,gs\_dump会对需要转储的表设置共享锁。如果表在别的事务中设置了共享锁,gs\_dump会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定--lock-wait-timeout选项,自定义等待锁超时时间。 -- 不支持加密导出存储过程和函数。 - -#### 语法 - -``` -gs_dump [OPTION]... [DBNAME] -``` - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** ->“dbname”前面不需要加短或长选项。“dbname”指定要连接的数据库。 ->例如: ->不需要-d,直接指定“dbname”。 -> ->``` ->gs_dump -p port_number postgres -f dump1.sql ->``` -> ->或者 -> ->``` ->export PGDATABASE=postgres ->``` -> ->``` ->gs_dump -p port_number -f dump1.sql ->``` -> ->环境变量: PGDATABASE - -参数说明 - -通用参数: - -- -f, --file=FILENAME - - 将输出发送至指定文件或目录。如果省略该参数,则使用标准输出。如果输出格式为\(-F c/-F d/-F t\)时,必须指定-f参数。如果-f的参数值含有目录,要求当前用户对该目录具有读写权限,并且不能指定已有目录。 - -- -F, --format=c|d|t|p - - 选择输出格式。格式如下: - - - p|plain:输出一个文本SQL脚本文件(默认)。 - - - c|custom:输出一个自定义格式的归档,并且以目录形式输出,作为gs\_restore输入信息。该格式是最灵活的输出格式,因为能手动选择,而且能在恢复过程中将归档项重新排序。该格式默认状态下会被压缩。 - - - d|directory:该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。 - - - t|tar:输出一个tar格式的归档形式,作为gs\_restore输入信息。tar格式与目录格式兼容;tar格式归档形式在提取过程中会生成一个有效的目录格式归档形式。但是,tar格式不支持压缩且对于单独表有8GB的大小限制。此外,表数据项的相应排序在恢复过程中不能更改。 - - 输出一个tar格式的归档形式,也可以作为gsql输入信息。 - - -- -v, --verbose - - 指定verbose模式。该选项将导致gs\_dump向转储文件输出详细的对象注解和启动/停止次数,向标准错误流输出处理信息。 - -- -V, --version - - 打印gs\_dump版本,然后退出。 - -- -Z, --compress=0-9 - - 指定使用的压缩比级别。 - - 取值范围:0\~9 - - - 0表示无压缩。 - - 1表示压缩比最小,处理速度最快。 - - 9表示压缩比最大,处理速度最慢。 - - 针对自定义归档格式,该选项指定单个表数据片段的压缩,默认方式是以中等级别进行压缩。tar归档格式和纯文本格式目前不支持压缩。 - -- --lock-wait-timeout=TIMEOUT - - 请勿在转储刚开始时一直等待以获取共享表锁。如果无法在指定时间内锁定某个表,就选择失败。可以以任何符合SET statement\_timeout的格式指定超时时间。 - -- -?, --help - - 显示gs\_dump命令行参数帮助,然后退出。 - - -转储参数: - -- -a, --data-only - - 只输出数据,不输出模式\(数据定义\)。转储表数据、大对象和序列值。 - -- -b, --blobs - - 该参数为扩展预留接口,不建议使用。 - -- -c, --clean - - 在将创建数据库对象的指令输出到备份文件之前,先将清理(删除)数据库对象的指令输出到备份文件中。(如果目标数据库中没有任何对象,gs\_restore工具可能会输出一些提示性的错误信息) - - 该选项只对文本格式有意义。针对归档格式,可以调用gs\_restore时指定选项。 - -- -C, --create - - 备份文件以创建数据库和连接到创建的数据库的命令开始。(如果命令脚本是这种方式执行,可以先指定任意数据库用于执行创建数据库的命令,数据不会恢复到指定的数据库中,而是恢复到创建的数据库中。) - - 该选项只对文本格式有意义。针对归档格式,可以在调用gs\_restore时指定选项。 - -- -E, --encoding=ENCODING - - 以指定的字符集编码创建转储。默认情况下,以数据库编码创建转储。(得到相同结果的另一个办法是将环境变量“PGCLIENTENCODING”设置为所需的转储编码。) - -- -n, --schema=SCHEMA - - 只转储与模式名称匹配的模式,此选项包括模式本身和所有它包含的对象。如果该选项没有指定,所有在目标数据库中的非系统模式将会被转储。写入多个-n选项来选择多个模式。此外,根据gsql的\\d命令所使用的相同规则,模式参数可被理解成一个pattern,所以多个模式也可以通过在该pattern中写入通配符来选择。使用通配符时,注意给pattern打引号,防止shell扩展通配符。 - - >![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** - > - >- 当-n已指定时,gs\_dump不会转储已选模式所附着的任何其他数据库对象。因此,无法保证某个指定模式的转储结果能够自行成功地储存到一个空数据库中。 - >- 当-n指定时,非模式对象不会被转储。 - - 转储支持多个模式的转储。多次输入-n schemaname转储多个模式。 - - 例如: - - ``` - gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -n sch1 -n sch2 - ``` - - 在上面这个例子中,sch1和sch2会被转储。 - -- -N, --exclude-schema=SCHEMA - - 不转储任何与模式pattern匹配的模式。pattern将参照针对-n的相同规则来理解。可以通过输入多次-N,不转储与任何pattern匹配的模式。 - - 当同时输入-n和-N时,会转储与至少一个-n选项匹配、与-N选项不匹配的模式。如果有-N没有-n,则不转储常规转储中与-N匹配的模式。 - - 转储过程支持排除多个模式。 - - 在转储过程中,输入-N exclude schema name排除多个模式。 - - 例如: - - ``` - gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -N sch1 -N sch2 - ``` - - 在上面这个例子中,sch1和sch2在转储过程中会被排除。 - -- -o, --oids - - 转储每个表的对象标识符(OIDs),作为表的一部分数据。该选项用于应用以某种方式参照了OID列的情况。如果不是以上这种情况,请勿使用该选项。 - -- -O, --no-owner - - 不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs\_dump会发出ALTER OWNER或SET SESSION AUTHORIZATION语句设置所创建的数据库对象的归属。如果脚本正在运行,该语句不会执行成功,除非是由系统管理员触发(或是拥有脚本中所有对象的同一个用户)。通过指定-O,编写一个任何用户都能存储的脚本,且该脚本会授予该用户拥有所有对象的权限。 - - 该选项只对文本格式有意义。针对归档格式,可以在调用gs\_restore时指定选项。 - -- -s, --schema-only - - 只转储对象定义(模式),而非数据。 - -- -S, --sysadmin=NAME - - 该参数为扩展预留接口,不建议使用。 - -- -t, --table=TABLE - - 指定转储的表(或视图、或序列、或外表)对象列表,可以使用多个-t选项来选择多个表,也可以使用通配符指定多个表对象。 - - 当使用通配符指定多个表对象时,注意给pattern打引号,防止shell扩展通配符。 - - 当使用-t时,-n和-N没有任何效应,这是因为由-t选择的表的转储不受那些选项的影响。 - - >![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** - > - >- -t参数选项个数必须小于等于100。 - >- 如果-t参数选项个数大于100,建议使用参数--include-table-file来替换。 - >- 当-t已指定时,gs\_dump不会转储已选表所附着的任何其他数据库对象。因此,无法保证某个指定表的转储结果能够自行成功地储存到一个空数据库中。 - >- -t tablename只转储在默认搜索路径中可见的表。-t '\*.tablename'转储数据库下所有模式下的tablename表。-t schema.table转储特定模式中的表。 - >- -t tablename不会导出表上的触发器信息。 - - 例如: - - ``` - gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -t schema1.table1 -t schema2.table2 - ``` - - 在上面这个例子中,schema1.table1和schema2.table2会被转储。 - -- --include-table-file=FILENAME - - 指定需要dump的表文件。 - -- -T, --exclude-table=TABLE - - 不转储的表(或视图、或序列、或外表)对象列表,可以使用多个-T选项来选择多个表,也可以使用通配符指定多个表对象。 - - 当同时输入-t和-T时,会转储在-t列表中,而不在-T列表中的表对象。 - - 例如: - - ``` - gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -T table1 -T table2 - ``` - - 在上面这个例子中,table1和table2在转储过程中会被排除。 - -- --exclude-table-file=FILENAME - - 指定不需要dump的表文件。 - - >![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** - >同--include-table-file,其内容格式如下: - >schema1.table1 - >schema2.table2 - >...... - -- -x, --no-privileges|--no-acl - - 防止转储访问权限(授权/撤销命令)。 - -- -q, --target - - 指定导出兼容其他版本数据库的文本文件,目前支持v1和v5参数。v1参数用于导出v5数据库的数据为兼容v1的文本文件。v5参数用于导出v5数据库的数据为v5格式的文本文件,减少了导入v5时的可能的报错情况。 - - 在使用v1参数时,建议和--exclude-guc="enable\_cluster\_resize",--exclude-function,--exclude-with等选项共用,否则导入到v1时可能报错。 - -- --exclude-guc - - 导出的文本文件中,不包括相关guc参数的set命令,目前只支持enable\_cluster\_resize。 - -- --exclude-function - - 不导出函数和存储过程。 - -- --exclude-with - - 导出的表定义,末尾不添加WITH\(orientation=row,compression=on)这样的描述。 - -- --binary-upgrade - - 该参数为扩展预留接口,不建议使用。 - -- --binary-upgrade-usermap="USER1=USER2" - - 该参数为扩展预留接口,不建议使用。 - -- --column-inserts|--attribute-inserts - - 以INSERT命令带列名(INSERT INTO表(列、…)值…)方式导出数据。这会导致恢复缓慢。但是由于该选项会针对每行生成一个独立分开的命令,所以在重新加载某行时出现的错误只会导致那行丢失,而非整个表内容。 - -- --disable-dollar-quoting - - 该选项将禁止在函数体前使用美元符号$,并强制使用SQL标准字符串语法对其进行引用。 - -- --disable-triggers - - 该参数为扩展预留接口,不建议使用。 - -- --exclude-table-data=TABLE - - 指定不转储任何匹配表pattern的表这方面的数据。依照针对-t的相同规则理解该pattern。 - - 可多次输入--exclude-table-data来排除匹配任何pattern的表。当用户需要特定表的定义但不需要其中的数据时,这个选项很有帮助。 - - 排除数据库中所有表的数据,参见[--schema-only](#zh-cn_topic_0289899246_zh-cn_topic_0287275988_zh-cn_topic_0237152335_zh-cn_topic_0059777770_l35ed3d5a093e42ab8fc945dd3ca80ecd)。 - -- --inserts - - 发出INSERT命令(而非COPY命令)转储数据。这会导致恢复缓慢。 - - 但是由于该选项会针对每行生成一个独立分开的命令,所以在重新加载某行时出现的错误只会导致那行丢失,而非整个表内容。注意:如果重排列顺序,可能会导致整个恢复失败。列顺序改变时,--column-inserts选项不受影响,虽然会更慢。 - -- --no-security-labels - - 该参数为扩展预留接口,不建议使用。 - -- --no-tablespaces - - 不输出选择表空间的命令。使用该选项,无论默认表空间是哪个,在恢复过程中所有对象都会被创建。 - - 该选项只对文本格式有意义。针对归档格式,可以在调用gs\_restore时指定选项。 - -- --no-unlogged-table-data - - 该参数为扩展预留接口,不建议使用。 - -- --non-lock-table - - 该参数为扩展预留接口,不建议使用。 - -- --include-alter-table - - 转储表删除列。该选项会记录列的删除。 - -- --quote-all-identifiers - - 强制对所有标识符加引号。为了向后续版本迁移,且其中可能涉及引入额外关键词,在转储相应数据库时该选项会有帮助。 - -- --section=SECTION - - 指定已转储的名称区段(pre-data、data和post-data)。 - -- --serializable-deferrable - - 转储过程中使用可串行化事务,以确保所使用的快照与之后的数据库状态一致;要实现该操作需要在无异常状况的事务流中等待某个点,因为这样才能保证转储成功,避免引起其他事务出现serialization\_failure要重新再做。 - - 但是该选项对于灾难恢复没有益处。对于在原始数据库进行升级的时候,加载一个数据库的拷贝作为报告或其他只读加载共享的转储是有帮助的。没有这个选项,转储会反映一个与任何事务最终提交的序列化执行不一致的状态。 - - 如果当gs\_dump启动时,读写事务仍处于非活动状态,即便使用该选项也不会对其产生影响。如果读写事务处于活动状态,转储的开始时间可能会延迟一段不确定的时间。 - -- --use-set-session-authorization - - 输出符合SQL标准的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用SET SESSION AUTHORIZATION的转储需要数据库系统管理员的权限才能转储成功,而ALTER OWNER需要的权限则低得多。 - -- --with-encryption=AES128 - - 指定转储数据需用AES128进行加密。 - -- --with-key=KEY - - AES128密钥规则如下: - - - 密钥长度为8\~16个字符。 - - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为\~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/?)四类字符中的三类字符。 - - >![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** - > - >- 使用gs\_dump工具进行加密导出时,仅支持plain格式导出。通过-F plain导出的数据,需要通过gsql工具进行导入,且如果以加密方式导入,在通过gsql导入时,需要指定--with-key参数。 - >- 不支持加密导出存储过程和函数。 - -- --with-salt=RANDVALUES - - gs\_dumpall使用此参数传递随机值。 - -- --include-extensions - - 在转储中包含扩展。 - -- --include-depend-objs - - 备份结果包含依赖于指定对象的对象信息。该参数需要同-t/--include-table-file参数关联使用才会生效。 - -- --exclude-self - - 备份结果不包含指定对象自身的信息。该参数需要同-t/--include-table-file参数关联使用才会生效。 - -- --dont-overwrite-file - - 文本、tar以及自定义格式情况下会重写现有文件。这对目录格式不适用。 - - 例如: - - 设想这样一种情景,即当前目录下backup.sql已存在。如果在输入命令中输入-f backup.sql选项时,当前目录恰好也生成backup.sql,文件就会被重写。 - - 如果备份文件已存在,且输入--dont-overwrite-file选项,则会报告附带‘转储文件已经存在’信息的错误。 - - ``` - gs_dump -p port_number postgres -f backup.sql -F plain --dont-overwrite-file - ``` - - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** -> ->- -s/--schema-only和-a/--data-only不能同时使用。 ->- -c/--clean和-a/--data-only不能同时使用。 ->- --inserts/--column-inserts和-o/--oids不能同时使用,因为INSERT命令不能设置OIDS。 ->- --role和--rolepassword必须一起使用。 ->- --binary-upgrade-usermap和--binary-upgrade必须一起使用。 ->- --include-depend-objs/--exclude-self需要同-t/--include-table-file参数关联使用才会生效 ->- --exclude-self必须同--include-depend-objs一起使用。 - -连接参数: - -- -h, --host=HOSTNAME - - 指定主机名称。如果数值以斜杠开头,则被用作到Unix域套接字的路径。缺省从PGHOST环境变量中获取(如果已设置),否则,尝试一个Unix域套接字连接。 - - 该参数只针对openGauss外,对openGauss内本机只能用127.0.0.1。 - - 例如:主机名 - - 环境变量:PGHOST - -- -p, --port=PORT - - 指定主机端口。在开启线程池情况下,建议使用 pooler port,即主机端口+1。 - - 环境变量:PGPORT - -- -U, --username=NAME - - 指定所连接主机的用户名。 - - 不指定连接主机的用户名时,用户默认系统管理员。 - - 环境变量:PGUSER - -- -w, --no-password - - 不出现输入密码提示。如果主机要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。 - -- -W, --password=PASSWORD - - 指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W选项;如果没有-W选项,并且不是系统管理员,“Dump Restore工具”会提示用户输入密码。 - -- --role=ROLENAME - - 指定创建转储使用的角色名。选择该选项,会使gs\_dump连接数据库后,发起一个SET ROLE角色名命令。当所授权用户(由-U指定)没有gs\_dump要求的权限时,该选项会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以超系统管理员身份登录,而使用该选项能够在不违反该规定的情况下完成转储。 - -- --rolepassword=ROLEPASSWORD - - 指定角色名的密码。 - - -#### 说明 - -如果openGauss有任何本地数据要添加到template1数据库,请谨慎将gs\_dump的输出恢复到一个真正的空数据库中,否则可能会因为被添加对象的定义被复制,出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如: - -``` -CREATE DATABASE foo WITH TEMPLATE template0; -``` - -tar归档形式的文件大小不得超过8GB(tar文件格式的固有限制)。tar文档整体大小和任何其他输出格式没有限制,操作系统可能对此有要求。 - -由gs\_dump生成的转储文件不包含优化程序用来做执行计划决定的统计数据。因此,最好从某转储文件恢复之后运行ANALYZE以确保最佳效果。转储文件不包含任何ALTER DATABASE…SET命令,这些设置由gs\_dumpall转储,还有数据库用户和其他完成安装设置。 - -#### 示例 - -使用gs\_dump转储数据库为SQL文本文件或其它格式的操作,如下所示。 - -示例中“Bigdata@123”表示数据库用户密码;“backup/MPPDB\_backup.sql”表示导出的文件,其中backup表示相对于当前目录的相对目录;“37300”表示数据库服务器端口;“postgres”表示要访问的数据库名。 - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** ->导出操作时,请确保该目录存在并且当前的操作系统用户对其具有读写权限。 - -示例1:执行gs\_dump,导出postgres数据库全量信息,导出的MPPDB\_backup.sql文件格式为纯文本格式。 - -``` -gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup.sql -p 37300 postgres -F p -gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: The total objects number is 356. -gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: [100.00%] 356 objects have been dumped. -gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: dump database postgres successfully -gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: total time: 1274 ms -``` - -使用gsql程序从纯文本导出文件中导入数据。 - -示例2:执行gs\_dump,导出postgres数据库全量信息,导出的MPPDB\_backup.tar文件格式为tar格式。 - -``` -gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup.tar -p 37300 postgres -F t -gs_dump[port='37300'][postgres][2018-06-27 10:02:24]: The total objects number is 1369. -gs_dump[port='37300'][postgres][2018-06-27 10:02:53]: [100.00%] 1369 objects have been dumped. -gs_dump[port='37300'][postgres][2018-06-27 10:02:53]: dump database postgres successfully -gs_dump[port='37300'][postgres][2018-06-27 10:02:53]: total time: 50086 ms -``` - -示例3:执行gs\_dump,导出postgres数据库全量信息,导出的MPPDB\_backup.dmp文件格式为自定义归档格式。 - -``` -gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup.dmp -p 37300 postgres -F c -gs_dump[port='37300'][postgres][2018-06-27 10:05:40]: The total objects number is 1369. -gs_dump[port='37300'][postgres][2018-06-27 10:06:03]: [100.00%] 1369 objects have been dumped. -gs_dump[port='37300'][postgres][2018-06-27 10:06:03]: dump database postgres successfully -gs_dump[port='37300'][postgres][2018-06-27 10:06:03]: total time: 36620 ms -``` - -示例4:执行gs\_dump,导出postgres数据库全量信息,导出的MPPDB\_backup文件格式为目录格式。 - -``` -gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup -p 37300 postgres -F d -gs_dump[port='37300'][postgres][2018-06-27 10:16:04]: The total objects number is 1369. -gs_dump[port='37300'][postgres][2018-06-27 10:16:23]: [100.00%] 1369 objects have been dumped. -gs_dump[port='37300'][postgres][2018-06-27 10:16:23]: dump database postgres successfully -gs_dump[port='37300'][postgres][2018-06-27 10:16:23]: total time: 33977 ms -``` - -示例5:执行gs\_dump,导出postgres数据库信息,但不导出/home/MPPDB\_temp.sql中指定的表信息。导出的MPPDB\_backup.sql文件格式为纯文本格式。 - -``` -gs_dump -U omm -W Bigdata@123 -p 37300 postgres --exclude-table-file=/home/MPPDB_temp.sql -f backup/MPPDB_backup.sql -gs_dump[port='37300'][postgres][2018-06-27 10:37:01]: The total objects number is 1367. -gs_dump[port='37300'][postgres][2018-06-27 10:37:22]: [100.00%] 1367 objects have been dumped. -gs_dump[port='37300'][postgres][2018-06-27 10:37:22]: dump database postgres successfully -gs_dump[port='37300'][postgres][2018-06-27 10:37:22]: total time: 37017 ms -``` - -示例6:执行gs\_dump,仅导出依赖于指定表testtable的视图信息。然后创建新的testtable表,再恢复依赖其上的视图。 - -- 备份仅依赖于testtable的视图。 - - ``` - gs_dump -s -p 37300 postgres -t PUBLIC.testtable --include-depend-objs --exclude-self -f backup/MPPDB_backup.sql -F p - gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: The total objects number is 331. - gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: [100.00%] 331 objects have been dumped. - gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: dump database postgres successfully - gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: total time: 327 ms - ``` - -- 修改testtable名称。 - - ``` - gsql -p 37300 postgres -r -c "ALTER TABLE PUBLIC.testtable RENAME TO testtable_bak;" - ``` - -- 创建新的testtable表。 - - ``` - CREATE TABLE PUBLIC.testtable(a int, b int, c int); - ``` - -- 还原依赖于testtable的视图。 - - ``` - gsql -p 37300 postgres -r -f backup/MPPDB_backup.sql - ``` - - - -### gs\_dumpall - -#### 背景信息 - -gs\_dumpall是openGauss用于导出所有数据库相关信息工具,它可以导出openGauss数据库的所有数据,包括默认数据库postgres的数据、自定义数据库的数据以及openGauss所有数据库公共的全局对象。 - -gs\_dumpall工具由操作系统用户omm执行。 - -gs\_dumpall工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。 - -gs\_dumpall工具支持导出完整一致的数据。例如,T1时刻启动gs\_dumpall导出openGauss数据库,那么导出数据结果将会是T1时刻该openGauss数据库的数据状态,T1时刻之后对openGauss的修改不会被导出。 - -gs\_dumpall时生成列不会被转储。 - -gs\_dumpall在导出openGauss所有数据库时分为两部分: - -- gs\_dumpall自身对所有数据库公共的全局对象进行导出,包括有关数据库用户和组、表空间以及属性(例如,适用于数据库整体的访问权限)信息。 -- gs\_dumpall通过调用gs\_dump来完成openGauss中各数据库的SQL脚本文件导出,该脚本文件包含将数据库恢复为其保存时的状态所需要的全部SQL语句。 - -以上两部分导出的结果为纯文本格式的SQL脚本文件,使用gsql运行该脚本文件可以恢复openGauss数据库。 - -#### 注意事项 - -- 禁止修改导出的文件和内容,否则可能无法恢复成功。 -- 为了保证数据一致性和完整性,gs\_dumpall会对需要转储的表设置共享锁。如果某张表在别的事务中设置了共享锁,gs\_dumpall会等待此表的锁释放后锁定此表。如果无法在指定时间内锁定某张表,转储会失败。用户可以通过指定--lock-wait-timeout选项,自定义等待锁超时时间。 -- 由于gs\_dumpall读取所有数据库中的表,因此必须以openGauss管理员身份进行连接,才能导出完整文件。在使用gsql执行脚本文件导入时,同样需要管理员权限,以便添加用户和组以及创建数据库。 - -#### 语法 - -``` -gs_dumpall [OPTION]... -``` - -#### 参数说明 - -通用参数: - -- -f, --filename=FILENAME - - 将输出发送至指定文件。如果这里省略,则使用标准输出。 - -- -v, --verbose - - 指定verbose模式。该选项将导致gs\_dumpall向转储文件输出详细的对象注解和启动/停止次数,向标准错误流输出处理信息。 - -- -V, --version - - 打印gs\_dumpall版本,然后退出。 - -- --lock-wait-timeout=TIMEOUT - - 请勿在转储刚开始时一直等待以获取共享表锁。如果无法在指定时间内锁定某个表,就选择失败。可以以任何符合SET statement\_timeout的格式指定超时时间。 - -- -?, --help - - 显示gs\_dumpall命令行参数帮助,然后退出。 - - -转储参数: - -- -a, --data-only - - 只转储数据,不转储模式(数据定义)。 - -- -c, --clean - - 在重新创建数据库之前,执行SQL语句清理(删除)这些数据库。针对角色和表空间的转储命令已添加。 - -- -g, --globals-only - - 只转储全局对象(角色和表空间),无数据库。 - -- -o, --oids - - 转储每个表的对象标识符(OIDs),作为表的一部分数据。该选项用于应用以某种方式参照了OID列的情况。如果不是以上这种情况,请勿使用该选项。 - -- -O, --no-owner - - 不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs\_dumpall会发出ALTER OWNER或SET SESSION AUTHORIZATION语句设置所创建的模式元素的所属。如果脚本正在运行,该语句不会执行成功,除非是由系统管理员触发(或是拥有脚本中所有对象的同一个用户)。通过指定-O,编写一个任何用户都能存储的脚本,且该脚本会授予该用户拥有所有对象的权限。 - -- -r, --roles-only - - 只转储角色,不转储数据库或表空间。 - -- -s, --schema-only - - 只转储对象定义(模式),而非数据。 - -- -S, --sysadmin=NAME - - 在转储过程中使用的系统管理员名称。 - -- -t, --tablespaces-only - - 只转储表空间,不转储数据库或角色。 - -- -x, --no-privileges - - 防止转储访问权限(授权/撤销命令)。 - -- --column-inserts|--attribute-inserts - - 以INSERT命令带列名(INSERT INTO表(列、…)值…)方式导出数据。这会导致恢复缓慢。但是由于该选项会针对每行生成一个独立分开的命令,所以在重新加载某行时出现的错误只会导致那行丢失,而非整个表内容。 - -- --disable-dollar-quoting - - 该选项将禁止在函数体前使用美元符号$,并强制使用SQL标准字符串语法对其进行引用。 - -- --disable-triggers - - 该参数为扩展预留接口,不建议使用。 - -- --inserts - - 发出INSERT命令(而非COPY命令)转储数据。这会导致恢复缓慢。注意:如果重排列顺序,可能会导致恢复整个失败。--column-inserts选项更加安全,虽然可能更慢些。 - -- --no-security-labels - - 该参数为扩展预留接口,不建议使用。 - -- --no-tablespaces - - 请勿输出创建表空间的命令,也请勿针对对象选择表空间。使用该选项,无论默认表空间是哪个,在恢复过程中所有对象都会被创建。 - -- --no-unlogged-table-data - - 该参数为扩展预留接口,不建议使用。 - -- --include-alter-table - - 导出表中已删除的列信息。 - -- --quote-all-identifiers - - 强制对所有标识符加引号。为了向后续版本迁移,且其中可能涉及引入额外关键词,在转储相应数据库时该选项会有帮助。 - -- --dont-overwrite-file - - 不重写当前文件。 - -- --use-set-session-authorization - - 输出符合SQL标准的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用SET SESSION AUTHORIZATION的转储需要数据库系统管理员的权限才能转储成功,而ALTER OWNER需要的权限则低得多。 - -- --with-encryption=AES128 - - 指定转储数据需用AES128进行加密。 - -- --with-key=KEY - - AES128密钥规则如下: - - - 密钥长度为8\~16个字符。 - - 至少包含大写字母(A-Z),小写字母(a-z),数字(0-9),非字母数字字符(限定为\~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/?)四类字符中的三类字符。 - -- --include-extensions - - 如果include-extensions参数被设置,将备份所有的CREATE EXTENSION语句。 - -- --include-templatedb - - 转储过程中包含模板库。 - -- --binary-upgrade - - 该参数为扩展预留接口,不建议使用。 - -- --binary-upgrade-usermap="USER1=USER2" - - 该参数为扩展预留接口,不建议使用。 - -- --non-lock-table - - 该参数仅供OM工具使用。 - -- --tablespaces-postfix - - 该参数为扩展预留接口,不建议使用。 - -- --parallel-jobs - - 指定备份进程并发数,取值范围为1\~1000。 - - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** -> ->- -g/--globals-only和-r/--roles-only不能同时使用。 ->- -g/--globals-only和-t/--tablespaces-only不能同时使用。 ->- -r/--roles-only和-t/--tablespaces-only不能同时使用。 ->- -s/--schema-only和-a/--data-only不能同时使用。 ->- -r/--roles-only和-a/--data-only不能同时使用。 ->- -t/--tablespaces-only和-a/--data-only不能同时使用。 ->- -g/--globals-only和-a/--data-only不能同时使用。 ->- --tablespaces-postfix和--binary-upgrade必须一起使用。 ->- --binary-upgrade-usermap和--binary-upgrade必须一起使用。 ->- --parallel-jobs和-f/--file必须一起使用。 - -连接参数: - -- -h, --host - - 指定主机的名称。如果取值是以斜线开头,它将用作Unix域套接字的目录。默认值取自PGHOST环境变量;如果没有设置,将启动某个Unix域套接字建立连接。 - - 该参数只针对openGauss外,对openGauss内本机只能用127.0.0.1。 - - 环境变量:PGHOST - -- -l, --database - - 指定所连接的转储全局对象的数据库名称,并去寻找还有其他哪些数据库需要被转储。如果没有指定,会使用postgres数据库,如果postgres数据库不存在,会使用template1。 - -- -p, --port - - 指定服务器所侦听的TCP端口或本地Unix域套接字后缀,以确保连接。默认值设置为PGPORT环境变量。 - - 在开启线程池情况下,建议使用 pooler port,即侦听端口+1。 - - 环境变量:PGPORT - -- -U, --username - - 所连接的用户名。 - - 环境变量:PGUSER - -- -w, --no-password - - 不出现输入密码提示。如果服务器要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。 - -- -W, --password - - 指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W选项;如果没有-W选项,并且不是系统管理员,“Dump Restore工具”会提示用户输入密码。 - -- --role - - 指定创建转储使用的角色名。选择该选项,会使gs\_dumpall连接数据库后,发起一个SET ROLE角色名命令。当所授权用户(由-U指定)没有gs\_dumpall要求的权限时,该选项会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以系统管理员身份登录,而使用该选项能够在不违反该规定的情况下完成转储。 - -- --rolepassword - - 指定具体角色用户的角色密码。 - - -#### 说明 - -由于gs\_dumpall内部调用gs\_dump,所以一些诊断信息参见gs\_dump。 - -一旦恢复,最好在每个数据库上运行ANALYZE,优化程序提供有用的统计数据。 - -gs\_dumpall恢复前需要所有必要的表空间目录才能退出;否则,对于处在非默认位置的数据库,数据库创建会失败。 - -#### 示例 - -使用gs\_dumpall一次导出openGauss的所有数据库。 - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** ->gs\_dumpall仅支持纯文本格式导出。所以只能使用gsql恢复gs\_dumpall导出的转储内容。 - -``` -gs_dumpall -f backup/bkp2.sql -p 37300 -gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:09]: The total objects number is 2371. -gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:35]: [100.00%] 2371 objects have been dumped. -gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:46]: dump database dbname='postgres' successfully -gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:46]: total time: 55567 ms -gs_dumpall[port='37300'][2018-06-27 09:55:46]: dumpall operation successful -gs_dumpall[port='37300'][2018-06-27 09:55:46]: total time: 56088 ms -``` - - - -### gs\_restore - -#### 背景信息 - -gs\_restore是openGauss提供的针对gs\_dump导出数据的导入工具。通过此工具可由gs\_dump生成的导出文件进行导入。 - -gs\_restore工具由操作系统用户omm执行。 - -主要功能包含: - -- 导入到数据库 - - 如果连接参数中指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接的密码。导入时生成列会自动更新,并像普通列一样保存。 - -- 导入到脚本文件 - - 如果未指定导入数据库,则创建包含重建数据库所必须的SQL语句脚本并写入到文件或者标准输出。等效于直接使用gs\_dump导出为纯文本格式。 - - -#### 命令格式 - -``` -gs_restore [OPTION]... FILE -``` - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** -> ->- FILE没有短选项或长选项。用来指定归档文件所处的位置。 ->- 作为前提条件,需输入dbname或-l选项。不允许用户同时输入dbname和-l选项。 ->- gs\_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议使用“-c”参数,在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。 ->- 日志打印无开关,若需隐藏日志,请将日志重定向到日志文件。若恢复表数据时,数据量很大,会分批恢复,因此会多次出现“表数据已完成导入”的日志。 - -#### 参数说明 - -通用参数: - -- -d, --dbname=NAME - - 连接数据库dbname并直接导入到该数据库中。 - -- -f, --file=FILENAME - - 指定生成脚本的输出文件,或使用-l时列表的输出文件。 - - 默认是标准输出。 - - >![](C:/Users/lijun/Downloads/04 管理员指南_20211124103637/04 管理员指南_20211124103637/04 管理员指南/public_sys-resources/icon-note.gif) **说明:** - >-f不能同-d一起使用。 - -- -F, --format=c|d|t - - 指定归档格式。由于gs\_restore会自动决定格式,因此不需要指定格式。 - - 取值范围: - - - c/custom:该归档形式为gs\_dump的自定义格式。 - - d/directory:该归档形式是一个目录归档形式。 - - t/tar:该归档形式是一个tar归档形式。 - -- -l, --list - - 列出归档形式内容。这一操作的输出可用作-L选项的输入。注意如果像-n或-t的过滤选项与-l使用,过滤选项将会限制列举的项目(即归档形式内容)。 - -- -v, --verbose - - 指定verbose模式。 - -- #### -V, --version - - 打印gs\_restore版本,然后退出。 - -- -?, --help - - 显示gs\_restore命令行参数帮助,然后退出。 - - -导入参数: - -- -a, --data-only - - 只导入数据,不导入模式(数据定义)。gs\_restore的导入是以追加方式进行的。 - -- -c, --clean - - 在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。 - -- -C, --create - - 导入数据库之前会先使用CREATE DATABASE创建数据库。(指定该选项后,-d指定的数据库仅用以执行CREATE DATABASE命令,所有数据依然会导入到创建的数据库中。) - -- -e, --exit-on-error - - 当发送SQL语句到数据库时如果出现错误,请退出。默认状态下会继续,且在导入后会显示一系列错误信息。 - -- -I, --index=NAME - - 只导入已列举的index的定义。允许导入多个index。如果多次输入-I index导入多个index。 - - 例如: - - ``` - gs_restore -h host_name -p port_number -d postgres -I Index1 -I Index2 backup/MPPDB_backup.tar - ``` - - 在上面这个例子中,Index1和Index2会被导入。 - -- -j, --jobs=NUM - - 运行gs\_restore最耗时的部分(如加载数据、创建index或创建约束)使用并发任务。该选项能大幅缩短导入时间,即将一个大型数据库导入到某一多处理器的服务器上。 - - 每个任务可能是一个进程或一个线程,这由操作系统决定;每个任务与服务器进行单独连接。 - - 该选项的最优值取决于服务器的硬件设置、客户端以及网络。还包括这些因素,如CPU核数量、硬盘设置。建议是从增加服务器上的CPU核数量入手,更大的值(服务器上CPU核数量)在很多情况下也能导致数据文件更快的被导入。当然,过高的值会由于超负荷反而导致性能降低。 - - 该选项只支持自定义归档格式。输入文件必须是常规文件(不能是像pipe的文件)。如果是通过脚本文件,而非直接连接数据库服务器,该选项可忽略。而且,多任务不能与--single-transaction选项一起使用。 - -- -L, --use-list=FILENAME - - 只导入列举在list-file中的那些归档形式元素,导入顺序以它们在文件中的顺序为准。注意如果像-n或-t的过滤选项与-L使用,它们将会进一步限制导入的项目。 - - 一般情况下,list-file是通过编辑前面提到的某个-l参数的输出创建的。文件行的位置可更改或直接删除,也可使用分号(;)在行的开始注出。 - -- -n, --schema=NAME - - 只导入已列举的模式中的对象。 - - 该选项可与-t选项一起用以导入某个指定的表。 - - 多次输入-n _schemaname_可以导入多个模式。 - - 例如: - - ``` - gs_restore -h host_name -p port_number -d postgres -n sch1 -n sch2 backup/MPPDB_backup.tar - ``` - - 在上面这个例子中,sch1和sch2会被导入。 - -- -O, --no-owner - - 不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs\_restore会发出ALTER OWNER或SET SESSION AUTHORIZATION语句设置所创建的模式元素的所属。除非是由系统管理员(或是拥有脚本中所有对象的同一个用户)进行数据库首次连接的操作,否则语句会失败。使用-O选项,任何用户名都可用于首次连接,且该用户拥有所有已创建的对象。 - -- -P, --function=NAME\(args\) - - 只导入已列举的函数。请按照函数所在转储文件中的目录,准确拼写函数名称和参数。 - - 当-P单独使用时,表示导入文件中所有'function-name\(args\)'函数;当-P同-n一起使用时,表示导入指定模式下的'function-name\(args\)'函数;多次输入-P,而仅指定一次-n,表示所有导入的函数默认都是位于-n模式下的。 - - 可以多次输入-n schema-name -P 'function-name\(args\)'同时导入多个指定模式下的函数。 - - 例如: - - ``` - gs_restore -h host_name -p port_number -d postgres -n test1 -P 'Func1(integer)' -n test2 -P 'Func2(integer)' backup/MPPDB_backup.tar - ``` - - 在上面这个例子中,test1模式下的函数Func1\(i integer\)和test2模式下的函数Func2\(j integer\)会被一起导入。 - -- -s, --schema-only - - 只导入模式(数据定义),不导入数据(表内容)。当前的序列值也不会导入。 - -- -S, --sysadmin=NAME - - 该参数为扩展预留接口,不建议使用。 - -- -t, --table=NAME - - 只导入已列举的表定义、数据或定义和数据。该选项与-n选项同时使用时,用来指定某个模式下的表对象。-n参数不输入时,默认为PUBLIC模式。多次输入-n -t 可以导入指定模式下的多个表。 - - 例如: - - 导入PUBLIC模式下的table1 - - ``` - gs_restore -h host_name -p port_number -d postgres -t table1 backup/MPPDB_backup.tar - ``` - - 导入test1模式下的test1和test2模式下test2 - - ``` - gs_restore -h host_name -p port_number -d postgres -n test1 -t test1 -n test2 -t test2 backup/MPPDB_backup.tar - ``` - - 导入PUBLIC模式下的table1和test1 模式下test1 - - ``` - gs_restore -h host_name -p port_number -d postgres -n PUBLIC -t table1 -n test1 -t table1 backup/MPPDB_backup.tar - ``` - - >![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** - >-t不支持schema\_name.table\_name的输入格式。 - -- -T, --trigger=NAME - - 该参数为扩展预留接口。 - -- -x, --no-privileges/--no-acl - - 防止导入访问权限(grant/revoke命令)。 - -- -1, --single-transaction - - 执行导入作为一个单独事务(即把命令包围在BEGIN/COMMIT中)。 - - 该选项确保要么所有命令成功完成,要么没有改变应用。该选项意为--exit-on-error。 - -- --disable-triggers - - 该参数为扩展预留接口,不建议使用。 - -- --no-data-for-failed-tables - - 默认状态下,即使创建表的命令失败(如表已经存在),表数据仍会被导入。使用该选项,像这种表的数据会被跳过。如果目标数据库已包含想要的表内容,这种行为会有帮助。 - - 该选项只有在直接导入到某数据库中时有效,不针对生成SQL脚本文件输出。 - -- --no-security-labels - - 该参数为扩展预留接口,不建议使用。 - -- --no-tablespaces - - 不输出选择表空间的命令。使用该选项,无论默认表空间是哪个,在导入过程中所有对象都会被创建。 - -- --section=SECTION - - 导入已列举的区段(如pre-data、data或post-data)。 - -- --use-set-session-authorization - - 该选项用来进行文本格式的备份。 - - 输出SET SESSION AUTHORIZATION命令,而非ALTER OWNER命令,用以决定对象归属。该选项使转储更加兼容标准,但通过参考转储中对象的记录,导入过程可能会有问题。使用SET SESSION AUTHORIZATION的转储要求必须是系统管理员,同时在导入前还需参考“SET SESSION AUTHORIZATION”,手工对导出文件的密码进行修改验证,只有这样才能进行正确的导入操作,相比之下,ALTER OWNER对权限要求较低。 - - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-notice.gif) **须知:** -> ->- 如果安装过程中有任何本地数据要添加到template1数据库,请谨慎将gs\_restore的输出载入到一个真正的空数据库中;否则可能会因为被添加对象的定义被复制,而出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如: -> ->``` ->CREATE DATABASE foo WITH TEMPLATE template0; ->``` -> ->- gs\_restore不能选择性地导入大对象;例如只能导入那些指定表的对象。如果某个归档形式包含大对象,那所有大对象都会被导入或一个都不会被导入,如果它们通过-L、-t或其他选项被排除。 - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** ->1.-d/--dbname 和 -f/--file 不能同时使用; -> ->2. -s/--schema-only 和 -a/--data-only不能同时使用; ->3. -c/--clean 和 -a/--data-only不能同时使用; ->4. 使用--single-transaction时,-j/--jobs必须为单任务; ->5. --role 和 --rolepassword必须一起使用。 - -连接参数: - -- -h, --host=HOSTNAME - - 指定的主机名称。如果取值是以斜线开头,他将用作Unix域套接字的目录。默认值取自PGHOST环境变量;如果没有设置,将启动某个Unix域套接字建立连接。 - - 该参数只针对openGauss外,对openGauss内本机只能用127.0.0.1。 - -- -p, --port=PORT - - 指定服务器所侦听的TCP端口或本地Unix域套接字后缀,以确保连接。默认值设置为PGPORT环境变量。 - - 在开启线程池情况下,建议使用 pooler port,即侦听端口+1。 - -- -U, --username=NAME - - 所连接的用户名。 - -- -w, --no-password - - 不出现输入密码提示。如果服务器要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。 - -- -W, --password=PASSWORD - - 指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W参数;如果没有-W参数,并且不是系统管理员,“gs\_restore”会提示用户输入密码。 - -- --role=ROLENAME - - 指定导入操作使用的角色名。选择该参数,会使gs\_restore连接数据库后,发起一个SET ROLE角色名命令。当所授权用户(由-U指定)没有gs\_restore要求的权限时,该参数会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以初始用户身份登录,而使用该参数能够在不违反该规定的情况下完成导入。 - -- --rolepassword=ROLEPASSWORD - - 指定具体角色用户的角色密码。 - - -#### 示例 - -特例:执行gsql程序,使用如下选项导入由gs\_dump/gs\_dumpall生成导出文件夹(纯文本格式)的MPPDB\_backup.sql文件到postgres数据库。 - -``` -gsql -d postgres -p 15400 -W Bigdata@123 -f /home/omm/test/MPPDB_backup.sql -SET -SET -SET -SET -SET -ALTER TABLE -ALTER TABLE -ALTER TABLE -ALTER TABLE -ALTER TABLE -CREATE INDEX -CREATE INDEX -CREATE INDEX -SET -CREATE INDEX -REVOKE -REVOKE -GRANT -GRANT -total time: 30476 ms -``` - -gs\_restore用来导入由gs\_dump生成的导出文件。 - -示例1:执行gs\_restore,将导出的MPPDB\_backup.dmp文件(自定义归档格式)导入到postgres数据库。 - -``` -gs_restore -W Bigdata@123 backup/MPPDB_backup.dmp -p 15400 -d postgres -gs_restore: restore operation successful -gs_restore: total time: 13053 ms -``` - -示例2:执行gs\_restore,将导出的MPPDB\_backup.tar文件(tar格式)导入到postgres数据库。 - -``` -gs_restore backup/MPPDB_backup.tar -p 15400 -d postgres -gs_restore[2017-07-21 19:16:26]: restore operation successful -gs_restore[2017-07-21 19:16:26]: total time: 21203 ms -``` - -示例3:执行gs\_restore,将导出的MPPDB\_backup文件(目录格式)导入到postgres数据库。 - -``` -gs_restore backup/MPPDB_backup -p 15400 -d postgres -gs_restore[2017-07-21 19:16:26]: restore operation successful -gs_restore[2017-07-21 19:16:26]: total time: 21003 ms -``` - -示例4:执行gs\_restore,使用自定义归档格式的MPPDB\_backup.dmp文件来进行如下导入操作。 导入PUBLIC模式下所有对象的定义和数据。在导入时会先删除已经存在的对象,如果原对象存在跨模式的依赖则需手工强制干预。 - -``` -gs_restore backup/MPPDB_backup.dmp -p 15400 -d postgres -e -c -n PUBLIC -gs_restore: [archiver (db)] Error while PROCESSING TOC: -gs_restore: [archiver (db)] Error from TOC entry 313; 1259 337399 TABLE table1 gaussdba -gs_restore: [archiver (db)] could not execute query: ERROR: cannot drop table table1 because other objects depend on it -DETAIL: view t1.v1 depends on table table1 -HINT: Use DROP ... CASCADE to drop the dependent objects too. - Command was: DROP TABLE public.table1; -``` - -手工删除依赖,导入完成后再重新创建。 - -``` -gs_restore backup/MPPDB_backup.dmp -p 15400 -d postgres -e -c -n PUBLIC -gs_restore[2017-07-21 19:16:26]: restore operation successful -gs_restore[2017-07-21 19:16:26]: total time: 2203 ms -``` - -示例5:执行gs\_restore,使用自定义归档格式的MPPDB\_backup.dmp文件来进行如下导入操作。只导入PUBLIC模式下表table1的定义。 - -``` -gs_restore backup/MPPDB_backup.dmp -p 15400 -d postgres -e -c -s -n PUBLIC -t table1 -gs_restore[2017-07-21 19:16:26]: restore operation successful -gs_restore[2017-07-21 19:16:26]: total time: 21000 ms -``` - -示例6:执行gs\_restore,使用自定义归档格式的MPPDB\_backup.dmp文件来进行如下导入操作。只导入PUBLIC模式下表table1的数据。 - -``` -gs_restore backup/MPPDB_backup.dmp -p 15400 -d postgres -e -a -n PUBLIC -t table1 -gs_restore[2017-07-21 19:16:26]: restore operation successful -gs_restore[2017-07-21 19:16:26]: total time: 20203 ms -``` - - - -### gs\_backup - -#### 背景信息 - -openGauss部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。openGauss提供了gs\_backup工具帮助openGauss备份、恢复重要数据、显示帮助信息和版本号信息。 - -#### 前提条件 - -- 可以正常连接openGauss数据库。 -- 在进行还原时,需要保证各节点备份目录中存在备份文件。 -- 需以操作系统用户omm执行gs\_backup命令。 - -#### 语法 - -- 备份数据库主机 - - ``` - gs_backup -t backup --backup-dir=BACKUPDIR [-h HOSTNAME] [--parameter] [--binary] [--all] [-l LOGFILE] - ``` - -- 恢复数据库主机 - - ``` - gs_backup -t restore --backup-dir=BACKUPDIR [-h HOSTNAME] [--parameter] [--binary] [--all] [-l LOGFILE] [--force] - ``` - -- 显示帮助信息 - - ``` - gs_backup -? | --help - ``` - -- 显示版本号信息 - - ``` - gs_backup -V | --version - ``` - - -#### 参数说明 - -gs\_backup参数可以分为如下几类: - -- 备份数据库主机参数: - - - -h - - 指定存储备份文件的主机名称。 - - 取值范围:主机名称。如果不指定主机名称,则备份当前集群。 - - - --backup-dir=BACKUPDIR - - 备份文件保存路径。 - - - --parameter - - 备份参数文件,不指定--parameter、--binary、--all参数时默认只备份参数文件。 - - - --binary - - 备份app目录下的二进制文件。 - - - --all - - 备份app目录下的二进制文件、pg\_hba.conf和postgsql.conf文件。 - - - -l - - 指定日志文件及存放路径。 - - 默认值:$GAUSSLOG/om/gs\_backup-YYYY-MM-DD\_hhmmss.log - - -- 恢复数据库主机参数: - - - -h - - 指定需要恢复主机的名称。 - - 取值范围:主机名称。如果不指定主机,则恢复对应的备份节点。 - - - --backup-dir=BACKUPDIR - - 恢复文件提取路径。 - - - --parameter - - 恢复参数文件,不指定--parameter、--binary、--all参数时默认只恢复参数文件。 - - - --binary - - 恢复二进制文件。 - - - --all - - 恢复二进制和参数文件。 - - - -l - - 指定日志文件及存放路径。 - - 默认值:$GAUSSLOG/om/gs\_backup-YYYY-MM-DD\_hhmmss.log - - - --force - - 节点的静态文件丢失后强行restore,仅限--all 或者--binary一起使用时才生效。 - - -- 其他参数: - - - -?, --help - - 显示帮助信息。 - - - -V, --version - - 显示版本号信息。 - - - -t - - 指定操作类型。 - - 取值范围:backup 或者 restore。 - - - -#### 示例 - -- 使用gs\_backup脚本备份数据库主机。 - - ``` - gs_backup -t backup --backup-dir=/opt/software/gaussdb/backup_dir -h plat1 --parameter - Backing up openGauss. - Parsing configuration files. - Successfully parsed the configuration file. - Performing remote backup. - Remote backup succeeded. - Successfully backed up openGauss. - ``` - -- 使用gs\_backup脚本恢复数据库主机。 - - ``` - gs_backup -t restore --backup-dir=/opt/software/gaussdb/backup_dir -h plat1 --parameter - Restoring openGauss. - Parsing the configuration file. - Successfully parsed configuration files. - Performing remote restoration. - Remote restoration succeeded. - Successfully restored openGauss. - ``` - -## 闪回恢复 - -闪回恢复功能是数据库恢复技术的一环,可以有选择性的撤销一个已提交事务的影响,将数据从人为不正确的操作中进行恢复。在采用闪回技术之前,只能通过备份恢复、PITR等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。 - ->![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** ->USTORE引擎暂不支持闪回DROP/TRUNCATE。 - -- **[闪回查询](#闪回查询)** - -- **[闪回表](#闪回表)** - -- **[闪回DROP/TRUNCATE](#闪回DROP/TRUNCATE)** - -闪回恢复功能是数据库恢复技术的一环,可以有选择性的撤销一个已提交事务的影响,将数据从人为不正确的操作中进行恢复。在采用闪回技术之前,只能通过备份恢复、PITR等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。 - -### 闪回查询 - -#### 背景信息 - -闪回查询可以查询过去某个时间点表的某个snapshot数据,这一特性可用于查看和逻辑重建意外删除或更改的受损数据。闪回查询基于MVCC多版本机制,通过检索查询旧版本,获取指定老版本数据。 - -#### 语法 - -``` -{[ ONLY ] table_name [ * ] [ partition_clause ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ] -[ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ] -[TIMECAPSULE { TIMESTAMP | CSN } expression ] -|( select ) [ AS ] alias [ ( column_alias [, ...] ) ] -|with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] -|function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ] -|function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] ) -|from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]} -``` - -语法树中“TIMECAPSULE \{TIMESTAMP | CSN\} expression”为闪回功能新增表达方式,其中TIMECAPSULE表示使用闪回功能,TIMESTAMP以及CSN表示闪回功能使用具体时间点信息或使用CSN(commit sequence number)信息。 - -#### 参数说明 - -- TIMESTAMP - - 指要查询某个表在TIMESTAMP这个时间点上的数据,TIMESTAMP指一个具体的历史时间。 - - -- CSN - - 指要查询整个数据库逻辑提交序下某个CSN点的数据,CSN指一个具体逻辑提交时间点,数据库中的CSN为写一致性点,每个CSN代表整个数据库的一个一致性点,查询某个CSN下的数据代表SQL查询数据库在该一致性点的相关数据。 - - -#### 使用示例 - -- 示例1: - - ``` - SELECT * FROM t1 TIMECAPSULE TIMESTAMP to_timestamp ('2020-02-11 10:13:22.724718', 'YYYY-MM-DD HH24:MI:SS.FF'); - ``` - -- 示例2: - - ``` - SELECT * FROM t1 TIMECAPSULE CSN 9617; - ``` - -- 示例3: - - ``` - SELECT * FROM t1 AS t TIMECAPSULE TIMESTAMP to_timestamp ('2020-02-11 10:13:22.724718', 'YYYY-MM-DD HH24:MI:SS.FF'); - ``` - -- 示例4: - - ``` - SELECT * FROM t1 AS t TIMECAPSULE CSN 9617; - ``` - - - -### 闪回表 - -#### 背景信息 - -闪回表可以将表恢复至特定时间点,当逻辑损坏仅限于一个或一组表,而不是整个数据库时,此特性可以快速恢复表的数据。闪回表基于MVCC多版本机制,通过删除指定时间点和该时间点之后的增量数据,并找回指定时间点和当前时间点删除的数据,实现表级数据还原。 - -#### 语法 - -``` -TIMECAPSULE TABLE table_name TO { TIMESTAMP | CSN } expression -``` - -#### 使用示例 - -``` -TIMECAPSULE TABLE t1 TO TIMESTAMP to_timestamp ('2020-02-11 10:13:22.724718', 'YYYY-MM-DD HH24:MI:SS.FF'); -TIMECAPSULE TABLE t1 TO CSN 9617; -``` - -### 闪回DROP/TRUNCATE - -#### 背景信息 - -- 闪回DROP:可以恢复意外删除的表,从回收站(recycle bin)中恢复被删除的表及其附属结构如索引、表约束等。闪回drop是基于回收站机制,通过还原回收站中记录的表的物理文件,实现已drop表的恢复。 -- 闪回TRUNCATE:可以恢复误操作或意外被进行truncate的表,从回收站中恢复被truncate的表及索引的物理数据。闪回truncate基于回收站机制,通过还原回收站中记录的表的物理文件,实现已truncate表的恢复。 - -#### 前提条件 - -- 开启enable\_recyclebin参数,启用回收站。 -- recyclebin\_retention参数用于设置回收站对象保留时间,超过该时间的回收站对象将被自动清理。 - -#### 相关语法 - -- 删除表 - - ``` - DROP TABLE table_name [PURGE] - ``` - - -- 清理回收站对象 - - ``` - PURGE { TABLE { table_name } - | INDEX { index_name } - | RECYCLEBIN - } - ``` - - -- 闪回被删除的表 - - ``` - TIMECAPSULE TABLE { table_name } TO BEFORE DROP [RENAME TO new_tablename] - ``` - - -- 截断表 - - ``` - TRUNCATE TABLE { table_name } [ PURGE ] - ``` - -- 闪回截断的表 - - ``` - TIMECAPSULE TABLE { table_name } TO BEFORE TRUNCATE - ``` - - -#### 参数说明 - -- DROP/TRUNCATE TABLE table\_name PURGE - - 默认将表数据放入回收站中,PURGE直接清理。 - - -- PURGE RECYCLEBIN - - - 表示清理回收站对象。 - -- **TO BEFORE DROP** - - 使用这个子句检索回收站中已删除的表及其子对象。 - - 可以指定原始用户指定的表的名称,或对象删除时数据库分配的系统生成名称。 - - - 回收站中系统生成的对象名称是唯一的。因此,如果指定系统生成名称,那么数据库检索指定的对象。使用“select \* from pg\_recyclebin;”语句查看回收站中的内容。 - - 如果指定了用户指定的名称,且如果回收站中包含多个该名称的对象,然后数据库检索回收站中最近移动的对象。如果想要检索更早版本的表,你可以这样做: - - - 指定你想要检索的表的系统生成名称。 - - - 执行TIMECAPSULE TABLE ... TO BEFORE DROP语句,直到你要检索的表。 - - - 恢复DROP表时,只恢复基表名,其他子对象名均保持回收站对象名。用户可根据需要,执行DDL命令手工调整子对象名。 - - 回收站对象不支持DML、DCL、DDL等写操作,不支持DQL查询操作(后续支持)。 - -- **RENAME TO** - - 为从回收站中检索的表指定一个新名称。 - -- **TO BEFORE TRUNCATE** - - 闪回到TRUNCATE之前。 - - -#### 语法示例 - -``` -DROP TABLE t1 PURGE; - -PURGE TABLE t1; -PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0"; -PURGE INDEX i1; -PURGE INDEX "BIN$04LhcpndanfgMAAAAAANPw==$0"; -PURGE RECYCLEBIN; - -TIMECAPSULE TABLE t1 TO BEFORE DROP; -TIMECAPSULE TABLE t1 TO BEFORE DROP RENAME TO new_t1; -TIMECAPSULE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0" TO BEFORE DROP; -TIMECAPSULE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO new_t1; -``` - +# 备份与恢复 + + + +- [概述](#概述) + +- [物理备份恢复](#物理备份恢复) + +- [逻辑备份恢复](#逻辑备份恢复) + +- [闪回恢复](#闪回恢复) + + + + +## 概述 + +数据备份是保护数据安全的重要手段之一,为了更好的保护数据安全, openGauss 数据库支持三种备份恢复类型、多种备份恢复方案,备份和恢复过程中提供数据的可靠性保障机制。 + +备份与恢复类型可分为逻辑备份与恢复、物理备份与恢复、闪回恢复。 + +- 逻辑备份与恢复:通过逻辑导出对数据进行备份,逻辑备份只能基于备份时刻进行数据转储,所以恢复时也只能恢复到备份时保存的数据。对于故障点和备份点之间的数据,逻辑备份无能为力,逻辑备份适合备份那些很少变化的数据,当这些数据因误操作被损坏时,可以通过逻辑备份进行快速恢复。如果通过逻辑备份进行全库恢复,通常需要重建数据库,导入备份数据来完成,对于可用性要求很高的数据库,这种恢复时间太长,通常不被采用。由于逻辑备份具有平台无关性,所以更为常见的是,逻辑备份被作为一个数据迁移及移动的主要手段。 + +- 物理备份与恢复:通过物理文件拷贝的方式对数据库进行备份,以磁盘块为基本单位将数据从主机复制到备机。通过备份的数据文件及归档日志等文件,数据库可以进行完全恢复。物理备份速度快,一般被用作对数据进行备份和恢复,用于全量备份的场景。通过合理规划,可以低成本进行备份与恢复。 + +- 闪回恢复:利用回收站的闪回恢复删除的表。数据库的回收站功能类似于 Windows 系统的回收站,将删除的表信息保存到回收站中。利用 MVCC 机制闪回恢复到指定时间点或者 CSN 点。 + + 以下为 openGauss 支持的三类数据备份恢复方案,备份方案也决定了当异常发生时该如何恢复。 + + **表 1** 三种备份恢复类型对比 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

备份类型

+

应用场景

+

支持的介质

+

工具名称

+

恢复时间

+

优缺点

+

逻辑备份与恢复

+

适合于数据量小的场景。

+

可以备份单表和多表,单 database 和所有 database 。备份后的数据需要使用 gsql 或者 gs_restore 工具恢复。数据量大时,恢复需要较长时间。

+

磁盘

+

SSD

+

+

gs_dump

+

纯文本格式数据恢复时间长。归档格式数据恢复时间中等。

+

导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式、表、视图等)。支持导出的数据库可以是默认数据库 postgres ,也可以是自定义数据库。导出的格式可选择纯文本格式或者归档格式。纯文本格式的数据只能通过 gsql 进行恢复,恢复时间较长。归档格式的数据只能通过 gs_restore 进行恢复,恢复时间较纯文本格式短。

+

gs_dumpall

+

数据恢复时间长。

+

导出所有数据库相关信息工具,它可以导出 openGauss 数据库的所有数据,包括默认数据库 postgres 的数据、自定义数据库的数据、以及 openGauss 所有数据库公共的全局对象。

+

只能导出纯文本格式的数据,导出的数据只能通过 gsql 进行恢复,恢复时间较长。

+

物理备份与恢复

+

适用于数据量大的场景,主要用于全量数据备份恢复,也可对整个数据库中的 WAL 归档日志和运行日志进行备份。

+

gs_backup

+

数据量小数据恢复时间快。

+

导出数据库相关信息的 OM 工具,可以导出数据库参数文件和二进制文件。帮助 openGauss 备份、恢复重要数据、显示帮助信息和版本号信息。在进行备份时,可以选择备份内容的类型,在进行还原时,需要保证各节点备份目录中存在备份文件。在集群恢复时,通过静态配置文件中的集群信息进行恢复。只恢复参数文件恢复时间较短。

+

gs_basebackup

+

恢复时可以直接拷贝替换原有的文件, 或者直接在备份的库上启动数据库,恢复时间快。

+

对服务器数据库文件的二进制进行全量拷贝,只能对数据库某一个时间点的时间作备份。结合 PITR 恢复,可恢复全量备份时间点后的某一时间点。

+

gs_probackup

+

恢复时可以直接恢复到某个备份点,在备份的库上启动数据库,恢复时间快。

+

gs_probackup 是一个用于管理 openGauss 数据库备份和恢复的工具。它对 openGauss 实例进行定期备份。可用于备份单机数据库或者集群主节点数据库,为物理备份。 可备份外部目录的内容,如脚本文件、配置文件、日志文件、dump 文件等。 支持增量备份、定期备份和远程备份。增量备份时间相对于全量备份时间比较短,只需要备份修改的文件。当前默认备份是数据目录,如果表空间不在数据目录,需要手动指定备份的表空间目录进行备份。当前只支持在主机上执行备份。

+

闪回恢复

+

适用于:

+

1)误删除表的场景;

+

2)需要将表中的数据恢复到指定时间点或者 CSN 。

+

+

可以将表的状态恢复到指定时间点或者是表结构删除前的状态,恢复时间快。

+

闪回技术能够有选择性的高效撤销一个已提交事务的影响,从人为错误中恢复。在采用闪回技术之前,只能通过备份恢复、PITR 等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。

+

闪回支持两种恢复模式:

+
  • 基于 MVCC 多版本的数据恢复:适用于误删除、误更新、误插入数据的查询和恢复,用户通过配置旧版本保留时间,并执行相应的查询或恢复命令,查询或恢复到指定的时间点或 CSN 点。
  • 基于类似 Windows 系统回收站的恢复:适用于误DROP、误 TRUNCATE 的表的恢复。用户通过配置回收站开关,并执行相应的恢复命令,可以将误 DROP、误 TRUNCATE 的表找回。
+
+ + + 当需要进行备份恢复操作时,主要从以下四个方面考虑数据备份方案。 + + - 备份对业务的影响在可接受范围。 + + - 数据库恢复效率。 + + 为尽量减小数据库故障的影响,要使恢复时间减到最少,从而使恢复的效率达到最高。 + + - 数据可恢复程度。 + + 当数据库失效后,要尽量减少数据损失。 + + - 数据库恢复成本。 + + 在现网选择备份策略时参考的因素比较多,如备份对象、数据大小、网络配置等,[表2](#zh-cn_topic_0283140581_zh-cn_topic_0237088826_zh-cn_topic_0100209712_table1179095017218)列出了可用的备份策略和每个备份策略的适用场景。 + + **表 2** 备份策略典型场景 + + + + + + + + + + + + + + + + + + + + +

备份策略

+

关键性能因素

+

典型数据量

+

性能规格

+

数据库实例备份

+
  • 数据大小
  • 网络配置
+

数据:PB 级

+

对象:约 100 万个

+

备份:

+
  • 每个主机 80 Mbit/s(NBU/EISOO + 磁盘)
  • 约 90% 磁盘 I/O 速率(SSD/HDD)
+

表备份

+
  • 表所在模式
  • 网络配置(NBU)
+

数据:10 TB 级

+

备份:基于查询性能速度 + I/O 速度

+
说明:

多表备份时,备份耗时计算方式:

+
总时间 = 表数量 x 起步时间 + 数据总量 /  数据备份速度
+

其中:

+
  • 磁盘起步时间为 5s 左右, NBU 起步时间比 DISK 长(取决于 NBU 部署方案)。
  • 数据备份速度为单节点 50MB/s 左右(基于 1GB 大小的表,物理机备份到本地磁盘得出此速率)。
+

表越小,备份性能更低。

+
+
+ + + + + +## 物理备份恢复 + + +### gs\_basebackup + +#### 背景信息 + +openGauss 部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。 openGauss 提供了 gs\_basebackup 工具做基础的物理备份。gs\_basebackup 的实现目标是对服务器数据库文件的二进制进行拷贝,其实现原理使用了复制协议。远程执行 gs\_basebackup 时,需要使用系统管理员账户。gs\_basebackup 当前支持热备份模式和压缩格式备份。 + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +> +>- gs\_basebackup 仅支持主机和备机的全量备份,不支持增量。 +>- gs\_basebackup 当前支持热备份模式和压缩格式备份。 +>- gs\_basebackup 在备份包含绝对路径的表空间时,如果在同一台机器上进行备份,可以通过 tablespace-mapping 重定向表空间路径,或使用归档模式进行备份。 +>- 若打开增量检测点功能且打开双写,gs\_basebackup 也会备份双写文件。 +>- 若 pg\_xlog 目录为软链接,备份时将不会建立软链接,会直接将数据备份到目的路径的 pg\_xlog 目录下。 +>- 备份过程中收回用户备份权限,可能导致备份失败或者备份数据不可用。 +>- 如果因为网络临时故障等原因导致 Server 端无应答,gs\_basebackup将在最长等待 120 秒后退出。 + +#### 前提条件 + +- 可以正常连接 openGauss 数据库。 + +- 备份过程中用户权限没有被回收。 + +- pg\_hba.conf 中需要配置允许复制链接,且该连接必须由一个系统管理员建立。 + +- 如果 xlog 传输模式为 stream 模式,需要配置 max\_wal\_senders 的数量, 至少有一个可用。 + +- 如果 xlog 传输模式为 fetch 模式,有必要把 wal\_keep\_segments 参数设置得足够高,这样在备份末尾之前日志不会被移除。 + +- 在进行还原时,需要保证各节点备份目录中存在备份文件,若备份文件丢失,则需要从其他节点进行拷贝。 + +#### 语法 + +- 显示帮助信息 + + ``` + gs_basebackup -? | --help + ``` + +- 显示版本号信息 + + ``` + gs_basebackup -V | --version + ``` + +参数说明 + +gs\_basebackup 参数可以分为如下几类: + +- -D directory + + 备份文件输出的目录,必选项。 + + +- 常用参数: + + - -c,--checkpoint=fast|spread + + 设置检查点模式为 fast 或者 spread(默认)。 + + - -l,--label=LABEL + + 为备份设置标签。 + + - -P,--progress + + 启用进展报告。 + + - -v, --verbose + + 启用冗长模式。 + + - -V, --version + + 打印版本后退出。 + + - -?,--help + + 显示 gs\_basebackup 命令行参数。 + + - -T,–tablespace-mapping=olddir=newdir + + 在备份期间将目录 olddir 中的表空间重定位到 newdir 中。为使之有效, olddir 必须正好匹配表空间所在的路径(但如果备份中没有包含 olddir 中的表空间也不是错误)。 olddir 和 newdir 必须是绝对路径。如果一个路径凑巧包含了一个 = 符号,可用反斜线对它转义。对于多个表空间可以多次使用这个选项。 + + - -F,–format=plain|tar + + 设置输出格式为 plain \(默认\)或者 tar 。没有设置该参数的情况下,默认 –format=plain。 plain 格式把输出写成平面文件,使用和当前数据目录和表空间相同的布局。当集簇没有额外表空间时,整个数据库将被放在目标目录中。如果集簇包含额外的表空间,主数据目录将被放置在目标目录中,但是所有其他表空间将被放在它们位于服务器上的相同的绝对路径中。 tar 模式将输出写成目标目录中的 tar 文件。主数据目录将被写入到一个名为 base.tar 的文件中,并且其他表空间将被以其 OID 命名。生成的 tar 包,需要用 gs\_tar 命令解压。 + + - -X, –xlog-method=fetch|stream + + 设置 xlog 传输方式。没有设置该参数的情况下,默认–xlog-method=stream。在备份中包括所需的预写式日志文件(WAL文件)。这包括所有在备份期间产生的预写式日志。 fetch 方式在备份末尾收集预写式日志文件。因此,有必要把 wal\_keep\_segments 参数设置得足够高,这样在备份末尾之前日志不会被移除。如果在要传输日志时它已经被轮转,备份将失败并且是不可用的。 stream 方式在备份被创建时流传送预写式日志。这将开启一个到服务器的第二连接并且在运行备份时并行开始流传输预写式日志。因此,它将使用最多两个由 max\_wal\_senders 参数配置的连接。只要客户端能保持接收预写式日志,使用这种模式不需要在主控机上保存额外的预写式日志。 + + - -x, + + –xlog 使用这个选项等效于和方法 fetch 一起使用 -X。 + + - -Z –compress=level + + 启用对 tar 文件输出的 gzip 压缩,并且制定压缩级别(0 到 9 , 0 是不压缩, 9 是最佳压缩)。只有使用 tar 格式时压缩才可用,并且会在所有 tar 文件名后面自动加上后缀 .gz 。 + + - -z + + 启用对 tar 文件输出的 gzip 压缩,使用默认的压缩级别。只有使用 tar 格式时压缩才可用,并且会在所有 tar 文件名后面自动加上后缀 .gz 。 + + - -t,–rw-timeout + + 设置备份期间 checkpoint 的时间限制,默认限制时间为 120s 。当数据库全量 checkpoint 耗时较长时,可以适当增大 rw-timeout 限制时间。 + + +- 连接参数 + + - -h, --host=HOSTNAME + + 指定正在运行服务器的主机名或者 Unix 域套接字的路径。 + + - -p,--port=PORT + + 指定数据库服务器的端口号。 + + 可以通过 port 参数修改默认端口号。 + + - -U,--username=USERNAME + + 指定连接数据库的用户。 + + - -s, --status-interval=INTERVAL + + 发送到服务器的状态包的时间(以秒为单位)。 + + - -w,--no-password + + 不出现输入密码提示。 + + - -W, --password + + 当使用 -U 参数连接本地数据库或者连接远端数据库时,可通过指定该选项出现输入密码提示。 + + + +#### 示例 + +``` +gs_basebackup -D /home/test/trunk/install/data/backup -h 127.0.0.1 -p 21233 +INFO: The starting position of the xlog copy of the full build is: 0/1B800000. The slot minimum LSN is: 0/1B800000. +``` + +#### 从备份文件恢复数据 + +当数据库发生故障时需要从备份文件进行恢复。因为 gs\_basebackup 是对数据库按二进制进行备份,因此恢复时可以直接拷贝替换原有的文件,或者直接在备份的库上启动数据库。 + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +> +>- 若当前数据库实例正在运行,直接从备份文件启动数据库可能会存在端口冲突,这时需要修改配置文件的 port 参数,或者在启动数据库时指定一下端口。 +>- 若当前备份文件为主备数据库,可能需要修改一下主备之间的复制连接。即配置文件中的 postgre.conf 中的 replconninfo1、 replconninfo2 等。 +>- 若配置文件 postgresql.conf 的参数 data\_directory 打开且有配置,当使用备份目录启动数据库时候,data\_directory和备份目录不同会导致启动失败。可以修改 data\_directory 的值为新的数据目录,或者注释掉该参数。 + +若要在原库的地方恢复数据库,参考步骤如下: + +1. 停止数据库服务器, 具体操作请参见《管理员指南》。 +2. 将原数据库和所有表空间复制到另外一个位置,以备后面需要。 +3. 清理原库中的所有或部分文件。 +4. 使用数据库系统用户权限从备份中还原需要的数据库文件。 +5. 若数据库中存在链接文件,需要修改使其链接到正确的文件。 +6. 重启数据库服务器,并检查数据库内容,确保数据库已经恢复到所需的状态。 + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +> +>- 暂不支持备份文件增量恢复。 +>- 恢复后需要检查数据库中的链接文件是否链接到正确的文件。 + + + + +### PITR恢复 + +#### 背景信息 + +当数据库崩溃或希望回退到数据库之前的某一状态时, openGauss 的即时恢复功能(Point-In-Time Recovery,简称 PITR)可以支持恢复到备份归档数据之后的任意时间点。 + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +> +>- PITR仅支持恢复到物理备份数据之后的某一时间点。 +>- 仅主节点可以进行 PITR 恢复,备机需要进行全量 build 达成与主机数据同步。 + + + +#### 前提条件 + +- 基于经过物理备份的全量数据文件。 +- 基于已归档的 WAL 日志文件。 + +#### PITR恢复流程 + +1. 将物理备份的文件替换目标数据库目录。 +2. 删除数据库目录下 pg\_xlog/ 中的所有文件。 +3. 将归档的 WAL 日志文件复制到 pg\_xlog 文件中(此步骤可以省略,通过配置 recovery.conf 恢复命令文件中的 restore\_command 项替代)。 +4. 在数据库目录下创建恢复命令文件 recovery.conf,指定数据库恢复的程度。 +5. 启动数据库。 +6. 连接数据库,查看是否恢复到希望预期的状态。 +7. 若已经恢复到预期状态,通过 pg\_xlog\_replay\_resume\(\) 指令使主节点对外提供服务。 + +#### recovery.conf 文件配置 + +**归档恢复配置** + +- restore\_command = string + +这个 SHELL 命令是获取 WAL 文件系列中已归档的 WAL 文件。字符串中的任何一个 `%f` 是用归档检索中的文件名替换, 并且 `%p` 是用服务器上的复制目的地的路径名替换。 任意一个 `%r` 是用包含最新可用重启点的文件名替换。 + +示例: + +``` +restore_command = 'cp /mnt/server/archivedir/%f %p' +``` + +- archive\_cleanup\_command = string + +这个选项参数声明一个 shell 命令。在每次重启时会执行这个 shell 命令。 archive\_cleanup\_command 为清理备库不需要的归档 WAL 文件提供一个机制。 任何一个 `%r` 由包含最新可用重启点的文件名代替。这是最早的文件,因此必须保留以允许恢复能够重新启动,因此所有早于 `%r` 的文件可以安全的移除。 + +示例: + +``` +archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r' +``` + +需要注意的是,如果多个备服务器从相同的归档路径恢复时, 需要确保在任何一个备服务器在需要之前,不能删除 WAL 文件。 + +- recovery\_end\_command = string + +这个参数是可选的,用于声明一个只在恢复完成时执行的 SHELL 命令。recovery\_end\_command 是为以后的复制或恢复提供一个清理机制。 + +**恢复目标设置** + +- recovery\_target\_name = string + +此参数声明命名还原到一个使用 `pg\_create\_restore\_point\(\)` 创建的还原点。 + +示例: + +``` +recovery_target_name = 'restore_point_1' +``` + +- recovery\_target\_time = timestamp + +此参数声明命名还原到一个指定时间戳。 + +示例: + +``` +recovery_target_time = '2020-01-01 12:00:00' +``` + +- recovery\_target\_xid = string + +这个参数声明还原到一个事务 ID 。 + +示例: + +``` +recovery_target_xid = '3000' +``` + +- recovery\_target\_lsn = string + +这个参数声明还原到日志的指定 LSN 点。 + +示例: + +``` +recovery_target_lsn = '0/0FFFFFF' +``` + +- recovery\_target\_inclusive = boolean + +声明是否在指定恢复目标(true)之后停止,或在这(false)之前停止。改声明仅支持恢复目标为 recovery\_target\_time、recovery\_target\_xid 和 recovery\_target\_lsn 的配置。 + +示例: + +``` +recovery_target_inclusive = true +``` + +![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** + +- recovery\_target\_name、recovery\_target\_time、recovery\_target\_xid、recovery\_target\_lsn 这四个配置项仅同时支持一项。 + +- 如果不配置任何恢复目标,或配置目标不存在,则默认恢复到最新的 WAL 日志点。 + +### gs\_probackup + +#### 背景信息 + +gs\_probackup 是一个用于管理 openGauss 数据库备份和恢复的工具。它对 openGauss 实例进行定期备份,以便在数据库出现故障时能够恢复服务器。 + +- 可用于备份单机数据库,也可对主机或者主节点数据库备机进行备份,为物理备份。 +- 可备份外部目录的内容,如脚本文件、配置文件、日志文件、dump 文件等。 +- 支持增量备份、定期备份和远程备份。 +- 可设置备份的留存策略。 + +#### 前提条件 + +- 可以正常连接 openGauss 数据库。 +- 若要使用 PTRACK 增量备份,需在 postgresql.conf 中手动添加参数“enable\_cbm\_tracking = on”。 +- 为了防止 xlog 在传输结束前被清理,请适当调高 postgresql.conf 文件中 wal\_keep\_segments 的值。 + +#### 限制说明 + +- 备份必须由运行数据库服务器的用户执行。 +- 备份和恢复的数据库服务器的主版本号必须相同。 +- 如果要通过 ssh 在远程模式下备份数据库,需要在本地和远程主机安装相同主版本的数据库,并通过 `ssh-copy-id remote\_user@remote\_host` 命令设置本地主机备份用户和远程主机数据库用户的无密码 ssh 连接。 +- 远程模式下只能执行 `add-instance`、`backup`、`restore` 子命令。 +- 使用 `restore` 子命令前,应先停止 gaussdb 进程。 +- 当存在用户自定义表空间时,备份的时候要加上 `--external-dirs` 参数,否则,该表空间不会被备份。 +- 当备份的规模比较大时,为了防止备份过程中 timeout 发生,请适当调整 postgresql.conf 文件的参数 `session\_timeout`、`wal\_sender\_timeout`。并且在备份的命令行参数中适当调整参数 `--rw-timeout` 的值。 +- 恢复时,使用 `-T` 选项把备份中的外部目录重定向到新目录时,请同时指定参数 `--external-mapping`。 +- 增量备份恢复后,之前创建的逻辑复制槽不可用,需删除重建。 +- 当使用远程备份时,请确保远程机器和备份机器的时钟同步,以防止使用 `--recovery-target-time` 恢复的场合,启动 gaussdb 时有可能会失败。 +- 当远程备份有效时\(remote-proto=ssh\),请确保 `-h` 和 `--remote-host` 指定的是同一台机器。当远程备份无效时,如果指定了 `-h` 选项,请确保 `-h` 指定的是本机地址或本机主机名。 + +#### 命令说明 + +- 打印 gs\_probackup 版本。 + + ``` + gs_probackup -V|--version + gs_probackup version + ``` + +- 显示 gs\_probackup 命令的摘要信息。如果指定了 gs\_probackup 的子命令,则显示可用于此子命令的参数的详细信息。 + + ``` + gs_probackup -?|--help + gs_probackup help [command] + ``` + +- 初始化备份路径 _backup-path_ 中的备份目录,该目录将存储已备份的内容。如果备份路径 _backup-path_ 已存在,则 _backup-path_ 必须为空目录。 + + ``` + gs_probackup init -B backup-path [--help] + ``` + +- 在备份路径 _backup-path_ 内初始化一个新的备份实例,并生成 pg\_probackup.conf 配置文件,该文件保存了指定数据目录 _pgdata-path_ 的 gs\_probackup 设置。 + + ``` + gs_probackup add-instance -B backup-path -D pgdata-path --instance=instance_name + [-E external-directories-paths] + [remote_options] + [--help] + ``` + +- 在备份路径_backup-path_ 内删除指定实例相关的备份内容。 + + ``` + gs_probackup del-instance -B backup-path --instance=instance_name + [--help] + ``` + +- 将指定的连接、压缩、日志等相关设置添加到 pg\_probackup.conf 配置文件中,或修改已设置的值。不推荐手动编辑 pg\_probackup.conf 配置文件。 + + ``` + gs_probackup set-config -B backup-path --instance=instance_name + [-D pgdata-path] [-E external-directories-paths] [--archive-timeout=timeout] + [--retention-redundancy=retention-redundancy] [--retention-window=retention-window] [--wal-depth=wal-depth] + [--compress-algorithm=compress-algorithm] [--compress-level=compress-level] + [-d dbname] [-h hostname] [-p port] [-U username] + [logging_options] [remote_options] + [--help] + ``` + +- 将备份相关设置添加到 backup.control 配置文件中,或修改已设置的值。 + + ``` + gs_probackup set-backup -B backup-path --instance=instance_name -i backup-id + [--note=text] [pinning_options] + [--help] + ``` + +- 显示位于备份目录中的 pg\_probackup.conf 配置文件的内容。可以通过指定 `--format=json` 选项,以 JSON 格式显示。默认情况下,显示为纯文本格式。 + + ``` + gs_probackup show-config -B backup-path --instance=instance_name + [--format=plain|json] + [--help] + ``` + +- 显示备份目录的内容。如果指定了 instance\_name 和 backup\_id,则显示该备份的详细信息。可以通过指定 `--format=json` 选项,以 json 格式显示。默认情况下,备份目录的内容显示为纯文本格式。 + + ``` + gs_probackup show -B backup-path + [--instance=instance_name [-i backup-id]] [--archive] [--format=plain|json] + [--help] + ``` + +- 创建指定实例的备份。 + + ``` + gs_probackup backup -B backup-path --instance=instance_name -b backup-mode + [-D pgdata-path] [-C] [-S slot-name] [--temp-slot] [--backup-pg-log] [-j threads_num] [--progress] + [--no-validate] [--skip-block-validation] [-E external-directories-paths] [--no-sync] [--note=text] + [--archive-timeout=timeout] [-t rwtimeout] + [logging_options] [retention_options] [compression_options] + [connection_options] [remote_options] [pinning_options] + [--help] + ``` + +- 从备份目录 _backup-path_ 中的备份副本恢复指定实例。如果指定了恢复目标选项,gs\_probackup 将查找最近的备份并将其还原到指定的恢复目标。否则,使用最近一次备份。 + + ``` + gs_probackup restore -B backup-path --instance=instance_name + [-D pgdata-path] [-i backup_id] [-j threads_num] [--progress] [--force] [--no-sync] [--no-validate] [--skip-block-validation] + [--external-mapping=OLDDIR=NEWDIR] [-T OLDDIR=NEWDIR] [--skip-external-dirs] [-I incremental_mode] + [recovery_options] [remote_options] [logging_options] + [--help] + ``` + +- 将指定的增量备份与其父完全备份之间的所有增量备份合并到父完全备份。父完全备份将接收所有合并的数据,而已合并的增量备份将作为冗余被删除。 + + ``` + gs_probackup merge -B backup-path --instance=instance_name -i backup_id + [-j threads_num] [--progress] [logging_options] + [--help] + ``` + +- 删除指定备份,或删除不满足当前保留策略的备份。 + + ``` + gs_probackup delete -B backup-path --instance=instance_name + [-i backup-id | --delete-expired | --merge-expired | --status=backup_status] + [--delete-wal] [-j threads_num] [--progress] + [--retention-redundancy=retention-redundancy] [--retention-window=retention-window] + [--wal-depth=wal-depth] [--dry-run] + [logging_options] + [--help] + ``` + +- 验证恢复数据库所需的所有文件是否存在且未损坏。如果未指定 _instance\_name_,gs\_probackup 将验证备份目录中的所有可用备份。如果指定 _instance\_name_ 而不指定任何附加选项,gs\_probackup 将验证此备份实例的所有可用备份。如果指定了 _instance\_name_ 并且指定 _backup-id _或恢复目标相关选项,gs\_probackup 将检查是否可以使用这些选项恢复数据库。 + + ``` + gs_probackup validate -B backup-path + [--instance=instance_name] [-i backup-id] + [-j threads_num] [--progress] [--skip-block-validation] + [--recovery-target-time=time | --recovery-target-xid=xid | --recovery-target-lsn=lsn | --recovery-target-name=target-name] + [--recovery-target-inclusive=boolean] + [logging_options] + [--help] + ``` + + +#### 参数说明 + +**通用参数** + +- command + + gs\_probackup 除 version 和 help 以外的子命令:init、add-instance、del-instance、set-config、set-backup、show-config、show、backup、restore、merge、delete、validate。 + +- -?, --help + + 显示 gs\_probackup 命令行参数的帮助信息,然后退出。 + + 子命令中只能使用 `--help`,不能使用 `-?`。 + +- -V, --version + + 打印 gs\_probackup 版本,然后退出。 + +- -B _backup-path_, --backup-path=_backup-path_ + + 备份的路径。 + + 系统环境变量:`$BACKUP\_PATH` + +- -D _pgdata-path_, --pgdata=_pgdata-path_ + + 数据目录的路径。 + + 系统环境变量:`$PGDATA` + +- --instance=_instance\_name_ + + 实例名。 + +- -i _backup-id_, --backup-id=_backup-id_ + + 备份的唯一标识。 + +- --format=_format_ + + 指定显示备份信息的格式,支持 plain 和 json 格式。 + + 默认值:plain + +- --status=_backup\_status_ + + 删除指定状态的所有备份,包含以下状态: + + - OK:备份已完成且有效。 + - DONE:备份已完成但未经过验证。 + - RUNNING:备份正在进行中。 + - MERGING:备份正在合并中。 + - DELETING:备份正在删除中。 + - CORRUPT:部分备份文件已损坏。 + - ERROR:由于意外错误,备份失败。 + - ORPHAN:由于其父备份之一已损坏或丢失,备份无效。 + +- -j _threads\_num_, --threads=_threads\_num_ + + 设置备份、还原、合并进程的并行线程数。 + +- --archive + + 显示 WAL 归档信息。 + +- --progress + + 显示进度。 + +- --note=_text_ + + 给备份添加 note 。 + + +**备份相关参数** + +- -b _backup-mode_, --backup-mode=_backup-mode_ + + 指定备份模式,支持 FULL 和 PTRACK 。 + + FULL:创建全量备份,全量备份包含所有数据文件。 + + PTRACK:创建 PTRACK 增量备份。 + +- -C, --smooth-checkpoint + + 将检查点在一段时间内展开。默认情况下,gs\_probackup 会尝试尽快完成检查点。 + +- -S _slot-name_, --slot=_slot-name_ + + 指定 WAL 流处理的复制 slot 。 + +- --temp-slot + + 在备份的实例中为 WAL 流处理创建一个临时物理复制 slot ,它确保在备份过程中,所有所需的 WAL 段仍然是可用的。 + + 默认的 slot 名为 pg\_probackup\_slot,可通过选项 `--slot`/`-S` 更改。 + +- --backup-pg-log + + 将日志目录包含到备份中。此目录通常包含日志消息。默认情况下包含日志目录,但不包含日志文件。如果修改了默认的日志路径,需要备份日志文件时可使用 `-E` 参数进行备份,使用方法见下文。 + +- -E _external-directories-paths_, --external-dirs=_external-directories-paths_ + + 将指定的目录包含到备份中。此选项对于备份位于数据目录外部的脚本、SQL 转储和配置文件很有用。如果要备份多个外部目录,请在 Unix 上用冒号分隔它们的路径。 + + 例如:-E /tmp/dir1:/tmp/dir2 + +- --skip-block-validation + + 关闭块级校验,加快备份速度。 + +- --no-validate + + 在完成备份后跳过自动验证。 + +- --no-sync + + 不将备份文件同步到磁盘。 + +- --archive-timeout=_timeout_ + + 以秒为单位设置流式处理的超时时间。 + + 默认值:300 + +- -t rwtimeout + + 以秒为单位的连接的超时时间。 + + 默认值: 120 + + +**恢复相关参数** + +- -I, --incremental-mode=none|checksum|lsn + + 若 PGDATA 中可用的有效页没有修改,则重新使用它们。 + + 默认值:none + +- --external-mapping=_OLDDIR=NEWDIR_ + + 在恢复时,将包含在备份中的外部目录从 _OLDDIR_ 重新定位到 _NEWDIR_ 目录。 _OLDDIR_ 和 _NEWDIR_ 都必须是绝对路径。如果路径中包含“=”,则使用反斜杠转义。此选项可为多个目录多次指定。 + +- -T _OLDDIR=NEWDIR_, --tablespace-mapping=_OLDDIR=NEWDIR_ + + 在恢复时,将表空间从 _OLDDIR_ 重新定位到 _NEWDIR_ 目录。 _OLDDIR_ 和 _NEWDIR_ 必须都是绝对路径。如果路径中包含“=”,则使用反斜杠转义。多个表空间可以多次指定此选项。此选项必须和 `--external-mapping` 一起使用。 + +- --skip-external-dirs + + 跳过备份中包含的使用 `--external-dirs` 选项指定的外部目录。这些目录的内容将不会被恢复。 + +- --skip-block-validation + + 跳过块级校验,以加快验证速度。在恢复之前的自动验证期间,将仅做文件级别的校验。 + +- --no-validate + + 跳过备份验证。 + +- --force + + 允许忽略备份的无效状态。如果出于某种原因需要从损坏的或无效的备份中恢复数据,可以使用此标志。请谨慎使用。 + + +**恢复目标相关参数\(recovery\_options\)** + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +>当前不支持配置连续的 WAL 归档的 PITR ,因而使用这些参数会有一定限制,具体如下描述。 +>如果需要使用持续归档的 WAL 日志进行 PITR 恢复,请按照下面描述的步骤: +> +>1. 将物理备份的文件替换目标数据库目录。 +>2. 删除数据库目录下pg\_xlog/中的所有文件。 +>3. 将归档的 WAL 日志文件复制到pg\_xlog文件中(此步骤可以省略,通过配置recovery.conf恢复命令文件中的restore\_command项替代)。 +>4. 在数据库目录下创建恢复命令文件recovery.conf,指定数据库恢复的程度。 +>5. 启动数据库。 +>6. 连接数据库,查看是否恢复到希望预期的状态。若已经恢复到预期状态,通过pg\_xlog\_replay\_resume\(\)指令使主节点对外提供服务。 + +- --recovery-target-lsn=_lsn_ + + 指定要恢复到的 lsn ,当前只能指定备份的 stop lsn 。 + +- --recovery-target-name=_target-name_ + + 指定要将数据恢复到的已命名的保存点,保存点可以通过查看备份中 recovery-name 字段得到。 + +- --recovery-target-time=_time_ + + 指定要恢复到的时间,当前只能指定备份中的 recovery-time 。 + +- --recovery-target-xid=_xid_ + + 指定要恢复到的事务 ID ,当前只能指定备份中的 recovery-xid 。 + +- --recovery-target-inclusive=_boolean_ + + 当该参数指定为 true 时,恢复目标将包括指定的内容。 + + 当该参数指定为 false 时,恢复目标将不包括指定的内容。 + + 该参数必须和 `--recovery-target-name`、`--recovery-target-time`、`--recovery-target-lsn` 或 `--recovery-target-xid` 一起使用。 + + +**留存相关参数\(retention\_options\)** + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +>可以和 backup 和 delete 命令一起使用这些参数。 + +- --retention-redundancy=_retention-redundancy_ + + 指定在数据目录中留存的完整备份数。必须为正整数。 0 表示禁用此设置。 + + 默认值:0 + +- --retention-window=_retention-window_ + + 指定留存的天数。必须为正整数。 0 表示禁用此设置。 + + 默认值:0 + +- --wal-depth=_wal-depth_ + + 每个时间轴上必须留存的执行 PITR 能力的最新有效备份数。必须为正整数。 0 表示禁用此设置。 + + 默认值:0 + +- --delete-wal + + 从任何现有的备份中删除不需要的 WAL 文件。 + +- --delete-expired + + 删除不符合 pg\_probackup.conf 配置文件中定义的留存策略的备份。 + +- --merge-expired + + 将满足留存策略要求的最旧的增量备份与其已过期的父备份合并。 + +- --dry-run + + 显示所有可用备份的当前状态,不删除或合并过期备份。 + + +**固定备份相关参数\(pinning\_options\)** + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +>如果要将某些备份从已建立的留存策略中排除,可以和 backup 和set-backup命令一起使用这些参数。 + +- --ttl=_interval_ + + 指定从恢复时间开始计算,备份要固定的时间量。必须为正整数。 0 表示取消备份固定。 + + 支持的单位:`ms`, `s` , `min` , `h` , `d`(默认为 `s`)。 + + 例如:`--ttl=30d`。 + +- --expire-time=_time_ + + 指定备份固定失效的时间戳。必须是 ISO-8601 标准的时间戳。 + + 例如:--expire-time='2020-01-01 00:00:00+03' + + +**日志相关参数\(logging\_options\)** + +日志级别:verbose、log、info、warning、error 和 off 。 + +- --log-level-console=_log-level-console_ + + 设置要发送到控制台的日志级别。每个级别都包含其后的所有级别。级别越高,发送的消息越少。指定 off 级别表示禁用控制台日志记录。 + + 默认值:info + +- --log-level-file=_log-level-file_ + + 设置要发送到日志文件的日志级别。每个级别都包含其后的所有级别。级别越高,发送的消息越少。指定 off 级别表示禁用日志文件记录。 + + 默认值:off + +- --log-filename=_log-filename_ + + 指定要创建的日志文件的文件名。文件名可以使用 strftime 模式,因此可以使用 `%-escapes` 指定随时间变化的文件名。 + + 例如,如果指定了“pg\_probackup-%u.log”模式,则 pg\_probackup 为每周的每一天生成单独的日志文件,其中 %u 替换为相应的十进制数字,即 pg\_probackup-1.log 表示星期一;pg\_probackup-2.log 表示星期二,以此类推。 + + 如果指定了 `--log-level-file` 参数启用日志文件记录,则该参数有效。 + + 默认值:“pg\_probackup.log” + +- --error-log-filename=_error-log-filename_ + + 指定仅用于 error 日志的日志文件名。指定方式与 `--log-filename` 参数相同。 + + 此参数用于故障排除和监视。 + +- --log-directory=_log-directory_ + + 指定创建日志文件的目录。必须是绝对路径。此目录会在写入第一条日志时创建。 + + 默认值:$BACKUP\_PATH/log + +- --log-rotation-size=_log-rotation-size_ + + 指定单个日志文件的最大大小。如果达到此值,则启动 gs\_probackup 命令后,日志文件将循环,但 help 和 version 命令除外。 0 表示禁用基于文件大小的循环。 + + 支持的单位:KB、MB、GB、TB(默认为KB)。 + + 默认值:0 + +- --log-rotation-age=_log-rotation-age_ + + 单个日志文件的最大生命周期。如果达到此值,则启动 gs\_probackup 命令后,日志文件将循环,但 help 和 version 命令除外。$BACKUP\_PATH/log/log\_rotation 目录下保存最后一次创建日志文件的时间。 0 表示禁用基于时间的循环。 + + 支持的单位:ms, s , min , h , d(默认为min)。 + + 默认值:0 + + +**连接相关参数\(connection\_options\)** + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +>可以和 backup 命令一起使用这些参数。 + +- -d _dbname_, --pgdatabase=_dbname_ + + 指定要连接的数据库名称。该连接仅用于管理备份进程,因此您可以连接到任何现有的数据库。如果命令行、PGDATABASE 环境变量或 pg\_probackup.conf 配置文件中没有指定此参数,则 gs\_probackup 会尝试从 PGUSER 环境变量中获取该值。如果未设置 PGUSER 变量,则从当前用户名获取。 + + 系统环境变量:$PGDATABASE + +- -h _hostname_, --pghost=_hostname_ + + 指定运行服务器的系统的主机名。如果该值以斜杠开头,则被用作到 Unix 域套接字的路径。 + + 系统环境变量:$PGHOST + + 默认值:local socket + +- -p _port_, --pgport=_p__ort_ + + 指定服务器正在侦听连接的 TCP 端口或本地 Unix 域套接字文件扩展名。 + + 系统环境变量:$PGPORT + + 默认值:5432 + +- -U _username_, --pguser=_username_ + + 指定所连接主机的用户名。 + + 系统环境变量:$PGUSER + +- -w, --no-password + + 不出现输入密码提示。如果主机要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。 + +- -W _password_, --password=_password_ + + 指定用户连接的密码。如果主机的认证策略是 trust ,则不会对系统管理员进行密码验证,即无需输入 `-W` 选项;如果没有 `-W` 选项,并且不是系统管理员,则会提示用户输入密码。 + + +**压缩相关参数\(compression\_options\)** + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +>可以和 backup 命令一起使用这些参数。 + +- --compress-algorithm=_compress-algorithm_ + + 指定用于压缩数据文件的算法。 + + 取值包括 `zlib`、`pglz` 和 `none` 。如果设置为 zlib 或 pglz ,此选项将启用压缩。默认情况下,压缩功能处于关闭状态。 + + 默认值:`none` + +- --compress-level=_compress-level_ + + 指定压缩级别。取值范围:0\~9 + + - 0 表示无压缩。 + - 1 表示压缩比最小,处理速度最快。 + - 9 表示压缩比最大,处理速度最慢。 + - 可与 `--compress-algorithm` 选项一起使用。 + + 默认值:1 + +- --compress + + 以 `--compress-algorithm=zlib` 和 `--compress-level=1` 进行压缩。 + + +**远程模式相关参数\(remote\_options\)** + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +>通过 SSH 远程运行gs\_probackup操作的相关参数。可以和add-instance、set-config、backup、restore命令一起使用这些参数。 + +- --remote-proto=_protocol_ + + 指定用于远程操作的协议。目前只支持 SSH 协议。取值包括: + + ssh:通过 SSH 启用远程备份模式。这是默认值。 + + none:显式禁用远程模式。 + + 如果指定了 `--remote-host` 参数,可以省略此参数。 + +- --remote-host=_destination_ + + 指定要连接的远程主机的 IP 地址或主机名。 + +- --remote-port=_port_ + + 指定要连接的远程主机的端口号。 + + 默认值:22 + +- --remote-user=_username_ + + 指定 SSH 连接的远程主机用户。如果省略此参数,则使用当前发起 SSH 连接的用户。 + + 默认值:当前用户 + +- --remote-path=_path_ + + 指定 gs\_probackup 在远程系统的安装目录。 + + 默认值:当前路径 + +- --remote-lib=_libpath_ + + 指定 gs\_probackup 在远程系统安装的 lib 库目录。 + +- --ssh-options=_ssh\_options_ + + 指定 SSH 命令行参数的字符串。 + + 例如:--ssh-options='-c cipher\_spec -F configfile' + + >![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** + > + >- 如果因为网络临时故障等原因导致 server 端无应答,gs\_probackup 将在等待 archive-timeout(默认 300 秒)后退出。 + >- 如果备机 lsn 与主机有差别时,数据库会不停地刷以下 log 信息,此时应重新 build 备机。 + > + >``` + >LOG: walsender thread shut down + >LOG: walsender thread started + >LOG: received wal replication command: IDENTIFY_VERSION + >LOG: received wal replication command: IDENTIFY_MODE + >LOG: received wal replication command: IDENTIFY_SYSTEM + >LOG: received wal replication command: IDENTIFY_CONSISTENCE 0/D0002D8 + >LOG: remote request lsn/crc: [xxxxx] local max lsn/crc: [xxxxx] + >``` + + +#### 备份流程 + +1. 初始化备份目录。在指定的目录下创建 backups/ 和 wal/ 子目录,分别用于存放备份文件和 WAL 文件。 + + ``` + gs_probackup init -B backup_dir + ``` + +2. 添加一个新的备份实例。gs\_probackup 可以在同一个备份目录下存放多个数据库实例的备份。 + + ``` + gs_probackup add-instance -B backup_dir -D data_dir --instance instance_name + ``` + +3. 创建指定实例的备份。在进行增量备份之前,必须至少创建一次全量备份。 + + ``` + gs_probackup backup -B backup_dir --instance instance_name -b backup_mode + ``` + +4. 从指定实例的备份中恢复数据。 + + ``` + gs_probackup restore -B backup_dir --instance instance_name -D pgdata-path -i backup_id + ``` + + +#### 故障处理 + + + + + + + + + + + +

问题描述

+

原因和解决方案

+

ERROR: query failed: ERROR: canceling statement due to conflict with recovery

+

(错误:查询失败:由于与恢复操作冲突,正在取消语句命令)

+

原因:在备机上执行的操作正在访问存储行,主机上更改或者删除了对应的行,并将 xlog 在备机上重放,迫使备机上操作取消。

+

解决方案:

+

1. 适当增加如下配置参数的值

+

max_standby_archive_delay

+

>max_standby_streaming_delay

+

2. 增加如下配置

+

hot_standby_feedback = on

+
+ + + + +## 逻辑备份恢复 + +### gs\_dump + +#### 背景信息 + +gs\_dump 是 openGauss 用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式、表、视图等),回收站对象除外。支持导出的数据库可以是默认数据库 postgres ,也可以是自定义数据库。 + +gs\_dump 工具由操作系统用户 omm 执行。 + +gs\_dump 工具在进行数据导出时,其他用户可以访问 openGauss 数据库(读或写)。 + +gs\_dump 工具支持导出完整一致的数据。例如, T1 时刻启动 gs\_dump 导出 A 数据库,那么导出数据结果将会是 T1 时刻 A 数据库的数据状态, T1 时刻之后对 A 数据库的修改不会被导出。 + +gs\_dump 时生成列不会被转储。 + +gs\_dump 支持导出兼容 v1 版本数据库的文本格式文件。 + +gs\_dump 支持将数据库信息导出至纯文本格式的 SQL 脚本文件或其他归档文件中。 + +- 纯文本格式的 SQL 脚本文件:包含将数据库恢复为其保存时的状态所需的 SQL 语句。通过 [gsql](zh-cn_topic_0289899215.md) 运行该 SQL 脚本文件,可以恢复数据库。即使在其他主机和其他数据库产品上,只要对 SQL 脚本文件稍作修改,也可以用来重建数据库。 +- 归档格式文件:包含将数据库恢复为其保存时的状态所需的数据,可以是 tar 格式、目录归档格式或自定义归档格式,详见[表 1](#zh-cn_topic_0289899246_zh-cn_topic_0287275988_zh-cn_topic_0237152335_zh-cn_topic_0058967678_t17db29a12e7342cfbf02b2f6e50ff1a5)。该导出结果必须与 gs\_restore 配合使用来恢复数据库,gs\_restore 工具在导入时,系统允许用户选择需要导入的内容,甚至可以在导入之前对等待导入的内容进行排序。 + +主要功能 + +gs\_dump 可以创建四种不同的导出文件格式,通过 `-F` 或者 `--format=` 选项指定,具体如[表 1](#zh-cn_topic_0289899246_zh-cn_topic_0287275988_zh-cn_topic_0237152335_zh-cn_topic_0058967678_t17db29a12e7342cfbf02b2f6e50ff1a5) 所示。 + +**表 1** 导出文件格式 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

格式名称

+

-F 的参数值

+

说明

+

建议

+

对应导入工具

+

纯文本格式

+

p

+

纯文本脚本文件包含 SQL 语句和命令。命令可以由 gsql 命令行终端程序执行,用于重新创建数据库对象并加载表数据。

+

小型数据库,一般推荐纯文本格式。

+

使用gsql 工具恢复数据库对象前,可根据需要使用文本编辑器编辑纯文本导出文件。

+

自定义归档格式

+

c

+

一种二进制文件。支持从导出文件中恢复所有或所选数据库对象。

+

中型或大型数据库,推荐自定义归档格式。

+

使用gs_restore可以选择要从自定义归档导出文件中导入相应的数据库对象。

+

目录归档格式

+

d

+

该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和 blob 对象对应的数据文件。

+

-

+

tar 归档格式

+

t

+

tar 归档文件支持从导出文件中恢复所有或所选数据库对象。 tar 归档格式不支持压缩且对于单独表大小应小于 8GB 。

+

-

+
+ + + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +>可以使用gs\_dump程序将文件压缩为目录归档或自定义归档导出文件,减少导出文件的大小。生成目录归档或自定义归档导出文件时,默认进行中等级别的压缩。gs\_dump程序无法压缩已归档导出文件。 + +#### 注意事项 + +- 禁止修改导出的文件和内容,否则可能无法恢复成功。 +- 为了保证数据一致性和完整性,gs\_dump 会对需要转储的表设置共享锁。如果表在别的事务中设置了共享锁,gs\_dump 会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定 `--lock-wait-timeout` 选项,自定义等待锁超时时间。 +- 不支持加密导出存储过程和函数。 + +#### 语法 + +``` +gs_dump [OPTION]... [DBNAME] +``` + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +>“dbname”前面不需要加短或长选项。“dbname”指定要连接的数据库。 +>例如: +>不需要 `-d`,直接指定“dbname”。 +> +>``` +>gs_dump -p port_number postgres -f dump1.sql +>``` +> +>或者 +> +>``` +>export PGDATABASE=postgres +>``` +> +>``` +>gs_dump -p port_number -f dump1.sql +>``` +> +>环境变量: PGDATABASE + +参数说明 + +通用参数: + +- -f, --file=FILENAME + + 将输出发送至指定文件或目录。如果省略该参数,则使用标准输出。如果输出格式为\(`-F c`/`-F d`/`-F t`\)时,必须指定 `-f` 参数。如果 `-f` 的参数值含有目录,要求当前用户对该目录具有读写权限,并且不能指定已有目录。 + +- -F, --format=`c`|`d`|`t`|`p` + + 选择输出格式。格式如下: + + - p|plain:输出一个文本 SQL 脚本文件(默认)。 + + - c|custom:输出一个自定义格式的归档,并且以目录形式输出,作为 gs\_restore 输入信息。该格式是最灵活的输出格式,因为能手动选择,而且能在恢复过程中将归档项重新排序。该格式默认状态下会被压缩。 + + - d|directory:该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和 blob 对象对应的数据文件。 + + - t|tar:输出一个 tar 格式的归档形式,作为 gs\_restore 输入信息。 tar 格式与目录格式兼容;tar 格式归档形式在提取过程中会生成一个有效的目录格式归档形式。但是, tar 格式不支持压缩且对于单独表有 8GB 的大小限制。此外,表数据项的相应排序在恢复过程中不能更改。 + + 输出一个 tar 格式的归档形式,也可以作为 gsql 输入信息。 + + +- -v, --verbose + + 指定 verbose 模式。该选项将导致 gs\_dump 向转储文件输出详细的对象注解和启动/停止次数,向标准错误流输出处理信息。 + +- -V, --version + + 打印 gs\_dump 版本,然后退出。 + +- -Z, --compress=0-9 + + 指定使用的压缩比级别。 + + 取值范围:0\~9 + + - 0 表示无压缩。 + - 1 表示压缩比最小,处理速度最快。 + - 9 表示压缩比最大,处理速度最慢。 + + 针对自定义归档格式,该选项指定单个表数据片段的压缩,默认方式是以中等级别进行压缩。 tar 归档格式和纯文本格式目前不支持压缩。 + +- --lock-wait-timeout=TIMEOUT + + 请勿在转储刚开始时一直等待以获取共享表锁。如果无法在指定时间内锁定某个表,就选择失败。可以以任何符合 SET statement\_timeout 的格式指定超时时间。 + +- -?, --help + + 显示 gs\_dump命令行参数帮助,然后退出。 + + +转储参数: + +- -a, --data-only + + 只输出数据,不输出模式\(数据定义\)。转储表数据、大对象和序列值。 + +- -b, --blobs + + 该参数为扩展预留接口,不建议使用。 + +- -c, --clean + + 在将创建数据库对象的指令输出到备份文件之前,先将清理(删除)数据库对象的指令输出到备份文件中。(如果目标数据库中没有任何对象,gs\_restore 工具可能会输出一些提示性的错误信息) + + 该选项只对文本格式有意义。针对归档格式,可以调用 gs\_restore 时指定选项。 + +- -C, --create + + 备份文件以创建数据库和连接到创建的数据库的命令开始。(如果命令脚本是这种方式执行,可以先指定任意数据库用于执行创建数据库的命令,数据不会恢复到指定的数据库中,而是恢复到创建的数据库中。) + + 该选项只对文本格式有意义。针对归档格式,可以在调用 gs\_restore 时指定选项。 + +- -E, --encoding=ENCODING + + 以指定的字符集编码创建转储。默认情况下,以数据库编码创建转储。(得到相同结果的另一个办法是将环境变量“PGCLIENTENCODING”设置为所需的转储编码。) + +- -n, --schema=SCHEMA + + 只转储与模式名称匹配的模式,此选项包括模式本身和所有它包含的对象。如果该选项没有指定,所有在目标数据库中的非系统模式将会被转储。写入多个 `-n` 选项来选择多个模式。此外,根据 gsql 的 `\d` 命令所使用的相同规则,模式参数可被理解成一个 pattern ,所以多个模式也可以通过在该 pattern 中写入通配符来选择。使用通配符时,注意给 pattern 打引号,防止 shell 扩展通配符。 + + >![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** + > + >- 当-n已指定时,gs\_dump 不会转储已选模式所附着的任何其他数据库对象。因此,无法保证某个指定模式的转储结果能够自行成功地储存到一个空数据库中。 + >- 当 `-n` 指定时,非模式对象不会被转储。 + + 转储支持多个模式的转储。多次输入 `-n schemaname` 转储多个模式。 + + 例如: + + ``` + gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -n sch1 -n sch2 + ``` + + 在上面这个例子中, sch1 和 sch2 会被转储。 + +- -N, --exclude-schema=SCHEMA + + 不转储任何与模式 pattern 匹配的模式。 pattern 将参照针对 `-n` 的相同规则来理解。可以通过输入多次 `-N`,不转储与任何 pattern 匹配的模式。 + + 当同时输入 `-n` 和 `-N` 时,会转储与至少一个 `-n` 选项匹配、与 `-N` 选项不匹配的模式。如果有 `-N` 没有 `-n`,则不转储常规转储中与 `-N` 匹配的模式。 + + 转储过程支持排除多个模式。 + + 在转储过程中,输入 `-N exclude schema name` 排除多个模式。 + + 例如: + + ``` + gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -N sch1 -N sch2 + ``` + + 在上面这个例子中, sch1 和 sch2 在转储过程中会被排除。 + +- -o, --oids + + 转储每个表的对象标识符(OIDs),作为表的一部分数据。该选项用于应用以某种方式参照了 OID 列的情况。如果不是以上这种情况,请勿使用该选项。 + +- -O, --no-owner + + 不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs\_dump 会发出 ALTER OWNER 或 SET SESSION AUTHORIZATION 语句设置所创建的数据库对象的归属。如果脚本正在运行,该语句不会执行成功,除非是由系统管理员触发(或是拥有脚本中所有对象的同一个用户)。通过指定 `-O`,编写一个任何用户都能存储的脚本,且该脚本会授予该用户拥有所有对象的权限。 + + 该选项只对文本格式有意义。针对归档格式,可以在调用 gs\_restore 时指定选项。 + +- -s, --schema-only + + 只转储对象定义(模式),而非数据。 + +- -S, --sysadmin=NAME + + 该参数为扩展预留接口,不建议使用。 + +- -t, --table=TABLE + + 指定转储的表(或视图、或序列、或外表)对象列表,可以使用多个 `-t` 选项来选择多个表,也可以使用通配符指定多个表对象。 + + 当使用通配符指定多个表对象时,注意给 pattern 打引号,防止 shell 扩展通配符。 + + 当使用 `-t` 时,`-n` 和 `-N` 没有任何效应,这是因为由 `-t` 选择的表的转储不受那些选项的影响。 + + >![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** + > + >- -t参数选项个数必须小于等于 100 。 + >- 如果-t参数选项个数大于 100 ,建议使用参数 `--include-table-file` 来替换。 + >- 当-t已指定时,gs\_dump 不会转储已选表所附着的任何其他数据库对象。因此,无法保证某个指定表的转储结果能够自行成功地储存到一个空数据库中。 + >- -t tablename只转储在默认搜索路径中可见的表。-t '\*.tablename'转储数据库下所有模式下的 tablename 表。-t schema.table转储特定模式中的表。 + >- -t tablename不会导出表上的触发器信息。 + + 例如: + + ``` + gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -t schema1.table1 -t schema2.table2 + ``` + + 在上面这个例子中,schema1.table1 和 schema2.table2 会被转储。 + +- --include-table-file=FILENAME + + 指定需要 dump 的表文件。 + +- -T, --exclude-table=TABLE + + 不转储的表(或视图、或序列、或外表)对象列表,可以使用多个 `-T` 选项来选择多个表,也可以使用通配符指定多个表对象。 + + 当同时输入 `-t` 和 `-T` 时,会转储在 `-t` 列表中,而不在 `-T` 列表中的表对象。 + + 例如: + + ``` + gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -T table1 -T table2 + ``` + + 在上面这个例子中, table1 和 table2 在转储过程中会被排除。 + +- --exclude-table-file=FILENAME + + 指定不需要 dump 的表文件。 + + >![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** + >同--include-table-file,其内容格式如下: + >schema1.table1 + >schema2.table2 + >...... + +- -x, --no-privileges|--no-acl + + 防止转储访问权限(授权/撤销命令)。 + +- -q, --target + + 指定导出兼容其他版本数据库的文本文件,目前支持 v1 和 v5 参数。 v1 参数用于导出 v5 数据库的数据为兼容 v1 的文本文件。 v5 参数用于导出 v5 数据库的数据为 v5 格式的文本文件,减少了导入 v5 时的可能的报错情况。 + + 在使用 v1 参数时,建议和 `--exclude-guc="enable_cluster_resize"` ,`--exclude-function`,`--exclude-with` 等选项共用,否则导入到 v1 时可能报错。 + +- --exclude-guc + + 导出的文本文件中,不包括相关 guc 参数的 set 命令,目前只支持 `enable_cluster_resize`。 + +- --exclude-function + + 不导出函数和存储过程。 + +- --exclude-with + + 导出的表定义,末尾不添加 WITH\(orientation=row,compression=on)这样的描述。 + +- --binary-upgrade + + 该参数为扩展预留接口,不建议使用。 + +- --binary-upgrade-usermap="USER1=USER2" + + 该参数为扩展预留接口,不建议使用。 + +- --column-inserts|--attribute-inserts + + 以 INSERT 命令带列名(INSERT INTO表(列、…)值…)方式导出数据。这会导致恢复缓慢。但是由于该选项会针对每行生成一个独立分开的命令,所以在重新加载某行时出现的错误只会导致那行丢失,而非整个表内容。 + +- --disable-dollar-quoting + + 该选项将禁止在函数体前使用美元符号$,并强制使用 SQL 标准字符串语法对其进行引用。 + +- --disable-triggers + + 该参数为扩展预留接口,不建议使用。 + +- --exclude-table-data=TABLE + + 指定不转储任何匹配表 pattern 的表这方面的数据。依照针对 `-t` 的相同规则理解该 pattern 。 + + 可多次输入 `--exclude-table-data` 来排除匹配任何 pattern 的表。当用户需要特定表的定义但不需要其中的数据时,这个选项很有帮助。 + + 排除数据库中所有表的数据,参见[--schema-only](#zh-cn_topic_0289899246_zh-cn_topic_0287275988_zh-cn_topic_0237152335_zh-cn_topic_0059777770_l35ed3d5a093e42ab8fc945dd3ca80ecd)。 + +- --inserts + + 发出 INSERT 命令(而非 COPY 命令)转储数据。这会导致恢复缓慢。 + + 但是由于该选项会针对每行生成一个独立分开的命令,所以在重新加载某行时出现的错误只会导致那行丢失,而非整个表内容。注意:如果重排列顺序,可能会导致整个恢复失败。列顺序改变时,`--column-inserts` 选项不受影响,虽然会更慢。 + +- --no-security-labels + + 该参数为扩展预留接口,不建议使用。 + +- --no-tablespaces + + 不输出选择表空间的命令。使用该选项,无论默认表空间是哪个,在恢复过程中所有对象都会被创建。 + + 该选项只对文本格式有意义。针对归档格式,可以在调用 gs\_restore 时指定选项。 + +- --no-unlogged-table-data + + 该参数为扩展预留接口,不建议使用。 + +- --non-lock-table + + 该参数为扩展预留接口,不建议使用。 + +- --include-alter-table + + 转储表删除列。该选项会记录列的删除。 + +- --quote-all-identifiers + + 强制对所有标识符加引号。为了向后续版本迁移,且其中可能涉及引入额外关键词,在转储相应数据库时该选项会有帮助。 + +- --section=SECTION + + 指定已转储的名称区段(pre-data、data 和 post-data)。 + +- --serializable-deferrable + + 转储过程中使用可串行化事务,以确保所使用的快照与之后的数据库状态一致;要实现该操作需要在无异常状况的事务流中等待某个点,因为这样才能保证转储成功,避免引起其他事务出现 serialization\_failure 要重新再做。 + + 但是该选项对于灾难恢复没有益处。对于在原始数据库进行升级的时候,加载一个数据库的拷贝作为报告或其他只读加载共享的转储是有帮助的。没有这个选项,转储会反映一个与任何事务最终提交的序列化执行不一致的状态。 + + 如果当gs\_dump启动时,读写事务仍处于非活动状态,即便使用该选项也不会对其产生影响。如果读写事务处于活动状态,转储的开始时间可能会延迟一段不确定的时间。 + +- --use-set-session-authorization + + 输出符合 SQL 标准的 SET SESSION AUTHORIZATION 命令而不是 ALTER OWNER 命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用 SET SESSION AUTHORIZATION 的转储需要数据库系统管理员的权限才能转储成功,而 ALTER OWNER 需要的权限则低得多。 + +- --with-encryption=AES128 + + 指定转储数据需用 AES128 进行加密。 + +- --with-key=KEY + +AES128 密钥规则如下: + + - 密钥长度为 8\~16 个字符。 + - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为 \~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/? )四类字符中的三类字符。 + + >![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** + > + >- 使用 gs\_dump 工具进行加密导出时,仅支持 plain 格式导出。通过 `-F plain` 导出的数据,需要通过 gsql 工具进行导入,且如果以加密方式导入,在通过 gsql 导入时,需要指定 `--with-key` 参数。 + >- 不支持加密导出存储过程和函数。 + +- --with-salt=RANDVALUES + + gs\_dumpall 使用此参数传递随机值。 + +- --include-extensions + + 在转储中包含扩展。 + +- --include-depend-objs + + 备份结果包含依赖于指定对象的对象信息。该参数需要同 `-t` / `--include-table-file` 参数关联使用才会生效。 + +- --exclude-self + + 备份结果不包含指定对象自身的信息。该参数需要同 `-t` / `--include-table-file` 参数关联使用才会生效。 + +- --dont-overwrite-file + + 文本、tar以及自定义格式情况下会重写现有文件。这对目录格式不适用。 + + 例如: + + 设想这样一种情景,即当前目录下 backup.sql 已存在。如果在输入命令中输入 `-f backup.sql` 选项时,当前目录恰好也生成backup.sql,文件就会被重写。 + + 如果备份文件已存在,且输入 `--dont-overwrite-file` 选项,则会报告附带‘转储文件已经存在’信息的错误。 + + ``` + gs_dump -p port_number postgres -f backup.sql -F plain --dont-overwrite-file + ``` + + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +> +>- `-s`/`--schema-only` 和 `-a` / `--data-only` 不能同时使用。 +>- `-c`/`--clean` 和 `-a`/`--data-only` 不能同时使用。 +>- `--inserts`/ `--column-inserts` 和 `-o`/`--oids` 不能同时使用,因为 INSERT 命令不能设置 OIDS 。 +>- `--role` 和 `--rolepassword` 必须一起使用。 +>- `--binary-upgrade-usermap` 和 `--binary-upgrade` 必须一起使用。 +>- `--include-depend-objs`/`--exclude-self` 需要同 `-t`/`--include-table-file` 参数关联使用才会生效 +>- `--exclude-self` 必须同 `--include-depend-objs` 一起使用。 + +连接参数: + +- -h, --host=HOSTNAME + + 指定主机名称。如果数值以斜杠开头,则被用作到 Unix 域套接字的路径。缺省从 PGHOST 环境变量中获取(如果已设置),否则,尝试一个 Unix 域套接字连接。 + + 该参数只针对 openGauss 外,对 openGauss 内本机只能用 `127.0.0.1`。 + + 例如:主机名 + + 环境变量:PGHOST + +- -p, --port=PORT + + 指定主机端口。在开启线程池情况下,建议使用 pooler port ,即主机端口 + 1。 + + 环境变量:PGPORT + +- -U, --username=NAME + + 指定所连接主机的用户名。 + + 不指定连接主机的用户名时,用户默认系统管理员。 + + 环境变量:PGUSER + +- -w, --no-password + + 不出现输入密码提示。如果主机要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。 + +- -W, --password=PASSWORD + + 指定用户连接的密码。如果主机的认证策略是 trust ,则不会对系统管理员进行密码验证,即无需输入 `-W` 选项;如果没有 `-W` 选项,并且不是系统管理员,“Dump Restore 工具”会提示用户输入密码。 + +- --role=ROLENAME + + 指定创建转储使用的角色名。选择该选项,会使 gs\_dump 连接数据库后,发起一个 SET ROLE 角色名命令。当所授权用户(由 `-U` 指定)没有 gs\_dump 要求的权限时,该选项会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以超系统管理员身份登录,而使用该选项能够在不违反该规定的情况下完成转储。 + +- --rolepassword=ROLEPASSWORD + + 指定角色名的密码。 + + +#### 说明 + +如果 openGauss 有任何本地数据要添加到 template1 数据库,请谨慎将 gs\_dump 的输出恢复到一个真正的空数据库中,否则可能会因为被添加对象的定义被复制,出现错误。要创建一个无本地添加的空数据库,需从 template0 而非 template1 复制,例如: + +``` +CREATE DATABASE foo WITH TEMPLATE template0; +``` + +tar 归档形式的文件大小不得超过 8GB(tar 文件格式的固有限制)。 tar 文档整体大小和任何其他输出格式没有限制,操作系统可能对此有要求。 + +由 gs\_dump 生成的转储文件不包含优化程序用来做执行计划决定的统计数据。因此,最好从某转储文件恢复之后运行 ANALYZE 以确保最佳效果。转储文件不包含任何 ALTER DATABASE…SET 命令,这些设置由 gs\_dumpall 转储,还有数据库用户和其他完成安装设置。 + +#### 示例 + +使用 gs\_dump 转储数据库为 SQL 文本文件或其它格式的操作,如下所示。 + +示例中“Bigdata@123”表示数据库用户密码;“backup/MPPDB\_backup.sql”表示导出的文件,其中 backup 表示相对于当前目录的相对目录;“37300”表示数据库服务器端口;“postgres”表示要访问的数据库名。 + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +>导出操作时,请确保该目录存在并且当前的操作系统用户对其具有读写权限。 + +示例1:执行 gs\_dump,导出 postgres 数据库全量信息,导出的 MPPDB\_backup.sql 文件格式为纯文本格式。 + +``` +gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup.sql -p 37300 postgres -F p +gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: The total objects number is 356. +gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: [100.00%] 356 objects have been dumped. +gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: dump database postgres successfully +gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: total time: 1274 ms +``` + +使用 gsql 程序从纯文本导出文件中导入数据。 + +示例2:执行gs\_dump,导出 postgres 数据库全量信息,导出的 MPPDB\_backup.tar 文件格式为 tar 格式。 + +``` +gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup.tar -p 37300 postgres -F t +gs_dump[port='37300'][postgres][2018-06-27 10:02:24]: The total objects number is 1369. +gs_dump[port='37300'][postgres][2018-06-27 10:02:53]: [100.00%] 1369 objects have been dumped. +gs_dump[port='37300'][postgres][2018-06-27 10:02:53]: dump database postgres successfully +gs_dump[port='37300'][postgres][2018-06-27 10:02:53]: total time: 50086 ms +``` + +示例3:执行 gs\_dump,导出 postgres 数据库全量信息,导出的 MPPDB\_backup.dmp 文件格式为自定义归档格式。 + +``` +gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup.dmp -p 37300 postgres -F c +gs_dump[port='37300'][postgres][2018-06-27 10:05:40]: The total objects number is 1369. +gs_dump[port='37300'][postgres][2018-06-27 10:06:03]: [100.00%] 1369 objects have been dumped. +gs_dump[port='37300'][postgres][2018-06-27 10:06:03]: dump database postgres successfully +gs_dump[port='37300'][postgres][2018-06-27 10:06:03]: total time: 36620 ms +``` + +示例4:执行 gs\_dump,导出 postgres 数据库全量信息,导出的 MPPDB\_backup 文件格式为目录格式。 + +``` +gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup -p 37300 postgres -F d +gs_dump[port='37300'][postgres][2018-06-27 10:16:04]: The total objects number is 1369. +gs_dump[port='37300'][postgres][2018-06-27 10:16:23]: [100.00%] 1369 objects have been dumped. +gs_dump[port='37300'][postgres][2018-06-27 10:16:23]: dump database postgres successfully +gs_dump[port='37300'][postgres][2018-06-27 10:16:23]: total time: 33977 ms +``` + +示例5:执行 gs\_dump,导出 postgres 数据库信息,但不导出 /home/MPPDB\_temp.sql 中指定的表信息。导出的 MPPDB\_backup.sql 文件格式为纯文本格式。 + +``` +gs_dump -U omm -W Bigdata@123 -p 37300 postgres --exclude-table-file=/home/MPPDB_temp.sql -f backup/MPPDB_backup.sql +gs_dump[port='37300'][postgres][2018-06-27 10:37:01]: The total objects number is 1367. +gs_dump[port='37300'][postgres][2018-06-27 10:37:22]: [100.00%] 1367 objects have been dumped. +gs_dump[port='37300'][postgres][2018-06-27 10:37:22]: dump database postgres successfully +gs_dump[port='37300'][postgres][2018-06-27 10:37:22]: total time: 37017 ms +``` + +示例6:执行 gs\_dump,仅导出依赖于指定表 testtable 的视图信息。然后创建新的 testtable 表,再恢复依赖其上的视图。 + +- 备份仅依赖于 testtable 的视图。 + + ``` + gs_dump -s -p 37300 postgres -t PUBLIC.testtable --include-depend-objs --exclude-self -f backup/MPPDB_backup.sql -F p + gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: The total objects number is 331. + gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: [100.00%] 331 objects have been dumped. + gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: dump database postgres successfully + gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: total time: 327 ms + ``` + +- 修改 testtable 名称。 + + ``` + gsql -p 37300 postgres -r -c "ALTER TABLE PUBLIC.testtable RENAME TO testtable_bak;" + ``` + +- 创建新的 testtable 表。 + + ``` + CREATE TABLE PUBLIC.testtable(a int, b int , c int); + ``` + +- 还原依赖于 testtable 的视图。 + + ``` + gsql -p 37300 postgres -r -f backup/MPPDB_backup.sql + ``` + + + +### gs\_dumpall + +#### 背景信息 + +gs\_dumpall 是 openGauss 用于导出所有数据库相关信息工具,它可以导出 openGauss 数据库的所有数据,包括默认数据库 postgres 的数据、自定义数据库的数据以及 openGauss 所有数据库公共的全局对象。 + +gs\_dumpall 工具由操作系统用户 omm 执行。 + +gs\_dumpall 工具在进行数据导出时,其他用户可以访问 openGauss 数据库(读或写)。 + +gs\_dumpall 工具支持导出完整一致的数据。例如, T1 时刻启动 gs\_dumpall 导出 openGauss 数据库,那么导出数据结果将会是 T1 时刻该 openGauss 数据库的数据状态, T1 时刻之后对 openGauss 的修改不会被导出。 + +gs\_dumpall 时生成列不会被转储。 + +gs\_dumpall 在导出 openGauss 所有数据库时分为两部分: + +- gs\_dumpall 自身对所有数据库公共的全局对象进行导出,包括有关数据库用户和组、表空间以及属性(例如,适用于数据库整体的访问权限)信息。 +- gs\_dumpall 通过调用 gs\_dump 来完成 openGauss 中各数据库的 SQL 脚本文件导出,该脚本文件包含将数据库恢复为其保存时的状态所需要的全部 SQL 语句。 + +以上两部分导出的结果为纯文本格式的 SQL 脚本文件,使用 gsql 运行该脚本文件可以恢复 openGauss 数据库。 + +#### 注意事项 + +- 禁止修改导出的文件和内容,否则可能无法恢复成功。 +- 为了保证数据一致性和完整性,gs\_dumpall 会对需要转储的表设置共享锁。如果某张表在别的事务中设置了共享锁,gs\_dumpall 会等待此表的锁释放后锁定此表。如果无法在指定时间内锁定某张表,转储会失败。用户可以通过指定 `--lock-wait-timeout` 选项,自定义等待锁超时时间。 +- 由于 gs\_dumpall 读取所有数据库中的表,因此必须以 openGauss 管理员身份进行连接,才能导出完整文件。在使用 gsql 执行脚本文件导入时,同样需要管理员权限,以便添加用户和组以及创建数据库。 + +#### 语法 + +``` +gs_dumpall [OPTION]... +``` + +#### 参数说明 + +通用参数: + +- -f, --filename=FILENAME + + 将输出发送至指定文件。如果这里省略,则使用标准输出。 + +- -v, --verbose + + 指定 verbose 模式。该选项将导致 gs\_dumpall 向转储文件输出详细的对象注解和启动/停止次数,向标准错误流输出处理信息。 + +- -V, --version + + 打印 gs\_dumpall 版本,然后退出。 + +- --lock-wait-timeout=TIMEOUT + + 请勿在转储刚开始时一直等待以获取共享表锁。如果无法在指定时间内锁定某个表,就选择失败。可以以任何符合 SET statement\_timeout 的格式指定超时时间。 + +- -?, --help + + 显示 gs\_dumpall 命令行参数帮助,然后退出。 + + +转储参数: + +- -a, --data-only + + 只转储数据,不转储模式(数据定义)。 + +- -c, --clean + + 在重新创建数据库之前,执行 SQL 语句清理(删除)这些数据库。针对角色和表空间的转储命令已添加。 + +- -g, --globals-only + + 只转储全局对象(角色和表空间),无数据库。 + +- -o, --oids + + 转储每个表的对象标识符(OIDs),作为表的一部分数据。该选项用于应用以某种方式参照了 OID 列的情况。如果不是以上这种情况,请勿使用该选项。 + +- -O, --no-owner + + 不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs\_dumpall 会发出 ALTER OWNER 或 SET SESSION AUTHORIZATION 语句设置所创建的模式元素的所属。如果脚本正在运行,该语句不会执行成功,除非是由系统管理员触发(或是拥有脚本中所有对象的同一个用户)。通过指定 `-O`,编写一个任何用户都能存储的脚本,且该脚本会授予该用户拥有所有对象的权限。 + +- -r, --roles-only + + 只转储角色,不转储数据库或表空间。 + +- -s, --schema-only + + 只转储对象定义(模式),而非数据。 + +- -S, --sysadmin=NAME + + 在转储过程中使用的系统管理员名称。 + +- -t, --tablespaces-only + + 只转储表空间,不转储数据库或角色。 + +- -x, --no-privileges + + 防止转储访问权限(授权/撤销命令)。 + +- --column-inserts|--attribute-inserts + + 以 INSERT 命令带列名(INSERT INTO 表(列、…)值…)方式导出数据。这会导致恢复缓慢。但是由于该选项会针对每行生成一个独立分开的命令,所以在重新加载某行时出现的错误只会导致那行丢失,而非整个表内容。 + +- --disable-dollar-quoting + + 该选项将禁止在函数体前使用美元符号 `$`,并强制使用 SQL 标准字符串语法对其进行引用。 + +- --disable-triggers + + 该参数为扩展预留接口,不建议使用。 + +- --inserts + + 发出 INSERT 命令(而非 COPY 命令)转储数据。这会导致恢复缓慢。注意:如果重排列顺序,可能会导致恢复整个失败。`--column-inserts` 选项更加安全,虽然可能更慢些。 + +- --no-security-labels + + 该参数为扩展预留接口,不建议使用。 + +- --no-tablespaces + + 请勿输出创建表空间的命令,也请勿针对对象选择表空间。使用该选项,无论默认表空间是哪个,在恢复过程中所有对象都会被创建。 + +- --no-unlogged-table-data + + 该参数为扩展预留接口,不建议使用。 + +- --include-alter-table + + 导出表中已删除的列信息。 + +- --quote-all-identifiers + + 强制对所有标识符加引号。为了向后续版本迁移,且其中可能涉及引入额外关键词,在转储相应数据库时该选项会有帮助。 + +- --dont-overwrite-file + + 不重写当前文件。 + +- --use-set-session-authorization + + 输出符合 SQL 标准的 SET SESSION AUTHORIZATION 命令而不是 ALTER OWNER 命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用 SET SESSION AUTHORIZATION 的转储需要数据库系统管理员的权限才能转储成功,而 ALTER OWNER 需要的权限则低得多。 + +- --with-encryption=AES128 + + 指定转储数据需用 AES128 进行加密。 + +- --with-key=KEY + +AES128 密钥规则如下: + + - 密钥长度为 8 \~ 16 个字符。 + - 至少包含大写字母(A-Z),小写字母(a-z),数字(0-9),非字母数字字符(限定为 \~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/? )四类字符中的三类字符。 + +- --include-extensions + + 如果 `include-extensions` 参数被设置,将备份所有的 CREATE EXTENSION 语句。 + +- --include-templatedb + + 转储过程中包含模板库。 + +- --binary-upgrade + + 该参数为扩展预留接口,不建议使用。 + +- --binary-upgrade-usermap="USER1=USER2" + + 该参数为扩展预留接口,不建议使用。 + +- --non-lock-table + + 该参数仅供 OM 工具使用。 + +- --tablespaces-postfix + + 该参数为扩展预留接口,不建议使用。 + +- --parallel-jobs + + 指定备份进程并发数,取值范围为 1 \~ 1000。 + + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +> +>- `-g`/`--globals-only`和`-r`/`--roles-only`不能同时使用。 +>- `-g`/`--globals-only`和`-t`/`--tablespaces-only`不能同时使用。 +>- `-r`/`--roles-only`和`-t`/`--tablespaces-only`不能同时使用。 +>- `-s`/`--schema-only`和`-a`/`--data-only`不能同时使用。 +>- `-r`/`--roles-only`和`-a`/`--data-only`不能同时使用。 +>- `-t`/`--tablespaces-only`和`-a`/`--data-only`不能同时使用。 +>- `-g`/`--globals-only`和`-a`/`--data-only`不能同时使用。 +>- `--tablespaces-postfix`和`--binary-upgrade`必须一起使用。 +>- `--binary-upgrade-usermap`和`--binary-upgrade`必须一起使用。 +>- `--parallel-jobs`和`-f`/`--file`必须一起使用。 + +连接参数: + +- -h, --host + + 指定主机的名称。如果取值是以斜线开头,它将用作 Unix 域套接字的目录。默认值取自 PGHOST 环境变量;如果没有设置,将启动某个 Unix 域套接字建立连接。 + + 该参数只针对 openGauss 外,对 openGauss 内本机只能用127.0.0.1。 + + 环境变量:PGHOST + +- -l, --database + + 指定所连接的转储全局对象的数据库名称,并去寻找还有其他哪些数据库需要被转储。如果没有指定,会使用 postgres 数据库,如果 postgres 数据库不存在,会使用 template1 。 + +- -p, --port + + 指定服务器所侦听的 TCP 端口或本地 Unix 域套接字后缀,以确保连接。默认值设置为 PGPORT 环境变量。 + + 在开启线程池情况下,建议使用 pooler port ,即侦听端口 + 1。 + + 环境变量:PGPORT + +- -U, --username + + 所连接的用户名。 + + 环境变量:PGUSER + +- -w, --no-password + + 不出现输入密码提示。如果服务器要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。 + +- -W, --password + + 指定用户连接的密码。如果主机的认证策略是 trust ,则不会对系统管理员进行密码验证,即无需输入 `-W` 选项;如果没有 `-W` 选项,并且不是系统管理员,“Dump Restore 工具”会提示用户输入密码。 + +- --role + + 指定创建转储使用的角色名。选择该选项,会使 gs\_dumpall 连接数据库后,发起一个 SET ROLE 角色名命令。当所授权用户(由 `-U` 指定)没有 gs\_dumpall 要求的权限时,该选项会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以系统管理员身份登录,而使用该选项能够在不违反该规定的情况下完成转储。 + +- --rolepassword + + 指定具体角色用户的角色密码。 + + +#### 说明 + +由于 gs\_dumpall 内部调用 gs\_dump,所以一些诊断信息参见 gs\_dump。 + +一旦恢复,最好在每个数据库上运行 ANALYZE ,优化程序提供有用的统计数据。 + +gs\_dumpall 恢复前需要所有必要的表空间目录才能退出;否则,对于处在非默认位置的数据库,数据库创建会失败。 + +#### 示例 + +使用 gs\_dumpall 一次导出 openGauss 的所有数据库。 + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +>gs\_dumpall 仅支持纯文本格式导出。所以只能使用 gsql 恢复 gs\_dumpall 导出的转储内容。 + +``` +gs_dumpall -f backup/bkp2.sql -p 37300 +gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:09]: The total objects number is 2371. +gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:35]: [100.00%] 2371 objects have been dumped. +gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:46]: dump database dbname='postgres' successfully +gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:46]: total time: 55567 ms +gs_dumpall[port='37300'][2018-06-27 09:55:46]: dumpall operation successful +gs_dumpall[port='37300'][2018-06-27 09:55:46]: total time: 56088 ms +``` + + + +### gs\_restore + +#### 背景信息 + +gs\_restore 是 openGauss 提供的针对 gs\_dump 导出数据的导入工具。通过此工具可由 gs\_dump 生成的导出文件进行导入。 + +gs\_restore 工具由操作系统用户 omm 执行。 + +主要功能包含: + +- 导入到数据库 + + 如果连接参数中指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接的密码。导入时生成列会自动更新,并像普通列一样保存。 + +- 导入到脚本文件 + + 如果未指定导入数据库,则创建包含重建数据库所必须的 SQL 语句脚本并写入到文件或者标准输出。等效于直接使用 gs\_dump 导出为纯文本格式。 + + +#### 命令格式 + +``` +gs_restore [OPTION]... FILE +``` + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +> +>- FILE没有短选项或长选项。用来指定归档文件所处的位置。 +>- 作为前提条件,需输入 dbname 或 `-l` 选项。不允许用户同时输入 dbname 和 `-l` 选项。 +>- gs\_restore 默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议使用 `-c` 参数,在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。 +>- 日志打印无开关,若需隐藏日志,请将日志重定向到日志文件。若恢复表数据时,数据量很大,会分批恢复,因此会多次出现“表数据已完成导入”的日志。 + +#### 参数说明 + +通用参数: + +- -d, --dbname=NAME + + 连接数据库 dbname 并直接导入到该数据库中。 + +- -f, --file=FILENAME + + 指定生成脚本的输出文件,或使用 `-l` 时列表的输出文件。 + + 默认是标准输出。 + + >![](C:/Users/lijun/Downloads/04 管理员指南_20211124103637/04 管理员指南_20211124103637/04 管理员指南/public_sys-resources/icon-note.gif) **说明:** + >-f不能同-d一起使用。 + +- -F, --format=c|d|t + + 指定归档格式。gs\_restore 会自动决定格式,因此不需要指定格式。 + + 取值范围: + + - c/custom:该归档形式为 gs\_dump 的自定义格式。 + - d/directory:该归档形式是一个目录归档形式。 + - t/tar:该归档形式是一个 tar 归档形式。 + +- -l, --list + + 列出归档形式内容。这一操作的输出可用作 `-L` 选项的输入。注意如果像 `-n` 或 `-t` 的过滤选项与-l使用,过滤选项将会限制列举的项目(即归档形式内容)。 + +- -v, --verbose + + 指定 verbose 模式。 + +- #### -V, --version + + 打印 gs\_restore 版本,然后退出。 + +- -?, --help + + 显示 gs\_restore 命令行参数帮助,然后退出。 + + +导入参数: + +- -a, --data-only + + 只导入数据,不导入模式(数据定义)。gs\_restore 的导入是以追加方式进行的。 + +- -c, --clean + + 在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。 + +- -C, --create + + 导入数据库之前会先使用 CREATE DATABASE 创建数据库。(指定该选项后,`-d` 指定的数据库仅用以执行 CREATE DATABASE 命令,所有数据依然会导入到创建的数据库中。) + +- -e, --exit-on-error + + 当发送 SQL 语句到数据库时如果出现错误,请退出。默认状态下会继续,且在导入后会显示一系列错误信息。 + +- -I, --index=NAME + + 只导入已列举的 index 的定义。允许导入多个 index 。如果多次输入`-I index`导入多个 index 。 + + 例如: + + ``` + gs_restore -h host_name -p port_number -d postgres -I Index1 -I Index2 backup/MPPDB_backup.tar + ``` + + 在上面这个例子中, Index1 和 Index2 会被导入。 + +- -j, --jobs=NUM + + 运行 gs\_restore 最耗时的部分(如加载数据、创建 index 或创建约束)使用并发任务。该选项能大幅缩短导入时间,即将一个大型数据库导入到某一多处理器的服务器上。 + + 每个任务可能是一个进程或一个线程,这由操作系统决定;每个任务与服务器进行单独连接。 + + 该选项的最优值取决于服务器的硬件设置、客户端以及网络。还包括这些因素,如 CPU 核数量、硬盘设置。建议是从增加服务器上的 CPU 核数量入手,更大的值(服务器上 CPU 核数量)在很多情况下也能导致数据文件更快的被导入。当然,过高的值会由于超负荷反而导致性能降低。 + + 该选项只支持自定义归档格式。输入文件必须是常规文件(不能是像 pipe 的文件)。如果是通过脚本文件,而非直接连接数据库服务器,该选项可忽略。而且,多任务不能与 `--single-transaction` 选项一起使用。 + +- -L, --use-list=FILENAME + + 只导入列举在 list-file 中的那些归档形式元素,导入顺序以它们在文件中的顺序为准。注意如果像 `-n` 或 `-t` 的过滤选项与 `-L` 使用,它们将会进一步限制导入的项目。 + + 一般情况下,`list-file` 是通过编辑前面提到的某个-l参数的输出创建的。文件行的位置可更改或直接删除,也可使用分号`;`在行的开始注出。 + +- -n, --schema=NAME + + 只导入已列举的模式中的对象。 + + 该选项可与-t选项一起用以导入某个指定的表。 + + 多次输入 `-n [schemaname]` 可以导入多个模式。 + + 例如: + + ``` + gs_restore -h host_name -p port_number -d postgres -n sch1 -n sch2 backup/MPPDB_backup.tar + ``` + + 在上面这个例子中, sch1 和 sch2 会被导入。 + +- -O, --no-owner + + 不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs\_restore 会发出 ALTER OWNER 或 SET SESSION AUTHORIZATION 语句设置所创建的模式元素的所属。除非是由系统管理员(或是拥有脚本中所有对象的同一个用户)进行数据库首次连接的操作,否则语句会失败。使用 `-O` 选项,任何用户名都可用于首次连接,且该用户拥有所有已创建的对象。 + +- -P, --function=NAME\(args\) + + 只导入已列举的函数。请按照函数所在转储文件中的目录,准确拼写函数名称和参数。 + + 当-P单独使用时,表示导入文件中所有'function-name\(args\)'函数;当 `-P` 同 `-n` 一起使用时,表示导入指定模式下的'function-name\(args\)'函数;多次输入 `-P`,而仅指定一次 `-n`,表示所有导入的函数默认都是位于 `-n`模式下的。 + + 可以多次输入-n schema-name -P 'function-name\(args\)'同时导入多个指定模式下的函数。 + + 例如: + + ``` + gs_restore -h host_name -p port_number -d postgres -n test1 -P 'Func1(integer)' -n test2 -P 'Func2(integer)' backup/MPPDB_backup.tar + ``` + + 在上面这个例子中, test1 模式下的函数Func1\(i integer\)和 test2 模式下的函数Func2\(j integer\)会被一起导入。 + +- -s, --schema-only + + 只导入模式(数据定义),不导入数据(表内容)。当前的序列值也不会导入。 + +- -S, --sysadmin=NAME + + 该参数为扩展预留接口,不建议使用。 + +- -t, --table=NAME + + 只导入已列举的表定义、数据或定义和数据。该选项与`-n`选项同时使用时,用来指定某个模式下的表对象。`-n`参数不输入时,默认为 PUBLIC 模式。多次输入 -n -t 可以导入指定模式下的多个表。 + + 例如: + + 导入 PUBLIC 模式下的 table1 + + ``` + gs_restore -h host_name -p port_number -d postgres -t table1 backup/MPPDB_backup.tar + ``` + + 导入 test1 模式下的 test1 和 test2 模式下 test2 + + ``` + gs_restore -h host_name -p port_number -d postgres -n test1 -t test1 -n test2 -t test2 backup/MPPDB_backup.tar + ``` + + 导入 PUBLIC 模式下的 table1 和 test1 模式下 test1 + + ``` + gs_restore -h host_name -p port_number -d postgres -n PUBLIC -t table1 -n test1 -t table1 backup/MPPDB_backup.tar + ``` + + >![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** + >-t不支持 schema\_name.table\_name 的输入格式。 + +- -T, --trigger=NAME + + 该参数为扩展预留接口。 + +- -x, --no-privileges/--no-acl + + 防止导入访问权限(grant/revoke 命令)。 + +- -1, --single-transaction + + 执行导入作为一个单独事务(即把命令包围在 BEGIN/COMMIT 中)。 + + 该选项确保要么所有命令成功完成,要么没有改变应用。该选项意为 `--exit-on-error`。 + +- --disable-triggers + + 该参数为扩展预留接口,不建议使用。 + +- --no-data-for-failed-tables + + 默认状态下,即使创建表的命令失败(如表已经存在),表数据仍会被导入。使用该选项,像这种表的数据会被跳过。如果目标数据库已包含想要的表内容,这种行为会有帮助。 + + 该选项只有在直接导入到某数据库中时有效,不针对生成 SQL 脚本文件输出。 + +- --no-security-labels + + 该参数为扩展预留接口,不建议使用。 + +- --no-tablespaces + + 不输出选择表空间的命令。使用该选项,无论默认表空间是哪个,在导入过程中所有对象都会被创建。 + +- --section=SECTION + + 导入已列举的区段(如 pre-data、data 或 post-data)。 + +- --use-set-session-authorization + + 该选项用来进行文本格式的备份。 + + 输出 SET SESSION AUTHORIZATION 命令,而非 ALTER OWNER 命令,用以决定对象归属。该选项使转储更加兼容标准,但通过参考转储中对象的记录,导入过程可能会有问题。使用 SET SESSION AUTHORIZATION 的转储要求必须是系统管理员,同时在导入前还需参考“SET SESSION AUTHORIZATION”,手工对导出文件的密码进行修改验证,只有这样才能进行正确的导入操作,相比之下, ALTER OWNER 对权限要求较低。 + + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-notice.gif) **须知:** +> +>- 如果安装过程中有任何本地数据要添加到 template1 数据库,请谨慎将 gs\_restore 的输出载入到一个真正的空数据库中;否则可能会因为被添加对象的定义被复制,而出现错误。要创建一个无本地添加的空数据库,需从 template0 而非 template1 复制,例如: +> +>``` +>CREATE DATABASE foo WITH TEMPLATE template0; +>``` +> +>- gs\_restore 不能选择性地导入大对象;例如只能导入那些指定表的对象。如果某个归档形式包含大对象,那所有大对象都会被导入或一个都不会被导入,如果它们通过-L、-t或其他选项被排除。 + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +>1.`-d`/`--dbname` 和 `-f`/`--file` 不能同时使用; +> +>2. `-s`/`--schema-only` 和 `-a`/`--data-only`不能同时使用; +>3. `-c`/`--clean` 和 `-a`/`--data-only`不能同时使用; +>4. 使用 `--single-transaction` 时,`-j`/ `--jobs` 必须为单任务; +>5. --role 和 --rolepassword` 必须一起使用。 + +连接参数: + +- -h, --host=HOSTNAME + + 指定的主机名称。如果取值是以斜线开头,他将用作 Unix 域套接字的目录。默认值取自 PGHOST 环境变量;如果没有设置,将启动某个 Unix 域套接字建立连接。 + + 该参数只针对 openGauss 外,对 openGauss 内本机只能用127.0.0.1。 + +- -p, --port=PORT + + 指定服务器所侦听的 TCP 端口或本地 Unix 域套接字后缀,以确保连接。默认值设置为 PGPORT 环境变量。 + + 在开启线程池情况下,建议使用 pooler port ,即侦听端口 + 1。 + +- -U, --username=NAME + + 所连接的用户名。 + +- -w, --no-password + + 不出现输入密码提示。如果服务器要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。 + +- -W, --password=PASSWORD + + 指定用户连接的密码。如果主机的认证策略是 trust ,则不会对系统管理员进行密码验证,即无需输入 `-W` 参数;如果没有 `-W` 参数,并且不是系统管理员,“gs\_restore”会提示用户输入密码。 + +- --role=ROLENAME + + 指定导入操作使用的角色名。选择该参数,会使 gs\_restore 连接数据库后,发起一个 SET ROLE 角色名命令。当所授权用户(由 `-U` 指定)没有 gs\_restore 要求的权限时,该参数会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以初始用户身份登录,而使用该参数能够在不违反该规定的情况下完成导入。 + +- --rolepassword=ROLEPASSWORD + + 指定具体角色用户的角色密码。 + + +#### 示例 + +特例:执行 gsql 程序,使用如下选项导入由 gs\_dump/gs\_dumpall 生成导出文件夹(纯文本格式)的 MPPDB\_backup.sql 文件到 postgres 数据库。 + +``` +gsql -d postgres -p 15400 -W Bigdata@123 -f /home/omm/test/MPPDB_backup.sql +SET +SET +SET +SET +SET +ALTER TABLE +ALTER TABLE +ALTER TABLE +ALTER TABLE +ALTER TABLE +CREATE INDEX +CREATE INDEX +CREATE INDEX +SET +CREATE INDEX +REVOKE +REVOKE +GRANT +GRANT +total time: 30476 ms +``` + +gs\_restore 用来导入由 gs\_dump 生成的导出文件。 + +示例 1:执行 gs\_restore,将导出的 MPPDB\_backup.dmp 文件(自定义归档格式)导入到 postgres 数据库。 + +``` +gs_restore -W Bigdata@123 backup/MPPDB_backup.dmp -p 15400 -d postgres +gs_restore: restore operation successful +gs_restore: total time: 13053 ms +``` + +示例 2:执行 gs\_restore,将导出的 MPPDB\_backup.tar 文件(tar 格式)导入到 postgres 数据库。 + +``` +gs_restore backup/MPPDB_backup.tar -p 15400 -d postgres +gs_restore[2017-07-21 19:16:26]: restore operation successful +gs_restore[2017-07-21 19:16:26]: total time: 21203 ms +``` + +示例3:执行 gs\_restore,将导出的 MPPDB\_backup 文件(目录格式)导入到 postgres 数据库。 + +``` +gs_restore backup/MPPDB_backup -p 15400 -d postgres +gs_restore[2017-07-21 19:16:26]: restore operation successful +gs_restore[2017-07-21 19:16:26]: total time: 21003 ms +``` + +示例4:执行 gs\_restore,使用自定义归档格式的 MPPDB\_backup.dmp 文件来进行如下导入操作。 导入 PUBLIC 模式下所有对象的定义和数据。在导入时会先删除已经存在的对象,如果原对象存在跨模式的依赖则需手工强制干预。 + +``` +gs_restore backup/MPPDB_backup.dmp -p 15400 -d postgres -e -c -n PUBLIC +gs_restore: [archiver (db)] Error while PROCESSING TOC: +gs_restore: [archiver (db)] Error from TOC entry 313; 1259 337399 TABLE table1 gaussdba +gs_restore: [archiver (db)] could not execute query: ERROR: cannot drop table table1 because other objects depend on it +DETAIL: view t1.v1 depends on table table1 +HINT: Use DROP ... CASCADE to drop the dependent objects too. + Command was: DROP TABLE public.table1; +``` + +手工删除依赖,导入完成后再重新创建。 + +``` +gs_restore backup/MPPDB_backup.dmp -p 15400 -d postgres -e -c -n PUBLIC +gs_restore[2017-07-21 19:16:26]: restore operation successful +gs_restore[2017-07-21 19:16:26]: total time: 2203 ms +``` + +示例5:执行 gs\_restore,使用自定义归档格式的 MPPDB\_backup.dmp 文件来进行如下导入操作。只导入 PUBLIC 模式下表 table1 的定义。 + +``` +gs_restore backup/MPPDB_backup.dmp -p 15400 -d postgres -e -c -s -n PUBLIC -t table1 +gs_restore[2017-07-21 19:16:26]: restore operation successful +gs_restore[2017-07-21 19:16:26]: total time: 21000 ms +``` + +示例6:执行 gs\_restore,使用自定义归档格式的 MPPDB\_backup.dmp 文件来进行如下导入操作。只导入 PUBLIC 模式下表 table1 的数据。 + +``` +gs_restore backup/MPPDB_backup.dmp -p 15400 -d postgres -e -a -n PUBLIC -t table1 +gs_restore[2017-07-21 19:16:26]: restore operation successful +gs_restore[2017-07-21 19:16:26]: total time: 20203 ms +``` + + + +### gs\_backup + +#### 背景信息 + +openGauss 部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。 openGauss 提供了 gs\_backup 工具帮助 openGauss 备份、恢复重要数据、显示帮助信息和版本号信息。 + +#### 前提条件 + +- 可以正常连接 openGauss 数据库。 +- 在进行还原时,需要保证各节点备份目录中存在备份文件。 +- 需以操作系统用户 omm 执行 gs\_backup 命令。 + +#### 语法 + +- 备份数据库主机 + + ``` + gs_backup -t backup --backup-dir=BACKUPDIR [-h HOSTNAME] [--parameter] [--binary] [--all] [-l LOGFILE] + ``` + +- 恢复数据库主机 + + ``` + gs_backup -t restore --backup-dir=BACKUPDIR [-h HOSTNAME] [--parameter] [--binary] [--all] [-l LOGFILE] [--force] + ``` + +- 显示帮助信息 + + ``` + gs_backup -? | --help + ``` + +- 显示版本号信息 + + ``` + gs_backup -V | --version + ``` + + +#### 参数说明 + +gs\_backup参数可以分为如下几类: + +- 备份数据库主机参数: + + - -h + + 指定存储备份文件的主机名称。 + + 取值范围:主机名称。如果不指定主机名称,则备份当前集群。 + + - --backup-dir=BACKUPDIR + + 备份文件保存路径。 + + - --parameter + + 备份参数文件,不指定 `--parameter`、`--binary`、`--all` 参数时默认只备份参数文件。 + + - --binary + + 备份 app 目录下的二进制文件。 + + - --all + + 备份 app 目录下的二进制文件、pg\_hba.conf 和 postgsql.conf 文件。 + + - -l + + 指定日志文件及存放路径。 + + 默认值:$GAUSSLOG/om/gs\_backup-YYYY-MM-DD\_hhmmss.log + + +- 恢复数据库主机参数: + + - -h + + 指定需要恢复主机的名称。 + + 取值范围:主机名称。如果不指定主机,则恢复对应的备份节点。 + + - --backup-dir=BACKUPDIR + + 恢复文件提取路径。 + + - --parameter + + 恢复参数文件,不指定`--parameter`、`--binary`、`--all`参数时默认只恢复参数文件。 + + - --binary + + 恢复二进制文件。 + + - --all + + 恢复二进制和参数文件。 + + - -l + + 指定日志文件及存放路径。 + + 默认值:$GAUSSLOG/om/gs\_backup-YYYY-MM-DD\_hhmmss.log + + - --force + + 节点的静态文件丢失后强行 restore ,仅限 `--all` 或者 `--binary` 一起使用时才生效。 + + +- 其他参数: + + - -?, --help + + 显示帮助信息。 + + - -V, --version + + 显示版本号信息。 + + - -t + + 指定操作类型。 + + 取值范围:backup 或者 restore 。 + + + +#### 示例 + +- 使用 gs\_backup 脚本备份数据库主机。 + + ``` + gs_backup -t backup --backup-dir=/opt/software/gaussdb/backup_dir -h plat1 --parameter + Backing up openGauss. + Parsing configuration files. + Successfully parsed the configuration file. + Performing remote backup. + Remote backup succeeded. + Successfully backed up openGauss. + ``` + +- 使用 gs\_backup 脚本恢复数据库主机。 + + ``` + gs_backup -t restore --backup-dir=/opt/software/gaussdb/backup_dir -h plat1 --parameter + Restoring openGauss. + Parsing the configuration file. + Successfully parsed configuration files. + Performing remote restoration. + Remote restoration succeeded. + Successfully restored openGauss. + ``` + +## 闪回恢复 + +闪回恢复功能是数据库恢复技术的一环,可以有选择性的撤销一个已提交事务的影响,将数据从人为不正确的操作中进行恢复。在采用闪回技术之前,只能通过备份恢复、PITR 等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。 + +>![](C:/Users/lijun/Desktop/opengauss/docs/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif) **说明:** +>USTORE引擎暂不支持闪回DROP/TRUNCATE。 + +- **[闪回查询](#闪回查询)** + +- **[闪回表](#闪回表)** + +- **[闪回DROP/TRUNCATE](#闪回DROP/TRUNCATE)** + +闪回恢复功能是数据库恢复技术的一环,可以有选择性的撤销一个已提交事务的影响,将数据从人为不正确的操作中进行恢复。在采用闪回技术之前,只能通过备份恢复、PITR 等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。 + +### 闪回查询 + +#### 背景信息 + +闪回查询可以查询过去某个时间点表的某个 snapshot 数据,这一特性可用于查看和逻辑重建意外删除或更改的受损数据。闪回查询基于 MVCC 多版本机制,通过检索查询旧版本,获取指定老版本数据。 + +#### 语法 + +``` +{[ ONLY ] table_name [ * ] [ partition_clause ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ] +[ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ] +[TIMECAPSULE { TIMESTAMP | CSN } expression ] +|( select ) [ AS ] alias [ ( column_alias [, ...] ) ] +|with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] +|function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ] +|function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] ) +|from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]} +``` + +语法树中“TIMECAPSULE \{TIMESTAMP | CSN\} expression”为闪回功能新增表达方式,其中 TIMECAPSULE 表示使用闪回功能, TIMESTAMP 以及 CSN 表示闪回功能使用具体时间点信息或使用 CSN(commit sequence number)信息。 + +#### 参数说明 + +- TIMESTAMP + - 指要查询某个表在 TIMESTAMP 这个时间点上的数据, TIMESTAMP 指一个具体的历史时间。 + + +- CSN + - 指要查询整个数据库逻辑提交序下某个 CSN 点的数据, CSN 指一个具体逻辑提交时间点,数据库中的 CSN 为写一致性点,每个 CSN 代表整个数据库的一个一致性点,查询某个 CSN 下的数据代表 SQL 查询数据库在该一致性点的相关数据。 + + +#### 使用示例 + +- 示例1: + + ``` + SELECT * FROM t1 TIMECAPSULE TIMESTAMP to_timestamp ('2020-02-11 10:13:22.724718', 'YYYY-MM-DD HH24:MI:SS.FF'); + ``` + +- 示例2: + + ``` + SELECT * FROM t1 TIMECAPSULE CSN 9617; + ``` + +- 示例3: + + ``` + SELECT * FROM t1 AS t TIMECAPSULE TIMESTAMP to_timestamp ('2020-02-11 10:13:22.724718', 'YYYY-MM-DD HH24:MI:SS.FF'); + ``` + +- 示例4: + + ``` + SELECT * FROM t1 AS t TIMECAPSULE CSN 9617; + ``` + + + +### 闪回表 + +#### 背景信息 + +闪回表可以将表恢复至特定时间点,当逻辑损坏仅限于一个或一组表,而不是整个数据库时,此特性可以快速恢复表的数据。闪回表基于 MVCC 多版本机制,通过删除指定时间点和该时间点之后的增量数据,并找回指定时间点和当前时间点删除的数据,实现表级数据还原。 + +#### 语法 + +``` +TIMECAPSULE TABLE table_name TO { TIMESTAMP | CSN } expression +``` + +#### 使用示例 + +``` +TIMECAPSULE TABLE t1 TO TIMESTAMP to_timestamp ('2020-02-11 10:13:22.724718', 'YYYY-MM-DD HH24:MI:SS.FF'); +TIMECAPSULE TABLE t1 TO CSN 9617; +``` + +### 闪回DROP/TRUNCATE + +#### 背景信息 + +- 闪回 DROP:可以恢复意外删除的表,从回收站(recycle bin)中恢复被删除的表及其附属结构如索引、表约束等。闪回 drop 是基于回收站机制,通过还原回收站中记录的表的物理文件,实现已 drop 表的恢复。 +- 闪回 TRUNCATE:可以恢复误操作或意外被进行 truncate 的表,从回收站中恢复被 truncate 的表及索引的物理数据。闪回 truncate 基于回收站机制,通过还原回收站中记录的表的物理文件,实现已 truncate 表的恢复。 + +#### 前提条件 + +- 开启 `enable\_recyclebin` 参数,启用回收站。 +- `recyclebin\_retention` 参数用于设置回收站对象保留时间,超过该时间的回收站对象将被自动清理。 + +#### 相关语法 + +- 删除表 + + ``` + DROP TABLE table_name [PURGE] + ``` + + +- 清理回收站对象 + + ``` + PURGE { TABLE { table_name } + | INDEX { index_name } + | RECYCLEBIN + } + ``` + + +- 闪回被删除的表 + + ``` + TIMECAPSULE TABLE { table_name } TO BEFORE DROP [RENAME TO new_tablename] + ``` + + +- 截断表 + + ``` + TRUNCATE TABLE { table_name } [ PURGE ] + ``` + +- 闪回截断的表 + + ``` + TIMECAPSULE TABLE { table_name } TO BEFORE TRUNCATE + ``` + + +#### 参数说明 + +- DROP/TRUNCATE TABLE table\_name PURGE + - 默认将表数据放入回收站中, PURGE 直接清理。 + + +- PURGE RECYCLEBIN + + - 表示清理回收站对象。 + +- **TO BEFORE DROP** + + 使用这个子句检索回收站中已删除的表及其子对象。 + + 可以指定原始用户指定的表的名称,或对象删除时数据库分配的系统生成名称。 + + - 回收站中系统生成的对象名称是唯一的。因此,如果指定系统生成名称,那么数据库检索指定的对象。使用 `select * from pg\recyclebin;` 语句查看回收站中的内容。 + - 如果指定了用户指定的名称,且如果回收站中包含多个该名称的对象,然后数据库检索回收站中最近移动的对象。如果想要检索更早版本的表,你可以这样做: + + - 指定你想要检索的表的系统生成名称。 + + - 执行 `TIMECAPSULE TABLE ... TO BEFORE DROP` 语句,直到你要检索的表。 + + - 恢复 DROP 表时,只恢复基表名,其他子对象名均保持回收站对象名。用户可根据需要,执行 DDL 命令手工调整子对象名。 + - 回收站对象不支持 DML、DCL、DDL 等写操作,不支持 DQL 查询操作(后续支持)。 + +- **RENAME TO** + + 为从回收站中检索的表指定一个新名称。 + +- **TO BEFORE TRUNCATE** + + 闪回到 TRUNCATE 之前。 + + +#### 语法示例 + +``` +DROP TABLE t1 PURGE; + +PURGE TABLE t1; +PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0"; +PURGE INDEX i1; +PURGE INDEX "BIN$04LhcpndanfgMAAAAAANPw==$0"; +PURGE RECYCLEBIN; + +TIMECAPSULE TABLE t1 TO BEFORE DROP; +TIMECAPSULE TABLE t1 TO BEFORE DROP RENAME TO new_t1; +TIMECAPSULE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0" TO BEFORE DROP; +TIMECAPSULE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO new_t1; +``` + diff --git "a/content/zh/docs/Administratorguide/\345\256\236\344\276\213\344\270\273\345\244\207\345\210\207\346\215\242.md" "b/content/zh/docs/Administratorguide/\345\256\236\344\276\213\344\270\273\345\244\207\345\210\207\346\215\242.md" index 46a107829..59516e327 100644 --- "a/content/zh/docs/Administratorguide/\345\256\236\344\276\213\344\270\273\345\244\207\345\210\207\346\215\242.md" +++ "b/content/zh/docs/Administratorguide/\345\256\236\344\276\213\344\270\273\345\244\207\345\210\207\346\215\242.md" @@ -1,130 +1,130 @@ -# 实例主备切换 - -## 操作场景 - -openGauss在运行过程中,数据库管理员可能需要手工对数据库节点做主备切换。例如发现数据库节点主备failover后需要恢复原有的主备角色,或怀疑硬件故障需要手动进行主备切换。级联备机不能直接转换为主机,只能先通过switchover或者failover成为备机,然后再切换为主机。 - ->![](public_sys-resources/icon-note.gif) **说明:** -> ->- 主备切换为维护操作,确保openGauss状态正常,所有业务结束后,再进行切换操作。 ->- 在开启极致RTO时,不支持级联备机。因为在极致RTO开启情况下,备机不支持连接,所以无法与级联备机同步数据。 - -## 操作步骤 - -1. 以操作系统用户omm登录数据库任意节点,执行如下命令,查看主备情况。 - - ``` - gs_om -t status --detail - ``` - -2. 以操作系统用户omm登录准备切换为主节点的备节点,执行如下命令。 - - ``` - gs_ctl switchover -D /home/omm/cluster/dn1/ - ``` - - /home/omm/cluster/dn1/为备数据库节点的数据目录。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >对于同一数据库,上一次主备切换未完成,不能执行下一次切换。当业务正在操作时,发起switchover,可能主机的线程无法停止导致switchover显示超时,实际后台仍然在运行,等主机线程停止后,switchover即可完成。比如在主机删除一个大的分区表时,可能无法响应switchover发起的信号。 - - 主机故障时,可以在备机执行如下命令。 - - ``` - gs_ctl failover -D /home/omm/cluster/dn1/ - ``` - -3. switchover或failover成功后,执行如下命令记录当前主备机器信息。 - - ``` - gs_om -t refreshconf - ``` - - -## 示例 - -将数据库节点备实例切换为主实例。 - -1.查询数据库状态。 - -``` -gs_om -t status --detail - -[ Cluster State ] - -cluster_state : Normal -redistributing : No -current_az : AZ_ALL - -[ Datanode State ] - - node node_ip port instance state --------------------------------------------------------------------------------------------------- -1 pekpopgsci00235 10.244.62.204 5432 6001 /home/wuqw/cluster/dn1/ P Primary Normal -2 pekpopgsci00238 10.244.61.81 5432 6002 /home/wuqw/cluster/dn1/ S Standby Normal - -``` - -2.登录备节点,进行主备切换。另外,switchover级联备机后,级联备机切换为备机,原备机降为级联备。 - -``` -gs_ctl switchover -D /home/wuqw/cluster/dn1/ -[2020-06-17 14:28:01.730][24438][][gs_ctl]: gs_ctl switchover ,datadir is -D "/home/wuqw/cluster/dn1" -[2020-06-17 14:28:01.730][24438][][gs_ctl]: switchover term (1) -[2020-06-17 14:28:01.768][24438][][gs_ctl]: waiting for server to switchover............ -[2020-06-17 14:28:11.175][24438][][gs_ctl]: done -[2020-06-17 14:28:11.175][24438][][gs_ctl]: switchover completed (/home/wuqw/cluster/dn1) -``` - -3.保存数据库主备机器信息。 - -``` -gs_om -t refreshconf -Generating dynamic configuration file for all nodes. -Successfully generated dynamic configuration file. -``` - -## 错误排查 - -如果switchover过程中出现失败,请根据日志文件中的日志信息排查错误,参见[日志参考](日志参考.md)。 - -## 异常处理 - -异常判断标准如下: - -- 业务压力下,主备实例切换时间长,这种情况不需要处理。 -- 其他备机正在build的情况下,主机需要发送日志到备机后,才能降备,导致主备切换时间长。这种情况不需要处理,但应尽量避免build过程中进行主备切换。 -- 切换过程中,因网络故障、磁盘满等原因造成主备实例连接断开,出现双主现象时,此时请参考如下步骤修复。 - - >![](public_sys-resources/icon-warning.gif) **警告:** - >出现双主状态后,请按如下步骤恢复成正常的主备状态。否则可能会造成数据丢失。 - - -1. 执行以下命令查询数据库当前的实例状态。 - - ``` - gs_om -t status --detail - ``` - - 若查询结果显示两个实例的状态都为Primary,这种状态为异常状态。 - -2. 确定降为备机的节点,在节点上执行如下命令关闭服务。 - - ``` - gs_ctl stop -D /home/omm/cluster/dn1/ - ``` - -3. 执行以下命令,以standby模式启动备节点。 - - ``` - gs_ctl start -D /home/omm/cluster/dn1/ -M standby - ``` - -4. 保存数据库主备机器信息。 - - ``` - gs_om -t refreshconf - ``` - -5. 查看数据库状态,确认实例状态恢复。 - +# 实例主备切换 + +## 操作场景 + +openGauss 在运行过程中,数据库管理员可能需要手工对数据库节点做主备切换。例如发现数据库节点主备 failover 后需要恢复原有的主备角色,或怀疑硬件故障需要手动进行主备切换。级联备机不能直接转换为主机,只能先通过 switchover 或者 failover 成为备机,然后再切换为主机。 + +>![](public_sys-resources/icon-note.gif) **说明:** +> +>- 主备切换为维护操作,确保 openGauss 状态正常,所有业务结束后,再进行切换操作。 +>- 在开启极致 RTO 时,不支持级联备机。因为在极致 RTO 开启情况下,备机不支持连接,所以无法与级联备机同步数据。 + +## 操作步骤 + +1. 以操作系统用户 omm 登录数据库任意节点,执行如下命令,查看主备情况。 + + ``` + gs_om -t status --detail + ``` + +2. 以操作系统用户 omm 登录准备切换为主节点的备节点,执行如下命令。 + + ``` + gs_ctl switchover -D /home/omm/cluster/dn1/ + ``` + + /home/omm/cluster/dn1/ 为备数据库节点的数据目录。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >对于同一数据库,上一次主备切换未完成,不能执行下一次切换。当业务正在操作时,发起 switchover ,可能主机的线程无法停止导致 switchover 显示超时,实际后台仍然在运行,等主机线程停止后, switchover 即可完成。比如在主机删除一个大的分区表时,可能无法响应 switchover 发起的信号。 + + 主机故障时,可以在备机执行如下命令。 + + ``` + gs_ctl failover -D /home/omm/cluster/dn1/ + ``` + +3. switchover 或 failover 成功后,执行如下命令记录当前主备机器信息。 + + ``` + gs_om -t refreshconf + ``` + + +## 示例 + +将数据库节点备实例切换为主实例。 + +1.查询数据库状态。 + +``` +gs_om -t status --detail + +[ Cluster State ] + +cluster_state : Normal +redistributing : No +current_az : AZ_ALL + +[ Datanode State ] + + node node_ip port instance state +-------------------------------------------------------------------------------------------------- +1 pekpopgsci00235 10.244.62.204 5432 6001 /home/wuqw/cluster/dn1/ P Primary Normal +2 pekpopgsci00238 10.244.61.81 5432 6002 /home/wuqw/cluster/dn1/ S Standby Normal + +``` + +2.登录备节点,进行主备切换。另外, switchover 级联备机后,级联备机切换为备机,原备机降为级联备。 + +``` +gs_ctl switchover -D /home/wuqw/cluster/dn1/ +[2020-06-17 14:28:01.730][24438][][gs_ctl]: gs_ctl switchover ,datadir is -D "/home/wuqw/cluster/dn1" +[2020-06-17 14:28:01.730][24438][][gs_ctl]: switchover term (1) +[2020-06-17 14:28:01.768][24438][][gs_ctl]: waiting for server to switchover............ +[2020-06-17 14:28:11.175][24438][][gs_ctl]: done +[2020-06-17 14:28:11.175][24438][][gs_ctl]: switchover completed (/home/wuqw/cluster/dn1) +``` + +3.保存数据库主备机器信息。 + +``` +gs_om -t refreshconf +Generating dynamic configuration file for all nodes. +Successfully generated dynamic configuration file. +``` + +## 错误排查 + +如果 switchover 过程中出现失败,请根据日志文件中的日志信息排查错误,参见[日志参考](日志参考.md)。 + +## 异常处理 + +异常判断标准如下: + +- 业务压力下,主备实例切换时间长,这种情况不需要处理。 +- 其他备机正在 build 的情况下,主机需要发送日志到备机后,才能降备,导致主备切换时间长。这种情况不需要处理,但应尽量避免 build 过程中进行主备切换。 +- 切换过程中,因网络故障、磁盘满等原因造成主备实例连接断开,出现双主现象时,此时请参考如下步骤修复。 + + >![](public_sys-resources/icon-warning.gif) **警告:** + >出现双主状态后,请按如下步骤恢复成正常的主备状态。否则可能会造成数据丢失。 + + +1. 执行以下命令查询数据库当前的实例状态。 + + ``` + gs_om -t status --detail + ``` + + 若查询结果显示两个实例的状态都为 Primary ,这种状态为异常状态。 + +2. 确定降为备机的节点,在节点上执行如下命令关闭服务。 + + ``` + gs_ctl stop -D /home/omm/cluster/dn1/ + ``` + +3. 执行以下命令,以 standby 模式启动备节点。 + + ``` + gs_ctl start -D /home/omm/cluster/dn1/ -M standby + ``` + +4. 保存数据库主备机器信息。 + + ``` + gs_om -t refreshconf + ``` + +5. 查看数据库状态,确认实例状态恢复。 + diff --git "a/content/zh/docs/Administratorguide/\346\227\245\345\277\227\345\217\202\350\200\203.md" "b/content/zh/docs/Administratorguide/\346\227\245\345\277\227\345\217\202\350\200\203.md" index 91140fed8..cd9b4287f 100644 --- "a/content/zh/docs/Administratorguide/\346\227\245\345\277\227\345\217\202\350\200\203.md" +++ "b/content/zh/docs/Administratorguide/\346\227\245\345\277\227\345\217\202\350\200\203.md" @@ -1,168 +1,169 @@ -# 日志参考 - -## 日志类型简介 - -在数据库运行过程中,会出现大量日志,既有保证数据库安全可靠的WAL日志(预写式日志,也称为Xlog),也有用于数据库日常维护的运行和操作日志等。在数据库发生故障时,可以参考这些日志进行问题定位和数据库恢复的操作。 - -**日志类型** - -日志类型的详细说明请参见下表。 - -**表 1** 日志类型 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

类型

-

说明

-

系统日志

-

数据库系统进程运行时产生的日志,记录系统进程的异常信息。

-

操作日志

-

通过客户端工具(例如gs_guc)操作数据库时产生的日志。

-

Trace日志

-

打开数据库的调试开关后,会记录大量的Trace日志。这些日志可以用来分析数据库的异常信息。

-

黑匣子日志

-

数据库系统崩溃的时候,通过故障现场堆、栈信息可以分析出故障发生时的进程上下文,方便故障定位。黑匣子具有在系统崩溃时,dump出进程和线程的堆、栈、寄存器信息的功能。

-

审计日志

-

开启数据库审计功能后,将数据库用户的某些操作记录在日志中,这些日志称为审计日志。

-

WAL日志

-

又称为REDO日志,在数据库异常损坏时,可以利用WAL日志进行恢复。由于WAL日志的重要性,所以需要经常备份这些日志。

-

性能日志

-

数据库系统在运行时检测物理资源的运行状态的日志,在对外部资源进行访问时的性能日志,例如:磁盘、OBS、Hadoop集群等。

-
- -## 系统日志 - -openGauss运行时数据库节点以及openGauss安装部署时产生的日志统称为系统日志。如果openGauss在运行时发生故障,可以通过这些系统日志及时定位故障发生的原因,根据日志内容制定恢复openGauss的方法。 - -**日志文件存储路径** - -数据库节点的运行日志放在“/var/log/gaussdb/用户名/pg\_log”中各自对应的目录下。 - -OM openGauss安装卸载时产生的日志放在“/var/log/gaussdb/用户名/om”目录下。 - -**日志文件命名格式** - -数据库节点运行日志的命名规则: - -postgresql-创建时间.log - -默认情况下,每日0点或者日志文件大于16MB或者数据库实例(数据库节点)重新启动后,会生成新的日志文件。 - -**日志内容说明** - -数据库节点每一行日志内容的默认格式: - -日期+时间+时区+用户名称+数据库名称+会话ID+日志级别+日志内容 - -## 操作日志 - -操作日志是指数据库管理员使用工具操作数据库时以及工具被openGauss调用时产生的日志。如果openGauss发生故障,可以通过这些日志信息跟踪用户对数据库进行了哪些操作,重现故障场景。 - -**日志文件存储路径** - -默认在“$GAUSSLOG/bin”目录下,如果环境变量$GAUSSLOG不存在或者变量值为空,则工具日志信息不会记录到对应的工具日志文件中,日志信息只会打印到屏幕上。 - -其中$GAUSSLOG默认为“/var/log/gaussdb/_用户名_”。 - ->![](public_sys-resources/icon-note.gif) **说明:** ->如果使用om脚本部署时,则日志路径为 “/var/log/gaussdb/_用户名_”。 - -**日志文件命名格式** - -日志文件命名格式为: - -- 工具名-日志创建时间.log -- 工具名-日志创建时间-current.log - -其中,“工具名-日志创建时间.log”是历史日志文件,“工具名-日志创建时间-current.log”是当前日志文件。 - -如果日志大小超过16MB,在下一次调用该工具时,会重命名当前日志文件为历史日志文件,并以当前时间生成新的当前日志文件。 - -例如将“gs\_guc-2015-01-16\_183728-current.log”重命名为“gs\_guc-2015-01-16\_183728.log”,然后重新生成“gs\_guc-2015-01-17\_142216-current.log”。 - -**维护建议** - -建议定时对过期的日志文件进行转储,以避免大量日志占用太多的磁盘空间和避免重要日志丢失。 - -## 审计日志 - -审计功能开启时会不断产生大量的审计日志,占用磁盘空间。用户可以根据磁盘空间的大小设置审计日志维护策略。 - -关于如何设置审计日志维护策略请参见《开发者指南》中“管理数据库安全 \> 设置数据库审计 \> 维护审计日志”章节。 - -## WAL日志 - -预写式日志WAL(Write Ahead Log,也称为Xlog)是实现事务日志的标准方法,对数据文件(表和索引的载体)持久化修改之前必须先持久化相应的日志。如果要修改数据文件,必须是在这些修改操作已经记录到日志文件之后才能进行修改,即在描述这些变化的日志记录刷新到永久存储器之后。在系统崩溃时,可以使用WAL日志对openGauss进行恢复操作。 - -**日志文件存储路径** - -以一个数据库节点为例,默认在“/gaussdb/data/data\_dn/pg\_xlog”目录下。 - -其中“/gaussdb/data/data\_dn”代表openGauss节点的数据目录。 - -**日志文件命名格式** - -日志文件以段文件的形式存储的,每个段为16MB,并分割成若干页,每页8KB。对WAL日志的命名说明如下:一个段文件的名称由24个十六进制组成,分为三个部分,每个部分由8个十六进制字符组成。第一部分表示时间线,第二部分表示日志文件标号,第三部分表示日志文件的段标号。时间线由1开始,日志文件标号和日志文件的段标号由0开始。 - -例如,系统中的第一个事务日志文件是000000010000000000000000。 - ->![](public_sys-resources/icon-note.gif) **说明:** ->这些数字一般情况下是顺序增长使用的(要把所有可用数字都用光也需要非常长的时间),但也存在循环使用的情况。 - -**日志内容说明** - -WAL日志的内容取决于记录事务的类型,在系统崩溃时可以利用WAL日志进行恢复。 - -默认配置下,openGauss每次启动时会先读取WAL日志进行恢复。 - -**维护建议** - -WAL日志对数据库异常恢复有重要的作用,建议定期对WAL日志进行备份。 - -## 性能日志 - -性能日志主要关注外部资源的访问性能问题。性能日志指的是数据库系统在运行时检测物理资源的运行状态的日志,在对外部资源进行访问时的性能检测,包括磁盘、Hadoop openGauss等外部资源的访问检测信息。在出现性能问题时,可以借助性能日志及时的定位问题发生的原因,能极大地提升问题解决效率。 - -**日志文件存储路径** - -数据库节点的性能日志目录在“$GAUSSLOG/gs\_profile”中各自对应的目录下。 - -**日志文件命名格式** - -数据库节点的性能日志的命名规则: - -postgresql-创建时间.prf - -默认情况下,每日0点或者日志文件大于20MB或者数据库实例(数据库节点)重新启动后,会生成新的日志文件。 - -**日志内容说明** - -数据库节点每一行日志内容的默认格式: - -主机名称+日期+时间+实例名称+线程号+日志内容。 - +# 日志参考 + +## 日志类型简介 + +在数据库运行过程中,会出现大量日志,既有保证数据库安全可靠的 WAL 日志(预写式日志,也称为 Xlog ),也有用于数据库日常维护的运行和操作日志等。在数据库发生故障时,可以参考这些日志进行问题定位和数据库恢复的操作。 + +**日志类型** + +日志类型的详细说明请参见下表。 + +**表 1** 日志类型 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

类型

+

说明

+

系统日志

+

数据库系统进程运行时产生的日志,记录系统进程的异常信息。

+

操作日志

+

通过客户端工具(例如 gs_guc)操作数据库时产生的日志。

+

Trace日志

+

打开数据库的调试开关后,会记录大量的 Trace 日志。这些日志可以用来分析数据库的异常信息。

+

黑匣子日志

+

数据库系统崩溃的时候,通过故障现场堆、栈信息可以分析出故障发生时的进程上下文,方便故障定位。黑匣子具有在系统崩溃时, dump 出进程和线程的堆、栈、寄存器信息的功能。

+

审计日志

+

开启数据库审计功能后,将数据库用户的某些操作记录在日志中,这些日志称为审计日志。

+

WAL日志

+

又称为 REDO 日志,在数据库异常损坏时,可以利用 WAL 日志进行恢复。由于 WAL 日志的重要性,所以需要经常备份这些日志。

+

性能日志

+

数据库系统在运行时检测物理资源的运行状态的日志,在对外部资源进行访问时的性能日志,例如:磁盘、OBS、Hadoop 集群等。

+
+ + +## 系统日志 + +openGauss 运行时数据库节点以及 openGauss 安装部署时产生的日志统称为系统日志。如果 openGauss 在运行时发生故障,可以通过这些系统日志及时定位故障发生的原因,根据日志内容制定恢复 openGauss 的方法。 + +**日志文件存储路径** + +数据库节点的运行日志放在“/var/log/gaussdb/用户名/pg\_log”中各自对应的目录下。 + +OM openGauss 安装卸载时产生的日志放在“/var/log/gaussdb/用户名/om”目录下。 + +**日志文件命名格式** + +数据库节点运行日志的命名规则: + +postgresql-创建时间.log + +默认情况下,每日 0 点或者日志文件大于 16MB 或者数据库实例(数据库节点)重新启动后,会生成新的日志文件。 + +**日志内容说明** + +数据库节点每一行日志内容的默认格式: + +日期+时间+时区+用户名称+数据库名称+会话ID+日志级别+日志内容 + +## 操作日志 + +操作日志是指数据库管理员使用工具操作数据库时以及工具被 openGauss 调用时产生的日志。如果 openGauss 发生故障,可以通过这些日志信息跟踪用户对数据库进行了哪些操作,重现故障场景。 + +**日志文件存储路径** + +默认在“$GAUSSLOG/bin”目录下,如果环境变量 $GAUSSLOG 不存在或者变量值为空,则工具日志信息不会记录到对应的工具日志文件中,日志信息只会打印到屏幕上。 + +其中 $GAUSSLOG 默认为“/var/log/gaussdb/_用户名_”。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>如果使用 om 脚本部署时,则日志路径为 “/var/log/gaussdb/_用户名_”。 + +**日志文件命名格式** + +日志文件命名格式为: + +- 工具名-日志创建时间.log +- 工具名-日志创建时间-current.log + +其中,“工具名-日志创建时间.log”是历史日志文件,“工具名-日志创建时间-current.log”是当前日志文件。 + +如果日志大小超过 16MB ,在下一次调用该工具时,会重命名当前日志文件为历史日志文件,并以当前时间生成新的当前日志文件。 + +例如将“gs\_guc-2015-01-16\_183728-current.log”重命名为“gs\_guc-2015-01-16\_183728.log”,然后重新生成“gs\_guc-2015-01-17\_142216-current.log”。 + +**维护建议** + +建议定时对过期的日志文件进行转储,以避免大量日志占用太多的磁盘空间和避免重要日志丢失。 + +## 审计日志 + +审计功能开启时会不断产生大量的审计日志,占用磁盘空间。用户可以根据磁盘空间的大小设置审计日志维护策略。 + +关于如何设置审计日志维护策略请参见《开发者指南》中“管理数据库安全 \> 设置数据库审计 \> 维护审计日志”章节。 + +## WAL日志 + +预写式日志WAL(Write Ahead Log,也称为 Xlog)是实现事务日志的标准方法,对数据文件(表和索引的载体)持久化修改之前必须先持久化相应的日志。如果要修改数据文件,必须是在这些修改操作已经记录到日志文件之后才能进行修改,即在描述这些变化的日志记录刷新到永久存储器之后。在系统崩溃时,可以使用 WAL 日志对 openGauss 进行恢复操作。 + +**日志文件存储路径** + +以一个数据库节点为例,默认在“/gaussdb/data/data\_dn/pg\_xlog”目录下。 + +其中“/gaussdb/data/data\_dn”代表 openGauss 节点的数据目录。 + +**日志文件命名格式** + +日志文件以段文件的形式存储的,每个段为 16MB ,并分割成若干页,每页 8KB 。对 WAL 日志的命名说明如下:一个段文件的名称由 24 个十六进制组成,分为三个部分,每个部分由 8 个十六进制字符组成。第一部分表示时间线,第二部分表示日志文件标号,第三部分表示日志文件的段标号。时间线由 1 开始,日志文件标号和日志文件的段标号由 0 开始。 + +例如,系统中的第一个事务日志文件是 000000010000000000000000 。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>这些数字一般情况下是顺序增长使用的(要把所有可用数字都用光也需要非常长的时间),但也存在循环使用的情况。 + +**日志内容说明** + +WAL 日志的内容取决于记录事务的类型,在系统崩溃时可以利用 WAL 日志进行恢复。 + +默认配置下, openGauss 每次启动时会先读取 WAL 日志进行恢复。 + +**维护建议** + +WAL 日志对数据库异常恢复有重要的作用,建议定期对 WAL 日志进行备份。 + +## 性能日志 + +性能日志主要关注外部资源的访问性能问题。性能日志指的是数据库系统在运行时检测物理资源的运行状态的日志,在对外部资源进行访问时的性能检测,包括磁盘、Hadoop openGauss 等外部资源的访问检测信息。在出现性能问题时,可以借助性能日志及时的定位问题发生的原因,能极大地提升问题解决效率。 + +**日志文件存储路径** + +数据库节点的性能日志目录在“$GAUSSLOG/gs\_profile”中各自对应的目录下。 + +**日志文件命名格式** + +数据库节点的性能日志的命名规则: + +postgresql-创建时间.prf + +默认情况下,每日 0 点或者日志文件大于 20MB 或者数据库实例(数据库节点)重新启动后,会生成新的日志文件。 + +**日志内容说明** + +数据库节点每一行日志内容的默认格式: + +主机名称 + 日期 + 时间 + 实例名称 + 线程号 + 日志内容。 + diff --git "a/content/zh/docs/Administratorguide/\347\212\266\346\200\201\346\237\245\350\257\242.md" "b/content/zh/docs/Administratorguide/\347\212\266\346\200\201\346\237\245\350\257\242.md" index 1dffbb330..41ec635c9 100644 --- "a/content/zh/docs/Administratorguide/\347\212\266\346\200\201\346\237\245\350\257\242.md" +++ "b/content/zh/docs/Administratorguide/\347\212\266\346\200\201\346\237\245\350\257\242.md" @@ -1,227 +1,228 @@ -# 状态查询 - -## 背景信息 - -openGauss支持查看整个openGauss的状态,通过查询结果确认openGauss或者单个主机的运行状态是否正常。 - -## 前提条件 - -openGauss已经启动。 - -## 操作步骤 - -1. 以操作系统用户omm登录数据库主节点。 - -2. 使用如下命令查询openGauss状态: - - ``` - gs_om -t status --detail - ``` - - openGauss状态显示结果的参数说明请参见[表1](#zh-cn_topic_0237088790_table9610118112610)。 - - 若要查询某主机上的实例状态,请在命令中增加“-h”项。示例如下: - - ``` - gs_om -t status -h plat2 - ``` - - 其中,plat2为待查询主机的名称。 - - -## 参数说明 - -**表 1** 节点角色说明 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

字段

-

字段含义

-

字段值

-

cluster_state

-

openGauss状态。显示整个openGauss是否运行正常。

-
  • Normal:表示openGauss可用,且数据有冗余备份。所有进程都在运行,主备关系正常。
  • Unavailable:表示openGauss不可用。
  • Degraded:表示openGauss可用,但存在故障的数据库节点数据库主节点实例。
-

node

-

主机名称

-

表示该实例所在的主机名称。多AZ时会显示AZ编号。

-

node_ip

-

主机IP

-

表示该实例所在的主机IP。

-

instance

-

实例ID

-

表示该实例的ID。

-

state

-

实例角色

-
  • Normal:表示单主机实例。
  • Primary:表示实例为主实例。
  • Standby:表示实例为备实例。
  • Cascade Standby:表示实例为级联备实例。
  • Secondary:表示实例为从备实例。
  • Pending:表示该实例在仲裁阶段。
  • Unknown:表示实例状态未知。
  • Down:表示实例处于宕机状态。
  • Abnormal:表示节点处于异常状态。
  • Manually stopped:表示节点已经被手动停止。
-
- - - -每个角色也存在不同的状态,例如启动、连接等,其各个状态说明如下: - -**表 2** 节点状态说明 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

状态

-

字段含义

-

Normal

-

表示节点启动正常

-

Need repair

-

当前节点需要修复

-

Starting

-

节点正在启动中

-

Wait promoting

-

节点正等待升级中,例如备机向主机发送升级请求后,正在等待主机回应时的状态

-

Promoting

-

备节点正在升级为主节点的状态

-

Demoting

-

节点正在降级中,如主机正在降为备机中

-

Building

-

备机启动失败,需要重建

-

Catchup

-

备节点正在追赶主节点

-

Coredump

-

节点程序崩溃

-

Unknown

-

节点状态未知

-
- - - -当节点出现Need repair状态时,可能需要对该节点进行重建使其恢复正常。通常情况下,节点重建原因说明如下: - -**表 3** 节点重建原因说明 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

状态

-

字段含义

-

Normal

-

表示节点启动正常

-

WAL segment removed

-

主机日志WAL日志不存在,备机日志比主机日志新

-

Disconnect

-

备机不能连接主机

-

Version not matched

-

主备二进制版本不一致

-

Mode not matched

-

主备角色不匹配,例如两个备机互联

-

System id not matched

-

主备数据库系统id不一致,主备双机要求System ID必须一致

-

Timeline not matched

-

日志时间线不一致

-

Unknown

-

其他原因

-
- - - -## 示例 - -查看openGauss详细状态信息,含实例状态信息。 - -``` -gs_om -t status --detail -[ Cluster State ] - -cluster_state : Normal -redistributing : No -current_az : AZ_ALL - -[ Datanode State ] - - node node_ip port instance state ------------------------------------------------------------------------------------------------------ -1 pekpopgsci00235 10.244.62.204 5432 6001 /opt/gaussdb/cluster/data/dn1 P Primary Normal -2 pekpopgsci00238 10.244.61.81 5432 6002 /opt/gaussdb/cluster/data/dn1 S Standby Normal - -``` - +# 状态查询 + +## 背景信息 + +openGauss 支持查看整个 openGauss 的状态,通过查询结果确认 openGauss 或者单个主机的运行状态是否正常。 + +## 前提条件 + +openGauss 已经启动。 + +## 操作步骤 + +1. 以操作系统用户 omm 登录数据库主节点。 + +2. 使用如下命令查询 openGauss 状态: + + ``` + gs_om -t status --detail + ``` + +openGauss 状态显示结果的参数说明请参见[表 1](#zh-cn_topic_0237088790_table9610118112610)。 + + 若要查询某主机上的实例状态,请在命令中增加“-h”项。示例如下: + + ``` + gs_om -t status -h plat2 + ``` + + 其中, plat2 为待查询主机的名称。 + + +## 参数说明 + +**表 1** 节点角色说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

字段

+

字段含义

+

字段值

+

cluster_state

+

openGauss 状态。显示整个 openGauss 是否运行正常。

+
  • Normal:表示 openGauss 可用,且数据有冗余备份。所有进程都在运行,主备关系正常。
  • Unavailable:表示 openGauss 不可用。
  • Degraded:表示 openGauss 可用,但存在故障的数据库节点数据库主节点实例。
+

node

+

主机名称

+

表示该实例所在的主机名称。多 AZ 时会显示 AZ 编号。

+

node_ip

+

主机 IP

+

表示该实例所在的主机 IP 。

+

instance

+

实例 ID

+

表示该实例的 ID 。

+

state

+

实例角色

+
  • Normal:表示单主机实例。
  • Primary:表示实例为主实例。
  • Standby:表示实例为备实例。
  • Cascade Standby:表示实例为级联备实例。
  • Secondary:表示实例为从备实例。
  • Pending:表示该实例在仲裁阶段。
  • Unknown:表示实例状态未知。
  • Down:表示实例处于宕机状态。
  • Abnormal:表示节点处于异常状态。
  • Manually stopped:表示节点已经被手动停止。
+
+ + + + +每个角色也存在不同的状态,例如启动、连接等,其各个状态说明如下: + +**表 2** 节点状态说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

状态

+

字段含义

+

Normal

+

表示节点启动正常

+

Need repair

+

当前节点需要修复

+

Starting

+

节点正在启动中

+

Wait promoting

+

节点正等待升级中,例如备机向主机发送升级请求后,正在等待主机回应时的状态

+

Promoting

+

备节点正在升级为主节点的状态

+

Demoting

+

节点正在降级中,如主机正在降为备机中

+

Building

+

备机启动失败,需要重建

+

Catchup

+

备节点正在追赶主节点

+

Coredump

+

节点程序崩溃

+

Unknown

+

节点状态未知

+
+ + + +当节点出现 Need repair 状态时,可能需要对该节点进行重建使其恢复正常。通常情况下,节点重建原因说明如下: + +**表 3** 节点重建原因说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

状态

+

字段含义

+

Normal

+

表示节点启动正常

+

WAL segment removed

+

主机日志 WAL 日志不存在,备机日志比主机日志新

+

Disconnect

+

备机不能连接主机

+

Version not matched

+

主备二进制版本不一致

+

Mode not matched

+

主备角色不匹配,例如两个备机互联

+

System id not matched

+

主备数据库系统 id 不一致,主备双机要求 System ID 必须一致

+

Timeline not matched

+

日志时间线不一致

+

Unknown

+

其他原因

+
+ + + +## 示例 + +查看 openGauss 详细状态信息,含实例状态信息。 + +``` +gs_om -t status --detail +[ Cluster State ] + +cluster_state : Normal +redistributing : No +current_az : AZ_ALL + +[ Datanode State ] + + node node_ip port instance state +----------------------------------------------------------------------------------------------------- +1 pekpopgsci00235 10.244.62.204 5432 6001 /opt/gaussdb/cluster/data/dn1 P Primary Normal +2 pekpopgsci00238 10.244.61.81 5432 6002 /opt/gaussdb/cluster/data/dn1 S Standby Normal + +``` + diff --git "a/content/zh/docs/Administratorguide/\347\224\237\346\210\220\351\205\215\347\275\256\346\226\207\344\273\266.md" "b/content/zh/docs/Administratorguide/\347\224\237\346\210\220\351\205\215\347\275\256\346\226\207\344\273\266.md" index 4d613a2ef..366c58e5c 100644 --- "a/content/zh/docs/Administratorguide/\347\224\237\346\210\220\351\205\215\347\275\256\346\226\207\344\273\266.md" +++ "b/content/zh/docs/Administratorguide/\347\224\237\346\210\220\351\205\215\347\275\256\346\226\207\344\273\266.md" @@ -1,63 +1,63 @@ -# 生成配置文件 - -## 背景信息 - -在openGauss使用过程中,如果静态配置文件无意损坏后,会影响openGauss感知openGauss拓扑结构和主备关系。使用gs\_om工具生成的静态配置文件,可以替换已经损坏的配置文件,保证openGauss的正常运行。 - -## 前置条件 - -无。 - -## 操作步骤 - -1. 以操作系统用户omm登录数据库主节点。 -2. 执行如下命令会在本服务器指定目录下生成配置文件。 - - ``` - gs_om -t generateconf -X /opt/software/openGauss/clusterconfig.xml --distribute - ``` - - /opt/software/openGauss/clusterconfig.xml为openGauss安装时的XML配置文件。 - - ![](public_sys-resources/icon-note.gif) **说明:** - - - 执行命令后,日志信息中会有新文件的存放的目录。以一主两备环境为例,打开新文件存放目录,会出现3个以主机名命名的配置文件,需要用这3个文件分别替换对应主机的配置文件。 - - - 若不使用-\-distribute参数,需执行步骤[3](#zh-cn_topic_0237088792_zh-cn_topic_0059777801_lc1ce55d572e44beea3e47b1b427fae3e)将静态配置文件分配到对应节点;若使用-\-distribute参数,则会将生成的静态配置文件自动分配到对应节点,无需执行步骤[3](#zh-cn_topic_0237088792_zh-cn_topic_0059777801_lc1ce55d572e44beea3e47b1b427fae3e)。 - -3. (可选)分别替换3台主机的/opt/gaussdb/app/bin目录下损坏的静态配置文件。 - - 这里以其中一台主机为例进行介绍。 - - ``` - mv /opt/huawei/wisequery/script/static_config_files/cluster_static_config_SIA1000056771 /opt/gaussdb/app/bin/cluster_static_config - ``` - - -## 示例 - -在openGauss中的任意主机上执行如下命令,生成配置文件: - -``` -gs_om -t generateconf -X /opt/software/openGauss/clusterconfig.xml --distribute -Generating static configuration files for all nodes. -Creating temp directory to store static configuration files. -Successfully created the temp directory. -Generating static configuration files. -Successfully generated static configuration files. -Static configuration files for all nodes are saved in /opt/huawei/Bigdata/mppdb/wisequery/script/static_config_files. -Distributing static configuration files to all nodes. -Successfully distributed static configuration files. -``` - -打开生成的配置文件目录,会看到新生成的3个文件: - -``` -cd /opt/huawei/Bigdata/mppdb/wisequery/script/static_config_files -ll -total 456 --rwxr-xr-x 1 omm dbgrp 155648 2016-07-13 15:51 cluster_static_config_plat1 --rwxr-xr-x 1 omm dbgrp 155648 2016-07-13 15:51 cluster_static_config_plat2 --rwxr-xr-x 1 omm dbgrp 155648 2016-07-13 15:51 cluster_static_config_plat3 -``` - +# 生成配置文件 + +## 背景信息 + +在 openGauss 使用过程中,如果静态配置文件无意损坏后,会影响 openGauss 感知 openGauss 拓扑结构和主备关系。使用 gs\_om 工具生成的静态配置文件,可以替换已经损坏的配置文件,保证 openGauss 的正常运行。 + +## 前置条件 + +无。 + +## 操作步骤 + +1. 以操作系统用户 omm 登录数据库主节点。 +2. 执行如下命令会在本服务器指定目录下生成配置文件。 + + ``` + gs_om -t generateconf -X /opt/software/openGauss/clusterconfig.xml --distribute + ``` + + /opt/software/openGauss/clusterconfig.xml 为 openGauss 安装时的 XML 配置文件。 + + ![](public_sys-resources/icon-note.gif) **说明:** + + - 执行命令后,日志信息中会有新文件的存放的目录。以一主两备环境为例,打开新文件存放目录,会出现 3 个以主机名命名的配置文件,需要用这 3 个文件分别替换对应主机的配置文件。 + + - 若不使用 `--distribute` 参数,需执行步骤 [3](#zh-cn_topic_0237088792_zh-cn_topic_0059777801_lc1ce55d572e44beea3e47b1b427fae3e) 将静态配置文件分配到对应节点;若使用 `-\-distribute` 参数,则会将生成的静态配置文件自动分配到对应节点,无需执行步骤[3](#zh-cn_topic_0237088792_zh-cn_topic_0059777801_lc1ce55d572e44beea3e47b1b427fae3e)。 + +3. (可选)分别替换 3 台主机的 /opt/gaussdb/app/bin 目录下损坏的静态配置文件。 + + 这里以其中一台主机为例进行介绍。 + + ``` + mv /opt/huawei/wisequery/script/static_config_files/cluster_static_config_SIA1000056771 /opt/gaussdb/app/bin/cluster_static_config + ``` + + +## 示例 + +在 openGauss 中的任意主机上执行如下命令,生成配置文件: + +``` +gs_om -t generateconf -X /opt/software/openGauss/clusterconfig.xml --distribute +Generating static configuration files for all nodes. +Creating temp directory to store static configuration files. +Successfully created the temp directory. +Generating static configuration files. +Successfully generated static configuration files. +Static configuration files for all nodes are saved in /opt/huawei/Bigdata/mppdb/wisequery/script/static_config_files. +Distributing static configuration files to all nodes. +Successfully distributed static configuration files. +``` + +打开生成的配置文件目录,会看到新生成的 3 个文件: + +``` +cd /opt/huawei/Bigdata/mppdb/wisequery/script/static_config_files +ll +total 456 +-rwxr-xr-x 1 omm dbgrp 155648 2016-07-13 15:51 cluster_static_config_plat1 +-rwxr-xr-x 1 omm dbgrp 155648 2016-07-13 15:51 cluster_static_config_plat2 +-rwxr-xr-x 1 omm dbgrp 155648 2016-07-13 15:51 cluster_static_config_plat3 +``` + diff --git "a/content/zh/docs/Administratorguide/\351\253\230\345\215\261\346\223\215\344\275\234\344\270\200\350\247\210\350\241\250.md" "b/content/zh/docs/Administratorguide/\351\253\230\345\215\261\346\223\215\344\275\234\344\270\200\350\247\210\350\241\250.md" index 03cb26010..48d10e427 100644 --- "a/content/zh/docs/Administratorguide/\351\253\230\345\215\261\346\223\215\344\275\234\344\270\200\350\247\210\350\241\250.md" +++ "b/content/zh/docs/Administratorguide/\351\253\230\345\215\261\346\223\215\344\275\234\344\270\200\350\247\210\350\241\250.md" @@ -1,98 +1,98 @@ -# 高危操作一览表 - -各项操作请严格遵守指导书操作,同时如下高危操作禁止随意执行。 - -[表1](#zh-cn_topic_0237088894_zh-cn_topic_0059777750_t725e2ece7f7a4d5f962b2c314e7e836b)中描述在产品的操作与维护阶段,进行日常操作时应注意的严禁操作。 - -**表 1** 禁用操作 - - - - - - - - - - - - - -

操作名称

-

操作风险

-

严禁修改数据目录下文件名、权限。

-

导致数据库节点实例出现严重错误,并且无法修复。

-

严禁删除数据库系统表或系统表数据。

-

删除系统表将导致无法正常进行业务操作。

-
- -[表2](#zh-cn_topic_0237088894_zh-cn_topic_0059777750_tf7f1e2a0747f496baffa365814127a3c)中描述在产品的操作与维护阶段,进行日常操作时应注意的高危操作。 - -**表 2** 高危操作 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

操作分类

-

操作名称

-

操作风险

-

风险等级

-

规避措施

-

重大操作观察项目

-

数据库

-

不能直接在配置文件中手动修改端口号。

-

导致数据库启动不了或者连接不上。

-

▲▲▲▲▲

-

尽量使用工具修改,不要手动操作。

-

无。

-

不能随意修改pg_hba.conf配置文件中的内容。

-

导致客户端连接不上。

-

▲▲▲▲▲

-

严格根据产品手册操作。

-

无。

-

不能手动修改pg_xlog的内容。

-

导致数据库无法启动,数据不一致。

-

▲▲▲▲▲

-

尽量使用工具修改,不要手动操作。

-

无。

-

作业

-

使用kill -9终止作业进程。

-

导致作业占用的系统资源无法释放。

-

▲▲▲

-

尽量登录数据库使用pg_terminate_backend、pg_cancel_backend操作终止作业,或使用Ctrl+C终止作业进程。

-

观察资源使用情况。

-
- +# 高危操作一览表 + +各项操作请严格遵守指导书操作,同时如下高危操作禁止随意执行。 + +[表1](#zh-cn_topic_0237088894_zh-cn_topic_0059777750_t725e2ece7f7a4d5f962b2c314e7e836b)中描述在产品的操作与维护阶段,进行日常操作时应注意的严禁操作。 + +**表 1** 禁用操作 + + + + + + + + + + + + + +

操作名称

+

操作风险

+

严禁修改数据目录下文件名、权限。

+

导致数据库节点实例出现严重错误,并且无法修复。

+

严禁删除数据库系统表或系统表数据。

+

删除系统表将导致无法正常进行业务操作。

+
+ +[表2](#zh-cn_topic_0237088894_zh-cn_topic_0059777750_tf7f1e2a0747f496baffa365814127a3c)中描述在产品的操作与维护阶段,进行日常操作时应注意的高危操作。 + +**表 2** 高危操作 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

操作分类

+

操作名称

+

操作风险

+

风险等级

+

规避措施

+

重大操作观察项目

+

数据库

+

不能直接在配置文件中手动修改端口号。

+

导致数据库启动不了或者连接不上。

+

▲▲▲▲▲

+

尽量使用工具修改,不要手动操作。

+

无。

+

不能随意修改 pg_hba.conf 配置文件中的内容。

+

导致客户端连接不上。

+

▲▲▲▲▲

+

严格根据产品手册操作。

+

无。

+

不能手动修改 pg_xlog 的内容。

+

导致数据库无法启动,数据不一致。

+

▲▲▲▲▲

+

尽量使用工具修改,不要手动操作。

+

无。

+

作业

+

使用 kill -9 终止作业进程。

+

导致作业占用的系统资源无法释放。

+

▲▲▲

+

尽量登录数据库使用 pg_terminate_backend、pg_cancel_backend 操作终止作业,或使用 Ctrl+C 终止作业进程。

+

观察资源使用情况。

+
+ diff --git "a/content/zh/docs/CharacteristicDescription/AI\350\203\275\345\212\233-0.md" "b/content/zh/docs/CharacteristicDescription/AI\350\203\275\345\212\233-0.md" index c9caa066d..a3526f8cf 100644 --- "a/content/zh/docs/CharacteristicDescription/AI\350\203\275\345\212\233-0.md" +++ "b/content/zh/docs/CharacteristicDescription/AI\350\203\275\345\212\233-0.md" @@ -1,14 +1,14 @@ -# AI能力 - -- **[Predictor: AI查询时间预测](Predictor-AI查询时间预测.md)** - -- **[X-Tuner: 参数调优与诊断](X_Tuner_参数调优与诊断.md)** - -- **[SQLdiag: 慢SQL发现](SQLdiag_慢SQL发现.md)** - -- **[Anomaly-detection:数据库指标采集、预测与异常监控](Anomaly_detection_数据库指标采集_预测与异常监控.md)** - -- **[Index-advisor:索引推荐](Index-advisor_索引推荐.md)** - -- **[DeepSQL:库内AI算法](DeepSQL_库内AI算法.md)** - +# AI能力 + +- **[Predictor: AI查询时间预测](Predictor-AI查询时间预测.md)** + +- **[X-Tuner: 参数调优与诊断](X_Tuner_参数调优与诊断.md)** + +- **[SQLdiag: 慢 SQL 发现](SQLdiag_慢 SQL 发现.md)** + +- **[Anomaly-detection:数据库指标采集、预测与异常监控](Anomaly_detection_数据库指标采集_预测与异常监控.md)** + +- **[Index-advisor:索引推荐](Index-advisor_索引推荐.md)** + +- **[DeepSQL:库内 AI 算法](DeepSQL_库内 AI 算法.md)** + diff --git "a/content/zh/docs/CharacteristicDescription/Anomaly_detection_\346\225\260\346\215\256\345\272\223\346\214\207\346\240\207\351\207\207\351\233\206_\351\242\204\346\265\213\344\270\216\345\274\202\345\270\270\347\233\221\346\216\247.md" "b/content/zh/docs/CharacteristicDescription/Anomaly_detection_\346\225\260\346\215\256\345\272\223\346\214\207\346\240\207\351\207\207\351\233\206_\351\242\204\346\265\213\344\270\216\345\274\202\345\270\270\347\233\221\346\216\247.md" index ac8a2e493..375584e0f 100644 --- "a/content/zh/docs/CharacteristicDescription/Anomaly_detection_\346\225\260\346\215\256\345\272\223\346\214\207\346\240\207\351\207\207\351\233\206_\351\242\204\346\265\213\344\270\216\345\274\202\345\270\270\347\233\221\346\216\247.md" +++ "b/content/zh/docs/CharacteristicDescription/Anomaly_detection_\346\225\260\346\215\256\345\272\223\346\214\207\346\240\207\351\207\207\351\233\206_\351\242\204\346\265\213\344\270\216\345\274\202\345\270\270\347\233\221\346\216\247.md" @@ -1,38 +1,38 @@ -# Anomaly-detection:数据库指标采集、预测与异常监控 - -## 可获得性 - -本特性自openGauss1.1.0版本开始引入。 - -## 特性简介 - -anomaly\_detection是openGauss集成的、可以用于数据库指标采集、预测以及异常监控与诊断的AI工具,是dbmind套间中的一个组件。支持采集的信息包括IO\_Read、IO\_Write、CPU\_Usage、Memory\_Usage以及数据库所占磁盘空间等。anomaly\_detection可以同时监控多个指标,并预测每个指标未来的变化趋势,当发现某个指标在未来某段时间或者某个时刻会超出人工设置的阈值,该工具会通过日志进行报警。 - -## 客户价值 - -- 极大简化运维人员工作,释放大量劳动力,为公司节省成本。 -- 为用户提前发现异常情况,防止数据库发生意外,导致更大的损失。 - -## 特性描述 - -anomaly\_detection由agent和detector两部分组成。agent和openGauss数据库环境部署在同一个服务器上,agent模块主要有两个作用。一个是定时采集数据库指标数据,并将采集到的数据存放到缓冲队列中;另一个作用是将缓冲队列中数据定时发送到detector端。 - -detector模块基于http或https和agent模块通信,因此它可以部署到任何可以与agent端进行通信的服务器上,该模块主要主要有两个作用。一个是接受agent端发送的数据,并将收集到的数据缓存在本地;另外一个作用是基于收集到的数据库指标数据,对该指标的未来变化趋势进行预测和异常报警。 - -## 特性增强 - -无。 - -## 特性约束 - -- 数据库状态正常,并且用户已将数据目录写入环境变量,并以PGDATA命名。 -- 使用登录到数据库宿主机上的Linux用户,需要将$**GAUSSHOME/bin**添加到PATH环境变量中,即能够直接运行gsql、gs\_guc、gs\_ctl等数据库运维工具。 -- Python版本建议为Python3.6及以上,且运行环境中已经安装相应依赖,并能够正常启动调优程序。 -- 本工具由Agent和Detector组成,Agent和Detector之间通过'http'或者'https'方式传递数据,因此需要保证Agent服务器和Detector服务器之间能够正常通信。 -- Detector模块运行server和monitor服务, 需要分别启动。 -- 如果使用'https'方式进行通信,需要准备CA证书以及Agent和Detector的证书和密钥,并分别放入项目根目录certificate下的ca、agent、server中,同时将密钥加密密码放入certificate的pwf中,并将其权限设置为600,防止其他用户进行读写操作。用户也可以使用share中的脚本生成证书和密钥。 - -## 依赖关系 - -无。 - +# Anomaly-detection:数据库指标采集、预测与异常监控 + +## 可获得性 + +本特性自openGauss1.1.0版本开始引入。 + +## 特性简介 + +anomaly\_detection是 openGauss 集成的、可以用于数据库指标采集、预测以及异常监控与诊断的 AI 工具,是 dbmind 套间中的一个组件。支持采集的信息包括IO\_Read、IO\_Write、CPU\_Usage、Memory\_Usage以及数据库所占磁盘空间等。anomaly\_detection可以同时监控多个指标,并预测每个指标未来的变化趋势,当发现某个指标在未来某段时间或者某个时刻会超出人工设置的阈值,该工具会通过日志进行报警。 + +## 客户价值 + +- 极大简化运维人员工作,释放大量劳动力,为公司节省成本。 +- 为用户提前发现异常情况,防止数据库发生意外,导致更大的损失。 + +## 特性描述 + +anomaly\_detection由 agent 和 detector 两部分组成。 agent 和 openGauss 数据库环境部署在同一个服务器上, agent 模块主要有两个作用。一个是定时采集数据库指标数据,并将采集到的数据存放到缓冲队列中;另一个作用是将缓冲队列中数据定时发送到 detector 端。 + +detector 模块基于 http 或 https 和 agent 模块通信,因此它可以部署到任何可以与 agent 端进行通信的服务器上,该模块主要主要有两个作用。一个是接受 agent 端发送的数据,并将收集到的数据缓存在本地;另外一个作用是基于收集到的数据库指标数据,对该指标的未来变化趋势进行预测和异常报警。 + +## 特性增强 + +无。 + +## 特性约束 + +- 数据库状态正常,并且用户已将数据目录写入环境变量,并以 PGDATA 命名。 +- 使用登录到数据库宿主机上的 Linux 用户,需要将$**GAUSSHOME/bin**添加到 PATH 环境变量中,即能够直接运行gsql、gs\_guc、gs\_ctl等数据库运维工具。 +- Python版本建议为Python3.6及以上,且运行环境中已经安装相应依赖,并能够正常启动调优程序。 +- 本工具由 Agent 和 Detector 组成, Agent 和 Detector 之间通过'http'或者'https'方式传递数据,因此需要保证 Agent 服务器和 Detector 服务器之间能够正常通信。 +- Detector模块运行 server 和 monitor 服务, 需要分别启动。 +- 如果使用'https'方式进行通信,需要准备 CA 证书以及 Agent 和 Detector 的证书和密钥,并分别放入项目根目录 certificate 下的ca、agent、server中,同时将密钥加密密码放入 certificate 的 pwf 中,并将其权限设置为 600 ,防止其他用户进行读写操作。用户也可以使用 share 中的脚本生成证书和密钥。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/CBO\344\274\230\345\214\226\345\231\250.md" "b/content/zh/docs/CharacteristicDescription/CBO\344\274\230\345\214\226\345\231\250.md" index 67437ede6..feca14d58 100644 --- "a/content/zh/docs/CharacteristicDescription/CBO\344\274\230\345\214\226\345\231\250.md" +++ "b/content/zh/docs/CharacteristicDescription/CBO\344\274\230\345\214\226\345\231\250.md" @@ -1,30 +1,30 @@ -# CBO优化器 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -openGauss优化器是基于代价的优化(Cost-Based Optimization,简称CBO)。 - -## 客户价值 - -openGauss CBO优化器能够在众多计划中依据代价选出最高效的执行计划,最大限度的满足客户业务要求。 - -## 特性描述 - -在CBO优化器模型下,数据库根据表的元组数、字段宽度、NULL记录比率、DISTINCT值、MCV值、HB值等表的特征值,以及一定的代价计算模型,计算出每一个执行步骤的不同执行方式的输出元组数和执行代价(cost),进而选出整体执行代价最小、首元组返回代价最小的执行方式进行执行。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# CBO优化器 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +openGauss 优化器是基于代价的优化(Cost-Based Optimization,简称CBO)。 + +## 客户价值 + +openGauss CBO 优化器能够在众多计划中依据代价选出最高效的执行计划,最大限度的满足客户业务要求。 + +## 特性描述 + +在 CBO 优化器模型下,数据库根据表的元组数、字段宽度、NULL记录比率、DISTINCT值、MCV值、HB值等表的特征值,以及一定的代价计算模型,计算出每一个执行步骤的不同执行方式的输出元组数和执行代价(cost),进而选出整体执行代价最小、首元组返回代价最小的执行方式进行执行。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git a/content/zh/docs/CharacteristicDescription/CharacteristicDescription.md b/content/zh/docs/CharacteristicDescription/CharacteristicDescription.md index c767f4795..4d7ae3c97 100644 --- a/content/zh/docs/CharacteristicDescription/CharacteristicDescription.md +++ b/content/zh/docs/CharacteristicDescription/CharacteristicDescription.md @@ -1,4 +1,4 @@ -# 特性描述 - -本文档对openGauss数据库支持的特性进行了详细描述,包含特性的可获得性、特性简介、客户价值、特性描述、特性增强、特性约束和依赖关系等。 - +# 特性描述 + +本文档对 openGauss 数据库支持的特性进行了详细描述,包含特性的可获得性、特性简介、客户价值、特性描述、特性增强、特性约束和依赖关系等。 + diff --git "a/content/zh/docs/CharacteristicDescription/Copy\346\216\245\345\217\243\346\224\257\346\214\201\345\256\271\351\224\231\346\234\272\345\210\266.md" "b/content/zh/docs/CharacteristicDescription/Copy\346\216\245\345\217\243\346\224\257\346\214\201\345\256\271\351\224\231\346\234\272\345\210\266.md" index dda2d694d..b7a68a8a0 100644 --- "a/content/zh/docs/CharacteristicDescription/Copy\346\216\245\345\217\243\346\224\257\346\214\201\345\256\271\351\224\231\346\234\272\345\210\266.md" +++ "b/content/zh/docs/CharacteristicDescription/Copy\346\216\245\345\217\243\346\224\257\346\214\201\345\256\271\351\224\231\346\234\272\345\210\266.md" @@ -1,30 +1,30 @@ -# Copy接口支持容错机制 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -支持将Copy过程中的部分错误导入到指定的错误表中,并且保持Copy过程不被中断。 - -## 客户价值 - -提升Copy功能的可用性和易用性,提升对于源数据格式异常等常见错误的容忍性和鲁棒性。 - -## 特性描述 - -openGauss提供用于创建函数的封装好的Copy错误表,并允许用户在使用Copy From指令时指定容错选项,使得Copy From语句在执行过程中部分解析、数据格式、字符集等相关的报错不会报错中断事务,而是被记录至错误表中,使得在Copy From的目标文件即使有少量数据错误也可以完成入库操作。用户随后可以在错误表中对相关的错误进行定位以及进一步排查。 - -## 特性增强 - -无。 - -## 特性约束 - -支持容错的具体错误种类请参见《开发者指南》中“导入数据 \> 使用COPY FROM STDIN导入数据 \> 处理错误表”章节。 - -## 依赖关系 - -无。 - +# Copy接口支持容错机制 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +支持将 Copy 过程中的部分错误导入到指定的错误表中,并且保持 Copy 过程不被中断。 + +## 客户价值 + +提升 Copy 功能的可用性和易用性,提升对于源数据格式异常等常见错误的容忍性和鲁棒性。 + +## 特性描述 + +openGauss 提供用于创建函数的封装好的 Copy 错误表,并允许用户在使用 Copy From 指令时指定容错选项,使得 Copy From 语句在执行过程中部分解析、数据格式、字符集等相关的报错不会报错中断事务,而是被记录至错误表中,使得在 Copy From 的目标文件即使有少量数据错误也可以完成入库操作。用户随后可以在错误表中对相关的错误进行定位以及进一步排查。 + +## 特性增强 + +无。 + +## 特性约束 + +支持容错的具体错误种类请参见《开发者指南》中“导入数据 \> 使用 COPY FROM STDIN 导入数据 \> 处理错误表”章节。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/DeepSQL_\345\272\223\345\206\205AI\347\256\227\346\263\225.md" "b/content/zh/docs/CharacteristicDescription/DeepSQL_\345\272\223\345\206\205AI\347\256\227\346\263\225.md" index 6a8f96b30..3b8a82736 100644 --- "a/content/zh/docs/CharacteristicDescription/DeepSQL_\345\272\223\345\206\205AI\347\256\227\346\263\225.md" +++ "b/content/zh/docs/CharacteristicDescription/DeepSQL_\345\272\223\345\206\205AI\347\256\227\346\263\225.md" @@ -1,32 +1,32 @@ -# DeepSQL:库内AI算法 - -## 可获得性 - -本特性自openGauss1.1.0版本开始引入。 - -## 特性简介 - -数据库DeepSQL特性实现DB4AI功能,即在数据库内实现AI算法,以更好的支撑大数据的快速分析和计算。这里提供了一整套基于SQL的机器学习、数据挖掘以及统计学的算法,用户可以直接使用SQL进行机器学习工作。Deep SQL能够抽象出端到端从数据到模型的研发过程,配合底层的引擎及自动优化,具备基础SQL知识的技术人员即可完成大部分的机器学习模型训练及预测任务。整个分析和处理都运行在数据库引擎中,用户可以直接分析和处理数据库内的数据,不需要在数据库和其它平台之间进行数据传递,避免在多个环境之间进行不必要地数据移动。 - -## 客户价值 - -客户可以在数据库内部直接使用AI算法,避免了大量数据的迁移带来的额外代价,同时模型可以由数据库统一管理,使用十分方便。 - -## 特性描述 - -DeepSQL是对openGauss DB4AI能力的增强。DeepSQL将常用的机器学习算法封装为UDF,支持60多个常用算法。其中包括回归算法(例如线性回归、逻辑回归、随机森林等)、分类算法(比如KNN等)、聚类算法(比如K-means)等。除了基础的机器学习算法之外,还包括图相关的算法,比如最短路径、图形直径等算法;此外还支持数据处理(比如PCA)、稀疏向量、统计学常用算法(比如协方差、Pearson系数计算等)、训练集测试集分割方法、交叉验证方法等。 - -## 特性增强 - -无。 - -## 特性约束 - -- 环境中安装python2.7.12以上版本Python。 -- 数据库需要开启对PL/Python存储过程的支持。 -- 安装算法库需要拥有管理员权限的用户。 - -## 依赖关系 - -无。 - +# DeepSQL:库内 AI 算法 + +## 可获得性 + +本特性自openGauss1.1.0版本开始引入。 + +## 特性简介 + +数据库 DeepSQL 特性实现 DB4AI 功能,即在数据库内实现 AI 算法,以更好的支撑大数据的快速分析和计算。这里提供了一整套基于 SQL 的机器学习、数据挖掘以及统计学的算法,用户可以直接使用 SQL 进行机器学习工作。 Deep SQL 能够抽象出端到端从数据到模型的研发过程,配合底层的引擎及自动优化,具备基础 SQL 知识的技术人员即可完成大部分的机器学习模型训练及预测任务。整个分析和处理都运行在数据库引擎中,用户可以直接分析和处理数据库内的数据,不需要在数据库和其它平台之间进行数据传递,避免在多个环境之间进行不必要地数据移动。 + +## 客户价值 + +客户可以在数据库内部直接使用 AI 算法,避免了大量数据的迁移带来的额外代价,同时模型可以由数据库统一管理,使用十分方便。 + +## 特性描述 + +DeepSQL 是对 openGauss DB4AI 能力的增强。 DeepSQL 将常用的机器学习算法封装为 UDF ,支持 60 多个常用算法。其中包括回归算法(例如线性回归、逻辑回归、随机森林等)、分类算法(比如 KNN 等)、聚类算法(比如K-means)等。除了基础的机器学习算法之外,还包括图相关的算法,比如最短路径、图形直径等算法;此外还支持数据处理(比如PCA)、稀疏向量、统计学常用算法(比如协方差、Pearson系数计算等)、训练集测试集分割方法、交叉验证方法等。 + +## 特性增强 + +无。 + +## 特性约束 + +- 环境中安装python2.7.12以上版本 Python 。 +- 数据库需要开启对PL/Python存储过程的支持。 +- 安装算法库需要拥有管理员权限的用户。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/In-place-Update\345\255\230\345\202\250\345\274\225\346\223\216.md" "b/content/zh/docs/CharacteristicDescription/In-place-Update\345\255\230\345\202\250\345\274\225\346\223\216.md" index 7bf8ea628..77d7e6fcb 100644 --- "a/content/zh/docs/CharacteristicDescription/In-place-Update\345\255\230\345\202\250\345\274\225\346\223\216.md" +++ "b/content/zh/docs/CharacteristicDescription/In-place-Update\345\255\230\345\202\250\345\274\225\346\223\216.md" @@ -1,30 +1,30 @@ -# In-place Update存储引擎 - -## 可获得性 - -本特性自openGauss 2.1.0 版本开始引入。 - -## 特性简介 - -In-place Update存储引擎(原地更新),是openGauss 内核新增的一种存储模式。openGauss 内核此前的版本使用的行存储引擎是Append Update(追加更新)模式。追加更新对于业务中的增、删以及HOT\(HeapOnly Tuple\) Update\(即同一页面内更新\)有很好的表现,但对于跨数据页面的非HOT UPDATE场景,垃圾回收不够高效,Ustore存储引擎可很好解决上述问题。 - -## 客户价值 - -In-place Update存储引擎可有效的降低多次更新元组后占用存储空间问题。 - -## 特性描述 - -新增的In-place update存储引擎很好的解决了Append update存储引擎空间膨胀和元组较大的问题,高效回滚段的设计是In-place update存储引擎的基础。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# In-place Update存储引擎 + +## 可获得性 + +本特性自openGauss 2.1.0 版本开始引入。 + +## 特性简介 + +In-place Update存储引擎(原地更新),是 openGauss 内核新增的一种存储模式。 openGauss 内核此前的版本使用的行存储引擎是Append Update(追加更新)模式。追加更新对于业务中的增、删以及HOT\(HeapOnly Tuple\) Update\(即同一页面内更新\)有很好的表现,但对于跨数据页面的非 HOT UPDATE 场景,垃圾回收不够高效, Ustore 存储引擎可很好解决上述问题。 + +## 客户价值 + +In-place Update存储引擎可有效的降低多次更新元组后占用存储空间问题。 + +## 特性描述 + +新增的In-place update存储引擎很好的解决了 Append update 存储引擎空间膨胀和元组较大的问题,高效回滚段的设计是In-place update存储引擎的基础。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/Index-advisor_\347\264\242\345\274\225\346\216\250\350\215\220.md" "b/content/zh/docs/CharacteristicDescription/Index-advisor_\347\264\242\345\274\225\346\216\250\350\215\220.md" index 448e22664..5009adcfc 100644 --- "a/content/zh/docs/CharacteristicDescription/Index-advisor_\347\264\242\345\274\225\346\216\250\350\215\220.md" +++ "b/content/zh/docs/CharacteristicDescription/Index-advisor_\347\264\242\345\274\225\346\216\250\350\215\220.md" @@ -1,34 +1,34 @@ -# Index-advisor:索引推荐 - -## 可获得性 - -本特性自openGauss1.1.0开始引入。 - -## 特性简介 - -Index-advisor工具是一个覆盖多种任务级别和使用场景的数据库智能索引推荐工具,其具备单Query索引推荐功能、虚拟索引功能、workload级别索引推荐功能,可以为用户提供可靠的索引建议。 - -## 客户价值 - -为客户提供快速可靠的索引推荐功能,极大简化了运维人员的工作。 - -## 特性描述 - -单query索引推荐功能支持用户在数据库中直接进行操作,本功能基于查询语句的语义信息和数据库的统计信息,对用户输入的单条查询语句生成推荐的索引;虚拟索引功能支持用户在数据库中直接进行操作,本功能将模拟真实索引的建立,避免真实索引创建所需的时间和空间开销,用户基于虚拟索引,可通过优化器评估该索引对指定查询语句的代价影响;对于workload级别的索引推荐,用户可通过运行数据库外的脚本使用此功能,本功能将包含有多条DML语句的workload作为输入,最终生成一批可对整体workload的执行表现进行优化的索引。 - -## 特性增强 - -无。 - -## 特性约束 - -数据库状态正常、客户端能够正常连接。 - -当前执行用户下安装有gsql工具,该工具路径已被加入到PATH环境变量中。 - -具备Python3.6+的环境。 - -## 依赖关系 - -无。 - +# Index-advisor:索引推荐 + +## 可获得性 + +本特性自openGauss1.1.0开始引入。 + +## 特性简介 + +Index-advisor工具是一个覆盖多种任务级别和使用场景的数据库智能索引推荐工具,其具备单 Query 索引推荐功能、虚拟索引功能、workload级别索引推荐功能,可以为用户提供可靠的索引建议。 + +## 客户价值 + +为客户提供快速可靠的索引推荐功能,极大简化了运维人员的工作。 + +## 特性描述 + +单 query 索引推荐功能支持用户在数据库中直接进行操作,本功能基于查询语句的语义信息和数据库的统计信息,对用户输入的单条查询语句生成推荐的索引;虚拟索引功能支持用户在数据库中直接进行操作,本功能将模拟真实索引的建立,避免真实索引创建所需的时间和空间开销,用户基于虚拟索引,可通过优化器评估该索引对指定查询语句的代价影响;对于 workload 级别的索引推荐,用户可通过运行数据库外的脚本使用此功能,本功能将包含有多条 DML 语句的 workload 作为输入,最终生成一批可对整体 workload 的执行表现进行优化的索引。 + +## 特性增强 + +无。 + +## 特性约束 + +数据库状态正常、客户端能够正常连接。 + +当前执行用户下安装有 gsql 工具,该工具路径已被加入到 PATH 环境变量中。 + +具备Python3.6+的环境。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/JDBC\345\256\242\346\210\267\347\253\257\350\264\237\350\275\275\345\235\207\350\241\241\344\270\216\350\257\273\345\206\231\345\210\206\347\246\273.md" "b/content/zh/docs/CharacteristicDescription/JDBC\345\256\242\346\210\267\347\253\257\350\264\237\350\275\275\345\235\207\350\241\241\344\270\216\350\257\273\345\206\231\345\210\206\347\246\273.md" index ac6d1ee52..b4700b01a 100644 --- "a/content/zh/docs/CharacteristicDescription/JDBC\345\256\242\346\210\267\347\253\257\350\264\237\350\275\275\345\235\207\350\241\241\344\270\216\350\257\273\345\206\231\345\210\206\347\246\273.md" +++ "b/content/zh/docs/CharacteristicDescription/JDBC\345\256\242\346\210\267\347\253\257\350\264\237\350\275\275\345\235\207\350\241\241\344\270\216\350\257\273\345\206\231\345\210\206\347\246\273.md" @@ -1,30 +1,30 @@ -# JDBC客户端负载均衡与读写分离 - -## 可获得性 - -本特性自openGauss 2.1.0 版本开始引入。 - -## 特性简介 - -JDBC 客户端提供负载均衡与读写分离能力。 - -## 客户价值 - -可从JDBC客户端测配置负载均衡与读写分离。 - -## 特性描述 - -客户端多节点IP+Port配置,适应多AZ间高可用切换、适应异地容灾切换。支持连接级读写分离配置。支持优先连接只读节点。多个只读节点连接分布均衡。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# JDBC客户端负载均衡与读写分离 + +## 可获得性 + +本特性自openGauss 2.1.0 版本开始引入。 + +## 特性简介 + +JDBC 客户端提供负载均衡与读写分离能力。 + +## 客户价值 + +可从 JDBC 客户端测配置负载均衡与读写分离。 + +## 特性描述 + +客户端多节点IP+Port配置,适应多 AZ 间高可用切换、适应异地容灾切换。支持连接级读写分离配置。支持优先连接只读节点。多个只读节点连接分布均衡。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/PG\346\216\245\345\217\243\345\205\274\345\256\271.md" "b/content/zh/docs/CharacteristicDescription/PG\346\216\245\345\217\243\345\205\274\345\256\271.md" index 08ad06887..04c1b9c28 100644 --- "a/content/zh/docs/CharacteristicDescription/PG\346\216\245\345\217\243\345\205\274\345\256\271.md" +++ "b/content/zh/docs/CharacteristicDescription/PG\346\216\245\345\217\243\345\205\274\345\256\271.md" @@ -1,30 +1,30 @@ -# PG接口兼容 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -兼容PSQL客户端,兼容PostgreSQL标准接口。 - -## 客户价值 - -兼容PSQL客户端,兼容PostgreSQL标准接口,能够与PG生态工具无缝对接。 - -## 特性描述 - -兼容PSQL客户端,兼容PostgreSQL标准接口。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# PG接口兼容 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +兼容 PSQL 客户端,兼容 PostgreSQL 标准接口。 + +## 客户价值 + +兼容 PSQL 客户端,兼容 PostgreSQL 标准接口,能够与 PG 生态工具无缝对接。 + +## 特性描述 + +兼容 PSQL 客户端,兼容 PostgreSQL 标准接口。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git a/content/zh/docs/CharacteristicDescription/Parallel-Page-based-Redo-For-Ustore.md b/content/zh/docs/CharacteristicDescription/Parallel-Page-based-Redo-For-Ustore.md index 168326bca..ca770f023 100644 --- a/content/zh/docs/CharacteristicDescription/Parallel-Page-based-Redo-For-Ustore.md +++ b/content/zh/docs/CharacteristicDescription/Parallel-Page-based-Redo-For-Ustore.md @@ -1,30 +1,30 @@ -# Parallel Page-based Redo For Ustore - -## 可获得性 - -本特性自openGauss 1.1.0 版本开始引入。 - -## 特性简介 - -优化Ustore Inplace Update WAL log写入,Ustore DML Operation回放提高并行度。 - -## 客户价值 - -对于Update的WAL使用空间减少,Ustore DML Operation回放提高并行度。 - -## 特性描述 - -通过利用Prefix和suffix来减少update WAL log的写入,通过把回放线程分多个类型来解决Ustore DML WAL大多都是多页面回放问题;同时把Ustore的数据页面回放按照blkno去分发。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -依赖于Ustore引擎。 - +# Parallel Page-based Redo For Ustore + +## 可获得性 + +本特性自openGauss 1.1.0 版本开始引入。 + +## 特性简介 + +优化 Ustore Inplace Update WAL log 写入, Ustore DML Operation 回放提高并行度。 + +## 客户价值 + +对于 Update 的 WAL 使用空间减少, Ustore DML Operation 回放提高并行度。 + +## 特性描述 + +通过利用 Prefix 和 suffix 来减少 update WAL log 的写入,通过把回放线程分多个类型来解决 Ustore DML WAL 大多都是多页面回放问题;同时把 Ustore 的数据页面回放按照 blkno 去分发。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +依赖于 Ustore 引擎。 + diff --git "a/content/zh/docs/CharacteristicDescription/Predictor-AI\346\237\245\350\257\242\346\227\266\351\227\264\351\242\204\346\265\213.md" "b/content/zh/docs/CharacteristicDescription/Predictor-AI\346\237\245\350\257\242\346\227\266\351\227\264\351\242\204\346\265\213.md" index c0d8146a4..8499209f5 100644 --- "a/content/zh/docs/CharacteristicDescription/Predictor-AI\346\237\245\350\257\242\346\227\266\351\227\264\351\242\204\346\265\213.md" +++ "b/content/zh/docs/CharacteristicDescription/Predictor-AI\346\237\245\350\257\242\346\227\266\351\227\264\351\242\204\346\265\213.md" @@ -1,42 +1,42 @@ -# Predictor: AI查询时间预测 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -Predictor是基于机器学习且具有在线学习能力的查询时间预测工具。在数据库内核中,通过不断学习数据库内收集的历史执行信息,实现计划的执行时间预测功能。 - -## 客户价值 - -在SQL语句执行之前,根据AI模型预测SQL执行时间。用户基于推测的SQL时间信息,可以发现可能的异常SQL语句,提前进行调优或者调度,以免影响系统运行。 - -## 特性描述 - -AI查询时间预测,依赖于本地查询计划收集。用户需要根据需求在查询执行时,收集实际查询计划(包括计划结构、算子类型、相关数据源、过滤条件等)、各算子节点实际执行时间、优化器估算代价、实际返回行数、优化器估算行数、并行数等信息。这些记录将保存在数据表中,并进行持久化管理包括定期进行数据失效清理。 - -数据库内核在自动收集历史数据后,由管理员进行编码,然后通过CURL接口向python端发送请求以配置模型、发送数据、触发训练。训练过程中可以通过调用tensorboard接口监控训练过程。模型最终返回各项目预测准确率,并保存最终模型。数据库根据aiEngine端返回结果更新模型信息相关系统表。 - -执行explain \(analyze on, predictor \) SELECT …时且模型收敛时触发,数据库根据Plan进行编码判断是否符合当前模型。如果符合模型,先向python端发送加载模型请求(模型训练完成后只需加载一次),模型加载后对计划编码文件进行推理并返回各节点预测结果。 - -## 特性增强 - -无。 - -## 特性约束 - -- 数据库系统处于正常状态,用户通过身份验证成功登陆数据库访问拥有权限的数据。 -- 用户执行的SQL语法正确无报错。 -- 用户执行的SQL不会导致数据库异常等。 -- 历史性能数据窗口内集群并发量稳定,集群规模、表结构、表数量不变,数据量无突变,涉及查询性能的guc参数不变。如果上述条件被破坏,模型失效,需要对所有历史性能数据进行失效并重新进行数据收集和重新训练模型。 -- 加载模型时,原模型的结构、参数和训练信息等保存完整。若原模型信息丢失,模型无法正常加载,需要重新训练。 -- 历史性能数据正常收集和编码,正常解析编码数据不报错。 -- 用户通过预提供的安装脚本或者自行安装Python=3.6.4、configparser==3.8.1、Flask==0.12.2、Keras==2.2.4、numpy==1.16.4、scikit-learn==0.19.1、pandas==0.25.1、 tensorboard==1.14.0、tensorflow-gpu==1.14.0或tensorflow==1.14.0。 -- 用户环境中已经安装了OpenSSL,使用脚本或者按照使用说明生成了证书。 -- 目前跨database namespace的模型同步需要管理员用户手动执行,不支持自动同步。 - -## 依赖关系 - -无。 - +# Predictor: AI查询时间预测 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +Predictor 是基于机器学习且具有在线学习能力的查询时间预测工具。在数据库内核中,通过不断学习数据库内收集的历史执行信息,实现计划的执行时间预测功能。 + +## 客户价值 + +在 SQL 语句执行之前,根据 AI 模型预测 SQL 执行时间。用户基于推测的 SQL 时间信息,可以发现可能的异常 SQL 语句,提前进行调优或者调度,以免影响系统运行。 + +## 特性描述 + +AI 查询时间预测,依赖于本地查询计划收集。用户需要根据需求在查询执行时,收集实际查询计划(包括计划结构、算子类型、相关数据源、过滤条件等)、各算子节点实际执行时间、优化器估算代价、实际返回行数、优化器估算行数、并行数等信息。这些记录将保存在数据表中,并进行持久化管理包括定期进行数据失效清理。 + +数据库内核在自动收集历史数据后,由管理员进行编码,然后通过 CURL 接口向 python 端发送请求以配置模型、发送数据、触发训练。训练过程中可以通过调用 tensorboard 接口监控训练过程。模型最终返回各项目预测准确率,并保存最终模型。数据库根据 aiEngine 端返回结果更新模型信息相关系统表。 + +执行explain \(analyze on, predictor \) SELECT …时且模型收敛时触发,数据库根据 Plan 进行编码判断是否符合当前模型。如果符合模型,先向 python 端发送加载模型请求(模型训练完成后只需加载一次),模型加载后对计划编码文件进行推理并返回各节点预测结果。 + +## 特性增强 + +无。 + +## 特性约束 + +- 数据库系统处于正常状态,用户通过身份验证成功登陆数据库访问拥有权限的数据。 +- 用户执行的 SQL 语法正确无报错。 +- 用户执行的 SQL 不会导致数据库异常等。 +- 历史性能数据窗口内集群并发量稳定,集群规模、表结构、表数量不变,数据量无突变,涉及查询性能的 guc 参数不变。如果上述条件被破坏,模型失效,需要对所有历史性能数据进行失效并重新进行数据收集和重新训练模型。 +- 加载模型时,原模型的结构、参数和训练信息等保存完整。若原模型信息丢失,模型无法正常加载,需要重新训练。 +- 历史性能数据正常收集和编码,正常解析编码数据不报错。 +- 用户通过预提供的安装脚本或者自行安装Python=3.6.4、configparser==3.8.1、Flask==0.12.2、Keras==2.2.4、numpy==1.16.4、scikit-learn==0.19.1、pandas==0.25.1、 tensorboard==1.14.0、tensorflow-gpu==1.14.0或tensorflow==1.14.0。 +- 用户环境中已经安装了 OpenSSL ,使用脚本或者按照使用说明生成了证书。 +- 目前跨 database namespace 的模型同步需要管理员用户手动执行,不支持自动同步。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/SMP\345\271\266\350\241\214\346\211\247\350\241\214.md" "b/content/zh/docs/CharacteristicDescription/SMP\345\271\266\350\241\214\346\211\247\350\241\214.md" index f99767a5c..0f069c44f 100644 --- "a/content/zh/docs/CharacteristicDescription/SMP\345\271\266\350\241\214\346\211\247\350\241\214.md" +++ "b/content/zh/docs/CharacteristicDescription/SMP\345\271\266\350\241\214\346\211\247\350\241\214.md" @@ -1,38 +1,38 @@ -# SMP并行执行 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -openGauss的SMP并行技术是一种利用计算机多核CPU架构来实现多线程并行计算,以充分利用CPU资源来提高查询性能的技术。 - -## 客户价值 - -SMP并行技术充分利用了系统多核的能力,来提高重查询的性能。 - -## 特性描述 - -在复杂查询场景中,单个查询的执行较长,系统并发度低,通过SMP并行执行技术实现算子级的并行,能够有效减少查询执行时间,提升查询性能及资源利用率。SMP并行技术的整体实现思想是对于能够并行的查询算子,将数据分片,启动若干个工作线程分别计算,最后将结果汇总,返回前端。SMP并行执行增加数据交互算子**Stream**,实现多个工作线程之间的数据交互,确保查询的正确性,完成整体的查询。 - -## 特性增强 - -无。 - -## 特性约束 - -- 索引扫描不支持并行执行。 -- MergeJoin不支持并行执行。 -- WindowAgg order by不支持并行执行。 -- cursor不支持并行执行。 -- 存储过程和函数内的查询不支持并行执行。 -- 不支持子查询subplan和initplan的并行,以及包含子查询的算子的并行。 -- 查询语句中带有median操作的查询不支持并行执行。 -- 带全局临时表的查询不支持并行执行。 -- 物化视图的更新不支持并行执行。 - -## 依赖关系 - -无。 - +# SMP并行执行 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +openGauss 的 SMP 并行技术是一种利用计算机多核 CPU 架构来实现多线程并行计算,以充分利用 CPU 资源来提高查询性能的技术。 + +## 客户价值 + +SMP 并行技术充分利用了系统多核的能力,来提高重查询的性能。 + +## 特性描述 + +在复杂查询场景中,单个查询的执行较长,系统并发度低,通过 SMP 并行执行技术实现算子级的并行,能够有效减少查询执行时间,提升查询性能及资源利用率。 SMP 并行技术的整体实现思想是对于能够并行的查询算子,将数据分片,启动若干个工作线程分别计算,最后将结果汇总,返回前端。 SMP 并行执行增加数据交互算子**Stream**,实现多个工作线程之间的数据交互,确保查询的正确性,完成整体的查询。 + +## 特性增强 + +无。 + +## 特性约束 + +- 索引扫描不支持并行执行。 +- MergeJoin不支持并行执行。 +- WindowAgg order by不支持并行执行。 +- cursor不支持并行执行。 +- 存储过程和函数内的查询不支持并行执行。 +- 不支持子查询 subplan 和 initplan 的并行,以及包含子查询的算子的并行。 +- 查询语句中带有 median 操作的查询不支持并行执行。 +- 带全局临时表的查询不支持并行执行。 +- 物化视图的更新不支持并行执行。 + +## 依赖关系 + +无。 + diff --git a/content/zh/docs/CharacteristicDescription/SQL-by-pass.md b/content/zh/docs/CharacteristicDescription/SQL-by-pass.md index 20e6c3d70..db2ddde0c 100644 --- a/content/zh/docs/CharacteristicDescription/SQL-by-pass.md +++ b/content/zh/docs/CharacteristicDescription/SQL-by-pass.md @@ -1,30 +1,30 @@ -# SQL by pass - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -通过对OLTP场景典型查询的定制化执行方案来提高查询性能。 - -## 客户价值 - -提升OLTP类查询的性能。 - -## 特性描述 - -在典型的OLTP场景中,简单查询占了很大一部分比例。这种查询的特征是只涉及单表和简单表达式的查询,因此为了加速这类查询,提出了SQL by pass框架,在parse层对这类查询做简单的模式判别后,进入到特殊的执行路径里,跳过经典的执行器执行框架,包括算子的初始化与执行、表达式与投影等经典框架,直接重写一套简洁的执行路径,并且直接调用存储接口,这样可以大大加速简单查询的执行速度。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# SQL by pass + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +通过对 OLTP 场景典型查询的定制化执行方案来提高查询性能。 + +## 客户价值 + +提升 OLTP 类查询的性能。 + +## 特性描述 + +在典型的 OLTP 场景中,简单查询占了很大一部分比例。这种查询的特征是只涉及单表和简单表达式的查询,因此为了加速这类查询,提出了 SQL by pass 框架,在 parse 层对这类查询做简单的模式判别后,进入到特殊的执行路径里,跳过经典的执行器执行框架,包括算子的初始化与执行、表达式与投影等经典框架,直接重写一套简洁的执行路径,并且直接调用存储接口,这样可以大大加速简单查询的执行速度。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/SQLdiag_\346\205\242SQL\345\217\221\347\216\260.md" "b/content/zh/docs/CharacteristicDescription/SQLdiag_\346\205\242SQL\345\217\221\347\216\260.md" index 16d896c3a..2bcbd87de 100644 --- "a/content/zh/docs/CharacteristicDescription/SQLdiag_\346\205\242SQL\345\217\221\347\216\260.md" +++ "b/content/zh/docs/CharacteristicDescription/SQLdiag_\346\205\242SQL\345\217\221\347\216\260.md" @@ -1,33 +1,33 @@ -# SQLdiag: 慢SQL发现 - -## 可获得性 - -本特性自openGauss1.1.0版本开始引入。 - -## 特性简介 - -SQLdiag是一个SQL语句执行时间预测工具,通过模板化方法,实现在不获取SQL语句执行计划的前提下,依据语句逻辑相似度与历史执行记录,预测SQL语句的执行时间。 - -## 客户价值 - -- 工具不需要用户提供SQL执行计划,对数据库性能不会有任何影响。 -- 不同于业内其他算法只局限于OLAP或者OLTP,本工具场景更加广泛。 - -## 特性描述 - -SQLdiag着眼于数据库的历史SQL语句,通过对历史SQL语句的执行表现进行总结归纳,将之再用于推断新的未知业务上。由于短时间内数据库SQL语句执行时长不会有太大的差距,SQLdiag可以从历史数据中检测出与已执行SQL语句相似的语句结果集,并基于SQL向量化技术和模板化方法预测SQL语句执行时长。 - -## 特性增强 - -无。 - -## 特性约束 - -- 需要保证用户提供的历史日志及待预测负载的格式符合要求,可以使用数据库GUC参数开启收集,也可以通过监控工具采集。 -- 为保证预测准确率,用户提供的历史语句日志应尽可能全面并具有代表性。 -- 按照要求配置python环境。 - -## 依赖关系 - -无。 - +# SQLdiag: 慢 SQL 发现 + +## 可获得性 + +本特性自openGauss1.1.0版本开始引入。 + +## 特性简介 + +SQLdiag 是一个 SQL 语句执行时间预测工具,通过模板化方法,实现在不获取 SQL 语句执行计划的前提下,依据语句逻辑相似度与历史执行记录,预测 SQL 语句的执行时间。 + +## 客户价值 + +- 工具不需要用户提供 SQL 执行计划,对数据库性能不会有任何影响。 +- 不同于业内其他算法只局限于 OLAP 或者 OLTP ,本工具场景更加广泛。 + +## 特性描述 + +SQLdiag 着眼于数据库的历史 SQL 语句,通过对历史 SQL 语句的执行表现进行总结归纳,将之再用于推断新的未知业务上。由于短时间内数据库 SQL 语句执行时长不会有太大的差距, SQLdiag 可以从历史数据中检测出与已执行 SQL 语句相似的语句结果集,并基于 SQL 向量化技术和模板化方法预测 SQL 语句执行时长。 + +## 特性增强 + +无。 + +## 特性约束 + +- 需要保证用户提供的历史日志及待预测负载的格式符合要求,可以使用数据库 GUC 参数开启收集,也可以通过监控工具采集。 +- 为保证预测准确率,用户提供的历史语句日志应尽可能全面并具有代表性。 +- 按照要求配置 python 环境。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/Session\346\200\247\350\203\275\350\257\212\346\226\255.md" "b/content/zh/docs/CharacteristicDescription/Session\346\200\247\350\203\275\350\257\212\346\226\255.md" index 7c791f304..3f0a08e76 100644 --- "a/content/zh/docs/CharacteristicDescription/Session\346\200\247\350\203\275\350\257\212\346\226\255.md" +++ "b/content/zh/docs/CharacteristicDescription/Session\346\200\247\350\203\275\350\257\212\346\226\255.md" @@ -1,100 +1,100 @@ -# Session性能诊断 - -## 可获得性 - -本特性自openGauss 1.0.0 版本开始引入。 - -## 特性简介 - -Session性能诊断提供给用户Session级别的性能问题诊断。 - -## 客户价值 - -- 查看最近用户Session最耗资源的事件。 -- 查看最近比较占资源的SQL把资源都消耗在哪些等待事件上。 -- 查看最近比较耗资源的Session把资源都花费在哪些等待事件上。 -- 查看最近最耗资源的用户的信息。 -- 查看过去Session相互阻塞的等待关系。 - -## 特性描述 - -Session性能诊断提供对当前系统所有活跃Session进行诊断的能力。由于实时采集所有活跃Session的指标对用户负载的影响加大,因此采取Session快照的技术对活跃Session的指标进行采样。 - -从采样中统计出活跃Session的统计指标,这些统计指标从客户端信息、执行开始、结束时间、SQL文本、等待事件、当前数据库对象等维度,反映活跃Session的基本信息、状态、持有的资源。 - -基于概率统计的活跃Session信息,可以帮助用户诊断系统中哪些Session消耗了更多的CPU、内存资源,哪些数据库对象是热对象,哪些SQL消耗了更多的关键事件资源等,从而定位出有问题Session、SQL、数据库设计。 - -Session采样数据分为两级,如[图1](#fig197862247217)所示: - -1. 第一级为实时信息,存储在内存中,展示最近几分钟的活跃Session信息,具有最高的精度; -2. 第二级为持久化历史信息,存储在磁盘文件中,展示过去很长一段时间的历史活跃Session信息,从内存数据中抽样而来,适合长时间跨度的统计分析。 - -**图 1** Session性能诊断原理 -![](figures/Session性能诊断原理.png "Session性能诊断原理") - -部分使用场景如下所示: - -1. 查看session之间的阻塞关系 - - ``` - select sessionid, block_sessionid from pg_thread_wait_status; - ``` - -2. 采样blocking session信息 - - ``` - select sessionid, block_sessionid from DBE_PERF.local_active_session; - ``` - -3. Final blocking session展示 - - ``` - select sessionid, block_sessionid, final_block_sessionid from DBE_PERF.local_active_session; - ``` - -4. 最耗资源的wait event - - ``` - SELECT s.type, s.event, t.count - FROM dbe_perf.wait_events s, ( - SELECT event, COUNT (*) - FROM dbe_perf.local_active_session - WHERE sample_time > now() - 5 / (24 * 60) - GROUP BY event)t WHERE s.event = t.event ORDER BY count DESC; - ``` - - - -5. 查看最近五分钟较耗资源的session把资源都花费在哪些event上 - - ``` - SELECT sessionid, start_time, event, count - FROM ( - SELECT sessionid, start_time, event, COUNT(*) - FROM dbe_perf.local_active_session - WHERE sample_time > now() - 5 / (24 * 60) - GROUP BY sessionid, start_time, event) as t ORDER BY SUM(t.count) OVER \(PARTITION BY t. sessionid, start_time)DESC, t.event; - ``` - -6. 最近五分钟比较占资源的SQL把资源都消耗在哪些event上 - - ``` - SELECT query_id, event, count - FROM ( - SELECT query_id, event, COUNT(*) - FROM dbe_perf.local_active_session - WHERE sample_time > now() - 5 / (24 * 60) - GROUP BY query_id, event) t ORDER BY SUM (t.count) OVER (PARTITION BY t.query_id ) DESC, t.event DESC; - ``` - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - +# Session性能诊断 + +## 可获得性 + +本特性自openGauss 1.0.0 版本开始引入。 + +## 特性简介 + +Session 性能诊断提供给用户 Session 级别的性能问题诊断。 + +## 客户价值 + +- 查看最近用户 Session 最耗资源的事件。 +- 查看最近比较占资源的 SQL 把资源都消耗在哪些等待事件上。 +- 查看最近比较耗资源的 Session 把资源都花费在哪些等待事件上。 +- 查看最近最耗资源的用户的信息。 +- 查看过去 Session 相互阻塞的等待关系。 + +## 特性描述 + +Session 性能诊断提供对当前系统所有活跃 Session 进行诊断的能力。由于实时采集所有活跃 Session 的指标对用户负载的影响加大,因此采取 Session 快照的技术对活跃 Session 的指标进行采样。 + +从采样中统计出活跃 Session 的统计指标,这些统计指标从客户端信息、执行开始、结束时间、SQL文本、等待事件、当前数据库对象等维度,反映活跃 Session 的基本信息、状态、持有的资源。 + +基于概率统计的活跃 Session 信息,可以帮助用户诊断系统中哪些 Session 消耗了更多的CPU、内存资源,哪些数据库对象是热对象,哪些 SQL 消耗了更多的关键事件资源等,从而定位出有问题Session、SQL、数据库设计。 + +Session 采样数据分为两级,如[图1](#fig197862247217)所示: + +1. 第一级为实时信息,存储在内存中,展示最近几分钟的活跃 Session 信息,具有最高的精度; +2. 第二级为持久化历史信息,存储在磁盘文件中,展示过去很长一段时间的历史活跃 Session 信息,从内存数据中抽样而来,适合长时间跨度的统计分析。 + +**图 1** Session性能诊断原理 +![](figures/Session性能诊断原理.png "Session性能诊断原理") + +部分使用场景如下所示: + +1. 查看 session 之间的阻塞关系 + + ``` + select sessionid , block_sessionid from pg_thread_wait_status; + ``` + +2. 采样 blocking session 信息 + + ``` + select sessionid , block_sessionid from DBE_PERF.local_active_session; + ``` + +3. Final blocking session展示 + + ``` + select sessionid , block_sessionid , final_block_sessionid from DBE_PERF.local_active_session; + ``` + +4. 最耗资源的wait event + + ``` + SELECT s.type, s.event, t.count + FROM dbe_perf.wait_events s, ( + SELECT event , COUNT (*) + FROM dbe_perf.local_active_session + WHERE sample_time > now() - 5 / (24 * 60) + GROUP BY event)t WHERE s.event = t.event ORDER BY count DESC; + ``` + + + +5. 查看最近五分钟较耗资源的 session 把资源都花费在哪些 event 上 + + ``` + SELECT sessionid , start_time , event , count + FROM ( + SELECT sessionid , start_time , event , COUNT(*) + FROM dbe_perf.local_active_session + WHERE sample_time > now() - 5 / (24 * 60) + GROUP BY sessionid , start_time , event) as t ORDER BY SUM(t.count) OVER \(PARTITION BY t. sessionid, start_time)DESC, t.event; + ``` + +6. 最近五分钟比较占资源的 SQL 把资源都消耗在哪些 event 上 + + ``` + SELECT query_id , event , count + FROM ( + SELECT query_id , event , COUNT(*) + FROM dbe_perf.local_active_session + WHERE sample_time > now() - 5 / (24 * 60) + GROUP BY query_id , event) t ORDER BY SUM (t.count) OVER (PARTITION BY t.query_id ) DESC, t.event DESC; + ``` + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + 无。 \ No newline at end of file diff --git "a/content/zh/docs/CharacteristicDescription/X_Tuner_\345\217\202\346\225\260\350\260\203\344\274\230\344\270\216\350\257\212\346\226\255.md" "b/content/zh/docs/CharacteristicDescription/X_Tuner_\345\217\202\346\225\260\350\260\203\344\274\230\344\270\216\350\257\212\346\226\255.md" index b75d6f2b6..b82b0b816 100644 --- "a/content/zh/docs/CharacteristicDescription/X_Tuner_\345\217\202\346\225\260\350\260\203\344\274\230\344\270\216\350\257\212\346\226\255.md" +++ "b/content/zh/docs/CharacteristicDescription/X_Tuner_\345\217\202\346\225\260\350\260\203\344\274\230\344\270\216\350\257\212\346\226\255.md" @@ -1,40 +1,40 @@ -# X-Tuner: 参数调优与诊断 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -X-Tuner 是一款数据库集成的参数调优工具,通过结合深度强化学习和全局搜索算法等AI技术,实现在无需人工干预的情况下,获取最佳数据库参数配置。本功能不强制与数据库环境部署到一起,支持独立部署,脱离数据库安装环境独立运行。 - -## 客户价值 - -该工具可以在任意场景下,快速给出当前负载的调参配置,减少DBA的人工干预,提升运维效果,满足客户期望。 - -## 特性描述 - -调优程序X-Tuner包含三种运行模式,分别是: - -- recommend:通过用户指定的用户名等信息登录到数据库环境中,获取当前正在运行的workload特征信息,根据上述特征信息生成参数推荐报告。报告当前数据库中不合理的参数配置和潜在风险等;输出根据当前正在运行的workload行为和特征;输出推荐的参数配置。**该模式是秒级的,不涉及数据库的重启操作,其他模式可能需要反复重启数据库**。 -- train:通过用户提供的benchmark信息,不断地进行参数修改和benchmark的执行。通过反复的迭代过程,训练强化学习模型,以便用户在后面通过tune模式加载该模型进行调优。 -- tune:使用优化算法进行数据库参数的调优,当前支持两大类算法,一种是深度强化学习,另一种是全局搜索算法(全局优化算法)。深度强化学习模式要求先运行train模式,生成训练后的调优模型,而使用全局搜索算法则不需要提前进行训练,可以直接进行搜索调优。 - -## 特性增强 - -无。 - -## 特性约束 - -- 数据库状态正常、客户端能够正常连接、且要求数据库内导入数据,以便调优程序可以执行benchmark测试调优效果。 -- 使用本工具需要指定登录到数据库的用户身份,要求该登录到数据库上的用户具有足够的权限,以便可以获得充足的数据库状态信息。 -- 使用登录到数据库宿主机上的Linux用户,需要将$**GAUSSHOME/bin**添加到PATH环境变量中,即能够直接运行gsql、gs\_guc、gs\_ctl等数据库运维工具。 -- Python版本建议为Python3.6及以上,且运行环境中已经安装相应依赖,并能够正常启动调优程序。您可以独立安装一个python3.6+的环境,无需设置到全局环境变量中。不建议使用root用户权限安装本工具,如果以root身份安装本完毕工具,使用其他用户身份运行本工具时,需要确保配置文件有读取权限。 -- 本工具支持以三种模式运行,其中tune和train模式要求用户配置好benchmark运行环境,并导入数据,本工具将会通过迭代运行benchmark来判断修改后的参数是否有性能提升。 -- recommend模式建议在数据库正在执行workload的过程中执行,以便获得更准确的实时workload信息。 -- 本工具默认带有TPC-C、TPC-H、TPC-DS以及sysbench的benchmark运行脚本样例,如果用户使用上述benchmark对数据库系统进行压力测试,则可以对上述配置文件进行适度修改或配置。如果需要适配用户自己的业务场景,需要您参照benchmark目录中的template.py文件编写驱动您自定义benchmark的脚本文件。 - -## 依赖关系 - -无。 - +# X-Tuner: 参数调优与诊断 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +X-Tuner 是一款数据库集成的参数调优工具,通过结合深度强化学习和全局搜索算法等 AI 技术,实现在无需人工干预的情况下,获取最佳数据库参数配置。本功能不强制与数据库环境部署到一起,支持独立部署,脱离数据库安装环境独立运行。 + +## 客户价值 + +该工具可以在任意场景下,快速给出当前负载的调参配置,减少 DBA 的人工干预,提升运维效果,满足客户期望。 + +## 特性描述 + +调优程序X-Tuner包含三种运行模式,分别是: + +- recommend:通过用户指定的用户名等信息登录到数据库环境中,获取当前正在运行的 workload 特征信息,根据上述特征信息生成参数推荐报告。报告当前数据库中不合理的参数配置和潜在风险等;输出根据当前正在运行的 workload 行为和特征;输出推荐的参数配置。**该模式是秒级的,不涉及数据库的重启操作,其他模式可能需要反复重启数据库**。 +- train:通过用户提供的 benchmark 信息,不断地进行参数修改和 benchmark 的执行。通过反复的迭代过程,训练强化学习模型,以便用户在后面通过 tune 模式加载该模型进行调优。 +- tune:使用优化算法进行数据库参数的调优,当前支持两大类算法,一种是深度强化学习,另一种是全局搜索算法(全局优化算法)。深度强化学习模式要求先运行 train 模式,生成训练后的调优模型,而使用全局搜索算法则不需要提前进行训练,可以直接进行搜索调优。 + +## 特性增强 + +无。 + +## 特性约束 + +- 数据库状态正常、客户端能够正常连接、且要求数据库内导入数据,以便调优程序可以执行 benchmark 测试调优效果。 +- 使用本工具需要指定登录到数据库的用户身份,要求该登录到数据库上的用户具有足够的权限,以便可以获得充足的数据库状态信息。 +- 使用登录到数据库宿主机上的 Linux 用户,需要将$**GAUSSHOME/bin**添加到 PATH 环境变量中,即能够直接运行gsql、gs\_guc、gs\_ctl等数据库运维工具。 +- Python版本建议为Python3.6及以上,且运行环境中已经安装相应依赖,并能够正常启动调优程序。您可以独立安装一个python3.6+的环境,无需设置到全局环境变量中。不建议使用 root 用户权限安装本工具,如果以 root 身份安装本完毕工具,使用其他用户身份运行本工具时,需要确保配置文件有读取权限。 +- 本工具支持以三种模式运行,其中 tune 和 train 模式要求用户配置好 benchmark 运行环境,并导入数据,本工具将会通过迭代运行 benchmark 来判断修改后的参数是否有性能提升。 +- recommend模式建议在数据库正在执行 workload 的过程中执行,以便获得更准确的实时 workload 信息。 +- 本工具默认带有TPC-C、TPC-H、TPC-DS以及 sysbench 的 benchmark 运行脚本样例,如果用户使用上述 benchmark 对数据库系统进行压力测试,则可以对上述配置文件进行适度修改或配置。如果需要适配用户自己的业务场景,需要您参照 benchmark 目录中的template.py文件编写驱动您自定义 benchmark 的脚本文件。 + +## 依赖关系 + +无。 + diff --git a/content/zh/docs/CharacteristicDescription/Xlog-no-Lock-Flush.md b/content/zh/docs/CharacteristicDescription/Xlog-no-Lock-Flush.md index 5572c81da..07ececfd8 100644 --- a/content/zh/docs/CharacteristicDescription/Xlog-no-Lock-Flush.md +++ b/content/zh/docs/CharacteristicDescription/Xlog-no-Lock-Flush.md @@ -1,30 +1,30 @@ -# Xlog no Lock Flush - -## 可获得性 - -本特性自openGauss 1.1.0 版本开始引入。 - -## 特性简介 - -取消WalInsertLock争抢及WalWriter专用磁盘写入线程。 - -## 客户价值 - -在保持原有XLog功能不变的基础上,进一步提升系统性能。 - -## 特性描述 - -对WalInsertLock进行优化,利用LSN(Log Sequence Number)及LRC(Log Record Count)记录了每个backend的拷贝进度,取消WalInsertLock机制。在backend将日志拷贝至WalBuffer时,不用对WalInsertLock进行争抢,可直接进行日志拷贝操作。并利用专用的WalWriter写日志线程,不需要backend线程自身来保证xlog的Flush。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# Xlog no Lock Flush + +## 可获得性 + +本特性自openGauss 1.1.0 版本开始引入。 + +## 特性简介 + +取消 WalInsertLock 争抢及 WalWriter 专用磁盘写入线程。 + +## 客户价值 + +在保持原有 XLog 功能不变的基础上,进一步提升系统性能。 + +## 特性描述 + +对 WalInsertLock 进行优化,利用LSN(Log Sequence Number)及LRC(Log Record Count)记录了每个 backend 的拷贝进度,取消 WalInsertLock 机制。在 backend 将日志拷贝至 WalBuffer 时,不用对 WalInsertLock 进行争抢,可直接进行日志拷贝操作。并利用专用的 WalWriter 写日志线程,不需要 backend 线程自身来保证 xlog 的 Flush 。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\344\270\273\345\244\207\346\234\272.md" "b/content/zh/docs/CharacteristicDescription/\344\270\273\345\244\207\346\234\272.md" index 82d3623f0..46405a848 100644 --- "a/content/zh/docs/CharacteristicDescription/\344\270\273\345\244\207\346\234\272.md" +++ "b/content/zh/docs/CharacteristicDescription/\344\270\273\345\244\207\346\234\272.md" @@ -1,36 +1,36 @@ -# 主备机 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始支持DN主备。 - -## 特性简介 - -为了保证故障的可恢复,需要将数据写多份,设置主备多个副本,通过日志进行数据同步,可以实现节点故障、停止后重启等情况下,openGauss能够保证故障之前的数据无丢失,满足ACID特性。 - -## 客户价值 - -主备机功能可以支持主机故障时切换到备机,数据不丢失,业务可以快速恢复。 - -## 特性描述 - -主备环境可以支持主备从和一主多备两种模式。主备从模式下,备机需要重做日志,可以升主,而从备只能接收日志,不可以升主。而在一主多备模式下,所有的备机都需要重做日志,都可以升主。主备从主要用于大数据分析类型的OLAP系统,能够节省一定的存储资源。而一主多备提供更高的容灾能力,更加适合于大批量事务处理的OLTP系统。 - -当主备机均正常可用时,主备之间可以通过switchover进行角色切换;当主机故障后,可以通过failover对备机进行升主。 - -初始化安装或者备份恢复等场景中,需要根据主机重建备机的数据,此时需要build功能,将主机的数据和WAL日志发送到备机。主机故障后重新以备机的角色加入时,也需要build功能将其数据和日志与新主拉齐。另外,在在线扩容的场景中,需要通过build来同步元数据到新节点上的实例。build包含全量build和增量build,全量build要全部依赖主机数据进行重建,拷贝的数据量比较大,耗时比较长,而增量build只拷贝差异文件,拷贝的数据量比较小,耗时比较短。一般情况下,优先选择增量build来进行故障恢复,如果增量build失败,再继续执行全量build,直至故障恢复。 - -为了实现所有实例的高可用容灾能力,除了以上对DN设置主备多个副本,openGauss还提供了其他一些主备容灾能力,使得实例故障后可以尽快地恢复,不中断业务,将因为硬件、软件和人为造成的故障对业务的影响降到最低,以保证业务的连续性。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 主备机 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始支持 DN 主备。 + +## 特性简介 + +为了保证故障的可恢复,需要将数据写多份,设置主备多个副本,通过日志进行数据同步,可以实现节点故障、停止后重启等情况下, openGauss 能够保证故障之前的数据无丢失,满足 ACID 特性。 + +## 客户价值 + +主备机功能可以支持主机故障时切换到备机,数据不丢失,业务可以快速恢复。 + +## 特性描述 + +主备环境可以支持主备从和一主多备两种模式。主备从模式下,备机需要重做日志,可以升主,而从备只能接收日志,不可以升主。而在一主多备模式下,所有的备机都需要重做日志,都可以升主。主备从主要用于大数据分析类型的 OLAP 系统,能够节省一定的存储资源。而一主多备提供更高的容灾能力,更加适合于大批量事务处理的 OLTP 系统。 + +当主备机均正常可用时,主备之间可以通过 switchover 进行角色切换;当主机故障后,可以通过 failover 对备机进行升主。 + +初始化安装或者备份恢复等场景中,需要根据主机重建备机的数据,此时需要 build 功能,将主机的数据和 WAL 日志发送到备机。主机故障后重新以备机的角色加入时,也需要 build 功能将其数据和日志与新主拉齐。另外,在在线扩容的场景中,需要通过 build 来同步元数据到新节点上的实例。 build 包含全量 build 和增量 build ,全量 build 要全部依赖主机数据进行重建,拷贝的数据量比较大,耗时比较长,而增量 build 只拷贝差异文件,拷贝的数据量比较小,耗时比较短。一般情况下,优先选择增量 build 来进行故障恢复,如果增量 build 失败,再继续执行全量 build ,直至故障恢复。 + +为了实现所有实例的高可用容灾能力,除了以上对 DN 设置主备多个副本, openGauss 还提供了其他一些主备容灾能力,使得实例故障后可以尽快地恢复,不中断业务,将因为硬件、软件和人为造成的故障对业务的影响降到最低,以保证业务的连续性。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\344\274\201\344\270\232\347\272\247\347\211\271\346\200\247.md" "b/content/zh/docs/CharacteristicDescription/\344\274\201\344\270\232\347\272\247\347\211\271\346\200\247.md" index 57d6865b6..4ddaeae43 100644 --- "a/content/zh/docs/CharacteristicDescription/\344\274\201\344\270\232\347\272\247\347\211\271\346\200\247.md" +++ "b/content/zh/docs/CharacteristicDescription/\344\274\201\344\270\232\347\272\247\347\211\271\346\200\247.md" @@ -1,27 +1,27 @@ -# 企业级特性 - -- **[函数及存储过程支持](函数及存储过程支持.md)** - -- **[支持SQL hint](支持SQL-hint.md)** - -- **[全文索引](全文索引.md)** - -- **[Copy接口支持容错机制](Copy接口支持容错机制.md)** - -- **[分区](分区.md)** - -- **[高级分析函数支持](高级分析函数支持.md)** - -- **[物化视图](物化视图.md)** - -- **[支持HyperLogLog](支持HyperLogLog.md)** - -- **[在线添加索引](在线添加索引.md)** - -- **[自治事务](自治事务.md)** - -- **[全局临时表](全局临时表.md)** - -- **[伪列ROWNUM](伪列ROWNUM.md)** - -- **[支持存储过程调试](支持存储过程调试.md)** +# 企业级特性 + +- **[函数及存储过程支持](函数及存储过程支持.md)** + +- **[支持SQL hint](支持SQL-hint.md)** + +- **[全文索引](全文索引.md)** + +- **[Copy接口支持容错机制](Copy接口支持容错机制.md)** + +- **[分区](分区.md)** + +- **[高级分析函数支持](高级分析函数支持.md)** + +- **[物化视图](物化视图.md)** + +- **[支持HyperLogLog](支持HyperLogLog.md)** + +- **[在线添加索引](在线添加索引.md)** + +- **[自治事务](自治事务.md)** + +- **[全局临时表](全局临时表.md)** + +- **[伪列ROWNUM](伪列ROWNUM.md)** + +- **[支持存储过程调试](支持存储过程调试.md)** diff --git "a/content/zh/docs/CharacteristicDescription/\344\274\252\345\210\227ROWNUM.md" "b/content/zh/docs/CharacteristicDescription/\344\274\252\345\210\227ROWNUM.md" index 2f92378e6..3621d2faa 100644 --- "a/content/zh/docs/CharacteristicDescription/\344\274\252\345\210\227ROWNUM.md" +++ "b/content/zh/docs/CharacteristicDescription/\344\274\252\345\210\227ROWNUM.md" @@ -1,37 +1,37 @@ -# 伪列ROWNUM - -## 可获得性 - -本特性自openGauss 1.0.1版本开始引入。 - -## 特性简介 - -ROWNUM为查询出来的每一行记录生成一个序号,从1开始依次递增且不会重复。 - -## 客户价值 - -- 兼容Oracle特性,方便数据库迁移。 -- 与LIMIT特性类似,能够筛选出结果集的前n条记录。 - -## 特性描述 - -ROWNUM(伪列),用于对SQL查询中符合条件的记录进行顺序标注。查询结果第一行ROWNUM为1,第二行为2,依次类推,第n行为n。通常用来筛选出查询结果集中的前n行数据,与openGauss中LIMIT功能类似。 - -## 特性增强 - -在内部执行时,优化器会将ROWNUM重写成LIMIT去执行,加快执行速率。 - -## 特性约束 - -- ROWNUM是伪列,不可作为别名,以免SQL语句出现歧义; -- 创建索引时不可使用ROWNUM。例如:create index index\_name on table\(rownum\); -- 创建表时default值不可为ROWNUM。例如:create table table\_name\(id int default rownum\); -- Where子句中不可使用rownum的别名。例如:select rownum rn from table where rn < 5; -- 在插入数据时不可使用ROWNUM。例如:insert into table values\(rownum,’blue’\); -- 不可在无表查询中使用ROWNUM。例如:select \* from \(values\(rownum,1\)\), x\(a,b\); -- 若 having 子句中含有ROWNUM(且不在聚合函数中)时,group by子句中必须含有ROWNUM(且不在聚合函数中)。 - -## 依赖关系 - -无。 - +# 伪列ROWNUM + +## 可获得性 + +本特性自openGauss 1.0.1版本开始引入。 + +## 特性简介 + +ROWNUM 为查询出来的每一行记录生成一个序号,从 1 开始依次递增且不会重复。 + +## 客户价值 + +- 兼容 Oracle 特性,方便数据库迁移。 +- 与 LIMIT 特性类似,能够筛选出结果集的前 n 条记录。 + +## 特性描述 + +ROWNUM(伪列),用于对 SQL 查询中符合条件的记录进行顺序标注。查询结果第一行 ROWNUM 为 1 ,第二行为 2 ,依次类推,第 n 行为 n 。通常用来筛选出查询结果集中的前 n 行数据,与 openGauss 中 LIMIT 功能类似。 + +## 特性增强 + +在内部执行时,优化器会将 ROWNUM 重写成 LIMIT 去执行,加快执行速率。 + +## 特性约束 + +- ROWNUM是伪列,不可作为别名,以免 SQL 语句出现歧义; +- 创建索引时不可使用 ROWNUM 。例如:create index index\_name on table\(rownum\); +- 创建表时 default 值不可为 ROWNUM 。例如:create table table\_name\(id int default rownum\); +- Where子句中不可使用 rownum 的别名。例如:select rownum rn from table where rn < 5; +- 在插入数据时不可使用 ROWNUM 。例如:insert into table values\(rownum,’blue’\); +- 不可在无表查询中使用 ROWNUM 。例如:select \* from \(values\(rownum,1\)\), x\(a,b\); +- 若 having 子句中含有ROWNUM(且不在聚合函数中)时, group by 子句中必须含有ROWNUM(且不在聚合函数中)。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\344\275\234\344\270\232\345\244\261\350\264\245\350\207\252\345\212\250\351\207\215\350\257\225.md" "b/content/zh/docs/CharacteristicDescription/\344\275\234\344\270\232\345\244\261\350\264\245\350\207\252\345\212\250\351\207\215\350\257\225.md" index d5b9988d9..ec0c153ba 100644 --- "a/content/zh/docs/CharacteristicDescription/\344\275\234\344\270\232\345\244\261\350\264\245\350\207\252\345\212\250\351\207\215\350\257\225.md" +++ "b/content/zh/docs/CharacteristicDescription/\344\275\234\344\270\232\345\244\261\350\264\245\350\207\252\345\212\250\351\207\215\350\257\225.md" @@ -1,221 +1,221 @@ -# 作业失败自动重试 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -批处理作业中,在由于网络异常、锁冲突等出错情况下能够保证作业自动重试。 - -## 客户价值 - -网络异常、锁冲突等出错场景下无需人工干预,自动对出错查询进行重试,提高了可用性。 - -## 特性描述 - -openGauss数据库提供作业重试机制gsql Retry。 - -gsql Retry,对于需要进行重试的错误使用唯一的错误码(SQL STATE)进行标识。对客户端工具gsql进行功能增强,使用错误码配置文件(retry\_errcodes.conf,置于和gsql同级的安装目录下)对需要重试的错误列表进行配置。gsql提供如下元命令来开启/关闭错误重试功能,重试次数设为范围为5\~10,缺省值为5。 - -``` -set RETRY [number] -``` - -打开该功能时gsql会读取上述配置文件,错误重试控制器通过容器记录错误码列表。如果打开后出现配置文件中某一个错误,控制器会将每次缓存的查询语句重新发送给服务端进行重试,直到成功或超过重试次数报错。 - -## 特性增强 - -无。 - -## 特性约束 - -- 功能范围限制: - - 仅能提高故障发生时SQL语句执行成功率,不能保证100%的执行成功。 - -- 错误类型约束: - - SQL语句出错时能够被识别和重试的错误,仅限在[表1](#table123551925257)中定义的错误。 - - **表 1** 支持的错误类型列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

错误类型

-

错误码

-

备注

-

对端连接重置(CONNECTION_RESET_BY_PEER)

-

YY001

-

TCP通信错误:Connection reset by peer

-

对端流重置(STREAM_CONNECTION_RESET_BY_PEER)

-

YY002

-

TCP通信错误:Stream connection reset by peer(DN和DN间通信)

-

锁等待超时(LOCK_WAIT_TIMEOUT)

-

YY003

-

锁超时,Lock wait timeout

-

连接超时(CONNECTION_TIMED_OUT)

-

YY004

-

TCP通信错误,Connection timed out

-

查询设置错误(SET_QUERY_ERROR)

-

YY005

-

SET命令发送失败,Set query error

-

超出逻辑内存(OUT_OF_LOGICAL_MEMORY)

-

YY006

-

内存申请失败,Out of logical memory

-

通信库内存分配(SCTP_MEMORY_ALLOC)

-

YY007

-

SCTP通信错误,Memory allocate error

-

无通信库缓存数据(SCTP_NO_DATA_IN_BUFFER)

-

YY008

-

SCTP通信错误,SCTP no data in buffer

-

通信库释放内存关闭(SCTP_RELEASE_MEMORY_CLOSE)

-

YY009

-

SCTP通信错误,Release memory close

-

SCTP、TCP断开(SCTP_TCP_DISCONNECT)

-

YY010

-

SCTP、TCP通信错误,SCTP、TCP disconnect

-

通信库断开(SCTP_DISCONNECT)

-

YY011

-

SCTP通信错误,SCTP disconnect

-

通信库远程关闭(SCTP_REMOTE_CLOSE)

-

YY012

-

SCTP通信错误,Stream closed by remote

-

等待未知通信库通信(SCTP_WAIT_POLL_UNKNOW)

-

YY013

-

等待未知通信库通信,SCTP wait poll unknow

-

无效快照(SNAPSHOT_INVALID)

-

YY014

-

快照非法,Snapshot invalid

-

通讯接收信息错误(ERRCODE_CONNECTION_RECEIVE_WRONG)

-

YY015

-

连接获取错误,Connection receive wrong

-

内存耗尽(OUT_OF_MEMORY)

-

53200

-

内存耗尽,Out of memory

-

连接异常(CONNECTION_EXCEPTION)

-

08000

-

连接出现错误,和DN的通讯失败,Connection exception

-

管理员关闭系统(ADMIN_SHUTDOWN)

-

57P01

-

管理员关闭系统,Admin shutdown

-

关闭远程流接口(STREAM_REMOTE_CLOSE_SOCKET)

-

XX003

-

关闭远程套接字,Stream remote close socket

-

重复查询编号(ERRCODE_STREAM_DUPLICATE_QUERY_ID)

-

XX009

-

重复查询,Duplicate query id

-

stream查询并发更新同一行(ERRCODE_STREAM_CONCURRENT_UPDATE)

-

YY016

-

stream查询并发更新同一行,Stream concurrent update

-
- -- 语句类型约束: - - 支持单语句存储过程、函数、匿名块。不支持事务块中的语句。 - -- 存储过程语句约束: - - 包含EXCEPTION的存储过程,如果在执行过程中(包含语句块执行和EXCEPTION中的语句执行)错误被抛出,可以retry,如果报错被EXCEPTION捕获则不能retry。 - - 不支持使用全局变量的高级包。 - - 不支持DBE\_TASK。 - - 不支持PKG\_UTIL文件操作。 - -- 数据导入约束: - - 不支持COPY FROM STDIN语句。 - - 不支持gsql \\copy from元命令。 - - 不支持JDBC CopyManager copyIn导入数据。 - - -## 依赖关系 - -该特性依赖gsql工具端可以正常工作、错误列表配置正确。 - +# 作业失败自动重试 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +批处理作业中,在由于网络异常、锁冲突等出错情况下能够保证作业自动重试。 + +## 客户价值 + +网络异常、锁冲突等出错场景下无需人工干预,自动对出错查询进行重试,提高了可用性。 + +## 特性描述 + +openGauss 数据库提供作业重试机制 gsql Retry 。 + + gsql Retry ,对于需要进行重试的错误使用唯一的错误码(SQL STATE)进行标识。对客户端工具 gsql 进行功能增强,使用错误码配置文件(retry\_errcodes.conf,置于和 gsql 同级的安装目录下)对需要重试的错误列表进行配置。 gsql 提供如下元命令来开启/关闭错误重试功能,重试次数设为范围为5\~10,缺省值为 5 。 + +``` +set RETRY [number] +``` + +打开该功能时 gsql 会读取上述配置文件,错误重试控制器通过容器记录错误码列表。如果打开后出现配置文件中某一个错误,控制器会将每次缓存的查询语句重新发送给服务端进行重试,直到成功或超过重试次数报错。 + +## 特性增强 + +无。 + +## 特性约束 + +- 功能范围限制: + + 仅能提高故障发生时 SQL 语句执行成功率,不能保证100%的执行成功。 + +- 错误类型约束: + +SQL 语句出错时能够被识别和重试的错误,仅限在[表1](#table123551925257)中定义的错误。 + + **表 1** 支持的错误类型列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

错误类型

+

错误码

+

备注

+

对端连接重置(CONNECTION_RESET_BY_PEER)

+

YY001

+

TCP通信错误:Connection reset by peer

+

对端流重置(STREAM_CONNECTION_RESET_BY_PEER)

+

YY002

+

TCP通信错误:Stream connection reset by peer(DN和 DN 间通信)

+

锁等待超时(LOCK_WAIT_TIMEOUT)

+

YY003

+

锁超时,Lock wait timeout

+

连接超时(CONNECTION_TIMED_OUT)

+

YY004

+

TCP通信错误,Connection timed out

+

查询设置错误(SET_QUERY_ERROR)

+

YY005

+

SET命令发送失败,Set query error

+

超出逻辑内存(OUT_OF_LOGICAL_MEMORY)

+

YY006

+

内存申请失败,Out of logical memory

+

通信库内存分配(SCTP_MEMORY_ALLOC)

+

YY007

+

SCTP通信错误,Memory allocate error

+

无通信库缓存数据(SCTP_NO_DATA_IN_BUFFER)

+

YY008

+

SCTP通信错误,SCTP no data in buffer

+

通信库释放内存关闭(SCTP_RELEASE_MEMORY_CLOSE)

+

YY009

+

SCTP通信错误,Release memory close

+

SCTP、TCP断开(SCTP_TCP_DISCONNECT)

+

YY010

+

SCTP、TCP通信错误,SCTP、TCP disconnect

+

通信库断开(SCTP_DISCONNECT)

+

YY011

+

SCTP通信错误,SCTP disconnect

+

通信库远程关闭(SCTP_REMOTE_CLOSE)

+

YY012

+

SCTP通信错误,Stream closed by remote

+

等待未知通信库通信(SCTP_WAIT_POLL_UNKNOW)

+

YY013

+

等待未知通信库通信,SCTP wait poll unknow

+

无效快照(SNAPSHOT_INVALID)

+

YY014

+

快照非法,Snapshot invalid

+

通讯接收信息错误(ERRCODE_CONNECTION_RECEIVE_WRONG)

+

YY015

+

连接获取错误,Connection receive wrong

+

内存耗尽(OUT_OF_MEMORY)

+

53200

+

内存耗尽,Out of memory

+

连接异常(CONNECTION_EXCEPTION)

+

08000

+

连接出现错误,和 DN 的通讯失败,Connection exception

+

管理员关闭系统(ADMIN_SHUTDOWN)

+

57P01

+

管理员关闭系统,Admin shutdown

+

关闭远程流接口(STREAM_REMOTE_CLOSE_SOCKET)

+

XX003

+

关闭远程套接字,Stream remote close socket

+

重复查询编号(ERRCODE_STREAM_DUPLICATE_QUERY_ID)

+

XX009

+

重复查询,Duplicate query id

+

stream查询并发更新同一行(ERRCODE_STREAM_CONCURRENT_UPDATE)

+

YY016

+

stream查询并发更新同一行,Stream concurrent update

+
+ +- 语句类型约束: + + 支持单语句存储过程、函数、匿名块。不支持事务块中的语句。 + +- 存储过程语句约束: + - 包含 EXCEPTION 的存储过程,如果在执行过程中(包含语句块执行和 EXCEPTION 中的语句执行)错误被抛出,可以 retry ,如果报错被 EXCEPTION 捕获则不能 retry 。 + - 不支持使用全局变量的高级包。 + - 不支持DBE\_TASK。 + - 不支持PKG\_UTIL文件操作。 + +- 数据导入约束: + - 不支持 COPY FROM STDIN 语句。 + - 不支持gsql \\copy from元命令。 + - 不支持 JDBC CopyManager copyIn 导入数据。 + + +## 依赖关系 + +该特性依赖 gsql 工具端可以正常工作、错误列表配置正确。 + diff --git "a/content/zh/docs/CharacteristicDescription/\345\205\250\345\257\206\346\200\201\346\225\260\346\215\256\345\272\223\347\255\211\345\200\274\346\237\245\350\257\242.md" "b/content/zh/docs/CharacteristicDescription/\345\205\250\345\257\206\346\200\201\346\225\260\346\215\256\345\272\223\347\255\211\345\200\274\346\237\245\350\257\242.md" index 3f5172f3e..6bd30cd68 100644 --- "a/content/zh/docs/CharacteristicDescription/\345\205\250\345\257\206\346\200\201\346\225\260\346\215\256\345\272\223\347\255\211\345\200\274\346\237\245\350\257\242.md" +++ "b/content/zh/docs/CharacteristicDescription/\345\205\250\345\257\206\346\200\201\346\225\260\346\215\256\345\272\223\347\255\211\345\200\274\346\237\245\350\257\242.md" @@ -1,191 +1,191 @@ -# 全密态数据库等值查询 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -密态数据库意在解决数据全生命周期的隐私保护问题,使得系统无论在何种业务场景和环境下,数据在传输、运算以及存储的各个环节始终都处于密文状态。当数据拥有者在客户端完成数据加密并发送给服务端后,在攻击者借助系统脆弱点窃取用户数据的状态下仍然无法获得有效的价值信息,从而起到保护数据隐私的作用。 - -## 客户价值 - -由于整个业务数据流在数据处理过程中都是以密文形态存在,通过全密态数据库,可以实现: - -1. 保护数据在云上全生命周期的隐私安全,无论数据处于何种状态,攻击者都无法从数据库服务端获取有效信息。 -2. 帮助云服务提供商获取第三方信任,无论是企业服务场景下的业务管理员、运维管理员,还是消费者云业务下的应用开发者,用户通过将密钥掌握在自己手上,使得高权限用户无法获取数据有效信息。 -3. 让云数据库借助全密态能力更好的遵守个人隐私保护方面的法律法规。 - -## 特性描述 - -从用户视角来看,整个密态等值查询的主要功能分为三部分,主要通过新增的KeyTool工具以及openGauss的增强gsql客户端来实现。 - -首先是客户端密钥管理功能,用户借助新增的KeyTool工具来实现CMK的生成、销毁和更新,同时支持密钥导入导出。通过该KeyTool工具的导入导出功能,CMK可以在不同的客户端间进行传输;同时,KeyTool实现了单个客户端侧的密钥管理,通过配置管理文件,可以对密钥的存储、更新进行管理。 - -其次该特性提供密钥创建功能和加密表创建功能,通过新增SQL语法“CREATE CLINET MASTER KEY”和“CREATE COLUMN ENCRYPTION KEY”实现在数据库侧记录和管理CMK和CEK元信息,CMK和CEK信息被记录在新增的系统表中。通过扩展“CREATE TABLE”语法为表的每一个敏感信息列指定列加密密钥和加密算法,方便后续数据密文存储。 - -最后该特性对用户提供密态等值查询能力,该部分功能是整个特性的核心,虽然用户对整个密文查询无感知,但是在指定数据的加密信息后,针对该敏感数据的查询将受限于当前密态等值查询的支持规格。 - -从整体视角来看,该特性所实现的功能主要是为了用户基于敏感数据保护的诉求来存储管理数据并基于密文数据信息实现查询任务。 - -## 特性增强 - -无。 - -## 特性约束 - -- 数据以列级别进行加密,而无法按照行级别区分加密策略。 - -- 除Rename操作外,不支持通过Alter Table语法实现对加密表列的更改(包括加密列和非加密列之间的互转换),支持添加(Add)和删除(Drop)对应的加密列。 - -- 不支持对加密列设置大部分check限制性语法,但是支持check\(column is not null\)语法。 - -- 当support\_extended\_features = off时,不支持对加密列使用primary key、unique。当support\_extended\_features = on时,仅支持确定性加密列使用primary key、unique。 - -- 不支持不同数据类型之间的隐式转换。 - -- 不支持不同数据类型密文间的集合操作。 - -- 不支持加密列创建范围分区。 - -- 加密列仅支持repeat和empty\_blob\(\)函数。 - -- 当前版本只支持gsql和JDBC(部署在linux操作系统)客户端,暂不支持ODBC等其他客户端实现密态等值查询。 - -- 使用JDBC客户端时,密态等值查询特性不能与负载均衡或自动选主特性同时开启。 - -- 只支持通过客户端执行copy from stdin的方式、\\copy命令的方式以及insert into values\(…\)的方式往密态表中导入数据。 - -- 不支持从加密表到文件之间的copy操作。 - -- 不支持包括排序、范围查询以及模糊查询等在内的除等值以外的各种密态查询。 - -- 支持部分函数存储过程密态语法,密态支持函数存储过程具体约束查看开发者指南密态支持函数/存储过程章节。 - -- 不支持通过insert into…select…、merge into语法将非加密表数据插入到加密表数据中。 - -- 对于处于连接状态的连接请求,只有触发更新缓存的操作(更改用户、解密加密列失败等)和重新建连后才能感知服务端CEK信息变更。 - -- 不支持在由随机加密算法加密的列上进行密态等值查询。 - -- 对于密态等值查询运算中如果参与比较的两个属性条件采用不同的数据加密密钥,返回报错。 - -- 密态等值查询不支持时序表、外表,不支持ustore存储引擎加密。 - -- 对于数据库服务侧配置变更(pg\_settings系统表、权限、密钥和加密列等信息), 需要重新建立JDBC连接保证配置变更生效。 - -- 不支持多条SQL语句一起执行,insert into语句多批次执行场景不受此条约束限制。 - -- 密态等值查询支持的数据类型包括: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

数据类

-

类型

-

描述

-

整型

-

tinyint/tinyint(n)

-

微整数,同int1

-

smallint

-

小整数,同int2

-

int4

-

常用整数

-

binary_integer

-

Oracle兼容类型,常用整数

-

bigint/bigint(n)

-

大整数,同int8

-

数值类型

-

numeric(p,s)

-

精度为p的准确数值类型

-

number

-

Oracle兼容类型,等同numeric(p,s)

-

浮点类型

-

float4

-

单精度浮点数

-

float8

-

双精度浮点数

-

double precision

-

双精度浮点数

-

字符类型

-

char/char(n)

-

定长字符串,不足补空格,默认精度为1

-

varchar(n)

-

变长字符串, n是指允许的最大字节长度

-

text

-

文本类型

-

varchar2(n)

-

Oracle兼容类型,等同varchar(n)

-

clob

-

大文本类型

-

二进制类型

-

bytea

-

变长的二进制字符串

-

blob

-

二进制大对象

-
- - -## 依赖关系 - -无。 - +# 全密态数据库等值查询 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +密态数据库意在解决数据全生命周期的隐私保护问题,使得系统无论在何种业务场景和环境下,数据在传输、运算以及存储的各个环节始终都处于密文状态。当数据拥有者在客户端完成数据加密并发送给服务端后,在攻击者借助系统脆弱点窃取用户数据的状态下仍然无法获得有效的价值信息,从而起到保护数据隐私的作用。 + +## 客户价值 + +由于整个业务数据流在数据处理过程中都是以密文形态存在,通过全密态数据库,可以实现: + +1. 保护数据在云上全生命周期的隐私安全,无论数据处于何种状态,攻击者都无法从数据库服务端获取有效信息。 +2. 帮助云服务提供商获取第三方信任,无论是企业服务场景下的业务管理员、运维管理员,还是消费者云业务下的应用开发者,用户通过将密钥掌握在自己手上,使得高权限用户无法获取数据有效信息。 +3. 让云数据库借助全密态能力更好的遵守个人隐私保护方面的法律法规。 + +## 特性描述 + +从用户视角来看,整个密态等值查询的主要功能分为三部分,主要通过新增的 KeyTool 工具以及 openGauss 的增强 gsql 客户端来实现。 + +首先是客户端密钥管理功能,用户借助新增的 KeyTool 工具来实现 CMK 的生成、销毁和更新,同时支持密钥导入导出。通过该 KeyTool 工具的导入导出功能, CMK 可以在不同的客户端间进行传输;同时, KeyTool 实现了单个客户端侧的密钥管理,通过配置管理文件,可以对密钥的存储、更新进行管理。 + +其次该特性提供密钥创建功能和加密表创建功能,通过新增 SQL 语法“CREATE CLINET MASTER KEY”和“CREATE COLUMN ENCRYPTION KEY”实现在数据库侧记录和管理 CMK 和 CEK 元信息, CMK 和 CEK 信息被记录在新增的系统表中。通过扩展“CREATE TABLE”语法为表的每一个敏感信息列指定列加密密钥和加密算法,方便后续数据密文存储。 + +最后该特性对用户提供密态等值查询能力,该部分功能是整个特性的核心,虽然用户对整个密文查询无感知,但是在指定数据的加密信息后,针对该敏感数据的查询将受限于当前密态等值查询的支持规格。 + +从整体视角来看,该特性所实现的功能主要是为了用户基于敏感数据保护的诉求来存储管理数据并基于密文数据信息实现查询任务。 + +## 特性增强 + +无。 + +## 特性约束 + +- 数据以列级别进行加密,而无法按照行级别区分加密策略。 + +- 除 Rename 操作外,不支持通过 Alter Table 语法实现对加密表列的更改(包括加密列和非加密列之间的互转换),支持添加(Add)和删除(Drop)对应的加密列。 + +- 不支持对加密列设置大部分 check 限制性语法,但是支持check\(column is not null\)语法。 + +- 当support\_extended\_features = off时,不支持对加密列使用primary key、unique。当support\_extended\_features = on时,仅支持确定性加密列使用primary key、unique。 + +- 不支持不同数据类型之间的隐式转换。 + +- 不支持不同数据类型密文间的集合操作。 + +- 不支持加密列创建范围分区。 + +- 加密列仅支持 repeat 和empty\_blob\(\)函数。 + +- 当前版本只支持 gsql 和JDBC(部署在 linux 操作系统)客户端,暂不支持 ODBC 等其他客户端实现密态等值查询。 + +- 使用 JDBC 客户端时,密态等值查询特性不能与负载均衡或自动选主特性同时开启。 + +- 只支持通过客户端执行 copy from stdin 的方式、\\copy命令的方式以及insert into values\(…\)的方式往密态表中导入数据。 + +- 不支持从加密表到文件之间的 copy 操作。 + +- 不支持包括排序、范围查询以及模糊查询等在内的除等值以外的各种密态查询。 + +- 支持部分函数存储过程密态语法,密态支持函数存储过程具体约束查看开发者指南密态支持函数/存储过程章节。 + +- 不支持通过insert into…select…、merge into语法将非加密表数据插入到加密表数据中。 + +- 对于处于连接状态的连接请求,只有触发更新缓存的操作(更改用户、解密加密列失败等)和重新建连后才能感知服务端 CEK 信息变更。 + +- 不支持在由随机加密算法加密的列上进行密态等值查询。 + +- 对于密态等值查询运算中如果参与比较的两个属性条件采用不同的数据加密密钥,返回报错。 + +- 密态等值查询不支持时序表、外表,不支持 ustore 存储引擎加密。 + +- 对于数据库服务侧配置变更(pg\_settings系统表、权限、密钥和加密列等信息), 需要重新建立 JDBC 连接保证配置变更生效。 + +- 不支持多条 SQL 语句一起执行, insert into 语句多批次执行场景不受此条约束限制。 + +- 密态等值查询支持的数据类型包括: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

数据类

+

类型

+

描述

+

整型

+

tinyint/tinyint(n)

+

微整数,同int1

+

smallint

+

小整数,同int2

+

int4

+

常用整数

+

binary_integer

+

Oracle兼容类型,常用整数

+

bigint/bigint(n)

+

大整数,同int8

+

数值类型

+

numeric(p,s)

+

精度为 p 的准确数值类型

+

number

+

Oracle兼容类型,等同numeric(p,s)

+

浮点类型

+

float4

+

单精度浮点数

+

float8

+

双精度浮点数

+

double precision

+

双精度浮点数

+

字符类型

+

char/char(n)

+

定长字符串,不足补空格,默认精度为1

+

varchar(n)

+

变长字符串, n 是指允许的最大字节长度

+

text

+

文本类型

+

varchar2(n)

+

Oracle兼容类型,等同varchar(n)

+

clob

+

大文本类型

+

二进制类型

+

bytea

+

变长的二进制字符串

+

blob

+

二进制大对象

+
+ + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\345\205\250\345\261\200\344\270\264\346\227\266\350\241\250.md" "b/content/zh/docs/CharacteristicDescription/\345\205\250\345\261\200\344\270\264\346\227\266\350\241\250.md" index d915366af..85698d1ae 100644 --- "a/content/zh/docs/CharacteristicDescription/\345\205\250\345\261\200\344\270\264\346\227\266\350\241\250.md" +++ "b/content/zh/docs/CharacteristicDescription/\345\205\250\345\261\200\344\270\264\346\227\266\350\241\250.md" @@ -1,39 +1,39 @@ -# 全局临时表 - -## 可获得性 - -本特性自openGauss 1.1.0 版本开始引入。 - -## 特性简介 - -临时表顾名思义是不保证持久化的表,其生命周期一般跟session或者事务绑定,可以方便用于表达处理过程中的一些临时数据存放,加速查询。 - -## 客户价值 - -提升临时表的表达能力和易用性。 - -## 特性描述 - -全局临时表的元数据对所有会话可见,会话结束后元数据继续存在。会话与会话之间的用户数据、索引和统计信息相互隔离,每个会话只能看到和更改自己提交的数据。 - -全局临时表有两种模式:一种是基于会话级别的(ON COMMIT PRESERVE ROWS),当会话结束时自动清空用户数据;一种是基于事务级别的(ON COMMIT DELETE ROWS), 当执行commit或rollback时自动清空用户数据。建表时如果没有指定ON COMMIT选项,则缺省为会话级别。与本地临时表不同,全局临时表建表时可以指定非pg\_temp\_开头的schema。 - -## 特性增强 - -在本地临时表的基础上增加了全局临时表的处理。 - -## 特性约束 - -- 不支持并行扫描 -- 不支持temp tablespace -- 不支持partition -- 不支持GIST索引 -- 不支持User-defined统计信息pg\_statistic\_ext -- 不支持ON COMMIT DROP -- 不支持hash bucket 聚簇存储 -- 不支持列存 - -## 依赖关系 - -无。 - +# 全局临时表 + +## 可获得性 + +本特性自openGauss 1.1.0 版本开始引入。 + +## 特性简介 + +临时表顾名思义是不保证持久化的表,其生命周期一般跟 session 或者事务绑定,可以方便用于表达处理过程中的一些临时数据存放,加速查询。 + +## 客户价值 + +提升临时表的表达能力和易用性。 + +## 特性描述 + +全局临时表的元数据对所有会话可见,会话结束后元数据继续存在。会话与会话之间的用户数据、索引和统计信息相互隔离,每个会话只能看到和更改自己提交的数据。 + +全局临时表有两种模式:一种是基于会话级别的(ON COMMIT PRESERVE ROWS),当会话结束时自动清空用户数据;一种是基于事务级别的(ON COMMIT DELETE ROWS), 当执行 commit 或 rollback 时自动清空用户数据。建表时如果没有指定 ON COMMIT 选项,则缺省为会话级别。与本地临时表不同,全局临时表建表时可以指定非pg\_temp\_开头的 schema 。 + +## 特性增强 + +在本地临时表的基础上增加了全局临时表的处理。 + +## 特性约束 + +- 不支持并行扫描 +- 不支持temp tablespace +- 不支持partition +- 不支持 GIST 索引 +- 不支持User-defined统计信息pg\_statistic\_ext +- 不支持ON COMMIT DROP +- 不支持 hash bucket 聚簇存储 +- 不支持列存 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\345\205\250\346\226\207\347\264\242\345\274\225.md" "b/content/zh/docs/CharacteristicDescription/\345\205\250\346\226\207\347\264\242\345\274\225.md" index 3cbe5d3ca..4e925a4bd 100644 --- "a/content/zh/docs/CharacteristicDescription/\345\205\250\346\226\207\347\264\242\345\274\225.md" +++ "b/content/zh/docs/CharacteristicDescription/\345\205\250\346\226\207\347\264\242\345\274\225.md" @@ -1,48 +1,48 @@ -# 全文索引 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -openGauss中提供的全文索引功能可以对文档进行预处理,并且可以使后续的搜索更快速。 - -## 客户价值 - -openGauss 全文索引功能提供了查询可读性文档的能力,并且通过查询相关度将结果进行排序。 - -## 特性描述 - -构建全文索引的预处理过程包括: - -- 将文档解析成token。 - - 为每个文档标记不同类别的token是非常有必要的,例如:数字、文字、复合词、电子邮件地址,这样就可以做不同的处理。原则上token的类别依赖于具体的应用,但对于大多数的应用来说,可以使用一组预定义的token类。 - -- 将token转换为词素。 - - 词素像token一样是一个字符串,但它已经标准化处理,这样同一个词的不同形式是一样的。例如,标准化通常包括:将大写字母折成小写字母、删除后缀(如英语中的s或者es)。这将允许通过搜索找到同一个词的不同形式,不需要繁琐地输入所有可能的变形样式。同时,这一步通常会删除停用词。这些停用词通常因为太常见而对搜索无用。(总之,token是文档文本的原片段,而词素被认为是有用的索引和搜索词。)openGauss使用词典执行这一步,且提供了各种标准的词典。 - -- 保存搜索优化后的预处理文档。 - - 比如,每个文档可以呈现为标准化词素的有序组合。伴随词素,通常还需要存储词素位置信息以用于邻近排序。因此文档包含的查询词越密集其排序越高。词典能够对token如何标准化做到细粒度控制。使用合适的词典,可以定义不被索引的停用词。 - - -## 特性增强 - -无。 - -## 特性约束 - -openGauss的全文检索功能当前限制约束是: - -- 每个分词长度必须小于2KB。 -- tsvector结构(分词+位置)的长度必须小于1MB。 -- tsvector的位置值必须大于0,且小于等于16,383。 -- 每个分词在文档中位置数必须小于256,若超过将舍弃后面的位置信息。 - -## 依赖关系 - -无。 - +# 全文索引 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +openGauss 中提供的全文索引功能可以对文档进行预处理,并且可以使后续的搜索更快速。 + +## 客户价值 + +openGauss 全文索引功能提供了查询可读性文档的能力,并且通过查询相关度将结果进行排序。 + +## 特性描述 + +构建全文索引的预处理过程包括: + +- 将文档解析成 token 。 + + 为每个文档标记不同类别的 token 是非常有必要的,例如:数字、文字、复合词、电子邮件地址,这样就可以做不同的处理。原则上 token 的类别依赖于具体的应用,但对于大多数的应用来说,可以使用一组预定义的 token 类。 + +- 将 token 转换为词素。 + + 词素像 token 一样是一个字符串,但它已经标准化处理,这样同一个词的不同形式是一样的。例如,标准化通常包括:将大写字母折成小写字母、删除后缀(如英语中的 s 或者es)。这将允许通过搜索找到同一个词的不同形式,不需要繁琐地输入所有可能的变形样式。同时,这一步通常会删除停用词。这些停用词通常因为太常见而对搜索无用。(总之, token 是文档文本的原片段,而词素被认为是有用的索引和搜索词。)openGauss使用词典执行这一步,且提供了各种标准的词典。 + +- 保存搜索优化后的预处理文档。 + + 比如,每个文档可以呈现为标准化词素的有序组合。伴随词素,通常还需要存储词素位置信息以用于邻近排序。因此文档包含的查询词越密集其排序越高。词典能够对 token 如何标准化做到细粒度控制。使用合适的词典,可以定义不被索引的停用词。 + + +## 特性增强 + +无。 + +## 特性约束 + +openGauss 的全文检索功能当前限制约束是: + +- 每个分词长度必须小于 2KB 。 +- tsvector结构(分词+位置)的长度必须小于 1MB 。 +- tsvector的位置值必须大于 0 ,且小于等于 16 , 383 。 +- 每个分词在文档中位置数必须小于 256 ,若超过将舍弃后面的位置信息。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\345\207\275\346\225\260\345\217\212\345\255\230\345\202\250\350\277\207\347\250\213\346\224\257\346\214\201.md" "b/content/zh/docs/CharacteristicDescription/\345\207\275\346\225\260\345\217\212\345\255\230\345\202\250\350\277\207\347\250\213\346\224\257\346\214\201.md" index e6a64631a..471524caa 100644 --- "a/content/zh/docs/CharacteristicDescription/\345\207\275\346\225\260\345\217\212\345\255\230\345\202\250\350\277\207\347\250\213\346\224\257\346\214\201.md" +++ "b/content/zh/docs/CharacteristicDescription/\345\207\275\346\225\260\345\217\212\345\255\230\345\202\250\350\277\207\347\250\213\346\224\257\346\214\201.md" @@ -1,32 +1,32 @@ -# 函数及存储过程支持 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -函数和存储过程是数据库中的一种重要对象,主要功能将用户特定功能的SQL语句集进行封装,并方便调用。 - -## 客户价值 - -1. 允许客户模块化程序设计,对SQL语句集进行封装,调用方便。 -2. 存储过程会进行编译缓存,可以提升用户执行SQL语句集的速度。 -3. 系统管理员通过限制执行某一存储过程的权限,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。 - -## 特性描述 - -openGauss支持SQL标准中的函数及存储过程,其中存储过程兼容了部分主流数据库存储过程的语法,增强了存储过程的易用性。 - -## 特性增强 - -支持PL/PGSQL单步调试功能。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 函数及存储过程支持 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +函数和存储过程是数据库中的一种重要对象,主要功能将用户特定功能的 SQL 语句集进行封装,并方便调用。 + +## 客户价值 + +1. 允许客户模块化程序设计,对 SQL 语句集进行封装,调用方便。 +2. 存储过程会进行编译缓存,可以提升用户执行 SQL 语句集的速度。 +3. 系统管理员通过限制执行某一存储过程的权限,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。 + +## 特性描述 + +openGauss 支持 SQL 标准中的函数及存储过程,其中存储过程兼容了部分主流数据库存储过程的语法,增强了存储过程的易用性。 + +## 特性增强 + +支持PL/PGSQL单步调试功能。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\345\210\206\345\214\272.md" "b/content/zh/docs/CharacteristicDescription/\345\210\206\345\214\272.md" index c649090ed..0709d4454 100644 --- "a/content/zh/docs/CharacteristicDescription/\345\210\206\345\214\272.md" +++ "b/content/zh/docs/CharacteristicDescription/\345\210\206\345\214\272.md" @@ -1,53 +1,53 @@ -# 分区 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -数据分区是在一个节点内部对数据按照用户指定的策略做进一步的水平分表,将表按照指定范围划分为多个数据互不重叠的部分。 - -## 客户价值 - -对于大多数用户使用场景,分区表和普通表相比具有以下优点: - -- 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索效率。 -- 增强可用性:如果分区表的某个分区出现故障,表在其他分区的数据仍然可用。 -- 均衡I/O:可以把不同的分区映射到不同的磁盘以平衡I/O,改善整个系统性能。 - -## 特性描述 - -目前openGauss数据库支持范围分区表、列表分区表、哈希分区表: - -- 范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式是最为常用的。 - - 范围分区功能,即根据表的一列或者多列,将要插入表的记录分为若干个范围(这些范围在不同的分区里没有重叠),然后为每个范围创建一个分区,用来存储相应的数据。 - -- 列表分区表:将数据基于各个分区内包含的键值映射到每一个分区,分区包含的键值在创建分区时指定。 - - 列表分区功能,即根据表的一列,将要插入表的记录中出现的键值分为若干个列表(这些列表在不同的分区里没有重叠),然后为每个列表创建一个分区,用来存储相应的数据。 - -- 哈希分区表:将数据通过哈希映射到每一个分区,每一个分区中存储了具有相同哈希值的记录。 - - 哈希分区功能,即根据表的一列,通过内部哈希算法将要插入表的记录划分到对应的分区中。 - - -用户在CREATE TABLE时增加PARTITION参数,即表示针对此表应用数据分区功能。用户可以在实际使用中根据需要调整建表时的分区键,使每次查询结果尽可能存储在相同或者最少的分区内(称为“分区剪枝”),通过获取连续I/O大幅度提升查询性能。 - -实际业务中,时间经常被作为查询对象的过滤条件。因此,用户可考虑选择时间列为分区键,键值范围可根据总数据量、一次查询数据量调整。 - -## 特性增强 - -支持范围分区表的合并功能。 - -List/Hash分区表支持数据交换。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 分区 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +数据分区是在一个节点内部对数据按照用户指定的策略做进一步的水平分表,将表按照指定范围划分为多个数据互不重叠的部分。 + +## 客户价值 + +对于大多数用户使用场景,分区表和普通表相比具有以下优点: + +- 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索效率。 +- 增强可用性:如果分区表的某个分区出现故障,表在其他分区的数据仍然可用。 +- 均衡I/O:可以把不同的分区映射到不同的磁盘以平衡I/O,改善整个系统性能。 + +## 特性描述 + +目前 openGauss 数据库支持范围分区表、列表分区表、哈希分区表: + +- 范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式是最为常用的。 + + 范围分区功能,即根据表的一列或者多列,将要插入表的记录分为若干个范围(这些范围在不同的分区里没有重叠),然后为每个范围创建一个分区,用来存储相应的数据。 + +- 列表分区表:将数据基于各个分区内包含的键值映射到每一个分区,分区包含的键值在创建分区时指定。 + + 列表分区功能,即根据表的一列,将要插入表的记录中出现的键值分为若干个列表(这些列表在不同的分区里没有重叠),然后为每个列表创建一个分区,用来存储相应的数据。 + +- 哈希分区表:将数据通过哈希映射到每一个分区,每一个分区中存储了具有相同哈希值的记录。 + + 哈希分区功能,即根据表的一列,通过内部哈希算法将要插入表的记录划分到对应的分区中。 + + +用户在 CREATE TABLE 时增加 PARTITION 参数,即表示针对此表应用数据分区功能。用户可以在实际使用中根据需要调整建表时的分区键,使每次查询结果尽可能存储在相同或者最少的分区内(称为“分区剪枝”),通过获取连续I/O大幅度提升查询性能。 + +实际业务中,时间经常被作为查询对象的过滤条件。因此,用户可考虑选择时间列为分区键,键值范围可根据总数据量、一次查询数据量调整。 + +## 特性增强 + +支持范围分区表的合并功能。 + +List/Hash分区表支持数据交换。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\345\212\250\346\200\201\346\225\260\346\215\256\350\204\261\346\225\217\346\234\272\345\210\266.md" "b/content/zh/docs/CharacteristicDescription/\345\212\250\346\200\201\346\225\260\346\215\256\350\204\261\346\225\217\346\234\272\345\210\266.md" index 881a7dc09..932c8ce63 100644 --- "a/content/zh/docs/CharacteristicDescription/\345\212\250\346\200\201\346\225\260\346\215\256\350\204\261\346\225\217\346\234\272\345\210\266.md" +++ "b/content/zh/docs/CharacteristicDescription/\345\212\250\346\200\201\346\225\260\346\215\256\350\204\261\346\225\217\346\234\272\345\210\266.md" @@ -1,190 +1,190 @@ -# 动态数据脱敏机制 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -数据脱敏是行之有效的数据库隐私保护方案之一,可以在一定程度上限制非授权用户对隐私数据的窥探。动态数据脱敏机制是一种通过定制化制定脱敏策略从而实现对隐私数据保护的一种技术,可以有效地在保留原始数据的前提下解决非授权用户对敏感信息的访问问题。当管理员指定待脱敏对象和定制数据脱敏策略后,用户所查询的数据库资源如果关联到对应的脱敏策略时,则会根据用户身份和脱敏策略进行数据脱敏,从而限制非授权用户对隐私数据的访问。 - -## 客户价值 - -数据隐私保护是数据库安全所需要具备的安全能力之一,可以在一定程度上限制非授权用户对隐私数据的访问,保证隐私数据安全。动态数据脱敏机制可以通过配置脱敏策略实现对指定数据库资源信息的隐私保护,另一方面,脱敏策略的配置也具有一定的灵活性,可以仅针对特定用户场景实现有针对性的隐私保护能力。 - -## 特性描述 - -动态数据脱敏机制基于资源标签进行脱敏策略的定制化,可根据实际场景选择特定的脱敏方式,也可以针对某些特定用户制定脱敏策略。一个完整的脱敏策略创建的SQL语法如下所示: - -``` -CREATE RESOURCE LABEL label_for_creditcard ADD COLUMN(user1.table1.creditcard); -CREATE RESOURCE LABEL label_for_name ADD COLUMN(user1.table1.name); -CREATE MASKING POLICY msk_creditcard creditcardmasking ON LABEL(label_for_creditcard); -CREATE MASKING POLICY msk_name randommasking ON LABEL(label_for_name) FILTER ON IP(local), ROLES(dev); -``` - -其中,label\_for\_creditcard和msk\_name为本轮计划脱敏的资源标签,分别包含了两个列对象;creditcardmasking、randommasking为预置的脱敏函数;msk\_creditcard定义了所有用户对label\_for\_creditcard标签所包含的资源访问时做creditcardmasking的脱敏策略,不区分访问源;msk\_name定义了本地用户dev对label\_for\_name标签所包含的资源访问时做randommasking的脱敏策略;当不指定FILTER对象时则表示对所有用户生效,否则仅对标识场景的用户生效。 - -当前,预置的脱敏函数包括: - - - - - - - - - - - - - - - - - - - - - - - - - - - -

脱敏函数名

-

示例

-

creditcardmasking

-

'4880-9898-4545-2525' 将会被脱敏为 'xxxx-xxxx-xxxx-2525',该函数仅对后4位之前的数字进行脱敏

-

basicemailmasking

-

'abcd@gmail.com' 将会被脱敏为'xxxx@gmail.com', 对出现第一个'@'之前的文本进行脱敏

-

fullemailmasking

-

'abcd@gmail.com' 将会被脱敏为 'xxxx@xxxxx.com',对出现最后一个'.'之前的文本(除'@'符外)进行脱敏

-

alldigitsmasking

-

'alex123alex' 将会被脱敏为 'alex000alex', 仅对文本中的数字进行脱敏

-

shufflemasking

-

'hello word' 将会被随机打乱顺序脱敏为 'hlwoeor dl', 该函数通过字符乱序排列的方式实现,属于弱脱敏函数,语义较强的字符串不建议使用该函数脱敏。

-

randommasking

-

'hello word' 将会被脱敏为 'ad5f5ghdf5',将文本按字符随机脱敏

-

maskall

-

'4880-9898-4545-2525' 将会被脱敏为 'xxxxxxxxxxxxxxxxxxx'

-
- -每个脱敏函数规格如下: - - - - - - - - - - - - - - - - - - - - - - - - - - - -

脱敏函数名

-

支持的数据类型

-

creditcardmasking

-

BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对信用卡格式的文本类数据)

-

basicemailmasking

-

BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对email格式的文本类型数据)

-

fullemailmasking

-

BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对email格式的文本类型数据)

-

alldigitsmasking

-

BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对包含数字的文本类型数据)

-

shufflemasking

-

BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对文本类型数据)

-

randommasking

-

BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对文本类型数据)

-

maskall

-

BOOL, RELTIME, TIME, TIMETZ, INTERVAL, TIMESTAMP, TIMESTAMPTZ, SMALLDATETIME, ABSTIME,

-

TEXT, BPCHAR, VARCHAR, NVARCHAR2, NAME, INT8, INT4, INT2, INT1, NUMRIC, FLOAT4, FLOAT8, CASH

-
- -对于不支持的数据类型,默认使用maskall函数进行数据脱敏,若数据类型不属于maskall支持的数据类型则全部使用数字0进行脱敏,如果脱敏列涉及隐式转换,则结果以隐式转换后的数据类型为基础进行脱敏。另外需要说明的是,如果脱敏策略应用到数据列并生效,此时对该列数据的操作将以脱敏后的结果为基础而进行。 - -动态数据脱敏适用于和实际业务紧密相关的场景,根据业务需要为用户提供合理的脱敏查询接口,以避免通过撞库而获取原始数据。 - -## 特性增强 - -无。 - -## 特性约束 - -- 动态数据脱敏策略需要由具备POLADMIN或SYSADMIN属性的用户或初始用户创建,普通用户没有访问安全策略系统表和系统视图的权限。 - -- 动态数据脱敏只在配置了脱敏策略的数据表上生效,而审计日志不在脱敏策略的生效范围内。 - -- 在一个脱敏策略中,对于同一个资源标签仅可指定一种脱敏方式,不可重复指定。 - -- 不允许多个脱敏策略对同一个资源标签进行脱敏,除以下脱敏场景外:使用FILTER指定策略生效的用户场景,包含相同资源标签的脱敏策略间FILTER生效场景无交集,此时可以根据用户场景明确辨别资源标签被哪种策略脱敏。 - -- Filter中的APP项建议仅在同一信任域内使用,由于客户端不可避免的可能出现伪造名称的情况,该选项使用时需要与客户端联合形成一套安全机制,减少误用风险。一般情况下不建议使用,使用时需要注意客户端仿冒的风险。 - -- 对于带有query子句的INSERT或MERGE INTO操作,如果源表中包含脱敏列,则上述两种操作中插入或更新的结果为脱敏后的值,且不可还原。 - -- 在内置安全策略开关开启的情况下,执行ALTER TABLE EXCHANGE PARTITION操作的源表若在脱敏列则执行失败。 - -- 对于设置了动态数据脱敏策略的表,需要谨慎授予其他用户对该表的trigger权限,以免其他用户利用触发器绕过脱敏策略。 - -- 最多支持创建98个动态数据脱敏策略。 - -- 仅支持使用上述七种预置脱敏策略。 - -- 仅支持对只包含COLUMN属性的资源标签做脱敏。 - -- 仅支持对基本表的列进行数据脱敏。 - -- 仅支持对SELECT查询到的数据进行脱敏。 - -- FILTER中的IP地址以ipv4为例支持如下格式。 - - - - - - - - - - - - - - - - - -

ip地址格式

-

示例

-

单ip

-

127.0.0.1

-

掩码表示ip

-

127.0.0.1|255.255.255.0

-

cidr表示ip

-

127.0.0.1/24

-

ip区间

-

127.0.0.1-127.0.0.5

-
- -## 依赖关系 - -无。 - +# 动态数据脱敏机制 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +数据脱敏是行之有效的数据库隐私保护方案之一,可以在一定程度上限制非授权用户对隐私数据的窥探。动态数据脱敏机制是一种通过定制化制定脱敏策略从而实现对隐私数据保护的一种技术,可以有效地在保留原始数据的前提下解决非授权用户对敏感信息的访问问题。当管理员指定待脱敏对象和定制数据脱敏策略后,用户所查询的数据库资源如果关联到对应的脱敏策略时,则会根据用户身份和脱敏策略进行数据脱敏,从而限制非授权用户对隐私数据的访问。 + +## 客户价值 + +数据隐私保护是数据库安全所需要具备的安全能力之一,可以在一定程度上限制非授权用户对隐私数据的访问,保证隐私数据安全。动态数据脱敏机制可以通过配置脱敏策略实现对指定数据库资源信息的隐私保护,另一方面,脱敏策略的配置也具有一定的灵活性,可以仅针对特定用户场景实现有针对性的隐私保护能力。 + +## 特性描述 + +动态数据脱敏机制基于资源标签进行脱敏策略的定制化,可根据实际场景选择特定的脱敏方式,也可以针对某些特定用户制定脱敏策略。一个完整的脱敏策略创建的 SQL 语法如下所示: + +``` +CREATE RESOURCE LABEL label_for_creditcard ADD COLUMN(user1.table1.creditcard); +CREATE RESOURCE LABEL label_for_name ADD COLUMN(user1.table1.name); +CREATE MASKING POLICY msk_creditcard creditcardmasking ON LABEL(label_for_creditcard); +CREATE MASKING POLICY msk_name randommasking ON LABEL(label_for_name) FILTER ON IP(local), ROLES(dev); +``` + +其中,label\_for\_creditcard和msk\_name为本轮计划脱敏的资源标签,分别包含了两个列对象;creditcardmasking、randommasking为预置的脱敏函数;msk\_creditcard定义了所有用户对label\_for\_creditcard标签所包含的资源访问时做 creditcardmasking 的脱敏策略,不区分访问源;msk\_name定义了本地用户 dev 对label\_for\_name标签所包含的资源访问时做 randommasking 的脱敏策略;当不指定 FILTER 对象时则表示对所有用户生效,否则仅对标识场景的用户生效。 + +当前,预置的脱敏函数包括: + + + + + + + + + + + + + + + + + + + + + + + + + + + +

脱敏函数名

+

示例

+

creditcardmasking

+

'4880-9898-4545-2525' 将会被脱敏为 'xxxx-xxxx-xxxx-2525',该函数仅对后 4 位之前的数字进行脱敏

+

basicemailmasking

+

'abcd@gmail.com' 将会被脱敏为'xxxx@gmail.com', 对出现第一个'@'之前的文本进行脱敏

+

fullemailmasking

+

'abcd@gmail.com' 将会被脱敏为 'xxxx@xxxxx.com',对出现最后一个'.'之前的文本(除'@'符外)进行脱敏

+

alldigitsmasking

+

'alex123alex' 将会被脱敏为 'alex000alex', 仅对文本中的数字进行脱敏

+

shufflemasking

+

'hello word' 将会被随机打乱顺序脱敏为 'hlwoeor dl', 该函数通过字符乱序排列的方式实现,属于弱脱敏函数,语义较强的字符串不建议使用该函数脱敏。

+

randommasking

+

'hello word' 将会被脱敏为 'ad5f5ghdf5',将文本按字符随机脱敏

+

maskall

+

'4880-9898-4545-2525' 将会被脱敏为 'xxxxxxxxxxxxxxxxxxx'

+
+ +每个脱敏函数规格如下: + + + + + + + + + + + + + + + + + + + + + + + + + + + +

脱敏函数名

+

支持的数据类型

+

creditcardmasking

+

BPCHAR, VARCHAR , NVARCHAR , TEXT(注:仅针对信用卡格式的文本类数据)

+

basicemailmasking

+

BPCHAR, VARCHAR , NVARCHAR , TEXT(注:仅针对 email 格式的文本类型数据)

+

fullemailmasking

+

BPCHAR, VARCHAR , NVARCHAR , TEXT(注:仅针对 email 格式的文本类型数据)

+

alldigitsmasking

+

BPCHAR, VARCHAR , NVARCHAR , TEXT(注:仅针对包含数字的文本类型数据)

+

shufflemasking

+

BPCHAR, VARCHAR , NVARCHAR , TEXT(注:仅针对文本类型数据)

+

randommasking

+

BPCHAR, VARCHAR , NVARCHAR , TEXT(注:仅针对文本类型数据)

+

maskall

+

BOOL, RELTIME , TIME , TIMETZ , INTERVAL , TIMESTAMP , TIMESTAMPTZ , SMALLDATETIME , ABSTIME ,

+

TEXT, BPCHAR , VARCHAR , NVARCHAR2 , NAME , INT8 , INT4 , INT2 , INT1 , NUMRIC , FLOAT4 , FLOAT8 , CASH

+
+ +对于不支持的数据类型,默认使用 maskall 函数进行数据脱敏,若数据类型不属于 maskall 支持的数据类型则全部使用数字 0 进行脱敏,如果脱敏列涉及隐式转换,则结果以隐式转换后的数据类型为基础进行脱敏。另外需要说明的是,如果脱敏策略应用到数据列并生效,此时对该列数据的操作将以脱敏后的结果为基础而进行。 + +动态数据脱敏适用于和实际业务紧密相关的场景,根据业务需要为用户提供合理的脱敏查询接口,以避免通过撞库而获取原始数据。 + +## 特性增强 + +无。 + +## 特性约束 + +- 动态数据脱敏策略需要由具备 POLADMIN 或 SYSADMIN 属性的用户或初始用户创建,普通用户没有访问安全策略系统表和系统视图的权限。 + +- 动态数据脱敏只在配置了脱敏策略的数据表上生效,而审计日志不在脱敏策略的生效范围内。 + +- 在一个脱敏策略中,对于同一个资源标签仅可指定一种脱敏方式,不可重复指定。 + +- 不允许多个脱敏策略对同一个资源标签进行脱敏,除以下脱敏场景外:使用 FILTER 指定策略生效的用户场景,包含相同资源标签的脱敏策略间 FILTER 生效场景无交集,此时可以根据用户场景明确辨别资源标签被哪种策略脱敏。 + +- Filter中的 APP 项建议仅在同一信任域内使用,由于客户端不可避免的可能出现伪造名称的情况,该选项使用时需要与客户端联合形成一套安全机制,减少误用风险。一般情况下不建议使用,使用时需要注意客户端仿冒的风险。 + +- 对于带有 query 子句的 INSERT 或 MERGE INTO 操作,如果源表中包含脱敏列,则上述两种操作中插入或更新的结果为脱敏后的值,且不可还原。 + +- 在内置安全策略开关开启的情况下,执行 ALTER TABLE EXCHANGE PARTITION 操作的源表若在脱敏列则执行失败。 + +- 对于设置了动态数据脱敏策略的表,需要谨慎授予其他用户对该表的 trigger 权限,以免其他用户利用触发器绕过脱敏策略。 + +- 最多支持创建 98 个动态数据脱敏策略。 + +- 仅支持使用上述七种预置脱敏策略。 + +- 仅支持对只包含 COLUMN 属性的资源标签做脱敏。 + +- 仅支持对基本表的列进行数据脱敏。 + +- 仅支持对 SELECT 查询到的数据进行脱敏。 + +- FILTER中的 IP 地址以 ipv4 为例支持如下格式。 + + + + + + + + + + + + + + + + + +

ip地址格式

+

示例

+

单ip

+

127.0.0.1

+

掩码表示ip

+

127.0.0.1|255.255.255.0

+

cidr表示ip

+

127.0.0.1/24

+

ip区间

+

127.0.0.1-127.0.0.5

+
+ +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\345\220\221\351\207\217\345\214\226\345\274\225\346\223\216.md" "b/content/zh/docs/CharacteristicDescription/\345\220\221\351\207\217\345\214\226\345\274\225\346\223\216.md" index dd8a2b59b..a49659d8f 100644 --- "a/content/zh/docs/CharacteristicDescription/\345\220\221\351\207\217\345\214\226\345\274\225\346\223\216.md" +++ "b/content/zh/docs/CharacteristicDescription/\345\220\221\351\207\217\345\214\226\345\274\225\346\223\216.md" @@ -1,37 +1,37 @@ -# 向量化引擎 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -openGauss提供向量化引擎,通常用在OLAP数据仓库类系统。主要是因为分析型系统通常是数据处理密集型,基本上都是采用顺序方式来访问表中大部分的数据,然后再进行计算,最后将计算结果输出给用户。 - -## 客户价值 - -通过批量计算,大幅提高复杂类查询性能。 - -## 特性描述 - -传统的数据库查询执行都是采用一次一数组(tuple)的pipeline执行模式,因此CPU的大部分处理时间不是用来处理数据,而是遍历查询操作树。这种情况下CPU的有效利用率不高,同时也会导致低指令缓存性能和频繁跳转。更加糟糕的是,这种方式的执行,不能够利用现代硬件的新优化特征来加速查询的执行。在执行引擎中,另外一个解决方案就是改变一次一数组(tuple)为一次一列的模式。这也是我们向量化执行引擎的一个基础。 - -向量化引擎是跟列存储技术绑定的,因为列存储时每列数据存储在一起,可以认为这些数据是以数组的方式存储的。基于这样的特征,当该列数据需要进行某一同样操作,可以通过一个循环来高效完成对这个数据块各个值的计算。 - -向量化执行引擎的优势在于: - -- 可以减少节点间的调度,提高CPU的利用率。 -- 因为相同类型的数据放在一起,可以更容易的利用硬件与编译的新优化特征。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -依赖于列存储。 - +# 向量化引擎 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +openGauss 提供向量化引擎,通常用在 OLAP 数据仓库类系统。主要是因为分析型系统通常是数据处理密集型,基本上都是采用顺序方式来访问表中大部分的数据,然后再进行计算,最后将计算结果输出给用户。 + +## 客户价值 + +通过批量计算,大幅提高复杂类查询性能。 + +## 特性描述 + +传统的数据库查询执行都是采用一次一数组(tuple)的 pipeline 执行模式,因此 CPU 的大部分处理时间不是用来处理数据,而是遍历查询操作树。这种情况下 CPU 的有效利用率不高,同时也会导致低指令缓存性能和频繁跳转。更加糟糕的是,这种方式的执行,不能够利用现代硬件的新优化特征来加速查询的执行。在执行引擎中,另外一个解决方案就是改变一次一数组(tuple)为一次一列的模式。这也是我们向量化执行引擎的一个基础。 + +向量化引擎是跟列存储技术绑定的,因为列存储时每列数据存储在一起,可以认为这些数据是以数组的方式存储的。基于这样的特征,当该列数据需要进行某一同样操作,可以通过一个循环来高效完成对这个数据块各个值的计算。 + +向量化执行引擎的优势在于: + +- 可以减少节点间的调度,提高 CPU 的利用率。 +- 因为相同类型的数据放在一起,可以更容易的利用硬件与编译的新优化特征。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +依赖于列存储。 + diff --git "a/content/zh/docs/CharacteristicDescription/\345\234\250\347\272\277\346\267\273\345\212\240\347\264\242\345\274\225.md" "b/content/zh/docs/CharacteristicDescription/\345\234\250\347\272\277\346\267\273\345\212\240\347\264\242\345\274\225.md" index 88c8e72bf..6ede43483 100644 --- "a/content/zh/docs/CharacteristicDescription/\345\234\250\347\272\277\346\267\273\345\212\240\347\264\242\345\274\225.md" +++ "b/content/zh/docs/CharacteristicDescription/\345\234\250\347\272\277\346\267\273\345\212\240\347\264\242\345\274\225.md" @@ -1,34 +1,34 @@ -# 在线添加索引 - -## 可获得性 - -本特性自openGauss 1.1.0 版本开始引入。 - -## 特性简介 - -通过create index concurrently语法,以不阻塞DML的方式在线创建索引。 - -## 客户价值 - -创建索引时指定concurrently关键字,可以实现创建过程中不阻塞DML,不阻塞用户在线业务。 - -## 特性描述 - -创建索引时,一般会阻塞其他语句对该索引所依赖表的访问。指定concurrently关键字,对表加的是ShareUpdateExclusiveLock锁,可以实现创建过程中不阻塞DML。 - -在线添加索引,需要执行先后两次对该表的权标扫描来完成build,第一次扫描的时候创建索引,不阻塞读写操作;第二次扫描的时候合并更新第一次扫描到目前为止发生的变更。由于需要执行两次对表的扫描和build,而且必须等待现有的所有可能对该表执行修改的事务结束。这意味着该索引的创建比正常耗时更长,同时因此带来的CPU和I/O消耗对其他业务也会造成影响。 - -## 特性增强 - -无。 - -## 特性约束 - -- 在线添加索引时只能指定一个索引的名称。 -- 普通CREATE INDEX命令可以在事务内执行,但是CREATE INDEX CONCURRENTLY不可以在事务内执行。 -- 列存表、分区表和临时表不支持CONCURRENTLY方式创建索引。 - -## 依赖关系 - -无。 - +# 在线添加索引 + +## 可获得性 + +本特性自openGauss 1.1.0 版本开始引入。 + +## 特性简介 + +通过 create index concurrently 语法,以不阻塞 DML 的方式在线创建索引。 + +## 客户价值 + +创建索引时指定 concurrently 关键字,可以实现创建过程中不阻塞 DML ,不阻塞用户在线业务。 + +## 特性描述 + +创建索引时,一般会阻塞其他语句对该索引所依赖表的访问。指定 concurrently 关键字,对表加的是 ShareUpdateExclusiveLock 锁,可以实现创建过程中不阻塞 DML 。 + +在线添加索引,需要执行先后两次对该表的权标扫描来完成 build ,第一次扫描的时候创建索引,不阻塞读写操作;第二次扫描的时候合并更新第一次扫描到目前为止发生的变更。由于需要执行两次对表的扫描和 build ,而且必须等待现有的所有可能对该表执行修改的事务结束。这意味着该索引的创建比正常耗时更长,同时因此带来的 CPU 和I/O消耗对其他业务也会造成影响。 + +## 特性增强 + +无。 + +## 特性约束 + +- 在线添加索引时只能指定一个索引的名称。 +- 普通 CREATE INDEX 命令可以在事务内执行,但是 CREATE INDEX CONCURRENTLY 不可以在事务内执行。 +- 列存表、分区表和临时表不支持 CONCURRENTLY 方式创建索引。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\345\234\250\347\272\277\350\212\202\347\202\271\346\233\277\346\215\242.md" "b/content/zh/docs/CharacteristicDescription/\345\234\250\347\272\277\350\212\202\347\202\271\346\233\277\346\215\242.md" index dd72d4582..8e50797ff 100644 --- "a/content/zh/docs/CharacteristicDescription/\345\234\250\347\272\277\350\212\202\347\202\271\346\233\277\346\215\242.md" +++ "b/content/zh/docs/CharacteristicDescription/\345\234\250\347\272\277\350\212\202\347\202\271\346\233\277\346\215\242.md" @@ -1,30 +1,30 @@ -# 在线节点替换 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -数据库内某节点出现硬件故障造成节点不可用或者实例状态不正常,当数据库没有加锁,通过节点替换或修复故障实例来恢复数据库的过程中,支持用户DML操作,有限场景支持用户DDL操作。 - -## 客户价值 - -随着企业数据规模不断增大,节点数量急剧增加,硬件损坏概率相应增加,物理节点替换修复成为日常运维工作的常态。传统的离线节点替换方式无法满足客户业务不中断需求,日常运维操作中,经常的业务中断将给客户带来重大损失。而目前业界数据库产品在节点替换的过程中,或者需要中断业务,或者只允许部分操作,均不能满足大规模数据情况下,常态物理节点替换的需求。 - -## 特性描述 - -数据库内某节点出现硬件故障造成节点不可用或者实例状态不正常,通过节点替换或修复故障实例来恢复数据库的过程中,支持用户DML操作,有限场景支持用户DDL操作。 - -## 特性增强 - -无。 - -## 特性约束 - -目前节点替换已支持用户业务在线DDL:在节点替换窗口期内,支持用户DML操作,有限场景支持用户DDL操作。 - -## 依赖关系 - -无。 - +# 在线节点替换 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +数据库内某节点出现硬件故障造成节点不可用或者实例状态不正常,当数据库没有加锁,通过节点替换或修复故障实例来恢复数据库的过程中,支持用户 DML 操作,有限场景支持用户 DDL 操作。 + +## 客户价值 + +随着企业数据规模不断增大,节点数量急剧增加,硬件损坏概率相应增加,物理节点替换修复成为日常运维工作的常态。传统的离线节点替换方式无法满足客户业务不中断需求,日常运维操作中,经常的业务中断将给客户带来重大损失。而目前业界数据库产品在节点替换的过程中,或者需要中断业务,或者只允许部分操作,均不能满足大规模数据情况下,常态物理节点替换的需求。 + +## 特性描述 + +数据库内某节点出现硬件故障造成节点不可用或者实例状态不正常,通过节点替换或修复故障实例来恢复数据库的过程中,支持用户 DML 操作,有限场景支持用户 DDL 操作。 + +## 特性增强 + +无。 + +## 特性约束 + +目前节点替换已支持用户业务在线DDL:在节点替换窗口期内,支持用户 DML 操作,有限场景支持用户 DDL 操作。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\345\244\207\346\234\272\345\242\236\345\212\240\345\210\240\351\231\244.md" "b/content/zh/docs/CharacteristicDescription/\345\244\207\346\234\272\345\242\236\345\212\240\345\210\240\351\231\244.md" index b74efc62d..76171bff6 100644 --- "a/content/zh/docs/CharacteristicDescription/\345\244\207\346\234\272\345\242\236\345\212\240\345\210\240\351\231\244.md" +++ "b/content/zh/docs/CharacteristicDescription/\345\244\207\346\234\272\345\242\236\345\212\240\345\210\240\351\231\244.md" @@ -1,63 +1,63 @@ -# 备机增加删除 - -## 可获得性 - -本特性自openGauss 2.0.0 版本开始引入。 - -## 特性简介 - -支持新增和删除备节点。 - -## 客户价值 - -+ 当主数据库的读取压力较大,或者用户想要提升数据库灾难恢复能力,需要新增备节点。 - -+ 当集群中的某些备节点发生故障无法短时间内进行修复时,为保证集群状态正常,用户可以先将故障节点删除。 - -## 特性描述 - -- 支持从单机或者一主多备状态下最多扩容至一主八备,支持新增级联备机,支持在集群中存在故障备机的情况下新增备节点。 - -- 支持从一主多备删除至单节点,支持备机故障的情况下将其删除。 - -- 支持在线新增和删除备节点,即可以在不影响主机业务的情况下进行新增和删除备节点。 - -## 特性增强 - -无。 - -## 特性约束 - -新增备机的约束: - -- 数据库主机上存在openGauss镜像包。 - -- 在新增的扩容备机上创建好与主机上相同的用户和用户组。 - -- 已存在的数据库节点和新增的扩容节点之间需要建立好root用户互信以及数据库管理用户的互信。 - -- 正确配置xml文件,在已安装数据库配置文件的基础上,添加需要扩容的备机信息。 - -- 只能使用root用户执行扩容命令。 - -- 不允许同时在主节点上执行gs\_dropnode命令删除其他备机。 -- 执行扩容命令前需要导入主机数据库的环境变量。 - -- 扩容备机的操作系统与主机保持一致。 - -- 操作过程中不允许同时在其他备节点上执行主备倒换或者故障倒换的操作。 - -删除备机的约束: - -- 删除备节点的操作只能在主节点上执行。 -- 操作过程中不允许同时在其他备节点上执行主备倒换或者故障倒换的操作。 -- 不允许同时在主节点上执行gs\_expansion命令进行扩容。 -- 不允许同时执行2次相同的gs\_dropnode命令。 -- 执行删除操作前,需要确保主节点和备节点之间建立好数据库管理用户的互信。 -- 需要使用数据库管理用户执行该命令。 -- 执行命令前需要通过source命令导入主机数据库的环境变量。 - -## 依赖关系 - -无。 - +# 备机增加删除 + +## 可获得性 + +本特性自openGauss 2.0.0 版本开始引入。 + +## 特性简介 + +支持新增和删除备节点。 + +## 客户价值 + ++ 当主数据库的读取压力较大,或者用户想要提升数据库灾难恢复能力,需要新增备节点。 + ++ 当集群中的某些备节点发生故障无法短时间内进行修复时,为保证集群状态正常,用户可以先将故障节点删除。 + +## 特性描述 + +- 支持从单机或者一主多备状态下最多扩容至一主八备,支持新增级联备机,支持在集群中存在故障备机的情况下新增备节点。 + +- 支持从一主多备删除至单节点,支持备机故障的情况下将其删除。 + +- 支持在线新增和删除备节点,即可以在不影响主机业务的情况下进行新增和删除备节点。 + +## 特性增强 + +无。 + +## 特性约束 + +新增备机的约束: + +- 数据库主机上存在 openGauss 镜像包。 + +- 在新增的扩容备机上创建好与主机上相同的用户和用户组。 + +- 已存在的数据库节点和新增的扩容节点之间需要建立好 root 用户互信以及数据库管理用户的互信。 + +- 正确配置 xml 文件,在已安装数据库配置文件的基础上,添加需要扩容的备机信息。 + +- 只能使用 root 用户执行扩容命令。 + +- 不允许同时在主节点上执行gs\_dropnode命令删除其他备机。 +- 执行扩容命令前需要导入主机数据库的环境变量。 + +- 扩容备机的操作系统与主机保持一致。 + +- 操作过程中不允许同时在其他备节点上执行主备倒换或者故障倒换的操作。 + +删除备机的约束: + +- 删除备节点的操作只能在主节点上执行。 +- 操作过程中不允许同时在其他备节点上执行主备倒换或者故障倒换的操作。 +- 不允许同时在主节点上执行gs\_expansion命令进行扩容。 +- 不允许同时执行 2 次相同的gs\_dropnode命令。 +- 执行删除操作前,需要确保主节点和备节点之间建立好数据库管理用户的互信。 +- 需要使用数据库管理用户执行该命令。 +- 执行命令前需要通过 source 命令导入主机数据库的环境变量。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\345\272\224\347\224\250\345\274\200\345\217\221\346\216\245\345\217\243.md" "b/content/zh/docs/CharacteristicDescription/\345\272\224\347\224\250\345\274\200\345\217\221\346\216\245\345\217\243.md" index 25dbce1aa..2a24c4aa8 100644 --- "a/content/zh/docs/CharacteristicDescription/\345\272\224\347\224\250\345\274\200\345\217\221\346\216\245\345\217\243.md" +++ "b/content/zh/docs/CharacteristicDescription/\345\272\224\347\224\250\345\274\200\345\217\221\346\216\245\345\217\243.md" @@ -1,11 +1,11 @@ -# 应用开发接口 - -- **[支持标准SQL](支持标准SQL.md)** - -- **[支持标准开发接口](支持标准开发接口.md)** - -- **[PG接口兼容](PG接口兼容.md)** - -- **[支持PL/Java](支持PL-Java.md)** - - +# 应用开发接口 + +- **[支持标准SQL](支持标准SQL.md)** + +- **[支持标准开发接口](支持标准开发接口.md)** + +- **[PG接口兼容](PG接口兼容.md)** + +- **[支持PL/Java](支持PL-Java.md)** + + diff --git "a/content/zh/docs/CharacteristicDescription/\345\273\266\346\227\266\345\233\236\346\224\276.md" "b/content/zh/docs/CharacteristicDescription/\345\273\266\346\227\266\345\233\236\346\224\276.md" index baa196a48..8b5772cbd 100644 --- "a/content/zh/docs/CharacteristicDescription/\345\273\266\346\227\266\345\233\236\346\224\276.md" +++ "b/content/zh/docs/CharacteristicDescription/\345\273\266\346\227\266\345\233\236\346\224\276.md" @@ -1,40 +1,40 @@ -# 延时回放 - -## 可获得性 - -本特性自openGauss 2.0.0 版本开始引入。 - -## 特性简介 - -支持备机延时回放。 - -## 客户价值 - -默认情况下,备机会尽快恢复来自于主机的XLOG记录。这个功能允许备机将回放延时一段指定的时间后进行回放。提供一份可查询一段时间之前的数据副本,可以更方便的纠正用户误操作等错误。 - -## 特性描述 - -支持通过配置GUC参数recovery\_min\_apply\_delay设定延时时间,使某个备机延时一段时间回放来自主机的事务日志。 - -参数取值范围:整型,0\~INT\_MAX,单位为毫秒。 - -参数默认值:0(不增加延迟) - -## 特性增强 - -无。 - -## 特性约束 - -- recovery\_min\_apply\_delay参数主节点设置无效,必须设置在需要延迟的备节点上。 -- 延迟时间是根据主服务器上事务提交的时间戳与备机上的当前时间来计算,因此需要保证主备系统时钟一致。 -- 没有事务的操作不会被延迟。 -- 主备切换之后,原主机若需延迟,需要再手动配置此参数。 -- 当synchronous\_commit被设置为remote\_apply时,同步复制会受到这个延时的影响,每一个COMMIT都需要等待备机回放结束后才会返回。 -- 使用这个特性也会让hot\_standby\_feedback被延迟,这可能导致主服务器的膨胀,两者一起使用时要小心。 -- 主机执行了持有AccessExclusive锁的DDL操作,比如DROP和TRUNCATE操作,在备机延迟回放该条记录期间,在备机上对该操作对象执行查询操作会等待锁释放之后才会返回。 - -## 依赖关系 - -无。 - +# 延时回放 + +## 可获得性 + +本特性自openGauss 2.0.0 版本开始引入。 + +## 特性简介 + +支持备机延时回放。 + +## 客户价值 + +默认情况下,备机会尽快恢复来自于主机的 XLOG 记录。这个功能允许备机将回放延时一段指定的时间后进行回放。提供一份可查询一段时间之前的数据副本,可以更方便的纠正用户误操作等错误。 + +## 特性描述 + +支持通过配置 GUC 参数recovery\_min\_apply\_delay设定延时时间,使某个备机延时一段时间回放来自主机的事务日志。 + +参数取值范围:整型,0\~INT\_MAX,单位为毫秒。 + +参数默认值:0(不增加延迟) + +## 特性增强 + +无。 + +## 特性约束 + +- recovery\_min\_apply\_delay参数主节点设置无效,必须设置在需要延迟的备节点上。 +- 延迟时间是根据主服务器上事务提交的时间戳与备机上的当前时间来计算,因此需要保证主备系统时钟一致。 +- 没有事务的操作不会被延迟。 +- 主备切换之后,原主机若需延迟,需要再手动配置此参数。 +- 当synchronous\_commit被设置为remote\_apply时,同步复制会受到这个延时的影响,每一个 COMMIT 都需要等待备机回放结束后才会返回。 +- 使用这个特性也会让hot\_standby\_feedback被延迟,这可能导致主服务器的膨胀,两者一起使用时要小心。 +- 主机执行了持有 AccessExclusive 锁的 DDL 操作,比如 DROP 和 TRUNCATE 操作,在备机延迟回放该条记录期间,在备机上对该操作对象执行查询操作会等待锁释放之后才会返回。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\205\242SQL\350\257\212\346\226\255.md" "b/content/zh/docs/CharacteristicDescription/\346\205\242SQL\350\257\212\346\226\255.md" index d8ea1b711..f7f7e7af3 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\205\242SQL\350\257\212\346\226\255.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\205\242SQL\350\257\212\346\226\255.md" @@ -1,137 +1,137 @@ -# 慢SQL诊断 - -## 可获得性 - -本特性自openGauss 1.1.0 版本开始引入。 - -重构前慢SQL相关视图已废弃,包括dbe\_perf. gs\_slow\_query\_info、dbe\_perf.gs\_slow\_query\_history、dbe\_perf.global\_slow\_query\_hisotry、dbe\_perf.global\_slow\_query\_info。 - -## 特性简介 - -慢SQL诊断提供诊断慢SQL所需要的必要信息,帮助开发者回溯执行时间超过阈值的SQL,诊断SQL性能瓶颈。 - -## 客户价值 - -慢SQL诊断提供给用户对于慢SQL所需的详细信息,用户无需通过复现就能离线诊断特定慢SQL的性能问题。表和函数接口方便用户统计慢SQL指标,对接第三方平台。 - -## 特性描述 - -慢SQL能根据用户提供的执行时间阈值(log\_min\_duration\_statement),记录所有超过阈值的执行完毕的作业信息。 - -慢SQL提供表和函数两种维度的查询接口。用户从接口中能查询到作业的执行计划,开始、结束执行时间,执行查询的语句,行活动,内核时间,CPU时间,执行时间,解析时间,编译时间,查询重写时间,计划生成时间,网络时间,IO时间,网络开销,锁开销等。以上所有信息都是脱敏的。 - -## 特性增强 - -增加对慢SQL指标信息、安全性(脱敏)、执行计划、查询接口的增强。 - -``` -执行命令查看数据库实例中SQL语句执行信息 -gsql> select * from dbe_perf.get_global_full_sql_by_timestamp(start_timestamp, end_timestamp); -例如: -openGauss=# select * from DBE_PERF.get_global_full_sql_by_timestamp('2020-12-01 09:25:22', '2020-12-31 23:54:41'); --[ RECORD 1 ]--------+--------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------- -node_name | dn_6001_6002_6003 -db_name | postgres -schema_name | "$user",public -origin_node | 1938253334 -user_name | user_dj -application_name | gsql -client_addr | -client_port | -1 -unique_query_id | 3671179229 -debug_query_id | 72339069014839210 -query | select name, setting from pg_settings where name in (?) -start_time | 2020-12-19 16:19:51.216818+08 -finish_time | 2020-12-19 16:19:51.224513+08 -slow_sql_threshold | 1800000000 -transaction_id | 0 -thread_id | 139884662093568 -session_id | 139884662093568 -n_soft_parse | 0 -n_hard_parse | 1 -query_plan | Datanode Name: dn_6001_6002_6003 - | Function Scan on pg_show_all_settings a (cost=0.00..12.50 rows=5 width=64) - | Filter: (name = '***'::text) -... - -执行命令查看数据库实例中慢SQL语句执行信息 -gsql> select * from dbe_perf.get_global_slow_sql_by_timestamp(start_timestamp, end_timestamp); -openGauss=# select * from DBE_PERF.get_global_slow_sql_by_timestamp('2020-12-01 09:25:22', '2020-12-31 23:54:41'); --[ RECORD 1 ]--------+--------------------------------------------------------------------------------------------------- -node_name | dn_6001_6002_6003 -db_name | postgres -schema_name | "$user",public -origin_node | 1938253334 -user_name | user_dj -application_name | gsql -client_addr | -client_port | -1 -unique_query_id | 2165004317 -debug_query_id | 72339069014839319 -query | select * from DBE_PERF.get_global_slow_sql_by_timestamp(?, ?); -start_time | 2020-12-19 16:23:20.738491+08 -finish_time | 2020-12-19 16:23:20.773714+08 -slow_sql_threshold | 10000 -transaction_id | 0 -thread_id | 139884662093568 -session_id | 139884662093568 -n_soft_parse | 10 -n_hard_parse | 8 -query_plan | Datanode Name: dn_6001_6002_6003 - | Result (cost=1.01..1.02 rows=1 width=0) - | InitPlan 1 (returns $0) - | -> Seq Scan on pgxc_node (cost=0.00..1.01 rows=1 width=64) - | Filter: (nodeis_active AND ((node_type = '***'::"char") OR (node_type = '***'::"char"))) -... - -查看当前节点SQL语句执行信息 -gsql> select * from statement_history; -例如: -openGauss=# select * from statement_history; --[ RECORD 1 ]--------+--------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------- -db_name | postgres -schema_name | "$user",public -origin_node | 1938253334 -user_name | user_dj -application_name | gsql -client_addr | -client_port | -1 -unique_query_id | 3671179229 -debug_query_id | 72339069014839210 -query | select name, setting from pg_settings where name in (?) -start_time | 2020-12-19 16:19:51.216818+08 -finish_time | 2020-12-19 16:19:51.224513+08 -slow_sql_threshold | 1800000000 -transaction_id | 0 -thread_id | 139884662093568 -session_id | 139884662093568 -n_soft_parse | 0 -n_hard_parse | 1 -query_plan | Datanode Name: dn_6001_6002_6003 - | Function Scan on pg_show_all_settings a (cost=0.00..12.50 rows=5 width=64) - | Filter: (name = '***'::text) -``` - -## 特性约束 - -+ 目前的SQL跟踪信息,基于正常的执行逻辑。执行失败的SQL,其跟踪信息不具有准确的参考价值。 - -+ 节点重启,可能导致该节点的数据丢失。 -+ SQL语句执行完立即退出会话,可能会丢失该会话未刷新到系统表中的数据。 - -+ 通过GUC参数设置收集SQL语句的数量,如果超过阈值,新的SQL语句执行信息不会被收集。 - -+ 通过GUC参数设置单条SQL语句收集的锁事件详细信息的最大字节数,如果超过阈值,新的锁事件详细信息不会被收集。 - -+ 通过异步刷新方式刷新用户执行中的SQL信息,所以用户Query执行结束后,存在查询相关视图函数结果短暂时延。 - -+ 部分指标信息(行活动、Cache/IO、时间分布等)依赖于dbe\_perf.statement视图收集,如果该视图对应记录数超过预定大小(依赖GUC:instr\_unique\_sql\_count),则本特性可能不收集相关指标。 - -+ statement\_history表相关函数以及视图中details字段为二进制格式,如果需要解析详细内容,请使用对应函数pg\_catalog.statement\_detail\_decode\(details, 'plaintext', true\)。 - -## 依赖关系 - -无。 - +# 慢 SQL 诊断 + +## 可获得性 + +本特性自openGauss 1.1.0 版本开始引入。 + +重构前慢 SQL 相关视图已废弃,包括dbe\_perf. gs\_slow\_query\_info、dbe\_perf.gs\_slow\_query\_history、dbe\_perf.global\_slow\_query\_hisotry、dbe\_perf.global\_slow\_query\_info。 + +## 特性简介 + +慢 SQL 诊断提供诊断慢 SQL 所需要的必要信息,帮助开发者回溯执行时间超过阈值的 SQL ,诊断 SQL 性能瓶颈。 + +## 客户价值 + +慢 SQL 诊断提供给用户对于慢 SQL 所需的详细信息,用户无需通过复现就能离线诊断特定慢 SQL 的性能问题。表和函数接口方便用户统计慢 SQL 指标,对接第三方平台。 + +## 特性描述 + +慢 SQL 能根据用户提供的执行时间阈值(log\_min\_duration\_statement),记录所有超过阈值的执行完毕的作业信息。 + +慢 SQL 提供表和函数两种维度的查询接口。用户从接口中能查询到作业的执行计划,开始、结束执行时间,执行查询的语句,行活动,内核时间, CPU 时间,执行时间,解析时间,编译时间,查询重写时间,计划生成时间,网络时间, IO 时间,网络开销,锁开销等。以上所有信息都是脱敏的。 + +## 特性增强 + +增加对慢 SQL 指标信息、安全性(脱敏)、执行计划、查询接口的增强。 + +``` +执行命令查看数据库实例中 SQL 语句执行信息 +gsql> select * from dbe_perf.get_global_full_sql_by_timestamp(start_timestamp, end_timestamp); +例如: +openGauss=# select * from DBE_PERF.get_global_full_sql_by_timestamp('2020-12-01 09:25:22', '2020-12-31 23:54:41'); +-[ RECORD 1 ]--------+--------------------------------------------------------------------------------------------------------------- +--------------------------------------------------------------- +node_name | dn_6001_6002_6003 +db_name | postgres +schema_name | "$user",public +origin_node | 1938253334 +user_name | user_dj +application_name | gsql +client_addr | +client_port | -1 +unique_query_id | 3671179229 +debug_query_id | 72339069014839210 +query | select name, setting from pg_settings where name in (?) +start_time | 2020-12-19 16:19:51.216818+08 +finish_time | 2020-12-19 16:19:51.224513+08 +slow_sql_threshold | 1800000000 +transaction_id | 0 +thread_id | 139884662093568 +session_id | 139884662093568 +n_soft_parse | 0 +n_hard_parse | 1 +query_plan | Datanode Name: dn_6001_6002_6003 + | Function Scan on pg_show_all_settings a (cost=0.00..12.50 rows=5 width=64) + | Filter: (name = '***'::text) +... + +执行命令查看数据库实例中慢 SQL 语句执行信息 +gsql> select * from dbe_perf.get_global_slow_sql_by_timestamp(start_timestamp, end_timestamp); +openGauss=# select * from DBE_PERF.get_global_slow_sql_by_timestamp('2020-12-01 09:25:22', '2020-12-31 23:54:41'); +-[ RECORD 1 ]--------+--------------------------------------------------------------------------------------------------- +node_name | dn_6001_6002_6003 +db_name | postgres +schema_name | "$user",public +origin_node | 1938253334 +user_name | user_dj +application_name | gsql +client_addr | +client_port | -1 +unique_query_id | 2165004317 +debug_query_id | 72339069014839319 +query | select * from DBE_PERF.get_global_slow_sql_by_timestamp(?, ?); +start_time | 2020-12-19 16:23:20.738491+08 +finish_time | 2020-12-19 16:23:20.773714+08 +slow_sql_threshold | 10000 +transaction_id | 0 +thread_id | 139884662093568 +session_id | 139884662093568 +n_soft_parse | 10 +n_hard_parse | 8 +query_plan | Datanode Name: dn_6001_6002_6003 + | Result (cost=1.01..1.02 rows=1 width=0) + | InitPlan 1 (returns $0) + | -> Seq Scan on pgxc_node (cost=0.00..1.01 rows=1 width=64) + | Filter: (nodeis_active AND ((node_type = '***'::"char") OR (node_type = '***'::"char"))) +... + +查看当前节点 SQL 语句执行信息 +gsql> select * from statement_history; +例如: +openGauss=# select * from statement_history; +-[ RECORD 1 ]--------+--------------------------------------------------------------------------------------------------------------- +--------------------------------------------------------------- +db_name | postgres +schema_name | "$user",public +origin_node | 1938253334 +user_name | user_dj +application_name | gsql +client_addr | +client_port | -1 +unique_query_id | 3671179229 +debug_query_id | 72339069014839210 +query | select name, setting from pg_settings where name in (?) +start_time | 2020-12-19 16:19:51.216818+08 +finish_time | 2020-12-19 16:19:51.224513+08 +slow_sql_threshold | 1800000000 +transaction_id | 0 +thread_id | 139884662093568 +session_id | 139884662093568 +n_soft_parse | 0 +n_hard_parse | 1 +query_plan | Datanode Name: dn_6001_6002_6003 + | Function Scan on pg_show_all_settings a (cost=0.00..12.50 rows=5 width=64) + | Filter: (name = '***'::text) +``` + +## 特性约束 + ++ 目前的 SQL 跟踪信息,基于正常的执行逻辑。执行失败的 SQL ,其跟踪信息不具有准确的参考价值。 + ++ 节点重启,可能导致该节点的数据丢失。 ++ SQL语句执行完立即退出会话,可能会丢失该会话未刷新到系统表中的数据。 + ++ 通过 GUC 参数设置收集 SQL 语句的数量,如果超过阈值,新的 SQL 语句执行信息不会被收集。 + ++ 通过 GUC 参数设置单条 SQL 语句收集的锁事件详细信息的最大字节数,如果超过阈值,新的锁事件详细信息不会被收集。 + ++ 通过异步刷新方式刷新用户执行中的 SQL 信息,所以用户 Query 执行结束后,存在查询相关视图函数结果短暂时延。 + ++ 部分指标信息(行活动、Cache/IO、时间分布等)依赖于dbe\_perf.statement视图收集,如果该视图对应记录数超过预定大小(依赖GUC:instr\_unique\_sql\_count),则本特性可能不收集相关指标。 + ++ statement\_history表相关函数以及视图中 details 字段为二进制格式,如果需要解析详细内容,请使用对应函数pg\_catalog.statement\_detail\_decode\(details, 'plaintext', true\)。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\216\247\345\210\266\346\235\203\345\222\214\350\256\277\351\227\256\346\235\203\345\210\206\347\246\273.md" "b/content/zh/docs/CharacteristicDescription/\346\216\247\345\210\266\346\235\203\345\222\214\350\256\277\351\227\256\346\235\203\345\210\206\347\246\273.md" index 8b8261e28..e1593f88f 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\216\247\345\210\266\346\235\203\345\222\214\350\256\277\351\227\256\346\235\203\345\210\206\347\246\273.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\216\247\345\210\266\346\235\203\345\222\214\350\256\277\351\227\256\346\235\203\345\210\206\347\246\273.md" @@ -1,40 +1,40 @@ -# 控制权和访问权分离 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -支持控制权和访问权分离。 - -## 客户价值 - -针对管理员用户,表对象的控制权和访问权要能够分离,提高普通用户数据安全性。 - -## 特性描述 - -对于有多个业务部门,各部门间使用不同的数据库用户进行业务操作,同时有一个同级的数据库维护部门使用数据库管理员进行维护操作的场景下,业务部门可能希望在未经授权的情况下,管理员用户只能对各部门的数据进行控制操作(DROP、ALTER、TRUNCATE),但是不能进行访问操作(INSERT、DELETE、UPDATE、SELECT、COPY)。即针对管理员用户,表对象的控制权和访问权要能够分离,提高普通用户数据安全性。 - -三权分立情况下,管理员对其他用户放在属于各自模式下的表无权限。但是,这种无权限包含了无控制权限,因此不能满足上面的诉求。为此,openGauss提供了私有用户方案。即在非三权分立模式下,创建具有INDEPENDENT属性的私有用户。具备CREATEROLE权限或者是系统管理员权限的用户可以创建私有用户或者修改普通用户的属性为私有用户,普通用户也可以修改自己的属性为私有用户。 - -``` -openGauss=# CREATE USER user_independent WITH INDEPENDENT IDENTIFIED BY "1234@abc"; -``` - -针对该用户的表对象,系统管理员在未经其授权前,只能进行控制操作(DROP、ALTER、TRUNCATE),无权进行INSERT、DELETE、SELECT、UPDATE、COPY、GRANT、REVOKE、ALTER OWNER操作。 - -## 特性增强 - -无。 - -## 特性约束 - -对于私有用户的表,需要谨慎授予其他用户对该表的trigger权限,以免其他用户利用触发器查看私有用户的数据。 - -若将私有用户表的相关权限授予其他非私有用户,系统管理员也会获得同样的权限。 - -## 依赖关系 - -无。 - +# 控制权和访问权分离 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +支持控制权和访问权分离。 + +## 客户价值 + +针对管理员用户,表对象的控制权和访问权要能够分离,提高普通用户数据安全性。 + +## 特性描述 + +对于有多个业务部门,各部门间使用不同的数据库用户进行业务操作,同时有一个同级的数据库维护部门使用数据库管理员进行维护操作的场景下,业务部门可能希望在未经授权的情况下,管理员用户只能对各部门的数据进行控制操作(DROP、ALTER、TRUNCATE),但是不能进行访问操作(INSERT、DELETE、UPDATE、SELECT、COPY)。即针对管理员用户,表对象的控制权和访问权要能够分离,提高普通用户数据安全性。 + +三权分立情况下,管理员对其他用户放在属于各自模式下的表无权限。但是,这种无权限包含了无控制权限,因此不能满足上面的诉求。为此, openGauss 提供了私有用户方案。即在非三权分立模式下,创建具有 INDEPENDENT 属性的私有用户。具备 CREATEROLE 权限或者是系统管理员权限的用户可以创建私有用户或者修改普通用户的属性为私有用户,普通用户也可以修改自己的属性为私有用户。 + +``` +openGauss=# CREATE USER user_independent WITH INDEPENDENT IDENTIFIED BY "1234@abc"; +``` + +针对该用户的表对象,系统管理员在未经其授权前,只能进行控制操作(DROP、ALTER、TRUNCATE),无权进行INSERT、DELETE、SELECT、UPDATE、COPY、GRANT、REVOKE、ALTER OWNER操作。 + +## 特性增强 + +无。 + +## 特性约束 + +对于私有用户的表,需要谨慎授予其他用户对该表的 trigger 权限,以免其他用户利用触发器查看私有用户的数据。 + +若将私有用户表的相关权限授予其他非私有用户,系统管理员也会获得同样的权限。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201HyperLogLog.md" "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201HyperLogLog.md" index ba0935c85..9ee31bddc 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201HyperLogLog.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201HyperLogLog.md" @@ -1,32 +1,32 @@ -# 支持HyperLogLog - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -通过使用HyperLogLog相关函数,计算唯一值个数Count(Distinct),提升性能。 - -## 客户价值 - -提升AP/TP类查询的性能。 - -## 特性描述 - -HLL(HyperLogLog)是统计数据集中唯一值个数的高效近似算法。它有着计算速度快、节省空间的特点,不需要直接存储集合本身,而是存储一种名为HLL的数据结构。每当有新数据加入进行统计时,只需要把数据经过哈希计算并插入到HLL中,最后根据HLL就可以得到结果。 - -HLL在计算速度和所占存储空间上都占优势。在时间复杂度上,Sort算法需要排序至少O\(nlogn\)的时间,虽说Hash算法和HLL一样扫描一次全表O\(n\)的时间就可以得出结果,但是存储空间上,Sort算法和Hash算法都需要先把原始数据存起来再进行统计,会导致存储空间消耗巨大。而对HLL来说不需要存原始数据,只需要维护HLL数据结构,所以占用空间始终是1280字节常数级别。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 支持HyperLogLog + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +通过使用 HyperLogLog 相关函数,计算唯一值个数Count(Distinct),提升性能。 + +## 客户价值 + +提升AP/TP类查询的性能。 + +## 特性描述 + +HLL(HyperLogLog)是统计数据集中唯一值个数的高效近似算法。它有着计算速度快、节省空间的特点,不需要直接存储集合本身,而是存储一种名为 HLL 的数据结构。每当有新数据加入进行统计时,只需要把数据经过哈希计算并插入到 HLL 中,最后根据 HLL 就可以得到结果。 + +HLL 在计算速度和所占存储空间上都占优势。在时间复杂度上, Sort 算法需要排序至少O\(nlogn\)的时间,虽说 Hash 算法和 HLL 一样扫描一次全表O\(n\)的时间就可以得出结果,但是存储空间上, Sort 算法和 Hash 算法都需要先把原始数据存起来再进行统计,会导致存储空间消耗巨大。而对 HLL 来说不需要存原始数据,只需要维护 HLL 数据结构,所以占用空间始终是 1280 字节常数级别。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201LLVM.md" "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201LLVM.md" index 3b33db3c9..96d0e0752 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201LLVM.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201LLVM.md" @@ -1,30 +1,30 @@ -# 支持LLVM - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -openGauss的LLVM(Low Level Virtual Machine)技术,提供了查询动态编译执行的能力。 - -## 客户价值 - -通过对查询动态编译执行,大幅提高重查询性能。 - -## 特性描述 - -openGauss借助LLVM提供的库函数,依据查询执行计划树,将原本在执行器阶段才会确定查询实际执行路径的过程提前到执行初始化阶段,从而规避原本查询执行时候伴随的函数调用、逻辑条件分支判断以及大量的数据读取等问题,以达到提升查询性能的目的。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -依赖于LLVM开源组件,当前使用的开源组件版本为10.0.0。 - +# 支持LLVM + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +openGauss 的LLVM(Low Level Virtual Machine)技术,提供了查询动态编译执行的能力。 + +## 客户价值 + +通过对查询动态编译执行,大幅提高重查询性能。 + +## 特性描述 + +openGauss 借助 LLVM 提供的库函数,依据查询执行计划树,将原本在执行器阶段才会确定查询实际执行路径的过程提前到执行初始化阶段,从而规避原本查询执行时候伴随的函数调用、逻辑条件分支判断以及大量的数据读取等问题,以达到提升查询性能的目的。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +依赖于 LLVM 开源组件,当前使用的开源组件版本为10.0.0。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201PL-Java.md" "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201PL-Java.md" index ea71d1638..65677a678 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201PL-Java.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201PL-Java.md" @@ -1,132 +1,132 @@ -# 支持PL/Java - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -支持java UDF。 - -## 客户价值 - -提供多种函数的开发环境。 - -## 特性描述 - -使用openGauss数据库的PL/Java函数,用户可以使用自己喜欢的Java IDE编写Java方法,并将包含这些方法的jar文件安装到openGauss数据库中,然后使用该方法。openGauss PL/Java基于开源tada PL/Java 1.5.2开发,PL/Java所使用的JDK版本为Huawei JDK V100R001C00SPC190B003-b09。 - -## 特性增强 - -无。 - -## 特性约束 - -- Java UDF可以实现一些较为简单的java计算,强烈建议不要在Java UDF中封装业务。 -- 强烈建议不要在Java函数中使用任何方式连接数据库,包括但不限于JDBC。 -- 建议用户使用Huawei JDK V100R001C00SPC190B003-b09编译Java方法和jar文件。 -- 暂不支持的数据类型:除[表1](#table10200627143416)提及之外的数据类型,包括自定义类型,复杂数据类型(Java Array类及派生类)。 -- 暂不支持UDAF、UDTF。 - - **表 1** PL/Java默认数据类型映射关系 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

openGauss

-

Java

-

BOOLEAN

-

boolean

-

"char"

-

byte

-

bytea

-

byte[]

-

SMALLINT

-

short

-

INTEGER

-

int

-

BIGINT

-

long

-

FLOAT4

-

float

-

FLOAT8

-

double

-

CHAR

-

java.lang.String

-

VARCHAR

-

java.lang.String

-

TEXT

-

java.lang.String

-

name

-

java.lang.String

-

DATE

-

java.sql.Timestamp

-

TIME

-

java.sql.Time (stored value treated as local time)

-

TIMETZ

-

java.sql.Time

-

TIMESTAMP

-

java.sql.Timestamp

-

TIMESTAMPTZ

-

java.sql.Timestamp

-
- - -## 依赖关系 - -PL/Java依赖JDK环境,目前openGauss中已包含JDK环境,无需用户安装。如果用户已安装(相同或不同版本的)JDK,也不会引起冲突,openGauss会使用Huawei JDK V100R001C00SPC190B003-b09来运行PL/Java。 - +# 支持PL/Java + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +支持 java UDF 。 + +## 客户价值 + +提供多种函数的开发环境。 + +## 特性描述 + +使用 openGauss 数据库的PL/Java函数,用户可以使用自己喜欢的 Java IDE 编写 Java 方法,并将包含这些方法的 jar 文件安装到 openGauss 数据库中,然后使用该方法。openGauss PL/Java基于开源tada PL/Java 1.5.2开发,PL/Java所使用的 JDK 版本为Huawei JDK V100R001C00SPC190B003-b09。 + +## 特性增强 + +无。 + +## 特性约束 + +- Java UDF可以实现一些较为简单的 java 计算,强烈建议不要在 Java UDF 中封装业务。 +- 强烈建议不要在 Java 函数中使用任何方式连接数据库,包括但不限于 JDBC 。 +- 建议用户使用Huawei JDK V100R001C00SPC190B003-b09编译 Java 方法和 jar 文件。 +- 暂不支持的数据类型:除[表1](#table10200627143416)提及之外的数据类型,包括自定义类型,复杂数据类型(Java Array类及派生类)。 +- 暂不支持UDAF、UDTF。 + + **表 1** PL/Java默认数据类型映射关系 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

openGauss

+

Java

+

BOOLEAN

+

boolean

+

"char"

+

byte

+

bytea

+

byte[]

+

SMALLINT

+

short

+

INTEGER

+

int

+

BIGINT

+

long

+

FLOAT4

+

float

+

FLOAT8

+

double

+

CHAR

+

java.lang.String

+

VARCHAR

+

java.lang.String

+

TEXT

+

java.lang.String

+

name

+

java.lang.String

+

DATE

+

java.sql.Timestamp

+

TIME

+

java.sql.Time (stored value treated as local time)

+

TIMETZ

+

java.sql.Time

+

TIMESTAMP

+

java.sql.Timestamp

+

TIMESTAMPTZ

+

java.sql.Timestamp

+
+ + +## 依赖关系 + +PL/Java依赖 JDK 环境,目前 openGauss 中已包含 JDK 环境,无需用户安装。如果用户已安装(相同或不同版本的)JDK,也不会引起冲突, openGauss 会使用Huawei JDK V100R001C00SPC190B003-b09来运行PL/Java。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201SQL-hint.md" "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201SQL-hint.md" index 53a4551b6..5a0c12dbd 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201SQL-hint.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201SQL-hint.md" @@ -1,34 +1,34 @@ -# 支持SQL hint - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -支持SQL hint影响执行计划生成。 - -## 客户价值 - -提升SQL查询性能。 - -## 特性描述 - -Plan Hint为用户提供了直接影响执行计划生成的手段,用户可以通过指定join顺序,join、stream、scan方法,指定结果行数,指定重分布过程中的倾斜信息等多个手段来进行执行计划的调优,以提升查询的性能。 - -## 特性增强 - -支持planhint设置session级优化器参数。 - -支持指定子查询不展开。 - -支持单query禁用gpc。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 支持SQL hint + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +支持 SQL hint 影响执行计划生成。 + +## 客户价值 + +提升 SQL 查询性能。 + +## 特性描述 + +Plan Hint 为用户提供了直接影响执行计划生成的手段,用户可以通过指定 join 顺序,join、stream、scan方法,指定结果行数,指定重分布过程中的倾斜信息等多个手段来进行执行计划的调优,以提升查询的性能。 + +## 特性增强 + +支持 planhint 设置 session 级优化器参数。 + +支持指定子查询不展开。 + +支持单 query 禁用 gpc 。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201WDR\350\257\212\346\226\255\346\212\245\345\221\212.md" "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201WDR\350\257\212\346\226\255\346\212\245\345\221\212.md" index d3e1127c6..97c4d3d9c 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201WDR\350\257\212\346\226\255\346\212\245\345\221\212.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201WDR\350\257\212\346\226\255\346\212\245\345\221\212.md" @@ -1,156 +1,156 @@ -# 支持WDR诊断报告 - -## 可获得性 - -本特性自openGauss 1.0.0 版本开始引入。 - -## 特性简介 - -WDR报告提供数据库性能诊断报告,该报告基于基线性能数据和增量数据两个版本,从性能变化得到性能报告。 - -## 客户价值 - -- WDR报表是长期性能问题最主要的诊断手段。基于SNAPSHOT的性能基线,从多维度做性能分析,能帮助DBA掌握系统负载繁忙程度、各个组件的性能表现及性能瓶颈。 -- SNAPSHOT也是后续性能问题自诊断和自优化建议的重要数据来源。 - -## 特性描述 - -WDR(Workload Diagnosis Report)基于两次不同时间点系统的性能快照数据,生成这两个时间点之间的性能表现报表,用于诊断数据库内核的性能故障。 - -使用generate\_wdr\_report\(...\) 可以生成基于两个性能快照的性能报告。 - -WDR主要依赖两个组件: - -- SNAPSHOT性能快照:性能快照可以配置成按一定时间间隔从内核采集一定量的性能数据,持久化在用户表空间。任何一个SNAPSHOT可以作为一个性能基线,其他SNAPSHOT与之比较的结果,可以分析出与基线的性能表现。 -- WDR Reporter:报表生成工具基于两个SNAPSHOT,分析系统总体性能表现,并能计算出更多项具体的性能指标在这两个时间段之间的变化量,生成SUMMARY 和DETAIL两个不同级别的性能数据。如[表1](#table14895120191613)、[表2](#table23331848193120)所示。 - -**表 1** SUMMARY级别诊断报告 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

诊断类别

-

描述

-

Database Stat

-

主要用于评估当前数据库上的负载和IO状况,负载和IO状况是衡量TP系统最重要的特性。

-

包含当前连接到该数据库的session,提交、回滚的事务数,读取的磁盘块的数量,高速缓存中已经发现的磁盘块的次数,通过数据库查询返回、抓取、插入、更新、删除的行数,冲突、死锁发生的次数,临时文件的使用量,IO读写时间等。

-

Load Profile

-

从时间、IO、事务、SQL几个维度评估当前系统负载的表现。

-

包含作业运行elapse time、CPU time,事务日质量,逻辑和物理读的量,读写IO次数、大小,登入登出次数,SQL、事务执行量,SQL P80、P95响应时间等。

-

Instance Efficiency Percentages

-

用于评估当前系统的缓存的效率。

-

主要包含数据库缓存命中率。

-

Events

-

用于评估当前系统内核关键资源,关键事件的性能。

-

主要包含数据库内核关键事件的发生次数,事件的等待时间。

-

Wait Classes

-

用于评估当前系统关键事件类型的性能。

-

主要包含数据内核在主要的等待事件的种类上的发布:STATUS、LWLOCK_EVENT、LOCK_EVENT、IO_EVENT。

-

CPU

-

主要包含CPU在用户态、内核态、Wait IO、空闲状态下的时间发布。

-

IO Profile

-

主要包含数据库Database IO次数、Database IO数据量、Redo IO次数、Redo IO量。

-

Memory Statistics

-

包含最大进程内存、进程已经使用内存、最大共享内存、已经使用共享内存大小等。

-
- -**表 2** DETAIL级别诊断报告 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

诊断类别

-

描述

-

Time Model

-

主要用于评估当前系统在时间维度的性能表现。

-

包含系统在各个阶段上消耗的时间:内核时间、CPU时间、执行时间、解析时间、编译时间、查询重写时间、计划生成时间、网络时间、IO时间。

-

SQL Statistics

-

主要用于SQL语句性能问题的诊断。

-

包含归一化的SQL的性能指标在多个维度上的排序:Elapsed Time、CPU Time、Rows Returned、Tuples Reads、Executions、Physical Reads、Logical Reads。这些指标的种类包括:执行时间,执行次数、行活动、Cache IO等。

-

Wait Events

-

主要用于系统关键资源,关键时间的详细性能诊断。

-

包含所有关键事件在一段时间内的表现,主要是事件发生的次数,消耗的时间。

-

Cache IO Stats

-

用于诊断用户表和索引的性能。

-

包含所有用户表、索引上的文件读写,缓存命中。

-

Utility status

-

用于诊断后端作业性能的诊断。

-

包含页面操作,复制等后端操作的性能。

-

Object stats

-

用于诊断数据库对象的性能。

-

包含用户表、索引上的表、索引扫描活动,insert、update、delete活动,有效行数量,表维护操作的状态等。

-

Configuration settings

-

用于判断配置是否有变更。

-

包含当前所有配置参数的快照。

-

SQL detail

-

显示unique query text信息。

-
- -## 特性增强 - -无。 - -## 特性约束 - -- WDR snapshot性能快照会采集不同database的性能数据,如果数据库实例中有大量的database或者大量表,做一次WDR snapshot会花费很长时间。 -- 如果在大量DDL期间做WDR snapshot可能造成WDR snapshot失败。 -- 在drop database时,做WDR snapshot可能造成WDR snapshot失败。 - -## 依赖关系 - -无。 - +# 支持 WDR 诊断报告 + +## 可获得性 + +本特性自openGauss 1.0.0 版本开始引入。 + +## 特性简介 + +WDR 报告提供数据库性能诊断报告,该报告基于基线性能数据和增量数据两个版本,从性能变化得到性能报告。 + +## 客户价值 + +- WDR报表是长期性能问题最主要的诊断手段。基于 SNAPSHOT 的性能基线,从多维度做性能分析,能帮助 DBA 掌握系统负载繁忙程度、各个组件的性能表现及性能瓶颈。 +- SNAPSHOT也是后续性能问题自诊断和自优化建议的重要数据来源。 + +## 特性描述 + +WDR(Workload Diagnosis Report)基于两次不同时间点系统的性能快照数据,生成这两个时间点之间的性能表现报表,用于诊断数据库内核的性能故障。 + +使用generate\_wdr\_report\(...\) 可以生成基于两个性能快照的性能报告。 + +WDR 主要依赖两个组件: + +- SNAPSHOT性能快照:性能快照可以配置成按一定时间间隔从内核采集一定量的性能数据,持久化在用户表空间。任何一个 SNAPSHOT 可以作为一个性能基线,其他 SNAPSHOT 与之比较的结果,可以分析出与基线的性能表现。 +- WDR Reporter:报表生成工具基于两个 SNAPSHOT ,分析系统总体性能表现,并能计算出更多项具体的性能指标在这两个时间段之间的变化量,生成 SUMMARY 和 DETAIL 两个不同级别的性能数据。如[表1](#table14895120191613)、[表2](#table23331848193120)所示。 + +**表 1** SUMMARY级别诊断报告 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

诊断类别

+

描述

+

Database Stat

+

主要用于评估当前数据库上的负载和 IO 状况,负载和 IO 状况是衡量 TP 系统最重要的特性。

+

包含当前连接到该数据库的 session ,提交、回滚的事务数,读取的磁盘块的数量,高速缓存中已经发现的磁盘块的次数,通过数据库查询返回、抓取、插入、更新、删除的行数,冲突、死锁发生的次数,临时文件的使用量, IO 读写时间等。

+

Load Profile

+

从时间、IO、事务、SQL几个维度评估当前系统负载的表现。

+

包含作业运行elapse time、CPU time,事务日质量,逻辑和物理读的量,读写 IO 次数、大小,登入登出次数,SQL、事务执行量,SQL P80、P95响应时间等。

+

Instance Efficiency Percentages

+

用于评估当前系统的缓存的效率。

+

主要包含数据库缓存命中率。

+

Events

+

用于评估当前系统内核关键资源,关键事件的性能。

+

主要包含数据库内核关键事件的发生次数,事件的等待时间。

+

Wait Classes

+

用于评估当前系统关键事件类型的性能。

+

主要包含数据内核在主要的等待事件的种类上的发布:STATUS、LWLOCK_EVENT、LOCK_EVENT、IO_EVENT。

+

CPU

+

主要包含 CPU 在用户态、内核态、Wait IO、空闲状态下的时间发布。

+

IO Profile

+

主要包含数据库 Database IO 次数、Database IO数据量、Redo IO次数、Redo IO量。

+

Memory Statistics

+

包含最大进程内存、进程已经使用内存、最大共享内存、已经使用共享内存大小等。

+
+ +**表 2** DETAIL级别诊断报告 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

诊断类别

+

描述

+

Time Model

+

主要用于评估当前系统在时间维度的性能表现。

+

包含系统在各个阶段上消耗的时间:内核时间、CPU时间、执行时间、解析时间、编译时间、查询重写时间、计划生成时间、网络时间、IO时间。

+

SQL Statistics

+

主要用于 SQL 语句性能问题的诊断。

+

包含归一化的 SQL 的性能指标在多个维度上的排序:Elapsed Time、CPU Time、Rows Returned、Tuples Reads、Executions、Physical Reads、Logical Reads。这些指标的种类包括:执行时间,执行次数、行活动、Cache IO等。

+

Wait Events

+

主要用于系统关键资源,关键时间的详细性能诊断。

+

包含所有关键事件在一段时间内的表现,主要是事件发生的次数,消耗的时间。

+

Cache IO Stats

+

用于诊断用户表和索引的性能。

+

包含所有用户表、索引上的文件读写,缓存命中。

+

Utility status

+

用于诊断后端作业性能的诊断。

+

包含页面操作,复制等后端操作的性能。

+

Object stats

+

用于诊断数据库对象的性能。

+

包含用户表、索引上的表、索引扫描活动,insert、update、delete活动,有效行数量,表维护操作的状态等。

+

Configuration settings

+

用于判断配置是否有变更。

+

包含当前所有配置参数的快照。

+

SQL detail

+

显示 unique query text 信息。

+
+ +## 特性增强 + +无。 + +## 特性约束 + +- WDR snapshot性能快照会采集不同 database 的性能数据,如果数据库实例中有大量的 database 或者大量表,做一次 WDR snapshot 会花费很长时间。 +- 如果在大量 DDL 期间做 WDR snapshot 可能造成 WDR snapshot 失败。 +- 在 drop database 时,做 WDR snapshot 可能造成 WDR snapshot 失败。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\345\255\230\345\202\250\350\277\207\347\250\213\350\260\203\350\257\225.md" "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\345\255\230\345\202\250\350\277\207\347\250\213\350\260\203\350\257\225.md" index d6ea69f13..dd5f73615 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\345\255\230\345\202\250\350\277\207\347\250\213\350\260\203\350\257\225.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\345\255\230\345\202\250\350\277\207\347\250\213\350\260\203\350\257\225.md" @@ -1,32 +1,32 @@ -# 支持存储过程调试 - -## 可获得性 - -本特性自openGauss 1.0.0 版本开始引入。后经三方库代码目录结构调整临时删除,又于openGauss 1.1.0 重新引入。 - -## 特性简介 - -提供调试存储过程的一组API,可以进行断点调试、变量打印等对存储过程的调试功能。 - -## 客户价值 - -提升客户基于openGauss开发存储过程的开发体验。 - -## 特性描述 - -存储过程是数据库中的一种重要对象,主要功能将用户特定功能的SQL语句集进行封装,并方便调用。一个存储过程中往往包含着众多的sql以及过程化的执行结构,根据所需业务的规模大小而定。然而书写一个大的存储过程,往往会伴随着逻辑BUG,仅通过执行存储过程观察结果很难甚至无法发现其中存在的问题,因此需要一个调试工具。 - -存储过程调试工具,提供一组调试接口,可以使存储过程单步执行,在执行过程中设置断点、打印变量等,便于SQL开发者能够及时便捷的发现错误、修正错误,更高效、更快捷、高质量的进行功能开发。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 支持存储过程调试 + +## 可获得性 + +本特性自openGauss 1.0.0 版本开始引入。后经三方库代码目录结构调整临时删除,又于openGauss 1.1.0 重新引入。 + +## 特性简介 + +提供调试存储过程的一组 API ,可以进行断点调试、变量打印等对存储过程的调试功能。 + +## 客户价值 + +提升客户基于 openGauss 开发存储过程的开发体验。 + +## 特性描述 + +存储过程是数据库中的一种重要对象,主要功能将用户特定功能的 SQL 语句集进行封装,并方便调用。一个存储过程中往往包含着众多的 sql 以及过程化的执行结构,根据所需业务的规模大小而定。然而书写一个大的存储过程,往往会伴随着逻辑 BUG ,仅通过执行存储过程观察结果很难甚至无法发现其中存在的问题,因此需要一个调试工具。 + +存储过程调试工具,提供一组调试接口,可以使存储过程单步执行,在执行过程中设置断点、打印变量等,便于 SQL 开发者能够及时便捷的发现错误、修正错误,更高效、更快捷、高质量的进行功能开发。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\346\240\207\345\207\206SQL.md" "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\346\240\207\345\207\206SQL.md" index b5bd14954..3b1f607c4 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\346\240\207\345\207\206SQL.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\346\240\207\345\207\206SQL.md" @@ -1,32 +1,32 @@ -# 支持标准SQL - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -SQL是用于访问和处理数据库的标准计算机语言。SQL标准的定义分成核心特性以及可选特性,绝大部分的数据库都没有100%支撑SQL标准。 - -openGauss数据库支持SQL:2011大部分的核心特性,同时还支持部分的可选特性,为使用者提供统一的SQL界面。 - -## 客户价值 - -标准SQL的引入为所有的数据库厂商提供统一的SQL界面,减少使用者的学习成本和应用程序的迁移代价。 - -## 特性描述 - -具体的特性列表请参见《开发者指南》中“SQL参考\>SQL语法”章节。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 支持标准SQL + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +SQL 是用于访问和处理数据库的标准计算机语言。 SQL 标准的定义分成核心特性以及可选特性,绝大部分的数据库都没有100%支撑 SQL 标准。 + +openGauss 数据库支持SQL:2011大部分的核心特性,同时还支持部分的可选特性,为使用者提供统一的 SQL 界面。 + +## 客户价值 + +标准 SQL 的引入为所有的数据库厂商提供统一的 SQL 界面,减少使用者的学习成本和应用程序的迁移代价。 + +## 特性描述 + +具体的特性列表请参见《开发者指南》中“SQL参考\>SQL语法”章节。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\346\240\207\345\207\206\345\274\200\345\217\221\346\216\245\345\217\243.md" "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\346\240\207\345\207\206\345\274\200\345\217\221\346\216\245\345\217\243.md" index 94b00ba4d..ad2263f2b 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\346\240\207\345\207\206\345\274\200\345\217\221\346\216\245\345\217\243.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\346\240\207\345\207\206\345\274\200\345\217\221\346\216\245\345\217\243.md" @@ -1,30 +1,30 @@ -# 支持标准开发接口 - -## 可获得性 - -本特性自openGauss 1.0.0 版本开始引入。 - -## 特性简介 - -支持ODBC 3.5及JDBC 4.0标准接口。 - -## 客户价值 - -提供业界标准的ODBC及JDBC接口,保证用户业务快速迁移至openGauss。 - -## 特性描述 - -目前支持标准的ODBC 3.5及JDBC 4.0接口,其中ODBC支持SUSE、Win32、Win64平台,JDBC无平台差异。 - -## 特性增强 - -增加JDBC对接第三方日志框架功能。JDBC对接第三方日志框架功能可满足用户对日志管控的需求。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 支持标准开发接口 + +## 可获得性 + +本特性自openGauss 1.0.0 版本开始引入。 + +## 特性简介 + +支持ODBC 3.5及JDBC 4.0标准接口。 + +## 客户价值 + +提供业界标准的 ODBC 及 JDBC 接口,保证用户业务快速迁移至 openGauss 。 + +## 特性描述 + +目前支持标准的ODBC 3.5及JDBC 4.0接口,其中 ODBC 支持SUSE、Win32、Win64平台, JDBC 无平台差异。 + +## 特性增强 + +增加 JDBC 对接第三方日志框架功能。 JDBC 对接第三方日志框架功能可满足用户对日志管控的需求。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\347\272\277\347\250\213\346\261\240\351\253\230\345\271\266\345\217\221.md" "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\347\272\277\347\250\213\346\261\240\351\253\230\345\271\266\345\217\221.md" index 66566834d..95d61075f 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\347\272\277\347\250\213\346\261\240\351\253\230\345\271\266\345\217\221.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\224\257\346\214\201\347\272\277\347\250\213\346\261\240\351\253\230\345\271\266\345\217\221.md" @@ -1,32 +1,32 @@ -# 支持线程池高并发 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -通过线程池化技术来支撑数据库大并发稳定运行。 - -## 客户价值 - -支撑客户大并发下,系统整体吞吐平稳。 - -## 特性描述 - -线程池技术的整体设计思想是线程资源池化、并且在不同连接之间复用。系统在启动之后会根据当前核数或者用户配置启动固定一批数量的工作线程,一个工作线程会服务一到多个连接会话,这样把会话和线程进行了解耦。因为工作线程数是固定的,因此在高并发下不会导致线程的频繁切换,而由数据库层来进行线程的调度管理。 - -## 特性增强 - -+ openGauss 1.0.0版本引入该特性。 - -+ openGauss 1.1.0版本实现了线程池的动态扩缩容。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 支持线程池高并发 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +通过线程池化技术来支撑数据库大并发稳定运行。 + +## 客户价值 + +支撑客户大并发下,系统整体吞吐平稳。 + +## 特性描述 + +线程池技术的整体设计思想是线程资源池化、并且在不同连接之间复用。系统在启动之后会根据当前核数或者用户配置启动固定一批数量的工作线程,一个工作线程会服务一到多个连接会话,这样把会话和线程进行了解耦。因为工作线程数是固定的,因此在高并发下不会导致线程的频繁切换,而由数据库层来进行线程的调度管理。 + +## 特性增强 + ++ openGauss 1.0.0版本引入该特性。 + ++ openGauss 1.1.0版本实现了线程池的动态扩缩容。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\212\240\345\257\206\345\255\230\345\202\250.md" "b/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\212\240\345\257\206\345\255\230\345\202\250.md" index 33d47d103..b5dddd078 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\212\240\345\257\206\345\255\230\345\202\250.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\212\240\345\257\206\345\255\230\345\202\250.md" @@ -1,38 +1,38 @@ -# 数据加密存储 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -提供对导入数据的加密存储。 - -## 客户价值 - -为客户提供加密导入接口,对客户认为是敏感信息的数据进行加密后存储在表内。 - -## 特性描述 - -openGauss提供加密函数gs\_encrypt\_aes128\(\)、gs_encrypt()和解密函数gs\_decrypt\_aes128\(\)、gs\_decrypt()接口。通过加密函数,可以对需要输入到表内的某列数据进行加密后再存储到表格内。调用格式为: - -**gs\_encrypt\_aes128\(column, key\),gs_encrypt(decryptstr,keystr,decrypttype)** - -其中key为用户指定的初始口令,用于派生加密密钥。当客户需要对整张表进行加密处理时,则需要为每一列单独书写加密函数。 - -当具有对应权限的用户需要查看具体的数据时,可通过解密函数接口对相应的属性列进行解密处理,调用格式为: - -**gs\_decrypt\_aes128\(column, key\),gs\_decrypt(decryptstr,keystr,decrypttype)** - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 数据加密存储 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +提供对导入数据的加密存储。 + +## 客户价值 + +为客户提供加密导入接口,对客户认为是敏感信息的数据进行加密后存储在表内。 + +## 特性描述 + +openGauss 提供加密函数gs\_encrypt\_aes128\(\)、gs_encrypt()和解密函数gs\_decrypt\_aes128\(\)、gs\_decrypt()接口。通过加密函数,可以对需要输入到表内的某列数据进行加密后再存储到表格内。调用格式为: + +**gs\_encrypt\_aes128\(column, key\),gs_encrypt(decryptstr, keystr ,decrypttype)** + +其中 key 为用户指定的初始口令,用于派生加密密钥。当客户需要对整张表进行加密处理时,则需要为每一列单独书写加密函数。 + +当具有对应权限的用户需要查看具体的数据时,可通过解密函数接口对相应的属性列进行解密处理,调用格式为: + +**gs\_decrypt\_aes128\(column, key\),gs\_decrypt(decryptstr, keystr ,decrypttype)** + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\272\223\345\256\211\345\205\250.md" "b/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\272\223\345\256\211\345\205\250.md" index 3081319ef..a2f15fd3c 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\272\223\345\256\211\345\205\250.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\272\223\345\256\211\345\205\250.md" @@ -1,27 +1,27 @@ -# 数据库安全 - -- **[访问控制模型](访问控制模型.md)** - -- **[控制权和访问权分离](控制权和访问权分离.md)** - -- **[数据库认证机制](数据库认证机制.md)** - -- **[数据加密存储](数据加密存储.md)** - -- **[数据库审计](数据库审计.md)** - -- **[网络通信安全](网络通信安全.md)** - -- **[资源标签机制](资源标签机制.md)** - -- **[统一审计机制](统一审计机制.md)** - -- **[动态数据脱敏机制](动态数据脱敏机制.md)** - -- **[行级访问控制](行级访问控制.md)** - -- **[用户口令强度校验机制](用户口令强度校验机制.md)** - -- **[全密态数据库等值查询](全密态数据库等值查询.md)** - - +# 数据库安全 + +- **[访问控制模型](访问控制模型.md)** + +- **[控制权和访问权分离](控制权和访问权分离.md)** + +- **[数据库认证机制](数据库认证机制.md)** + +- **[数据加密存储](数据加密存储.md)** + +- **[数据库审计](数据库审计.md)** + +- **[网络通信安全](网络通信安全.md)** + +- **[资源标签机制](资源标签机制.md)** + +- **[统一审计机制](统一审计机制.md)** + +- **[动态数据脱敏机制](动态数据脱敏机制.md)** + +- **[行级访问控制](行级访问控制.md)** + +- **[用户口令强度校验机制](用户口令强度校验机制.md)** + +- **[全密态数据库等值查询](全密态数据库等值查询.md)** + + diff --git "a/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\272\223\345\256\241\350\256\241.md" "b/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\272\223\345\256\241\350\256\241.md" index 5cf63249c..ef6c9897d 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\272\223\345\256\241\350\256\241.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\272\223\345\256\241\350\256\241.md" @@ -1,30 +1,30 @@ -# 数据库审计 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -审计日志记录用户对数据库的启停、连接、DDL、DML、DCL等操作。 - -## 客户价值 - -审计日志机制主要增强数据库系统对非法操作的追溯及举证能力。 - -## 特性描述 - -数据库安全对数据库系统来说至关重要。openGauss将用户对数据库的所有操作写入审计日志。数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 数据库审计 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +审计日志记录用户对数据库的启停、连接、DDL、DML、DCL等操作。 + +## 客户价值 + +审计日志机制主要增强数据库系统对非法操作的追溯及举证能力。 + +## 特性描述 + +数据库安全对数据库系统来说至关重要。 openGauss 将用户对数据库的所有操作写入审计日志。数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\272\223\350\256\244\350\257\201\346\234\272\345\210\266.md" "b/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\272\223\350\256\244\350\257\201\346\234\272\345\210\266.md" index 467801dc7..720ac81a3 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\272\223\350\256\244\350\257\201\346\234\272\345\210\266.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\225\260\346\215\256\345\272\223\350\256\244\350\257\201\346\234\272\345\210\266.md" @@ -1,30 +1,30 @@ -# 数据库认证机制 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -提供基于客户端/服务端(C/S)模式的客户端连接认证机制。 - -## 客户价值 - -加密认证过程中采用单向Hash不可逆加密算法PBKDF2,有效防止彩虹攻击。 - -## 特性描述 - -openGauss采用基本的客户端连接认证机制,客户端发起连接请求后,由服务端完成信息校验并依据校验结果发送认证所需信息给客户端(认证信息包括盐值、token以及服务端签名信息)。客户端响应请求发送认证信息给服务端,由服务端调用认证模块完成对客户端认证信息的认证。用户的密码被加密存储在内存中。整个过程中口令加密存储和传输。当用户下次登录时通过计算相应的hash值并与服务端存储的key值比较来进行正确性校验。 - -## 特性增强 - -统一加密认证过程中的消息处理流程,可有效防止攻击者通过抓取报文猜解用户名或者密码的正确性。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 数据库认证机制 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +提供基于客户端/服务端(C/S)模式的客户端连接认证机制。 + +## 客户价值 + +加密认证过程中采用单向 Hash 不可逆加密算法 PBKDF2 ,有效防止彩虹攻击。 + +## 特性描述 + +openGauss 采用基本的客户端连接认证机制,客户端发起连接请求后,由服务端完成信息校验并依据校验结果发送认证所需信息给客户端(认证信息包括盐值、token以及服务端签名信息)。客户端响应请求发送认证信息给服务端,由服务端调用认证模块完成对客户端认证信息的认证。用户的密码被加密存储在内存中。整个过程中口令加密存储和传输。当用户下次登录时通过计算相应的 hash 值并与服务端存储的 key 值比较来进行正确性校验。 + +## 特性增强 + +统一加密认证过程中的消息处理流程,可有效防止攻击者通过抓取报文猜解用户名或者密码的正确性。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\346\236\201\350\207\264RTO.md" "b/content/zh/docs/CharacteristicDescription/\346\236\201\350\207\264RTO.md" index 03d318e9f..d03bdd482 100644 --- "a/content/zh/docs/CharacteristicDescription/\346\236\201\350\207\264RTO.md" +++ "b/content/zh/docs/CharacteristicDescription/\346\236\201\350\207\264RTO.md" @@ -1,33 +1,33 @@ -# 极致RTO - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -- 支撑数据库主机重启后快速恢复的场景。 -- 支撑主机与同步备机通过日志同步,加速备机回放的场景。 - -## 客户价值 - -当业务压力过大时,备机的回放速度跟不上主机的速度。在系统长时间的运行后,备机上会出现日志累积。当主机故障后,数据恢复需要很长时间,数据库不可用,严重影响系统可用性。 - -开启极致RTO(Recovery Time Object,恢复时间目标),减少了主机故障后数据的恢复时间,提高了可用性。 - -## 特性描述 - -极致RTO开关开启后,xlog日志回放建立多级流水线,提高并发度,提升日志回放速度。 - -## 特性增强 - -无。 - -## 特性约束 - -极致RTO只关注同步备机的RTO是否满足需求。极致RTO本身有流控效果,无需打开流控功能开关。本特性不支持备机读。如果查询备机可能导致备机宕机。本特性不支持主备从场景。如果配置成支持主备从(配置了replication\_type=0),数据库无法拉起。 - -## 依赖关系 - -无。 - +# 极致RTO + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +- 支撑数据库主机重启后快速恢复的场景。 +- 支撑主机与同步备机通过日志同步,加速备机回放的场景。 + +## 客户价值 + +当业务压力过大时,备机的回放速度跟不上主机的速度。在系统长时间的运行后,备机上会出现日志累积。当主机故障后,数据恢复需要很长时间,数据库不可用,严重影响系统可用性。 + +开启极致RTO(Recovery Time Object,恢复时间目标),减少了主机故障后数据的恢复时间,提高了可用性。 + +## 特性描述 + +极致 RTO 开关开启后, xlog 日志回放建立多级流水线,提高并发度,提升日志回放速度。 + +## 特性增强 + +无。 + +## 特性约束 + +极致 RTO 只关注同步备机的 RTO 是否满足需求。极致 RTO 本身有流控效果,无需打开流控功能开关。本特性不支持备机读。如果查询备机可能导致备机宕机。本特性不支持主备从场景。如果配置成支持主备从(配置了replication\_type=0),数据库无法拉起。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\347\201\260\345\272\246\345\215\207\347\272\247.md" "b/content/zh/docs/CharacteristicDescription/\347\201\260\345\272\246\345\215\207\347\272\247.md" index 25a1667b3..5922a86a6 100644 --- "a/content/zh/docs/CharacteristicDescription/\347\201\260\345\272\246\345\215\207\347\272\247.md" +++ "b/content/zh/docs/CharacteristicDescription/\347\201\260\345\272\246\345\215\207\347\272\247.md" @@ -1,30 +1,30 @@ -# 灰度升级 - -## 可获得性 - -本特性自openGauss 2.0.0版本开始引入。 - -## 特性简介 - -灰度升级支持全业务操作,一次性升级所有节点。 - -## 客户价值 - -灰度升级提供了一种在线升级的方式,保证在不中断业务的情况下,对所有的节点进行升级。 - -## 特性描述 - -灰度升级是一种支持所有节点升级的在线升级方式。目前灰度升级只涉及数据库二进制的替换,为了尽可能降低对于业务的影响,采用同一节点两套二进制同时存在的方式,使用软连接切换的方式来进行进程版本的切换升级(闪断一次,10秒以内)。 - -## 特性增强 - -无。 - -## 特性约束 - -灰度升级的约束条件请参见[《升级指导书》](https://opengauss.org/zh/blogs/blogs.html?post/shine/opengauss%E5%8D%87%E7%BA%A7%E6%8C%87%E5%AF%BC%E4%B9%A6/)中“升级前必读\> 升级影响和升级约束”章节。 - -## 依赖关系 - -无。 - +# 灰度升级 + +## 可获得性 + +本特性自openGauss 2.0.0版本开始引入。 + +## 特性简介 + +灰度升级支持全业务操作,一次性升级所有节点。 + +## 客户价值 + +灰度升级提供了一种在线升级的方式,保证在不中断业务的情况下,对所有的节点进行升级。 + +## 特性描述 + +灰度升级是一种支持所有节点升级的在线升级方式。目前灰度升级只涉及数据库二进制的替换,为了尽可能降低对于业务的影响,采用同一节点两套二进制同时存在的方式,使用软连接切换的方式来进行进程版本的切换升级(闪断一次, 10 秒以内)。 + +## 特性增强 + +无。 + +## 特性约束 + +灰度升级的约束条件请参见[《升级指导书》](https://opengauss.org/zh/blogs/blogs.html?post/shine/opengauss%E5%8D%87%E7%BA%A7%E6%8C%87%E5%AF%BC%E4%B9%A6/)中“升级前必读\> 升级影响和升级约束”章节。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\347\211\251\345\214\226\350\247\206\345\233\276.md" "b/content/zh/docs/CharacteristicDescription/\347\211\251\345\214\226\350\247\206\345\233\276.md" index a5c317feb..d11a48752 100644 --- "a/content/zh/docs/CharacteristicDescription/\347\211\251\345\214\226\350\247\206\345\233\276.md" +++ "b/content/zh/docs/CharacteristicDescription/\347\211\251\345\214\226\350\247\206\345\233\276.md" @@ -1,30 +1,30 @@ -# 物化视图 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -物化视图实际上就是一种特殊的物理表,物化视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性较大,任何对视图的查询实际上都是转换为对SQL语句的查询,性能并没有实际上提高。而物化视图实际上就是存储SQL所执行语句的结果,起到缓存的效果。 - -## 客户价值 - -使用物化视图功能提升查询效率。 - -## 特性描述 - -支持全量物化视图和增量物化视图,全量物化视图只支持全量更新。增量物化视图可实现异步更新功能,用户可通过执行语句把新增数据刷新到物化视图中。 - -## 特性增强 - -无。 - -## 特性约束 - -仅支持基表简单过滤查询和UNION ALL语句。 - -## 依赖关系 - -无。 - +# 物化视图 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +物化视图实际上就是一种特殊的物理表,物化视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性较大,任何对视图的查询实际上都是转换为对 SQL 语句的查询,性能并没有实际上提高。而物化视图实际上就是存储 SQL 所执行语句的结果,起到缓存的效果。 + +## 客户价值 + +使用物化视图功能提升查询效率。 + +## 特性描述 + +支持全量物化视图和增量物化视图,全量物化视图只支持全量更新。增量物化视图可实现异步更新功能,用户可通过执行语句把新增数据刷新到物化视图中。 + +## 特性增强 + +无。 + +## 特性约束 + +仅支持基表简单过滤查询和 UNION ALL 语句。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\347\211\251\347\220\206\345\244\207\344\273\275.md" "b/content/zh/docs/CharacteristicDescription/\347\211\251\347\220\206\345\244\207\344\273\275.md" index 2e4e8ad50..8a97953d2 100644 --- "a/content/zh/docs/CharacteristicDescription/\347\211\251\347\220\206\345\244\207\344\273\275.md" +++ "b/content/zh/docs/CharacteristicDescription/\347\211\251\347\220\206\345\244\207\344\273\275.md" @@ -1,46 +1,46 @@ -# 物理备份 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -支持将整个数据库的数据以内部格式备份到指定的存储介质中。 - -## 客户价值 - -通过物理备份特性,可以达成以下目的: - -- 整个数据库的数据备份到可靠性更高的存储介质中,提升系统整体的可靠性。 -- 通过采用数据库内部的数据格式,极大提升备份恢复性能。 -- 可以用于冷数据的归档。 - -典型的物理备份策略和应用场景如下: - -- 周一,执行数据库全量备份 -- 周二,以周一全量备份为基准点,执行增量备份 -- 周三,以周二增量备份为基准点,执行增量备份 -- ... -- 周日,以周六增量备份为基准点,执行增量备份 - -上述备份策略以一个星期为周期。 - -## 特性描述 - -openGauss 1.1.0 提供物理备份能力,可以将整个数据库的数据以数据库内部格式备份到本地磁盘文件、OBS对象、NBU对象或爱数对象中,并在同构数据库中恢复整个数据库的数据。在基础之上,还提供压缩、流控、断点续备等高阶功能。 - -物理备份主要分为全量备份和增量备份,区别如下:全量备份包含备份时刻点上数据库的全量数据,耗时时间长(和数据库数据总量成正比),自身即可恢复出完整的数据库;增量备份只包含从指定时刻点之后的增量修改数据,耗时时间短(和增量数据成正比,和数据总量无关),但是必须要和全量备份数据一起才能恢复出完整的数据库。 - -## 特性增强 - -支持全量备份和增量备份同时执行。 - -## 特性约束 - -物理备份的约束条件请参见《管理员指南》中“备份与恢复 \> 物理备份恢复”章节相关约束。 - -## 依赖关系 - -无。 - +# 物理备份 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +支持将整个数据库的数据以内部格式备份到指定的存储介质中。 + +## 客户价值 + +通过物理备份特性,可以达成以下目的: + +- 整个数据库的数据备份到可靠性更高的存储介质中,提升系统整体的可靠性。 +- 通过采用数据库内部的数据格式,极大提升备份恢复性能。 +- 可以用于冷数据的归档。 + +典型的物理备份策略和应用场景如下: + +- 周一,执行数据库全量备份 +- 周二,以周一全量备份为基准点,执行增量备份 +- 周三,以周二增量备份为基准点,执行增量备份 +- ... +- 周日,以周六增量备份为基准点,执行增量备份 + +上述备份策略以一个星期为周期。 + +## 特性描述 + +openGauss 1.1.0 提供物理备份能力,可以将整个数据库的数据以数据库内部格式备份到本地磁盘文件、OBS对象、NBU对象或爱数对象中,并在同构数据库中恢复整个数据库的数据。在基础之上,还提供压缩、流控、断点续备等高阶功能。 + +物理备份主要分为全量备份和增量备份,区别如下:全量备份包含备份时刻点上数据库的全量数据,耗时时间长(和数据库数据总量成正比),自身即可恢复出完整的数据库;增量备份只包含从指定时刻点之后的增量修改数据,耗时时间短(和增量数据成正比,和数据总量无关),但是必须要和全量备份数据一起才能恢复出完整的数据库。 + +## 特性增强 + +支持全量备份和增量备份同时执行。 + +## 特性约束 + +物理备份的约束条件请参见《管理员指南》中“备份与恢复 \> 物理备份恢复”章节相关约束。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\347\224\250\346\210\267\345\217\243\344\273\244\345\274\272\345\272\246\346\240\241\351\252\214\346\234\272\345\210\266.md" "b/content/zh/docs/CharacteristicDescription/\347\224\250\346\210\267\345\217\243\344\273\244\345\274\272\345\272\246\346\240\241\351\252\214\346\234\272\345\210\266.md" index 012a76271..29d7083be 100644 --- "a/content/zh/docs/CharacteristicDescription/\347\224\250\346\210\267\345\217\243\344\273\244\345\274\272\345\272\246\346\240\241\351\252\214\346\234\272\345\210\266.md" +++ "b/content/zh/docs/CharacteristicDescription/\347\224\250\346\210\267\345\217\243\344\273\244\345\274\272\345\272\246\346\240\241\351\252\214\346\234\272\345\210\266.md" @@ -1,67 +1,67 @@ -# 用户口令强度校验机制 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -对用户访问数据库所设置的口令强度进行校验。 - -## 客户价值 - -用户无法设置过低强度的口令,加固客户数据安全。 - -## 特性描述 - -初始化数据库、创建用户、修改用户时需要指定密码。密码必须满足强度校验,否则会提示用户重新输入密码。账户密码复杂度要求如下: - -- 包含大写字母(A-Z)的最少个数(password\_min\_uppercase) -- 包含小写字母(a-z)的最少个数(password\_min\_lowercase) -- 包含数字(0-9)的最少个数(password\_min\_digital) -- 包含特殊字符的最少个数(password\_min\_special) -- 密码的最小长度(password\_min\_length) -- 密码的最大长度(password\_max\_length) -- 至少包含上述四类字符中的三类。 -- 不能和用户名、用户名倒写相同,本要求为非大小写敏感。 -- 不能和当前密码、当前密码的倒写相同。 -- 不能是弱口令。 - - ![](public_sys-resources/icon-note.gif) **说明:** - 弱口令指的是强度较低,容易被破解的密码,对于不同的用户或群体,弱口令的定义可能会有所区别,用户需要自己添加定制化的弱口令。 - - -参数password\_policy设置为1时表示采用密码复杂度校验,默认值为1。 - -弱口令字典中的口令存放在gs\_global\_config系统表中(name字段为weak\_password的记录是储存的弱口令),当创建用户、修改用户需要设置密码时,将会把用户设置口令和弱口令字典中存放的口令进行对比,如果命中,则会提示用户该口令为弱口令,设置密码失败。 - -弱口令字典默认为空,用户通过以下语法可以对弱口令字典进行增加和删除,示例如下: - -``` -CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('password1'), ('password2'); -DROP WEAK PASSWORD DICTIONARY; -``` - -其中“password1”,“password2”是用户事先准备的弱口令,该语句执行成功后将会存入弱口令系统表中。 - -当用户尝试通过CREATE WEAK PASSWORD DICTIONARY 插入表中已存在的弱口令时,会只在表中保留一条该弱口令。 - -DROP WEAK PASSWORD DICTIONARY语句会清空整张系统表弱口令相关部分。 - -gs\_global\_config系统表没有唯一索引,不建议用户通过COPY FROM命令重复用相同数据对该表进行操作。 - -若用户需要对弱口令相关操作进行审计,应设置audit\_system\_object参数中的第三位为1。 - -## 特性增强 - -openGauss 1.1.0版本实现了弱口令字典功能。 - -## 特性约束 - -- 初始用户、系统管理员和安全管理员可以查看、新增、删除弱口令字典。 -- 普通用户可以查看但是不能新增或者删除弱口令字典。 - -## 依赖关系 - -无。 - +# 用户口令强度校验机制 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +对用户访问数据库所设置的口令强度进行校验。 + +## 客户价值 + +用户无法设置过低强度的口令,加固客户数据安全。 + +## 特性描述 + +初始化数据库、创建用户、修改用户时需要指定密码。密码必须满足强度校验,否则会提示用户重新输入密码。账户密码复杂度要求如下: + +- 包含大写字母(A-Z)的最少个数(password\_min\_uppercase) +- 包含小写字母(a-z)的最少个数(password\_min\_lowercase) +- 包含数字(0-9)的最少个数(password\_min\_digital) +- 包含特殊字符的最少个数(password\_min\_special) +- 密码的最小长度(password\_min\_length) +- 密码的最大长度(password\_max\_length) +- 至少包含上述四类字符中的三类。 +- 不能和用户名、用户名倒写相同,本要求为非大小写敏感。 +- 不能和当前密码、当前密码的倒写相同。 +- 不能是弱口令。 + + ![](public_sys-resources/icon-note.gif) **说明:** + 弱口令指的是强度较低,容易被破解的密码,对于不同的用户或群体,弱口令的定义可能会有所区别,用户需要自己添加定制化的弱口令。 + + +参数password\_policy设置为 1 时表示采用密码复杂度校验,默认值为 1 。 + +弱口令字典中的口令存放在gs\_global\_config系统表中(name字段为weak\_password的记录是储存的弱口令),当创建用户、修改用户需要设置密码时,将会把用户设置口令和弱口令字典中存放的口令进行对比,如果命中,则会提示用户该口令为弱口令,设置密码失败。 + +弱口令字典默认为空,用户通过以下语法可以对弱口令字典进行增加和删除,示例如下: + +``` +CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('password1'), ('password2'); +DROP WEAK PASSWORD DICTIONARY; +``` + +其中“password1”,“password2”是用户事先准备的弱口令,该语句执行成功后将会存入弱口令系统表中。 + +当用户尝试通过 CREATE WEAK PASSWORD DICTIONARY 插入表中已存在的弱口令时,会只在表中保留一条该弱口令。 + +DROP WEAK PASSWORD DICTIONARY 语句会清空整张系统表弱口令相关部分。 + +gs\_global\_config系统表没有唯一索引,不建议用户通过 COPY FROM 命令重复用相同数据对该表进行操作。 + +若用户需要对弱口令相关操作进行审计,应设置audit\_system\_object参数中的第三位为 1 。 + +## 特性增强 + +openGauss 1.1.0版本实现了弱口令字典功能。 + +## 特性约束 + +- 初始用户、系统管理员和安全管理员可以查看、新增、删除弱口令字典。 +- 普通用户可以查看但是不能新增或者删除弱口令字典。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\347\263\273\347\273\237KPI\350\276\205\345\212\251\350\257\212\346\226\255.md" "b/content/zh/docs/CharacteristicDescription/\347\263\273\347\273\237KPI\350\276\205\345\212\251\350\257\212\346\226\255.md" index 0575fd86d..290a2dcec 100644 --- "a/content/zh/docs/CharacteristicDescription/\347\263\273\347\273\237KPI\350\276\205\345\212\251\350\257\212\346\226\255.md" +++ "b/content/zh/docs/CharacteristicDescription/\347\263\273\347\273\237KPI\350\276\205\345\212\251\350\257\212\346\226\255.md" @@ -1,57 +1,57 @@ -# 系统KPI辅助诊断 - -## 可获得性 - -本特性自openGauss 1.0.0 版本开始引入。 - -## 特性简介 - -KPI是内核组件或者整体性能关键指标的视图呈现,基于这些指标,用户可以了解到系统运行的实时或者历史状态。 - -## 客户价值 - -- 系统负载概要诊断 - - 系统负载异常(过载、失速、业务SLA)精准告警,系统负载精准画像。 - -- 系统时间模型概要诊断 - - Instance和Query级别时间模型细分,诊断Instance和Query性能问题根因。 - -- Query性能诊断 - - 数据库级Query概要信息,TopSQL,SQL CPU,IO消耗,执行计划,硬解析过多。 - -- 磁盘IO、索引、buffer性能问题 -- 连接池,线程池异常 -- Checkpoint,Redo(RTO)性能问题 -- 系统I/O、LWLock、Waits性能问题诊断 - - 诊断60+模块,240+关键操作性能问题。 - -- 函数级性能看护诊断(GSTRACE),功能诊断 - - 50+存储和执行层函数trace。 - - -## 特性描述 - -openGauss提供涵盖11大类,26个子类的KPI,包括:Instance、File、Object、Workload、Communication、Session、Thread、Cache IO、Lock、Wait Event、Cluster。 - -KPI指标内核的分布如[图1](#fig20286741318)所示。 - -**图 1** KPI指标内核分布 -![](figures/KPI指标内核分布.png "KPI指标内核分布") - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 系统 KPI 辅助诊断 + +## 可获得性 + +本特性自openGauss 1.0.0 版本开始引入。 + +## 特性简介 + +KPI 是内核组件或者整体性能关键指标的视图呈现,基于这些指标,用户可以了解到系统运行的实时或者历史状态。 + +## 客户价值 + +- 系统负载概要诊断 + + 系统负载异常(过载、失速、业务SLA)精准告警,系统负载精准画像。 + +- 系统时间模型概要诊断 + +Instance 和 Query 级别时间模型细分,诊断 Instance 和 Query 性能问题根因。 + +- Query性能诊断 + + 数据库级 Query 概要信息, TopSQL , SQL CPU , IO 消耗,执行计划,硬解析过多。 + +- 磁盘IO、索引、buffer性能问题 +- 连接池,线程池异常 +- Checkpoint,Redo(RTO)性能问题 +- 系统I/O、LWLock、Waits性能问题诊断 + + 诊断60+模块,240+关键操作性能问题。 + +- 函数级性能看护诊断(GSTRACE),功能诊断 + + 50+存储和执行层函数 trace 。 + + +## 特性描述 + +openGauss 提供涵盖 11 大类, 26 个子类的 KPI ,包括:Instance、File、Object、Workload、Communication、Session、Thread、Cache IO、Lock、Wait Event、Cluster。 + +KPI 指标内核的分布如[图1](#fig20286741318)所示。 + +**图 1** KPI指标内核分布 +![](figures/KPI指标内核分布.png "KPI指标内核分布") + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\347\272\247\350\201\224\345\244\207\346\234\272.md" "b/content/zh/docs/CharacteristicDescription/\347\272\247\350\201\224\345\244\207\346\234\272.md" index a8c7c5f95..5af79a769 100644 --- "a/content/zh/docs/CharacteristicDescription/\347\272\247\350\201\224\345\244\207\346\234\272.md" +++ "b/content/zh/docs/CharacteristicDescription/\347\272\247\350\201\224\345\244\207\346\234\272.md" @@ -1,39 +1,39 @@ -# 级联备机 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -本特性主要基于当前一主多备的架构,在此基础上,支持级联备机连接备机。 - -## 客户价值 - -一主多备架构在特性业务场景下,无法支持足够灵活的结构。多机房部署,不足以满足HA切换下的完整结构(主次机房三个实例,再次机房两到三个实例)。若备机个数变多,对主机可能导致压力较大。针对业务实时性要求较低的查询,可落到级联备中。因此,我们需要提供级联备能力。 - -## 特性描述 - -主机通过发送日志给备机实现同步,备机通过发送日志给级联备实现同步,其中主备之间日志同步可配置为同步或异步,备机与级联备之间只能以异步方式。 - -目前一主多备方式架构,主机通过walsender线程向备机同步日志,备机通过walreceiver线程接受日志,并刷到本地盘,备机读取redo日志,完成主备之间的数据同步。主备机之间walsender与walreceiver一一对应。备机与级联备通过walsender与walreceiver线程异步方式同步日志,降低主机流复制的压力。 - -## 特性增强 - -无。 - -## 特性约束 - -- 级联备只能从备机同步数据,不能直接从主机同步。 -- 级联备不支持直接从备机build数据,目前只能从主机build数据。如果备机需要全量build,会导致级联备也要重新全量build。 -- 级联备为异步同步。 -- 级联备不支持promote。 -- 级联备不支持notify。 -- 目前不提供查询主 - 备 - 级联备集群总体架构,需要根据主找到备,再通过备找到级联备。 -- 级联备不能有再次级联备。 -- 极致RTO开启时,不支持级联备。 - -## 依赖关系 - -无。 - +# 级联备机 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +本特性主要基于当前一主多备的架构,在此基础上,支持级联备机连接备机。 + +## 客户价值 + +一主多备架构在特性业务场景下,无法支持足够灵活的结构。多机房部署,不足以满足 HA 切换下的完整结构(主次机房三个实例,再次机房两到三个实例)。若备机个数变多,对主机可能导致压力较大。针对业务实时性要求较低的查询,可落到级联备中。因此,我们需要提供级联备能力。 + +## 特性描述 + +主机通过发送日志给备机实现同步,备机通过发送日志给级联备实现同步,其中主备之间日志同步可配置为同步或异步,备机与级联备之间只能以异步方式。 + +目前一主多备方式架构,主机通过 walsender 线程向备机同步日志,备机通过 walreceiver 线程接受日志,并刷到本地盘,备机读取 redo 日志,完成主备之间的数据同步。主备机之间 walsender 与 walreceiver 一一对应。备机与级联备通过 walsender 与 walreceiver 线程异步方式同步日志,降低主机流复制的压力。 + +## 特性增强 + +无。 + +## 特性约束 + +- 级联备只能从备机同步数据,不能直接从主机同步。 +- 级联备不支持直接从备机 build 数据,目前只能从主机 build 数据。如果备机需要全量 build ,会导致级联备也要重新全量 build 。 +- 级联备为异步同步。 +- 级联备不支持 promote 。 +- 级联备不支持 notify 。 +- 目前不提供查询主 - 备 - 级联备集群总体架构,需要根据主找到备,再通过备找到级联备。 +- 级联备不能有再次级联备。 +- 极致 RTO 开启时,不支持级联备。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\347\273\237\344\270\200\345\256\241\350\256\241\346\234\272\345\210\266.md" "b/content/zh/docs/CharacteristicDescription/\347\273\237\344\270\200\345\256\241\350\256\241\346\234\272\345\210\266.md" index 159635f10..3b0f71cb8 100644 --- "a/content/zh/docs/CharacteristicDescription/\347\273\237\344\270\200\345\256\241\350\256\241\346\234\272\345\210\266.md" +++ "b/content/zh/docs/CharacteristicDescription/\347\273\237\344\270\200\345\256\241\350\256\241\346\234\272\345\210\266.md" @@ -1,110 +1,110 @@ -# 统一审计机制 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -审计机制是行之有效的安全管理方案,可有效解决攻击者抵赖,审计的范围越大,可监控的行为就越多,而产生的审计日志就越多,影响实际审计效率。统一审计机制是一种通过定制化审计策略实现高效安全审计管理的技术。当管理员定义审计对象和审计行为后,用户执行的任务如果关联到对应的审计策略,则生成对应的审计行为,并记录审计日志。定制化审计策略可涵盖常见的用户管理活动、DDL和DML行为,满足日常审计诉求。 - -## 客户价值 - -审计是日常安全管理中必不可少的行为,当使用传统审计机制审计某种行为时,如SELECT,会导致产生大量的审计日志,进而增加整个系统的I/O,影响系统的性能;另一方面,大量的审计日志会影响管理员的审计效率。统一审计机制使得客户可以定制化生成审计日志的策略,如只审计数据库账户A查询某个表的行为。通过定制化审计,可以大大减少生成审计日志的数量,从而在保障审计行为的同时降低对系统性能的影响。而定制化审计策略可以提升管理员的审计效率。 - -## 特性描述 - -统一审计机制基于资源标签进行审计行为定制化,且将当前所支持的审计行为划分为access类和privileges类。一个完整的审计策略创建的SQL语法如下所示: - -``` -CREATE RESOURCE LABEL auditlabel add table(table_for_audit1, table_for_audit2); - -CREATE AUDIT POLICY audit_select_policy ACCESS SELECT ON LABEL(auditlabel) FILTER ON ROLES(usera); - -CREATE AUDIT POLICY audit_admin_policy PRIVILEGES ALTER, DROP ON LABEL(auditlabel) FILTER ON IP(local); -``` - -其中,auditlabel为本轮计划审计的资源标签,该资源标签中包含了两个表对象;audit\_select\_policy定义了用户usera对auditlabel对象的SELECT行为的审计策略,不区分访问源;audit\_admin\_policy定义了从本地对auditlabel对象进行ALTER和DROP操作行为的审计策略,不区分执行用户;当不指定ACCESS和PRIVILEGES的具体行为时,表示审计针对某一资源标签的所有支持的DDL和DML行为。当不指定具体的审计对象时,表示审计针对所有对象的操作行为。统一审计策略的增删改也会记录在统一审计日志中。 - -当前,统一审计支持的审计行为包括: - - - - - - - - - - - - -

SQL类型

-

支持操作和对象类型

-

DDL

-

操作: ALL ALTER ANALYZE COMMENT CREATE DROP GRANT REVOKE

-

SET SHOW

-

对象: DATABASE SCHEMA FUNCTION TRIGGER TABLE SEQUENCE FOREIGN_SERVER FOREIGN_TABLE TABLESPACE ROLE/USER INDEX VIEW DATA_SOURCE

-

DML

-

操作:ALL COPY DEALLOCATE DELETE EXECUTE REINDEX INSERT

-

PREPARE SELECT TRUNCATE UPDATE

-
- - -## 特性增强 - -无。 - -## 特性约束 - -- 统一审计策略需要由具备POLADMIN或SYSADMIN属性的用户或初始用户创建,普通用户无访问安全策略系统表和系统视图的权限。 - -- 统一审计策略语法要么针对DDL行为,要么针对DML语法行为,同一个审计策略不可同时包含DDL和DML行为;统一审计策略目前支持最多设置98个。 - -- 统一审计监控用户通过客户端执行的SQL语句,而不会记录数据库内部SQL语句。 - -- 同一个审计策略下,相同资源标签可以绑定不同的审计行为,相同行为可以绑定不同的资源标签, 操作“ALL”类型包括DDL或者DML下支持的所有操作。 - -- 同一个资源标签可以关联不同的统一审计策略,统一审计会按照SQL语句匹配的策略依次打印审计信息。 - -- 统一审计策略的审计日志单独记录,暂不提供可视化查询接口,整个日志依赖于操作系统自带rsyslog服务,通过配置完成日志归档。 - -- 在云服务场景下,日志需要存储在OBS服务中;在混合云场景下,可部署Elastic Search进行日志收集和可视化处理。 - -- FILTER中的APP项建议仅在同一信任域内使用,由于客户端不可避免的可能出现伪造名称的情况,该选项使用时需要与客户端联合形成一套安全机制,减少误用风险。一般情况下不建议使用,使用时需要注意客户端仿冒的风险。 - -- FILTER中的IP地址以ipv4为例支持如下格式。 - - - - - - - - - - - - - - - - - -

ip地址格式

-

示例

-

单ip

-

127.0.0.1

-

掩码表示ip

-

127.0.0.1|255.255.255.0

-

cidr表示ip

-

127.0.0.1/24

-

ip区间

-

127.0.0.1-127.0.0.5

-
- - -## 依赖关系 - -在公有云服务场景下,依赖OSS服务或OBS服务存储日志。 - +# 统一审计机制 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +审计机制是行之有效的安全管理方案,可有效解决攻击者抵赖,审计的范围越大,可监控的行为就越多,而产生的审计日志就越多,影响实际审计效率。统一审计机制是一种通过定制化审计策略实现高效安全审计管理的技术。当管理员定义审计对象和审计行为后,用户执行的任务如果关联到对应的审计策略,则生成对应的审计行为,并记录审计日志。定制化审计策略可涵盖常见的用户管理活动、DDL和 DML 行为,满足日常审计诉求。 + +## 客户价值 + +审计是日常安全管理中必不可少的行为,当使用传统审计机制审计某种行为时,如 SELECT ,会导致产生大量的审计日志,进而增加整个系统的I/O,影响系统的性能;另一方面,大量的审计日志会影响管理员的审计效率。统一审计机制使得客户可以定制化生成审计日志的策略,如只审计数据库账户 A 查询某个表的行为。通过定制化审计,可以大大减少生成审计日志的数量,从而在保障审计行为的同时降低对系统性能的影响。而定制化审计策略可以提升管理员的审计效率。 + +## 特性描述 + +统一审计机制基于资源标签进行审计行为定制化,且将当前所支持的审计行为划分为 access 类和 privileges 类。一个完整的审计策略创建的 SQL 语法如下所示: + +``` +CREATE RESOURCE LABEL auditlabel add table(table_for_audit1, table_for_audit2); + +CREATE AUDIT POLICY audit_select_policy ACCESS SELECT ON LABEL(auditlabel) FILTER ON ROLES(usera); + + CREATE AUDIT POLICY audit_admin_policy PRIVILEGES ALTER , DROP ON LABEL(auditlabel) FILTER ON IP(local); +``` + +其中, auditlabel 为本轮计划审计的资源标签,该资源标签中包含了两个表对象;audit\_select\_policy定义了用户 usera 对 auditlabel 对象的 SELECT 行为的审计策略,不区分访问源;audit\_admin\_policy定义了从本地对 auditlabel 对象进行 ALTER 和 DROP 操作行为的审计策略,不区分执行用户;当不指定 ACCESS 和 PRIVILEGES 的具体行为时,表示审计针对某一资源标签的所有支持的 DDL 和 DML 行为。当不指定具体的审计对象时,表示审计针对所有对象的操作行为。统一审计策略的增删改也会记录在统一审计日志中。 + +当前,统一审计支持的审计行为包括: + + + + + + + + + + + + +

SQL类型

+

支持操作和对象类型

+

DDL

+

操作: ALL ALTER ANALYZE COMMENT CREATE DROP GRANT REVOKE

+

SET SHOW

+

对象: DATABASE SCHEMA FUNCTION TRIGGER TABLE SEQUENCE FOREIGN_SERVER FOREIGN_TABLE TABLESPACE ROLE/USER INDEX VIEW DATA_SOURCE

+

DML

+

操作:ALL COPY DEALLOCATE DELETE EXECUTE REINDEX INSERT

+

PREPARE SELECT TRUNCATE UPDATE

+
+ + +## 特性增强 + +无。 + +## 特性约束 + +- 统一审计策略需要由具备 POLADMIN 或 SYSADMIN 属性的用户或初始用户创建,普通用户无访问安全策略系统表和系统视图的权限。 + +- 统一审计策略语法要么针对 DDL 行为,要么针对 DML 语法行为,同一个审计策略不可同时包含 DDL 和 DML 行为;统一审计策略目前支持最多设置 98 个。 + +- 统一审计监控用户通过客户端执行的 SQL 语句,而不会记录数据库内部 SQL 语句。 + +- 同一个审计策略下,相同资源标签可以绑定不同的审计行为,相同行为可以绑定不同的资源标签, 操作“ALL”类型包括 DDL 或者 DML 下支持的所有操作。 + +- 同一个资源标签可以关联不同的统一审计策略,统一审计会按照 SQL 语句匹配的策略依次打印审计信息。 + +- 统一审计策略的审计日志单独记录,暂不提供可视化查询接口,整个日志依赖于操作系统自带 rsyslog 服务,通过配置完成日志归档。 + +- 在云服务场景下,日志需要存储在 OBS 服务中;在混合云场景下,可部署 Elastic Search 进行日志收集和可视化处理。 + +- FILTER中的 APP 项建议仅在同一信任域内使用,由于客户端不可避免的可能出现伪造名称的情况,该选项使用时需要与客户端联合形成一套安全机制,减少误用风险。一般情况下不建议使用,使用时需要注意客户端仿冒的风险。 + +- FILTER中的 IP 地址以 ipv4 为例支持如下格式。 + + + + + + + + + + + + + + + + + +

ip地址格式

+

示例

+

单ip

+

127.0.0.1

+

掩码表示ip

+

127.0.0.1|255.255.255.0

+

cidr表示ip

+

127.0.0.1/24

+

ip区间

+

127.0.0.1-127.0.0.5

+
+ + +## 依赖关系 + +在公有云服务场景下,依赖 OSS 服务或 OBS 服务存储日志。 + diff --git "a/content/zh/docs/CharacteristicDescription/\347\273\264\346\212\244\346\200\247.md" "b/content/zh/docs/CharacteristicDescription/\347\273\264\346\212\244\346\200\247.md" index d738f6a4f..54bee7cc9 100644 --- "a/content/zh/docs/CharacteristicDescription/\347\273\264\346\212\244\346\200\247.md" +++ "b/content/zh/docs/CharacteristicDescription/\347\273\264\346\212\244\346\200\247.md" @@ -1,13 +1,13 @@ -# 维护性 - -- **[灰度升级](灰度升级.md)** - -- **[支持WDR诊断报告](支持WDR诊断报告.md)** - -- **[慢SQL诊断](慢SQL诊断.md)** - -- **[Session性能诊断](Session性能诊断.md)** - -- **[系统KPI辅助诊断](系统KPI辅助诊断.md)** - - +# 维护性 + +- **[灰度升级](灰度升级.md)** + +- **[支持 WDR 诊断报告](支持 WDR 诊断报告.md)** + +- **[慢 SQL 诊断](慢 SQL 诊断.md)** + +- **[Session性能诊断](Session性能诊断.md)** + +- **[系统 KPI 辅助诊断](系统 KPI 辅助诊断.md)** + + diff --git "a/content/zh/docs/CharacteristicDescription/\347\275\221\347\273\234\351\200\232\344\277\241\345\256\211\345\205\250.md" "b/content/zh/docs/CharacteristicDescription/\347\275\221\347\273\234\351\200\232\344\277\241\345\256\211\345\205\250.md" index d4f45f158..74d7b6f00 100644 --- "a/content/zh/docs/CharacteristicDescription/\347\275\221\347\273\234\351\200\232\344\277\241\345\256\211\345\205\250.md" +++ "b/content/zh/docs/CharacteristicDescription/\347\275\221\347\273\234\351\200\232\344\277\241\345\256\211\345\205\250.md" @@ -1,38 +1,38 @@ -# 网络通信安全 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -为保护敏感数据在Internet上传输的安全性,openGauss支持通过SSL加密客户端和服务器之间的通讯。 - -## 客户价值 - -保证客户的客户端与服务器通讯安全。 - -## 特性描述 - -openGauss支持SSL协议标准。SSL(Secure Socket Layer)协议是一种安全性更高的应用层通信协议,主要用于Web安全传输,SSL包含记录层和传输层,记录层协议确定传输层数据的封装格式,传输层安全协议使用X.509认证。SSL协议利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥。通过SSL协议可以有效保障两个应用间通信的保密性和可靠性,使客户与服务器之间的通信不被攻击者窃听。 - -openGauss支持TLS 1.2协议标准。TLS 1.2协议是一种安全性更高的传输层通信协议,它包括两个协议组,TLS记录协议和TLS握手协议,每一组协议具有很多不同格式的信息。TLS协议是独立于应用协议的,高层协议可以透明地分布在TLS协议上面。通过TLS协议可保证通信双方的数据保密性和数据完整性。 - -## 特性增强 - -证书签名算法强度检查:对于一些强度较低的签名算法,给出告警信息,提醒客户更换包含高强度签名算法的证书。 - -证书超时时间检查:如果距离超期日期小于7天则给出告警信息,提醒客户端更换证书。 - -证书权限检查:在创建连接阶段对证书的权限进行校验。 - -## 特性约束 - -从CA认证中心申请到正式的服务器、客户端的证书和密钥。(假设服务器的私钥为server.key,证书为server.crt,客户端的私钥为client.key,证书为client.crt,CA根证书名称为cacert.pem。) - -需要打开SSL开关,并且配置证书和连接方式。 - -## 依赖关系 - -OpenSSL - +# 网络通信安全 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +为保护敏感数据在 Internet 上传输的安全性, openGauss 支持通过 SSL 加密客户端和服务器之间的通讯。 + +## 客户价值 + +保证客户的客户端与服务器通讯安全。 + +## 特性描述 + +openGauss 支持 SSL 协议标准。SSL(Secure Socket Layer)协议是一种安全性更高的应用层通信协议,主要用于 Web 安全传输, SSL 包含记录层和传输层,记录层协议确定传输层数据的封装格式,传输层安全协议使用X.509认证。 SSL 协议利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥。通过 SSL 协议可以有效保障两个应用间通信的保密性和可靠性,使客户与服务器之间的通信不被攻击者窃听。 + +openGauss 支持TLS 1.2协议标准。TLS 1.2协议是一种安全性更高的传输层通信协议,它包括两个协议组, TLS 记录协议和 TLS 握手协议,每一组协议具有很多不同格式的信息。 TLS 协议是独立于应用协议的,高层协议可以透明地分布在 TLS 协议上面。通过 TLS 协议可保证通信双方的数据保密性和数据完整性。 + +## 特性增强 + +证书签名算法强度检查:对于一些强度较低的签名算法,给出告警信息,提醒客户更换包含高强度签名算法的证书。 + +证书超时时间检查:如果距离超期日期小于 7 天则给出告警信息,提醒客户端更换证书。 + +证书权限检查:在创建连接阶段对证书的权限进行校验。 + +## 特性约束 + +从 CA 认证中心申请到正式的服务器、客户端的证书和密钥。(假设服务器的私钥为server.key,证书为server.crt,客户端的私钥为client.key,证书为client.crt, CA 根证书名称为cacert.pem。) + +需要打开 SSL 开关,并且配置证书和连接方式。 + +## 依赖关系 + +OpenSSL + diff --git "a/content/zh/docs/CharacteristicDescription/\350\207\252\346\262\273\344\272\213\345\212\241.md" "b/content/zh/docs/CharacteristicDescription/\350\207\252\346\262\273\344\272\213\345\212\241.md" index 5a8ea288e..110cbf660 100644 --- "a/content/zh/docs/CharacteristicDescription/\350\207\252\346\262\273\344\272\213\345\212\241.md" +++ "b/content/zh/docs/CharacteristicDescription/\350\207\252\346\262\273\344\272\213\345\212\241.md" @@ -1,38 +1,38 @@ -# 自治事务 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -子事务的提交不受主事务提交或回滚影响的一类事务。 - -## 客户价值 - -满足客户多样化使用场景。 - -## 特性描述 - -自治事务为在主事务执行过程中,以独立的事务上下文执行指定的某一类SQL语句,其commit和rollback不受主事务commit和rollback的影响。 - -用户自定义函数、存储过程支持自治事务。 - -典型使用场景是,用一个表记录主事务执行过程中的操作信息,并且在主事务失败回退的时候,表中记录的操作信息不予回退。 - -## 特性增强 - -无。 - -## 特性约束 - -- 触发器函数不支持自治事务。 -- 函数或者存储过程的自治事务块中,静态sql语句不支持变量传递。 -- 自治事务不支持执行嵌套。 -- 包含自治事务的函数,不支持参数传递的返回值。 -- 包含自治事务的存储过程/函数,不支持exception异常处理。 - -## 依赖关系 - -无。 - +# 自治事务 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +子事务的提交不受主事务提交或回滚影响的一类事务。 + +## 客户价值 + +满足客户多样化使用场景。 + +## 特性描述 + +自治事务为在主事务执行过程中,以独立的事务上下文执行指定的某一类 SQL 语句,其 commit 和 rollback 不受主事务 commit 和 rollback 的影响。 + +用户自定义函数、存储过程支持自治事务。 + +典型使用场景是,用一个表记录主事务执行过程中的操作信息,并且在主事务失败回退的时候,表中记录的操作信息不予回退。 + +## 特性增强 + +无。 + +## 特性约束 + +- 触发器函数不支持自治事务。 +- 函数或者存储过程的自治事务块中,静态 sql 语句不支持变量传递。 +- 自治事务不支持执行嵌套。 +- 包含自治事务的函数,不支持参数传递的返回值。 +- 包含自治事务的存储过程/函数,不支持 exception 异常处理。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\350\207\252\351\200\202\345\272\224\345\216\213\347\274\251.md" "b/content/zh/docs/CharacteristicDescription/\350\207\252\351\200\202\345\272\224\345\216\213\347\274\251.md" index 69e20e949..0caca811a 100644 --- "a/content/zh/docs/CharacteristicDescription/\350\207\252\351\200\202\345\272\224\345\216\213\347\274\251.md" +++ "b/content/zh/docs/CharacteristicDescription/\350\207\252\351\200\202\345\272\224\345\216\213\347\274\251.md" @@ -1,99 +1,99 @@ -# 自适应压缩 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -数据压缩是当前数据库采用的主要技术。数据类型不同,适用于它的压缩算法不同。对于相同类型的数据,其数据特征不同,采用不同的压缩算法达到的效果也不相同。自适应压缩正是从数据类型和数据特征出发,采用相应的压缩算法,实现了良好的压缩比、快速的入库性能以及良好的查询性能。 - -## 客户价值 - -主要应用场景为数据入库和频繁的海量数据查询。 在数据入库场景中,自适应压缩可以大幅度地减少数据量,成倍提高IO操作效率,并将数据分类压缩以获得更快的入库性能。当用户进行数据查询时,少量的IO操作和快速的数据解压可以加快数据获取的速率,从而在更短的时间内得到查询结果。 - -## 特性描述 - -目前,数据库已实现了列存储上RLE、DELTA、BYTEPACK/BITPACK、LZ4、ZLIB、LOCAL DICTIONARY等多种压缩算法。数据库支持的数据类型与压缩算法的映射关系如下表所示。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-

-

RLE

-

DELTA

-

BITPACK/BYTEPACK

-

LZ4

-

ZLIB

-

LOCAL DICTIONARY

-

smallint/int/bigint/oid

-

decimal/real/double

-

money/time/date/

-

timestamp

-

-

-

-

-

-

-

-

tinterval/interval/time with time zone/

-

-

-

-

-

-

-

-

-

-

-

-

numeric/char/varchar/text/nvarchar2

-

以及其他支持数据类型

-

-

-

-

-

-

-
- -## 特性增强 - -支持对压缩算法进行不同压缩水平的调整。 - -## 特性约束 - -无。 - -## 依赖关系 - -开源压缩软件LZ4/ZLIB。 - +# 自适应压缩 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +数据压缩是当前数据库采用的主要技术。数据类型不同,适用于它的压缩算法不同。对于相同类型的数据,其数据特征不同,采用不同的压缩算法达到的效果也不相同。自适应压缩正是从数据类型和数据特征出发,采用相应的压缩算法,实现了良好的压缩比、快速的入库性能以及良好的查询性能。 + +## 客户价值 + +主要应用场景为数据入库和频繁的海量数据查询。 在数据入库场景中,自适应压缩可以大幅度地减少数据量,成倍提高 IO 操作效率,并将数据分类压缩以获得更快的入库性能。当用户进行数据查询时,少量的 IO 操作和快速的数据解压可以加快数据获取的速率,从而在更短的时间内得到查询结果。 + +## 特性描述 + +目前,数据库已实现了列存储上RLE、DELTA、BYTEPACK/BITPACK、LZ4、ZLIB、LOCAL DICTIONARY等多种压缩算法。数据库支持的数据类型与压缩算法的映射关系如下表所示。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

-

+

RLE

+

DELTA

+

BITPACK/BYTEPACK

+

LZ4

+

ZLIB

+

LOCAL DICTIONARY

+

smallint/int/bigint/oid

+

decimal/real/double

+

money/time/date/

+

timestamp

+

+

+

+

+

+

-

+

tinterval/interval/time with time zone/

+

-

+

-

+

-

+

-

+

+

-

+

numeric/char/varchar/text/nvarchar2

+

以及其他支持数据类型

+

+

+

+

+

+

+
+ +## 特性增强 + +支持对压缩算法进行不同压缩水平的调整。 + +## 特性约束 + +无。 + +## 依赖关系 + +开源压缩软件LZ4/ZLIB。 + diff --git "a/content/zh/docs/CharacteristicDescription/\350\241\214\345\210\227\346\267\267\345\220\210\345\255\230\345\202\250.md" "b/content/zh/docs/CharacteristicDescription/\350\241\214\345\210\227\346\267\267\345\220\210\345\255\230\345\202\250.md" index 2dcd7c6f4..2eca5756d 100644 --- "a/content/zh/docs/CharacteristicDescription/\350\241\214\345\210\227\346\267\267\345\220\210\345\255\230\345\202\250.md" +++ "b/content/zh/docs/CharacteristicDescription/\350\241\214\345\210\227\346\267\267\345\220\210\345\255\230\345\202\250.md" @@ -1,69 +1,69 @@ -# 行列混合存储 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -openGauss支持行存储和列存储两种存储模型,用户可以根据具体的使用场景,建表时选择行存储还是列存储表。 - -一般情况下,如果表的字段比较多(即大宽表),查询中涉及到列不很多的情况下,适合列存储。列存储方式如[图1](#fig114741818102620)所示。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。 - -**图 1** 列存储示意图 - - -![](figures/8-3行列混存引擎.png) - -## 客户价值 - -在大宽表、数据量比较大的场景中,查询经常关注某些列,行存储引擎查询性能比较差。例如,气象局的场景,单表有200\~800个列,查询经常访问10个列,在类似这样的场景下,向量化执行技术和列存储引擎可以极大的提升性能和减少存储空间。 - -## 特性描述 - -表有行存表和列存表两种存储模型。两种存储模型各有优劣,建议根据实际情况选择。 - -- 行存表 - - 默认创建表的类型。数据按行进行存储,即一行数据紧挨着存储。行存表支持完整的增删改查。适用于对数据需要经常更新的场景。 - -- 列存表 - - 数据按列进行存储,即一列所有数据紧挨着存储。单列查询IO小,比行存表占用更少的存储空间。适合数据批量插入、更新较少和以查询为主统计分析类的场景。列存表不适合点查询,insert插入单条记录性能差。 - -行存表和列存表的选择依据如下: - -- 更新频繁程度 - - 数据如果频繁更新,选择行存表。 - -- 插入频繁程度 - - 频繁的少量插入,选择行存表。一次插入大批量数据,选择列存表。 - -- 表的列数 - - 表的列数很多,选择列存表。 - -- 查询的列数 - - 如果每次查询时,只涉及了表的少数(小于总列数的50%)几个列,选择列存表。 - -- 压缩率 - - 列存表比行存表压缩率高。但高压缩率会消耗更多的CPU资源。 - - - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 行列混合存储 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +openGauss 支持行存储和列存储两种存储模型,用户可以根据具体的使用场景,建表时选择行存储还是列存储表。 + +一般情况下,如果表的字段比较多(即大宽表),查询中涉及到列不很多的情况下,适合列存储。列存储方式如[图1](#fig114741818102620)所示。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。 + +**图 1** 列存储示意图 + + +![](figures/8-3行列混存引擎.png) + +## 客户价值 + +在大宽表、数据量比较大的场景中,查询经常关注某些列,行存储引擎查询性能比较差。例如,气象局的场景,单表有200\~800个列,查询经常访问 10 个列,在类似这样的场景下,向量化执行技术和列存储引擎可以极大的提升性能和减少存储空间。 + +## 特性描述 + +表有行存表和列存表两种存储模型。两种存储模型各有优劣,建议根据实际情况选择。 + +- 行存表 + + 默认创建表的类型。数据按行进行存储,即一行数据紧挨着存储。行存表支持完整的增删改查。适用于对数据需要经常更新的场景。 + +- 列存表 + + 数据按列进行存储,即一列所有数据紧挨着存储。单列查询 IO 小,比行存表占用更少的存储空间。适合数据批量插入、更新较少和以查询为主统计分析类的场景。列存表不适合点查询, insert 插入单条记录性能差。 + +行存表和列存表的选择依据如下: + +- 更新频繁程度 + + 数据如果频繁更新,选择行存表。 + +- 插入频繁程度 + + 频繁的少量插入,选择行存表。一次插入大批量数据,选择列存表。 + +- 表的列数 + + 表的列数很多,选择列存表。 + +- 查询的列数 + + 如果每次查询时,只涉及了表的少数(小于总列数的50%)几个列,选择列存表。 + +- 压缩率 + + 列存表比行存表压缩率高。但高压缩率会消耗更多的 CPU 资源。 + + + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\350\241\214\347\272\247\350\256\277\351\227\256\346\216\247\345\210\266.md" "b/content/zh/docs/CharacteristicDescription/\350\241\214\347\272\247\350\256\277\351\227\256\346\216\247\345\210\266.md" index 2e9c51db7..d1d097924 100644 --- "a/content/zh/docs/CharacteristicDescription/\350\241\214\347\272\247\350\256\277\351\227\256\346\216\247\345\210\266.md" +++ "b/content/zh/docs/CharacteristicDescription/\350\241\214\347\272\247\350\256\277\351\227\256\346\216\247\345\210\266.md" @@ -1,37 +1,37 @@ -# 行级访问控制 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -行级访问控制特性将数据库访问控制精确到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,读取到的结果是不同的。 - -## 客户价值 - -不同用户执行相同的SQL查询操作,读取到的结果是不同的。 - -## 特性描述 - -用户可以在数据表创建行访问控制(Row Level Security)策略,该策略是指针对特定数据库用户、特定SQL操作生效的表达式。当数据库用户对数据表访问时,若SQL满足数据表特定的Row Level Security策略,在查询优化阶段将满足条件的表达式,按照属性(PERMISSIVE | RESTRICTIVE)类型,通过AND或OR方式拼接,应用到执行计划上。 - -行级访问控制的目的是控制表中行级数据可见性,通过在数据表上预定义Filter,在查询优化阶段将满足条件的表达式应用到执行计划上,影响最终的执行结果。当前受影响的SQL语句包括SELECT、UPDATE、DELETE。 - -## 特性增强 - -无。 - -## 特性约束 - -- 行级访问控制策略仅可以应用到SELECT、UPDATE和DELETE操作,不支持应用到INSERT和MERGE操作。 -- 支持对行存表、行存分区表、列存表、列存分区表、复制表、unlogged表、hash表定义行级访问控制策略,不支持HDFS表、外表、临时表定义行级访问控制策略。 -- 不支持对视图定义行级访问控制策略。 -- 同一张表上可以创建多个行级访问控制策略,一张表最多允许创建100个行级访问控制策略。 -- 初始用户和系统管理员不受行级访问控制策略的影响。 -- 对于设置了行级访问控制策略的表,需要谨慎授予其他用户对该表的trigger权限,以免其他用户利用触发器绕过行级访问控制策略。 - -## 依赖关系 - -无。 - +# 行级访问控制 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +行级访问控制特性将数据库访问控制精确到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的 SQL 查询操作,读取到的结果是不同的。 + +## 客户价值 + +不同用户执行相同的 SQL 查询操作,读取到的结果是不同的。 + +## 特性描述 + +用户可以在数据表创建行访问控制(Row Level Security)策略,该策略是指针对特定数据库用户、特定 SQL 操作生效的表达式。当数据库用户对数据表访问时,若 SQL 满足数据表特定的 Row Level Security 策略,在查询优化阶段将满足条件的表达式,按照属性(PERMISSIVE | RESTRICTIVE)类型,通过 AND 或 OR 方式拼接,应用到执行计划上。 + +行级访问控制的目的是控制表中行级数据可见性,通过在数据表上预定义 Filter ,在查询优化阶段将满足条件的表达式应用到执行计划上,影响最终的执行结果。当前受影响的 SQL 语句包括SELECT、UPDATE、DELETE。 + +## 特性增强 + +无。 + +## 特性约束 + +- 行级访问控制策略仅可以应用到SELECT、UPDATE和 DELETE 操作,不支持应用到 INSERT 和 MERGE 操作。 +- 支持对行存表、行存分区表、列存表、列存分区表、复制表、unlogged表、hash表定义行级访问控制策略,不支持 HDFS 表、外表、临时表定义行级访问控制策略。 +- 不支持对视图定义行级访问控制策略。 +- 同一张表上可以创建多个行级访问控制策略,一张表最多允许创建 100 个行级访问控制策略。 +- 初始用户和系统管理员不受行级访问控制策略的影响。 +- 对于设置了行级访问控制策略的表,需要谨慎授予其他用户对该表的 trigger 权限,以免其他用户利用触发器绕过行级访问控制策略。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\350\256\277\351\227\256\346\216\247\345\210\266\346\250\241\345\236\213.md" "b/content/zh/docs/CharacteristicDescription/\350\256\277\351\227\256\346\216\247\345\210\266\346\250\241\345\236\213.md" index 56ca4809f..34ae04d6e 100644 --- "a/content/zh/docs/CharacteristicDescription/\350\256\277\351\227\256\346\216\247\345\210\266\346\250\241\345\236\213.md" +++ "b/content/zh/docs/CharacteristicDescription/\350\256\277\351\227\256\346\216\247\345\210\266\346\250\241\345\236\213.md" @@ -1,36 +1,36 @@ -# 访问控制模型 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -管理用户访问权限,为用户分配完成任务所需要的最小权限。 - -## 客户价值 - -客户依据自身需求创建对应的数据库用户并赋予相应的权限给操作人员,将数据库使用风险降到最低。 - -## 特性描述 - -数据库提供了基于角色的访问控制模型和基于三权分立的访问控制模型。在基于角色的访问控制模型下,数据库用户可分为系统管理员用户、监控管理员用户、运维管理员用户、安全策略管理员用户以及普通用户。系统管理员创建角色或者用户组,并为角色分配对应的权限;监控管理员查看dbe\_perf模式下的监控视图或函数;运维管理员使用Roach工具执行数据库备份恢复操作;安全策略管理员创建资源标签、脱敏策略、统一审计策略。用户通过绑定不同的角色获得角色所拥有的对应的操作权限。 - -在基于三权分立的访问控制模型下,数据库用户可分为系统管理员、安全管理员、审计管理员、监控管理员用户、运维管理员用户、安全策略管理员用户以及普通用户。安全管理员负责创建用户,系统管理员负责为用户赋权,审计管理员负责审计所有用户的行为。 - -默认情况下,使用基于角色的访问控制模型。客户可通过设置GUC参数enableSeparationOfDuty为on来切换。 - -## 特性增强 - -无。 - -## 特性约束 - -- 系统管理员的具体权限受GUC参数enableSeparationOfDuty控制。 - -- 三权分立开关和关闭切换时需要重启数据库,且无法对新模型下不合理的用户权限进行自主识别,需要DBA识别并修正。 - -## 依赖关系 - -无。 - +# 访问控制模型 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +管理用户访问权限,为用户分配完成任务所需要的最小权限。 + +## 客户价值 + +客户依据自身需求创建对应的数据库用户并赋予相应的权限给操作人员,将数据库使用风险降到最低。 + +## 特性描述 + +数据库提供了基于角色的访问控制模型和基于三权分立的访问控制模型。在基于角色的访问控制模型下,数据库用户可分为系统管理员用户、监控管理员用户、运维管理员用户、安全策略管理员用户以及普通用户。系统管理员创建角色或者用户组,并为角色分配对应的权限;监控管理员查看dbe\_perf模式下的监控视图或函数;运维管理员使用 Roach 工具执行数据库备份恢复操作;安全策略管理员创建资源标签、脱敏策略、统一审计策略。用户通过绑定不同的角色获得角色所拥有的对应的操作权限。 + +在基于三权分立的访问控制模型下,数据库用户可分为系统管理员、安全管理员、审计管理员、监控管理员用户、运维管理员用户、安全策略管理员用户以及普通用户。安全管理员负责创建用户,系统管理员负责为用户赋权,审计管理员负责审计所有用户的行为。 + +默认情况下,使用基于角色的访问控制模型。客户可通过设置 GUC 参数 enableSeparationOfDuty 为 on 来切换。 + +## 特性增强 + +无。 + +## 特性约束 + +- 系统管理员的具体权限受 GUC 参数 enableSeparationOfDuty 控制。 + +- 三权分立开关和关闭切换时需要重启数据库,且无法对新模型下不合理的用户权限进行自主识别,需要 DBA 识别并修正。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\350\264\246\346\234\254\346\225\260\346\215\256\345\272\223\346\234\272\345\210\266.md" "b/content/zh/docs/CharacteristicDescription/\350\264\246\346\234\254\346\225\260\346\215\256\345\272\223\346\234\272\345\210\266.md" index 78b274793..640be616d 100644 --- "a/content/zh/docs/CharacteristicDescription/\350\264\246\346\234\254\346\225\260\346\215\256\345\272\223\346\234\272\345\210\266.md" +++ "b/content/zh/docs/CharacteristicDescription/\350\264\246\346\234\254\346\225\260\346\215\256\345\272\223\346\234\272\345\210\266.md" @@ -1,37 +1,37 @@ -# 账本数据库机制 - -## 可获得性 - -本特性自openGauss 2.1.0版本开始引入。 - -## 特性简介 - -账本数据库特性,对用户指定的防篡改表增加校验信息,并记录用户对其数据的操作历史,通过数据和操作历史的一致性校验来保证用户数据无法被恶意篡改。在用户对防篡改表执行DML操作时,系统对防篡改表增加少量额外的行级校验信息,同时记录操作的SQL语句和数据的变化历史。通过特性提供的校验接口,用户可以方便的校验防篡改表中的数据与系统记录的操作信息是否一致。 - -## 客户价值 - -账本数据库通过提供对用户数据的操作记录、数据历史变化记录以及易用的一致性的校验接口,方便用户随时校验数据库中的敏感信息是否发生恶意篡改,有效提高数据库防篡改能力。 - -## 特性描述 - -账本数据库采用账本Schema对普通表和防篡改用户表进行隔离。用户在账本Schema中创建的行存表具有防篡改属性,即为防篡改用户表。用户向防篡改用户表中插入数据时,系统会自动生成少量行级校验信息。在用户执行DML时,系统会在全局区块表(GS\_GLOBAL\_CHAIN)中记录用户的操作、在用户表相应的历史表中记录数据的更改等信息,操作记录、数据变化记录和用户表中的数据三者严格保持一致。账本数据库提供高性能校验接口,能够供用户方便的校验数据的一致性,如果一致性校验失败,则说明数据可能发生篡改,需要及时联系审计管理员回溯操作记录历史。 - -## 特性增强 - -无。 - -## 特性约束 - -- 防篡改模式下的行存表具有防篡改属性,而临时表、UNLOGGED表、列存表、时序表等均不具有防篡改属性。 -- 不允许修改防篡改用户表的结构,不允许truncate防篡改相关表,不允许将防篡改用户表切换到普通的Schema中,不允许将非防篡改表切换到防篡改Schema中。 -- 防篡改表如果为分区表,则不支持exchange partition、drop partition、truncate partition等操作。 -- 不支持使用函数、TRIGGER修改防篡改用户表数据。 -- 防篡改用户表创建时不能有名为“hash”的列。 -- 普通用户调用篡改校验接口只能校验自己有权查询的表。 -- 只允许审计管理员和初始用户查询全局区块表和BLOCKCHAIN模式中的表,普通用户无权访问,所有用户均无权修改。 -- 根据用户历史表命名规则,若待创建表的Schema或表名以'\_'结尾或开头,可能会出现对应历史表名与已有表名冲突的情况,需要重新命名。 - -## 依赖关系 - -无。 - +# 账本数据库机制 + +## 可获得性 + +本特性自openGauss 2.1.0版本开始引入。 + +## 特性简介 + +账本数据库特性,对用户指定的防篡改表增加校验信息,并记录用户对其数据的操作历史,通过数据和操作历史的一致性校验来保证用户数据无法被恶意篡改。在用户对防篡改表执行 DML 操作时,系统对防篡改表增加少量额外的行级校验信息,同时记录操作的 SQL 语句和数据的变化历史。通过特性提供的校验接口,用户可以方便的校验防篡改表中的数据与系统记录的操作信息是否一致。 + +## 客户价值 + +账本数据库通过提供对用户数据的操作记录、数据历史变化记录以及易用的一致性的校验接口,方便用户随时校验数据库中的敏感信息是否发生恶意篡改,有效提高数据库防篡改能力。 + +## 特性描述 + +账本数据库采用账本 Schema 对普通表和防篡改用户表进行隔离。用户在账本 Schema 中创建的行存表具有防篡改属性,即为防篡改用户表。用户向防篡改用户表中插入数据时,系统会自动生成少量行级校验信息。在用户执行 DML 时,系统会在全局区块表(GS\_GLOBAL\_CHAIN)中记录用户的操作、在用户表相应的历史表中记录数据的更改等信息,操作记录、数据变化记录和用户表中的数据三者严格保持一致。账本数据库提供高性能校验接口,能够供用户方便的校验数据的一致性,如果一致性校验失败,则说明数据可能发生篡改,需要及时联系审计管理员回溯操作记录历史。 + +## 特性增强 + +无。 + +## 特性约束 + +- 防篡改模式下的行存表具有防篡改属性,而临时表、UNLOGGED表、列存表、时序表等均不具有防篡改属性。 +- 不允许修改防篡改用户表的结构,不允许 truncate 防篡改相关表,不允许将防篡改用户表切换到普通的 Schema 中,不允许将非防篡改表切换到防篡改 Schema 中。 +- 防篡改表如果为分区表,则不支持exchange partition、drop partition、truncate partition等操作。 +- 不支持使用函数、TRIGGER修改防篡改用户表数据。 +- 防篡改用户表创建时不能有名为“hash”的列。 +- 普通用户调用篡改校验接口只能校验自己有权查询的表。 +- 只允许审计管理员和初始用户查询全局区块表和 BLOCKCHAIN 模式中的表,普通用户无权访问,所有用户均无权修改。 +- 根据用户历史表命名规则,若待创建表的 Schema 或表名以'\_'结尾或开头,可能会出现对应历史表名与已有表名冲突的情况,需要重新命名。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\350\265\204\346\272\220\346\240\207\347\255\276\346\234\272\345\210\266.md" "b/content/zh/docs/CharacteristicDescription/\350\265\204\346\272\220\346\240\207\347\255\276\346\234\272\345\210\266.md" index 74e4a60d4..27e98fbc7 100644 --- "a/content/zh/docs/CharacteristicDescription/\350\265\204\346\272\220\346\240\207\347\255\276\346\234\272\345\210\266.md" +++ "b/content/zh/docs/CharacteristicDescription/\350\265\204\346\272\220\346\240\207\347\255\276\346\234\272\345\210\266.md" @@ -1,43 +1,43 @@ -# 资源标签机制 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -数据库资源是指数据库所记录的各类对象,包括数据库、模式、表、列、视图、触发器等,数据库对象越多,数据库资源的分类管理就越繁琐。资源标签机制是一种通过对具有某类相同“特征”的数据库资源进行分类标记而实现资源分类管理的一种技术。当管理员对数据库内某些资源“打上”标签后,可以基于该标签进行如审计或数据脱敏的管理操作,从而实现对标签所包含的所有数据库资源进行安全管理。 - -## 客户价值 - -合理的制定资源标签能够有效的进行数据对象分类,提高对象管理效率,降低安全策略配置的复杂性。当管理员需要对某组数据库资源对象做统一审计或数据脱敏等安全管理动作时,可将这些资源划分到一个资源标签,该标签即包含了具有某类特征或需要统一配置某种策略的数据库资源,管理员可直接对资源标签执行管理操作,大大降低了策略配置的复杂性和信息冗余程度,提高了管理效率。 - -## 特性描述 - -资源标签机制是将当前数据库内包含的各种资源进行“有选择性的”分类,管理员可以使用如下SQL语法进行资源标签的创建,从而将一组数据库资源打上标签: - -``` -CREATE RESOURCE LABEL schm_lb ADD SCHEMA (schema_for_label); -CREATE RESOURCE LABEL tb_lb ADD TABLE (schema_for_label.table_for_label); -CREATE RESOURCE LABEL col_lb ADD COLUMN (schema_for_label.table_for_label.column_for_label); -CREATE RESOURCE LABEL multi_lb ADD SCHEMA (schema_for_label), TABLE (table_for_label); -``` - -其中,schema\_for\_label、table\_for\_label、column\_for\_label分别为待标记模式、表、列。schm\_lb标签包含了模式schm\_for\_label;tb\_lb包含了表table\_for\_label;col\_lb包含了列column\_for\_label;multi\_lb包含模式schm\_for\_label和列table\_for\_label。对这些已配置的资源标签进行如统一审计或动态数据脱敏也即是对标签所包含的每一个数据库资源进行管理。 - -当前,资源标签所支持的数据库资源类型包括:SCHEMA、TABLE、COLUMN、VIEW、FUNCTION。 - -## 特性增强 - -无。 - -## 特性约束 - -- 资源标签需要由具备POLADMIN和SYSADMIN属性的用户或初始用户创建。 -- 不支持对临时表创建资源标签。 -- 同一个基本表的列只可能属于一个资源标签。 - -## 依赖关系 - -无。 - +# 资源标签机制 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +数据库资源是指数据库所记录的各类对象,包括数据库、模式、表、列、视图、触发器等,数据库对象越多,数据库资源的分类管理就越繁琐。资源标签机制是一种通过对具有某类相同“特征”的数据库资源进行分类标记而实现资源分类管理的一种技术。当管理员对数据库内某些资源“打上”标签后,可以基于该标签进行如审计或数据脱敏的管理操作,从而实现对标签所包含的所有数据库资源进行安全管理。 + +## 客户价值 + +合理的制定资源标签能够有效的进行数据对象分类,提高对象管理效率,降低安全策略配置的复杂性。当管理员需要对某组数据库资源对象做统一审计或数据脱敏等安全管理动作时,可将这些资源划分到一个资源标签,该标签即包含了具有某类特征或需要统一配置某种策略的数据库资源,管理员可直接对资源标签执行管理操作,大大降低了策略配置的复杂性和信息冗余程度,提高了管理效率。 + +## 特性描述 + +资源标签机制是将当前数据库内包含的各种资源进行“有选择性的”分类,管理员可以使用如下 SQL 语法进行资源标签的创建,从而将一组数据库资源打上标签: + +``` +CREATE RESOURCE LABEL schm_lb ADD SCHEMA (schema_for_label); +CREATE RESOURCE LABEL tb_lb ADD TABLE (schema_for_label.table_for_label); +CREATE RESOURCE LABEL col_lb ADD COLUMN (schema_for_label.table_for_label.column_for_label); +CREATE RESOURCE LABEL multi_lb ADD SCHEMA (schema_for_label), TABLE (table_for_label); +``` + +其中,schema\_for\_label、table\_for\_label、column\_for\_label分别为待标记模式、表、列。schm\_lb标签包含了模式schm\_for\_label;tb\_lb包含了表table\_for\_label;col\_lb包含了列column\_for\_label;multi\_lb包含模式schm\_for\_label和列table\_for\_label。对这些已配置的资源标签进行如统一审计或动态数据脱敏也即是对标签所包含的每一个数据库资源进行管理。 + +当前,资源标签所支持的数据库资源类型包括:SCHEMA、TABLE、COLUMN、VIEW、FUNCTION。 + +## 特性增强 + +无。 + +## 特性约束 + +- 资源标签需要由具备 POLADMIN 和 SYSADMIN 属性的用户或初始用户创建。 +- 不支持对临时表创建资源标签。 +- 同一个基本表的列只可能属于一个资源标签。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\351\200\217\346\230\216\346\225\260\346\215\256\345\212\240\345\257\206.md" "b/content/zh/docs/CharacteristicDescription/\351\200\217\346\230\216\346\225\260\346\215\256\345\212\240\345\257\206.md" index de78a0cd4..dfbde616b 100644 --- "a/content/zh/docs/CharacteristicDescription/\351\200\217\346\230\216\346\225\260\346\215\256\345\212\240\345\257\206.md" +++ "b/content/zh/docs/CharacteristicDescription/\351\200\217\346\230\216\346\225\260\346\215\256\345\212\240\345\257\206.md" @@ -1,47 +1,47 @@ -# 透明数据加密 - -## 可获得性 - -本特性自openGauss 2.1.0版本开始引入。 - -## 特性简介 - -透明数据加密(Transparent Data Encryption),是数据库在将数据写入存储介质时对数据进行加密,从存储介质中读取数据时自动解密,防止攻击者绕过数据库认证机制直接读取数据文件中的数据,以解决静态数据泄露问题。该功能对于应用层几乎透明无感知,用户可根据需要决定是否启用透明数据加密功能。 - -## 客户价值 - -为了防止攻击者绕过数据库认证机制直接读取数据文件中的数据,可以通过透明数据加密功能对数据库的数据文件进行加密,保证用户必须在数据库启动后通过正常途径连接数据库,才可以读取解密后的数据,达到数据保护的目的。 - -## 特性描述 - -采用三层密钥结构实现密钥管理机制,即根密钥(RK)、主密钥(CMK)和数据加密密钥(DEK)。主密钥由根密钥加密保护,数据加密密钥由主密钥加密保护。数据加密密钥用于对用户数据进行加密和解密,每个表对应一个数据加密密钥。 - -支持表级加密,允许用户在创建表时指定是否对表进行加密和使用的加密算法,加密算法支持AES-128-CTR和SM4-CTR两种算法,算法一旦指定不可更改。对于创建表时指定为加密的表,数据库会自动为该表申请创建数据加密密钥,并将加密算法、密钥密文和对应主密钥ID等参数使用"keyword=value"格式保存在pg\_class系统表中的reloptions字段中。 - -对于加密表,允许用户切换表的加密状态,即将加密表切换为非加密表,或将非加密表切换为加密表。如果在创建表时未使能加密功能,后续无法再切换为加密表。 - -对于加密表,支持数据加密密钥轮转。密钥轮转后,使用旧密钥加密的数据仍使用旧密钥解密,新写入的数据使用新密钥加密。密钥轮转时不更换加密算法。 - -## 特性增强 - -无。 - -## 特性约束 - -当前版本主要实现对接华为云KMS服务,支持表级密钥存储,实现对行存表加密,规格约束如下: - -- 支持heap存储行存表加密。 -- 不支持列存加密,不支持物化视图加密,不支持ustore存储引擎加密。 -- 不支持索引和Sequence加密,不支持XLOG日志加密,不支持MOT内存表加密,不支持系统表加密。 -- 用户在创建表时可以指定加密算法,加密算法一旦指定不可更改。如果创建表时设置enable\_tde为on,但是不指定加密算法encrypt\_algo,则默认使用AES-128-CTR加密算法。 -- 如果在创建表时未开启加密功能或指定加密算法,后续无法再切换为加密表。 -- 对于已分配加密密钥的表,切换表的加密和非加密状态,不会更换密钥和加密算法。 -- 数据密钥轮转只有开启表加密功能时才支持轮转。 -- 不支持单集群跨region的多副本主备同步,不支持单集群跨region的扩容,不支持跨region的备份恢复、集群容灾和数据迁移场景。 -- 混合云场景如果使用华为云KMS和管控面功能,则可以支持透明数据加密,其他KMS服务如果接口不兼容则无法支持。 -- 加密表的查询性能比不加密时会有所劣化,对于性能有较高要求的情况下需谨慎开启加密功能。 - -## 依赖关系 - -依赖外部KMS提供密钥管理服务,目前支持对接华为云KMS服务。 - +# 透明数据加密 + +## 可获得性 + +本特性自openGauss 2.1.0版本开始引入。 + +## 特性简介 + +透明数据加密(Transparent Data Encryption),是数据库在将数据写入存储介质时对数据进行加密,从存储介质中读取数据时自动解密,防止攻击者绕过数据库认证机制直接读取数据文件中的数据,以解决静态数据泄露问题。该功能对于应用层几乎透明无感知,用户可根据需要决定是否启用透明数据加密功能。 + +## 客户价值 + +为了防止攻击者绕过数据库认证机制直接读取数据文件中的数据,可以通过透明数据加密功能对数据库的数据文件进行加密,保证用户必须在数据库启动后通过正常途径连接数据库,才可以读取解密后的数据,达到数据保护的目的。 + +## 特性描述 + +采用三层密钥结构实现密钥管理机制,即根密钥(RK)、主密钥(CMK)和数据加密密钥(DEK)。主密钥由根密钥加密保护,数据加密密钥由主密钥加密保护。数据加密密钥用于对用户数据进行加密和解密,每个表对应一个数据加密密钥。 + +支持表级加密,允许用户在创建表时指定是否对表进行加密和使用的加密算法,加密算法支持AES-128-CTR和SM4-CTR两种算法,算法一旦指定不可更改。对于创建表时指定为加密的表,数据库会自动为该表申请创建数据加密密钥,并将加密算法、密钥密文和对应主密钥 ID 等参数使用"keyword=value"格式保存在pg\_class系统表中的 reloptions 字段中。 + +对于加密表,允许用户切换表的加密状态,即将加密表切换为非加密表,或将非加密表切换为加密表。如果在创建表时未使能加密功能,后续无法再切换为加密表。 + +对于加密表,支持数据加密密钥轮转。密钥轮转后,使用旧密钥加密的数据仍使用旧密钥解密,新写入的数据使用新密钥加密。密钥轮转时不更换加密算法。 + +## 特性增强 + +无。 + +## 特性约束 + +当前版本主要实现对接华为云 KMS 服务,支持表级密钥存储,实现对行存表加密,规格约束如下: + +- 支持 heap 存储行存表加密。 +- 不支持列存加密,不支持物化视图加密,不支持 ustore 存储引擎加密。 +- 不支持索引和 Sequence 加密,不支持 XLOG 日志加密,不支持 MOT 内存表加密,不支持系统表加密。 +- 用户在创建表时可以指定加密算法,加密算法一旦指定不可更改。如果创建表时设置enable\_tde为 on ,但是不指定加密算法encrypt\_algo,则默认使用AES-128-CTR加密算法。 +- 如果在创建表时未开启加密功能或指定加密算法,后续无法再切换为加密表。 +- 对于已分配加密密钥的表,切换表的加密和非加密状态,不会更换密钥和加密算法。 +- 数据密钥轮转只有开启表加密功能时才支持轮转。 +- 不支持单集群跨 region 的多副本主备同步,不支持单集群跨 region 的扩容,不支持跨 region 的备份恢复、集群容灾和数据迁移场景。 +- 混合云场景如果使用华为云 KMS 和管控面功能,则可以支持透明数据加密,其他 KMS 服务如果接口不兼容则无法支持。 +- 加密表的查询性能比不加密时会有所劣化,对于性能有较高要求的情况下需谨慎开启加密功能。 + +## 依赖关系 + +依赖外部 KMS 提供密钥管理服务,目前支持对接华为云 KMS 服务。 + diff --git "a/content/zh/docs/CharacteristicDescription/\351\200\273\350\276\221\345\244\207\344\273\275.md" "b/content/zh/docs/CharacteristicDescription/\351\200\273\350\276\221\345\244\207\344\273\275.md" index d8ac62d46..a46444c66 100644 --- "a/content/zh/docs/CharacteristicDescription/\351\200\273\350\276\221\345\244\207\344\273\275.md" +++ "b/content/zh/docs/CharacteristicDescription/\351\200\273\350\276\221\345\244\207\344\273\275.md" @@ -1,34 +1,34 @@ -# 逻辑备份 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -支持将数据库内用户表的数据以通用格式备份到指定的存储介质中。 - -## 客户价值 - -通过逻辑备份特性,可以达成以下目的: - -- 将用户数据备份到可靠性更高的存储介质中,提升用户表数据的可靠性。 -- 通过采用通用的数据格式,支持跨版本恢复和异构恢复。 -- 可以用于冷数据的归档。 - -## 特性描述 - -openGauss提供逻辑备份能力,可以将用户表的数据以通用的text或者csv格式备份到本地磁盘文件中,并在同构/异构数据库中恢复该用户表的数据。 - -## 特性增强 - -无。 - -## 特性约束 - -逻辑备份的约束条件请参见《工具参考》中“ 服务端工具 \> [gs\_dump](../Toolreference/gs_dump.md)”章节。 - -## 依赖关系 - -无。 - +# 逻辑备份 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +支持将数据库内用户表的数据以通用格式备份到指定的存储介质中。 + +## 客户价值 + +通过逻辑备份特性,可以达成以下目的: + +- 将用户数据备份到可靠性更高的存储介质中,提升用户表数据的可靠性。 +- 通过采用通用的数据格式,支持跨版本恢复和异构恢复。 +- 可以用于冷数据的归档。 + +## 特性描述 + +openGauss 提供逻辑备份能力,可以将用户表的数据以通用的 text 或者 csv 格式备份到本地磁盘文件中,并在同构/异构数据库中恢复该用户表的数据。 + +## 特性增强 + +无。 + +## 特性约束 + +逻辑备份的约束条件请参见《工具参考》中“ 服务端工具 \> [gs\_dump](../Toolreference/gs_dump.md)”章节。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\351\200\273\350\276\221\345\244\215\345\210\266.md" "b/content/zh/docs/CharacteristicDescription/\351\200\273\350\276\221\345\244\215\345\210\266.md" index 89f1e7c9d..6a408dbe3 100644 --- "a/content/zh/docs/CharacteristicDescription/\351\200\273\350\276\221\345\244\215\345\210\266.md" +++ "b/content/zh/docs/CharacteristicDescription/\351\200\273\350\276\221\345\244\215\345\210\266.md" @@ -1,31 +1,31 @@ -# 逻辑复制 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -openGauss提供逻辑解码功能,将物理日志反解析为逻辑日志。通过DRS等逻辑复制工具将逻辑日志转化为SQL语句,到对端数据库回放,达到异构数据库同步数据的功能。目前支持openGauss数据库与MySQL数据库、Oracle数据库之间的单向、双向逻辑复制。 - -## 客户价值 - -逻辑复制可以为数据库数据实时迁移、双库双活、支持滚动升级提供解决方案。 - -## 特性描述 - -DN通过物理日志反解析为逻辑日志,DRS等逻辑复制工具从DN抽取逻辑日志转换为SQL语句,到对端数据库(MySQL)回放。逻辑复制工具同时从MySQL数据库抽取逻辑日志,反解析为SQL语句之后回放到openGauss,达到异构数据库同步数据的目的。 - -## 特性增强 - -- openGauss 1.0.0逻辑解码新增全量+增量抽取日志的方案。 -- openGauss 1.1.0逻辑解码新增备机支持逻辑解码。 - -## 特性约束 - -不支持列存复制,不支持DDL复制。 - -## 依赖关系 - -依赖于逻辑复制工具对逻辑日志进行解码。 - +# 逻辑复制 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +openGauss 提供逻辑解码功能,将物理日志反解析为逻辑日志。通过 DRS 等逻辑复制工具将逻辑日志转化为 SQL 语句,到对端数据库回放,达到异构数据库同步数据的功能。目前支持 openGauss 数据库与 MySQL 数据库、Oracle数据库之间的单向、双向逻辑复制。 + +## 客户价值 + +逻辑复制可以为数据库数据实时迁移、双库双活、支持滚动升级提供解决方案。 + +## 特性描述 + +DN 通过物理日志反解析为逻辑日志, DRS 等逻辑复制工具从 DN 抽取逻辑日志转换为 SQL 语句,到对端数据库(MySQL)回放。逻辑复制工具同时从 MySQL 数据库抽取逻辑日志,反解析为 SQL 语句之后回放到 openGauss ,达到异构数据库同步数据的目的。 + +## 特性增强 + +- openGauss 1.0.0逻辑解码新增全量+增量抽取日志的方案。 +- openGauss 1.1.0逻辑解码新增备机支持逻辑解码。 + +## 特性约束 + +不支持列存复制,不支持 DDL 复制。 + +## 依赖关系 + +依赖于逻辑复制工具对逻辑日志进行解码。 + diff --git "a/content/zh/docs/CharacteristicDescription/\351\253\230\345\217\257\347\224\250.md" "b/content/zh/docs/CharacteristicDescription/\351\253\230\345\217\257\347\224\250.md" index 6edc2c6b1..929e2ebcd 100644 --- "a/content/zh/docs/CharacteristicDescription/\351\253\230\345\217\257\347\224\250.md" +++ "b/content/zh/docs/CharacteristicDescription/\351\253\230\345\217\257\347\224\250.md" @@ -1,23 +1,23 @@ -# 高可用 - -- **[主备机](主备机.md)** - -- **[逻辑复制](逻辑复制.md)** - -- **[在线节点替换](在线节点替换.md)** - -- **[逻辑备份](逻辑备份.md)** - -- **[物理备份](物理备份.md)** - -- **[作业失败自动重试](作业失败自动重试.md)** - -- **[极致RTO](极致RTO.md)** - -- **[级联备机](级联备机.md)** - -- **[延时回放](延时回放.md)** - -- **[备机增加删除](备机增加删除.md)** - - +# 高可用 + +- **[主备机](主备机.md)** + +- **[逻辑复制](逻辑复制.md)** + +- **[在线节点替换](在线节点替换.md)** + +- **[逻辑备份](逻辑备份.md)** + +- **[物理备份](物理备份.md)** + +- **[作业失败自动重试](作业失败自动重试.md)** + +- **[极致RTO](极致RTO.md)** + +- **[级联备机](级联备机.md)** + +- **[延时回放](延时回放.md)** + +- **[备机增加删除](备机增加删除.md)** + + diff --git "a/content/zh/docs/CharacteristicDescription/\351\253\230\346\200\247\350\203\275.md" "b/content/zh/docs/CharacteristicDescription/\351\253\230\346\200\247\350\203\275.md" index a6ea8b6c6..5537ce75f 100644 --- "a/content/zh/docs/CharacteristicDescription/\351\253\230\346\200\247\350\203\275.md" +++ "b/content/zh/docs/CharacteristicDescription/\351\253\230\346\200\247\350\203\275.md" @@ -1,21 +1,21 @@ -# 高性能 - -- **[CBO优化器](CBO优化器.md)** - -- **[支持LLVM](支持LLVM.md)** - -- **[向量化引擎](向量化引擎.md)** - -- **[行列混合存储](行列混合存储.md)** - -- **[自适应压缩](自适应压缩.md)** - -- **[SQL by pass](SQL-by-pass.md)** - -- **[鲲鹏NUMA架构优化](鲲鹏NUMA架构优化.md)** - -- **[支持线程池高并发](支持线程池高并发.md)** - -- **[SMP并行执行](SMP并行执行.md)** - - +# 高性能 + +- **[CBO优化器](CBO优化器.md)** + +- **[支持LLVM](支持LLVM.md)** + +- **[向量化引擎](向量化引擎.md)** + +- **[行列混合存储](行列混合存储.md)** + +- **[自适应压缩](自适应压缩.md)** + +- **[SQL by pass](SQL-by-pass.md)** + +- **[鲲鹏 NUMA 架构优化](鲲鹏 NUMA 架构优化.md)** + +- **[支持线程池高并发](支持线程池高并发.md)** + +- **[SMP并行执行](SMP并行执行.md)** + + diff --git "a/content/zh/docs/CharacteristicDescription/\351\253\230\347\272\247\345\210\206\346\236\220\345\207\275\346\225\260\346\224\257\346\214\201.md" "b/content/zh/docs/CharacteristicDescription/\351\253\230\347\272\247\345\210\206\346\236\220\345\207\275\346\225\260\346\224\257\346\214\201.md" index 479158177..bfff4a3be 100644 --- "a/content/zh/docs/CharacteristicDescription/\351\253\230\347\272\247\345\210\206\346\236\220\345\207\275\346\225\260\346\224\257\346\214\201.md" +++ "b/content/zh/docs/CharacteristicDescription/\351\253\230\347\272\247\345\210\206\346\236\220\345\207\275\346\225\260\346\224\257\346\214\201.md" @@ -1,51 +1,51 @@ -# 高级分析函数支持 - -## 可获得性 - -本特性自openGauss 1.1.0版本开始引入。 - -## 特性简介 - -无。 - -## 客户价值 - -我们提供窗口函数来进行数据高级分析处理。窗口函数将一个表中的数据进行预先分组,每一行属于一个特定的组,然后在这个组上进行一系列的关联分析计算。这样可以挖掘出每一个元组在这个集合里的一些属性和与其他元组的关联信息。 - -## 特性描述 - -简单举例说明窗口分析功能:分析某一部门内每个人的薪水和部门平均薪水的对比。 - -``` -SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsalary; -depname | empno | salary | avg ------------+-------+--------+----------------------- -develop | 11 | 5200 | 5020.0000000000000000 -develop | 7 | 4200 | 5020.0000000000000000 -develop | 9 | 4500 | 5020.0000000000000000 -develop | 8 | 6000 | 5020.0000000000000000 -develop | 10 | 5200 | 5020.0000000000000000 -personnel | 5 | 3500 | 3700.0000000000000000 -personnel | 2 | 3900 | 3700.0000000000000000 -sales | 3 | 4800 | 4866.6666666666666667 -sales | 1 | 5000 | 4866.6666666666666667 -sales | 4 | 4800 | 4866.6666666666666667 -(10 rows) -``` - -可以看到,通过这个avg\(salary\) OVER \(PARTITION BY depname\)分析函数,每一个人的薪水和与部门的平均薪水很容易计算出来。 - -目前,系统支持row\_number\(\)、rank\(\)、dense\_rank\(\)、percent\_rank\(\)、cume\_dist\(\)、ntile\(\)、lag\(\)、lead\(\)、first\_value\(\)、last\_value\(\)、nth\_value\(\)分析函数。具体的函数用法和语句请参见《开发者指南》中“SQL参考 \> 函数和操作符 \> 窗口函数”章节。 - -## 特性增强 - -无。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 高级分析函数支持 + +## 可获得性 + +本特性自openGauss 1.1.0版本开始引入。 + +## 特性简介 + +无。 + +## 客户价值 + +我们提供窗口函数来进行数据高级分析处理。窗口函数将一个表中的数据进行预先分组,每一行属于一个特定的组,然后在这个组上进行一系列的关联分析计算。这样可以挖掘出每一个元组在这个集合里的一些属性和与其他元组的关联信息。 + +## 特性描述 + +简单举例说明窗口分析功能:分析某一部门内每个人的薪水和部门平均薪水的对比。 + +``` + SELECT depname , empno , salary , avg(salary) OVER (PARTITION BY depname) FROM empsalary; +depname | empno | salary | avg +-----------+-------+--------+----------------------- +develop | 11 | 5200 | 5020.0000000000000000 +develop | 7 | 4200 | 5020.0000000000000000 +develop | 9 | 4500 | 5020.0000000000000000 +develop | 8 | 6000 | 5020.0000000000000000 +develop | 10 | 5200 | 5020.0000000000000000 +personnel | 5 | 3500 | 3700.0000000000000000 +personnel | 2 | 3900 | 3700.0000000000000000 +sales | 3 | 4800 | 4866.6666666666666667 +sales | 1 | 5000 | 4866.6666666666666667 +sales | 4 | 4800 | 4866.6666666666666667 +(10 rows) +``` + +可以看到,通过这个avg\(salary\) OVER \(PARTITION BY depname\)分析函数,每一个人的薪水和与部门的平均薪水很容易计算出来。 + +目前,系统支持row\_number\(\)、rank\(\)、dense\_rank\(\)、percent\_rank\(\)、cume\_dist\(\)、ntile\(\)、lag\(\)、lead\(\)、first\_value\(\)、last\_value\(\)、nth\_value\(\)分析函数。具体的函数用法和语句请参见《开发者指南》中“SQL参考 \> 函数和操作符 \> 窗口函数”章节。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git "a/content/zh/docs/CharacteristicDescription/\351\262\262\351\271\217NUMA\346\236\266\346\236\204\344\274\230\345\214\226.md" "b/content/zh/docs/CharacteristicDescription/\351\262\262\351\271\217NUMA\346\236\266\346\236\204\344\274\230\345\214\226.md" index 6c773ceb5..48e32070e 100644 --- "a/content/zh/docs/CharacteristicDescription/\351\262\262\351\271\217NUMA\346\236\266\346\236\204\344\274\230\345\214\226.md" +++ "b/content/zh/docs/CharacteristicDescription/\351\262\262\351\271\217NUMA\346\236\266\346\236\204\344\274\230\345\214\226.md" @@ -1,34 +1,34 @@ -# 鲲鹏NUMA架构优化 - -## 可获得性 - -本特性自openGauss 1.0.0版本开始引入。 - -## 特性简介 - -鲲鹏NUMA架构优化,主要面向鲲鹏处理器架构特点、ARMv8指令集等,进行相应的系统优化,涉及到操作系统、软件架构、锁并发、日志、原子操作、Cache访问等一系列的多层次优化,从而大幅提升了openGauss数据库在鲲鹏平台上的处理性能。 - -## 客户价值 - -数据库的处理性能,例如每分钟处理交易量(Transaction Per Minute),是数据库竞争力的关键性能指标,在同等硬件成本的条件下,数据库能提供的处理性能越高,就可以提供给用户更多的业务处理能力,从而降低客户的使用成本。 - -## 特性描述 - -- openGauss根据鲲鹏处理机的多核NUMA架构特点,进行一系列针对性NUMA架构相关优化。一方面尽量减少跨核内存访问的时延问题,另一方面充分发挥鲲鹏多核算力优势,所提供的关键技术包括重做日志批插、热点数据NUMA分布、CLog分区等,大幅提升TP系统的处理性能。 -- openGauss基于鲲鹏芯片所使用的ARMv8.1架构,利用LSE扩展指令集实现高效的原子操作,有效提升CPU利用率,从而提升多线程间同步性能、XLog写入性能等。 -- openGauss基于鲲鹏芯片提供的更宽的L3缓存cacheline,针对热点数据访问进行优化,有效提高缓存访问命中率,降低Cache缓存一致性维护开销,大幅提升系统整体的数据访问性能。 -- 鲲鹏920,2P服务器(64cores\*2,内存768 GB),网络10 GE,IO为4块NVME PCIE SSD时,TPCC为1000warehouse,性能是150万tpmC。 - -## 特性增强 - -- 支持重做日志批插,分区CLog,提升鲲鹏平台下的数据库处理性能。 -- 支持LSE扩展指令集的原子操作,提升多线程同步性能。 - -## 特性约束 - -无。 - -## 依赖关系 - -无。 - +# 鲲鹏 NUMA 架构优化 + +## 可获得性 + +本特性自openGauss 1.0.0版本开始引入。 + +## 特性简介 + +鲲鹏 NUMA 架构优化,主要面向鲲鹏处理器架构特点、ARMv8指令集等,进行相应的系统优化,涉及到操作系统、软件架构、锁并发、日志、原子操作、Cache访问等一系列的多层次优化,从而大幅提升了 openGauss 数据库在鲲鹏平台上的处理性能。 + +## 客户价值 + +数据库的处理性能,例如每分钟处理交易量(Transaction Per Minute),是数据库竞争力的关键性能指标,在同等硬件成本的条件下,数据库能提供的处理性能越高,就可以提供给用户更多的业务处理能力,从而降低客户的使用成本。 + +## 特性描述 + +- openGauss根据鲲鹏处理机的多核 NUMA 架构特点,进行一系列针对性 NUMA 架构相关优化。一方面尽量减少跨核内存访问的时延问题,另一方面充分发挥鲲鹏多核算力优势,所提供的关键技术包括重做日志批插、热点数据 NUMA 分布、CLog分区等,大幅提升 TP 系统的处理性能。 +- openGauss基于鲲鹏芯片所使用的ARMv8.1架构,利用 LSE 扩展指令集实现高效的原子操作,有效提升 CPU 利用率,从而提升多线程间同步性能、XLog写入性能等。 +- openGauss基于鲲鹏芯片提供的更宽的 L3 缓存 cacheline ,针对热点数据访问进行优化,有效提高缓存访问命中率,降低 Cache 缓存一致性维护开销,大幅提升系统整体的数据访问性能。 +- 鲲鹏 920 , 2P 服务器(64cores\*2,内存768 GB),网络 10 GE , IO 为 4 块 NVME PCIE SSD 时, TPCC 为 1000warehouse ,性能是 150 万 tpmC 。 + +## 特性增强 + +- 支持重做日志批插,分区 CLog ,提升鲲鹏平台下的数据库处理性能。 +- 支持 LSE 扩展指令集的原子操作,提升多线程同步性能。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 + diff --git a/content/zh/docs/Compilationguide/Compilation.md b/content/zh/docs/Compilationguide/Compilation.md index dcfe65834..9bc760dc0 100644 --- a/content/zh/docs/Compilationguide/Compilation.md +++ b/content/zh/docs/Compilationguide/Compilation.md @@ -1,9 +1,9 @@ -# 编译指导书 - -## 概述 - -本文档介绍了openGauss对于操作系统的要求、编译环境的要求、软件依赖、编译方法以及编译结果的存放位置等。 - - - - +# 编译指导书 + +## 概述 + +本文档介绍了 openGauss 对于操作系统的要求、编译环境的要求、软件依赖、编译方法以及编译结果的存放位置等。 + + + + diff --git a/content/zh/docs/Compilationguide/FAQ.md b/content/zh/docs/Compilationguide/FAQ.md index 7a85fff2e..132cb44f3 100644 --- a/content/zh/docs/Compilationguide/FAQ.md +++ b/content/zh/docs/Compilationguide/FAQ.md @@ -1,60 +1,60 @@ -# FAQ - -## 如何清除编译过程中生成的临时文件 - -### 问题 - -如何清除编译过程中生成的临时文件。 - -### 回答 - -进入/sda/openGauss-server目录,选择执行如下命令清除编译过程中生成的临时文件。 - -- 删除由configure和make生成的文件。 - - ``` - make distclean -sj - ``` - -- 删除make生成的文件。 - - ``` - make clean -sj - ``` - -## 如何解决“Configure error: C compiler cannot create executables”报错 - -### 问题 - -如何解决版本编译时出现的“Configure error: C compiler cannot create executables”报错。 - -### 回答 - -报错原因:binarylibs文件不完整或者被损坏。 - -解决办法:若binarylibs是通过开源软件构建而来,请重新构建开源第三方软件;若binarylibs是代码下载而来,请重新下载。最后重新执行当前脚本或命令。 - -## 如何解决“g++: fatal error: Killed signal terminated program cclplus”报错 - -### 问题 - -如何解决编译过程中出现的“g++: fatal error: Killed signal terminated program cclplus”报错。 - -### 回答 - -报错原因:脚本中的编译过程都添加了-sj参数,并发数太大导致错误。 - -解决办法:编译过程中降低make 并发数,或者直接使用make命令。使用一键式脚本的话需要修改脚本。 - -## 如何解决“out of memory allocating xxx bytes after a total of xxx bytes”报错 - -### 问题 - -如何解决编译过程中出现的“out of memory allocating xxx bytes after a total of xxx bytes”报错。 - -### 回答 - -报错原因:脚本中的编译过程都添加了-sj参数,同时机器配置较低,内存不足,并发数太大导致错误。 - -解决办法:编译过程中降低make 并发数,或者直接使用make命令。使用一键式脚本的话需要修改脚本。 - +# FAQ + +## 如何清除编译过程中生成的临时文件 + +### 问题 + +如何清除编译过程中生成的临时文件。 + +### 回答 + +进入/sda/openGauss-server目录,选择执行如下命令清除编译过程中生成的临时文件。 + +- 删除由 configure 和 make 生成的文件。 + + ``` + make distclean -sj + ``` + +- 删除 make 生成的文件。 + + ``` + make clean -sj + ``` + +## 如何解决“Configure error: C compiler cannot create executables”报错 + +### 问题 + +如何解决版本编译时出现的“Configure error: C compiler cannot create executables”报错。 + +### 回答 + +报错原因:binarylibs文件不完整或者被损坏。 + +解决办法:若 binarylibs 是通过开源软件构建而来,请重新构建开源第三方软件;若 binarylibs 是代码下载而来,请重新下载。最后重新执行当前脚本或命令。 + +## 如何解决“g++: fatal error: Killed signal terminated program cclplus”报错 + +### 问题 + +如何解决编译过程中出现的“g++: fatal error: Killed signal terminated program cclplus”报错。 + +### 回答 + +报错原因:脚本中的编译过程都添加了-sj参数,并发数太大导致错误。 + +解决办法:编译过程中降低 make 并发数,或者直接使用 make 命令。使用一键式脚本的话需要修改脚本。 + +## 如何解决“out of memory allocating xxx bytes after a total of xxx bytes”报错 + +### 问题 + +如何解决编译过程中出现的“out of memory allocating xxx bytes after a total of xxx bytes”报错。 + +### 回答 + +报错原因:脚本中的编译过程都添加了-sj参数,同时机器配置较低,内存不足,并发数太大导致错误。 + +解决办法:编译过程中降低 make 并发数,或者直接使用 make 命令。使用一键式脚本的话需要修改脚本。 + diff --git "a/content/zh/docs/Compilationguide/\346\220\255\345\273\272\347\274\226\350\257\221\347\216\257\345\242\203.md" "b/content/zh/docs/Compilationguide/\346\220\255\345\273\272\347\274\226\350\257\221\347\216\257\345\242\203.md" index d5625431a..8d6296b1c 100644 --- "a/content/zh/docs/Compilationguide/\346\220\255\345\273\272\347\274\226\350\257\221\347\216\257\345\242\203.md" +++ "b/content/zh/docs/Compilationguide/\346\220\255\345\273\272\347\274\226\350\257\221\347\216\257\345\242\203.md" @@ -1,88 +1,88 @@ -# 搭建编译环境 - -## 硬件要求 - -编译openGauss的硬件要求: - -- 机器数量:1台 -- 机器硬件规格: - - CPU:4U - - Memory:8G - - Free Disk:100G(Linux 64位) - - -## 软件要求 - -**操作系统要求** - -openGauss支持的操作系统: - -- CentOS 7.6(x86 架构) -- openEuler-20.03-LTS(aarch64 架构) -- openEuler-20.03-LTS(x86 架构) -- Kylin-V10(aarch64 架构) - -**软件依赖要求** - -编译openGauss的软件依赖要求如[表 1 软件依赖要求](#table1212531681911)所示。 - -建议使用上述操作系统安装光盘或者源中,下列依赖软件的默认安装包,若不存在下列软件,可参看软件对应的建议版本。 - -**表 1** 软件依赖要求 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

所需软件

-

建议版本

-

libaio-devel

-

建议版本:0.3.109-13

-

flex

-

要求版本:2.5.31 以上

-

bison

-

建议版本:2.7-4

-

ncurses-devel

-

建议版本:5.9-13.20130511

-

glibc-devel

-

建议版本:2.17-111

-

patch

-

建议版本:2.7.1-10

-

redhat-lsb-core

-

建议版本:4.1

-

readline-devel

-

建议版本:7.0-13

-
- - - -## 环境变量配置 - -编译openGauss的环境变量配置已经统一写入一键式编译和打包脚本,因此无需自行配置。 - -若想不使用一键式编译脚本,则需要手动配置环境变量,将在[版本编译](版本编译.md)中的软件安装编译介绍。 - +# 搭建编译环境 + +## 硬件要求 + +编译 openGauss 的硬件要求: + +- 机器数量:1台 +- 机器硬件规格: + - CPU:4U + - Memory:8G + - Free Disk:100G(Linux 64位) + + +## 软件要求 + +**操作系统要求** + +openGauss 支持的操作系统: + +- CentOS 7.6(x86 架构) +- openEuler-20.03-LTS(aarch64 架构) +- openEuler-20.03-LTS(x86 架构) +- Kylin-V10(aarch64 架构) + +**软件依赖要求** + +编译 openGauss 的软件依赖要求如[表 1 软件依赖要求](#table1212531681911)所示。 + +建议使用上述操作系统安装光盘或者源中,下列依赖软件的默认安装包,若不存在下列软件,可参看软件对应的建议版本。 + +**表 1** 软件依赖要求 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

所需软件

+

建议版本

+

libaio-devel

+

建议版本:0.3.109-13

+

flex

+

要求版本:2.5.31 以上

+

bison

+

建议版本:2.7-4

+

ncurses-devel

+

建议版本:5.9-13.20130511

+

glibc-devel

+

建议版本:2.17-111

+

patch

+

建议版本:2.7.1-10

+

redhat-lsb-core

+

建议版本:4.1

+

readline-devel

+

建议版本:7.0-13

+
+ + + +## 环境变量配置 + +编译 openGauss 的环境变量配置已经统一写入一键式编译和打包脚本,因此无需自行配置。 + +若想不使用一键式编译脚本,则需要手动配置环境变量,将在[版本编译](版本编译.md)中的软件安装编译介绍。 + diff --git "a/content/zh/docs/Compilationguide/\347\211\210\346\234\254\347\274\226\350\257\221.md" "b/content/zh/docs/Compilationguide/\347\211\210\346\234\254\347\274\226\350\257\221.md" index ff2baa219..937a64d60 100644 --- "a/content/zh/docs/Compilationguide/\347\211\210\346\234\254\347\274\226\350\257\221.md" +++ "b/content/zh/docs/Compilationguide/\347\211\210\346\234\254\347\274\226\350\257\221.md" @@ -1,571 +1,571 @@ -# 版本编译 - - - -openGauss的编译过程和生成安装包的过程已经写成了一个一键式的脚本build.sh,可以方便的通过脚本进行编译操作。也可以自己配置环境变量,通过命令进行编译。 - - - -- [编译前准备](#编译前准备) -- [软件安装编译](#软件安装编译) -- [产品安装包编译](#产品安装包编译) - - - -本章节会介绍openGauss编译需要满足的前提条件,编译的操作步骤等,下图是对编译流程的大致概括,详细内容见下文。 - -![](figures/绘图1.png) - - - - -## 编译前准备 - -### 环境清理 - -如果曾经安装过openGauss的旧版本,或者源码编译过openGauss,可按下列办法进行环境清理: - -``` -rm -rf /opt/huawei/openGauss -rm -rf /var/log/omm -rm -rf /home/omm -userdel omm -rm -rf /root/gauss_om (gauss_om的位置,视具体情况而定) -``` - -### 关闭swap分区 - -没有关闭swap分区,可能会导致在后续的编译过程中,执行make -j的时候报内存不足的错。可按以下方式关闭swap分区: - -``` -swapoff -a -``` - -可使用free -m查看swap分区是否关闭。 - -### 代码下载 - -**前提条件** - -已在本地安装并配置git和git-lfs。 - -**操作步骤** - -1. 执行如下命令下载代码和开源第三方软件仓库: - - ``` - [user@linux sda]$ git clone https://gitee.com/opengauss/openGauss-server.git openGauss-server -b branchname #openGauss的代码仓库 - [user@linux sda]$ git clone https://gitee.com/opengauss/openGauss-third_party.git openGauss-third_party #openGauss依赖的开源第三方软件仓库 - [user@linux sda]$ # mkdir binarylibs 关于此注释步骤,请阅读说明 - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- branchname:代码分支名称,缺省可不填,如需编译openGauss 2.1.0的代码,可加上-b 2.1.0的参数。 - >- binarylibs:存放编译构建好的开源第三方软件的文件夹,用户可通过[开源软件编译构建](#开源软件编译构建)获取。由于开源软件编译构建耗时长,我们特地使用openGauss-third\_party编译构建出了一份binarylibs并压缩上传到了网上,用户可以直接下载获取。 - > 下载地址:https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.1.0/openGauss-third_party_binarylibs.tar.gz - > 下载完毕后执行解压tar -xzvf openGauss-third_party_binarylibs.tar.gz,重命名 mv openGauss-third_party_binarylibs binarylibs。 - -2. 下载项进度均显示为100%时表示下载成功。 - -### 开源软件编译构建 - -**开源软件编译构建** - -openGauss的编译,需要提前把所依赖的开源第三方软件进行编译和构建。这些开源第三方软件存放在代码openGauss-third\_party代码仓中,用户下载完毕之后应用git lfs pull获取代码仓中的大文件,并且用户通常只需要构建一次。若存在开源软件版本更新,则需要重新构建。 - -由于此步骤耗时较长,我们使用openGauss-third\_party编译构建出了一份binarylibs,用户可以参考[代码下载](#代码下载)直接下载获取。 - -**表 1** openGauss开源第三方软件编译前置软件要求 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

所需软件

-

建议版本

-

python3

-

建议版本:3.6

-

python3-devel

-

建议版本:3

-

setuptools

-

建议版本:36.6.1

-

libaio-devel

-

建议版本:0.3.109-13

-

flex

-

要求版本:2.5.31 以上

-

ncurses-devel

-

建议版本:5.9-13.20130511

-

lsb_release

-

建议版本:4.1

-

pam-devel

-

建议版本:1.1.8-1.3.1

-

libffi-devel

-

建议版本:3.1

-

patch

-

建议版本:2.7.1-10

-

golang

-

建议版本:1.13.3及以上

-

autoconf

-

建议版本:2.69

-

automake

-

建议版本:1.13.4

-

byacc

-

建议版本:1.9

-

cmake

-

建议版本:3.19.2

-

diffutils

-

建议版本:3.7

-

openssl-devel

-

建议版本:1.1.1

-

libtool

-

建议版本:2.4.2及以上

-

libtool-devel

-

建议版本:2.4.2及以上

-
- - - -在开始编译第三方库之前,请自行准备好gcc7.3。建议用已发布的编译好的第三方库中gcc,并配置好环境变量。 - -在安装完[表1 openGauss开源三方件编译前置软件要求](#zh-cn_topic_0283136302_table1212531681911)中的软件后,请将python默认版本指向python3.x并执行如下操作: - -1. 执行如下命令进入内核依赖的开源第三方软件目录,进行开源第三方软件的编译和构建,产生相应的二进制程序或库文件。/sda/openGauss-third\_party为开源第三方软件下载目录。 - - ``` - [user@linux sda]$ cd /sda/openGauss-third_party/build - [user@linux build]$ sh build_all.sh - ``` - -2. 用户执行以上命令之后,可以自动生成数据库编译所需的开源第三方软件,如果想单独的生成某个开源三方软件,可以进入对应的目录,执行build.sh脚本,如: - - ``` - [user@linux sda]$ cd /sda/openGauss-third_party/dependency/openssl - [user@linux openssl]$ sh build.sh - ``` - - 即可编译生成openssl - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >相关的报错日志可以查看对应的build目录下对应名字的log以及对应模块下的log,如dependency模块下的openssl的相关编译安装日志可以查看: - > - >- /sda/openGauss-third\_party/build/dependency\_build.log - >- /sda/openGauss-third\_party/dependency/build/openssl\_build.log - >- /sda/openGauss-third\_party/dependency/openssl/build\_openssl.log - - -**编译构建结果** - -执行上述脚本,最终编译构建出的结果会存放在openGauss-third\_party目录下的output目录。这些文件会在后面编译openGauss-server时使用到。 - -### 编译脚本介绍 -openGauss-server/build.sh是编译过程中的重要脚本工具。其集成了软件安装编译、产品安装包编译两种功能,可快速进行代码编译和打包。 - -详细参数选项如下表所示: - -**表 2** build.sh参数功能选项介绍 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

功能选项

-

缺省值

-

参数

-

功能

-

-h

-

不使用此选项

-

-

-

帮助菜单。

-

-m

-

release

-

[debug | release | memcheck]

-

选择编译目标版本。

-

-3rd

-

${代码路径}/binarylibs

-

[binarylibs path]

-

指定binarylibs的路径,需绝对路径。

-

-pkg

-

不使用此功能

-

-

-

将代码编译结果压缩封装成安装包。

-

-nopt

-

不使用此功能

-

-

-

如果使用此功能,则对鲲鹏平台的相关CPU不进行优化。

-
- - ->![](public_sys-resources/icon-note.gif) **说明:** -> ->- -m \[debug | release | memcheck\]表示可选择三种目标版本: -> -> - release:代表生成release版本的二进制程序,该版本编译时,配置GCC高级别优化选项,去除内核调试代码,通常用于生产环境或性能测试环境。 -> -> - debug:代表生成debug版本的二进制程序,该版本编译时,增加内核代码调试功能,通常用于开发自测环境。 -> -> - memcheck:代表生成memcheck版本的二进制程序,该版本编译时,在debug版本基础上新增ASAN功能,通常用于定位内存问题。 -> ->- -3rd \[binarylibs path\]为binarylibs的路径。缺省情况下,会认为当前代码文件夹下存在binarylibs。因此如果将binarylibs移动到openGauss-server下,或在openGauss-server下创建了指向binarylibs的软链接,可不指定此选项。但需要注意其容易被git clean等操作删除。 -> ->- 此脚本每个参数选项都设置了缺省值,且数量并不多,依赖关系简单,因此使用时非常方便。如果用户需求值与缺省值不同,请根据实际情况进行设置。 - -## 软件安装编译 -软件安装编译即将代码编译生成软件,并将软件安装到机器上。提供一键式编译脚本build.sh进行操作,也可以自己配置环境变量手动操作。两种方式将在本章节的一键式脚本编译操作步骤、手动编译操作步骤中进行讲解。 - -### 前提条件 - -- 已按照[搭建编译环境](搭建编译环境.md)的要求准备好相关软硬件,并且已参考[代码下载](#代码下载)下载了代码。 -- 已完成开源软件编译构建,具体请参见[开源软件编译构建](#开源软件编译构建)。并将gcc7.3按已发布的编译好的第三方库目录结构放置在output目录中。 -- 了解[build.sh介绍](#编译脚本介绍)脚本的参数选项和功能。 -- 代码环境干净,没有以前编译生成的文件。具体请参见[FAQ](FAQ.md)。 - -### 一键式脚本编译 - -1. 执行如下命令进入到软件代码编译脚本目录。 - - ``` - [user@linux sda]$ cd /sda/openGauss-server - ``` - -2. 执行如下命令,编译安装openGauss。 - - ``` - [user@linux openGauss-server]$ sh build.sh -m [debug | release | memcheck] -3rd [binarylibs path] - ``` - - 例如: - - ``` - sh build.sh # 编译安装release版本的openGauss。需代码目录下有binarylibs或者其软链接,否则将会失败。 - sh build.sh -m debug -3rd /sdc/binarylibs # 编译安装debug版本的openGauss - ``` - -3. 显示如下内容,表示编译成功。 - - ``` - make compile successfully! - ``` - - - 编译后软件安装路径为:/sda/openGauss-server/mppdb_temp_install - - 编译后的二进制放置路径为:/sda/openGauss-server/mppdb_temp_install/bin - - 编译日志为:./build/script/makemppdb_pkg.log - -4. 导入环境变量,即可进行初始化和启动数据库。 - - ``` - export CODE_BASE=________ # openGauss-server的路径 - export GAUSSHOME=$CODE_BASE/mppdb_temp_install/ - export LD_LIBRARY_PATH=$GAUSSHOME/lib::$LD_LIBRARY_PATH - export PATH=$GAUSSHOME/bin:$PATH - ``` - - -### 手动编译 - -1. 执行如下命令进入到软件代码目录。 - - ``` - [user@linux sda]$ cd /sda/openGauss-server - ``` - -2. 执行脚本获取自己系统的版本。 - - ``` - [user@linux openGauss-server]$ sh src/get_PlatForm_str.sh - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- 显示的结果表示openGauss当前支持的操作系统,openGauss支持的操作系统为centos7.6\_x86\_64、openeuler\_aarch64。 - > - >- 如果结果显示为Failed或者其他版本,表示openGauss不支持当前操作系统。 - -3. 配置环境变量,根据自己的代码下载位置补充两处“_\_\_\_”,将[步骤2](#li1666842982511)获取到的结果替换下面的**\*\*\***。 - - ``` - export CODE_BASE=________ # openGauss-server的路径 - export BINARYLIBS=________ # binarylibs的路径 - export GAUSSHOME=$CODE_BASE/dest/ - export GCC_PATH=$BINARYLIBS/buildtools/***/gcc7.3/ - export CC=$GCC_PATH/gcc/bin/gcc - export CXX=$GCC_PATH/gcc/bin/g++ - export LD_LIBRARY_PATH=$GAUSSHOME/lib:$GCC_PATH/gcc/lib64:$GCC_PATH/isl/lib:$GCC_PATH/mpc/lib/:$GCC_PATH/mpfr/lib/:$GCC_PATH/gmp/lib/:$LD_LIBRARY_PATH - export PATH=$GAUSSHOME/bin:$GCC_PATH/gcc/bin:$PATH - ``` - -4. 选择版本进行configure。 - - debug版: - - ``` - ./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib - ``` - - release版: - - ``` - ./configure --gcc-version=7.3.0 CC=g++ CFLAGS="-O2 -g3" --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-thread-safety --with-readline --without-zlib - ``` - - memcheck版: - - ``` - ./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib --enable-memory-check - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- _\[debug | release | memcheck\]_ 表示可选择三种目标版本,三种目标版本如下所示: - > - > - release:代表生成release版本的二进制程序,该版本编译时,配置GCC高级别优化选项,去除内核调试代码,通常用于生产环境或性能测试环境。 - > - > - debug:代表生成debug版本的二进制程序,该版本编译时,增加内核代码调试功能,通常用于开发自测环境。 - > - > - memcheck:代表生成memcheck版本的二进制程序,该版本编译时,在debug版本基础上新增ASAN功能,通常用于定位内存问题。 - > - >- 在ARM平台上,CFLAGS需要添加-D\_\_USE\_NUMA。在ARMv8.1或者更高的平台上(例如鲲鹏920),CFLAGS需要添加-D\_\_ARM\_LSE。 - > - >- 若将binarylibs移动到openGauss-server下,或在openGauss-server下创建了指向binarylibs的软链接,可不指定--3rd参数。但这样做的话需要注意其容易被git clean等操作删除。 - > - >- 如需使用MOT,需要在命令中添加 --enable-mot。 - -5. 执行如下命令,编译安装。 - - ``` - [user@linux openGauss-server]$ make -sj - [user@linux openGauss-server]$ make install -sj - ``` - - > **说明:** - > - > - -s参数是silent模式,有些编译信息不会打印出来。 - > - 如果使用-j参数,make执行的时候会一直增加并发数,有时会遇到“cannot allicate memory”的错。一般-j参数后可指定数字为 cpu数 X 2。如编译环境是4 CPU,可使用make -j8的参数进行编译。 - -6. 显示如下内容,表示编译安装成功。 - - ``` - openGauss installation complete. - ``` - - - 编译后软件安装路径为:$GAUSSHOME - - 编译后的二进制放置路径为:$GAUSSHOME/bin - -## 编译后验证 - -编译结束后,可按以下方式对编译后的openGauss进行验证: - -1. 使用root用户,创建用户omm: - - ``` - [user@linux sda]# useradd omm -g dbgrp - [user@linux sda]# passwd omm - ``` - -2. 使用omm用户,在~/.bashrc中增加以下环境变量: - - ``` - export GAUSSHOME=/root/openGauss-server/dest/ ##编译结果的路径,可根据实际情况修改 - export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH - export PATH=$GAUSSHOME/bin:$PATH - ``` - - 并使环境变量生效: - - ``` - [user@linux sda]$ source ~/.bashrc - ``` - -3. 建立数据目录和日志目录: - - ``` - [user@linux sda]$ mkdir ~/data - [user@linux sda]$ mkdir ~/log - [user@linux sda]$ chown -R omm:dbgrp /root/openGauss-server - ``` - -4. 数据库初始化: - - ``` - [user@linux sda]$ gs_initdb -D /home/omm/data --nodename=db1 - ``` - -5. 启动数据库: - - ``` - [user@linux sda]$ gs_ctl start -D /home/omm/data -Z single_node -l /home/omm/log/opengauss.log - ``` - - 启动完毕后可通过 ps -ef | grep gaussdb检查数据库进程情况,或通过 gs_ctl query -D /home/omm/data检查数据库状态,或使用 gsql -d postgres 进入gsql命令行查看数据库的相关信息。 - - - -## openGauss-OM编译 - -源码编译完openGauss-server代码仓之后,并没有gs_om。如需使用gs_om,需单独编译openGauss-OM,并将编译好的openGauss-xxx-om.tar.gz的包拷贝到openGauss-server安装包所在的目录,再按照[企业版]( https://opengauss.org/zh/docs/latest/docs/installation/%E4%BC%81%E4%B8%9A%E7%89%88%E5%AE%89%E8%A3%85.html )的方式进行安装。 - -### 操作步骤 - -1. git clone OM代码仓: - - ``` - [user@linux sda]$ git clone https://gitee.com/opengauss/openGauss-OM.git - ``` - -2. 执行编译: - - ``` - [user@linux sda]$ cd openGauss-OM - [user@linux sda]$ chmod +x build.sh - [user@linux sda]$ export BINARYLIBS_PATH=/root/binarylibs (这里填写前面的第三方软件包解压后的目录) - [user@linux sda]$ ./build.sh -3rd $BINARYLIBS_PATH - ``` - -3. 显示以下内容,表示 Gauss-OM编译成功: - - ``` - ROOT_DIR: /root/binarylibs - Everything is ready. - success! - ``` - - - -## 产品安装包编译 - -本步骤是制作openGauss软件安装包,安装包的编译打包过程也集成在build.sh之中。本步骤的编译结果将不含gs_om软件,如需使用,请按上一节的方式处理。 - - - -### 前提条件 - -- 已按照[搭建编译环境](搭建编译环境.md)的要求准备好相关软硬件,并且已参考[代码下载](#代码下载)下载了代码。 -- 已完成开源软件编译构建,具体请参见[开源软件编译构建](#开源软件编译构建)。 -- 了解 [build.sh介绍](#编译脚本介绍)脚本的参数选项和功能。 -- 代码环境干净,没有以前编译生成的文件。具体请参见[FAQ](FAQ.md)。 - -### 操作步骤 - -1. 执行如下命令进入到代码目录。 - - ``` - [user@linux sda]$ cd /sda/openGauss-server - ``` - -2. 执行如下命令编译出openGauss产品安装包。 - - ``` - [user@linux openGauss-server]$ sh build.sh -m [debug | release | memcheck] -3rd [binarylibs path] -pkg - ``` - - 例如: - - ``` - sh build.sh -pkg # 生成release版本的openGauss安装包。需代码目录下有binarylibs或者其软链接,否则将会失败。 - sh build.sh -m debug -3rd /sdc/binarylibs -pkg # 生成debug版本的openGauss安装包 - ``` - - 本操作和[软件安装编译](#软件安装编译)相比,同样会经历的一键式编译最终生成软件的过程与将软件封装成安装包的过程。对比 [build.sh介绍](#编译脚本介绍) 的使用命令可发现,此处仅增加了一个“-pkg” 功能选项。 - -3. 显示如下内容,表示安装包编译成功。 - - ``` - success! - ``` - - - 生成的安装包会存放在./output目录下。 - - 编译日志为:./build/script/makemppdb_pkg.log。 - - 安装包打包日志为:./build/script/make_package.log。 - - - +# 版本编译 + + + +openGauss 的编译过程和生成安装包的过程已经写成了一个一键式的脚本build.sh,可以方便的通过脚本进行编译操作。也可以自己配置环境变量,通过命令进行编译。 + + + +- [编译前准备](#编译前准备) +- [软件安装编译](#软件安装编译) +- [产品安装包编译](#产品安装包编译) + + + +本章节会介绍 openGauss 编译需要满足的前提条件,编译的操作步骤等,下图是对编译流程的大致概括,详细内容见下文。 + +![](figures/绘图1.png) + + + + +## 编译前准备 + +### 环境清理 + +如果曾经安装过 openGauss 的旧版本,或者源码编译过 openGauss ,可按下列办法进行环境清理: + +``` +rm -rf /opt/huawei/openGauss +rm -rf /var/log/omm +rm -rf /home/omm +userdel omm +rm -rf /root/gauss_om (gauss_om的位置,视具体情况而定) +``` + +### 关闭 swap 分区 + +没有关闭 swap 分区,可能会导致在后续的编译过程中,执行make -j的时候报内存不足的错。可按以下方式关闭 swap 分区: + +``` +swapoff -a +``` + +可使用free -m查看 swap 分区是否关闭。 + +### 代码下载 + +**前提条件** + +已在本地安装并配置 git 和git-lfs。 + +**操作步骤** + +1. 执行如下命令下载代码和开源第三方软件仓库: + + ``` + [user@linux sda]$ git clone https://gitee.com/opengauss/openGauss-server.git openGauss-server -b branchname #openGauss的代码仓库 + [user@linux sda]$ git clone https://gitee.com/opengauss/openGauss-third_party.git openGauss-third_party #openGauss依赖的开源第三方软件仓库 + [user@linux sda]$ # mkdir binarylibs 关于此注释步骤,请阅读说明 + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- branchname:代码分支名称,缺省可不填,如需编译openGauss 2.1.0的代码,可加上-b 2.1.0的参数。 + >- binarylibs:存放编译构建好的开源第三方软件的文件夹,用户可通过[开源软件编译构建](#开源软件编译构建)获取。由于开源软件编译构建耗时长,我们特地使用openGauss-third\_party编译构建出了一份 binarylibs 并压缩上传到了网上,用户可以直接下载获取。 + > 下载地址:https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.1.0/openGauss-third_party_binarylibs.tar.gz + > 下载完毕后执行解压tar -xzvf openGauss-third_party_binarylibs.tar.gz,重命名 mv openGauss-third_party_binarylibs binarylibs。 + +2. 下载项进度均显示为100%时表示下载成功。 + +### 开源软件编译构建 + +**开源软件编译构建** + +openGauss 的编译,需要提前把所依赖的开源第三方软件进行编译和构建。这些开源第三方软件存放在代码openGauss-third\_party代码仓中,用户下载完毕之后应用 git lfs pull 获取代码仓中的大文件,并且用户通常只需要构建一次。若存在开源软件版本更新,则需要重新构建。 + +由于此步骤耗时较长,我们使用openGauss-third\_party编译构建出了一份 binarylibs ,用户可以参考[代码下载](#代码下载)直接下载获取。 + +**表 1** openGauss开源第三方软件编译前置软件要求 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

所需软件

+

建议版本

+

python3

+

建议版本:3.6

+

python3-devel

+

建议版本:3

+

setuptools

+

建议版本:36.6.1

+

libaio-devel

+

建议版本:0.3.109-13

+

flex

+

要求版本:2.5.31 以上

+

ncurses-devel

+

建议版本:5.9-13.20130511

+

lsb_release

+

建议版本:4.1

+

pam-devel

+

建议版本:1.1.8-1.3.1

+

libffi-devel

+

建议版本:3.1

+

patch

+

建议版本:2.7.1-10

+

golang

+

建议版本:1.13.3及以上

+

autoconf

+

建议版本:2.69

+

automake

+

建议版本:1.13.4

+

byacc

+

建议版本:1.9

+

cmake

+

建议版本:3.19.2

+

diffutils

+

建议版本:3.7

+

openssl-devel

+

建议版本:1.1.1

+

libtool

+

建议版本:2.4.2及以上

+

libtool-devel

+

建议版本:2.4.2及以上

+
+ + + +在开始编译第三方库之前,请自行准备好gcc7.3。建议用已发布的编译好的第三方库中 gcc ,并配置好环境变量。 + +在安装完[表 1 openGauss 开源三方件编译前置软件要求](#zh-cn_topic_0283136302_table1212531681911)中的软件后,请将 python 默认版本指向python3.x并执行如下操作: + +1. 执行如下命令进入内核依赖的开源第三方软件目录,进行开源第三方软件的编译和构建,产生相应的二进制程序或库文件。/sda/openGauss-third\_party为开源第三方软件下载目录。 + + ``` + [user@linux sda]$ cd /sda/openGauss-third_party/build + [user@linux build]$ sh build_all.sh + ``` + +2. 用户执行以上命令之后,可以自动生成数据库编译所需的开源第三方软件,如果想单独的生成某个开源三方软件,可以进入对应的目录,执行build.sh脚本,如: + + ``` + [user@linux sda]$ cd /sda/openGauss-third_party/dependency/openssl + [user@linux openssl]$ sh build.sh + ``` + + 即可编译生成openssl + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >相关的报错日志可以查看对应的 build 目录下对应名字的 log 以及对应模块下的 log ,如 dependency 模块下的 openssl 的相关编译安装日志可以查看: + > + >- /sda/openGauss-third\_party/build/dependency\_build.log + >- /sda/openGauss-third\_party/dependency/build/openssl\_build.log + >- /sda/openGauss-third\_party/dependency/openssl/build\_openssl.log + + +**编译构建结果** + +执行上述脚本,最终编译构建出的结果会存放在openGauss-third\_party目录下的 output 目录。这些文件会在后面编译openGauss-server时使用到。 + +### 编译脚本介绍 +openGauss-server/build.sh是编译过程中的重要脚本工具。其集成了软件安装编译、产品安装包编译两种功能,可快速进行代码编译和打包。 + +详细参数选项如下表所示: + +**表 2** build.sh参数功能选项介绍 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能选项

+

缺省值

+

参数

+

功能

+

-h

+

不使用此选项

+

-

+

帮助菜单。

+

-m

+

release

+

[debug | release | memcheck]

+

选择编译目标版本。

+

-3rd

+

${代码路径}/binarylibs

+

[binarylibs path]

+

指定 binarylibs 的路径,需绝对路径。

+

-pkg

+

不使用此功能

+

-

+

将代码编译结果压缩封装成安装包。

+

-nopt

+

不使用此功能

+

-

+

如果使用此功能,则对鲲鹏平台的相关 CPU 不进行优化。

+
+ + +>![](public_sys-resources/icon-note.gif) **说明:** +> +>- -m \[debug | release | memcheck\]表示可选择三种目标版本: +> +> - release:代表生成 release 版本的二进制程序,该版本编译时,配置 GCC 高级别优化选项,去除内核调试代码,通常用于生产环境或性能测试环境。 +> +> - debug:代表生成 debug 版本的二进制程序,该版本编译时,增加内核代码调试功能,通常用于开发自测环境。 +> +> - memcheck:代表生成 memcheck 版本的二进制程序,该版本编译时,在 debug 版本基础上新增 ASAN 功能,通常用于定位内存问题。 +> +>- -3rd \[binarylibs path\]为 binarylibs 的路径。缺省情况下,会认为当前代码文件夹下存在 binarylibs 。因此如果将 binarylibs 移动到openGauss-server下,或在openGauss-server下创建了指向 binarylibs 的软链接,可不指定此选项。但需要注意其容易被 git clean 等操作删除。 +> +>- 此脚本每个参数选项都设置了缺省值,且数量并不多,依赖关系简单,因此使用时非常方便。如果用户需求值与缺省值不同,请根据实际情况进行设置。 + +## 软件安装编译 +软件安装编译即将代码编译生成软件,并将软件安装到机器上。提供一键式编译脚本build.sh进行操作,也可以自己配置环境变量手动操作。两种方式将在本章节的一键式脚本编译操作步骤、手动编译操作步骤中进行讲解。 + +### 前提条件 + +- 已按照[搭建编译环境](搭建编译环境.md)的要求准备好相关软硬件,并且已参考[代码下载](#代码下载)下载了代码。 +- 已完成开源软件编译构建,具体请参见[开源软件编译构建](#开源软件编译构建)。并将gcc7.3按已发布的编译好的第三方库目录结构放置在 output 目录中。 +- 了解[build.sh介绍](#编译脚本介绍)脚本的参数选项和功能。 +- 代码环境干净,没有以前编译生成的文件。具体请参见[FAQ](FAQ.md)。 + +### 一键式脚本编译 + +1. 执行如下命令进入到软件代码编译脚本目录。 + + ``` + [user@linux sda]$ cd /sda/openGauss-server + ``` + +2. 执行如下命令,编译安装 openGauss 。 + + ``` + [user@linux openGauss-server]$ sh build.sh -m [debug | release | memcheck] -3rd [binarylibs path] + ``` + + 例如: + + ``` + sh build.sh # 编译安装 release 版本的 openGauss 。需代码目录下有 binarylibs 或者其软链接,否则将会失败。 + sh build.sh -m debug -3rd /sdc/binarylibs # 编译安装 debug 版本的openGauss + ``` + +3. 显示如下内容,表示编译成功。 + + ``` + make compile successfully ! + ``` + + - 编译后软件安装路径为:/sda/openGauss-server/mppdb_temp_install + - 编译后的二进制放置路径为:/sda/openGauss-server/mppdb_temp_install/bin + - 编译日志为:./build/script/makemppdb_pkg.log + +4. 导入环境变量,即可进行初始化和启动数据库。 + + ``` + export CODE_BASE=________ # openGauss-server的路径 + export GAUSSHOME=$CODE_BASE/mppdb_temp_install/ + export LD_LIBRARY_PATH=$GAUSSHOME/lib::$LD_LIBRARY_PATH + export PATH=$GAUSSHOME/bin:$PATH + ``` + + +### 手动编译 + +1. 执行如下命令进入到软件代码目录。 + + ``` + [user@linux sda]$ cd /sda/openGauss-server + ``` + +2. 执行脚本获取自己系统的版本。 + + ``` + [user@linux openGauss-server]$ sh src/get_PlatForm_str.sh + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- 显示的结果表示 openGauss 当前支持的操作系统, openGauss 支持的操作系统为centos7.6\_x86\_64、openeuler\_aarch64。 + > + >- 如果结果显示为 Failed 或者其他版本,表示 openGauss 不支持当前操作系统。 + +3. 配置环境变量,根据自己的代码下载位置补充两处“_\_\_\_”,将[步骤2](#li1666842982511)获取到的结果替换下面的**\*\*\***。 + + ``` + export CODE_BASE=________ # openGauss-server的路径 + export BINARYLIBS=________ # binarylibs的路径 + export GAUSSHOME=$CODE_BASE/dest/ + export GCC_PATH=$BINARYLIBS/buildtools/***/gcc7.3/ + export CC=$GCC_PATH/gcc/bin/gcc + export CXX=$GCC_PATH/gcc/bin/g++ + export LD_LIBRARY_PATH=$GAUSSHOME/lib:$GCC_PATH/gcc/lib64:$GCC_PATH/isl/lib:$GCC_PATH/mpc/lib/:$GCC_PATH/mpfr/lib/:$GCC_PATH/gmp/lib/:$LD_LIBRARY_PATH + export PATH=$GAUSSHOME/bin:$GCC_PATH/gcc/bin:$PATH + ``` + +4. 选择版本进行 configure 。 + +debug 版: + + ``` + ./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib + ``` + +release 版: + + ``` + ./configure --gcc-version=7.3.0 CC=g++ CFLAGS="-O2 -g3" --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-thread-safety --with-readline --without-zlib + ``` + +memcheck 版: + + ``` + ./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib --enable-memory-check + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- _\[debug | release | memcheck\]_ 表示可选择三种目标版本,三种目标版本如下所示: + > + > - release:代表生成 release 版本的二进制程序,该版本编译时,配置 GCC 高级别优化选项,去除内核调试代码,通常用于生产环境或性能测试环境。 + > + > - debug:代表生成 debug 版本的二进制程序,该版本编译时,增加内核代码调试功能,通常用于开发自测环境。 + > + > - memcheck:代表生成 memcheck 版本的二进制程序,该版本编译时,在 debug 版本基础上新增 ASAN 功能,通常用于定位内存问题。 + > + >- 在 ARM 平台上, CFLAGS 需要添加-D\_\_USE\_NUMA。在ARMv8.1或者更高的平台上(例如鲲鹏920), CFLAGS 需要添加-D\_\_ARM\_LSE。 + > + >- 若将 binarylibs 移动到openGauss-server下,或在openGauss-server下创建了指向 binarylibs 的软链接,可不指定--3rd参数。但这样做的话需要注意其容易被 git clean 等操作删除。 + > + >- 如需使用 MOT ,需要在命令中添加 --enable-mot。 + +5. 执行如下命令,编译安装。 + + ``` + [user@linux openGauss-server]$ make -sj + [user@linux openGauss-server]$ make install -sj + ``` + + > **说明:** + > + > - -s参数是 silent 模式,有些编译信息不会打印出来。 + > - 如果使用-j参数, make 执行的时候会一直增加并发数,有时会遇到“cannot allicate memory”的错。一般-j参数后可指定数字为 cpu 数 X 2 。如编译环境是 4 CPU ,可使用make -j8的参数进行编译。 + +6. 显示如下内容,表示编译安装成功。 + + ``` + openGauss installation complete. + ``` + + - 编译后软件安装路径为:$GAUSSHOME + - 编译后的二进制放置路径为:$GAUSSHOME/bin + +## 编译后验证 + +编译结束后,可按以下方式对编译后的 openGauss 进行验证: + +1. 使用 root 用户,创建用户omm: + + ``` + [user@linux sda]# useradd omm -g dbgrp + [user@linux sda]# passwd omm + ``` + +2. 使用 omm 用户,在~/.bashrc中增加以下环境变量: + + ``` + export GAUSSHOME=/root/openGauss-server/dest/ ##编译结果的路径,可根据实际情况修改 + export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH + export PATH=$GAUSSHOME/bin:$PATH + ``` + + 并使环境变量生效: + + ``` + [user@linux sda]$ source ~/.bashrc + ``` + +3. 建立数据目录和日志目录: + + ``` + [user@linux sda]$ mkdir ~/data + [user@linux sda]$ mkdir ~/log + [user@linux sda]$ chown -R omm:dbgrp /root/openGauss-server + ``` + +4. 数据库初始化: + + ``` + [user@linux sda]$ gs_initdb -D /home/omm/data --nodename=db1 + ``` + +5. 启动数据库: + + ``` + [user@linux sda]$ gs_ctl start -D /home/omm/data -Z single_node -l /home/omm/log/opengauss.log + ``` + + 启动完毕后可通过 ps -ef | grep gaussdb检查数据库进程情况,或通过 gs_ctl query -D /home/omm/data检查数据库状态,或使用 gsql -d postgres 进入 gsql 命令行查看数据库的相关信息。 + + + +## openGauss-OM编译 + +源码编译完openGauss-server代码仓之后,并没有 gs_om 。如需使用 gs_om ,需单独编译openGauss-OM,并将编译好的openGauss-xxx-om.tar.gz的包拷贝到openGauss-server安装包所在的目录,再按照[企业版]( https://opengauss.org/zh/docs/latest/docs/installation/%E4%BC%81%E4%B8%9A%E7%89%88%E5%AE%89%E8%A3%85.html )的方式进行安装。 + +### 操作步骤 + +1. git clone OM代码仓: + + ``` + [user@linux sda]$ git clone https://gitee.com/opengauss/openGauss-OM.git + ``` + +2. 执行编译: + + ``` + [user@linux sda]$ cd openGauss-OM + [user@linux sda]$ chmod +x build.sh + [user@linux sda]$ export BINARYLIBS_PATH=/root/binarylibs (这里填写前面的第三方软件包解压后的目录) + [user@linux sda]$ ./build.sh -3rd $BINARYLIBS_PATH + ``` + +3. 显示以下内容,表示 Gauss-OM编译成功: + + ``` + ROOT_DIR: /root/binarylibs + Everything is ready. + success ! + ``` + + + +## 产品安装包编译 + +本步骤是制作 openGauss 软件安装包,安装包的编译打包过程也集成在build.sh之中。本步骤的编译结果将不含 gs_om 软件,如需使用,请按上一节的方式处理。 + + + +### 前提条件 + +- 已按照[搭建编译环境](搭建编译环境.md)的要求准备好相关软硬件,并且已参考[代码下载](#代码下载)下载了代码。 +- 已完成开源软件编译构建,具体请参见[开源软件编译构建](#开源软件编译构建)。 +- 了解 [build.sh介绍](#编译脚本介绍)脚本的参数选项和功能。 +- 代码环境干净,没有以前编译生成的文件。具体请参见[FAQ](FAQ.md)。 + +### 操作步骤 + +1. 执行如下命令进入到代码目录。 + + ``` + [user@linux sda]$ cd /sda/openGauss-server + ``` + +2. 执行如下命令编译出 openGauss 产品安装包。 + + ``` + [user@linux openGauss-server]$ sh build.sh -m [debug | release | memcheck] -3rd [binarylibs path] -pkg + ``` + + 例如: + + ``` + sh build.sh -pkg # 生成 release 版本的 openGauss 安装包。需代码目录下有 binarylibs 或者其软链接,否则将会失败。 + sh build.sh -m debug -3rd /sdc/binarylibs -pkg # 生成 debug 版本的 openGauss 安装包 + ``` + + 本操作和[软件安装编译](#软件安装编译)相比,同样会经历的一键式编译最终生成软件的过程与将软件封装成安装包的过程。对比 [build.sh介绍](#编译脚本介绍) 的使用命令可发现,此处仅增加了一个“-pkg” 功能选项。 + +3. 显示如下内容,表示安装包编译成功。 + + ``` + success ! + ``` + + - 生成的安装包会存放在./output目录下。 + - 编译日志为:./build/script/makemppdb_pkg.log。 + - 安装包打包日志为:./build/script/make_package.log。 + + + diff --git a/content/zh/docs/Description/Description.md b/content/zh/docs/Description/Description.md index 0c2cf8a2f..3680fa4b3 100644 --- a/content/zh/docs/Description/Description.md +++ b/content/zh/docs/Description/Description.md @@ -1,4 +1,4 @@ -# 产品描述 - -本文档对openGauss数据库进行了详细描述,包含产品定位、系统架构介绍、应用场景、运行环境、技术指标、基本功能和特性、企业级增强特性介绍等信息。 - +# 产品描述 + +本文档对 openGauss 数据库进行了详细描述,包含产品定位、系统架构介绍、应用场景、运行环境、技术指标、基本功能和特性、企业级增强特性介绍等信息。 + diff --git "a/content/zh/docs/Description/\344\272\247\345\223\201\345\256\232\344\275\215.md" "b/content/zh/docs/Description/\344\272\247\345\223\201\345\256\232\344\275\215.md" index 8a216ff1d..3e5e1c7e2 100644 --- "a/content/zh/docs/Description/\344\272\247\345\223\201\345\256\232\344\275\215.md" +++ "b/content/zh/docs/Description/\344\272\247\345\223\201\345\256\232\344\275\215.md" @@ -1,13 +1,13 @@ -# 产品定位 - -openGauss是一款支持SQL2003标准语法,支持主备部署的高可用关系型数据库。 - -openGauss是一款携手伙伴共同打造的、全面友好开放的、全球领先的企业级开源关系型数据库,它具有面向多核的极致性能、全链路的业务和数据安全以及AI调优和高效运维的能力。其采用的是木兰宽松许可证v2发行。openGauss深度融合华为在数据库领域多年的研发经验,结合企业级场景需求,持续构建竞争力特性。 - -- 多种存储模式支持复合业务场景。 -- NUMA化数据结构支持高性能。 -- 主备模式,CRC校验支持高可用。 -- 实现了闪回和回收站支持高安全。 -- 通过Table Access Method接口层支持多存储引擎。 - - +# 产品定位 + +openGauss 是一款支持 SQL2003 标准语法,支持主备部署的高可用关系型数据库。 + +openGauss 是一款携手伙伴共同打造的、全面友好开放的、全球领先的企业级开源关系型数据库,它具有面向多核的极致性能、全链路的业务和数据安全以及 AI 调优和高效运维的能力。其采用的是木兰宽松许可证 v2 发行。 openGauss 深度融合华为在数据库领域多年的研发经验,结合企业级场景需求,持续构建竞争力特性。 + +- 多种存储模式支持复合业务场景。 +- NUMA化数据结构支持高性能。 +- 主备模式, CRC 校验支持高可用。 +- 实现了闪回和回收站支持高安全。 +- 通过 Table Access Method 接口层支持多存储引擎。 + + diff --git "a/content/zh/docs/Description/\344\272\247\345\223\201\347\211\271\347\202\271.md" "b/content/zh/docs/Description/\344\272\247\345\223\201\347\211\271\347\202\271.md" index b8cbb7923..08aea902e 100644 --- "a/content/zh/docs/Description/\344\272\247\345\223\201\347\211\271\347\202\271.md" +++ "b/content/zh/docs/Description/\344\272\247\345\223\201\347\211\271\347\202\271.md" @@ -1,27 +1,27 @@ -# 产品特点 - -openGauss具有高性能、高可用、高安全性和可维护性好的特点。 - -- 高性能 - - 通过列存储、向量化执行引擎、融合引擎等关键技术,实现百亿数据量查询秒级响应。 - -- 高可用 - - 同城跨AZ(Available Zone)容灾,数据不丢失,分钟级恢复。 - -- 高安全性 - - 支持访问控制、加密认证、数据库审计、动态数据脱敏等安全特性,提供全方位端到端的数据安全保护。 - -- 高可靠 - - - 闪回和回收站 - - 通常在表数据被错误的UPDATE、DELETE、TRUNCATE和DROP时数据难以恢复,即便恢复也仅能通过PITR(Point-in-time recovery,基于时间点恢复)的方式恢复到错误操作前的时刻。这种修复方式会导致整个数据库不可用,并且一些用户不希望“撤销”的表操作也同样会被“撤销”。openGauss对TIMECAPSULE以及RECYCLEBIN的支持,使用户可以通过指定时间戳进行闪回查询,或者指定时间戳对表进行闪回,获取到错误DELETE、UPDATE前的历史数据。通过从RECYCLEBIN中闪回TRUNCATE、以及DROP的表对象,用户可以将表数据恢复到错误操作前,大大提高了用户数据的可靠性。 - -- 可维护性好 - - 支持WDR诊断、慢SQL诊断、Session诊断等多种维护手段,准确快速定位问题。具备AI4DB能力,能够通过AI算法实现数据库自调优、自监控、自诊断等。 - - +# 产品特点 + +openGauss 具有高性能、高可用、高安全性和可维护性好的特点。 + +- 高性能 + + 通过列存储、向量化执行引擎、融合引擎等关键技术,实现百亿数据量查询秒级响应。 + +- 高可用 + + 同城跨AZ(Available Zone)容灾,数据不丢失,分钟级恢复。 + +- 高安全性 + + 支持访问控制、加密认证、数据库审计、动态数据脱敏等安全特性,提供全方位端到端的数据安全保护。 + +- 高可靠 + + - 闪回和回收站 + + 通常在表数据被错误的UPDATE、DELETE、TRUNCATE和 DROP 时数据难以恢复,即便恢复也仅能通过PITR(Point-in-time recovery,基于时间点恢复)的方式恢复到错误操作前的时刻。这种修复方式会导致整个数据库不可用,并且一些用户不希望“撤销”的表操作也同样会被“撤销”。 openGauss 对 TIMECAPSULE 以及 RECYCLEBIN 的支持,使用户可以通过指定时间戳进行闪回查询,或者指定时间戳对表进行闪回,获取到错误DELETE、UPDATE前的历史数据。通过从 RECYCLEBIN 中闪回TRUNCATE、以及 DROP 的表对象,用户可以将表数据恢复到错误操作前,大大提高了用户数据的可靠性。 + +- 可维护性好 + + 支持 WDR 诊断、慢 SQL 诊断、Session诊断等多种维护手段,准确快速定位问题。具备 AI4DB 能力,能够通过 AI 算法实现数据库自调优、自监控、自诊断等。 + + diff --git "a/content/zh/docs/Description/\344\274\201\344\270\232\347\272\247\345\242\236\345\274\272\347\211\271\346\200\247.md" "b/content/zh/docs/Description/\344\274\201\344\270\232\347\272\247\345\242\236\345\274\272\347\211\271\346\200\247.md" index 9d2845c08..bc1650b00 100644 --- "a/content/zh/docs/Description/\344\274\201\344\270\232\347\272\247\345\242\236\345\274\272\347\211\271\346\200\247.md" +++ "b/content/zh/docs/Description/\344\274\201\344\270\232\347\272\247\345\242\236\345\274\272\347\211\271\346\200\247.md" @@ -1,360 +1,360 @@ -# 企业级增强特性 - -## 数据分区 - -数据分区是数据库产品普遍具备的功能。在openGauss中,数据分区是对数据按照用户指定的策略对数据做的水平分表,将表按照指定范围划分为多个数据互不重叠的部分(Partition)。 - -openGauss支持: - -- 范围分区(Range Partitioning)功能,即根据表的一列或者多列,将要插入表的记录分为若干个范围(这些范围在不同的分区里没有重叠),然后为每个范围创建一个分区,用来存储相应的数据。 -- 列表分区(List Partitioning)功能,即根据表的一列,将要插入表的记录中出现的键值分为若干个列表(这些列表在不同的分区里没有重叠),然后为每个列表创建一个分区,用来存储相应的数据。 -- 哈希分区(Hash Partitioning)功能,即根据表的一列,通过内部哈希算法将要插入表的记录划分到对应的分区中。用户在CREATE TABLE时增加PARTITION参数,即表示针对此表应用数据分区功能。 - -例如,[表1](#zh-cn_topic_0283136537_zh-cn_topic_0237080621_zh-cn_topic_0231764089_zh-cn_topic_0059777656_t77b9e09809f742f1aaadea05d041bc23)描述了一个xDR(详单)场景下,基于时间分片的方式分区后带来的收益。 - -**表 1** 分区收益 - - - - - - - - - - - - - - - - -

场景描述

-

收益

-

当表中访问率较高的行位于一个单独分区或少数几个分区时。

-

大幅减少搜索空间,从而提升访问性能。

-

当需要查询或更新一个分区的大部分记录时。

-

仅需要连续扫描对应分区,而非扫描整个表,因此可大幅提升性能。

-

当需要大量加载或者删除的记录位于一个单独分区或少数几个分区时。

-

可直接读取或删除对应分区,从而提升处理性能;同时避免了大量零散的删除操作,可减少清理碎片工作量。

-
- -数据分区带来的好处在于: - -- **改善可管理性:**利用分区,可以将表和索引划分为一些更小、更易管理的单元。这样,数据库管理员在进行数据管理时就能采取“分而治之”的方法。 有了分区,维护操作可以专门针对表的特定部分执行。 -- **可提升删除操作的性能:**删除数据时可以删除整个分区,与分别删除每行相比,这种操作非常高效和快速。 - - 删除分区表与删除普通表的语法一致,都是通过DROP TABLE语法进行删除。 - -- **改善查询性能:**通过限制要检查或操作的数据数量,分区可带来许多性能优势。 - - 分区剪枝:分区剪枝(也称为分区消除)是openGauss在执行时过滤掉不需要扫描的分区,只对相关的分区进行扫描的技术。分区剪枝通常可以将查询性能提高若干数量级。 - -- **智能化分区联接:**通过使用一种称为智能化分区联接的技术,分区还可以改善多表联接的性能。当将两个表联接在一起,并且至少其中一个表使用联接键进行分区时,可以应用智能化分区联接。智能化分区联接将一个大型联接分为多个较小的联接,这些较小的联接包含与联接的表“相同”的数据集。这里,“相同”定义为恰好包含联接的两端中相同的分区键值集,因此可以确保只有这些“相同”数据集的联接才会有效,而不必考虑其他数据集,目前不支持列表分区和哈希分区。 - -## 向量化执行和行列混合引擎 - -在大宽表、数据量比较大、查询经常关注某些列的场景中,行存储引擎查询性能比较差。例如气象局的场景,单表有200\~800个列,查询经常访问10个列,在类似这样的场景下,向量化执行技术和列存储引擎可以极大的提升性能和减少存储空间。 - -- 向量化执行 - - 标准的迭代器模型如[图1](#zh-cn_topic_0283136537_zh-cn_topic_0237080624_zh-cn_topic_0231764690_zh-cn_topic_0059777898_f9d90aebe179a40759039d0263492489d)所示。控制流向下(下图实线)、数据流向上(下图虚线)、上层驱动下层(上层节点调用下层节点要数据)、一次一元组(下层节点每次只返回一条元组给上层节点)。 - - 而向量化执行相对于传统的执行模式改变是对于一次一元组的模型修改为一次一批元组,配合列存特性,可以带来巨大的性能提升。 - - **图 1** 向量化执行引擎 - - - ![](figures/向量化执行引擎(png).png) - -- 行列混合存储引擎 - - openGauss支持行存储和列存储两种存储模型,用户可以根据应用场景,建表的时候选择行存储还是列存储表。 - - 一般情况下,OLAP类业务场景(范围统计类查询和批量导入操作频繁,更新、删除、点查和点插操作不频繁,表的字段比较多,即大宽表,查询中涉及到的列不是很多)下,适合列存储,OLTP类业务场景(点查、点插、删除、更新频繁,范围统计类查询和批量导入操作不频繁,表的字段个数比较少,查询大部分字段)下,适合行存储。 - - 如[图2](#zh-cn_topic_0283136537_zh-cn_topic_0237080624_zh-cn_topic_0231764690_zh-cn_topic_0059777898_fbb2af39ce12a419cb437829aaf1cf4fb)所示,行列混合存储引擎可以同时为用户提供更优的数据压缩比(列存)、更好的索引性能(列存)、更好的点更新和点查询(行存)性能。 - - **图 2** 行列混存引擎 - - - ![](figures/openGauss行列混存引擎.png) - - 当前列存储引擎有以下约束: - - - DDL仅支持CREATE/DROP/TRUNCATE TABLE的功能。 - - 兼容分区的DDL管理功能(如:ADD/DROP/MERGE PARTITION,EXCHANGE功能)。 - - 支持CREATE TABLE LIKE语法。 - - 支持ALTER TABLE的部分语法。 - - 其他功能都不支持。 - - - DML支持UPDATE/COPY/BULKLOAD/DELETE。 - - 不支持触发器,不支持主外键。 - - 支持Psort index、B-tree index和GIN index,具体约束参见《开发者指南》中“SQL参考 \> SQL语法 \> CREATE INDEX”章节。 - -- 列存下的数据压缩 - - 对于非活跃的早期数据可以通过压缩来减少空间占用,降低采购和运维成本。 - - openGauss列存储压缩支持Delta Value Encoding、Dictionary、RLE 、LZ4、ZLIB等压缩算法,且能够根据数据特征自适应地选择压缩算法,平均压缩比7:1。压缩数据可直接访问,对业务透明,极大缩短历史数据访问的准备时间。 - - -## 融合存储引擎 - -融合引擎架构支持了可插拔存储引擎的架构,新增了In-place update存储引擎,索引多版本为索引增加了事务信息,Xlog无锁刷新极大提升了Xlog写入效率,并行Page回放提升了备机回放效率,企业级特性闪回为用户提供了一个稳定的查询状态。 - -- In-place update存储引擎 - - 新增的In-place update存储引擎很好的解决了Append update存储引擎空间膨胀和元组较大的问题,高效回滚段的设计是In-place update存储引擎的基础。 - -- 索引多版本 - - **图 3** UBTree与BTree查找、更新比较示意图 - ![](figures/UBTree与BTree查找-更新比较示意图.png "UBTree与BTree查找-更新比较示意图") - - 通过在索引页面元组上维护版本信息,UBtree能够在索引层进行 MVCC 可见性检查。同时 UBtree 也能通过版本信息独立判断索引元组是否已经无效(Dead),进而使得 in-place update引擎能实现数据表以及索引表上页级的空间清理,并在此基础上构建不依赖 AutoVacuum 的独立垃圾回收机制。 - - -- Xlog无锁刷新 - - **图 4** Xlog lock less Design - ![](figures/Xlog-lock-less-Design.png "Xlog-lock-less-Design") - - 本特性对WalInsertLock进行优化,利用LSN(Log Sequence Number)及LRC(Log Record Count)记录了每个backend的拷贝进度,取消WalInsertLock机制。在backend将日志拷贝至WalBuffer时,不用对WalInsertLock进行争抢,可直接进行日志拷贝操作。并利用专用的WalWriter写日志线程,不需要backend线程自身来保证XLog的Flush。通过以上优化,取消WalInsertLock争抢及WalWriter专用磁盘写入线程,在保持原有XLog功能不变的基础上,可进一步提升系统性能。 - -- 并行Page回放 - - 本特性针对Ustore Inplace update WAL log写入、Ustore DML operation并行回放分发进行优化。通过利用Prefix和suffix来减少update WAL log的写入。通过把回放线程分多个类型来解决Ustore DML WAL大多都是多页面回放问题。同时把Ustore的数据页面回放按照blkno去分发,提高并行回放的并行程度。 - -- 企业级特性闪回 - - 闪回是数据库恢复技术的一环,能够使得DBA有选择性的高效撤销一个已提交事务的影响,将数据从人为的不正确的操作中进行恢复。在采用闪回技术之前,只能通过备份恢复、PITR等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。 - - 本特性支持四种闪回实现: - - - 闪回查询:可以查询过去某个时间点表的某个snapshot数据,这一特性可用于查看和逻辑重建意外删除或更改的受损数据。闪回查询基于MVCC多版本机制,通过检索查询旧版本,获取指定老版本数据。 - - 闪回表:可以将表恢复至特定时间点,当逻辑损坏仅限于一个或一组表,而不是整个数据库时,此特性可以快速恢复表的数据。闪回表基于MVCC多版本机制,通过删除指定时间点和该时间点之后的增量数据,并找回指定时间点和当前时间点删除的数据,实现表级数据还原。 - - 闪回drop:可以恢复意外删除的表,从回收站(recycle bin)中恢复被删除的表及其附属结构如索引、表约束等。闪回drop是基于回收站机制,通过还原回收站中记录的表的物理文件,实现已drop表的恢复。 - - 闪回truncate:可以恢复误操作或意外被进行truncate的表,从回收站中恢复被truncate的表及索引的物理数据。闪回truncate基于回收站机制,通过还原回收站中记录的表的物理文件,实现已truncate表的恢复。 - - -## 高可靠事务处理 - -openGauss提供事务管理功能,保证事务的ACID特性。 - -为了在主节点出现故障时尽可能地不中断服务,openGauss提供了主备双机高可靠机制。通过保护关键用户程序对外不间断提供服务,把硬件、软件和人为造成的故障对业务的影响程度降到最低,以保证业务的持续性。 - -**故障恢复** - -支持节点故障可恢复及恢复后满足ACID特性。节点故障、停止后重启等情况下,openGauss能够保证故障之前的数据无丢失,满足ACID特性。 - -**事务管理** - -- 支持事务块,用户可以通过start transaction命令显式启动一个事务块。 -- 支持单语句事务,用户不显式启动事务,则单条语句就是一个事务。 - -## 高并发&高性能 - -openGauss通过服务器端的线程池,可以支持1W并发连接。通过NUMA化内核数据结构,支持线程亲核性处理,可以支持百万级tpmC。通过页面的高效冷热淘汰,支持T级别大内存缓冲区管理。通过CSN快照,去除快照瓶颈,实现多版本访问,读写互不阻塞。通过增量检查点,避免全页写导致的性能波动,实现业务性能平稳运行。 - -## SQL自诊断 - -通过执行查询对应的explain performance,获得对应执行计划,是一种十分有效的定位查询性能问题的方法。但是这种方法需要修改业务逻辑,同时输出的日志量大,问题定位的效率依赖于人员的经验。SQL自诊断为用户提供了另一种更为高效易用的性能问题定位方法。 - -在执行作业之前,配置GUC参数resource\_track\_level和resource\_track\_cost,然后运行用户作业,就可以通过查看相关系统视图,获得执行完成的相关查询作业可能存在的性能问题。系统视图中会给出导致性能问题的可能原因,根据这些“性能告警”,参考《开发者指南》中“性能调优 \> SQL调优指南 \> 典型SQL调优点 \> SQL自诊断”章节,就可以对存在性能问题的作业进行调优。 - -SQL自诊断可以在不影响用户作业,不修改业务逻辑的情况下,诊断出相对准确的性能问题,为用户提供更为易用的性能调优参考。 - -## 全密态数据库等值查询 - -伴随着云基础设施的快速增长和成熟,与之对应的云数据库服务也层出不穷。云数据库俨然已成为数据库业务未来重要的增长点,绝大多数的传统数据库服务厂商正在加速提供更优质的云数据库服务。但无论是传统的线下数据库服务,还是日益增长的云数据库服务,数据库的核心任务都是帮助用户存储和管理数据,在复杂多样的环境下,保证数据不丢失、隐私不泄露、数据不被篡改,同时服务不中断。这就要求数据库具体多层次的安全防御机制,用来抵抗来自多方面的恶意攻击行为。通过成熟的安全技术手段,构建数据库多层级安全防御体系,保障数据库在应用中的安全。因此,为了更好的保护敏感和隐私数据,特别是针对云数据库服务,急需一种能在服务器端彻底解决数据全生命周期隐私保护的系统性解决方案,该方案被称为密态数据库解决方案。 - -- 密态数据库总体方案 - - 密态等值查询属于密态数据库第一阶段方案,但是遵从密态数据库总体架构。密态数据库的总体架构示意图如[图5](#zh-cn_topic_0231763017_fig141362033122319)所示。密态数据库的完整形态包括密码学方案和软硬结合方案。 - - **图 5** 密态数据库总体架构 - - - ![](figures/zh-cn_image_0000001208537371.png) - - 由于密态等值查询仅涉及到软件部分,仅需集成密态数据库总体架构的软件部分,其总体实现方案如[图6](#fig18836194875513)所示。 - - **图 6** 密态等值查询总体方案 - - - ![](figures/zh-cn_image_0000001208138827.png) - - 从总体流程上来看,数据在客户端完成加密,以密文形式发送到openGauss数据库服务侧,即需要在客户端构建加解密模块。加解密模块依赖密钥管理模块,密钥管理模块生成根密钥(RK, Root Key)和客户端主密钥(CMK,Client Master Key)。有了CMK,可以通过SQL语法定义列加密密钥(CEK,Column Encryption Key),CMK由RK加密后保存在密钥存储文件(KSF,Key Store File)中,CMK和RK由KeyTool统一管理;CEK则由CMK加密后存储在服务端\(加密算法使用对称加密算法AES256\)和国密算法SM2。 - - 客户端依据生成的CEK来对数据进行加密,数据加密算法主要使用对称加密算法AES算法(包括AES128和AES256)和国密算法SM4。加密后的数据会存放在数据库服务端,经过密文运算后服务端返回密文结果集,并在客户端完成最后的解密,获取最终结果。 - - 用户根据业务需要对数据定义加密属性信息(被加密的列被称之为加密列),对于不需要加密的数据则按照原有明文格式发送至服务端。当查询任务发起后,客户端需要对当前的Query进行解析,如果查询语句中涉及加密列,则对对应的列参数(加密列关联参数)也要进行加密(这里说的加密均需要为确定性加密,否则无法支持对应的查询);如果查询语句中不涉及加密列,则直接发送至服务端,无需额外的操作。 - - 在数据库服务侧,加密列的数据始终以密文形态存在,整个查询也在密文形态下实现。对于第一阶段密态等值查询解决方案,需要采用确定性加密,使得相同的明文数据获得相同的密文,从而支持等值计算。 - -- 密态数据库数据流图 - - **图 7** 密态数据库数据流图 - ![](figures/密态数据库数据流图.png "密态数据库数据流图") - - 从该数据流图中可以看出,密态数据库允许客户端对客户端应用程序内的敏感数据进行加密。在查询期间,整个业务数据流在数据处理过程中都是以密文形态存在。优势如下: - - - 保护数据在云上全生命周期的隐私安全; - - 通过将密钥掌握在用户自己手上,实现公有云、消费者云以及开发用户的用户信任问题; - - 让云数据库借助全密态能力更好的遵守个人隐私保护方面的法律法规。 - -- 使用场景 - - 混合云场景:数据库客户端和数据库服务端部均署于用户私有网络,客户端采用华为管控界面。 - - 公有云场景:数据库客户端在用户本地,数据库服务端在华为云。 - - 公有云服务:数据库客户端和数据库服务端均在华为云。 - - -## 内存表 - -内存表把数据全部缓存在内存中,所有数据访问实现免锁并发,实现数据处理的极致性能,满足实时性严苛要求场景。 - -## 支持多存储引擎 - -openGauss基于统一的事务机制、统一的日志系统、统一的并发控制系统、统一的元信息信息、统一缓存管理提供Table Access Method接口,支持不同的存储引擎。 - -目前支持Astore和Ustore存储引擎。 - -## 主备双机 - -主备双机支持同步和异步复制,应用可以根据业务场景选择合适的部署方式。同步复制保证数据的高可靠,一般需要一主两备部署,同时对性能有一定影响。异步复制一主一备部署即可,对性能影响小,但异常时可能存在数据丢失。openGauss支持页面损坏的自动修复,在主机页面发生损坏时,能够自动从备机修复损坏页面。openGauss支持备机并行日志恢复,尽量降低主机故障时业务不可用的时间。 - -同时,如果按照主备模式部署,并打开备机可读功能后,备机将能够提供读操作,但不支持写操作(如建表、插入数据、删除数据等),从而缓解主机上的压力。 - -## 具备AI能力 - -- 参数自动调优 - - 在数据库场景中,不同类型的作业任务对于数据库的最优参数数值组合存在偏差。为了获得更好的运行性能,用户希望快速将数据库的参数调整到最优状态。人工调参的学习成本高且不具有实时性和广泛可用。通过机器学习方法自动调整数据库参数,有助于提高调参效率,降低正确调参成本。 - - 参数自动调优:参数调优服务支持离线与在线两种服务形式,支持多种算法,包括强化学习、全局搜索算法等。 - - 当模型处于训练阶段中,根据输入的数据库参数数值(其中包括数据库当前参数数值以及数据库当前性能参数数值)通过强化学习和启发式算法得到新的参数数值组合,数据库的参数调整由强化学习和启发式算法两个组成部分的输出结果混合得到,将模型的输出经过反归一化得到新的参数数值,将新的数值植入数据库并运行测试作业得到当前数值组合下数据库的性能表现,如执行时长、吞吐量等指标。最后将表现作为反馈给学习模型,往复迭代。 - - 当模型处于调优阶段中,将当前数据库的参数数值作为输入,其中包括数据库当前参数数值以及数据库当前性能参数数值。通过模型得到当前情况下的所能得到的最优参数调整方案。 - - 当模型处于推荐模式下,会直接根据用户当前Workload的特征进行秒级参数推荐。 - - -- 慢SQL发现 - - 在实际生产环境中,用户通常希望作业能够以最快的方式执行成功。然而实际由于语句的复杂度不同,各个语句的执行时间并不相同。用户希望能在语句执行之前识别这些执行时间长的语句,将它们单独执行以免过长时间的锁影响其他语句的执行效果。与此同时,这种提前识别的功能又不能占用用户数据库本来的资源或影响数据库本来的响应时间。 - - 慢SQL诊断特性利用机器学习算法构建AI框架,对语句进行语义结构的解析,并以此为基础,定性或定量地预测未知语句的执行时间,满足用户提前识别慢SQL语句的要求。 - - 慢SQL诊断有两个主要阶段:训练阶段和预测阶段。 - - - 训练阶段:用户准备好自己的典型业务SQL历史记录,通过用户输入的日志地址导入历史SQL数据,训练智能模型。 - - 预测阶段:用户输入待预测负载,模型根据每类的历史信息预测执行时间,从而发现潜在慢SQL。 - - -- 索引推荐 - - 支持单Query索引推荐与Workload级别索引推荐。在进行Workload级别索引推荐时,先根据AI算法,筛选出具有代表性的SQL语句。然后针对代表性的SQL语句,基于语句的语义信息和数据库的统计信息,生成最优的推荐索引。将所有语句的推荐索引作为候选索引集合,然后计算每条候选索引对workload的收益,推荐出收益最大的索引组合方案。 - -- 时序预测与异常检测 - - 支持采集部署数据库宿主机上的特征信息,并将上述时序特征数据收集并存储起来。利用上述存储的数据进行时序预测,例如存储空间预测等。还支持根据上述数据进行潜在异常问题的发现,能够先知先觉地发现可能出现的问题,并作出提前部署。 - -- 支持DB4AI功能 - - 兼容MADlib生态,支持70+算法,性能比原生MADlib有数倍提升,支持XGBoost、GBDT等高级算法。利用数据库实现SQL语句驱动AI任务。 - -- SQL执行时间预测 - - 在查询性能调优、业务负载分析等场景,用户经常需要对SQL的执行时间进行预测,目前数据库优化器主要基于代价模型,无法准确预测执行时间。该特性通过AI模型,能够对历史执行过的查询或相似查询进行时间预测,满足SQL执行时间预测要求。 - - SQL执行时间预测:根据收集的历史性能数据进行编码和基于深度学习的训练及预测。 - - 历史数据收集由数据库内核进程完成,内核进程通过curl向python端AI引擎发送https请求来(1)配置机器学习模型、(2)发送训练数据、(3)触发模型训练、(4)请求训练过程监测服务端口、(5)加载用于训练的模型、(6)使用加载好的模型进行预测。数据的编码阶段在数据库中完成,保证出库数据已脱敏。模型的预测阶段需要在查询计划生成后对整个计划进行编码并写文件发给python端,python端tensorflow计算图只需要加载一次,可以进行高度并行化的批量预测。 - - -- 数据库监控 - - 在日常运维过程中,用户需要持续对数据库运行状态进行监控,但是数据库内部的复杂性导致用户难以高效的提取关键数据。实现数据库自监控能够提升用户运维效率,用户只需要关心核心指标和异常数据。 - - 1. 事务概要信息包括提交(commit\_counter)和回滚(rollback\_counter)的事务数,事务响应时间。提交和回滚的事务数、事务的响应时间都是自上次重启后的累计值。 - 2. Workload SQL 概要信息包括一个workload内DDL、DCL、DML分布,还包含DML类型中SELECT、UPDATE、INSERT、DELETE的个数。SQL类型分布是自上次重启后的累计值。 - 3. Workload SUID时间概要信息包括一个workload内Select、Update、Insert、Delete的耗时(累计、平均、最大、最小)。 - 4. SQL response time percentile概要信息包括过去一段时间系统中80%和95%的SQL响应时间。 - 5. Waitevents概要信息只包括单独节点上的事件等待信息,不包含全局汇聚信息。主要包括等待状态STATUS、IO事件IO\_EVENT、Lock事件LOCK\_EVENT、Lwlock事件LWLOCK\_EVENT的成功等待次数、失败等待次数、事件在节点上等待的总时间、事件最小等待时间、事件最大等待时间、事件平均等待时间。 - 6. 对于进入到Parser的SQL,生成归一化的Unique SQL ID以及相应的SQL文本串。统计Unique SQL在各个执行阶段的时间消耗,从而依据时间分布进行SQL性能分析和调优;统计实例、会话在各个阶段的时间消耗,辅助系统整体性能调优。查询SQL执行次数 、SQL内核响应时间、IO时间、CPU时间、网络传输时间等 ,物理、逻辑读 ,Select返回结果集数量、扫描元组数量、更新行、删除行、插入行等 ,新生成(硬)复用(软)计划次数。 - - -## 逻辑日志复制 - -在逻辑复制中把主库称为源端库,备库称为目标端数据库,源端数据库根据预先指定好的逻辑解析规则对WAL文件进行解析,把DML操作解析成一定的逻辑变化信息(标准SQL语句),源端数据库把标准SQL语句发给目标端数据库,目标端数据库收到后进行应用,从而实现数据同步。逻辑复制只有DML操作。逻辑复制可以实现跨版本复制、异构数据库复制、双写数据库复制、表级别复制。 - -## 支持WDR自动性能分析报告 - -定时主动分析run日志和WDR报告(自动后台生成,可由关键指标阈值如CPU占用率、内存占用率、长SQL比例等触发),并生成html、pdf等格式的报告。能自动生成性能报告。WDR\(Workload Diagnosis Report\)基于两次不同时间点系统的性能快照数据, 生成这两个时间点之间的性能表现报表,用于诊断数据库内核的性能故障。 - -WDR主要有两个组件: - -- SNAPSHOT性能快照:性能快照可以配置成按一定时间间隔从内核采集一定量的性能数据,持久化在用户表空间。任何一个SNAPSHOT可以作为一个性能基线,其他SNAPSHOT与之比较的结果,可以分析出与基线的性能表现。 -- WDR Reporter:报表生成工具基于两个SNAPSHOT,分析系统总体性能表现,并能计算出更多项具体的性能指标在这两个时间段之间的变化量,生成SUMMARY 和DETAIL两个不同级别的性能数据。 - -## 增量备份/恢复(beta) - -支持对数据库进行全量备份和增量备份,支持对备份数据进行管理、查看备份状态。支持增量备份的合并、过期备份的删除。数据库服务器动态跟踪页面更改,每当一个关系页被更新时,这个页就会被标记为需要备份。增量备份功能需要打开GUC参数 enable\_cbm\_tracking,以便允许服务器跟踪修改页。 - -## 恢复到指定时间点(PITR) - -时间点恢复\(Point In Time Recovery\)基本原理是通过基础热备 + WAL预写日志 + WAL归档日志进行备份恢复。重放WAL记录的时候可以在任意点停止重放,这样就有一个在任意时间的数据库一致的快照。即可以把数据库恢复到自开始备份以来的任意时刻的状态。在恢复时可以指定恢复的停止点位置为TID、时间和LSN。 - -## 生成列 - -生成列是指由表中其他字段计算得到的列。生成列是一个SQL标准特性,SQL 生成列在插入或者更新数据时自动计算,像普通列一样需要占用存储空间。 - -## hash索引 - -openGauss支持HASH索引,长索引列等值查询场景下性能优于BTREE;优化锁管理提供更高的并发度;提供XLOG日志防护,保障数据不丢失。 - -## 支持国密算法 - -用户认证方式(gsql、JDBC、ODBC)支持国密SM3算法;提供国密SM4算法接口,用于对数据进行加解密,增强数据库的安全能力。 - -## 插件化架构 - -通过对SQL引擎中语法、语义的解耦,实现openGauss的语法、语义层插件化,实现异构数据库语法模块与openGauss内核的解耦;支持算子插件化,实现特定算子从计划创建、优化到执行的插件化。 - -## 其他 - -- upsert支持子查询 - - 支持在upsert的更新语句之中使用子查询表达式进行赋值,且子查询表达式中支持通过excluded进行冲突行的引用。 - -- 列存表支持唯一索引 - - 支持在列存表上创建基于cbtree的唯一索引、创建主键唯一键约束,防止表中出现重复数据,扩展了列存表使用场景。 - -- 支持jsonb数据类型 - - 支持jsonb数据类型用来高效的操作JSON数据,支持对于json、jsonb的各种丰富的操作符、操作函数,支持在jsonb上创建索引,满足广泛的JSON使用与搜索场景。 - -- UCE故障感知与响应 - - 通过感知内存UCE错误产生时系统发出的SIGBUS信号,并根据所携带的物理地址,实现对应日志打印与openGauss数据库状态变化,进入对应的数据库进程退出流程。 - -- 支持unique sql语句监控自动淘汰 - - openGauss支持unique SQL自动淘汰,使用LRU算法依据uniqueSQL的更新时间自动淘汰旧的uniqueSQL信息,保障最新的统计信息能够持续记录,提高数据库的易运维性。 - - -- 支持gs\_cgroup负载管理 - - gs\_cgroup 负载管理工具,通过在数据库内核创建与管理控制组,设置系统资源配额和资源限额,来管理用户与业务对资源的使用率与优先级,充分高效的利用机器资源。 - - +# 企业级增强特性 + +## 数据分区 + +数据分区是数据库产品普遍具备的功能。在 openGauss 中,数据分区是对数据按照用户指定的策略对数据做的水平分表,将表按照指定范围划分为多个数据互不重叠的部分(Partition)。 + +openGauss 支持: + +- 范围分区(Range Partitioning)功能,即根据表的一列或者多列,将要插入表的记录分为若干个范围(这些范围在不同的分区里没有重叠),然后为每个范围创建一个分区,用来存储相应的数据。 +- 列表分区(List Partitioning)功能,即根据表的一列,将要插入表的记录中出现的键值分为若干个列表(这些列表在不同的分区里没有重叠),然后为每个列表创建一个分区,用来存储相应的数据。 +- 哈希分区(Hash Partitioning)功能,即根据表的一列,通过内部哈希算法将要插入表的记录划分到对应的分区中。用户在 CREATE TABLE 时增加 PARTITION 参数,即表示针对此表应用数据分区功能。 + +例如,[表1](#zh-cn_topic_0283136537_zh-cn_topic_0237080621_zh-cn_topic_0231764089_zh-cn_topic_0059777656_t77b9e09809f742f1aaadea05d041bc23)描述了一个xDR(详单)场景下,基于时间分片的方式分区后带来的收益。 + +**表 1** 分区收益 + + + + + + + + + + + + + + + + +

场景描述

+

收益

+

当表中访问率较高的行位于一个单独分区或少数几个分区时。

+

大幅减少搜索空间,从而提升访问性能。

+

当需要查询或更新一个分区的大部分记录时。

+

仅需要连续扫描对应分区,而非扫描整个表,因此可大幅提升性能。

+

当需要大量加载或者删除的记录位于一个单独分区或少数几个分区时。

+

可直接读取或删除对应分区,从而提升处理性能;同时避免了大量零散的删除操作,可减少清理碎片工作量。

+
+ +数据分区带来的好处在于: + +- **改善可管理性:**利用分区,可以将表和索引划分为一些更小、更易管理的单元。这样,数据库管理员在进行数据管理时就能采取“分而治之”的方法。 有了分区,维护操作可以专门针对表的特定部分执行。 +- **可提升删除操作的性能:**删除数据时可以删除整个分区,与分别删除每行相比,这种操作非常高效和快速。 + + 删除分区表与删除普通表的语法一致,都是通过 DROP TABLE 语法进行删除。 + +- **改善查询性能:**通过限制要检查或操作的数据数量,分区可带来许多性能优势。 + + 分区剪枝:分区剪枝(也称为分区消除)是 openGauss 在执行时过滤掉不需要扫描的分区,只对相关的分区进行扫描的技术。分区剪枝通常可以将查询性能提高若干数量级。 + +- **智能化分区联接:**通过使用一种称为智能化分区联接的技术,分区还可以改善多表联接的性能。当将两个表联接在一起,并且至少其中一个表使用联接键进行分区时,可以应用智能化分区联接。智能化分区联接将一个大型联接分为多个较小的联接,这些较小的联接包含与联接的表“相同”的数据集。这里,“相同”定义为恰好包含联接的两端中相同的分区键值集,因此可以确保只有这些“相同”数据集的联接才会有效,而不必考虑其他数据集,目前不支持列表分区和哈希分区。 + +## 向量化执行和行列混合引擎 + +在大宽表、数据量比较大、查询经常关注某些列的场景中,行存储引擎查询性能比较差。例如气象局的场景,单表有200\~800个列,查询经常访问 10 个列,在类似这样的场景下,向量化执行技术和列存储引擎可以极大的提升性能和减少存储空间。 + +- 向量化执行 + + 标准的迭代器模型如[图1](#zh-cn_topic_0283136537_zh-cn_topic_0237080624_zh-cn_topic_0231764690_zh-cn_topic_0059777898_f9d90aebe179a40759039d0263492489d)所示。控制流向下(下图实线)、数据流向上(下图虚线)、上层驱动下层(上层节点调用下层节点要数据)、一次一元组(下层节点每次只返回一条元组给上层节点)。 + + 而向量化执行相对于传统的执行模式改变是对于一次一元组的模型修改为一次一批元组,配合列存特性,可以带来巨大的性能提升。 + + **图 1** 向量化执行引擎 + + + ![](figures/向量化执行引擎(png).png) + +- 行列混合存储引擎 + +openGauss 支持行存储和列存储两种存储模型,用户可以根据应用场景,建表的时候选择行存储还是列存储表。 + + 一般情况下, OLAP 类业务场景(范围统计类查询和批量导入操作频繁,更新、删除、点查和点插操作不频繁,表的字段比较多,即大宽表,查询中涉及到的列不是很多)下,适合列存储, OLTP 类业务场景(点查、点插、删除、更新频繁,范围统计类查询和批量导入操作不频繁,表的字段个数比较少,查询大部分字段)下,适合行存储。 + + 如[图2](#zh-cn_topic_0283136537_zh-cn_topic_0237080624_zh-cn_topic_0231764690_zh-cn_topic_0059777898_fbb2af39ce12a419cb437829aaf1cf4fb)所示,行列混合存储引擎可以同时为用户提供更优的数据压缩比(列存)、更好的索引性能(列存)、更好的点更新和点查询(行存)性能。 + + **图 2** 行列混存引擎 + + + ![](figures/openGauss行列混存引擎.png) + + 当前列存储引擎有以下约束: + + - DDL仅支持CREATE/DROP/TRUNCATE TABLE的功能。 + + 兼容分区的 DDL 管理功能(如:ADD/DROP/MERGE PARTITION, EXCHANGE 功能)。 + + 支持 CREATE TABLE LIKE 语法。 + + 支持 ALTER TABLE 的部分语法。 + + 其他功能都不支持。 + + - DML支持UPDATE/COPY/BULKLOAD/DELETE。 + - 不支持触发器,不支持主外键。 + - 支持Psort index、B-tree index和 GIN index ,具体约束参见《开发者指南》中“SQL参考 \> SQL语法 \> CREATE INDEX”章节。 + +- 列存下的数据压缩 + + 对于非活跃的早期数据可以通过压缩来减少空间占用,降低采购和运维成本。 + +openGauss 列存储压缩支持Delta Value Encoding、Dictionary、RLE 、LZ4、ZLIB等压缩算法,且能够根据数据特征自适应地选择压缩算法,平均压缩比7:1。压缩数据可直接访问,对业务透明,极大缩短历史数据访问的准备时间。 + + +## 融合存储引擎 + +融合引擎架构支持了可插拔存储引擎的架构,新增了In-place update存储引擎,索引多版本为索引增加了事务信息, Xlog 无锁刷新极大提升了 Xlog 写入效率,并行 Page 回放提升了备机回放效率,企业级特性闪回为用户提供了一个稳定的查询状态。 + +- In-place update存储引擎 + + 新增的In-place update存储引擎很好的解决了 Append update 存储引擎空间膨胀和元组较大的问题,高效回滚段的设计是In-place update存储引擎的基础。 + +- 索引多版本 + + **图 3** UBTree与 BTree 查找、更新比较示意图 + ![](figures/UBTree与 BTree 查找-更新比较示意图.png "UBTree与 BTree 查找-更新比较示意图") + + 通过在索引页面元组上维护版本信息, UBtree 能够在索引层进行 MVCC 可见性检查。同时 UBtree 也能通过版本信息独立判断索引元组是否已经无效(Dead),进而使得 in-place update引擎能实现数据表以及索引表上页级的空间清理,并在此基础上构建不依赖 AutoVacuum 的独立垃圾回收机制。 + + +- Xlog无锁刷新 + + **图 4** Xlog lock less Design + ![](figures/Xlog-lock-less-Design.png "Xlog-lock-less-Design") + + 本特性对 WalInsertLock 进行优化,利用LSN(Log Sequence Number)及LRC(Log Record Count)记录了每个 backend 的拷贝进度,取消 WalInsertLock 机制。在 backend 将日志拷贝至 WalBuffer 时,不用对 WalInsertLock 进行争抢,可直接进行日志拷贝操作。并利用专用的 WalWriter 写日志线程,不需要 backend 线程自身来保证 XLog 的 Flush 。通过以上优化,取消 WalInsertLock 争抢及 WalWriter 专用磁盘写入线程,在保持原有 XLog 功能不变的基础上,可进一步提升系统性能。 + +- 并行 Page 回放 + + 本特性针对 Ustore Inplace update WAL log 写入、Ustore DML operation并行回放分发进行优化。通过利用 Prefix 和 suffix 来减少 update WAL log 的写入。通过把回放线程分多个类型来解决 Ustore DML WAL 大多都是多页面回放问题。同时把 Ustore 的数据页面回放按照 blkno 去分发,提高并行回放的并行程度。 + +- 企业级特性闪回 + + 闪回是数据库恢复技术的一环,能够使得 DBA 有选择性的高效撤销一个已提交事务的影响,将数据从人为的不正确的操作中进行恢复。在采用闪回技术之前,只能通过备份恢复、PITR等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。 + + 本特性支持四种闪回实现: + + - 闪回查询:可以查询过去某个时间点表的某个 snapshot 数据,这一特性可用于查看和逻辑重建意外删除或更改的受损数据。闪回查询基于 MVCC 多版本机制,通过检索查询旧版本,获取指定老版本数据。 + - 闪回表:可以将表恢复至特定时间点,当逻辑损坏仅限于一个或一组表,而不是整个数据库时,此特性可以快速恢复表的数据。闪回表基于 MVCC 多版本机制,通过删除指定时间点和该时间点之后的增量数据,并找回指定时间点和当前时间点删除的数据,实现表级数据还原。 + - 闪回drop:可以恢复意外删除的表,从回收站(recycle bin)中恢复被删除的表及其附属结构如索引、表约束等。闪回 drop 是基于回收站机制,通过还原回收站中记录的表的物理文件,实现已 drop 表的恢复。 + - 闪回truncate:可以恢复误操作或意外被进行 truncate 的表,从回收站中恢复被 truncate 的表及索引的物理数据。闪回 truncate 基于回收站机制,通过还原回收站中记录的表的物理文件,实现已 truncate 表的恢复。 + + +## 高可靠事务处理 + +openGauss 提供事务管理功能,保证事务的 ACID 特性。 + +为了在主节点出现故障时尽可能地不中断服务, openGauss 提供了主备双机高可靠机制。通过保护关键用户程序对外不间断提供服务,把硬件、软件和人为造成的故障对业务的影响程度降到最低,以保证业务的持续性。 + +**故障恢复** + +支持节点故障可恢复及恢复后满足 ACID 特性。节点故障、停止后重启等情况下, openGauss 能够保证故障之前的数据无丢失,满足 ACID 特性。 + +**事务管理** + +- 支持事务块,用户可以通过 start transaction 命令显式启动一个事务块。 +- 支持单语句事务,用户不显式启动事务,则单条语句就是一个事务。 + +## 高并发&高性能 + +openGauss 通过服务器端的线程池,可以支持 1W 并发连接。通过 NUMA 化内核数据结构,支持线程亲核性处理,可以支持百万级 tpmC 。通过页面的高效冷热淘汰,支持 T 级别大内存缓冲区管理。通过 CSN 快照,去除快照瓶颈,实现多版本访问,读写互不阻塞。通过增量检查点,避免全页写导致的性能波动,实现业务性能平稳运行。 + +## SQL自诊断 + +通过执行查询对应的 explain performance ,获得对应执行计划,是一种十分有效的定位查询性能问题的方法。但是这种方法需要修改业务逻辑,同时输出的日志量大,问题定位的效率依赖于人员的经验。 SQL 自诊断为用户提供了另一种更为高效易用的性能问题定位方法。 + +在执行作业之前,配置 GUC 参数resource\_track\_level和resource\_track\_cost,然后运行用户作业,就可以通过查看相关系统视图,获得执行完成的相关查询作业可能存在的性能问题。系统视图中会给出导致性能问题的可能原因,根据这些“性能告警”,参考《开发者指南》中“性能调优 \> SQL调优指南 \> 典型 SQL 调优点 \> SQL自诊断”章节,就可以对存在性能问题的作业进行调优。 + +SQL 自诊断可以在不影响用户作业,不修改业务逻辑的情况下,诊断出相对准确的性能问题,为用户提供更为易用的性能调优参考。 + +## 全密态数据库等值查询 + +伴随着云基础设施的快速增长和成熟,与之对应的云数据库服务也层出不穷。云数据库俨然已成为数据库业务未来重要的增长点,绝大多数的传统数据库服务厂商正在加速提供更优质的云数据库服务。但无论是传统的线下数据库服务,还是日益增长的云数据库服务,数据库的核心任务都是帮助用户存储和管理数据,在复杂多样的环境下,保证数据不丢失、隐私不泄露、数据不被篡改,同时服务不中断。这就要求数据库具体多层次的安全防御机制,用来抵抗来自多方面的恶意攻击行为。通过成熟的安全技术手段,构建数据库多层级安全防御体系,保障数据库在应用中的安全。因此,为了更好的保护敏感和隐私数据,特别是针对云数据库服务,急需一种能在服务器端彻底解决数据全生命周期隐私保护的系统性解决方案,该方案被称为密态数据库解决方案。 + +- 密态数据库总体方案 + + 密态等值查询属于密态数据库第一阶段方案,但是遵从密态数据库总体架构。密态数据库的总体架构示意图如[图5](#zh-cn_topic_0231763017_fig141362033122319)所示。密态数据库的完整形态包括密码学方案和软硬结合方案。 + + **图 5** 密态数据库总体架构 + + + ![](figures/zh-cn_image_0000001208537371.png) + + 由于密态等值查询仅涉及到软件部分,仅需集成密态数据库总体架构的软件部分,其总体实现方案如[图6](#fig18836194875513)所示。 + + **图 6** 密态等值查询总体方案 + + + ![](figures/zh-cn_image_0000001208138827.png) + + 从总体流程上来看,数据在客户端完成加密,以密文形式发送到 openGauss 数据库服务侧,即需要在客户端构建加解密模块。加解密模块依赖密钥管理模块,密钥管理模块生成根密钥(RK, Root Key)和客户端主密钥(CMK,Client Master Key)。有了 CMK ,可以通过 SQL 语法定义列加密密钥(CEK,Column Encryption Key), CMK 由 RK 加密后保存在密钥存储文件(KSF,Key Store File)中, CMK 和 RK 由 KeyTool 统一管理;CEK则由 CMK 加密后存储在服务端\(加密算法使用对称加密算法AES256\)和国密算法 SM2 。 + + 客户端依据生成的 CEK 来对数据进行加密,数据加密算法主要使用对称加密算法 AES 算法(包括 AES128 和AES256)和国密算法 SM4 。加密后的数据会存放在数据库服务端,经过密文运算后服务端返回密文结果集,并在客户端完成最后的解密,获取最终结果。 + + 用户根据业务需要对数据定义加密属性信息(被加密的列被称之为加密列),对于不需要加密的数据则按照原有明文格式发送至服务端。当查询任务发起后,客户端需要对当前的 Query 进行解析,如果查询语句中涉及加密列,则对对应的列参数(加密列关联参数)也要进行加密(这里说的加密均需要为确定性加密,否则无法支持对应的查询);如果查询语句中不涉及加密列,则直接发送至服务端,无需额外的操作。 + + 在数据库服务侧,加密列的数据始终以密文形态存在,整个查询也在密文形态下实现。对于第一阶段密态等值查询解决方案,需要采用确定性加密,使得相同的明文数据获得相同的密文,从而支持等值计算。 + +- 密态数据库数据流图 + + **图 7** 密态数据库数据流图 + ![](figures/密态数据库数据流图.png "密态数据库数据流图") + + 从该数据流图中可以看出,密态数据库允许客户端对客户端应用程序内的敏感数据进行加密。在查询期间,整个业务数据流在数据处理过程中都是以密文形态存在。优势如下: + + - 保护数据在云上全生命周期的隐私安全; + - 通过将密钥掌握在用户自己手上,实现公有云、消费者云以及开发用户的用户信任问题; + - 让云数据库借助全密态能力更好的遵守个人隐私保护方面的法律法规。 + +- 使用场景 + + 混合云场景:数据库客户端和数据库服务端部均署于用户私有网络,客户端采用华为管控界面。 + + 公有云场景:数据库客户端在用户本地,数据库服务端在华为云。 + + 公有云服务:数据库客户端和数据库服务端均在华为云。 + + +## 内存表 + +内存表把数据全部缓存在内存中,所有数据访问实现免锁并发,实现数据处理的极致性能,满足实时性严苛要求场景。 + +## 支持多存储引擎 + +openGauss 基于统一的事务机制、统一的日志系统、统一的并发控制系统、统一的元信息信息、统一缓存管理提供 Table Access Method 接口,支持不同的存储引擎。 + +目前支持 Astore 和 Ustore 存储引擎。 + +## 主备双机 + +主备双机支持同步和异步复制,应用可以根据业务场景选择合适的部署方式。同步复制保证数据的高可靠,一般需要一主两备部署,同时对性能有一定影响。异步复制一主一备部署即可,对性能影响小,但异常时可能存在数据丢失。 openGauss 支持页面损坏的自动修复,在主机页面发生损坏时,能够自动从备机修复损坏页面。 openGauss 支持备机并行日志恢复,尽量降低主机故障时业务不可用的时间。 + +同时,如果按照主备模式部署,并打开备机可读功能后,备机将能够提供读操作,但不支持写操作(如建表、插入数据、删除数据等),从而缓解主机上的压力。 + +## 具备 AI 能力 + +- 参数自动调优 + + 在数据库场景中,不同类型的作业任务对于数据库的最优参数数值组合存在偏差。为了获得更好的运行性能,用户希望快速将数据库的参数调整到最优状态。人工调参的学习成本高且不具有实时性和广泛可用。通过机器学习方法自动调整数据库参数,有助于提高调参效率,降低正确调参成本。 + + 参数自动调优:参数调优服务支持离线与在线两种服务形式,支持多种算法,包括强化学习、全局搜索算法等。 + + 当模型处于训练阶段中,根据输入的数据库参数数值(其中包括数据库当前参数数值以及数据库当前性能参数数值)通过强化学习和启发式算法得到新的参数数值组合,数据库的参数调整由强化学习和启发式算法两个组成部分的输出结果混合得到,将模型的输出经过反归一化得到新的参数数值,将新的数值植入数据库并运行测试作业得到当前数值组合下数据库的性能表现,如执行时长、吞吐量等指标。最后将表现作为反馈给学习模型,往复迭代。 + + 当模型处于调优阶段中,将当前数据库的参数数值作为输入,其中包括数据库当前参数数值以及数据库当前性能参数数值。通过模型得到当前情况下的所能得到的最优参数调整方案。 + + 当模型处于推荐模式下,会直接根据用户当前 Workload 的特征进行秒级参数推荐。 + + +- 慢 SQL 发现 + + 在实际生产环境中,用户通常希望作业能够以最快的方式执行成功。然而实际由于语句的复杂度不同,各个语句的执行时间并不相同。用户希望能在语句执行之前识别这些执行时间长的语句,将它们单独执行以免过长时间的锁影响其他语句的执行效果。与此同时,这种提前识别的功能又不能占用用户数据库本来的资源或影响数据库本来的响应时间。 + + 慢 SQL 诊断特性利用机器学习算法构建 AI 框架,对语句进行语义结构的解析,并以此为基础,定性或定量地预测未知语句的执行时间,满足用户提前识别慢 SQL 语句的要求。 + + 慢 SQL 诊断有两个主要阶段:训练阶段和预测阶段。 + + - 训练阶段:用户准备好自己的典型业务 SQL 历史记录,通过用户输入的日志地址导入历史 SQL 数据,训练智能模型。 + - 预测阶段:用户输入待预测负载,模型根据每类的历史信息预测执行时间,从而发现潜在慢 SQL 。 + + +- 索引推荐 + + 支持单 Query 索引推荐与 Workload 级别索引推荐。在进行 Workload 级别索引推荐时,先根据 AI 算法,筛选出具有代表性的 SQL 语句。然后针对代表性的 SQL 语句,基于语句的语义信息和数据库的统计信息,生成最优的推荐索引。将所有语句的推荐索引作为候选索引集合,然后计算每条候选索引对 workload 的收益,推荐出收益最大的索引组合方案。 + +- 时序预测与异常检测 + + 支持采集部署数据库宿主机上的特征信息,并将上述时序特征数据收集并存储起来。利用上述存储的数据进行时序预测,例如存储空间预测等。还支持根据上述数据进行潜在异常问题的发现,能够先知先觉地发现可能出现的问题,并作出提前部署。 + +- 支持 DB4AI 功能 + + 兼容 MADlib 生态,支持70+算法,性能比原生 MADlib 有数倍提升,支持XGBoost、GBDT等高级算法。利用数据库实现 SQL 语句驱动 AI 任务。 + +- SQL执行时间预测 + + 在查询性能调优、业务负载分析等场景,用户经常需要对 SQL 的执行时间进行预测,目前数据库优化器主要基于代价模型,无法准确预测执行时间。该特性通过 AI 模型,能够对历史执行过的查询或相似查询进行时间预测,满足 SQL 执行时间预测要求。 + +SQL 执行时间预测:根据收集的历史性能数据进行编码和基于深度学习的训练及预测。 + + 历史数据收集由数据库内核进程完成,内核进程通过 curl 向 python 端 AI 引擎发送 https 请求来(1)配置机器学习模型、(2)发送训练数据、(3)触发模型训练、(4)请求训练过程监测服务端口、(5)加载用于训练的模型、(6)使用加载好的模型进行预测。数据的编码阶段在数据库中完成,保证出库数据已脱敏。模型的预测阶段需要在查询计划生成后对整个计划进行编码并写文件发给 python 端, python 端 tensorflow 计算图只需要加载一次,可以进行高度并行化的批量预测。 + + +- 数据库监控 + + 在日常运维过程中,用户需要持续对数据库运行状态进行监控,但是数据库内部的复杂性导致用户难以高效的提取关键数据。实现数据库自监控能够提升用户运维效率,用户只需要关心核心指标和异常数据。 + + 1. 事务概要信息包括提交(commit\_counter)和回滚(rollback\_counter)的事务数,事务响应时间。提交和回滚的事务数、事务的响应时间都是自上次重启后的累计值。 + 2. Workload SQL 概要信息包括一个 workload 内DDL、DCL、DML分布,还包含 DML 类型中SELECT、UPDATE、INSERT、DELETE的个数。 SQL 类型分布是自上次重启后的累计值。 + 3. Workload SUID时间概要信息包括一个 workload 内Select、Update、Insert、Delete的耗时(累计、平均、最大、最小)。 + 4. SQL response time percentile概要信息包括过去一段时间系统中80%和95%的 SQL 响应时间。 + 5. Waitevents概要信息只包括单独节点上的事件等待信息,不包含全局汇聚信息。主要包括等待状态STATUS、IO事件IO\_EVENT、Lock事件LOCK\_EVENT、Lwlock事件LWLOCK\_EVENT的成功等待次数、失败等待次数、事件在节点上等待的总时间、事件最小等待时间、事件最大等待时间、事件平均等待时间。 + 6. 对于进入到 Parser 的 SQL ,生成归一化的 Unique SQL ID 以及相应的 SQL 文本串。统计 Unique SQL 在各个执行阶段的时间消耗,从而依据时间分布进行 SQL 性能分析和调优;统计实例、会话在各个阶段的时间消耗,辅助系统整体性能调优。查询 SQL 执行次数 、SQL内核响应时间、IO时间、CPU时间、网络传输时间等 ,物理、逻辑读 , Select 返回结果集数量、扫描元组数量、更新行、删除行、插入行等 ,新生成(硬)复用(软)计划次数。 + + +## 逻辑日志复制 + +在逻辑复制中把主库称为源端库,备库称为目标端数据库,源端数据库根据预先指定好的逻辑解析规则对 WAL 文件进行解析,把 DML 操作解析成一定的逻辑变化信息(标准 SQL 语句),源端数据库把标准 SQL 语句发给目标端数据库,目标端数据库收到后进行应用,从而实现数据同步。逻辑复制只有 DML 操作。逻辑复制可以实现跨版本复制、异构数据库复制、双写数据库复制、表级别复制。 + +## 支持 WDR 自动性能分析报告 + +定时主动分析 run 日志和 WDR 报告(自动后台生成,可由关键指标阈值如 CPU 占用率、内存占用率、长 SQL 比例等触发),并生成html、pdf等格式的报告。能自动生成性能报告。WDR\(Workload Diagnosis Report\)基于两次不同时间点系统的性能快照数据, 生成这两个时间点之间的性能表现报表,用于诊断数据库内核的性能故障。 + +WDR 主要有两个组件: + +- SNAPSHOT性能快照:性能快照可以配置成按一定时间间隔从内核采集一定量的性能数据,持久化在用户表空间。任何一个 SNAPSHOT 可以作为一个性能基线,其他 SNAPSHOT 与之比较的结果,可以分析出与基线的性能表现。 +- WDR Reporter:报表生成工具基于两个 SNAPSHOT ,分析系统总体性能表现,并能计算出更多项具体的性能指标在这两个时间段之间的变化量,生成 SUMMARY 和 DETAIL 两个不同级别的性能数据。 + +## 增量备份/恢复(beta) + +支持对数据库进行全量备份和增量备份,支持对备份数据进行管理、查看备份状态。支持增量备份的合并、过期备份的删除。数据库服务器动态跟踪页面更改,每当一个关系页被更新时,这个页就会被标记为需要备份。增量备份功能需要打开 GUC 参数 enable\_cbm\_tracking,以便允许服务器跟踪修改页。 + +## 恢复到指定时间点(PITR) + +时间点恢复\(Point In Time Recovery\)基本原理是通过基础热备 + WAL预写日志 + WAL归档日志进行备份恢复。重放 WAL 记录的时候可以在任意点停止重放,这样就有一个在任意时间的数据库一致的快照。即可以把数据库恢复到自开始备份以来的任意时刻的状态。在恢复时可以指定恢复的停止点位置为TID、时间和 LSN 。 + +## 生成列 + +生成列是指由表中其他字段计算得到的列。生成列是一个 SQL 标准特性, SQL 生成列在插入或者更新数据时自动计算,像普通列一样需要占用存储空间。 + +## hash索引 + +openGauss 支持 HASH 索引,长索引列等值查询场景下性能优于BTREE;优化锁管理提供更高的并发度;提供 XLOG 日志防护,保障数据不丢失。 + +## 支持国密算法 + +用户认证方式(gsql、JDBC、ODBC)支持国密 SM3 算法;提供国密 SM4 算法接口,用于对数据进行加解密,增强数据库的安全能力。 + +## 插件化架构 + +通过对 SQL 引擎中语法、语义的解耦,实现 openGauss 的语法、语义层插件化,实现异构数据库语法模块与 openGauss 内核的解耦;支持算子插件化,实现特定算子从计划创建、优化到执行的插件化。 + +## 其他 + +- upsert支持子查询 + + 支持在 upsert 的更新语句之中使用子查询表达式进行赋值,且子查询表达式中支持通过 excluded 进行冲突行的引用。 + +- 列存表支持唯一索引 + + 支持在列存表上创建基于 cbtree 的唯一索引、创建主键唯一键约束,防止表中出现重复数据,扩展了列存表使用场景。 + +- 支持 jsonb 数据类型 + + 支持 jsonb 数据类型用来高效的操作 JSON 数据,支持对于json、jsonb的各种丰富的操作符、操作函数,支持在 jsonb 上创建索引,满足广泛的 JSON 使用与搜索场景。 + +- UCE故障感知与响应 + + 通过感知内存 UCE 错误产生时系统发出的 SIGBUS 信号,并根据所携带的物理地址,实现对应日志打印与 openGauss 数据库状态变化,进入对应的数据库进程退出流程。 + +- 支持 unique sql 语句监控自动淘汰 + +openGauss 支持 unique SQL 自动淘汰,使用 LRU 算法依据 uniqueSQL 的更新时间自动淘汰旧的 uniqueSQL 信息,保障最新的统计信息能够持续记录,提高数据库的易运维性。 + + +- 支持gs\_cgroup负载管理 + + gs\_cgroup 负载管理工具,通过在数据库内核创建与管理控制组,设置系统资源配额和资源限额,来管理用户与业务对资源的使用率与优先级,充分高效的利用机器资源。 + + diff --git "a/content/zh/docs/Description/\345\237\272\346\234\254\345\212\237\350\203\275\345\222\214\347\211\271\346\200\247.md" "b/content/zh/docs/Description/\345\237\272\346\234\254\345\212\237\350\203\275\345\222\214\347\211\271\346\200\247.md" index 3c941a648..0a3d0cd90 100644 --- "a/content/zh/docs/Description/\345\237\272\346\234\254\345\212\237\350\203\275\345\222\214\347\211\271\346\200\247.md" +++ "b/content/zh/docs/Description/\345\237\272\346\234\254\345\212\237\350\203\275\345\222\214\347\211\271\346\200\247.md" @@ -1,33 +1,33 @@ -# 基本功能和特性 - -## 背景信息 - -openGauss是一个单机数据库,具备关系型数据库的基本功能,以及企业特性的增强功能。 - -## 基本功能 - -- 标准SQL支持 - - 支持标准的SQL92/SQL99/SQL2003/SQL2011规范,支持GBK和UTF-8字符集,支持SQL标准函数与分析函数,支持存储过程。 - -- 数据库存储管理功能 - - 支持表空间,可以把不同表规划到不同的存储位置。 - -- 提供主备双机 - - 事务支持ACID特性、单节点故障恢复、双机数据同步、双机故障切换等。 - -- 应用程序接口 - - 支持标准JDBC 4.0的特性、ODBC 3.5特性。 - -- 管理工具 - - 提供安装部署工具、实例启停工具、备份恢复工具。 - -- 安全管理 - - 支持SSL安全网络连接、用户权限管理、密码管理、安全审计等功能,保证数据库在管理层、应用层、系统层和网络层的安全性。 - - +# 基本功能和特性 + +## 背景信息 + +openGauss 是一个单机数据库,具备关系型数据库的基本功能,以及企业特性的增强功能。 + +## 基本功能 + +- 标准 SQL 支持 + + 支持标准的SQL92/SQL99/SQL2003/SQL2011规范,支持 GBK 和UTF-8字符集,支持 SQL 标准函数与分析函数,支持存储过程。 + +- 数据库存储管理功能 + + 支持表空间,可以把不同表规划到不同的存储位置。 + +- 提供主备双机 + + 事务支持 ACID 特性、单节点故障恢复、双机数据同步、双机故障切换等。 + +- 应用程序接口 + + 支持标准JDBC 4.0的特性、ODBC 3.5特性。 + +- 管理工具 + + 提供安装部署工具、实例启停工具、备份恢复工具。 + +- 安全管理 + + 支持 SSL 安全网络连接、用户权限管理、密码管理、安全审计等功能,保证数据库在管理层、应用层、系统层和网络层的安全性。 + + diff --git "a/content/zh/docs/Description/\345\272\224\347\224\250\345\234\272\346\231\257.md" "b/content/zh/docs/Description/\345\272\224\347\224\250\345\234\272\346\231\257.md" index f95a098a5..536c5d561 100644 --- "a/content/zh/docs/Description/\345\272\224\347\224\250\345\234\272\346\231\257.md" +++ "b/content/zh/docs/Description/\345\272\224\347\224\250\345\234\272\346\231\257.md" @@ -1,11 +1,11 @@ -# 应用场景 - -- 交易型应用 - - 大并发、大数据量、以联机事务处理为主的交易型应用,例如电商、金融、O2O、电信CRM/计费等,应用可以按需选择不同的主备部署模式。 - -- 物联网数据 - - 在工业监控和远程控制、智慧城市的延展、智能家居、车联网等物联网场景下,传感监控设备多,采样率高,数据存储为追加模型,操作和分析并重的场景。 - - +# 应用场景 + +- 交易型应用 + + 大并发、大数据量、以联机事务处理为主的交易型应用,例如电商、金融、O2O、电信CRM/计费等,应用可以按需选择不同的主备部署模式。 + +- 物联网数据 + + 在工业监控和远程控制、智慧城市的延展、智能家居、车联网等物联网场景下,传感监控设备多,采样率高,数据存储为追加模型,操作和分析并重的场景。 + + diff --git "a/content/zh/docs/Description/\346\212\200\346\234\257\346\214\207\346\240\207.md" "b/content/zh/docs/Description/\346\212\200\346\234\257\346\214\207\346\240\207.md" index e8e368ea1..e6c09e620 100644 --- "a/content/zh/docs/Description/\346\212\200\346\234\257\346\214\207\346\240\207.md" +++ "b/content/zh/docs/Description/\346\212\200\346\234\257\346\214\207\346\240\207.md" @@ -1,81 +1,81 @@ -# 技术指标 - -openGauss的技术指标如[表1](#zh-cn_topic_0283136531_zh-cn_topic_0237080616_zh-cn_topic_0231764304_zh-cn_topic_0059777844_t24ab71cac351418d8d5b1b8bd1d942c7)所示。 - -**表 1** 技术指标 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

技术指标

-

最大值

-

数据库容量

-

受限于操作系统与硬件

-

单表大小

-

32TB

-

单行数据大小

-

1GB

-

每条记录单个字段的大小

-

1GB

-

单表记录数

-

248

-

单表列数

-

250~1600(随字段类型不同会有变化)

-

单表中的索引个数

-

无限制

-

复合索引包含列数

-

32

-

单表约束个数

-

无限制

-

并发连接数

-

10000

-

分区表的分区个数

-

32768(范围分区)/64(哈希分区/列表分区)

-

分区表的单个分区大小

-

32TB

-

分区表的单个分区记录数

-

255

-
- +# 技术指标 + +openGauss 的技术指标如[表1](#zh-cn_topic_0283136531_zh-cn_topic_0237080616_zh-cn_topic_0231764304_zh-cn_topic_0059777844_t24ab71cac351418d8d5b1b8bd1d942c7)所示。 + +**表 1** 技术指标 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

技术指标

+

最大值

+

数据库容量

+

受限于操作系统与硬件

+

单表大小

+

32TB

+

单行数据大小

+

1GB

+

每条记录单个字段的大小

+

1GB

+

单表记录数

+

248

+

单表列数

+

250~1600(随字段类型不同会有变化)

+

单表中的索引个数

+

无限制

+

复合索引包含列数

+

32

+

单表约束个数

+

无限制

+

并发连接数

+

10000

+

分区表的分区个数

+

32768(范围分区)/64(哈希分区/列表分区)

+

分区表的单个分区大小

+

32TB

+

分区表的单个分区记录数

+

255

+
+ diff --git "a/content/zh/docs/Description/\347\263\273\347\273\237\346\236\266\346\236\204.md" "b/content/zh/docs/Description/\347\263\273\347\273\237\346\236\266\346\236\204.md" index 2bb7fa552..a3545526b 100644 --- "a/content/zh/docs/Description/\347\263\273\347\273\237\346\236\266\346\236\204.md" +++ "b/content/zh/docs/Description/\347\263\273\347\273\237\346\236\266\346\236\204.md" @@ -1,46 +1,46 @@ -# 系统架构 - -openGauss是单机系统,在这样的系统架构中,业务数据存储在单个物理节点上,数据访问任务被推送到服务节点执行,通过服务器的高并发,实现对数据处理的快速响应。同时日志复制可以把数据复制到备机,提供数据的高可靠和读扩展。 - -## 软件架构 - -openGauss是单机系统,支持主备部署。 - -openGauss逻辑架构如[图1](#zh-cn_topic_0283136530_zh-cn_topic_0237080634_zh-cn_topic_0231764167_fig5205420191411)所示。 - -**图 1** openGauss逻辑架构图 -![](figures/openGauss逻辑架构图.png "openGauss逻辑架构图") - -**表 1** 架构说明 - - - - - - - - - - - - - - - - - - - -

名称

-

描述

-

OM

-

运维管理模块(Operation Manager)。提供数据库日常运维、配置管理的管理接口、工具。

-

客户端驱动

-

客户端驱动(Client Driver)。负责接收来自应用的访问请求,并向应用返回执行结果。客户端驱动负责与openGauss实例通信,发送应用的SQL命令,接收openGauss实例的执行结果。

-

openGauss(主备)

-

openGauss主备(Datanode)。负责存储业务数据、执行数据查询任务以及向客户端返回执行结果。

-

openGauss实例包含主、备两种类型,支持一主多备。建议将主、备openGauss实例分散部署在不同的物理节点中。

-

Storage

-

服务器的本地存储资源,持久化存储数据。

-
- +# 系统架构 + +openGauss 是单机系统,在这样的系统架构中,业务数据存储在单个物理节点上,数据访问任务被推送到服务节点执行,通过服务器的高并发,实现对数据处理的快速响应。同时日志复制可以把数据复制到备机,提供数据的高可靠和读扩展。 + +## 软件架构 + +openGauss 是单机系统,支持主备部署。 + +openGauss 逻辑架构如[图1](#zh-cn_topic_0283136530_zh-cn_topic_0237080634_zh-cn_topic_0231764167_fig5205420191411)所示。 + +**图 1** openGauss逻辑架构图 +![](figures/openGauss逻辑架构图.png "openGauss逻辑架构图") + +**表 1** 架构说明 + + + + + + + + + + + + + + + + + + + +

名称

+

描述

+

OM

+

运维管理模块(Operation Manager)。提供数据库日常运维、配置管理的管理接口、工具。

+

客户端驱动

+

客户端驱动(Client Driver)。负责接收来自应用的访问请求,并向应用返回执行结果。客户端驱动负责与openGauss实例通信,发送应用的 SQL 命令,接收openGauss实例的执行结果。

+

openGauss(主备)

+

openGauss主备(Datanode)。负责存储业务数据、执行数据查询任务以及向客户端返回执行结果。

+

openGauss实例包含主、备两种类型,支持一主多备。建议将主、备openGauss实例分散部署在不同的物理节点中。

+

Storage

+

服务器的本地存储资源,持久化存储数据。

+
+ diff --git "a/content/zh/docs/Description/\350\277\220\350\241\214\347\216\257\345\242\203.md" "b/content/zh/docs/Description/\350\277\220\350\241\214\347\216\257\345\242\203.md" index 4de0059cf..272a38eb6 100644 --- "a/content/zh/docs/Description/\350\277\220\350\241\214\347\216\257\345\242\203.md" +++ "b/content/zh/docs/Description/\350\277\220\350\241\214\347\216\257\345\242\203.md" @@ -1,21 +1,21 @@ -# 运行环境 - -## 支持的硬件平台 - -openGauss支持运行在鲲鹏服务器和通用的x86服务器上: - -- 支持鲲鹏服务器和基于x86\_64的通用PC服务器。 -- 支持本地存储(SAS/SATA SSD)。 -- 支持千兆、万兆Ethernet网络。 - -## 支持的操作系统 - -- ARM: - - openEuler 20.3LTS(推荐采用此操作系统) - - 麒麟V10 - -- x86: - - openEuler 20.3LTS - - CentOS 7.6 - - +# 运行环境 + +## 支持的硬件平台 + +openGauss 支持运行在鲲鹏服务器和通用的 x86 服务器上: + +- 支持鲲鹏服务器和基于x86\_64的通用 PC 服务器。 +- 支持本地存储(SAS/SATA SSD)。 +- 支持千兆、万兆 Ethernet 网络。 + +## 支持的操作系统 + +- ARM: + - openEuler 20.3LTS(推荐采用此操作系统) + - 麒麟V10 + +- x86: + - openEuler 20.3LTS + - CentOS 7.6 + + diff --git a/content/zh/docs/Developerguide/ABORT.md b/content/zh/docs/Developerguide/ABORT.md index 48beb66d3..86186f91e 100644 --- a/content/zh/docs/Developerguide/ABORT.md +++ b/content/zh/docs/Developerguide/ABORT.md @@ -1,70 +1,70 @@ -# ABORT - -## 功能描述 - -回滚当前事务并且撤销所有当前事务中所做的更改。 - -作用等同于[ROLLBACK](ROLLBACK.md),早期SQL有用ABORT,现在推荐使用ROLLBACK。 - -## 注意事项 - -在事务外部执行ABORT语句不会影响事务的执行,但是会抛出一个NOTICE信息。 - -## 语法格式 - -``` -ABORT [ WORK | TRANSACTION ] ; -``` - -## 参数说明 - -**WORK | TRANSACTION** - -可选关键字,除了增加可读性没有其他任何作用。 - -## 示例 - -``` ---创建表customer_demographics_t1。 -openGauss=# CREATE TABLE customer_demographics_t1 -( - CD_DEMO_SK INTEGER NOT NULL, - CD_GENDER CHAR(1) , - CD_MARITAL_STATUS CHAR(1) , - CD_EDUCATION_STATUS CHAR(20) , - CD_PURCHASE_ESTIMATE INTEGER , - CD_CREDIT_RATING CHAR(10) , - CD_DEP_COUNT INTEGER , - CD_DEP_EMPLOYED_COUNT INTEGER , - CD_DEP_COLLEGE_COUNT INTEGER -) -WITH (ORIENTATION = COLUMN,COMPRESSION=MIDDLE) -; - ---插入记录。 -openGauss=# INSERT INTO customer_demographics_t1 VALUES(1920801,'M', 'U', 'DOCTOR DEGREE', 200, 'GOOD', 1, 0,0); - ---开启事务。 -openGauss=# START TRANSACTION; - ---更新字段值。 -openGauss=# UPDATE customer_demographics_t1 SET cd_education_status= 'Unknown'; - ---终止事务,上面所执行的更新会被撤销掉。 -openGauss=# ABORT; - ---查询数据。 -openGauss=# SELECT * FROM customer_demographics_t1 WHERE cd_demo_sk = 1920801; -cd_demo_sk | cd_gender | cd_marital_status | cd_education_status | cd_purchase_estimate | cd_credit_rating | cd_dep_count | cd_dep_employed_count | cd_dep_college_count -------------+-----------+-------------------+----------------------+----------------------+------------------+--------------+-----------------------+---------------------- - 1920801 | M | U | DOCTOR DEGREE | 200 | GOOD | 1 | 0 | 0 -(1 row) - ---删除表。 -openGauss=# DROP TABLE customer_demographics_t1; -``` - -## 相关链接 - -[SET TRANSACTION](SET-TRANSACTION.md),[COMMIT | END](COMMIT-END.md),[ROLLBACK](ROLLBACK.md) - +# ABORT + +## 功能描述 + +回滚当前事务并且撤销所有当前事务中所做的更改。 + +作用等同于[ROLLBACK](ROLLBACK.md),早期 SQL 有用 ABORT ,现在推荐使用 ROLLBACK 。 + +## 注意事项 + +在事务外部执行 ABORT 语句不会影响事务的执行,但是会抛出一个 NOTICE 信息。 + +## 语法格式 + +``` +ABORT [ WORK | TRANSACTION ] ; +``` + +## 参数说明 + +**WORK | TRANSACTION** + +可选关键字,除了增加可读性没有其他任何作用。 + +## 示例 + +``` +--创建表 customer_demographics_t1 。 +openGauss=# CREATE TABLE customer_demographics_t1 +( + CD_DEMO_SK INTEGER NOT NULL , + CD_GENDER CHAR(1) , + CD_MARITAL_STATUS CHAR(1) , + CD_EDUCATION_STATUS CHAR(20) , + CD_PURCHASE_ESTIMATE INTEGER , + CD_CREDIT_RATING CHAR(10) , + CD_DEP_COUNT INTEGER , + CD_DEP_EMPLOYED_COUNT INTEGER , + CD_DEP_COLLEGE_COUNT INTEGER +) +WITH (ORIENTATION = COLUMN,COMPRESSION=MIDDLE) +; + +--插入记录。 +openGauss=# INSERT INTO customer_demographics_t1 VALUES(1920801,'M', 'U', 'DOCTOR DEGREE', 200 , 'GOOD', 1 , 0 ,0); + +--开启事务。 +openGauss=# START TRANSACTION; + +--更新字段值。 +openGauss=# UPDATE customer_demographics_t1 SET cd_education_status= 'Unknown'; + +--终止事务,上面所执行的更新会被撤销掉。 +openGauss=# ABORT; + +--查询数据。 +openGauss=# SELECT * FROM customer_demographics_t1 WHERE cd_demo_sk = 1920801; +cd_demo_sk | cd_gender | cd_marital_status | cd_education_status | cd_purchase_estimate | cd_credit_rating | cd_dep_count | cd_dep_employed_count | cd_dep_college_count +------------+-----------+-------------------+----------------------+----------------------+------------------+--------------+-----------------------+---------------------- + 1920801 | M | U | DOCTOR DEGREE | 200 | GOOD | 1 | 0 | 0 +(1 row) + +--删除表。 +openGauss=# DROP TABLE customer_demographics_t1; +``` + +## 相关链接 + +[SET TRANSACTION](SET-TRANSACTION.md),[COMMIT | END](COMMIT-END.md),[ROLLBACK](ROLLBACK.md) + diff --git a/content/zh/docs/Developerguide/AI_MANAGER.md b/content/zh/docs/Developerguide/AI_MANAGER.md index acc01a575..1b90b2a02 100644 --- a/content/zh/docs/Developerguide/AI_MANAGER.md +++ b/content/zh/docs/Developerguide/AI_MANAGER.md @@ -1,76 +1,76 @@ -# AI\_MANAGER - -ai\_manager是AI特性部署工具,旨在为AI特性提供自动化、高效便捷的部署及卸载方式,可通过指定模块名称、操作类型及参数文件进行相应AI特性的自动化部署和卸载,实现了版本管理、操作日志记录及日志管理、安装信息记录等功能,支持特性级横向扩展,该工具目前仅支持ai\_server的安装及卸载。 - -## 使用准备 - -- 项目部署路径为/dbs/AI-tools,需保证该路径存在并有读写执行权限,安装/卸载操作中会清理该路径下的内容,不要将其它文件保存在该路径下。 -- 需要安装Python3环境及特性所需Python库,依赖库请参考包内的requirements.txt文件。 -- 如开启https,需准备相应的根证书,秘钥文件及密码。 -- agent节点已启动openGauss数据库。 -- 安装agent节点须使用集群用户操作。 -- 如果agent节点集群用户的\~/.bashrc文件中没有正确的PGHOST配置,需要将PGHOST配置到/dbs/AI-tools/ai\_env文件中。 - -## 示例 - -安装命令示例: - -``` -python3 ai_manager --module anomaly_detection --action install --param-file opengauss.json -``` - -卸载命令示例: - -``` -python3 ai_manager --module anomaly_detection--action uninstall --param-file opengauss.json -``` - -参数文件示例: - -``` -{ - "scene": "opengauss", # 场景,openGauss安装server及agent,huaweiyun仅安装server - "module": "anomaly_detection", # 模块(特性)名称,目前仅支持anomaly_detection - "action": "install", # 操作类型,支持install及uninstall - "ca_info": { - "ca_cert_path": "/home/Ruby/CA_AI/ca.crt", # 根证书路径 - "ca_key_path": "/home/Ruby/CA_AI/ca.crt.key", # 根证书秘钥路径 - "ca_password": "GHJAyusa241~" # 根证书密码 - }, - "agent_nodes": [ - { - "node_ip": "10.000.00.000", # agent节点IP - "username": "Ruby", # agent节点用户 - "password": "password" # agent节点密码 - } - ], - "config_info": { - "server": { - "host": "10.000.00.000", # server部署节点IP(执行节点) - "listen_host": "0.0.0.0", # server 监听IP - "listen_port": "20060", # server 监听端口 - "pull_kafka": "False" # 是否拉取kafka数据,暂不支持拉取。 - }, - "database": { - "name": "sqlite", # 数据存储方式,支持sqlite、mongodb、influxdb - "host": "127.0.0.1", # 数据库ip - "port": "2937", # 数据库端口 - "user": "Ruby", # 数据库用户 - "size": "175000000", # mongodb 最大存储容量 - "max_rows": "1000000" # mongodb 最大存储条数 - }, - "agent": { - "cluster_name": "my_cluster", # 采集数据库的名称 - "collection_type": "os", # 采集类型,支持os、database、all - "collection_item": [["dn", "10.000.00.000", "33700"]], # agent节点采集数据类型(dn/cn),采集节点IP,端口 - "channel_capacity": "1000", # 队列容量 - "source_timer_interval": "5S", # 采集间隔 - "sink_timer_interval": "5S" # 发送间隔 - }, - "security": { - "tls": "True" # 是否开启https - } - } -} -``` - +# AI\_MANAGER + +ai\_manager是 AI 特性部署工具,旨在为 AI 特性提供自动化、高效便捷的部署及卸载方式,可通过指定模块名称、操作类型及参数文件进行相应 AI 特性的自动化部署和卸载,实现了版本管理、操作日志记录及日志管理、安装信息记录等功能,支持特性级横向扩展,该工具目前仅支持ai\_server的安装及卸载。 + +## 使用准备 + +- 项目部署路径为/dbs/AI-tools,需保证该路径存在并有读写执行权限,安装/卸载操作中会清理该路径下的内容,不要将其它文件保存在该路径下。 +- 需要安装 Python3 环境及特性所需 Python 库,依赖库请参考包内的requirements.txt文件。 +- 如开启 https ,需准备相应的根证书,秘钥文件及密码。 +- agent节点已启动 openGauss 数据库。 +- 安装 agent 节点须使用集群用户操作。 +- 如果 agent 节点集群用户的\~/.bashrc文件中没有正确的 PGHOST 配置,需要将 PGHOST 配置到/dbs/AI-tools/ai\_env文件中。 + +## 示例 + +安装命令示例: + +``` +python3 ai_manager --module anomaly_detection --action install --param-file opengauss.json +``` + +卸载命令示例: + +``` +python3 ai_manager --module anomaly_detection--action uninstall --param-file opengauss.json +``` + +参数文件示例: + +``` +{ + "scene": "opengauss", # 场景, openGauss 安装 server 及 agent , huaweiyun 仅安装server + "module": "anomaly_detection", # 模块(特性)名称,目前仅支持anomaly_detection + "action": "install", # 操作类型,支持 install 及uninstall + "ca_info": { + "ca_cert_path": "/home/Ruby/CA_AI/ca.crt", # 根证书路径 + "ca_key_path": "/home/Ruby/CA_AI/ca.crt.key", # 根证书秘钥路径 + "ca_password": "GHJAyusa241~" # 根证书密码 + }, + "agent_nodes": [ + { + "node_ip": "10.000.00.000", # agent节点IP + "username": "Ruby", # agent节点用户 + "password": "password" # agent节点密码 + } + ], + "config_info": { + "server": { + "host": "10.000.00.000", # server部署节点IP(执行节点) + "listen_host": "0.0.0.0", # server 监听IP + "listen_port": "20060", # server 监听端口 + "pull_kafka": "False" # 是否拉取 kafka 数据,暂不支持拉取。 + }, + "database": { + "name": "sqlite", # 数据存储方式,支持sqlite、mongodb、influxdb + "host": "127.0.0.1", # 数据库ip + "port": "2937", # 数据库端口 + "user": "Ruby", # 数据库用户 + "size": "175000000", # mongodb 最大存储容量 + "max_rows": "1000000" # mongodb 最大存储条数 + }, + "agent": { + "cluster_name": "my_cluster", # 采集数据库的名称 + "collection_type": "os", # 采集类型,支持os、database、all + "collection_item": [["dn", "10.000.00.000", "33700"]], # agent节点采集数据类型(dn/cn),采集节点 IP ,端口 + "channel_capacity": "1000", # 队列容量 + "source_timer_interval": "5S", # 采集间隔 + "sink_timer_interval": "5S" # 发送间隔 + }, + "security": { + "tls": "True" # 是否开启https + } + } +} +``` + diff --git a/content/zh/docs/Developerguide/AI_SERVER.md b/content/zh/docs/Developerguide/AI_SERVER.md index 929eb9489..6fc0cb6fb 100644 --- a/content/zh/docs/Developerguide/AI_SERVER.md +++ b/content/zh/docs/Developerguide/AI_SERVER.md @@ -1,83 +1,83 @@ -# AI\_SERVER - -ai\_server为anomaly\_detection特性的分离特性,在原anomaly\_detection数据采集功能的基础上增加了采集类型、采集项、数据存储模式,仅用于数据采集,后续将整合到anomaly\_detection中,该特性主要包含server组件和agent组件,agent须部署到数据库节点,用于数据采集,server部署在独立节点进行数据收集存储。 - -数据存储方式包括:sqlite、mongodb、influxdb。 - -采集项如[表1](#table174063254539): - -**表 1** 采集项说明 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

采集类型

-

采集项

-

描述

-

database

-

work_mem

-

数据库内存相关GUC参数,对涉及到排序任务的sql,检测分配的空间是否足够。

-

shared_buffers

-

数据库内存相关GUC参数,不合适的shared_buffer会导致数据库性能变差。

-

max_connections

-

数据库最大连接数。

-

current connections

-

数据库当前连接数。

-

qps

-

数据库性能指标。

-

os

-

cpu usage

-

cpu使用率。

-

memory usage

-

内存使用率。

-

io wait

-

系统因为io导致的进程wait。

-

io write

-

数据磁盘写吞吐量。

-

io read

-

数据磁盘读吞吐量。

-

disk used

-

磁盘已使用的大小。

-
- -部署方式请参见[AI\_MANAGER](AI_MANAGER.md)章节。 - +# AI\_SERVER + +ai\_server为anomaly\_detection特性的分离特性,在原anomaly\_detection数据采集功能的基础上增加了采集类型、采集项、数据存储模式,仅用于数据采集,后续将整合到anomaly\_detection中,该特性主要包含 server 组件和 agent 组件, agent 须部署到数据库节点,用于数据采集, server 部署在独立节点进行数据收集存储。 + +数据存储方式包括:sqlite、mongodb、influxdb。 + +采集项如[表1](#table174063254539): + +**表 1** 采集项说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

采集类型

+

采集项

+

描述

+

database

+

work_mem

+

数据库内存相关 GUC 参数,对涉及到排序任务的 sql ,检测分配的空间是否足够。

+

shared_buffers

+

数据库内存相关 GUC 参数,不合适的 shared_buffer 会导致数据库性能变差。

+

max_connections

+

数据库最大连接数。

+

current connections

+

数据库当前连接数。

+

qps

+

数据库性能指标。

+

os

+

cpu usage

+

cpu使用率。

+

memory usage

+

内存使用率。

+

io wait

+

系统因为 io 导致的进程 wait 。

+

io write

+

数据磁盘写吞吐量。

+

io read

+

数据磁盘读吞吐量。

+

disk used

+

磁盘已使用的大小。

+
+ +部署方式请参见[AI\_MANAGER](AI_MANAGER.md)章节。 + diff --git "a/content/zh/docs/Developerguide/AI\347\211\271\346\200\247-GUC.md" "b/content/zh/docs/Developerguide/AI\347\211\271\346\200\247-GUC.md" index e1ae341a5..8def13937 100644 --- "a/content/zh/docs/Developerguide/AI\347\211\271\346\200\247-GUC.md" +++ "b/content/zh/docs/Developerguide/AI\347\211\271\346\200\247-GUC.md" @@ -1,58 +1,58 @@ -# AI特性 - -## enable\_hypo\_index - -**参数说明:**该参数控制数据库的优化器进行EXPLAIN时是否考虑创建虚拟索引。通过对特定的查询语句执行explain,用户可根据优化器给出的执行计划评估该索引是否能够提升该查询语句的执行效率。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型 - -- on表示在进行EXPLAIN时创建虚拟索引。 -- off表示在进行EXPLAIN时不创建虚拟索引。 - -**默认值:**off - -## db4ai\_snapshot\_mode - -**参数说明:**snapshot有2种模式:MSS(物化模式,存储数据实体)和CSS(计算模式,存储增量信息)。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**字符串,MSS/CSS - -- MSS表示物化模式,db4ai在创建快照的时候存储数据实体。 -- CSS表示计算模式,db4ai在创建快照的时候存储增量信息。 - -**默认值:**MSS - -## db4ai\_snapshot\_version\_delimiter - -**参数说明:**该参数为数据表快照版本分隔符。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**字符串,长度大于0 - -**默认值:**@ - -## db4ai\_snapshot\_version\_separator - -**参数说明:**该参数用于指定数据表快照子版本分隔符。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**字符串,长度大于0 - -**默认值:**. - -## unix\_socket\_directory - -**参数说明:**用于指定unix\_socket通信方式中,文件存放的路径。此参数只能在配置文件postgresql.conf中指定。再启动fenced模式前需要设定该GUC参数。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**字符串,长度大于等于0 - -**默认值:**'' - +# AI特性 + +## enable\_hypo\_index + +**参数说明:**该参数控制数据库的优化器进行 EXPLAIN 时是否考虑创建虚拟索引。通过对特定的查询语句执行 explain ,用户可根据优化器给出的执行计划评估该索引是否能够提升该查询语句的执行效率。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**布尔型 + +- on表示在进行 EXPLAIN 时创建虚拟索引。 +- off表示在进行 EXPLAIN 时不创建虚拟索引。 + +**默认值:**off + +## db4ai\_snapshot\_mode + +**参数说明:**snapshot有 2 种模式:MSS(物化模式,存储数据实体)和CSS(计算模式,存储增量信息)。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**字符串,MSS/CSS + +- MSS表示物化模式, db4ai 在创建快照的时候存储数据实体。 +- CSS表示计算模式, db4ai 在创建快照的时候存储增量信息。 + +**默认值:**MSS + +## db4ai\_snapshot\_version\_delimiter + +**参数说明:**该参数为数据表快照版本分隔符。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**字符串,长度大于0 + +**默认值:**@ + +## db4ai\_snapshot\_version\_separator + +**参数说明:**该参数用于指定数据表快照子版本分隔符。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**字符串,长度大于0 + +**默认值:**. + +## unix\_socket\_directory + +**参数说明:**用于指定unix\_socket通信方式中,文件存放的路径。此参数只能在配置文件postgresql.conf中指定。再启动 fenced 模式前需要设定该 GUC 参数。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**字符串,长度大于等于0 + +**默认值:**'' + diff --git "a/content/zh/docs/Developerguide/AI\347\211\271\346\200\247.md" "b/content/zh/docs/Developerguide/AI\347\211\271\346\200\247.md" index 44c3eff11..aa660e43b 100644 --- "a/content/zh/docs/Developerguide/AI\347\211\271\346\200\247.md" +++ "b/content/zh/docs/Developerguide/AI\347\211\271\346\200\247.md" @@ -1,16 +1,16 @@ # AI特性 -人工智能技术最早可以追溯到上世纪50年代,甚至比数据库系统的发展历史还要悠久。但是,由于各种各样客观因素的制约,在很长的一段时间内,人工智能技术并没有得到大规模的应用,甚至还经历了几次明显的低谷期。到了近些年,随着信息技术的进一步发展,从前限制人工智能发展的因素已经逐渐减弱,所谓的ABC(AI、Big data、Cloud Computing)技术也随之而诞生。AI与数据库结合是近些年的行业研究热点,我们的数据库团队较早地参与了该领域的探索,并取得了阶段性的成果。AI特性子模块相对数据库其他组件更为独立,名为dbmind,大致可分为AI4DB与DB4AI两个部分。 +人工智能技术最早可以追溯到上世纪 50 年代,甚至比数据库系统的发展历史还要悠久。但是,由于各种各样客观因素的制约,在很长的一段时间内,人工智能技术并没有得到大规模的应用,甚至还经历了几次明显的低谷期。到了近些年,随着信息技术的进一步发展,从前限制人工智能发展的因素已经逐渐减弱,所谓的ABC(AI、Big data、Cloud Computing)技术也随之而诞生。 AI 与数据库结合是近些年的行业研究热点,我们的数据库团队较早地参与了该领域的探索,并取得了阶段性的成果。 AI 特性子模块相对数据库其他组件更为独立,名为 dbmind ,大致可分为 AI4DB 与 DB4AI 两个部分。 - AI4DB就是指用人工智能技术优化数据库的性能,从而获得更好的执行表现;也可以通过人工智能的手段实现自治、免人工运维等。主要包括自调优、自诊断、自安全、自运维和自愈等子领域。 - DB4AI就是指打通数据库到人工智能应用的端到端流程,统一人工智能技术栈,达到开箱即用、高性能、节约成本等目的。例如通过SQL-like语句使用推荐系统、图像检索、时序预测等功能,充分发挥高斯数据库高并行、列存储等优势。 - **[Predictor: AI查询时间预测](Predictor-AI查询时间预测.md)** - **[X-Tuner: 参数调优与诊断](X-Tuner-参数调优与诊断.md)** -- **[SQLdiag: 慢SQL发现](SQLdiag-慢SQL发现.md)** +- **[SQLdiag: 慢 SQL 发现](SQLdiag-慢 SQL 发现.md)** - **[Anomaly-detection:数据库指标采集、预测与异常监控](Anomaly-detection-数据库指标采集-预测与异常监控.md)** - **[Index-advisor:索引推荐](Index-advisor-索引推荐.md)** -- **[DeepSQL:库内AI算法](DeepSQL-库内AI算法.md)** -- **[DB4AI:数据库原生AI引擎](DB4AI-数据库原生AI引擎.md)** +- **[DeepSQL:库内 AI 算法](DeepSQL-库内 AI 算法.md)** +- **[DB4AI:数据库原生 AI 引擎](DB4AI-数据库原生 AI 引擎.md)** diff --git "a/content/zh/docs/Developerguide/AI\347\211\271\346\200\247\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/AI\347\211\271\346\200\247\345\207\275\346\225\260.md" index b47609017..3e1cd1da7 100644 --- "a/content/zh/docs/Developerguide/AI\347\211\271\346\200\247\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/AI\347\211\271\346\200\247\345\207\275\346\225\260.md" @@ -1,181 +1,181 @@ -# AI特性函数 - -- gs\_index\_advise\(text\) - - 描述:针对单条查询语句推荐索引。 - - 参数:SQL语句字符串 - - 返回值类型:record - - 示例请参见[单query索引推荐](单query索引推荐.md)。 - -- hypopg\_create\_index\(text\) - - 描述:创建虚拟索引。 - - 参数:创建索引语句的字符串 - - 返回值类型:record - - 示例请参见[虚拟索引](虚拟索引.md)。 - -- hypopg\_display\_index\(\) - - 描述:显示所有创建的虚拟索引信息。 - - 参数:无 - - 返回值类型:record - - 示例请参见[虚拟索引](虚拟索引.md)。 - -- hypopg\_drop\_index\(oid\) - - 描述:删除指定的虚拟索引。 - - 参数:索引的oid - - 返回值类型:bool - - 示例请参见[虚拟索引](虚拟索引.md)。 - -- hypopg\_reset\_index\(\) - - 描述:清除所有虚拟索引。 - - 参数:无 - - 返回值类型:无 - - 示例请参见[虚拟索引](虚拟索引.md)。 - -- hypopg\_estimate\_size\(oid\) - - 描述:估计指定索引创建所需的空间大小。 - - 参数:索引的oid - - 返回值类型:int8 - - 示例请参见[虚拟索引](虚拟索引.md)。 - -- check\_engine\_status\(ip text, port text\) - - 描述:测试给定的ip和port上是否有predictor engine提供服务。 - - 参数:predictor engine的ip地址和端口号。 - - 返回值类型:text - - 示例请参见[使用指导](使用指导-20.md)。 - -- encode\_plan\_node\(optname text, orientation text, strategy text, options text, dop int8, quals text, projection text\) - - 描述:对入参的计划算子信息进行编码。 - - 参数:计划算子信息。 - - 返回值类型:text。 - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >该函数为内部功能调用函数,不建议用户直接使用。 - -- model\_train\_opt\(template text, model text\) - - 描述:训练给定的查询性能预测模型。 - - 参数:性能预测模型的模板名和模型名。 - - 返回值类型:tartup\_time\_accuracy FLOAT8、 total\_time\_accuracy FLOAT8、 rows\_accuracy FLOAT8、 peak\_memory\_accuracy FLOAT8 - - 示例请参见[使用指导](使用指导-20.md)。 - -- track\_model\_train\_opt\(ip text, port text\) - - 描述:返回给定ip和port predictor engine的训练日志地址。 - - 参数:predictor engine的ip地址和端口号。 - - 返回值类型:text - - 示例请参见[使用指导](使用指导-20.md)。 - -- encode\_feature\_perf\_hist\(datname text\) - - 描述:将目标数据库已收集的历史计划算子进行编码。 - - 参数:数据库名。 - - 返回值类型:queryid bigint、 plan\_node\_id int、 parent\_node\_id int、 left\_child\_id int、 right\_child\_id int, encode text、 startup\_time bigint、 total\_time bigint、 rows bigint、 peak\_memory int - - 示例请参见[使用指导](使用指导-20.md)。 - -- gather\_encoding\_info\(datname text\) - - 描述:调用encode\_feature\_perf\_hist,将编码好的数据进行持久化保存。 - - 参数:数据库名。 - - 返回值类型:int - - 示例请参见[使用指导](使用指导-20.md)。 - -- db4ai\_predict\_by\_bool \(text, VARIADIC "any"\) - - 描述:获取返回值为布尔型的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 - - 参数:模型名称和推断任务的输入列。 - - 返回值类型:bool - -- db4ai\_predict\_by\_float4\(text, VARIADIC "any"\) - - 描述:获取返回值为float4的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 - - 参数:模型名称和推断任务的输入列。 - - 返回值类型:float - -- db4ai\_predict\_by\_float8\(text, VARIADIC "any"\) - - 描述:获取返回值为float8的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 - - 参数:模型名称和推断任务的输入列。 - - 返回值类型:float - -- db4ai\_predict\_by\_int32\(text, VARIADIC "any"\) - - 描述:获取返回值为int32的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 - - 参数:模型名称和推断任务的输入列。 - - 返回值类型:int - -- db4ai\_predict\_by\_int64\(text, VARIADIC "any"\) - - 描述:获取返回值为int64的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 - - 参数:模型名称和推断任务的输入列。 - - 返回值类型:int - -- db4ai\_predict\_by\_numeric\(text, VARIADIC "any"\) - - 描述:获取返回值为numeric的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 - - 参数:模型名称和推断任务的输入列。 - - 返回值类型:numeric - -- db4ai\_predict\_by\_text\(text, VARIADIC "any"\) - - 描述:获取返回值为字符型的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 - - 参数:模型名称和推断任务的输入列。 - - 返回值类型:text - - +# AI特性函数 + +- gs\_index\_advise\(text\) + + 描述:针对单条查询语句推荐索引。 + + 参数:SQL语句字符串 + + 返回值类型:record + + 示例请参见[单 query 索引推荐](单 query 索引推荐.md)。 + +- hypopg\_create\_index\(text\) + + 描述:创建虚拟索引。 + + 参数:创建索引语句的字符串 + + 返回值类型:record + + 示例请参见[虚拟索引](虚拟索引.md)。 + +- hypopg\_display\_index\(\) + + 描述:显示所有创建的虚拟索引信息。 + + 参数:无 + + 返回值类型:record + + 示例请参见[虚拟索引](虚拟索引.md)。 + +- hypopg\_drop\_index\(oid\) + + 描述:删除指定的虚拟索引。 + + 参数:索引的oid + + 返回值类型:bool + + 示例请参见[虚拟索引](虚拟索引.md)。 + +- hypopg\_reset\_index\(\) + + 描述:清除所有虚拟索引。 + + 参数:无 + + 返回值类型:无 + + 示例请参见[虚拟索引](虚拟索引.md)。 + +- hypopg\_estimate\_size\(oid\) + + 描述:估计指定索引创建所需的空间大小。 + + 参数:索引的oid + + 返回值类型:int8 + + 示例请参见[虚拟索引](虚拟索引.md)。 + +- check\_engine\_status\(ip text, port text\) + + 描述:测试给定的 ip 和 port 上是否有 predictor engine 提供服务。 + + 参数:predictor engine的 ip 地址和端口号。 + + 返回值类型:text + + 示例请参见[使用指导](使用指导-20.md)。 + +- encode\_plan\_node\(optname text, orientation text , strategy text , options text , dop int8 , quals text , projection text\) + + 描述:对入参的计划算子信息进行编码。 + + 参数:计划算子信息。 + + 返回值类型:text。 + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >该函数为内部功能调用函数,不建议用户直接使用。 + +- model\_train\_opt\(template text, model text\) + + 描述:训练给定的查询性能预测模型。 + + 参数:性能预测模型的模板名和模型名。 + + 返回值类型:tartup\_time\_accuracy FLOAT8、 total\_time\_accuracy FLOAT8、 rows\_accuracy FLOAT8、 peak\_memory\_accuracy FLOAT8 + + 示例请参见[使用指导](使用指导-20.md)。 + +- track\_model\_train\_opt\(ip text, port text\) + + 描述:返回给定 ip 和 port predictor engine 的训练日志地址。 + + 参数:predictor engine的 ip 地址和端口号。 + + 返回值类型:text + + 示例请参见[使用指导](使用指导-20.md)。 + +- encode\_feature\_perf\_hist\(datname text\) + + 描述:将目标数据库已收集的历史计划算子进行编码。 + + 参数:数据库名。 + + 返回值类型:queryid bigint、 plan\_node\_id int、 parent\_node\_id int、 left\_child\_id int、 right\_child\_id int, encode text、 startup\_time bigint、 total\_time bigint、 rows bigint、 peak\_memory int + + 示例请参见[使用指导](使用指导-20.md)。 + +- gather\_encoding\_info\(datname text\) + + 描述:调用encode\_feature\_perf\_hist,将编码好的数据进行持久化保存。 + + 参数:数据库名。 + + 返回值类型:int + + 示例请参见[使用指导](使用指导-20.md)。 + +- db4ai\_predict\_by\_bool \(text, VARIADIC "any"\) + + 描述:获取返回值为布尔型的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法 PREDICT BY 进行推断任务。 + + 参数:模型名称和推断任务的输入列。 + + 返回值类型:bool + +- db4ai\_predict\_by\_float4\(text, VARIADIC "any"\) + + 描述:获取返回值为 float4 的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法 PREDICT BY 进行推断任务。 + + 参数:模型名称和推断任务的输入列。 + + 返回值类型:float + +- db4ai\_predict\_by\_float8\(text, VARIADIC "any"\) + + 描述:获取返回值为 float8 的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法 PREDICT BY 进行推断任务。 + + 参数:模型名称和推断任务的输入列。 + + 返回值类型:float + +- db4ai\_predict\_by\_int32\(text, VARIADIC "any"\) + + 描述:获取返回值为 int32 的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法 PREDICT BY 进行推断任务。 + + 参数:模型名称和推断任务的输入列。 + + 返回值类型:int + +- db4ai\_predict\_by\_int64\(text, VARIADIC "any"\) + + 描述:获取返回值为 int64 的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法 PREDICT BY 进行推断任务。 + + 参数:模型名称和推断任务的输入列。 + + 返回值类型:int + +- db4ai\_predict\_by\_numeric\(text, VARIADIC "any"\) + + 描述:获取返回值为 numeric 的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法 PREDICT BY 进行推断任务。 + + 参数:模型名称和推断任务的输入列。 + + 返回值类型:numeric + +- db4ai\_predict\_by\_text\(text, VARIADIC "any"\) + + 描述:获取返回值为字符型的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法 PREDICT BY 进行推断任务。 + + 参数:模型名称和推断任务的输入列。 + + 返回值类型:text + + diff --git a/content/zh/docs/Developerguide/ALTER-AGGREGATE.md b/content/zh/docs/Developerguide/ALTER-AGGREGATE.md index 84c0cd9e0..49a8c6bd3 100644 --- a/content/zh/docs/Developerguide/ALTER-AGGREGATE.md +++ b/content/zh/docs/Developerguide/ALTER-AGGREGATE.md @@ -1,65 +1,65 @@ -# ALTER AGGREGATE - -## 功能描述 - -修改一个聚合函数的定义。 - -## 注意事项 - -要使用 ALTER AGGREGATE ,你必须是该聚合函数的所有者。 要改变一个聚合函数的模式,你必须在新模式上有 CREATE 权限。要改变所有者,你必须是新所有角色的一个直接或间接成员,并且该角色必须在聚合函数的模式上有 CREATE 权限。(这些限制强制了修改该所有者不会做任何通过删除和重建聚合函数不能做的事情。不过,超级用户可以用任何方法任意更改聚合函数的所属关系)。 - -## 语法格式 - -``` -ALTER AGGREGATE name ( argtype [ , ... ] ) RENAME TO new_name -ALTER AGGREGATE name ( argtype [ , ... ] ) OWNER TO new_owner -ALTER AGGREGATE name ( argtype [ , ... ] ) SET SCHEMA new_schema -``` - -## 参数说明 - -- **name** - - 现有的聚合函数的名称(可以有模式修饰)。 - -- **argtype** - - 聚合函数操作的输入数据类型。要引用一个零参数聚合函数,可以写入\*代替输入数据类型列表。 - -- **new\_name** - - 聚合函数的新名字。 - -- **new\_owner** - - 聚合函数的新所有者。 - -- **new\_schema** - - 聚合函数的新模式。 - - -## 示例 - -把一个接受integer 类型参数的聚合函数myavg重命名为 my\_average : - -``` -ALTER AGGREGATE myavg(integer) RENAME TO my_average; -``` - -把一个接受integer 类型参数的聚合函数myavg的所有者改为joe : - -``` -ALTER AGGREGATE myavg(integer) OWNER TO joe; -``` - -把一个接受integer 类型参数的聚合函数myavg移动到模式myschema里: - -``` -ALTER AGGREGATE myavg(integer) SET SCHEMA myschema; -``` - -## 兼容性 - -SQL标准里没有ALTER AGGREGATE语句。 - +# ALTER AGGREGATE + +## 功能描述 + +修改一个聚合函数的定义。 + +## 注意事项 + +要使用 ALTER AGGREGATE ,你必须是该聚合函数的所有者。 要改变一个聚合函数的模式,你必须在新模式上有 CREATE 权限。要改变所有者,你必须是新所有角色的一个直接或间接成员,并且该角色必须在聚合函数的模式上有 CREATE 权限。(这些限制强制了修改该所有者不会做任何通过删除和重建聚合函数不能做的事情。不过,超级用户可以用任何方法任意更改聚合函数的所属关系)。 + +## 语法格式 + +``` +ALTER AGGREGATE name ( argtype [ , ... ] ) RENAME TO new_name +ALTER AGGREGATE name ( argtype [ , ... ] ) OWNER TO new_owner +ALTER AGGREGATE name ( argtype [ , ... ] ) SET SCHEMA new_schema +``` + +## 参数说明 + +- **name** + + 现有的聚合函数的名称(可以有模式修饰)。 + +- **argtype** + + 聚合函数操作的输入数据类型。要引用一个零参数聚合函数,可以写入\*代替输入数据类型列表。 + +- **new\_name** + + 聚合函数的新名字。 + +- **new\_owner** + + 聚合函数的新所有者。 + +- **new\_schema** + + 聚合函数的新模式。 + + +## 示例 + +把一个接受 integer 类型参数的聚合函数 myavg 重命名为 my\_average : + +``` +ALTER AGGREGATE myavg(integer) RENAME TO my_average; +``` + +把一个接受 integer 类型参数的聚合函数 myavg 的所有者改为joe : + +``` +ALTER AGGREGATE myavg(integer) OWNER TO joe; +``` + +把一个接受 integer 类型参数的聚合函数 myavg 移动到模式 myschema 里: + +``` +ALTER AGGREGATE myavg(integer) SET SCHEMA myschema; +``` + +## 兼容性 + +SQL 标准里没有 ALTER AGGREGATE 语句。 + diff --git a/content/zh/docs/Developerguide/ALTER-AUDIT-POLICY.md b/content/zh/docs/Developerguide/ALTER-AUDIT-POLICY.md index 27af19b7d..de5f71c79 100644 --- a/content/zh/docs/Developerguide/ALTER-AUDIT-POLICY.md +++ b/content/zh/docs/Developerguide/ALTER-AUDIT-POLICY.md @@ -1,88 +1,88 @@ -# ALTER AUDIT POLICY - -## 功能描述 - -修改统一审计策略。 - -## 注意事项 - -- 只有poladmin、sysadmin或初始用户用户才能进行此操作。 -- 需要打开enable\_security\_policy开关统一审计策略才可以生效,开关打开方式请参考《安全加固指南》中“数据库配置 \> 数据库安全管理策略-统一审计”章节。 - -## 语法格式 - -``` -ALTER AUDIT POLICY [ IF EXISTS ] policy_name { ADD | REMOVE } { [ privilege_audit_clause ] [ access_audit_clause ] }; -ALTER AUDIT POLICY [ IF EXISTS ] policy_name MODIFY ( filter_group_clause ); -ALTER AUDIT POLICY [ IF EXISTS ] policy_name DROP FILTER; -ALTER AUDIT POLICY [ IF EXISTS ] policy_name COMMENTS policy_comments; -ALTER AUDIT POLICY [ IF EXISTS ] policy_name { ENABLE | DISABLE }; -``` - -- privilege\_audit\_clause: - - ``` - PRIVILEGES { DDL | ALL } - ``` - -- access\_audit\_clause: - - ``` - ACCESS { DML | ALL } - ``` - - -- filter\_group\_clause: - - ``` - FILTER ON { ( FILTER_TYPE ( filter_value [, ... ] ) ) [, ... ] } - ``` - - -## 参数说明 - -- **policy\_name** - - 审计策略名称,需要唯一,不可重复。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **DDL** - - 指的是针对数据库执行如下操作时进行审计,目前支持:CREATE、ALTER、DROP、ANALYZE、COMMENT、GRANT、REVOKE、SET、SHOW、LOGIN\_ANY、LOGIN\_FAILURE、LOGIN\_SUCCESS、LOGOUT。 - -- **ALL** - - 指的是上述DDL支持的所有对数据库的操作。 - -- **DML** - - 指的是针对数据库执行如下操作时进行审计,目前支持:SELECT、COPY、DEALLOCATE、DELETE、EXECUTE、INSERT、PREPARE、REINDEX、TRUNCATE、UPDATE。 - - -- **FILTER\_TYPE** - - 指定审计策略的过滤信息,过滤类型包括:IP、ROLES、APP。 - -- **filter\_value** - - 指具体过滤信息内容。 - - -- **policy\_comments** - - 用于记录策略相关的描述信息。 - -- **ENABLE|DISABLE** - - 可以打开或关闭统一审计策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。 - - -## 示例 - -请参考CREATE AUDIT POLICY的[示例](CREATE-AUDIT-POLICY.md#section7854941155112)。 - -## 相关链接 - -[CREATE AUDIT POLICY](CREATE-AUDIT-POLICY.md),[DROP AUDIT POLICY](DROP-AUDIT-POLICY.md)。 - +# ALTER AUDIT POLICY + +## 功能描述 + +修改统一审计策略。 + +## 注意事项 + +- 只有poladmin、sysadmin或初始用户用户才能进行此操作。 +- 需要打开enable\_security\_policy开关统一审计策略才可以生效,开关打开方式请参考《安全加固指南》中“数据库配置 \> 数据库安全管理策略-统一审计”章节。 + +## 语法格式 + +``` +ALTER AUDIT POLICY [ IF EXISTS ] policy_name { ADD | REMOVE } { [ privilege_audit_clause ] [ access_audit_clause ] }; +ALTER AUDIT POLICY [ IF EXISTS ] policy_name MODIFY ( filter_group_clause ); +ALTER AUDIT POLICY [ IF EXISTS ] policy_name DROP FILTER; +ALTER AUDIT POLICY [ IF EXISTS ] policy_name COMMENTS policy_comments; +ALTER AUDIT POLICY [ IF EXISTS ] policy_name { ENABLE | DISABLE }; +``` + +- privilege\_audit\_clause: + + ``` + PRIVILEGES { DDL | ALL } + ``` + +- access\_audit\_clause: + + ``` + ACCESS { DML | ALL } + ``` + + +- filter\_group\_clause: + + ``` + FILTER ON { ( FILTER_TYPE ( filter_value [, ... ] ) ) [, ... ] } + ``` + + +## 参数说明 + +- **policy\_name** + + 审计策略名称,需要唯一,不可重复。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **DDL** + + 指的是针对数据库执行如下操作时进行审计,目前支持:CREATE、ALTER、DROP、ANALYZE、COMMENT、GRANT、REVOKE、SET、SHOW、LOGIN\_ANY、LOGIN\_FAILURE、LOGIN\_SUCCESS、LOGOUT。 + +- **ALL** + + 指的是上述 DDL 支持的所有对数据库的操作。 + +- **DML** + + 指的是针对数据库执行如下操作时进行审计,目前支持:SELECT、COPY、DEALLOCATE、DELETE、EXECUTE、INSERT、PREPARE、REINDEX、TRUNCATE、UPDATE。 + + +- **FILTER\_TYPE** + + 指定审计策略的过滤信息,过滤类型包括:IP、ROLES、APP。 + +- **filter\_value** + + 指具体过滤信息内容。 + + +- **policy\_comments** + + 用于记录策略相关的描述信息。 + +- **ENABLE|DISABLE** + + 可以打开或关闭统一审计策略。若不指定ENABLE|DISABLE,语句默认为 ENABLE 。 + + +## 示例 + +请参考 CREATE AUDIT POLICY 的[示例](CREATE-AUDIT-POLICY.md#section7854941155112)。 + +## 相关链接 + +[CREATE AUDIT POLICY](CREATE-AUDIT-POLICY.md),[DROP AUDIT POLICY](DROP-AUDIT-POLICY.md)。 + diff --git a/content/zh/docs/Developerguide/ALTER-DATA-SOURCE.md b/content/zh/docs/Developerguide/ALTER-DATA-SOURCE.md index 3f0ac6521..f39a34039 100644 --- a/content/zh/docs/Developerguide/ALTER-DATA-SOURCE.md +++ b/content/zh/docs/Developerguide/ALTER-DATA-SOURCE.md @@ -1,103 +1,103 @@ -# ALTER DATA SOURCE - -## 功能描述 - -修改Data Source对象的属性和内容。 - -属性有:名称和属主;内容有:类型、版本和连接选项。 - -## 注意选项 - -- 只有初始用户/系统管理员/属主才拥有修改Data Source的权限。 -- 修改属主时,新的属主用户必须是初始用户或系统管理员。 -- 当在OPTIONS中出现password选项时,需要保证openGauss每个节点的$GAUSSHOME/bin目录下存在datasource.key.cipher和datasource.key.rand文件,如果不存在这两个文件,请使用gs\_guc工具生成并使用gs\_ssh工具发布到每个节点的$GAUSSHOME/bin目录下。 - -## 语法格式 - -``` -ALTER DATA SOURCE src_name - [TYPE 'type_str'] - [VERSION {'version_str' | NULL}] - [OPTIONS ( {[ ADD | SET | DROP ] optname ['optvalue']} [, ...] )]; -ALTER DATA SOURCE src_name RENAME TO src_new_name; -ALTER DATA SOURCE src_name OWNER TO new_owner; -``` - -## 参数说明 - -- **src\_name** - - 待修改的Data Source的名称。 - - 取值范围:字符串,需要符合标识符的命名规范。 - -- **TYPE** - - 将Data Source原来的TYPE修改为指定值。 - - 取值范围:空串或非空字符串。 - -- **VERSION** - - 将Data Source原来的VERSION修改为指定值。 - - 取值范围:空串或非空字符串或NULL。 - -- **OPTIONS** - - 修改OPTIONS中的字段:增加(ADD)、修改(SET)、删除(DROP),且字段名称optname需唯一,具体要求如下: - - 增加字段:ADD可以省略,待增加字段不能已经存在了; - - 修改字段:SET不可省略,待修改字段必须存在; - - 删除字段:DROP不可省略,待删除字段必须存在,且不能指定optvalue; - -- **src\_new\_name** - - 新的Data Source名称。 - - 取值范围:字符串,需符合标识符命名规范。 - -- **new\_user** - - 对象的新属主。 - - 取值范围:字符串,有效的用户名。 - - -## 示例 - -``` ---创建一个空Data Source对象。 -openGauss=# CREATE DATA SOURCE ds_test1; - ---修改名称。 -openGauss=# ALTER DATA SOURCE ds_test1 RENAME TO ds_test; - ---修改属主。 -openGauss=# CREATE USER user_test1 IDENTIFIED BY 'Gs@123456'; -openGauss=# ALTER USER user_test1 WITH SYSADMIN; -openGauss=# ALTER DATA SOURCE ds_test OWNER TO user_test1; - ---修改TYPE和VERSION。 -openGauss=# ALTER DATA SOURCE ds_test TYPE 'MPPDB_TYPE' VERSION 'XXX'; - ---添加字段。 -openGauss=# ALTER DATA SOURCE ds_test OPTIONS (add dsn 'gaussdb', username 'test_user'); - ---修改字段。 -openGauss=# ALTER DATA SOURCE ds_test OPTIONS (set dsn 'unknown'); - ---删除字段。 -openGauss=# ALTER DATA SOURCE ds_test OPTIONS (drop username); - ---删除Data Source和user对象。 -openGauss=# DROP DATA SOURCE ds_test; -openGauss=# DROP USER user_test1; -``` - -## 相关链接 - -[CREATE DATA SOURCE](CREATE-DATA-SOURCE.md),[DROP DATA SOURCE](DROP-DATA-SOURCE.md) - +# ALTER DATA SOURCE + +## 功能描述 + +修改 Data Source 对象的属性和内容。 + +属性有:名称和属主;内容有:类型、版本和连接选项。 + +## 注意选项 + +- 只有初始用户/系统管理员/属主才拥有修改 Data Source 的权限。 +- 修改属主时,新的属主用户必须是初始用户或系统管理员。 +- 当在 OPTIONS 中出现 password 选项时,需要保证 openGauss 每个节点的$GAUSSHOME/bin目录下存在datasource.key.cipher和datasource.key.rand文件,如果不存在这两个文件,请使用gs\_guc工具生成并使用gs\_ssh工具发布到每个节点的$GAUSSHOME/bin目录下。 + +## 语法格式 + +``` +ALTER DATA SOURCE src_name + [TYPE 'type_str'] + [VERSION {'version_str' | NULL}] + [OPTIONS ( {[ ADD | SET | DROP ] optname ['optvalue']} [, ...] )]; +ALTER DATA SOURCE src_name RENAME TO src_new_name; +ALTER DATA SOURCE src_name OWNER TO new_owner; +``` + +## 参数说明 + +- **src\_name** + + 待修改的 Data Source 的名称。 + + 取值范围:字符串,需要符合标识符的命名规范。 + +- **TYPE** + + 将 Data Source 原来的 TYPE 修改为指定值。 + + 取值范围:空串或非空字符串。 + +- **VERSION** + + 将 Data Source 原来的 VERSION 修改为指定值。 + + 取值范围:空串或非空字符串或 NULL 。 + +- **OPTIONS** + + 修改 OPTIONS 中的字段:增加(ADD)、修改(SET)、删除(DROP),且字段名称 optname 需唯一,具体要求如下: + + 增加字段:ADD可以省略,待增加字段不能已经存在了; + + 修改字段:SET不可省略,待修改字段必须存在; + + 删除字段:DROP不可省略,待删除字段必须存在,且不能指定optvalue; + +- **src\_new\_name** + + 新的 Data Source 名称。 + + 取值范围:字符串,需符合标识符命名规范。 + +- **new\_user** + + 对象的新属主。 + + 取值范围:字符串,有效的用户名。 + + +## 示例 + +``` +--创建一个空 Data Source 对象。 +openGauss=# CREATE DATA SOURCE ds_test1; + +--修改名称。 +openGauss=# ALTER DATA SOURCE ds_test1 RENAME TO ds_test; + +--修改属主。 +openGauss=# CREATE USER user_test1 IDENTIFIED BY 'Gs@123456'; +openGauss=# ALTER USER user_test1 WITH SYSADMIN; +openGauss=# ALTER DATA SOURCE ds_test OWNER TO user_test1; + +--修改 TYPE 和 VERSION 。 +openGauss=# ALTER DATA SOURCE ds_test TYPE 'MPPDB_TYPE' VERSION 'XXX'; + +--添加字段。 +openGauss=# ALTER DATA SOURCE ds_test OPTIONS (add dsn 'gaussdb', username 'test_user'); + +--修改字段。 +openGauss=# ALTER DATA SOURCE ds_test OPTIONS (set dsn 'unknown'); + +--删除字段。 +openGauss=# ALTER DATA SOURCE ds_test OPTIONS (drop username); + +--删除 Data Source 和 user 对象。 +openGauss=# DROP DATA SOURCE ds_test; +openGauss=# DROP USER user_test1; +``` + +## 相关链接 + +[CREATE DATA SOURCE](CREATE-DATA-SOURCE.md),[DROP DATA SOURCE](DROP-DATA-SOURCE.md) + diff --git a/content/zh/docs/Developerguide/ALTER-DATABASE.md b/content/zh/docs/Developerguide/ALTER-DATABASE.md index 7a3aa208f..10331e752 100644 --- a/content/zh/docs/Developerguide/ALTER-DATABASE.md +++ b/content/zh/docs/Developerguide/ALTER-DATABASE.md @@ -1,142 +1,142 @@ -# ALTER DATABASE - -## 功能描述 - -修改数据库的属性,包括它的名称、所有者、连接数限制、对象隔离属性等。 - -## 注意事项 - -- 只有数据库的所有者或者被授予了数据库ALTER权限的用户才能执行ALTER DATABASE命令,系统管理员默认拥有此权限。针对所要修改属性的不同,还有以下权限约束: - - 修改数据库名称,必须拥有CREATEDB权限。 - - 修改数据库所有者,当前用户必须是该database的所有者或者系统管理员,必须拥有CREATEDB权限,且该用户是新所有者角色的成员。 - - 修改数据库默认表空间,必须拥有新表空间的CREATE权限。这个语句会从物理上将一个数据库原来缺省表空间上的表和索引移至新的表空间。注意不在缺省表空间的表和索引不受此影响。 - -- 不能重命名当前使用的数据库,如果需要重新命名,须连接至其他数据库上。 - -## 语法格式 - -- 修改数据库的最大连接数。 - - ``` - ALTER DATABASE database_name - [ [ WITH ] CONNECTION LIMIT connlimit ]; - ``` - -- 修改数据库名称。 - - ``` - ALTER DATABASE database_name - RENAME TO new_name; - ``` - -- 修改数据库所属者。 - - ``` - ALTER DATABASE database_name - OWNER TO new_owner; - ``` - -- 修改数据库默认表空间。 - - ``` - ALTER DATABASE database_name - SET TABLESPACE new_tablespace; - ``` - -- 修改数据库指定会话参数值。 - - ``` - ALTER DATABASE database_name - SET configuration_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }; - ``` - -- 数据库配置参数重置。 - - ``` - ALTER DATABASE database_name RESET - { configuration_parameter | ALL }; - ``` - - -- 修改数据库对象隔离属性。 - - ``` - ALTER DATABASE database_name [ WITH ] { ENABLE | DISABLE } PRIVATE OBJECT; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 修改数据库的对象隔离属性时须连接至该数据库,否则无法更改。 - - >- 新创建的数据库,对象隔离属性默认是关闭的。当开启数据库对象隔离属性后,普通用户只能查看有权访问的对象(表、函数、视图、字段等)。对象隔离特性对管理员用户不生效,当开启对象隔离特性后,管理员也可以查看到全量的数据库对象。 - - -## 参数说明 - -- **database\_name** - - 需要修改属性的数据库名称。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **connlimit** - - 数据库可以接收的最大并发连接数(管理员用户连接除外)。 - - 取值范围:整数,建议填写1\~50的整数。-1(缺省)表示没有限制。 - -- **new\_name** - - 数据库的新名称。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **new\_owner** - - 数据库的新所有者。 - - 取值范围:字符串,有效的用户名。 - -- **new\_tablespace** - - 数据库新的默认表空间,该表空间为数据库中已经存在的表空间。默认的表空间为pg\_default。 - - 取值范围:字符串,有效的表空间名。 - -- **configuration\_parameter** - - **value** - - 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 - - 取值范围:字符串, - - - DEFAULT - - OFF - - RESET - -- **FROM CURRENT** - - 根据当前会话连接的数据库设置该参数的值。 - -- **RESET configuration\_parameter** - - 重置指定的数据库会话参数值。 - -- **RESET ALL** - - 重置全部的数据库会话参数值。 - - ->![](public_sys-resources/icon-note.gif) **说明:** ->- 修改数据库默认表空间,会将旧表空间中的所有表和索引转移到新表空间中,该操作不会影响其他非默认表空间中的表和索引。 -> ->- 修改的数据库会话参数值,将在下一次会话中生效。 - -## 示例 - -请参考CREATE DATABASE的[示例](CREATE-DATABASE.md#zh-cn_topic_0283137050_zh-cn_topic_0237122099_zh-cn_topic_0059778277_s6be7b8abbb4b4aceb9dae686434d672c)。 - -## 相关链接 - -[CREATE DATABASE](CREATE-DATABASE.md),[DROP DATABASE](DROP-DATABASE.md) - +# ALTER DATABASE + +## 功能描述 + +修改数据库的属性,包括它的名称、所有者、连接数限制、对象隔离属性等。 + +## 注意事项 + +- 只有数据库的所有者或者被授予了数据库 ALTER 权限的用户才能执行 ALTER DATABASE 命令,系统管理员默认拥有此权限。针对所要修改属性的不同,还有以下权限约束: + - 修改数据库名称,必须拥有 CREATEDB 权限。 + - 修改数据库所有者,当前用户必须是该 database 的所有者或者系统管理员,必须拥有 CREATEDB 权限,且该用户是新所有者角色的成员。 + - 修改数据库默认表空间,必须拥有新表空间的 CREATE 权限。这个语句会从物理上将一个数据库原来缺省表空间上的表和索引移至新的表空间。注意不在缺省表空间的表和索引不受此影响。 + +- 不能重命名当前使用的数据库,如果需要重新命名,须连接至其他数据库上。 + +## 语法格式 + +- 修改数据库的最大连接数。 + + ``` + ALTER DATABASE database_name + [ [ WITH ] CONNECTION LIMIT connlimit ]; + ``` + +- 修改数据库名称。 + + ``` + ALTER DATABASE database_name + RENAME TO new_name; + ``` + +- 修改数据库所属者。 + + ``` + ALTER DATABASE database_name + OWNER TO new_owner; + ``` + +- 修改数据库默认表空间。 + + ``` + ALTER DATABASE database_name + SET TABLESPACE new_tablespace; + ``` + +- 修改数据库指定会话参数值。 + + ``` + ALTER DATABASE database_name + SET configuration_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }; + ``` + +- 数据库配置参数重置。 + + ``` + ALTER DATABASE database_name RESET + { configuration_parameter | ALL }; + ``` + + +- 修改数据库对象隔离属性。 + + ``` + ALTER DATABASE database_name [ WITH ] { ENABLE | DISABLE } PRIVATE OBJECT; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 修改数据库的对象隔离属性时须连接至该数据库,否则无法更改。 + + >- 新创建的数据库,对象隔离属性默认是关闭的。当开启数据库对象隔离属性后,普通用户只能查看有权访问的对象(表、函数、视图、字段等)。对象隔离特性对管理员用户不生效,当开启对象隔离特性后,管理员也可以查看到全量的数据库对象。 + + +## 参数说明 + +- **database\_name** + + 需要修改属性的数据库名称。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **connlimit** + + 数据库可以接收的最大并发连接数(管理员用户连接除外)。 + + 取值范围:整数,建议填写1\~50的整数。-1(缺省)表示没有限制。 + +- **new\_name** + + 数据库的新名称。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **new\_owner** + + 数据库的新所有者。 + + 取值范围:字符串,有效的用户名。 + +- **new\_tablespace** + + 数据库新的默认表空间,该表空间为数据库中已经存在的表空间。默认的表空间为pg\_default。 + + 取值范围:字符串,有效的表空间名。 + +- **configuration\_parameter** + + **value** + + 把指定的数据库会话参数值设置为给定的值。如果 value 是 DEFAULT 或者 RESET ,则在新的会话中使用系统的缺省设置。 OFF 关闭设置。 + + 取值范围:字符串, + + - DEFAULT + - OFF + - RESET + +- **FROM CURRENT** + + 根据当前会话连接的数据库设置该参数的值。 + +- **RESET configuration\_parameter** + + 重置指定的数据库会话参数值。 + +- **RESET ALL** + + 重置全部的数据库会话参数值。 + + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 修改数据库默认表空间,会将旧表空间中的所有表和索引转移到新表空间中,该操作不会影响其他非默认表空间中的表和索引。 +> +>- 修改的数据库会话参数值,将在下一次会话中生效。 + +## 示例 + +请参考 CREATE DATABASE 的[示例](CREATE-DATABASE.md#zh-cn_topic_0283137050_zh-cn_topic_0237122099_zh-cn_topic_0059778277_s6be7b8abbb4b4aceb9dae686434d672c)。 + +## 相关链接 + +[CREATE DATABASE](CREATE-DATABASE.md),[DROP DATABASE](DROP-DATABASE.md) + diff --git a/content/zh/docs/Developerguide/ALTER-DEFAULT-PRIVILEGES.md b/content/zh/docs/Developerguide/ALTER-DEFAULT-PRIVILEGES.md index afabcf95e..3309a9fe5 100644 --- a/content/zh/docs/Developerguide/ALTER-DEFAULT-PRIVILEGES.md +++ b/content/zh/docs/Developerguide/ALTER-DEFAULT-PRIVILEGES.md @@ -1,207 +1,207 @@ -# ALTER DEFAULT PRIVILEGES - -## 功能描述 - -设置应用于将来创建的对象的权限(这不会影响分配到已有对象中的权限)。 - -## 注意事项 - -目前只支持表(包括视图)、序列、函数、类型、密态数据库客户端主密钥和列加密密钥的权限更改。 - -## 语法格式 - -``` -ALTER DEFAULT PRIVILEGES - [ FOR { ROLE | USER } target_role [, ...] ] - [ IN SCHEMA schema_name [, ...] ] - abbreviated_grant_or_revoke; -``` - -- 其中abbreviated\_grant\_or\_revoke子句用于指定对哪些对象进行授权或回收权限。 - - ``` - grant_on_tables_clause - | grant_on_sequences_clause - | grant_on_functions_clause - | grant_on_types_clause - | grant_on_client_master_keys_clause - | grant_on_column_encryption_keys_clause - | revoke_on_tables_clause - | revoke_on_sequences_clause - | revoke_on_functions_clause - | revoke_on_types_clause - | revoke_on_client_master_keys_clause - | revoke_on_column_encryption_keys_clause - ``` - - -- 其中grant\_on\_tables\_clause子句用于对表授权。 - - ``` - GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } - [, ...] | ALL [ PRIVILEGES ] } - ON TABLES - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ] - ``` - -- 其中grant\_on\_sequences\_clause子句用于对序列授权。 - - ``` - GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } - [, ...] | ALL [ PRIVILEGES ] } - ON SEQUENCES - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ] - ``` - -- 其中grant\_on\_functions\_clause子句用于对函数授权。 - - ``` - GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON FUNCTIONS - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ] - ``` - -- 其中grant\_on\_types\_clause子句用于对类型授权。 - - ``` - GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON TYPES - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ] - ``` - -- 其中grant\_on\_client\_master\_keys\_clause子句用于对客户端主密钥授权。 - - ``` - GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } - ON CLIENT_MASTER_KEYS - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ] - ``` - -- 其中grant\_on\_column\_encryption\_keys\_clause子句用于对列加密密钥授权。 - - ``` - GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } - ON COLUMN_ENCRYPTION_KEYS - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ] - ``` - -- 其中revoke\_on\_tables\_clause子句用于回收表对象的权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } - [, ...] | ALL [ PRIVILEGES ] } - ON TABLES - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] - ``` - -- 其中revoke\_on\_sequences\_clause子句用于回收序列的权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } - [, ...] | ALL [ PRIVILEGES ] } - ON SEQUENCES - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] - ``` - -- 其中revoke\_on\_functions\_clause子句用于回收函数的权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { {EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON FUNCTIONS - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] - ``` - -- 其中revoke\_on\_types\_clause子句用于回收类型的权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON TYPES - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] - ``` - - -- 其中revoke\_on\_client\_master\_keys\_clause子句用于回收客户端主密钥的权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } - ON CLIENT_MASTER_KEYS - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] - ``` - -- 其中revoke\_on\_column\_encryption\_keys\_clause子句用于回收列加密密钥的权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } - ON COLUMN_ENCRYPTION_KEYS - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] - ``` - - -## 参数说明 - -- **target\_role** - - 已有角色的名称。如果省略FOR ROLE/USER,则缺省值为当前角色/用户。 - - 取值范围:已有角色的名称。 - -- **schema\_name** - - 现有模式的名称。 - - target\_role必须有schema\_name的CREATE权限。 - - 取值范围:现有模式的名称。 - -- **role\_name** - - 被授予或者取消权限角色的名称。 - - 取值范围:已存在的角色名称。 - - ->![](public_sys-resources/icon-notice.gif) **须知:** ->如果想删除一个被赋予了默认权限的角色,有必要恢复改变的缺省权限或者使用DROP OWNED BY来为角色脱离缺省的权限记录。 - -## 示例 - -``` ---将创建在模式tpcds里的所有表(和视图)的SELECT权限授予每一个用户。 -openGauss=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT SELECT ON TABLES TO PUBLIC; - ---创建用户普通用户jack。 -openGauss=# CREATE USER jack PASSWORD 'xxxxxxxxx'; - ---将tpcds下的所有表的插入权限授予用户jack。 -openGauss=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT INSERT ON TABLES TO jack; - ---撤销上述权限。 -openGauss=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE SELECT ON TABLES FROM PUBLIC; -openGauss=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE INSERT ON TABLES FROM jack; - ---删除用户jack。 -openGauss=# DROP USER jack; -``` - -## 相关链接 - -[GRANT](GRANT.md),[REVOKE](REVOKE.md) - +# ALTER DEFAULT PRIVILEGES + +## 功能描述 + +设置应用于将来创建的对象的权限(这不会影响分配到已有对象中的权限)。 + +## 注意事项 + +目前只支持表(包括视图)、序列、函数、类型、密态数据库客户端主密钥和列加密密钥的权限更改。 + +## 语法格式 + +``` +ALTER DEFAULT PRIVILEGES + [ FOR { ROLE | USER } target_role [, ...] ] + [ IN SCHEMA schema_name [, ...] ] + abbreviated_grant_or_revoke; +``` + +- 其中abbreviated\_grant\_or\_revoke子句用于指定对哪些对象进行授权或回收权限。 + + ``` + grant_on_tables_clause + | grant_on_sequences_clause + | grant_on_functions_clause + | grant_on_types_clause + | grant_on_client_master_keys_clause + | grant_on_column_encryption_keys_clause + | revoke_on_tables_clause + | revoke_on_sequences_clause + | revoke_on_functions_clause + | revoke_on_types_clause + | revoke_on_client_master_keys_clause + | revoke_on_column_encryption_keys_clause + ``` + + +- 其中grant\_on\_tables\_clause子句用于对表授权。 + + ``` + GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } + [, ...] | ALL [ PRIVILEGES ] } + ON TABLES + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ] + ``` + +- 其中grant\_on\_sequences\_clause子句用于对序列授权。 + + ``` + GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } + [, ...] | ALL [ PRIVILEGES ] } + ON SEQUENCES + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ] + ``` + +- 其中grant\_on\_functions\_clause子句用于对函数授权。 + + ``` + GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON FUNCTIONS + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ] + ``` + +- 其中grant\_on\_types\_clause子句用于对类型授权。 + + ``` + GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON TYPES + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ] + ``` + +- 其中grant\_on\_client\_master\_keys\_clause子句用于对客户端主密钥授权。 + + ``` + GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } + ON CLIENT_MASTER_KEYS + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ] + ``` + +- 其中grant\_on\_column\_encryption\_keys\_clause子句用于对列加密密钥授权。 + + ``` + GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } + ON COLUMN_ENCRYPTION_KEYS + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ] + ``` + +- 其中revoke\_on\_tables\_clause子句用于回收表对象的权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } + [, ...] | ALL [ PRIVILEGES ] } + ON TABLES + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] + ``` + +- 其中revoke\_on\_sequences\_clause子句用于回收序列的权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } + [, ...] | ALL [ PRIVILEGES ] } + ON SEQUENCES + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] + ``` + +- 其中revoke\_on\_functions\_clause子句用于回收函数的权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { {EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON FUNCTIONS + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] + ``` + +- 其中revoke\_on\_types\_clause子句用于回收类型的权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON TYPES + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] + ``` + + +- 其中revoke\_on\_client\_master\_keys\_clause子句用于回收客户端主密钥的权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } + ON CLIENT_MASTER_KEYS + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] + ``` + +- 其中revoke\_on\_column\_encryption\_keys\_clause子句用于回收列加密密钥的权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } + ON COLUMN_ENCRYPTION_KEYS + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] + ``` + + +## 参数说明 + +- **target\_role** + + 已有角色的名称。如果省略FOR ROLE/USER,则缺省值为当前角色/用户。 + + 取值范围:已有角色的名称。 + +- **schema\_name** + + 现有模式的名称。 + + target\_role必须有schema\_name的 CREATE 权限。 + + 取值范围:现有模式的名称。 + +- **role\_name** + + 被授予或者取消权限角色的名称。 + + 取值范围:已存在的角色名称。 + + +>![](public_sys-resources/icon-notice.gif) **须知:** +>如果想删除一个被赋予了默认权限的角色,有必要恢复改变的缺省权限或者使用 DROP OWNED BY 来为角色脱离缺省的权限记录。 + +## 示例 + +``` +--将创建在模式 tpcds 里的所有表(和视图)的 SELECT 权限授予每一个用户。 +openGauss=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT SELECT ON TABLES TO PUBLIC; + +--创建用户普通用户 jack 。 +openGauss=# CREATE USER jack PASSWORD 'xxxxxxxxx'; + +--将 tpcds 下的所有表的插入权限授予用户 jack 。 +openGauss=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT INSERT ON TABLES TO jack; + +--撤销上述权限。 +openGauss=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE SELECT ON TABLES FROM PUBLIC; +openGauss=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE INSERT ON TABLES FROM jack; + +--删除用户 jack 。 +openGauss=# DROP USER jack; +``` + +## 相关链接 + +[GRANT](GRANT.md),[REVOKE](REVOKE.md) + diff --git a/content/zh/docs/Developerguide/ALTER-DIRECTORY.md b/content/zh/docs/Developerguide/ALTER-DIRECTORY.md index 1733b75cc..6cdbae892 100644 --- a/content/zh/docs/Developerguide/ALTER-DIRECTORY.md +++ b/content/zh/docs/Developerguide/ALTER-DIRECTORY.md @@ -1,41 +1,41 @@ -# ALTER DIRECTORY - -## 功能描述 - -对directory属性进行修改。 - -## 注意事项 - -- 目前只支持修改directory属主。 -- 当enable_access_server_directory=off时,只允许初始用户修改directory属主;当enable_access_server_directory=on时,具有SYSADMIN权限的用户和directory对象的属主可以修改directory,且要求该用户是新属主的成员。 - -## 语法格式 - -``` -ALTER DIRECTORY directory_name - OWNER TO new_owner; -``` - -## 参数描述 - -**directory\_name** - -需要修改的目录名称,范围为已经存在的目录名称。 - -## 示例 - -``` ---创建目录。 -openGauss=# CREATE OR REPLACE DIRECTORY dir as '/tmp/'; - ---修改目录的owner。 -openGauss=# ALTER DIRECTORY dir OWNER TO system; - ---删除目录。 -openGauss=# DROP DIRECTORY dir; -``` - -## 相关链接 - -[CREATE DIRECTORY](CREATE-DIRECTORY.md),[DROP DIRECTORY](DROP-DIRECTORY.md) - +# ALTER DIRECTORY + +## 功能描述 + +对 directory 属性进行修改。 + +## 注意事项 + +- 目前只支持修改 directory 属主。 +- 当enable_access_server_directory=off时,只允许初始用户修改 directory 属主;当enable_access_server_directory=on时,具有 SYSADMIN 权限的用户和 directory 对象的属主可以修改 directory ,且要求该用户是新属主的成员。 + +## 语法格式 + +``` +ALTER DIRECTORY directory_name + OWNER TO new_owner; +``` + +## 参数描述 + +**directory\_name** + +需要修改的目录名称,范围为已经存在的目录名称。 + +## 示例 + +``` +--创建目录。 +openGauss=# CREATE OR REPLACE DIRECTORY dir as '/tmp/'; + +--修改目录的 owner 。 +openGauss=# ALTER DIRECTORY dir OWNER TO system; + +--删除目录。 +openGauss=# DROP DIRECTORY dir; +``` + +## 相关链接 + +[CREATE DIRECTORY](CREATE-DIRECTORY.md),[DROP DIRECTORY](DROP-DIRECTORY.md) + diff --git a/content/zh/docs/Developerguide/ALTER-EXTENSION.md b/content/zh/docs/Developerguide/ALTER-EXTENSION.md index 1acb38f83..f44612eec 100644 --- a/content/zh/docs/Developerguide/ALTER-EXTENSION.md +++ b/content/zh/docs/Developerguide/ALTER-EXTENSION.md @@ -1,140 +1,140 @@ -# ALTER EXTENSION - -## 功能描述 - -修改插件扩展。 - -## 注意事项 - -ALTER EXTENSION 修改一个已安装的扩展的定义。这里有几种方式: - -- UPDATE - - 这种方式更新这个扩展到一个新的版本。这个扩展必须满足一个适用的更新脚本(或者一系列脚本)这样就能修改当前安装版本到一个要求的版本。 - -- SET SCHEMA - - 这种方式移动扩展对象到另一个模式。这个扩展必须relocatable才能使命令成功。 - -- ADD member\_object - - 这种方式添加一个已存在对象到扩展。这主要在扩展更新脚本上有用。 这个对象接着会被视为扩展的成员; 显而易见,该对象只能通过取消扩展来取消 。 - -- DROP member\_object - - 这个方式从扩展上移除一个成员对象。 主要在扩展更新脚本上有用。这个对象没有被取消, 只是从扩展里分开了。 - - 您必须拥有扩展来使用 ALTER EXTENSION。 这个 ADD/DROP 方式要求添加/删除对象的所有权。 - - -## 语法格式 - -``` -ALTER EXTENSION name UPDATE [ TO new_version ] -ALTER EXTENSION name SET SCHEMA new_schema -ALTER EXTENSION name ADD member_object -ALTER EXTENSION name DROP member_object - -where member_object is: - - AGGREGATE agg_name (agg_type [, ...] ) | - CAST (source_type AS target_type) | - COLLATION object_name | - CONVERSION object_name | - DOMAIN object_name | - EVENT TRIGGER object_name | - FOREIGN DATA WRAPPER object_name | - FOREIGN TABLE object_name | - FUNCTION function_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) | - MATERIALIZED VIEW object_name | - OPERATOR operator_name (left_type, right_type) | - OPERATOR CLASS object_name USING index_method | - OPERATOR FAMILY object_name USING index_method | - [ PROCEDURAL ] LANGUAGE object_name | - SCHEMA object_name | - SEQUENCE object_name | - SERVER object_name | - TABLE object_name | - TEXT SEARCH CONFIGURATION object_name | - TEXT SEARCH DICTIONARY object_name | - TEXT SEARCH PARSER object_name | - TEXT SEARCH TEMPLATE object_name | - TYPE object_name | - VIEW object_name -``` - -## 参数说明 - -- **name** - - 已安装扩展的名称。 - -- **new\_version** - - 扩展的新版本。可以通过被标识符和字面字符重写。如果不指定的扩展的新版本,ALTER EXTENSION UPDATE会更新到扩展的控制文件中显示的默认版本。 - -- **new\_schema** - - 扩展的新模式。 - -- **object\_name** - - **agg\_name** - - **function\_name** - - **operator\_name** - - 从扩展里被被添加或移除的对象的名称。包含表、聚合 、域、外链表、函数、操作符、操作符类、操作符族、序列、文本搜索对象、类型和能被模式合格的视图的名称。 - -- **agg\_type** - - 在聚合函数操作上的一个输入数据类型,去引用一个零参数聚合函数,写 \* 代替这些输入数据类型列表。 - -- **source\_type** - - 强制转换的源数据类型的名称。 - -- **target\_type** - - 强制转换的目标数据类型的名称。 - -- **argmode** - - 这个函数参数的模型:IN、OUT、INOUT或者VARIADIC。如果省略的话,默认值为IN。ALTER EXTENSION 不关心OUT参数 ,因为确认函数的一致性只需要输入参数,因此列出IN、INOUT和VARIADIC参数就足够了。 - -- **argname** - - 函数参数的名称。ALTER EXTENSION不关心参数名称,确认函数的一致性只需要参数数据类型。 - -- **argtype** - - 函数参数的数据类型(可以有模式修饰)。 - -- **left\_type** - - **right\_type** - - 操作符参数的数据类型(可以有模式修饰),为前缀或后缀运算符的丢失参数写NONE 。 - - -## 示例 - -更新 hstore 扩展到版本 2.0: - -``` -ALTER EXTENSION hstore UPDATE TO '2.0'; -``` - -更新 hstore扩展的模式为utils: - -``` -ALTER EXTENSION hstore SET SCHEMA utils; -``` - -添加一个已存在的函数给 hstore 扩展: - -``` -ALTER EXTENSION hstore ADD FUNCTION populate_record(anyelement, hstore); -``` - +# ALTER EXTENSION + +## 功能描述 + +修改插件扩展。 + +## 注意事项 + +ALTER EXTENSION 修改一个已安装的扩展的定义。这里有几种方式: + +- UPDATE + + 这种方式更新这个扩展到一个新的版本。这个扩展必须满足一个适用的更新脚本(或者一系列脚本)这样就能修改当前安装版本到一个要求的版本。 + +- SET SCHEMA + + 这种方式移动扩展对象到另一个模式。这个扩展必须 relocatable 才能使命令成功。 + +- ADD member\_object + + 这种方式添加一个已存在对象到扩展。这主要在扩展更新脚本上有用。 这个对象接着会被视为扩展的成员; 显而易见,该对象只能通过取消扩展来取消 。 + +- DROP member\_object + + 这个方式从扩展上移除一个成员对象。 主要在扩展更新脚本上有用。这个对象没有被取消, 只是从扩展里分开了。 + + 您必须拥有扩展来使用 ALTER EXTENSION 。 这个 ADD/DROP 方式要求添加/删除对象的所有权。 + + +## 语法格式 + +``` +ALTER EXTENSION name UPDATE [ TO new_version ] +ALTER EXTENSION name SET SCHEMA new_schema +ALTER EXTENSION name ADD member_object +ALTER EXTENSION name DROP member_object + +where member_object is: + + AGGREGATE agg_name (agg_type [, ...] ) | + CAST (source_type AS target_type) | + COLLATION object_name | + CONVERSION object_name | + DOMAIN object_name | + EVENT TRIGGER object_name | + FOREIGN DATA WRAPPER object_name | + FOREIGN TABLE object_name | + FUNCTION function_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) | + MATERIALIZED VIEW object_name | + OPERATOR operator_name (left_type, right_type) | + OPERATOR CLASS object_name USING index_method | + OPERATOR FAMILY object_name USING index_method | + [ PROCEDURAL ] LANGUAGE object_name | + SCHEMA object_name | + SEQUENCE object_name | + SERVER object_name | + TABLE object_name | + TEXT SEARCH CONFIGURATION object_name | + TEXT SEARCH DICTIONARY object_name | + TEXT SEARCH PARSER object_name | + TEXT SEARCH TEMPLATE object_name | + TYPE object_name | + VIEW object_name +``` + +## 参数说明 + +- **name** + + 已安装扩展的名称。 + +- **new\_version** + + 扩展的新版本。可以通过被标识符和字面字符重写。如果不指定的扩展的新版本, ALTER EXTENSION UPDATE 会更新到扩展的控制文件中显示的默认版本。 + +- **new\_schema** + + 扩展的新模式。 + +- **object\_name** + + **agg\_name** + + **function\_name** + + **operator\_name** + + 从扩展里被被添加或移除的对象的名称。包含表、聚合 、域、外链表、函数、操作符、操作符类、操作符族、序列、文本搜索对象、类型和能被模式合格的视图的名称。 + +- **agg\_type** + + 在聚合函数操作上的一个输入数据类型,去引用一个零参数聚合函数,写 \* 代替这些输入数据类型列表。 + +- **source\_type** + + 强制转换的源数据类型的名称。 + +- **target\_type** + + 强制转换的目标数据类型的名称。 + +- **argmode** + + 这个函数参数的模型:IN、OUT、INOUT或者 VARIADIC 。如果省略的话,默认值为 IN 。 ALTER EXTENSION 不关心 OUT 参数 ,因为确认函数的一致性只需要输入参数,因此列出IN、INOUT和 VARIADIC 参数就足够了。 + +- **argname** + + 函数参数的名称。 ALTER EXTENSION 不关心参数名称,确认函数的一致性只需要参数数据类型。 + +- **argtype** + + 函数参数的数据类型(可以有模式修饰)。 + +- **left\_type** + + **right\_type** + + 操作符参数的数据类型(可以有模式修饰),为前缀或后缀运算符的丢失参数写 NONE 。 + + +## 示例 + +更新 hstore 扩展到版本 2.0: + +``` +ALTER EXTENSION hstore UPDATE TO '2.0'; +``` + +更新 hstore 扩展的模式为utils: + +``` +ALTER EXTENSION hstore SET SCHEMA utils; +``` + +添加一个已存在的函数给 hstore 扩展: + +``` +ALTER EXTENSION hstore ADD FUNCTION populate_record(anyelement, hstore); +``` + diff --git a/content/zh/docs/Developerguide/ALTER-FOREIGN-TABLE.md b/content/zh/docs/Developerguide/ALTER-FOREIGN-TABLE.md index 603dd4453..cf5f5f15c 100644 --- a/content/zh/docs/Developerguide/ALTER-FOREIGN-TABLE.md +++ b/content/zh/docs/Developerguide/ALTER-FOREIGN-TABLE.md @@ -1,111 +1,111 @@ -# ALTER FOREIGN TABLE - -## 功能描述 - -对外表进行修改。 - -## 语法格式 - -``` -ALTER FOREIGN TABLE [ IF EXISTS ] table_name - OPTIONS ( {[ ADD | SET | DROP ] option ['value']}[, ... ]); - -ALTER FOREIGN TABLE [ IF EXISTS ] table_name - ALTER column_name OPTIONS; -``` - -## 参数说明 - -- **table\_name** - - 需要修改的外表名称。 - - 取值范围:已存在的外表名。 - -- **option** - - 改变外表或者外表字段的选项。ADD、SET和DROP指定执行的操作。如果没有显式设置,那么默认为ADD。选项的名字不允许重复(尽管表选项和表字段选项可以有相同的名字)。选项的名称和值也会通过外部数据封装器的类库进行校验。 - - - oracle\_fdw支持的options包括: - - **table** - - oracle server侧的表名。需要同oracle系统表中记录的表名完全一致,通常是由大写字符组成。 - - - **schema** - - 表所对应的schema(或owner)。需要与oracle系统表中记录的表名完全一致,通常是由大写字符组成。 - - - mysql\_fdw支持的options包括: - - **dbname** - - MySQL的database名称。 - - - **table\_name** - - MySQL侧的表名。 - - - postgres\_fdw支持的options包括: - - **schema\_name** - - 远端server的schema名称。如果不指定的话,将使用外表自身的schema名称作为远端的schema名称。 - - - **table\_name** - - 远端server的表名。如果不指定的话,将使用外表自身的表名作为远端的表名。 - - - **column\_name** - - 远端server的表的列名。如果不指定的话,将使用外表自身的列名作为远端的的表的列名。 - - - file\_fdw支持的options包括: - - - filename - - 指定要读取的文件,必需的参数,且必须是一个绝对路径名。 - - - format - - 远端server的文件格式,支持text/csv/binary/fixed四种格式,和COPY语句的FORMAT选项相同。 - - - header - - 指定的文件是否有标题行,与COPY语句的HEADER选项相同。 - - - delimiter - - 指定文件的分隔符,与COPY的DELIMITER选项相同。 - - - quote - - 指定文件的引用字符,与COPY的QUOTE选项相同。 - - - escape - - 指定文件的转义字符,与COPY的ESCAPE选项相同。 - - - null - - 指定文件的null字符串,与COPY的NULL选项相同。 - - - encoding - - 指定文件的编码,与COPY的ENCODING选项相同。 - - - force\_not\_null - - 这是一个布尔选项。如果为真,则声明字段的值不应该匹配空字符串(也就是,文件级别null选项)。与COPY的 FORCE\_NOT\_NULL选项里的字段相同。 - - - >![](public_sys-resources/icon-note.gif) **说明:** - >file\_fdw更多使用请参见[file\_fdw](file_fdw.md)。 - - -- **value** - - option的新值。 - - -## 相关链接 - -[CREATE FOREIGN TABLE](CREATE-FOREIGN-TABLE.md),[DROP FOREIGN TABLE](DROP-FOREIGN-TABLE.md) - +# ALTER FOREIGN TABLE + +## 功能描述 + +对外表进行修改。 + +## 语法格式 + +``` +ALTER FOREIGN TABLE [ IF EXISTS ] table_name + OPTIONS ( {[ ADD | SET | DROP ] option ['value']}[, ... ]); + +ALTER FOREIGN TABLE [ IF EXISTS ] table_name + ALTER column_name OPTIONS; +``` + +## 参数说明 + +- **table\_name** + + 需要修改的外表名称。 + + 取值范围:已存在的外表名。 + +- **option** + + 改变外表或者外表字段的选项。ADD、SET和 DROP 指定执行的操作。如果没有显式设置,那么默认为 ADD 。选项的名字不允许重复(尽管表选项和表字段选项可以有相同的名字)。选项的名称和值也会通过外部数据封装器的类库进行校验。 + + - oracle\_fdw支持的 options 包括: + - **table** + +oracle server 侧的表名。需要同 oracle 系统表中记录的表名完全一致,通常是由大写字符组成。 + + - **schema** + + 表所对应的schema(或owner)。需要与 oracle 系统表中记录的表名完全一致,通常是由大写字符组成。 + + - mysql\_fdw支持的 options 包括: + - **dbname** + +MySQL 的 database 名称。 + + - **table\_name** + +MySQL 侧的表名。 + + - postgres\_fdw支持的 options 包括: + - **schema\_name** + + 远端 server 的 schema 名称。如果不指定的话,将使用外表自身的 schema 名称作为远端的 schema 名称。 + + - **table\_name** + + 远端 server 的表名。如果不指定的话,将使用外表自身的表名作为远端的表名。 + + - **column\_name** + + 远端 server 的表的列名。如果不指定的话,将使用外表自身的列名作为远端的的表的列名。 + + - file\_fdw支持的 options 包括: + + - filename + + 指定要读取的文件,必需的参数,且必须是一个绝对路径名。 + + - format + + 远端 server 的文件格式,支持text/csv/binary/fixed四种格式,和 COPY 语句的 FORMAT 选项相同。 + + - header + + 指定的文件是否有标题行,与 COPY 语句的 HEADER 选项相同。 + + - delimiter + + 指定文件的分隔符,与 COPY 的 DELIMITER 选项相同。 + + - quote + + 指定文件的引用字符,与 COPY 的 QUOTE 选项相同。 + + - escape + + 指定文件的转义字符,与 COPY 的 ESCAPE 选项相同。 + + - null + + 指定文件的 null 字符串,与 COPY 的 NULL 选项相同。 + + - encoding + + 指定文件的编码,与 COPY 的 ENCODING 选项相同。 + + - force\_not\_null + + 这是一个布尔选项。如果为真,则声明字段的值不应该匹配空字符串(也就是,文件级别 null 选项)。与 COPY 的 FORCE\_NOT\_NULL选项里的字段相同。 + + + >![](public_sys-resources/icon-note.gif) **说明:** + >file\_fdw更多使用请参见[file\_fdw](file_fdw.md)。 + + +- **value** + +option 的新值。 + + +## 相关链接 + +[CREATE FOREIGN TABLE](CREATE-FOREIGN-TABLE.md),[DROP FOREIGN TABLE](DROP-FOREIGN-TABLE.md) + diff --git a/content/zh/docs/Developerguide/ALTER-FUNCTION.md b/content/zh/docs/Developerguide/ALTER-FUNCTION.md index 69b2343c6..cbf871356 100644 --- a/content/zh/docs/Developerguide/ALTER-FUNCTION.md +++ b/content/zh/docs/Developerguide/ALTER-FUNCTION.md @@ -1,192 +1,192 @@ -# ALTER FUNCTION - -## 功能描述 - -修改自定义函数的属性。 - -## 注意事项 - -只有函数的所有者或者被授予了函数ALTER权限的用户才能执行ALTER FUNCTION命令,系统管理员默认拥有该权限。针对所要修改属性的不同,还有以下权限约束: - -- 如果函数中涉及对临时表相关的操作,则无法使用ALTER FUNCTION。 -- 修改函数的所有者或修改函数的模式,当前用户必须是该函数的所有者或者系统管理员,且该用户是新所有者角色的成员。 -- 只有系统管理员和初始化用户可以将function的schema修改成public。 - -## 语法格式 - -- 修改自定义函数的附加参数。 - - ``` - ALTER FUNCTION function_name ( [ { [ argmode ] [ argname ] argtype} [, ...] ] ) - action [ ... ] [ RESTRICT ]; - ``` - - 其中附加参数action子句语法为。 - - ``` - {CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT} - | {IMMUTABLE | STABLE | VOLATILE} - | {SHIPPABLE | NOT SHIPPABLE} - | {NOT FENCED | FENCED} - | [ NOT ] LEAKPROOF - | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER } - | AUTHID { DEFINER | CURRENT_USER } - | COST execution_cost - | ROWS result_rows - | SET configuration_parameter { { TO | = } { value | DEFAULT }| FROM CURRENT} - | RESET {configuration_parameter | ALL} - ``` - -- 修改自定义函数的名称。 - - ``` - ALTER FUNCTION funname ( [ { [ argmode ] [ argname ] argtype} [, ...] ] ) - RENAME TO new_name; - ``` - -- 修改自定义函数的所属者。 - - ``` - ALTER FUNCTION funname ( [ { [ argmode ] [ argname ] argtype} [, ...] ] ) - OWNER TO new_owner; - ``` - -- 修改自定义函数的模式。 - - ``` - ALTER FUNCTION funname ( [ { [ argmode ] [ argname ] argtype} [, ...] ] ) - SET SCHEMA new_schema; - ``` - - -## 参数说明 - -- **function\_name** - - 要修改的函数名称。 - - 取值范围:已存在的函数名。 - -- **argmode** - - 标识该参数是输入、输出参数。 - - 取值范围:IN/OUT/INOUT/VARIADIC。 - -- **argname** - - 参数名称。 - - 取值范围:字符串,符合标识符命名规范。 - -- **argtype** - - 函数参数的类型。 - -- **CALLED ON NULL INPUT** - - 表明该函数的某些参数是NULL的时候可以按照正常的方式调用。缺省时与指定此参数的作用相同。 - -- **RETURNS NULL ON NULL INPUT** - - **STRICT** - - STRICT用于指定如果函数的某个参数是NULL,此函数总是返回NULL。如果声明了这个参数,则如果存在NULL参数时不会执行该函数;而只是自动假设一个NULL结果。 - - RETURNS NULL ON NULL INPUT和STRICT的功能相同。 - -- **IMMUTABLE** - - 表示该函数在给出同样的参数值时总是返回同样的结果。 - -- **STABLE** - - 表示该函数不能修改数据库,对相同参数值,在同一次表扫描里,该函数的返回值不变,但是返回值可能在不同SQL语句之间变化。 - -- **VOLATILE** - - 表示该函数值可以在一次表扫描内改变,不会做任何优化。 - -- **LEAKPROOF** - - 表示该函数没有副作用,指出参数只包括返回值。LEAKPROOF只能由系统管理员设置。 - -- **EXTERNAL** - - (可选)目的是和SQL兼容,这个特性适合于所有函数,而不仅是外部函数。 - -- **SECURITY INVOKER** - - **AUTHID CURRENT\_USER** - - 表明该函数将以调用它的用户的权限执行。缺省时与指定此参数的作用相同。 - - SECURITY INVOKER和AUTHID CURRENT\_USER的功能相同。 - -- **SECURITY DEFINER** - - **AUTHID DEFINER** - - 声明该函数将以创建它的用户的权限执行。 - - AUTHID DEFINER和SECURITY DEFINER的功能相同。 - -- **COST execution\_cost** - - 用来估计函数的执行成本。 - - execution\_cost以cpu\_operator\_cost为单位。 - - 取值范围:正数 - -- **ROWS result\_rows** - - 估计函数返回的行数。用于函数返回的是一个集合。 - - 取值范围:正数,默认值是1000行。 - -- **configuration\_parameter** - - **value** - - 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 - - 取值范围:字符串 - - - DEFAULT - - OFF - - RESET - - 指定默认值。 - - - **from current** - - 取当前会话中的值设置为configuration\_parameter的值。 - - -- **new\_name** - - 函数的新名称。要修改函数的所属模式,必须拥有新模式的CREATE权限。 - - 取值范围:字符串,符合标识符命名规范。 - -- **new\_owner** - - 函数的新所有者。要修改函数的所有者,新所有者必须拥有该函数所属模式的CREATE权限。 - - 取值范围:已存在的用户角色。 - -- **new\_schema** - - 函数的新模式。 - - 取值范围:已存在的模式。 - - -## 示例 - -请参见CREATE FUNCTION的[示例](CREATE-FUNCTION.md#zh-cn_topic_0283136560_zh-cn_topic_0237122104_zh-cn_topic_0059778837_scc61c5d3cc3e48c1a1ef323652dda821)。 - -## 相关链接 - -[CREATE FUNCTION](CREATE-FUNCTION.md),[DROP FUNCTION](DROP-FUNCTION.md) - +# ALTER FUNCTION + +## 功能描述 + +修改自定义函数的属性。 + +## 注意事项 + +只有函数的所有者或者被授予了函数 ALTER 权限的用户才能执行 ALTER FUNCTION 命令,系统管理员默认拥有该权限。针对所要修改属性的不同,还有以下权限约束: + +- 如果函数中涉及对临时表相关的操作,则无法使用 ALTER FUNCTION 。 +- 修改函数的所有者或修改函数的模式,当前用户必须是该函数的所有者或者系统管理员,且该用户是新所有者角色的成员。 +- 只有系统管理员和初始化用户可以将 function 的 schema 修改成 public 。 + +## 语法格式 + +- 修改自定义函数的附加参数。 + + ``` + ALTER FUNCTION function_name ( [ { [ argmode ] [ argname ] argtype} [, ...] ] ) + action [ ... ] [ RESTRICT ]; + ``` + + 其中附加参数 action 子句语法为。 + + ``` + {CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT} + | {IMMUTABLE | STABLE | VOLATILE} + | {SHIPPABLE | NOT SHIPPABLE} + | {NOT FENCED | FENCED} + | [ NOT ] LEAKPROOF + | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER } + | AUTHID { DEFINER | CURRENT_USER } + | COST execution_cost + | ROWS result_rows + | SET configuration_parameter { { TO | = } { value | DEFAULT }| FROM CURRENT} + | RESET {configuration_parameter | ALL} + ``` + +- 修改自定义函数的名称。 + + ``` + ALTER FUNCTION funname ( [ { [ argmode ] [ argname ] argtype} [, ...] ] ) + RENAME TO new_name; + ``` + +- 修改自定义函数的所属者。 + + ``` + ALTER FUNCTION funname ( [ { [ argmode ] [ argname ] argtype} [, ...] ] ) + OWNER TO new_owner; + ``` + +- 修改自定义函数的模式。 + + ``` + ALTER FUNCTION funname ( [ { [ argmode ] [ argname ] argtype} [, ...] ] ) + SET SCHEMA new_schema; + ``` + + +## 参数说明 + +- **function\_name** + + 要修改的函数名称。 + + 取值范围:已存在的函数名。 + +- **argmode** + + 标识该参数是输入、输出参数。 + + 取值范围:IN/OUT/INOUT/VARIADIC。 + +- **argname** + + 参数名称。 + + 取值范围:字符串,符合标识符命名规范。 + +- **argtype** + + 函数参数的类型。 + +- **CALLED ON NULL INPUT** + + 表明该函数的某些参数是 NULL 的时候可以按照正常的方式调用。缺省时与指定此参数的作用相同。 + +- **RETURNS NULL ON NULL INPUT** + + **STRICT** + +STRICT 用于指定如果函数的某个参数是 NULL ,此函数总是返回 NULL 。如果声明了这个参数,则如果存在 NULL 参数时不会执行该函数;而只是自动假设一个 NULL 结果。 + +RETURNS NULL ON NULL INPUT 和 STRICT 的功能相同。 + +- **IMMUTABLE** + + 表示该函数在给出同样的参数值时总是返回同样的结果。 + +- **STABLE** + + 表示该函数不能修改数据库,对相同参数值,在同一次表扫描里,该函数的返回值不变,但是返回值可能在不同 SQL 语句之间变化。 + +- **VOLATILE** + + 表示该函数值可以在一次表扫描内改变,不会做任何优化。 + +- **LEAKPROOF** + + 表示该函数没有副作用,指出参数只包括返回值。 LEAKPROOF 只能由系统管理员设置。 + +- **EXTERNAL** + + (可选)目的是和 SQL 兼容,这个特性适合于所有函数,而不仅是外部函数。 + +- **SECURITY INVOKER** + + **AUTHID CURRENT\_USER** + + 表明该函数将以调用它的用户的权限执行。缺省时与指定此参数的作用相同。 + +SECURITY INVOKER 和AUTHID CURRENT\_USER的功能相同。 + +- **SECURITY DEFINER** + + **AUTHID DEFINER** + + 声明该函数将以创建它的用户的权限执行。 + +AUTHID DEFINER 和 SECURITY DEFINER 的功能相同。 + +- **COST execution\_cost** + + 用来估计函数的执行成本。 + + execution\_cost以cpu\_operator\_cost为单位。 + + 取值范围:正数 + +- **ROWS result\_rows** + + 估计函数返回的行数。用于函数返回的是一个集合。 + + 取值范围:正数,默认值是 1000 行。 + +- **configuration\_parameter** + - **value** + + 把指定的数据库会话参数值设置为给定的值。如果 value 是 DEFAULT 或者 RESET ,则在新的会话中使用系统的缺省设置。 OFF 关闭设置。 + + 取值范围:字符串 + + - DEFAULT + - OFF + - RESET + + 指定默认值。 + + - **from current** + + 取当前会话中的值设置为configuration\_parameter的值。 + + +- **new\_name** + + 函数的新名称。要修改函数的所属模式,必须拥有新模式的 CREATE 权限。 + + 取值范围:字符串,符合标识符命名规范。 + +- **new\_owner** + + 函数的新所有者。要修改函数的所有者,新所有者必须拥有该函数所属模式的 CREATE 权限。 + + 取值范围:已存在的用户角色。 + +- **new\_schema** + + 函数的新模式。 + + 取值范围:已存在的模式。 + + +## 示例 + +请参见 CREATE FUNCTION 的[示例](CREATE-FUNCTION.md#zh-cn_topic_0283136560_zh-cn_topic_0237122104_zh-cn_topic_0059778837_scc61c5d3cc3e48c1a1ef323652dda821)。 + +## 相关链接 + +[CREATE FUNCTION](CREATE-FUNCTION.md),[DROP FUNCTION](DROP-FUNCTION.md) + diff --git a/content/zh/docs/Developerguide/ALTER-GROUP.md b/content/zh/docs/Developerguide/ALTER-GROUP.md index ba8f1c995..0fc4b9335 100644 --- a/content/zh/docs/Developerguide/ALTER-GROUP.md +++ b/content/zh/docs/Developerguide/ALTER-GROUP.md @@ -1,56 +1,56 @@ -# ALTER GROUP - -## 功能描述 - -修改一个用户组的属性。 - -## 注意事项 - -ALTER GROUP是ALTER ROLE的别名,非SQL标准语法,不推荐使用,建议用户直接使用ALTER ROLE替代。 - -## 语法格式 - -- 向用户组中添加用户。 - - ``` - ALTER GROUP group_name - ADD USER user_name [, ... ]; - ``` - - -- 从用户组中删除用户。 - - ``` - ALTER GROUP group_name - DROP USER user_name [, ... ]; - ``` - -- 修改用户组的名称。 - - ``` - ALTER GROUP group_name - RENAME TO new_name; - ``` - - -## 参数说明 - -请参考ALTER ROLE的[参数说明](ALTER-ROLE.md#zh-cn_topic_0283137195_zh-cn_topic_0237122068_zh-cn_topic_0059778744_s50961af6143d4aafaf8fa02febbbf331)。 - -## 示例 - -``` ---向用户组中添加用户。 -openGauss=# ALTER GROUP super_users ADD USER lche, jim; - ---从用户组中删除用户。 -openGauss=# ALTER GROUP super_users DROP USER jim; - ---修改用户组的名称。 -openGauss=# ALTER GROUP super_users RENAME TO normal_users; -``` - -## 相关链接 - -[ALTER GROUP](ALTER-GROUP.md),[DROP GROUP](DROP-GROUP.md),[ALTER ROLE](ALTER-ROLE.md) - +# ALTER GROUP + +## 功能描述 + +修改一个用户组的属性。 + +## 注意事项 + +ALTER GROUP 是 ALTER ROLE 的别名,非 SQL 标准语法,不推荐使用,建议用户直接使用 ALTER ROLE 替代。 + +## 语法格式 + +- 向用户组中添加用户。 + + ``` + ALTER GROUP group_name + ADD USER user_name [, ... ]; + ``` + + +- 从用户组中删除用户。 + + ``` + ALTER GROUP group_name + DROP USER user_name [, ... ]; + ``` + +- 修改用户组的名称。 + + ``` + ALTER GROUP group_name + RENAME TO new_name; + ``` + + +## 参数说明 + +请参考 ALTER ROLE 的[参数说明](ALTER-ROLE.md#zh-cn_topic_0283137195_zh-cn_topic_0237122068_zh-cn_topic_0059778744_s50961af6143d4aafaf8fa02febbbf331)。 + +## 示例 + +``` +--向用户组中添加用户。 +openGauss=# ALTER GROUP super_users ADD USER lche, jim; + +--从用户组中删除用户。 +openGauss=# ALTER GROUP super_users DROP USER jim; + +--修改用户组的名称。 +openGauss=# ALTER GROUP super_users RENAME TO normal_users; +``` + +## 相关链接 + +[ALTER GROUP](ALTER-GROUP.md),[DROP GROUP](DROP-GROUP.md),[ALTER ROLE](ALTER-ROLE.md) + diff --git a/content/zh/docs/Developerguide/ALTER-INDEX.md b/content/zh/docs/Developerguide/ALTER-INDEX.md index 3e69ecd29..c9ca5bb8a 100644 --- a/content/zh/docs/Developerguide/ALTER-INDEX.md +++ b/content/zh/docs/Developerguide/ALTER-INDEX.md @@ -1,165 +1,165 @@ -# ALTER INDEX - -## 功能描述 - -ALTER INDEX用于修改现有索引的定义。 - -它有几种子形式: - -- IF EXISTS - - 如果指定的索引不存在,则发出一个notice而不是error。 - -- RENAME TO - - 只改变索引的名称。对存储的数据没有影响。 - -- SET TABLESPACE - - 这个选项会改变索引的表空间为指定表空间,并且把索引相关的数据文件移动到新的表空间里。 - -- SET \( \{ STORAGE\_PARAMETER = value \} \[, ...\] \) - - 改变索引的一个或多个索引方法特定的存储参数。 需要注意的是索引内容不会被这个命令立即修改,根据参数的不同,可能需要使用REINDEX重建索引来获得期望的效果。 - -- RESET \( \{ storage\_parameter \} \[, ...\] \) - - 重置索引的一个或多个索引方法特定的存储参数为缺省值。与SET一样,可能需要使用REINDEX来完全更新索引。 - -- \[ MODIFY PARTITION index\_partition\_name \] UNUSABLE - - 用于设置表或者索引分区上的索引不可用。 - -- REBUILD \[ PARTITION index\_partition\_name \] - - 用于重建表或者索引分区上的索引。 - -- RENAME PARTITION - - 用于重命名索引分区。 - -- MOVE PARTITION - - 用于修改索引分区的所属表空间。 - - -## 注意事项 - -只有索引的所有者或者拥有索引所在表的INDEX权限的用户有权限执行此命令,系统管理员默认拥有此权限。 - -## 语法格式 - -- 重命名表索引的名称。 - - ``` - ALTER INDEX [ IF EXISTS ] index_name - RENAME TO new_name; - ``` - - -- 修改表索引的所属空间。 - - ``` - ALTER INDEX [ IF EXISTS ] index_name - SET TABLESPACE tablespace_name; - ``` - - -- 修改表索引的存储参数。 - - ``` - ALTER INDEX [ IF EXISTS ] index_name - SET ( {storage_parameter = value} [, ... ] ); - ``` - - -- 重置表索引的存储参数。 - - ``` - ALTER INDEX [ IF EXISTS ] index_name - RESET ( storage_parameter [, ... ] ) ; - ``` - - -- 设置表索引或索引分区不可用。 - - ``` - ALTER INDEX [ IF EXISTS ] index_name - [ MODIFY PARTITION index_partition_name ] UNUSABLE; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >列存表不支持该语法。 - - -- 重建表索引或索引分区。 - - ``` - ALTER INDEX index_name - REBUILD [ PARTITION index_partition_name ]; - ``` - - -- 重命名索引分区。 - - ``` - ALTER INDEX [ IF EXISTS ] index_name - RENAME PARTITION index_partition_name TO new_index_partition_name; - ``` - - -- 修改索引分区的所属表空间。 - - ``` - ALTER INDEX [ IF EXISTS ] index_name - MOVE PARTITION index_partition_name TABLESPACE new_tablespace; - ``` - - -## 参数说明 - -- **index\_name** - - 要修改的索引名。 - -- **new\_name** - - 新的索引名。 - - 取值范围:字符串,且符合标识符命名规范。 - -- **tablespace\_name** - - 表空间的名称。 - - 取值范围:已存在的表空间。 - -- **storage\_parameter** - - 索引方法特定的参数名。 - -- **value** - - 索引方法特定的存储参数的新值。根据参数的不同,这可能是一个数字或单词。 - -- **new\_index\_partition\_name** - - 新索引分区名。 - -- **index\_partition\_name** - - 索引分区名。 - -- **new\_tablespace** - - 新表空间。 - - -## 示例 - -请参见CREATE INDEX的[示例](CREATE-INDEX.md#zh-cn_topic_0283136578_zh-cn_topic_0237122106_zh-cn_topic_0059777455_s985289833081489e9d77c485755bd362)。 - -## 相关链接 - -[CREATE INDEX](CREATE-INDEX.md),[DROP INDEX](DROP-INDEX.md),[REINDEX](REINDEX.md) - +# ALTER INDEX + +## 功能描述 + +ALTER INDEX 用于修改现有索引的定义。 + +它有几种子形式: + +- IF EXISTS + + 如果指定的索引不存在,则发出一个 notice 而不是 error 。 + +- RENAME TO + + 只改变索引的名称。对存储的数据没有影响。 + +- SET TABLESPACE + + 这个选项会改变索引的表空间为指定表空间,并且把索引相关的数据文件移动到新的表空间里。 + +- SET \( \{ STORAGE\_PARAMETER = value \} \[, ...\] \) + + 改变索引的一个或多个索引方法特定的存储参数。 需要注意的是索引内容不会被这个命令立即修改,根据参数的不同,可能需要使用 REINDEX 重建索引来获得期望的效果。 + +- RESET \( \{ storage\_parameter \} \[, ...\] \) + + 重置索引的一个或多个索引方法特定的存储参数为缺省值。与 SET 一样,可能需要使用 REINDEX 来完全更新索引。 + +- \[ MODIFY PARTITION index\_partition\_name \] UNUSABLE + + 用于设置表或者索引分区上的索引不可用。 + +- REBUILD \[ PARTITION index\_partition\_name \] + + 用于重建表或者索引分区上的索引。 + +- RENAME PARTITION + + 用于重命名索引分区。 + +- MOVE PARTITION + + 用于修改索引分区的所属表空间。 + + +## 注意事项 + +只有索引的所有者或者拥有索引所在表的 INDEX 权限的用户有权限执行此命令,系统管理员默认拥有此权限。 + +## 语法格式 + +- 重命名表索引的名称。 + + ``` + ALTER INDEX [ IF EXISTS ] index_name + RENAME TO new_name; + ``` + + +- 修改表索引的所属空间。 + + ``` + ALTER INDEX [ IF EXISTS ] index_name + SET TABLESPACE tablespace_name; + ``` + + +- 修改表索引的存储参数。 + + ``` + ALTER INDEX [ IF EXISTS ] index_name + SET ( {storage_parameter = value} [, ... ] ); + ``` + + +- 重置表索引的存储参数。 + + ``` + ALTER INDEX [ IF EXISTS ] index_name + RESET ( storage_parameter [, ... ] ) ; + ``` + + +- 设置表索引或索引分区不可用。 + + ``` + ALTER INDEX [ IF EXISTS ] index_name + [ MODIFY PARTITION index_partition_name ] UNUSABLE; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >列存表不支持该语法。 + + +- 重建表索引或索引分区。 + + ``` + ALTER INDEX index_name + REBUILD [ PARTITION index_partition_name ]; + ``` + + +- 重命名索引分区。 + + ``` + ALTER INDEX [ IF EXISTS ] index_name + RENAME PARTITION index_partition_name TO new_index_partition_name; + ``` + + +- 修改索引分区的所属表空间。 + + ``` + ALTER INDEX [ IF EXISTS ] index_name + MOVE PARTITION index_partition_name TABLESPACE new_tablespace; + ``` + + +## 参数说明 + +- **index\_name** + + 要修改的索引名。 + +- **new\_name** + + 新的索引名。 + + 取值范围:字符串,且符合标识符命名规范。 + +- **tablespace\_name** + + 表空间的名称。 + + 取值范围:已存在的表空间。 + +- **storage\_parameter** + + 索引方法特定的参数名。 + +- **value** + + 索引方法特定的存储参数的新值。根据参数的不同,这可能是一个数字或单词。 + +- **new\_index\_partition\_name** + + 新索引分区名。 + +- **index\_partition\_name** + + 索引分区名。 + +- **new\_tablespace** + + 新表空间。 + + +## 示例 + +请参见 CREATE INDEX 的[示例](CREATE-INDEX.md#zh-cn_topic_0283136578_zh-cn_topic_0237122106_zh-cn_topic_0059777455_s985289833081489e9d77c485755bd362)。 + +## 相关链接 + +[CREATE INDEX](CREATE-INDEX.md),[DROP INDEX](DROP-INDEX.md),[REINDEX](REINDEX.md) + diff --git a/content/zh/docs/Developerguide/ALTER-LANGUAGE.md b/content/zh/docs/Developerguide/ALTER-LANGUAGE.md index e6e7fcc73..e5938a069 100644 --- a/content/zh/docs/Developerguide/ALTER-LANGUAGE.md +++ b/content/zh/docs/Developerguide/ALTER-LANGUAGE.md @@ -1,31 +1,31 @@ -# ALTER LANGUAGE - -## 功能描述 - -修改一个过程语言的定义。单机和集中式暂不支持修改过程语言。 - -## 语法格式 - -``` -ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO new_name ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner -``` - -## 参数说明 - -- **name** - - 语言的名字。 - -- **new\_name** - - 语言的新名字。 - -- **new\_owner** - - 语言的新的所有者。 - - -## 兼容性 - -SQL标准里没有ALTER LANGUAGE语句。 - +# ALTER LANGUAGE + +## 功能描述 + +修改一个过程语言的定义。单机和集中式暂不支持修改过程语言。 + +## 语法格式 + +``` +ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO new_name ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner +``` + +## 参数说明 + +- **name** + + 语言的名字。 + +- **new\_name** + + 语言的新名字。 + +- **new\_owner** + + 语言的新的所有者。 + + +## 兼容性 + +SQL 标准里没有 ALTER LANGUAGE 语句。 + diff --git a/content/zh/docs/Developerguide/ALTER-LARGE-OBJECT.md b/content/zh/docs/Developerguide/ALTER-LARGE-OBJECT.md index 221d55403..07f9ee02f 100644 --- a/content/zh/docs/Developerguide/ALTER-LARGE-OBJECT.md +++ b/content/zh/docs/Developerguide/ALTER-LARGE-OBJECT.md @@ -1,36 +1,36 @@ -# ALTER LARGE OBJECT - -## 功能描述 - -ALTER LARGE OBJECT用于更改一个large object的定义。它的唯一的功能是分配一个新的所有者。 - -## 注意事项 - -使用ALTER LARGE OBJECT必须是系统管理员或者是其所有者。 - -## 语法格式 - -``` -ALTER LARGE OBJECT large_object_oid - OWNER TO new_owner; -``` - -## 参数说明 - -- **large\_object\_oid** - - 要被变large object的OID 。 - - 取值范围:已存在的大对象名。 - -- **OWNER TO new\_owner** - - large object新的所有者。 - - 取值范围:已存在的用户名/角色名。 - - -## 示例 - -无。 - +# ALTER LARGE OBJECT + +## 功能描述 + +ALTER LARGE OBJECT 用于更改一个 large object 的定义。它的唯一的功能是分配一个新的所有者。 + +## 注意事项 + +使用 ALTER LARGE OBJECT 必须是系统管理员或者是其所有者。 + +## 语法格式 + +``` +ALTER LARGE OBJECT large_object_oid + OWNER TO new_owner; +``` + +## 参数说明 + +- **large\_object\_oid** + + 要被变 large object 的 OID 。 + + 取值范围:已存在的大对象名。 + +- **OWNER TO new\_owner** + +large object 新的所有者。 + + 取值范围:已存在的用户名/角色名。 + + +## 示例 + +无。 + diff --git a/content/zh/docs/Developerguide/ALTER-MASKING-POLICY.md b/content/zh/docs/Developerguide/ALTER-MASKING-POLICY.md index e30c8ef4c..9056b46d1 100644 --- a/content/zh/docs/Developerguide/ALTER-MASKING-POLICY.md +++ b/content/zh/docs/Developerguide/ALTER-MASKING-POLICY.md @@ -1,139 +1,139 @@ -# ALTER MASKING POLICY - -## 功能描述 - -修改脱敏策略。 - -## 注意事项 - -- 只有poladmin、sysadmin或初始用户才能执行此操作。 -- 需要打开enable\_security\_policy开关脱敏策略才可以生效,开关打开方式请参考《安全加固指南》中“数据库配置 \> 数据库安全管理策略 \> 数据动态脱敏”章节。 -- 预置脱敏函数的执行效果及支持的数据类型请参考《特性描述》中“数据库安全 \> 动态数据脱敏机制”章节。 - -## 语法格式 - -- 修改策略描述: - - ``` - ALTER MASKING POLICY policy_name COMMENTS policy_comments; - ``` - - -- 修改脱敏方式: - - ``` - ALTER MASKING POLICY policy_name [ADD | REMOVE | MODIFY] masking_actions[, ...]*; - 其中masking_action: - masking_function ON LABEL(label_name[, ...]*) - ``` - - -- 修改脱敏策略生效场景: - - ``` - ALTER MASKING POLICY policy_name MODIFY(FILTER ON FILTER_TYPE(filter_value[, ...]*)[, ...]*); - ``` - - -- 移除脱敏策略生效场景,使策略对所用场景生效: - - ``` - ALTER MASKING POLICY policy_name DROP FILTER; - ``` - - -- 修改脱敏策略开启/关闭: - - ``` - ALTER MASKING POLICY policy_name [ENABLE | DISABLE]; - ``` - - -## 参数说明 - -- **policy\_name** - - 脱敏策略名称,需要唯一,不可重复。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **policy\_comments** - - 需要为脱敏策略添加或修改的描述信息。 - -- **masking\_function** - - 指的是预置的八种脱敏方式或者用户自定义的函数,支持模式。 - - maskall不是预置函数,硬编码在代码中,不支持\\df展示。 - - 预置时脱敏方式如下: - - ``` - maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking - ``` - -- **label\_name** - - 资源标签名称。 - - -- **FILTER\_TYPE** - - 指定脱敏策略的过滤信息,过滤类型包括:IP、ROLES、APP。 - -- **filter\_value** - - 指具体过滤信息内容,例如具体的IP、具体的APP名称、具体的用户名。 - - -- **ENABLE|DISABLE** - - 可以打开或关闭脱敏策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。 - - -## 示例 - -``` ---创建dev_mask和bob_mask用户。 -openGauss=# CREATE USER dev_mask PASSWORD 'dev@1234'; -openGauss=# CREATE USER bob_mask PASSWORD 'bob@1234'; - ---创建一个表tb_for_masking -openGauss=# CREATE TABLE tb_for_masking(col1 text, col2 text, col3 text); - ---创建资源标签标记敏感列col1 -openGauss=# CREATE RESOURCE LABEL mask_lb1 ADD COLUMN(tb_for_masking.col1); - ---创建资源标签标记敏感列col2 -openGauss=# CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2); - ---对访问敏感列col1的操作创建脱敏策略 -openGauss=# CREATE MASKING POLICY maskpol1 maskall ON LABEL(mask_lb1); - ---为脱敏策略maskpol1添加描述 -openGauss=# ALTER MASKING POLICY maskpol1 COMMENTS 'masking policy for tb_for_masking.col1'; - ---修改脱敏策略maskpol1,新增一项脱敏方式 -openGauss=# ALTER MASKING POLICY maskpol1 ADD randommasking ON LABEL(mask_lb2); - ---修改脱敏策略maskpol1,移除一项脱敏方式 -openGauss=# ALTER MASKING POLICY maskpol1 REMOVE randommasking ON LABEL(mask_lb2); - ---修改脱敏策略maskpol1,修改一项脱敏方式 -openGauss=# ALTER MASKING POLICY maskpol1 MODIFY randommasking ON LABEL(mask_lb1); - ---修改脱敏策略maskpol1使之仅对用户dev_mask和bob_mask,客户端工具为psql和gsql,IP地址为'10.20.30.40', '127.0.0.0/24'场景生效。 -openGauss=# ALTER MASKING POLICY maskpol1 MODIFY (FILTER ON ROLES(dev_mask, bob_mask), APP(psql, gsql), IP('10.20.30.40', '127.0.0.0/24')); - ---修改脱敏策略maskpol1,使之对所有用户场景生效 -openGauss=# ALTER MASKING POLICY maskpol1 DROP FILTER; - ---禁用脱敏策略maskpol1 -openGauss=# ALTER MASKING POLICY maskpol1 DISABLE; -``` - -## 相关链接 - -[CREATE MASKING POLICY](CREATE-MASKING-POLICY.md),[DROP MASKING POLICY](DROP-MASKING-POLICY.md)。 - +# ALTER MASKING POLICY + +## 功能描述 + +修改脱敏策略。 + +## 注意事项 + +- 只有poladmin、sysadmin或初始用户才能执行此操作。 +- 需要打开enable\_security\_policy开关脱敏策略才可以生效,开关打开方式请参考《安全加固指南》中“数据库配置 \> 数据库安全管理策略 \> 数据动态脱敏”章节。 +- 预置脱敏函数的执行效果及支持的数据类型请参考《特性描述》中“数据库安全 \> 动态数据脱敏机制”章节。 + +## 语法格式 + +- 修改策略描述: + + ``` + ALTER MASKING POLICY policy_name COMMENTS policy_comments; + ``` + + +- 修改脱敏方式: + + ``` + ALTER MASKING POLICY policy_name [ADD | REMOVE | MODIFY] masking_actions[, ...]*; + 其中masking_action: + masking_function ON LABEL(label_name[, ...]*) + ``` + + +- 修改脱敏策略生效场景: + + ``` + ALTER MASKING POLICY policy_name MODIFY(FILTER ON FILTER_TYPE(filter_value[, ...]*)[, ...]*); + ``` + + +- 移除脱敏策略生效场景,使策略对所用场景生效: + + ``` + ALTER MASKING POLICY policy_name DROP FILTER; + ``` + + +- 修改脱敏策略开启/关闭: + + ``` + ALTER MASKING POLICY policy_name [ENABLE | DISABLE]; + ``` + + +## 参数说明 + +- **policy\_name** + + 脱敏策略名称,需要唯一,不可重复。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **policy\_comments** + + 需要为脱敏策略添加或修改的描述信息。 + +- **masking\_function** + + 指的是预置的八种脱敏方式或者用户自定义的函数,支持模式。 + +maskall 不是预置函数,硬编码在代码中,不支持\\df展示。 + + 预置时脱敏方式如下: + + ``` + maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking + ``` + +- **label\_name** + + 资源标签名称。 + + +- **FILTER\_TYPE** + + 指定脱敏策略的过滤信息,过滤类型包括:IP、ROLES、APP。 + +- **filter\_value** + + 指具体过滤信息内容,例如具体的IP、具体的 APP 名称、具体的用户名。 + + +- **ENABLE|DISABLE** + + 可以打开或关闭脱敏策略。若不指定ENABLE|DISABLE,语句默认为 ENABLE 。 + + +## 示例 + +``` +--创建 dev_mask 和 bob_mask 用户。 +openGauss=# CREATE USER dev_mask PASSWORD 'dev@1234'; +openGauss=# CREATE USER bob_mask PASSWORD 'bob@1234'; + +--创建一个表tb_for_masking +openGauss=# CREATE TABLE tb_for_masking(col1 text, col2 text , col3 text); + +--创建资源标签标记敏感列col1 +openGauss=# CREATE RESOURCE LABEL mask_lb1 ADD COLUMN(tb_for_masking.col1); + +--创建资源标签标记敏感列col2 +openGauss=# CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2); + +--对访问敏感列 col1 的操作创建脱敏策略 +openGauss=# CREATE MASKING POLICY maskpol1 maskall ON LABEL(mask_lb1); + +--为脱敏策略 maskpol1 添加描述 +openGauss=# ALTER MASKING POLICY maskpol1 COMMENTS 'masking policy for tb_for_masking.col1'; + +--修改脱敏策略 maskpol1 ,新增一项脱敏方式 +openGauss=# ALTER MASKING POLICY maskpol1 ADD randommasking ON LABEL(mask_lb2); + +--修改脱敏策略 maskpol1 ,移除一项脱敏方式 +openGauss=# ALTER MASKING POLICY maskpol1 REMOVE randommasking ON LABEL(mask_lb2); + +--修改脱敏策略 maskpol1 ,修改一项脱敏方式 +openGauss=# ALTER MASKING POLICY maskpol1 MODIFY randommasking ON LABEL(mask_lb1); + +--修改脱敏策略 maskpol1 使之仅对用户 dev_mask 和 bob_mask ,客户端工具为 psql 和 gsql , IP 地址为'10.20.30.40', '127.0.0.0/24'场景生效。 +openGauss=# ALTER MASKING POLICY maskpol1 MODIFY (FILTER ON ROLES(dev_mask, bob_mask), APP(psql, gsql), IP('10.20.30.40', '127.0.0.0/24')); + +--修改脱敏策略 maskpol1 ,使之对所有用户场景生效 +openGauss=# ALTER MASKING POLICY maskpol1 DROP FILTER; + +--禁用脱敏策略maskpol1 +openGauss=# ALTER MASKING POLICY maskpol1 DISABLE; +``` + +## 相关链接 + +[CREATE MASKING POLICY](CREATE-MASKING-POLICY.md),[DROP MASKING POLICY](DROP-MASKING-POLICY.md)。 + diff --git a/content/zh/docs/Developerguide/ALTER-MATERIALIZED-VIEW.md b/content/zh/docs/Developerguide/ALTER-MATERIALIZED-VIEW.md index 5ab5f8929..618b2d421 100644 --- a/content/zh/docs/Developerguide/ALTER-MATERIALIZED-VIEW.md +++ b/content/zh/docs/Developerguide/ALTER-MATERIALIZED-VIEW.md @@ -1,76 +1,76 @@ -# ALTER MATERIALIZED VIEW - -## 功能描述 - -更改一个现有物化视图的多个辅助属性。 - -可用于ALTER MATERIALIZED VIEW的语句形式和动作是ALTER TABLE的一个子集,并且在用于物化视图时具有相同的含义。详见[ALTER TABLE](ALTER-TABLE.md)。 - -## 注意事项 - -- 只有物化视图的所有者有权限执行ALTER TMATERIALIZED VIEW命令,系统管理员默认拥有此权限。 -- 不支持更改物化视图结构。 - -## 语法格式 - -- 修改物化视图的所属用户。 - - ``` - ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name - OWNER TO new_owner; - ``` - -- 修改物化视图的列。 - - ``` - ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name - RENAME [ COLUMN ] column_name TO new_column_name; - ``` - -- 重命名物化视图。 - - ``` - ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name - - RENAME TO new_name; - ``` - - -## 参数说明 - -- **mv\_name** - - 一个现有物化视图的名称,可以用模式修饰。 - - 取值范围:字符串,符合标识符命名规范。 - -- **column\_name** - - 一个新的或者现有的列的名称。 - - 取值范围:字符串,符合标识符命名规范。 - -- **new\_column\_name** - - 一个现有列的新名称。 - -- **new\_owner** - - 该物化视图的新拥有者的用户名。 - -- **new\_name** - - 该物化视图的新名称。 - - -## 示例 - -``` ---把物化视图foo重命名为bar。 -openGauss=# ALTER MATERIALIZED VIEW foo RENAME TO bar; -``` - -## 相关链接 - -[CREATE MATERIALIZED VIEW](CREATE-MATERIALIZED-VIEW.md),[CREATE INCREMENTAL MATERIALIZED VIEW](CREATE-INCREMENTAL-MATERIALIZED-VIEW.md),[DROP MATERIALIZED VIEW](DROP-MATERIALIZED-VIEW.md),[REFRESH INCREMENTAL MATERIALIZED VIEW](REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md) ,[REFRESH MATERIALIZED VIEW](REFRESH-MATERIALIZED-VIEW.md) - +# ALTER MATERIALIZED VIEW + +## 功能描述 + +更改一个现有物化视图的多个辅助属性。 + +可用于 ALTER MATERIALIZED VIEW 的语句形式和动作是 ALTER TABLE 的一个子集,并且在用于物化视图时具有相同的含义。详见[ALTER TABLE](ALTER-TABLE.md)。 + +## 注意事项 + +- 只有物化视图的所有者有权限执行 ALTER TMATERIALIZED VIEW 命令,系统管理员默认拥有此权限。 +- 不支持更改物化视图结构。 + +## 语法格式 + +- 修改物化视图的所属用户。 + + ``` + ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name + OWNER TO new_owner; + ``` + +- 修改物化视图的列。 + + ``` + ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name + RENAME [ COLUMN ] column_name TO new_column_name; + ``` + +- 重命名物化视图。 + + ``` + ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name + + RENAME TO new_name; + ``` + + +## 参数说明 + +- **mv\_name** + + 一个现有物化视图的名称,可以用模式修饰。 + + 取值范围:字符串,符合标识符命名规范。 + +- **column\_name** + + 一个新的或者现有的列的名称。 + + 取值范围:字符串,符合标识符命名规范。 + +- **new\_column\_name** + + 一个现有列的新名称。 + +- **new\_owner** + + 该物化视图的新拥有者的用户名。 + +- **new\_name** + + 该物化视图的新名称。 + + +## 示例 + +``` +--把物化视图 foo 重命名为 bar 。 +openGauss=# ALTER MATERIALIZED VIEW foo RENAME TO bar; +``` + +## 相关链接 + +[CREATE MATERIALIZED VIEW](CREATE-MATERIALIZED-VIEW.md),[CREATE INCREMENTAL MATERIALIZED VIEW](CREATE-INCREMENTAL-MATERIALIZED-VIEW.md),[DROP MATERIALIZED VIEW](DROP-MATERIALIZED-VIEW.md),[REFRESH INCREMENTAL MATERIALIZED VIEW](REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md) ,[REFRESH MATERIALIZED VIEW](REFRESH-MATERIALIZED-VIEW.md) + diff --git a/content/zh/docs/Developerguide/ALTER-OPERATOR.md b/content/zh/docs/Developerguide/ALTER-OPERATOR.md index 1c6e6ec68..50b081335 100644 --- a/content/zh/docs/Developerguide/ALTER-OPERATOR.md +++ b/content/zh/docs/Developerguide/ALTER-OPERATOR.md @@ -1,54 +1,54 @@ -# ALTER OPERATOR - -## 功能描述 - -修改一个操作符的定义。 - -## 注意事项 - -ALTER OPERATOR改变一个操作符的定义。目前唯一能用的功能是改变操作符的所有者。 - -要使用ALTER OPERATOR,你必须是该操作符的所有者。要修改所有者,你还必须是新的所有角色的直接或间接成员,并且该成员必须在此操作符的模式上有CREATE权限。(这些限制强制了修改该所有者不会做任何通过删除和重建操作符不能做的事情。不过,超级用户可以以任何方式修改任意操作符的所有权。) - -## 语法格式 - -``` -ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } ) OWNER TO new_owner -ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } ) SET SCHEMA new_schema -``` - -## 参数说明 - -- **name** - - 一个现有操作符的名字。 - -- **left\_type** - - 操作符的左操作数的数据类型;如果没有左操作数,那么写NONE。 - -- **right\_type** - - 操作符的右操作数的数据类型;如果没有右操作数,那么写NONE。 - -- **new\_owner** - - 操作符的新所有者。 - -- **new\_schema** - - 操作符的新模式名。 - - -## 示例 - -改变一个用于text的用户定义操作符a @@ b: - -``` -ALTER OPERATOR @@ (text, text) OWNER TO joe; -``` - -## 兼容性 - -SQL 标准里没有ALTER OPERATOR语句。 - +# ALTER OPERATOR + +## 功能描述 + +修改一个操作符的定义。 + +## 注意事项 + +ALTER OPERATOR 改变一个操作符的定义。目前唯一能用的功能是改变操作符的所有者。 + +要使用 ALTER OPERATOR ,你必须是该操作符的所有者。要修改所有者,你还必须是新的所有角色的直接或间接成员,并且该成员必须在此操作符的模式上有 CREATE 权限。(这些限制强制了修改该所有者不会做任何通过删除和重建操作符不能做的事情。不过,超级用户可以以任何方式修改任意操作符的所有权。) + +## 语法格式 + +``` +ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } ) OWNER TO new_owner +ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } ) SET SCHEMA new_schema +``` + +## 参数说明 + +- **name** + + 一个现有操作符的名字。 + +- **left\_type** + + 操作符的左操作数的数据类型;如果没有左操作数,那么写 NONE 。 + +- **right\_type** + + 操作符的右操作数的数据类型;如果没有右操作数,那么写 NONE 。 + +- **new\_owner** + + 操作符的新所有者。 + +- **new\_schema** + + 操作符的新模式名。 + + +## 示例 + +改变一个用于 text 的用户定义操作符a @@ b: + +``` +ALTER OPERATOR @@ (text, text) OWNER TO joe; +``` + +## 兼容性 + +SQL 标准里没有 ALTER OPERATOR 语句。 + diff --git a/content/zh/docs/Developerguide/ALTER-RESOURCE-LABEL.md b/content/zh/docs/Developerguide/ALTER-RESOURCE-LABEL.md index 78df479f6..e23bd5ee7 100644 --- a/content/zh/docs/Developerguide/ALTER-RESOURCE-LABEL.md +++ b/content/zh/docs/Developerguide/ALTER-RESOURCE-LABEL.md @@ -1,67 +1,67 @@ -# ALTER RESOURCE LABEL - -## 功能描述 - -修改资源标签。 - -## 注意事项 - -只有poladmin、 sysadmin或初始用户才能执行此操作。 - -## 语法格式 - -``` -ALTER RESOURCE LABEL label_name (ADD|REMOVE) - label_item_list[, ...]*; -``` - -- label\_item\_list: - - ``` - resource_type(resource_path[, ...]*) - ``` - -- resource\_type: - - ``` - TABLE | COLUMN | SCHEMA | VIEW | FUNCTION - ``` - - -## 参数说明 - -- **label\_name** - - 资源标签名称。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **resource\_type** - - 指的是要标记的数据库资源类型。 - -- **resource\_path** - - 指的是描述具体的数据库资源的路径。 - - -## 示例 - -``` ---创建基本表table_for_label。 -openGauss=# CREATE TABLE table_for_label(col1 int, col2 text); - ---创建资源标签table_label。 -openGauss=# CREATE RESOURCE LABEL table_label ADD COLUMN(table_for_label.col1); - ---将col2添加至资源标签table_label中 -openGauss=# ALTER RESOURCE LABEL table_label ADD COLUMN(table_for_label.col2) - ---将资源标签table_label中的一项移除 -openGauss=# ALTER RESOURCE LABEL table_label REMOVE COLUMN(table_for_label.col1); -``` - -## 相关链接 - -[CREATE RESOURCE LABEL](CREATE-RESOURCE-LABEL.md),,[DROP RESOURCE LABEL](DROP-RESOURCE-LABEL.md)。 - +# ALTER RESOURCE LABEL + +## 功能描述 + +修改资源标签。 + +## 注意事项 + +只有poladmin、 sysadmin或初始用户才能执行此操作。 + +## 语法格式 + +``` +ALTER RESOURCE LABEL label_name (ADD|REMOVE) + label_item_list[, ...]*; +``` + +- label\_item\_list: + + ``` + resource_type(resource_path[, ...]*) + ``` + +- resource\_type: + + ``` + TABLE | COLUMN | SCHEMA | VIEW | FUNCTION + ``` + + +## 参数说明 + +- **label\_name** + + 资源标签名称。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **resource\_type** + + 指的是要标记的数据库资源类型。 + +- **resource\_path** + + 指的是描述具体的数据库资源的路径。 + + +## 示例 + +``` +--创建基本表 table_for_label 。 +openGauss=# CREATE TABLE table_for_label(col1 int, col2 text); + +--创建资源标签 table_label 。 +openGauss=# CREATE RESOURCE LABEL table_label ADD COLUMN(table_for_label.col1); + +--将 col2 添加至资源标签 table_label 中 +openGauss=# ALTER RESOURCE LABEL table_label ADD COLUMN(table_for_label.col2) + +--将资源标签 table_label 中的一项移除 +openGauss=# ALTER RESOURCE LABEL table_label REMOVE COLUMN(table_for_label.col1); +``` + +## 相关链接 + +[CREATE RESOURCE LABEL](CREATE-RESOURCE-LABEL.md),,[DROP RESOURCE LABEL](DROP-RESOURCE-LABEL.md)。 + diff --git a/content/zh/docs/Developerguide/ALTER-RESOURCE-POOL.md b/content/zh/docs/Developerguide/ALTER-RESOURCE-POOL.md index b881f9124..7673415d8 100644 --- a/content/zh/docs/Developerguide/ALTER-RESOURCE-POOL.md +++ b/content/zh/docs/Developerguide/ALTER-RESOURCE-POOL.md @@ -1,117 +1,117 @@ -# ALTER RESOURCE POOL - -## 功能描述 - -修改一个资源池,指定其他控制组。 - -## 注意事项 - -只要用户对当前数据库有ALTER权限,就可以修改资源池。 - -## 语法格式 - -``` -ALTER RESOURCE POOL pool_name - WITH ({MEM_PERCENT= pct | CONTROL_GROUP="group_name" | ACTIVE_STATEMENTS=stmt | MAX_DOP = dop | MEMORY_LIMIT='memory_size' | io_limits=io_limits | io_priority='io_priority'}[, ... ]); -``` - -## 参数说明 - -- **pool\_name** - - 资源池名称。 - - 资源池名称为已创建的资源池。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **group\_name** - - 控制组名称。 - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- 设置控制组名称时,语法可以使用双引号,也可以使用单引号。 - - >- group\_name对大小写敏感。 - - >- 不指定group\_name时,默认指定的字符串为 "Medium",代表指定DefaultClass控制组的“Medium” Timeshare控制组。 - - >- 若数据库管理员指定自定义Class组下的Workload控制组,如control\_group的字符串为:“class1:workload1”;代表此资源池指定到class1控制组下的workload1控制组。也可同时指定Workload控制组的层次,如control\_group的字符串为:“class1:workload1:1”。 - - >- 若数据库用户指定Timeshare控制组代表的字符串,即“Rush”、“High”、“Medium”或“Low”其中一种,如control\_group的字符串为“High”;代表资源池指定到DefaultClass控制组下的“High” Timeshare控制组。 - - 取值范围:已创建的控制组。 - -- **stmt** - - 资源池语句执行的最大并发数量。 - - 取值范围:数值型,-1\~2147483647‬。 - -- **dop** - - 资源池最大并发度,语句执行时能够创建的最多线程数量。 - - 取值范围:数值型,1\~2147483647‬。 - -- **memory\_size** - - 资源池最大使用内存。 - - 取值范围:字符串,内容范围1KB\~2047GB。 - -- **mem\_percent** - - 资源池可用内存占全部内存或者组用户内存使用的比例。 - - 在多租户场景下,组用户和业务用户的mem\_percent范围为1-100的整数,默认为20。 - - 在普通场景下,普通用户的mem\_percent范围为0-100的整数,默认值为0。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >mem\_percent和memory\_limit同时指定时,只有mem\_percent起作用。 - -- **io\_limits** - - 资源池每秒可触发IO次数上限。 - - 对于行存,以万次为单位计数,而列存则以正常次数计数。 - -- **io\_priority** - - IO利用率高达90%时,重消耗IO作业进行IO资源管控时关联的优先级等级。 - - 包括三档可选:Low、Medium和High。不控制时可设置为None,默认为None。 - - ->![](public_sys-resources/icon-note.gif) **说明:** ->io\_limits和io\_priority的设置都仅对复杂作业有效。包括批量导入(INSERT INTO SELECT、COPY FROM、CREATE TABLE AS等),单DN数据量大约超过500MB的复杂查询和VACUUM FULL等操作。 - -## 示例 - -本示例假定用户已成功创建自定义的class1控制组及其下属的Low、wg1、wg2 三个Workload控制组。 - -``` ---创建一个资源池。 -openGauss=# CREATE RESOURCE POOL pool1; - ---更新一个资源池,其控制组指定为"DefaultClass"组下属的"High" Timeshare Workload控制组。 -openGauss=# ALTER RESOURCE POOL pool1 WITH (CONTROL_GROUP="High"); - ---更新一个资源池,其控制组指定为"class1"组下属的"Low" Timeshare Workload控制组。 -openGauss=# ALTER RESOURCE POOL pool1 WITH (CONTROL_GROUP="class1:Low"); - ---更新一个资源池,其控制组指定为"class1"组下属的"wg1" Workload控制组。 -openGauss=# ALTER RESOURCE POOL pool1 WITH (CONTROL_GROUP="class1:wg1"); - ---更新一个资源池,其控制组指定为"class1"组下属的"wg2" Workload控制组。 -openGauss=# ALTER RESOURCE POOL pool1 WITH (CONTROL_GROUP="class1:wg2:3"); ---删除资源池pool1。 -openGauss=# DROP RESOURCE POOL pool1; -``` - -## 相关链接 - -[CREATE RESOURCE POOL](CREATE-RESOURCE-POOL.md),[DROP RESOURCE POOL](DROP-RESOURCE-POOL.md) - +# ALTER RESOURCE POOL + +## 功能描述 + +修改一个资源池,指定其他控制组。 + +## 注意事项 + +只要用户对当前数据库有 ALTER 权限,就可以修改资源池。 + +## 语法格式 + +``` +ALTER RESOURCE POOL pool_name + WITH ({MEM_PERCENT= pct | CONTROL_GROUP="group_name" | ACTIVE_STATEMENTS=stmt | MAX_DOP = dop | MEMORY_LIMIT='memory_size' | io_limits=io_limits | io_priority='io_priority'}[, ... ]); +``` + +## 参数说明 + +- **pool\_name** + + 资源池名称。 + + 资源池名称为已创建的资源池。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **group\_name** + + 控制组名称。 + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- 设置控制组名称时,语法可以使用双引号,也可以使用单引号。 + + >- group\_name对大小写敏感。 + + >- 不指定group\_name时,默认指定的字符串为 "Medium",代表指定 DefaultClass 控制组的“Medium” Timeshare控制组。 + + >- 若数据库管理员指定自定义 Class 组下的 Workload 控制组,如control\_group的字符串为:“class1:workload1”;代表此资源池指定到 class1 控制组下的 workload1 控制组。也可同时指定 Workload 控制组的层次,如control\_group的字符串为:“class1:workload1:1”。 + + >- 若数据库用户指定 Timeshare 控制组代表的字符串,即“Rush”、“High”、“Medium”或“Low”其中一种,如control\_group的字符串为“High”;代表资源池指定到 DefaultClass 控制组下的“High” Timeshare控制组。 + + 取值范围:已创建的控制组。 + +- **stmt** + + 资源池语句执行的最大并发数量。 + + 取值范围:数值型,-1\~2147483647‬。 + +- **dop** + + 资源池最大并发度,语句执行时能够创建的最多线程数量。 + + 取值范围:数值型,1\~2147483647‬。 + +- **memory\_size** + + 资源池最大使用内存。 + + 取值范围:字符串,内容范围1KB\~2047GB。 + +- **mem\_percent** + + 资源池可用内存占全部内存或者组用户内存使用的比例。 + + 在多租户场景下,组用户和业务用户的mem\_percent范围为1-100的整数,默认为 20 。 + + 在普通场景下,普通用户的mem\_percent范围为0-100的整数,默认值为 0 。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >mem\_percent和memory\_limit同时指定时,只有mem\_percent起作用。 + +- **io\_limits** + + 资源池每秒可触发 IO 次数上限。 + + 对于行存,以万次为单位计数,而列存则以正常次数计数。 + +- **io\_priority** + +IO 利用率高达90%时,重消耗 IO 作业进行 IO 资源管控时关联的优先级等级。 + + 包括三档可选:Low、Medium和 High 。不控制时可设置为 None ,默认为 None 。 + + +>![](public_sys-resources/icon-note.gif) **说明:** +>io\_limits和io\_priority的设置都仅对复杂作业有效。包括批量导入(INSERT INTO SELECT、COPY FROM、CREATE TABLE AS等),单 DN 数据量大约超过 500MB 的复杂查询和 VACUUM FULL 等操作。 + +## 示例 + +本示例假定用户已成功创建自定义的 class1 控制组及其下属的Low、wg1、wg2 三个 Workload 控制组。 + +``` +--创建一个资源池。 +openGauss=# CREATE RESOURCE POOL pool1; + +--更新一个资源池,其控制组指定为"DefaultClass"组下属的"High" Timeshare Workload控制组。 +openGauss=# ALTER RESOURCE POOL pool1 WITH (CONTROL_GROUP="High"); + +--更新一个资源池,其控制组指定为"class1"组下属的"Low" Timeshare Workload控制组。 +openGauss=# ALTER RESOURCE POOL pool1 WITH (CONTROL_GROUP="class1:Low"); + +--更新一个资源池,其控制组指定为"class1"组下属的"wg1" Workload控制组。 +openGauss=# ALTER RESOURCE POOL pool1 WITH (CONTROL_GROUP="class1:wg1"); + +--更新一个资源池,其控制组指定为"class1"组下属的"wg2" Workload控制组。 +openGauss=# ALTER RESOURCE POOL pool1 WITH (CONTROL_GROUP="class1:wg2:3"); +--删除资源池 pool1 。 +openGauss=# DROP RESOURCE POOL pool1; +``` + +## 相关链接 + +[CREATE RESOURCE POOL](CREATE-RESOURCE-POOL.md),[DROP RESOURCE POOL](DROP-RESOURCE-POOL.md) + diff --git a/content/zh/docs/Developerguide/ALTER-ROLE.md b/content/zh/docs/Developerguide/ALTER-ROLE.md index e009074ed..4892e259e 100644 --- a/content/zh/docs/Developerguide/ALTER-ROLE.md +++ b/content/zh/docs/Developerguide/ALTER-ROLE.md @@ -1,125 +1,125 @@ -# ALTER ROLE - -## 功能描述 - -修改角色属性。 - -## 注意事项 - -无。 - -## 语法格式 - -- 修改角色的权限。 - - ``` - ALTER ROLE role_name [ [ WITH ] option [ ... ] ]; - ``` - - 其中权限项子句option为: - - ``` - {CREATEDB | NOCREATEDB} - | {CREATEROLE | NOCREATEROLE} - | {INHERIT | NOINHERIT} - | {AUDITADMIN | NOAUDITADMIN} - | {SYSADMIN | NOSYSADMIN} - | {USEFT | NOUSEFT} - | {LOGIN | NOLOGIN} - | {REPLICATION | NOREPLICATION} - | {INDEPENDENT | NOINDEPENDENT} - | {VCADMIN | NOVCADMIN} - | CONNECTION LIMIT connlimit - | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' [EXPIRED] - | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY 'password' [ REPLACE 'old_password' | EXPIRED ] - | [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' | DISABLE | EXPIRED } - | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' ] | DISABLE } - | VALID BEGIN 'timestamp' - | VALID UNTIL 'timestamp' - | RESOURCE POOL 'respool' - | PERM SPACE 'spacelimit' - | ACCOUNT { LOCK | UNLOCK } - | PGUSER - ``` - -- 修改角色的名称。 - - ``` - ALTER ROLE role_name - RENAME TO new_name; - ``` - -- 设置角色的配置参数。 - - ``` - ALTER ROLE role_name [ IN DATABASE database_name ] - SET configuration_parameter {{ TO | = } { value | DEFAULT } | FROM CURRENT}; - ``` - -- 重置角色的配置参数。 - - ``` - ALTER ROLE role_name - [ IN DATABASE database_name ] RESET {configuration_parameter|ALL}; - ``` - - -## 参数说明 - -- **role\_name** - - 现有角色名。 - - 取值范围:已存在的用户名。 - -- **IN DATABASE database\_name** - - 表示修改角色在指定数据库上的参数。 - -- **SET configuration\_parameter** - - 设置角色的参数。ALTER ROLE中修改的会话参数只针对指定的角色,且在下一次该角色启动的会话中有效。 - - 取值范围: - - configuration\_parameter和value的取值请参见[SET](SET.md)。 - - DEFAULT:表示清除configuration\_parameter参数的值,configuration\_parameter参数的值将继承本角色新产生的SESSION的默认值。 - - FROM CURRENT:取当前会话中的值设置为configuration\_parameter参数的值。 - -- **RESET configuration\_parameter/ALL** - - 清除configuration\_parameter参数的值。与SET configuration\_parameter TO DEFAULT的效果相同。 - - 取值范围:ALL表示清除所有参数的值。 - -- **ACCOUNT LOCK | ACCOUNT UNLOCK** - - ACCOUNT LOCK:锁定帐户,禁止登录数据库。 - - ACCOUNT UNLOCK:解锁帐户,允许登录数据库。 - -- **PGUSER** - - 当前版本不允许修改角色的PGUSER属性。 - -- **PASSWORD/IDENTIFIED BY **'password' - - 重置或修改用户密码。除了初始用户外其他管理员或普通用户修改自己的密码需要输入正确的旧密码。只有初始用户、系统管理员(sysadmin)或拥有创建用户(CREATEROLE)权限的用户才可以重置普通用户密码,无需输入旧密码。初始用户可以重置系统管理员的密码,系统管理员不允许重置其他系统管理员的密码。 - -- **EXPIRED** - - 设置密码失效。只有初始用户、系统管理员(sysadmin)或拥有创建用户(CREATEROLE)权限的用户才可以设置用户密码失效,其中系统管理员也可以设置自己或其他系统管理员密码失效。不允许设置初始用户密码失效。 - - 密码失效的用户可以登录数据库但不能执行查询操作,只有修改密码或由管理员重置密码后才可以恢复正常查询操作。 - - -其他参数请参见CREATE ROLE的[参数说明](CREATE-ROLE.md#zh-cn_topic_0283136858_zh-cn_topic_0237122112_zh-cn_topic_0059778189_s5a43ec5742a742089e2c302063de7fe4)。 - -## 示例 - -请参见CREATE ROLE的[示例](CREATE-ROLE.md#zh-cn_topic_0283136858_zh-cn_topic_0237122112_zh-cn_topic_0059778189_s0dea2f90b8474387aff0ab3f366a611e)。 - -## 相关链接 - -[CREATE ROLE](CREATE-ROLE.md),[DROP ROLE](DROP-ROLE.md),[SET](SET.md) - +# ALTER ROLE + +## 功能描述 + +修改角色属性。 + +## 注意事项 + +无。 + +## 语法格式 + +- 修改角色的权限。 + + ``` + ALTER ROLE role_name [ [ WITH ] option [ ... ] ]; + ``` + + 其中权限项子句 option 为: + + ``` + {CREATEDB | NOCREATEDB} + | {CREATEROLE | NOCREATEROLE} + | {INHERIT | NOINHERIT} + | {AUDITADMIN | NOAUDITADMIN} + | {SYSADMIN | NOSYSADMIN} + | {USEFT | NOUSEFT} + | {LOGIN | NOLOGIN} + | {REPLICATION | NOREPLICATION} + | {INDEPENDENT | NOINDEPENDENT} + | {VCADMIN | NOVCADMIN} + | CONNECTION LIMIT connlimit + | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' [EXPIRED] + | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY 'password' [ REPLACE 'old_password' | EXPIRED ] + | [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' | DISABLE | EXPIRED } + | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' ] | DISABLE } + | VALID BEGIN 'timestamp' + | VALID UNTIL 'timestamp' + | RESOURCE POOL 'respool' + | PERM SPACE 'spacelimit' + | ACCOUNT { LOCK | UNLOCK } + | PGUSER + ``` + +- 修改角色的名称。 + + ``` + ALTER ROLE role_name + RENAME TO new_name; + ``` + +- 设置角色的配置参数。 + + ``` + ALTER ROLE role_name [ IN DATABASE database_name ] + SET configuration_parameter {{ TO | = } { value | DEFAULT } | FROM CURRENT}; + ``` + +- 重置角色的配置参数。 + + ``` + ALTER ROLE role_name + [ IN DATABASE database_name ] RESET {configuration_parameter|ALL}; + ``` + + +## 参数说明 + +- **role\_name** + + 现有角色名。 + + 取值范围:已存在的用户名。 + +- **IN DATABASE database\_name** + + 表示修改角色在指定数据库上的参数。 + +- **SET configuration\_parameter** + + 设置角色的参数。 ALTER ROLE 中修改的会话参数只针对指定的角色,且在下一次该角色启动的会话中有效。 + + 取值范围: + + configuration\_parameter和 value 的取值请参见[SET](SET.md)。 + + DEFAULT:表示清除configuration\_parameter参数的值,configuration\_parameter参数的值将继承本角色新产生的 SESSION 的默认值。 + + FROM CURRENT:取当前会话中的值设置为configuration\_parameter参数的值。 + +- **RESET configuration\_parameter/ALL** + + 清除configuration\_parameter参数的值。与SET configuration\_parameter TO DEFAULT的效果相同。 + + 取值范围:ALL表示清除所有参数的值。 + +- **ACCOUNT LOCK | ACCOUNT UNLOCK** + - ACCOUNT LOCK:锁定帐户,禁止登录数据库。 + - ACCOUNT UNLOCK:解锁帐户,允许登录数据库。 + +- **PGUSER** + + 当前版本不允许修改角色的 PGUSER 属性。 + +- **PASSWORD/IDENTIFIED BY **'password' + + 重置或修改用户密码。除了初始用户外其他管理员或普通用户修改自己的密码需要输入正确的旧密码。只有初始用户、系统管理员(sysadmin)或拥有创建用户(CREATEROLE)权限的用户才可以重置普通用户密码,无需输入旧密码。初始用户可以重置系统管理员的密码,系统管理员不允许重置其他系统管理员的密码。 + +- **EXPIRED** + + 设置密码失效。只有初始用户、系统管理员(sysadmin)或拥有创建用户(CREATEROLE)权限的用户才可以设置用户密码失效,其中系统管理员也可以设置自己或其他系统管理员密码失效。不允许设置初始用户密码失效。 + + 密码失效的用户可以登录数据库但不能执行查询操作,只有修改密码或由管理员重置密码后才可以恢复正常查询操作。 + + +其他参数请参见 CREATE ROLE 的[参数说明](CREATE-ROLE.md#zh-cn_topic_0283136858_zh-cn_topic_0237122112_zh-cn_topic_0059778189_s5a43ec5742a742089e2c302063de7fe4)。 + +## 示例 + +请参见 CREATE ROLE 的[示例](CREATE-ROLE.md#zh-cn_topic_0283136858_zh-cn_topic_0237122112_zh-cn_topic_0059778189_s0dea2f90b8474387aff0ab3f366a611e)。 + +## 相关链接 + +[CREATE ROLE](CREATE-ROLE.md),[DROP ROLE](DROP-ROLE.md),[SET](SET.md) + diff --git a/content/zh/docs/Developerguide/ALTER-ROW-LEVEL-SECURITY-POLICY.md b/content/zh/docs/Developerguide/ALTER-ROW-LEVEL-SECURITY-POLICY.md index 150514c90..2b774d359 100644 --- a/content/zh/docs/Developerguide/ALTER-ROW-LEVEL-SECURITY-POLICY.md +++ b/content/zh/docs/Developerguide/ALTER-ROW-LEVEL-SECURITY-POLICY.md @@ -1,107 +1,107 @@ -# ALTER ROW LEVEL SECURITY POLICY - -## 功能描述 - -对已存在的行访问控制策略(包括行访问控制策略的名称、行访问控制指定的用户、行访问控制的策略表达式)进行修改。 - -## 注意事项 - -表的所有者或管理员用户才能进行此操作。 - -## 语法格式 - -``` -ALTER [ ROW LEVEL SECURITY ] POLICY [ IF EXISTS ] policy_name ON table_name RENAME TO new_policy_name; - -ALTER [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name - [ TO { role_name | PUBLIC } [, ...] ] - [ USING ( using_expression ) ]; -``` - -## 参数说明 - -- policy\_name - - 行访问控制策略名称。 - -- table\_name - - 行访问控制策略的表名。 - -- new\_policy\_name - - 新的行访问控制策略名称。 - -- role\_name - - 行访问控制策略应用的数据库用户,可以指定多个用户,PUBLIC表示应用到所有用户。 - -- using\_expression - - 行访问控制的表达式,返回值为boolean类型。 - - -## 示例 - -``` ---创建数据表all_data -openGauss=# CREATE TABLE all_data(id int, role varchar(100), data varchar(100)); - ---创建行访问控制策略,当前用户只能查看用户自身的数据 -openGauss=# CREATE ROW LEVEL SECURITY POLICY all_data_rls ON all_data USING(role = CURRENT_USER); -openGauss=# \d+ all_data - Table "public.all_data" - Column | Type | Modifiers | Storage | Stats target | Description ---------+------------------------+-----------+----------+--------------+------------- - id | integer | | plain | | - role | character varying(100) | | extended | | - data | character varying(100) | | extended | | -Row Level Security Policies: - POLICY "all_data_rls" - USING (((role)::name = "current_user"())) -Has OIDs: no -Location Nodes: ALL DATANODES -Options: orientation=row, compression=no - ---修改行访问控制all_data_rls的名称 -openGauss=# ALTER ROW LEVEL SECURITY POLICY all_data_rls ON all_data RENAME TO all_data_new_rls; - ---修改行访问控制策略影响的用户 -openGauss=# ALTER ROW LEVEL SECURITY POLICY all_data_new_rls ON all_data TO alice, bob; -openGauss=# \d+ all_data - Table "public.all_data" - Column | Type | Modifiers | Storage | Stats target | Description ---------+------------------------+-----------+----------+--------------+------------- - id | integer | | plain | | - role | character varying(100) | | extended | | - data | character varying(100) | | extended | | -Row Level Security Policies: - POLICY "all_data_new_rls" - TO alice,bob - USING (((role)::name = "current_user"())) -Has OIDs: no -Location Nodes: ALL DATANODES -Options: orientation=row, compression=no, enable_rowsecurity=true - ---修改行访问控制策略表达式 -openGauss=# ALTER ROW LEVEL SECURITY POLICY all_data_new_rls ON all_data USING (id > 100 AND role = current_user); -openGauss=# \d+ all_data - Table "public.all_data" - Column | Type | Modifiers | Storage | Stats target | Description ---------+------------------------+-----------+----------+--------------+------------- - id | integer | | plain | | - role | character varying(100) | | extended | | - data | character varying(100) | | extended | | -Row Level Security Policies: - POLICY "all_data_new_rls" - TO alice,bob - USING (((id > 100) AND ((role)::name = "current_user"()))) -Has OIDs: no -Location Nodes: ALL DATANODES -Options: orientation=row, compression=no, enable_rowsecurity=true -``` - -## 相关链接 - -[CREATE ROW LEVEL SECURITY POLICY](CREATE-ROW-LEVEL-SECURITY-POLICY.md),[DROP ROW LEVEL SECURITY POLICY](DROP-ROW-LEVEL-SECURITY-POLICY.md) - +# ALTER ROW LEVEL SECURITY POLICY + +## 功能描述 + +对已存在的行访问控制策略(包括行访问控制策略的名称、行访问控制指定的用户、行访问控制的策略表达式)进行修改。 + +## 注意事项 + +表的所有者或管理员用户才能进行此操作。 + +## 语法格式 + +``` +ALTER [ ROW LEVEL SECURITY ] POLICY [ IF EXISTS ] policy_name ON table_name RENAME TO new_policy_name; + +ALTER [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name + [ TO { role_name | PUBLIC } [, ...] ] + [ USING ( using_expression ) ]; +``` + +## 参数说明 + +- policy\_name + + 行访问控制策略名称。 + +- table\_name + + 行访问控制策略的表名。 + +- new\_policy\_name + + 新的行访问控制策略名称。 + +- role\_name + + 行访问控制策略应用的数据库用户,可以指定多个用户, PUBLIC 表示应用到所有用户。 + +- using\_expression + + 行访问控制的表达式,返回值为 boolean 类型。 + + +## 示例 + +``` +--创建数据表all_data +openGauss=# CREATE TABLE all_data(id int, role varchar(100), data varchar(100)); + +--创建行访问控制策略,当前用户只能查看用户自身的数据 +openGauss=# CREATE ROW LEVEL SECURITY POLICY all_data_rls ON all_data USING(role = CURRENT_USER); +openGauss=# \d+ all_data + Table "public.all_data" + Column | Type | Modifiers | Storage | Stats target | Description +--------+------------------------+-----------+----------+--------------+------------- + id | integer | | plain | | + role | character varying(100) | | extended | | + data | character varying(100) | | extended | | +Row Level Security Policies: + POLICY "all_data_rls" + USING (((role)::name = "current_user"())) +Has OIDs: no +Location Nodes: ALL DATANODES +Options: orientation=row, compression=no + +--修改行访问控制 all_data_rls 的名称 +openGauss=# ALTER ROW LEVEL SECURITY POLICY all_data_rls ON all_data RENAME TO all_data_new_rls; + +--修改行访问控制策略影响的用户 +openGauss=# ALTER ROW LEVEL SECURITY POLICY all_data_new_rls ON all_data TO alice, bob; +openGauss=# \d+ all_data + Table "public.all_data" + Column | Type | Modifiers | Storage | Stats target | Description +--------+------------------------+-----------+----------+--------------+------------- + id | integer | | plain | | + role | character varying(100) | | extended | | + data | character varying(100) | | extended | | +Row Level Security Policies: + POLICY "all_data_new_rls" + TO alice ,bob + USING (((role)::name = "current_user"())) +Has OIDs: no +Location Nodes: ALL DATANODES +Options: orientation=row, compression=no, enable_rowsecurity=true + +--修改行访问控制策略表达式 +openGauss=# ALTER ROW LEVEL SECURITY POLICY all_data_new_rls ON all_data USING (id > 100 AND role = current_user); +openGauss=# \d+ all_data + Table "public.all_data" + Column | Type | Modifiers | Storage | Stats target | Description +--------+------------------------+-----------+----------+--------------+------------- + id | integer | | plain | | + role | character varying(100) | | extended | | + data | character varying(100) | | extended | | +Row Level Security Policies: + POLICY "all_data_new_rls" + TO alice ,bob + USING (((id > 100) AND ((role)::name = "current_user"()))) +Has OIDs: no +Location Nodes: ALL DATANODES +Options: orientation=row, compression=no, enable_rowsecurity=true +``` + +## 相关链接 + +[CREATE ROW LEVEL SECURITY POLICY](CREATE-ROW-LEVEL-SECURITY-POLICY.md),[DROP ROW LEVEL SECURITY POLICY](DROP-ROW-LEVEL-SECURITY-POLICY.md) + diff --git a/content/zh/docs/Developerguide/ALTER-RULE.md b/content/zh/docs/Developerguide/ALTER-RULE.md index 55530216e..e523a685b 100644 --- a/content/zh/docs/Developerguide/ALTER-RULE.md +++ b/content/zh/docs/Developerguide/ALTER-RULE.md @@ -1,40 +1,40 @@ -# ALTER RULE - -## 功能描述 - -修改一个规则的定义。 - -## 注意事项 - -- 要使用ALTER RULE,用户必须为应用了指定规则的表或视图的所有者。 -- 目前仅支持修改规则的名称。 - -## 语法格式 - -``` -ALTER RULE name ON table_name RENAME TO new_name -``` - -## 参数说明 - -- name - - 需要修改的规则名称。 - -- table\_name - - 需要创建规则的表名称。 - - 取值范围:数据库中已经存在的表名称。 - -- new\_name - - 规则的新名称。 - - -## 示例 - -``` -ALTER RULE notify_all ON emp RENAME TO notify_me; -``` - +# ALTER RULE + +## 功能描述 + +修改一个规则的定义。 + +## 注意事项 + +- 要使用 ALTER RULE ,用户必须为应用了指定规则的表或视图的所有者。 +- 目前仅支持修改规则的名称。 + +## 语法格式 + +``` +ALTER RULE name ON table_name RENAME TO new_name +``` + +## 参数说明 + +- name + + 需要修改的规则名称。 + +- table\_name + + 需要创建规则的表名称。 + + 取值范围:数据库中已经存在的表名称。 + +- new\_name + + 规则的新名称。 + + +## 示例 + +``` +ALTER RULE notify_all ON emp RENAME TO notify_me; +``` + diff --git a/content/zh/docs/Developerguide/ALTER-SCHEMA.md b/content/zh/docs/Developerguide/ALTER-SCHEMA.md index 856daef4f..0caa22c8c 100644 --- a/content/zh/docs/Developerguide/ALTER-SCHEMA.md +++ b/content/zh/docs/Developerguide/ALTER-SCHEMA.md @@ -1,87 +1,87 @@ -# ALTER SCHEMA - -## 功能描述 - -修改模式属性。 - -## 注意事项 - -只有模式的所有者或者被授予了模式ALTER权限的用户有权限执行ALTER SCHEMA命令,系统管理员默认拥有此权限。但要修改模式的所有者,当前用户必须是该模式的所有者或者系统管理员,且该用户是新所有者角色的成员。 - -## 语法格式 - -- 修改模式的防篡改属性。 - - ``` - ALTER SCHEMA schema_name { WITH | WITHOUT } BLOCKCHAIN - ``` - - -- 修改模式的名称。 - - ``` - ALTER SCHEMA schema_name - RENAME TO new_name; - ``` - -- 修改模式的所有者。 - - ``` - ALTER SCHEMA schema_name - OWNER TO new_owner; - ``` - - -## 参数说明 - -- **schema\_name** - - 现有模式的名称。 - - 取值范围:已存在的模式名。 - -- **RENAME TO new\_name** - - 修改模式的名称。非系统管理员要改变模式的名称,则该用户必须在此数据库上有CREATE权限。 - - new\_name:模式的新名称。 - - 取值范围:字符串,要符合标识符命名规范。 - -- **OWNER TO new\_owner** - - 修改模式的所有者。非系统管理员要改变模式的所有者,该用户还必须是新的所有角色的直接或间接成员, 并且该成员必须在此数据库上有CREATE权限。 - - new\_owner:模式的新所有者。 - - 取值范围:已存在的用户名/角色名。 - -- **\{ WITH | WITHOUT \} BLOCKCHAIN** - - 修改模式的防篡改属性。具有防篡改属性模式下的普通行存表均为防篡改历史表,不包括外表、临时表、系统表。当该模式下不包含任何表时才可修改防篡改属性。另外,不支持临时表模式。toast表模式、dbe\_perf模式、blockchain模式修改防篡改属性。 - - -## 示例 - -``` ---创建模式ds。 -openGauss=# CREATE SCHEMA ds; - ---将当前模式ds更名为ds_new。 -openGauss=# ALTER SCHEMA ds RENAME TO ds_new; - ---创建用户jack。 -openGauss=# CREATE USER jack PASSWORD 'xxxxxxxxx'; - ---将DS_NEW的所有者修改为jack。 -openGauss=# ALTER SCHEMA ds_new OWNER TO jack; - ---删除用户jack和模式ds_new。 -openGauss=# DROP SCHEMA ds_new; -openGauss=# DROP USER jack; -``` - -## 相关链接 - -[CREATE SCHEMA](CREATE-SCHEMA.md),[DROP SCHEMA](DROP-SCHEMA.md) - +# ALTER SCHEMA + +## 功能描述 + +修改模式属性。 + +## 注意事项 + +只有模式的所有者或者被授予了模式 ALTER 权限的用户有权限执行 ALTER SCHEMA 命令,系统管理员默认拥有此权限。但要修改模式的所有者,当前用户必须是该模式的所有者或者系统管理员,且该用户是新所有者角色的成员。 + +## 语法格式 + +- 修改模式的防篡改属性。 + + ``` + ALTER SCHEMA schema_name { WITH | WITHOUT } BLOCKCHAIN + ``` + + +- 修改模式的名称。 + + ``` + ALTER SCHEMA schema_name + RENAME TO new_name; + ``` + +- 修改模式的所有者。 + + ``` + ALTER SCHEMA schema_name + OWNER TO new_owner; + ``` + + +## 参数说明 + +- **schema\_name** + + 现有模式的名称。 + + 取值范围:已存在的模式名。 + +- **RENAME TO new\_name** + + 修改模式的名称。非系统管理员要改变模式的名称,则该用户必须在此数据库上有 CREATE 权限。 + + new\_name:模式的新名称。 + + 取值范围:字符串,要符合标识符命名规范。 + +- **OWNER TO new\_owner** + + 修改模式的所有者。非系统管理员要改变模式的所有者,该用户还必须是新的所有角色的直接或间接成员, 并且该成员必须在此数据库上有 CREATE 权限。 + + new\_owner:模式的新所有者。 + + 取值范围:已存在的用户名/角色名。 + +- **\{ WITH | WITHOUT \} BLOCKCHAIN** + + 修改模式的防篡改属性。具有防篡改属性模式下的普通行存表均为防篡改历史表,不包括外表、临时表、系统表。当该模式下不包含任何表时才可修改防篡改属性。另外,不支持临时表模式。 toast 表模式、dbe\_perf模式、blockchain模式修改防篡改属性。 + + +## 示例 + +``` +--创建模式 ds 。 +openGauss=# CREATE SCHEMA ds; + +--将当前模式 ds 更名为 ds_new 。 +openGauss=# ALTER SCHEMA ds RENAME TO ds_new; + +--创建用户 jack 。 +openGauss=# CREATE USER jack PASSWORD 'xxxxxxxxx'; + +--将 DS_NEW 的所有者修改为 jack 。 +openGauss=# ALTER SCHEMA ds_new OWNER TO jack; + +--删除用户 jack 和模式 ds_new 。 +openGauss=# DROP SCHEMA ds_new; +openGauss=# DROP USER jack; +``` + +## 相关链接 + +[CREATE SCHEMA](CREATE-SCHEMA.md),[DROP SCHEMA](DROP-SCHEMA.md) + diff --git a/content/zh/docs/Developerguide/ALTER-SEQUENCE.md b/content/zh/docs/Developerguide/ALTER-SEQUENCE.md index 45f7b1133..f2646a46f 100644 --- a/content/zh/docs/Developerguide/ALTER-SEQUENCE.md +++ b/content/zh/docs/Developerguide/ALTER-SEQUENCE.md @@ -1,82 +1,82 @@ -# ALTER SEQUENCE - -## 功能描述 - -修改一个现有的序列的参数。 - -## 注意事项 - -- 只有序列的所有者或者被授予了序列ALTER权限的用户才能执行ALTER SEQUENCE命令,系统管理员默认拥有该权限。但要修改序列的所有者,当前用户必须是该序列的所有者或者系统管理员,且该用户是新所有者角色的成员。 -- 当前版本仅支持修改拥有者、归属列和最大值。若要修改其他参数,可以删除重建,并用Setval函数恢复当前值。 -- ALTER SEQUENCE MAXVALUE不支持在事务、函数和存储过程中使用。 -- 修改序列的最大值后,会清空该序列在所有会话的cache。 -- ALTER SEQUENCE会阻塞nextval、setval、currval和lastval的调用。 - -## 语法格式 - -- 修改序列归属列 - - ``` - ALTER SEQUENCE [ IF EXISTS ] name - [MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE | CACHE cache] - [ OWNED BY { table_name.column_name | NONE } ] ; - ``` - - -- 修改序列的拥有者 - - ``` - ALTER SEQUENCE [ IF EXISTS ] name OWNER TO new_owner; - ``` - - -## 参数说明 - -- name - - 将要修改的序列名称。 - -- IF EXISTS - - 当序列不存在时使用该选项不会出现错误消息,仅有一个通知。 - -- CACHE - - 为了快速访问,而在内存中预先存储序列号的个数。如果没有指定,将保持旧的缓冲值。 - -- OWNED BY - - 将序列和一个表的指定字段进行关联。这样,在删除那个字段或其所在表的时候会自动删除已关联的序列。 - - 如果序列已经和表有关联后,使用这个选项后新的关联关系会覆盖旧的关联。 - - 关联的表和序列的所有者必须是同一个用户,并且在同一个模式中。 - - 使用OWNED BY NONE将删除任何已经存在的关联。 - -- new\_owner - - 序列新所有者的用户名。用户要修改序列的所有者,必须是新角色的直接或者间接成员,并且那个角色必须有序列所在模式上的CREATE权限。 - - -## 示例 - -``` ---创建一个名为serial的递增序列,从101开始。 -openGauss=# CREATE SEQUENCE serial START 101; - ---创建一个表,定义默认值。 -openGauss=# CREATE TABLE T1(C1 bigint default nextval('serial')); - ---将序列serial的归属列变为T1.C1。 -openGauss=# ALTER SEQUENCE serial OWNED BY T1.C1; - ---删除序列和表。 -openGauss=# DROP SEQUENCE serial cascade; -openGauss=# DROP TABLE T1; -``` - -## 相关链接 - -[CREATE SEQUENCE](CREATE-SEQUENCE.md),[DROP SEQUENCE](DROP-SEQUENCE.md) - +# ALTER SEQUENCE + +## 功能描述 + +修改一个现有的序列的参数。 + +## 注意事项 + +- 只有序列的所有者或者被授予了序列 ALTER 权限的用户才能执行 ALTER SEQUENCE 命令,系统管理员默认拥有该权限。但要修改序列的所有者,当前用户必须是该序列的所有者或者系统管理员,且该用户是新所有者角色的成员。 +- 当前版本仅支持修改拥有者、归属列和最大值。若要修改其他参数,可以删除重建,并用 Setval 函数恢复当前值。 +- ALTER SEQUENCE MAXVALUE不支持在事务、函数和存储过程中使用。 +- 修改序列的最大值后,会清空该序列在所有会话的 cache 。 +- ALTER SEQUENCE会阻塞nextval、setval、currval和 lastval 的调用。 + +## 语法格式 + +- 修改序列归属列 + + ``` + ALTER SEQUENCE [ IF EXISTS ] name + [MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE | CACHE cache] + [ OWNED BY { table_name.column_name | NONE } ] ; + ``` + + +- 修改序列的拥有者 + + ``` + ALTER SEQUENCE [ IF EXISTS ] name OWNER TO new_owner; + ``` + + +## 参数说明 + +- name + + 将要修改的序列名称。 + +- IF EXISTS + + 当序列不存在时使用该选项不会出现错误消息,仅有一个通知。 + +- CACHE + + 为了快速访问,而在内存中预先存储序列号的个数。如果没有指定,将保持旧的缓冲值。 + +- OWNED BY + + 将序列和一个表的指定字段进行关联。这样,在删除那个字段或其所在表的时候会自动删除已关联的序列。 + + 如果序列已经和表有关联后,使用这个选项后新的关联关系会覆盖旧的关联。 + + 关联的表和序列的所有者必须是同一个用户,并且在同一个模式中。 + + 使用 OWNED BY NONE 将删除任何已经存在的关联。 + +- new\_owner + + 序列新所有者的用户名。用户要修改序列的所有者,必须是新角色的直接或者间接成员,并且那个角色必须有序列所在模式上的 CREATE 权限。 + + +## 示例 + +``` +--创建一个名为 serial 的递增序列,从 101 开始。 +openGauss=# CREATE SEQUENCE serial START 101; + +--创建一个表,定义默认值。 +openGauss=# CREATE TABLE T1(C1 bigint default nextval('serial')); + +--将序列 serial 的归属列变为T1.C1。 +openGauss=# ALTER SEQUENCE serial OWNED BY T1.C1; + +--删除序列和表。 +openGauss=# DROP SEQUENCE serial cascade; +openGauss=# DROP TABLE T1; +``` + +## 相关链接 + +[CREATE SEQUENCE](CREATE-SEQUENCE.md),[DROP SEQUENCE](DROP-SEQUENCE.md) + diff --git a/content/zh/docs/Developerguide/ALTER-SERVER.md b/content/zh/docs/Developerguide/ALTER-SERVER.md index 088721c95..3df65c3fb 100644 --- a/content/zh/docs/Developerguide/ALTER-SERVER.md +++ b/content/zh/docs/Developerguide/ALTER-SERVER.md @@ -1,103 +1,103 @@ -# ALTER SERVER - -## 功能描述 - -增加、修改和删除一个现有server的参数。已有server可以从pg\_foreign\_server系统表中查询。 - -## 注意事项 - -只有SERVER的所有者或者被授予了SERVER的ALTER权限的用户才可以执行ALTER SERVER命令,系统管理员默认拥有该权限。但要修改SERVER的所有者,当前用户必须是该SERVER的所有者或者系统管理员,且该用户是新所有者角色的成员。 - -## 语法格式 - -- 修改外部服务的参数。 - -``` - ALTER SERVER server_name [ VERSION 'new_version' ] - [ OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ] ) ]; -``` - - 在OPTIONS选项里,ADD、SET和DROP指定要执行的操作,未指定时默认为ADD操作。option和value为对应操作的参数。 - - -- 修改外部服务的名称。 - - ``` - ALTER SERVER server_name - RENAME TO new_name; - ``` - - -## 参数说明 - -- **server\_name** - - 所修改的server的名称。 - -- **new\_version** - - 修改后server的新版本名称。 - -- **OPTIONS** - - 更改该服务器的选项。ADD、SET和 DROP指定要执行的动作。如果没有显式地指定操作, 将会假定为ADD。选项名称必须唯一,名称和值也会使用该服务器的外部数据包装器库进行验证。 - - - oracle\_fdw支持的options包括: - - **dbserver** - - 远端oracle数据库的连接字符串。 - - - **isolation\_level** (默认值为serializable) - - oracle数据库的事务隔离级别。 - - 取值范围:serializable、 read\_committed 、 read\_only - - - mysql\_fdw支持的options包括: - - **host** (默认值为 127.0.0.1) - - MySQL Server/MariaDB的地址。 - - - **port** (默认值为 3306) - - MySQL Server/MariaDB侦听的端口号。 - - - postgres\_fdw支持的options同libpq支持的连接参数一致,可参考[链接字符](链接字符.md)。需要注意的是,以下几个options不支持修改: - - **user**和**password** - - 用户名和密码将在创建user mapping时指定。 - - - **client\_encoding** - - 将自动获取本地server的编码方式并设置该值。 - - - **application\_name** - - 总是设置成postgres\_fdw。 - - - 除了libpq支持的连接参数外,还额外提供3个options: - - - **use\_remote\_estimate** - - 控制postgres\_fdw是否发出EXPLAIN命令以获取运行消耗估算。默认值为false。 - - - **fdw\_startup\_cost** - - 执行一个外表扫描时的启动耗时估算。这个值通常包含建立连接、远端对请求的分析和生成计划的耗时。默认值为100。 - - - **fdw\_typle\_cost** - - 在远端服务器上对每一个元组进行扫描时的额外消耗。这个值通常表示数据在server间传输的额外消耗。默认值为0.01。 - - - -- **new\_name** - - 修改后server的新名称。 - - -## 相关链接 - -[CREATE SERVER ](CREATE-SERVER.md),[CREATE SERVER](DROP-SERVER.md) - +# ALTER SERVER + +## 功能描述 + +增加、修改和删除一个现有 server 的参数。已有 server 可以从pg\_foreign\_server系统表中查询。 + +## 注意事项 + +只有 SERVER 的所有者或者被授予了 SERVER 的 ALTER 权限的用户才可以执行 ALTER SERVER 命令,系统管理员默认拥有该权限。但要修改 SERVER 的所有者,当前用户必须是该 SERVER 的所有者或者系统管理员,且该用户是新所有者角色的成员。 + +## 语法格式 + +- 修改外部服务的参数。 + +``` + ALTER SERVER server_name [ VERSION 'new_version' ] + [ OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ] ) ]; +``` + + 在 OPTIONS 选项里,ADD、SET和 DROP 指定要执行的操作,未指定时默认为 ADD 操作。 option 和 value 为对应操作的参数。 + + +- 修改外部服务的名称。 + + ``` + ALTER SERVER server_name + RENAME TO new_name; + ``` + + +## 参数说明 + +- **server\_name** + + 所修改的 server 的名称。 + +- **new\_version** + + 修改后 server 的新版本名称。 + +- **OPTIONS** + + 更改该服务器的选项。ADD、SET和 DROP 指定要执行的动作。如果没有显式地指定操作, 将会假定为 ADD 。选项名称必须唯一,名称和值也会使用该服务器的外部数据包装器库进行验证。 + + - oracle\_fdw支持的 options 包括: + - **dbserver** + + 远端 oracle 数据库的连接字符串。 + + - **isolation\_level** (默认值为serializable) + +oracle 数据库的事务隔离级别。 + + 取值范围:serializable、 read\_committed 、 read\_only + + - mysql\_fdw支持的 options 包括: + - **host** (默认值为 127.0.0.1) + + MySQL Server/MariaDB的地址。 + + - **port** (默认值为 3306) + + MySQL Server/MariaDB侦听的端口号。 + + - postgres\_fdw支持的 options 同 libpq 支持的连接参数一致,可参考[链接字符](链接字符.md)。需要注意的是,以下几个 options 不支持修改: + - **user**和**password** + + 用户名和密码将在创建 user mapping 时指定。 + + - **client\_encoding** + + 将自动获取本地 server 的编码方式并设置该值。 + + - **application\_name** + + 总是设置成postgres\_fdw。 + + + 除了 libpq 支持的连接参数外,还额外提供 3 个options: + + - **use\_remote\_estimate** + + 控制postgres\_fdw是否发出 EXPLAIN 命令以获取运行消耗估算。默认值为 false 。 + + - **fdw\_startup\_cost** + + 执行一个外表扫描时的启动耗时估算。这个值通常包含建立连接、远端对请求的分析和生成计划的耗时。默认值为 100 。 + + - **fdw\_typle\_cost** + + 在远端服务器上对每一个元组进行扫描时的额外消耗。这个值通常表示数据在 server 间传输的额外消耗。默认值为0.01。 + + + +- **new\_name** + + 修改后 server 的新名称。 + + +## 相关链接 + +[CREATE SERVER ](CREATE-SERVER.md),[CREATE SERVER](DROP-SERVER.md) + diff --git a/content/zh/docs/Developerguide/ALTER-SESSION.md b/content/zh/docs/Developerguide/ALTER-SESSION.md index 47a7193c4..bfed6a31a 100644 --- a/content/zh/docs/Developerguide/ALTER-SESSION.md +++ b/content/zh/docs/Developerguide/ALTER-SESSION.md @@ -1,85 +1,85 @@ -# ALTER SESSION - -## 功能描述 - -ALTER SESSION命令用于定义或修改那些对当前会话有影响的条件或参数。修改后的会话参数会一直保持,直到断开当前会话。 - -## 注意事项 - -- 如果执行SET TRANSACTION之前没有执行START TRANSACTION,则事务立即结束,命令无法显示效果。 -- 可以用START TRANSACTION里面声明所需要的transaction\_mode\(s\)的方法来避免使用SET TRANSACTION。 - -## 语法格式 - -- 设置会话的事务参数。 - - ``` - ALTER SESSION SET [ SESSION CHARACTERISTICS AS ] TRANSACTION - { ISOLATION LEVEL { READ COMMITTED } | { READ ONLY | READ WRITE } } [, ...] ; - ``` - -- 设置会话的其他运行时参数。 - - ``` - ALTER SESSION SET - {{config_parameter { { TO | = } { value | DEFAULT } - | FROM CURRENT }} - | TIME ZONE time_zone - | CURRENT_SCHEMA schema - | NAMES encoding_name - | ROLE role_name PASSWORD 'password' - | SESSION AUTHORIZATION { role_name PASSWORD 'password' | DEFAULT } - | XML OPTION { DOCUMENT | CONTENT } - } ; - ``` - - -## 参数说明 - -修改会话涉及到的参数说明请参见SET语法中的[参数说明](SET.md#zh-cn_topic_0283136841_zh-cn_topic_0237122186_zh-cn_topic_0059779029_s39823c7ebd854a9f9c761b3a32b1c3c3)。 - -## 示例 - -``` --- 创建模式ds。 -openGauss=# CREATE SCHEMA ds; - ---设置模式搜索路径。 -openGauss=# SET SEARCH_PATH TO ds, public; - ---设置日期时间风格为传统的POSTGRES风格(日在月前)。 -openGauss=# SET DATESTYLE TO postgres, dmy; - ---设置当前会话的字符编码为UTF8。 -openGauss=# ALTER SESSION SET NAMES 'UTF8'; - ---设置时区为加州伯克利。 -openGauss=# SET TIME ZONE 'PST8PDT'; - ---设置时区为意大利。 -openGauss=# SET TIME ZONE 'Europe/Rome'; - ---设置当前模式。 -openGauss=# ALTER SESSION SET CURRENT_SCHEMA TO tpcds; - ---设置XML OPTION为DOCUMENT。 -openGauss=# ALTER SESSION SET XML OPTION DOCUMENT; - ---创建角色joe,并设置会话的角色为joe。 -openGauss=# CREATE ROLE joe WITH PASSWORD 'xxxxxxxxx'; -openGauss=# ALTER SESSION SET SESSION AUTHORIZATION joe PASSWORD 'xxxxxxxxx'; - ---切换到默认用户。 -openGauss=> ALTER SESSION SET SESSION AUTHORIZATION default; - ---删除ds模式。 -openGauss=# DROP SCHEMA ds; - ---删除joe。 -openGauss=# DROP ROLE joe; -``` - -## 相关链接 - -[SET](SET.md) - +# ALTER SESSION + +## 功能描述 + +ALTER SESSION 命令用于定义或修改那些对当前会话有影响的条件或参数。修改后的会话参数会一直保持,直到断开当前会话。 + +## 注意事项 + +- 如果执行 SET TRANSACTION 之前没有执行 START TRANSACTION ,则事务立即结束,命令无法显示效果。 +- 可以用 START TRANSACTION 里面声明所需要的transaction\_mode\(s\)的方法来避免使用 SET TRANSACTION 。 + +## 语法格式 + +- 设置会话的事务参数。 + + ``` + ALTER SESSION SET [ SESSION CHARACTERISTICS AS ] TRANSACTION + { ISOLATION LEVEL { READ COMMITTED } | { READ ONLY | READ WRITE } } [, ...] ; + ``` + +- 设置会话的其他运行时参数。 + + ``` + ALTER SESSION SET + {{config_parameter { { TO | = } { value | DEFAULT } + | FROM CURRENT }} + | TIME ZONE time_zone + | CURRENT_SCHEMA schema + | NAMES encoding_name + | ROLE role_name PASSWORD 'password' + | SESSION AUTHORIZATION { role_name PASSWORD 'password' | DEFAULT } + | XML OPTION { DOCUMENT | CONTENT } + } ; + ``` + + +## 参数说明 + +修改会话涉及到的参数说明请参见 SET 语法中的[参数说明](SET.md#zh-cn_topic_0283136841_zh-cn_topic_0237122186_zh-cn_topic_0059779029_s39823c7ebd854a9f9c761b3a32b1c3c3)。 + +## 示例 + +``` +-- 创建模式 ds 。 +openGauss=# CREATE SCHEMA ds; + +--设置模式搜索路径。 +openGauss=# SET SEARCH_PATH TO ds, public; + +--设置日期时间风格为传统的 POSTGRES 风格(日在月前)。 +openGauss=# SET DATESTYLE TO postgres, dmy; + +--设置当前会话的字符编码为 UTF8 。 +openGauss=# ALTER SESSION SET NAMES 'UTF8'; + +--设置时区为加州伯克利。 +openGauss=# SET TIME ZONE 'PST8PDT'; + +--设置时区为意大利。 +openGauss=# SET TIME ZONE 'Europe/Rome'; + +--设置当前模式。 +openGauss=# ALTER SESSION SET CURRENT_SCHEMA TO tpcds; + +--设置 XML OPTION 为 DOCUMENT 。 +openGauss=# ALTER SESSION SET XML OPTION DOCUMENT; + +--创建角色 joe ,并设置会话的角色为 joe 。 +openGauss=# CREATE ROLE joe WITH PASSWORD 'xxxxxxxxx'; +openGauss=# ALTER SESSION SET SESSION AUTHORIZATION joe PASSWORD 'xxxxxxxxx'; + +--切换到默认用户。 +openGauss=> ALTER SESSION SET SESSION AUTHORIZATION default; + +--删除 ds 模式。 +openGauss=# DROP SCHEMA ds; + +--删除 joe 。 +openGauss=# DROP ROLE joe; +``` + +## 相关链接 + +[SET](SET.md) + diff --git a/content/zh/docs/Developerguide/ALTER-SYNONYM.md b/content/zh/docs/Developerguide/ALTER-SYNONYM.md index d8d347bed..d7fd085de 100644 --- a/content/zh/docs/Developerguide/ALTER-SYNONYM.md +++ b/content/zh/docs/Developerguide/ALTER-SYNONYM.md @@ -1,58 +1,58 @@ -# ALTER SYNONYM - -## 功能描述 - -修改SYNONYM对象的属性。 - -## 注意事项 - -- 目前仅支持修改SYNONYM对象的属主。 -- 只有系统管理员有权限修改SYNONYM对象的属主信息。 -- 新属主必须具有SYNONYM对象所在模式的CREATE权限。 - -## 语法格式 - -``` -ALTER SYNONYM synonym_name - OWNER TO new_owner; -``` - -## 参数描述 - -- **synonym** - - 待修改的同义词名字,可以带模式名。 - - 取值范围:字符串,需要符合标识符的命名规范。 - - -- **new\_owner** - - 同义词对象的新所有者。 - - 取值范围:字符串,有效的用户名。 - - -## 示例 - -``` ---创建同义词t1。 -openGauss=# CREATE OR REPLACE SYNONYM t1 FOR ot.t1; - ---创建新用户u1。 -openGauss=# CREATE USER u1 PASSWORD 'user@111'; - ---修改同义词t1的owner为u1。 -openGauss=# ALTER SYNONYM t1 OWNER TO u1; - ---删除同义词t1。 -openGauss=# DROP SYNONYM t1; - ---删除用户u1。 -openGauss=# DROP USER u1; -``` - -## 相关链接 - -[CREATE SYNONYM](CREATE-SYNONYM.md),[DROP SYNONYM](DROP-SYNONYM.md) - +# ALTER SYNONYM + +## 功能描述 + +修改 SYNONYM 对象的属性。 + +## 注意事项 + +- 目前仅支持修改 SYNONYM 对象的属主。 +- 只有系统管理员有权限修改 SYNONYM 对象的属主信息。 +- 新属主必须具有 SYNONYM 对象所在模式的 CREATE 权限。 + +## 语法格式 + +``` +ALTER SYNONYM synonym_name + OWNER TO new_owner; +``` + +## 参数描述 + +- **synonym** + + 待修改的同义词名字,可以带模式名。 + + 取值范围:字符串,需要符合标识符的命名规范。 + + +- **new\_owner** + + 同义词对象的新所有者。 + + 取值范围:字符串,有效的用户名。 + + +## 示例 + +``` +--创建同义词 t1 。 +openGauss=# CREATE OR REPLACE SYNONYM t1 FOR ot.t1; + +--创建新用户 u1 。 +openGauss=# CREATE USER u1 PASSWORD 'user@111'; + +--修改同义词 t1 的 owner 为 u1 。 +openGauss=# ALTER SYNONYM t1 OWNER TO u1; + +--删除同义词 t1 。 +openGauss=# DROP SYNONYM t1; + +--删除用户 u1 。 +openGauss=# DROP USER u1; +``` + +## 相关链接 + +[CREATE SYNONYM](CREATE-SYNONYM.md),[DROP SYNONYM](DROP-SYNONYM.md) + diff --git a/content/zh/docs/Developerguide/ALTER-SYSTEM-KILL-SESSION.md b/content/zh/docs/Developerguide/ALTER-SYSTEM-KILL-SESSION.md index cf9a26f81..87a885097 100644 --- a/content/zh/docs/Developerguide/ALTER-SYSTEM-KILL-SESSION.md +++ b/content/zh/docs/Developerguide/ALTER-SYSTEM-KILL-SESSION.md @@ -1,50 +1,50 @@ -# ALTER SYSTEM KILL SESSION - -## 功能描述 - -ALTER SYSTEM KILL SESSION命令用于结束一个会话。 - -## 注意事项 - -无。 - -## 语法格式 - -``` -ALTER SYSTEM KILL SESSION 'session_sid, serial' [ IMMEDIATE ]; -``` - -## 参数说明 - -- **session\_sid, serial** - - 会话的SID和SERIAL(获取方法请参考示例)。 - -- **IMMEDIATE** - - 表明会话将在命令执行后立即结束。 - - -## 示例 - -``` ---查询会话信息。 -openGauss=# -SELECT sa.sessionid AS sid,0::integer AS serial#,ad.rolname AS username FROM pg_stat_get_activity(NULL) AS sa -LEFT JOIN pg_authid ad ON(sa.usesysid = ad.oid)WHERE sa.application_name <> 'JobScheduler'; - sid | serial# | username ------------------+---------+---------- - 140131075880720 | 0 | omm - 140131025549072 | 0 | omm - 140131073779472 | 0 | omm - 140131071678224 | 0 | omm - 140131125774096 | 0 | - 140131127875344 | 0 | - 140131113629456 | 0 | - 140131094742800 | 0 | -(8 rows) - ---结束SID为140131075880720的会话。 -openGauss=# ALTER SYSTEM KILL SESSION '140131075880720,0' IMMEDIATE; -``` - +# ALTER SYSTEM KILL SESSION + +## 功能描述 + +ALTER SYSTEM KILL SESSION 命令用于结束一个会话。 + +## 注意事项 + +无。 + +## 语法格式 + +``` +ALTER SYSTEM KILL SESSION 'session_sid, serial' [ IMMEDIATE ]; +``` + +## 参数说明 + +- **session\_sid, serial** + + 会话的 SID 和SERIAL(获取方法请参考示例)。 + +- **IMMEDIATE** + + 表明会话将在命令执行后立即结束。 + + +## 示例 + +``` +--查询会话信息。 +openGauss=# +SELECT sa.sessionid AS sid,0::integer AS serial#,ad.rolname AS username FROM pg_stat_get_activity(NULL) AS sa +LEFT JOIN pg_authid ad ON(sa.usesysid = ad.oid)WHERE sa.application_name <> 'JobScheduler'; + sid | serial# | username +-----------------+---------+---------- + 140131075880720 | 0 | omm + 140131025549072 | 0 | omm + 140131073779472 | 0 | omm + 140131071678224 | 0 | omm + 140131125774096 | 0 | + 140131127875344 | 0 | + 140131113629456 | 0 | + 140131094742800 | 0 | +(8 rows) + +--结束 SID 为 140131075880720 的会话。 +openGauss=# ALTER SYSTEM KILL SESSION '140131075880720,0' IMMEDIATE; +``` + diff --git a/content/zh/docs/Developerguide/ALTER-SYSTEM-SET.md b/content/zh/docs/Developerguide/ALTER-SYSTEM-SET.md index c1eb1f8bf..151c68f98 100644 --- a/content/zh/docs/Developerguide/ALTER-SYSTEM-SET.md +++ b/content/zh/docs/Developerguide/ALTER-SYSTEM-SET.md @@ -1,70 +1,70 @@ -# ALTER SYSTEM SET - -## 功能描述 - -ALTER SYSTEM SET命令用于设置POSTMASTER、SIGHUP、BACKEND级别的GUC参数。此命令会将参数写入配置文件,不同级别生效方式有所不同。 - -## 注意事项 - -- 此命令仅限初始用户和拥有sysadmin权限的用户才可使用。 -- 不同级别GUC参数生效时间如下: - - POSTMASTER级别的GUC参数需要重启后才生效。 - - BACKEND级别的GUC参数需要会话重新连接后才生效。 - - SIGHUP级别的GUC参数立即生效(需要等待线程重新加载参数,实际略微有延迟)。 - -- 通过配置[audit\_set\_parameter](操作审计.md#zh-cn_topic_0283136929_zh-cn_topic_0237124747_zh-cn_topic_0059777487_sc59738d0efe94f909306fde1f3d04f1e)参数,可以配置此操作是否被审计。 -- 操作可被备机同步。 -- 同gs\_guc一致,并不关注数据库是主或备节点、是否只读。 -- 不可在事务中执行,因为此操作无法被回滚。 -- 部分参数只能由初始用户修改,具体如下: - - ``` - audit_copy_exec, audit_data_format, audit_database_process, audit_directory, audit_dml_state, - audit_dml_state_select, audit_enabled, audit_file_remain_threshold, audit_file_remain_time, - audit_function_exec, audit_grant_revoke, audit_login_logout, audit_resource_policy, - audit_rotation_interval, audit_rotation_size, audit_set_parameter, audit_space_limit, - audit_system_object, audit_user_locked, audit_user_violation, - asp_log_directory, config_file, data_directory, enable_access_server_directory, - enable_copy_server_files, external_pid_file, hba_file, ident_file, log_directory, perf_directory, - query_log_directory, ssl_ca_file, ssl_cert_file, ssl_crl_file, ssl_key_file, stats_temp_directory, - unix_socket_directory, unix_socket_group, unix_socket_permissions, - krb_caseins_users, krb_server_keyfile, krb_srvname, allow_system_table_mods, enableSeparationOfDuty, - modify_initial_password, password_encryption_type, password_policy - ``` - - -## 语法格式 - -``` -ALTER SYSTEM SET parameter TO value; -``` - -## 参数说明 - -- **parameter** - - GUC参数名。 - -- **value** - - GUC参数值。 - - -## 示例 - -``` ---设置SIGHUP级别参数audit_enabled。 -openGauss=# alter system set audit_enabled to off; -ALTER SYSTEM SET -openGauss=# show audit_enabled; - audit_enabled ---------------- - off -(1 row) - ---设置POSTMASTER级别参数 enable_thread_pool,将在重启之后生效。 -openGauss=# alter system set enable_thread_pool to on; -NOTICE: please restart the database for the POSTMASTER level parameter to take effect. -ALTER SYSTEM SET -``` - +# ALTER SYSTEM SET + +## 功能描述 + +ALTER SYSTEM SET 命令用于设置POSTMASTER、SIGHUP、BACKEND级别的 GUC 参数。此命令会将参数写入配置文件,不同级别生效方式有所不同。 + +## 注意事项 + +- 此命令仅限初始用户和拥有 sysadmin 权限的用户才可使用。 +- 不同级别 GUC 参数生效时间如下: + - POSTMASTER级别的 GUC 参数需要重启后才生效。 + - BACKEND级别的 GUC 参数需要会话重新连接后才生效。 + - SIGHUP级别的 GUC 参数立即生效(需要等待线程重新加载参数,实际略微有延迟)。 + +- 通过配置[audit\_set\_parameter](操作审计.md#zh-cn_topic_0283136929_zh-cn_topic_0237124747_zh-cn_topic_0059777487_sc59738d0efe94f909306fde1f3d04f1e)参数,可以配置此操作是否被审计。 +- 操作可被备机同步。 +- 同gs\_guc一致,并不关注数据库是主或备节点、是否只读。 +- 不可在事务中执行,因为此操作无法被回滚。 +- 部分参数只能由初始用户修改,具体如下: + + ``` + audit_copy_exec , audit_data_format , audit_database_process , audit_directory , audit_dml_state , + audit_dml_state_select , audit_enabled , audit_file_remain_threshold , audit_file_remain_time , + audit_function_exec , audit_grant_revoke , audit_login_logout , audit_resource_policy , + audit_rotation_interval , audit_rotation_size , audit_set_parameter , audit_space_limit , + audit_system_object , audit_user_locked , audit_user_violation , + asp_log_directory , config_file , data_directory , enable_access_server_directory , + enable_copy_server_files , external_pid_file , hba_file , ident_file , log_directory , perf_directory , + query_log_directory , ssl_ca_file , ssl_cert_file , ssl_crl_file , ssl_key_file , stats_temp_directory , + unix_socket_directory , unix_socket_group , unix_socket_permissions , + krb_caseins_users , krb_server_keyfile , krb_srvname , allow_system_table_mods , enableSeparationOfDuty , + modify_initial_password , password_encryption_type , password_policy + ``` + + +## 语法格式 + +``` +ALTER SYSTEM SET parameter TO value; +``` + +## 参数说明 + +- **parameter** + +GUC 参数名。 + +- **value** + +GUC 参数值。 + + +## 示例 + +``` +--设置 SIGHUP 级别参数 audit_enabled 。 +openGauss=# alter system set audit_enabled to off; +ALTER SYSTEM SET +openGauss=# show audit_enabled; + audit_enabled +--------------- + off +(1 row) + +--设置 POSTMASTER 级别参数 enable_thread_pool ,将在重启之后生效。 +openGauss=# alter system set enable_thread_pool to on; +NOTICE: please restart the database for the POSTMASTER level parameter to take effect. +ALTER SYSTEM SET +``` + diff --git a/content/zh/docs/Developerguide/ALTER-TABLE-PARTITION.md b/content/zh/docs/Developerguide/ALTER-TABLE-PARTITION.md index f4384565b..f718d16d0 100644 --- a/content/zh/docs/Developerguide/ALTER-TABLE-PARTITION.md +++ b/content/zh/docs/Developerguide/ALTER-TABLE-PARTITION.md @@ -1,286 +1,286 @@ -# ALTER TABLE PARTITION - -## 功能描述 - -修改表分区,包括增删分区、切割分区、合成分区以及修改分区属性等。 - -## 注意事项 - -- 添加分区的表空间不能是PG\_GLOBAL。 -- 添加分区的名称不能与该分区表已有分区的名称相同。 -- 添加分区的分区键值要和分区表的分区键的类型一致,且要大于分区表中最后一个范围分区的上边界。 -- 如果目标分区表中已有分区数达到了最大值,则不能继续添加分区(范围分区表的分区数最大值是32767,哈希/列表分区表最大值是64)。 - -- 当分区表只有一个分区时,不能删除该分区。 -- 选择分区使用PARTITION FOR\(\),括号里指定值个数应该与定义分区时使用的列个数相同,并且一一对应。 -- Value分区表不支持相应的Alter Partition操作。 -- 列存分区表不支持切割分区。 -- 间隔分区表不支持添加分区。 -- 哈希分区表不支持切割分区,不支持合成分区,不支持添加和删除分区。 -- 列表分区表不支持切割分区,不支持合成分区。 -- 只有分区表的所有者或者被授予了分区表ALTER权限的用户有权限执行ALTER TABLE PARTITION命令,系统管理员默认拥有此权限。 - -## 语法格式 - -- 修改表分区主语法。 - - ``` - ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} - action [, ... ]; - ``` - - 其中action统指如下分区维护子语法。当存在多个分区维护子句时,保证了分区的连续性,无论这些子句的排序如何,openGauss总会先执行DROP PARTITION再执行ADD PARTITION操作,最后顺序执行其它分区维护操作。 - - ``` - move_clause | - exchange_clause | - row_clause | - merge_clause | - modify_clause | - split_clause | - add_clause | - drop_clause | - truncate_clause - ``` - - - move\_clause子语法用于移动分区到新的表空间。 - - ``` - MOVE PARTITION { partion_name | FOR ( partition_value [, ...] ) } TABLESPACE tablespacename - ``` - - - exchange\_clause子语法用于把普通表的数据迁移到指定的分区。 - - ``` - EXCHANGE PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) } - WITH TABLE {[ ONLY ] ordinary_table_name | ordinary_table_name * | ONLY ( ordinary_table_name )} - [ { WITH | WITHOUT } VALIDATION ] [ VERBOSE ] [ UPDATE GLOBAL INDEX ] - ``` - - 进行交换的普通表和分区必须满足如下条件: - - - 普通表和分区的列数目相同,对应列的信息严格一致,包括:列名、列的数据类型、列约束、列的Collation信息、列的存储参数、列的压缩信息等。 - - 普通表和分区的表压缩信息严格一致。 - - 普通表和分区的索引个数相同,且对应索引的信息严格一致。 - - 普通表和分区的表约束个数相同,且对应表约束的信息严格一致。 - - 普通表不可以是临时表,分区表只能是范围分区表、列表分区表、哈希分区表。 - - 普通表和分区表上不可以有动态数据脱敏,行访问控制约束。 - - 列表分区表,哈希分区表不能是列存储。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >- 完成交换后,普通表和分区的数据被置换,同时普通表和分区的表空间信息被置换。此时,普通表和分区的统计信息变得不可靠,需要对普通表和分区重新执行analyze。 - - >- 由于非分区键不能建立本地唯一索引,只能建立全局唯一索引,所以如果普通表含有唯一索引时,会导致不能交换数据。 - - - row\_clause子语法用于设置分区表的行迁移开关。 - - ``` - { ENABLE | DISABLE } ROW MOVEMENT - ``` - - - merge\_clause子语法用于把多个分区合并成一个分区。 - - ``` - MERGE PARTITIONS { partition_name } [, ...] INTO PARTITION partition_name - [ TABLESPACE tablespacename ] [ UPDATE GLOBAL INDEX ] - ``` - - - modify\_clause子语法用于设置分区索引是否可用。 - - ``` - MODIFY PARTITION partition_name { UNUSABLE LOCAL INDEXES | REBUILD UNUSABLE LOCAL INDEXES } - ``` - - - split\_clause子语法用于把一个分区切割成多个分区。 - - ``` - SPLIT PARTITION { partition_name | FOR ( partition_value [, ...] ) } { split_point_clause | no_split_point_clause } [ UPDATE GLOBAL INDEX ] - ``` - - - 指定切割点split\_point\_clause的语法为。 - - ``` - AT ( partition_value ) INTO ( PARTITION partition_name [ TABLESPACE tablespacename ] , PARTITION partition_name [ TABLESPACE tablespacename ] ) - ``` - - >![](public_sys-resources/icon-notice.gif) **须知:** - >- 列存分区表不支持切割分区。 - - >- 切割点的大小要位于正在被切割的分区的分区键范围内,指定切割点的方式只能把一个分区切割成两个新分区。 - - - 不指定切割点no\_split\_point\_clause的语法为。 - - ``` - INTO { ( partition_less_than_item [, ...] ) | ( partition_start_end_item [, ...] ) } - ``` - - >![](public_sys-resources/icon-notice.gif) **须知:** - >- 不指定切割点的方式,partition\_less\_than\_item指定的第一个新分区的分区键要大于正在被切割的分区的前一个分区(如果存在的话)的分区键,partition\_less\_than\_item指定的最后一个分区的分区键要等于正在被切割的分区的分区键大小。 - - >- 不指定切割点的方式,partition\_start\_end\_item指定的第一个新分区的起始点(如果存在的话)必须等于正在被切割的分区的前一个分区(如果存在的话)的分区键,partition\_start\_end\_item指定的最后一个分区的终止点(如果存在的话)必须等于正在被切割的分区的分区键。 - - >- partition\_less\_than\_item支持的分区键个数最多为4,而partition\_start\_end\_item仅支持1个分区键,其支持的数据类型参见[PARTITION BY RANGE\(parti...](CREATE-TABLE-PARTITION.md#zh-cn_topic_0283136653_zh-cn_topic_0237122119_zh-cn_topic_0059777586_l00efc30fe63048ffa2ef68c5b18bb455)。 - - >- 在同一语句中partition\_less\_than\_item和partition\_start\_end\_item两者不可同时使用;不同split语句之间没有限制。 - - - - 分区项partition\_less\_than\_item的语法为。 - - ``` - PARTITION partition_name VALUES LESS THAN ( { partition_value | MAXVALUE } [, ...] ) - [ TABLESPACE tablespacename ] - ``` - - - 分区项partition\_start\_end\_item的语法为,其约束参见[START END语法描述](CREATE-TABLE-PARTITION.md#zh-cn_topic_0283136653_zh-cn_topic_0237122119_li2094151861116)。 - - ``` - PARTITION partition_name { - {START(partition_value) END (partition_value) EVERY (interval_value)} | - {START(partition_value) END ({partition_value | MAXVALUE})} | - {START(partition_value)} | - {END({partition_value | MAXVALUE})} - } [TABLESPACE tablespace_name] - - ``` - - - - add\_clause子语法用于为指定的分区表添加一个或多个分区。 - - ``` - ADD PARTITION ( partition_col1_name = partition_col1_value [, partition_col2_name = partition_col2_value ] [, ...] ) - [ LOCATION 'location1' ] - [ PARTITION (partition_colA_name = partition_colA_value [, partition_colB_name = partition_colB_value ] [, ...] ) ] - [ LOCATION 'location2' ] - ADD {partition_less_than_item | partition_start_end_item| partition_list_item } - ``` - - 分区项partition\_list\_item的语法如下。 - - ``` - PARTITION partition_name VALUES (list_values_clause) - [ TABLESPACE tablespacename ] - ``` - - >![](public_sys-resources/icon-notice.gif) **须知:** - >- partition\_list\_item仅支持的1个分区键,其支持的数据类型参见[PARTITION BY LIST\(partit...](CREATE-TABLE-PARTITION.md#li78182216171)。 - - >- 间隔/哈希分区表不支持添加分区。 - - - - drop\_clause子语法用于删除分区表中的指定分区。 - - ``` - DROP PARTITION { partition_name | FOR ( partition_value [, ...] ) } [ UPDATE GLOBAL INDEX ] - ``` - - >![](public_sys-resources/icon-notice.gif) **须知:** - >- 哈希分区表不支持删除分区。 - - >- 列表分区表仅支持通过子分区名称删除子分区。 - - - - truncate\_clause子语法用于清空分区表中的指定分区。 - - ``` - TRUNCATE PARTITION { partition_name | FOR ( partition_value [, ...] ) } [ UPDATE GLOBAL INDEX ] - ``` - - -- 修改表分区名称的语法。 - - ``` - ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} - RENAME PARTITION { partion_name | FOR ( partition_value [, ...] ) } TO partition_new_name; - ``` - - -## 参数说明 - -- **table\_name** - - 分区表名。 - - 取值范围:已存在的分区表名。 - -- **partition\_name** - - 分区名。 - - 取值范围:已存在的分区名。 - -- **tablespacename** - - 指定分区要移动到哪个表空间。 - - 取值范围:已存在的表空间名。 - -- **partition\_value** - - 分区键值。 - - 通过PARTITION FOR \( partition\_value \[, ...\] \)子句指定的这一组值,可以唯一确定一个分区。 - - 取值范围:需要进行重命名的分区的分区键的取值范围。 - -- **UNUSABLE LOCAL INDEXES** - - 设置该分区上的所有索引不可用。 - -- **REBUILD UNUSABLE LOCAL INDEXES** - - 重建该分区上的所有索引。 - -- **ENABLE/DISABLE ROW MOVEMET** - - 行迁移开关。 - - 如果进行UPDATE操作时,更新了元组在分区键上的值,造成了该元组所在分区发生变化,就会根据该开关给出报错信息,或者进行元组在分区间的转移。 - - 取值范围: - - - ENABLE:打开行迁移开关。 - - DISABLE:关闭行迁移开关。 - - 默认是打开状态。 - -- **ordinary\_table\_name** - - 进行迁移的普通表的名称。 - - 取值范围:已存在的普通表名。 - -- **\{ WITH | WITHOUT \} VALIDATION** - - 在进行数据迁移时,是否检查普通表中的数据满足指定分区的分区键范围。 - - 取值范围: - - - WITH:对于普通表中的数据要检查是否满足分区的分区键范围,如果有数据不满足,则报错。 - - WITHOUT:对于普通表中的数据不检查是否满足分区的分区键范围。 - - 默认是WITH状态。 - - 由于检查比较耗时,特别是当数据量很大的情况下更甚。所以在保证当前普通表中的数据满足分区的分区键范围时,可以加上WITHOUT来指明不进行检查。 - -- **VERBOSE** - - 在VALIDATION是WITH状态时,如果检查出普通表有不满足要交换分区的分区键范围的数据,那么把这些数据插入到正确的分区,如果路由不到任何分区,再报错。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >只有在VALIDATION是WITH状态时,才可以指定VERBOSE。 - -- **partition\_new\_name** - - 分区的新名称。 - - 取值范围:字符串,要符合标识符的命名规范。 - - -## 示例 - -请参考CREATE TABLE PARTITION的[示例](CREATE-TABLE-PARTITION.md#zh-cn_topic_0283136653_zh-cn_topic_0237122119_zh-cn_topic_0059777586_s43dd49de892344bf89e6f56f17404842)。 - -## 相关链接 - -[CREATE TABLE PARTITION](CREATE-TABLE-PARTITION.md),[DROP TABLE](DROP-TABLE.md) - +# ALTER TABLE PARTITION + +## 功能描述 + +修改表分区,包括增删分区、切割分区、合成分区以及修改分区属性等。 + +## 注意事项 + +- 添加分区的表空间不能是PG\_GLOBAL。 +- 添加分区的名称不能与该分区表已有分区的名称相同。 +- 添加分区的分区键值要和分区表的分区键的类型一致,且要大于分区表中最后一个范围分区的上边界。 +- 如果目标分区表中已有分区数达到了最大值,则不能继续添加分区(范围分区表的分区数最大值是 32767 ,哈希/列表分区表最大值是64)。 + +- 当分区表只有一个分区时,不能删除该分区。 +- 选择分区使用PARTITION FOR\(\),括号里指定值个数应该与定义分区时使用的列个数相同,并且一一对应。 +- Value分区表不支持相应的 Alter Partition 操作。 +- 列存分区表不支持切割分区。 +- 间隔分区表不支持添加分区。 +- 哈希分区表不支持切割分区,不支持合成分区,不支持添加和删除分区。 +- 列表分区表不支持切割分区,不支持合成分区。 +- 只有分区表的所有者或者被授予了分区表 ALTER 权限的用户有权限执行 ALTER TABLE PARTITION 命令,系统管理员默认拥有此权限。 + +## 语法格式 + +- 修改表分区主语法。 + + ``` + ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} + action [, ... ]; + ``` + + 其中 action 统指如下分区维护子语法。当存在多个分区维护子句时,保证了分区的连续性,无论这些子句的排序如何, openGauss 总会先执行 DROP PARTITION 再执行 ADD PARTITION 操作,最后顺序执行其它分区维护操作。 + + ``` + move_clause | + exchange_clause | + row_clause | + merge_clause | + modify_clause | + split_clause | + add_clause | + drop_clause | + truncate_clause + ``` + + - move\_clause子语法用于移动分区到新的表空间。 + + ``` + MOVE PARTITION { partion_name | FOR ( partition_value [, ...] ) } TABLESPACE tablespacename + ``` + + - exchange\_clause子语法用于把普通表的数据迁移到指定的分区。 + + ``` + EXCHANGE PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) } + WITH TABLE {[ ONLY ] ordinary_table_name | ordinary_table_name * | ONLY ( ordinary_table_name )} + [ { WITH | WITHOUT } VALIDATION ] [ VERBOSE ] [ UPDATE GLOBAL INDEX ] + ``` + + 进行交换的普通表和分区必须满足如下条件: + + - 普通表和分区的列数目相同,对应列的信息严格一致,包括:列名、列的数据类型、列约束、列的 Collation 信息、列的存储参数、列的压缩信息等。 + - 普通表和分区的表压缩信息严格一致。 + - 普通表和分区的索引个数相同,且对应索引的信息严格一致。 + - 普通表和分区的表约束个数相同,且对应表约束的信息严格一致。 + - 普通表不可以是临时表,分区表只能是范围分区表、列表分区表、哈希分区表。 + - 普通表和分区表上不可以有动态数据脱敏,行访问控制约束。 + - 列表分区表,哈希分区表不能是列存储。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- 完成交换后,普通表和分区的数据被置换,同时普通表和分区的表空间信息被置换。此时,普通表和分区的统计信息变得不可靠,需要对普通表和分区重新执行 analyze 。 + + >- 由于非分区键不能建立本地唯一索引,只能建立全局唯一索引,所以如果普通表含有唯一索引时,会导致不能交换数据。 + + - row\_clause子语法用于设置分区表的行迁移开关。 + + ``` + { ENABLE | DISABLE } ROW MOVEMENT + ``` + + - merge\_clause子语法用于把多个分区合并成一个分区。 + + ``` + MERGE PARTITIONS { partition_name } [, ...] INTO PARTITION partition_name + [ TABLESPACE tablespacename ] [ UPDATE GLOBAL INDEX ] + ``` + + - modify\_clause子语法用于设置分区索引是否可用。 + + ``` + MODIFY PARTITION partition_name { UNUSABLE LOCAL INDEXES | REBUILD UNUSABLE LOCAL INDEXES } + ``` + + - split\_clause子语法用于把一个分区切割成多个分区。 + + ``` + SPLIT PARTITION { partition_name | FOR ( partition_value [, ...] ) } { split_point_clause | no_split_point_clause } [ UPDATE GLOBAL INDEX ] + ``` + + - 指定切割点split\_point\_clause的语法为。 + + ``` + AT ( partition_value ) INTO ( PARTITION partition_name [ TABLESPACE tablespacename ] , PARTITION partition_name [ TABLESPACE tablespacename ] ) + ``` + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- 列存分区表不支持切割分区。 + + >- 切割点的大小要位于正在被切割的分区的分区键范围内,指定切割点的方式只能把一个分区切割成两个新分区。 + + - 不指定切割点no\_split\_point\_clause的语法为。 + + ``` + INTO { ( partition_less_than_item [, ...] ) | ( partition_start_end_item [, ...] ) } + ``` + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- 不指定切割点的方式,partition\_less\_than\_item指定的第一个新分区的分区键要大于正在被切割的分区的前一个分区(如果存在的话)的分区键,partition\_less\_than\_item指定的最后一个分区的分区键要等于正在被切割的分区的分区键大小。 + + >- 不指定切割点的方式,partition\_start\_end\_item指定的第一个新分区的起始点(如果存在的话)必须等于正在被切割的分区的前一个分区(如果存在的话)的分区键,partition\_start\_end\_item指定的最后一个分区的终止点(如果存在的话)必须等于正在被切割的分区的分区键。 + + >- partition\_less\_than\_item支持的分区键个数最多为 4 ,而partition\_start\_end\_item仅支持 1 个分区键,其支持的数据类型参见[PARTITION BY RANGE\(parti...](CREATE-TABLE-PARTITION.md#zh-cn_topic_0283136653_zh-cn_topic_0237122119_zh-cn_topic_0059777586_l00efc30fe63048ffa2ef68c5b18bb455)。 + + >- 在同一语句中partition\_less\_than\_item和partition\_start\_end\_item两者不可同时使用;不同 split 语句之间没有限制。 + + + - 分区项partition\_less\_than\_item的语法为。 + + ``` + PARTITION partition_name VALUES LESS THAN ( { partition_value | MAXVALUE } [, ...] ) + [ TABLESPACE tablespacename ] + ``` + + - 分区项partition\_start\_end\_item的语法为,其约束参见[START END语法描述](CREATE-TABLE-PARTITION.md#zh-cn_topic_0283136653_zh-cn_topic_0237122119_li2094151861116)。 + + ``` + PARTITION partition_name { + {START(partition_value) END (partition_value) EVERY (interval_value)} | + {START(partition_value) END ({partition_value | MAXVALUE})} | + {START(partition_value)} | + {END({partition_value | MAXVALUE})} + } [TABLESPACE tablespace_name] + + ``` + + + - add\_clause子语法用于为指定的分区表添加一个或多个分区。 + + ``` + ADD PARTITION ( partition_col1_name = partition_col1_value [, partition_col2_name = partition_col2_value ] [, ...] ) + [ LOCATION 'location1' ] + [ PARTITION (partition_colA_name = partition_colA_value [, partition_colB_name = partition_colB_value ] [, ...] ) ] + [ LOCATION 'location2' ] + ADD {partition_less_than_item | partition_start_end_item| partition_list_item } + ``` + + 分区项partition\_list\_item的语法如下。 + + ``` + PARTITION partition_name VALUES (list_values_clause) + [ TABLESPACE tablespacename ] + ``` + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- partition\_list\_item仅支持的 1 个分区键,其支持的数据类型参见[PARTITION BY LIST\(partit...](CREATE-TABLE-PARTITION.md#li78182216171)。 + + >- 间隔/哈希分区表不支持添加分区。 + + + - drop\_clause子语法用于删除分区表中的指定分区。 + + ``` + DROP PARTITION { partition_name | FOR ( partition_value [, ...] ) } [ UPDATE GLOBAL INDEX ] + ``` + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- 哈希分区表不支持删除分区。 + + >- 列表分区表仅支持通过子分区名称删除子分区。 + + + - truncate\_clause子语法用于清空分区表中的指定分区。 + + ``` + TRUNCATE PARTITION { partition_name | FOR ( partition_value [, ...] ) } [ UPDATE GLOBAL INDEX ] + ``` + + +- 修改表分区名称的语法。 + + ``` + ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} + RENAME PARTITION { partion_name | FOR ( partition_value [, ...] ) } TO partition_new_name; + ``` + + +## 参数说明 + +- **table\_name** + + 分区表名。 + + 取值范围:已存在的分区表名。 + +- **partition\_name** + + 分区名。 + + 取值范围:已存在的分区名。 + +- **tablespacename** + + 指定分区要移动到哪个表空间。 + + 取值范围:已存在的表空间名。 + +- **partition\_value** + + 分区键值。 + + 通过PARTITION FOR \( partition\_value \[, ...\] \)子句指定的这一组值,可以唯一确定一个分区。 + + 取值范围:需要进行重命名的分区的分区键的取值范围。 + +- **UNUSABLE LOCAL INDEXES** + + 设置该分区上的所有索引不可用。 + +- **REBUILD UNUSABLE LOCAL INDEXES** + + 重建该分区上的所有索引。 + +- **ENABLE/DISABLE ROW MOVEMET** + + 行迁移开关。 + + 如果进行 UPDATE 操作时,更新了元组在分区键上的值,造成了该元组所在分区发生变化,就会根据该开关给出报错信息,或者进行元组在分区间的转移。 + + 取值范围: + + - ENABLE:打开行迁移开关。 + - DISABLE:关闭行迁移开关。 + + 默认是打开状态。 + +- **ordinary\_table\_name** + + 进行迁移的普通表的名称。 + + 取值范围:已存在的普通表名。 + +- **\{ WITH | WITHOUT \} VALIDATION** + + 在进行数据迁移时,是否检查普通表中的数据满足指定分区的分区键范围。 + + 取值范围: + + - WITH:对于普通表中的数据要检查是否满足分区的分区键范围,如果有数据不满足,则报错。 + - WITHOUT:对于普通表中的数据不检查是否满足分区的分区键范围。 + + 默认是 WITH 状态。 + + 由于检查比较耗时,特别是当数据量很大的情况下更甚。所以在保证当前普通表中的数据满足分区的分区键范围时,可以加上 WITHOUT 来指明不进行检查。 + +- **VERBOSE** + + 在 VALIDATION 是 WITH 状态时,如果检查出普通表有不满足要交换分区的分区键范围的数据,那么把这些数据插入到正确的分区,如果路由不到任何分区,再报错。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >只有在 VALIDATION 是 WITH 状态时,才可以指定 VERBOSE 。 + +- **partition\_new\_name** + + 分区的新名称。 + + 取值范围:字符串,要符合标识符的命名规范。 + + +## 示例 + +请参考 CREATE TABLE PARTITION 的[示例](CREATE-TABLE-PARTITION.md#zh-cn_topic_0283136653_zh-cn_topic_0237122119_zh-cn_topic_0059777586_s43dd49de892344bf89e6f56f17404842)。 + +## 相关链接 + +[CREATE TABLE PARTITION](CREATE-TABLE-PARTITION.md),[DROP TABLE](DROP-TABLE.md) + diff --git a/content/zh/docs/Developerguide/ALTER-TABLE-SUBPARTITION.md b/content/zh/docs/Developerguide/ALTER-TABLE-SUBPARTITION.md index c49caaa9d..767662eea 100644 --- a/content/zh/docs/Developerguide/ALTER-TABLE-SUBPARTITION.md +++ b/content/zh/docs/Developerguide/ALTER-TABLE-SUBPARTITION.md @@ -1,77 +1,77 @@ -# ALTER TABLE SUBPARTITION - -## 功能描述 - -修改二级分区表分区,包括清空分区、切割分区等。 - -## 注意事项 - -- 目前二级分区表只支持清空分区、切割分区。 -- 切割分区只能对二级分区(叶子节点)进行切割,被切割分区只能是Range、List分区策略,List分区策略只能是default分区才能被切割。 -- 只有分区表的所有者或者被授予了分区表ALTER权限的用户有权限执行ALTER TABLE PARTITION命令,系统管理员默认拥有此权限。 - -## 语法格式 - -- 修改表分区主语法。 - - ``` - ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} - action [, ... ]; - ``` - - 其中action统指如下分区维护子语法。 - - ``` - split_clause | - truncate_clause - ``` - -- split\_clause子语法用于把一个分区切割成多个分区。 - - ``` - SPLIT SUBPARTITION { subpartition_name} { split_point_clause } [ UPDATE GLOBAL INDEX ] - ``` - - 指定切割点split\_point\_clause的语法为: - - ``` - AT ( subpartition_value ) INTO ( SUBPARTITION subpartition_name [ TABLESPACE tablespacename ] , SUBPARTITION subpartition_name [ TABLESPACE tablespacename ] ) - ``` - - >![](public_sys-resources/icon-notice.gif) **须知:** - >- 切割点的大小要位于正在被切割的分区的分区键范围内。 - - >- 只能把一个分区切割成两个新分区。 - -- truncate\_clause子语法用于清空分区表中的指定分区。 - - ``` - TRUNCATE SUBPARTITION { subpartition_name } [ UPDATE GLOBAL INDEX ] - ``` - - -## 参数说明 - -- **table\_name** - - 分区表名。 - - 取值范围:已存在的分区表名。 - -- **subpartition\_name** - - 二级分区名。 - - 取值范围:已存在的二级分区名。 - -- **tablespacename** - - 指定分区要移动到哪个表空间。 - - 取值范围:已存在的表空间名。 - - -## 示例 - -请参考CREATE TABLE SUBPARTITION的示例。 - +# ALTER TABLE SUBPARTITION + +## 功能描述 + +修改二级分区表分区,包括清空分区、切割分区等。 + +## 注意事项 + +- 目前二级分区表只支持清空分区、切割分区。 +- 切割分区只能对二级分区(叶子节点)进行切割,被切割分区只能是Range、List分区策略, List 分区策略只能是 default 分区才能被切割。 +- 只有分区表的所有者或者被授予了分区表 ALTER 权限的用户有权限执行 ALTER TABLE PARTITION 命令,系统管理员默认拥有此权限。 + +## 语法格式 + +- 修改表分区主语法。 + + ``` + ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} + action [, ... ]; + ``` + + 其中 action 统指如下分区维护子语法。 + + ``` + split_clause | + truncate_clause + ``` + +- split\_clause子语法用于把一个分区切割成多个分区。 + + ``` + SPLIT SUBPARTITION { subpartition_name} { split_point_clause } [ UPDATE GLOBAL INDEX ] + ``` + + 指定切割点split\_point\_clause的语法为: + + ``` + AT ( subpartition_value ) INTO ( SUBPARTITION subpartition_name [ TABLESPACE tablespacename ] , SUBPARTITION subpartition_name [ TABLESPACE tablespacename ] ) + ``` + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- 切割点的大小要位于正在被切割的分区的分区键范围内。 + + >- 只能把一个分区切割成两个新分区。 + +- truncate\_clause子语法用于清空分区表中的指定分区。 + + ``` + TRUNCATE SUBPARTITION { subpartition_name } [ UPDATE GLOBAL INDEX ] + ``` + + +## 参数说明 + +- **table\_name** + + 分区表名。 + + 取值范围:已存在的分区表名。 + +- **subpartition\_name** + + 二级分区名。 + + 取值范围:已存在的二级分区名。 + +- **tablespacename** + + 指定分区要移动到哪个表空间。 + + 取值范围:已存在的表空间名。 + + +## 示例 + +请参考 CREATE TABLE SUBPARTITION 的示例。 + diff --git a/content/zh/docs/Developerguide/ALTER-TABLE.md b/content/zh/docs/Developerguide/ALTER-TABLE.md index 6bb04f3c1..8795ad69f 100644 --- a/content/zh/docs/Developerguide/ALTER-TABLE.md +++ b/content/zh/docs/Developerguide/ALTER-TABLE.md @@ -1,530 +1,530 @@ -# ALTER TABLE - -## 功能描述 - -修改表,包括修改表的定义、重命名表、重命名表中指定的列、重命名表的约束、设置表的所属模式、添加/更新多个列、打开/关闭行访问控制开关。 - -## 注意事项 - -- 只有表的所有者或者被授予了表ALTER权限的用户有权限执行ALTER TABLE命令,系统管理员默认拥有此权限。但要修改表的所有者或者修改表的模式,当前用户必须是该表的所有者或者系统管理员,且该用户是新所有者角色的成员。 -- 不能修改分区表的tablespace,但可以修改分区的tablespace。 -- 不支持修改存储参数ORIENTATION。 -- SET SCHEMA操作不支持修改为系统内部模式,当前仅支持用户模式之间的修改。 -- 列存表只支持PARTIAL CLUSTER KEY、UNIQUE、PRIMARY KEY表级约束,不支持外键等表级约束。 -- 列存表只支持添加字段ADD COLUMN、修改字段的数据类型ALTER TYPE、设置单个字段的收集目标SET STATISTICS、支持更改表名称、支持更改表空间、支持删除字段DROP COLUMN。对于添加的字段和修改的字段类型要求是列存支持的[数据类型](数据类型.md)。ALTER TYPE的USING选项只支持常量表达式和涉及本字段的表达式,暂不支持涉及其他字段的表达式。 -- 列存表支持的字段约束包括NULL、NOT NULL、DEFAULT常量值、UNIQUE和PRIMARY KEY;对字段约束的修改当前只支持对DEFAULT值的修改(SET DEFAULT)和删除(DROP DEFAULT),暂不支持对非空约束NULL/NOT NULL的修改。 - -- 不支持增加自增列,或者增加DEFAULT值中包含nextval\(\)表达式的列。 -- 不支持对外表、临时表开启行访问控制开关。 -- 通过约束名删除PRIMARY KEY约束时,不会删除NOT NULL约束,如果有需要,请手动删除NOT NULL约束。 -- 使用JDBC时,支持通过PrepareStatement对DEFAUTL值进行参数化设置。 - -## 语法格式 - -- 修改表的定义。 - - ``` - ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name ) } - action [, ... ]; - ``` - - 其中具体表操作action可以是以下子句之一: - - ``` - column_clause - | ADD table_constraint [ NOT VALID ] - | ADD table_constraint_using_index - | VALIDATE CONSTRAINT constraint_name - | DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] - | ADD INDEX index_name (column_name) - | CLUSTER ON index_name - | SET WITHOUT CLUSTER - | SET ( {storage_parameter = value} [, ... ] ) - | RESET ( storage_parameter [, ... ] ) - | OWNER TO new_owner - | SET TABLESPACE new_tablespace - | SET {COMPRESS|NOCOMPRESS} - | TO { GROUP groupname | NODE ( nodename [, ... ] ) } - | ADD NODE ( nodename [, ... ] ) - | DELETE NODE ( nodename [, ... ] ) - | DISABLE TRIGGER [ trigger_name | ALL | USER ] - | ENABLE TRIGGER [ trigger_name | ALL | USER ] - | ENABLE REPLICA TRIGGER trigger_name - | ENABLE ALWAYS TRIGGER trigger_name - | DISABLE/ENABLE [ REPLICA | ALWAYS ] RULE - | DISABLE ROW LEVEL SECURITY - | ENABLE ROW LEVEL SECURITY - | FORCE ROW LEVEL SECURITY - | NO FORCE ROW LEVEL SECURITY - | ENCRYPTION KEY ROTATION - | SET WITH OIDS - | SET WITHOUT OIDS - | INHERIT parents - | NO INHERIT parents - | OF type_name - | NOT OF - | REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING } - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- **ADD table\_constraint \[ NOT VALID \]** - > 给表增加一个新的约束。 - > - >- **ADD table\_constraint\_using\_index** - > 根据已有唯一索引为表增加主键约束或唯一约束。 - > - >- **VALIDATE CONSTRAINT constraint\_name** - > 验证一个使用NOT VALID选项创建的检查类约束,通过扫描全表来保证所有记录都符合约束条件。如果约束已标记为有效时,什么操作也不会发生。 - > - >- **DROP CONSTRAINT \[ IF EXISTS \] constraint\_name \[ RESTRICT | CASCADE \]** - > 删除一个表上的约束。 - > - >- **ADD INDEX index\_name \(column\_name\)** - > 在表中column\_name字段上创建名为index\_name的索引。 - > - >- **CLUSTER ON index\_name** - > 为将来的CLUSTER(聚簇)操作选择默认索引。实际上并没有重新盘簇化处理该表。 - > - >- **SET WITHOUT CLUSTER** - > 从表中删除最新使用的CLUSTER索引。这样会影响将来那些没有声明索引的CLUSTER(聚簇)操作。 - > - >- **SET \( \{storage\_parameter = value\} \[, ... \] \)** - > 修改表的一个或多个存储参数。 - > - >- **RESET \( storage\_parameter \[, ... \] \)** - > 重置表的一个或多个存储参数。与SET一样,根据参数的不同可能需要重写表才能获得想要的效果。 - > - >- **OWNER TO new\_owner** - > 将表、序列、视图的属主改变成指定的用户。 - > - >- **SET TABLESPACE new\_tablespace** - > 这种形式将表空间修改为指定的表空间并将相关的数据文件移动到新的表空间。但是表上的所有索引都不会被移动,索引可以通过ALTER INDEX语法的SET TABLESPACE选项来修改索引的表空间。 - > - >- **SET \{COMPRESS|NOCOMPRESS\}** - > 修改表的压缩特性。表压缩特性的改变只会影响后续批量插入的数据的存储方式,对已有数据的存储毫无影响。也就是说,表压缩特性的修改会导致该表中同时存在着已压缩和未压缩的数据。行存表不支持压缩。 - > - >- **TO \{ GROUP groupname | NODE \( nodename \[, ... \] \) \}** - > 此语法仅在扩展模式(GUC参数support\_extended\_features为on时)下可用。该模式谨慎打开,主要供内部扩容工具使用,一般用户不应使用该模式。 - > - >- **ADD NODE \( nodename \[, ... \] \)** - > 此语法主要供内部扩容工具使用,一般用户不建议使用。 - > - >- **DELETE NODE \( nodename \[, ... \] \)** - > 此语法主要供内部缩容工具使用,一般用户不建议使用。 - > - >- **DISABLE TRIGGER \[ trigger\_name | ALL | USER \]** - > 禁用trigger\_name所表示的单个触发器,或禁用所有触发器,或仅禁用用户触发器(此选项不包括内部生成的约束触发器,例如,可延迟唯一性和排除约束的约束触发器)。 - > 应谨慎使用此功能,因为如果不执行触发器,则无法保证原先期望的约束的完整性。 - > - >- **| ENABLE TRIGGER \[ trigger\_name | ALL | USER \]** - > 启用trigger\_name所表示的单个触发器,或启用所有触发器,或仅启用用户触发器。 - > - >- **| ENABLE REPLICA TRIGGER trigger\_name** - > 触发器触发机制受配置变量[session\_replication\_role](语句行为.md#zh-cn_topic_0283136752_zh-cn_topic_0237124732_zh-cn_topic_0059779117_sffbd1c48d86b4c3fa3287167a7810216)的影响,当复制角色为“origin”(默认值)或“local”时,将触发简单启用的触发器。 - > 配置为ENABLE REPLICA的触发器仅在会话处于“replica”模式时触发。 - > - >- **| ENABLE ALWAYS TRIGGER trigger\_name** - > 无论当前复制模式如何,配置为ENABLE ALWAYS的触发器都将触发。 - > - >- **| DISABLE/ENABLE \[ REPLICA | ALWAYS \] RULE** - > 配置属于表的重写规则,已禁用的规则对系统来说仍然是可见的,只是在查询重写期间不被应用。语义为关闭/启动规则。由于关系到视图的实现,ON SELECT规则不可禁用。 配置为ENABLE REPLICA的规则将会仅在会话为"replica" 模式时启动,而配置为ENABLE ALWAYS的触发器将总是会启动,不考虑当前复制模式。规则触发机制也受配置变量[session\_replication\_role](语句行为.md#zh-cn_topic_0283136752_zh-cn_topic_0237124732_zh-cn_topic_0059779117_sffbd1c48d86b4c3fa3287167a7810216)的影响,类似于上述触发器。 - > - >- **| DISABLE/ENABLE ROW LEVEL SECURITY** - > 开启或关闭表的行访问控制开关。 - > 当开启行访问控制开关时,如果未在该数据表定义相关行访问控制策略,数据表的行级访问将不受影响;如果关闭表的行访问控制开关,即使定义了行访问控制策略,数据表的行访问也不受影响。详细信息参见[CREATE ROW LEVEL SECURITY POLICY](CREATE-ROW-LEVEL-SECURITY-POLICY.md)章节。 - > - >- **| NO FORCE/FORCE ROW LEVEL SECURITY** - > 强制开启或关闭表的行访问控制开关。 - > 默认情况,表所有者不受行访问控制特性影响,但当强制开启表的行访问控制开关时,表的所有者(不包含系统管理员用户)会受影响。系统管理员可以绕过所有的行访问控制策略,不受影响。 - > - >- **| REPLICA IDENTITY \{DEFAULT | USING INDEX index\_name | FULL | NOTHING\}** - > 调整逻辑复制时写入WAL日志中的信息量,该选项仅在wal\_level配置为logical时才有效。 当原数据表发生更新时,默认的逻辑复制流只包含主键的历史记录,如果需要输出所需字段更新或删除的历史记录,可修改本参数。“DEFAULT”(非系统表的默认值)会记录主键字段的旧值。“USING INDEX”会记录名为index\_name索引包含的字段的旧值,索引的所有列必须NOT NULL。“FULL”记录了所有列的旧值。“NOTHING”(系统表默认值)不记录旧值的信息。 - > - >- **SET WITH OIDS** - > 在资料表中增加了一个OID系统栏位。如果资料表中已经有OID,则此语法什么都不改变。 - > - >- **SET WITHOUT OIDS** - > 从资料表中一处OID系统栏位。如果资料表中没有OID,则此语法什么都不改变。 - > - >- **INHERIT parent\_table** - > 将目标资料表加到指定的父资料表中成为新的子资料表。之后,针对父资料表的查询将会包含目标资料表的资料。要作为子资料表加入前,目标资料表必须已经包含父资料表的所有栏位。这些栏位必须具有可匹配的资料类别,并且如果他们在父资料表中具有NOT NULL的限制条件,那么他们必须在子资料表中也具有NOT NULL的限制条件。对于父资料表的所有CHECK限制条件,必须还有相对应的子资料表限制条件,除非父资料表中标记为不可继承。 - > - >- **NO INHERIT parent\_table** - > 从指定的父资料表的子资料表中产出目标资料表。针对父资料表的查询将不再包含从目标资料表中所产生的记录。 - > - >- **OF type\_name** - > 将表连接至一种复合类型,与CREATE TABLE OF选项创建表一样。表的字段的名称和类型必须精确匹配复合类型中的定义,不过oid系统字段允许不一样。表不能是从任何其他表继承的。这些限制确保CREATE TABLE OF选项允许一个相同的表定义。 - > - >- **NOT OF** - > 将一个与某类型进行关联的表进行关联的解除。 - > - >- **REPLICA IDENTITY \{ DEFAULT | USING INDEX index\_name | FULL | NOTHING \}** - > DEFAULT记录主键的列的旧值。USING INDEX记录命名索引覆盖的列的旧值,这些纸必须是唯一的,不局部的,不可延迟的,并且仅包括标记为NOT NULL的列。FULL记录该行中所有列的旧值。NOTHING不记录有关旧行的信息。在所有情况下,除非该行的新旧版本中至少要记录的列之一不同,否则不会记录任何旧值。 - - - 其中列相关的操作column\_clause可以是以下子句之一: - - ``` - ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] - | MODIFY column_name data_type - | MODIFY column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] - | MODIFY column_name [ CONSTRAINT constraint_name ] NULL - | DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] - | ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ] - | ALTER [ COLUMN ] column_name { SET DEFAULT expression | DROP DEFAULT } - | ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL - | ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer - | ADD STATISTICS (( column_1_name, column_2_name [, ...] )) - | DELETE STATISTICS (( column_1_name, column_2_name [, ...] )) - | ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] ) - | ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] ) - | ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- **ADD \[ COLUMN \] column\_name data\_type \[ compress\_mode \] \[ COLLATE collation \] \[ column\_constraint \[ ... \] \]** - > 向表中增加一个新的字段。用ADD COLUMN增加一个字段,所有表中现有行都初始化为该字段的缺省值(如果没有声明DEFAULT子句,值为NULL)。 - > - >- **ADD \( \{ column\_name data\_type \[ compress\_mode \] \} \[, ...\] \)** - > 向表中增加多列。 - > - >- **MODIFY \( \{ column\_name data\_type | column\_name \[ CONSTRAINT constraint\_name \] NOT NULL \[ ENABLE \] | column\_name \[ CONSTRAINT constraint\_name \] NULL \} \[, ...\] \)** - > 修改表已存在字段的数据类型。 - > - >- **DROP \[ COLUMN \] \[ IF EXISTS \] column\_name \[ RESTRICT | CASCADE \]** - > 从表中删除一个字段,和这个字段相关的索引和表约束也会被自动删除。如果任何表之外的对象依赖于这个字段,必须声明CASCADE ,比如视图。 - > DROP COLUMN命令并不是物理上把字段删除,而只是简单地把它标记为对SQL操作不可见。随后对该表的插入和更新将在该字段存储一个NULL。因此,删除一个字段是很快的,但是它不会立即释放表在磁盘上的空间,因为被删除了的字段占据的空间还没有回收。这些空间将在执行VACUUM时而得到回收。 - > - >- **ALTER \[ COLUMN \] column\_name \[ SET DATA \] TYPE data\_type \[ COLLATE collation \] \[ USING expression \]** - > 改变表字段的数据类型。该字段涉及的索引和简单的表约束将被自动地转换为使用新的字段类型,方法是重新分析最初提供的表达式。 - > ALTER TYPE要求重写整个表的特性有时候是一个优点,因为重写的过程消除了表中没用的空间。比如,要想立刻回收被一个已经删除的字段占据的空间,最快的方法是 - > ``` - > ALTER TABLE table ALTER COLUMN anycol TYPE anytype; - > ``` - > 这里的anycol是任何在表中还存在的字段,而anytype是和该字段的原类型一样的类型。这样的结果是在表上没有任何可见的语意的变化,但是这个命令强制重写,这样就删除了不再使用的数据。 - > - >- **ALTER \[ COLUMN \] column\_name \{ SET DEFAULT expression | DROP DEFAULT \}** - > 为一个字段设置或者删除缺省值。请注意缺省值只应用于随后的INSERT命令,它们不会修改表中已经存在的行。也可以为视图创建缺省,这个时候它们是在视图的ON INSERT规则应用之前插入到INSERT句中的。 - > - >- **ALTER \[ COLUMN \] column\_name \{ SET | DROP \} NOT NULL** - > 修改一个字段是否允许NULL值或者拒绝NULL值。如果表在字段中包含非NULL,则只能使用SET NOT NULL。 - > - >- **ALTER \[ COLUMN \] column\_name SET STATISTICS \[PERCENT\] integer** - > 为随后的ANALYZE操作设置针对每个字段的统计收集目标。目标的范围可以在0到10000之内设置。设置为-1时表示重新恢复到使用系统缺省的统计目标。 - > - >- **\{ADD | DELETE\} STATISTICS \(\(column\_1\_name, column\_2\_name \[, ...\]\)\)** - > 用于添加和删除多列统计信息声明(不实际进行多列统计信息收集),以便在后续进行全表或全库analyze时进行多列统计信息收集。每组多列统计信息最多支持32列。不支持添加/删除多列统计信息声明的表:系统表、外表。 - > - >- **ALTER \[ COLUMN \] column\_name SET \( \{attribute\_option = value\} \[, ... \] \)** - > **ALTER \[ COLUMN \] column\_name RESET \( attribute\_option \[, ... \] \)** - > 设置/重置属性选项。 - > 目前,属性选项只定义了n\_distinct和n\_distinct\_inherited。n\_distinct影响表本身的统计值,而n\_distinct\_inherited影响表及其继承子表的统计。目前,只支持SET/RESET n\_distinct参数,禁止SET/RESET n\_distinct\_inherited参数。 - > - >- **ALTER \[ COLUMN \] column\_name SET STORAGE \{ PLAIN | EXTERNAL | EXTENDED | MAIN \}** - > 为一个字段设置存储模式。这个设置控制这个字段是内联保存还是保存在一个附属的表里,以及数据是否要压缩。仅支持对行存表的设置;对列存表没有意义,执行时报错。SET STORAGE本身并不改变表上的任何东西,只是设置将来的表操作时,建议使用的策略。 - - - 其中列约束column\_constraint为: - - ``` - [ CONSTRAINT constraint_name ] - { NOT NULL | - NULL | - CHECK ( expression ) | - DEFAULT default_expr | - UNIQUE index_parameters | - PRIMARY KEY index_parameters | - ENCRYPTED WITH ( COLUMN_ENCRYPTION_KEY = column_encryption_key, ENCRYPTION_TYPE = encryption_type_value ) | - REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] - [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] - ``` - - - 其中列的压缩可选项compress\_mode为: - - ``` - [ DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS ] - ``` - - - - 其中根据已有唯一索引为表增加主键约束或唯一约束table\_constraint\_using\_index为: - - ``` - [ CONSTRAINT constraint_name ] - { UNIQUE | PRIMARY KEY } USING INDEX index_name - [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] - ``` - - - 其中表约束table\_constraint为: - - ``` - [ CONSTRAINT constraint_name ] - { CHECK ( expression ) | - UNIQUE ( column_name [, ... ] ) index_parameters | - PRIMARY KEY ( column_name [, ... ] ) index_parameters | - PARTIAL CLUSTER KEY ( column_name [, ... ] } - FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] - [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } - [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] - ``` - - 其中索引参数index\_parameters为: - - ``` - [ WITH ( {storage_parameter = value} [, ... ] ) ] - [ USING INDEX TABLESPACE tablespace_name ] - ``` - - - -- 重命名表。对名称的修改不会影响所存储的数据。 - - ``` - ALTER TABLE [ IF EXISTS ] table_name - RENAME TO new_table_name; - ``` - -- 重命名表中指定的列。 - - ``` - ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} - RENAME [ COLUMN ] column_name TO new_column_name; - ``` - -- 重命名表的约束。 - - ``` - ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name ) } - RENAME CONSTRAINT constraint_name TO new_constraint_name; - ``` - -- 设置表的所属模式。 - - ``` - ALTER TABLE [ IF EXISTS ] table_name - SET SCHEMA new_schema; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- 这种形式把表移动到另外一个模式。相关的索引、约束都跟着移动。目前序列不支持改变schema。 若该表拥有序列,需要将序列删除,重建,或者取消拥有关系, 才能将表schema更改成功。 - > - >- 要修改一个表的模式,用户必须在新模式上拥有CREATE权限。要把该表添加为一个父表的新子表,用户必须同时又是父表的所有者。要修改所有者,用户还必须是新的所有角色的直接或间接成员,并且该成员必须在此表的模式上有CREATE权限。这些限制规定了该用户不能做出了重建和删除表之外的事情。不过,系统管理员可以以任何方式修改任意表的所有权限。 - > - >- 除了RENAME和SET SCHEMA之外所有动作都可以捆绑在一个经过多次修改的列表中并行使用。比如,可以在一个命令里增加几个字段或修改几个字段的类型。对于大表,此种操作带来的效率提升更明显,原因在于只需要对该大表做一次处理。 - > - >- 增加一个CHECK或NOT NULL约束将会扫描该表,以保证现有的行符合约束要求。 - > - >- 用一个非空缺省值增加一个字段或者改变一个字段的现有类型会重写整个表。对于大表来说,这个操作可能会花很长时间,并且它还临时需要两倍的磁盘空间。 - -- 添加多个列。 - - ``` - ALTER TABLE [ IF EXISTS ] table_name - ADD ( { column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ]} [, ...] ); - ``` - -- 更新多个列。 - - ``` - ALTER TABLE [ IF EXISTS ] table_name - MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] ); - ``` - - -## 参数说明 - -- **IF EXISTS** - - 如果不存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表不存在。 - -- **table\_name \[\*\] | ONLY table\_name | ONLY \( table\_name \)** - - table\_name是需要修改的表名。 - - 若声明了ONLY选项,则只有那个表被更改。若未声明ONLY,该表及其所有子表都将会被更改。另外,可以在表名称后面显示地增加\*选项来指定包括子表,即表示所有后代表都被扫描,这是默认行为。 - -- **constraint\_name** - - 要删除的现有约束的名称。 - -- **index\_name** - - 索引名称。 - -- **storage\_parameter** - - 表的存储参数的名称。 - - 创建索引新增一个选项: - - - parallel\_workers(int类型) - - 取值范围:\[0,32\],0表示关闭并发。 - - 表示创建索引时起的bgworker线程数量,例如2就表示将会起2个bgworker线程并发创建索引。 - - 如果未设置,启动bgworker线程数量与表大小相关,一般不超过4个线程。 - - -- **new\_owner** - - 表新拥有者的名称。 - -- **new\_tablespace** - - 表所属新的表空间名称。 - -- **column\_name**、**column\_1\_name、 column\_2\_name** - - 现存的或新字段的名称。 - -- **data\_type** - - 新字段的类型,或者现存字段的新类型。 - -- **compress\_mode** - - 表字段的压缩可选项。该子句指定该字段优先使用的压缩算法。行存表不支持压缩。 - -- **collation** - - 字段排序规则名称。可选字段COLLATE指定了新字段的排序规则,如果省略,排序规则为新字段的默认类型。排序规则可以使用“select \* from pg\_collation;”命令从pg\_collation系统表中查询,默认的排序规则为查询结果中以default开始的行。 - -- **USING expression** - - USING子句声明如何从旧的字段值里计算新的字段值;如果省略,缺省从旧类型向新类型的赋值转换。如果从旧数据类型到新类型没有隐含或者赋值的转换,则必须提供一个USING子句。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >ALTER TYPE的USING选项实际上可以声明涉及该行旧值的任何表达式,即它可以引用除了正在被转换的字段之外其他的字段。这样,就可以用ALTER TYPE语法做非常普遍性的转换。因为这个灵活性,USING表达式并没有作用于该字段的缺省值(如果有的话),结果可能不是缺省表达式要求的常量表达式。这就意味着如果从旧类型到新类型没有隐含或者赋值转换的话,即使存在USING子句,ALTER TYPE也可能无法把缺省值转换成新的类型。在这种情况下,应该用DROP DEFAULT先删除缺省,执行ALTER TYPE,然后使用SET DEFAULT增加一个合适的新缺省值。类似的考虑也适用于涉及该字段的索引和约束。 - -- **NOT NULL | NULL** - - 设置列是否允许空值。 - -- **integer** - - 带符号的整数常值。当使用PERCENT时表示按照表数据的百分比收集统计信息,integer的取值范围为0-100。 - -- **attribute\_option** - - 属性选项。 - -- **PLAIN | EXTERNAL | EXTENDED | MAIN** - - 字段存储模式。 - - - PLAIN必需用于定长的数值(比如integer)并且是内联的、不压缩的。 - - MAIN用于内联、可压缩的数据。 - - EXTERNAL用于外部保存、不压缩的数据。使用EXTERNAL将令在text和bytea字段上的子字符串操作更快,但付出的代价是增加了存储空间。 - - EXTENDED用于外部的压缩数据,EXTENDED是大多数支持非PLAIN存储的数据的缺省。 - -- **CHECK \( expression \)** - - 每次将要插入的新行或者将要被更新的行必须使表达式结果为真才能成功,否则会抛出一个异常并且不会修改数据库。 - - 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。 - - 目前,CHECK表达式不能包含子查询也不能引用除当前行字段之外的变量。 - -- **DEFAULT default\_expr** - - 给字段指定缺省值。 - - 缺省表达式的数据类型必须和字段类型匹配。 - - 缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为NULL 。 - -- **UNIQUE index\_parameters** - - **UNIQUE \( column\_name \[, ... \] \) index\_parameters** - - UNIQUE约束表示表里的一个或多个字段的组合必须在全表范围内唯一。 - -- **PRIMARY KEY index\_parameters** - - **PRIMARY KEY \( column\_name \[, ... \] \) index\_parameters** - - 主键约束表明表中的一个或者一些字段只能包含唯一(不重复)的非NULL值。 - -- **REFERENCES reftable \[ \( refcolum \) \] \[ MATCH matchtype \] \[ ON DELETE action \] \[ ON UPDATE action \] \(column constraint\)** - - **FOREIGN KEY \( column\_name \[, ... \] \) REFERENCES reftable \[ \( refcolumn \[, ... \] \) \] \[ MATCH matchtype \] \[ ON DELETE action \] \[ ON UPDATE action \] \(table constraint\)** - - 外键约束要求新表中一列或多列构成的组应该只包含、匹配被参考表中被参考字段值。若省略refcolum,则将使用reftable的主键。被参考列应该是被参考表中的唯一字段或主键。外键约束不能被定义在临时表和永久表之间。 - - 参考字段与被参考字段之间存在三种类型匹配,分别是: - - - MATCH FULL:不允许一个多字段外键的字段为NULL,除非全部外键字段都是NULL。 - - MATCH SIMPLE(缺省):允许任意外键字段为NULL。 - - MATCH PARTIAL:目前暂不支持。 - - 另外,当被参考表中的数据发生改变时,某些操作也会在新表对应字段的数据上执行。ON DELETE子句声明当被参考表中的被参考行被删除时要执行的操作。ON UPDATE子句声明当被参考表中的被参考字段数据更新时要执行的操作。对于ON DELETE子句、ON UPDATE子句的可能动作: - - - NO ACTION(缺省):删除或更新时,创建一个表明违反外键约束的错误。若约束可推迟,且若仍存在任何引用行,那这个错误将会在检查约束的时候产生。 - - RESTRICT:删除或更新时,创建一个表明违反外键约束的错误。与NO ACTION相同,只是动作不可推迟。 - - CASCADE:删除新表中任何引用了被删除行的行,或更新新表中引用行的字段值为被参考字段的新值。 - - SET NULL:设置引用字段为NULL。 - - SET DEFAULT:设置引用字段为它们的缺省值。 - -- **DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE** - - 设置该约束是否可推迟。 - - - DEFERRABLE:可以推迟到事务结尾使用SET CONSTRAINTS命令检查。 - - NOT DEFERRABLE:在每条命令之后马上检查。 - - INITIALLY IMMEDIATE:那么每条语句之后就立即检查它。 - - INITIALLY DEFERRED:只有在事务结尾才检查它。 - -- **PARTIAL CLUSTER KEY** - - 局部聚簇存储,列存表导入数据时按照指定的列\(单列或多列\),进行局部排序。 - -- **WITH \( \{storage\_parameter = value\} \[, ... \] \)** - - 为表或索引指定一个可选的存储参数。 - -- **tablespace\_name** - - 索引所在表空间的名称。 - -- **COMPRESS|NOCOMPRESS** - - NOCOMPRESS:如果指定关键字NOCOMPRESS则不会修改表的现有压缩特性。 - - COMPRESS:如果指定COMPRESS关键字,则对该表进行批量插入元组时触发该特性。行存表不支持压缩。 - -- **new\_table\_name** - - 修改后新的表名称。 - -- **new\_column\_name** - - 表中指定列修改后新的列名称。 - -- **new\_constraint\_name** - - 修改后表约束的新名称。 - -- **new\_schema** - - 修改后新的模式名称。 - -- **CASCADE** - - 级联删除依赖于被依赖字段或者约束的对象(比如引用该字段的视图)。 - -- **RESTRICT** - - 如果字段或者约束还有任何依赖的对象,则拒绝删除该字段。这是缺省行为。 - -- **schema\_name** - - 表所在的模式名称。 - - -## 示例 - -请参考CREATE TABLE的[示例](CREATE-TABLE.md#zh-cn_topic_0283137629_zh-cn_topic_0237122117_zh-cn_topic_0059778169_s86758dcf05d442d2a9ebd272e76ed1b8)。 - -## 相关链接 - -[CREATE TABLE](CREATE-TABLE.md),[DROP TABLE](DROP-TABLE.md) - +# ALTER TABLE + +## 功能描述 + +修改表,包括修改表的定义、重命名表、重命名表中指定的列、重命名表的约束、设置表的所属模式、添加/更新多个列、打开/关闭行访问控制开关。 + +## 注意事项 + +- 只有表的所有者或者被授予了表 ALTER 权限的用户有权限执行 ALTER TABLE 命令,系统管理员默认拥有此权限。但要修改表的所有者或者修改表的模式,当前用户必须是该表的所有者或者系统管理员,且该用户是新所有者角色的成员。 +- 不能修改分区表的 tablespace ,但可以修改分区的 tablespace 。 +- 不支持修改存储参数 ORIENTATION 。 +- SET SCHEMA操作不支持修改为系统内部模式,当前仅支持用户模式之间的修改。 +- 列存表只支持PARTIAL CLUSTER KEY、UNIQUE、PRIMARY KEY表级约束,不支持外键等表级约束。 +- 列存表只支持添加字段ADD COLUMN、修改字段的数据类型ALTER TYPE、设置单个字段的收集目标SET STATISTICS、支持更改表名称、支持更改表空间、支持删除字段 DROP COLUMN 。对于添加的字段和修改的字段类型要求是列存支持的[数据类型](数据类型.md)。 ALTER TYPE 的 USING 选项只支持常量表达式和涉及本字段的表达式,暂不支持涉及其他字段的表达式。 +- 列存表支持的字段约束包括NULL、NOT NULL、DEFAULT常量值、UNIQUE和PRIMARY KEY;对字段约束的修改当前只支持对 DEFAULT 值的修改(SET DEFAULT)和删除(DROP DEFAULT),暂不支持对非空约束NULL/NOT NULL的修改。 + +- 不支持增加自增列,或者增加 DEFAULT 值中包含nextval\(\)表达式的列。 +- 不支持对外表、临时表开启行访问控制开关。 +- 通过约束名删除 PRIMARY KEY 约束时,不会删除 NOT NULL 约束,如果有需要,请手动删除 NOT NULL 约束。 +- 使用 JDBC 时,支持通过 PrepareStatement 对 DEFAUTL 值进行参数化设置。 + +## 语法格式 + +- 修改表的定义。 + + ``` + ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name ) } + action [, ... ]; + ``` + + 其中具体表操作 action 可以是以下子句之一: + + ``` + column_clause + | ADD table_constraint [ NOT VALID ] + | ADD table_constraint_using_index + | VALIDATE CONSTRAINT constraint_name + | DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] + | ADD INDEX index_name (column_name) + | CLUSTER ON index_name + | SET WITHOUT CLUSTER + | SET ( {storage_parameter = value} [, ... ] ) + | RESET ( storage_parameter [, ... ] ) + | OWNER TO new_owner + | SET TABLESPACE new_tablespace + | SET {COMPRESS|NOCOMPRESS} + | TO { GROUP groupname | NODE ( nodename [, ... ] ) } + | ADD NODE ( nodename [, ... ] ) + | DELETE NODE ( nodename [, ... ] ) + | DISABLE TRIGGER [ trigger_name | ALL | USER ] + | ENABLE TRIGGER [ trigger_name | ALL | USER ] + | ENABLE REPLICA TRIGGER trigger_name + | ENABLE ALWAYS TRIGGER trigger_name + | DISABLE/ENABLE [ REPLICA | ALWAYS ] RULE + | DISABLE ROW LEVEL SECURITY + | ENABLE ROW LEVEL SECURITY + | FORCE ROW LEVEL SECURITY + | NO FORCE ROW LEVEL SECURITY + | ENCRYPTION KEY ROTATION + | SET WITH OIDS + | SET WITHOUT OIDS + | INHERIT parents + | NO INHERIT parents + | OF type_name + | NOT OF + | REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING } + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- **ADD table\_constraint \[ NOT VALID \]** + > 给表增加一个新的约束。 + > + >- **ADD table\_constraint\_using\_index** + > 根据已有唯一索引为表增加主键约束或唯一约束。 + > + >- **VALIDATE CONSTRAINT constraint\_name** + > 验证一个使用 NOT VALID 选项创建的检查类约束,通过扫描全表来保证所有记录都符合约束条件。如果约束已标记为有效时,什么操作也不会发生。 + > + >- **DROP CONSTRAINT \[ IF EXISTS \] constraint\_name \[ RESTRICT | CASCADE \]** + > 删除一个表上的约束。 + > + >- **ADD INDEX index\_name \(column\_name\)** + > 在表中column\_name字段上创建名为index\_name的索引。 + > + >- **CLUSTER ON index\_name** + > 为将来的CLUSTER(聚簇)操作选择默认索引。实际上并没有重新盘簇化处理该表。 + > + >- **SET WITHOUT CLUSTER** + > 从表中删除最新使用的 CLUSTER 索引。这样会影响将来那些没有声明索引的CLUSTER(聚簇)操作。 + > + >- **SET \( \{storage\_parameter = value\} \[, ... \] \)** + > 修改表的一个或多个存储参数。 + > + >- **RESET \( storage\_parameter \[, ... \] \)** + > 重置表的一个或多个存储参数。与 SET 一样,根据参数的不同可能需要重写表才能获得想要的效果。 + > + >- **OWNER TO new\_owner** + > 将表、序列、视图的属主改变成指定的用户。 + > + >- **SET TABLESPACE new\_tablespace** + > 这种形式将表空间修改为指定的表空间并将相关的数据文件移动到新的表空间。但是表上的所有索引都不会被移动,索引可以通过 ALTER INDEX 语法的 SET TABLESPACE 选项来修改索引的表空间。 + > + >- **SET \{COMPRESS|NOCOMPRESS\}** + > 修改表的压缩特性。表压缩特性的改变只会影响后续批量插入的数据的存储方式,对已有数据的存储毫无影响。也就是说,表压缩特性的修改会导致该表中同时存在着已压缩和未压缩的数据。行存表不支持压缩。 + > + >- **TO \{ GROUP groupname | NODE \( nodename \[, ... \] \) \}** + > 此语法仅在扩展模式(GUC参数support\_extended\_features为 on 时)下可用。该模式谨慎打开,主要供内部扩容工具使用,一般用户不应使用该模式。 + > + >- **ADD NODE \( nodename \[, ... \] \)** + > 此语法主要供内部扩容工具使用,一般用户不建议使用。 + > + >- **DELETE NODE \( nodename \[, ... \] \)** + > 此语法主要供内部缩容工具使用,一般用户不建议使用。 + > + >- **DISABLE TRIGGER \[ trigger\_name | ALL | USER \]** + > 禁用trigger\_name所表示的单个触发器,或禁用所有触发器,或仅禁用用户触发器(此选项不包括内部生成的约束触发器,例如,可延迟唯一性和排除约束的约束触发器)。 + > 应谨慎使用此功能,因为如果不执行触发器,则无法保证原先期望的约束的完整性。 + > + >- **| ENABLE TRIGGER \[ trigger\_name | ALL | USER \]** + > 启用trigger\_name所表示的单个触发器,或启用所有触发器,或仅启用用户触发器。 + > + >- **| ENABLE REPLICA TRIGGER trigger\_name** + > 触发器触发机制受配置变量[session\_replication\_role](语句行为.md#zh-cn_topic_0283136752_zh-cn_topic_0237124732_zh-cn_topic_0059779117_sffbd1c48d86b4c3fa3287167a7810216)的影响,当复制角色为“origin”(默认值)或“local”时,将触发简单启用的触发器。 + > 配置为 ENABLE REPLICA 的触发器仅在会话处于“replica”模式时触发。 + > + >- **| ENABLE ALWAYS TRIGGER trigger\_name** + > 无论当前复制模式如何,配置为 ENABLE ALWAYS 的触发器都将触发。 + > + >- **| DISABLE/ENABLE \[ REPLICA | ALWAYS \] RULE** + > 配置属于表的重写规则,已禁用的规则对系统来说仍然是可见的,只是在查询重写期间不被应用。语义为关闭/启动规则。由于关系到视图的实现, ON SELECT 规则不可禁用。 配置为 ENABLE REPLICA 的规则将会仅在会话为"replica" 模式时启动,而配置为 ENABLE ALWAYS 的触发器将总是会启动,不考虑当前复制模式。规则触发机制也受配置变量[session\_replication\_role](语句行为.md#zh-cn_topic_0283136752_zh-cn_topic_0237124732_zh-cn_topic_0059779117_sffbd1c48d86b4c3fa3287167a7810216)的影响,类似于上述触发器。 + > + >- **| DISABLE/ENABLE ROW LEVEL SECURITY** + > 开启或关闭表的行访问控制开关。 + > 当开启行访问控制开关时,如果未在该数据表定义相关行访问控制策略,数据表的行级访问将不受影响;如果关闭表的行访问控制开关,即使定义了行访问控制策略,数据表的行访问也不受影响。详细信息参见[CREATE ROW LEVEL SECURITY POLICY](CREATE-ROW-LEVEL-SECURITY-POLICY.md)章节。 + > + >- **| NO FORCE/FORCE ROW LEVEL SECURITY** + > 强制开启或关闭表的行访问控制开关。 + > 默认情况,表所有者不受行访问控制特性影响,但当强制开启表的行访问控制开关时,表的所有者(不包含系统管理员用户)会受影响。系统管理员可以绕过所有的行访问控制策略,不受影响。 + > + >- **| REPLICA IDENTITY \{DEFAULT | USING INDEX index\_name | FULL | NOTHING\}** + > 调整逻辑复制时写入 WAL 日志中的信息量,该选项仅在wal\_level配置为 logical 时才有效。 当原数据表发生更新时,默认的逻辑复制流只包含主键的历史记录,如果需要输出所需字段更新或删除的历史记录,可修改本参数。“DEFAULT”(非系统表的默认值)会记录主键字段的旧值。“USING INDEX”会记录名为index\_name索引包含的字段的旧值,索引的所有列必须 NOT NULL 。“FULL”记录了所有列的旧值。“NOTHING”(系统表默认值)不记录旧值的信息。 + > + >- **SET WITH OIDS** + > 在资料表中增加了一个 OID 系统栏位。如果资料表中已经有 OID ,则此语法什么都不改变。 + > + >- **SET WITHOUT OIDS** + > 从资料表中一处 OID 系统栏位。如果资料表中没有 OID ,则此语法什么都不改变。 + > + >- **INHERIT parent\_table** + > 将目标资料表加到指定的父资料表中成为新的子资料表。之后,针对父资料表的查询将会包含目标资料表的资料。要作为子资料表加入前,目标资料表必须已经包含父资料表的所有栏位。这些栏位必须具有可匹配的资料类别,并且如果他们在父资料表中具有 NOT NULL 的限制条件,那么他们必须在子资料表中也具有 NOT NULL 的限制条件。对于父资料表的所有 CHECK 限制条件,必须还有相对应的子资料表限制条件,除非父资料表中标记为不可继承。 + > + >- **NO INHERIT parent\_table** + > 从指定的父资料表的子资料表中产出目标资料表。针对父资料表的查询将不再包含从目标资料表中所产生的记录。 + > + >- **OF type\_name** + > 将表连接至一种复合类型,与 CREATE TABLE OF 选项创建表一样。表的字段的名称和类型必须精确匹配复合类型中的定义,不过 oid 系统字段允许不一样。表不能是从任何其他表继承的。这些限制确保 CREATE TABLE OF 选项允许一个相同的表定义。 + > + >- **NOT OF** + > 将一个与某类型进行关联的表进行关联的解除。 + > + >- **REPLICA IDENTITY \{ DEFAULT | USING INDEX index\_name | FULL | NOTHING \}** + > DEFAULT记录主键的列的旧值。 USING INDEX 记录命名索引覆盖的列的旧值,这些纸必须是唯一的,不局部的,不可延迟的,并且仅包括标记为 NOT NULL 的列。 FULL 记录该行中所有列的旧值。 NOTHING 不记录有关旧行的信息。在所有情况下,除非该行的新旧版本中至少要记录的列之一不同,否则不会记录任何旧值。 + + - 其中列相关的操作column\_clause可以是以下子句之一: + + ``` + ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] + | MODIFY column_name data_type + | MODIFY column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] + | MODIFY column_name [ CONSTRAINT constraint_name ] NULL + | DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] + | ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ] + | ALTER [ COLUMN ] column_name { SET DEFAULT expression | DROP DEFAULT } + | ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL + | ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer + | ADD STATISTICS (( column_1_name, column_2_name [, ...] )) + | DELETE STATISTICS (( column_1_name, column_2_name [, ...] )) + | ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] ) + | ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] ) + | ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- **ADD \[ COLUMN \] column\_name data\_type \[ compress\_mode \] \[ COLLATE collation \] \[ column\_constraint \[ ... \] \]** + > 向表中增加一个新的字段。用 ADD COLUMN 增加一个字段,所有表中现有行都初始化为该字段的缺省值(如果没有声明 DEFAULT 子句,值为NULL)。 + > + >- **ADD \( \{ column\_name data\_type \[ compress\_mode \] \} \[, ...\] \)** + > 向表中增加多列。 + > + >- **MODIFY \( \{ column\_name data\_type | column\_name \[ CONSTRAINT constraint\_name \] NOT NULL \[ ENABLE \] | column\_name \[ CONSTRAINT constraint\_name \] NULL \} \[, ...\] \)** + > 修改表已存在字段的数据类型。 + > + >- **DROP \[ COLUMN \] \[ IF EXISTS \] column\_name \[ RESTRICT | CASCADE \]** + > 从表中删除一个字段,和这个字段相关的索引和表约束也会被自动删除。如果任何表之外的对象依赖于这个字段,必须声明 CASCADE ,比如视图。 + > DROP COLUMN命令并不是物理上把字段删除,而只是简单地把它标记为对 SQL 操作不可见。随后对该表的插入和更新将在该字段存储一个 NULL 。因此,删除一个字段是很快的,但是它不会立即释放表在磁盘上的空间,因为被删除了的字段占据的空间还没有回收。这些空间将在执行 VACUUM 时而得到回收。 + > + >- **ALTER \[ COLUMN \] column\_name \[ SET DATA \] TYPE data\_type \[ COLLATE collation \] \[ USING expression \]** + > 改变表字段的数据类型。该字段涉及的索引和简单的表约束将被自动地转换为使用新的字段类型,方法是重新分析最初提供的表达式。 + > ALTER TYPE要求重写整个表的特性有时候是一个优点,因为重写的过程消除了表中没用的空间。比如,要想立刻回收被一个已经删除的字段占据的空间,最快的方法是 + > ``` + > ALTER TABLE table ALTER COLUMN anycol TYPE anytype; + > ``` + > 这里的 anycol 是任何在表中还存在的字段,而 anytype 是和该字段的原类型一样的类型。这样的结果是在表上没有任何可见的语意的变化,但是这个命令强制重写,这样就删除了不再使用的数据。 + > + >- **ALTER \[ COLUMN \] column\_name \{ SET DEFAULT expression | DROP DEFAULT \}** + > 为一个字段设置或者删除缺省值。请注意缺省值只应用于随后的 INSERT 命令,它们不会修改表中已经存在的行。也可以为视图创建缺省,这个时候它们是在视图的 ON INSERT 规则应用之前插入到 INSERT 句中的。 + > + >- **ALTER \[ COLUMN \] column\_name \{ SET | DROP \} NOT NULL** + > 修改一个字段是否允许 NULL 值或者拒绝 NULL 值。如果表在字段中包含非 NULL ,则只能使用 SET NOT NULL 。 + > + >- **ALTER \[ COLUMN \] column\_name SET STATISTICS \[PERCENT\] integer** + > 为随后的 ANALYZE 操作设置针对每个字段的统计收集目标。目标的范围可以在 0 到 10000 之内设置。设置为-1时表示重新恢复到使用系统缺省的统计目标。 + > + >- **\{ADD | DELETE\} STATISTICS \(\(column\_1\_name, column\_2\_name \[, ...\]\)\)** + > 用于添加和删除多列统计信息声明(不实际进行多列统计信息收集),以便在后续进行全表或全库 analyze 时进行多列统计信息收集。每组多列统计信息最多支持 32 列。不支持添加/删除多列统计信息声明的表:系统表、外表。 + > + >- **ALTER \[ COLUMN \] column\_name SET \( \{attribute\_option = value\} \[, ... \] \)** + > **ALTER \[ COLUMN \] column\_name RESET \( attribute\_option \[, ... \] \)** + > 设置/重置属性选项。 + > 目前,属性选项只定义了n\_distinct和n\_distinct\_inherited。n\_distinct影响表本身的统计值,而n\_distinct\_inherited影响表及其继承子表的统计。目前,只支持SET/RESET n\_distinct参数,禁止SET/RESET n\_distinct\_inherited参数。 + > + >- **ALTER \[ COLUMN \] column\_name SET STORAGE \{ PLAIN | EXTERNAL | EXTENDED | MAIN \}** + > 为一个字段设置存储模式。这个设置控制这个字段是内联保存还是保存在一个附属的表里,以及数据是否要压缩。仅支持对行存表的设置;对列存表没有意义,执行时报错。 SET STORAGE 本身并不改变表上的任何东西,只是设置将来的表操作时,建议使用的策略。 + + - 其中列约束column\_constraint为: + + ``` + [ CONSTRAINT constraint_name ] + { NOT NULL | + NULL | + CHECK ( expression ) | + DEFAULT default_expr | + UNIQUE index_parameters | + PRIMARY KEY index_parameters | + ENCRYPTED WITH ( COLUMN_ENCRYPTION_KEY = column_encryption_key, ENCRYPTION_TYPE = encryption_type_value ) | + REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] + [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] + ``` + + - 其中列的压缩可选项compress\_mode为: + + ``` + [ DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS ] + ``` + + + - 其中根据已有唯一索引为表增加主键约束或唯一约束table\_constraint\_using\_index为: + + ``` + [ CONSTRAINT constraint_name ] + { UNIQUE | PRIMARY KEY } USING INDEX index_name + [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] + ``` + + - 其中表约束table\_constraint为: + + ``` + [ CONSTRAINT constraint_name ] + { CHECK ( expression ) | + UNIQUE ( column_name [, ... ] ) index_parameters | + PRIMARY KEY ( column_name [, ... ] ) index_parameters | + PARTIAL CLUSTER KEY ( column_name [, ... ] } + FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] + [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } + [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] + ``` + + 其中索引参数index\_parameters为: + + ``` + [ WITH ( {storage_parameter = value} [, ... ] ) ] + [ USING INDEX TABLESPACE tablespace_name ] + ``` + + + +- 重命名表。对名称的修改不会影响所存储的数据。 + + ``` + ALTER TABLE [ IF EXISTS ] table_name + RENAME TO new_table_name; + ``` + +- 重命名表中指定的列。 + + ``` + ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} + RENAME [ COLUMN ] column_name TO new_column_name; + ``` + +- 重命名表的约束。 + + ``` + ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name ) } + RENAME CONSTRAINT constraint_name TO new_constraint_name; + ``` + +- 设置表的所属模式。 + + ``` + ALTER TABLE [ IF EXISTS ] table_name + SET SCHEMA new_schema; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- 这种形式把表移动到另外一个模式。相关的索引、约束都跟着移动。目前序列不支持改变 schema 。 若该表拥有序列,需要将序列删除,重建,或者取消拥有关系, 才能将表 schema 更改成功。 + > + >- 要修改一个表的模式,用户必须在新模式上拥有 CREATE 权限。要把该表添加为一个父表的新子表,用户必须同时又是父表的所有者。要修改所有者,用户还必须是新的所有角色的直接或间接成员,并且该成员必须在此表的模式上有 CREATE 权限。这些限制规定了该用户不能做出了重建和删除表之外的事情。不过,系统管理员可以以任何方式修改任意表的所有权限。 + > + >- 除了 RENAME 和 SET SCHEMA 之外所有动作都可以捆绑在一个经过多次修改的列表中并行使用。比如,可以在一个命令里增加几个字段或修改几个字段的类型。对于大表,此种操作带来的效率提升更明显,原因在于只需要对该大表做一次处理。 + > + >- 增加一个 CHECK 或 NOT NULL 约束将会扫描该表,以保证现有的行符合约束要求。 + > + >- 用一个非空缺省值增加一个字段或者改变一个字段的现有类型会重写整个表。对于大表来说,这个操作可能会花很长时间,并且它还临时需要两倍的磁盘空间。 + +- 添加多个列。 + + ``` + ALTER TABLE [ IF EXISTS ] table_name + ADD ( { column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ]} [, ...] ); + ``` + +- 更新多个列。 + + ``` + ALTER TABLE [ IF EXISTS ] table_name + MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] ); + ``` + + +## 参数说明 + +- **IF EXISTS** + + 如果不存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表不存在。 + +- **table\_name \[\*\] | ONLY table\_name | ONLY \( table\_name \)** + + table\_name是需要修改的表名。 + + 若声明了 ONLY 选项,则只有那个表被更改。若未声明 ONLY ,该表及其所有子表都将会被更改。另外,可以在表名称后面显示地增加\*选项来指定包括子表,即表示所有后代表都被扫描,这是默认行为。 + +- **constraint\_name** + + 要删除的现有约束的名称。 + +- **index\_name** + + 索引名称。 + +- **storage\_parameter** + + 表的存储参数的名称。 + + 创建索引新增一个选项: + + - parallel\_workers(int类型) + + 取值范围:\[0,32\], 0 表示关闭并发。 + + 表示创建索引时起的 bgworker 线程数量,例如 2 就表示将会起 2 个 bgworker 线程并发创建索引。 + + 如果未设置,启动 bgworker 线程数量与表大小相关,一般不超过 4 个线程。 + + +- **new\_owner** + + 表新拥有者的名称。 + +- **new\_tablespace** + + 表所属新的表空间名称。 + +- **column\_name**、**column\_1\_name、 column\_2\_name** + + 现存的或新字段的名称。 + +- **data\_type** + + 新字段的类型,或者现存字段的新类型。 + +- **compress\_mode** + + 表字段的压缩可选项。该子句指定该字段优先使用的压缩算法。行存表不支持压缩。 + +- **collation** + + 字段排序规则名称。可选字段 COLLATE 指定了新字段的排序规则,如果省略,排序规则为新字段的默认类型。排序规则可以使用“select \* from pg\_collation;”命令从pg\_collation系统表中查询,默认的排序规则为查询结果中以 default 开始的行。 + +- **USING expression** + +USING 子句声明如何从旧的字段值里计算新的字段值;如果省略,缺省从旧类型向新类型的赋值转换。如果从旧数据类型到新类型没有隐含或者赋值的转换,则必须提供一个 USING 子句。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >ALTER TYPE的 USING 选项实际上可以声明涉及该行旧值的任何表达式,即它可以引用除了正在被转换的字段之外其他的字段。这样,就可以用 ALTER TYPE 语法做非常普遍性的转换。因为这个灵活性, USING 表达式并没有作用于该字段的缺省值(如果有的话),结果可能不是缺省表达式要求的常量表达式。这就意味着如果从旧类型到新类型没有隐含或者赋值转换的话,即使存在 USING 子句, ALTER TYPE 也可能无法把缺省值转换成新的类型。在这种情况下,应该用 DROP DEFAULT 先删除缺省,执行 ALTER TYPE ,然后使用 SET DEFAULT 增加一个合适的新缺省值。类似的考虑也适用于涉及该字段的索引和约束。 + +- **NOT NULL | NULL** + + 设置列是否允许空值。 + +- **integer** + + 带符号的整数常值。当使用 PERCENT 时表示按照表数据的百分比收集统计信息, integer 的取值范围为0-100。 + +- **attribute\_option** + + 属性选项。 + +- **PLAIN | EXTERNAL | EXTENDED | MAIN** + + 字段存储模式。 + + - PLAIN必需用于定长的数值(比如integer)并且是内联的、不压缩的。 + - MAIN用于内联、可压缩的数据。 + - EXTERNAL用于外部保存、不压缩的数据。使用 EXTERNAL 将令在 text 和 bytea 字段上的子字符串操作更快,但付出的代价是增加了存储空间。 + - EXTENDED用于外部的压缩数据, EXTENDED 是大多数支持非 PLAIN 存储的数据的缺省。 + +- **CHECK \( expression \)** + + 每次将要插入的新行或者将要被更新的行必须使表达式结果为真才能成功,否则会抛出一个异常并且不会修改数据库。 + + 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。 + + 目前, CHECK 表达式不能包含子查询也不能引用除当前行字段之外的变量。 + +- **DEFAULT default\_expr** + + 给字段指定缺省值。 + + 缺省表达式的数据类型必须和字段类型匹配。 + + 缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为 NULL 。 + +- **UNIQUE index\_parameters** + + **UNIQUE \( column\_name \[, ... \] \) index\_parameters** + +UNIQUE 约束表示表里的一个或多个字段的组合必须在全表范围内唯一。 + +- **PRIMARY KEY index\_parameters** + + **PRIMARY KEY \( column\_name \[, ... \] \) index\_parameters** + + 主键约束表明表中的一个或者一些字段只能包含唯一(不重复)的非 NULL 值。 + +- **REFERENCES reftable \[ \( refcolum \) \] \[ MATCH matchtype \] \[ ON DELETE action \] \[ ON UPDATE action \] \(column constraint\)** + + **FOREIGN KEY \( column\_name \[, ... \] \) REFERENCES reftable \[ \( refcolumn \[, ... \] \) \] \[ MATCH matchtype \] \[ ON DELETE action \] \[ ON UPDATE action \] \(table constraint\)** + + 外键约束要求新表中一列或多列构成的组应该只包含、匹配被参考表中被参考字段值。若省略 refcolum ,则将使用 reftable 的主键。被参考列应该是被参考表中的唯一字段或主键。外键约束不能被定义在临时表和永久表之间。 + + 参考字段与被参考字段之间存在三种类型匹配,分别是: + + - MATCH FULL:不允许一个多字段外键的字段为 NULL ,除非全部外键字段都是 NULL 。 + - MATCH SIMPLE(缺省):允许任意外键字段为 NULL 。 + - MATCH PARTIAL:目前暂不支持。 + + 另外,当被参考表中的数据发生改变时,某些操作也会在新表对应字段的数据上执行。 ON DELETE 子句声明当被参考表中的被参考行被删除时要执行的操作。 ON UPDATE 子句声明当被参考表中的被参考字段数据更新时要执行的操作。对于 ON DELETE 子句、ON UPDATE子句的可能动作: + + - NO ACTION(缺省):删除或更新时,创建一个表明违反外键约束的错误。若约束可推迟,且若仍存在任何引用行,那这个错误将会在检查约束的时候产生。 + - RESTRICT:删除或更新时,创建一个表明违反外键约束的错误。与 NO ACTION 相同,只是动作不可推迟。 + - CASCADE:删除新表中任何引用了被删除行的行,或更新新表中引用行的字段值为被参考字段的新值。 + - SET NULL:设置引用字段为 NULL 。 + - SET DEFAULT:设置引用字段为它们的缺省值。 + +- **DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE** + + 设置该约束是否可推迟。 + + - DEFERRABLE:可以推迟到事务结尾使用 SET CONSTRAINTS 命令检查。 + - NOT DEFERRABLE:在每条命令之后马上检查。 + - INITIALLY IMMEDIATE:那么每条语句之后就立即检查它。 + - INITIALLY DEFERRED:只有在事务结尾才检查它。 + +- **PARTIAL CLUSTER KEY** + + 局部聚簇存储,列存表导入数据时按照指定的列\(单列或多列\),进行局部排序。 + +- **WITH \( \{storage\_parameter = value\} \[, ... \] \)** + + 为表或索引指定一个可选的存储参数。 + +- **tablespace\_name** + + 索引所在表空间的名称。 + +- **COMPRESS|NOCOMPRESS** + - NOCOMPRESS:如果指定关键字 NOCOMPRESS 则不会修改表的现有压缩特性。 + - COMPRESS:如果指定 COMPRESS 关键字,则对该表进行批量插入元组时触发该特性。行存表不支持压缩。 + +- **new\_table\_name** + + 修改后新的表名称。 + +- **new\_column\_name** + + 表中指定列修改后新的列名称。 + +- **new\_constraint\_name** + + 修改后表约束的新名称。 + +- **new\_schema** + + 修改后新的模式名称。 + +- **CASCADE** + + 级联删除依赖于被依赖字段或者约束的对象(比如引用该字段的视图)。 + +- **RESTRICT** + + 如果字段或者约束还有任何依赖的对象,则拒绝删除该字段。这是缺省行为。 + +- **schema\_name** + + 表所在的模式名称。 + + +## 示例 + +请参考 CREATE TABLE 的[示例](CREATE-TABLE.md#zh-cn_topic_0283137629_zh-cn_topic_0237122117_zh-cn_topic_0059778169_s86758dcf05d442d2a9ebd272e76ed1b8)。 + +## 相关链接 + +[CREATE TABLE](CREATE-TABLE.md),[DROP TABLE](DROP-TABLE.md) + diff --git a/content/zh/docs/Developerguide/ALTER-TABLESPACE.md b/content/zh/docs/Developerguide/ALTER-TABLESPACE.md index 9a94ffbbe..92d3f66ab 100644 --- a/content/zh/docs/Developerguide/ALTER-TABLESPACE.md +++ b/content/zh/docs/Developerguide/ALTER-TABLESPACE.md @@ -1,124 +1,124 @@ -# ALTER TABLESPACE - -## 功能描述 - -修改表空间的属性。 - -## 注意事项 - -- 只有表空间的所有者或者被授予了表空间ALTER权限的用户有权限执行ALTER TABLESPACE命令,系统管理员默认拥有此权限。但要修改表空间的所有者,当前用户必须是该表空间的所有者或系统管理员,且该用户是新所有者角色的成员。 -- 要修改表空间的所有者A为B,则A必须是B的直接或者间接成员。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >如果new\_owner与old\_owner一致,此处不再校验当前执行操作的用户是否具有修改权限,而直接显示ALTER成功。 - - -## 语法格式 - -- 重命名表空间的语法。 - - ``` - ALTER TABLESPACE tablespace_name - RENAME TO new_tablespace_name; - ``` - -- 设置表空间所有者的语法。 - - ``` - ALTER TABLESPACE tablespace_name - OWNER TO new_owner; - ``` - -- 设置表空间属性的语法。 - - ``` - ALTER TABLESPACE tablespace_name - SET ( {tablespace_option = value} [, ... ] ); - ``` - -- 重置表空间属性的语法。 - - ``` - ALTER TABLESPACE tablespace_name - RESET ( { tablespace_option } [, ...] ); - ``` - -- 设置表空间限额的语法。 - - ``` - ALTER TABLESPACE tablespace_name - RESIZE MAXSIZE { UNLIMITED | 'space_size'}; - ``` - - -## 参数说明 - -- **tablespace\_name** - - 要修改的表空间。 - - 取值范围:已存在的表空间名。 - -- **new\_tablespace\_name** - - 表空间的新名称。 - - 新名称不能以“PG\_”开头。 - - 取值范围:字符串,符合标识符命名规范。 - -- **new\_owner** - - 表空间的新所有者。 - - 取值范围:已存在的用户名。 - -- **tablespace\_option** - - 设置或者重置表空间的参数。 - - 取值范围: - - - seq\_page\_cost:设置优化器计算一次顺序获取磁盘页面的开销。缺省为1.0。 - - random\_page\_cost:设置优化器计算一次非顺序获取磁盘页面的开销。缺省为4.0。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- random\_page\_cost是相对于seq\_page\_cost的取值,等于或者小于seq\_page\_cost时毫无意义。 - - >- 默认值为4.0的前提条件是,优化器采用索引来扫描表数据,并且表数据在cache中命中率可以90%左右。 - - >- 如果表数据空间要比物理内存小,那么减小该值到一个适当水平;相反地,如果表数据在cache中命中率要低于90%,那么适当增大该值。 - - >- 如果采用了类似于SSD的随机访问代价较小的存储器,可以适当减小该值,以反映真正的随机扫描代价。 - - - value的取值范围:正的浮点类型。 - -- **RESIZE MAXSIZE** - - 重新设置表空间限额的数值。 - - 取值范围: - - - UNLIMITED,该表空间不设置限额。 - - 由space\_size来确定,其格式参考[CREATE TABLESPACE](CREATE-TABLESPACE.md)。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 若调整后的限额值比当前表空间实际使用的值要小,调整操作可以执行成功,后续用户需要将该表空间的使用值降低到新限额值之下,才能继续往该表空间中写入数据。 - - >- 修改参数MAXSIZE时也可使用: - >``` - >ALTER TABLESPACE tablespace_name RESIZE MAXSIZE - > { 'UNLIMITED' | 'space_size'}; - >``` - - - -## 示例 - -请参考CREATE TABLESPACE的[示例](CREATE-TABLESPACE.md#zh-cn_topic_0283137328_zh-cn_topic_0237122120_zh-cn_topic_0059777670_s4e5e97caa377440d87fad0d49b56323e)。 - -## 相关链接 - -[CREATE TABLESPACE](CREATE-TABLESPACE.md),[DROP TABLESPACE](DROP-TABLESPACE.md) - +# ALTER TABLESPACE + +## 功能描述 + +修改表空间的属性。 + +## 注意事项 + +- 只有表空间的所有者或者被授予了表空间 ALTER 权限的用户有权限执行 ALTER TABLESPACE 命令,系统管理员默认拥有此权限。但要修改表空间的所有者,当前用户必须是该表空间的所有者或系统管理员,且该用户是新所有者角色的成员。 +- 要修改表空间的所有者 A 为 B ,则 A 必须是 B 的直接或者间接成员。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >如果new\_owner与old\_owner一致,此处不再校验当前执行操作的用户是否具有修改权限,而直接显示 ALTER 成功。 + + +## 语法格式 + +- 重命名表空间的语法。 + + ``` + ALTER TABLESPACE tablespace_name + RENAME TO new_tablespace_name; + ``` + +- 设置表空间所有者的语法。 + + ``` + ALTER TABLESPACE tablespace_name + OWNER TO new_owner; + ``` + +- 设置表空间属性的语法。 + + ``` + ALTER TABLESPACE tablespace_name + SET ( {tablespace_option = value} [, ... ] ); + ``` + +- 重置表空间属性的语法。 + + ``` + ALTER TABLESPACE tablespace_name + RESET ( { tablespace_option } [, ...] ); + ``` + +- 设置表空间限额的语法。 + + ``` + ALTER TABLESPACE tablespace_name + RESIZE MAXSIZE { UNLIMITED | 'space_size'}; + ``` + + +## 参数说明 + +- **tablespace\_name** + + 要修改的表空间。 + + 取值范围:已存在的表空间名。 + +- **new\_tablespace\_name** + + 表空间的新名称。 + + 新名称不能以“PG\_”开头。 + + 取值范围:字符串,符合标识符命名规范。 + +- **new\_owner** + + 表空间的新所有者。 + + 取值范围:已存在的用户名。 + +- **tablespace\_option** + + 设置或者重置表空间的参数。 + + 取值范围: + + - seq\_page\_cost:设置优化器计算一次顺序获取磁盘页面的开销。缺省为1.0。 + - random\_page\_cost:设置优化器计算一次非顺序获取磁盘页面的开销。缺省为4.0。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- random\_page\_cost是相对于seq\_page\_cost的取值,等于或者小于seq\_page\_cost时毫无意义。 + + >- 默认值为4.0的前提条件是,优化器采用索引来扫描表数据,并且表数据在 cache 中命中率可以90%左右。 + + >- 如果表数据空间要比物理内存小,那么减小该值到一个适当水平;相反地,如果表数据在 cache 中命中率要低于90%,那么适当增大该值。 + + >- 如果采用了类似于 SSD 的随机访问代价较小的存储器,可以适当减小该值,以反映真正的随机扫描代价。 + + +value 的取值范围:正的浮点类型。 + +- **RESIZE MAXSIZE** + + 重新设置表空间限额的数值。 + + 取值范围: + + - UNLIMITED,该表空间不设置限额。 + - 由space\_size来确定,其格式参考[CREATE TABLESPACE](CREATE-TABLESPACE.md)。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 若调整后的限额值比当前表空间实际使用的值要小,调整操作可以执行成功,后续用户需要将该表空间的使用值降低到新限额值之下,才能继续往该表空间中写入数据。 + + >- 修改参数 MAXSIZE 时也可使用: + >``` + >ALTER TABLESPACE tablespace_name RESIZE MAXSIZE + > { 'UNLIMITED' | 'space_size'}; + >``` + + + +## 示例 + +请参考 CREATE TABLESPACE 的[示例](CREATE-TABLESPACE.md#zh-cn_topic_0283137328_zh-cn_topic_0237122120_zh-cn_topic_0059777670_s4e5e97caa377440d87fad0d49b56323e)。 + +## 相关链接 + +[CREATE TABLESPACE](CREATE-TABLESPACE.md),[DROP TABLESPACE](DROP-TABLESPACE.md) + diff --git a/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-CONFIGURATION.md b/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-CONFIGURATION.md index 5b961a003..7329ac759 100644 --- a/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-CONFIGURATION.md +++ b/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-CONFIGURATION.md @@ -1,175 +1,175 @@ -# ALTER TEXT SEARCH CONFIGURATION - -## 功能描述 - -更改文本搜索配置的定义。用户可以将映射从字串类型调整为字典,或者改变配置的名称或者所有者,或者修改搜索配置的配置参数。 - -ADD MAPPING FOR选项为文本搜索配置增加字串类型映射;如果ADD MAPPING FOR后面任何一个字串类型的映射已经存在于此文本搜索配置中,那么系统将会报错。 - -ALTER MAPPING FOR选项会首先清除已有的字串类型映射,然后添加指定的字串类型映射。 - -ALTER MAPPING REPLACE ... WITH ... 与ALTER MAPPING FOR ... REPLACE ... WITH ...选项会直接使用new\_dictionary替换old\_dictionary。需要注意的是,只有pg\_ts\_config\_map系统表中存在maptokentype与old\_dictionary对应关系的元组时,才能更新成功,否则不会成功,也不会有任何提示信息返回。 - -DROP MAPPING FOR选项会删除当前文本搜索配置中指定的字串类型映射。 如果没有指定IF EXISTS选项,当DROP MAPPING FOR选项指定的字串类型映射在文本搜索配置中不存在时,数据库会报错。 - -## 注意事项 - -- 当一个搜索配置已经被引用(如被用来创建索引),则不允许用户修改此文本搜索配置。 -- 要使用ALTER TEXT SEARCH CONFIGURATION,用户必须是配置的所有者。 - -## 语法格式 - -- 增加文本搜索配置字串类型映射语法 - -``` -ALTER TEXT SEARCH CONFIGURATION name - ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]; -``` - -- 修改文本搜索配置字典语法 - -``` -ALTER TEXT SEARCH CONFIGURATION name - ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary; -``` - -- 修改文本搜索配置字串类型语法 - -``` -ALTER TEXT SEARCH CONFIGURATION name - ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]; -``` - -- 更改文本搜索配置字典语法 - -``` -ALTER TEXT SEARCH CONFIGURATION name - ALTER MAPPING REPLACE old_dictionary WITH new_dictionary; -``` - -- 删除文本搜索配置字串类型映射语法 - -``` -ALTER TEXT SEARCH CONFIGURATION name - DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]; -``` - -- 重命名文本搜索配置所有者语法 - -``` -ALTER TEXT SEARCH CONFIGURATION name OWNER TO new_owner; -``` - -- 重命名文本搜索配置名称语法 - -``` -ALTER TEXT SEARCH CONFIGURATION name RENAME TO new_name; -``` - -- 重命名文本搜索配置命名空间语法 - -``` -ALTER TEXT SEARCH CONFIGURATION name SET SCHEMA new_schema; -``` - -- 修改文本搜索配置属性语法 - -``` -ALTER TEXT SEARCH CONFIGURATION name SET ( { configuration_option = value } [, ...] ); -``` - -- 重置文本搜索配置属性语法 - -``` -ALTER TEXT SEARCH CONFIGURATION name RESET ( {configuration_option} [, ...] ); -``` - -## 参数说明 - -- **name** - - 已有文本搜索配置的名称(可以有模式修饰)。 - -- **token\_type** - - 与配置的语法解析器关联的字串类型的名称。详细信息参见[解析器](解析器.md)。 - -- **dictionary\_name** - - 文本搜索字典名称。 如果有多个字典,则它们会按指定的顺序搜索。 - -- **old\_dictionary** - - 映身中拟被替换的文本搜索字典名称。 - -- **new\_dictionary** - - 替换old\_dictionary的文本搜索字典的名称。 - -- **new\_owner** - - 文本搜索配置的新所有者。 - -- **new\_name** - - 文本搜索配置的新名称。 - -- **new\_schema** - - 文本搜索配置的新模式名。 - -- **configuration\_option** - - 文本搜索配置项。详细信息参见[CREATE TEXT SEARCH CONFIGURATION](CREATE-TEXT-SEARCH-CONFIGURATION.md)。 - -- **value** - - 文本搜索配置项的值。 - - -## 示例 - -``` ---创建文本搜索配置。 -openGauss=# CREATE TEXT SEARCH CONFIGURATION english_1 (parser=default); -CREATE TEXT SEARCH CONFIGURATION - ---增加文本搜索配置字串类型映射语法。 -openGauss=# ALTER TEXT SEARCH CONFIGURATION english_1 ADD MAPPING FOR word WITH simple,english_stem; -ALTER TEXT SEARCH CONFIGURATION - ---增加文本搜索配置字串类型映射语法。 -openGauss=# ALTER TEXT SEARCH CONFIGURATION english_1 ADD MAPPING FOR email WITH english_stem, french_stem; -ALTER TEXT SEARCH CONFIGURATION - ---查询文本搜索配置相关信息。 -openGauss=# SELECT b.cfgname,a.maptokentype,a.mapseqno,a.mapdict,c.dictname FROM pg_ts_config_map a,pg_ts_config b, pg_ts_dict c WHERE a.mapcfg=b.oid AND a.mapdict=c.oid AND b.cfgname='english_1' ORDER BY 1,2,3,4,5; - cfgname | maptokentype | mapseqno | mapdict | dictname ------------+--------------+----------+---------+-------------- - english_1 | 2 | 1 | 3765 | simple - english_1 | 2 | 2 | 12960 | english_stem - english_1 | 4 | 1 | 12960 | english_stem - english_1 | 4 | 2 | 12964 | french_stem -(4 rows) - ---增加文本搜索配置字串类型映射语法。 -openGauss=# ALTER TEXT SEARCH CONFIGURATION english_1 ALTER MAPPING REPLACE french_stem with german_stem; -ALTER TEXT SEARCH CONFIGURATION - ---查询文本搜索配置相关信息。 -openGauss=# SELECT b.cfgname,a.maptokentype,a.mapseqno,a.mapdict,c.dictname FROM pg_ts_config_map a,pg_ts_config b, pg_ts_dict c WHERE a.mapcfg=b.oid AND a.mapdict=c.oid AND b.cfgname='english_1' ORDER BY 1,2,3,4,5; - cfgname | maptokentype | mapseqno | mapdict | dictname ------------+--------------+----------+---------+-------------- - english_1 | 2 | 1 | 3765 | simple - english_1 | 2 | 2 | 12960 | english_stem - english_1 | 4 | 1 | 12960 | english_stem - english_1 | 4 | 2 | 12966 | german_stem -(4 rows) -``` - -请参见CREATE TEXT SEARCH CONFIGURATION的[示例](CREATE-TEXT-SEARCH-CONFIGURATION.md#zh-cn_topic_0283137399_zh-cn_topic_0237122121_zh-cn_topic_0059777835_sc3a4aef5c0c0420eaf5a2e67097004a2)。 - -## 相关链接 - -[CREATE TEXT SEARCH CONFIGURATION](CREATE-TEXT-SEARCH-CONFIGURATION.md), [DROP TEXT SEARCH CONFIGURATION](DROP-TEXT-SEARCH-CONFIGURATION.md) - +# ALTER TEXT SEARCH CONFIGURATION + +## 功能描述 + +更改文本搜索配置的定义。用户可以将映射从字串类型调整为字典,或者改变配置的名称或者所有者,或者修改搜索配置的配置参数。 + +ADD MAPPING FOR 选项为文本搜索配置增加字串类型映射;如果 ADD MAPPING FOR 后面任何一个字串类型的映射已经存在于此文本搜索配置中,那么系统将会报错。 + +ALTER MAPPING FOR 选项会首先清除已有的字串类型映射,然后添加指定的字串类型映射。 + +ALTER MAPPING REPLACE ... WITH ... 与ALTER MAPPING FOR ... REPLACE ... WITH ...选项会直接使用new\_dictionary替换old\_dictionary。需要注意的是,只有pg\_ts\_config\_map系统表中存在 maptokentype 与old\_dictionary对应关系的元组时,才能更新成功,否则不会成功,也不会有任何提示信息返回。 + +DROP MAPPING FOR 选项会删除当前文本搜索配置中指定的字串类型映射。 如果没有指定 IF EXISTS 选项,当 DROP MAPPING FOR 选项指定的字串类型映射在文本搜索配置中不存在时,数据库会报错。 + +## 注意事项 + +- 当一个搜索配置已经被引用(如被用来创建索引),则不允许用户修改此文本搜索配置。 +- 要使用 ALTER TEXT SEARCH CONFIGURATION ,用户必须是配置的所有者。 + +## 语法格式 + +- 增加文本搜索配置字串类型映射语法 + +``` +ALTER TEXT SEARCH CONFIGURATION name + ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]; +``` + +- 修改文本搜索配置字典语法 + +``` +ALTER TEXT SEARCH CONFIGURATION name + ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary; +``` + +- 修改文本搜索配置字串类型语法 + +``` +ALTER TEXT SEARCH CONFIGURATION name + ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]; +``` + +- 更改文本搜索配置字典语法 + +``` +ALTER TEXT SEARCH CONFIGURATION name + ALTER MAPPING REPLACE old_dictionary WITH new_dictionary; +``` + +- 删除文本搜索配置字串类型映射语法 + +``` +ALTER TEXT SEARCH CONFIGURATION name + DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]; +``` + +- 重命名文本搜索配置所有者语法 + +``` +ALTER TEXT SEARCH CONFIGURATION name OWNER TO new_owner; +``` + +- 重命名文本搜索配置名称语法 + +``` +ALTER TEXT SEARCH CONFIGURATION name RENAME TO new_name; +``` + +- 重命名文本搜索配置命名空间语法 + +``` +ALTER TEXT SEARCH CONFIGURATION name SET SCHEMA new_schema; +``` + +- 修改文本搜索配置属性语法 + +``` +ALTER TEXT SEARCH CONFIGURATION name SET ( { configuration_option = value } [, ...] ); +``` + +- 重置文本搜索配置属性语法 + +``` +ALTER TEXT SEARCH CONFIGURATION name RESET ( {configuration_option} [, ...] ); +``` + +## 参数说明 + +- **name** + + 已有文本搜索配置的名称(可以有模式修饰)。 + +- **token\_type** + + 与配置的语法解析器关联的字串类型的名称。详细信息参见[解析器](解析器.md)。 + +- **dictionary\_name** + + 文本搜索字典名称。 如果有多个字典,则它们会按指定的顺序搜索。 + +- **old\_dictionary** + + 映身中拟被替换的文本搜索字典名称。 + +- **new\_dictionary** + + 替换old\_dictionary的文本搜索字典的名称。 + +- **new\_owner** + + 文本搜索配置的新所有者。 + +- **new\_name** + + 文本搜索配置的新名称。 + +- **new\_schema** + + 文本搜索配置的新模式名。 + +- **configuration\_option** + + 文本搜索配置项。详细信息参见[CREATE TEXT SEARCH CONFIGURATION](CREATE-TEXT-SEARCH-CONFIGURATION.md)。 + +- **value** + + 文本搜索配置项的值。 + + +## 示例 + +``` +--创建文本搜索配置。 +openGauss=# CREATE TEXT SEARCH CONFIGURATION english_1 (parser=default); +CREATE TEXT SEARCH CONFIGURATION + +--增加文本搜索配置字串类型映射语法。 +openGauss=# ALTER TEXT SEARCH CONFIGURATION english_1 ADD MAPPING FOR word WITH simple,english_stem; +ALTER TEXT SEARCH CONFIGURATION + +--增加文本搜索配置字串类型映射语法。 +openGauss=# ALTER TEXT SEARCH CONFIGURATION english_1 ADD MAPPING FOR email WITH english_stem, french_stem; +ALTER TEXT SEARCH CONFIGURATION + +--查询文本搜索配置相关信息。 +openGauss=# SELECT b.cfgname,a.maptokentype,a.mapseqno,a.mapdict,c.dictname FROM pg_ts_config_map a, pg_ts_config b , pg_ts_dict c WHERE a.mapcfg=b.oid AND a.mapdict=c.oid AND b.cfgname='english_1' ORDER BY 1, 2 , 3 , 4 ,5; + cfgname | maptokentype | mapseqno | mapdict | dictname +-----------+--------------+----------+---------+-------------- + english_1 | 2 | 1 | 3765 | simple + english_1 | 2 | 2 | 12960 | english_stem + english_1 | 4 | 1 | 12960 | english_stem + english_1 | 4 | 2 | 12964 | french_stem +(4 rows) + +--增加文本搜索配置字串类型映射语法。 +openGauss=# ALTER TEXT SEARCH CONFIGURATION english_1 ALTER MAPPING REPLACE french_stem with german_stem; +ALTER TEXT SEARCH CONFIGURATION + +--查询文本搜索配置相关信息。 +openGauss=# SELECT b.cfgname,a.maptokentype,a.mapseqno,a.mapdict,c.dictname FROM pg_ts_config_map a, pg_ts_config b , pg_ts_dict c WHERE a.mapcfg=b.oid AND a.mapdict=c.oid AND b.cfgname='english_1' ORDER BY 1, 2 , 3 , 4 ,5; + cfgname | maptokentype | mapseqno | mapdict | dictname +-----------+--------------+----------+---------+-------------- + english_1 | 2 | 1 | 3765 | simple + english_1 | 2 | 2 | 12960 | english_stem + english_1 | 4 | 1 | 12960 | english_stem + english_1 | 4 | 2 | 12966 | german_stem +(4 rows) +``` + +请参见 CREATE TEXT SEARCH CONFIGURATION 的[示例](CREATE-TEXT-SEARCH-CONFIGURATION.md#zh-cn_topic_0283137399_zh-cn_topic_0237122121_zh-cn_topic_0059777835_sc3a4aef5c0c0420eaf5a2e67097004a2)。 + +## 相关链接 + +[CREATE TEXT SEARCH CONFIGURATION](CREATE-TEXT-SEARCH-CONFIGURATION.md), [DROP TEXT SEARCH CONFIGURATION](DROP-TEXT-SEARCH-CONFIGURATION.md) + diff --git a/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-DICTIONARY.md b/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-DICTIONARY.md index 5b661d242..bc2ff1268 100644 --- a/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-DICTIONARY.md +++ b/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-DICTIONARY.md @@ -1,103 +1,103 @@ -# ALTER TEXT SEARCH DICTIONARY - -## 功能描述 - -修改全文检索词典的相关定义,包括参数、名称、所有者以及模式等。 - -## 注意事项 - -- 预定义词典不支持ALTER操作。 -- 只有词典的所有者可以执行ALTER操作,系统管理员默认拥有此权限。 -- 创建或修改词典之后,任何对于filepath路径下用户自定义的词典定义文件的修改,将不会影响到数据库中的词典。如果需要在数据库中使用这些修改,需使用ALTER TEXT SEARCH DICTIONARY语句更新对应词典的定义文件。 - -## 语法格式 - -- 修改词典定义。 - - ``` - ALTER TEXT SEARCH DICTIONARY name ( - option [ = value ] [, ... ] - ); - ``` - - -- 重命名词典。 - - ``` - ALTER TEXT SEARCH DICTIONARY name RENAME TO new_name; - ``` - -- 设置词典的所属模式。 - - ``` - ALTER TEXT SEARCH DICTIONARY name SET SCHEMA new_schema; - ``` - -- 修改词典的所属者。 - - ``` - ALTER TEXT SEARCH DICTIONARY name OWNER TO new_owner; - ``` - - -## 参数说明 - -- **name** - - 已存在的词典名(可指定模式名,否则默认在当前模式下)。 - - 取值范围:已存在的词典名。 - -- **option** - - 要修改的参数名。与template对应,不同的词典类型具有不同的参数列表,且与指定顺序无关。详细参数说明请见[option](CREATE-TEXT-SEARCH-DICTIONARY.md#zh-cn_topic_0283137272_zh-cn_topic_0237122122_li1286812455448)。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 不支持修改词典的TEMPLATE参数值。 - - >- 不支持仅修改FILEPATH参数而不修改对应的词典定义文件参数。 - - >- 词典定义文件的文件名仅支持小写字母、数据、下划线混合。 - -- **value** - - 要修改的参数值。如果省略等号(=)和value,则表示删除该option的先前设置,使用默认值。 - - 取值范围:对应option定义。 - -- **new\_name** - - 词典的新名称。 - - 取值范围:符合标识符命名规范的字符串,且最大长度不超过63个字符。 - -- **new\_owner** - - 词典新的所有者。 - - 取值范围:已存在的用户。 - -- **new\_schema** - - 词典的新模式。 - - 取值范围:已存在的模式。 - - -## 示例 - -``` ---更改Snowball类型字典的停用词定义,其他参数保持不变。 -openGauss=# ALTER TEXT SEARCH DICTIONARY my_dict ( StopWords = newrussian, FilePath = 'file:///home/dicts' ); - ---更改Snowball类型字典的Language参数,并删除停用词定义。 -openGauss=# ALTER TEXT SEARCH DICTIONARY my_dict ( Language = dutch, StopWords ); - ---更新词典定义,不实际更改任何内容。 -openGauss=# ALTER TEXT SEARCH DICTIONARY my_dict ( dummy ); -``` - -## 相关链接 - -[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md),[DROP TEXT SEARCH DICTIONARY](DROP-TEXT-SEARCH-DICTIONARY.md) - +# ALTER TEXT SEARCH DICTIONARY + +## 功能描述 + +修改全文检索词典的相关定义,包括参数、名称、所有者以及模式等。 + +## 注意事项 + +- 预定义词典不支持 ALTER 操作。 +- 只有词典的所有者可以执行 ALTER 操作,系统管理员默认拥有此权限。 +- 创建或修改词典之后,任何对于 filepath 路径下用户自定义的词典定义文件的修改,将不会影响到数据库中的词典。如果需要在数据库中使用这些修改,需使用 ALTER TEXT SEARCH DICTIONARY 语句更新对应词典的定义文件。 + +## 语法格式 + +- 修改词典定义。 + + ``` + ALTER TEXT SEARCH DICTIONARY name ( + option [ = value ] [, ... ] + ); + ``` + + +- 重命名词典。 + + ``` + ALTER TEXT SEARCH DICTIONARY name RENAME TO new_name; + ``` + +- 设置词典的所属模式。 + + ``` + ALTER TEXT SEARCH DICTIONARY name SET SCHEMA new_schema; + ``` + +- 修改词典的所属者。 + + ``` + ALTER TEXT SEARCH DICTIONARY name OWNER TO new_owner; + ``` + + +## 参数说明 + +- **name** + + 已存在的词典名(可指定模式名,否则默认在当前模式下)。 + + 取值范围:已存在的词典名。 + +- **option** + + 要修改的参数名。与 template 对应,不同的词典类型具有不同的参数列表,且与指定顺序无关。详细参数说明请见[option](CREATE-TEXT-SEARCH-DICTIONARY.md#zh-cn_topic_0283137272_zh-cn_topic_0237122122_li1286812455448)。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 不支持修改词典的 TEMPLATE 参数值。 + + >- 不支持仅修改 FILEPATH 参数而不修改对应的词典定义文件参数。 + + >- 词典定义文件的文件名仅支持小写字母、数据、下划线混合。 + +- **value** + + 要修改的参数值。如果省略等号(=)和 value ,则表示删除该 option 的先前设置,使用默认值。 + + 取值范围:对应 option 定义。 + +- **new\_name** + + 词典的新名称。 + + 取值范围:符合标识符命名规范的字符串,且最大长度不超过 63 个字符。 + +- **new\_owner** + + 词典新的所有者。 + + 取值范围:已存在的用户。 + +- **new\_schema** + + 词典的新模式。 + + 取值范围:已存在的模式。 + + +## 示例 + +``` +--更改 Snowball 类型字典的停用词定义,其他参数保持不变。 +openGauss=# ALTER TEXT SEARCH DICTIONARY my_dict ( StopWords = newrussian, FilePath = 'file:///home/dicts' ); + +--更改 Snowball 类型字典的 Language 参数,并删除停用词定义。 +openGauss=# ALTER TEXT SEARCH DICTIONARY my_dict ( Language = dutch, StopWords ); + +--更新词典定义,不实际更改任何内容。 +openGauss=# ALTER TEXT SEARCH DICTIONARY my_dict ( dummy ); +``` + +## 相关链接 + +[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md),[DROP TEXT SEARCH DICTIONARY](DROP-TEXT-SEARCH-DICTIONARY.md) + diff --git a/content/zh/docs/Developerguide/ALTER-TRIGGER.md b/content/zh/docs/Developerguide/ALTER-TRIGGER.md index 549b89f12..aa1dac027 100644 --- a/content/zh/docs/Developerguide/ALTER-TRIGGER.md +++ b/content/zh/docs/Developerguide/ALTER-TRIGGER.md @@ -1,45 +1,45 @@ -# ALTER TRIGGER - -## 功能描述 - -修改触发器定义。 - -## 注意事项 - -只有触发器所在表的所有者可以执行ALTER TRIGGER操作,系统管理员默认拥有此权限。 - -## 语法格式 - -``` -ALTER TRIGGER trigger_name ON table_name RENAME TO new_name; -``` - -## 参数说明 - -- **trigger\_name** - - 要修改的触发器名称。 - - 取值范围:已存在的触发器。 - -- **table\_name** - - 要修改的触发器所在的表名称。 - - 取值范围:已存在的含触发器的表。 - -- **new\_name** - - 修改后的新名称。 - - 取值范围:符合标识符命名规范的字符串,最大长度不超过63个字符,且不能与所在表上其他触发器同名。 - - -## 示例 - -请参见[CREATE TRIGGER](CREATE-TRIGGER.md)的示例。 - -## 相关链接 - -[CREATE TRIGGER](CREATE-TRIGGER.md),[DROP TRIGGER](DROP-TRIGGER.md),[ALTER TABLE](ALTER-TABLE.md) - +# ALTER TRIGGER + +## 功能描述 + +修改触发器定义。 + +## 注意事项 + +只有触发器所在表的所有者可以执行 ALTER TRIGGER 操作,系统管理员默认拥有此权限。 + +## 语法格式 + +``` +ALTER TRIGGER trigger_name ON table_name RENAME TO new_name; +``` + +## 参数说明 + +- **trigger\_name** + + 要修改的触发器名称。 + + 取值范围:已存在的触发器。 + +- **table\_name** + + 要修改的触发器所在的表名称。 + + 取值范围:已存在的含触发器的表。 + +- **new\_name** + + 修改后的新名称。 + + 取值范围:符合标识符命名规范的字符串,最大长度不超过 63 个字符,且不能与所在表上其他触发器同名。 + + +## 示例 + +请参见[CREATE TRIGGER](CREATE-TRIGGER.md)的示例。 + +## 相关链接 + +[CREATE TRIGGER](CREATE-TRIGGER.md),[DROP TRIGGER](DROP-TRIGGER.md),[ALTER TABLE](ALTER-TABLE.md) + diff --git a/content/zh/docs/Developerguide/ALTER-TYPE.md b/content/zh/docs/Developerguide/ALTER-TYPE.md index a00cfab26..3738cff60 100644 --- a/content/zh/docs/Developerguide/ALTER-TYPE.md +++ b/content/zh/docs/Developerguide/ALTER-TYPE.md @@ -1,157 +1,157 @@ -# ALTER TYPE - -## 功能描述 - -修改一个类型的定义。 - -## 注意事项 - -只有类型的所有者或者被授予了类型ALTER权限的用户可以执行ALTER TYPE命令,系统管理员默认拥有此权限。但要修改类型的所有者或者修改类型的模式,当前用户必须是该类型的所有者或者系统管理员,且该用户是新所有者角色的成员。 - -## 语法格式 - -- 修改类型。 - - ``` - ALTER TYPE name action [, ... ] - ALTER TYPE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER } - ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ] - ALTER TYPE name RENAME TO new_name - ALTER TYPE name SET SCHEMA new_schema - ALTER TYPE name ADD VALUE [ IF NOT EXISTS ] new_enum_value [ { BEFORE | AFTER } neighbor_enum_value ] - ALTER TYPE name RENAME VALUE existing_enum_value TO new_enum_value - - where action is one of: - ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ] - DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE | RESTRICT ] - ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE | RESTRICT ] - ``` - -- 给复合类型增加新的属性。 - - ``` - ALTER TYPE name ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ] - ``` - - -- 从复合类型删除一个属性。 - - ``` - ALTER TYPE name DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE | RESTRICT ] - ``` - - -- 改变一种复合类型中某个属性的类型。 - - ``` - ALTER TYPE name ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE | RESTRICT ] - ``` - - -- 改变类型的所有者。 - - ``` - ALTER TYPE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER } - ``` - - -- 改变类型的名称或是一个复合类型中的一个属性的名称。 - - ``` - ALTER TYPE name RENAME TO new_name - ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ] - ``` - - -- 将类型移至一个新的模式中。 - - ``` - ALTER TYPE name SET SCHEMA new_schema - ``` - - -- 为枚举类型增加一个新值。 - - ``` - ALTER TYPE name ADD VALUE [ IF NOT EXISTS ] new_enum_value [ { BEFORE | AFTER } neighbor_enum_value ] - ``` - - -- 重命名枚举类型的一个标签值。 - - ``` - ALTER TYPE name RENAME VALUE existing_enum_value TO new_enum_value - ``` - - -## 参数说明 - -- **name** - - 一个需要修改的现有的类型的名称\(可以有模式修饰\) 。 - - -- **new\_name** - - 该类型的新名称。 - - -- **new\_owner** - - 新所有者的用户名 。 - - -- **new\_schema** - - 该类型的新模式 。 - - -- **attribute\_name** - - 拟增加、更改或删除的属性的名称。 - - -- **new\_attribute\_name** - - 拟改名的属性的新名称。 - - -- **data\_type** - - 拟新增属性的数据类型或是拟更改的属性的新类型名。 - -- **new\_enum\_value** - - 枚举类型新增加的标签值,是一个非空的长度不超过63个字节的字符串。 - -- **neighbor\_enum\_value** - - 一个已有枚举标签值,新值应该被增加在紧接着该枚举值之前或者之后的位置上。 - -- **existing\_enum\_value** - - 现有的要重命名的枚举值,是一个非空的长度不超过63个字节的字符串 - - -- **CASCADE** - - 自动级联更新需更新类型以及相关联的记录和继承它们的子表。 - -- **RESTRICT** - - 如果需联动更新类型是已更新类型的关联记录,则拒绝更新。这是缺省选项。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >- ADD ATTRIBUTE、DROP ATTRIBUTE和ALTER ATTRIBUTE选项可以组合成一个列表同时处理。 例如,在一条命令中同时增加几个属性或是更改几个属性的类型是可以实现的。 - - >- 要修改一个类型的模式,必须在新模式上拥有CREATE权限。 要修改所有者,必须是新的所有角色的直接或间接成员, 并且该成员必须在此类型的模式上有CREATE权限。 (这些限制强制了修改所有者不会做任何通过删除和重建类型不能做的事情。 不过,系统管理员可以以任何方式修改任意类型的所有权。) 要增加一个属性或是修改一个属性的类型,也必须有该类型的USAGE权限。 - - -## 示例 - -请参考CREATE TYPE的[示例](CREATE-TYPE.md#zh-cn_topic_0283136568_zh-cn_topic_0237122124_zh-cn_topic_0059779377_s66a0b4a6a1df4ba4a116c6c565a0fe9d)。 - -## 相关链接 - -[CREATE TYPE](CREATE-TYPE.md),[DROP TYPE](DROP-TYPE.md) - +# ALTER TYPE + +## 功能描述 + +修改一个类型的定义。 + +## 注意事项 + +只有类型的所有者或者被授予了类型 ALTER 权限的用户可以执行 ALTER TYPE 命令,系统管理员默认拥有此权限。但要修改类型的所有者或者修改类型的模式,当前用户必须是该类型的所有者或者系统管理员,且该用户是新所有者角色的成员。 + +## 语法格式 + +- 修改类型。 + + ``` + ALTER TYPE name action [, ... ] + ALTER TYPE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER } + ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ] + ALTER TYPE name RENAME TO new_name + ALTER TYPE name SET SCHEMA new_schema + ALTER TYPE name ADD VALUE [ IF NOT EXISTS ] new_enum_value [ { BEFORE | AFTER } neighbor_enum_value ] + ALTER TYPE name RENAME VALUE existing_enum_value TO new_enum_value + + where action is one of: + ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ] + DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE | RESTRICT ] + ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE | RESTRICT ] + ``` + +- 给复合类型增加新的属性。 + + ``` + ALTER TYPE name ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ] + ``` + + +- 从复合类型删除一个属性。 + + ``` + ALTER TYPE name DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE | RESTRICT ] + ``` + + +- 改变一种复合类型中某个属性的类型。 + + ``` + ALTER TYPE name ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE | RESTRICT ] + ``` + + +- 改变类型的所有者。 + + ``` + ALTER TYPE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER } + ``` + + +- 改变类型的名称或是一个复合类型中的一个属性的名称。 + + ``` + ALTER TYPE name RENAME TO new_name + ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ] + ``` + + +- 将类型移至一个新的模式中。 + + ``` + ALTER TYPE name SET SCHEMA new_schema + ``` + + +- 为枚举类型增加一个新值。 + + ``` + ALTER TYPE name ADD VALUE [ IF NOT EXISTS ] new_enum_value [ { BEFORE | AFTER } neighbor_enum_value ] + ``` + + +- 重命名枚举类型的一个标签值。 + + ``` + ALTER TYPE name RENAME VALUE existing_enum_value TO new_enum_value + ``` + + +## 参数说明 + +- **name** + + 一个需要修改的现有的类型的名称\(可以有模式修饰\) 。 + + +- **new\_name** + + 该类型的新名称。 + + +- **new\_owner** + + 新所有者的用户名 。 + + +- **new\_schema** + + 该类型的新模式 。 + + +- **attribute\_name** + + 拟增加、更改或删除的属性的名称。 + + +- **new\_attribute\_name** + + 拟改名的属性的新名称。 + + +- **data\_type** + + 拟新增属性的数据类型或是拟更改的属性的新类型名。 + +- **new\_enum\_value** + + 枚举类型新增加的标签值,是一个非空的长度不超过 63 个字节的字符串。 + +- **neighbor\_enum\_value** + + 一个已有枚举标签值,新值应该被增加在紧接着该枚举值之前或者之后的位置上。 + +- **existing\_enum\_value** + + 现有的要重命名的枚举值,是一个非空的长度不超过 63 个字节的字符串 + + +- **CASCADE** + + 自动级联更新需更新类型以及相关联的记录和继承它们的子表。 + +- **RESTRICT** + + 如果需联动更新类型是已更新类型的关联记录,则拒绝更新。这是缺省选项。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- ADD ATTRIBUTE、DROP ATTRIBUTE和 ALTER ATTRIBUTE 选项可以组合成一个列表同时处理。 例如,在一条命令中同时增加几个属性或是更改几个属性的类型是可以实现的。 + + >- 要修改一个类型的模式,必须在新模式上拥有 CREATE 权限。 要修改所有者,必须是新的所有角色的直接或间接成员, 并且该成员必须在此类型的模式上有 CREATE 权限。 (这些限制强制了修改所有者不会做任何通过删除和重建类型不能做的事情。 不过,系统管理员可以以任何方式修改任意类型的所有权。) 要增加一个属性或是修改一个属性的类型,也必须有该类型的 USAGE 权限。 + + +## 示例 + +请参考 CREATE TYPE 的[示例](CREATE-TYPE.md#zh-cn_topic_0283136568_zh-cn_topic_0237122124_zh-cn_topic_0059779377_s66a0b4a6a1df4ba4a116c6c565a0fe9d)。 + +## 相关链接 + +[CREATE TYPE](CREATE-TYPE.md),[DROP TYPE](DROP-TYPE.md) + diff --git a/content/zh/docs/Developerguide/ALTER-USER-MAPPING.md b/content/zh/docs/Developerguide/ALTER-USER-MAPPING.md index 8cd17b1bf..15b679f7e 100644 --- a/content/zh/docs/Developerguide/ALTER-USER-MAPPING.md +++ b/content/zh/docs/Developerguide/ALTER-USER-MAPPING.md @@ -1,70 +1,70 @@ -# ALTER USER MAPPING - -## 功能描述 - -更改一个用户映射的定义。 - -## 注意事项 - -当在OPTIONS中出现password选项时,需要保证openGauss每个节点的$GAUSSHOME/bin目录下存在usermapping.key.cipher和usermapping.key.rand文件,如果不存在这两个文件,请使用gs\\\_guc工具生成并使用gs\\\_ssh工具发布到每个节点的$GAUSSHOME/bin目录下。 - -## 语法格式 - -``` -ALTER USER MAPPING FOR { user_name | USER | CURRENT_USER | PUBLIC } - SERVER server_name - OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) -``` - -在OPTIONS选项里,ADD、SET和DROP指定要执行的操作,未指定时默认为ADD操作。option和value为对应操作的参数及参数值。 - -## 参数说明 - -- **user\_name** - - 该映射的用户名。 - - CURRENT\_USER和USER匹配当前用户的名称。PUBLIC被用来匹配系统中所有当前以及未来的用户名。 - -- **server\_name** - - 该用户映射的服务器名。 - -- **OPTIONS** - - 为该用户映射更改选项。新选项会覆盖任何之前指定的选项。ADD、SET和DROP指定要被执行的动作。如果没有显式地指定操作,将假定为ADD。选项名称必须为唯一,该服务器的外部数据包装器也会验证选项。 - - - oracle\_fdw支持的options包括: - - **user** - - oracle server的用户名。 - - - **password** - - oracle用户对应的密码。 - - - mysql\_fdw支持的options包括: - - **username** - - MySQL Server/MariaDB的用户名。 - - - **password** - - MySQL Server/MariaDB用户对应的密码。 - - - postgres\_fdw支持的options包括: - - **user** - - 远端openGauss数据库用户的用户名。 - - - **password** - - 远端openGauss数据库用户对应的密码。 - - - - -## 相关链接 - -[CREATE USER MAPPING](CREATE-USER-MAPPING.md),[DROP USER MAPPING](DROP-USER-MAPPING.md) - +# ALTER USER MAPPING + +## 功能描述 + +更改一个用户映射的定义。 + +## 注意事项 + +当在 OPTIONS 中出现 password 选项时,需要保证 openGauss 每个节点的$GAUSSHOME/bin目录下存在usermapping.key.cipher和usermapping.key.rand文件,如果不存在这两个文件,请使用gs\\\_guc工具生成并使用gs\\\_ssh工具发布到每个节点的$GAUSSHOME/bin目录下。 + +## 语法格式 + +``` +ALTER USER MAPPING FOR { user_name | USER | CURRENT_USER | PUBLIC } + SERVER server_name + OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) +``` + +在 OPTIONS 选项里,ADD、SET和 DROP 指定要执行的操作,未指定时默认为 ADD 操作。 option 和 value 为对应操作的参数及参数值。 + +## 参数说明 + +- **user\_name** + + 该映射的用户名。 + + CURRENT\_USER和 USER 匹配当前用户的名称。 PUBLIC 被用来匹配系统中所有当前以及未来的用户名。 + +- **server\_name** + + 该用户映射的服务器名。 + +- **OPTIONS** + + 为该用户映射更改选项。新选项会覆盖任何之前指定的选项。ADD、SET和 DROP 指定要被执行的动作。如果没有显式地指定操作,将假定为 ADD 。选项名称必须为唯一,该服务器的外部数据包装器也会验证选项。 + + - oracle\_fdw支持的 options 包括: + - **user** + +oracle server 的用户名。 + + - **password** + +oracle 用户对应的密码。 + + - mysql\_fdw支持的 options 包括: + - **username** + + MySQL Server/MariaDB的用户名。 + + - **password** + + MySQL Server/MariaDB用户对应的密码。 + + - postgres\_fdw支持的 options 包括: + - **user** + + 远端 openGauss 数据库用户的用户名。 + + - **password** + + 远端 openGauss 数据库用户对应的密码。 + + + + +## 相关链接 + +[CREATE USER MAPPING](CREATE-USER-MAPPING.md),[DROP USER MAPPING](DROP-USER-MAPPING.md) + diff --git a/content/zh/docs/Developerguide/ALTER-USER.md b/content/zh/docs/Developerguide/ALTER-USER.md index 11f3f59a6..00f904116 100644 --- a/content/zh/docs/Developerguide/ALTER-USER.md +++ b/content/zh/docs/Developerguide/ALTER-USER.md @@ -1,108 +1,108 @@ -# ALTER USER - -## 功能描述 - -修改数据库用户的属性。 - -## 注意事项 - -ALTER USER中修改的会话参数只针对指定的用户,且在下一次会话中有效。 - -## 语法格式 - -- 修改用户的权限等信息。 - - ``` - ALTER USER user_name [ [ WITH ] option [ ... ] ]; - ``` - - 其中option子句为: - - ``` - { CREATEDB | NOCREATEDB } - | { CREATEROLE | NOCREATEROLE } - | { INHERIT | NOINHERIT } - | { AUDITADMIN | NOAUDITADMIN } - | { SYSADMIN | NOSYSADMIN } - | { USEFT | NOUSEFT } - | { LOGIN | NOLOGIN } - | { REPLICATION | NOREPLICATION } - | {INDEPENDENT | NOINDEPENDENT} - | {VCADMIN | NOVCADMIN} - | CONNECTION LIMIT connlimit - | [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' [EXPIRED] | DISABLE | EXPIRED } - | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' | EXPIRED ] | DISABLE } - | VALID BEGIN 'timestamp' - | VALID UNTIL 'timestamp' - | RESOURCE POOL 'respool' - | PERM SPACE 'spacelimit' - | ACCOUNT { LOCK | UNLOCK } - | PGUSER - ``` - -- 修改用户名。 - - ``` - ALTER USER user_name - RENAME TO new_name; - ``` - -- 修改与用户关联的指定会话参数值。 - - ``` - ALTER USER user_name - SET configuration_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }; - ``` - -- 重置与用户关联的指定会话参数值。 - - ``` - ALTER USER user_name - RESET { configuration_parameter | ALL }; - ``` - - -## 参数说明 - -- **user\_name** - - 现有用户名。 - - 取值范围:已存在的用户名。 - -- **new\_password** - - 新密码。 - - 密码规则如下: - - - 不能与当前密码相同。 - - 密码默认不少于8个字符。 - - 不能与用户名及用户名倒序相同。 - - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为\~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/?)四类字符中的三类字符。 - - 取值范围:字符串。 - -- **old\_password** - - 旧密码。 - -- **ACCOUNT LOCK | ACCOUNT UNLOCK** - - ACCOUNT LOCK:锁定帐户,禁止登录数据库。 - - ACCOUNT UNLOCK:解锁帐户,允许登录数据库。 - -- **PGUSER** - - 当前版本不允许修改用户的PGUSER属性。 - - -其他参数请参见[CREATE ROLE](CREATE-ROLE.md)和[ALTER ROLE](ALTER-ROLE.md)的参数说明。 - -## 示例 - -请参考CREATE USER的[示例](CREATE-USER.md#zh-cn_topic_0283136891_zh-cn_topic_0237122125_zh-cn_topic_0059778166_sfbca773f5bcd4799b3ea668b3eb074fa)。 - -## 相关链接 - -[CREATE ROLE](CREATE-ROLE.md),[CREATE USER](CREATE-USER.md),[DROP USER](DROP-USER.md) - +# ALTER USER + +## 功能描述 + +修改数据库用户的属性。 + +## 注意事项 + +ALTER USER 中修改的会话参数只针对指定的用户,且在下一次会话中有效。 + +## 语法格式 + +- 修改用户的权限等信息。 + + ``` + ALTER USER user_name [ [ WITH ] option [ ... ] ]; + ``` + + 其中 option 子句为: + + ``` + { CREATEDB | NOCREATEDB } + | { CREATEROLE | NOCREATEROLE } + | { INHERIT | NOINHERIT } + | { AUDITADMIN | NOAUDITADMIN } + | { SYSADMIN | NOSYSADMIN } + | { USEFT | NOUSEFT } + | { LOGIN | NOLOGIN } + | { REPLICATION | NOREPLICATION } + | {INDEPENDENT | NOINDEPENDENT} + | {VCADMIN | NOVCADMIN} + | CONNECTION LIMIT connlimit + | [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' [EXPIRED] | DISABLE | EXPIRED } + | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' | EXPIRED ] | DISABLE } + | VALID BEGIN 'timestamp' + | VALID UNTIL 'timestamp' + | RESOURCE POOL 'respool' + | PERM SPACE 'spacelimit' + | ACCOUNT { LOCK | UNLOCK } + | PGUSER + ``` + +- 修改用户名。 + + ``` + ALTER USER user_name + RENAME TO new_name; + ``` + +- 修改与用户关联的指定会话参数值。 + + ``` + ALTER USER user_name + SET configuration_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }; + ``` + +- 重置与用户关联的指定会话参数值。 + + ``` + ALTER USER user_name + RESET { configuration_parameter | ALL }; + ``` + + +## 参数说明 + +- **user\_name** + + 现有用户名。 + + 取值范围:已存在的用户名。 + +- **new\_password** + + 新密码。 + + 密码规则如下: + + - 不能与当前密码相同。 + - 密码默认不少于 8 个字符。 + - 不能与用户名及用户名倒序相同。 + - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为\~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/?)四类字符中的三类字符。 + + 取值范围:字符串。 + +- **old\_password** + + 旧密码。 + +- **ACCOUNT LOCK | ACCOUNT UNLOCK** + - ACCOUNT LOCK:锁定帐户,禁止登录数据库。 + - ACCOUNT UNLOCK:解锁帐户,允许登录数据库。 + +- **PGUSER** + + 当前版本不允许修改用户的 PGUSER 属性。 + + +其他参数请参见[CREATE ROLE](CREATE-ROLE.md)和[ALTER ROLE](ALTER-ROLE.md)的参数说明。 + +## 示例 + +请参考 CREATE USER 的[示例](CREATE-USER.md#zh-cn_topic_0283136891_zh-cn_topic_0237122125_zh-cn_topic_0059778166_sfbca773f5bcd4799b3ea668b3eb074fa)。 + +## 相关链接 + +[CREATE ROLE](CREATE-ROLE.md),[CREATE USER](CREATE-USER.md),[DROP USER](DROP-USER.md) + diff --git a/content/zh/docs/Developerguide/ALTER-VIEW.md b/content/zh/docs/Developerguide/ALTER-VIEW.md index 6366512b6..aabd64288 100644 --- a/content/zh/docs/Developerguide/ALTER-VIEW.md +++ b/content/zh/docs/Developerguide/ALTER-VIEW.md @@ -1,130 +1,130 @@ -# ALTER VIEW - -## 功能描述 - -ALTER VIEW更改视图的各种辅助属性。(如果用户是更改视图的查询定义,要使用CREATE OR REPLACE VIEW。) - -## 注意事项 - -只有视图的所有者或者被授予了视图ALTER权限的用户才可以执行ALTER VIEW命令,系统管理员默认拥有该权限。针对所要修改属性的不同,对其还有以下权限约束: - -- 修改视图的模式,当前用户必须是视图的所有者或者系统管理员,且要有新模式的CREATE权限。 -- 修改视图的所有者,当前用户必须是视图的所有者或者系统管理员,且该用户必须是新所有者角色的成员,并且此角色必须有视图所在模式的CREATE权限。 - -## 语法格式 - -- 设置视图列的默认值。 - - ``` - ALTER VIEW [ IF EXISTS ] view_name - ALTER [ COLUMN ] column_name SET DEFAULT expression; - ``` - -- 取消列视图列的默认值。 - - ``` - ALTER VIEW [ IF EXISTS ] view_name - ALTER [ COLUMN ] column_name DROP DEFAULT; - ``` - -- 修改视图的所有者。 - - ``` - ALTER VIEW [ IF EXISTS ] view_name - OWNER TO new_owner; - ``` - -- 重命名视图。 - - ``` - ALTER VIEW [ IF EXISTS ] view_name - RENAME TO new_name; - ``` - -- 设置视图的所属模式。 - - ``` - ALTER VIEW [ IF EXISTS ] view_name - SET SCHEMA new_schema; - ``` - -- 设置视图的选项。 - - ``` - ALTER VIEW [ IF EXISTS ] view_name - SET ( { view_option_name [ = view_option_value ] } [, ... ] ); - ``` - -- 重置视图的选项。 - - ``` - ALTER VIEW [ IF EXISTS ] view_name - RESET ( view_option_name [, ... ] ); - ``` - - -## 参数说明 - -- **IF EXISTS** - - 使用这个选项,如果视图不存在时不会产生错误,仅有会有一个提示信息。 - -- **view\_name** - - 视图名称,可以用模式修饰。 - - 取值范围:字符串,符合标识符命名规范。 - -- **column\_name** - - 可选的名称列表,视图的字段名。如果没有给出,字段名取自查询中的字段名。 - - 取值范围:字符串,符合标识符命名规范。 - -- **SET/DROP DEFAULT** - - 设置或删除一个列的缺省值,该参数暂无实际意义。 - -- **new\_owner** - - 视图新所有者的用户名称。 - -- **new\_name** - - 视图的新名称。 - -- **new\_schema** - - 视图的新模式。 - -- **view\_option\_name \[ = view\_option\_value \]** - - 该子句为视图指定一个可选的参数。 - - 目前view\_option\_name支持的参数仅有security\_barrier,当VIEW试图提供行级安全时,应使用该参数。 - - 取值范围:Boolean类型,TRUE、FALSE。 - - -## 示例 - -``` ---创建一个由c_customer_sk小于150的内容组成的视图。 -openGauss=# CREATE VIEW tpcds.customer_details_view_v1 AS - SELECT * FROM tpcds.customer - WHERE c_customer_sk < 150; - ---修改视图名称。 -openGauss=# ALTER VIEW tpcds.customer_details_view_v1 RENAME TO customer_details_view_v2; - ---修改视图所属schema。 -openGauss=# ALTER VIEW tpcds.customer_details_view_v2 SET schema public; - ---删除视图。 -openGauss=# DROP VIEW public.customer_details_view_v2; -``` - -## 相关链接 - -[CREATE VIEW](CREATE-VIEW.md),[DROP VIEW](DROP-VIEW.md) - +# ALTER VIEW + +## 功能描述 + +ALTER VIEW 更改视图的各种辅助属性。(如果用户是更改视图的查询定义,要使用 CREATE OR REPLACE VIEW 。) + +## 注意事项 + +只有视图的所有者或者被授予了视图 ALTER 权限的用户才可以执行 ALTER VIEW 命令,系统管理员默认拥有该权限。针对所要修改属性的不同,对其还有以下权限约束: + +- 修改视图的模式,当前用户必须是视图的所有者或者系统管理员,且要有新模式的 CREATE 权限。 +- 修改视图的所有者,当前用户必须是视图的所有者或者系统管理员,且该用户必须是新所有者角色的成员,并且此角色必须有视图所在模式的 CREATE 权限。 + +## 语法格式 + +- 设置视图列的默认值。 + + ``` + ALTER VIEW [ IF EXISTS ] view_name + ALTER [ COLUMN ] column_name SET DEFAULT expression; + ``` + +- 取消列视图列的默认值。 + + ``` + ALTER VIEW [ IF EXISTS ] view_name + ALTER [ COLUMN ] column_name DROP DEFAULT; + ``` + +- 修改视图的所有者。 + + ``` + ALTER VIEW [ IF EXISTS ] view_name + OWNER TO new_owner; + ``` + +- 重命名视图。 + + ``` + ALTER VIEW [ IF EXISTS ] view_name + RENAME TO new_name; + ``` + +- 设置视图的所属模式。 + + ``` + ALTER VIEW [ IF EXISTS ] view_name + SET SCHEMA new_schema; + ``` + +- 设置视图的选项。 + + ``` + ALTER VIEW [ IF EXISTS ] view_name + SET ( { view_option_name [ = view_option_value ] } [, ... ] ); + ``` + +- 重置视图的选项。 + + ``` + ALTER VIEW [ IF EXISTS ] view_name + RESET ( view_option_name [, ... ] ); + ``` + + +## 参数说明 + +- **IF EXISTS** + + 使用这个选项,如果视图不存在时不会产生错误,仅有会有一个提示信息。 + +- **view\_name** + + 视图名称,可以用模式修饰。 + + 取值范围:字符串,符合标识符命名规范。 + +- **column\_name** + + 可选的名称列表,视图的字段名。如果没有给出,字段名取自查询中的字段名。 + + 取值范围:字符串,符合标识符命名规范。 + +- **SET/DROP DEFAULT** + + 设置或删除一个列的缺省值,该参数暂无实际意义。 + +- **new\_owner** + + 视图新所有者的用户名称。 + +- **new\_name** + + 视图的新名称。 + +- **new\_schema** + + 视图的新模式。 + +- **view\_option\_name \[ = view\_option\_value \]** + + 该子句为视图指定一个可选的参数。 + + 目前view\_option\_name支持的参数仅有security\_barrier,当 VIEW 试图提供行级安全时,应使用该参数。 + + 取值范围:Boolean类型,TRUE、FALSE。 + + +## 示例 + +``` +--创建一个由 c_customer_sk 小于 150 的内容组成的视图。 +openGauss=# CREATE VIEW tpcds.customer_details_view_v1 AS + SELECT * FROM tpcds.customer + WHERE c_customer_sk < 150; + +--修改视图名称。 +openGauss=# ALTER VIEW tpcds.customer_details_view_v1 RENAME TO customer_details_view_v2; + +--修改视图所属 schema 。 +openGauss=# ALTER VIEW tpcds.customer_details_view_v2 SET schema public; + +--删除视图。 +openGauss=# DROP VIEW public.customer_details_view_v2; +``` + +## 相关链接 + +[CREATE VIEW](CREATE-VIEW.md),[DROP VIEW](DROP-VIEW.md) + diff --git a/content/zh/docs/Developerguide/ANALYZE-ANALYSE.md b/content/zh/docs/Developerguide/ANALYZE-ANALYSE.md index b94b9fe7b..27a764354 100644 --- a/content/zh/docs/Developerguide/ANALYZE-ANALYSE.md +++ b/content/zh/docs/Developerguide/ANALYZE-ANALYSE.md @@ -1,203 +1,203 @@ -# ANALYZE | ANALYSE - -## 功能描述 - -用于收集与数据库中普通表内容相关的统计信息,统计结果存储在系统表PG\_STATISTIC下。执行计划生成器会使用这些统计数据,以确定最有效的执行计划。 - -如果没有指定参数,ANALYZE会分析当前数据库中的每个表和分区表。同时也可以通过指定table\_name、column和partition\_name参数把分析限定在特定的表、列或分区表中。 - -ANALYZE|ANALYSE VERIFY用于检测数据库中普通表(行存表、列存表)的数据文件是否损坏。 - -## 注意事项 - -- ANALYZE非临时表不能在一个匿名块、事务块、函数或存储过程内被执行。支持存储过程中ANALYZE临时表,不支持统计信息回滚操作。 -- ANALYZE VERIFY操作处理的大多为异常场景检测需要使用RELEASE版本。ANALYZE VERIFY 场景不触发远程读,因此远程读参数不生效。对于关键系统表出现错误被系统检测出页面损坏时,将直接报错不再继续检测。 -- 如果没有指定参数,ANALYZE处理当前数据库里用户拥有相应权限的每个表。如果参数中指定了表,ANALYZE只处理指定的表。 -- 要对一个表进行ANALYZE操作,通常用户必须是表的所有者或者被授予了指定表VACUUM权限的用户,默认系统管理员有该权限。数据库的所有者允许对数据库中除了共享目录以外的所有表进行ANALYZE操作(该限制意味着只有系统管理员才能真正对一个数据库进行ANALYZE操作)。ANALYZE命令会跳过那些用户没有权限的表。 - -## 语法格式 - -- 收集表的统计信息。 - - ``` - { ANALYZE | ANALYSE } [ VERBOSE ] - [ table_name [ ( column_name [, ...] ) ] ]; - ``` - - -- 收集分区表的统计信息。 - - ``` - { ANALYZE | ANALYSE } [ VERBOSE ] - [ table_name [ ( column_name [, ...] ) ] ] - PARTITION ( patrition_name ) ; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >普通分区表目前支持针对某个分区的统计信息的语法,但功能上不支持针对某个分区的统计信息收集。 - - -- 收集多列统计信息。 - - ``` - {ANALYZE | ANALYSE} [ VERBOSE ] - table_name (( column_1_name, column_2_name [, ...] )); - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- 收集多列统计信息时,请设置GUC参数[default\_statistics\_target](其他优化器选项.md#zh-cn_topic_0283137690_zh-cn_topic_0237124719_zh-cn_topic_0059779049_se18c86fcdf5e4a22870f71187436d815)为负数,以使用百分比采样方式。 - > - >- 每组多列统计信息最多支持32列。 - > - >- 不支持收集多列统计信息的表:系统表。 - - -- 检测当前库的数据文件。 - - ``` - {ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE}; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- Fast模式校验时,需要对校验的表有并发的DML操作,会导致校验过程中有误报的问题,因为当前Fast模式是直接从磁盘上读取,并发有其他线程修改文件时,会导致获取的数据不准确,建议离线操作。 - > - >- 支持对全库进行操作,由于涉及的表较多,建议以重定向保存结果**gsql -d database -p port -f "verify.sql"\> verify\_warning.txt 2\>&1**。 - > - >- 对外提示NOTICE只核对外可见的表,内部表的检测会包含在它所依赖的外部表,不对外显示和呈现。 - > - >- 此命令的处理可容错ERROR级别的处理。由于debug版本的Assert可能会导致core无法继续执行命令,建议在release模式下操作。 - > - >- 对于全库操作时,当关键系统表出现损坏则直接报错,不再继续执行。 - -- 检测表和索引的数据文件 - - ``` - {ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE} table_name|index_name [CASCADE]; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- 支持对普通表的操作和索引表的操作,但不支持对索引表index使用CASCADE操作。原因是由于CASCADE模式用于处理主表的所有索引表,当单独对索引表进行检测时,无需使用CASCADE模式。 - > - >- 对于主表的检测会同步检测主表的内部表,例如toast表、cudesc表等。 - > - >- 当提示索引表损坏时,建议使用reindex命令进行重建索引操作。 - -- 检测表分区的数据文件 - - ``` - {ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE} table_name PARTITION {(patrition_name)}[CASCADE]; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >支持对表的单独分区进行检测操作,但不支持对索引表index使用CASCADE操作。 - - -## 参数说明 - -- **VERBOSE** - - 启用显示进度信息。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >如果指定了VERBOSE,ANALYZE发出进度信息,表明目前正在处理的表。各种有关表的统计信息也会打印出来。 - -- **table\_name** - - 需要分析的特定表的表名(可能会带模式名),如果省略,将对数据库中的所有表(非外部表)进行分析。 - - 对于ANALYZE收集统计信息,目前仅支持行存表、列存表。 - - 取值范围:已有的表名。 - -- **column\_name**,column\_1\_name,column\_2\_name - - 需要分析特定列的列名,默认为所有列。 - - 取值范围:已有的列名。 - -- **partition\_name** - - 如果table为分区表,在关键字PARTITION后面指定分区名partition\_name表示分析该分区表的统计信息。目前语法上支持分区表做ANALYZE,但功能实现上暂不支持对指定分区统计信息的分析。 - - 取值范围:表的某一个分区名。 - -- **index\_name** - - 需要分析的特定索引表的表名(可能会带模式名)。 - - 取值范围:已有的表名。 - -- **FAST|COMPLETE** - - 对于行存表,FAST模式下主要对于行存表的CRC和page header进行校验,如果校验失败则会告警; 而COMPLETE模式下,则主要对行存表的指针、tuple进行解析校验。 对于列存表,FAST模式下主要对于列存表的CRC和magic进行校验,如果校验失败则会告警; 而COMPLETE模式下,则主要对列存表的CU进行解析校验。 - -- **CASCADE** - - CASCADE模式下会对当前表的所有索引进行检测处理。 - - -## 示例 - ---- 创建表。 - -``` -openGauss=# CREATE TABLE customer_info -( -WR_RETURNED_DATE_SK INTEGER , -WR_RETURNED_TIME_SK INTEGER , -WR_ITEM_SK INTEGER NOT NULL, -WR_REFUNDED_CUSTOMER_SK INTEGER -) -; -``` - ---- 创建分区表。 - -``` -openGauss=# CREATE TABLE customer_par -( -WR_RETURNED_DATE_SK INTEGER , -WR_RETURNED_TIME_SK INTEGER , -WR_ITEM_SK INTEGER NOT NULL, -WR_REFUNDED_CUSTOMER_SK INTEGER -) -PARTITION BY RANGE(WR_RETURNED_DATE_SK) -( -PARTITION P1 VALUES LESS THAN(2452275), -PARTITION P2 VALUES LESS THAN(2452640), -PARTITION P3 VALUES LESS THAN(2453000), -PARTITION P4 VALUES LESS THAN(MAXVALUE) -) -ENABLE ROW MOVEMENT; -``` - ---- 使用ANALYZE语句更新统计信息。 - -``` -openGauss=# ANALYZE customer_info; -openGauss=# ANALYZE customer_par; -``` - ---- 使用ANALYZE VERBOSE语句更新统计信息,并输出表的相关信息。 - -``` -openGauss=# ANALYZE VERBOSE customer_info; -INFO: analyzing "cstore.pg_delta_3394584009"(cn_5002 pid=53078) -INFO: analyzing "public.customer_info"(cn_5002 pid=53078) -INFO: analyzing "public.customer_info" inheritance tree(cn_5002 pid=53078) -ANALYZE -``` - ->![](public_sys-resources/icon-note.gif) **说明:** ->若环境若有故障,需查看数据库主节点的log。 - ---- 删除表。 - -``` -openGauss=# DROP TABLE customer_info; -openGauss=# DROP TABLE customer_par; -``` - +# ANALYZE | ANALYSE + +## 功能描述 + +用于收集与数据库中普通表内容相关的统计信息,统计结果存储在系统表PG\_STATISTIC下。执行计划生成器会使用这些统计数据,以确定最有效的执行计划。 + +如果没有指定参数, ANALYZE 会分析当前数据库中的每个表和分区表。同时也可以通过指定table\_name、column和partition\_name参数把分析限定在特定的表、列或分区表中。 + +ANALYZE|ANALYSE VERIFY用于检测数据库中普通表(行存表、列存表)的数据文件是否损坏。 + +## 注意事项 + +- ANALYZE非临时表不能在一个匿名块、事务块、函数或存储过程内被执行。支持存储过程中 ANALYZE 临时表,不支持统计信息回滚操作。 +- ANALYZE VERIFY操作处理的大多为异常场景检测需要使用 RELEASE 版本。 ANALYZE VERIFY 场景不触发远程读,因此远程读参数不生效。对于关键系统表出现错误被系统检测出页面损坏时,将直接报错不再继续检测。 +- 如果没有指定参数, ANALYZE 处理当前数据库里用户拥有相应权限的每个表。如果参数中指定了表, ANALYZE 只处理指定的表。 +- 要对一个表进行 ANALYZE 操作,通常用户必须是表的所有者或者被授予了指定表 VACUUM 权限的用户,默认系统管理员有该权限。数据库的所有者允许对数据库中除了共享目录以外的所有表进行 ANALYZE 操作(该限制意味着只有系统管理员才能真正对一个数据库进行 ANALYZE 操作)。 ANALYZE 命令会跳过那些用户没有权限的表。 + +## 语法格式 + +- 收集表的统计信息。 + + ``` + { ANALYZE | ANALYSE } [ VERBOSE ] + [ table_name [ ( column_name [, ...] ) ] ]; + ``` + + +- 收集分区表的统计信息。 + + ``` + { ANALYZE | ANALYSE } [ VERBOSE ] + [ table_name [ ( column_name [, ...] ) ] ] + PARTITION ( patrition_name ) ; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >普通分区表目前支持针对某个分区的统计信息的语法,但功能上不支持针对某个分区的统计信息收集。 + + +- 收集多列统计信息。 + + ``` + {ANALYZE | ANALYSE} [ VERBOSE ] + table_name (( column_1_name, column_2_name [, ...] )); + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- 收集多列统计信息时,请设置 GUC 参数[default\_statistics\_target](其他优化器选项.md#zh-cn_topic_0283137690_zh-cn_topic_0237124719_zh-cn_topic_0059779049_se18c86fcdf5e4a22870f71187436d815)为负数,以使用百分比采样方式。 + > + >- 每组多列统计信息最多支持 32 列。 + > + >- 不支持收集多列统计信息的表:系统表。 + + +- 检测当前库的数据文件。 + + ``` + {ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE}; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- Fast模式校验时,需要对校验的表有并发的 DML 操作,会导致校验过程中有误报的问题,因为当前 Fast 模式是直接从磁盘上读取,并发有其他线程修改文件时,会导致获取的数据不准确,建议离线操作。 + > + >- 支持对全库进行操作,由于涉及的表较多,建议以重定向保存结果**gsql -d database -p port -f "verify.sql"\> verify\_warning.txt 2\>&1**。 + > + >- 对外提示 NOTICE 只核对外可见的表,内部表的检测会包含在它所依赖的外部表,不对外显示和呈现。 + > + >- 此命令的处理可容错 ERROR 级别的处理。由于 debug 版本的 Assert 可能会导致 core 无法继续执行命令,建议在 release 模式下操作。 + > + >- 对于全库操作时,当关键系统表出现损坏则直接报错,不再继续执行。 + +- 检测表和索引的数据文件 + + ``` + {ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE} table_name|index_name [CASCADE]; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- 支持对普通表的操作和索引表的操作,但不支持对索引表 index 使用 CASCADE 操作。原因是由于 CASCADE 模式用于处理主表的所有索引表,当单独对索引表进行检测时,无需使用 CASCADE 模式。 + > + >- 对于主表的检测会同步检测主表的内部表,例如 toast 表、cudesc表等。 + > + >- 当提示索引表损坏时,建议使用 reindex 命令进行重建索引操作。 + +- 检测表分区的数据文件 + + ``` + {ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE} table_name PARTITION {(patrition_name)}[CASCADE]; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >支持对表的单独分区进行检测操作,但不支持对索引表 index 使用 CASCADE 操作。 + + +## 参数说明 + +- **VERBOSE** + + 启用显示进度信息。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >如果指定了 VERBOSE , ANALYZE 发出进度信息,表明目前正在处理的表。各种有关表的统计信息也会打印出来。 + +- **table\_name** + + 需要分析的特定表的表名(可能会带模式名),如果省略,将对数据库中的所有表(非外部表)进行分析。 + + 对于 ANALYZE 收集统计信息,目前仅支持行存表、列存表。 + + 取值范围:已有的表名。 + +- **column\_name**,column\_1\_name,column\_2\_name + + 需要分析特定列的列名,默认为所有列。 + + 取值范围:已有的列名。 + +- **partition\_name** + + 如果 table 为分区表,在关键字 PARTITION 后面指定分区名partition\_name表示分析该分区表的统计信息。目前语法上支持分区表做 ANALYZE ,但功能实现上暂不支持对指定分区统计信息的分析。 + + 取值范围:表的某一个分区名。 + +- **index\_name** + + 需要分析的特定索引表的表名(可能会带模式名)。 + + 取值范围:已有的表名。 + +- **FAST|COMPLETE** + + 对于行存表, FAST 模式下主要对于行存表的 CRC 和 page header 进行校验,如果校验失败则会告警; 而 COMPLETE 模式下,则主要对行存表的指针、tuple进行解析校验。 对于列存表, FAST 模式下主要对于列存表的 CRC 和 magic 进行校验,如果校验失败则会告警; 而 COMPLETE 模式下,则主要对列存表的 CU 进行解析校验。 + +- **CASCADE** + +CASCADE 模式下会对当前表的所有索引进行检测处理。 + + +## 示例 + +--- 创建表。 + +``` +openGauss=# CREATE TABLE customer_info +( + WR_RETURNED_DATE_SK INTEGER , + WR_RETURNED_TIME_SK INTEGER , + WR_ITEM_SK INTEGER NOT NULL , +WR_REFUNDED_CUSTOMER_SK INTEGER +) +; +``` + +--- 创建分区表。 + +``` +openGauss=# CREATE TABLE customer_par +( + WR_RETURNED_DATE_SK INTEGER , + WR_RETURNED_TIME_SK INTEGER , + WR_ITEM_SK INTEGER NOT NULL , +WR_REFUNDED_CUSTOMER_SK INTEGER +) +PARTITION BY RANGE(WR_RETURNED_DATE_SK) +( +PARTITION P1 VALUES LESS THAN(2452275), +PARTITION P2 VALUES LESS THAN(2452640), +PARTITION P3 VALUES LESS THAN(2453000), +PARTITION P4 VALUES LESS THAN(MAXVALUE) +) +ENABLE ROW MOVEMENT; +``` + +--- 使用 ANALYZE 语句更新统计信息。 + +``` +openGauss=# ANALYZE customer_info; +openGauss=# ANALYZE customer_par; +``` + +--- 使用 ANALYZE VERBOSE 语句更新统计信息,并输出表的相关信息。 + +``` +openGauss=# ANALYZE VERBOSE customer_info; +INFO: analyzing "cstore.pg_delta_3394584009"(cn_5002 pid=53078) +INFO: analyzing "public.customer_info"(cn_5002 pid=53078) +INFO: analyzing "public.customer_info" inheritance tree(cn_5002 pid=53078) +ANALYZE +``` + +>![](public_sys-resources/icon-note.gif) **说明:** +>若环境若有故障,需查看数据库主节点的 log 。 + +--- 删除表。 + +``` +openGauss=# DROP TABLE customer_info; +openGauss=# DROP TABLE customer_par; +``` + diff --git "a/content/zh/docs/Developerguide/ARM\346\234\215\345\212\241\345\231\250\344\274\230\345\214\226\346\214\207\345\257\274.md" "b/content/zh/docs/Developerguide/ARM\346\234\215\345\212\241\345\231\250\344\274\230\345\214\226\346\214\207\345\257\274.md" index cc740e938..1e22a6a51 100644 --- "a/content/zh/docs/Developerguide/ARM\346\234\215\345\212\241\345\231\250\344\274\230\345\214\226\346\214\207\345\257\274.md" +++ "b/content/zh/docs/Developerguide/ARM\346\234\215\345\212\241\345\231\250\344\274\230\345\214\226\346\214\207\345\257\274.md" @@ -1,188 +1,188 @@ -# ARM服务器优化指导 - -- BIOS - -请按下图进行配置 - -![](figures/zh-cn_image_0257861506.png) - -![](figures/zh-cn_image_0257861511.png) - -![](figures/zh-cn_image_0257861526.png) - -- 操作系统 - -请按如下方式修改/etc/sysctl.conf配置文件修改内核参数 - -``` -net.ipv4.ip_local_port_range = 9000 65535 -kernel.sysrq = 1 -kernel.panic_on_oops = 1 -kernel.panic = 5 -kernel.hung_task_timeout_secs = 3600 -kernel.hung_task_panic = 1 -vm.oom_dump_tasks = 1 -kernel.softlockup_panic = 1 -fs.file-max = 640000 -kernel.msgmnb = 7000000 -kernel.sched_min_granularity_ns = 10000000 -kernel.sched_wakeup_granularity_ns = 15000000 -kernel.numa_balancing=0 -vm.max_map_count = 1048576 -net.ipv4.tcp_max_tw_buckets = 10000 -net.ipv4.tcp_tw_reuse = 1 -net.ipv4.tcp_tw_recycle = 1 -net.ipv4.tcp_keepalive_time = 30 -net.ipv4.tcp_keepalive_probes = 9 -net.ipv4.tcp_keepalive_intvl = 30 -net.ipv4.tcp_retries2 = 80 -kernel.sem = 32000 1024000000 500 32000 -kernel.shmall = 52805669 -kernel.shmmax = 18446744073692774399 -sys.fs.file-max = 6536438 -net.core.wmem_max = 21299200 -net.core.rmem_max = 21299200 -net.core.wmem_default = 21299200 -net.core.rmem_default = 21299200 -net.ipv4.tcp_rmem = 8192 250000 16777216 -net.ipv4.tcp_wmem = 8192 250000 16777216 -net.core.somaxconn = 65535 -vm.min_free_kbytes = 5270325 -net.core.netdev_max_backlog = 65535 -net.ipv4.tcp_max_syn_backlog = 65535 -net.ipv4.tcp_syncookies = 1 -vm.overcommit_memory = 0 -net.ipv4.tcp_retries1 = 5 -net.ipv4.tcp_syn_retries = 5 -##NEW -kernel.sched_autogroup_enabled=0 -kernel.sched_min_granularity_ns=2000000 -kernel.sched_latency_ns=10000000 -kernel.sched_wakeup_granularity_ns=5000000 -kernel.sched_migration_cost_ns=500000 -vm.dirty_background_bytes=33554432 -kernel.shmmax=21474836480 -net.ipv4.tcp_timestamps = 0 -net.ipv6.conf.all.disable_ipv6=1 -net.ipv6.conf.default.disable_ipv6=1 -net.ipv4.tcp_keepalive_time=600 -net.ipv4.tcp_keepalive_probes=3 -kernel.core_uses_pid=1 -``` - -调优守护程序使用Throughput-performance配置文件: - -``` -[...]$ tuned-adm profile throughput-performance -``` - -调优启动参数,将如下配置加入内核启动参数: - -``` -iommu.passthrough=1 -``` - -- 调优硬盘/SSD - -请按如下方式格式化分区,其中nvme0n1p1为测试机上NVMe盘名,请替换为本机NVMe盘名: - -``` -– mkfs.xfs -f -b size=8192 -s size=512 /dev/nvme0n1p1 -``` - -将如下配置项加入内核参数以启用BFQ: - -``` -scsi_mod.use_blk_mq=1 -``` - -- 网络 - -请按照厂商建议安装网卡驱动程序并配置消息队列长度,以华为Hi1822网卡为例,请参考如下链接安装Hi1822智能网卡驱动: - -[https://support.huawei.com/enterprise/de/doc/EDOC1100063073/42928ba6/configuring-64-queues](https://support.huawei.com/enterprise/de/doc/EDOC1100063073/42928ba6/configuring-64-queues) - -配置消息队列为64: - -``` -./hinicconfig hinic0 -f std_sh_4x25ge_dpdk_cfg_template0.ini -``` - -请按如下方式配置IRQ: - -先禁用irqbalance系统服务;随后按照如下方式进行配置(以下enp5s0/enp4s0/enp3s0仅为示例,请根据实际情况替换为本机网卡名): - -四路ARM服务器单网卡: - -``` -/var/scripts/set_irq_affinity_256.sh -x all enp4s0. -``` - -四路ARM服务器双网卡: - -``` - /var/scripts/set_irq_affinity.sh -x 16-32,48-64,80-95,112-128 enp4s0 - /var/scripts/set_irq_affinity.sh -x 146-161,176-191,208-224,240-256 enp5s0 -``` - -两路ARM服务器单网卡: - -``` -/var/scripts/set_irq_affinity_128.sh -x all enp3s0 -``` - -两路ARM服务器双网卡: - -``` -./set_irq_affinity.sh -x 0-63 enp3s0 -./set_irq_affinity.sh -x 64-128 enp4s0 -``` - -四路服务器上请按如下方式配置中断: - -``` -ethtool -C enp4s0 adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62 -``` - -两路服务器上请按如下方式配置中断: - -``` -ethtool-C enp4s0 adaptive-rx off adaptive-tx off rx-usecs 50 tx-usecs 50 -``` - -配置增大缓冲区大小以调优网卡: - -``` -ethtool -G enp4s0 rx 4096 tx 4096 -``` - -修改网卡参数,服务端为on,客户端为off: - -``` - ethtool -K $net_dev tso on/off - ethtool -K $net_dev lro on/off - ethtool -K $net_dev gro on/off - ethtool -K $net_dev gso on/off -``` - -调优rc\_local,其中<256/128\>处请按照本机物理核心数设置: - -``` -killall -9 polkitd - -service sysmonitor stop -service irqbalance stop -service rsyslog stop -service firewalld stop - -echo madvise > /sys/kernel/mm/transparent_hugepage/enabled - -/var/scripts/net_tune.sh enp4s0 -/var/scripts/net_tune.sh enp5s0 - -ethtool -G enp4s0 rx 4096 tx 4096 -ethtool -G enp5s0 rx 4096 tx 4096 -/var/scripts/set_irq_affinity_<256/128>.sh -x all enp4s0 -ethtool -C enp4s0 adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62 -``` - +# ARM服务器优化指导 + +- BIOS + +请按下图进行配置 + +![](figures/zh-cn_image_0257861506.png) + +![](figures/zh-cn_image_0257861511.png) + +![](figures/zh-cn_image_0257861526.png) + +- 操作系统 + +请按如下方式修改/etc/sysctl.conf配置文件修改内核参数 + +``` +net.ipv4.ip_local_port_range = 9000 65535 +kernel.sysrq = 1 +kernel.panic_on_oops = 1 +kernel.panic = 5 +kernel.hung_task_timeout_secs = 3600 +kernel.hung_task_panic = 1 +vm.oom_dump_tasks = 1 +kernel.softlockup_panic = 1 +fs.file-max = 640000 +kernel.msgmnb = 7000000 +kernel.sched_min_granularity_ns = 10000000 +kernel.sched_wakeup_granularity_ns = 15000000 +kernel.numa_balancing=0 +vm.max_map_count = 1048576 +net.ipv4.tcp_max_tw_buckets = 10000 +net.ipv4.tcp_tw_reuse = 1 +net.ipv4.tcp_tw_recycle = 1 +net.ipv4.tcp_keepalive_time = 30 +net.ipv4.tcp_keepalive_probes = 9 +net.ipv4.tcp_keepalive_intvl = 30 +net.ipv4.tcp_retries2 = 80 +kernel.sem = 32000 1024000000 500 32000 +kernel.shmall = 52805669 +kernel.shmmax = 18446744073692774399 +sys.fs.file-max = 6536438 +net.core.wmem_max = 21299200 +net.core.rmem_max = 21299200 +net.core.wmem_default = 21299200 +net.core.rmem_default = 21299200 +net.ipv4.tcp_rmem = 8192 250000 16777216 +net.ipv4.tcp_wmem = 8192 250000 16777216 +net.core.somaxconn = 65535 +vm.min_free_kbytes = 5270325 +net.core.netdev_max_backlog = 65535 +net.ipv4.tcp_max_syn_backlog = 65535 +net.ipv4.tcp_syncookies = 1 +vm.overcommit_memory = 0 +net.ipv4.tcp_retries1 = 5 +net.ipv4.tcp_syn_retries = 5 +##NEW +kernel.sched_autogroup_enabled=0 +kernel.sched_min_granularity_ns=2000000 +kernel.sched_latency_ns=10000000 +kernel.sched_wakeup_granularity_ns=5000000 +kernel.sched_migration_cost_ns=500000 +vm.dirty_background_bytes=33554432 +kernel.shmmax=21474836480 +net.ipv4.tcp_timestamps = 0 +net.ipv6.conf.all.disable_ipv6=1 +net.ipv6.conf.default.disable_ipv6=1 +net.ipv4.tcp_keepalive_time=600 +net.ipv4.tcp_keepalive_probes=3 +kernel.core_uses_pid=1 +``` + +调优守护程序使用Throughput-performance配置文件: + +``` +[...]$ tuned-adm profile throughput-performance +``` + +调优启动参数,将如下配置加入内核启动参数: + +``` +iommu.passthrough=1 +``` + +- 调优硬盘/SSD + +请按如下方式格式化分区,其中 nvme0n1p1 为测试机上 NVMe 盘名,请替换为本机 NVMe 盘名: + +``` +– mkfs.xfs -f -b size=8192 -s size=512 /dev/nvme0n1p1 +``` + +将如下配置项加入内核参数以启用BFQ: + +``` +scsi_mod.use_blk_mq=1 +``` + +- 网络 + +请按照厂商建议安装网卡驱动程序并配置消息队列长度,以华为 Hi1822 网卡为例,请参考如下链接安装 Hi1822 智能网卡驱动: + +[https://support.huawei.com/enterprise/de/doc/EDOC1100063073/42928ba6/configuring-64-queues](https://support.huawei.com/enterprise/de/doc/EDOC1100063073/42928ba6/configuring-64-queues) + +配置消息队列为64: + +``` +./hinicconfig hinic0 -f std_sh_4x25ge_dpdk_cfg_template0.ini +``` + +请按如下方式配置IRQ: + +先禁用 irqbalance 系统服务;随后按照如下方式进行配置(以下enp5s0/enp4s0/enp3s0仅为示例,请根据实际情况替换为本机网卡名): + +四路 ARM 服务器单网卡: + +``` +/var/scripts/set_irq_affinity_256.sh -x all enp4s0. +``` + +四路 ARM 服务器双网卡: + +``` + /var/scripts/set_irq_affinity.sh -x 16-32,48-64,80-95,112-128 enp4s0 + /var/scripts/set_irq_affinity.sh -x 146-161,176-191,208-224,240-256 enp5s0 +``` + +两路 ARM 服务器单网卡: + +``` +/var/scripts/set_irq_affinity_128.sh -x all enp3s0 +``` + +两路 ARM 服务器双网卡: + +``` +./set_irq_affinity.sh -x 0-63 enp3s0 +./set_irq_affinity.sh -x 64-128 enp4s0 +``` + +四路服务器上请按如下方式配置中断: + +``` +ethtool -C enp4s0 adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62 +``` + +两路服务器上请按如下方式配置中断: + +``` +ethtool-C enp4s0 adaptive-rx off adaptive-tx off rx-usecs 50 tx-usecs 50 +``` + +配置增大缓冲区大小以调优网卡: + +``` +ethtool -G enp4s0 rx 4096 tx 4096 +``` + +修改网卡参数,服务端为 on ,客户端为off: + +``` + ethtool -K $net_dev tso on/off + ethtool -K $net_dev lro on/off + ethtool -K $net_dev gro on/off + ethtool -K $net_dev gso on/off +``` + +调优rc\_local,其中<256/128\>处请按照本机物理核心数设置: + +``` +killall -9 polkitd + +service sysmonitor stop +service irqbalance stop +service rsyslog stop +service firewalld stop + +echo madvise > /sys/kernel/mm/transparent_hugepage/enabled + +/var/scripts/net_tune.sh enp4s0 +/var/scripts/net_tune.sh enp5s0 + +ethtool -G enp4s0 rx 4096 tx 4096 +ethtool -G enp5s0 rx 4096 tx 4096 +/var/scripts/set_irq_affinity_<256/128>.sh -x all enp4s0 +ethtool -C enp4s0 adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62 +``` + diff --git a/content/zh/docs/Developerguide/BEGIN.md b/content/zh/docs/Developerguide/BEGIN.md index 37e50e383..e0d694a0c 100644 --- a/content/zh/docs/Developerguide/BEGIN.md +++ b/content/zh/docs/Developerguide/BEGIN.md @@ -1,58 +1,58 @@ -# BEGIN - -## 功能描述 - -BEGIN可以用于开始一个匿名块,也可以用于开始一个事务。本节描述用BEGIN开始匿名块的语法,以BEGIN开始事务的语法见[START TRANSACTION](START-TRANSACTION.md)。 - -匿名块是能够动态地创建和执行过程代码的结构,而不需要以持久化的方式将代码作为数据库对象储存在数据库中。 - -## 注意事项 - -无。 - -## 语法格式 - -- 开启匿名块 - - ``` - [DECLARE [declare_statements]] - BEGIN - execution_statements - END; - / - ``` - -- 开启事务 - - ``` - BEGIN [ WORK | TRANSACTION ] - [ - { - ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } - | { READ WRITE | READ ONLY } - } [, ...] - ]; - ``` - - -## 参数说明 - -- **declare\_statements** - - 声明变量,包括变量名和变量类型,如“sales\_cnt int”。 - -- **execution\_statements** - - 匿名块中要执行的语句。 - - 取值范围:DML操作\(数据操纵操作:select、insert、delete、update\)或系统表中已注册的函数名称。 - - -## 示例 - -无。 - -## 相关链接 - -[START TRANSACTION](START-TRANSACTION.md) - +# BEGIN + +## 功能描述 + +BEGIN 可以用于开始一个匿名块,也可以用于开始一个事务。本节描述用 BEGIN 开始匿名块的语法,以 BEGIN 开始事务的语法见[START TRANSACTION](START-TRANSACTION.md)。 + +匿名块是能够动态地创建和执行过程代码的结构,而不需要以持久化的方式将代码作为数据库对象储存在数据库中。 + +## 注意事项 + +无。 + +## 语法格式 + +- 开启匿名块 + + ``` + [DECLARE [declare_statements]] + BEGIN + execution_statements + END; + / + ``` + +- 开启事务 + + ``` + BEGIN [ WORK | TRANSACTION ] + [ + { + ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } + | { READ WRITE | READ ONLY } + } [, ...] + ]; + ``` + + +## 参数说明 + +- **declare\_statements** + + 声明变量,包括变量名和变量类型,如“sales\_cnt int”。 + +- **execution\_statements** + + 匿名块中要执行的语句。 + + 取值范围:DML操作\(数据操纵操作:select、insert、delete、update\)或系统表中已注册的函数名称。 + + +## 示例 + +无。 + +## 相关链接 + +[START TRANSACTION](START-TRANSACTION.md) + diff --git a/content/zh/docs/Developerguide/BGWRITER_STAT.md b/content/zh/docs/Developerguide/BGWRITER_STAT.md index 2ec727593..515ca6a2c 100644 --- a/content/zh/docs/Developerguide/BGWRITER_STAT.md +++ b/content/zh/docs/Developerguide/BGWRITER_STAT.md @@ -1,95 +1,95 @@ -# BGWRITER\_STAT - -BGWRITER\_STAT视图显示关于后端写进程活动的统计信息。 - -**表 1** BGWRITER\_STAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

checkpoints_timed

-

bigint

-

执行的定期检查点数。

-

checkpoints_req

-

bigint

-

执行的需求检查点数。

-

checkpoint_write_time

-

double precision

-

花费在检查点处理部分的时间总量,其中文件被写入到磁盘,以毫秒为单位。

-

checkpoint_sync_time

-

double precision

-

花费在检查点处理部分的时间总量,其中文件被同步到磁盘,以毫秒为单位。

-

buffers_checkpoint

-

bigint

-

检查点写缓冲区数量。

-

buffers_clean

-

bigint

-

后端写进程写缓冲区数量。

-

maxwritten_clean

-

bigint

-

后端写进程停止清理扫描时间数,因为它写了太多缓冲区。

-

buffers_backend

-

bigint

-

通过后端直接写缓冲区数。

-

buffers_backend_fsync

-

bigint

-

后端不得不执行自己的fsync调用的时间数(通常后端写进程处理这些即使后端确实自己写)。

-

buffers_alloc

-

bigint

-

分配的缓冲区数量。

-

stats_reset

-

timestamp with time zone

-

这些统计被重置的时间。

-
- +# BGWRITER\_STAT + +BGWRITER\_STAT视图显示关于后端写进程活动的统计信息。 + +**表 1** BGWRITER\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

checkpoints_timed

+

bigint

+

执行的定期检查点数。

+

checkpoints_req

+

bigint

+

执行的需求检查点数。

+

checkpoint_write_time

+

double precision

+

花费在检查点处理部分的时间总量,其中文件被写入到磁盘,以毫秒为单位。

+

checkpoint_sync_time

+

double precision

+

花费在检查点处理部分的时间总量,其中文件被同步到磁盘,以毫秒为单位。

+

buffers_checkpoint

+

bigint

+

检查点写缓冲区数量。

+

buffers_clean

+

bigint

+

后端写进程写缓冲区数量。

+

maxwritten_clean

+

bigint

+

后端写进程停止清理扫描时间数,因为它写了太多缓冲区。

+

buffers_backend

+

bigint

+

通过后端直接写缓冲区数。

+

buffers_backend_fsync

+

bigint

+

后端不得不执行自己的 fsync 调用的时间数(通常后端写进程处理这些即使后端确实自己写)。

+

buffers_alloc

+

bigint

+

分配的缓冲区数量。

+

stats_reset

+

timestamp with time zone

+

这些统计被重置的时间。

+
+ diff --git "a/content/zh/docs/Developerguide/BIOS\351\205\215\347\275\256.md" "b/content/zh/docs/Developerguide/BIOS\351\205\215\347\275\256.md" index 70948ee38..b871801a8 100644 --- "a/content/zh/docs/Developerguide/BIOS\351\205\215\347\275\256.md" +++ "b/content/zh/docs/Developerguide/BIOS\351\205\215\347\275\256.md" @@ -1,19 +1,19 @@ -# BIOS配置 - -1. 恢复BIOS出厂设置。 -2. 修改相关BIOS设置,如下所示: - - a. **BIOS\>Advanced\>MISC Config,配置Support Smmu为Disabled**,如[图1](#fig1464144318512)所示。 - - **图 1** 修改BIOS设置(1) - ![](figures/修改BIOS设置(1).png "") - - b.**BIOS\>Advanced\>MISC Config,配置CPU Prefetching Configuration为Disabled**,如[图1](#fig1464144318512)所示。 - - c.**BIOS\>Advanced\>Memory Config,配置Die Interleaving为Disable**,如[图2](#fig6430185319610)所示。 - - **图 2** 修改BIOS设置(2) - ![](figures/修改BIOS设置(2).png "") - -3. 重启BIOS系统。 - +# BIOS配置 + +1. 恢复 BIOS 出厂设置。 +2. 修改相关 BIOS 设置,如下所示: + + a. **BIOS\>Advanced\>MISC Config,配置 Support Smmu 为Disabled**,如[图1](#fig1464144318512)所示。 + + **图 1** 修改 BIOS 设置(1) + ![](figures/修改 BIOS 设置(1).png "") + + b.**BIOS\>Advanced\>MISC Config,配置 CPU Prefetching Configuration 为Disabled**,如[图1](#fig1464144318512)所示。 + + c.**BIOS\>Advanced\>Memory Config,配置 Die Interleaving 为Disable**,如[图2](#fig6430185319610)所示。 + + **图 2** 修改 BIOS 设置(2) + ![](figures/修改 BIOS 设置(2).png "") + +3. 重启 BIOS 系统。 + diff --git a/content/zh/docs/Developerguide/CALL.md b/content/zh/docs/Developerguide/CALL.md index eebe861af..a07aa6d82 100644 --- a/content/zh/docs/Developerguide/CALL.md +++ b/content/zh/docs/Developerguide/CALL.md @@ -1,79 +1,79 @@ -# CALL - -## 功能描述 - -使用CALL命令可以调用已定义的函数和存储过程。 - -## 注意事项 - -无。 - -## 语法格式 - -``` -CALL [schema.|package.] {func_name| procedure_name} ( param_expr ); -``` - -## 参数说明 - -- **schema** - - 函数或存储过程所在的模式名称。 - -- package - - 函数或存储过程所在的package名称。 - -- **func\_name** - - 所调用函数或存储过程的名称。 - - 取值范围:已存在的函数名称。 - -- **param\_expr** - - 参数列表可以用符号“:=”或者“=\>”将参数名和参数值隔开,这种方法的好处是参数可以以任意顺序排列。若参数列表中仅出现参数值,则参数值的排列顺序必须和函数或存储过程定义时的相同。 - - 取值范围:已存在的函数参数名称或存储过程参数名称。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >参数可以包含入参(参数名和类型之间指定“IN”关键字)和出参(参数名和类型之间指定“OUT”关键字),使用CALL命令调用函数或存储过程时,对于非重载的函数,参数列表必须包含出参,出参可以传入一个变量或者任一常量,详见[示例](#zh-cn_topic_0283137636_zh-cn_topic_0237122088_zh-cn_topic_0059778236_s299dc001fa4b48cd9b56412a73db23c0)。对于重载的package函数,参数列表里可以忽略出参,忽略出参时可能会导致函数找不到。包含出参时,出参只能是常量。 - - -## 示例 - -``` ---创建一个函数func_add_sql,计算两个整数的和,并返回结果。 -openGauss=# CREATE FUNCTION func_add_sql(num1 integer, num2 integer) RETURN integer -AS -BEGIN -RETURN num1 + num2; -END; -/ - ---按参数值传递。 -openGauss=# CALL func_add_sql(1, 3); - ---使用命名标记法传参。 -openGauss=# CALL func_add_sql(num1 => 1,num2 => 3); -openGauss=# CALL func_add_sql(num2 := 2, num1 := 3); - ---删除函数。 -openGauss=# DROP FUNCTION func_add_sql; - ---创建带出参的函数。 -openGauss=# CREATE FUNCTION func_increment_sql(num1 IN integer, num2 IN integer, res OUT integer) -RETURN integer -AS -BEGIN -res := num1 + num2; -END; -/ - ---出参传入常量。 -openGauss=# CALL func_increment_sql(1,2,1); - ---删除函数。 -openGauss=# DROP FUNCTION func_increment_sql; -``` - +# CALL + +## 功能描述 + +使用 CALL 命令可以调用已定义的函数和存储过程。 + +## 注意事项 + +无。 + +## 语法格式 + +``` +CALL [schema.|package.] {func_name| procedure_name} ( param_expr ); +``` + +## 参数说明 + +- **schema** + + 函数或存储过程所在的模式名称。 + +- package + + 函数或存储过程所在的 package 名称。 + +- **func\_name** + + 所调用函数或存储过程的名称。 + + 取值范围:已存在的函数名称。 + +- **param\_expr** + + 参数列表可以用符号“:=”或者“=\>”将参数名和参数值隔开,这种方法的好处是参数可以以任意顺序排列。若参数列表中仅出现参数值,则参数值的排列顺序必须和函数或存储过程定义时的相同。 + + 取值范围:已存在的函数参数名称或存储过程参数名称。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >参数可以包含入参(参数名和类型之间指定“IN”关键字)和出参(参数名和类型之间指定“OUT”关键字),使用 CALL 命令调用函数或存储过程时,对于非重载的函数,参数列表必须包含出参,出参可以传入一个变量或者任一常量,详见[示例](#zh-cn_topic_0283137636_zh-cn_topic_0237122088_zh-cn_topic_0059778236_s299dc001fa4b48cd9b56412a73db23c0)。对于重载的 package 函数,参数列表里可以忽略出参,忽略出参时可能会导致函数找不到。包含出参时,出参只能是常量。 + + +## 示例 + +``` +--创建一个函数 func_add_sql ,计算两个整数的和,并返回结果。 +openGauss=# CREATE FUNCTION func_add_sql(num1 integer, num2 integer) RETURN integer +AS +BEGIN +RETURN num1 + num2; +END; +/ + +--按参数值传递。 +openGauss=# CALL func_add_sql(1, 3); + +--使用命名标记法传参。 +openGauss=# CALL func_add_sql(num1 => 1,num2 => 3); +openGauss=# CALL func_add_sql(num2 := 2, num1 := 3); + +--删除函数。 +openGauss=# DROP FUNCTION func_add_sql; + +--创建带出参的函数。 +openGauss=# CREATE FUNCTION func_increment_sql(num1 IN integer, num2 IN integer , res OUT integer) +RETURN integer +AS +BEGIN +res := num1 + num2; +END; +/ + +--出参传入常量。 +openGauss=# CALL func_increment_sql(1, 2 ,1); + +--删除函数。 +openGauss=# DROP FUNCTION func_increment_sql; +``` + diff --git a/content/zh/docs/Developerguide/CHECKPOINT.md b/content/zh/docs/Developerguide/CHECKPOINT.md index 43c3a2526..920f6fd65 100644 --- a/content/zh/docs/Developerguide/CHECKPOINT.md +++ b/content/zh/docs/Developerguide/CHECKPOINT.md @@ -1,30 +1,30 @@ -# CHECKPOINT - -## 功能描述 - -检查点(CHECKPOINT)是一个事务日志中的点,所有数据文件都在该点被更新以反映日志中的信息,所有数据文件都将被刷新到磁盘。 - -设置事务日志检查点。预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。可以使用gs\_guc命令设置相关运行时参数(checkpoint\_segments、checkpoint\_timeout和incremental\_checkpoint\_timeout)来调整这个原子化检查点的间隔。 - -## 注意事项 - -- 只有系统管理员和运维管理员可以调用CHECKPOINT。 -- CHECKPOINT强制立即进行检查,而不是等到下一次调度时的检查点。 - -## 语法格式 - -``` -CHECKPOINT; -``` - -## 参数说明 - -无。 - -## 示例 - -``` ---设置检查点。 -openGauss=# CHECKPOINT; -``` - +# CHECKPOINT + +## 功能描述 + +检查点(CHECKPOINT)是一个事务日志中的点,所有数据文件都在该点被更新以反映日志中的信息,所有数据文件都将被刷新到磁盘。 + +设置事务日志检查点。预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。可以使用gs\_guc命令设置相关运行时参数(checkpoint\_segments、checkpoint\_timeout和incremental\_checkpoint\_timeout)来调整这个原子化检查点的间隔。 + +## 注意事项 + +- 只有系统管理员和运维管理员可以调用 CHECKPOINT 。 +- CHECKPOINT强制立即进行检查,而不是等到下一次调度时的检查点。 + +## 语法格式 + +``` +CHECKPOINT; +``` + +## 参数说明 + +无。 + +## 示例 + +``` +--设置检查点。 +openGauss=# CHECKPOINT; +``` + diff --git a/content/zh/docs/Developerguide/CLASS_VITAL_INFO.md b/content/zh/docs/Developerguide/CLASS_VITAL_INFO.md index 0ea190b26..73493d44e 100644 --- a/content/zh/docs/Developerguide/CLASS_VITAL_INFO.md +++ b/content/zh/docs/Developerguide/CLASS_VITAL_INFO.md @@ -1,47 +1,47 @@ -# CLASS\_VITAL\_INFO - -CLASS\_VITAL\_INFO视图用于做WDR时校验相同的表或者索引的oid是否一致。 - -**表 1** CLASS\_VITAL\_INFO字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

表的oid。

-

schemaname

-

name

-

schema名称。

-

relname

-

name

-

表名。

-

relkind

-

"char"

-
表示对象类型,取值范围如下:
  • r:表示普通表。
  • t:表示toast表。
  • i:表示索引。
-
-
- +# CLASS\_VITAL\_INFO + +CLASS\_VITAL\_INFO视图用于做 WDR 时校验相同的表或者索引的 oid 是否一致。 + +**表 1** CLASS\_VITAL\_INFO字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的 oid 。

+

schemaname

+

name

+

schema名称。

+

relname

+

name

+

表名。

+

relkind

+

"char"

+
表示对象类型,取值范围如下:
  • r:表示普通表。
  • t:表示 toast 表。
  • i:表示索引。
+
+
+ diff --git a/content/zh/docs/Developerguide/CLEAN-CONNECTION.md b/content/zh/docs/Developerguide/CLEAN-CONNECTION.md index 7610f093a..dc220d1d8 100644 --- a/content/zh/docs/Developerguide/CLEAN-CONNECTION.md +++ b/content/zh/docs/Developerguide/CLEAN-CONNECTION.md @@ -1,72 +1,72 @@ -# CLEAN CONNECTION - -## 功能描述 - -用来清理数据库连接。允许在节点上清理指定数据库的指定用户的相关连接。 - -## 注意事项 - -1、openGauss下不支持指定节点,仅支持TO ALL。 - -2、在非force模式下,该功能不清理连接,在fore模式下,可以清理正在使用的正常连接。 - -## 语法格式 - -``` -CLEAN CONNECTION - TO { COORDINATOR ( nodename [, ... ] ) | NODE ( nodename [, ... ] )| ALL [ CHECK ] [ FORCE ] } - [ FOR DATABASE dbname ] - [ TO USER username ]; -``` - -## 参数说明 - -- **CHECK** - - 仅在节点列表为TO ALL时可以指定。如果指定该参数,会在清理连接之前检查数据库是否被其他会话连接访问。此参数主要用于DROP DATABASE之前的连接访问检查,如果发现有其他会话连接,则将报错并停止删除数据库。 - -- **FORCE** - - 仅在节点列表为TO ALL时可以指定,如果指定该参数,所有和指定dbname和username相关的线程都会收到SIGTERM信号,然后被强制关闭。 - -- **COORDINATOR \( nodename \[, ... \] \) | NODE \( nodename \[, ... \] \) | ALL** - - 删除指定节点上的连接。有三种场景: - - - 删除指定CN上的连接,openGauss不支持。 - - 删除指定DN上的连接,openGauss不支持。 - - 删除所有节点上的连接\(TO ALL\),openGauss仅支持该场景。 - -- **dbname** - - 删除指定数据库上的连接。如果不指定,则删除所有数据库的连接。 - - 取值范围:已存在数据库名。 - -- **username** - - 删除指定用户上的连接。如果不指定,则删除所有用户的连接。 - - 取值范围:已存在的用户。 - - -## 示例 - -``` ---创建jack用户。 -CREATE USER jack PASSWORD 'Bigdata123@'; - ---删除用户jack在数据库template1上的所有连接。 -CLEAN CONNECTION TO ALL FOR DATABASE template1 TO USER jack; - ---删除用户jack的所有连接。 -CLEAN CONNECTION TO ALL TO USER jack; - ---删除在数据库gaussdb上的所有连接。 -CLEAN CONNECTION TO ALL FORCE FOR DATABASE gaussdb; - ---删除用户jack。 -DROP USER jack; - -``` - +# CLEAN CONNECTION + +## 功能描述 + +用来清理数据库连接。允许在节点上清理指定数据库的指定用户的相关连接。 + +## 注意事项 + +1、openGauss下不支持指定节点,仅支持 TO ALL 。 + +2、在非 force 模式下,该功能不清理连接,在 fore 模式下,可以清理正在使用的正常连接。 + +## 语法格式 + +``` +CLEAN CONNECTION + TO { COORDINATOR ( nodename [, ... ] ) | NODE ( nodename [, ... ] )| ALL [ CHECK ] [ FORCE ] } + [ FOR DATABASE dbname ] + [ TO USER username ]; +``` + +## 参数说明 + +- **CHECK** + + 仅在节点列表为 TO ALL 时可以指定。如果指定该参数,会在清理连接之前检查数据库是否被其他会话连接访问。此参数主要用于 DROP DATABASE 之前的连接访问检查,如果发现有其他会话连接,则将报错并停止删除数据库。 + +- **FORCE** + + 仅在节点列表为 TO ALL 时可以指定,如果指定该参数,所有和指定 dbname 和 username 相关的线程都会收到 SIGTERM 信号,然后被强制关闭。 + +- **COORDINATOR \( nodename \[, ... \] \) | NODE \( nodename \[, ... \] \) | ALL** + + 删除指定节点上的连接。有三种场景: + + - 删除指定 CN 上的连接, openGauss 不支持。 + - 删除指定 DN 上的连接, openGauss 不支持。 + - 删除所有节点上的连接\(TO ALL\), openGauss 仅支持该场景。 + +- **dbname** + + 删除指定数据库上的连接。如果不指定,则删除所有数据库的连接。 + + 取值范围:已存在数据库名。 + +- **username** + + 删除指定用户上的连接。如果不指定,则删除所有用户的连接。 + + 取值范围:已存在的用户。 + + +## 示例 + +``` +--创建 jack 用户。 +CREATE USER jack PASSWORD 'Bigdata123@'; + +--删除用户 jack 在数据库 template1 上的所有连接。 +CLEAN CONNECTION TO ALL FOR DATABASE template1 TO USER jack; + +--删除用户 jack 的所有连接。 +CLEAN CONNECTION TO ALL TO USER jack; + +--删除在数据库 gaussdb 上的所有连接。 +CLEAN CONNECTION TO ALL FORCE FOR DATABASE gaussdb; + +--删除用户 jack 。 +DROP USER jack; + +``` + diff --git a/content/zh/docs/Developerguide/CLOSE.md b/content/zh/docs/Developerguide/CLOSE.md index 6def870b5..12ac82964 100644 --- a/content/zh/docs/Developerguide/CLOSE.md +++ b/content/zh/docs/Developerguide/CLOSE.md @@ -1,40 +1,40 @@ -# CLOSE - -## 功能描述 - -CLOSE释放和一个游标关联的所有资源。 - -## 注意事项 - -- 不允许对一个已关闭的游标再做任何操作。 -- 一个不再使用的游标应该尽早关闭。 -- 当创建游标的事务用COMMIT或ROLLBACK终止之后,每个不可保持的已打开游标都隐含关闭。 -- 当创建游标的事务通过ROLLBACK退出之后,每个可以保持的游标都将隐含关闭。 -- 当创建游标的事务成功提交,可保持的游标将保持打开,直到执行一个明确的CLOSE或者客户端断开。 -- openGauss没有明确打开游标的OPEN语句,因为一个游标在使用CURSOR命令定义的时候就打开了。可以通过查询系统视图pg\_cursors看到所有可用的游标。 - -## 语法格式 - -``` -CLOSE { cursor_name | ALL } ; -``` - -## 参数说明 - -- **cursor\_name** - - 一个待关闭的游标名称。 - -- **ALL** - - 关闭所有已打开的游标。 - - -## 示例 - -请参考FETCH的[示例](FETCH.md#zh-cn_topic_0283137321_zh-cn_topic_0237122165_zh-cn_topic_0059778422_s1ee72832a27547e4949061a010e24578)。 - -## 相关链接 - -[FETCH](FETCH.md),[MOVE](MOVE.md) - +# CLOSE + +## 功能描述 + +CLOSE 释放和一个游标关联的所有资源。 + +## 注意事项 + +- 不允许对一个已关闭的游标再做任何操作。 +- 一个不再使用的游标应该尽早关闭。 +- 当创建游标的事务用 COMMIT 或 ROLLBACK 终止之后,每个不可保持的已打开游标都隐含关闭。 +- 当创建游标的事务通过 ROLLBACK 退出之后,每个可以保持的游标都将隐含关闭。 +- 当创建游标的事务成功提交,可保持的游标将保持打开,直到执行一个明确的 CLOSE 或者客户端断开。 +- openGauss没有明确打开游标的 OPEN 语句,因为一个游标在使用 CURSOR 命令定义的时候就打开了。可以通过查询系统视图pg\_cursors看到所有可用的游标。 + +## 语法格式 + +``` +CLOSE { cursor_name | ALL } ; +``` + +## 参数说明 + +- **cursor\_name** + + 一个待关闭的游标名称。 + +- **ALL** + + 关闭所有已打开的游标。 + + +## 示例 + +请参考 FETCH 的[示例](FETCH.md#zh-cn_topic_0283137321_zh-cn_topic_0237122165_zh-cn_topic_0059778422_s1ee72832a27547e4949061a010e24578)。 + +## 相关链接 + +[FETCH](FETCH.md),[MOVE](MOVE.md) + diff --git a/content/zh/docs/Developerguide/CLUSTER.md b/content/zh/docs/Developerguide/CLUSTER.md index cb9747e78..656b582ee 100644 --- a/content/zh/docs/Developerguide/CLUSTER.md +++ b/content/zh/docs/Developerguide/CLUSTER.md @@ -1,120 +1,120 @@ -# CLUSTER - -## 功能描述 - -根据一个索引对表进行聚簇排序。 - -CLUSTER指定openGauss通过索引名指定的索引聚簇由表名指定的表。表名上必须已经定义该索引。 - -当对一个表聚集后,该表将基于索引信息进行物理存储。聚集是一次性操作:当表被更新之后,更改的内容不会被聚集。也就是说,系统不会试图按照索引顺序对新的存储内容及更新记录进行重新聚集。 - -在对一个表聚簇之后,openGauss会记录在哪个索引上建立了聚集。CLUSTER table\_name的聚集形式在之前的同一个索引的表上重新聚集。用户也可以用ALTER TABLE的CLUSTER或SET WITHOUT CLUSTER形式来设置索引来用于后续的聚集操作或清除任何之前的设置。 - -不含参数的CLUSTER会将当前用户所拥有的数据库中的先前做过聚簇的所有表重新处理,或者系统管理员调用的这些表。 - -在对一个表进行聚簇的时候,会在其上请求一个ACCESS EXCLUSIVE锁。这样就避免了在CLUSTER完成之前对此表执行其它的操作\(包括读写\)。 - -## 注意事项 - -- 只有行存B-tree索引支持CLUSTER操作。 -- 如果用户只是随机访问表中的行,那么表中数据的实际存储顺序是无关紧要的。但是,如果对某些数据的访问多于其它数据,而且有一个索引将这些数据分组,那么将使用CLUSTER中会有所帮助。如果从一个表中请求一定索引范围的值,或者是一个索引值对应多行,CLUSTER也会有助于应用,因为如果索引标识出第一匹配行所在的存储页,所有其它行也可能已经在同一个存储页里了,这样便节省了磁盘访问的时间,加速了查询。 -- 在聚簇过程中,系统先创建一个按照索引顺序建立的表的临时拷贝。同时也建立表上的每个索引的临时拷贝。因此,需要磁盘上有足够的剩余空间, 至少是表大小和索引大小的和。 -- 因为CLUSTER记忆聚集信息,可以在第一次的时候手工对表进行聚簇,然后设置一个类似VACUUM的时间,这样就可以周期地自动对表进行聚簇操作。 -- 因为优化器记录着有关表的排序的统计,所以建议在新近聚簇的表上运行ANALYZE。否则,优化器可能会选择很差劲的查询规划。 -- CLUSTER不允许在事务中执行。 -- 如果没有打开xc\_maintenance\_mode参数,那么CLUSTER操作将跳过所有系统表。 - -## 语法格式 - -- 对一个表进行聚簇排序。 - - ``` - CLUSTER [ VERBOSE ] table_name [ USING index_name ]; - ``` - -- 对一个分区进行聚簇排序。 - - ``` - CLUSTER [ VERBOSE ] table_name PARTITION ( partition_name ) [ USING index_name ]; - ``` - -- 对已做过聚簇的表重新进行聚簇。 - - ``` - CLUSTER [ VERBOSE ]; - ``` - - -## 参数说明 - -- **VERBOSE** - - 启用显示进度信息。 - -- **table\_name** - - 表名称。 - - 取值范围:已存在的表名称。 - -- **index\_name** - - 索引名称。 - - 取值范围:已存在的索引名称。 - -- **partition\_name** - - 分区名称。 - - 取值范围:已存在的分区名称。 - - -## 示例 - -``` --- 创建一个分区表。 -openGauss=# CREATE TABLE tpcds.inventory_p1 -( - INV_DATE_SK INTEGER NOT NULL, - INV_ITEM_SK INTEGER NOT NULL, - INV_WAREHOUSE_SK INTEGER NOT NULL, - INV_QUANTITY_ON_HAND INTEGER -) -PARTITION BY RANGE(INV_DATE_SK) -( - PARTITION P1 VALUES LESS THAN(2451179), - PARTITION P2 VALUES LESS THAN(2451544), - PARTITION P3 VALUES LESS THAN(2451910), - PARTITION P4 VALUES LESS THAN(2452275), - PARTITION P5 VALUES LESS THAN(2452640), - PARTITION P6 VALUES LESS THAN(2453005), - PARTITION P7 VALUES LESS THAN(MAXVALUE) -); - --- 创建索引ds_inventory_p1_index1。 -openGauss=# CREATE INDEX ds_inventory_p1_index1 ON tpcds.inventory_p1 (INV_ITEM_SK) LOCAL; - --- 对表tpcds.inventory_p1进行聚集。 -openGauss=# CLUSTER tpcds.inventory_p1 USING ds_inventory_p1_index1; - --- 对分区p3进行聚集。 -openGauss=# CLUSTER tpcds.inventory_p1 PARTITION (p3) USING ds_inventory_p1_index1; - --- 对数据库中可以进行聚集的表进聚集。 -openGauss=# CLUSTER; - ---删除索引。 -openGauss=# DROP INDEX tpcds.ds_inventory_p1_index1; - ---删除分区表。 -openGauss=# DROP TABLE tpcds.inventory_p1; -``` - -## 优化建议 - - - cluster - - 建议在新近聚簇的表上运行ANALYZE。否则,优化器可能会选择很差劲的查询规划。 - - 不允许在事务中执行CLUSTER。 - - +# CLUSTER + +## 功能描述 + +根据一个索引对表进行聚簇排序。 + +CLUSTER 指定 openGauss 通过索引名指定的索引聚簇由表名指定的表。表名上必须已经定义该索引。 + +当对一个表聚集后,该表将基于索引信息进行物理存储。聚集是一次性操作:当表被更新之后,更改的内容不会被聚集。也就是说,系统不会试图按照索引顺序对新的存储内容及更新记录进行重新聚集。 + +在对一个表聚簇之后, openGauss 会记录在哪个索引上建立了聚集。CLUSTER table\_name的聚集形式在之前的同一个索引的表上重新聚集。用户也可以用 ALTER TABLE 的 CLUSTER 或 SET WITHOUT CLUSTER 形式来设置索引来用于后续的聚集操作或清除任何之前的设置。 + +不含参数的 CLUSTER 会将当前用户所拥有的数据库中的先前做过聚簇的所有表重新处理,或者系统管理员调用的这些表。 + +在对一个表进行聚簇的时候,会在其上请求一个 ACCESS EXCLUSIVE 锁。这样就避免了在 CLUSTER 完成之前对此表执行其它的操作\(包括读写\)。 + +## 注意事项 + +- 只有行存B-tree索引支持 CLUSTER 操作。 +- 如果用户只是随机访问表中的行,那么表中数据的实际存储顺序是无关紧要的。但是,如果对某些数据的访问多于其它数据,而且有一个索引将这些数据分组,那么将使用 CLUSTER 中会有所帮助。如果从一个表中请求一定索引范围的值,或者是一个索引值对应多行, CLUSTER 也会有助于应用,因为如果索引标识出第一匹配行所在的存储页,所有其它行也可能已经在同一个存储页里了,这样便节省了磁盘访问的时间,加速了查询。 +- 在聚簇过程中,系统先创建一个按照索引顺序建立的表的临时拷贝。同时也建立表上的每个索引的临时拷贝。因此,需要磁盘上有足够的剩余空间, 至少是表大小和索引大小的和。 +- 因为 CLUSTER 记忆聚集信息,可以在第一次的时候手工对表进行聚簇,然后设置一个类似 VACUUM 的时间,这样就可以周期地自动对表进行聚簇操作。 +- 因为优化器记录着有关表的排序的统计,所以建议在新近聚簇的表上运行 ANALYZE 。否则,优化器可能会选择很差劲的查询规划。 +- CLUSTER不允许在事务中执行。 +- 如果没有打开xc\_maintenance\_mode参数,那么 CLUSTER 操作将跳过所有系统表。 + +## 语法格式 + +- 对一个表进行聚簇排序。 + + ``` + CLUSTER [ VERBOSE ] table_name [ USING index_name ]; + ``` + +- 对一个分区进行聚簇排序。 + + ``` + CLUSTER [ VERBOSE ] table_name PARTITION ( partition_name ) [ USING index_name ]; + ``` + +- 对已做过聚簇的表重新进行聚簇。 + + ``` + CLUSTER [ VERBOSE ]; + ``` + + +## 参数说明 + +- **VERBOSE** + + 启用显示进度信息。 + +- **table\_name** + + 表名称。 + + 取值范围:已存在的表名称。 + +- **index\_name** + + 索引名称。 + + 取值范围:已存在的索引名称。 + +- **partition\_name** + + 分区名称。 + + 取值范围:已存在的分区名称。 + + +## 示例 + +``` +-- 创建一个分区表。 +openGauss=# CREATE TABLE tpcds.inventory_p1 +( + INV_DATE_SK INTEGER NOT NULL , + INV_ITEM_SK INTEGER NOT NULL , + INV_WAREHOUSE_SK INTEGER NOT NULL , + INV_QUANTITY_ON_HAND INTEGER +) +PARTITION BY RANGE(INV_DATE_SK) +( + PARTITION P1 VALUES LESS THAN(2451179), + PARTITION P2 VALUES LESS THAN(2451544), + PARTITION P3 VALUES LESS THAN(2451910), + PARTITION P4 VALUES LESS THAN(2452275), + PARTITION P5 VALUES LESS THAN(2452640), + PARTITION P6 VALUES LESS THAN(2453005), + PARTITION P7 VALUES LESS THAN(MAXVALUE) +); + +-- 创建索引 ds_inventory_p1_index1 。 +openGauss=# CREATE INDEX ds_inventory_p1_index1 ON tpcds.inventory_p1 (INV_ITEM_SK) LOCAL; + +-- 对表tpcds.inventory_p1进行聚集。 +openGauss=# CLUSTER tpcds.inventory_p1 USING ds_inventory_p1_index1; + +-- 对分区 p3 进行聚集。 +openGauss=# CLUSTER tpcds.inventory_p1 PARTITION (p3) USING ds_inventory_p1_index1; + +-- 对数据库中可以进行聚集的表进聚集。 +openGauss=# CLUSTER; + +--删除索引。 +openGauss=# DROP INDEX tpcds.ds_inventory_p1_index1; + +--删除分区表。 +openGauss=# DROP TABLE tpcds.inventory_p1; +``` + +## 优化建议 + + - cluster + - 建议在新近聚簇的表上运行 ANALYZE 。否则,优化器可能会选择很差劲的查询规划。 + - 不允许在事务中执行 CLUSTER 。 + + diff --git a/content/zh/docs/Developerguide/COMMENT.md b/content/zh/docs/Developerguide/COMMENT.md index c546d1e1b..4ccfa4912 100644 --- a/content/zh/docs/Developerguide/COMMENT.md +++ b/content/zh/docs/Developerguide/COMMENT.md @@ -1,154 +1,154 @@ -# COMMENT - -## 功能描述 - -定义或修改一个对象的注释。 - -## 注意事项 - -- 每个对象只存储一条注释,因此要修改一个注释,对同一个对象发出一条新的COMMENT命令即可。要删除注释,在文本字符串的位置写上NULL即可。当删除对象时,注释自动被删除掉。 -- 目前注释浏览没有安全机制:任何连接到某数据库上的用户都可以看到所有该数据库对象的注释。共享对象(比如数据库、角色、表空间)的注释是全局存储的,连接到任何数据库的任何用户都可以看到它们。因此,不要在注释里存放与安全有关的敏感信息。 -- 对大多数对象,只有对象的所有者或者被授予了对象COMMENT权限的用户可以设置注释,系统管理员默认拥有该权限。 -- 角色没有所有者,所以COMMENT ON ROLE命令仅可以由系统管理员对系统管理员角色执行,有CREATEROLE权限的角色也可以为非系统管理员角色设置注释。系统管理员可以对所有对象进行注释。 - -## 语法格式 - -``` -COMMENT ON -{ - AGGREGATE agg_name (agg_type [, ...] ) | - CAST (source_type AS target_type) | - COLLATION object_name | - COLUMN { table_name.column_name | view_name.column_name } | - CONSTRAINT constraint_name ON table_name | - CONVERSION object_name | - DATABASE object_name | - DOMAIN object_name | - EXTENSION object_name | - FOREIGN DATA WRAPPER object_name | - FOREIGN TABLE object_name | - FUNCTION function_name ( [ {[ argmode ] [ argname ] argtype} [, ...] ] ) | - INDEX object_name | - LARGE OBJECT large_object_oid | - OPERATOR operator_name (left_type, right_type) | - OPERATOR CLASS object_name USING index_method | - OPERATOR FAMILY object_name USING index_method | - [ PROCEDURAL ] LANGUAGE object_name | - ROLE object_name | - SCHEMA object_name | - SERVER object_name | - TABLE object_name | - TABLESPACE object_name | - TEXT SEARCH CONFIGURATION object_name | - TEXT SEARCH DICTIONARY object_name | - TEXT SEARCH PARSER object_name | - TEXT SEARCH TEMPLATE object_name | - TYPE object_name | - VIEW object_name | - TRIGGER trigger_name ON table_name -} - IS 'text'; -``` - -## 参数说明 - -- **agg\_name** - - 聚集函数的名称。 - -- **agg\_type** - - 聚集函数参数的类型。 - -- **source\_type** - - 类型转换的源数据类型。 - -- **target\_type** - - 类型转换的目标数据类型。 - -- **object\_name** - - 对象名。 - -- **table\_name.column\_name** - - **view\_name.column\_name** - - 定义/修改注释的列名称。前缀可加表名称或者视图名称。 - -- **constraint\_name** - - 定义/修改注释的表约束的名称。 - -- **table\_name** - - 表的名称。 - -- **function\_name** - - 定义/修改注释的函数名称。 - -- **argmode,argname,argtype** - - 函数参数的模式、名称、类型。 - -- **large\_object\_oid** - - 定义/修改注释的大对象的OID值。 - -- **operator\_name** - - 操作符名称。 - -- **left\_type,right\_type** - - 操作参数的数据类型(可以用模式修饰)。当前置或者后置操作符不存在时,可以增加NONE选项。 - -- **trigger\_name** - - 触发器名称。 - -- **text** - - 注释。 - - -## 示例 - -``` -openGauss=# CREATE TABLE tpcds.customer_demographics_t2 -( - CD_DEMO_SK INTEGER NOT NULL, - CD_GENDER CHAR(1) , - CD_MARITAL_STATUS CHAR(1) , - CD_EDUCATION_STATUS CHAR(20) , - CD_PURCHASE_ESTIMATE INTEGER , - CD_CREDIT_RATING CHAR(10) , - CD_DEP_COUNT INTEGER , - CD_DEP_EMPLOYED_COUNT INTEGER , - CD_DEP_COLLEGE_COUNT INTEGER -) -WITH (ORIENTATION = COLUMN,COMPRESSION=MIDDLE) -; - --- 为tpcds.customer_demographics_t2.cd_demo_sk列加注释。 -openGauss=# COMMENT ON COLUMN tpcds.customer_demographics_t2.cd_demo_sk IS 'Primary key of customer demographics table.'; - ---创建一个由c_customer_sk小于150的内容组成的视图。 -openGauss=# CREATE VIEW tpcds.customer_details_view_v2 AS - SELECT * - FROM tpcds.customer - WHERE c_customer_sk < 150; - --- 为tpcds.customer_details_view_v2视图加注释。 -openGauss=# COMMENT ON VIEW tpcds.customer_details_view_v2 IS 'View of customer detail'; - --- 删除view。 -openGauss=# DROP VIEW tpcds.customer_details_view_v2; - --- 删除tpcds.customer_demographics_t2。 -openGauss=# DROP TABLE tpcds.customer_demographics_t2; -``` - +# COMMENT + +## 功能描述 + +定义或修改一个对象的注释。 + +## 注意事项 + +- 每个对象只存储一条注释,因此要修改一个注释,对同一个对象发出一条新的 COMMENT 命令即可。要删除注释,在文本字符串的位置写上 NULL 即可。当删除对象时,注释自动被删除掉。 +- 目前注释浏览没有安全机制:任何连接到某数据库上的用户都可以看到所有该数据库对象的注释。共享对象(比如数据库、角色、表空间)的注释是全局存储的,连接到任何数据库的任何用户都可以看到它们。因此,不要在注释里存放与安全有关的敏感信息。 +- 对大多数对象,只有对象的所有者或者被授予了对象 COMMENT 权限的用户可以设置注释,系统管理员默认拥有该权限。 +- 角色没有所有者,所以 COMMENT ON ROLE 命令仅可以由系统管理员对系统管理员角色执行,有 CREATEROLE 权限的角色也可以为非系统管理员角色设置注释。系统管理员可以对所有对象进行注释。 + +## 语法格式 + +``` +COMMENT ON +{ + AGGREGATE agg_name (agg_type [, ...] ) | + CAST (source_type AS target_type) | + COLLATION object_name | + COLUMN { table_name.column_name | view_name.column_name } | + CONSTRAINT constraint_name ON table_name | + CONVERSION object_name | + DATABASE object_name | + DOMAIN object_name | + EXTENSION object_name | + FOREIGN DATA WRAPPER object_name | + FOREIGN TABLE object_name | + FUNCTION function_name ( [ {[ argmode ] [ argname ] argtype} [, ...] ] ) | + INDEX object_name | + LARGE OBJECT large_object_oid | + OPERATOR operator_name (left_type, right_type) | + OPERATOR CLASS object_name USING index_method | + OPERATOR FAMILY object_name USING index_method | + [ PROCEDURAL ] LANGUAGE object_name | + ROLE object_name | + SCHEMA object_name | + SERVER object_name | + TABLE object_name | + TABLESPACE object_name | + TEXT SEARCH CONFIGURATION object_name | + TEXT SEARCH DICTIONARY object_name | + TEXT SEARCH PARSER object_name | + TEXT SEARCH TEMPLATE object_name | + TYPE object_name | + VIEW object_name | + TRIGGER trigger_name ON table_name +} + IS 'text'; +``` + +## 参数说明 + +- **agg\_name** + + 聚集函数的名称。 + +- **agg\_type** + + 聚集函数参数的类型。 + +- **source\_type** + + 类型转换的源数据类型。 + +- **target\_type** + + 类型转换的目标数据类型。 + +- **object\_name** + + 对象名。 + +- **table\_name.column\_name** + + **view\_name.column\_name** + + 定义/修改注释的列名称。前缀可加表名称或者视图名称。 + +- **constraint\_name** + + 定义/修改注释的表约束的名称。 + +- **table\_name** + + 表的名称。 + +- **function\_name** + + 定义/修改注释的函数名称。 + +- **argmode, argname ,argtype** + + 函数参数的模式、名称、类型。 + +- **large\_object\_oid** + + 定义/修改注释的大对象的 OID 值。 + +- **operator\_name** + + 操作符名称。 + +- **left\_type,right\_type** + + 操作参数的数据类型(可以用模式修饰)。当前置或者后置操作符不存在时,可以增加 NONE 选项。 + +- **trigger\_name** + + 触发器名称。 + +- **text** + + 注释。 + + +## 示例 + +``` +openGauss=# CREATE TABLE tpcds.customer_demographics_t2 +( + CD_DEMO_SK INTEGER NOT NULL , + CD_GENDER CHAR(1) , + CD_MARITAL_STATUS CHAR(1) , + CD_EDUCATION_STATUS CHAR(20) , + CD_PURCHASE_ESTIMATE INTEGER , + CD_CREDIT_RATING CHAR(10) , + CD_DEP_COUNT INTEGER , + CD_DEP_EMPLOYED_COUNT INTEGER , + CD_DEP_COLLEGE_COUNT INTEGER +) +WITH (ORIENTATION = COLUMN,COMPRESSION=MIDDLE) +; + +-- 为tpcds.customer_demographics_t2.cd_demo_sk列加注释。 +openGauss=# COMMENT ON COLUMN tpcds.customer_demographics_t2.cd_demo_sk IS 'Primary key of customer demographics table.'; + +--创建一个由 c_customer_sk 小于 150 的内容组成的视图。 +openGauss=# CREATE VIEW tpcds.customer_details_view_v2 AS + SELECT * + FROM tpcds.customer + WHERE c_customer_sk < 150; + +-- 为tpcds.customer_details_view_v2视图加注释。 +openGauss=# COMMENT ON VIEW tpcds.customer_details_view_v2 IS 'View of customer detail'; + +-- 删除 view 。 +openGauss=# DROP VIEW tpcds.customer_details_view_v2; + +-- 删除tpcds.customer_demographics_t2。 +openGauss=# DROP TABLE tpcds.customer_demographics_t2; +``` + diff --git a/content/zh/docs/Developerguide/COMMIT-END.md b/content/zh/docs/Developerguide/COMMIT-END.md index e4ed87393..a20d14aad 100644 --- a/content/zh/docs/Developerguide/COMMIT-END.md +++ b/content/zh/docs/Developerguide/COMMIT-END.md @@ -1,67 +1,67 @@ -# COMMIT | END - -## 功能描述 - -通过COMMIT或者END可完成提交事务的功能,即提交事务的所有操作。 - -## 注意事项 - -执行COMMIT这个命令的时候,命令执行者必须是该事务的创建者或系统管理员,且创建和提交操作可以不在同一个会话中。 - -## 语法格式 - -``` -{ COMMIT | END } [ WORK | TRANSACTION ] ; -``` - -## 参数说明 - -- **COMMIT | END** - - 提交当前事务,让所有当前事务的更改为其他事务可见。 - -- **WORK | TRANSACTION** - - 可选关键字,除了增加可读性没有其他任何作用。 - - -## 示例 - -``` ---创建表。 -openGauss=# CREATE TABLE tpcds.customer_demographics_t2 -( - CD_DEMO_SK INTEGER NOT NULL, - CD_GENDER CHAR(1) , - CD_MARITAL_STATUS CHAR(1) , - CD_EDUCATION_STATUS CHAR(20) , - CD_PURCHASE_ESTIMATE INTEGER , - CD_CREDIT_RATING CHAR(10) , - CD_DEP_COUNT INTEGER , - CD_DEP_EMPLOYED_COUNT INTEGER , - CD_DEP_COLLEGE_COUNT INTEGER -) -WITH (ORIENTATION = COLUMN,COMPRESSION=MIDDLE) -; - ---开启事务。 -openGauss=# START TRANSACTION; - ---插入数据。 -openGauss=# INSERT INTO tpcds.customer_demographics_t2 VALUES(1,'M', 'U', 'DOCTOR DEGREE', 1200, 'GOOD', 1, 0, 0); -openGauss=# INSERT INTO tpcds.customer_demographics_t2 VALUES(2,'F', 'U', 'MASTER DEGREE', 300, 'BAD', 1, 0, 0); - ---提交事务,让所有更改永久化。 -openGauss=# COMMIT; - ---查询数据。 -openGauss=# SELECT * FROM tpcds.customer_demographics_t2; - ---删除表tpcds.customer_demographics_t2。 -openGauss=# DROP TABLE tpcds.customer_demographics_t2; -``` - -## 相关链接 - -[ROLLBACK](ROLLBACK.md) - +# COMMIT | END + +## 功能描述 + +通过 COMMIT 或者 END 可完成提交事务的功能,即提交事务的所有操作。 + +## 注意事项 + +执行 COMMIT 这个命令的时候,命令执行者必须是该事务的创建者或系统管理员,且创建和提交操作可以不在同一个会话中。 + +## 语法格式 + +``` +{ COMMIT | END } [ WORK | TRANSACTION ] ; +``` + +## 参数说明 + +- **COMMIT | END** + + 提交当前事务,让所有当前事务的更改为其他事务可见。 + +- **WORK | TRANSACTION** + + 可选关键字,除了增加可读性没有其他任何作用。 + + +## 示例 + +``` +--创建表。 +openGauss=# CREATE TABLE tpcds.customer_demographics_t2 +( + CD_DEMO_SK INTEGER NOT NULL , + CD_GENDER CHAR(1) , + CD_MARITAL_STATUS CHAR(1) , + CD_EDUCATION_STATUS CHAR(20) , + CD_PURCHASE_ESTIMATE INTEGER , + CD_CREDIT_RATING CHAR(10) , + CD_DEP_COUNT INTEGER , + CD_DEP_EMPLOYED_COUNT INTEGER , + CD_DEP_COLLEGE_COUNT INTEGER +) +WITH (ORIENTATION = COLUMN,COMPRESSION=MIDDLE) +; + +--开启事务。 +openGauss=# START TRANSACTION; + +--插入数据。 +openGauss=# INSERT INTO tpcds.customer_demographics_t2 VALUES(1,'M', 'U', 'DOCTOR DEGREE', 1200 , 'GOOD', 1 , 0 , 0); +openGauss=# INSERT INTO tpcds.customer_demographics_t2 VALUES(2,'F', 'U', 'MASTER DEGREE', 300 , 'BAD', 1 , 0 , 0); + +--提交事务,让所有更改永久化。 +openGauss=# COMMIT; + +--查询数据。 +openGauss=# SELECT * FROM tpcds.customer_demographics_t2; + +--删除表tpcds.customer_demographics_t2。 +openGauss=# DROP TABLE tpcds.customer_demographics_t2; +``` + +## 相关链接 + +[ROLLBACK](ROLLBACK.md) + diff --git a/content/zh/docs/Developerguide/COMMIT-PREPARED.md b/content/zh/docs/Developerguide/COMMIT-PREPARED.md index 49ef9b03f..eaf7ec5f4 100644 --- a/content/zh/docs/Developerguide/COMMIT-PREPARED.md +++ b/content/zh/docs/Developerguide/COMMIT-PREPARED.md @@ -1,42 +1,42 @@ -# COMMIT PREPARED - -## 功能描述 - -提交一个早先为两阶段提交准备好的事务。 - -## 注意事项 - -- 该功能仅在维护模式(GUC参数xc\_maintenance\_mode为on时)下可用。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。 -- 命令执行者必须是该事务的创建者或系统管理员,且创建和提交操作可以不在同一个会话中。 -- 事务功能由数据库自动维护,不应显式使用事务功能。 - -## 语法格式 - -``` -COMMIT PREPARED transaction_id ; -COMMIT PREPARED transaction_id WITH CSN; -``` - -## 参数说明 - -- **transaction\_id** - - 待提交事务的标识符。它不能和任何当前预备事务已经使用了的标识符同名。 - - -- **CSN(commit sequence number)** - - 待提交事务的序列号。它是一个64位递增无符号数。 - - -## 示例 - -``` ---提交标识符为的trans_test的事务。 -openGauss=# COMMIT PREPARED 'trans_test'; -``` - -## 相关链接 - -[PREPARE TRANSACTION](PREPARE-TRANSACTION.md),[ROLLBACK PREPARED](ROLLBACK-PREPARED.md)。 - +# COMMIT PREPARED + +## 功能描述 + +提交一个早先为两阶段提交准备好的事务。 + +## 注意事项 + +- 该功能仅在维护模式(GUC参数xc\_maintenance\_mode为 on 时)下可用。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。 +- 命令执行者必须是该事务的创建者或系统管理员,且创建和提交操作可以不在同一个会话中。 +- 事务功能由数据库自动维护,不应显式使用事务功能。 + +## 语法格式 + +``` +COMMIT PREPARED transaction_id ; +COMMIT PREPARED transaction_id WITH CSN; +``` + +## 参数说明 + +- **transaction\_id** + + 待提交事务的标识符。它不能和任何当前预备事务已经使用了的标识符同名。 + + +- **CSN(commit sequence number)** + + 待提交事务的序列号。它是一个 64 位递增无符号数。 + + +## 示例 + +``` +--提交标识符为的 trans_test 的事务。 +openGauss=# COMMIT PREPARED 'trans_test'; +``` + +## 相关链接 + +[PREPARE TRANSACTION](PREPARE-TRANSACTION.md),[ROLLBACK PREPARED](ROLLBACK-PREPARED.md)。 + diff --git a/content/zh/docs/Developerguide/CONFIG_SETTINGS.md b/content/zh/docs/Developerguide/CONFIG_SETTINGS.md index bc649dca6..2d50a59cf 100644 --- a/content/zh/docs/Developerguide/CONFIG_SETTINGS.md +++ b/content/zh/docs/Developerguide/CONFIG_SETTINGS.md @@ -1,130 +1,130 @@ -# CONFIG\_SETTINGS - -CONFIG\_SETTINGS视图显示数据库运行时参数的相关信息。 - -**表 1** CONFIG\_SETTINGS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

name

-

text

-

参数名称。

-

setting

-

text

-

参数当前值。

-

unit

-

text

-

参数的隐式结构。

-

category

-

text

-

参数的逻辑组。

-

short_desc

-

text

-

参数的简单描述。

-

extra_desc

-

text

-

参数的详细描述。

-

context

-

text

-

设置参数值的上下文,包括internal、postmaster、sighup、backend、superuser、user。

-

vartype

-

text

-

参数类型,包括bool、enum、integer、real、string。

-

source

-

text

-

参数的赋值方式。

-

min_val

-

text

-

参数最大值。如果参数类型不是数值型,那么该字段值为null。

-

max_val

-

text

-

参数最小值。如果参数类型不是数值型,那么该字段值为null。

-

enumvals

-

text[]

-

enum类型参数合法值。如果参数类型不是enum型,那么该字段值为null。

-

boot_val

-

text

-

数据库启动时参数默认值。

-

reset_val

-

text

-

数据库重置时参数默认值。

-

sourcefile

-

text

-

设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为null。

-

sourceline

-

integer

-

设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为null。

-
- +# CONFIG\_SETTINGS + +CONFIG\_SETTINGS视图显示数据库运行时参数的相关信息。 + +**表 1** CONFIG\_SETTINGS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

name

+

text

+

参数名称。

+

setting

+

text

+

参数当前值。

+

unit

+

text

+

参数的隐式结构。

+

category

+

text

+

参数的逻辑组。

+

short_desc

+

text

+

参数的简单描述。

+

extra_desc

+

text

+

参数的详细描述。

+

context

+

text

+

设置参数值的上下文,包括internal、postmaster、sighup、backend、superuser、user。

+

vartype

+

text

+

参数类型,包括bool、enum、integer、real、string。

+

source

+

text

+

参数的赋值方式。

+

min_val

+

text

+

参数最大值。如果参数类型不是数值型,那么该字段值为 null 。

+

max_val

+

text

+

参数最小值。如果参数类型不是数值型,那么该字段值为 null 。

+

enumvals

+

text[]

+

enum类型参数合法值。如果参数类型不是 enum 型,那么该字段值为 null 。

+

boot_val

+

text

+

数据库启动时参数默认值。

+

reset_val

+

text

+

数据库重置时参数默认值。

+

sourcefile

+

text

+

设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为 null 。

+

sourceline

+

integer

+

设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为 null 。

+
+ diff --git a/content/zh/docs/Developerguide/COPY.md b/content/zh/docs/Developerguide/COPY.md index 7b3823227..793680f52 100644 --- a/content/zh/docs/Developerguide/COPY.md +++ b/content/zh/docs/Developerguide/COPY.md @@ -1,643 +1,643 @@ -# COPY - -## 功能描述 - -通过COPY命令实现在表和文件之间拷贝数据。 - -COPY FROM从一个文件拷贝数据到一个表,COPY TO把一个表的数据拷贝到一个文件。 - -## 注意事项 - -- 当参数enable\_copy\_server\_files关闭时,只允许初始用户执行COPY FROM FILENAME或COPY TO FILENAME命令,当参数enable\_copy\_server\_files打开,允许具有SYSADMIN权限的用户或继承了内置角色gs\_role\_copy\_files权限的用户执行,但默认禁止对数据库配置文件、密钥文件、证书文件和审计日志执行COPY FROM FILENAME或COPY TO FILENAME,以防止用户越权查看或修改敏感文件。 -- COPY只能用于表,不能用于视图。 -- COPY TO需要读取的表的select权限,copy from需要插入的表的insert权限。 -- 如果声明了一个字段列表,COPY将只在文件和表之间拷贝已声明字段的数据。如果表中有任何不在字段列表里的字段,COPY FROM将为那些字段插入缺省值。 -- 如果声明了数据源文件,服务器必须可以访问该文件;如果指定了STDIN,数据将在客户前端和服务器之间流动,输入时,表的列与列之间使用TAB键分隔,在新的一行中以反斜杠和句点(\\.)表示输入结束。 -- 如果数据文件的任意行包含比预期多或者少的字段,COPY FROM将抛出一个错误。 -- 数据的结束可以用一个只包含反斜杠和句点(\\.)的行表示。如果从文件中读取数据,数据结束的标记是不必要的;如果在客户端应用之间拷贝数据,必须要有结束标记。 -- COPY FROM中\\N为空字符串,如果要输入实际数据值\\N ,使用\\\\N。 - -- COPY FROM不支持在导入过程中对数据做预处理(比如说表达式运算、填充指定默认值等)。如果需要在导入过程中对数据做预处理,用户需先把数据导入到临时表中,然后执行SQL语句通过运算插入到表中,但此方法会导致I/O膨胀,降低导入性能。 -- COPY FROM在遇到数据格式错误时会回滚事务,但没有足够的错误信息,不方便用户从大量的原始数据中定位错误数据。 -- COPY FROM/TO适合低并发,本地小数据量导入导出。 -- 目标表存在trigger,支持COPY操作。 - -## 语法格式 - -- 从一个文件拷贝数据到一个表。 - - ``` - COPY table_name [ ( column_name [, ...] ) ] - FROM { 'filename' | STDIN } - [ [ USING ] DELIMITERS 'delimiters' ] - [ WITHOUT ESCAPING ] - [ LOG ERRORS ] - [ REJECT LIMIT 'limit' ] - [ WITH ( option [, ...] ) ] - | copy_option - | TRANSFORM ( { column_name [ data_type ] [ AS transform_expr ] } [, ...] ) - | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [ ...] ] ]; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >语法中的FIXED FORMATTER \( \{ column\_name\( offset, length \) \} \[, ...\] \)以及 \[ \( option \[, ...\] \) | copy\_option \[ ...\] \] 可以任意排列组合。 - -- 把一个表的数据拷贝到一个文件。 - - ``` - COPY table_name [ ( column_name [, ...] ) ] - TO { 'filename' | STDOUT } - [ [ USING ] DELIMITERS 'delimiters' ] - [ WITHOUT ESCAPING ] - [ WITH ( option [, ...] ) ] - | copy_option - | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [ ...] ] ]; - - COPY query - TO { 'filename' | STDOUT } - [ WITHOUT ESCAPING ] - [ WITH ( option [, ...] ) ] - | copy_option - | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [ ...] ] ]; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >1. COPY TO语法形式约束如下: - > \(query\)与\[USING\] DELIMITER不兼容,即若COPY TO的数据来自于一个query的查询结果,那么COPY TO语法不能再指定\[USING\] DELIMITERS语法子句。 - >2. 对于FIXED FORMATTTER语法后面跟随的copy\_option是以空格进行分隔的。 - >3. copy\_option是指COPY原生的参数形式,而option是兼容外表导入的参数形式。 - >4. 语法中的FIXED FORMATTER \( \{ column\_name\( offset, length \) \} \[, ...\] \)以及 \[ \( option \[, ...\] \) | copy\_option \[ ...\] \] 可以任意排列组合。 - - 其中可选参数option子句语法为: - - ``` - FORMAT 'format_name' - | OIDS [ boolean ] - | DELIMITER 'delimiter_character' - | NULL 'null_string' - | HEADER [ boolean ] - | FILEHEADER 'header_file_string' - | FREEZE [ boolean ] - | QUOTE 'quote_character' - | ESCAPE 'escape_character' - | EOL 'newline_character' - | NOESCAPING [ boolean ] - | FORCE_QUOTE { ( column_name [, ...] ) | * } - | FORCE_NOT_NULL ( column_name [, ...] ) - | ENCODING 'encoding_name' - | IGNORE_EXTRA_DATA [ boolean ] - | FILL_MISSING_FIELDS [ boolean ] - | COMPATIBLE_ILLEGAL_CHARS [ boolean ] - | DATE_FORMAT 'date_format_string' - | TIME_FORMAT 'time_format_string' - | TIMESTAMP_FORMAT 'timestamp_format_string' - | SMALLDATETIME_FORMAT 'smalldatetime_format_string' - ``` - - 其中可选参数copy\_option子句语法为: - - ``` - OIDS - | NULL 'null_string' - | HEADER - | FILEHEADER 'header_file_string' - | FREEZE - | FORCE_NOT_NULL column_name [, ...] - | FORCE_QUOTE { column_name [, ...] | * } - | BINARY - | CSV - | QUOTE [ AS ] 'quote_character' - | ESCAPE [ AS ] 'escape_character' - | EOL 'newline_character' - | ENCODING 'encoding_name' - | IGNORE_EXTRA_DATA - | FILL_MISSING_FIELDS - | COMPATIBLE_ILLEGAL_CHARS - | DATE_FORMAT 'date_format_string' - | TIME_FORMAT 'time_format_string' - | TIMESTAMP_FORMAT 'timestamp_format_string' - | SMALLDATETIME_FORMAT 'smalldatetime_format_string' - ``` - - -## 参数说明 - -- **query** - - 其结果将被拷贝。 - - 取值范围:一个必须用圆括弧包围的SELECT或VALUES命令。 - -- **table\_name** - - 表的名称(可以有模式修饰)。 - - 取值范围:已存在的表名。 - -- **column\_name** - - 可选的待拷贝字段列表。 - - 取值范围:如果没有声明字段列表,将使用所有字段。 - -- **STDIN** - - 声明输入是来自标准输入。 - -- **STDOUT** - - 声明输出打印到标准输出。 - -- **FIXED** - - 打开字段固定长度模式。在字段固定长度模式下,不能声明DELIMITER、NULL、CSV选项。指定FIXED类型后,不能再通过option或copy\_option指定BINARY、CSV、TEXT等类型。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >定长格式定义如下: - >1. 每条记录的每个字段长度相同。 - >2. 长度不足的字段以空格填充,数字类型字段左对齐,字符字段右对齐。 - >3. 字段和字段之间没有分隔符。 - -- **\[USING\] DELIMITER 'delimiters'** - - 在文件中分隔各个字段的字符串,分隔符最大长度不超过10个字节。 - - 取值范围:不允许包含\\.abcdefghijklmnopqrstuvwxyz0123456789中的任何一个字符。 - - 缺省值:在文本模式下,缺省是水平制表符,在CSV模式下是一个逗号。 - -- **WITHOUT ESCAPING** - - 在TEXT格式中,不对'\\'和后面的字符进行转义。 - - 取值范围:仅支持TEXT格式。 - -- **LOG ERRORS** - - 若指定,则开启对于COPY FROM语句中数据类型错误的容错机制。 - - 取值范围:仅支持导入(即COPY FROM)时指定。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >此容错选项的使用限制如下: - > - >- 此容错机制仅捕捉COPY FROM过程中数据库主节点上数据解析过程中相关的数据类型错误(DATA\_EXCEPTION)。 - - >- COPY已有的容错选项(如IGNORE\_EXTRA\_DATA)开启时,对应类型的错误会按照已有的方式处理而不会报出异常,因此错误表也不会有相应数据。 - -- **LOG ERRORS DATA** - - LOG ERRORS DATA和LOG ERRORS的区别: - - 1. LOG ERRORS DATA会填充容错表的rawrecord字段。 - 2. 只有supper权限的用户才能使用LOG ERRORS DATA参数选项。 - - >![](public_sys-resources/icon-caution.gif) **注意:** - >使用**“LOG ERRORS DATA”**时,若错误内容过于复杂可能存在写入容错表失败的风险,导致任务失败。 - - -- **REJECT LIMIT** **'imit'** - - 与LOG ERROR选项共同使用,对COPY FROM的容错机制设置数值上限,一旦此COPY FROM语句错误数据超过选项指定条数,则会按照原有机制报错。 - - 取值范围:正整数(1-INTMAX),'unlimited'(无最大值限制) - - 缺省值:若未指定LOG ERRORS,则会报错;若指定LOG ERRORS,则默认为0。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >如上述LOG ERRORS中描述的容错机制,REJECT LIMIT的计数也是按照执行COPY FROM的数据库主节点上遇到的解析错误数量计算,而不是数据库节点的错误数量。 - -- **FORMATTER** - - 在固定长度模式中,定义每一个字段在数据文件中的位置。按照column\(offset,length\)格式定义每一列在数据文件中的位置。 - - 取值范围: - - - offset取值不能小于0,以字节为单位。 - - length取值不能小于0,以字节为单位。 - - 所有列的总长度和不能大于1GB。 - - 文件中没有出现的列默认以空值代替。 - -- **OPTION \{ option\_name ' value ' \}** - - 用于指定兼容外表的各类参数。 - - - FORMAT - - 数据源文件的格式。 - - 取值范围:CSV、TEXT、FIXED、BINARY。 - - - CSV格式的文件,可以有效处理数据列中的换行符,但对一些特殊字符处理有欠缺。 - - TEXT格式的文件,可以有效处理一些特殊字符,但无法正确处理数据列中的换行符。 - - FIXED格式的文件,适用于每条数据的数据列都比较固定的数据,长度不足的列会添加空格补齐,过长的列则会自动截断。 - - BINARY形式的选项会使得所有的数据被存储/读作二进制格式而不是文本。 这比TEXT和CSV格式的要快一些,但是一个BINARY格式文件可移植性比较差。 - - 缺省值:TEXT - - - DELIMITER - - 指定数据文件行数据的字段分隔符。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 分隔符不能是\\r和\\n。 - > - >- 分隔符不能和null参数相同,CSV格式数据的分隔符不能和quote参数相同。 - > - >- TEXT格式数据的分隔符不能包含:小写字母、数字和特殊字符.\\。 - > - >- 数据文件中单行数据长度需<1GB,如果分隔符较长且数据列较多的情况下,会影响导出有效数据的长度。 - > - >- 分隔符推荐使用多字符和不可见字符。多字符例如'$^&';不可见字符例如0x07、0x08、0x1b等。 - - 取值范围:支持多字符分隔符,但分隔符不能超过10个字节。 - - 缺省值: - - - TEXT格式的默认分隔符是水平制表符(tab)。 - - CSV格式的默认分隔符为“,”。 - - FIXED格式没有分隔符。 - - - NULL - - 用来指定数据文件中空值的表示。 - - 取值范围: - - - null值不能是\\r和\\n,最大为100个字符。 - - null值不能和分隔符、quote参数相同。 - - 缺省值: - - - CSV格式下默认值是一个没有引号的空字符串。 - - 在TEXT格式下默认值是\\N。 - - - HEADER - - 指定导出数据文件是否包含标题行,标题行一般用来描述表中每个字段的信息。header只能用于CSV、FIXED格式的文件中。 - - 在导入数据时,如果header选项为on,则数据文本第一行会被识别为标题行,会忽略此行。如果header为off,而数据文件中第一行会被识别为数据。 - - 在导出数据时,如果header选项为on,则需要指定fileheader。如果header为off,则导出数据文件不包含标题行。 - - 取值范围:true/on、false/off。 - - 缺省值:false - - - QUOTE - - CSV格式文件下的引号字符。 - - 缺省值:双引号 - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- quote参数不能和分隔符、null参数相同。 - - >- quote参数只能是单字节的字符。 - - >- 推荐不可见字符作为quote,例如0x07、0x08、0x1b等。 - -- ESCAPE - - CSV格式下,用来指定逃逸字符,逃逸字符只能指定为单字节字符。 - - 缺省值:双引号。当与quote值相同时,会被替换为'\\0'。 - -- EOL 'newline\_character' - - 指定导入导出数据文件换行符样式。 - - 取值范围:支持多字符换行符,但换行符不能超过10个字节。常见的换行符,如\\r、\\n、\\r\\n(设成0x0D、0x0A、0x0D0A效果是相同的),其他字符或字符串,如$、\#。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- EOL参数只能用于TEXT格式的导入导出,不支持CSV格式和FIXED格式导入。为了兼容原有EOL参数,仍然支持导出CSV格式和FIXED格式时指定EOL参数为0x0D或0x0D0A。 - > - >- EOL参数不能和分隔符、null参数相同。 - > - >- EOL参数不能包含:.abcdefghijklmnopqrstuvwxyz0123456789。 - -- FORCE\_QUOTE \{ \( column\_name \[, ...\] \) | \* \} - - 在CSV COPY TO模式下,强制在每个声明的字段周围对所有非NULL值都使用引号包围。NULL输出不会被引号包围。 - - 取值范围:已存在的字段。 - -- FORCE\_NOT\_NULL \( column\_name \[, ...\] \) - - 在CSV COPY FROM模式下,指定的字段输入不能为空。 - - 取值范围:已存在的字段。 - -- ENCODING - - 指定数据文件的编码格式名称,缺省为当前数据库编码格式。 - -- IGNORE\_EXTRA\_DATA - - 若数据源文件比外表定义列数多,是否会忽略对多出的列。该参数只在数据导入过程中使用。 - - 取值范围:true/on、false/off。 - - - 参数为true/on,若数据源文件比外表定义列数多,则忽略行尾多出来的列。 - - 参数为false/off,若数据源文件比外表定义列数多,会显示如下错误信息。 - - ``` - extra data after last expected column - ``` - - 缺省值:false。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >如果行尾换行符丢失,使两行变成一行时,设置此参数为true将导致后一行数据被忽略掉。 - -- COMPATIBLE\_ILLEGAL\_CHARS - - 导入非法字符容错参数。此语法仅对COPY FROM导入有效。 - - 取值范围:true/on、false/off。 - - - 参数为true/on,则导入时遇到非法字符进行容错处理,非法字符转换后入库,不报错,不中断导入。 - - 参数为false/off,导入时遇到非法字符进行报错,中断导入。 - - 缺省值:false/off - - >![](public_sys-resources/icon-note.gif) **说明:** - >导入非法字符容错规则如下: - >(1)对于'\\0',容错后转换为空格; - >(2)对于其他非法字符,容错后转换为问号; - >(3)若compatible\_illegal\_chars为true/on标识导入时对于非法字符进行容错处理,则若NULL、DELIMITER、QUOTE、ESCAPE设置为空格或问号则会通过如“illegal chars conversion may confuse COPY escape 0x20”等报错信息提示用户修改可能引起混淆的参数以避免导入错误。 - -- FILL\_MISSING\_FIELDS - - 当数据加载时,若数据源文件中一行的最后一个字段缺失的处理方式。 - - 取值范围:true/on、false/off。 - - 缺省值:false/off - -- DATE\_FORMAT - - 导入对于DATE类型指定格式。此参数不支持BINARY格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对COPY FROM导入有效。 - - 取值范围:合法DATE格式。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >对于DATE类型内建为TIMESTAMP类型的数据库,在导入的时候,若需指定格式,可以参考下面的timestamp\_format参数。 - -- TIME\_FORMAT - - 导入对于TIME类型指定格式。此参数不支持BINARY格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对COPY FROM导入有效。 - - 取值范围:合法TIME格式,不支持时区。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 - -- TIMESTAMP\_FORMAT - - 导入对于TIMESTAMP类型指定格式。此参数不支持BINARY格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对COPY FROM导入有效。 - - 取值范围:合法TIMESTAMP格式,不支持时区。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 - -- SMALLDATETIME\_FORMAT - - 导入对于SMALLDATETIME类型指定格式。此参数不支持BINARY格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对COPY FROM导入有效。 - - 取值范围:合法SMALLDATETIME格式。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 - - -- **COPY\_OPTION \{ option\_name ' value ' \}** - - 用于指定COPY原生的各类参数。 - - - NULL null\_string - - 用来指定数据文件中空值的表示。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >在使用COPY FROM的时候,任何匹配这个字符串的字符串将被存储为NULL值,所以应该确保指定的字符串和COPY TO相同。 - - 取值范围: - - - null值不能是\\r和\\n,最大为100个字符。 - - null值不能和分隔符、quote参数相同。 - - 缺省值: - - - 在TEXT格式下默认值是\\N。 - - CSV格式下默认值是一个没有引号的空字符串。 - - - HEADER - - 指定导出数据文件是否包含标题行,标题行一般用来描述表中每个字段的信息。header只能用于CSV、FIXED格式的文件中。 - - 在导入数据时,如果header选项为on,则数据文本第一行会被识别为标题行,会忽略此行。如果header为off,而数据文件中第一行会被识别为数据。 - - 在导出数据时,如果header选项为on,则需要指定fileheader。如果header为off,则导出数据文件不包含标题行。 - - - FILEHEADER - - 导出数据时用于定义标题行的文件,一般用来描述每一列的数据信息。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - > - >- 仅在header为on或true的情况下有效。 - - >- fileheader指定的是绝对路径。 - - >- 该文件只能包含一行标题信息,并以换行符结尾,多余的行将被丢弃(标题信息不能包含换行符)。 - - >- 该文件包括换行符在内长度不超过1M。 - -- FREEZE - - 将COPY加载的数据行设置为已经被frozen,就像这些数据行执行过VACUUM FREEZE。 - - 这是一个初始数据加载的性能选项。仅当以下三个条件同时满足时,数据行会被frozen: - - - 在同一事务中create或truncate这张表之后执行COPY。 - - 当前事务中没有打开的游标。 - - 当前事务中没有原有的快照。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >COPY完成后,所有其他会话将会立刻看到这些数据。但是这违反了MVCC可见性的一般原则,用户应当了解这样会导致潜在的风险。 - -- FORCE NOT NULL column\_name \[, ...\] - - 在CSV COPY FROM模式下,指定的字段不为空。若输入为空,则将视为长度为0的字符串。 - - 取值范围:已存在的字段。 - -- FORCE QUOTE \{ column\_name \[, ...\] | \* \} - - 在CSV COPY TO模式下,强制在每个声明的字段周围对所有非NULL值都使用引号包围。NULL输出不会被引号包围。 - - 取值范围:已存在的字段。 - -- BINARY - - 使用二进制格式存储和读取,而不是以文本的方式。在二进制模式下,不能声明DELIMITER、NULL、CSV选项。指定BINARY类型后,不能再通过option或copy\_option指定CSV、FIXED、TEXT等类型。 - -- CSV - - 打开逗号分隔变量(CSV)模式。指定CSV类型后,不能再通过option或copy\_option指定BINARY、FIXED、TEXT等类型。 - -- QUOTE \[AS\] 'quote\_character' - - CSV格式文件下的引号字符。 - - 缺省值:双引号。 - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- quote参数不能和分隔符、null参数相同。 - - >- quote参数只能是单字节的字符。 - - >- 推荐不可见字符作为quote,例如0x07、0x08、0x1b等。 - - - ESCAPE \[AS\] 'escape\_character' - - CSV格式下,用来指定逃逸字符,逃逸字符只能指定为单字节字符。 - - 默认值为双引号。当与quote值相同时,会被替换为'\\0'。 - - - EOL 'newline\_character' - - 指定导入导出数据文件换行符样式。 - - 取值范围:支持多字符换行符,但换行符不能超过10个字节。常见的换行符,如\\r、\\n、\\r\\n(设成0x0D、0x0A、0x0D0A效果是相同的),其他字符或字符串,如$、\#。 - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- EOL参数只能用于TEXT格式的导入导出,不支持CSV格式和FIXED格式。为了兼容原有EOL参数,仍然支持导出CSV格式和FIXED格式时指定EOL参数为0x0D或0x0D0A。 - - >- EOL参数不能和分隔符、null参数相同。 - - >- EOL参数不能包含:.abcdefghijklmnopqrstuvwxyz0123456789。 - -- ENCODING 'encoding\_name' - - 指定文件编码格式名称。 - - 取值范围:有效的编码格式。 - - 缺省值:当前编码格式。 - -- IGNORE\_EXTRA\_DATA - - 指定当数据源文件比外表定义列数多时,忽略行尾多出来的列。该参数只在数据导入过程中使用。 - - 若不使用该参数,在数据源文件比外表定义列数多,会显示如下错误信息。 - - ``` - extra data after last expected column - ``` - -- COMPATIBLE\_ILLEGAL\_CHARS - - 指定导入时对非法字符进行容错处理,非法字符转换后入库。不报错,不中断导入。此参数不支持BINARY格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对COPY FROM导入有效。 - - 若不使用该参数,导入时遇到非法字符进行报错,中断导入。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >导入非法字符容错规则如下: - >(1)对于'\\0',容错后转换为空格; - >(2)对于其他非法字符,容错后转换为问号; - >(3)若compatible\_illegal\_chars为true/on标识,导入时对于非法字符进行容错处理,则若NULL、DELIMITER、QUOTE、ESCAPE设置为空格或问号则会通过如“illegal chars conversion may confuse COPY escape 0x20”等报错信息提示用户修改可能引起混淆的参数以避免导入错误。 - -- FILL\_MISSING\_FIELDS - - 当数据加载时,若数据源文件中一行的最后一个字段缺失的处理方式。 - - 取值范围:true/on、false/off。 - - 缺省值:false/off。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >目前COPY指定此Option实际不会生效,即不会有相应的容错处理效果(不生效)。需要额外注意的是,打开此选项会导致解析器在数据库主节点数据解析阶段(即COPY错误表容错的涵盖范围)忽略此数据问题,而到数据库节点重新报错,从而使得COPY错误表(打开LOG ERRORS REJECT LIMIT)在此选项打开的情况下无法成功捕获这类少列的数据异常。因此请不要指定此选项。 - -- DATE\_FORMAT 'date\_format\_string' - - 导入对于DATE类型指定格式。此参数不支持BINARY格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对COPY FROM导入有效。 - - 取值范围:合法DATE格式。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md) - - >![](public_sys-resources/icon-note.gif) **说明:** - >对于DATE类型内建为TIMESTAMP类型的数据库,在导入的时候,若需指定格式,可以参考下面的timestamp\_format参数。 - -- TIME\_FORMAT 'time\_format\_string' - - 导入对于TIME类型指定格式。此参数不支持BINARY格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对COPY FROM导入有效。 - - 取值范围:合法TIME格式,不支持时区。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 - -- TIMESTAMP\_FORMAT 'timestamp\_format\_string' - - 导入对于TIMESTAMP类型指定格式。此参数不支持BINARY格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对COPY FROM导入有效。 - - 取值范围:合法TIMESTAMP格式,不支持时区。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 - -- SMALLDATETIME\_FORMAT 'smalldatetime\_format\_string' - - 导入对于SMALLDATETIME类型指定格式。此参数不支持BINARY格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对COPY FROM导入有效。 - - 取值范围:合法SMALLDATETIME格式。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 - -- TRANSFORM \( \{ column\_name \[ data\_type \] \[ AS transform\_expr \] \} \[, ...\] \) - - 指定表中各个列的转换表达式;其中data\_type指定该列在表达式参数中的数据类型;transform\_expr为目标表达式,返回与表中目标列数据类型一致的结果值,表达式可参考[表达式](表达式.md)。 - - COPY FROM能够识别的特殊反斜杠序列如下所示。 - - - **\\b**:反斜杠 (ASCII 8) - - **\\f**:换页(ASCII 12) - - **\\n**:换行符 (ASCII 10) - - **\\r**:回车符 (ASCII 13) - - **\\t**:水平制表符 (ASCII 9) - - **\\v**:垂直制表符 (ASCII 11) - - **\\digits**:反斜杠后面跟着一到三个八进制数,表示ASCII值为该数的字符。 - - **\\xdigits**:反斜杠x后面跟着一个或两个十六进制位声明指定数值编码的字符。 - - -## 示例 - -``` ---将tpcds.ship_mode中的数据拷贝到/home/omm/ds_ship_mode.dat文件中。 -openGauss=# COPY tpcds.ship_mode TO '/home/omm/ds_ship_mode.dat'; - ---将tpcds.ship_mode 输出到stdout。 -openGauss=# COPY tpcds.ship_mode TO stdout; - ---创建tpcds.ship_mode_t1表。 -openGauss=# CREATE TABLE tpcds.ship_mode_t1 -( - SM_SHIP_MODE_SK INTEGER NOT NULL, - SM_SHIP_MODE_ID CHAR(16) NOT NULL, - SM_TYPE CHAR(30) , - SM_CODE CHAR(10) , - SM_CARRIER CHAR(20) , - SM_CONTRACT CHAR(20) -) -WITH (ORIENTATION = COLUMN,COMPRESSION=MIDDLE) -; - ---从stdin拷贝数据到表tpcds.ship_mode_t1。 -openGauss=# COPY tpcds.ship_mode_t1 FROM stdin; - ---从/home/omm/ds_ship_mode.dat文件拷贝数据到表tpcds.ship_mode_t1。 -openGauss=# COPY tpcds.ship_mode_t1 FROM '/home/omm/ds_ship_mode.dat'; - ---从/home/omm/ds_ship_mode.dat文件拷贝数据到表tpcds.ship_mode_t1,应用TRANSFORM表达式转换,取SM_TYPE列左边10个字符插入到表中。 -openGauss=# COPY tpcds.ship_mode_t1 FROM '/home/omm/ds_ship_mode.dat' TRANSFORM (SM_TYPE AS LEFT(SM_TYPE, 10)); - ---从/home/omm/ds_ship_mode.dat文件拷贝数据到表tpcds.ship_mode_t1,使用参数如下:导入格式为TEXT(format 'text'),分隔符为'\t'(delimiter E'\t'),忽略多余列(ignore_extra_data 'true'),不指定转义(noescaping 'true')。 -openGauss=# COPY tpcds.ship_mode_t1 FROM '/home/omm/ds_ship_mode.dat' WITH(format 'text', delimiter E'\t', ignore_extra_data 'true', noescaping 'true'); - ---从/home/omm/ds_ship_mode.dat文件拷贝数据到表tpcds.ship_mode_t1,使用参数如下:导入格式为FIXED(FIXED),指定定长格式(FORMATTER(SM_SHIP_MODE_SK(0, 2), SM_SHIP_MODE_ID(2,16), SM_TYPE(18,30), SM_CODE(50,10), SM_CARRIER(61,20), SM_CONTRACT(82,20))),忽略多余列(ignore_extra_data),有数据头(header)。 -openGauss=# COPY tpcds.ship_mode_t1 FROM '/home/omm/ds_ship_mode.dat' FIXED FORMATTER(SM_SHIP_MODE_SK(0, 2), SM_SHIP_MODE_ID(2,16), SM_TYPE(18,30), SM_CODE(50,10), SM_CARRIER(61,20), SM_CONTRACT(82,20)) header ignore_extra_data; - ---删除tpcds.ship_mode_t1。 -openGauss=# DROP TABLE tpcds.ship_mode_t1; -``` - +# COPY + +## 功能描述 + +通过 COPY 命令实现在表和文件之间拷贝数据。 + +COPY FROM 从一个文件拷贝数据到一个表, COPY TO 把一个表的数据拷贝到一个文件。 + +## 注意事项 + +- 当参数enable\_copy\_server\_files关闭时,只允许初始用户执行 COPY FROM FILENAME 或 COPY TO FILENAME 命令,当参数enable\_copy\_server\_files打开,允许具有 SYSADMIN 权限的用户或继承了内置角色gs\_role\_copy\_files权限的用户执行,但默认禁止对数据库配置文件、密钥文件、证书文件和审计日志执行 COPY FROM FILENAME 或 COPY TO FILENAME ,以防止用户越权查看或修改敏感文件。 +- COPY只能用于表,不能用于视图。 +- COPY TO需要读取的表的 select 权限, copy from 需要插入的表的 insert 权限。 +- 如果声明了一个字段列表, COPY 将只在文件和表之间拷贝已声明字段的数据。如果表中有任何不在字段列表里的字段, COPY FROM 将为那些字段插入缺省值。 +- 如果声明了数据源文件,服务器必须可以访问该文件;如果指定了 STDIN ,数据将在客户前端和服务器之间流动,输入时,表的列与列之间使用 TAB 键分隔,在新的一行中以反斜杠和句点(\\.)表示输入结束。 +- 如果数据文件的任意行包含比预期多或者少的字段, COPY FROM 将抛出一个错误。 +- 数据的结束可以用一个只包含反斜杠和句点(\\.)的行表示。如果从文件中读取数据,数据结束的标记是不必要的;如果在客户端应用之间拷贝数据,必须要有结束标记。 +- COPY FROM中\\N为空字符串,如果要输入实际数据值\\N ,使用\\\\N。 + +- COPY FROM不支持在导入过程中对数据做预处理(比如说表达式运算、填充指定默认值等)。如果需要在导入过程中对数据做预处理,用户需先把数据导入到临时表中,然后执行 SQL 语句通过运算插入到表中,但此方法会导致I/O膨胀,降低导入性能。 +- COPY FROM在遇到数据格式错误时会回滚事务,但没有足够的错误信息,不方便用户从大量的原始数据中定位错误数据。 +- COPY FROM/TO适合低并发,本地小数据量导入导出。 +- 目标表存在 trigger ,支持 COPY 操作。 + +## 语法格式 + +- 从一个文件拷贝数据到一个表。 + + ``` + COPY table_name [ ( column_name [, ...] ) ] + FROM { 'filename' | STDIN } + [ [ USING ] DELIMITERS 'delimiters' ] + [ WITHOUT ESCAPING ] + [ LOG ERRORS ] + [ REJECT LIMIT 'limit' ] + [ WITH ( option [, ...] ) ] + | copy_option + | TRANSFORM ( { column_name [ data_type ] [ AS transform_expr ] } [, ...] ) + | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [ ...] ] ]; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >语法中的FIXED FORMATTER \( \{ column\_name\( offset, length \) \} \[, ...\] \)以及 \[ \( option \[, ...\] \) | copy\_option \[ ...\] \] 可以任意排列组合。 + +- 把一个表的数据拷贝到一个文件。 + + ``` + COPY table_name [ ( column_name [, ...] ) ] + TO { 'filename' | STDOUT } + [ [ USING ] DELIMITERS 'delimiters' ] + [ WITHOUT ESCAPING ] + [ WITH ( option [, ...] ) ] + | copy_option + | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [ ...] ] ]; + + COPY query + TO { 'filename' | STDOUT } + [ WITHOUT ESCAPING ] + [ WITH ( option [, ...] ) ] + | copy_option + | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [ ...] ] ]; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >1. COPY TO语法形式约束如下: + > \(query\)与\[USING\] DELIMITER不兼容,即若 COPY TO 的数据来自于一个 query 的查询结果,那么 COPY TO 语法不能再指定\[USING\] DELIMITERS语法子句。 + >2. 对于 FIXED FORMATTTER 语法后面跟随的copy\_option是以空格进行分隔的。 + >3. copy\_option是指 COPY 原生的参数形式,而 option 是兼容外表导入的参数形式。 + >4. 语法中的FIXED FORMATTER \( \{ column\_name\( offset, length \) \} \[, ...\] \)以及 \[ \( option \[, ...\] \) | copy\_option \[ ...\] \] 可以任意排列组合。 + + 其中可选参数 option 子句语法为: + + ``` + FORMAT 'format_name' + | OIDS [ boolean ] + | DELIMITER 'delimiter_character' + | NULL 'null_string' + | HEADER [ boolean ] + | FILEHEADER 'header_file_string' + | FREEZE [ boolean ] + | QUOTE 'quote_character' + | ESCAPE 'escape_character' + | EOL 'newline_character' + | NOESCAPING [ boolean ] + | FORCE_QUOTE { ( column_name [, ...] ) | * } + | FORCE_NOT_NULL ( column_name [, ...] ) + | ENCODING 'encoding_name' + | IGNORE_EXTRA_DATA [ boolean ] + | FILL_MISSING_FIELDS [ boolean ] + | COMPATIBLE_ILLEGAL_CHARS [ boolean ] + | DATE_FORMAT 'date_format_string' + | TIME_FORMAT 'time_format_string' + | TIMESTAMP_FORMAT 'timestamp_format_string' + | SMALLDATETIME_FORMAT 'smalldatetime_format_string' + ``` + + 其中可选参数copy\_option子句语法为: + + ``` + OIDS + | NULL 'null_string' + | HEADER + | FILEHEADER 'header_file_string' + | FREEZE + | FORCE_NOT_NULL column_name [, ...] + | FORCE_QUOTE { column_name [, ...] | * } + | BINARY + | CSV + | QUOTE [ AS ] 'quote_character' + | ESCAPE [ AS ] 'escape_character' + | EOL 'newline_character' + | ENCODING 'encoding_name' + | IGNORE_EXTRA_DATA + | FILL_MISSING_FIELDS + | COMPATIBLE_ILLEGAL_CHARS + | DATE_FORMAT 'date_format_string' + | TIME_FORMAT 'time_format_string' + | TIMESTAMP_FORMAT 'timestamp_format_string' + | SMALLDATETIME_FORMAT 'smalldatetime_format_string' + ``` + + +## 参数说明 + +- **query** + + 其结果将被拷贝。 + + 取值范围:一个必须用圆括弧包围的 SELECT 或 VALUES 命令。 + +- **table\_name** + + 表的名称(可以有模式修饰)。 + + 取值范围:已存在的表名。 + +- **column\_name** + + 可选的待拷贝字段列表。 + + 取值范围:如果没有声明字段列表,将使用所有字段。 + +- **STDIN** + + 声明输入是来自标准输入。 + +- **STDOUT** + + 声明输出打印到标准输出。 + +- **FIXED** + + 打开字段固定长度模式。在字段固定长度模式下,不能声明DELIMITER、NULL、CSV选项。指定 FIXED 类型后,不能再通过 option 或copy\_option指定BINARY、CSV、TEXT等类型。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >定长格式定义如下: + >1. 每条记录的每个字段长度相同。 + >2. 长度不足的字段以空格填充,数字类型字段左对齐,字符字段右对齐。 + >3. 字段和字段之间没有分隔符。 + +- **\[USING\] DELIMITER 'delimiters'** + + 在文件中分隔各个字段的字符串,分隔符最大长度不超过 10 个字节。 + + 取值范围:不允许包含\\.abcdefghijklmnopqrstuvwxyz0123456789中的任何一个字符。 + + 缺省值:在文本模式下,缺省是水平制表符,在 CSV 模式下是一个逗号。 + +- **WITHOUT ESCAPING** + + 在 TEXT 格式中,不对'\\'和后面的字符进行转义。 + + 取值范围:仅支持 TEXT 格式。 + +- **LOG ERRORS** + + 若指定,则开启对于 COPY FROM 语句中数据类型错误的容错机制。 + + 取值范围:仅支持导入(即COPY FROM)时指定。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >此容错选项的使用限制如下: + > + >- 此容错机制仅捕捉 COPY FROM 过程中数据库主节点上数据解析过程中相关的数据类型错误(DATA\_EXCEPTION)。 + + >- COPY已有的容错选项(如IGNORE\_EXTRA\_DATA)开启时,对应类型的错误会按照已有的方式处理而不会报出异常,因此错误表也不会有相应数据。 + +- **LOG ERRORS DATA** + +LOG ERRORS DATA 和 LOG ERRORS 的区别: + + 1. LOG ERRORS DATA会填充容错表的 rawrecord 字段。 + 2. 只有 supper 权限的用户才能使用 LOG ERRORS DATA 参数选项。 + + >![](public_sys-resources/icon-caution.gif) **注意:** + >使用**“LOG ERRORS DATA”**时,若错误内容过于复杂可能存在写入容错表失败的风险,导致任务失败。 + + +- **REJECT LIMIT** **'imit'** + + 与 LOG ERROR 选项共同使用,对 COPY FROM 的容错机制设置数值上限,一旦此 COPY FROM 语句错误数据超过选项指定条数,则会按照原有机制报错。 + + 取值范围:正整数(1-INTMAX),'unlimited'(无最大值限制) + + 缺省值:若未指定 LOG ERRORS ,则会报错;若指定 LOG ERRORS ,则默认为 0 。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >如上述 LOG ERRORS 中描述的容错机制, REJECT LIMIT 的计数也是按照执行 COPY FROM 的数据库主节点上遇到的解析错误数量计算,而不是数据库节点的错误数量。 + +- **FORMATTER** + + 在固定长度模式中,定义每一个字段在数据文件中的位置。按照column\(offset,length\)格式定义每一列在数据文件中的位置。 + + 取值范围: + + - offset取值不能小于 0 ,以字节为单位。 + - length取值不能小于 0 ,以字节为单位。 + + 所有列的总长度和不能大于 1GB 。 + + 文件中没有出现的列默认以空值代替。 + +- **OPTION \{ option\_name ' value ' \}** + + 用于指定兼容外表的各类参数。 + + - FORMAT + + 数据源文件的格式。 + + 取值范围:CSV、TEXT、FIXED、BINARY。 + + - CSV格式的文件,可以有效处理数据列中的换行符,但对一些特殊字符处理有欠缺。 + - TEXT格式的文件,可以有效处理一些特殊字符,但无法正确处理数据列中的换行符。 + - FIXED格式的文件,适用于每条数据的数据列都比较固定的数据,长度不足的列会添加空格补齐,过长的列则会自动截断。 + - BINARY形式的选项会使得所有的数据被存储/读作二进制格式而不是文本。 这比 TEXT 和 CSV 格式的要快一些,但是一个 BINARY 格式文件可移植性比较差。 + + 缺省值:TEXT + + - DELIMITER + + 指定数据文件行数据的字段分隔符。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 分隔符不能是\\r和\\n。 + > + >- 分隔符不能和 null 参数相同, CSV 格式数据的分隔符不能和 quote 参数相同。 + > + >- TEXT格式数据的分隔符不能包含:小写字母、数字和特殊字符.\\。 + > + >- 数据文件中单行数据长度需<1GB,如果分隔符较长且数据列较多的情况下,会影响导出有效数据的长度。 + > + >- 分隔符推荐使用多字符和不可见字符。多字符例如'$^&';不可见字符例如0x07、0x08、0x1b等。 + + 取值范围:支持多字符分隔符,但分隔符不能超过 10 个字节。 + + 缺省值: + + - TEXT格式的默认分隔符是水平制表符(tab)。 + - CSV格式的默认分隔符为“,”。 + - FIXED格式没有分隔符。 + + - NULL + + 用来指定数据文件中空值的表示。 + + 取值范围: + + - null值不能是\\r和\\n,最大为 100 个字符。 + - null值不能和分隔符、quote参数相同。 + + 缺省值: + + - CSV格式下默认值是一个没有引号的空字符串。 + - 在 TEXT 格式下默认值是\\N。 + + - HEADER + + 指定导出数据文件是否包含标题行,标题行一般用来描述表中每个字段的信息。 header 只能用于CSV、FIXED格式的文件中。 + + 在导入数据时,如果 header 选项为 on ,则数据文本第一行会被识别为标题行,会忽略此行。如果 header 为 off ,而数据文件中第一行会被识别为数据。 + + 在导出数据时,如果 header 选项为 on ,则需要指定 fileheader 。如果 header 为 off ,则导出数据文件不包含标题行。 + + 取值范围:true/on、false/off。 + + 缺省值:false + + - QUOTE + +CSV 格式文件下的引号字符。 + + 缺省值:双引号 + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- quote参数不能和分隔符、null参数相同。 + + >- quote参数只能是单字节的字符。 + + >- 推荐不可见字符作为 quote ,例如0x07、0x08、0x1b等。 + +- ESCAPE + +CSV 格式下,用来指定逃逸字符,逃逸字符只能指定为单字节字符。 + + 缺省值:双引号。当与 quote 值相同时,会被替换为'\\0'。 + +- EOL 'newline\_character' + + 指定导入导出数据文件换行符样式。 + + 取值范围:支持多字符换行符,但换行符不能超过 10 个字节。常见的换行符,如\\r、\\n、\\r\\n(设成0x0D、0x0A、0x0D0A效果是相同的),其他字符或字符串,如$、\#。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- EOL参数只能用于 TEXT 格式的导入导出,不支持 CSV 格式和 FIXED 格式导入。为了兼容原有 EOL 参数,仍然支持导出 CSV 格式和 FIXED 格式时指定 EOL 参数为 0x0D 或 0x0D0A 。 + > + >- EOL参数不能和分隔符、null参数相同。 + > + >- EOL参数不能包含:.abcdefghijklmnopqrstuvwxyz0123456789。 + +- FORCE\_QUOTE \{ \( column\_name \[, ...\] \) | \* \} + + 在 CSV COPY TO 模式下,强制在每个声明的字段周围对所有非 NULL 值都使用引号包围。 NULL 输出不会被引号包围。 + + 取值范围:已存在的字段。 + +- FORCE\_NOT\_NULL \( column\_name \[, ...\] \) + + 在 CSV COPY FROM 模式下,指定的字段输入不能为空。 + + 取值范围:已存在的字段。 + +- ENCODING + + 指定数据文件的编码格式名称,缺省为当前数据库编码格式。 + +- IGNORE\_EXTRA\_DATA + + 若数据源文件比外表定义列数多,是否会忽略对多出的列。该参数只在数据导入过程中使用。 + + 取值范围:true/on、false/off。 + + - 参数为true/on,若数据源文件比外表定义列数多,则忽略行尾多出来的列。 + - 参数为false/off,若数据源文件比外表定义列数多,会显示如下错误信息。 + + ``` + extra data after last expected column + ``` + + 缺省值:false。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >如果行尾换行符丢失,使两行变成一行时,设置此参数为 true 将导致后一行数据被忽略掉。 + +- COMPATIBLE\_ILLEGAL\_CHARS + + 导入非法字符容错参数。此语法仅对 COPY FROM 导入有效。 + + 取值范围:true/on、false/off。 + + - 参数为true/on,则导入时遇到非法字符进行容错处理,非法字符转换后入库,不报错,不中断导入。 + - 参数为false/off,导入时遇到非法字符进行报错,中断导入。 + + 缺省值:false/off + + >![](public_sys-resources/icon-note.gif) **说明:** + >导入非法字符容错规则如下: + >(1)对于'\\0',容错后转换为空格; + >(2)对于其他非法字符,容错后转换为问号; + >(3)若compatible\_illegal\_chars为true/on标识导入时对于非法字符进行容错处理,则若NULL、DELIMITER、QUOTE、ESCAPE设置为空格或问号则会通过如“illegal chars conversion may confuse COPY escape 0x20”等报错信息提示用户修改可能引起混淆的参数以避免导入错误。 + +- FILL\_MISSING\_FIELDS + + 当数据加载时,若数据源文件中一行的最后一个字段缺失的处理方式。 + + 取值范围:true/on、false/off。 + + 缺省值:false/off + +- DATE\_FORMAT + + 导入对于 DATE 类型指定格式。此参数不支持 BINARY 格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对 COPY FROM 导入有效。 + + 取值范围:合法 DATE 格式。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >对于 DATE 类型内建为 TIMESTAMP 类型的数据库,在导入的时候,若需指定格式,可以参考下面的timestamp\_format参数。 + +- TIME\_FORMAT + + 导入对于 TIME 类型指定格式。此参数不支持 BINARY 格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对 COPY FROM 导入有效。 + + 取值范围:合法 TIME 格式,不支持时区。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 + +- TIMESTAMP\_FORMAT + + 导入对于 TIMESTAMP 类型指定格式。此参数不支持 BINARY 格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对 COPY FROM 导入有效。 + + 取值范围:合法 TIMESTAMP 格式,不支持时区。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 + +- SMALLDATETIME\_FORMAT + + 导入对于 SMALLDATETIME 类型指定格式。此参数不支持 BINARY 格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对 COPY FROM 导入有效。 + + 取值范围:合法 SMALLDATETIME 格式。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 + + +- **COPY\_OPTION \{ option\_name ' value ' \}** + + 用于指定 COPY 原生的各类参数。 + + - NULL null\_string + + 用来指定数据文件中空值的表示。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >在使用 COPY FROM 的时候,任何匹配这个字符串的字符串将被存储为 NULL 值,所以应该确保指定的字符串和 COPY TO 相同。 + + 取值范围: + + - null值不能是\\r和\\n,最大为 100 个字符。 + - null值不能和分隔符、quote参数相同。 + + 缺省值: + + - 在 TEXT 格式下默认值是\\N。 + - CSV格式下默认值是一个没有引号的空字符串。 + + - HEADER + + 指定导出数据文件是否包含标题行,标题行一般用来描述表中每个字段的信息。 header 只能用于CSV、FIXED格式的文件中。 + + 在导入数据时,如果 header 选项为 on ,则数据文本第一行会被识别为标题行,会忽略此行。如果 header 为 off ,而数据文件中第一行会被识别为数据。 + + 在导出数据时,如果 header 选项为 on ,则需要指定 fileheader 。如果 header 为 off ,则导出数据文件不包含标题行。 + + - FILEHEADER + + 导出数据时用于定义标题行的文件,一般用来描述每一列的数据信息。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + > + >- 仅在 header 为 on 或 true 的情况下有效。 + + >- fileheader指定的是绝对路径。 + + >- 该文件只能包含一行标题信息,并以换行符结尾,多余的行将被丢弃(标题信息不能包含换行符)。 + + >- 该文件包括换行符在内长度不超过 1M 。 + +- FREEZE + + 将 COPY 加载的数据行设置为已经被 frozen ,就像这些数据行执行过 VACUUM FREEZE 。 + + 这是一个初始数据加载的性能选项。仅当以下三个条件同时满足时,数据行会被frozen: + + - 在同一事务中 create 或 truncate 这张表之后执行 COPY 。 + - 当前事务中没有打开的游标。 + - 当前事务中没有原有的快照。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >COPY完成后,所有其他会话将会立刻看到这些数据。但是这违反了 MVCC 可见性的一般原则,用户应当了解这样会导致潜在的风险。 + +- FORCE NOT NULL column\_name \[, ...\] + + 在 CSV COPY FROM 模式下,指定的字段不为空。若输入为空,则将视为长度为 0 的字符串。 + + 取值范围:已存在的字段。 + +- FORCE QUOTE \{ column\_name \[, ...\] | \* \} + + 在 CSV COPY TO 模式下,强制在每个声明的字段周围对所有非 NULL 值都使用引号包围。 NULL 输出不会被引号包围。 + + 取值范围:已存在的字段。 + +- BINARY + + 使用二进制格式存储和读取,而不是以文本的方式。在二进制模式下,不能声明DELIMITER、NULL、CSV选项。指定 BINARY 类型后,不能再通过 option 或copy\_option指定CSV、FIXED、TEXT等类型。 + +- CSV + + 打开逗号分隔变量(CSV)模式。指定 CSV 类型后,不能再通过 option 或copy\_option指定BINARY、FIXED、TEXT等类型。 + +- QUOTE \[AS\] 'quote\_character' + +CSV 格式文件下的引号字符。 + + 缺省值:双引号。 + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- quote参数不能和分隔符、null参数相同。 + + >- quote参数只能是单字节的字符。 + + >- 推荐不可见字符作为 quote ,例如0x07、0x08、0x1b等。 + + - ESCAPE \[AS\] 'escape\_character' + +CSV 格式下,用来指定逃逸字符,逃逸字符只能指定为单字节字符。 + + 默认值为双引号。当与 quote 值相同时,会被替换为'\\0'。 + + - EOL 'newline\_character' + + 指定导入导出数据文件换行符样式。 + + 取值范围:支持多字符换行符,但换行符不能超过 10 个字节。常见的换行符,如\\r、\\n、\\r\\n(设成0x0D、0x0A、0x0D0A效果是相同的),其他字符或字符串,如$、\#。 + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- EOL参数只能用于 TEXT 格式的导入导出,不支持 CSV 格式和 FIXED 格式。为了兼容原有 EOL 参数,仍然支持导出 CSV 格式和 FIXED 格式时指定 EOL 参数为 0x0D 或 0x0D0A 。 + + >- EOL参数不能和分隔符、null参数相同。 + + >- EOL参数不能包含:.abcdefghijklmnopqrstuvwxyz0123456789。 + +- ENCODING 'encoding\_name' + + 指定文件编码格式名称。 + + 取值范围:有效的编码格式。 + + 缺省值:当前编码格式。 + +- IGNORE\_EXTRA\_DATA + + 指定当数据源文件比外表定义列数多时,忽略行尾多出来的列。该参数只在数据导入过程中使用。 + + 若不使用该参数,在数据源文件比外表定义列数多,会显示如下错误信息。 + + ``` + extra data after last expected column + ``` + +- COMPATIBLE\_ILLEGAL\_CHARS + + 指定导入时对非法字符进行容错处理,非法字符转换后入库。不报错,不中断导入。此参数不支持 BINARY 格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对 COPY FROM 导入有效。 + + 若不使用该参数,导入时遇到非法字符进行报错,中断导入。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >导入非法字符容错规则如下: + >(1)对于'\\0',容错后转换为空格; + >(2)对于其他非法字符,容错后转换为问号; + >(3)若compatible\_illegal\_chars为true/on标识,导入时对于非法字符进行容错处理,则若NULL、DELIMITER、QUOTE、ESCAPE设置为空格或问号则会通过如“illegal chars conversion may confuse COPY escape 0x20”等报错信息提示用户修改可能引起混淆的参数以避免导入错误。 + +- FILL\_MISSING\_FIELDS + + 当数据加载时,若数据源文件中一行的最后一个字段缺失的处理方式。 + + 取值范围:true/on、false/off。 + + 缺省值:false/off。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >目前 COPY 指定此 Option 实际不会生效,即不会有相应的容错处理效果(不生效)。需要额外注意的是,打开此选项会导致解析器在数据库主节点数据解析阶段(即 COPY 错误表容错的涵盖范围)忽略此数据问题,而到数据库节点重新报错,从而使得 COPY 错误表(打开LOG ERRORS REJECT LIMIT)在此选项打开的情况下无法成功捕获这类少列的数据异常。因此请不要指定此选项。 + +- DATE\_FORMAT 'date\_format\_string' + + 导入对于 DATE 类型指定格式。此参数不支持 BINARY 格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对 COPY FROM 导入有效。 + + 取值范围:合法 DATE 格式。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md) + + >![](public_sys-resources/icon-note.gif) **说明:** + >对于 DATE 类型内建为 TIMESTAMP 类型的数据库,在导入的时候,若需指定格式,可以参考下面的timestamp\_format参数。 + +- TIME\_FORMAT 'time\_format\_string' + + 导入对于 TIME 类型指定格式。此参数不支持 BINARY 格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对 COPY FROM 导入有效。 + + 取值范围:合法 TIME 格式,不支持时区。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 + +- TIMESTAMP\_FORMAT 'timestamp\_format\_string' + + 导入对于 TIMESTAMP 类型指定格式。此参数不支持 BINARY 格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对 COPY FROM 导入有效。 + + 取值范围:合法 TIMESTAMP 格式,不支持时区。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 + +- SMALLDATETIME\_FORMAT 'smalldatetime\_format\_string' + + 导入对于 SMALLDATETIME 类型指定格式。此参数不支持 BINARY 格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对 COPY FROM 导入有效。 + + 取值范围:合法 SMALLDATETIME 格式。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 + +- TRANSFORM \( \{ column\_name \[ data\_type \] \[ AS transform\_expr \] \} \[, ...\] \) + + 指定表中各个列的转换表达式;其中data\_type指定该列在表达式参数中的数据类型;transform\_expr为目标表达式,返回与表中目标列数据类型一致的结果值,表达式可参考[表达式](表达式.md)。 + +COPY FROM 能够识别的特殊反斜杠序列如下所示。 + + - **\\b**:反斜杠 (ASCII 8) + - **\\f**:换页(ASCII 12) + - **\\n**:换行符 (ASCII 10) + - **\\r**:回车符 (ASCII 13) + - **\\t**:水平制表符 (ASCII 9) + - **\\v**:垂直制表符 (ASCII 11) + - **\\digits**:反斜杠后面跟着一到三个八进制数,表示 ASCII 值为该数的字符。 + - **\\xdigits**:反斜杠 x 后面跟着一个或两个十六进制位声明指定数值编码的字符。 + + +## 示例 + +``` +--将tpcds.ship_mode中的数据拷贝到/home/omm/ds_ship_mode.dat文件中。 +openGauss=# COPY tpcds.ship_mode TO '/home/omm/ds_ship_mode.dat'; + +--将tpcds.ship_mode 输出到 stdout 。 +openGauss=# COPY tpcds.ship_mode TO stdout; + +--创建tpcds.ship_mode_t1表。 +openGauss=# CREATE TABLE tpcds.ship_mode_t1 +( + SM_SHIP_MODE_SK INTEGER NOT NULL , + SM_SHIP_MODE_ID CHAR(16) NOT NULL, + SM_TYPE CHAR(30) , + SM_CODE CHAR(10) , + SM_CARRIER CHAR(20) , + SM_CONTRACT CHAR(20) +) +WITH (ORIENTATION = COLUMN,COMPRESSION=MIDDLE) +; + +--从 stdin 拷贝数据到表tpcds.ship_mode_t1。 +openGauss=# COPY tpcds.ship_mode_t1 FROM stdin; + +--从/home/omm/ds_ship_mode.dat文件拷贝数据到表tpcds.ship_mode_t1。 +openGauss=# COPY tpcds.ship_mode_t1 FROM '/home/omm/ds_ship_mode.dat'; + +--从/home/omm/ds_ship_mode.dat文件拷贝数据到表tpcds.ship_mode_t1,应用 TRANSFORM 表达式转换,取 SM_TYPE 列左边 10 个字符插入到表中。 +openGauss=# COPY tpcds.ship_mode_t1 FROM '/home/omm/ds_ship_mode.dat' TRANSFORM (SM_TYPE AS LEFT(SM_TYPE, 10)); + +--从/home/omm/ds_ship_mode.dat文件拷贝数据到表tpcds.ship_mode_t1,使用参数如下:导入格式为TEXT(format 'text'),分隔符为'\t'(delimiter E'\t'),忽略多余列(ignore_extra_data 'true'),不指定转义(noescaping 'true')。 +openGauss=# COPY tpcds.ship_mode_t1 FROM '/home/omm/ds_ship_mode.dat' WITH(format 'text', delimiter E'\t', ignore_extra_data 'true', noescaping 'true'); + +--从/home/omm/ds_ship_mode.dat文件拷贝数据到表tpcds.ship_mode_t1,使用参数如下:导入格式为FIXED(FIXED),指定定长格式(FORMATTER(SM_SHIP_MODE_SK(0, 2), SM_SHIP_MODE_ID(2,16), SM_TYPE(18,30), SM_CODE(50,10), SM_CARRIER(61,20), SM_CONTRACT(82,20))),忽略多余列(ignore_extra_data),有数据头(header)。 +openGauss=# COPY tpcds.ship_mode_t1 FROM '/home/omm/ds_ship_mode.dat' FIXED FORMATTER(SM_SHIP_MODE_SK(0, 2), SM_SHIP_MODE_ID(2,16), SM_TYPE(18,30), SM_CODE(50,10), SM_CARRIER(61,20), SM_CONTRACT(82,20)) header ignore_extra_data; + +--删除tpcds.ship_mode_t1。 +openGauss=# DROP TABLE tpcds.ship_mode_t1; +``` + diff --git a/content/zh/docs/Developerguide/CPU.md b/content/zh/docs/Developerguide/CPU.md index 9ca5c75bc..0ef22a1a2 100644 --- a/content/zh/docs/Developerguide/CPU.md +++ b/content/zh/docs/Developerguide/CPU.md @@ -1,118 +1,118 @@ -# CPU - -通过top命令查看openGauss内节点CPU使用情况,分析是否存在由于CPU负载过高导致的性能瓶颈。 - -## 查看CPU状况 - -查询服务器CPU的使用情况主要通过以下方式: - -在所有存储节点,逐一执行**top**命令,查看CPU占用情况。执行该命令后,按“1”键,可查看每个CPU核的使用率。 - -``` -top - 17:05:04 up 32 days, 20:34, 5 users, load average: 0.02, 0.02, 0.00 -Tasks: 124 total, 1 running, 123 sleeping, 0 stopped, 0 zombie -Cpu0 : 0.0%us, 0.3%sy, 0.0%ni, 69.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st -Cpu1 : 0.3%us, 0.3%sy, 0.0%ni, 69.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st -Cpu2 : 0.3%us, 0.3%sy, 0.0%ni, 69.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st -Cpu3 : 0.3%us, 0.3%sy, 0.0%ni, 69.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st -Mem: 8038844k total, 7165272k used, 873572k free, 530444k buffers -Swap: 4192924k total, 4920k used, 4188004k free, 4742904k cached - - PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND - - 35184 omm 20 0 822m 421m 128m S 0 5.4 5:28.15 gaussdb - 1 root 20 0 13592 820 784 S 0 0.0 1:16.62 init -``` - -分析时,请主要关注进程占用的CPU利用率。 - -其中,统计信息中“us”表示用户空间占用CPU百分比,“sy”表示内核空间占用CPU百分比,“id”表示空闲CPU百分比。如果“id”低于10%,即表明CPU负载较高,可尝试通过降低本节点任务量等手段降低CPU负载。 - -## 性能参数分析 - -1. 使用“top -H”命令查看CPU,显示内容如下所示。 - - ``` - 14 root 20 0 0 0 0 S 0 0.0 0:16.41 events/3 - top - 14:22:49 up 5 days, 21:51, 2 users, load average: 0.08, 0.08, 0.06 - Tasks: 312 total, 1 running, 311 sleeping, 0 stopped, 0 zombie - Cpu(s): 1.3%us, 0.7%sy, 0.0%ni, 95.0%id, 2.4%wa, 0.5%hi, 0.2%si, 0.0%st - Mem: 8038844k total, 5317668k used, 2721176k free, 180268k buffers - Swap: 4192924k total, 0k used, 4192924k free, 2886860k cached - - PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND - - 3105 root 20 0 50492 11m 2708 S 3 0.1 22:22.56 acc-snf - - 4015 gdm 20 0 232m 23m 11m S 0 0.3 11:34.70 gdm-simple-gree - 51001 omm 20 0 12140 1484 948 R 0 0.0 0:00.94 top - - 54885 omm 20 0 615m 396m 116m S 0 5.1 0:09.44 gaussdb - - - 1 root 20 0 13592 944 792 S 0 0.0 0:08.54 init - ``` - -2. 根据查询结果中“Cpu\(s\)”分析是系统CPU(sy)还是用户CPU(us)占用过高。 - - 如果是系统CPU占用过高,需要查找异常系统进程进行处理。 - - 如果是“USER”为omm的openGauss进程CPU占用过高,请根据目前运行的业务查询内容,对业务SQL进行优化。请根据以下步骤,并结合当前正在运行的业务特征进行分析,是否该程序处于死循环逻辑。 - - a. 使用“top -H -p pid”查找进程内占用的CPU百分比较高的线程,进行分析。 - - ``` - top -H -p 54952 - ``` - - 查询结果如下所示,top中可以看到占用CPU很高的线程,下面以线程54775为主,分析其为何占用CPU过高。 - - ``` - top - 14:23:27 up 5 days, 21:52, 2 users, load average: 0.04, 0.07, 0.05 - Tasks: 13 total, 0 running, 13 sleeping, 0 stopped, 0 zombie - Cpu(s): 0.9%us, 0.4%sy, 0.0%ni, 97.3%id, 1.1%wa, 0.2%hi, 0.1%si, 0.0%st - Mem: 8038844k total, 5322180k used, 2716664k free, 180316k buffers - Swap: 4192924k total, 0k used, 4192924k free, 2889860k cached - - PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND - 54775 omm 20 0 684m 424m 131m S 0 5.4 0:00.32 gaussdb - 54951 omm 20 0 684m 424m 131m S 0 5.4 0:00.84 gaussdb - 54732 omm 20 0 684m 424m 131m S 0 5.4 0:00.24 gaussdb - 54758 omm 20 0 684m 424m 131m S 0 5.4 0:00.00 gaussdb - 54759 omm 20 0 684m 424m 131m S 0 5.4 0:00.02 gaussdb - 54773 omm 20 0 684m 424m 131m S 0 5.4 0:02.79 gaussdb - 54780 omm 20 0 684m 424m 131m S 0 5.4 0:00.04 gaussdb - 54781 omm 20 0 684m 424m 131m S 0 5.4 0:00.21 gaussdb - 54782 omm 20 0 684m 424m 131m S 0 5.4 0:00.02 gaussdb - 54798 omm 20 0 684m 424m 131m S 0 5.4 0:16.70 gaussdb - 54952 omm 20 0 684m 424m 131m S 0 5.4 0:07.51 gaussdb - 54953 omm 20 0 684m 424m 131m S 0 5.4 0:00.81 gaussdb - 54954 omm 20 0 684m 424m 131m S 0 5.4 0:06.54 gaussdb - ``` - - b. 使用“gstack ”查看进程内各线程的函数调用栈。查找上一步骤中占用CPU较高的线程ID对应的线程号。 - - ``` - gstack 54954 - ``` - - 查询结果如下所示,其中线程ID54775对应线程号是10。 - - ``` - 192.168.0.11:~ # gstack 54954 - Thread 10 (Thread 0x7f95a5fff710 (LWP 54775)): - #0 0x00007f95c41d63c6 in poll () from /lib64/libc.so.6 - #1 0x0000000000d3d2d3 in WaitLatchOrSocket(Latch volatile*, int, int, long) () - #2 0x000000000095ed25 in XLogPageRead(XLogRecPtr*, int, bool, bool) () - #3 0x000000000095f6dd in ReadRecord(XLogRecPtr*, int, bool) () - #4 0x000000000096aef0 in StartupXLOG() () - #5 0x0000000000d5607a in StartupProcessMain() () - #6 0x00000000009e19f9 in AuxiliaryProcessMain(int, char**) () - #7 0x0000000000d50135 in SubPostmasterMain(int, char**) () - #8 0x0000000000d504ec in MainStarterThreadFunc(void*) () - #9 0x00007f95c79b85f0 in start_thread () from /lib64/libpthread.so.0 - #10 0x00007f95c41df84d in clone () from /lib64/libc.so.6 - #11 0x0000000000000000 in ?? () - ``` - - - - +# CPU + +通过 top 命令查看 openGauss 内节点 CPU 使用情况,分析是否存在由于 CPU 负载过高导致的性能瓶颈。 + +## 查看 CPU 状况 + +查询服务器 CPU 的使用情况主要通过以下方式: + +在所有存储节点,逐一执行**top**命令,查看 CPU 占用情况。执行该命令后,按“1”键,可查看每个 CPU 核的使用率。 + +``` +top - 17:05:04 up 32 days, 20:34, 5 users , load average: 0.02, 0.02, 0.00 +Tasks: 124 total, 1 running , 123 sleeping , 0 stopped , 0 zombie +Cpu0 : 0.0%us, 0.3%sy, 0.0%ni, 69.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st +Cpu1 : 0.3%us, 0.3%sy, 0.0%ni, 69.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st +Cpu2 : 0.3%us, 0.3%sy, 0.0%ni, 69.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st +Cpu3 : 0.3%us, 0.3%sy, 0.0%ni, 69.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st +Mem: 8038844k total, 7165272k used , 873572k free , 530444k buffers +Swap: 4192924k total, 4920k used , 4188004k free , 4742904k cached + + PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND + + 35184 omm 20 0 822m 421m 128m S 0 5.4 5:28.15 gaussdb + 1 root 20 0 13592 820 784 S 0 0.0 1:16.62 init +``` + +分析时,请主要关注进程占用的 CPU 利用率。 + +其中,统计信息中“us”表示用户空间占用 CPU 百分比,“sy”表示内核空间占用 CPU 百分比,“id”表示空闲 CPU 百分比。如果“id”低于10%,即表明 CPU 负载较高,可尝试通过降低本节点任务量等手段降低 CPU 负载。 + +## 性能参数分析 + +1. 使用“top -H”命令查看 CPU ,显示内容如下所示。 + + ``` + 14 root 20 0 0 0 0 S 0 0.0 0:16.41 events/3 + top - 14:22:49 up 5 days, 21:51, 2 users , load average: 0.08, 0.08, 0.06 + Tasks: 312 total, 1 running , 311 sleeping , 0 stopped , 0 zombie + Cpu(s): 1.3%us, 0.7%sy, 0.0%ni, 95.0%id, 2.4%wa, 0.5%hi, 0.2%si, 0.0%st + Mem: 8038844k total, 5317668k used , 2721176k free , 180268k buffers + Swap: 4192924k total, 0k used , 4192924k free , 2886860k cached + + PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND + + 3105 root 20 0 50492 11m 2708 S 3 0.1 22:22.56 acc-snf + + 4015 gdm 20 0 232m 23m 11m S 0 0.3 11:34.70 gdm-simple-gree + 51001 omm 20 0 12140 1484 948 R 0 0.0 0:00.94 top + + 54885 omm 20 0 615m 396m 116m S 0 5.1 0:09.44 gaussdb + + + 1 root 20 0 13592 944 792 S 0 0.0 0:08.54 init + ``` + +2. 根据查询结果中“Cpu\(s\)”分析是系统CPU(sy)还是用户CPU(us)占用过高。 + - 如果是系统 CPU 占用过高,需要查找异常系统进程进行处理。 + - 如果是“USER”为 omm 的 openGauss 进程 CPU 占用过高,请根据目前运行的业务查询内容,对业务 SQL 进行优化。请根据以下步骤,并结合当前正在运行的业务特征进行分析,是否该程序处于死循环逻辑。 + + a. 使用“top -H -p pid”查找进程内占用的 CPU 百分比较高的线程,进行分析。 + + ``` + top -H -p 54952 + ``` + + 查询结果如下所示, top 中可以看到占用 CPU 很高的线程,下面以线程 54775 为主,分析其为何占用 CPU 过高。 + + ``` + top - 14:23:27 up 5 days, 21:52, 2 users , load average: 0.04, 0.07, 0.05 + Tasks: 13 total, 0 running , 13 sleeping , 0 stopped , 0 zombie + Cpu(s): 0.9%us, 0.4%sy, 0.0%ni, 97.3%id, 1.1%wa, 0.2%hi, 0.1%si, 0.0%st + Mem: 8038844k total, 5322180k used , 2716664k free , 180316k buffers + Swap: 4192924k total, 0k used , 4192924k free , 2889860k cached + + PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND + 54775 omm 20 0 684m 424m 131m S 0 5.4 0:00.32 gaussdb + 54951 omm 20 0 684m 424m 131m S 0 5.4 0:00.84 gaussdb + 54732 omm 20 0 684m 424m 131m S 0 5.4 0:00.24 gaussdb + 54758 omm 20 0 684m 424m 131m S 0 5.4 0:00.00 gaussdb + 54759 omm 20 0 684m 424m 131m S 0 5.4 0:00.02 gaussdb + 54773 omm 20 0 684m 424m 131m S 0 5.4 0:02.79 gaussdb + 54780 omm 20 0 684m 424m 131m S 0 5.4 0:00.04 gaussdb + 54781 omm 20 0 684m 424m 131m S 0 5.4 0:00.21 gaussdb + 54782 omm 20 0 684m 424m 131m S 0 5.4 0:00.02 gaussdb + 54798 omm 20 0 684m 424m 131m S 0 5.4 0:16.70 gaussdb + 54952 omm 20 0 684m 424m 131m S 0 5.4 0:07.51 gaussdb + 54953 omm 20 0 684m 424m 131m S 0 5.4 0:00.81 gaussdb + 54954 omm 20 0 684m 424m 131m S 0 5.4 0:06.54 gaussdb + ``` + + b. 使用“gstack ”查看进程内各线程的函数调用栈。查找上一步骤中占用 CPU 较高的线程 ID 对应的线程号。 + + ``` + gstack 54954 + ``` + + 查询结果如下所示,其中线程 ID54775 对应线程号是 10 。 + + ``` + 192.168.0.11:~ # gstack 54954 + Thread 10 (Thread 0x7f95a5fff710 (LWP 54775)): + #0 0x00007f95c41d63c6 in poll () from /lib64/libc.so.6 + #1 0x0000000000d3d2d3 in WaitLatchOrSocket(Latch volatile*, int , int , long) () + #2 0x000000000095ed25 in XLogPageRead(XLogRecPtr*, int , bool , bool) () + #3 0x000000000095f6dd in ReadRecord(XLogRecPtr*, int , bool) () + #4 0x000000000096aef0 in StartupXLOG() () + #5 0x0000000000d5607a in StartupProcessMain() () + #6 0x00000000009e19f9 in AuxiliaryProcessMain(int, char**) () + #7 0x0000000000d50135 in SubPostmasterMain(int, char**) () + #8 0x0000000000d504ec in MainStarterThreadFunc(void*) () + #9 0x00007f95c79b85f0 in start_thread () from /lib64/libpthread.so.0 + #10 0x00007f95c41df84d in clone () from /lib64/libc.so.6 + #11 0x0000000000000000 in ?? () + ``` + + + + diff --git a/content/zh/docs/Developerguide/CREATE-AGGREGATE.md b/content/zh/docs/Developerguide/CREATE-AGGREGATE.md index a34c49781..e259e98b2 100644 --- a/content/zh/docs/Developerguide/CREATE-AGGREGATE.md +++ b/content/zh/docs/Developerguide/CREATE-AGGREGATE.md @@ -1,87 +1,87 @@ -# CREATE AGGREGATE - -## 功能描述 - -定义一个新的聚合函数。 - -## 语法格式 - -``` -CREATE AGGREGATE name ( input_data_type [ , ... ] ) ( - SFUNC = sfunc, - STYPE = state_data_type - [ , FINALFUNC = ffunc ] - [ , INITCOND = initial_condition ] - [ , SORTOP = sort_operator ] -) - -or the old syntax - -CREATE AGGREGATE name ( - BASETYPE = base_type, - SFUNC = sfunc, - STYPE = state_data_type - [ , FINALFUNC = ffunc ] - [ , INITCOND = initial_condition ] - [ , SORTOP = sort_operator ] -) -``` - -## 参数说明 - -- **name** - - 要创建的聚合函数名\(可以有模式修饰\) 。 - -- **input\_data\_type** - - 该聚合函数要处理的输入数据类型。要创建一个零参数聚合函数,可以使用\*代替输入数据类型列表。(count\(\*\)就是这种聚合函数的一个实例。) - - -- **base\_type** - - 在以前的CREATE AGGREGATE语法中,输入数据类型是通过basetype参数指定的,而不是写在聚合的名称之后。 需要注意的是这种以前语法仅允许一个输入参数。 要创建一个零参数聚合函数,可以将basetype指定为“ANY”\(而不是\*\)。 - - -- **sfunc** - - 将在每一个输入行上调用的状态转换函数的名称。 对于有N个参数的聚合函数,sfunc必须有 +1 个参数,其中的第一个参数类型为state\_data\_type,其余的匹配已声明的输入数据类型。 函数必须返回一个state\_data\_type类型的值。 这个函数接受当前状态值和当前输入数据,并返回下个状态值。 - - -- **state\_data\_type** - - 聚合的状态值的数据类型。 - - -- **ffunc** - - 在转换完所有输入行后调用的最终处理函数,它计算聚合的结果。 此函数必须接受一个类型为state\_data\_type的参数。 聚合的输出数据 类型被定义为此函数的返回类型。 如果没有声明ffunc则使用聚合结果的状态值作为聚合的结果,且输出类型为state\_data\_type。 - - -- **initial\_condition** - - 状态值的初始设置\(值\)。 它必须是一个state\_data\_type类型可以接受的文本常量值。 如果没有声明,状态值初始为 NULL 。 - - -- **sort\_operator** - - 用于MIN或MAX类型聚合的排序操作符。 这个只是一个操作符名 \(可以有模式修饰\)。这个操作符假设接受和聚合一样的输入数据类型。 - - -## 示例 - -``` -CREATE AGGREGATE sum (complex) -( - sfunc = complex_add, - stype = complex, - initcond = '(0,0)' -); - -SELECT sum(a) FROM test_complex; - - sum ------------ - (34,53.9) -``` - +# CREATE AGGREGATE + +## 功能描述 + +定义一个新的聚合函数。 + +## 语法格式 + +``` +CREATE AGGREGATE name ( input_data_type [ , ... ] ) ( + SFUNC = sfunc, + STYPE = state_data_type + [ , FINALFUNC = ffunc ] + [ , INITCOND = initial_condition ] + [ , SORTOP = sort_operator ] +) + +or the old syntax + +CREATE AGGREGATE name ( + BASETYPE = base_type, + SFUNC = sfunc, + STYPE = state_data_type + [ , FINALFUNC = ffunc ] + [ , INITCOND = initial_condition ] + [ , SORTOP = sort_operator ] +) +``` + +## 参数说明 + +- **name** + + 要创建的聚合函数名\(可以有模式修饰\) 。 + +- **input\_data\_type** + + 该聚合函数要处理的输入数据类型。要创建一个零参数聚合函数,可以使用\*代替输入数据类型列表。(count\(\*\)就是这种聚合函数的一个实例。) + + +- **base\_type** + + 在以前的 CREATE AGGREGATE 语法中,输入数据类型是通过 basetype 参数指定的,而不是写在聚合的名称之后。 需要注意的是这种以前语法仅允许一个输入参数。 要创建一个零参数聚合函数,可以将 basetype 指定为“ANY”\(而不是\*\)。 + + +- **sfunc** + + 将在每一个输入行上调用的状态转换函数的名称。 对于有 N 个参数的聚合函数, sfunc 必须有 +1 个参数,其中的第一个参数类型为state\_data\_type,其余的匹配已声明的输入数据类型。 函数必须返回一个state\_data\_type类型的值。 这个函数接受当前状态值和当前输入数据,并返回下个状态值。 + + +- **state\_data\_type** + + 聚合的状态值的数据类型。 + + +- **ffunc** + + 在转换完所有输入行后调用的最终处理函数,它计算聚合的结果。 此函数必须接受一个类型为state\_data\_type的参数。 聚合的输出数据 类型被定义为此函数的返回类型。 如果没有声明 ffunc 则使用聚合结果的状态值作为聚合的结果,且输出类型为state\_data\_type。 + + +- **initial\_condition** + + 状态值的初始设置\(值\)。 它必须是一个state\_data\_type类型可以接受的文本常量值。 如果没有声明,状态值初始为 NULL 。 + + +- **sort\_operator** + + 用于 MIN 或 MAX 类型聚合的排序操作符。 这个只是一个操作符名 \(可以有模式修饰\)。这个操作符假设接受和聚合一样的输入数据类型。 + + +## 示例 + +``` +CREATE AGGREGATE sum (complex) +( + sfunc = complex_add, + stype = complex, + initcond = '(0,0)' +); + +SELECT sum(a) FROM test_complex; + + sum +----------- + (34,53.9) +``` + diff --git a/content/zh/docs/Developerguide/CREATE-AUDIT-POLICY.md b/content/zh/docs/Developerguide/CREATE-AUDIT-POLICY.md index f8e06c2c5..3a0859084 100644 --- a/content/zh/docs/Developerguide/CREATE-AUDIT-POLICY.md +++ b/content/zh/docs/Developerguide/CREATE-AUDIT-POLICY.md @@ -1,107 +1,107 @@ -# CREATE AUDIT POLICY - -## 功能描述 - -创建统一审计策略。 - -## 注意事项 - -只有poladmin、sysadmin或初始用户能进行此操作。 - -需要开启安全策略开关,即设置GUC参数enable\_security\_policy=on,审计策略才可以生效。 - -## 语法格式 - -``` -CREATE AUDIT POLICY [ IF NOT EXISTS ] policy_name { { privilege_audit_clause | access_audit_clause } [ filter_group_clause ] [ ENABLE | DISABLE ] }; -``` - -- privilege\_audit\_clause: - - ``` - PRIVILEGES { DDL | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ] - ``` - -- access\_audit\_clause: - - ``` - ACCESS { DML | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ] - ``` - - -- filter\_group\_clause: - - ``` - FILTER ON { ( FILTER_TYPE ( filter_value [, ... ] ) ) [, ... ] } - ``` - - -## 参数说明 - -- **policy\_name** - - 审计策略名称,需要唯一,不可重复; - - 取值范围:字符串,要符合标识符的命名规范。 - -- **DDL** - - 指的是针对数据库执行如下操作时进行审计,目前支持:CREATE、ALTER、DROP、ANALYZE、COMMENT、GRANT、REVOKE、SET、SHOW、LOGIN\_ANY、LOGIN\_FAILURE、LOGIN\_SUCCESS、LOGOUT。 - -- **ALL** - - 指的是上述DDL支持的所有对数据库的操作。 - -- **resource\_label\_name** - - 资源标签名称。 - -- **DML** - - 指的是针对数据库执行如下操作时进行审计,目前支持:SELECT、COPY、DEALLOCATE、DELETE、EXECUTE、INSERT、PREPARE、REINDEX、TRUNCATE、UPDATE。 - - -- **FILTER\_TYPE** - - 描述策略过滤的条件类型,包括IP | APP | ROLES。 - -- **filter\_value** - - 指具体过滤信息内容。 - - -- **ENABLE|DISABLE** - - 可以打开或关闭统一审计策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。 - - -## 示例 - -``` ---创建dev_audit和bob_audit用户。 -openGauss=# CREATE USER dev_audit PASSWORD 'dev@1234'; -CREATE USER bob_audit password 'bob@1234'; - ---创建一个表tb_for_audit -openGauss=# CREATE TABLE tb_for_audit(col1 text, col2 text, col3 text); - ---创建资源标签 -openGauss=# CREATE RESOURCE LABEL adt_lb0 add TABLE(tb_for_audit); - ---对数据库执行create操作创建审计策略 -openGauss=# CREATE AUDIT POLICY adt1 PRIVILEGES CREATE; - ---对数据库执行select操作创建审计策略 -openGauss=# CREATE AUDIT POLICY adt2 ACCESS SELECT; - ---仅审计记录用户dev_audit和bob_audit在执行针对adt_lb0资源进行的create操作数据库创建审计策略 -openGauss=# CREATE AUDIT POLICY adt3 PRIVILEGES CREATE ON LABEL(adt_lb0) FILTER ON ROLES(dev_audit, bob_audit); - ---仅审计记录用户dev_audit和bob_audit,客户端工具为psql和gsql,IP地址为'10.20.30.40', '127.0.0.0/24',在执行针对adt_lb0资源进行的select、insert、delete操作数据库创建审计策略。 -openGauss=# CREATE AUDIT POLICY adt4 ACCESS SELECT ON LABEL(adt_lb0), INSERT ON LABEL(adt_lb0), DELETE FILTER ON ROLES(dev_audit, bob_audit), APP(psql, gsql), IP('10.20.30.40', '127.0.0.0/24'); -``` - -## 相关链接 - -[ALTER AUDIT POLICY](ALTER-AUDIT-POLICY.md) [DROP AUDIT POLICY](DROP-AUDIT-POLICY.md)。 - +# CREATE AUDIT POLICY + +## 功能描述 + +创建统一审计策略。 + +## 注意事项 + +只有poladmin、sysadmin或初始用户能进行此操作。 + +需要开启安全策略开关,即设置 GUC 参数enable\_security\_policy=on,审计策略才可以生效。 + +## 语法格式 + +``` +CREATE AUDIT POLICY [ IF NOT EXISTS ] policy_name { { privilege_audit_clause | access_audit_clause } [ filter_group_clause ] [ ENABLE | DISABLE ] }; +``` + +- privilege\_audit\_clause: + + ``` + PRIVILEGES { DDL | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ] + ``` + +- access\_audit\_clause: + + ``` + ACCESS { DML | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ] + ``` + + +- filter\_group\_clause: + + ``` + FILTER ON { ( FILTER_TYPE ( filter_value [, ... ] ) ) [, ... ] } + ``` + + +## 参数说明 + +- **policy\_name** + + 审计策略名称,需要唯一,不可重复; + + 取值范围:字符串,要符合标识符的命名规范。 + +- **DDL** + + 指的是针对数据库执行如下操作时进行审计,目前支持:CREATE、ALTER、DROP、ANALYZE、COMMENT、GRANT、REVOKE、SET、SHOW、LOGIN\_ANY、LOGIN\_FAILURE、LOGIN\_SUCCESS、LOGOUT。 + +- **ALL** + + 指的是上述 DDL 支持的所有对数据库的操作。 + +- **resource\_label\_name** + + 资源标签名称。 + +- **DML** + + 指的是针对数据库执行如下操作时进行审计,目前支持:SELECT、COPY、DEALLOCATE、DELETE、EXECUTE、INSERT、PREPARE、REINDEX、TRUNCATE、UPDATE。 + + +- **FILTER\_TYPE** + + 描述策略过滤的条件类型,包括IP | APP | ROLES。 + +- **filter\_value** + + 指具体过滤信息内容。 + + +- **ENABLE|DISABLE** + + 可以打开或关闭统一审计策略。若不指定ENABLE|DISABLE,语句默认为 ENABLE 。 + + +## 示例 + +``` +--创建 dev_audit 和 bob_audit 用户。 +openGauss=# CREATE USER dev_audit PASSWORD 'dev@1234'; +CREATE USER bob_audit password 'bob@1234'; + +--创建一个表tb_for_audit +openGauss=# CREATE TABLE tb_for_audit(col1 text, col2 text , col3 text); + +--创建资源标签 +openGauss=# CREATE RESOURCE LABEL adt_lb0 add TABLE(tb_for_audit); + +--对数据库执行 create 操作创建审计策略 +openGauss=# CREATE AUDIT POLICY adt1 PRIVILEGES CREATE; + +--对数据库执行 select 操作创建审计策略 +openGauss=# CREATE AUDIT POLICY adt2 ACCESS SELECT; + +--仅审计记录用户 dev_audit 和 bob_audit 在执行针对 adt_lb0 资源进行的 create 操作数据库创建审计策略 +openGauss=# CREATE AUDIT POLICY adt3 PRIVILEGES CREATE ON LABEL(adt_lb0) FILTER ON ROLES(dev_audit, bob_audit); + +--仅审计记录用户 dev_audit 和 bob_audit ,客户端工具为 psql 和 gsql , IP 地址为'10.20.30.40', '127.0.0.0/24',在执行针对 adt_lb0 资源进行的select、insert、delete操作数据库创建审计策略。 +openGauss=# CREATE AUDIT POLICY adt4 ACCESS SELECT ON LABEL(adt_lb0), INSERT ON LABEL(adt_lb0), DELETE FILTER ON ROLES(dev_audit, bob_audit), APP(psql, gsql), IP('10.20.30.40', '127.0.0.0/24'); +``` + +## 相关链接 + +[ALTER AUDIT POLICY](ALTER-AUDIT-POLICY.md) [DROP AUDIT POLICY](DROP-AUDIT-POLICY.md)。 + diff --git a/content/zh/docs/Developerguide/CREATE-CAST.md b/content/zh/docs/Developerguide/CREATE-CAST.md index 9b0b19ff3..da11b6d23 100644 --- a/content/zh/docs/Developerguide/CREATE-CAST.md +++ b/content/zh/docs/Developerguide/CREATE-CAST.md @@ -1,81 +1,81 @@ -# CREATE CAST - -## 功能描述 - -定义一个用户自定义的转换。 - -## 注意事项 - -DROP AGGREGATE删除一个现存的聚合函数,执行这条命令的用户必须是该聚合函数的所有者。 - -## 语法格式 - -``` -CREATE CAST (source_type AS target_type) - WITH FUNCTION function_name (argument_type [, ...]) - [ AS ASSIGNMENT | AS IMPLICIT ] - -CREATE CAST (source_type AS target_type) - WITHOUT FUNCTION - [ AS ASSIGNMENT | AS IMPLICIT ] - -CREATE CAST (source_type AS target_type) - WITH INOUT - [ AS ASSIGNMENT | AS IMPLICIT ] -``` - -## 参数说明 - -- **source\_type** - - 转换的源数据类型。 - -- **target\_type** - - 转换的目标数据类型。 - -- **function\_name\(argument\_type \[, ...\]\)** - - 用于执行转换的函数。这个函数名可以是用模式名修饰的。如果它没有用模式名修饰,那么该函数将从模式搜索路径中找出来。函数的结果数据类型必须匹配转换的目标类型。 它的参数在下面讨论。 - -- **WITHOUT FUNCTION** - - 表明源类型是对目标类型是二进制可强制转换的,所以没有函数需要执行此转换。 - -- **WITH INOUT** - - 表明转换是I/O转换,通过调用源数据类型的输出函数来执行,并将结果传给目标数据类型的输入函数。 - -- **AS ASSIGNMENT** - - 表示转换可以在赋值模式下隐含调用。 - -- **AS IMPLICIT** - - 表示转换可以在任何环境里隐含调用。 - - 转换实现函数可以有一到三个参数。第一个参数的类型必须与转换的源类型相同的,或可以从转换的源类型二进制可强制转换的。第二个参数,如果存在,必须是integer类型;它接收这些与目标类型相关联的类型修饰符,或者若什么都没有则是-1。第三个参数,如果存在,必须是boolean类型;若转换是一个显式类型转换则会收到true,否则是false。 - - 一个转换函数的返回类型必须是与转换的目标类型相同或者对转换的目标类型二进制可强制转换 。 - - 通常,一个转换必须有不同的源和目标数据类型。然而,若有多于一个参数的转换实现函数,则允许声明一个有相同的源和目标类型的转换。这用于表示系统目录中的特定类型的长度强制函数。命名的函数用于强制一个该类型的值为第二个参数给出的类型修饰符值。 - - 如果一个类型转换的源类型和目标类型不同,并且接收多于一个参数,它就表示从一种类型转换成另外一种类型只用一个步骤,并且同时实施长度转换。如果没有这样的项可用, 那么转换成一个使用了类型修饰词的类型将涉及两个步骤,一个是在数据类型之间转换, 另外一个是施加修饰词指定的转换。 - - 对域类型的转换目前没有作用。转换一般是针对域相关的所属数据类型。 - - -## 示例 - -为了从类型bigint到类型int4创建一个指派映射要通过使用函数int4\(bigint\): - -``` -CREATE CAST (bigint AS int4) WITH FUNCTION int4(bigint) AS ASSIGNMENT; -``` - -(这个转换在系统中已经预先定义了。) - -## 兼容性 - -CREATE CAST指令符合SQL标准,除了SQL没有为二进制可强制转换类型或者实现函数的额外参数来实现功能。 - +# CREATE CAST + +## 功能描述 + +定义一个用户自定义的转换。 + +## 注意事项 + +DROP AGGREGATE 删除一个现存的聚合函数,执行这条命令的用户必须是该聚合函数的所有者。 + +## 语法格式 + +``` +CREATE CAST (source_type AS target_type) + WITH FUNCTION function_name (argument_type [, ...]) + [ AS ASSIGNMENT | AS IMPLICIT ] + +CREATE CAST (source_type AS target_type) + WITHOUT FUNCTION + [ AS ASSIGNMENT | AS IMPLICIT ] + +CREATE CAST (source_type AS target_type) + WITH INOUT + [ AS ASSIGNMENT | AS IMPLICIT ] +``` + +## 参数说明 + +- **source\_type** + + 转换的源数据类型。 + +- **target\_type** + + 转换的目标数据类型。 + +- **function\_name\(argument\_type \[, ...\]\)** + + 用于执行转换的函数。这个函数名可以是用模式名修饰的。如果它没有用模式名修饰,那么该函数将从模式搜索路径中找出来。函数的结果数据类型必须匹配转换的目标类型。 它的参数在下面讨论。 + +- **WITHOUT FUNCTION** + + 表明源类型是对目标类型是二进制可强制转换的,所以没有函数需要执行此转换。 + +- **WITH INOUT** + + 表明转换是I/O转换,通过调用源数据类型的输出函数来执行,并将结果传给目标数据类型的输入函数。 + +- **AS ASSIGNMENT** + + 表示转换可以在赋值模式下隐含调用。 + +- **AS IMPLICIT** + + 表示转换可以在任何环境里隐含调用。 + + 转换实现函数可以有一到三个参数。第一个参数的类型必须与转换的源类型相同的,或可以从转换的源类型二进制可强制转换的。第二个参数,如果存在,必须是 integer 类型;它接收这些与目标类型相关联的类型修饰符,或者若什么都没有则是-1。第三个参数,如果存在,必须是 boolean 类型;若转换是一个显式类型转换则会收到 true ,否则是 false 。 + + 一个转换函数的返回类型必须是与转换的目标类型相同或者对转换的目标类型二进制可强制转换 。 + + 通常,一个转换必须有不同的源和目标数据类型。然而,若有多于一个参数的转换实现函数,则允许声明一个有相同的源和目标类型的转换。这用于表示系统目录中的特定类型的长度强制函数。命名的函数用于强制一个该类型的值为第二个参数给出的类型修饰符值。 + + 如果一个类型转换的源类型和目标类型不同,并且接收多于一个参数,它就表示从一种类型转换成另外一种类型只用一个步骤,并且同时实施长度转换。如果没有这样的项可用, 那么转换成一个使用了类型修饰词的类型将涉及两个步骤,一个是在数据类型之间转换, 另外一个是施加修饰词指定的转换。 + + 对域类型的转换目前没有作用。转换一般是针对域相关的所属数据类型。 + + +## 示例 + +为了从类型 bigint 到类型 int4 创建一个指派映射要通过使用函数int4\(bigint\): + +``` +CREATE CAST (bigint AS int4) WITH FUNCTION int4(bigint) AS ASSIGNMENT; +``` + +(这个转换在系统中已经预先定义了。) + +## 兼容性 + +CREATE CAST 指令符合 SQL 标准,除了 SQL 没有为二进制可强制转换类型或者实现函数的额外参数来实现功能。 + diff --git a/content/zh/docs/Developerguide/CREATE-CLIENT-MASTER-KEY.md b/content/zh/docs/Developerguide/CREATE-CLIENT-MASTER-KEY.md index 4d9794819..66e4844f5 100644 --- a/content/zh/docs/Developerguide/CREATE-CLIENT-MASTER-KEY.md +++ b/content/zh/docs/Developerguide/CREATE-CLIENT-MASTER-KEY.md @@ -1,57 +1,57 @@ -# CREATE CLIENT MASTER KEY - -## 功能描述 - -创建一个客户端主密钥对象,该对象可用于加密Column Encryption Key对象。 - -## 注意事项 - -本语法属于全密态数据库特有语法。 - -当使用gsql连接数据库服务器时,需使用‘-C’参数,打开全密态数据库的开关,才能使用本语法。 - -由本语法创建的CMK对象中,仅存储从独立的密钥管理工具/服务/组件中读取密钥的方法,而不存储密钥本身。 - -## 语法格式 - -``` -CREATE CLIENT MASTER KEY client_master_key_name WITH (KEY_STORE = key_store_name, KEY_PATH = "key_path_value", ALGORITHM = algorithm_type) -``` - -## 参数说明 - -- **client\_master\_key\_name** - - 该参数作为密钥对象名,在同一命名空间下,需满足命名唯一性约束。 - - 取值范围:字符串,需符合标识符的命名规范。 - -- **KEY\_STORE** - - 指定管理CMK的密钥工具或组件;取值:目前仅支持localkms。 - -- **KEY\_PATH** - - KEY\_STORE负责管理多个CMK密钥,KEY\_PATH选项用于在KEY\_STORE中唯一标识CMK。取值类似:“key\_path\_value”。 - -- **ALGORITHM** - - 由本语法创建的用于加密COLUMN ENCRYPTION KEY,该参数用于指定加密算法的类型。取值范围:RSA\_2048、RSA3072和SM2。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >**密钥存储路径:**默认情况下,localkms将在$LOCALKMS\_FILE\_PATH路径下生成/读取/删除密钥文件,用户可手动配置该环境变量。但是,用户也可以不用单独配置该环境变量,在尝试获取$LOCALKMS\_FILE\_PATH失败时,localkms会尝试获取$GAUSSHOME/etc/localkms/路径,如果该路径存在,则将其作为密钥存储路径。 - >**密钥相关文件名:**使用CREATE CMK语法时,localkms将会创建四个与存储密钥相关的文件。示例:当KEY\_PATH = "key\_path\_value", 四个文件的名称分别为key\_path\_value.pub、key\_path\_value.pub.rand、 key\_path\_value.priv、 key\_path\_value.priv.rand。 - >所以,为了能够成功创建密钥相关文件,在密钥存储路径下,应该保证没有已存在的与密钥相关文件名同名的文件。 - - -## 示例 - -``` --- (1)使用普通账户alice,连接全密态数据库, -[cmd] gsql -U alice -h $host -p $port -d $database -C -r - --- (2)使用本语法创建客户端加密主密钥(CMK)对象 -openGauss=> CREATE CLIENT MASTER KEY a_cmk WITH (KEY_STORE = localkms, KEY_PATH = "key_path_value", ALGORITHM = RSA_2048); -openGauss=> CREATE CLIENT MASTER KEY another_cmk WITH (KEY_STORE = localkms, KEY_PATH = "another_path_value", ALGORITHM = SM2); -``` - +# CREATE CLIENT MASTER KEY + +## 功能描述 + +创建一个客户端主密钥对象,该对象可用于加密 Column Encryption Key 对象。 + +## 注意事项 + +本语法属于全密态数据库特有语法。 + +当使用 gsql 连接数据库服务器时,需使用‘-C’参数,打开全密态数据库的开关,才能使用本语法。 + +由本语法创建的 CMK 对象中,仅存储从独立的密钥管理工具/服务/组件中读取密钥的方法,而不存储密钥本身。 + +## 语法格式 + +``` +CREATE CLIENT MASTER KEY client_master_key_name WITH (KEY_STORE = key_store_name, KEY_PATH = "key_path_value", ALGORITHM = algorithm_type) +``` + +## 参数说明 + +- **client\_master\_key\_name** + + 该参数作为密钥对象名,在同一命名空间下,需满足命名唯一性约束。 + + 取值范围:字符串,需符合标识符的命名规范。 + +- **KEY\_STORE** + + 指定管理 CMK 的密钥工具或组件;取值:目前仅支持 localkms 。 + +- **KEY\_PATH** + + KEY\_STORE负责管理多个 CMK 密钥,KEY\_PATH选项用于在KEY\_STORE中唯一标识 CMK 。取值类似:“key\_path\_value”。 + +- **ALGORITHM** + + 由本语法创建的用于加密 COLUMN ENCRYPTION KEY ,该参数用于指定加密算法的类型。取值范围:RSA\_2048、RSA3072和 SM2 。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >**密钥存储路径:**默认情况下, localkms 将在$LOCALKMS\_FILE\_PATH路径下生成/读取/删除密钥文件,用户可手动配置该环境变量。但是,用户也可以不用单独配置该环境变量,在尝试获取$LOCALKMS\_FILE\_PATH失败时, localkms 会尝试获取$GAUSSHOME/etc/localkms/路径,如果该路径存在,则将其作为密钥存储路径。 + >**密钥相关文件名:**使用 CREATE CMK 语法时, localkms 将会创建四个与存储密钥相关的文件。示例:当KEY\_PATH = "key\_path\_value", 四个文件的名称分别为key\_path\_value.pub、key\_path\_value.pub.rand、 key\_path\_value.priv、 key\_path\_value.priv.rand。 + >所以,为了能够成功创建密钥相关文件,在密钥存储路径下,应该保证没有已存在的与密钥相关文件名同名的文件。 + + +## 示例 + +``` +-- (1)使用普通账户 alice ,连接全密态数据库, +[cmd] gsql -U alice -h $host -p $port -d $database -C -r + +-- (2)使用本语法创建客户端加密主密钥(CMK)对象 +openGauss=> CREATE CLIENT MASTER KEY a_cmk WITH (KEY_STORE = localkms, KEY_PATH = "key_path_value", ALGORITHM = RSA_2048); +openGauss=> CREATE CLIENT MASTER KEY another_cmk WITH (KEY_STORE = localkms, KEY_PATH = "another_path_value", ALGORITHM = SM2); +``` + diff --git a/content/zh/docs/Developerguide/CREATE-COLUMN-ENCRYPTION-KEY.md b/content/zh/docs/Developerguide/CREATE-COLUMN-ENCRYPTION-KEY.md index b1e4f8489..c9238b73d 100644 --- a/content/zh/docs/Developerguide/CREATE-COLUMN-ENCRYPTION-KEY.md +++ b/content/zh/docs/Developerguide/CREATE-COLUMN-ENCRYPTION-KEY.md @@ -1,54 +1,54 @@ -# CREATE COLUMN ENCRYPTION KEY - -## 功能描述 - -创建一个列加密密钥,该密钥可用于加密表中指定列。 - -## 注意事项 - -本语法属于全密态数据库特有语法。 - -当使用gsql连接数据库服务器时,需使用‘-C’参数,打开全密态数据库的开关,才能使用本语法。 - -由该语法创建CEK对象可用于列级加密。在定义表中列字段时,可指定一个CEK对象,用于加密该列。 - -## 语法格式 - -``` -CREATE COLUMN ENCRYPTION KEY column_encryption_key_name WITH(CLIENT_MASTER_KEY = client_master_key_name, ALGORITHM = algorithm_type, ENCRYPTED_VALUE = encrypted_value); -``` - -## 参数说明 - -- **column\_encryption\_key\_name** - - 该参数作为密钥对象名,在同一命名空间下,需满足命名唯一性约束。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **CLIENT\_MASTER\_KEY** - - 指定用于加密本CEK的CMK,取值为:CMK对象名,该CMK对象由CREATE CLIENT MASTER KEY语法创建。 - -- **ALGORITHM** - - 指定该CEK将用于何种加密算法,取值范围为:AEAD\_AES\_256\_CBC\_HMAC\_SHA256、AEAD\_AES\_128\_CBC\_HMAC\_SHA256和SM4\_SM3; - -- **ENCRYPTED\_VALUE(可选项)** - - 该值为用户指定的密钥口令,密钥口令长度范围为28 \~ 256位,28位派生出来的密钥安全强度满足AES128,若用户需要用AES256,密钥口令的长度需要39位,如果不指定,则会自动生成256比特的密钥。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >国密算法约束:由于SM2、SM3、SM4等算法属于中国国家密码标准算法,为规避法律风险,需配套使用。即如果将CEK用于SM4\_SM3算法,则仅能使用SM4算法来对该CEK进行加密。 - - -## 示例 - -``` ---创建列加密密钥(CEK) -openGauss=> CREATE COLUMN ENCRYPTION KEY a_cek WITH VALUES (CLIENT_MASTER_KEY = a_cmk, ALGORITHM = AEAD_AES_256_CBC_HMAC_SHA256); -CREATE COLUMN ENCRYPTION KEY -openGauss=> CREATE COLUMN ENCRYPTION KEY another_cek WITH VALUES (CLIENT_MASTER_KEY = a_cmk, ALGORITHM = SM4_SM3); -CREATE COLUMN ENCRYPTION KEY -``` - +# CREATE COLUMN ENCRYPTION KEY + +## 功能描述 + +创建一个列加密密钥,该密钥可用于加密表中指定列。 + +## 注意事项 + +本语法属于全密态数据库特有语法。 + +当使用 gsql 连接数据库服务器时,需使用‘-C’参数,打开全密态数据库的开关,才能使用本语法。 + +由该语法创建 CEK 对象可用于列级加密。在定义表中列字段时,可指定一个 CEK 对象,用于加密该列。 + +## 语法格式 + +``` +CREATE COLUMN ENCRYPTION KEY column_encryption_key_name WITH(CLIENT_MASTER_KEY = client_master_key_name, ALGORITHM = algorithm_type, ENCRYPTED_VALUE = encrypted_value); +``` + +## 参数说明 + +- **column\_encryption\_key\_name** + + 该参数作为密钥对象名,在同一命名空间下,需满足命名唯一性约束。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **CLIENT\_MASTER\_KEY** + + 指定用于加密本 CEK 的 CMK ,取值为:CMK对象名,该 CMK 对象由 CREATE CLIENT MASTER KEY 语法创建。 + +- **ALGORITHM** + + 指定该 CEK 将用于何种加密算法,取值范围为:AEAD\_AES\_256\_CBC\_HMAC\_SHA256、AEAD\_AES\_128\_CBC\_HMAC\_SHA256和SM4\_SM3; + +- **ENCRYPTED\_VALUE(可选项)** + + 该值为用户指定的密钥口令,密钥口令长度范围为28 \~ 256位, 28 位派生出来的密钥安全强度满足 AES128 ,若用户需要用 AES256 ,密钥口令的长度需要 39 位,如果不指定,则会自动生成 256 比特的密钥。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >国密算法约束:由于SM2、SM3、SM4等算法属于中国国家密码标准算法,为规避法律风险,需配套使用。即如果将 CEK 用于SM4\_SM3算法,则仅能使用 SM4 算法来对该 CEK 进行加密。 + + +## 示例 + +``` +--创建列加密密钥(CEK) +openGauss=> CREATE COLUMN ENCRYPTION KEY a_cek WITH VALUES (CLIENT_MASTER_KEY = a_cmk, ALGORITHM = AEAD_AES_256_CBC_HMAC_SHA256); +CREATE COLUMN ENCRYPTION KEY +openGauss=> CREATE COLUMN ENCRYPTION KEY another_cek WITH VALUES (CLIENT_MASTER_KEY = a_cmk, ALGORITHM = SM4_SM3); +CREATE COLUMN ENCRYPTION KEY +``` + diff --git a/content/zh/docs/Developerguide/CREATE-CONVERSION.md b/content/zh/docs/Developerguide/CREATE-CONVERSION.md index 56c8fe8ed..75f1070ac 100644 --- a/content/zh/docs/Developerguide/CREATE-CONVERSION.md +++ b/content/zh/docs/Developerguide/CREATE-CONVERSION.md @@ -1,60 +1,60 @@ -# CREATE CONVERSION - -## 功能描述 - -定义一种两个字符集编码之间的新转换。 - -## 注意事项 - -- 标记为DEFAULT的转换将被自动地用于客户端和服务器之间的编码转换。为了支持这种用法,必须定义两个转换(从编码A到B以及从编码B到A)。 -- 要创建一个转换,必须拥有该函数上的EXECUTE特权以及目标模式上的CREATE特权。 -- 源编码和目标编码都不可以使SQL\_ASCII,因为在涉及SQL\_ASCII “encoding”的情况下,副武器的行为是硬连接的。 -- 使用DROP CONVERSION可以一出用户定义的转换。 - -## 语法格式 - -``` -CREATE [ DEFAULT ] CONVERSION name - FOR source_encoding TO dest_encoding FROM function_name -``` - -## 参数说明 - -- **DEFAULT** - - DEFAULT子句表示这个转换是从原编码到目标编码的默认转换。在一个模式中对于每一个编码对,只应该有一个默认转换。 - -- **name** - - 转换的名称,可以被模式限定。如果没有被模式限定,该转换被定义在当前模式中。在一个模式中,转换名称必须唯一。 - -- **source\_encoding** - - 原编码名称。 - -- **dest\_encoding** - - 目标编码名称。 - -- **function\_name** - - 被用来执行转换的函数。函数名可以被模式限定。如果没有,将在路径中查找该函数。 - - ``` - conv_proc( - integer, -- 原编码ID - integer, -- 目标编码ID - cstring, -- 源字符串(空值终止的C字符串) - internal,-- 目标(用一个空值终止的C字符串填充) - integer -- 源字符串长度 - ) RETURNS void; - ``` - - -## 示例 - -``` ---使用myfunc创建一个编码UTF8到LATIN1的转换。 -CREATE CONVERSION myconv FOR 'URF8' TO 'LATIN1' FROM myfunc; -``` - +# CREATE CONVERSION + +## 功能描述 + +定义一种两个字符集编码之间的新转换。 + +## 注意事项 + +- 标记为 DEFAULT 的转换将被自动地用于客户端和服务器之间的编码转换。为了支持这种用法,必须定义两个转换(从编码 A 到 B 以及从编码 B 到A)。 +- 要创建一个转换,必须拥有该函数上的 EXECUTE 特权以及目标模式上的 CREATE 特权。 +- 源编码和目标编码都不可以使SQL\_ASCII,因为在涉及SQL\_ASCII “encoding”的情况下,副武器的行为是硬连接的。 +- 使用 DROP CONVERSION 可以一出用户定义的转换。 + +## 语法格式 + +``` +CREATE [ DEFAULT ] CONVERSION name + FOR source_encoding TO dest_encoding FROM function_name +``` + +## 参数说明 + +- **DEFAULT** + +DEFAULT 子句表示这个转换是从原编码到目标编码的默认转换。在一个模式中对于每一个编码对,只应该有一个默认转换。 + +- **name** + + 转换的名称,可以被模式限定。如果没有被模式限定,该转换被定义在当前模式中。在一个模式中,转换名称必须唯一。 + +- **source\_encoding** + + 原编码名称。 + +- **dest\_encoding** + + 目标编码名称。 + +- **function\_name** + + 被用来执行转换的函数。函数名可以被模式限定。如果没有,将在路径中查找该函数。 + + ``` + conv_proc( + integer , -- 原编码ID + integer , -- 目标编码ID + cstring , -- 源字符串(空值终止的 C 字符串) + internal ,-- 目标(用一个空值终止的 C 字符串填充) + integer -- 源字符串长度 + ) RETURNS void; + ``` + + +## 示例 + +``` +--使用 myfunc 创建一个编码 UTF8 到 LATIN1 的转换。 +CREATE CONVERSION myconv FOR 'URF8' TO 'LATIN1' FROM myfunc; +``` + diff --git a/content/zh/docs/Developerguide/CREATE-DATA-SOURCE.md b/content/zh/docs/Developerguide/CREATE-DATA-SOURCE.md index 3574d47c6..e1fb46490 100644 --- a/content/zh/docs/Developerguide/CREATE-DATA-SOURCE.md +++ b/content/zh/docs/Developerguide/CREATE-DATA-SOURCE.md @@ -1,92 +1,92 @@ -# CREATE DATA SOURCE - -## 功能描述 - -创建一个新的外部数据源对象,该对象用于定义openGauss要连接的目标库信息。 - -## 注意事项 - -- Data Source名称在数据库中需唯一,遵循标识符命名规范,长度限制为63字节,过长则会被截断。 -- 只有系统管理员或初始用户才有权限创建Data Source对象。且创建该对象的用户为其默认属主。 -- 当在OPTIONS中出现password选项时,需要保证openGauss每个节点的$GAUSSHOME/bin目录下存在datasource.key.cipher和datasource.key.rand文件,如果不存在这两个文件,请使用gs\_guc工具生成并使用gs\_ssh工具发布到openGauss每个节点的$GAUSSHOME/bin目录下。 - -## 语法格式 - -``` -CREATE DATA SOURCE src_name - [TYPE 'type_str'] - [VERSION {'version_str' | NULL}] - [OPTIONS (optname 'optvalue' [, ...])]; -``` - -## 参数说明 - -- **src\_name** - - 新建Data Source对象的名称,需在数据库内部唯一。 - - 取值范围:字符串,要符标识符的命名规范。 - -- **TYPE** - - 新建Data Source对象的类型,可缺省。 - - 取值范围:空串或非空字符串。 - -- **VERSION** - - 新建Data Source对象的版本号,可缺省或NULL值。 - - 取值范围:空串或非空字符串或NULL。 - -- **OPTIONS** - - Data Source对象的选项字段,创建时可省略,如若指定,其关键字如下: - - - optname - - 选项名称。 - - 取值范围:dsn、 username、 password、 encoding。不区分大小写。 - - - dsn对应odbc配置文件中的DSN。 - - username/password对应连接目标库的用户名和密码。 - - openGauss在后台会对用户输入的username/password加密以保证安全性。该加密所需密钥文件需要使用gs\_guc工具生成并使用gs\_ssh工具发布到openGauss每个节点的$GAUSSHOME/bin目录下。username/password不应当包含'encryptOpt'前缀,否则会被认为是加密后的密文。 - - - encoding表示与目标库交互的字符串编码方式(含发送的SQL语句和返回的字符类型数据),此处创建对象时不检查encoding取值的合法性,能否正确编解码取决于用户提供的编码方式是否在数据库本身支持的字符编码范围内。 - - - optvalue - - 选项值。 - - 取值范围:空或者非空字符串。 - - - -## 示例 - -``` ---创建一个空的Data Source对象,不含任何信息。 -openGauss=# CREATE DATA SOURCE ds_test1; - ---创建一个Data Source对象,含TYPE信息,VERSION为NULL。 -openGauss=# CREATE DATA SOURCE ds_test2 TYPE 'MPPDB' VERSION NULL; - ---创建一个Data Source对象,仅含OPTIONS。 -openGauss=# CREATE DATA SOURCE ds_test3 OPTIONS (dsn 'openGauss', encoding 'utf8'); - ---创建一个Data Source对象,含TYPE, VERSION, OPTIONS。 -openGauss=# CREATE DATA SOURCE ds_test4 TYPE 'unknown' VERSION '11.2.3' OPTIONS (dsn 'openGauss', username 'userid', password 'pwd@123456', encoding ''); - ---删除Data Source对象。 -openGauss=# DROP DATA SOURCE ds_test1; -openGauss=# DROP DATA SOURCE ds_test2; -openGauss=# DROP DATA SOURCE ds_test3; -openGauss=# DROP DATA SOURCE ds_test4; -``` - -## 相关链接 - -[ALTER DATA SOURCE](ALTER-DATA-SOURCE.md), [DROP DATA SOURCE](DROP-DATA-SOURCE.md) - +# CREATE DATA SOURCE + +## 功能描述 + +创建一个新的外部数据源对象,该对象用于定义 openGauss 要连接的目标库信息。 + +## 注意事项 + +- Data Source名称在数据库中需唯一,遵循标识符命名规范,长度限制为 63 字节,过长则会被截断。 +- 只有系统管理员或初始用户才有权限创建 Data Source 对象。且创建该对象的用户为其默认属主。 +- 当在 OPTIONS 中出现 password 选项时,需要保证 openGauss 每个节点的$GAUSSHOME/bin目录下存在datasource.key.cipher和datasource.key.rand文件,如果不存在这两个文件,请使用gs\_guc工具生成并使用gs\_ssh工具发布到 openGauss 每个节点的$GAUSSHOME/bin目录下。 + +## 语法格式 + +``` +CREATE DATA SOURCE src_name + [TYPE 'type_str'] + [VERSION {'version_str' | NULL}] + [OPTIONS (optname 'optvalue' [, ...])]; +``` + +## 参数说明 + +- **src\_name** + + 新建 Data Source 对象的名称,需在数据库内部唯一。 + + 取值范围:字符串,要符标识符的命名规范。 + +- **TYPE** + + 新建 Data Source 对象的类型,可缺省。 + + 取值范围:空串或非空字符串。 + +- **VERSION** + + 新建 Data Source 对象的版本号,可缺省或 NULL 值。 + + 取值范围:空串或非空字符串或 NULL 。 + +- **OPTIONS** + +Data Source 对象的选项字段,创建时可省略,如若指定,其关键字如下: + + - optname + + 选项名称。 + + 取值范围:dsn、 username、 password、 encoding。不区分大小写。 + + - dsn对应 odbc 配置文件中的 DSN 。 + - username/password对应连接目标库的用户名和密码。 + +openGauss 在后台会对用户输入的username/password加密以保证安全性。该加密所需密钥文件需要使用gs\_guc工具生成并使用gs\_ssh工具发布到 openGauss 每个节点的$GAUSSHOME/bin目录下。username/password不应当包含'encryptOpt'前缀,否则会被认为是加密后的密文。 + + - encoding表示与目标库交互的字符串编码方式(含发送的 SQL 语句和返回的字符类型数据),此处创建对象时不检查 encoding 取值的合法性,能否正确编解码取决于用户提供的编码方式是否在数据库本身支持的字符编码范围内。 + + - optvalue + + 选项值。 + + 取值范围:空或者非空字符串。 + + + +## 示例 + +``` +--创建一个空的 Data Source 对象,不含任何信息。 +openGauss=# CREATE DATA SOURCE ds_test1; + +--创建一个 Data Source 对象,含 TYPE 信息, VERSION 为 NULL 。 +openGauss=# CREATE DATA SOURCE ds_test2 TYPE 'MPPDB' VERSION NULL; + +--创建一个 Data Source 对象,仅含 OPTIONS 。 +openGauss=# CREATE DATA SOURCE ds_test3 OPTIONS (dsn 'openGauss', encoding 'utf8'); + +--创建一个 Data Source 对象,含 TYPE , VERSION , OPTIONS 。 +openGauss=# CREATE DATA SOURCE ds_test4 TYPE 'unknown' VERSION '11.2.3' OPTIONS (dsn 'openGauss', username 'userid', password 'pwd@123456', encoding ''); + +--删除 Data Source 对象。 +openGauss=# DROP DATA SOURCE ds_test1; +openGauss=# DROP DATA SOURCE ds_test2; +openGauss=# DROP DATA SOURCE ds_test3; +openGauss=# DROP DATA SOURCE ds_test4; +``` + +## 相关链接 + +[ALTER DATA SOURCE](ALTER-DATA-SOURCE.md), [DROP DATA SOURCE](DROP-DATA-SOURCE.md) + diff --git a/content/zh/docs/Developerguide/CREATE-DATABASE.md b/content/zh/docs/Developerguide/CREATE-DATABASE.md index 986ea55be..cc495f3b2 100644 --- a/content/zh/docs/Developerguide/CREATE-DATABASE.md +++ b/content/zh/docs/Developerguide/CREATE-DATABASE.md @@ -1,837 +1,837 @@ -# CREATE DATABASE - -## 功能描述 - -创建一个新的数据库。缺省情况下新数据库将通过复制标准系统数据库template0来创建,且仅支持使用template0来创建。 - -## 注意事项 - -- 只有拥有CREATEDB权限的用户才可以创建新数据库,系统管理员默认拥有此权限。 -- 不能在事务块中执行创建数据库语句。 -- 在创建数据库过程中,出现类似“Permission denied”的错误提示,可能是由于文件系统上数据目录的权限不足。出现类似“No space left on device”的错误提示,可能是由于磁盘满引起的。 - -## 语法格式 - -``` -CREATE DATABASE database_name - [ [ WITH ] { [ OWNER [=] user_name ] | - [ TEMPLATE [=] template ] | - [ ENCODING [=] encoding ] | - [ LC_COLLATE [=] lc_collate ] | - [ LC_CTYPE [=] lc_ctype ] | - [ DBCOMPATIBILITY [=] compatibilty_type ] | - [ TABLESPACE [=] tablespace_name ] | - [ CONNECTION LIMIT [=] connlimit ]}[...] ]; -``` - -## 参数说明 - -- **database\_name** - - 数据库名称。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **OWNER \[ = \] user\_name** - - 数据库所有者。缺省时,新数据库的所有者是当前用户。 - - 取值范围:已存在的用户名。 - -- **TEMPLATE \[ = \] template** - - 模板名。即从哪个模板创建新数据库。openGauss采用从模板数据库复制的方式来创建新的数据库。初始时,openGauss包含两个模板数据库template0、template1,以及一个默认的用户数据库postgres。 - - 取值范围:仅template0。 - -- **ENCODING \[ = \] encoding** - - 指定数据库使用的字符编码,可以是字符串(如'SQL\_ASCII')、整数编号。 - - 不指定时,默认使用模版数据库的编码。模板数据库template0和template1的编码默认与操作系统环境相关。template1不允许修改字符编码,因此若要变更编码,请使用template0创建数据库。 - - 常用取值:GBK、UTF8、Latin1。 - - **表 1** openGauss字符集 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

描述

-

语言

-

是否服务器端?

-

ICU?

-

字节/字符

-

别名

-

BIG5

-

Big Five

-

繁体中文

-

-

-

1-2

-

WIN950,Windows950

-

EUC_CN

-

扩展UNIX编码-中国

-

简体中文

-

-

-

1-3

-

-

-

EUC_JP

-

扩展UNIX编码-日本

-

日文

-

-

-

1-3

-

-

-

EUC_JIS_2004

-

扩展UNIX编码-日本, JIS X 0213

-

日文

-

-

-

1-3

-

-

-

EUC_KR

-

扩展UNIX编码-韩国

-

韩文

-

-

-

1-3

-

-

-

EUC_TW

-

扩展UNIX编码-台湾

-

繁体中文,台湾话

-

-

-

1-3

-

-

-

GB18030

-

国家标准

-

中文

-

-

-

1-4

-

-

-

GBK

-

扩展国家标准

-

简体中文

-

-

-

1-2

-

WIN936,Windows936

-

ISO_8859_5

-

ISO 8859-5, ECMA 113

-

拉丁语/西里尔语

-

-

-

1

-

-

-

ISO_8859_6

-

ISO 8859-6, ECMA 114

-

拉丁语/阿拉伯语

-

-

-

1

-

-

-

ISO_8859_7

-

ISO 8859-7, ECMA 118

-

拉丁语/希腊语

-

-

-

1

-

-

-

ISO_8859_8

-

ISO 8859-8, ECMA 121

-

拉丁语/希伯来语

-

-

-

1

-

-

-

JOHAB

-

JOHAB

-

韩语

-

-

-

1-3

-

-

-

KOI8R

-

KOI8-R

-

西里尔语(俄语)

-

-

-

1

-

KOI8

-

KOI8U

-

KOI8-U

-

西里尔语(乌克兰语)

-

-

-

1

-

-

-

LATIN1

-

ISO 8859-1, ECMA 94

-

西欧

-

-

-

1

-

ISO88591

-

LATIN2

-

ISO 8859-2, ECMA 94

-

中欧

-

-

-

1

-

ISO88592

-

LATIN3

-

ISO 8859-3, ECMA 94

-

南欧

-

-

-

1

-

ISO88593

-

LATIN4

-

ISO 8859-4, ECMA 94

-

北欧

-

-

-

1

-

ISO88594

-

LATIN5

-

ISO 8859-9, ECMA 128

-

土耳其语

-

-

-

1

-

ISO88599

-

LATIN6

-

ISO 8859-10, ECMA 144

-

日耳曼语

-

-

-

1

-

ISO885910

-

LATIN7

-

ISO 8859-13

-

波罗的海

-

-

-

1

-

ISO885913

-

LATIN8

-

ISO 8859-14

-

凯尔特语

-

-

-

1

-

ISO885914

-

LATIN9

-

ISO 8859-15

-

带欧罗巴和口音的LATIN1

-

-

-

1

-

ISO885915

-

LATIN10

-

ISO 8859-16, ASRO SR 14111

-

罗马尼亚语

-

-

-

1

-

ISO885916

-

MULE_INTERNAL

-

Mule内部编码

-

多语种编辑器

-

-

-

1-4

-

-

-

SJIS

-

Shift JIS

-

日语

-

-

-

1-2

-

Mskanji,ShiftJIS,WIN932,Windows932

-

SHIFT_JIS_2004

-

Shift JIS, JIS X 0213

-

日语

-

-

-

1-2

-

-

-

SQL_ASCII

-

未指定(见文本)

-

任意

-

-

-

1

-

-

-

UHC

-

统一韩语编码

-

韩语

-

-

-

1-2

-

WIN949,Windows949

-

UTF8

-

Unicode, 8-bit

-

所有

-

-

-

1-4

-

Unicode

-

WIN866

-

Windows CP866

-

西里尔语

-

-

-

1

-

ALT

-

WIN874

-

Windows CP874

-

泰语

-

-

-

1

-

-

-

WIN1250

-

Windows CP1250

-

中欧

-

-

-

1

-

-

-

WIN1251

-

Windows CP1251

-

西里尔语

-

-

-

1

-

WIN

-

WIN1252

-

Windows CP1252

-

西欧

-

-

-

1

-

-

-

WIN1253

-

Windows CP1253

-

希腊语

-

-

-

1

-

-

-

WIN1254

-

Windows CP1254

-

土耳其语

-

-

-

1

-

-

-

WIN1255

-

Windows CP1255

-

希伯来语

-

-

-

1

-

-

-

WIN1256

-

Windows CP1256

-

阿拉伯语

-

-

-

1

-

-

-

WIN1257

-

Windows CP1257

-

波罗的海

-

-

-

1

-

-

-

WIN1258

-

Windows CP1258

-

越南语

-

-

-

1

-

ABC, TCVN,TCVN5712,VSCII

-
- - >![](public_sys-resources/icon-caution.gif) **注意:** - >需要注意并非所有的客户端API都支持上面列出的字符集。 - >SQL\_ASCII设置与其他设置表现得相当不同。如果服务器字符集是SQL\_ASCII,服务器把字节值0-127根据 ASCII标准解释,而字节值128-255则当作无法解析的字符。如果设置为SQL\_ASCII,就不会有编码转换。因此,这个设置基本不是用来声明所使用的指定编码, 因为这个声明会忽略编码。在大多数情况下,如果你使用了任何非ASCII数据,那么使用 SQL\_ASCII设置都是不明智的,因为OpenGauss将无法帮助你转换或者校验非ASCII字符。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >- 指定新的数据库字符集编码必须与所选择的本地环境中(LC\_COLLATE和LC\_CTYPE)的设置兼容。 - - >- 当指定的字符编码集为GBK时,部分中文生僻字无法直接作为对象名。这是因为GBK第二个字节的编码范围在0x40-0x7E之间时,字节编码与ASCII字符@A-Z\[\\\]^\_\`a-z\{|\}重叠。其中@\[\\\]^\_'\{|\}是数据库中的操作符,直接作为对象名时,会语法报错。例如“侤”字,GBK16进制编码为0x8240,第二个字节为0x40,与ASCII“@”符号编码相同,因此无法直接作为对象名使用。如果确实要使用,可以在创建和访问对象时,通过增加双引号来规避这个问题。 - >- 若客户端编码为A,服务器端编码为B,则需要满足数据库中存在编码格式A与B的转换,例如:若服务器端编码为gb18030,由于当前数据库不支持gb18030与gbk的相互转换,所以此时设置客户端编码格式为gbk时,会报错“Conversion between GB18030 and GBK is not supported.”。数据库能够支持的所有的编码格式转换详见系统表pg_conversion。 - -- **LC\_COLLATE \[ = \] lc\_collate** - - 指定新数据库使用的字符集。例如,通过lc\_collate = 'zh\_CN.gbk'设定该参数。 - - 该参数的使用会影响到对字符串的排序顺序(如使用ORDER BY执行,以及在文本列上使用索引的顺序)。默认是使用模板数据库的排序顺序。 - - 取值范围:有效的排序类型。 - -- **LC\_CTYPE \[ = \] lc\_ctype** - - 指定新数据库使用的字符分类。例如,通过lc\_ctype = 'zh\_CN.gbk'设定该参数。该参数的使用会影响到字符的分类,如大写、小写和数字。默认是使用模板数据库的字符分类。 - - 取值范围:有效的字符分类。 - -- **DBCOMPATIBILITY \[ = \] compatibility\_type** - - 指定兼容的数据库的类型,默认兼容O。 - - 取值范围:A、B、C、PG。分别表示兼容O、MY、TD和POSTGRES。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- A兼容性下,数据库将空字符串作为NULL处理,数据类型DATE会被替换为TIMESTAMP\(0\) WITHOUT TIME ZONE。 - - >- 将字符串转换成整数类型时,如果输入不合法,B兼容性会将输入转换为0,而其它兼容性则会报错。 - - >- PG兼容性下,CHAR和VARCHAR以字符为计数单位,其它兼容性以字节为计数单位。例如,对于UTF-8字符集,CHAR\(3\)在PG兼容性下能存放3个中文字符,而在其它兼容性下只能存放1个中文字符。 - -- **TABLESPACE \[ = \] tablespace\_name** - - 指定数据库对应的表空间。 - - 取值范围:已存在表空间名。 - -- **CONNECTION LIMIT \[ = \] connlimit** - - 数据库可以接受的并发连接数。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >- 系统管理员不受此参数的限制。 - - >- connlimit数据库主节点单独统计,openGauss整体的连接数 = connlimit \* 当前正常数据库主节点个数。 - - 取值范围:\>=-1的整数。默认值为-1,表示没有限制。 - - -有关字符编码的一些限制: - -- 若区域设置为C(或POSIX),则允许所有的编码类型,但是对于其他的区域设置,字符编码必须和区域设置相同。 -- 若字符编码方式是SQL\_ASCII,并且修改者为管理员用户时,则字符编码可以和区域设置不相同。 -- 编码和区域设置必须匹配模板数据库,除了将template0当作模板。 因为其他数据库可能会包含不匹配指定编码的数据,或者可能包含排序顺序受LC\_COLLATE和LC\_CTYPE影响的索引。复制这些数据会导致在新数据库中的索引失效。template0是不包含任何会受到影响的数据或者索引。 - -## 示例 - -``` ---创建jim和tom用户。 -openGauss=# CREATE USER jim PASSWORD 'xxxxxxxxx'; -openGauss=# CREATE USER tom PASSWORD 'xxxxxxxxx'; - ---创建一个GBK编码的数据库music(本地环境的编码格式必须也为GBK)。 -openGauss=# CREATE DATABASE music ENCODING 'GBK' template = template0; - ---创建数据库music2,并指定所有者为jim。 -openGauss=# CREATE DATABASE music2 OWNER jim; - ---用模板template0创建数据库music3,并指定所有者为jim。 -openGauss=# CREATE DATABASE music3 OWNER jim TEMPLATE template0; - ---设置music数据库的连接数为10。 -openGauss=# ALTER DATABASE music CONNECTION LIMIT= 10; - ---将music名称改为music4。 -openGauss=# ALTER DATABASE music RENAME TO music4; - ---将数据库music2的所属者改为tom。 -openGauss=# ALTER DATABASE music2 OWNER TO tom; - ---设置music3的表空间为PG_DEFAULT。 -openGauss=# ALTER DATABASE music3 SET TABLESPACE PG_DEFAULT; - ---关闭在数据库music3上缺省的索引扫描。 -openGauss=# ALTER DATABASE music3 SET enable_indexscan TO off; - ---重置enable_indexscan参数。 -openGauss=# ALTER DATABASE music3 RESET enable_indexscan; - ---删除数据库。 -openGauss=# DROP DATABASE music2; -openGauss=# DROP DATABASE music3; -openGauss=# DROP DATABASE music4; - ---删除jim和tom用户。 -openGauss=# DROP USER jim; -openGauss=# DROP USER tom; - ---创建兼容TD格式的数据库。 -openGauss=# CREATE DATABASE td_compatible_db DBCOMPATIBILITY 'C'; - ---创建兼容A格式的数据库。 -openGauss=# CREATE DATABASE ora_compatible_db DBCOMPATIBILITY 'A'; - ---删除兼容TD、A格式的数据库。 -openGauss=# DROP DATABASE td_compatible_db; -openGauss=# DROP DATABASE ora_compatible_db; -``` - -## 相关链接 - -[ALTER DATABASE](ALTER-DATABASE.md),[DROP DATABASE](DROP-DATABASE.md) - -## 优化建议 - -- **create database** - - 事务中不支持创建database。 - - -- **ENCODING LC\_COLLATE LC\_CTYPE** - - 当新建数据库Encoding、LC-Collate 或LC\_Ctype与模板数据库(SQL\_ASCII)不匹配(为'GBK' /'UTF8'/'LATIN1')时,必须指定template \[=\] template0。 - - +# CREATE DATABASE + +## 功能描述 + +创建一个新的数据库。缺省情况下新数据库将通过复制标准系统数据库 template0 来创建,且仅支持使用 template0 来创建。 + +## 注意事项 + +- 只有拥有 CREATEDB 权限的用户才可以创建新数据库,系统管理员默认拥有此权限。 +- 不能在事务块中执行创建数据库语句。 +- 在创建数据库过程中,出现类似“Permission denied”的错误提示,可能是由于文件系统上数据目录的权限不足。出现类似“No space left on device”的错误提示,可能是由于磁盘满引起的。 + +## 语法格式 + +``` +CREATE DATABASE database_name + [ [ WITH ] { [ OWNER [=] user_name ] | + [ TEMPLATE [=] template ] | + [ ENCODING [=] encoding ] | + [ LC_COLLATE [=] lc_collate ] | + [ LC_CTYPE [=] lc_ctype ] | + [ DBCOMPATIBILITY [=] compatibilty_type ] | + [ TABLESPACE [=] tablespace_name ] | + [ CONNECTION LIMIT [=] connlimit ]}[...] ]; +``` + +## 参数说明 + +- **database\_name** + + 数据库名称。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **OWNER \[ = \] user\_name** + + 数据库所有者。缺省时,新数据库的所有者是当前用户。 + + 取值范围:已存在的用户名。 + +- **TEMPLATE \[ = \] template** + + 模板名。即从哪个模板创建新数据库。 openGauss 采用从模板数据库复制的方式来创建新的数据库。初始时, openGauss 包含两个模板数据库template0、template1,以及一个默认的用户数据库 postgres 。 + + 取值范围:仅 template0 。 + +- **ENCODING \[ = \] encoding** + + 指定数据库使用的字符编码,可以是字符串(如'SQL\_ASCII')、整数编号。 + + 不指定时,默认使用模版数据库的编码。模板数据库 template0 和 template1 的编码默认与操作系统环境相关。 template1 不允许修改字符编码,因此若要变更编码,请使用 template0 创建数据库。 + + 常用取值:GBK、UTF8、Latin1。 + + **表 1** openGauss字符集 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

描述

+

语言

+

是否服务器端?

+

ICU?

+

字节/字符

+

别名

+

BIG5

+

Big Five

+

繁体中文

+

+

+

1-2

+

WIN950,Windows950

+

EUC_CN

+

扩展 UNIX 编码-中国

+

简体中文

+

+

+

1-3

+

-

+

EUC_JP

+

扩展 UNIX 编码-日本

+

日文

+

+

+

1-3

+

-

+

EUC_JIS_2004

+

扩展 UNIX 编码-日本, JIS X 0213

+

日文

+

+

+

1-3

+

-

+

EUC_KR

+

扩展 UNIX 编码-韩国

+

韩文

+

+

+

1-3

+

-

+

EUC_TW

+

扩展 UNIX 编码-台湾

+

繁体中文,台湾话

+

+

+

1-3

+

-

+

GB18030

+

国家标准

+

中文

+

+

+

1-4

+

-

+

GBK

+

扩展国家标准

+

简体中文

+

+

+

1-2

+

WIN936,Windows936

+

ISO_8859_5

+

ISO 8859-5, ECMA 113

+

拉丁语/西里尔语

+

+

+

1

+

-

+

ISO_8859_6

+

ISO 8859-6, ECMA 114

+

拉丁语/阿拉伯语

+

+

+

1

+

-

+

ISO_8859_7

+

ISO 8859-7, ECMA 118

+

拉丁语/希腊语

+

+

+

1

+

-

+

ISO_8859_8

+

ISO 8859-8, ECMA 121

+

拉丁语/希伯来语

+

+

+

1

+

-

+

JOHAB

+

JOHAB

+

韩语

+

+

+

1-3

+

-

+

KOI8R

+

KOI8-R

+

西里尔语(俄语)

+

+

+

1

+

KOI8

+

KOI8U

+

KOI8-U

+

西里尔语(乌克兰语)

+

+

+

1

+

-

+

LATIN1

+

ISO 8859-1, ECMA 94

+

西欧

+

+

+

1

+

ISO88591

+

LATIN2

+

ISO 8859-2, ECMA 94

+

中欧

+

+

+

1

+

ISO88592

+

LATIN3

+

ISO 8859-3, ECMA 94

+

南欧

+

+

+

1

+

ISO88593

+

LATIN4

+

ISO 8859-4, ECMA 94

+

北欧

+

+

+

1

+

ISO88594

+

LATIN5

+

ISO 8859-9, ECMA 128

+

土耳其语

+

+

+

1

+

ISO88599

+

LATIN6

+

ISO 8859-10, ECMA 144

+

日耳曼语

+

+

+

1

+

ISO885910

+

LATIN7

+

ISO 8859-13

+

波罗的海

+

+

+

1

+

ISO885913

+

LATIN8

+

ISO 8859-14

+

凯尔特语

+

+

+

1

+

ISO885914

+

LATIN9

+

ISO 8859-15

+

带欧罗巴和口音的LATIN1

+

+

+

1

+

ISO885915

+

LATIN10

+

ISO 8859-16, ASRO SR 14111

+

罗马尼亚语

+

+

+

1

+

ISO885916

+

MULE_INTERNAL

+

Mule内部编码

+

多语种编辑器

+

+

+

1-4

+

-

+

SJIS

+

Shift JIS

+

日语

+

+

+

1-2

+

Mskanji, ShiftJIS , WIN932 ,Windows932

+

SHIFT_JIS_2004

+

Shift JIS, JIS X 0213

+

日语

+

+

+

1-2

+

-

+

SQL_ASCII

+

未指定(见文本)

+

任意

+

+

+

1

+

-

+

UHC

+

统一韩语编码

+

韩语

+

+

+

1-2

+

WIN949,Windows949

+

UTF8

+

Unicode, 8-bit

+

所有

+

+

+

1-4

+

Unicode

+

WIN866

+

Windows CP866

+

西里尔语

+

+

+

1

+

ALT

+

WIN874

+

Windows CP874

+

泰语

+

+

+

1

+

-

+

WIN1250

+

Windows CP1250

+

中欧

+

+

+

1

+

-

+

WIN1251

+

Windows CP1251

+

西里尔语

+

+

+

1

+

WIN

+

WIN1252

+

Windows CP1252

+

西欧

+

+

+

1

+

-

+

WIN1253

+

Windows CP1253

+

希腊语

+

+

+

1

+

-

+

WIN1254

+

Windows CP1254

+

土耳其语

+

+

+

1

+

-

+

WIN1255

+

Windows CP1255

+

希伯来语

+

+

+

1

+

-

+

WIN1256

+

Windows CP1256

+

阿拉伯语

+

+

+

1

+

-

+

WIN1257

+

Windows CP1257

+

波罗的海

+

+

+

1

+

-

+

WIN1258

+

Windows CP1258

+

越南语

+

+

+

1

+

ABC, TCVN , TCVN5712 ,VSCII

+
+ + >![](public_sys-resources/icon-caution.gif) **注意:** + >需要注意并非所有的客户端 API 都支持上面列出的字符集。 + >SQL\_ASCII设置与其他设置表现得相当不同。如果服务器字符集是SQL\_ASCII,服务器把字节值0-127根据 ASCII 标准解释,而字节值128-255则当作无法解析的字符。如果设置为SQL\_ASCII,就不会有编码转换。因此,这个设置基本不是用来声明所使用的指定编码, 因为这个声明会忽略编码。在大多数情况下,如果你使用了任何非 ASCII 数据,那么使用 SQL\_ASCII设置都是不明智的,因为 OpenGauss 将无法帮助你转换或者校验非 ASCII 字符。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- 指定新的数据库字符集编码必须与所选择的本地环境中(LC\_COLLATE和LC\_CTYPE)的设置兼容。 + + >- 当指定的字符编码集为 GBK 时,部分中文生僻字无法直接作为对象名。这是因为 GBK 第二个字节的编码范围在0x40-0x7E之间时,字节编码与 ASCII 字符@A-Z\[\\\]^\_\`a-z\{|\}重叠。其中@\[\\\]^\_'\{|\}是数据库中的操作符,直接作为对象名时,会语法报错。例如“侤”字, GBK16 进制编码为 0x8240 ,第二个字节为 0x40 ,与ASCII“@”符号编码相同,因此无法直接作为对象名使用。如果确实要使用,可以在创建和访问对象时,通过增加双引号来规避这个问题。 + >- 若客户端编码为 A ,服务器端编码为 B ,则需要满足数据库中存在编码格式 A 与 B 的转换,例如:若服务器端编码为 gb18030 ,由于当前数据库不支持 gb18030 与 gbk 的相互转换,所以此时设置客户端编码格式为 gbk 时,会报错“Conversion between GB18030 and GBK is not supported.”。数据库能够支持的所有的编码格式转换详见系统表 pg_conversion 。 + +- **LC\_COLLATE \[ = \] lc\_collate** + + 指定新数据库使用的字符集。例如,通过lc\_collate = 'zh\_CN.gbk'设定该参数。 + + 该参数的使用会影响到对字符串的排序顺序(如使用 ORDER BY 执行,以及在文本列上使用索引的顺序)。默认是使用模板数据库的排序顺序。 + + 取值范围:有效的排序类型。 + +- **LC\_CTYPE \[ = \] lc\_ctype** + + 指定新数据库使用的字符分类。例如,通过lc\_ctype = 'zh\_CN.gbk'设定该参数。该参数的使用会影响到字符的分类,如大写、小写和数字。默认是使用模板数据库的字符分类。 + + 取值范围:有效的字符分类。 + +- **DBCOMPATIBILITY \[ = \] compatibility\_type** + + 指定兼容的数据库的类型,默认兼容 O 。 + + 取值范围:A、B、C、PG。分别表示兼容O、MY、TD和 POSTGRES 。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- A兼容性下,数据库将空字符串作为 NULL 处理,数据类型 DATE 会被替换为TIMESTAMP\(0\) WITHOUT TIME ZONE。 + + >- 将字符串转换成整数类型时,如果输入不合法, B 兼容性会将输入转换为 0 ,而其它兼容性则会报错。 + + >- PG兼容性下, CHAR 和 VARCHAR 以字符为计数单位,其它兼容性以字节为计数单位。例如,对于UTF-8字符集,CHAR\(3\)在 PG 兼容性下能存放 3 个中文字符,而在其它兼容性下只能存放 1 个中文字符。 + +- **TABLESPACE \[ = \] tablespace\_name** + + 指定数据库对应的表空间。 + + 取值范围:已存在表空间名。 + +- **CONNECTION LIMIT \[ = \] connlimit** + + 数据库可以接受的并发连接数。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- 系统管理员不受此参数的限制。 + + >- connlimit数据库主节点单独统计, openGauss 整体的连接数 = connlimit \* 当前正常数据库主节点个数。 + + 取值范围:\>=-1的整数。默认值为-1,表示没有限制。 + + +有关字符编码的一些限制: + +- 若区域设置为C(或POSIX),则允许所有的编码类型,但是对于其他的区域设置,字符编码必须和区域设置相同。 +- 若字符编码方式是SQL\_ASCII,并且修改者为管理员用户时,则字符编码可以和区域设置不相同。 +- 编码和区域设置必须匹配模板数据库,除了将 template0 当作模板。 因为其他数据库可能会包含不匹配指定编码的数据,或者可能包含排序顺序受LC\_COLLATE和LC\_CTYPE影响的索引。复制这些数据会导致在新数据库中的索引失效。 template0 是不包含任何会受到影响的数据或者索引。 + +## 示例 + +``` +--创建 jim 和 tom 用户。 +openGauss=# CREATE USER jim PASSWORD 'xxxxxxxxx'; +openGauss=# CREATE USER tom PASSWORD 'xxxxxxxxx'; + +--创建一个 GBK 编码的数据库music(本地环境的编码格式必须也为GBK)。 +openGauss=# CREATE DATABASE music ENCODING 'GBK' template = template0; + +--创建数据库 music2 ,并指定所有者为 jim 。 +openGauss=# CREATE DATABASE music2 OWNER jim; + +--用模板 template0 创建数据库 music3 ,并指定所有者为 jim 。 +openGauss=# CREATE DATABASE music3 OWNER jim TEMPLATE template0; + +--设置 music 数据库的连接数为 10 。 +openGauss=# ALTER DATABASE music CONNECTION LIMIT= 10; + +--将 music 名称改为 music4 。 +openGauss=# ALTER DATABASE music RENAME TO music4; + +--将数据库 music2 的所属者改为 tom 。 +openGauss=# ALTER DATABASE music2 OWNER TO tom; + +--设置 music3 的表空间为 PG_DEFAULT 。 +openGauss=# ALTER DATABASE music3 SET TABLESPACE PG_DEFAULT; + +--关闭在数据库 music3 上缺省的索引扫描。 +openGauss=# ALTER DATABASE music3 SET enable_indexscan TO off; + +--重置 enable_indexscan 参数。 +openGauss=# ALTER DATABASE music3 RESET enable_indexscan; + +--删除数据库。 +openGauss=# DROP DATABASE music2; +openGauss=# DROP DATABASE music3; +openGauss=# DROP DATABASE music4; + +--删除 jim 和 tom 用户。 +openGauss=# DROP USER jim; +openGauss=# DROP USER tom; + +--创建兼容 TD 格式的数据库。 +openGauss=# CREATE DATABASE td_compatible_db DBCOMPATIBILITY 'C'; + +--创建兼容 A 格式的数据库。 +openGauss=# CREATE DATABASE ora_compatible_db DBCOMPATIBILITY 'A'; + +--删除兼容TD、A格式的数据库。 +openGauss=# DROP DATABASE td_compatible_db; +openGauss=# DROP DATABASE ora_compatible_db; +``` + +## 相关链接 + +[ALTER DATABASE](ALTER-DATABASE.md),[DROP DATABASE](DROP-DATABASE.md) + +## 优化建议 + +- **create database** + + 事务中不支持创建 database 。 + + +- **ENCODING LC\_COLLATE LC\_CTYPE** + + 当新建数据库Encoding、LC-Collate 或LC\_Ctype与模板数据库(SQL\_ASCII)不匹配(为'GBK' /'UTF8'/'LATIN1')时,必须指定template \[=\] template0。 + + diff --git a/content/zh/docs/Developerguide/CREATE-DIRECTORY.md b/content/zh/docs/Developerguide/CREATE-DIRECTORY.md index dcd5ce46a..240465b72 100644 --- a/content/zh/docs/Developerguide/CREATE-DIRECTORY.md +++ b/content/zh/docs/Developerguide/CREATE-DIRECTORY.md @@ -1,55 +1,55 @@ -# CREATE DIRECTORY - -## 功能描述 - -使用CREATE DIRECTORY语句创建一个目录对象,该目录对象定义了服务器文件系统上目录的别名,用于存放用户使用的数据文件。 - -## 注意事项 - -- 当enable_access_server_directory=off时,只允许初始用户创建directory对象;当enable_access_server_directory=on时,具有SYSADMIN权限的用户和继承了内置角色gs_role_directory_create权限的用户可以创建directory对象。 -- 创建用户默认拥有此路径的READ和WRITE操作权限。 -- 目录的默认owner为创建directory的用户。 -- 以下路径禁止创建: - - 路径含特殊字符。 - - 路径是相对路径。 - - 路径是符号连接。 - -- 创建目录时会进行以下合法性校验: - - 创建时会检查添加路径是否为操作系统实际存在路径,如不存在会提示用户使用风险。 - - 创建时会校验数据库初始化(omm)用户对于添加路径的权限\(即操作系统目录权限,读/写/执行 - R/W/X\),如果权限不全,会提示用户使用风险。 - -- 在openGauss环境下用户指定的路径需要用户保证各节点上路径的一致性,否则在不同节点上执行会产生找不到路径的问题。 - -## 语法格式 - -``` -CREATE [OR REPLACE] DIRECTORY directory_name -AS 'path_name'; -``` - -## 参数说明 - -- **directory\_name** - - 目录名称。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **path\_name** - - 操作系统的路径。 - - 取值范围: 有效的操作系统路径。 - - -## 示例 - -``` ---创建目录。 -openGauss=# CREATE OR REPLACE DIRECTORY dir as '/tmp/'; -``` - -## 相关链接 - -[ALTER DIRECTORY](ALTER-DIRECTORY.md),[DROP DIRECTORY](DROP-DIRECTORY.md) - +# CREATE DIRECTORY + +## 功能描述 + +使用 CREATE DIRECTORY 语句创建一个目录对象,该目录对象定义了服务器文件系统上目录的别名,用于存放用户使用的数据文件。 + +## 注意事项 + +- 当enable_access_server_directory=off时,只允许初始用户创建 directory 对象;当enable_access_server_directory=on时,具有 SYSADMIN 权限的用户和继承了内置角色 gs_role_directory_create 权限的用户可以创建 directory 对象。 +- 创建用户默认拥有此路径的 READ 和 WRITE 操作权限。 +- 目录的默认 owner 为创建 directory 的用户。 +- 以下路径禁止创建: + - 路径含特殊字符。 + - 路径是相对路径。 + - 路径是符号连接。 + +- 创建目录时会进行以下合法性校验: + - 创建时会检查添加路径是否为操作系统实际存在路径,如不存在会提示用户使用风险。 + - 创建时会校验数据库初始化(omm)用户对于添加路径的权限\(即操作系统目录权限,读/写/执行 - R/W/X\),如果权限不全,会提示用户使用风险。 + +- 在 openGauss 环境下用户指定的路径需要用户保证各节点上路径的一致性,否则在不同节点上执行会产生找不到路径的问题。 + +## 语法格式 + +``` +CREATE [OR REPLACE] DIRECTORY directory_name +AS 'path_name'; +``` + +## 参数说明 + +- **directory\_name** + + 目录名称。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **path\_name** + + 操作系统的路径。 + + 取值范围: 有效的操作系统路径。 + + +## 示例 + +``` +--创建目录。 +openGauss=# CREATE OR REPLACE DIRECTORY dir as '/tmp/'; +``` + +## 相关链接 + +[ALTER DIRECTORY](ALTER-DIRECTORY.md),[DROP DIRECTORY](DROP-DIRECTORY.md) + diff --git a/content/zh/docs/Developerguide/CREATE-EXTENSION.md b/content/zh/docs/Developerguide/CREATE-EXTENSION.md index 2e5949ae8..122fefaec 100644 --- a/content/zh/docs/Developerguide/CREATE-EXTENSION.md +++ b/content/zh/docs/Developerguide/CREATE-EXTENSION.md @@ -1,59 +1,59 @@ -# CREATE EXTENSION - -## 功能描述 - -安装一个扩展。 - -## 注意事项 - -- CREATE EXTENSION命令安装一个新的扩展到一个数据库中,必须保证没有同名的扩展已经被安装。 -- 安装一个扩展意味着执行一个扩展的脚本文件,这个脚本会创建一个新的SQL实体,例如函数、数据类型、操作符、和索引支持的方法。 -- 安装扩展需要有和创建他的组件对象相同的权限。对于大多数扩展这意味着需要超户或者数据库所有者的权限,对于后续的权限检查和该扩展脚本所创建的实体,运行CREATE EXTENSION命令的角色将变为扩展的所有者。 - -## 语法格式 - -``` -CREATE EXTENSION [ IF NOT EXISTS ] extension_name -[ WITH ] [ SCHEMA schema_name ] -[ VERSION version ] -[ FROM old_version ] -``` - -## 参数说明 - -- **IF NOT EXISTS** - - 如果系统已经存在一个同名的扩展,不会报错。这种情况下会给出一个提示。请注意该参数不保证系统存在的扩展和现在脚本创建的扩展相同。 - - -- **extension\_name** - - 将被安装扩展的名字。 - - -- **schema\_name** - - 扩展的实例被安装在该模式下,扩展的内容可以被重新安装。指定的模式必须已经存在,如果没有指定,扩展的控制文件也不指定一个模式,这样将使用默认模式。 - - >![](public_sys-resources/icon-caution.gif) **注意:** - >扩展不认为它在任何模式里面:扩展在一个数据库范围内的名字是不受限制的,但是一个扩展的实例是属于一个模式的。 - - -- **version** - - 安装扩展的版本,可以写为一个标识符或者字符串.默认的版本在扩展的控制文件中指定。 - - -- **old\_version** - - 当你想升级安装“old style” 模块中没有的内容时,你必须指定FROM old\_version。这个选项使CREATE EXTENSION 运行一个安装脚本将新的内容安装到扩展中,而不是创建一个新的实体.注意SCHEMA指定了包括这些已存在实体的模式。 - - -## 示例 - -在当前数据库安装hstore扩展: - -``` -CREATE EXTENSION hstore; -``` - +# CREATE EXTENSION + +## 功能描述 + +安装一个扩展。 + +## 注意事项 + +- CREATE EXTENSION命令安装一个新的扩展到一个数据库中,必须保证没有同名的扩展已经被安装。 +- 安装一个扩展意味着执行一个扩展的脚本文件,这个脚本会创建一个新的 SQL 实体,例如函数、数据类型、操作符、和索引支持的方法。 +- 安装扩展需要有和创建他的组件对象相同的权限。对于大多数扩展这意味着需要超户或者数据库所有者的权限,对于后续的权限检查和该扩展脚本所创建的实体,运行 CREATE EXTENSION 命令的角色将变为扩展的所有者。 + +## 语法格式 + +``` +CREATE EXTENSION [ IF NOT EXISTS ] extension_name +[ WITH ] [ SCHEMA schema_name ] +[ VERSION version ] +[ FROM old_version ] +``` + +## 参数说明 + +- **IF NOT EXISTS** + + 如果系统已经存在一个同名的扩展,不会报错。这种情况下会给出一个提示。请注意该参数不保证系统存在的扩展和现在脚本创建的扩展相同。 + + +- **extension\_name** + + 将被安装扩展的名字。 + + +- **schema\_name** + + 扩展的实例被安装在该模式下,扩展的内容可以被重新安装。指定的模式必须已经存在,如果没有指定,扩展的控制文件也不指定一个模式,这样将使用默认模式。 + + >![](public_sys-resources/icon-caution.gif) **注意:** + >扩展不认为它在任何模式里面:扩展在一个数据库范围内的名字是不受限制的,但是一个扩展的实例是属于一个模式的。 + + +- **version** + + 安装扩展的版本,可以写为一个标识符或者字符串.默认的版本在扩展的控制文件中指定。 + + +- **old\_version** + + 当你想升级安装“old style” 模块中没有的内容时,你必须指定FROM old\_version。这个选项使 CREATE EXTENSION 运行一个安装脚本将新的内容安装到扩展中,而不是创建一个新的实体.注意 SCHEMA 指定了包括这些已存在实体的模式。 + + +## 示例 + +在当前数据库安装 hstore 扩展: + +``` +CREATE EXTENSION hstore; +``` + diff --git a/content/zh/docs/Developerguide/CREATE-FOREIGN-TABLE.md b/content/zh/docs/Developerguide/CREATE-FOREIGN-TABLE.md index 408e4ba22..5f545906b 100644 --- a/content/zh/docs/Developerguide/CREATE-FOREIGN-TABLE.md +++ b/content/zh/docs/Developerguide/CREATE-FOREIGN-TABLE.md @@ -1,137 +1,137 @@ -# CREATE FOREIGN TABLE - -## 功能描述 - -创建外表。 - -## 注意事项 - -- 外表中暂不支持使用系统列(如tableoid、ctid等)。 -- 其中Private和Shares模式的外表,需要初始用户和运维模式下(operation_mode)的运维管理员权限。 - -## 语法格式 - -``` -CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [ - column_name type_name [ OPTIONS ( option 'value' [, ... ] ) ] [ COLLATE collation ] [ column_constraint [ ... ] ] - [, ... ] -] ) - SERVER server_name -[ OPTIONS ( option 'value' [, ... ] ) ] - -这里column_constraint 可以是: -[ CONSTRAINT constraint_name ] -{ NOT NULL | - NULL | - DEFAULT default_expr } -``` - -## 参数说明 - -- **IF NOT EXISTS** - - 如果已经存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表关系已存在。 - -- **table\_name** - - 外表的表名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **column\_name** - - 外表中的字段名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **type\_name** - - 字段的数据类型。 - -- **SERVER server\_name** - - 外表的server名称。默认值为mot\_server。 - -- **OPTIONS \( option 'value' \[, ... \] \)** - - 选项与新外部表或外部表中的字段有关。允许的选项名称和值,是由每一个外部数据封装器指定的。 也是通过外部数据封装器的验证函数来验证。重复的选项名称是不被允许的\(尽管表选项和表字段选项可以有相同的名字\)。 - - - oracle\_fdw支持的options包括: - - **table** - - oracle server侧的表名。需要同oracle系统表中记录的表名完全一致,通常是由大写字符组成。 - - - **schema** - - 表所对应的schema(或owner)。需要同oracle系统表中记录的表名完全一致,通常是由大写字符组成。 - - - mysql\_fdw支持的options包括: - - **dbname** - - MySQL的database名称。 - - - **table\_name** - - MySQL侧的表名。 - - - postgres\_fdw支持的options包括: - - **schema\_name** - - 远端server的schema名称。如果不指定的话,将使用外表自身的schema名称作为远端的schema名称。 - - - **table\_name** - - 远端server的表名。如果不指定的话,将使用外表自身的表名作为远端的表名。 - - - **column\_name** - - 远端server的表的列名。如果不指定的话,将使用外表自身的列名作为远端的的表的列名。 - - - file\_fdw支持的options包括: - - - filename - - 指定要读取的文件,必需的参数,且必须是一个绝对路径名。 - - - format - - 远端server的文件格式,支持text/csv/binary/fixed四种格式,和COPY语句的FORMAT选项相同。 - - - header - - 指定的文件是否有标题行,与COPY语句的HEADER选项相同。 - - - delimiter - - 指定文件的分隔符,与COPY的DELIMITER选项相同。 - - - quote - - 指定文件的引用字符,与COPY的QUOTE选项相同。 - - - escape - - 指定文件的转义字符,与COPY的ESCAPE选项相同。 - - - null - - 指定文件的null字符串,与COPY的NULL选项相同。 - - - encoding - - 指定文件的编码,与COPY的ENCODING选项相同。 - - - force\_not\_null - - 这是一个布尔选项。如果为真,则声明字段的值不应该匹配空字符串(也就是,文件级别null选项)。与COPY的 FORCE\_NOT\_NULL选项里的字段相同。 - - - >![](public_sys-resources/icon-note.gif) **说明:** - >file\_fdw更多使用请参见[file\_fdw](file_fdw.md)。 - - - -## 相关链接 - -[ALTER FOREIGN TABLE](ALTER-FOREIGN-TABLE.md),[DROP FOREIGN TABLE](DROP-FOREIGN-TABLE.md) - +# CREATE FOREIGN TABLE + +## 功能描述 + +创建外表。 + +## 注意事项 + +- 外表中暂不支持使用系统列(如tableoid、ctid等)。 +- 其中 Private 和 Shares 模式的外表,需要初始用户和运维模式下(operation_mode)的运维管理员权限。 + +## 语法格式 + +``` +CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [ + column_name type_name [ OPTIONS ( option 'value' [, ... ] ) ] [ COLLATE collation ] [ column_constraint [ ... ] ] + [, ... ] +] ) + SERVER server_name +[ OPTIONS ( option 'value' [, ... ] ) ] + +这里 column_constraint 可以是: +[ CONSTRAINT constraint_name ] +{ NOT NULL | + NULL | + DEFAULT default_expr } +``` + +## 参数说明 + +- **IF NOT EXISTS** + + 如果已经存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表关系已存在。 + +- **table\_name** + + 外表的表名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **column\_name** + + 外表中的字段名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **type\_name** + + 字段的数据类型。 + +- **SERVER server\_name** + + 外表的 server 名称。默认值为mot\_server。 + +- **OPTIONS \( option 'value' \[, ... \] \)** + + 选项与新外部表或外部表中的字段有关。允许的选项名称和值,是由每一个外部数据封装器指定的。 也是通过外部数据封装器的验证函数来验证。重复的选项名称是不被允许的\(尽管表选项和表字段选项可以有相同的名字\)。 + + - oracle\_fdw支持的 options 包括: + - **table** + +oracle server 侧的表名。需要同 oracle 系统表中记录的表名完全一致,通常是由大写字符组成。 + + - **schema** + + 表所对应的schema(或owner)。需要同 oracle 系统表中记录的表名完全一致,通常是由大写字符组成。 + + - mysql\_fdw支持的 options 包括: + - **dbname** + +MySQL 的 database 名称。 + + - **table\_name** + +MySQL 侧的表名。 + + - postgres\_fdw支持的 options 包括: + - **schema\_name** + + 远端 server 的 schema 名称。如果不指定的话,将使用外表自身的 schema 名称作为远端的 schema 名称。 + + - **table\_name** + + 远端 server 的表名。如果不指定的话,将使用外表自身的表名作为远端的表名。 + + - **column\_name** + + 远端 server 的表的列名。如果不指定的话,将使用外表自身的列名作为远端的的表的列名。 + + - file\_fdw支持的 options 包括: + + - filename + + 指定要读取的文件,必需的参数,且必须是一个绝对路径名。 + + - format + + 远端 server 的文件格式,支持text/csv/binary/fixed四种格式,和 COPY 语句的 FORMAT 选项相同。 + + - header + + 指定的文件是否有标题行,与 COPY 语句的 HEADER 选项相同。 + + - delimiter + + 指定文件的分隔符,与 COPY 的 DELIMITER 选项相同。 + + - quote + + 指定文件的引用字符,与 COPY 的 QUOTE 选项相同。 + + - escape + + 指定文件的转义字符,与 COPY 的 ESCAPE 选项相同。 + + - null + + 指定文件的 null 字符串,与 COPY 的 NULL 选项相同。 + + - encoding + + 指定文件的编码,与 COPY 的 ENCODING 选项相同。 + + - force\_not\_null + + 这是一个布尔选项。如果为真,则声明字段的值不应该匹配空字符串(也就是,文件级别 null 选项)。与 COPY 的 FORCE\_NOT\_NULL选项里的字段相同。 + + + >![](public_sys-resources/icon-note.gif) **说明:** + >file\_fdw更多使用请参见[file\_fdw](file_fdw.md)。 + + + +## 相关链接 + +[ALTER FOREIGN TABLE](ALTER-FOREIGN-TABLE.md),[DROP FOREIGN TABLE](DROP-FOREIGN-TABLE.md) + diff --git a/content/zh/docs/Developerguide/CREATE-FUNCTION.md b/content/zh/docs/Developerguide/CREATE-FUNCTION.md index 06c023bd8..1c13aa096 100644 --- a/content/zh/docs/Developerguide/CREATE-FUNCTION.md +++ b/content/zh/docs/Developerguide/CREATE-FUNCTION.md @@ -1,312 +1,312 @@ -# CREATE FUNCTION - -## 功能描述 - -创建一个函数。 - -## 注意事项 - -- 如果创建函数时参数或返回值带有精度,不进行精度检测。 -- 创建函数时,函数定义中对表对象的操作建议都显式指定模式,否则可能会导致函数执行异常。 -- 在创建函数时,函数内部通过SET语句设置current\_schema和search\_path无效。执行完函数search\_path和current\_schema与执行函数前的search\_path和current\_schema保持一致。 -- 如果函数参数中带有出参,SELECT调用函数必须缺省出参,CALL调用函数必须指定出参,对于调用重载的带有PACKAGE属性的函数,CALL调用函数可以缺省出参,具体信息参见[CALL](CALL.md)的示例。 -- 兼容Postgresql风格的函数或者带有PACKAGE属性的函数支持重载。在指定REPLACE的时候,如果参数个数、类型、返回值有变化,不会替换原有函数,而是会建立新的函数。 -- SELECT调用可以指定不同参数来进行同名函数调用。由于语法不支持调用不带有PACKAGE属性的同名函数。 -- 在创建function时,不能在avg函数外面嵌套其他agg函数或者其他系统函数。 -- 新创建的函数默认会给PUBLIC授予执行权限(详见[GRANT](GRANT.md))。用户可以选择收回PUBLIC默认执行权限,然后根据需要将执行权限授予其他用户,为了避免出现新函数能被所有人访问的时间窗口,应在一个事务中创建函数并且设置函数执行权限。 -- 在函数内部调用其它无参数的函数时,可以省略括号,直接使用函数名进行调用。 -- 兼容Oracle风格的函数支持参数注释的查看与导出、导入。 -- 兼容Oracle风格的函数支持介于IS/AS与plsql\_body之间的注释的查看与导出、导入。 - -## 语法格式 - -- 兼容PostgreSQL风格的创建自定义函数语法。 - - ``` - CREATE [ OR REPLACE ] FUNCTION function_name - [ ( [ { argname [ argmode ] argtype [ { DEFAULT | := | = } expression ]} [, ...] ] ) ] - [ RETURNS rettype [ DETERMINISTIC ] | RETURNS TABLE ( { column_name column_type } [, ...] )] - LANGUAGE lang_name - [ - {IMMUTABLE | STABLE | VOLATILE } - | {SHIPPABLE | NOT SHIPPABLE} - | WINDOW - | [ NOT ] LEAKPROOF - | {CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } - | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AUTHID DEFINER | AUTHID CURRENT_USER} - | {fenced | not fenced} - | {PACKAGE} - | COST execution_cost - | ROWS result_rows - | SET configuration_parameter { {TO | =} value | FROM CURRENT }} - ][...] - { - AS 'definition' - } - - ``` - -- O风格的创建自定义函数的语法。 - - ``` - CREATE [ OR REPLACE ] FUNCTION function_name - ( [ { argname [ argmode ] argtype [ { DEFAULT | := | = } expression ] } [, ...] ] ) - RETURN rettype [ DETERMINISTIC ] - [ - {IMMUTABLE | STABLE | VOLATILE } - | {SHIPPABLE | NOT SHIPPABLE} - | {PACKAGE} - | {FENCED | NOT FENCED} - | [ NOT ] LEAKPROOF - | {CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } - | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | - AUTHID DEFINER | AUTHID CURRENT_USER - } - | COST execution_cost - | ROWS result_rows - | SET configuration_parameter { {TO | =} value | FROM CURRENT - - ][...] - - { - IS | AS - } plsql_body - / - ``` - - -## 参数说明 - -- **function\_name** - - 要创建的函数名称(可以用模式修饰)。 - - 取值范围:字符串,要符合标识符的命名规范。且最多为63个字符。若超过63个字符,数据库会截断并保留前63个字符当做函数名称。 - -- **argname** - - 函数参数的名称。 - - 取值范围:字符串,要符合标识符的命名规范。且最多为63个字符。若超过63个字符,数据库会截断并保留前63个字符当做函数参数名称。 - -- **argmode** - - 函数参数的模式。 - - 取值范围:IN、OUT、INOUT或VARIADIC。缺省值是IN。并且OUT和INOUT模式的参数不能用在RETURNS TABLE的函数定义中。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >VARIADIC用于声明数组类型的参数。 - -- **argtype** - - 函数参数的类型。可以使用%TYPE或%ROWTYPE间接引用变量或表的类型,详细可参考存储过程章节[定义变量](定义变量.md)。 - -- **expression** - - 参数的默认表达式。 - -- **rettype** - - 函数返回值的数据类型。 - - 如果存在OUT或INOUT参数,可以省略RETURNS子句。如果存在,该子句必须和输出参数所表示的结果类型一致:如果有多个输出参数,则为RECORD,否则与单个输出参数的类型相同。 - - SETOF修饰词表示该函数将返回一个集合,而不是单独一项。 - - 与argtype相同,同样可以使用%TYPE或%ROWTYPE间接引用类型。 - -- **column\_name** - - 字段名称。 - -- **column\_type** - - 字段类型。 - -- **definition** - - 一个定义函数的字符串常量,含义取决于语言。它可以是一个内部函数名称、一个指向某个目标文件的路径、一个SQL查询、一个过程语言文本。 - -- **DETERMINISTIC** - - SQL语法兼容接口,未实现功能,不推荐使用。 - -- **LANGUAGE lang\_name** - - 用以实现函数的语言的名称。可以是SQL、internal或者是用户定义的过程语言名称。为了保证向下兼容,该名称可以用单引号(包围)。若采用单引号,则引号内必须为大写。 - -- **WINDOW** - - 表示该函数是窗口函数。替换函数定义时不能改变WINDOW属性。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >自定义窗口函数只支持LANGUAGE是internal,并且引用的内部函数必须是窗口函数。 - -- **IMMUTABLE** - - 表示该函数在给出同样的参数值时总是返回同样的结果。 - -- **STABLE** - - 表示该函数不能修改数据库,对相同参数值,在同一次表扫描里,该函数的返回值不变,但是返回值可能在不同SQL语句之间变化。 - -- **VOLATILE** - - 表示该函数值可以在一次表扫描内改变,因此不会做任何优化。 - -- **SHIPPABLE**|**NOT SHIPPABLE** - - 表示该函数是否可以下推执行。预留接口,不推荐使用。 - -- **FENCED**|**NOT FENCED** - - 声明用户定义的C函数是在保护模式还是非保护模式下执行。预留接口,不推荐使用。 - -- **PACKAGE** - - 表示该函数是否支持重载。PostgreSQL风格的函数本身就支持重载,此参数主要是针对其它风格的函数。 - - - 不允许package函数和非package函数重载或者替换。 - - package函数不支持VARIADIC类型的参数。 - - 不允许修改函数的package属性。 - -- **LEAKPROOF** - - 指出该函数的参数只包括返回值。LEAKPROOF只能由系统管理员设置。 - -- **CALLED ON NULL INPUT** - - 表明该函数的某些参数是NULL的时候可以按照正常的方式调用。该参数可以省略。 - -- **RETURNS NULL ON NULL INPUT** - - **STRICT** - - STRICT用于指定如果函数的某个参数是NULL,此函数总是返回NULL。如果声明了这个参数,当有NULL值参数时该函数不会被执行;而只是自动返回一个NULL结果。 - - RETURNS NULL ON NULL INPUT和STRICT的功能相同。 - -- **EXTERNAL** - - 目的是和SQL兼容,是可选的,这个特性适合于所有函数,而不仅是外部函数。 - -- **SECURITY INVOKER** - - **AUTHID CURRENT\_USER** - - 表明该函数将带着调用它的用户的权限执行。该参数可以省略。 - - SECURITY INVOKER和AUTHID CURRENT\_USER的功能相同。 - -- **SECURITY DEFINER** - - **AUTHID DEFINER** - - 声明该函数将以创建它的用户的权限执行。 - - AUTHID DEFINER和SECURITY DEFINER的功能相同。 - -- **COST execution\_cost** - - 用来估计函数的执行成本。 - - execution\_cost以cpu\_operator\_cost为单位。 - - 取值范围:正数 - -- **ROWS result\_rows** - - 估计函数返回的行数。用于函数返回的是一个集合。 - - 取值范围:正数,默认值是1000行。 - -- **configuration\_parameter** - - **value** - - 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 - - 取值范围:字符串 - - - DEFAULT - - OFF - - RESET - - 指定默认值。 - - - **from current** - - 取当前会话中的值设置为configuration\_parameter的值。 - - -- **plsql\_body** - - PL/SQL存储过程体。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >当在函数体中创建用户时,日志中会记录密码的明文。因此不建议用户在函数体中创建用户。 - - -## 示例 - -``` ---定义函数为SQL查询。 -openGauss=# CREATE FUNCTION func_add_sql(integer, integer) RETURNS integer - AS 'select $1 + $2;' - LANGUAGE SQL - IMMUTABLE - RETURNS NULL ON NULL INPUT; - ---利用参数名用 PL/pgSQL 自增一个整数。 -openGauss=# CREATE OR REPLACE FUNCTION func_increment_plsql(i integer) RETURNS integer AS $$ - BEGIN - RETURN i + 1; - END; -$$ LANGUAGE plpgsql; - ---返回RECORD类型 -openGauss=# CREATE OR REPLACE FUNCTION func_increment_sql(i int, out result_1 bigint, out result_2 bigint) -returns SETOF RECORD -as $$ -begin - result_1 = i + 1; - result_2 = i * 10; -return next; -end; -$$language plpgsql; - ---返回一个包含多个输出参数的记录。 -openGauss=# CREATE FUNCTION func_dup_sql(in int, out f1 int, out f2 text) - AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$ - LANGUAGE SQL; - -openGauss=# SELECT * FROM func_dup_sql(42); - ---计算两个整数的和,并返回结果。如果输入为null,则返回null。 -openGauss=# CREATE FUNCTION func_add_sql2(num1 integer, num2 integer) RETURN integer -AS -BEGIN -RETURN num1 + num2; -END; -/ ---修改函数func_add_sql2的执行规则为IMMUTABLE,即参数不变时返回相同结果。 -openGauss=# ALTER FUNCTION func_add_sql2(INTEGER, INTEGER) IMMUTABLE; - ---将函数func_add_sql2的名称修改为add_two_number。 -openGauss=# ALTER FUNCTION func_add_sql2(INTEGER, INTEGER) RENAME TO add_two_number; - ---将函数add_two_number的属者改为omm。 -openGauss=# ALTER FUNCTION add_two_number(INTEGER, INTEGER) OWNER TO omm; - ---删除函数。 -openGauss=# DROP FUNCTION add_two_number; -openGauss=# DROP FUNCTION func_increment_sql; -openGauss=# DROP FUNCTION func_dup_sql; -openGauss=# DROP FUNCTION func_increment_plsql; -openGauss=# DROP FUNCTION func_add_sql; -``` - -## 相关链接 - -[ALTER FUNCTION](ALTER-FUNCTION.md),[DROP FUNCTION](DROP-FUNCTION.md) - +# CREATE FUNCTION + +## 功能描述 + +创建一个函数。 + +## 注意事项 + +- 如果创建函数时参数或返回值带有精度,不进行精度检测。 +- 创建函数时,函数定义中对表对象的操作建议都显式指定模式,否则可能会导致函数执行异常。 +- 在创建函数时,函数内部通过 SET 语句设置current\_schema和search\_path无效。执行完函数search\_path和current\_schema与执行函数前的search\_path和current\_schema保持一致。 +- 如果函数参数中带有出参, SELECT 调用函数必须缺省出参, CALL 调用函数必须指定出参,对于调用重载的带有 PACKAGE 属性的函数, CALL 调用函数可以缺省出参,具体信息参见[CALL](CALL.md)的示例。 +- 兼容 Postgresql 风格的函数或者带有 PACKAGE 属性的函数支持重载。在指定 REPLACE 的时候,如果参数个数、类型、返回值有变化,不会替换原有函数,而是会建立新的函数。 +- SELECT调用可以指定不同参数来进行同名函数调用。由于语法不支持调用不带有 PACKAGE 属性的同名函数。 +- 在创建 function 时,不能在 avg 函数外面嵌套其他 agg 函数或者其他系统函数。 +- 新创建的函数默认会给 PUBLIC 授予执行权限(详见[GRANT](GRANT.md))。用户可以选择收回 PUBLIC 默认执行权限,然后根据需要将执行权限授予其他用户,为了避免出现新函数能被所有人访问的时间窗口,应在一个事务中创建函数并且设置函数执行权限。 +- 在函数内部调用其它无参数的函数时,可以省略括号,直接使用函数名进行调用。 +- 兼容 Oracle 风格的函数支持参数注释的查看与导出、导入。 +- 兼容 Oracle 风格的函数支持介于IS/AS与plsql\_body之间的注释的查看与导出、导入。 + +## 语法格式 + +- 兼容 PostgreSQL 风格的创建自定义函数语法。 + + ``` + CREATE [ OR REPLACE ] FUNCTION function_name + [ ( [ { argname [ argmode ] argtype [ { DEFAULT | := | = } expression ]} [, ...] ] ) ] + [ RETURNS rettype [ DETERMINISTIC ] | RETURNS TABLE ( { column_name column_type } [, ...] )] + LANGUAGE lang_name + [ + {IMMUTABLE | STABLE | VOLATILE } + | {SHIPPABLE | NOT SHIPPABLE} + | WINDOW + | [ NOT ] LEAKPROOF + | {CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } + | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AUTHID DEFINER | AUTHID CURRENT_USER} + | {fenced | not fenced} + | {PACKAGE} + | COST execution_cost + | ROWS result_rows + | SET configuration_parameter { {TO | =} value | FROM CURRENT }} + ][...] + { + AS 'definition' + } + + ``` + +- O风格的创建自定义函数的语法。 + + ``` + CREATE [ OR REPLACE ] FUNCTION function_name + ( [ { argname [ argmode ] argtype [ { DEFAULT | := | = } expression ] } [, ...] ] ) + RETURN rettype [ DETERMINISTIC ] + [ + {IMMUTABLE | STABLE | VOLATILE } + | {SHIPPABLE | NOT SHIPPABLE} + | {PACKAGE} + | {FENCED | NOT FENCED} + | [ NOT ] LEAKPROOF + | {CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } + | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | + AUTHID DEFINER | AUTHID CURRENT_USER + } + | COST execution_cost + | ROWS result_rows + | SET configuration_parameter { {TO | =} value | FROM CURRENT + + ][...] + + { + IS | AS + } plsql_body + / + ``` + + +## 参数说明 + +- **function\_name** + + 要创建的函数名称(可以用模式修饰)。 + + 取值范围:字符串,要符合标识符的命名规范。且最多为 63 个字符。若超过 63 个字符,数据库会截断并保留前 63 个字符当做函数名称。 + +- **argname** + + 函数参数的名称。 + + 取值范围:字符串,要符合标识符的命名规范。且最多为 63 个字符。若超过 63 个字符,数据库会截断并保留前 63 个字符当做函数参数名称。 + +- **argmode** + + 函数参数的模式。 + + 取值范围:IN、OUT、INOUT或 VARIADIC 。缺省值是 IN 。并且 OUT 和 INOUT 模式的参数不能用在 RETURNS TABLE 的函数定义中。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >VARIADIC用于声明数组类型的参数。 + +- **argtype** + + 函数参数的类型。可以使用%TYPE或%ROWTYPE间接引用变量或表的类型,详细可参考存储过程章节[定义变量](定义变量.md)。 + +- **expression** + + 参数的默认表达式。 + +- **rettype** + + 函数返回值的数据类型。 + + 如果存在 OUT 或 INOUT 参数,可以省略 RETURNS 子句。如果存在,该子句必须和输出参数所表示的结果类型一致:如果有多个输出参数,则为 RECORD ,否则与单个输出参数的类型相同。 + +SETOF 修饰词表示该函数将返回一个集合,而不是单独一项。 + + 与 argtype 相同,同样可以使用%TYPE或%ROWTYPE间接引用类型。 + +- **column\_name** + + 字段名称。 + +- **column\_type** + + 字段类型。 + +- **definition** + + 一个定义函数的字符串常量,含义取决于语言。它可以是一个内部函数名称、一个指向某个目标文件的路径、一个 SQL 查询、一个过程语言文本。 + +- **DETERMINISTIC** + +SQL 语法兼容接口,未实现功能,不推荐使用。 + +- **LANGUAGE lang\_name** + + 用以实现函数的语言的名称。可以是SQL、internal或者是用户定义的过程语言名称。为了保证向下兼容,该名称可以用单引号(包围)。若采用单引号,则引号内必须为大写。 + +- **WINDOW** + + 表示该函数是窗口函数。替换函数定义时不能改变 WINDOW 属性。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >自定义窗口函数只支持 LANGUAGE 是 internal ,并且引用的内部函数必须是窗口函数。 + +- **IMMUTABLE** + + 表示该函数在给出同样的参数值时总是返回同样的结果。 + +- **STABLE** + + 表示该函数不能修改数据库,对相同参数值,在同一次表扫描里,该函数的返回值不变,但是返回值可能在不同 SQL 语句之间变化。 + +- **VOLATILE** + + 表示该函数值可以在一次表扫描内改变,因此不会做任何优化。 + +- **SHIPPABLE**|**NOT SHIPPABLE** + + 表示该函数是否可以下推执行。预留接口,不推荐使用。 + +- **FENCED**|**NOT FENCED** + + 声明用户定义的 C 函数是在保护模式还是非保护模式下执行。预留接口,不推荐使用。 + +- **PACKAGE** + + 表示该函数是否支持重载。 PostgreSQL 风格的函数本身就支持重载,此参数主要是针对其它风格的函数。 + + - 不允许 package 函数和非 package 函数重载或者替换。 + - package函数不支持 VARIADIC 类型的参数。 + - 不允许修改函数的 package 属性。 + +- **LEAKPROOF** + + 指出该函数的参数只包括返回值。 LEAKPROOF 只能由系统管理员设置。 + +- **CALLED ON NULL INPUT** + + 表明该函数的某些参数是 NULL 的时候可以按照正常的方式调用。该参数可以省略。 + +- **RETURNS NULL ON NULL INPUT** + + **STRICT** + +STRICT 用于指定如果函数的某个参数是 NULL ,此函数总是返回 NULL 。如果声明了这个参数,当有 NULL 值参数时该函数不会被执行;而只是自动返回一个 NULL 结果。 + +RETURNS NULL ON NULL INPUT 和 STRICT 的功能相同。 + +- **EXTERNAL** + + 目的是和 SQL 兼容,是可选的,这个特性适合于所有函数,而不仅是外部函数。 + +- **SECURITY INVOKER** + + **AUTHID CURRENT\_USER** + + 表明该函数将带着调用它的用户的权限执行。该参数可以省略。 + +SECURITY INVOKER 和AUTHID CURRENT\_USER的功能相同。 + +- **SECURITY DEFINER** + + **AUTHID DEFINER** + + 声明该函数将以创建它的用户的权限执行。 + +AUTHID DEFINER 和 SECURITY DEFINER 的功能相同。 + +- **COST execution\_cost** + + 用来估计函数的执行成本。 + + execution\_cost以cpu\_operator\_cost为单位。 + + 取值范围:正数 + +- **ROWS result\_rows** + + 估计函数返回的行数。用于函数返回的是一个集合。 + + 取值范围:正数,默认值是 1000 行。 + +- **configuration\_parameter** + - **value** + + 把指定的数据库会话参数值设置为给定的值。如果 value 是 DEFAULT 或者 RESET ,则在新的会话中使用系统的缺省设置。 OFF 关闭设置。 + + 取值范围:字符串 + + - DEFAULT + - OFF + - RESET + + 指定默认值。 + + - **from current** + + 取当前会话中的值设置为configuration\_parameter的值。 + + +- **plsql\_body** + + PL/SQL存储过程体。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >当在函数体中创建用户时,日志中会记录密码的明文。因此不建议用户在函数体中创建用户。 + + +## 示例 + +``` +--定义函数为 SQL 查询。 +openGauss=# CREATE FUNCTION func_add_sql(integer, integer) RETURNS integer + AS 'select $1 + $2;' + LANGUAGE SQL + IMMUTABLE + RETURNS NULL ON NULL INPUT; + +--利用参数名用 PL/pgSQL 自增一个整数。 +openGauss=# CREATE OR REPLACE FUNCTION func_increment_plsql(i integer) RETURNS integer AS $$ + BEGIN + RETURN i + 1; + END; +$$ LANGUAGE plpgsql; + +--返回 RECORD 类型 +openGauss=# CREATE OR REPLACE FUNCTION func_increment_sql(i int, out result_1 bigint , out result_2 bigint) +returns SETOF RECORD +as $$ +begin + result_1 = i + 1; + result_2 = i * 10; +return next; +end; +$$language plpgsql; + +--返回一个包含多个输出参数的记录。 +openGauss=# CREATE FUNCTION func_dup_sql(in int, out f1 int , out f2 text) + AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$ + LANGUAGE SQL; + +openGauss=# SELECT * FROM func_dup_sql(42); + +--计算两个整数的和,并返回结果。如果输入为 null ,则返回 null 。 +openGauss=# CREATE FUNCTION func_add_sql2(num1 integer, num2 integer) RETURN integer +AS +BEGIN +RETURN num1 + num2; +END; +/ +--修改函数 func_add_sql2 的执行规则为 IMMUTABLE ,即参数不变时返回相同结果。 +openGauss=# ALTER FUNCTION func_add_sql2(INTEGER, INTEGER) IMMUTABLE; + +--将函数 func_add_sql2 的名称修改为 add_two_number 。 +openGauss=# ALTER FUNCTION func_add_sql2(INTEGER, INTEGER) RENAME TO add_two_number; + +--将函数 add_two_number 的属者改为 omm 。 +openGauss=# ALTER FUNCTION add_two_number(INTEGER, INTEGER) OWNER TO omm; + +--删除函数。 +openGauss=# DROP FUNCTION add_two_number; +openGauss=# DROP FUNCTION func_increment_sql; +openGauss=# DROP FUNCTION func_dup_sql; +openGauss=# DROP FUNCTION func_increment_plsql; +openGauss=# DROP FUNCTION func_add_sql; +``` + +## 相关链接 + +[ALTER FUNCTION](ALTER-FUNCTION.md),[DROP FUNCTION](DROP-FUNCTION.md) + diff --git a/content/zh/docs/Developerguide/CREATE-GROUP.md b/content/zh/docs/Developerguide/CREATE-GROUP.md index e4b7beb57..b0ddadca2 100644 --- a/content/zh/docs/Developerguide/CREATE-GROUP.md +++ b/content/zh/docs/Developerguide/CREATE-GROUP.md @@ -1,56 +1,56 @@ -# CREATE GROUP - -## 功能描述 - -创建一个新用户组。 - -## 注意事项 - -CREATE GROUP是CREATE ROLE的别名,非SQL标准语法,不推荐使用,建议用户直接使用CREATE ROLE替代。 - -## 语法格式 - -``` -CREATE GROUP group_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [ EXPIRED ] | DISABLE }; -``` - -其中可选项option子句语法为: - -``` -{SYSADMIN | NOSYSADMIN} - | {AUDITADMIN | NOAUDITADMIN} - | {CREATEDB | NOCREATEDB} - | {USEFT | NOUSEFT} - | {CREATEROLE | NOCREATEROLE} - | {INHERIT | NOINHERIT} - | {LOGIN | NOLOGIN} - | {REPLICATION | NOREPLICATION} - | {INDEPENDENT | NOINDEPENDENT} - | {VCADMIN | NOVCADMIN} - | CONNECTION LIMIT connlimit - | VALID BEGIN 'timestamp' - | VALID UNTIL 'timestamp' - | RESOURCE POOL 'respool' - | PERM SPACE 'spacelimit' - | TEMP SPACE 'tmpspacelimit' - | SPILL SPACE 'spillspacelimit' - | IN ROLE role_name [, ...] - | IN GROUP role_name [, ...] - | ROLE role_name [, ...] - | ADMIN rol e_name [, ...] - | USER role_name [, ...] - | SYSID uid - | DEFAULT TABLESPACE tablespace_name - | PROFILE DEFAULT - | PROFILE profile_name - | PGUSER -``` - -## 参数说明 - -请参考CREATE ROLE的[参数说明](CREATE-ROLE.md#zh-cn_topic_0283136858_zh-cn_topic_0237122112_zh-cn_topic_0059778189_s5a43ec5742a742089e2c302063de7fe4)。 - -## 相关链接 - -[ALTER GROUP](ALTER-GROUP.md),[DROP GROUP](DROP-GROUP.md),[CREATE ROLE](CREATE-ROLE.md) - +# CREATE GROUP + +## 功能描述 + +创建一个新用户组。 + +## 注意事项 + +CREATE GROUP 是 CREATE ROLE 的别名,非 SQL 标准语法,不推荐使用,建议用户直接使用 CREATE ROLE 替代。 + +## 语法格式 + +``` +CREATE GROUP group_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [ EXPIRED ] | DISABLE }; +``` + +其中可选项 option 子句语法为: + +``` +{SYSADMIN | NOSYSADMIN} + | {AUDITADMIN | NOAUDITADMIN} + | {CREATEDB | NOCREATEDB} + | {USEFT | NOUSEFT} + | {CREATEROLE | NOCREATEROLE} + | {INHERIT | NOINHERIT} + | {LOGIN | NOLOGIN} + | {REPLICATION | NOREPLICATION} + | {INDEPENDENT | NOINDEPENDENT} + | {VCADMIN | NOVCADMIN} + | CONNECTION LIMIT connlimit + | VALID BEGIN 'timestamp' + | VALID UNTIL 'timestamp' + | RESOURCE POOL 'respool' + | PERM SPACE 'spacelimit' + | TEMP SPACE 'tmpspacelimit' + | SPILL SPACE 'spillspacelimit' + | IN ROLE role_name [, ...] + | IN GROUP role_name [, ...] + | ROLE role_name [, ...] + | ADMIN rol e_name [, ...] + | USER role_name [, ...] + | SYSID uid + | DEFAULT TABLESPACE tablespace_name + | PROFILE DEFAULT + | PROFILE profile_name + | PGUSER +``` + +## 参数说明 + +请参考 CREATE ROLE 的[参数说明](CREATE-ROLE.md#zh-cn_topic_0283136858_zh-cn_topic_0237122112_zh-cn_topic_0059778189_s5a43ec5742a742089e2c302063de7fe4)。 + +## 相关链接 + +[ALTER GROUP](ALTER-GROUP.md),[DROP GROUP](DROP-GROUP.md),[CREATE ROLE](CREATE-ROLE.md) + diff --git a/content/zh/docs/Developerguide/CREATE-INCREMENTAL-MATERIALIZED-VIEW.md b/content/zh/docs/Developerguide/CREATE-INCREMENTAL-MATERIALIZED-VIEW.md index a90cf014c..d6e606f8c 100644 --- a/content/zh/docs/Developerguide/CREATE-INCREMENTAL-MATERIALIZED-VIEW.md +++ b/content/zh/docs/Developerguide/CREATE-INCREMENTAL-MATERIALIZED-VIEW.md @@ -1,66 +1,66 @@ -# CREATE INCREMENTAL MATERIALIZED VIEW - -## 功能描述 - -CREATE INCREMENTAL MATERIALIZED VIEW会创建一个增量物化视图,并且后续可以使用REFRESH MATERIALIZED VIEW(全量刷新)和REFRESH INCREMENTAL MATERIALIZED VIEW(增量刷新)刷新物化视图的数据。 - -CREATE INCREMENTAL MATERIALIZED VIEW类似于CREATE TABLE AS,不过它会记住被用来初始化该视图的查询, 因此它可以在后续中进行数据刷新。一个物化视图有很多和表相同的属性,但是不支持临时物化视图。 - -## 注意事项 - -- 增量物化视图不可以在临时表或全局临时表上创建。 -- 增量物化视图仅支持简单过滤查询和基表UNION ALL查询。 -- 创建增量物化视图不可指定分布列。 -- 创建增量物化视图后,基表中的绝大多数DDL操作不再支持。 -- 不支持对增量物化视图进行IUD操作。 -- 增量物化视图创建后,当基表数据发生变化时,需要使用刷新(REFRESH)命令保持物化视图与基表同步。 - -## 语法格式 - -``` -CREATE INCREMENTAL MATERIALIZED VIEW mv_name - [ (column_name [, ...] ) ] - [ TABLESPACE tablespace_name ] - AS query; -``` - -## 参数说明 - -- **mv\_name** - - 要创建的物化视图的名称(可以被模式限定)。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **column\_name** - - 新物化视图中的一个列名。物化视图支持指定列,指定列需要和后面的查询语句结果的列数量保持一致;如果没有提供列名,会从查询的输出列名中获取列名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **TABLESPACE tablespace\_name** - - 指定新建物化视图所属表空间。如果没有声明,将使用默认表空间。 - -- **AS query** - - 一个SELECT、TABLE 或者VALUES命令。这个查询将在一个安全受限的操作中运行。 - - -## 示例 - -``` ---创建一个普通表 -openGauss=# CREATE TABLE my_table (c1 int, c2 int); ---创建增量物化视图 -openGauss=# CREATE INCREMENTAL MATERIALIZED VIEW my_imv AS SELECT * FROM my_table; ---基表写入数据 -openGauss=# INSERT INTO my_table VALUES(1,1),(2,2); ---对增量物化视图my_imv进行增量刷新 -openGauss=# REFRESH INCREMENTAL MATERIALIZED VIEW my_imv; -``` - -## 相关链接 - -[ALTER MATERIALIZED VIEW](ALTER-MATERIALIZED-VIEW.md), [CREATE MATERIALIZED VIEW](CREATE-MATERIALIZED-VIEW.md),[CREATE TABLE](CREATE-TABLE.md), [DROP MATERIALIZED VIEW](DROP-MATERIALIZED-VIEW.md),[REFRESH INCREMENTAL MATERIALIZED VIEW](REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md) ,[REFRESH MATERIALIZED VIEW](REFRESH-MATERIALIZED-VIEW.md) - +# CREATE INCREMENTAL MATERIALIZED VIEW + +## 功能描述 + +CREATE INCREMENTAL MATERIALIZED VIEW 会创建一个增量物化视图,并且后续可以使用REFRESH MATERIALIZED VIEW(全量刷新)和REFRESH INCREMENTAL MATERIALIZED VIEW(增量刷新)刷新物化视图的数据。 + +CREATE INCREMENTAL MATERIALIZED VIEW 类似于 CREATE TABLE AS ,不过它会记住被用来初始化该视图的查询, 因此它可以在后续中进行数据刷新。一个物化视图有很多和表相同的属性,但是不支持临时物化视图。 + +## 注意事项 + +- 增量物化视图不可以在临时表或全局临时表上创建。 +- 增量物化视图仅支持简单过滤查询和基表 UNION ALL 查询。 +- 创建增量物化视图不可指定分布列。 +- 创建增量物化视图后,基表中的绝大多数 DDL 操作不再支持。 +- 不支持对增量物化视图进行 IUD 操作。 +- 增量物化视图创建后,当基表数据发生变化时,需要使用刷新(REFRESH)命令保持物化视图与基表同步。 + +## 语法格式 + +``` +CREATE INCREMENTAL MATERIALIZED VIEW mv_name + [ (column_name [, ...] ) ] + [ TABLESPACE tablespace_name ] + AS query; +``` + +## 参数说明 + +- **mv\_name** + + 要创建的物化视图的名称(可以被模式限定)。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **column\_name** + + 新物化视图中的一个列名。物化视图支持指定列,指定列需要和后面的查询语句结果的列数量保持一致;如果没有提供列名,会从查询的输出列名中获取列名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **TABLESPACE tablespace\_name** + + 指定新建物化视图所属表空间。如果没有声明,将使用默认表空间。 + +- **AS query** + + 一个SELECT、TABLE 或者 VALUES 命令。这个查询将在一个安全受限的操作中运行。 + + +## 示例 + +``` +--创建一个普通表 +openGauss=# CREATE TABLE my_table (c1 int, c2 int); +--创建增量物化视图 +openGauss=# CREATE INCREMENTAL MATERIALIZED VIEW my_imv AS SELECT * FROM my_table; +--基表写入数据 +openGauss=# INSERT INTO my_table VALUES(1,1),(2,2); +--对增量物化视图 my_imv 进行增量刷新 +openGauss=# REFRESH INCREMENTAL MATERIALIZED VIEW my_imv; +``` + +## 相关链接 + +[ALTER MATERIALIZED VIEW](ALTER-MATERIALIZED-VIEW.md), [CREATE MATERIALIZED VIEW](CREATE-MATERIALIZED-VIEW.md),[CREATE TABLE](CREATE-TABLE.md), [DROP MATERIALIZED VIEW](DROP-MATERIALIZED-VIEW.md),[REFRESH INCREMENTAL MATERIALIZED VIEW](REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md) ,[REFRESH MATERIALIZED VIEW](REFRESH-MATERIALIZED-VIEW.md) + diff --git a/content/zh/docs/Developerguide/CREATE-INDEX.md b/content/zh/docs/Developerguide/CREATE-INDEX.md index a695a0219..82a9a4e1f 100644 --- a/content/zh/docs/Developerguide/CREATE-INDEX.md +++ b/content/zh/docs/Developerguide/CREATE-INDEX.md @@ -1,363 +1,363 @@ -# CREATE INDEX - -## 功能描述 - -在指定的表上创建索引。 - -索引可以用来提高数据库查询性能,但是不恰当的使用将导致数据库性能下降。建议仅在匹配如下某条原则时创建索引: - -- 经常执行查询的字段。 -- 在连接条件上创建索引,对于存在多字段连接的查询,建议在这些字段上建立组合索引。例如,select \* from t1 join t2 on t1.a=t2.a and t1.b=t2.b,可以在t1表上的a、b字段上建立组合索引。 -- where子句的过滤条件字段上(尤其是范围条件)。 -- 在经常出现在order by、group by和distinct后的字段。 - -在分区表上创建索引与在普通表上创建索引的语法不太一样,使用时请注意,如分区表上不支持并行创建索引,不支持创建部分索引。 - -## 注意事项 - -- 索引自身也占用存储空间、消耗计算资源,创建过多的索引将对数据库性能造成负面影响(尤其影响数据导入的性能,建议在数据导入后再建索引)。因此,仅在必要时创建索引。 -- 索引定义里的所有函数和操作符都必须是immutable类型的,即它们的结果必须只能依赖于它们的输入参数,而不受任何外部的影响(如另外一个表的内容或者当前时间)。这个限制可以确保该索引的行为是定义良好的。要在一个索引上或WHERE中使用用户定义函数,请把它标记为immutable类型函数。 -- 分区表索引分为LOCAL索引与GLOBAL索引,LOCAL索引与某个具体分区绑定,而GLOBAL索引则对应整个分区表。 -- 列存表支持的PSORT和B-tree索引都不支持创建表达式索引、部分索引,PSORT不支持创建唯一索引,B-tree支持创建唯一索引。 -- 列存表支持的GIN索引支持创建表达式索引,但表达式不能包含空分词、空列和多列,不支持创建部分索引和唯一索引。 -- HASH索引目前仅限于行存表索引、临时表索引和分区表LOCAL索引,且不支持创建多字段索引。 - -## 语法格式 - -- 在表上创建索引。 - - ``` - CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [schema_name.]index_name ] ON table_name [ USING method ] - ({ { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] }[, ...] ) - [ WITH ( {storage_parameter = value} [, ... ] ) ] - [ TABLESPACE tablespace_name ] - [ WHERE predicate ]; - ``` - -- 在分区表上创建索引。 - - ``` - CREATE [ UNIQUE ] INDEX [ [schema_name.]index_name ] ON table_name [ USING method ] - ( {{ column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS LAST ] }[, ...] ) - [ LOCAL [ ( { PARTITION index_partition_name [ TABLESPACE index_partition_tablespace ] } [, ...] ) ] | GLOBAL ] - [ WITH ( { storage_parameter = value } [, ...] ) ] - [ TABLESPACE tablespace_name ]; - ``` - - -## 参数说明 - -- **UNIQUE** - - 创建唯一性索引,每次添加数据时检测表中是否有重复值。如果插入或更新的值会引起重复的记录时,将导致一个错误。 - - 目前只有B-tree索引支持唯一索引。 - -- **CONCURRENTLY** - - 以不阻塞DML的方式创建索引(加ShareUpdateExclusiveLock锁)。创建索引时,一般会阻塞其他语句对该索引所依赖表的访问。指定此关键字,可以实现创建过程中不阻塞DML。 - - - 此选项只能指定一个索引的名称。 - - 普通CREATE INDEX命令可以在事务内执行,但是CREATE INDEX CONCURRENTLY不可以在事务内执行。 - - 列存表、分区表和临时表不支持CONCURRENTLY方式创建索引。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 创建索引时指定此关键字,需要执行先后两次对该表的全表扫描来完成build,第一次扫描的时候创建索引,不阻塞读写操作;第二次扫描的时候合并更新第一次扫描到目前为止发生的变更。 - - >- 由于需要执行两次对表的扫描和build,而且必须等待现有的所有可能对该表执行修改的事务结束。这意味着该索引的创建比正常耗时更长,同时因此带来的CPU和I/O消耗对其他业务也会造成影响。 - - >- 如果在索引构建时发生失败,那会留下一个“不可用”的索引。这个索引会被查询忽略,但它仍消耗更新开销。这种情况推荐的恢复方法是删除该索引并尝试再次CONCURRENTLY建索引。 - - >- 由于在第二次扫描之后,索引构建必须等待任何持有早于第二次扫描拿的快照的事务终止,而且建索引时加的ShareUpdateExclusiveLock锁(4级)会和大于等于4级的锁冲突,在创建这类索引时,容易引发卡住(hang)或者死锁问题。例如: - - > - 两个会话对同一个表创建CONCURRENTLY索引,会引起死锁问题; - - > - 两个会话,一个对表创建CONCURRENTLY索引,一个drop table,会引起死锁问题; - - > - 三个会话,会话1先对表a加锁,不提交,会话2接着对表b创建CONCURRENTLY索引,会话3接着对表a执行写入操作,在会话1事务未提交之前,会话2会一直被阻塞; - - > - 将事务隔离级别设置成可重复读(默认为读已提交),起两个会话,会话1起事务对表a执行写入操作,不提交,会话2对表b创建CONCURRENTLY索引,在会话1事务未提交之前,会话2会一直被阻塞。 - -- **schema\_name** - - 模式的名称。 - - 取值范围:已存在模式名。 - -- **index\_name** - - 要创建的索引名,索引的模式与表相同。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **table\_name** - - 需要为其创建索引的表的名称,可以用模式修饰。 - - 取值范围:已存在的表名。 - -- **USING method** - - 指定创建索引的方法。 - - 取值范围: - - - btree:B-tree索引使用一种类似于B+树的结构来存储数据的键值,通过这种结构能够快速的查找索引。btree适合支持比较查询以及查询范围。 - - hash:Hash索引使用Hash函数对索引的关键字进行散列。只能处理简单等值比较,比较适合在索引值较长的情况下使用。 - - gin:GIN索引是倒排索引,可以处理包含多个键的值(比如数组)。 - - gist:Gist索引适用于几何和地理等多维数据类型和集合数据类型。目前支持的数据类型有box、point、poly、circle、tsvector、tsquery、range。 - - Psort:Psort索引。针对列存表进行局部排序索引。 - - ubtree:仅供ustore表使用的多版本B-tree索引,索引页面上包含事务信息,能并自主回收页面。 - - 行存表(ASTORE存储引擎)支持的索引类型:btree(行存表缺省值)、hash、gin、gist。行存表(USTORE存储引擎)支持的索引类型:ubtree。列存表支持的索引类型:Psort(列存表缺省值)、btree、gin。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >列存表对GIN索引支持仅限于对于tsvector类型的支持,即创建列存GIN索引入参需要为to\_tsvector函数(的返回值)。此方法为GIN索引比较普遍的使用方式。 - -- **column\_name** - - 表中需要创建索引的列的名称(字段名)。 - - 如果索引方式支持多字段索引,可以声明多个字段。全局索引最多可以声明31个字段,其他索引最多可以声明32个字段。 - -- **expression** - - 创建一个基于该表的一个或多个字段的表达式索引,通常必须写在圆括弧中。如果表达式有函数调用的形式,圆括弧可以省略。 - - 表达式索引可用于获取对基本数据的某种变形的快速访问。比如,一个在upper\(col\)上的函数索引将允许WHERE upper\(col\) = 'JIM'子句使用索引。 - - 在创建表达式索引时,如果表达式中包含IS NULL子句,则这种索引是无效的。此时,建议用户尝试创建一个部分索引。 - -- **COLLATE collation** - - COLLATE子句指定列的排序规则(该列必须是可排列的数据类型)。如果没有指定,则使用默认的排序规则。排序规则可以使用“select \* from pg\_collation”命令从pg\_collation系统表中查询,默认的排序规则为查询结果中以default开始的行。 - -- **opclass** - - 操作符类的名称。对于索引的每一列可以指定一个操作符类,操作符类标识了索引那一列的使用的操作符。例如一个B-tree索引在一个四字节整数上可以使用int4\_ops;这个操作符类包括四字节整数的比较函数。实际上对于列上的数据类型默认的操作符类是足够用的。操作符类主要用于一些有多种排序的数据。例如,用户想按照绝对值或者实数部分排序一个复数。能通过定义两个操作符类然后当建立索引时选择合适的类。 - -- **ASC** - - 指定按升序排序(默认)。 - -- **DESC** - - 指定按降序排序。 - -- **NULLS FIRST** - - 指定空值在排序中排在非空值之前,当指定DESC排序时,本选项为默认的。 - -- **NULLS LAST** - - 指定空值在排序中排在非空值之后,未指定DESC排序时,本选项为默认的。 - -- **LOCAL** - - 指定创建的分区索引为LOCAL索引。 - -- **GLOBAL** - - 指定创建的分区索引为GLOBAL索引,当不指定LOCAL、GLOBAL关键字时,默认创建GLOBAL索引。 - -- **WITH \( \{storage\_parameter = value\} \[, ... \] \)** - - 指定索引方法的存储参数。 - - 取值范围: - - 只有GIN索引支持FASTUPDATE、GIN\_PENDING\_LIST\_LIMIT参数。GIN和Psort之外的索引都支持FILLFACTOR参数。 - - - FILLFACTOR - - 一个索引的填充因子(fillfactor)是一个介于10和100之间的百分数。 - - 取值范围:10\~100 - - - FASTUPDATE - - GIN索引是否使用快速更新。 - - 取值范围:ON,OFF - - 默认值:ON - - - GIN\_PENDING\_LIST\_LIMIT - - 当GIN索引启用fastupdate时,设置该索引pending list容量的最大值。 - - 取值范围:64\~INT\_MAX,单位KB。 - - 默认值:gin\_pending\_list\_limit的默认取决于GUC中gin\_pending\_list\_limit的值(默认为4MB) - - -- **TABLESPACE tablespace\_name** - - 指定索引的表空间,如果没有声明则使用默认的表空间。 - - 取值范围:已存在的表空间名。 - -- **WHERE predicate** - - 创建一个部分索引。部分索引是一个只包含表的一部分记录的索引,通常是该表中比其他部分数据更有用的部分。例如,有一个表,表里包含已记账和未记账的定单,未记账的定单只占表的一小部分而且这部分是最常用的部分,此时就可以通过只在未记账部分创建一个索引来改善性能。另外一个可能的用途是使用带有UNIQUE的WHERE强制一个表的某个子集的唯一性。 - - 取值范围:predicate表达式只能引用表的字段,它可以使用所有字段,而不仅是被索引的字段。目前,子查询和聚集表达式不能出现在WHERE子句里。 - -- **PARTITION index\_partition\_name** - - 索引分区的名称。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **TABLESPACE index\_partition\_tablespace** - - 索引分区的表空间。 - - 取值范围:如果没有声明,将使用分区表索引的表空间index\_tablespace。 - - -## 示例 - -``` ---创建表tpcds.ship_mode_t1。 -openGauss=# create schema tpcds; -openGauss=# CREATE TABLE tpcds.ship_mode_t1 -( - SM_SHIP_MODE_SK INTEGER NOT NULL, - SM_SHIP_MODE_ID CHAR(16) NOT NULL, - SM_TYPE CHAR(30) , - SM_CODE CHAR(10) , - SM_CARRIER CHAR(20) , - SM_CONTRACT CHAR(20) -) -; - ---在表tpcds.ship_mode_t1上的SM_SHIP_MODE_SK字段上创建普通的唯一索引。 -openGauss=# CREATE UNIQUE INDEX ds_ship_mode_t1_index1 ON tpcds.ship_mode_t1(SM_SHIP_MODE_SK); - ---在表tpcds.ship_mode_t1上的SM_SHIP_MODE_SK字段上创建指定B-tree索引。 -openGauss=# CREATE INDEX ds_ship_mode_t1_index4 ON tpcds.ship_mode_t1 USING btree(SM_SHIP_MODE_SK); - ---在表tpcds.ship_mode_t1上SM_CODE字段上创建表达式索引。 -openGauss=# CREATE INDEX ds_ship_mode_t1_index2 ON tpcds.ship_mode_t1(SUBSTR(SM_CODE,1 ,4)); - ---在表tpcds.ship_mode_t1上的SM_SHIP_MODE_SK字段上创建SM_SHIP_MODE_SK大于10的部分索引。 -openGauss=# CREATE UNIQUE INDEX ds_ship_mode_t1_index3 ON tpcds.ship_mode_t1(SM_SHIP_MODE_SK) WHERE SM_SHIP_MODE_SK>10; - ---重命名一个现有的索引。 -openGauss=# ALTER INDEX tpcds.ds_ship_mode_t1_index1 RENAME TO ds_ship_mode_t1_index5; - ---设置索引不可用。 -openGauss=# ALTER INDEX tpcds.ds_ship_mode_t1_index2 UNUSABLE; - ---重建索引。 -openGauss=# ALTER INDEX tpcds.ds_ship_mode_t1_index2 REBUILD; - ---删除一个现有的索引。 -openGauss=# DROP INDEX tpcds.ds_ship_mode_t1_index2; - ---删除表。 -openGauss=# DROP TABLE tpcds.ship_mode_t1; - ---创建表空间。 -openGauss=# CREATE TABLESPACE example1 RELATIVE LOCATION 'tablespace1/tablespace_1'; -openGauss=# CREATE TABLESPACE example2 RELATIVE LOCATION 'tablespace2/tablespace_2'; -openGauss=# CREATE TABLESPACE example3 RELATIVE LOCATION 'tablespace3/tablespace_3'; -openGauss=# CREATE TABLESPACE example4 RELATIVE LOCATION 'tablespace4/tablespace_4'; ---创建表tpcds.customer_address_p1。 -openGauss=# CREATE TABLE tpcds.customer_address_p1 -( - CA_ADDRESS_SK INTEGER NOT NULL, - CA_ADDRESS_ID CHAR(16) NOT NULL, - CA_STREET_NUMBER CHAR(10) , - CA_STREET_NAME VARCHAR(60) , - CA_STREET_TYPE CHAR(15) , - CA_SUITE_NUMBER CHAR(10) , - CA_CITY VARCHAR(60) , - CA_COUNTY VARCHAR(30) , - CA_STATE CHAR(2) , - CA_ZIP CHAR(10) , - CA_COUNTRY VARCHAR(20) , - CA_GMT_OFFSET DECIMAL(5,2) , - CA_LOCATION_TYPE CHAR(20) -) -TABLESPACE example1 -PARTITION BY RANGE(CA_ADDRESS_SK) -( - PARTITION p1 VALUES LESS THAN (3000), - PARTITION p2 VALUES LESS THAN (5000) TABLESPACE example1, - PARTITION p3 VALUES LESS THAN (MAXVALUE) TABLESPACE example2 -) -ENABLE ROW MOVEMENT; ---创建分区表索引ds_customer_address_p1_index1,不指定索引分区的名称。 -openGauss=# CREATE INDEX ds_customer_address_p1_index1 ON tpcds.customer_address_p1(CA_ADDRESS_SK) LOCAL; ---创建分区表索引ds_customer_address_p1_index2,并指定索引分区的名称。 -openGauss=# CREATE INDEX ds_customer_address_p1_index2 ON tpcds.customer_address_p1(CA_ADDRESS_SK) LOCAL -( - PARTITION CA_ADDRESS_SK_index1, - PARTITION CA_ADDRESS_SK_index2 TABLESPACE example3, - PARTITION CA_ADDRESS_SK_index3 TABLESPACE example4 -) -TABLESPACE example2; - ---创建GLOBAL分区索引 -openGauss=CREATE INDEX ds_customer_address_p1_index3 ON tpcds.customer_address_p1(CA_ADDRESS_ID) GLOBAL; - ---不指定关键字,默认创建GLOBAL分区索引 -openGauss=CREATE INDEX ds_customer_address_p1_index4 ON tpcds.customer_address_p1(CA_ADDRESS_ID); - ---修改分区表索引CA_ADDRESS_SK_index2的表空间为example1。 -openGauss=# ALTER INDEX tpcds.ds_customer_address_p1_index2 MOVE PARTITION CA_ADDRESS_SK_index2 TABLESPACE example1; - ---修改分区表索引CA_ADDRESS_SK_index3的表空间为example2。 -openGauss=# ALTER INDEX tpcds.ds_customer_address_p1_index2 MOVE PARTITION CA_ADDRESS_SK_index3 TABLESPACE example2; - ---重命名分区表索引。 -openGauss=# ALTER INDEX tpcds.ds_customer_address_p1_index2 RENAME PARTITION CA_ADDRESS_SK_index1 TO CA_ADDRESS_SK_index4; - ---删除索引和分区表。 -openGauss=# DROP INDEX tpcds.ds_customer_address_p1_index1; -openGauss=# DROP INDEX tpcds.ds_customer_address_p1_index2; -openGauss=# DROP TABLE tpcds.customer_address_p1; ---删除表空间。 -openGauss=# DROP TABLESPACE example1; -openGauss=# DROP TABLESPACE example2; -openGauss=# DROP TABLESPACE example3; -openGauss=# DROP TABLESPACE example4; - ---创建列存表以及列存表GIN索引。 -openGauss=# create table cgin_create_test(a int, b text) with (orientation = column); -CREATE TABLE -openGauss=# create index cgin_test on cgin_create_test using gin(to_tsvector('ngram', b)); -CREATE INDEX -``` - -## 相关链接 - -[ALTER INDEX](ALTER-INDEX.md),[DROP INDEX](DROP-INDEX.md) - -## 优化建议 - -- create index - - 建议仅在匹配如下条件之一时创建索引: - - - 经常执行查询的字段。 - - 在连接条件上创建索引,对于存在多字段连接的查询,建议在这些字段上建立组合索引。例如,select \* from t1 join t2 on t1.a=t2.a and t1.b=t2.b,可以在t1表上的a、b字段上建立组合索引。 - - where子句的过滤条件字段上(尤其是范围条件)。 - - 在经常出现在order by、group by和distinct后的字段。 - - 约束限制: - - - 分区表上不支持创建部分索引。 - - - 分区表创建GLOBAL索引时,存在以下约束条件: - - 不支持表达式索引、部分索引 - - 不支持列存表 - - 仅支持B-tree索引 - - - 在相同属性列上,分区LOCAL索引与GLOBAL索引不能共存。 - - GLOBAL索引,最大支持31列。 - - 如果alter语句不带有UPDATE GLOBAL INDEX,那么原有的GLOBAL索引将失效,查询时将使用其他索引进行查询;如果alter语句带有UPDATE GLOBAL INDEX,原有的GLOBAL索引仍然有效,并且索引功能正确。 - - +# CREATE INDEX + +## 功能描述 + +在指定的表上创建索引。 + +索引可以用来提高数据库查询性能,但是不恰当的使用将导致数据库性能下降。建议仅在匹配如下某条原则时创建索引: + +- 经常执行查询的字段。 +- 在连接条件上创建索引,对于存在多字段连接的查询,建议在这些字段上建立组合索引。例如,select \* from t1 join t2 on t1.a=t2.a and t1.b=t2.b,可以在 t1 表上的a、b字段上建立组合索引。 +- where子句的过滤条件字段上(尤其是范围条件)。 +- 在经常出现在order by、group by和 distinct 后的字段。 + +在分区表上创建索引与在普通表上创建索引的语法不太一样,使用时请注意,如分区表上不支持并行创建索引,不支持创建部分索引。 + +## 注意事项 + +- 索引自身也占用存储空间、消耗计算资源,创建过多的索引将对数据库性能造成负面影响(尤其影响数据导入的性能,建议在数据导入后再建索引)。因此,仅在必要时创建索引。 +- 索引定义里的所有函数和操作符都必须是 immutable 类型的,即它们的结果必须只能依赖于它们的输入参数,而不受任何外部的影响(如另外一个表的内容或者当前时间)。这个限制可以确保该索引的行为是定义良好的。要在一个索引上或 WHERE 中使用用户定义函数,请把它标记为 immutable 类型函数。 +- 分区表索引分为 LOCAL 索引与 GLOBAL 索引, LOCAL 索引与某个具体分区绑定,而 GLOBAL 索引则对应整个分区表。 +- 列存表支持的 PSORT 和B-tree索引都不支持创建表达式索引、部分索引, PSORT 不支持创建唯一索引,B-tree支持创建唯一索引。 +- 列存表支持的 GIN 索引支持创建表达式索引,但表达式不能包含空分词、空列和多列,不支持创建部分索引和唯一索引。 +- HASH索引目前仅限于行存表索引、临时表索引和分区表 LOCAL 索引,且不支持创建多字段索引。 + +## 语法格式 + +- 在表上创建索引。 + + ``` + CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [schema_name.]index_name ] ON table_name [ USING method ] + ({ { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] }[, ...] ) + [ WITH ( {storage_parameter = value} [, ... ] ) ] + [ TABLESPACE tablespace_name ] + [ WHERE predicate ]; + ``` + +- 在分区表上创建索引。 + + ``` + CREATE [ UNIQUE ] INDEX [ [schema_name.]index_name ] ON table_name [ USING method ] + ( {{ column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS LAST ] }[, ...] ) + [ LOCAL [ ( { PARTITION index_partition_name [ TABLESPACE index_partition_tablespace ] } [, ...] ) ] | GLOBAL ] + [ WITH ( { storage_parameter = value } [, ...] ) ] + [ TABLESPACE tablespace_name ]; + ``` + + +## 参数说明 + +- **UNIQUE** + + 创建唯一性索引,每次添加数据时检测表中是否有重复值。如果插入或更新的值会引起重复的记录时,将导致一个错误。 + + 目前只有B-tree索引支持唯一索引。 + +- **CONCURRENTLY** + + 以不阻塞 DML 的方式创建索引(加 ShareUpdateExclusiveLock 锁)。创建索引时,一般会阻塞其他语句对该索引所依赖表的访问。指定此关键字,可以实现创建过程中不阻塞 DML 。 + + - 此选项只能指定一个索引的名称。 + - 普通 CREATE INDEX 命令可以在事务内执行,但是 CREATE INDEX CONCURRENTLY 不可以在事务内执行。 + - 列存表、分区表和临时表不支持 CONCURRENTLY 方式创建索引。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 创建索引时指定此关键字,需要执行先后两次对该表的全表扫描来完成 build ,第一次扫描的时候创建索引,不阻塞读写操作;第二次扫描的时候合并更新第一次扫描到目前为止发生的变更。 + + >- 由于需要执行两次对表的扫描和 build ,而且必须等待现有的所有可能对该表执行修改的事务结束。这意味着该索引的创建比正常耗时更长,同时因此带来的 CPU 和I/O消耗对其他业务也会造成影响。 + + >- 如果在索引构建时发生失败,那会留下一个“不可用”的索引。这个索引会被查询忽略,但它仍消耗更新开销。这种情况推荐的恢复方法是删除该索引并尝试再次 CONCURRENTLY 建索引。 + + >- 由于在第二次扫描之后,索引构建必须等待任何持有早于第二次扫描拿的快照的事务终止,而且建索引时加的 ShareUpdateExclusiveLock 锁(4级)会和大于等于 4 级的锁冲突,在创建这类索引时,容易引发卡住(hang)或者死锁问题。例如: + + > - 两个会话对同一个表创建 CONCURRENTLY 索引,会引起死锁问题; + + > - 两个会话,一个对表创建 CONCURRENTLY 索引,一个 drop table ,会引起死锁问题; + + > - 三个会话,会话 1 先对表 a 加锁,不提交,会话 2 接着对表 b 创建 CONCURRENTLY 索引,会话 3 接着对表 a 执行写入操作,在会话 1 事务未提交之前,会话 2 会一直被阻塞; + + > - 将事务隔离级别设置成可重复读(默认为读已提交),起两个会话,会话 1 起事务对表 a 执行写入操作,不提交,会话 2 对表 b 创建 CONCURRENTLY 索引,在会话 1 事务未提交之前,会话 2 会一直被阻塞。 + +- **schema\_name** + + 模式的名称。 + + 取值范围:已存在模式名。 + +- **index\_name** + + 要创建的索引名,索引的模式与表相同。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **table\_name** + + 需要为其创建索引的表的名称,可以用模式修饰。 + + 取值范围:已存在的表名。 + +- **USING method** + + 指定创建索引的方法。 + + 取值范围: + + - btree:B-tree索引使用一种类似于B+树的结构来存储数据的键值,通过这种结构能够快速的查找索引。 btree 适合支持比较查询以及查询范围。 + - hash:Hash索引使用 Hash 函数对索引的关键字进行散列。只能处理简单等值比较,比较适合在索引值较长的情况下使用。 + - gin:GIN索引是倒排索引,可以处理包含多个键的值(比如数组)。 + - gist:Gist索引适用于几何和地理等多维数据类型和集合数据类型。目前支持的数据类型有box、point、poly、circle、tsvector、tsquery、range。 + - Psort:Psort索引。针对列存表进行局部排序索引。 + - ubtree:仅供 ustore 表使用的多版本B-tree索引,索引页面上包含事务信息,能并自主回收页面。 + + 行存表(ASTORE存储引擎)支持的索引类型:btree(行存表缺省值)、hash、gin、gist。行存表(USTORE存储引擎)支持的索引类型:ubtree。列存表支持的索引类型:Psort(列存表缺省值)、btree、gin。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >列存表对 GIN 索引支持仅限于对于 tsvector 类型的支持,即创建列存 GIN 索引入参需要为to\_tsvector函数(的返回值)。此方法为 GIN 索引比较普遍的使用方式。 + +- **column\_name** + + 表中需要创建索引的列的名称(字段名)。 + + 如果索引方式支持多字段索引,可以声明多个字段。全局索引最多可以声明 31 个字段,其他索引最多可以声明 32 个字段。 + +- **expression** + + 创建一个基于该表的一个或多个字段的表达式索引,通常必须写在圆括弧中。如果表达式有函数调用的形式,圆括弧可以省略。 + + 表达式索引可用于获取对基本数据的某种变形的快速访问。比如,一个在upper\(col\)上的函数索引将允许WHERE upper\(col\) = 'JIM'子句使用索引。 + + 在创建表达式索引时,如果表达式中包含 IS NULL 子句,则这种索引是无效的。此时,建议用户尝试创建一个部分索引。 + +- **COLLATE collation** + +COLLATE 子句指定列的排序规则(该列必须是可排列的数据类型)。如果没有指定,则使用默认的排序规则。排序规则可以使用“select \* from pg\_collation”命令从pg\_collation系统表中查询,默认的排序规则为查询结果中以 default 开始的行。 + +- **opclass** + + 操作符类的名称。对于索引的每一列可以指定一个操作符类,操作符类标识了索引那一列的使用的操作符。例如一个B-tree索引在一个四字节整数上可以使用int4\_ops;这个操作符类包括四字节整数的比较函数。实际上对于列上的数据类型默认的操作符类是足够用的。操作符类主要用于一些有多种排序的数据。例如,用户想按照绝对值或者实数部分排序一个复数。能通过定义两个操作符类然后当建立索引时选择合适的类。 + +- **ASC** + + 指定按升序排序(默认)。 + +- **DESC** + + 指定按降序排序。 + +- **NULLS FIRST** + + 指定空值在排序中排在非空值之前,当指定 DESC 排序时,本选项为默认的。 + +- **NULLS LAST** + + 指定空值在排序中排在非空值之后,未指定 DESC 排序时,本选项为默认的。 + +- **LOCAL** + + 指定创建的分区索引为 LOCAL 索引。 + +- **GLOBAL** + + 指定创建的分区索引为 GLOBAL 索引,当不指定LOCAL、GLOBAL关键字时,默认创建 GLOBAL 索引。 + +- **WITH \( \{storage\_parameter = value\} \[, ... \] \)** + + 指定索引方法的存储参数。 + + 取值范围: + + 只有 GIN 索引支持FASTUPDATE、GIN\_PENDING\_LIST\_LIMIT参数。 GIN 和 Psort 之外的索引都支持 FILLFACTOR 参数。 + + - FILLFACTOR + + 一个索引的填充因子(fillfactor)是一个介于 10 和 100 之间的百分数。 + + 取值范围:10\~100 + + - FASTUPDATE + +GIN 索引是否使用快速更新。 + + 取值范围:ON,OFF + + 默认值:ON + + - GIN\_PENDING\_LIST\_LIMIT + + 当 GIN 索引启用 fastupdate 时,设置该索引 pending list 容量的最大值。 + + 取值范围:64\~INT\_MAX,单位 KB 。 + + 默认值:gin\_pending\_list\_limit的默认取决于 GUC 中gin\_pending\_list\_limit的值(默认为4MB) + + +- **TABLESPACE tablespace\_name** + + 指定索引的表空间,如果没有声明则使用默认的表空间。 + + 取值范围:已存在的表空间名。 + +- **WHERE predicate** + + 创建一个部分索引。部分索引是一个只包含表的一部分记录的索引,通常是该表中比其他部分数据更有用的部分。例如,有一个表,表里包含已记账和未记账的定单,未记账的定单只占表的一小部分而且这部分是最常用的部分,此时就可以通过只在未记账部分创建一个索引来改善性能。另外一个可能的用途是使用带有 UNIQUE 的 WHERE 强制一个表的某个子集的唯一性。 + + 取值范围:predicate表达式只能引用表的字段,它可以使用所有字段,而不仅是被索引的字段。目前,子查询和聚集表达式不能出现在 WHERE 子句里。 + +- **PARTITION index\_partition\_name** + + 索引分区的名称。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **TABLESPACE index\_partition\_tablespace** + + 索引分区的表空间。 + + 取值范围:如果没有声明,将使用分区表索引的表空间index\_tablespace。 + + +## 示例 + +``` +--创建表tpcds.ship_mode_t1。 +openGauss=# create schema tpcds; +openGauss=# CREATE TABLE tpcds.ship_mode_t1 +( + SM_SHIP_MODE_SK INTEGER NOT NULL , + SM_SHIP_MODE_ID CHAR(16) NOT NULL, + SM_TYPE CHAR(30) , + SM_CODE CHAR(10) , + SM_CARRIER CHAR(20) , + SM_CONTRACT CHAR(20) +) +; + +--在表tpcds.ship_mode_t1上的 SM_SHIP_MODE_SK 字段上创建普通的唯一索引。 +openGauss=# CREATE UNIQUE INDEX ds_ship_mode_t1_index1 ON tpcds.ship_mode_t1(SM_SHIP_MODE_SK); + +--在表tpcds.ship_mode_t1上的 SM_SHIP_MODE_SK 字段上创建指定B-tree索引。 +openGauss=# CREATE INDEX ds_ship_mode_t1_index4 ON tpcds.ship_mode_t1 USING btree(SM_SHIP_MODE_SK); + +--在表tpcds.ship_mode_t1上 SM_CODE 字段上创建表达式索引。 +openGauss=# CREATE INDEX ds_ship_mode_t1_index2 ON tpcds.ship_mode_t1(SUBSTR(SM_CODE, 1 ,4)); + +--在表tpcds.ship_mode_t1上的 SM_SHIP_MODE_SK 字段上创建 SM_SHIP_MODE_SK 大于 10 的部分索引。 +openGauss=# CREATE UNIQUE INDEX ds_ship_mode_t1_index3 ON tpcds.ship_mode_t1(SM_SHIP_MODE_SK) WHERE SM_SHIP_MODE_SK>10; + +--重命名一个现有的索引。 +openGauss=# ALTER INDEX tpcds.ds_ship_mode_t1_index1 RENAME TO ds_ship_mode_t1_index5; + +--设置索引不可用。 +openGauss=# ALTER INDEX tpcds.ds_ship_mode_t1_index2 UNUSABLE; + +--重建索引。 +openGauss=# ALTER INDEX tpcds.ds_ship_mode_t1_index2 REBUILD; + +--删除一个现有的索引。 +openGauss=# DROP INDEX tpcds.ds_ship_mode_t1_index2; + +--删除表。 +openGauss=# DROP TABLE tpcds.ship_mode_t1; + +--创建表空间。 +openGauss=# CREATE TABLESPACE example1 RELATIVE LOCATION 'tablespace1/tablespace_1'; +openGauss=# CREATE TABLESPACE example2 RELATIVE LOCATION 'tablespace2/tablespace_2'; +openGauss=# CREATE TABLESPACE example3 RELATIVE LOCATION 'tablespace3/tablespace_3'; +openGauss=# CREATE TABLESPACE example4 RELATIVE LOCATION 'tablespace4/tablespace_4'; +--创建表tpcds.customer_address_p1。 +openGauss=# CREATE TABLE tpcds.customer_address_p1 +( + CA_ADDRESS_SK INTEGER NOT NULL , + CA_ADDRESS_ID CHAR(16) NOT NULL, + CA_STREET_NUMBER CHAR(10) , + CA_STREET_NAME VARCHAR(60) , + CA_STREET_TYPE CHAR(15) , + CA_SUITE_NUMBER CHAR(10) , + CA_CITY VARCHAR(60) , + CA_COUNTY VARCHAR(30) , + CA_STATE CHAR(2) , + CA_ZIP CHAR(10) , + CA_COUNTRY VARCHAR(20) , + CA_GMT_OFFSET DECIMAL(5,2) , + CA_LOCATION_TYPE CHAR(20) +) +TABLESPACE example1 +PARTITION BY RANGE(CA_ADDRESS_SK) +( + PARTITION p1 VALUES LESS THAN (3000), + PARTITION p2 VALUES LESS THAN (5000) TABLESPACE example1, + PARTITION p3 VALUES LESS THAN (MAXVALUE) TABLESPACE example2 +) +ENABLE ROW MOVEMENT; +--创建分区表索引 ds_customer_address_p1_index1 ,不指定索引分区的名称。 +openGauss=# CREATE INDEX ds_customer_address_p1_index1 ON tpcds.customer_address_p1(CA_ADDRESS_SK) LOCAL; +--创建分区表索引 ds_customer_address_p1_index2 ,并指定索引分区的名称。 +openGauss=# CREATE INDEX ds_customer_address_p1_index2 ON tpcds.customer_address_p1(CA_ADDRESS_SK) LOCAL +( + PARTITION CA_ADDRESS_SK_index1 , + PARTITION CA_ADDRESS_SK_index2 TABLESPACE example3 , + PARTITION CA_ADDRESS_SK_index3 TABLESPACE example4 +) +TABLESPACE example2; + +--创建 GLOBAL 分区索引 +openGauss=CREATE INDEX ds_customer_address_p1_index3 ON tpcds.customer_address_p1(CA_ADDRESS_ID) GLOBAL; + +--不指定关键字,默认创建 GLOBAL 分区索引 +openGauss=CREATE INDEX ds_customer_address_p1_index4 ON tpcds.customer_address_p1(CA_ADDRESS_ID); + +--修改分区表索引 CA_ADDRESS_SK_index2 的表空间为 example1 。 +openGauss=# ALTER INDEX tpcds.ds_customer_address_p1_index2 MOVE PARTITION CA_ADDRESS_SK_index2 TABLESPACE example1; + +--修改分区表索引 CA_ADDRESS_SK_index3 的表空间为 example2 。 +openGauss=# ALTER INDEX tpcds.ds_customer_address_p1_index2 MOVE PARTITION CA_ADDRESS_SK_index3 TABLESPACE example2; + +--重命名分区表索引。 +openGauss=# ALTER INDEX tpcds.ds_customer_address_p1_index2 RENAME PARTITION CA_ADDRESS_SK_index1 TO CA_ADDRESS_SK_index4; + +--删除索引和分区表。 +openGauss=# DROP INDEX tpcds.ds_customer_address_p1_index1; +openGauss=# DROP INDEX tpcds.ds_customer_address_p1_index2; +openGauss=# DROP TABLE tpcds.customer_address_p1; +--删除表空间。 +openGauss=# DROP TABLESPACE example1; +openGauss=# DROP TABLESPACE example2; +openGauss=# DROP TABLESPACE example3; +openGauss=# DROP TABLESPACE example4; + +--创建列存表以及列存表 GIN 索引。 +openGauss=# create table cgin_create_test(a int, b text) with (orientation = column); +CREATE TABLE +openGauss=# create index cgin_test on cgin_create_test using gin(to_tsvector('ngram', b)); +CREATE INDEX +``` + +## 相关链接 + +[ALTER INDEX](ALTER-INDEX.md),[DROP INDEX](DROP-INDEX.md) + +## 优化建议 + +- create index + + 建议仅在匹配如下条件之一时创建索引: + + - 经常执行查询的字段。 + - 在连接条件上创建索引,对于存在多字段连接的查询,建议在这些字段上建立组合索引。例如,select \* from t1 join t2 on t1.a=t2.a and t1.b=t2.b,可以在 t1 表上的a、b字段上建立组合索引。 + - where子句的过滤条件字段上(尤其是范围条件)。 + - 在经常出现在order by、group by和 distinct 后的字段。 + + 约束限制: + + - 分区表上不支持创建部分索引。 + + - 分区表创建 GLOBAL 索引时,存在以下约束条件: + - 不支持表达式索引、部分索引 + - 不支持列存表 + - 仅支持B-tree索引 + + - 在相同属性列上,分区 LOCAL 索引与 GLOBAL 索引不能共存。 + - GLOBAL索引,最大支持 31 列。 + - 如果 alter 语句不带有 UPDATE GLOBAL INDEX ,那么原有的 GLOBAL 索引将失效,查询时将使用其他索引进行查询;如果 alter 语句带有 UPDATE GLOBAL INDEX ,原有的 GLOBAL 索引仍然有效,并且索引功能正确。 + + diff --git a/content/zh/docs/Developerguide/CREATE-LANGUAGE.md b/content/zh/docs/Developerguide/CREATE-LANGUAGE.md index ff7648d23..fa21ffd39 100644 --- a/content/zh/docs/Developerguide/CREATE-LANGUAGE.md +++ b/content/zh/docs/Developerguide/CREATE-LANGUAGE.md @@ -1,63 +1,63 @@ -# CREATE LANGUAGE - -## 功能描述 - -定义一种新的过程语言。单机和集中式暂不支持创建过程语言。 - -## 语法格式 - -``` -CREATE [ OR REPLACE ] [ PROCEDURAL ] LANGUAGE name -CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name - HANDLER call_handler [ INLINE inline_handler ] [ VALIDATOR valfunction ] -``` - -## 参数说明 - -- **TRUSTED** - - TRUSTED说明该语言并不授权没有权限的用户访问数据。如果在注册该语言时忽略这个关键字,则只有超级用户权限可以使用。 - -- **PROCEDURAL** - - 这是个没有用的字。 - -- **name** - - 新过程语言的名称。这个名字应该在数据库的所有语言中唯一。 - - 出于向下兼容的原因,这个名字可以用单引号包围。 - -- **HANDLER call\_handler** - - call\_handler是一个以前注册过的函数名字,该函数将被用来执行该过程语言的函数。过程语言的调用处理器必须用一种编译语言\(比如C\)书写,调用风格必须是版本1的调用风格,并且注册为不接受参数并且返回language\_handler类型的函数。language\_handler是用于将函数声明为调用处理器的占位符。 - -- **INLINE inline\_handler** - - inline\_handler是以前注册过的函数名字,用来在该语言中执行一个匿名代码块\(DO命令\)。如果没有指定inline\_handler函数,那么该语言不支持匿名代码块。处理器函数必须接受一个internal类型的参数,这将是DO命令的内部表示,并且它通常返回void。忽略该处理器的返回值。 - -- **VALIDATOR valfunction** - - valfunction是一个以前注册过的函数名字,在用该语言创建新函数的时候将用它来校验新函数。如果没有声明校验函数,那么建立新函数的时候就不会检查它。校验函数必须接受一个类型为oid的参数,它是将要创建的函数的OID,并且通常会返回void。 - - 校验函数通常会检查函数体,看看有没有语法错误,但是它也可以查看函数的其它属性,比如该语言是否不能处理某种参数类型。校验函数应该用ereport\(\)函数报告错误。该函数的返回值将被忽略。 - - -## 示例 - -创建标准的过程语言的比较好的方法: - -``` -CREATE LANGUAGE plperl; -``` - -对于pg\_pltemplate还不知道的语言,需要下面这样的序列: - -``` -CREATE FUNCTION plsample_call_handler() RETURNS language_handler - AS '$libdir/plsample' - LANGUAGE C; -CREATE LANGUAGE plsample - HANDLER plsample_call_handler; -``` - +# CREATE LANGUAGE + +## 功能描述 + +定义一种新的过程语言。单机和集中式暂不支持创建过程语言。 + +## 语法格式 + +``` +CREATE [ OR REPLACE ] [ PROCEDURAL ] LANGUAGE name +CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name + HANDLER call_handler [ INLINE inline_handler ] [ VALIDATOR valfunction ] +``` + +## 参数说明 + +- **TRUSTED** + +TRUSTED 说明该语言并不授权没有权限的用户访问数据。如果在注册该语言时忽略这个关键字,则只有超级用户权限可以使用。 + +- **PROCEDURAL** + + 这是个没有用的字。 + +- **name** + + 新过程语言的名称。这个名字应该在数据库的所有语言中唯一。 + + 出于向下兼容的原因,这个名字可以用单引号包围。 + +- **HANDLER call\_handler** + + call\_handler是一个以前注册过的函数名字,该函数将被用来执行该过程语言的函数。过程语言的调用处理器必须用一种编译语言\(比如C\)书写,调用风格必须是版本 1 的调用风格,并且注册为不接受参数并且返回language\_handler类型的函数。language\_handler是用于将函数声明为调用处理器的占位符。 + +- **INLINE inline\_handler** + + inline\_handler是以前注册过的函数名字,用来在该语言中执行一个匿名代码块\(DO命令\)。如果没有指定inline\_handler函数,那么该语言不支持匿名代码块。处理器函数必须接受一个 internal 类型的参数,这将是 DO 命令的内部表示,并且它通常返回 void 。忽略该处理器的返回值。 + +- **VALIDATOR valfunction** + +valfunction 是一个以前注册过的函数名字,在用该语言创建新函数的时候将用它来校验新函数。如果没有声明校验函数,那么建立新函数的时候就不会检查它。校验函数必须接受一个类型为 oid 的参数,它是将要创建的函数的 OID ,并且通常会返回 void 。 + + 校验函数通常会检查函数体,看看有没有语法错误,但是它也可以查看函数的其它属性,比如该语言是否不能处理某种参数类型。校验函数应该用ereport\(\)函数报告错误。该函数的返回值将被忽略。 + + +## 示例 + +创建标准的过程语言的比较好的方法: + +``` +CREATE LANGUAGE plperl; +``` + +对于pg\_pltemplate还不知道的语言,需要下面这样的序列: + +``` +CREATE FUNCTION plsample_call_handler() RETURNS language_handler + AS '$libdir/plsample' + LANGUAGE C; +CREATE LANGUAGE plsample + HANDLER plsample_call_handler; +``` + diff --git a/content/zh/docs/Developerguide/CREATE-MASKING-POLICY.md b/content/zh/docs/Developerguide/CREATE-MASKING-POLICY.md index f4f69c7d1..a5b799e9f 100644 --- a/content/zh/docs/Developerguide/CREATE-MASKING-POLICY.md +++ b/content/zh/docs/Developerguide/CREATE-MASKING-POLICY.md @@ -1,113 +1,113 @@ -# CREATE MASKING POLICY - -## 功能描述 - -创建脱敏策略。 - -## 注意事项 - -只有poladmin、sysadmin或初始用户能执行此操作。 - -需要开启安全策略开关,即设置GUC参数enable\_security\_policy=on,脱敏策略才可以生效。 - -预置脱敏函数的执行效果及支持的数据类型请参考《特性描述》中“数据库安全 \> 动态数据脱敏机制”章节。 - -## 语法格式 - -``` -CREATE MASKING POLICY policy_name masking_clause[, ...]* policy_filter [ENABLE | DISABLE]; -``` - -- masking\_clause: - - ``` - masking_function ON LABEL(label_name[, ...]*) - ``` - -- masking\_function: - - maskall不是预置函数,硬编码在代码中,不支持\\df展示。 - - 预置时脱敏方式如下: - - ``` - maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking - ``` - - -- policy\_filter: - - ``` - FILTER ON FILTER_TYPE(filter_value [,...]*)[,...]* - ``` - - -- FILTER\_TYPE: - - ``` - IP | APP | ROLES - ``` - - -## 参数说明 - -- **policy\_name** - - 审计策略名称,需要唯一,不可重复。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **label\_name** - - 资源标签名称。 - -- **masking\_clause** - - 指出使用何种脱敏函数对被label\_name标签标记的数据库资源进行脱敏,支持用schema.function的方式指定脱敏函数。 - -- **policy\_filter** - - 指出该脱敏策略对何种身份的用户生效,若为空表示对所用用户生效。 - - -- **FILTER\_TYPE** - - 描述策略过滤的条件类型,包括IP | APP | ROLES。 - -- **filter\_value** - - 指具体过滤信息内容,例如具体的IP、具体的APP名称、具体的用户名。 - - -- **ENABLE|DISABLE** - - 可以打开或关闭脱敏策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。 - - -## 示例 - -``` ---创建dev_mask和bob_mask用户。 -openGauss=# CREATE USER dev_mask PASSWORD 'dev@1234'; -openGauss=# CREATE USER bob_mask PASSWORD 'bob@1234'; - ---创建一个表tb_for_masking -openGauss=# CREATE TABLE tb_for_masking(col1 text, col2 text, col3 text); - ---创建资源标签标记敏感列col1 -openGauss=# CREATE RESOURCE LABEL mask_lb1 ADD COLUMN(tb_for_masking.col1); - ---创建资源标签标记敏感列col2 -openGauss=# CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2); - ---对访问敏感列col1的操作创建脱敏策略 -openGauss=# CREATE MASKING POLICY maskpol1 maskall ON LABEL(mask_lb1); - ---创建仅对用户dev_mask和bob_mask,客户端工具为psql和gsql,IP地址为'10.20.30.40', '127.0.0.0/24'场景下生效的脱敏策略。 -openGauss=# CREATE MASKING POLICY maskpol2 randommasking ON LABEL(mask_lb2) FILTER ON ROLES(dev_mask, bob_mask), APP(psql, gsql), IP('10.20.30.40', '127.0.0.0/24'); -``` - -## 相关链接 - -[ALTER MASKING POLICY](ALTER-MASKING-POLICY.md),[DROP MASKING POLICY](DROP-MASKING-POLICY.md)。 - +# CREATE MASKING POLICY + +## 功能描述 + +创建脱敏策略。 + +## 注意事项 + +只有poladmin、sysadmin或初始用户能执行此操作。 + +需要开启安全策略开关,即设置 GUC 参数enable\_security\_policy=on,脱敏策略才可以生效。 + +预置脱敏函数的执行效果及支持的数据类型请参考《特性描述》中“数据库安全 \> 动态数据脱敏机制”章节。 + +## 语法格式 + +``` +CREATE MASKING POLICY policy_name masking_clause[, ...]* policy_filter [ENABLE | DISABLE]; +``` + +- masking\_clause: + + ``` + masking_function ON LABEL(label_name[, ...]*) + ``` + +- masking\_function: + +maskall 不是预置函数,硬编码在代码中,不支持\\df展示。 + + 预置时脱敏方式如下: + + ``` + maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking + ``` + + +- policy\_filter: + + ``` + FILTER ON FILTER_TYPE(filter_value [,...]*)[,...]* + ``` + + +- FILTER\_TYPE: + + ``` + IP | APP | ROLES + ``` + + +## 参数说明 + +- **policy\_name** + + 审计策略名称,需要唯一,不可重复。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **label\_name** + + 资源标签名称。 + +- **masking\_clause** + + 指出使用何种脱敏函数对被label\_name标签标记的数据库资源进行脱敏,支持用schema.function的方式指定脱敏函数。 + +- **policy\_filter** + + 指出该脱敏策略对何种身份的用户生效,若为空表示对所用用户生效。 + + +- **FILTER\_TYPE** + + 描述策略过滤的条件类型,包括IP | APP | ROLES。 + +- **filter\_value** + + 指具体过滤信息内容,例如具体的IP、具体的 APP 名称、具体的用户名。 + + +- **ENABLE|DISABLE** + + 可以打开或关闭脱敏策略。若不指定ENABLE|DISABLE,语句默认为 ENABLE 。 + + +## 示例 + +``` +--创建 dev_mask 和 bob_mask 用户。 +openGauss=# CREATE USER dev_mask PASSWORD 'dev@1234'; +openGauss=# CREATE USER bob_mask PASSWORD 'bob@1234'; + +--创建一个表tb_for_masking +openGauss=# CREATE TABLE tb_for_masking(col1 text, col2 text , col3 text); + +--创建资源标签标记敏感列col1 +openGauss=# CREATE RESOURCE LABEL mask_lb1 ADD COLUMN(tb_for_masking.col1); + +--创建资源标签标记敏感列col2 +openGauss=# CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2); + +--对访问敏感列 col1 的操作创建脱敏策略 +openGauss=# CREATE MASKING POLICY maskpol1 maskall ON LABEL(mask_lb1); + +--创建仅对用户 dev_mask 和 bob_mask ,客户端工具为 psql 和 gsql , IP 地址为'10.20.30.40', '127.0.0.0/24'场景下生效的脱敏策略。 +openGauss=# CREATE MASKING POLICY maskpol2 randommasking ON LABEL(mask_lb2) FILTER ON ROLES(dev_mask, bob_mask), APP(psql, gsql), IP('10.20.30.40', '127.0.0.0/24'); +``` + +## 相关链接 + +[ALTER MASKING POLICY](ALTER-MASKING-POLICY.md),[DROP MASKING POLICY](DROP-MASKING-POLICY.md)。 + diff --git a/content/zh/docs/Developerguide/CREATE-MATERIALIZED-VIEW.md b/content/zh/docs/Developerguide/CREATE-MATERIALIZED-VIEW.md index f30bb6664..8dd23e27b 100644 --- a/content/zh/docs/Developerguide/CREATE-MATERIALIZED-VIEW.md +++ b/content/zh/docs/Developerguide/CREATE-MATERIALIZED-VIEW.md @@ -1,69 +1,69 @@ -# CREATE MATERIALIZED VIEW - -CREATE MATERIALIZED VIEW会创建一个全量物化视图,并且后续可以使用REFRESH MATERIALIZED VIEW(全量刷新)刷新物化视图的数据。 - -CREATE MATERIALIZED VIEW类似于CREATE TABLE AS,不过它会记住被用来初始化该视图的查询, 因此它可以在后续中进行数据刷新。一个物化视图有很多和表相同的属性,但是不支持临时物化视图。 - -## 注意事项 - -- 全量物化视图不可以在临时表或全局临时表上创建。 -- 全量物化视图不支持nodegroup。 -- 创建全量物化视图后,基表中的绝大多数DDL操作不再支持。 -- 不支持对全量物化视图进行IUD操作。 -- 全量物化视图创建后,当基表数据发生变化时,需要使用刷新(REFRESH)命令保持物化视图与基表同步。 - -## 语法格式 - -``` -CREATE MATERIALIZED VIEW mv_name - [ (column_name [, ...] ) ] - [ WITH ( {storage_parameter = value} [, ... ] ) ] - [ TABLESPACE tablespace_name ] - AS query - [ WITH [ NO ] DATA ]; -``` - -## 参数说明 - -- **mv\_name** - - 要创建的物化视图的名称(可以被模式限定)。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **column\_name** - - 新物化视图中的一个列名。物化视图支持指定列,指定列需要和后面的查询语句结果的列数量保持一致;如果没有提供列名,会从查询的输出列名中获取列名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **WITH \( storage\_parameter \[= value\] \[, ... \] \)** - - 这个子句为表或索引指定一个可选的存储参数。详见[CREATE TABLE](CREATE-TABLE.md)。 - -- **TABLESPACE tablespace\_name** - - 指定新建物化视图所属表空间。如果没有声明,将使用默认表空间。 - -- **AS query** - - 一个SELECT、TABLE 或者VALUES命令。这个查询将在一个安全受限的操作中运行。 - - -## 示例 - -``` ---创建一个普通表 -openGauss=# CREATE TABLE my_table (c1 int, c2 int); ---创建全量物化视图 -openGauss=# CREATE MATERIALIZED VIEW my_mv AS SELECT * FROM my_table; ---基表写入数据 -openGauss=# INSERT INTO my_table VALUES(1,1),(2,2); ---对全量物化视图my_mv进行全量刷新 -openGauss=# REFRESH MATERIALIZED VIEW my_mv; -``` - -## 相关链接 - -[ALTER MATERIALIZED VIEW](ALTER-MATERIALIZED-VIEW.md), [CREATE INCREMENTAL MATERIALIZED VIEW](CREATE-INCREMENTAL-MATERIALIZED-VIEW.md),[CREATE TABLE](CREATE-TABLE.md),[DROP MATERIALIZED VIEW](DROP-MATERIALIZED-VIEW.md),[REFRESH INCREMENTAL MATERIALIZED VIEW](REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md),[REFRESH MATERIALIZED VIEW](REFRESH-MATERIALIZED-VIEW.md) - +# CREATE MATERIALIZED VIEW + +CREATE MATERIALIZED VIEW 会创建一个全量物化视图,并且后续可以使用REFRESH MATERIALIZED VIEW(全量刷新)刷新物化视图的数据。 + +CREATE MATERIALIZED VIEW 类似于 CREATE TABLE AS ,不过它会记住被用来初始化该视图的查询, 因此它可以在后续中进行数据刷新。一个物化视图有很多和表相同的属性,但是不支持临时物化视图。 + +## 注意事项 + +- 全量物化视图不可以在临时表或全局临时表上创建。 +- 全量物化视图不支持 nodegroup 。 +- 创建全量物化视图后,基表中的绝大多数 DDL 操作不再支持。 +- 不支持对全量物化视图进行 IUD 操作。 +- 全量物化视图创建后,当基表数据发生变化时,需要使用刷新(REFRESH)命令保持物化视图与基表同步。 + +## 语法格式 + +``` +CREATE MATERIALIZED VIEW mv_name + [ (column_name [, ...] ) ] + [ WITH ( {storage_parameter = value} [, ... ] ) ] + [ TABLESPACE tablespace_name ] + AS query + [ WITH [ NO ] DATA ]; +``` + +## 参数说明 + +- **mv\_name** + + 要创建的物化视图的名称(可以被模式限定)。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **column\_name** + + 新物化视图中的一个列名。物化视图支持指定列,指定列需要和后面的查询语句结果的列数量保持一致;如果没有提供列名,会从查询的输出列名中获取列名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **WITH \( storage\_parameter \[= value\] \[, ... \] \)** + + 这个子句为表或索引指定一个可选的存储参数。详见[CREATE TABLE](CREATE-TABLE.md)。 + +- **TABLESPACE tablespace\_name** + + 指定新建物化视图所属表空间。如果没有声明,将使用默认表空间。 + +- **AS query** + + 一个SELECT、TABLE 或者 VALUES 命令。这个查询将在一个安全受限的操作中运行。 + + +## 示例 + +``` +--创建一个普通表 +openGauss=# CREATE TABLE my_table (c1 int, c2 int); +--创建全量物化视图 +openGauss=# CREATE MATERIALIZED VIEW my_mv AS SELECT * FROM my_table; +--基表写入数据 +openGauss=# INSERT INTO my_table VALUES(1,1),(2,2); +--对全量物化视图 my_mv 进行全量刷新 +openGauss=# REFRESH MATERIALIZED VIEW my_mv; +``` + +## 相关链接 + +[ALTER MATERIALIZED VIEW](ALTER-MATERIALIZED-VIEW.md), [CREATE INCREMENTAL MATERIALIZED VIEW](CREATE-INCREMENTAL-MATERIALIZED-VIEW.md),[CREATE TABLE](CREATE-TABLE.md),[DROP MATERIALIZED VIEW](DROP-MATERIALIZED-VIEW.md),[REFRESH INCREMENTAL MATERIALIZED VIEW](REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md),[REFRESH MATERIALIZED VIEW](REFRESH-MATERIALIZED-VIEW.md) + diff --git a/content/zh/docs/Developerguide/CREATE-MODEL.md b/content/zh/docs/Developerguide/CREATE-MODEL.md index 542545ddb..68ad4750b 100644 --- a/content/zh/docs/Developerguide/CREATE-MODEL.md +++ b/content/zh/docs/Developerguide/CREATE-MODEL.md @@ -1,80 +1,80 @@ -# CREATE MODEL - -## 功能描述 - -训练机器学习模型并保存模型。 - -## 注意事项 - -- 模型名称具有唯一性约束,注意命名格式。 -- AI训练时长波动较大,在部分情况下训练运行时间较长,设置的GUC参数statement\_timeout时长过短会导致训练中断。建议statement\_timeout设置为0,不对语句执行时长进行限制。 - -## 语法格式 - -``` -CREATE MODEL model_name USING algorithm_name -[FEATURES { {expression [ [ AS ] output_name ]} [, ...] }] -[TARGET { {expression [ [ AS ] output_name ]} [, ...] }] -FROM { table_name | select_query } -WITH hyperparameter_name = { hyperparameter_value | DEFAULT } [, ...] } -``` - -## 参数说明 - -- **model\_name** - - 对训练模型进行命名,模型名称具有唯一性约束。 - - 取值范围:字符串,需要符合标识符的命名规范。 - -- **architecture\_name** - - 训练模型的算法类型。 - - 取值范围:字符型,当前支持:logistic\_regression、linear\_regression、svm\_classification、kmeans。 - -- **attribute\_list** - - 枚举训练模型的输入列名。 - - 取值范围:字符型,需要符合数据属性名的命名规范。 - -- **attribute\_name** - - 在监督学习任务重训练模型的目标列名\(可进行简单的表达式处理\)。 - - 取值范围:字符型,需要符合数据属性名的命名规范。 - -- **subquery** - - 数据源。 - - 取值范围:字符串,符合数据库SQL语法。 - -- **hyper\_parameter\_name** - - 机器学习模型的超参名称。 - - 取值范围:字符串,针对不同算法范围不同,详情请参考:[表2](zh-cn_topic_0000001149426339.md#table15985527185615)。 - -- **hp\_value** - - 超参数值。 - - 取值范围:字符串,针对不同算法范围不同,详情请参考:[表3](zh-cn_topic_0000001149426339.md#table86881521502)。 - - -## 示例 - -``` -CREATE MODEL price_model USING logistic_regression - FEATURES size, lot - TARGET price - FROM HOUSES - (WITH learning_rate=0.88, max_iterations=default); -``` - -## 相关链接 - -[DROP MODEL](DROP-MODEL.md),[PREDICT BY](PREDICT-BY.md) - +# CREATE MODEL + +## 功能描述 + +训练机器学习模型并保存模型。 + +## 注意事项 + +- 模型名称具有唯一性约束,注意命名格式。 +- AI训练时长波动较大,在部分情况下训练运行时间较长,设置的 GUC 参数statement\_timeout时长过短会导致训练中断。建议statement\_timeout设置为 0 ,不对语句执行时长进行限制。 + +## 语法格式 + +``` +CREATE MODEL model_name USING algorithm_name +[FEATURES { {expression [ [ AS ] output_name ]} [, ...] }] +[TARGET { {expression [ [ AS ] output_name ]} [, ...] }] +FROM { table_name | select_query } +WITH hyperparameter_name = { hyperparameter_value | DEFAULT } [, ...] } +``` + +## 参数说明 + +- **model\_name** + + 对训练模型进行命名,模型名称具有唯一性约束。 + + 取值范围:字符串,需要符合标识符的命名规范。 + +- **architecture\_name** + + 训练模型的算法类型。 + + 取值范围:字符型,当前支持:logistic\_regression、linear\_regression、svm\_classification、kmeans。 + +- **attribute\_list** + + 枚举训练模型的输入列名。 + + 取值范围:字符型,需要符合数据属性名的命名规范。 + +- **attribute\_name** + + 在监督学习任务重训练模型的目标列名\(可进行简单的表达式处理\)。 + + 取值范围:字符型,需要符合数据属性名的命名规范。 + +- **subquery** + + 数据源。 + + 取值范围:字符串,符合数据库 SQL 语法。 + +- **hyper\_parameter\_name** + + 机器学习模型的超参名称。 + + 取值范围:字符串,针对不同算法范围不同,详情请参考:[表2](zh-cn_topic_0000001149426339.md#table15985527185615)。 + +- **hp\_value** + + 超参数值。 + + 取值范围:字符串,针对不同算法范围不同,详情请参考:[表3](zh-cn_topic_0000001149426339.md#table86881521502)。 + + +## 示例 + +``` +CREATE MODEL price_model USING logistic_regression + FEATURES size , lot + TARGET price + FROM HOUSES + (WITH learning_rate=0.88, max_iterations=default); +``` + +## 相关链接 + +[DROP MODEL](DROP-MODEL.md),[PREDICT BY](PREDICT-BY.md) + diff --git a/content/zh/docs/Developerguide/CREATE-OPERATOR.md b/content/zh/docs/Developerguide/CREATE-OPERATOR.md index 7fee46e16..9230dea85 100644 --- a/content/zh/docs/Developerguide/CREATE-OPERATOR.md +++ b/content/zh/docs/Developerguide/CREATE-OPERATOR.md @@ -1,111 +1,111 @@ -# CREATE OPERATOR - -## 功能描述 - -定义一个新操作符。 - -## 注意事项 - -CREATE OPERATOR定义一个新的 name操作符。 定义该操作符的用户将成为其所有者。如果给出了一个模式名, 那么该操作符将在指定的模式中创建。否则它会在当前模式中创建。 - -操作符 name 是一个由下列字符组成的字符串: - -+ - \* / < \> = \~ ! @ \# % ^ & | \` ? - -选择名字的时候有几个限制: - -- --和/\*不能在操作符名的任何地方出现, 因为它们会被认为是一个注释的开始。 -- 一个多字符的操作符不能以+或-结尾, 除非该名字还包含至少下面字符之一: - - \~ ! @ \# % ^ & | \` ? - -- =\> 作为一个操作符名的使用已经废弃了。 - -操作符!=在输入时映射成<\>, 因此这两个名称总是等价的。 - -至少需要定义一个LEFTARG和RIGHTARG。对于双目操作符来说, 两者都需要定义。对右目操作符来说,只需要定义LEFTARG, 而对于左目操作符来说,只需要定义RIGHTARG。 - -同样,function\_name 过程必须已经用CREATE FUNCTION定义过, 而且必须定义为接受正确数量的指定类型参数\(一个或是两个\)。 - -其它子句声明可选的操作符优化子句。他们的含义在[第 35.13 节](http://postgres.cn/docs/9.3/xoper-optimization.html)里定义。 - -要想能够创建一个操作符,你必须在参数类型和返回类型上有USAGE权限, 还要在底层函数上有EXECUTE权限。如果指定了交换或者负操作符, 你必须拥有这些操作符。 - -## 语法格式 - -``` -CREATE OPERATOR name ( - PROCEDURE = function_name - [, LEFTARG = left_type ] [, RIGHTARG = right_type ] - [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ] - [, RESTRICT = res_proc ] [, JOIN = join_proc ] - [, HASHES ] [, MERGES ] -) -``` - -## 参数说明 - -- **name** - - 要定义的操作符。可用的字符见上文。其名字可以用模式修饰, 比如CREATE OPERATOR myschema.+ \(...\)。如果没有模式, 则在当前模式中创建操作符。同一个模式中的两个操作符可以有一样的名字, 只要他们操作不同的数据类型。这是一个重载过程。 - -- **function\_name** - - 用于实现该操作符的函数。 - -- **left\_type** - - 操作符左边的参数数据类型,如果存在的话。如果是左目操作符,这个参数可以省略。 - -- **right\_type** - - 操作符右边的参数数据类型,如果存在的话。如果是右目操作符,这个参数可以省略。 - -- **com\_op** - - 该操作符对应的交换操作符。 - -- **neg\_op** - - 该操作符对应的负操作符。 - -- **res\_proc** - - 此操作符约束选择性评估函数。 - -- **join\_proc** - - 此操作符连接选择性评估函数。 - -- **HASHES** - - 表明此操作符支持 Hash 连接。 - -- **MERGES** - - 表明此操作符可以支持一个融合连接。 - - 使用OPERATOR\(\)语法在com\_op 或者其它可选参数里给出一个模式修饰的操作符名,比如: - - ``` - COMMUTATOR = OPERATOR(myschema.===) , - ``` - - -## 示例 - -下面命令定义一个新操作符:面积相等,用于box数据类型。 - -``` -CREATE OPERATOR === ( - LEFTARG = box, - RIGHTARG = box, - PROCEDURE = area_equal_procedure, - COMMUTATOR = ===, - NEGATOR = !==, - RESTRICT = area_restriction_procedure, - JOIN = area_join_procedure, - HASHES, MERGES -); -``` - +# CREATE OPERATOR + +## 功能描述 + +定义一个新操作符。 + +## 注意事项 + +CREATE OPERATOR 定义一个新的 name 操作符。 定义该操作符的用户将成为其所有者。如果给出了一个模式名, 那么该操作符将在指定的模式中创建。否则它会在当前模式中创建。 + +操作符 name 是一个由下列字符组成的字符串: + ++ - \* / < \> = \~ ! @ \# % ^ & | \` ? + +选择名字的时候有几个限制: + +- --和/\*不能在操作符名的任何地方出现, 因为它们会被认为是一个注释的开始。 +- 一个多字符的操作符不能以+或-结尾, 除非该名字还包含至少下面字符之一: + + \~ ! @ \# % ^ & | \` ? + +- =\> 作为一个操作符名的使用已经废弃了。 + +操作符!=在输入时映射成<\>, 因此这两个名称总是等价的。 + +至少需要定义一个 LEFTARG 和 RIGHTARG 。对于双目操作符来说, 两者都需要定义。对右目操作符来说,只需要定义 LEFTARG , 而对于左目操作符来说,只需要定义 RIGHTARG 。 + +同样,function\_name 过程必须已经用 CREATE FUNCTION 定义过, 而且必须定义为接受正确数量的指定类型参数\(一个或是两个\)。 + +其它子句声明可选的操作符优化子句。他们的含义在[第 35.13 节](http://postgres.cn/docs/9.3/xoper-optimization.html)里定义。 + +要想能够创建一个操作符,你必须在参数类型和返回类型上有 USAGE 权限, 还要在底层函数上有 EXECUTE 权限。如果指定了交换或者负操作符, 你必须拥有这些操作符。 + +## 语法格式 + +``` +CREATE OPERATOR name ( + PROCEDURE = function_name + [, LEFTARG = left_type ] [, RIGHTARG = right_type ] + [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ] + [, RESTRICT = res_proc ] [, JOIN = join_proc ] + [, HASHES ] [, MERGES ] +) +``` + +## 参数说明 + +- **name** + + 要定义的操作符。可用的字符见上文。其名字可以用模式修饰, 比如CREATE OPERATOR myschema.+ \(...\)。如果没有模式, 则在当前模式中创建操作符。同一个模式中的两个操作符可以有一样的名字, 只要他们操作不同的数据类型。这是一个重载过程。 + +- **function\_name** + + 用于实现该操作符的函数。 + +- **left\_type** + + 操作符左边的参数数据类型,如果存在的话。如果是左目操作符,这个参数可以省略。 + +- **right\_type** + + 操作符右边的参数数据类型,如果存在的话。如果是右目操作符,这个参数可以省略。 + +- **com\_op** + + 该操作符对应的交换操作符。 + +- **neg\_op** + + 该操作符对应的负操作符。 + +- **res\_proc** + + 此操作符约束选择性评估函数。 + +- **join\_proc** + + 此操作符连接选择性评估函数。 + +- **HASHES** + + 表明此操作符支持 Hash 连接。 + +- **MERGES** + + 表明此操作符可以支持一个融合连接。 + + 使用OPERATOR\(\)语法在com\_op 或者其它可选参数里给出一个模式修饰的操作符名,比如: + + ``` + COMMUTATOR = OPERATOR(myschema.===) , + ``` + + +## 示例 + +下面命令定义一个新操作符:面积相等,用于 box 数据类型。 + +``` +CREATE OPERATOR === ( + LEFTARG = box, + RIGHTARG = box, + PROCEDURE = area_equal_procedure, + COMMUTATOR = ===, + NEGATOR = !==, + RESTRICT = area_restriction_procedure, + JOIN = area_join_procedure, + HASHES , MERGES +); +``` + diff --git a/content/zh/docs/Developerguide/CREATE-PACKAGE.md b/content/zh/docs/Developerguide/CREATE-PACKAGE.md index bc499bc99..e0401ccdf 100644 --- a/content/zh/docs/Developerguide/CREATE-PACKAGE.md +++ b/content/zh/docs/Developerguide/CREATE-PACKAGE.md @@ -1,84 +1,84 @@ -# CREATE PACKAGE - -## 功能描述 - -创建一个新的PACKAGE。 - -## 注意事项 - -- 由于升级的限制,在V5R2C00版本中,即使在不同的Package间,也无法创建同名同参的存储过程。 -- package只支持集中式,无法在分布式中使用。 -- 在package specification中声明过的函数或者存储过程,必须在package body中找到定义。 -- 在实例化中,无法调用带有commit/rollback的存储过程。 -- 不能在Trigger中调用package函数。 -- 不能在外部SQL中直接使用package当中的变量。 -- 不允许在package外部调用package的私有变量和存储过程。 -- 不支持其它存储过程不支持的用法,例如,在function中不允许调用commit/rollback,则package的function中同样无法调用commit/rollback。 -- 不支持schema与package同名。 -- 只支持A风格的存储过程和函数定义。 -- 不支持package内有同名变量,包括包内同名参数。 -- package的全局变量为session级,不同session之间package的变量不共享。 -- package中调用自治事务的函数,不允许使用公有变量,以及递归的使用公有变量的函数。 -- package中不支持声明ref cursor类型。 - -## 语法格式 - -- CREATE PACKAGE SPECIFICATION语法格式。 - - ``` - CREATE [ OR REPLACE ] PACKAGE [ schema ] package_name - [ invoker_rights_clause ] { IS | AS } item_list_1 END package_name; - - invoker_rights_clause可以被声明为AUTHID DEFINER或者AUTHID INVOKER,分别为定义者权限和调用者权限。 - item_list_1可以为声明的变量或者存储过程以及函数。 - ``` - - PACKAGE SPECIFICATION\(包规格\)声明了包内的公有变量、函数、异常等,可以被外部函数或者存储过程调用。在PACKAGE SPECIFICATION中只能声明存储过程、函数,不能定义存储过程或者函数。 - -- CREATE PACKAGE BODY语法格式。 - - ``` - CREATE [ OR REPLACE ] PACKAGE BODY [ schema ] package_name - { IS | AS } declare_section [ initialize_section ] END package_name; - ``` - - PACKAGE BODY\(包体内\)定义了包的私有变量、函数等。如果变量或者函数没有在PACKAGE SPECIFICATION中声明过,那么这个变量或者函数则为私有变量或者函数。 - - PACKAGE BODY也可以声明实例化部分,用来初始化package,详见示例。 - - -## 示例 - -- CREATE PACKAGE SPECIFICATION示例 - - ``` - CREATE OR REPLACE PACKAGE emp_bonus IS - var1 int:=1;--公有变量 - var2 int:=2; - PROCEDURE testpro1(var3 int);--公有存储过程,可以被外部调用 - END emp_bonus; - / - ``` - -- CREATE PACKAGE BODY示例 - - ``` - drop table if exists test1; - create or replace package body emp_bonus is - var3 int:=3; - var4 int:=4; - procedure testpro1(var5 int) - is - begin - create table if not exists test1(col1 int); - insert into test1 values(var1); - insert into test1 values(var5); - end; - begin --实例化开始 - var4:=9; - testpro1(var4); - end emp_bonus; - / - ``` - - +# CREATE PACKAGE + +## 功能描述 + +创建一个新的 PACKAGE 。 + +## 注意事项 + +- 由于升级的限制,在 V5R2C00 版本中,即使在不同的 Package 间,也无法创建同名同参的存储过程。 +- package只支持集中式,无法在分布式中使用。 +- 在 package specification 中声明过的函数或者存储过程,必须在 package body 中找到定义。 +- 在实例化中,无法调用带有commit/rollback的存储过程。 +- 不能在 Trigger 中调用 package 函数。 +- 不能在外部 SQL 中直接使用 package 当中的变量。 +- 不允许在 package 外部调用 package 的私有变量和存储过程。 +- 不支持其它存储过程不支持的用法,例如,在 function 中不允许调用commit/rollback,则 package 的 function 中同样无法调用commit/rollback。 +- 不支持 schema 与 package 同名。 +- 只支持 A 风格的存储过程和函数定义。 +- 不支持 package 内有同名变量,包括包内同名参数。 +- package的全局变量为 session 级,不同 session 之间 package 的变量不共享。 +- package中调用自治事务的函数,不允许使用公有变量,以及递归的使用公有变量的函数。 +- package中不支持声明 ref cursor 类型。 + +## 语法格式 + +- CREATE PACKAGE SPECIFICATION语法格式。 + + ``` + CREATE [ OR REPLACE ] PACKAGE [ schema ] package_name + [ invoker_rights_clause ] { IS | AS } item_list_1 END package_name; + +invoker_rights_clause 可以被声明为 AUTHID DEFINER 或者 AUTHID INVOKER ,分别为定义者权限和调用者权限。 +item_list_1 可以为声明的变量或者存储过程以及函数。 + ``` + + PACKAGE SPECIFICATION\(包规格\)声明了包内的公有变量、函数、异常等,可以被外部函数或者存储过程调用。在 PACKAGE SPECIFICATION 中只能声明存储过程、函数,不能定义存储过程或者函数。 + +- CREATE PACKAGE BODY语法格式。 + + ``` + CREATE [ OR REPLACE ] PACKAGE BODY [ schema ] package_name + { IS | AS } declare_section [ initialize_section ] END package_name; + ``` + + PACKAGE BODY\(包体内\)定义了包的私有变量、函数等。如果变量或者函数没有在 PACKAGE SPECIFICATION 中声明过,那么这个变量或者函数则为私有变量或者函数。 + +PACKAGE BODY 也可以声明实例化部分,用来初始化 package ,详见示例。 + + +## 示例 + +- CREATE PACKAGE SPECIFICATION示例 + + ``` + CREATE OR REPLACE PACKAGE emp_bonus IS + var1 int:=1;--公有变量 + var2 int:=2; + PROCEDURE testpro1(var3 int);--公有存储过程,可以被外部调用 + END emp_bonus; + / + ``` + +- CREATE PACKAGE BODY示例 + + ``` + drop table if exists test1; + create or replace package body emp_bonus is + var3 int:=3; + var4 int:=4; + procedure testpro1(var5 int) + is + begin + create table if not exists test1(col1 int); + insert into test1 values(var1); + insert into test1 values(var5); + end; + begin --实例化开始 + var4:=9; + testpro1(var4); + end emp_bonus; + / + ``` + + diff --git a/content/zh/docs/Developerguide/CREATE-PROCEDURE.md b/content/zh/docs/Developerguide/CREATE-PROCEDURE.md index 8df88f971..37db6471d 100644 --- a/content/zh/docs/Developerguide/CREATE-PROCEDURE.md +++ b/content/zh/docs/Developerguide/CREATE-PROCEDURE.md @@ -1,113 +1,113 @@ -# CREATE PROCEDURE - -## 功能描述 - -创建一个新的存储过程。 - -## 注意事项 - -- 如果创建存储过程时参数或返回值带有精度,不进行精度检测。 -- 创建存储过程时,存储过程定义中对表对象的操作建议都显示指定模式,否则可能会导致存储过程执行异常。 -- 在创建存储过程时,存储过程内部通过SET语句设置current\_schema和search\_path无效。执行完函数search\_path和current\_schema与执行函数前的search\_path和current\_schema保持一致。 -- 如果存储过程参数中带有出参,SELECT调用存储过程必须缺省出参,CALL调用存储过程调用非重载函数时必须指定出参,对于重载的package函数,out参数可以缺省,具体信息参见[CALL](CALL.md)的示例。 -- 存储过程指定package属性时支持重载。 -- 在创建procedure时,不能在avg函数外面嵌套其他agg函数,或者其他系统函数。 -- 在存储过程内部调用其它无参数的存储过程时,可以省略括号,直接使用存储过程名进行调用。 -- 存储过程支持参数注释的查看与导出、导入。 -- 存储过程支持介于IS/AS与plsql\_body之间的注释的查看与导出、导入。 - -## 语法格式 - -``` -CREATE [ OR REPLACE ] PROCEDURE procedure_name - [ ( {[ argmode ] [ argname ] argtype [ { DEFAULT | := | = } expression ]}[,...]) ] - [ - { IMMUTABLE | STABLE | VOLATILE } - | { SHIPPABLE | NOT SHIPPABLE } - | {PACKAGE} - | [ NOT ] LEAKPROOF - | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } - | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AUTHID DEFINER | AUTHID CURRENT_USER} - | COST execution_cost - | SET configuration_parameter { TO value | = value | FROM CURRENT } - ][ ... ] - { IS | AS } -plsql_body -/ -``` - -## 参数说明 - -- **OR REPLACE** - - 当存在同名的存储过程时,替换原来的定义。 - -- **procedure\_name** - - 创建的存储过程名称,可以带有模式名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **argmode** - - 参数的模式。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >VARIADIC用于声明数组类型的参数。 - - 取值范围: IN、OUT、INOUT或VARIADIC。缺省值是IN。只有OUT模式的参数能跟在VARIADIC参数之后。 - -- **argname** - - 参数的名称。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **argtype** - - 参数的数据类型。可以使用%TYPE或%ROWTYPE间接引用变量或表的类型,详细可参考存储过程章节[定义变量](定义变量.md)。 - - 取值范围:可用的数据类型。 - -- **configuration\_parameter** - - **value** - - 把指定的配置参数设置为给定的值。如果value是DEFAULT,则在新的会话中使用系统的缺省设置。OFF关闭设置。 - - 取值范围:字符串 - - - DEFAULT - - OFF - - 指定默认值。 - - - **from current** - - 取当前会话中的值设置为configuration\_parameter的值。 - - -- **IMMUTABLE、STABLE**等 - - 行为约束可选项。各参数的功能与CREATE FUNCTION类似,详细说明见[CREATE FUNCTION](CREATE-FUNCTION.md) - -- **plsql\_body** - - PL/SQL存储过程体。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >当在存储过程体中进行创建用户等涉及用户密码相关操作时,系统表及csv日志中会记录密码的明文。因此不建议用户在存储过程体中进行涉及用户密码的相关操作。 - - ->![](public_sys-resources/icon-note.gif) **说明:** ->argument\_name和argmode的顺序没有严格要求,推荐按照argument\_name、argmode、argument\_type的顺序使用。 - -## 相关链接 - -[DROP PROCEDURE](DROP-PROCEDURE.md) - -## 优化建议 - -- analyse | analyze - - 不支持在事务或匿名块中执行analyze 。 - - 不支持在函数或存储过程中执行analyze操作。 - - +# CREATE PROCEDURE + +## 功能描述 + +创建一个新的存储过程。 + +## 注意事项 + +- 如果创建存储过程时参数或返回值带有精度,不进行精度检测。 +- 创建存储过程时,存储过程定义中对表对象的操作建议都显示指定模式,否则可能会导致存储过程执行异常。 +- 在创建存储过程时,存储过程内部通过 SET 语句设置current\_schema和search\_path无效。执行完函数search\_path和current\_schema与执行函数前的search\_path和current\_schema保持一致。 +- 如果存储过程参数中带有出参, SELECT 调用存储过程必须缺省出参, CALL 调用存储过程调用非重载函数时必须指定出参,对于重载的 package 函数, out 参数可以缺省,具体信息参见[CALL](CALL.md)的示例。 +- 存储过程指定 package 属性时支持重载。 +- 在创建 procedure 时,不能在 avg 函数外面嵌套其他 agg 函数,或者其他系统函数。 +- 在存储过程内部调用其它无参数的存储过程时,可以省略括号,直接使用存储过程名进行调用。 +- 存储过程支持参数注释的查看与导出、导入。 +- 存储过程支持介于IS/AS与plsql\_body之间的注释的查看与导出、导入。 + +## 语法格式 + +``` +CREATE [ OR REPLACE ] PROCEDURE procedure_name + [ ( {[ argmode ] [ argname ] argtype [ { DEFAULT | := | = } expression ]}[,...]) ] + [ + { IMMUTABLE | STABLE | VOLATILE } + | { SHIPPABLE | NOT SHIPPABLE } + | {PACKAGE} + | [ NOT ] LEAKPROOF + | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } + | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AUTHID DEFINER | AUTHID CURRENT_USER} + | COST execution_cost + | SET configuration_parameter { TO value | = value | FROM CURRENT } + ][ ... ] + { IS | AS } +plsql_body +/ +``` + +## 参数说明 + +- **OR REPLACE** + + 当存在同名的存储过程时,替换原来的定义。 + +- **procedure\_name** + + 创建的存储过程名称,可以带有模式名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **argmode** + + 参数的模式。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >VARIADIC用于声明数组类型的参数。 + + 取值范围: IN、OUT、INOUT或 VARIADIC 。缺省值是 IN 。只有 OUT 模式的参数能跟在 VARIADIC 参数之后。 + +- **argname** + + 参数的名称。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **argtype** + + 参数的数据类型。可以使用%TYPE或%ROWTYPE间接引用变量或表的类型,详细可参考存储过程章节[定义变量](定义变量.md)。 + + 取值范围:可用的数据类型。 + +- **configuration\_parameter** + - **value** + + 把指定的配置参数设置为给定的值。如果 value 是 DEFAULT ,则在新的会话中使用系统的缺省设置。 OFF 关闭设置。 + + 取值范围:字符串 + + - DEFAULT + - OFF + - 指定默认值。 + + - **from current** + + 取当前会话中的值设置为configuration\_parameter的值。 + + +- **IMMUTABLE、STABLE**等 + + 行为约束可选项。各参数的功能与 CREATE FUNCTION 类似,详细说明见[CREATE FUNCTION](CREATE-FUNCTION.md) + +- **plsql\_body** + + PL/SQL存储过程体。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >当在存储过程体中进行创建用户等涉及用户密码相关操作时,系统表及 csv 日志中会记录密码的明文。因此不建议用户在存储过程体中进行涉及用户密码的相关操作。 + + +>![](public_sys-resources/icon-note.gif) **说明:** +>argument\_name和 argmode 的顺序没有严格要求,推荐按照argument\_name、argmode、argument\_type的顺序使用。 + +## 相关链接 + +[DROP PROCEDURE](DROP-PROCEDURE.md) + +## 优化建议 + +- analyse | analyze + - 不支持在事务或匿名块中执行 analyze 。 + - 不支持在函数或存储过程中执行 analyze 操作。 + + diff --git a/content/zh/docs/Developerguide/CREATE-RESOURCE-LABEL.md b/content/zh/docs/Developerguide/CREATE-RESOURCE-LABEL.md index 4bcbb2320..b5cffd4a6 100644 --- a/content/zh/docs/Developerguide/CREATE-RESOURCE-LABEL.md +++ b/content/zh/docs/Developerguide/CREATE-RESOURCE-LABEL.md @@ -1,82 +1,82 @@ -# CREATE RESOURCE LABEL - -## 功能描述 - -创建资源标签。 - -## 注意事项 - -只有poladmin、sysadmin或初始用户能正常执行此操作。 - -## 语法格式 - -``` -CREATE RESOURCE LABEL [IF NOT EXISTS] label_name ADD label_item_list[, ...]*; -``` - -- label\_item\_list: - - ``` - resource_type(resource_path[, ...]*) - ``` - -- resource\_type: - - ``` - TABLE | COLUMN | SCHEMA | VIEW | FUNCTION - ``` - - -## 参数说明 - -- **label\_name** - - 资源标签名称,创建时要求不能与已有标签重名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **resource\_type** - - 指的是要标记的数据库资源类型。 - -- **resource\_path** - - 指的是描述具体的数据库资源的路径。 - - -## 示例 - -``` ---创建一个表tb_for_label -openGauss=# CREATE TABLE tb_for_label(col1 text, col2 text, col3 text); - ---创建一个模式schema_for_label -openGauss=# CREATE SCHEMA schema_for_label; - ---创建一个视图view_for_label -openGauss=# CREATE VIEW view_for_label AS SELECT 1; - ---创建一个函数func_for_label -openGauss=# CREATE FUNCTION func_for_label RETURNS TEXT AS $$ SELECT col1 FROM tb_for_label; $$ LANGUAGE SQL; - ---基于表创建资源标签 -openGauss=# CREATE RESOURCE LABEL IF NOT EXISTS table_label add TABLE(public.tb_for_label); - ---基于列创建资源标签 -openGauss=# CREATE RESOURCE LABEL IF NOT EXISTS column_label add COLUMN(public.tb_for_label.col1); - ---基于模式创建资源标签 -openGauss=# CREATE RESOURCE LABEL IF NOT EXISTS schema_label add SCHEMA(schema_for_label); - ---基于视图创建资源标签 -openGauss=# CREATE RESOURCE LABEL IF NOT EXISTS view_label add VIEW(view_for_label); - ---基于函数创建资源标签 -openGauss=# CREATE RESOURCE LABEL IF NOT EXISTS func_label add FUNCTION(func_for_label); - -``` - -## 相关链接 - -[ALTER RESOURCE LABEL](ALTER-RESOURCE-LABEL.md),[DROP RESOURCE LABEL](DROP-RESOURCE-LABEL.md)。 - +# CREATE RESOURCE LABEL + +## 功能描述 + +创建资源标签。 + +## 注意事项 + +只有poladmin、sysadmin或初始用户能正常执行此操作。 + +## 语法格式 + +``` +CREATE RESOURCE LABEL [IF NOT EXISTS] label_name ADD label_item_list[, ...]*; +``` + +- label\_item\_list: + + ``` + resource_type(resource_path[, ...]*) + ``` + +- resource\_type: + + ``` + TABLE | COLUMN | SCHEMA | VIEW | FUNCTION + ``` + + +## 参数说明 + +- **label\_name** + + 资源标签名称,创建时要求不能与已有标签重名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **resource\_type** + + 指的是要标记的数据库资源类型。 + +- **resource\_path** + + 指的是描述具体的数据库资源的路径。 + + +## 示例 + +``` +--创建一个表tb_for_label +openGauss=# CREATE TABLE tb_for_label(col1 text, col2 text , col3 text); + +--创建一个模式schema_for_label +openGauss=# CREATE SCHEMA schema_for_label; + +--创建一个视图view_for_label +openGauss=# CREATE VIEW view_for_label AS SELECT 1; + +--创建一个函数func_for_label +openGauss=# CREATE FUNCTION func_for_label RETURNS TEXT AS $$ SELECT col1 FROM tb_for_label; $$ LANGUAGE SQL; + +--基于表创建资源标签 +openGauss=# CREATE RESOURCE LABEL IF NOT EXISTS table_label add TABLE(public.tb_for_label); + +--基于列创建资源标签 +openGauss=# CREATE RESOURCE LABEL IF NOT EXISTS column_label add COLUMN(public.tb_for_label.col1); + +--基于模式创建资源标签 +openGauss=# CREATE RESOURCE LABEL IF NOT EXISTS schema_label add SCHEMA(schema_for_label); + +--基于视图创建资源标签 +openGauss=# CREATE RESOURCE LABEL IF NOT EXISTS view_label add VIEW(view_for_label); + +--基于函数创建资源标签 +openGauss=# CREATE RESOURCE LABEL IF NOT EXISTS func_label add FUNCTION(func_for_label); + +``` + +## 相关链接 + +[ALTER RESOURCE LABEL](ALTER-RESOURCE-LABEL.md),[DROP RESOURCE LABEL](DROP-RESOURCE-LABEL.md)。 + diff --git a/content/zh/docs/Developerguide/CREATE-RESOURCE-POOL.md b/content/zh/docs/Developerguide/CREATE-RESOURCE-POOL.md index 41a690c75..27133d5e1 100644 --- a/content/zh/docs/Developerguide/CREATE-RESOURCE-POOL.md +++ b/content/zh/docs/Developerguide/CREATE-RESOURCE-POOL.md @@ -1,138 +1,138 @@ -# CREATE RESOURCE POOL - -## 功能描述 - -创建一个资源池,并指定此资源池相关联的控制组。 - -## 注意事项 - -只要用户对当前数据库有CREATE权限,就可以创建资源池。 - -## 语法格式 - -``` -CREATE RESOURCE POOL pool_name - [WITH ({MEM_PERCENT=pct | CONTROL_GROUP="group_name" | ACTIVE_STATEMENTS=stmt | MAX_DOP = dop | MEMORY_LIMIT='memory_size' | io_limits=io_limits | io_priority='io_priority' | nodegroup="nodegroupname" | is_foreign=boolean }[, ... ])]; -``` - -## 参数说明 - -- **pool\_name** - - 资源池名称。 - - 资源池名称不能和当前数据库里已有的资源池重名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **group\_name** - - 控制组名称。 - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- 设置控制组名称时,语法可以使用双引号,也可以使用单引号。 - > - >- group\_name对大小写敏感。 - > - >- 不指定group\_name时,默认指定的字符串为 “Medium”,代表指定DefaultClass控制组的“Medium” Timeshare控制组。 - > - >- 若数据库管理员指定自定义Class组下的Workload控制组,如control\_group的字符串为:“class1:workload1”;代表此资源池指定到class1控制组下的workload1控制组。也可同时指定Workload控制组的层次,如control\_group的字符串为:“class1:workload1:1”。 - > - >- 若数据库用户指定Timeshare控制组代表的字符串,即“Rush”、“High”、“Medium”或“Low”其中一种,如control\_group的字符串为“High”;代表资源池指定到DefaultClass控制组下的“High” Timeshare控制组。 - - 取值范围:字符串,要符合说明中的规则,其指定已创建的控制组。 - -- **stmt** - - 资源池语句执行的最大并发数量。 - - 取值范围:数值型,-1\~2147483647‬。 - -- **dop** - - 资源池最大并发度,语句执行时能够创建的最多线程数量。 - - 取值范围:数值型,1\~2147483647‬ - -- **memory\_size** - - 资源池最大使用内存。 - - 取值范围:字符串,内容范围1KB\~2047GB - -- **mem\_percent** - - 资源池可用内存占全部内存或者组用户内存使用的比例。 - - 在多租户场景下,组用户和业务用户的mem\_percent范围1-100,默认为20。 - - 在普通场景下,普通用户的mem\_percent范围为0-100,默认值为0。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >mem\_percent和memory\_limit同时指定时,只有mem\_percent起作用。 - -- **io\_limits** - - 资源池每秒可触发IO次数上限。 - - 对于行存,以万次为单位计数,而列存则以正常次数计数。 - -- **io\_priority** - - IO利用率高达90%时,重消耗IO作业进行IO资源管控时关联的优先级等级。 - - 包括三档可选:Low、Medium和High。不控制时可设置为None。默认为None。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >io\_limits和io\_priority的设置都仅对复杂作业有效。包括批量导入(INSERT INTO SELECT、COPY FROM、CREATE TABLE AS等),单DN数据量大约超过500MB的复杂查询和VACUUM FULL等操作。 - -- **nodegroup** - - 在逻辑集群模式下,指定逻辑集群名称。必须是存在的逻辑集群。 - - 如果逻辑集群名称包含大写字符、特殊符号或以数字开头,SQL语句中对逻辑集群名称需要加双引号。 - -- **is\_foreign** - - 在逻辑集群模式下,指定当前资源池用于控制没有关联本逻辑集群的普通用户的资源。这里的逻辑集群是由资源池nodegroup字段指定的。 - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- nodegroup必须是存在的逻辑集群,不能是elastic\_group和安装的nodegroup \(group\_version1\)。 - > - >- 如果指定了is\_foreign为true,则资源池不能再关联用户,即不允许通过CREATE USER ... RESOURCE POOL语句来将该资源池配置给用户。该资源池自动检查用户是否关联到资源池指定的逻辑集群,如果用户没有关联到该逻辑集群,则这些用户在逻辑集群所包含的DN上运行将受到该资源池的资源控制。 - - -## 示例 - -本示例假定用户已预先成功创建控制组(创建控制组请参考[设置控制组](设置控制组.md))。 - -``` ---创建一个默认资源池,其控制组为"DefaultClass"组下属的"Medium" Timeshare Workload控制组。 -openGauss=# CREATE RESOURCE POOL pool1; - --- 创建一个资源池,其控制组指定为"DefaultClass"组下属的"High" Timeshare Workload控制组。 -openGauss=# CREATE RESOURCE POOL pool2 WITH (CONTROL_GROUP="High"); - --- 创建一个资源池,其控制组指定为"class1"组下属的"Low" Timeshare Workload控制组。 -openGauss=# CREATE RESOURCE POOL pool3 WITH (CONTROL_GROUP="class1:Low"); - --- 创建一个资源池,其控制组指定为"class1"组下属的"wg1" Workload控制组。 -openGauss=# CREATE RESOURCE POOL pool4 WITH (CONTROL_GROUP="class1:wg1"); - --- 创建一个资源池,其控制组指定为"class1"组下属的"wg2" Workload控制组。 -openGauss=# CREATE RESOURCE POOL pool5 WITH (CONTROL_GROUP="class1:wg2:3"); - ---删除资源池。 -openGauss=# DROP RESOURCE POOL pool1; -openGauss=# DROP RESOURCE POOL pool2; -openGauss=# DROP RESOURCE POOL pool3; -openGauss=# DROP RESOURCE POOL pool4; -openGauss=# DROP RESOURCE POOL pool5; -``` - -## 相关链接 - -[ALTER RESOURCE POOL](ALTER-RESOURCE-POOL.md),[DROP RESOURCE POOL](DROP-RESOURCE-POOL.md) - +# CREATE RESOURCE POOL + +## 功能描述 + +创建一个资源池,并指定此资源池相关联的控制组。 + +## 注意事项 + +只要用户对当前数据库有 CREATE 权限,就可以创建资源池。 + +## 语法格式 + +``` +CREATE RESOURCE POOL pool_name + [WITH ({MEM_PERCENT=pct | CONTROL_GROUP="group_name" | ACTIVE_STATEMENTS=stmt | MAX_DOP = dop | MEMORY_LIMIT='memory_size' | io_limits=io_limits | io_priority='io_priority' | nodegroup="nodegroupname" | is_foreign=boolean }[, ... ])]; +``` + +## 参数说明 + +- **pool\_name** + + 资源池名称。 + + 资源池名称不能和当前数据库里已有的资源池重名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **group\_name** + + 控制组名称。 + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- 设置控制组名称时,语法可以使用双引号,也可以使用单引号。 + > + >- group\_name对大小写敏感。 + > + >- 不指定group\_name时,默认指定的字符串为 “Medium”,代表指定 DefaultClass 控制组的“Medium” Timeshare控制组。 + > + >- 若数据库管理员指定自定义 Class 组下的 Workload 控制组,如control\_group的字符串为:“class1:workload1”;代表此资源池指定到 class1 控制组下的 workload1 控制组。也可同时指定 Workload 控制组的层次,如control\_group的字符串为:“class1:workload1:1”。 + > + >- 若数据库用户指定 Timeshare 控制组代表的字符串,即“Rush”、“High”、“Medium”或“Low”其中一种,如control\_group的字符串为“High”;代表资源池指定到 DefaultClass 控制组下的“High” Timeshare控制组。 + + 取值范围:字符串,要符合说明中的规则,其指定已创建的控制组。 + +- **stmt** + + 资源池语句执行的最大并发数量。 + + 取值范围:数值型,-1\~2147483647‬。 + +- **dop** + + 资源池最大并发度,语句执行时能够创建的最多线程数量。 + + 取值范围:数值型,1\~2147483647‬ + +- **memory\_size** + + 资源池最大使用内存。 + + 取值范围:字符串,内容范围1KB\~2047GB + +- **mem\_percent** + + 资源池可用内存占全部内存或者组用户内存使用的比例。 + + 在多租户场景下,组用户和业务用户的mem\_percent范围1-100,默认为 20 。 + + 在普通场景下,普通用户的mem\_percent范围为0-100,默认值为 0 。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >mem\_percent和memory\_limit同时指定时,只有mem\_percent起作用。 + +- **io\_limits** + + 资源池每秒可触发 IO 次数上限。 + + 对于行存,以万次为单位计数,而列存则以正常次数计数。 + +- **io\_priority** + +IO 利用率高达90%时,重消耗 IO 作业进行 IO 资源管控时关联的优先级等级。 + + 包括三档可选:Low、Medium和 High 。不控制时可设置为 None 。默认为 None 。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >io\_limits和io\_priority的设置都仅对复杂作业有效。包括批量导入(INSERT INTO SELECT、COPY FROM、CREATE TABLE AS等),单 DN 数据量大约超过 500MB 的复杂查询和 VACUUM FULL 等操作。 + +- **nodegroup** + + 在逻辑集群模式下,指定逻辑集群名称。必须是存在的逻辑集群。 + + 如果逻辑集群名称包含大写字符、特殊符号或以数字开头, SQL 语句中对逻辑集群名称需要加双引号。 + +- **is\_foreign** + + 在逻辑集群模式下,指定当前资源池用于控制没有关联本逻辑集群的普通用户的资源。这里的逻辑集群是由资源池 nodegroup 字段指定的。 + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- nodegroup必须是存在的逻辑集群,不能是elastic\_group和安装的nodegroup \(group\_version1\)。 + > + >- 如果指定了is\_foreign为 true ,则资源池不能再关联用户,即不允许通过CREATE USER ... RESOURCE POOL语句来将该资源池配置给用户。该资源池自动检查用户是否关联到资源池指定的逻辑集群,如果用户没有关联到该逻辑集群,则这些用户在逻辑集群所包含的 DN 上运行将受到该资源池的资源控制。 + + +## 示例 + +本示例假定用户已预先成功创建控制组(创建控制组请参考[设置控制组](设置控制组.md))。 + +``` +--创建一个默认资源池,其控制组为"DefaultClass"组下属的"Medium" Timeshare Workload控制组。 +openGauss=# CREATE RESOURCE POOL pool1; + +-- 创建一个资源池,其控制组指定为"DefaultClass"组下属的"High" Timeshare Workload控制组。 +openGauss=# CREATE RESOURCE POOL pool2 WITH (CONTROL_GROUP="High"); + +-- 创建一个资源池,其控制组指定为"class1"组下属的"Low" Timeshare Workload控制组。 +openGauss=# CREATE RESOURCE POOL pool3 WITH (CONTROL_GROUP="class1:Low"); + +-- 创建一个资源池,其控制组指定为"class1"组下属的"wg1" Workload控制组。 +openGauss=# CREATE RESOURCE POOL pool4 WITH (CONTROL_GROUP="class1:wg1"); + +-- 创建一个资源池,其控制组指定为"class1"组下属的"wg2" Workload控制组。 +openGauss=# CREATE RESOURCE POOL pool5 WITH (CONTROL_GROUP="class1:wg2:3"); + +--删除资源池。 +openGauss=# DROP RESOURCE POOL pool1; +openGauss=# DROP RESOURCE POOL pool2; +openGauss=# DROP RESOURCE POOL pool3; +openGauss=# DROP RESOURCE POOL pool4; +openGauss=# DROP RESOURCE POOL pool5; +``` + +## 相关链接 + +[ALTER RESOURCE POOL](ALTER-RESOURCE-POOL.md),[DROP RESOURCE POOL](DROP-RESOURCE-POOL.md) + diff --git a/content/zh/docs/Developerguide/CREATE-ROLE.md b/content/zh/docs/Developerguide/CREATE-ROLE.md index 19952ecdc..bef6645f3 100644 --- a/content/zh/docs/Developerguide/CREATE-ROLE.md +++ b/content/zh/docs/Developerguide/CREATE-ROLE.md @@ -1,247 +1,247 @@ -# CREATE ROLE - -## 功能描述 - -创建角色。 - -角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者兼顾两者。 - -## 注意事项 - -- 在数据库中添加一个新角色,角色无登录权限。 -- 创建角色的用户必须具备CREATE ROLE的权限或者是系统管理员。 - -## 语法格式 - -``` -CREATE ROLE role_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [EXPIRED] | DISABLE }; -``` - -其中角色信息设置子句option语法为: - -``` -{SYSADMIN | NOSYSADMIN} - | {MONADMIN | NOMONADMIN} - | {OPRADMIN | NOOPRADMIN} - | {POLADMIN | NOPOLADMIN} - | {AUDITADMIN | NOAUDITADMIN} - | {CREATEDB | NOCREATEDB} - | {USEFT | NOUSEFT} - | {CREATEROLE | NOCREATEROLE} - | {INHERIT | NOINHERIT} - | {LOGIN | NOLOGIN} - | {REPLICATION | NOREPLICATION} - | {INDEPENDENT | NOINDEPENDENT} - | {VCADMIN | NOVCADMIN} - | CONNECTION LIMIT connlimit - | VALID BEGIN 'timestamp' - | VALID UNTIL 'timestamp' - | RESOURCE POOL 'respool' - | PERM SPACE 'spacelimit' - | TEMP SPACE 'tmpspacelimit' - | SPILL SPACE 'spillspacelimit' - | IN ROLE role_name [, ...] - | IN GROUP role_name [, ...] - | ROLE role_name [, ...] - | ADMIN rol e_name [, ...] - | USER role_name [, ...] - | SYSID uid - | DEFAULT TABLESPACE tablespace_name - | PROFILE DEFAULT - | PROFILE profile_name - | PGUSER -``` - -## 参数说明 - -- **role\_name** - - 角色名称。 - - 取值范围:字符串,要符合标识符的命名规范,且最多为63个字符。若超过63个字符,数据库会截断并保留前63个字符当做角色名称。在创建角色时,数据库的时候会给出提示信息。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >标识符需要为字母、下划线、数字(0-9)或美元符号($),且必须以字母(a-z)或下划线(\_)开头。 - -- **password** - - 登录密码。 - - 密码规则如下: - - - 密码默认不少于8个字符。 - - 不能与用户名及用户名倒序相同。 - - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为\~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/?)四类字符中的三类字符。 - - 密码也可以是符合格式要求的密文字符串,这种情况主要用于用户数据导入场景,不推荐用户直接使用。如果直接使用密文密码,用户需要知道密文密码对应的明文,并且保证明文密码复杂度,数据库不会校验密文密码复杂度,直接使用密文密码的安全性由用户保证。 - - 创建角色时,应当使用双引号或单引号将用户密码括起来。 - - 取值范围:字符串。 - -- **EXPIRED** - - 在创建用户时可指定EXPIRED参数,即创建密码失效用户,该用户不允许执行简单查询和扩展查询。只有在修改自身密码后才可正常执行语句。 - -- **DISABLE** - - 默认情况下,用户可以更改自己的密码,除非密码被禁用。要禁用用户的密码,请指定DISABLE。禁用某个用户的密码后,将从系统中删除该密码,此类用户只能通过外部认证来连接数据库,例如:kerberos认证。只有管理员才能启用或禁用密码。普通用户不能禁用初始用户的密码。要启用密码,请运行ALTER USER并指定密码。 - -- **ENCRYPTED | UNENCRYPTED** - - 控制密码存储在系统表里的口令是否加密。按照产品安全要求,密码必须加密存储,所以,UNENCRYPTED在openGauss中禁止使用。因为系统无法对指定的加密口令字符串进行解密,所以如果目前的口令字符串已经是用SHA256加密的格式,则会继续照此存放,而不管是否声明了ENCRYPTED或UNENCRYPTED。这样就允许在dump/restore的时候重新加载加密的口令。 - -- **SYSADMIN | NOSYSADMIN** - - 决定一个新角色是否为“系统管理员”,具有SYSADMIN属性的角色拥有系统最高权限。 - - 缺省为NOSYSADMIN。 - -- **AUDITADMIN | NOAUDITADMIN** - - 定义角色是否有审计管理属性。 - - 缺省为NOAUDITADMIN。 - -- **CREATEDB | NOCREATEDB** - - 决定一个新角色是否能创建数据库。 - - 新角色没有创建数据库的权限。 - - 缺省为NOCREATEDB。 - -- **USEFT | NOUSEFT** - - 该参数为保留参数,暂未启用。 - -- **CREATEROLE | NOCREATEROLE** - - 决定一个角色是否可以创建新角色(也就是执行CREATE ROLE和CREATE USER)。 一个拥有CREATEROLE权限的角色也可以修改和删除其他角色。 - - 缺省为NOCREATEROLE。 - -- **INHERIT | NOINHERIT** - - 这些子句决定一个角色是否“继承”它所在组的角色的权限。不推荐使用。 - -- **LOGIN | NOLOGIN** - - 具有LOGIN属性的角色才可以登录数据库。一个拥有LOGIN属性的角色可以认为是一个用户。 - - 缺省为NOLOGIN。 - -- **REPLICATION | NOREPLICATION** - - 定义角色是否允许流复制或设置系统为备份模式。REPLICATION属性是特定的角色,仅用于复制。 - - 缺省为NOREPLICATION。 - -- **INDEPENDENT | NOINDEPENDENT** - - 定义私有、独立的角色。具有INDEPENDENT属性的角色,管理员对其进行的控制、访问的权限被分离,具体规则如下: - - - 未经INDEPENDENT角色授权,系统管理员无权对其表对象进行增、删、查、改、拷贝、授权操作。 - - 若将私有用户表的相关权限授予其他非私有用户,系统管理员也会获得同样的权限。 - - 未经INDEPENDENT角色授权,系统管理员和拥有CREATEROLE属性的安全管理员无权修改INDEPENDENT角色的继承关系。 - - 系统管理员无权修改INDEPENDENT角色的表对象的属主。 - - 系统管理员和拥有CREATEROLE属性的安全管理员无权去除INDEPENDENT角色的INDEPENDENT属性。 - - 系统管理员和拥有CREATEROLE属性的安全管理员无权修改INDEPENDENT角色的数据库口令,INDEPENDENT角色需管理好自身口令,口令丢失无法重置。 - - 管理员属性用户不允许定义修改为INDEPENDENT属性。 - -- **CONNECTION LIMIT** - - 声明该角色可以使用的并发连接数量。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >- 系统管理员不受此参数的限制。 - - >- connlimit数据库主节点单独统计,openGauss整体的连接数 = connlimit \* 当前正常数据库主节点个数。 - - 取值范围:整数,\>=-1,缺省值为-1,表示没有限制。 - -- **VALID BEGIN** - - 设置角色生效的时间戳。如果省略了该子句,角色无有效开始时间限制。 - -- **VALID UNTIL** - - 设置角色失效的时间戳。如果省略了该子句,角色无有效结束时间限制。 - -- **RESOURCE POOL** - - 设置角色使用的resource pool名称,该名称属于系统表:pg\_resource\_pool。 - -- **PERM SPACE** - - 设置用户使用空间的大小。 - -- **TEMP SPACE** - - 设置用户临时表存储空间限额。 - -- **SPILL SPACE** - - 设置用户算子落盘空间限额。 - -- **IN ROLE** - - 新角色立即拥有IN ROLE子句中列出的一个或多个现有角色拥有的权限。不推荐使用。 - -- **IN GROUP** - - IN GROUP是IN ROLE过时的拼法。不推荐使用。 - -- **ROLE** - - ROLE子句列出一个或多个现有的角色,它们将自动添加为这个新角色的成员,拥有新角色所有的权限。 - -- **ADMIN** - - ADMIN子句类似ROLE子句,不同的是ADMIN后的角色可以把新角色的权限赋给其他角色。 - -- **USER** - - USER子句是ROLE子句过时的拼法。 - -- **SYSID** - - SYSID子句将被忽略,无实际意义。 - -- **DEFAULT TABLESPACE** - - DEFAULT TABLESPACE子句将被忽略,无实际意义。 - -- **PROFILE** - - PROFILE子句将被忽略,无实际意义。 - -- **PGUSER** - - 当前版本该属性没有实际意义,仅为了语法的前向兼容而保留。 - - -## 示例 - -``` ---创建一个角色,名为manager,密码为xxxxxxxxx。 -openGauss=# CREATE ROLE manager IDENTIFIED BY 'xxxxxxxxx'; - ---创建一个角色,从2015年1月1日开始生效,到2026年1月1日失效。 -openGauss=# CREATE ROLE miriam WITH LOGIN PASSWORD 'xxxxxxxxx' VALID BEGIN '2015-01-01' VALID UNTIL '2026-01-01'; - ---修改角色manager的密码为abcd@123。 -openGauss=# ALTER ROLE manager IDENTIFIED BY 'abcd@123' REPLACE 'xxxxxxxxx'; - ---修改角色manager为系统管理员。 -openGauss=# ALTER ROLE manager SYSADMIN; - ---删除角色manager。 -openGauss=# DROP ROLE manager; - ---删除角色miriam。 -openGauss=# DROP ROLE miriam; -``` - -## 相关链接 - -[SET ROLE](SET-ROLE.md),[ALTER ROLE](ALTER-ROLE.md),[DROP ROLE](DROP-ROLE.md),[GRANT](GRANT.md) - +# CREATE ROLE + +## 功能描述 + +创建角色。 + +角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者兼顾两者。 + +## 注意事项 + +- 在数据库中添加一个新角色,角色无登录权限。 +- 创建角色的用户必须具备 CREATE ROLE 的权限或者是系统管理员。 + +## 语法格式 + +``` +CREATE ROLE role_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [EXPIRED] | DISABLE }; +``` + +其中角色信息设置子句 option 语法为: + +``` +{SYSADMIN | NOSYSADMIN} + | {MONADMIN | NOMONADMIN} + | {OPRADMIN | NOOPRADMIN} + | {POLADMIN | NOPOLADMIN} + | {AUDITADMIN | NOAUDITADMIN} + | {CREATEDB | NOCREATEDB} + | {USEFT | NOUSEFT} + | {CREATEROLE | NOCREATEROLE} + | {INHERIT | NOINHERIT} + | {LOGIN | NOLOGIN} + | {REPLICATION | NOREPLICATION} + | {INDEPENDENT | NOINDEPENDENT} + | {VCADMIN | NOVCADMIN} + | CONNECTION LIMIT connlimit + | VALID BEGIN 'timestamp' + | VALID UNTIL 'timestamp' + | RESOURCE POOL 'respool' + | PERM SPACE 'spacelimit' + | TEMP SPACE 'tmpspacelimit' + | SPILL SPACE 'spillspacelimit' + | IN ROLE role_name [, ...] + | IN GROUP role_name [, ...] + | ROLE role_name [, ...] + | ADMIN rol e_name [, ...] + | USER role_name [, ...] + | SYSID uid + | DEFAULT TABLESPACE tablespace_name + | PROFILE DEFAULT + | PROFILE profile_name + | PGUSER +``` + +## 参数说明 + +- **role\_name** + + 角色名称。 + + 取值范围:字符串,要符合标识符的命名规范,且最多为 63 个字符。若超过 63 个字符,数据库会截断并保留前 63 个字符当做角色名称。在创建角色时,数据库的时候会给出提示信息。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >标识符需要为字母、下划线、数字(0-9)或美元符号($),且必须以字母(a-z)或下划线(\_)开头。 + +- **password** + + 登录密码。 + + 密码规则如下: + + - 密码默认不少于 8 个字符。 + - 不能与用户名及用户名倒序相同。 + - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为\~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/?)四类字符中的三类字符。 + - 密码也可以是符合格式要求的密文字符串,这种情况主要用于用户数据导入场景,不推荐用户直接使用。如果直接使用密文密码,用户需要知道密文密码对应的明文,并且保证明文密码复杂度,数据库不会校验密文密码复杂度,直接使用密文密码的安全性由用户保证。 + - 创建角色时,应当使用双引号或单引号将用户密码括起来。 + + 取值范围:字符串。 + +- **EXPIRED** + + 在创建用户时可指定 EXPIRED 参数,即创建密码失效用户,该用户不允许执行简单查询和扩展查询。只有在修改自身密码后才可正常执行语句。 + +- **DISABLE** + + 默认情况下,用户可以更改自己的密码,除非密码被禁用。要禁用用户的密码,请指定 DISABLE 。禁用某个用户的密码后,将从系统中删除该密码,此类用户只能通过外部认证来连接数据库,例如:kerberos认证。只有管理员才能启用或禁用密码。普通用户不能禁用初始用户的密码。要启用密码,请运行 ALTER USER 并指定密码。 + +- **ENCRYPTED | UNENCRYPTED** + + 控制密码存储在系统表里的口令是否加密。按照产品安全要求,密码必须加密存储,所以, UNENCRYPTED 在 openGauss 中禁止使用。因为系统无法对指定的加密口令字符串进行解密,所以如果目前的口令字符串已经是用 SHA256 加密的格式,则会继续照此存放,而不管是否声明了 ENCRYPTED 或 UNENCRYPTED 。这样就允许在dump/restore的时候重新加载加密的口令。 + +- **SYSADMIN | NOSYSADMIN** + + 决定一个新角色是否为“系统管理员”,具有 SYSADMIN 属性的角色拥有系统最高权限。 + + 缺省为 NOSYSADMIN 。 + +- **AUDITADMIN | NOAUDITADMIN** + + 定义角色是否有审计管理属性。 + + 缺省为 NOAUDITADMIN 。 + +- **CREATEDB | NOCREATEDB** + + 决定一个新角色是否能创建数据库。 + + 新角色没有创建数据库的权限。 + + 缺省为 NOCREATEDB 。 + +- **USEFT | NOUSEFT** + + 该参数为保留参数,暂未启用。 + +- **CREATEROLE | NOCREATEROLE** + + 决定一个角色是否可以创建新角色(也就是执行 CREATE ROLE 和CREATE USER)。 一个拥有 CREATEROLE 权限的角色也可以修改和删除其他角色。 + + 缺省为 NOCREATEROLE 。 + +- **INHERIT | NOINHERIT** + + 这些子句决定一个角色是否“继承”它所在组的角色的权限。不推荐使用。 + +- **LOGIN | NOLOGIN** + + 具有 LOGIN 属性的角色才可以登录数据库。一个拥有 LOGIN 属性的角色可以认为是一个用户。 + + 缺省为 NOLOGIN 。 + +- **REPLICATION | NOREPLICATION** + + 定义角色是否允许流复制或设置系统为备份模式。 REPLICATION 属性是特定的角色,仅用于复制。 + + 缺省为 NOREPLICATION 。 + +- **INDEPENDENT | NOINDEPENDENT** + + 定义私有、独立的角色。具有 INDEPENDENT 属性的角色,管理员对其进行的控制、访问的权限被分离,具体规则如下: + + - 未经 INDEPENDENT 角色授权,系统管理员无权对其表对象进行增、删、查、改、拷贝、授权操作。 + - 若将私有用户表的相关权限授予其他非私有用户,系统管理员也会获得同样的权限。 + - 未经 INDEPENDENT 角色授权,系统管理员和拥有 CREATEROLE 属性的安全管理员无权修改 INDEPENDENT 角色的继承关系。 + - 系统管理员无权修改 INDEPENDENT 角色的表对象的属主。 + - 系统管理员和拥有 CREATEROLE 属性的安全管理员无权去除 INDEPENDENT 角色的 INDEPENDENT 属性。 + - 系统管理员和拥有 CREATEROLE 属性的安全管理员无权修改 INDEPENDENT 角色的数据库口令, INDEPENDENT 角色需管理好自身口令,口令丢失无法重置。 + - 管理员属性用户不允许定义修改为 INDEPENDENT 属性。 + +- **CONNECTION LIMIT** + + 声明该角色可以使用的并发连接数量。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- 系统管理员不受此参数的限制。 + + >- connlimit数据库主节点单独统计, openGauss 整体的连接数 = connlimit \* 当前正常数据库主节点个数。 + + 取值范围:整数,\>=-1,缺省值为-1,表示没有限制。 + +- **VALID BEGIN** + + 设置角色生效的时间戳。如果省略了该子句,角色无有效开始时间限制。 + +- **VALID UNTIL** + + 设置角色失效的时间戳。如果省略了该子句,角色无有效结束时间限制。 + +- **RESOURCE POOL** + + 设置角色使用的 resource pool 名称,该名称属于系统表:pg\_resource\_pool。 + +- **PERM SPACE** + + 设置用户使用空间的大小。 + +- **TEMP SPACE** + + 设置用户临时表存储空间限额。 + +- **SPILL SPACE** + + 设置用户算子落盘空间限额。 + +- **IN ROLE** + + 新角色立即拥有 IN ROLE 子句中列出的一个或多个现有角色拥有的权限。不推荐使用。 + +- **IN GROUP** + +IN GROUP 是 IN ROLE 过时的拼法。不推荐使用。 + +- **ROLE** + +ROLE 子句列出一个或多个现有的角色,它们将自动添加为这个新角色的成员,拥有新角色所有的权限。 + +- **ADMIN** + +ADMIN 子句类似 ROLE 子句,不同的是 ADMIN 后的角色可以把新角色的权限赋给其他角色。 + +- **USER** + +USER 子句是 ROLE 子句过时的拼法。 + +- **SYSID** + +SYSID 子句将被忽略,无实际意义。 + +- **DEFAULT TABLESPACE** + +DEFAULT TABLESPACE 子句将被忽略,无实际意义。 + +- **PROFILE** + +PROFILE 子句将被忽略,无实际意义。 + +- **PGUSER** + + 当前版本该属性没有实际意义,仅为了语法的前向兼容而保留。 + + +## 示例 + +``` +--创建一个角色,名为 manager ,密码为 xxxxxxxxx 。 +openGauss=# CREATE ROLE manager IDENTIFIED BY 'xxxxxxxxx'; + +--创建一个角色,从 2015 年 1 月 1 日开始生效,到 2026 年 1 月 1 日失效。 +openGauss=# CREATE ROLE miriam WITH LOGIN PASSWORD 'xxxxxxxxx' VALID BEGIN '2015-01-01' VALID UNTIL '2026-01-01'; + +--修改角色 manager 的密码为abcd@123。 +openGauss=# ALTER ROLE manager IDENTIFIED BY 'abcd@123' REPLACE 'xxxxxxxxx'; + +--修改角色 manager 为系统管理员。 +openGauss=# ALTER ROLE manager SYSADMIN; + +--删除角色 manager 。 +openGauss=# DROP ROLE manager; + +--删除角色 miriam 。 +openGauss=# DROP ROLE miriam; +``` + +## 相关链接 + +[SET ROLE](SET-ROLE.md),[ALTER ROLE](ALTER-ROLE.md),[DROP ROLE](DROP-ROLE.md),[GRANT](GRANT.md) + diff --git a/content/zh/docs/Developerguide/CREATE-ROW-LEVEL-SECURITY-POLICY.md b/content/zh/docs/Developerguide/CREATE-ROW-LEVEL-SECURITY-POLICY.md index 885ac3e4a..f3cc2fd50 100644 --- a/content/zh/docs/Developerguide/CREATE-ROW-LEVEL-SECURITY-POLICY.md +++ b/content/zh/docs/Developerguide/CREATE-ROW-LEVEL-SECURITY-POLICY.md @@ -1,232 +1,232 @@ -# CREATE ROW LEVEL SECURITY POLICY - -## 功能描述 - -对表创建行访问控制策略。 - -当对表创建了行访问控制策略,只有打开该表的行访问控制开关\(ALTER TABLE ... ENABLE ROW LEVEL SECURITY\),策略才能生效。否则不生效。 - -当前行访问控制影响数据表的读取操作\(SELECT、UPDATE、DELETE\),暂不影响数据表的写入操作\(INSERT、MERGE INTO\)。表所有者或系统管理员可以在USING子句中创建表达式,在客户端执行数据表读取操作时,数据库后台在查询重写阶段会将满足条件的表达式拼接并应用到执行计划中。针对数据表的每一条元组,当USING表达式返回TRUE时,元组对当前用户可见,当USING表达式返回FALSE或NULL时,元组对当前用户不可见。 - -行访问控制策略名称是针对表的,同一个数据表上不能有同名的行访问控制策略;对不同的数据表,可以有同名的行访问控制策略。 - -行访问控制策略可以应用到指定的操作\(SELECT、UPDATE、DELETE、ALL\),ALL表示会影响SELECT、UPDATE、DELETE三种操作;定义行访问控制策略时,若未指定受影响的相关操作,默认为ALL。 - -行访问控制策略可以应用到指定的用户\(角色\),也可应用到全部用户\(PUBLIC\);定义行访问控制策略时,若未指定受影响的用户,默认为PUBLIC。 - -## 注意事项 - -- 支持对行存表、行存分区表、列存表、列存分区表、unlogged表、hash表定义行访问控制策略。 -- 不支持外表、本地临时表定义行访问控制策略。 -- 不支持对视图定义行访问控制策略。 -- 同一张表上可以创建多个行访问控制策略,一张表最多创建100个行访问控制策略。 -- 系统管理员不受行访问控制影响,可以查看表的全量数据。 -- 通过SQL语句、视图、函数、存储过程查询包含行访问控制策略的表,都会受影响。 - -## 语法格式 - -``` -CREATE [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name - [ AS { PERMISSIVE | RESTRICTIVE } ] - [ FOR { ALL | SELECT | UPDATE | DELETE } ] - [ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ] - USING ( using_expression ) -``` - -## 参数说明 - -- **policy\_name** - - 行访问控制策略名称,同一个数据表上行访问控制策略名称不能相同。 - -- **table\_name** - - 行访问控制策略的表名。 - -- **PERMISSIVE | RESTRICTIVE** - - PERMISSIVE指定行访问控制策略为宽容性策略,宽容性策略的条件用OR表达式拼接。 - - RESTRICTIVE指定行访问控制策略为限制性策略,限制性策略的条件用AND表达式拼接。拼接方式如下: - - ``` - (using_expression_permissive_1 OR using_expression_permissive_2 ...) AND (using_expression_restrictive_1 AND using_expression_restrictive_2 ...) - ``` - - 缺省值为PERMISSIVE。 - -- **command** - - 当前行访问控制影响的SQL操作,可指定操作包括:ALL、SELECT、UPDATE、DELETE。当未指定时,ALL为默认值,涵盖SELECT、UPDATE、DELETE操作。 - - 当command为SELECT时,SELECT类操作受行访问控制的影响,只能查看到满足条件\(using\_expression返回值为TRUE\)的元组数据,受影响的操作包括SELECT、UPDATE ... RETURNING、DELETE ... RETURNING。 - - 当command为UPDATE时,UPDATE类操作受行访问控制的影响,只能更新满足条件\(using\_expression返回值为TRUE\)的元组数据,受影响的操作包括UPDATE、 UPDATE ... RETURNING、 SELECT ... FOR UPDATE/SHARE。 - - 当command为DELETE时,DELETE类操作受行访问控制的影响,只能删除满足条件\(using\_expression返回值为TRUE\)的元组数据,受影响的操作包括DELETE、 DELETE ... RETURNING。 - - 行访问控制策略与适配的SQL语法关系参加下表: - - **表 1** ROW LEVEL SECURITY策略与适配SQL语法关系 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Command

-

SELECT/ALL policy

-

UPDATE/ALL policy

-

DELETE/ALL policy

-

SELECT

-

Existing row

-

No

-

No

-

SELECT FOR UPDATE/SHARE

-

Existing row

-

Existing row

-

No

-

UPDATE

-

No

-

Existing row

-

No

-

UPDATE RETURNING

-

Existing row

-

Existing row

-

No

-

DELETE

-

No

-

No

-

Existing row

-

DELETE RETURNING

-

Existing row

-

No

-

Existing row

-
- -- **role\_name** - - 行访问控制影响的数据库用户。 - - 当未指定时,PUBLIC为默认值,PUBLIC表示影响所有数据库用户,可以指定多个受影响的数据库用户。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >系统管理员不受行访问控制特性影响。 - - -- **using\_expression** - - 行访问控制的表达式(返回boolean值)。 - - 条件表达式中不能包含AGG函数和窗口(WINDOW)函数。在查询重写阶段,如果数据表的行访问控制开关打开,满足条件的表达式会添加到计划树中。针对数据表的每条元组,会进行表达式计算,只有表达式返回值为TRUE时,行数据对用户才可见(SELECT、UPDATE、DELETE);当表达式返回FALSE时,该元组对当前用户不可见,用户无法通过SELECT语句查看此元组,无法通过UPDATE语句更新此元组,无法通过DELETE语句删除此元组。 - - -## 示例 - -``` ---创建用户alice -openGauss=# CREATE USER alice PASSWORD 'xxxxxxxxx'; - ---创建用户bob -openGauss=# CREATE USER bob PASSWORD 'xxxxxxxxx'; - ---创建数据表all_data -openGauss=# CREATE TABLE all_data(id int, role varchar(100), data varchar(100)); - ---向数据表插入数据 -openGauss=# INSERT INTO all_data VALUES(1, 'alice', 'alice data'); -openGauss=# INSERT INTO all_data VALUES(2, 'bob', 'bob data'); -openGauss=# INSERT INTO all_data VALUES(3, 'peter', 'peter data'); - ---将表all_data的读取权限赋予alice和bob用户 -openGauss=# GRANT SELECT ON all_data TO alice, bob; - ---打开行访问控制策略开关 -openGauss=# ALTER TABLE all_data ENABLE ROW LEVEL SECURITY; - ---创建行访问控制策略,当前用户只能查看用户自身的数据 -openGauss=# CREATE ROW LEVEL SECURITY POLICY all_data_rls ON all_data USING(role = CURRENT_USER); - ---查看表all_data相关信息 -openGauss=# \d+ all_data - Table "public.all_data" - Column | Type | Modifiers | Storage | Stats target | Description ---------+------------------------+-----------+----------+--------------+------------- - id | integer | | plain | | - role | character varying(100) | | extended | | - data | character varying(100) | | extended | | -Row Level Security Policies: - POLICY "all_data_rls" - USING (((role)::name = "current_user"())) -Has OIDs: no -Options: orientation=row, compression=no, enable_rowsecurity=true - ---当前用户执行SELECT操作 -openGauss=# SELECT * FROM all_data; - id | role | data -----+-------+------------ - 1 | alice | alice data - 2 | bob | bob data - 3 | peter | peter data -(3 rows) - -openGauss=# EXPLAIN(COSTS OFF) SELECT * FROM all_data; - QUERY PLAN ----------------------- - Seq Scan on all_data -(1 row) - ---切换至alice用户执行SELECT操作 -openGauss=# SELECT * FROM all_data; - id | role | data -----+-------+------------ - 1 | alice | alice data -(1 row) - -openGauss=# EXPLAIN(COSTS OFF) SELECT * FROM all_data; - QUERY PLAN ----------------------------------------------------------------- - Seq Scan on all_data - Filter: ((role)::name = 'alice'::name) - Notice: This query is influenced by row level security feature -(3 rows) - -``` - -## 相关链接 - -[DROP ROW LEVEL SECURITY POLICY](DROP-ROW-LEVEL-SECURITY-POLICY.md),[ALTER ROW LEVEL SECURITY POLICY](ALTER-ROW-LEVEL-SECURITY-POLICY.md) - +# CREATE ROW LEVEL SECURITY POLICY + +## 功能描述 + +对表创建行访问控制策略。 + +当对表创建了行访问控制策略,只有打开该表的行访问控制开关\(ALTER TABLE ... ENABLE ROW LEVEL SECURITY\),策略才能生效。否则不生效。 + +当前行访问控制影响数据表的读取操作\(SELECT、UPDATE、DELETE\),暂不影响数据表的写入操作\(INSERT、MERGE INTO\)。表所有者或系统管理员可以在 USING 子句中创建表达式,在客户端执行数据表读取操作时,数据库后台在查询重写阶段会将满足条件的表达式拼接并应用到执行计划中。针对数据表的每一条元组,当 USING 表达式返回 TRUE 时,元组对当前用户可见,当 USING 表达式返回 FALSE 或 NULL 时,元组对当前用户不可见。 + +行访问控制策略名称是针对表的,同一个数据表上不能有同名的行访问控制策略;对不同的数据表,可以有同名的行访问控制策略。 + +行访问控制策略可以应用到指定的操作\(SELECT、UPDATE、DELETE、ALL\), ALL 表示会影响SELECT、UPDATE、DELETE三种操作;定义行访问控制策略时,若未指定受影响的相关操作,默认为 ALL 。 + +行访问控制策略可以应用到指定的用户\(角色\),也可应用到全部用户\(PUBLIC\);定义行访问控制策略时,若未指定受影响的用户,默认为 PUBLIC 。 + +## 注意事项 + +- 支持对行存表、行存分区表、列存表、列存分区表、unlogged表、hash表定义行访问控制策略。 +- 不支持外表、本地临时表定义行访问控制策略。 +- 不支持对视图定义行访问控制策略。 +- 同一张表上可以创建多个行访问控制策略,一张表最多创建 100 个行访问控制策略。 +- 系统管理员不受行访问控制影响,可以查看表的全量数据。 +- 通过 SQL 语句、视图、函数、存储过程查询包含行访问控制策略的表,都会受影响。 + +## 语法格式 + +``` +CREATE [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name + [ AS { PERMISSIVE | RESTRICTIVE } ] + [ FOR { ALL | SELECT | UPDATE | DELETE } ] + [ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ] + USING ( using_expression ) +``` + +## 参数说明 + +- **policy\_name** + + 行访问控制策略名称,同一个数据表上行访问控制策略名称不能相同。 + +- **table\_name** + + 行访问控制策略的表名。 + +- **PERMISSIVE | RESTRICTIVE** + +PERMISSIVE 指定行访问控制策略为宽容性策略,宽容性策略的条件用 OR 表达式拼接。 + +RESTRICTIVE 指定行访问控制策略为限制性策略,限制性策略的条件用 AND 表达式拼接。拼接方式如下: + + ``` + (using_expression_permissive_1 OR using_expression_permissive_2 ...) AND (using_expression_restrictive_1 AND using_expression_restrictive_2 ...) + ``` + + 缺省值为 PERMISSIVE 。 + +- **command** + + 当前行访问控制影响的 SQL 操作,可指定操作包括:ALL、SELECT、UPDATE、DELETE。当未指定时, ALL 为默认值,涵盖SELECT、UPDATE、DELETE操作。 + + 当 command 为 SELECT 时, SELECT 类操作受行访问控制的影响,只能查看到满足条件\(using\_expression返回值为TRUE\)的元组数据,受影响的操作包括SELECT、UPDATE ... RETURNING、DELETE ... RETURNING。 + + 当 command 为 UPDATE 时, UPDATE 类操作受行访问控制的影响,只能更新满足条件\(using\_expression返回值为TRUE\)的元组数据,受影响的操作包括UPDATE、 UPDATE ... RETURNING、 SELECT ... FOR UPDATE/SHARE。 + + 当 command 为 DELETE 时, DELETE 类操作受行访问控制的影响,只能删除满足条件\(using\_expression返回值为TRUE\)的元组数据,受影响的操作包括DELETE、 DELETE ... RETURNING。 + + 行访问控制策略与适配的 SQL 语法关系参加下表: + + **表 1** ROW LEVEL SECURITY策略与适配 SQL 语法关系 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Command

+

SELECT/ALL policy

+

UPDATE/ALL policy

+

DELETE/ALL policy

+

SELECT

+

Existing row

+

No

+

No

+

SELECT FOR UPDATE/SHARE

+

Existing row

+

Existing row

+

No

+

UPDATE

+

No

+

Existing row

+

No

+

UPDATE RETURNING

+

Existing row

+

Existing row

+

No

+

DELETE

+

No

+

No

+

Existing row

+

DELETE RETURNING

+

Existing row

+

No

+

Existing row

+
+ +- **role\_name** + + 行访问控制影响的数据库用户。 + + 当未指定时, PUBLIC 为默认值, PUBLIC 表示影响所有数据库用户,可以指定多个受影响的数据库用户。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >系统管理员不受行访问控制特性影响。 + + +- **using\_expression** + + 行访问控制的表达式(返回 boolean 值)。 + + 条件表达式中不能包含 AGG 函数和窗口(WINDOW)函数。在查询重写阶段,如果数据表的行访问控制开关打开,满足条件的表达式会添加到计划树中。针对数据表的每条元组,会进行表达式计算,只有表达式返回值为 TRUE 时,行数据对用户才可见(SELECT、UPDATE、DELETE);当表达式返回 FALSE 时,该元组对当前用户不可见,用户无法通过 SELECT 语句查看此元组,无法通过 UPDATE 语句更新此元组,无法通过 DELETE 语句删除此元组。 + + +## 示例 + +``` +--创建用户alice +openGauss=# CREATE USER alice PASSWORD 'xxxxxxxxx'; + +--创建用户bob +openGauss=# CREATE USER bob PASSWORD 'xxxxxxxxx'; + +--创建数据表all_data +openGauss=# CREATE TABLE all_data(id int, role varchar(100), data varchar(100)); + +--向数据表插入数据 +openGauss=# INSERT INTO all_data VALUES(1, 'alice', 'alice data'); +openGauss=# INSERT INTO all_data VALUES(2, 'bob', 'bob data'); +openGauss=# INSERT INTO all_data VALUES(3, 'peter', 'peter data'); + +--将表 all_data 的读取权限赋予 alice 和 bob 用户 +openGauss=# GRANT SELECT ON all_data TO alice, bob; + +--打开行访问控制策略开关 +openGauss=# ALTER TABLE all_data ENABLE ROW LEVEL SECURITY; + +--创建行访问控制策略,当前用户只能查看用户自身的数据 +openGauss=# CREATE ROW LEVEL SECURITY POLICY all_data_rls ON all_data USING(role = CURRENT_USER); + +--查看表 all_data 相关信息 +openGauss=# \d+ all_data + Table "public.all_data" + Column | Type | Modifiers | Storage | Stats target | Description +--------+------------------------+-----------+----------+--------------+------------- + id | integer | | plain | | + role | character varying(100) | | extended | | + data | character varying(100) | | extended | | +Row Level Security Policies: + POLICY "all_data_rls" + USING (((role)::name = "current_user"())) +Has OIDs: no +Options: orientation=row, compression=no, enable_rowsecurity=true + +--当前用户执行 SELECT 操作 +openGauss=# SELECT * FROM all_data; + id | role | data +----+-------+------------ + 1 | alice | alice data + 2 | bob | bob data + 3 | peter | peter data +(3 rows) + +openGauss=# EXPLAIN(COSTS OFF) SELECT * FROM all_data; + QUERY PLAN +---------------------- + Seq Scan on all_data +(1 row) + +--切换至 alice 用户执行 SELECT 操作 +openGauss=# SELECT * FROM all_data; + id | role | data +----+-------+------------ + 1 | alice | alice data +(1 row) + +openGauss=# EXPLAIN(COSTS OFF) SELECT * FROM all_data; + QUERY PLAN +---------------------------------------------------------------- + Seq Scan on all_data + Filter: ((role)::name = 'alice'::name) + Notice: This query is influenced by row level security feature +(3 rows) + +``` + +## 相关链接 + +[DROP ROW LEVEL SECURITY POLICY](DROP-ROW-LEVEL-SECURITY-POLICY.md),[ALTER ROW LEVEL SECURITY POLICY](ALTER-ROW-LEVEL-SECURITY-POLICY.md) + diff --git a/content/zh/docs/Developerguide/CREATE-RULE.md b/content/zh/docs/Developerguide/CREATE-RULE.md index cda8d34ee..6a297f8ff 100644 --- a/content/zh/docs/Developerguide/CREATE-RULE.md +++ b/content/zh/docs/Developerguide/CREATE-RULE.md @@ -1,67 +1,67 @@ -# CREATE RULE - -## 功能描述 - -定义一个新的重写规则。 - -## 注意事项 - -- 为了在表上定义或修改规则,你必须是该表的拥有者。 -- 如果在同一个表定义了多个相同类型的规则,则按规则的名称字母顺序触发它们。 -- 在视图上用于INSERT、UPDATE、DELETE的规则中可以添加RETURNING子句基于视图的字段返回。如果规则被INSERT RETURNING、UPDATE RETURNING、DELETE RETURNING命令触发,这些子句将用来计算输出结果。如果规则被不带RETURNING的命令触发,那么规则的RETURNING子句将被忽略。目前仅允许无条件的INSTEAD规则包含RETURNING子句,而且在同一个事件内的所有规则中最多只能有一个RETURNING子句。这样就确保只有一个RETURNING子句可以用于计算结果。如果在任何有效规则中都不存在RETURNING子句,该视图上的RETURNING查询将被拒绝。 - -## 语法格式 - -``` -CREATE [ OR REPLACE ] RULE name AS ON event - TO table_name [ WHERE condition ] - DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) } -``` - -其中event包含以下几种: - -``` -SELECT -INSERT -DELETE -UPDATE -``` - -## 参数说明 - -- name - - 创建的规则名。它必须在同一个表上的所有规则名字中唯一。 - - 取值范围:符合标识符命名规范的字符串,且最大长度不超过63个字符。 - -- table\_name - - 规则作用的表或者视图的名字(可以有模式修饰)。 - -- condition - - 返回boolean的SQL条件表达式,决定是否实际执行规则。表达式除了引用NEW和OLD之外不能引用任何表, 并且不能有聚合函数。 - -- INSTEAD - - INSTEAD指示使用该命令替换初始事件。 - -- ALSO - - ALSO指示该命令应该在初始事件执行之后执行。如果既没有声明ALSO也没有声明INSTEAD, 那么ALSO为缺省值。 - -- command - - 组成规则动作的命令。有效的命令是SELECT、 INSERT、UPDATE、 DELETE语句之一。 - - -## 示例 - -``` - CREATE RULE "_RETURN" AS - ON SELECT TO t1 - DO INSTEAD - SELECT * FROM t2; -``` - +# CREATE RULE + +## 功能描述 + +定义一个新的重写规则。 + +## 注意事项 + +- 为了在表上定义或修改规则,你必须是该表的拥有者。 +- 如果在同一个表定义了多个相同类型的规则,则按规则的名称字母顺序触发它们。 +- 在视图上用于INSERT、UPDATE、DELETE的规则中可以添加 RETURNING 子句基于视图的字段返回。如果规则被INSERT RETURNING、UPDATE RETURNING、DELETE RETURNING命令触发,这些子句将用来计算输出结果。如果规则被不带 RETURNING 的命令触发,那么规则的 RETURNING 子句将被忽略。目前仅允许无条件的 INSTEAD 规则包含 RETURNING 子句,而且在同一个事件内的所有规则中最多只能有一个 RETURNING 子句。这样就确保只有一个 RETURNING 子句可以用于计算结果。如果在任何有效规则中都不存在 RETURNING 子句,该视图上的 RETURNING 查询将被拒绝。 + +## 语法格式 + +``` +CREATE [ OR REPLACE ] RULE name AS ON event + TO table_name [ WHERE condition ] + DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) } +``` + +其中 event 包含以下几种: + +``` +SELECT +INSERT +DELETE +UPDATE +``` + +## 参数说明 + +- name + + 创建的规则名。它必须在同一个表上的所有规则名字中唯一。 + + 取值范围:符合标识符命名规范的字符串,且最大长度不超过 63 个字符。 + +- table\_name + + 规则作用的表或者视图的名字(可以有模式修饰)。 + +- condition + + 返回 boolean 的 SQL 条件表达式,决定是否实际执行规则。表达式除了引用 NEW 和 OLD 之外不能引用任何表, 并且不能有聚合函数。 + +- INSTEAD + +INSTEAD 指示使用该命令替换初始事件。 + +- ALSO + +ALSO 指示该命令应该在初始事件执行之后执行。如果既没有声明 ALSO 也没有声明 INSTEAD , 那么 ALSO 为缺省值。 + +- command + + 组成规则动作的命令。有效的命令是SELECT、 INSERT、UPDATE、 DELETE语句之一。 + + +## 示例 + +``` + CREATE RULE "_RETURN" AS + ON SELECT TO t1 + DO INSTEAD + SELECT * FROM t2; +``` + diff --git a/content/zh/docs/Developerguide/CREATE-SCHEMA.md b/content/zh/docs/Developerguide/CREATE-SCHEMA.md index eafa2c488..ed849043d 100644 --- a/content/zh/docs/Developerguide/CREATE-SCHEMA.md +++ b/content/zh/docs/Developerguide/CREATE-SCHEMA.md @@ -1,85 +1,85 @@ -# CREATE SCHEMA - -## 功能描述 - -创建模式。 - -访问命名对象时可以使用模式名作为前缀进行访问,如果无模式名前缀,则访问当前模式下的命名对象。创建命名对象时也可用模式名作为前缀修饰。 - -另外,CREATE SCHEMA可以包括在新模式中创建对象的子命令,这些子命令和那些在创建完模式后发出的命令没有任何区别。如果使用了AUTHORIZATION子句,则所有创建的对象都将被该用户所拥有。 - -## 注意事项 - -- 只要用户对当前数据库有CREATE权限,就可以创建模式。 -- 系统管理员在普通用户同名schema下创建的对象,所有者为schema的同名用户(非系统管理员)。 - -## 语法格式 - -- 根据指定的名称创建模式。 - - ``` - CREATE SCHEMA schema_name - [ AUTHORIZATION user_name ] [WITH BLOCKCHAIN] [ schema_element [ ... ] ]; - ``` - -- 根据用户名创建模式。 - - ``` - CREATE SCHEMA AUTHORIZATION user_name [ schema_element [ ... ] ]; - ``` - - -## 参数说明 - -- **schema\_name** - - 模式名称。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >模式名不能和当前数据库里其他的模式重名。 - >模式的名称不可以“pg\_”开头。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **AUTHORIZATION user\_name** - - 指定模式的所有者。当不指定schema\_name时,把user\_name当作模式名,此时user\_name只能是角色名。 - - 取值范围:已存在的用户名/角色名。 - -- **WITH BLOCKCHAIN** - - 指定模式的防篡改属性,防篡改模式下的行存普通用户表将自动扩展为防篡改用户表。 - -- **schema\_element** - - 在模式里创建对象的SQL语句。目前仅支持CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE PARTITION、CREATE SEQUENCE、CREATE TRIGGER、GRANT子句。 - - 子命令所创建的对象都被AUTHORIZATION子句指定的用户所拥有。 - - ->![](public_sys-resources/icon-note.gif) **说明:** ->如果当前搜索路径上的模式中存在同名对象时,需要明确指定引用对象所在的模式。可以通过命令SHOW SEARCH\_PATH来查看当前搜索路径上的模式。 - -## 示例 - -``` ---创建一个角色role1。 -openGauss=# CREATE ROLE role1 IDENTIFIED BY 'xxxxxxxxx'; - --- 为用户role1创建一个同名schema,子命令创建的表films和winners的拥有者为role1。 -openGauss=# CREATE SCHEMA AUTHORIZATION role1 - CREATE TABLE films (title text, release date, awards text[]) - CREATE VIEW winners AS - SELECT title, release FROM films WHERE awards IS NOT NULL; - ---删除schema。 -openGauss=# DROP SCHEMA role1 CASCADE; ---删除用户。 -openGauss=# DROP USER role1 CASCADE; -``` - -## 相关链接 - -[ALTER SCHEMA](ALTER-SCHEMA.md),[DROP SCHEMA](DROP-SCHEMA.md) - +# CREATE SCHEMA + +## 功能描述 + +创建模式。 + +访问命名对象时可以使用模式名作为前缀进行访问,如果无模式名前缀,则访问当前模式下的命名对象。创建命名对象时也可用模式名作为前缀修饰。 + +另外, CREATE SCHEMA 可以包括在新模式中创建对象的子命令,这些子命令和那些在创建完模式后发出的命令没有任何区别。如果使用了 AUTHORIZATION 子句,则所有创建的对象都将被该用户所拥有。 + +## 注意事项 + +- 只要用户对当前数据库有 CREATE 权限,就可以创建模式。 +- 系统管理员在普通用户同名 schema 下创建的对象,所有者为 schema 的同名用户(非系统管理员)。 + +## 语法格式 + +- 根据指定的名称创建模式。 + + ``` + CREATE SCHEMA schema_name + [ AUTHORIZATION user_name ] [WITH BLOCKCHAIN] [ schema_element [ ... ] ]; + ``` + +- 根据用户名创建模式。 + + ``` + CREATE SCHEMA AUTHORIZATION user_name [ schema_element [ ... ] ]; + ``` + + +## 参数说明 + +- **schema\_name** + + 模式名称。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >模式名不能和当前数据库里其他的模式重名。 + >模式的名称不可以“pg\_”开头。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **AUTHORIZATION user\_name** + + 指定模式的所有者。当不指定schema\_name时,把user\_name当作模式名,此时user\_name只能是角色名。 + + 取值范围:已存在的用户名/角色名。 + +- **WITH BLOCKCHAIN** + + 指定模式的防篡改属性,防篡改模式下的行存普通用户表将自动扩展为防篡改用户表。 + +- **schema\_element** + + 在模式里创建对象的 SQL 语句。目前仅支持CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE PARTITION、CREATE SEQUENCE、CREATE TRIGGER、GRANT子句。 + + 子命令所创建的对象都被 AUTHORIZATION 子句指定的用户所拥有。 + + +>![](public_sys-resources/icon-note.gif) **说明:** +>如果当前搜索路径上的模式中存在同名对象时,需要明确指定引用对象所在的模式。可以通过命令SHOW SEARCH\_PATH来查看当前搜索路径上的模式。 + +## 示例 + +``` +--创建一个角色 role1 。 +openGauss=# CREATE ROLE role1 IDENTIFIED BY 'xxxxxxxxx'; + +-- 为用户 role1 创建一个同名 schema ,子命令创建的表 films 和 winners 的拥有者为 role1 。 +openGauss=# CREATE SCHEMA AUTHORIZATION role1 + CREATE TABLE films (title text, release date , awards text[]) + CREATE VIEW winners AS + SELECT title , release FROM films WHERE awards IS NOT NULL; + +--删除 schema 。 +openGauss=# DROP SCHEMA role1 CASCADE; +--删除用户。 +openGauss=# DROP USER role1 CASCADE; +``` + +## 相关链接 + +[ALTER SCHEMA](ALTER-SCHEMA.md),[DROP SCHEMA](DROP-SCHEMA.md) + diff --git a/content/zh/docs/Developerguide/CREATE-SEQUENCE.md b/content/zh/docs/Developerguide/CREATE-SEQUENCE.md index ea04c526a..a15ec8491 100644 --- a/content/zh/docs/Developerguide/CREATE-SEQUENCE.md +++ b/content/zh/docs/Developerguide/CREATE-SEQUENCE.md @@ -1,140 +1,140 @@ -# CREATE SEQUENCE - -## 功能描述 - -CREATE SEQUENCE用于向当前数据库里增加一个新的序列。序列的Owner为创建此序列的用户。 - -## 注意事项 - -- Sequence是一个存放等差数列的特殊表。这个表没有实际意义,通常用于为行或者表生成唯一的标识符。 -- 如果给出一个模式名,则该序列就在给定的模式中创建,否则会在当前模式中创建。序列名必须和同一个模式中的其他序列、表、索引、视图或外表的名称不同。 -- 创建序列后,在表中使用序列的nextval\(\)函数和generate\_series\(1,N\)函数对表插入数据,请保证nextval的可调用次数大于等于N+1次,否则会因为generate\_series\(\)函数会调用N+1次而导致报错。 - -## 语法格式 - -``` -CREATE SEQUENCE name [ INCREMENT [ BY ] increment ] - [ MINVALUE minvalue | NO MINVALUE | NOMINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE] - [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE | NOCYCLE ] - [ OWNED BY { table_name.column_name | NONE } ]; -``` - -## 参数说明 - -- **name** - - 将要创建的序列名称。 - - 取值范围: 仅可以使用小写字母(a\~z)、 大写字母(A\~Z)、数字和特殊字符“\#”,“\_”,“$”的组合。 - -- **increment** - - 指定序列的步长。一个正数将生成一个递增的序列,一个负数将生成一个递减的序列。 - - 缺省值为1。 - -- **MINVALUE minvalue | NO MINVALUE| NOMINVALUE** - - 执行序列的最小值。如果没有声明minvalue或者声明了NO MINVALUE,则递增序列的缺省值为1,递减序列的缺省值为-263-1。NOMINVALUE等价于NO MINVALUE - -- **MAXVALUE maxvalue | NO MAXVALUE| NOMAXVALUE** - - 执行序列的最大值。如果没有声明maxvalue或者声明了NO MAXVALUE,则递增序列的缺省值为263-1,递减序列的缺省值为-1。NOMAXVALUE等价于NO MAXVALUE - -- **start** - - 指定序列的起始值。缺省值:对于递增序列为minvalue,递减序列为maxvalue。 - -- **cache** - - 为了快速访问,而在内存中预先存储序列号的个数。 - - 缺省值为1,表示一次只能生成一个值,也就是没有缓存。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >不建议同时定义cache和maxvalue或minvalue。因为定义cache后不能保证序列的连续性,可能会产生空洞,造成序列号段浪费。 - -- **CYCLE** - - 用于使序列达到maxvalue或者minvalue后可循环并继续下去。 - - 如果声明了NO CYCLE,则在序列达到其最大值后任何对nextval的调用都会返回一个错误。 - - NOCYCLE的作用等价于NO CYCLE。 - - 缺省值为NO CYCLE。 - - 若定义序列为CYCLE,则不能保证序列的唯一性。 - -- **OWNED BY** - - 将序列和一个表的指定字段进行关联。这样,在删除那个字段或其所在表的时候会自动删除已关联的序列。关联的表和序列的所有者必须是同一个用户,并且在同一个模式中。需要注意的是,通过指定OWNED BY,仅仅是建立了表的对应列和sequence之间关联关系,并不会在插入数据时在该列上产生自增序列。 - - 缺省值为OWNED BY NONE,表示不存在这样的关联。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >通过OWNED BY创建的Sequence不建议用于其他表,如果希望多个表共享Sequence,该Sequence不应该从属于特定表。 - - -## 示例 - -创建一个名为serial的递增序列,从101开始: - -``` -openGauss=# CREATE SEQUENCE serial - START 101 - CACHE 20; -``` - -从序列中选出下一个数字: - -``` -openGauss=# SELECT nextval('serial'); - nextval - --------- - 101 -``` - -从序列中选出下一个数字: - -``` -openGauss=# SELECT nextval('serial'); - nextval - --------- - 102 -``` - -创建与表关联的序列: - -``` -openGauss=# CREATE TABLE customer_address -( - ca_address_sk integer not null, - ca_address_id char(16) not null, - ca_street_number char(10) , - ca_street_name varchar(60) , - ca_street_type char(15) , - ca_suite_number char(10) , - ca_city varchar(60) , - ca_county varchar(30) , - ca_state char(2) , - ca_zip char(10) , - ca_country varchar(20) , - ca_gmt_offset decimal(5,2) , - ca_location_type char(20) -); - -openGauss=# CREATE SEQUENCE serial1 - START 101 - CACHE 20 -OWNED BY customer_address.ca_address_sk; ---删除表和序列 -openGauss=# DROP TABLE customer_address; -openGauss=# DROP SEQUENCE serial cascade; -openGauss=# DROP SEQUENCE serial1 cascade; -``` - -## 相关链接 - -[DROP SEQUENCE](DROP-SEQUENCE.md),[ALTER SEQUENCE](ALTER-SEQUENCE.md) - +# CREATE SEQUENCE + +## 功能描述 + +CREATE SEQUENCE 用于向当前数据库里增加一个新的序列。序列的 Owner 为创建此序列的用户。 + +## 注意事项 + +- Sequence是一个存放等差数列的特殊表。这个表没有实际意义,通常用于为行或者表生成唯一的标识符。 +- 如果给出一个模式名,则该序列就在给定的模式中创建,否则会在当前模式中创建。序列名必须和同一个模式中的其他序列、表、索引、视图或外表的名称不同。 +- 创建序列后,在表中使用序列的nextval\(\)函数和generate\_series\(1,N\)函数对表插入数据,请保证 nextval 的可调用次数大于等于N+1次,否则会因为generate\_series\(\)函数会调用N+1次而导致报错。 + +## 语法格式 + +``` +CREATE SEQUENCE name [ INCREMENT [ BY ] increment ] + [ MINVALUE minvalue | NO MINVALUE | NOMINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE] + [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE | NOCYCLE ] + [ OWNED BY { table_name.column_name | NONE } ]; +``` + +## 参数说明 + +- **name** + + 将要创建的序列名称。 + + 取值范围: 仅可以使用小写字母(a\~z)、 大写字母(A\~Z)、数字和特殊字符“\#”,“\_”,“$”的组合。 + +- **increment** + + 指定序列的步长。一个正数将生成一个递增的序列,一个负数将生成一个递减的序列。 + + 缺省值为 1 。 + +- **MINVALUE minvalue | NO MINVALUE| NOMINVALUE** + + 执行序列的最小值。如果没有声明 minvalue 或者声明了 NO MINVALUE ,则递增序列的缺省值为 1 ,递减序列的缺省值为-263-1。 NOMINVALUE 等价于NO MINVALUE + +- **MAXVALUE maxvalue | NO MAXVALUE| NOMAXVALUE** + + 执行序列的最大值。如果没有声明 maxvalue 或者声明了 NO MAXVALUE ,则递增序列的缺省值为263-1,递减序列的缺省值为-1。 NOMAXVALUE 等价于NO MAXVALUE + +- **start** + + 指定序列的起始值。缺省值:对于递增序列为 minvalue ,递减序列为 maxvalue 。 + +- **cache** + + 为了快速访问,而在内存中预先存储序列号的个数。 + + 缺省值为 1 ,表示一次只能生成一个值,也就是没有缓存。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >不建议同时定义 cache 和 maxvalue 或 minvalue 。因为定义 cache 后不能保证序列的连续性,可能会产生空洞,造成序列号段浪费。 + +- **CYCLE** + + 用于使序列达到 maxvalue 或者 minvalue 后可循环并继续下去。 + + 如果声明了 NO CYCLE ,则在序列达到其最大值后任何对 nextval 的调用都会返回一个错误。 + +NOCYCLE 的作用等价于 NO CYCLE 。 + + 缺省值为 NO CYCLE 。 + + 若定义序列为 CYCLE ,则不能保证序列的唯一性。 + +- **OWNED BY** + + 将序列和一个表的指定字段进行关联。这样,在删除那个字段或其所在表的时候会自动删除已关联的序列。关联的表和序列的所有者必须是同一个用户,并且在同一个模式中。需要注意的是,通过指定 OWNED BY ,仅仅是建立了表的对应列和 sequence 之间关联关系,并不会在插入数据时在该列上产生自增序列。 + + 缺省值为 OWNED BY NONE ,表示不存在这样的关联。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >通过 OWNED BY 创建的 Sequence 不建议用于其他表,如果希望多个表共享 Sequence ,该 Sequence 不应该从属于特定表。 + + +## 示例 + +创建一个名为 serial 的递增序列,从 101 开始: + +``` +openGauss=# CREATE SEQUENCE serial + START 101 + CACHE 20; +``` + +从序列中选出下一个数字: + +``` +openGauss=# SELECT nextval('serial'); + nextval + --------- + 101 +``` + +从序列中选出下一个数字: + +``` +openGauss=# SELECT nextval('serial'); + nextval + --------- + 102 +``` + +创建与表关联的序列: + +``` +openGauss=# CREATE TABLE customer_address +( + ca_address_sk integer not null , + ca_address_id char(16) not null, + ca_street_number char(10) , + ca_street_name varchar(60) , + ca_street_type char(15) , + ca_suite_number char(10) , + ca_city varchar(60) , + ca_county varchar(30) , + ca_state char(2) , + ca_zip char(10) , + ca_country varchar(20) , + ca_gmt_offset decimal(5,2) , + ca_location_type char(20) +); + +openGauss=# CREATE SEQUENCE serial1 + START 101 + CACHE 20 +OWNED BY customer_address.ca_address_sk; +--删除表和序列 +openGauss=# DROP TABLE customer_address; +openGauss=# DROP SEQUENCE serial cascade; +openGauss=# DROP SEQUENCE serial1 cascade; +``` + +## 相关链接 + +[DROP SEQUENCE](DROP-SEQUENCE.md),[ALTER SEQUENCE](ALTER-SEQUENCE.md) + diff --git a/content/zh/docs/Developerguide/CREATE-SERVER.md b/content/zh/docs/Developerguide/CREATE-SERVER.md index 4c9c3f193..5e2419b7e 100644 --- a/content/zh/docs/Developerguide/CREATE-SERVER.md +++ b/content/zh/docs/Developerguide/CREATE-SERVER.md @@ -1,114 +1,114 @@ -# CREATE SERVER - -## 功能描述 - -定义一个新的外部服务器。 - -## 语法格式 - -``` -CREATE SERVER server_name - FOREIGN DATA WRAPPER fdw_name - OPTIONS ( { option_name ' value ' } [, ...] ) ; -``` - -## 参数说明 - -- **server\_name** - - server的名称。 - - 取值范围:长度必须小于等于63。 - -- **fdw\_name** - - 指定外部数据封装器的名称。 - - 取值范围:oracle\_fdw、mysql\_fdw、postgres\_fdw、file\_fdw、mot\_fdw。 - -- **OPTIONS \( \{ option\_name ' value ' \} \[, ...\] \)** - - 这个子句为服务器指定选项。这些选项通常定义该服务器的连接细节,但是实际的名称和值取决于该服务器的外部数据包装器。 - - - oracle\_fdw支持的options包括: - - **dbserver** - - 远端Oracle数据库的连接字符串。 - - - **isolation\_level** (默认值为serializable) - - oracle数据库的事务隔离级别。 - - 取值范围:serializable、 read\_committed 、 read\_only - - - mysql\_fdw支持的options包括: - - **host** (默认值为 127.0.0.1) - - MySQL Server/MariaDB的地址。 - - - **port** (默认值为 3306) - - MySQL Server/MariaDB侦听的端口号。 - - - postgres\_fdw支持的options同libpq支持的连接参数一致,可参考 **链接字符** 。需要注意的是,以下几个options不支持设置: - - **user**和**password** - - 用户名和密码将在创建user mapping时指定。 - - - **client\_encoding** - - 将自动获取本地server的编码方式并设置该值。 - - - **application\_name** - - 总是设置成postgres\_fdw。 - - - 用于指定外部服务器的各类参数,详细的参数说明如下所示。 - - encrypt - - 是否对数据进行加密,该参数仅支持type为OBS时设置。默认值为on。 - - 取值范围: - - - on表示对数据进行加密,使用HTTPS协议通信。 - - off表示不对数据进行加密,使用HTTP协议通信。 - - - access\_key - - OBS访问协议对应的AK值(OBS云服务界面由用户获取),创建外表时AK值会加密保存到数据库的元数据表中。该参数仅支持type为OBS时设置。 - - - secret\_access\_key - - OBS访问协议对应的SK值(OBS云服务界面由用户获取),创建外表时SK值会加密保存到数据库的元数据表中。该参数仅支持type为OBS时设置。 - - - - -除了libpq支持的连接参数外,还额外提供3个options: - -- **use\_remote\_estimate** - - 控制postgres\_fdw是否发出EXPLAIN命令以获取运行消耗估算。默认值为false。 - -- **fdw\_startup\_cost** - - 执行一个外表扫描时的启动耗时估算。这个值通常包含建立连接、远端对请求的分析和生成计划的耗时。默认值为100。 - -- **fdw\_typle\_cost** - - 在远端服务器上对每一个元组进行扫描时的额外消耗。这个值通常表示数据在server间传输的额外消耗。默认值为0.01。 - - -## 示例 - -创建server。 - -``` -openGauss=* create server my_server foreign data wrapper log_fdw; -CREATE SERVER -``` - -## 相关链接 - -[ALTER SERVER](ALTER-SERVER.md),[DROP SERVER](DROP-SERVER.md) - +# CREATE SERVER + +## 功能描述 + +定义一个新的外部服务器。 + +## 语法格式 + +``` +CREATE SERVER server_name + FOREIGN DATA WRAPPER fdw_name + OPTIONS ( { option_name ' value ' } [, ...] ) ; +``` + +## 参数说明 + +- **server\_name** + +server 的名称。 + + 取值范围:长度必须小于等于 63 。 + +- **fdw\_name** + + 指定外部数据封装器的名称。 + + 取值范围:oracle\_fdw、mysql\_fdw、postgres\_fdw、file\_fdw、mot\_fdw。 + +- **OPTIONS \( \{ option\_name ' value ' \} \[, ...\] \)** + + 这个子句为服务器指定选项。这些选项通常定义该服务器的连接细节,但是实际的名称和值取决于该服务器的外部数据包装器。 + + - oracle\_fdw支持的 options 包括: + - **dbserver** + + 远端 Oracle 数据库的连接字符串。 + + - **isolation\_level** (默认值为serializable) + +oracle 数据库的事务隔离级别。 + + 取值范围:serializable、 read\_committed 、 read\_only + + - mysql\_fdw支持的 options 包括: + - **host** (默认值为 127.0.0.1) + + MySQL Server/MariaDB的地址。 + + - **port** (默认值为 3306) + + MySQL Server/MariaDB侦听的端口号。 + + - postgres\_fdw支持的 options 同 libpq 支持的连接参数一致,可参考 **链接字符** 。需要注意的是,以下几个 options 不支持设置: + - **user**和**password** + + 用户名和密码将在创建 user mapping 时指定。 + + - **client\_encoding** + + 将自动获取本地 server 的编码方式并设置该值。 + + - **application\_name** + + 总是设置成postgres\_fdw。 + + - 用于指定外部服务器的各类参数,详细的参数说明如下所示。 + - encrypt + + 是否对数据进行加密,该参数仅支持 type 为 OBS 时设置。默认值为 on 。 + + 取值范围: + + - on表示对数据进行加密,使用 HTTPS 协议通信。 + - off表示不对数据进行加密,使用 HTTP 协议通信。 + + - access\_key + +OBS 访问协议对应的 AK 值(OBS云服务界面由用户获取),创建外表时 AK 值会加密保存到数据库的元数据表中。该参数仅支持 type 为 OBS 时设置。 + + - secret\_access\_key + +OBS 访问协议对应的 SK 值(OBS云服务界面由用户获取),创建外表时 SK 值会加密保存到数据库的元数据表中。该参数仅支持 type 为 OBS 时设置。 + + + + +除了 libpq 支持的连接参数外,还额外提供 3 个options: + +- **use\_remote\_estimate** + + 控制postgres\_fdw是否发出 EXPLAIN 命令以获取运行消耗估算。默认值为 false 。 + +- **fdw\_startup\_cost** + + 执行一个外表扫描时的启动耗时估算。这个值通常包含建立连接、远端对请求的分析和生成计划的耗时。默认值为 100 。 + +- **fdw\_typle\_cost** + + 在远端服务器上对每一个元组进行扫描时的额外消耗。这个值通常表示数据在 server 间传输的额外消耗。默认值为0.01。 + + +## 示例 + +创建 server 。 + +``` +openGauss=* create server my_server foreign data wrapper log_fdw; +CREATE SERVER +``` + +## 相关链接 + +[ALTER SERVER](ALTER-SERVER.md),[DROP SERVER](DROP-SERVER.md) + diff --git a/content/zh/docs/Developerguide/CREATE-SYNONYM.md b/content/zh/docs/Developerguide/CREATE-SYNONYM.md index 605cd39da..8f4839522 100644 --- a/content/zh/docs/Developerguide/CREATE-SYNONYM.md +++ b/content/zh/docs/Developerguide/CREATE-SYNONYM.md @@ -1,107 +1,107 @@ -# CREATE SYNONYM - -## 功能描述 - -创建一个同义词对象。同义词是数据库对象的别名,用于记录与其他数据库对象名间的映射关系,用户可以使用同义词访问关联的数据库对象。 - -## 注意事项 - -- 定义同义词的用户成为其所有者。 -- 若指定模式名称,则同义词在指定模式中创建。否则,在当前模式创建。 -- 支持通过同义词访问的数据库对象包括:表、视图、函数和存储过程。 -- 使用同义词时,用户需要具有对关联对象的相应权限。 -- 支持使用同义词的DML语句包括:SELECT、INSERT、UPDATE、DELETE、EXPLAIN、CALL。 -- 不建议对临时表创建同义词。如果需要创建的话,需要指定同义词的目标临时表的模式名,负责无法正常使用同义词,并且在当前会话结束前执行DROP SYNONYM命令。 - -## 语法格式 - -``` -CREATE [ OR REPLACE ] SYNONYM synonym_name - FOR object_name; -``` - -## 参数说明 - -- **synonym** - - 创建的同义词名字,可以带模式名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **object\_name** - - 关联的对象名字,可以带模式名。 - - 取值范围:字符串,要符合标识符的命名规范。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >object\_name可以是不存在的对象名称。 - - -## 示例 - -``` ---创建模式ot。 -openGauss=# CREATE SCHEMA ot; - ---创建表ot.t1及其同义词t1。 -openGauss=# CREATE TABLE ot.t1(id int, name varchar2(10)); -openGauss=# CREATE OR REPLACE SYNONYM t1 FOR ot.t1; - ---使用同义词t1。 -openGauss=# SELECT * FROM t1; -openGauss=# INSERT INTO t1 VALUES (1, 'ada'), (2, 'bob'); -openGauss=# UPDATE t1 SET t1.name = 'cici' WHERE t1.id = 2; - ---创建同义词v1及其关联视图ot.v_t1。 -openGauss=# CREATE SYNONYM v1 FOR ot.v_t1; -openGauss=# CREATE VIEW ot.v_t1 AS SELECT * FROM ot.t1; - ---使用同义词v1。 -openGauss=# SELECT * FROM v1; - ---创建重载函数ot.add及其同义词add。 -openGauss=# CREATE OR REPLACE FUNCTION ot.add(a integer, b integer) RETURNS integer AS -$$ -SELECT $1 + $2 -$$ -LANGUAGE sql; - -openGauss=# CREATE OR REPLACE FUNCTION ot.add(a decimal(5,2), b decimal(5,2)) RETURNS decimal(5,2) AS -$$ -SELECT $1 + $2 -$$ -LANGUAGE sql; - -openGauss=# CREATE OR REPLACE SYNONYM add FOR ot.add; - ---使用同义词add。 -openGauss=# SELECT add(1,2); -openGauss=# SELECT add(1.2,2.3); - ---创建存储过程ot.register及其同义词register。 -openGauss=# CREATE PROCEDURE ot.register(n_id integer, n_name varchar2(10)) -SECURITY INVOKER -AS -BEGIN - INSERT INTO ot.t1 VALUES(n_id, n_name); -END; -/ - -openGauss=# CREATE OR REPLACE SYNONYM register FOR ot.register; - ---使用同义词register,调用存储过程。 -openGauss=# CALL register(3,'mia'); - ---删除同义词。 -openGauss=# DROP SYNONYM t1; -openGauss=# DROP SYNONYM IF EXISTS v1; -openGauss=# DROP SYNONYM IF EXISTS add; -openGauss=# DROP SYNONYM register; -openGauss=# DROP SCHEMA ot CASCADE; -``` - -## 相关链接 - -[ALTER SYNONYM](ALTER-SYNONYM.md),[DROP SYNONYM](DROP-SYNONYM.md) - +# CREATE SYNONYM + +## 功能描述 + +创建一个同义词对象。同义词是数据库对象的别名,用于记录与其他数据库对象名间的映射关系,用户可以使用同义词访问关联的数据库对象。 + +## 注意事项 + +- 定义同义词的用户成为其所有者。 +- 若指定模式名称,则同义词在指定模式中创建。否则,在当前模式创建。 +- 支持通过同义词访问的数据库对象包括:表、视图、函数和存储过程。 +- 使用同义词时,用户需要具有对关联对象的相应权限。 +- 支持使用同义词的 DML 语句包括:SELECT、INSERT、UPDATE、DELETE、EXPLAIN、CALL。 +- 不建议对临时表创建同义词。如果需要创建的话,需要指定同义词的目标临时表的模式名,负责无法正常使用同义词,并且在当前会话结束前执行 DROP SYNONYM 命令。 + +## 语法格式 + +``` +CREATE [ OR REPLACE ] SYNONYM synonym_name + FOR object_name; +``` + +## 参数说明 + +- **synonym** + + 创建的同义词名字,可以带模式名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **object\_name** + + 关联的对象名字,可以带模式名。 + + 取值范围:字符串,要符合标识符的命名规范。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >object\_name可以是不存在的对象名称。 + + +## 示例 + +``` +--创建模式 ot 。 +openGauss=# CREATE SCHEMA ot; + +--创建表ot.t1及其同义词 t1 。 +openGauss=# CREATE TABLE ot.t1(id int, name varchar2(10)); +openGauss=# CREATE OR REPLACE SYNONYM t1 FOR ot.t1; + +--使用同义词 t1 。 +openGauss=# SELECT * FROM t1; +openGauss=# INSERT INTO t1 VALUES (1, 'ada'), (2, 'bob'); +openGauss=# UPDATE t1 SET t1.name = 'cici' WHERE t1.id = 2; + +--创建同义词 v1 及其关联视图ot.v_t1。 +openGauss=# CREATE SYNONYM v1 FOR ot.v_t1; +openGauss=# CREATE VIEW ot.v_t1 AS SELECT * FROM ot.t1; + +--使用同义词 v1 。 +openGauss=# SELECT * FROM v1; + +--创建重载函数ot.add及其同义词 add 。 +openGauss=# CREATE OR REPLACE FUNCTION ot.add(a integer, b integer) RETURNS integer AS +$$ +SELECT $1 + $2 +$$ +LANGUAGE sql; + +openGauss=# CREATE OR REPLACE FUNCTION ot.add(a decimal(5,2), b decimal(5,2)) RETURNS decimal(5,2) AS +$$ +SELECT $1 + $2 +$$ +LANGUAGE sql; + +openGauss=# CREATE OR REPLACE SYNONYM add FOR ot.add; + +--使用同义词 add 。 +openGauss=# SELECT add(1,2); +openGauss=# SELECT add(1.2,2.3); + +--创建存储过程ot.register及其同义词 register 。 +openGauss=# CREATE PROCEDURE ot.register(n_id integer, n_name varchar2(10)) +SECURITY INVOKER +AS +BEGIN + INSERT INTO ot.t1 VALUES(n_id, n_name); +END; +/ + +openGauss=# CREATE OR REPLACE SYNONYM register FOR ot.register; + +--使用同义词 register ,调用存储过程。 +openGauss=# CALL register(3,'mia'); + +--删除同义词。 +openGauss=# DROP SYNONYM t1; +openGauss=# DROP SYNONYM IF EXISTS v1; +openGauss=# DROP SYNONYM IF EXISTS add; +openGauss=# DROP SYNONYM register; +openGauss=# DROP SCHEMA ot CASCADE; +``` + +## 相关链接 + +[ALTER SYNONYM](ALTER-SYNONYM.md),[DROP SYNONYM](DROP-SYNONYM.md) + diff --git a/content/zh/docs/Developerguide/CREATE-TABLE-AS.md b/content/zh/docs/Developerguide/CREATE-TABLE-AS.md index 99d9bfa2a..ba99801f3 100644 --- a/content/zh/docs/Developerguide/CREATE-TABLE-AS.md +++ b/content/zh/docs/Developerguide/CREATE-TABLE-AS.md @@ -1,160 +1,160 @@ -# CREATE TABLE AS - -## 功能描述 - -根据查询结果创建表。 - -CREATE TABLE AS创建一个表并且用来自SELECT命令的结果填充该表。该表的字段和SELECT输出字段的名称及数据类型相关。不过用户可以通过明确地给出一个字段名称列表来覆盖SELECT输出字段的名称。 - -CREATE TABLE AS对源表进行一次查询,然后将数据写入新表中,而查询视图结果会根据源表的变化而有所改变。相比之下,每次做查询的时候,视图都重新计算定义它的SELECT语句。 - -## 注意事项 - -- 分区表不能采用此方式进行创建。 -- 如果在建表过程中数据库系统发生故障,系统恢复后可能无法自动清除之前已创建的、大小非0的磁盘文件。此种情况出现概率小,不影响数据库系统的正常运行。 - -## 语法格式 - -``` -CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TABLE table_name - [ (column_name [, ...] ) ] - [ WITH ( {storage_parameter = value} [, ... ] ) ] - [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] - [ COMPRESS | NOCOMPRESS ] - [ TABLESPACE tablespace_name ] - AS query - [ WITH [ NO ] DATA ]; -``` - -## 参数说明 - -- **UNLOGGED** - - 指定表为非日志表。在非日志表中写入的数据不会被写入到预写日志中,这样就会比普通表快很多。但是,它也是不安全的,非日志表在冲突或异常关机后会被自动删截。非日志表中的内容也不会被复制到备用服务器中。在该类表中创建的索引也不会被自动记录。 - - - 使用场景:非日志表不能保证数据的安全性,用户应该在确保数据已经做好备份的前提下使用,例如系统升级时进行数据的备份。 - - 故障处理:当异常关机等操作导致非日志表上的索引发生数据丢失时,用户应该对发生错误的索引进行重建。 - -- **GLOBAL | LOCAL** - - 创建临时表时可以在TEMP或TEMPORARY前指定GLOBAL或LOCAL关键字。如果指定GLOBAL关键字,openGauss会创建全局临时表,否则openGauss会创建本地临时表。 - -- **TEMPORARY | TEMP** - - 如果指定TEMP或TEMPORARY关键字,则创建的表为临时表。临时表分为全局临时表和本地临时表两种类型。创建临时表时如果指定GLOBAL关键字则为全局临时表,否则为本地临时表。 - - 全局临时表的元数据对所有会话可见,会话结束后元数据继续存在。会话与会话之间的用户数据、索引和统计信息相互隔离,每个会话只能看到和更改自己提交的数据。全局临时表有两种模式:一种是基于会话级别的\(ON COMMIT PRESERVE ROWS\), 当会话结束时自动清空用户数据;一种是基于事务级别的\(ON COMMIT DELETE ROWS\), 当执行commit或rollback时自动清空用户数据。建表时如果没有指定ON COMMIT选项,则缺省为会话级别。与本地临时表不同,全局临时表建表时可以指定非pg\_temp\_开头的schema。 - - 本地临时表只在当前会话可见,本会话结束后会自动删除。因此,在除当前会话连接的数据库节点故障时,仍然可以在当前会话上创建和使用临时表。由于临时表只在当前会话创建,对于涉及对临时表操作的DDL语句,会产生DDL失败的报错。因此,建议DDL语句中不要对临时表进行操作。TEMP和TEMPORARY等价。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - > - >- 本地临时表通过每个会话独立的以pg\_temp开头的schema来保证只对当前会话可见,因此,不建议用户在日常操作中手动删除以pg\_temp、pg\_toast\_temp开头的schema。 - > - >- 如果建表时不指定TEMPORARY/TEMP关键字,而指定表的schema为当前会话的pg\_temp\_开头的schema,则此表会被创建为临时表。 - > - >- ALTER/DROP全局临时表和索引,如果其它会话正在使用它,禁止操作。 - > - >- 全局临时表的DDL只会影响当前会话的用户数据和索引。例如truncate、reindex、analyze只对当前会话有效。 - -- **table\_name** - - 要创建的表名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **column\_name** - - 新表中要创建的字段名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **WITH \( storage\_parameter \[= value\] \[, ... \] \)** - - 这个子句为表或索引指定一个可选的存储参数。参数的详细说明如下所示。 - - - FILLFACTOR - - 一个表的填充因子(fillfactor)是一个介于10和100之间的百分数。100(完全填充)是默认值。如果指定了较小的填充因子,INSERT操作仅按照填充因子指定的百分率填充表页。每个页上的剩余空间将用于在该页上更新行,这就使得UPDATE有机会在同一页上放置同一条记录的新版本,这比把新版本放置在其他页上更有效。对于一个从不更新的表将填充因子设为100是最佳选择,但是对于频繁更新的表,选择较小的填充因子则更加合适。该参数只对行存表有效。 - - 取值范围:10\~100 - - - ORIENTATION - - 取值范围: - - COLUMN:表的数据将以列式存储。 - - ROW(缺省值):表的数据将以行式存储。 - - - COMPRESSION - - 指定表数据的压缩级别,它决定了表数据的压缩比以及压缩时间。一般来讲,压缩级别越高,压缩比也越大,压缩时间也越长;反之亦然。实际压缩比取决于加载的表数据的分布特征。 - - 取值范围: - - 列存表的有效值为YES/NO/LOW/MIDDLE/HIGH,默认值为LOW。 - - 行存表不支持压缩。 - - - MAX\_BATCHROW - - 指定了在数据加载过程中一个存储单元可以容纳记录的最大数目。该参数只对列存表有效。 - - 取值范围:10000\~60000 - - -- **ON COMMIT \{ PRESERVE ROWS | DELETE ROWS | DROP \}** - - ON COMMIT选项决定在事务中执行创建临时表操作,当事务提交时,此临时表的后续操作。有以下三个选项,当前仅支持PRESERVE ROWS和DELETE ROWS选项。 - - - PRESERVE ROWS(缺省值):提交时不对临时表执行任何操作,临时表及其表数据保持不变。 - - DELETE ROWS:提交时删除临时表中数据。 - - DROP:提交时删除此临时表。只支持删除本地临时表,不支持删除全局临时表。 - -- **COMPRESS / NOCOMPRESS** - - 创建一个新表时,需要在创建表语句中指定关键字COMPRESS,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字NOCOMPRESS则不对表进行压缩。行存表不支持压缩。 - - 缺省值:NOCOMPRESS,即不对元组数据进行压缩。 - -- **TABLESPACE tablespace\_name** - - 指定新表将要在tablespace\_name表空间内创建。如果没有声明,将使用默认表空间。 - -- **AS query** - - 一个SELECT VALUES命令或者一个运行预备好的SELECT或VALUES查询的EXECUTE命令。 - -- **\[ WITH \[ NO \] DATA \]** - - 创建表时,是否也插入查询到的数据。默认是要数据,选择“NO”参数时,则不要数据。 - - -## 示例 - -``` ---创建一个表tpcds.store_returns表。 -openGauss=# CREATE TABLE tpcds.store_returns -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - sr_item_sk VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER -); ---创建一个表tpcds.store_returns_t1并插入tpcds.store_returns表中sr_item_sk字段中大于16的数值。 -openGauss=# CREATE TABLE tpcds.store_returns_t1 AS SELECT * FROM tpcds.store_returns WHERE sr_item_sk > '4795'; - ---使用tpcds.store_returns拷贝一个新表tpcds.store_returns_t2。 -openGauss=# CREATE TABLE tpcds.store_returns_t2 AS table tpcds.store_returns; - ---删除表。 -openGauss=# DROP TABLE tpcds.store_returns_t1 ; -openGauss=# DROP TABLE tpcds.store_returns_t2 ; -openGauss=# DROP TABLE tpcds.store_returns; -``` - -## 相关链接 - -[CREATE TABLE](CREATE-TABLE.md),[SELECT](SELECT.md) - +# CREATE TABLE AS + +## 功能描述 + +根据查询结果创建表。 + +CREATE TABLE AS 创建一个表并且用来自 SELECT 命令的结果填充该表。该表的字段和 SELECT 输出字段的名称及数据类型相关。不过用户可以通过明确地给出一个字段名称列表来覆盖 SELECT 输出字段的名称。 + +CREATE TABLE AS 对源表进行一次查询,然后将数据写入新表中,而查询视图结果会根据源表的变化而有所改变。相比之下,每次做查询的时候,视图都重新计算定义它的 SELECT 语句。 + +## 注意事项 + +- 分区表不能采用此方式进行创建。 +- 如果在建表过程中数据库系统发生故障,系统恢复后可能无法自动清除之前已创建的、大小非 0 的磁盘文件。此种情况出现概率小,不影响数据库系统的正常运行。 + +## 语法格式 + +``` +CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TABLE table_name + [ (column_name [, ...] ) ] + [ WITH ( {storage_parameter = value} [, ... ] ) ] + [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] + [ COMPRESS | NOCOMPRESS ] + [ TABLESPACE tablespace_name ] + AS query + [ WITH [ NO ] DATA ]; +``` + +## 参数说明 + +- **UNLOGGED** + + 指定表为非日志表。在非日志表中写入的数据不会被写入到预写日志中,这样就会比普通表快很多。但是,它也是不安全的,非日志表在冲突或异常关机后会被自动删截。非日志表中的内容也不会被复制到备用服务器中。在该类表中创建的索引也不会被自动记录。 + + - 使用场景:非日志表不能保证数据的安全性,用户应该在确保数据已经做好备份的前提下使用,例如系统升级时进行数据的备份。 + - 故障处理:当异常关机等操作导致非日志表上的索引发生数据丢失时,用户应该对发生错误的索引进行重建。 + +- **GLOBAL | LOCAL** + + 创建临时表时可以在 TEMP 或 TEMPORARY 前指定 GLOBAL 或 LOCAL 关键字。如果指定 GLOBAL 关键字, openGauss 会创建全局临时表,否则 openGauss 会创建本地临时表。 + +- **TEMPORARY | TEMP** + + 如果指定 TEMP 或 TEMPORARY 关键字,则创建的表为临时表。临时表分为全局临时表和本地临时表两种类型。创建临时表时如果指定 GLOBAL 关键字则为全局临时表,否则为本地临时表。 + + 全局临时表的元数据对所有会话可见,会话结束后元数据继续存在。会话与会话之间的用户数据、索引和统计信息相互隔离,每个会话只能看到和更改自己提交的数据。全局临时表有两种模式:一种是基于会话级别的\(ON COMMIT PRESERVE ROWS\), 当会话结束时自动清空用户数据;一种是基于事务级别的\(ON COMMIT DELETE ROWS\), 当执行 commit 或 rollback 时自动清空用户数据。建表时如果没有指定 ON COMMIT 选项,则缺省为会话级别。与本地临时表不同,全局临时表建表时可以指定非pg\_temp\_开头的 schema 。 + + 本地临时表只在当前会话可见,本会话结束后会自动删除。因此,在除当前会话连接的数据库节点故障时,仍然可以在当前会话上创建和使用临时表。由于临时表只在当前会话创建,对于涉及对临时表操作的 DDL 语句,会产生 DDL 失败的报错。因此,建议 DDL 语句中不要对临时表进行操作。 TEMP 和 TEMPORARY 等价。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + > + >- 本地临时表通过每个会话独立的以pg\_temp开头的 schema 来保证只对当前会话可见,因此,不建议用户在日常操作中手动删除以pg\_temp、pg\_toast\_temp开头的 schema 。 + > + >- 如果建表时不指定TEMPORARY/TEMP关键字,而指定表的 schema 为当前会话的pg\_temp\_开头的 schema ,则此表会被创建为临时表。 + > + >- ALTER/DROP全局临时表和索引,如果其它会话正在使用它,禁止操作。 + > + >- 全局临时表的 DDL 只会影响当前会话的用户数据和索引。例如truncate、reindex、analyze只对当前会话有效。 + +- **table\_name** + + 要创建的表名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **column\_name** + + 新表中要创建的字段名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **WITH \( storage\_parameter \[= value\] \[, ... \] \)** + + 这个子句为表或索引指定一个可选的存储参数。参数的详细说明如下所示。 + + - FILLFACTOR + + 一个表的填充因子(fillfactor)是一个介于 10 和 100 之间的百分数。100(完全填充)是默认值。如果指定了较小的填充因子, INSERT 操作仅按照填充因子指定的百分率填充表页。每个页上的剩余空间将用于在该页上更新行,这就使得 UPDATE 有机会在同一页上放置同一条记录的新版本,这比把新版本放置在其他页上更有效。对于一个从不更新的表将填充因子设为 100 是最佳选择,但是对于频繁更新的表,选择较小的填充因子则更加合适。该参数只对行存表有效。 + + 取值范围:10\~100 + + - ORIENTATION + + 取值范围: + + COLUMN:表的数据将以列式存储。 + + ROW(缺省值):表的数据将以行式存储。 + + - COMPRESSION + + 指定表数据的压缩级别,它决定了表数据的压缩比以及压缩时间。一般来讲,压缩级别越高,压缩比也越大,压缩时间也越长;反之亦然。实际压缩比取决于加载的表数据的分布特征。 + + 取值范围: + + 列存表的有效值为YES/NO/LOW/MIDDLE/HIGH,默认值为 LOW 。 + + 行存表不支持压缩。 + + - MAX\_BATCHROW + + 指定了在数据加载过程中一个存储单元可以容纳记录的最大数目。该参数只对列存表有效。 + + 取值范围:10000\~60000 + + +- **ON COMMIT \{ PRESERVE ROWS | DELETE ROWS | DROP \}** + +ON COMMIT 选项决定在事务中执行创建临时表操作,当事务提交时,此临时表的后续操作。有以下三个选项,当前仅支持 PRESERVE ROWS 和 DELETE ROWS 选项。 + + - PRESERVE ROWS(缺省值):提交时不对临时表执行任何操作,临时表及其表数据保持不变。 + - DELETE ROWS:提交时删除临时表中数据。 + - DROP:提交时删除此临时表。只支持删除本地临时表,不支持删除全局临时表。 + +- **COMPRESS / NOCOMPRESS** + + 创建一个新表时,需要在创建表语句中指定关键字 COMPRESS ,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字 NOCOMPRESS 则不对表进行压缩。行存表不支持压缩。 + + 缺省值:NOCOMPRESS,即不对元组数据进行压缩。 + +- **TABLESPACE tablespace\_name** + + 指定新表将要在tablespace\_name表空间内创建。如果没有声明,将使用默认表空间。 + +- **AS query** + + 一个 SELECT VALUES 命令或者一个运行预备好的 SELECT 或 VALUES 查询的 EXECUTE 命令。 + +- **\[ WITH \[ NO \] DATA \]** + + 创建表时,是否也插入查询到的数据。默认是要数据,选择“NO”参数时,则不要数据。 + + +## 示例 + +``` +--创建一个表tpcds.store_returns表。 +openGauss=# CREATE TABLE tpcds.store_returns +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + sr_item_sk VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER +); +--创建一个表tpcds.store_returns_t1并插入tpcds.store_returns表中 sr_item_sk 字段中大于 16 的数值。 +openGauss=# CREATE TABLE tpcds.store_returns_t1 AS SELECT * FROM tpcds.store_returns WHERE sr_item_sk > '4795'; + +--使用tpcds.store_returns拷贝一个新表tpcds.store_returns_t2。 +openGauss=# CREATE TABLE tpcds.store_returns_t2 AS table tpcds.store_returns; + +--删除表。 +openGauss=# DROP TABLE tpcds.store_returns_t1 ; +openGauss=# DROP TABLE tpcds.store_returns_t2 ; +openGauss=# DROP TABLE tpcds.store_returns; +``` + +## 相关链接 + +[CREATE TABLE](CREATE-TABLE.md),[SELECT](SELECT.md) + diff --git a/content/zh/docs/Developerguide/CREATE-TABLE-PARTITION.md b/content/zh/docs/Developerguide/CREATE-TABLE-PARTITION.md index bd8cb8dae..bf2bd5c0b 100644 --- a/content/zh/docs/Developerguide/CREATE-TABLE-PARTITION.md +++ b/content/zh/docs/Developerguide/CREATE-TABLE-PARTITION.md @@ -1,955 +1,955 @@ -# CREATE TABLE PARTITION - -## 功能描述 - -创建分区表。分区表是把逻辑上的一张表根据某种方案分成几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。 - -常见的分区方案有范围分区(Range Partitioning)、间隔分区(Interval Partitioning)、哈希分区(Hash Partitioning)、列表分区(List Partitioning)、数值分区(Value Partition)等。目前行存表支持范围分区、间隔分区、哈希分区、列表分区,列存表仅支持范围分区。 - -范围分区是根据表的一列或者多列,将要插入表的记录分为若干个范围,这些范围在不同的分区里没有重叠。为每个范围创建一个分区,用来存储相应的数据。 - -范围分区的分区策略是指记录插入分区的方式。目前范围分区仅支持范围分区策略。 - -范围分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则给出报错和提示信息。这是最常用的分区策略。 - -间隔分区是一种特殊的范围分区,相比范围分区,新增间隔值定义,当插入记录找不到匹配的分区时,可以根据间隔值自动创建分区。 - -间隔分区只支持基于表的一列分区,并且该列只支持TIMESTAMP\[\(p\)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[\(p\)\] \[WITH TIME ZONE\]、DATE数据类型。 - -间隔分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则根据分区键值和表定义信息自动创建一个分区,然后将记录插入新分区中,新创建的分区数据范围等于间隔值。 - -哈希分区是根据表的一列,为每个分区指定模数和余数,将要插入表的记录划分到对应的分区中,每个分区所持有的行都需要满足条件:分区键的值除以为其指定的模数将产生为其指定的余数。 - -哈希分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则返回报错和提示信息。 - -列表分区是根据表的一列,将要插入表的记录通过每一个分区中出现的键值划分到对应的分区中,这些键值在不同的分区里没有重叠。为每组键值创建一个分区,用来存储相应的数据。 - -列表分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则给出报错和提示信息。 - -分区可以提供若干好处: - -- 某些类型的查询性能可以得到极大提升。特别是表中访问率较高的行位于一个单独分区或少数几个分区上的情况下。分区可以减少数据的搜索空间,提高数据访问效率。 -- 当查询或更新一个分区的大部分记录时,连续扫描那个分区而不是访问整个表可以获得巨大的性能提升。 -- 如果需要大量加载或者删除的记录位于单独的分区上,则可以通过直接读取或删除那个分区以获得巨大的性能提升,同时还可以避免由于大量DELETE导致的VACUUM超载(仅范围分区)。 - -## 注意事项 - -- 唯一约束和主键约束的约束键包含所有分区键将为约束创建LOCAL索引,否则创建GLOBAL索引。 -- 目前哈希分区和列表分区仅支持单列构建分区键,暂不支持多列构建分区键。 -- 只需要有间隔分区表的INSERT权限,往该表INSERT数据时就可以自动创建分区。 - -## 语法格式 - -``` -CREATE TABLE [ IF NOT EXISTS ] partition_table_name -( [ - { column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ] - | table_constraint - | LIKE source_table [ like_option [...] ] }[, ... ] -] ) - [ WITH ( {storage_parameter = value} [, ... ] ) ] - [ COMPRESS | NOCOMPRESS ] - [ TABLESPACE tablespace_name ] - PARTITION BY { - {RANGE (partition_key) [ INTERVAL ('interval_expr') [ STORE IN (tablespace_name [, ... ] ) ] ] ( partition_less_than_item [, ... ] )} | - {RANGE (partition_key) [ INTERVAL ('interval_expr') [ STORE IN (tablespace_name [, ... ] ) ] ] ( partition_start_end_item [, ... ] )} | - {LIST | HASH (partition_key) (PARTITION partition_name [VALUES (list_values_clause)] opt_table_space )} - } [ { ENABLE | DISABLE } ROW MOVEMENT ]; -``` - -- 列约束column\_constraint: - - ``` - [ CONSTRAINT constraint_name ] - { NOT NULL | - NULL | - CHECK ( expression ) | - DEFAULT default_e xpr | - GENERATED ALWAYS AS ( generation_expr ) STORED | - UNIQUE index_parameters | - PRIMARY KEY index_parameters | - REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] - [ ON DELETE action ] [ ON UPDATE action ] } - [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] - ``` - -- 表约束table\_constraint: - - ``` - [ CONSTRAINT constraint_name ] - { CHECK ( expression ) | - UNIQUE ( column_name [, ... ] ) index_parameters | - PRIMARY KEY ( column_name [, ... ] ) index_parameters | - FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] - [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } - [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] - ``` - - -- like选项like\_option: - - ``` - { INCLUDING | EXCLUDING } { DEFAULTS | GENERATED | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | RELOPTIONS| ALL } - ``` - - -- 索引存储参数index\_parameters: - - ``` - [ WITH ( {storage_parameter = value} [, ... ] ) ] - [ USING INDEX TABLESPACE tablespace_name ] - ``` - - -- partition\_less\_than\_item: - - ``` - PARTITION partition_name VALUES LESS THAN ( { partition_value | MAXVALUE } ) [TABLESPACE tablespace_name] - ``` - -- partition\_start\_end\_item: - - ``` - PARTITION partition_name { - {START(partition_value) END (partition_value) EVERY (interval_value)} | - {START(partition_value) END ({partition_value | MAXVALUE})} | - {START(partition_value)} | - {END({partition_value | MAXVALUE})} - } [TABLESPACE tablespace_name] - ``` - - -## 参数说明 - -- **IF NOT EXISTS** - - 如果已经存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表关系已存在。 - -- **partition\_table\_name** - - 分区表的名称。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **column\_name** - - 新表中要创建的字段名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **data\_type** - - 字段的数据类型。 - -- **COLLATE collation** - - COLLATE子句指定列的排序规则(该列必须是可排列的数据类型)。如果没有指定,则使用默认的排序规则。排序规则可以使用“select \* from pg\_collation;”命令从pg\_collation系统表中查询,默认的排序规则为查询结果中以default开始的行。 - -- **CONSTRAINT constraint\_name** - - 列约束或表约束的名称。可选的约束子句用于声明约束,新行或者更新的行必须满足这些约束才能成功插入或更新。 - - 定义约束有两种方法: - - - 列约束:作为一个列定义的一部分,仅影响该列。 - - 表约束:不和某个列绑在一起,可以作用于多个列。 - -- **LIKE source\_table \[ like\_option ... \]** - - LIKE子句声明一个表,新表自动从这个表里面继承所有字段名及其数据类型和非空约束。 - - 和INHERITS不同,新表与原来的表之间在创建动作完毕之后是完全无关的。在源表做的任何修改都不会传播到新表中,并且也不可能在扫描源表的时候包含新表的数据。 - - - 字段缺省表达式只有在声明了INCLUDING DEFAULTS之后才会包含进来。缺省是不包含缺省表达式的,即新表中所有字段的缺省值都是NULL。 - - 如果指定了INCLUDING GENERATED,则源表列的生成表达式会复制到新表中。默认不复制生成表达式。 - - 非空约束将总是复制到新表中,CHECK约束则仅在指定了INCLUDING CONSTRAINTS的时候才复制,而其他类型的约束则永远也不会被复制。此规则同时适用于表约束和列约束。 - - 和INHERITS不同,被复制的列和约束并不使用相同的名称进行融合。如果明确的指定了相同的名称或者在另外一个LIKE子句中,将会报错。 - - 如果指定了INCLUDING INDEXES,则源表上的索引也将在新表上创建,默认不建立索引。 - - 如果指定了INCLUDING STORAGE,则拷贝列的STORAGE设置也将被拷贝,默认情况下不包含STORAGE设置。 - - 如果指定了INCLUDING COMMENTS,则源表列、约束和索引的注释也会被拷贝过来。默认情况下,不拷贝源表的注释。 - - 如果指定了INCLUDING RELOPTIONS,则源表的存储参数(即源表的WITH子句)也将拷贝至新表。默认情况下,不拷贝源表的存储参数。 - - INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION和INCLUDING RELOPTIONS的内容。 - -- **WITH \( storage\_parameter \[= value\] \[, ... \] \)** - - 这个子句为表或索引指定一个可选的存储参数。参数的详细描述如下所示: - - - FILLFACTOR - - 一个表的填充因子(fillfactor)是一个介于10和100之间的百分数。100(完全填充)是默认值。如果指定了较小的填充因子,INSERT操作仅按照填充因子指定的百分率填充表页。每个页上的剩余空间将用于在该页上更新行,这就使得UPDATE有机会在同一页上放置同一条记录的新版本,这比把新版本放置在其他页上更有效。对于一个从不更新的表将填充因子设为100是最佳选择,但是对于频繁更新的表,选择较小的填充因子则更加合适。该参数对于列存表没有意义。 - - 取值范围:10\~100 - - - ORIENTATION - - 决定了表的数据的存储方式。 - - 取值范围: - - - COLUMN:表的数据将以列式存储。 - - ROW(缺省值):表的数据将以行式存储。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >orientation不支持修改。 - - - - COMPRESSION - - 列存表的有效值为LOW/MIDDLE/HIGH/YES/NO,压缩级别依次升高,默认值为LOW。 - - 行存表不支持压缩。 - - - MAX\_BATCHROW - - 指定了在数据加载过程中一个存储单元可以容纳记录的最大数目。该参数只对列存表有效。 - - 取值范围:10000\~60000,默认60000。 - - - PARTIAL\_CLUSTER\_ROWS - - 指定了在数据加载过程中进行将局部聚簇存储的记录数目。该参数只对列存表有效。 - - 取值范围:大于等于MAX\_BATCHROW,建议取值为MAX\_BATCHROW的整数倍数。 - - - DELTAROW\_THRESHOLD - - 预留参数。该参数只对列存表有效。 - - 取值范围:0~9999 - - -- **COMPRESS / NOCOMPRESS** - - 创建一个新表时,需要在创建表语句中指定关键字COMPRESS,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字NOCOMPRESS则不对表进行压缩。行存表不支持压缩。 - - 缺省值为NOCOMPRESS,即不对元组数据进行压缩。 - -- **TABLESPACE tablespace\_name** - - 指定新表将要在tablespace\_name表空间内创建。如果没有声明,将使用默认表空间。 - -- **PARTITION BY RANGE\(partition\_key\)** - - 创建范围分区。partition\_key为分区键的名称。 - - (1)对于从句是VALUES LESS THAN的语法格式: - - >![](public_sys-resources/icon-notice.gif) **须知:** - >对于从句是VALUE LESS THAN的语法格式,范围分区策略的分区键最多支持4列。 - - 该情形下,分区键支持的数据类型为:SMALLINT、INTEGER、BIGINT、DECIMAL、NUMERIC、REAL、DOUBLE PRECISION、CHARACTER VARYING\(n\)、VARCHAR\(n\)、CHARACTER\(n\)、CHAR\(n\)、CHARACTER、CHAR、TEXT、NVARCHAR2、NAME、TIMESTAMP\[\(p\)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[\(p\)\] \[WITH TIME ZONE\]、DATE。 - - (2)对于从句是START END的语法格式: - - >![](public_sys-resources/icon-notice.gif) **须知:** - >对于从句是START END的语法格式,范围分区策略的分区键仅支持1列。 - - 该情形下,分区键支持的数据类型为:SMALLINT、INTEGER、BIGINT、DECIMAL、NUMERIC、REAL、DOUBLE PRECISION、TIMESTAMP\[\(p\)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[\(p\)\] \[WITH TIME ZONE\]、DATE。 - - (3)对于指定了INTERVAL子句的语法格式: - - >![](public_sys-resources/icon-notice.gif) **须知:** - >对于指定了INTERVAL子句的语法格式,范围分区策略的分区键仅支持1列。 - - 该情形下,分区键支持的数据类型为:TIMESTAMP\[\(p\)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[\(p\)\] \[WITH TIME ZONE\]、DATE。 - -- **PARTITION partition\_name VALUES LESS THAN \( \{ partition\_value | MAXVALUE \} \)** - - 指定各分区的信息。partition\_name为范围分区的名称。partition\_value为范围分区的上边界,取值依赖于partition\_key的类型。MAXVALUE表示分区的上边界,它通常用于设置最后一个范围分区的上边界。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >- 每个分区都需要指定一个上边界。 - - >- 分区上边界的类型应当和分区键的类型一致。 - - >- 分区列表是按照分区上边界升序排列的,值较小的分区位于值较大的分区之前。 - -- **PARTITION partition\_name \{START \(partition\_value\) END \(partition\_value\) EVERY \(interval\_value\)\} | **\{START \(partition\_value\) END \(partition\_value|MAXVALUE\)\} | \{START\(partition\_value\)\} | **\{END \(partition\_value | MAXVALUE\)**\} - - 指定各分区的信息,各参数意义如下: - - - partition\_name:范围分区的名称或名称前缀,除以下情形外(假定其中的partition\_name是p1),均为分区的名称。 - - 若该定义是START+END+EVERY从句,则语义上定义的分区的名称依次为p1\_1, p1\_2, ...。例如对于定义“PARTITION p1 START\(1\) END\(4\) EVERY\(1\)”,则生成的分区是:\[1, 2\), \[2, 3\) 和 \[3, 4\),名称依次为p1\_1, p1\_2和p1\_3,即此处的p1是名称前缀。 - - 若该定义是第一个分区定义,且该定义有START值,则范围(MINVALUE, START)将自动作为第一个实际分区,其名称为p1\_0,然后该定义语义描述的分区名称依次为p1\_1, p1\_2, ...。例如对于完整定义“PARTITION p1 START\(1\), PARTITION p2 START\(2\)”,则生成的分区是:\(MINVALUE, 1\), \[1, 2\) 和 \[2, MAXVALUE\),其名称依次为p1\_0, p1\_1和p2,即此处p1是名称前缀,p2是分区名称。这里MINVALUE表示最小值。 - - - partition\_value:范围分区的端点值(起始或终点),取值依赖于partition\_key的类型,不可是MAXVALUE。 - - interval\_value:对\[START,END\) 表示的范围进行切分,interval\_value是指定切分后每个分区的宽度,不可是MAXVALUE;如果(END-START)值不能整除以EVERY值,则仅最后一个分区的宽度小于EVERY值。 - - MAXVALUE:表示最大值,它通常用于设置最后一个范围分区的上边界。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >1. 在创建分区表若第一个分区定义含START值,则范围(MINVALUE,START)将自动作为实际的第一个分区。 - >2. START END语法需要遵循以下限制: - > - 每个partition\_start\_end\_item中的START值(如果有的话,下同)必须小于其END值。 - - > - 相邻的两个partition\_start\_end\_item,第一个的END值必须等于第二个的START值; - - > - 每个partition\_start\_end\_item中的EVERY值必须是正向递增的,且必须小于(END-START)值; - - > - 每个分区包含起始值,不包含终点值,即形如:\[起始值,终点值\),起始值是MINVALUE时则不包含; - - > - 一个partition\_start\_end\_item创建的每个分区所属的TABLESPACE一样; - - > - partition\_name作为分区名称前缀时,其长度不要超过57字节,超过时自动截断; - - > - 在创建、修改分区表时请注意分区表的分区总数不可超过最大限制(1048575); - - >3. 在创建分区表时START END与LESS THAN语法不可混合使用。 - >4. 即使创建分区表时使用START END语法,备份(gs\_dump)出的SQL语句也是VALUES LESS THAN语法格式。 - -- **INTERVAL \('interval\_expr'\) \[ STORE IN \(tablespace\_name \[, ... \] \) \]** - - 间隔分区定义信息。 - - - interval\_expr:自动创建分区的间隔,例如:1 day、1 month。 - - - STORE IN \(tablespace\_name \[, ... \] \):指定存放自动创建分区的表空间列表,如果有指定,则自动创建的分区从表空间列表中循环选择使用,否则使用分区表默认的表空间。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >列存表不支持间隔分区。 - -- **PARTITION BY LIST\(partition\_key\)** - - 创建列表分区。partition\_key为分区键的名称。 - - - 对于partition\_key,列表分区策略的分区键仅支持1列。 - - 对于从句是VALUES \(list\_values\_clause\)的语法格式,list\_values\_clause中包含了对应分区存在的键值,推荐每个分区的键值数量不超过1048575个。 - - 分区键支持的数据类型为:INT1、INT2、INT4、INT8、NUMERIC、VARCHAR\(n\)、CHAR、BPCHAR、NVARCHAR2、TIMESTAMP\[\(p\)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[\(p\)\] \[WITH TIME ZONE\]、DATE。分区个数不能超过64个。 - -- **PARTITION BY HASH\(partition\_key\)** - - 创建哈希分区。partition\_key为分区键的名称。 - - 对于partition\_key,哈希分区策略的分区键仅支持1列。 - - 分区键支持的数据类型为:INT1、INT2、INT4、INT8、NUMERIC、VARCHAR\(n\)、CHAR、BPCHAR、TEXT、NVARCHAR2、TIMESTAMP\[\(p\)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[\(p\)\] \[WITH TIME ZONE\]、DATE。分区个数不能超过1048575个。 - -- **\{ ENABLE | DISABLE \} ROW MOVEMENT** - - 行迁移开关。 - - 如果进行UPDATE操作时,更新了元组在分区键上的值,造成了该元组所在分区发生变化,就会根据该开关给出报错信息,或者进行元组在分区间的转移。 - - 取值范围: - - - ENABLE(缺省值):行迁移开关打开。 - - DISABLE:行迁移开关关闭。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >列表/哈希分区表暂不支持ROW MOVEMENT。 - - -- **NOT NULL** - - 字段值不允许为NULL。ENABLE用于语法兼容,可省略。 - -- **NULL** - - 字段值允许NULL ,这是缺省。 - - 这个子句只是为和非标准SQL数据库兼容。不建议使用。 - -- **CHECK \(condition\) \[ NO INHERIT \]** - - CHECK约束声明一个布尔表达式,每次要插入的新行或者要更新的行的新值必须使表达式结果为真或未知才能成功,否则会抛出一个异常并且不会修改数据库。 - - 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。 - - 用NO INHERIT标记的约束将不会传递到子表中去。 - - ENABLE用于语法兼容,可省略。 - -- **DEFAULT default\_expr** - - DEFAULT子句给字段指定缺省值。该数值可以是任何不含变量的表达式\(不允许使用子查询和对本表中的其他字段的交叉引用\)。缺省表达式的数据类型必须和字段类型匹配。 - - 缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为NULL 。 - -- GENERATED ALWAYS AS \( generation\_expr \) STORED - - 该子句将字段创建为生成列,生成列的值在写入(插入或更新)数据时由generation\_expr计算得到,STORED表示像普通列一样存储生成列的值。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 生成表达式不能以任何方式引用当前行以外的其他数据。生成表达式不能引用其他生成列,不能引用系统列。生成表达式不能返回结果集,不能使用子查询,不能使用聚集函数,不能使用窗口函数。生成表达式调用的函数只能是不可变(IMMUTABLE)函数。 - > - >- 不能为生成列指定默认值。 - > - >- 生成列不能作为分区键的一部分。 - > - >- 生成列不能和ON UPDATE约束字句的CASCADE,SET NULL,SET DEFAULT动作同时指定。生成列不能和ON DELETE约束字句的SET NULL、SET DEFAULT动作同时指定。 - > - >- 修改和删除生成列的方法和普通列相同。删除生成列依赖的普通列,生成列被自动删除。不能改变生成列所依赖的列的类型。 - > - >- 生成列不能被直接写入。在INSERT或UPDATE命令中, 不能为生成列指定值, 但是可以指定关键字DEFAULT。 - > - >- 生成列的权限控制和普通列一样。 - > - >- 列存表、内存表MOT不支持生成列。外表中仅postgres\_fdw支持生成列。 - -- **UNIQUE index\_parameters** - - **UNIQUE \( column\_name \[, ... \] \) index\_parameters** - - UNIQUE约束表示表里的一个字段或多个字段的组合必须在全表范围内唯一。 - - 对于唯一约束,NULL被认为是互不相等的。 - -- **PRIMARY KEY index\_parameters** - - **PRIMARY KEY \( column\_name \[, ... \] \) index\_parameters** - - 主键约束声明表中的一个或者多个字段只能包含唯一的非NULL值。 - - 一个表只能声明一个主键。 - -- **DEFERRABLE | NOT DEFERRABLE** - - 这两个关键字设置该约束是否可推迟。一个不可推迟的约束将在每条命令之后马上检查。可推迟约束可以推迟到事务结尾使用SET CONSTRAINTS命令检查。缺省是NOT DEFERRABLE。目前,UNIQUE约束、主键约束、外键约束可以接受这个子句。所有其他约束类型都是不可推迟的。 - -- **INITIALLY IMMEDIATE | INITIALLY DEFERRED** - - 如果约束是可推迟的,则这个子句声明检查约束的缺省时间。 - - - 如果约束是INITIALLY IMMEDIATE(缺省),则在每条语句执行之后就立即检查它; - - 如果约束是INITIALLY DEFERRED ,则只有在事务结尾才检查它。 - - 约束检查的时间可以用SET CONSTRAINTS命令修改。 - -- **USING INDEX TABLESPACE tablespace\_name** - - 为UNIQUE或PRIMARY KEY约束相关的索引声明一个表空间。如果没有提供这个子句,这个索引将在default\_tablespace中创建,如果default\_tablespace为空,将使用数据库的缺省表空间。 - - -## 示例 - -- 示例1:创建范围分区表tpcds.web\_returns\_p1,含有8个分区,分区键为integer类型。 分区的范围分别为:wr\_returned\_date\_sk< 2450815、2450815<= wr\_returned\_date\_sk< 2451179、2451179<=wr\_returned\_date\_sk< 2451544、2451544 <= wr\_returned\_date\_sk< 2451910、2451910 <= wr\_returned\_date\_sk< 2452275、2452275 <= wr\_returned\_date\_sk< 2452640、2452640 <= wr\_returned\_date\_sk< 2453005、wr\_returned\_date\_sk\>=2453005。 - - ``` - --创建表tpcds.web_returns。 - openGauss=# CREATE TABLE tpcds.web_returns - ( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) - ); - --创建分区表tpcds.web_returns_p1。 - openGauss=# CREATE TABLE tpcds.web_returns_p1 - ( - WR_RETURNED_DATE_SK INTEGER , - WR_RETURNED_TIME_SK INTEGER , - WR_ITEM_SK INTEGER NOT NULL, - WR_REFUNDED_CUSTOMER_SK INTEGER , - WR_REFUNDED_CDEMO_SK INTEGER , - WR_REFUNDED_HDEMO_SK INTEGER , - WR_REFUNDED_ADDR_SK INTEGER , - WR_RETURNING_CUSTOMER_SK INTEGER , - WR_RETURNING_CDEMO_SK INTEGER , - WR_RETURNING_HDEMO_SK INTEGER , - WR_RETURNING_ADDR_SK INTEGER , - WR_WEB_PAGE_SK INTEGER , - WR_REASON_SK INTEGER , - WR_ORDER_NUMBER BIGINT NOT NULL, - WR_RETURN_QUANTITY INTEGER , - WR_RETURN_AMT DECIMAL(7,2) , - WR_RETURN_TAX DECIMAL(7,2) , - WR_RETURN_AMT_INC_TAX DECIMAL(7,2) , - WR_FEE DECIMAL(7,2) , - WR_RETURN_SHIP_COST DECIMAL(7,2) , - WR_REFUNDED_CASH DECIMAL(7,2) , - WR_REVERSED_CHARGE DECIMAL(7,2) , - WR_ACCOUNT_CREDIT DECIMAL(7,2) , - WR_NET_LOSS DECIMAL(7,2) - ) - WITH (ORIENTATION = COLUMN,COMPRESSION=MIDDLE) - PARTITION BY RANGE(WR_RETURNED_DATE_SK) - ( - PARTITION P1 VALUES LESS THAN(2450815), - PARTITION P2 VALUES LESS THAN(2451179), - PARTITION P3 VALUES LESS THAN(2451544), - PARTITION P4 VALUES LESS THAN(2451910), - PARTITION P5 VALUES LESS THAN(2452275), - PARTITION P6 VALUES LESS THAN(2452640), - PARTITION P7 VALUES LESS THAN(2453005), - PARTITION P8 VALUES LESS THAN(MAXVALUE) - ); - - --从示例数据表导入数据。 - openGauss=# INSERT INTO tpcds.web_returns_p1 SELECT * FROM tpcds.web_returns; - - --删除分区P8。 - openGauss=# ALTER TABLE tpcds.web_returns_p1 DROP PARTITION P8; - - --增加分区WR_RETURNED_DATE_SK介于2453005和2453105之间。 - openGauss=# ALTER TABLE tpcds.web_returns_p1 ADD PARTITION P8 VALUES LESS THAN (2453105); - - --增加分区WR_RETURNED_DATE_SK介于2453105和MAXVALUE之间。 - openGauss=# ALTER TABLE tpcds.web_returns_p1 ADD PARTITION P9 VALUES LESS THAN (MAXVALUE); - - --删除分区P8。 - openGauss=# ALTER TABLE tpcds.web_returns_p1 DROP PARTITION FOR (2453005); - - --分区P7重命名为P10。 - openGauss=# ALTER TABLE tpcds.web_returns_p1 RENAME PARTITION P7 TO P10; - - --分区P6重命名为P11。 - openGauss=# ALTER TABLE tpcds.web_returns_p1 RENAME PARTITION FOR (2452639) TO P11; - - --查询分区P10的行数。 - openGauss=# SELECT count(*) FROM tpcds.web_returns_p1 PARTITION (P10); - count - -------- - 0 - (1 row) - - --查询分区P1的行数。 - openGauss=# SELECT COUNT(*) FROM tpcds.web_returns_p1 PARTITION FOR (2450815); - count - -------- - 0 - (1 row) - ``` - -- 示例2:创建范围分区表tpcds.web\_returns\_p2,含有8个分区,分区键类型为integer类型,其中第8个分区上边界为MAXVALUE。 - - 八个分区的范围分别为: wr\_returned\_date\_sk< 2450815、2450815<= wr\_returned\_date\_sk< 2451179、2451179<=wr\_returned\_date\_sk< 2451544、2451544 <= wr\_returned\_date\_sk< 2451910、2451910 <= wr\_returned\_date\_sk< 2452275、2452275 <= wr\_returned\_date\_sk< 2452640、2452640 <= wr\_returned\_date\_sk< 2453005、wr\_returned\_date\_sk\>=2453005。 - - 分区表tpcds.web\_returns\_p2的表空间为example1;分区P1到P7没有声明表空间,使用采用分区表tpcds.web\_returns\_p2的表空间example1;指定分区P8的表空间为example2。 - - 假定数据库节点的数据目录/pg\_location/mount1/path1,数据库节点的数据目录/pg\_location/mount2/path2,数据库节点的数据目录/pg\_location/mount3/path3,数据库节点的数据目录/pg\_location/mount4/path4是dwsadmin用户拥有读写权限的空目录。 - - ``` - openGauss=# CREATE TABLESPACE example1 RELATIVE LOCATION 'tablespace1/tablespace_1'; - openGauss=# CREATE TABLESPACE example2 RELATIVE LOCATION 'tablespace2/tablespace_2'; - openGauss=# CREATE TABLESPACE example3 RELATIVE LOCATION 'tablespace3/tablespace_3'; - openGauss=# CREATE TABLESPACE example4 RELATIVE LOCATION 'tablespace4/tablespace_4'; - - openGauss=# CREATE TABLE tpcds.web_returns_p2 - ( - WR_RETURNED_DATE_SK INTEGER , - WR_RETURNED_TIME_SK INTEGER , - WR_ITEM_SK INTEGER NOT NULL, - WR_REFUNDED_CUSTOMER_SK INTEGER , - WR_REFUNDED_CDEMO_SK INTEGER , - WR_REFUNDED_HDEMO_SK INTEGER , - WR_REFUNDED_ADDR_SK INTEGER , - WR_RETURNING_CUSTOMER_SK INTEGER , - WR_RETURNING_CDEMO_SK INTEGER , - WR_RETURNING_HDEMO_SK INTEGER , - WR_RETURNING_ADDR_SK INTEGER , - WR_WEB_PAGE_SK INTEGER , - WR_REASON_SK INTEGER , - WR_ORDER_NUMBER BIGINT NOT NULL, - WR_RETURN_QUANTITY INTEGER , - WR_RETURN_AMT DECIMAL(7,2) , - WR_RETURN_TAX DECIMAL(7,2) , - WR_RETURN_AMT_INC_TAX DECIMAL(7,2) , - WR_FEE DECIMAL(7,2) , - WR_RETURN_SHIP_COST DECIMAL(7,2) , - WR_REFUNDED_CASH DECIMAL(7,2) , - WR_REVERSED_CHARGE DECIMAL(7,2) , - WR_ACCOUNT_CREDIT DECIMAL(7,2) , - WR_NET_LOSS DECIMAL(7,2) - ) - TABLESPACE example1 - PARTITION BY RANGE(WR_RETURNED_DATE_SK) - ( - PARTITION P1 VALUES LESS THAN(2450815), - PARTITION P2 VALUES LESS THAN(2451179), - PARTITION P3 VALUES LESS THAN(2451544), - PARTITION P4 VALUES LESS THAN(2451910), - PARTITION P5 VALUES LESS THAN(2452275), - PARTITION P6 VALUES LESS THAN(2452640), - PARTITION P7 VALUES LESS THAN(2453005), - PARTITION P8 VALUES LESS THAN(MAXVALUE) TABLESPACE example2 - ) - ENABLE ROW MOVEMENT; - - --以like方式创建一个分区表。 - openGauss=# CREATE TABLE tpcds.web_returns_p3 (LIKE tpcds.web_returns_p2 INCLUDING PARTITION); - - --修改分区P1的表空间为example2。 - openGauss=# ALTER TABLE tpcds.web_returns_p2 MOVE PARTITION P1 TABLESPACE example2; - - --修改分区P2的表空间为example3。 - openGauss=# ALTER TABLE tpcds.web_returns_p2 MOVE PARTITION P2 TABLESPACE example3; - - --以2453010为分割点切分P8。 - openGauss=# ALTER TABLE tpcds.web_returns_p2 SPLIT PARTITION P8 AT (2453010) INTO - ( - PARTITION P9, - PARTITION P10 - ); - - --将P6,P7合并为一个分区。 - openGauss=# ALTER TABLE tpcds.web_returns_p2 MERGE PARTITIONS P6, P7 INTO PARTITION P8; - - --修改分区表迁移属性。 - openGauss=# ALTER TABLE tpcds.web_returns_p2 DISABLE ROW MOVEMENT; - --删除表和表空间。 - openGauss=# DROP TABLE tpcds.web_returns_p1; - openGauss=# DROP TABLE tpcds.web_returns_p2; - openGauss=# DROP TABLE tpcds.web_returns_p3; - openGauss=# DROP TABLESPACE example1; - openGauss=# DROP TABLESPACE example2; - openGauss=# DROP TABLESPACE example3; - openGauss=# DROP TABLESPACE example4; - ``` - - -- 示例3:START END语法创建、修改Range分区表。 - - 假定/home/omm/startend\_tbs1、/home/omm/startend\_tbs2、/home/omm/startend\_tbs3、/home/omm/startend\_tbs4是omm用户拥有读写权限的空目录。 - - ``` - -- 创建表空间 - openGauss=# CREATE TABLESPACE startend_tbs1 LOCATION '/home/omm/startend_tbs1'; - openGauss=# CREATE TABLESPACE startend_tbs2 LOCATION '/home/omm/startend_tbs2'; - openGauss=# CREATE TABLESPACE startend_tbs3 LOCATION '/home/omm/startend_tbs3'; - openGauss=# CREATE TABLESPACE startend_tbs4 LOCATION '/home/omm/startend_tbs4'; - - -- 创建临时schema - openGauss=# CREATE SCHEMA tpcds; - openGauss=# SET CURRENT_SCHEMA TO tpcds; - - -- 创建分区表,分区键是integer类型 - openGauss=# CREATE TABLE tpcds.startend_pt (c1 INT, c2 INT) - TABLESPACE startend_tbs1 - PARTITION BY RANGE (c2) ( - PARTITION p1 START(1) END(1000) EVERY(200) TABLESPACE startend_tbs2, - PARTITION p2 END(2000), - PARTITION p3 START(2000) END(2500) TABLESPACE startend_tbs3, - PARTITION p4 START(2500), - PARTITION p5 START(3000) END(5000) EVERY(1000) TABLESPACE startend_tbs4 - ) - ENABLE ROW MOVEMENT; - - -- 查看分区表信息 - openGauss=# SELECT relname, boundaries, spcname FROM pg_partition p JOIN pg_tablespace t ON p.reltablespace=t.oid and p.parentid='tpcds.startend_pt'::regclass ORDER BY 1; - relname | boundaries | spcname - -------------+------------+--------------- - p1_0 | {1} | startend_tbs2 - p1_1 | {201} | startend_tbs2 - p1_2 | {401} | startend_tbs2 - p1_3 | {601} | startend_tbs2 - p1_4 | {801} | startend_tbs2 - p1_5 | {1000} | startend_tbs2 - p2 | {2000} | startend_tbs1 - p3 | {2500} | startend_tbs3 - p4 | {3000} | startend_tbs1 - p5_1 | {4000} | startend_tbs4 - p5_2 | {5000} | startend_tbs4 - startend_pt | | startend_tbs1 - (12 rows) - - -- 导入数据,查看分区数据量 - openGauss=# INSERT INTO tpcds.startend_pt VALUES (GENERATE_SERIES(0, 4999), GENERATE_SERIES(0, 4999)); - openGauss=# SELECT COUNT(*) FROM tpcds.startend_pt PARTITION FOR (0); - count - ------- - 1 - (1 row) - - openGauss=# SELECT COUNT(*) FROM tpcds.startend_pt PARTITION (p3); - count - ------- - 500 - (1 row) - - -- 增加分区: [5000, 5300), [5300, 5600), [5600, 5900), [5900, 6000) - openGauss=# ALTER TABLE tpcds.startend_pt ADD PARTITION p6 START(5000) END(6000) EVERY(300) TABLESPACE startend_tbs4; - - -- 增加MAXVALUE分区: p7 - openGauss=# ALTER TABLE tpcds.startend_pt ADD PARTITION p7 END(MAXVALUE); - - -- 重命名分区p7为p8 - openGauss=# ALTER TABLE tpcds.startend_pt RENAME PARTITION p7 TO p8; - - -- 删除分区p8 - openGauss=# ALTER TABLE tpcds.startend_pt DROP PARTITION p8; - - -- 重命名5950所在的分区为:p71 - openGauss=# ALTER TABLE tpcds.startend_pt RENAME PARTITION FOR(5950) TO p71; - - -- 分裂4500所在的分区[4000, 5000) - openGauss=# ALTER TABLE tpcds.startend_pt SPLIT PARTITION FOR(4500) INTO(PARTITION q1 START(4000) END(5000) EVERY(250) TABLESPACE startend_tbs3); - - -- 修改分区p2的表空间为startend_tbs4 - openGauss=# ALTER TABLE tpcds.startend_pt MOVE PARTITION p2 TABLESPACE startend_tbs4; - - -- 查看分区情形 - openGauss=# SELECT relname, boundaries, spcname FROM pg_partition p JOIN pg_tablespace t ON p.reltablespace=t.oid and p.parentid='tpcds.startend_pt'::regclass ORDER BY 1; - relname | boundaries | spcname - -------------+------------+--------------- - p1_0 | {1} | startend_tbs2 - p1_1 | {201} | startend_tbs2 - p1_2 | {401} | startend_tbs2 - p1_3 | {601} | startend_tbs2 - p1_4 | {801} | startend_tbs2 - p1_5 | {1000} | startend_tbs2 - p2 | {2000} | startend_tbs4 - p3 | {2500} | startend_tbs3 - p4 | {3000} | startend_tbs1 - p5_1 | {4000} | startend_tbs4 - p6_1 | {5300} | startend_tbs4 - p6_2 | {5600} | startend_tbs4 - p6_3 | {5900} | startend_tbs4 - p71 | {6000} | startend_tbs4 - q1_1 | {4250} | startend_tbs3 - q1_2 | {4500} | startend_tbs3 - q1_3 | {4750} | startend_tbs3 - q1_4 | {5000} | startend_tbs3 - startend_pt | | startend_tbs1 - (19 rows) - - -- 删除表和表空间 - openGauss=# DROP SCHEMA tpcds CASCADE; - openGauss=# DROP TABLESPACE startend_tbs1; - openGauss=# DROP TABLESPACE startend_tbs2; - openGauss=# DROP TABLESPACE startend_tbs3; - openGauss=# DROP TABLESPACE startend_tbs4; - ``` - - -- 示例4:创建间隔分区表sales,初始包含2个分区,分区键为DATE类型。 分区的范围分别为:time\_id < '2019-02-01 00:00:00'、 - - '2019-02-01 00:00:00' <= time\_id < '2019-02-02 00:00:00' 。 - - ``` - --创建表sales - openGauss=# CREATE TABLE sales - (prod_id NUMBER(6), - cust_id NUMBER, - time_id DATE, - channel_id CHAR(1), - promo_id NUMBER(6), - quantity_sold NUMBER(3), - amount_sold NUMBER(10,2) - ) - PARTITION BY RANGE (time_id) - INTERVAL('1 day') - ( PARTITION p1 VALUES LESS THAN ('2019-02-01 00:00:00'), - PARTITION p2 VALUES LESS THAN ('2019-02-02 00:00:00') - ); - - -- 数据插入分区p1 - openGauss=# INSERT INTO sales VALUES(1, 12, '2019-01-10 00:00:00', 'a', 1, 1, 1); - - -- 数据插入分区p2 - openGauss=# INSERT INTO sales VALUES(1, 12, '2019-02-01 00:00:00', 'a', 1, 1, 1); - - -- 查看分区信息 - openGauss=# SELECT t1.relname, partstrategy, boundaries FROM pg_partition t1, pg_class t2 WHERE t1.parentid = t2.oid AND t2.relname = 'sales' AND t1.parttype = 'p'; - relname | partstrategy | boundaries - ---------+--------------+------------------------- - p1 | r | {"2019-02-01 00:00:00"} - p2 | r | {"2019-02-02 00:00:00"} - (2 rows) - - -- 插入数据没有匹配的分区,新创建一个分区,并将数据插入该分区 - -- 新分区的范围为 '2019-02-05 00:00:00' <= time_id < '2019-02-06 00:00:00' - openGauss=# INSERT INTO sales VALUES(1, 12, '2019-02-05 00:00:00', 'a', 1, 1, 1); - - -- 插入数据没有匹配的分区,新创建一个分区,并将数据插入该分区 - -- 新分区的范围为 '2019-02-03 00:00:00' <= time_id < '2019-02-04 00:00:00' - openGauss=# INSERT INTO sales VALUES(1, 12, '2019-02-03 00:00:00', 'a', 1, 1, 1); - - -- 查看分区信息 - openGauss=# SELECT t1.relname, partstrategy, boundaries FROM pg_partition t1, pg_class t2 WHERE t1.parentid = t2.oid AND t2.relname = 'sales' AND t1.parttype = 'p'; - relname | partstrategy | boundaries - ---------+--------------+------------------------- - sys_p1 | i | {"2019-02-06 00:00:00"} - sys_p2 | i | {"2019-02-04 00:00:00"} - p1 | r | {"2019-02-01 00:00:00"} - p2 | r | {"2019-02-02 00:00:00"} - (4 rows) - - ``` - - -- 示例5:创建LIST分区表test\_list,初始包含4个分区,分区键为INT类型。4个分区的范围分别为:2000、3000、4000、5000。 - - ``` - --创建表test_list - openGauss=# create table test_list (col1 int, col2 int) - partition by list(col1) - ( - partition p1 values (2000), - partition p2 values (3000), - partition p3 values (4000), - partition p4 values (5000) - ); - - -- 数据插入 - openGauss=# INSERT INTO test_list VALUES(2000, 2000); - INSERT 0 1 - openGauss=# INSERT INTO test_list VALUES(3000, 3000); - INSERT 0 1 - - -- 查看分区信息 - openGauss=# SELECT t1.relname, partstrategy, boundaries FROM pg_partition t1, pg_class t2 WHERE t1.parentid = t2.oid AND t2.relname = 'test_list' AND t1.parttype = 'p'; - relname | partstrategy | boundaries - ---------+--------------+------------ - p1 | l | {2000} - p2 | l | {3000} - p3 | l | {4000} - p4 | l | {5000} - (4 rows) - - -- 插入数据没有匹配到分区,报错处理 - openGauss=# INSERT INTO test_list VALUES(6000, 6000); - ERROR: inserted partition key does not map to any table partition - - -- 添加分区 - openGauss=# alter table test_list add partition p5 values (6000); - ALTER TABLE - openGauss=# SELECT t1.relname, partstrategy, boundaries FROM pg_partition t1, pg_class t2 WHERE t1.parentid = t2.oid AND t2.relname = 'test_list' AND t1.parttype = 'p'; - relname | partstrategy | boundaries - ---------+--------------+------------ - p5 | l | {6000} - p4 | l | {5000} - p1 | l | {2000} - p2 | l | {3000} - p3 | l | {4000} - (5 rows) - openGauss=# INSERT INTO test_list VALUES(6000, 6000); - INSERT 0 1 - - -- 分区表和普通表交换数据 - openGauss=# create table t1 (col1 int, col2 int); - CREATE TABLE - openGauss=# select * from test_list partition (p1); - col1 | col2 - ------+------ - 2000 | 2000 - (1 row) - openGauss=# alter table test_list exchange partition (p1) with table t1; - ALTER TABLE - openGauss=# select * from test_list partition (p1); - col1 | col2 - ------+------ - (0 rows) - openGauss=# select * from t1; - col1 | col2 - ------+------ - 2000 | 2000 - (1 row) - - -- truncate分区 - openGauss=# select * from test_list partition (p2); - col1 | col2 - ------+------ - 3000 | 3000 - (1 row) - openGauss=# alter table test_list truncate partition p2; - ALTER TABLE - openGauss=# select * from test_list partition (p2); - col1 | col2 - ------+------ - (0 rows) - - -- 删除分区 - openGauss=# alter table test_list drop partition p5; - ALTER TABLE - openGauss=# SELECT t1.relname, partstrategy, boundaries FROM pg_partition t1, pg_class t2 WHERE t1.parentid = t2.oid AND t2.relname = 'test_list' AND t1.parttype = 'p'; - relname | partstrategy | boundaries - ---------+--------------+------------ - p4 | l | {5000} - p1 | l | {2000} - p2 | l | {3000} - p3 | l | {4000} - (4 rows) - - openGauss=# INSERT INTO test_list VALUES(6000, 6000); - ERROR: inserted partition key does not map to any table partition - - -- 删除分区表 - openGauss=# drop table test_list; - ``` - - -- 示例6:创建HASH分区表test\_hash,初始包含2个分区,分区键为INT类型。 - - ``` - --创建表test_hash - openGauss=# create table test_hash (col1 int, col2 int) - partition by hash(col1) - ( - partition p1, - partition p2 - ); - - -- 数据插入 - openGauss=# INSERT INTO test_hash VALUES(1, 1); - INSERT 0 1 - openGauss=# INSERT INTO test_hash VALUES(2, 2); - INSERT 0 1 - openGauss=# INSERT INTO test_hash VALUES(3, 3); - INSERT 0 1 - openGauss=# INSERT INTO test_hash VALUES(4, 4); - INSERT 0 1 - - -- 查看分区信息 - openGauss=# SELECT t1.relname, partstrategy, boundaries FROM pg_partition t1, pg_class t2 WHERE t1.parentid = t2.oid AND t2.relname = 'test_hash' AND t1.parttype = 'p'; - relname | partstrategy | boundaries - ---------+--------------+------------ - p1 | h | {0} - p2 | h | {1} - (2 rows) - - -- 查看数据 - openGauss=# select * from test_hash partition (p1); - col1 | col2 - ------+------ - 3 | 3 - 4 | 4 - (2 rows) - - openGauss=# select * from test_hash partition (p2); - col1 | col2 - ------+------ - 1 | 1 - 2 | 2 - (2 rows) - - -- 分区表和普通表交换数据 - openGauss=# create table t1 (col1 int, col2 int); - CREATE TABLE - openGauss=# alter table test_hash exchange partition (p1) with table t1; - ALTER TABLE - openGauss=# select * from test_hash partition (p1); - col1 | col2 - ------+------ - (0 rows) - openGauss=# select * from t1; - col1 | col2 - ------+------ - 3 | 3 - 4 | 4 - (2 rows) - - -- truncate分区 - openGauss=# alter table test_hash truncate partition p2; - ALTER TABLE - openGauss=# select * from test_hash partition (p2); - col1 | col2 - ------+------ - (0 rows) - - -- 删除分区表 - openGauss=# drop table test_hash; - ``` - - -## 相关链接 - -[ALTER TABLE PARTITION](ALTER-TABLE-PARTITION.md),[DROP TABLE](DROP-TABLE.md) - +# CREATE TABLE PARTITION + +## 功能描述 + +创建分区表。分区表是把逻辑上的一张表根据某种方案分成几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。 + +常见的分区方案有范围分区(Range Partitioning)、间隔分区(Interval Partitioning)、哈希分区(Hash Partitioning)、列表分区(List Partitioning)、数值分区(Value Partition)等。目前行存表支持范围分区、间隔分区、哈希分区、列表分区,列存表仅支持范围分区。 + +范围分区是根据表的一列或者多列,将要插入表的记录分为若干个范围,这些范围在不同的分区里没有重叠。为每个范围创建一个分区,用来存储相应的数据。 + +范围分区的分区策略是指记录插入分区的方式。目前范围分区仅支持范围分区策略。 + +范围分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则给出报错和提示信息。这是最常用的分区策略。 + +间隔分区是一种特殊的范围分区,相比范围分区,新增间隔值定义,当插入记录找不到匹配的分区时,可以根据间隔值自动创建分区。 + +间隔分区只支持基于表的一列分区,并且该列只支持TIMESTAMP\[\(p\)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[\(p\)\] \[WITH TIME ZONE\]、DATE数据类型。 + +间隔分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则根据分区键值和表定义信息自动创建一个分区,然后将记录插入新分区中,新创建的分区数据范围等于间隔值。 + +哈希分区是根据表的一列,为每个分区指定模数和余数,将要插入表的记录划分到对应的分区中,每个分区所持有的行都需要满足条件:分区键的值除以为其指定的模数将产生为其指定的余数。 + +哈希分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则返回报错和提示信息。 + +列表分区是根据表的一列,将要插入表的记录通过每一个分区中出现的键值划分到对应的分区中,这些键值在不同的分区里没有重叠。为每组键值创建一个分区,用来存储相应的数据。 + +列表分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则给出报错和提示信息。 + +分区可以提供若干好处: + +- 某些类型的查询性能可以得到极大提升。特别是表中访问率较高的行位于一个单独分区或少数几个分区上的情况下。分区可以减少数据的搜索空间,提高数据访问效率。 +- 当查询或更新一个分区的大部分记录时,连续扫描那个分区而不是访问整个表可以获得巨大的性能提升。 +- 如果需要大量加载或者删除的记录位于单独的分区上,则可以通过直接读取或删除那个分区以获得巨大的性能提升,同时还可以避免由于大量 DELETE 导致的 VACUUM 超载(仅范围分区)。 + +## 注意事项 + +- 唯一约束和主键约束的约束键包含所有分区键将为约束创建 LOCAL 索引,否则创建 GLOBAL 索引。 +- 目前哈希分区和列表分区仅支持单列构建分区键,暂不支持多列构建分区键。 +- 只需要有间隔分区表的 INSERT 权限,往该表 INSERT 数据时就可以自动创建分区。 + +## 语法格式 + +``` +CREATE TABLE [ IF NOT EXISTS ] partition_table_name +( [ + { column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ] + | table_constraint + | LIKE source_table [ like_option [...] ] }[, ... ] +] ) + [ WITH ( {storage_parameter = value} [, ... ] ) ] + [ COMPRESS | NOCOMPRESS ] + [ TABLESPACE tablespace_name ] + PARTITION BY { + {RANGE (partition_key) [ INTERVAL ('interval_expr') [ STORE IN (tablespace_name [, ... ] ) ] ] ( partition_less_than_item [, ... ] )} | + {RANGE (partition_key) [ INTERVAL ('interval_expr') [ STORE IN (tablespace_name [, ... ] ) ] ] ( partition_start_end_item [, ... ] )} | + {LIST | HASH (partition_key) (PARTITION partition_name [VALUES (list_values_clause)] opt_table_space )} + } [ { ENABLE | DISABLE } ROW MOVEMENT ]; +``` + +- 列约束column\_constraint: + + ``` + [ CONSTRAINT constraint_name ] + { NOT NULL | + NULL | + CHECK ( expression ) | + DEFAULT default_e xpr | + GENERATED ALWAYS AS ( generation_expr ) STORED | + UNIQUE index_parameters | + PRIMARY KEY index_parameters | + REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] + [ ON DELETE action ] [ ON UPDATE action ] } + [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] + ``` + +- 表约束table\_constraint: + + ``` + [ CONSTRAINT constraint_name ] + { CHECK ( expression ) | + UNIQUE ( column_name [, ... ] ) index_parameters | + PRIMARY KEY ( column_name [, ... ] ) index_parameters | + FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] + [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } + [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] + ``` + + +- like选项like\_option: + + ``` + { INCLUDING | EXCLUDING } { DEFAULTS | GENERATED | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | RELOPTIONS| ALL } + ``` + + +- 索引存储参数index\_parameters: + + ``` + [ WITH ( {storage_parameter = value} [, ... ] ) ] + [ USING INDEX TABLESPACE tablespace_name ] + ``` + + +- partition\_less\_than\_item: + + ``` + PARTITION partition_name VALUES LESS THAN ( { partition_value | MAXVALUE } ) [TABLESPACE tablespace_name] + ``` + +- partition\_start\_end\_item: + + ``` + PARTITION partition_name { + {START(partition_value) END (partition_value) EVERY (interval_value)} | + {START(partition_value) END ({partition_value | MAXVALUE})} | + {START(partition_value)} | + {END({partition_value | MAXVALUE})} + } [TABLESPACE tablespace_name] + ``` + + +## 参数说明 + +- **IF NOT EXISTS** + + 如果已经存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表关系已存在。 + +- **partition\_table\_name** + + 分区表的名称。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **column\_name** + + 新表中要创建的字段名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **data\_type** + + 字段的数据类型。 + +- **COLLATE collation** + +COLLATE 子句指定列的排序规则(该列必须是可排列的数据类型)。如果没有指定,则使用默认的排序规则。排序规则可以使用“select \* from pg\_collation;”命令从pg\_collation系统表中查询,默认的排序规则为查询结果中以 default 开始的行。 + +- **CONSTRAINT constraint\_name** + + 列约束或表约束的名称。可选的约束子句用于声明约束,新行或者更新的行必须满足这些约束才能成功插入或更新。 + + 定义约束有两种方法: + + - 列约束:作为一个列定义的一部分,仅影响该列。 + - 表约束:不和某个列绑在一起,可以作用于多个列。 + +- **LIKE source\_table \[ like\_option ... \]** + +LIKE 子句声明一个表,新表自动从这个表里面继承所有字段名及其数据类型和非空约束。 + + 和 INHERITS 不同,新表与原来的表之间在创建动作完毕之后是完全无关的。在源表做的任何修改都不会传播到新表中,并且也不可能在扫描源表的时候包含新表的数据。 + + - 字段缺省表达式只有在声明了 INCLUDING DEFAULTS 之后才会包含进来。缺省是不包含缺省表达式的,即新表中所有字段的缺省值都是 NULL 。 + - 如果指定了 INCLUDING GENERATED ,则源表列的生成表达式会复制到新表中。默认不复制生成表达式。 + - 非空约束将总是复制到新表中, CHECK 约束则仅在指定了 INCLUDING CONSTRAINTS 的时候才复制,而其他类型的约束则永远也不会被复制。此规则同时适用于表约束和列约束。 + - 和 INHERITS 不同,被复制的列和约束并不使用相同的名称进行融合。如果明确的指定了相同的名称或者在另外一个 LIKE 子句中,将会报错。 + - 如果指定了 INCLUDING INDEXES ,则源表上的索引也将在新表上创建,默认不建立索引。 + - 如果指定了 INCLUDING STORAGE ,则拷贝列的 STORAGE 设置也将被拷贝,默认情况下不包含 STORAGE 设置。 + - 如果指定了 INCLUDING COMMENTS ,则源表列、约束和索引的注释也会被拷贝过来。默认情况下,不拷贝源表的注释。 + - 如果指定了 INCLUDING RELOPTIONS ,则源表的存储参数(即源表的 WITH 子句)也将拷贝至新表。默认情况下,不拷贝源表的存储参数。 + - INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION和 INCLUDING RELOPTIONS 的内容。 + +- **WITH \( storage\_parameter \[= value\] \[, ... \] \)** + + 这个子句为表或索引指定一个可选的存储参数。参数的详细描述如下所示: + + - FILLFACTOR + + 一个表的填充因子(fillfactor)是一个介于 10 和 100 之间的百分数。100(完全填充)是默认值。如果指定了较小的填充因子, INSERT 操作仅按照填充因子指定的百分率填充表页。每个页上的剩余空间将用于在该页上更新行,这就使得 UPDATE 有机会在同一页上放置同一条记录的新版本,这比把新版本放置在其他页上更有效。对于一个从不更新的表将填充因子设为 100 是最佳选择,但是对于频繁更新的表,选择较小的填充因子则更加合适。该参数对于列存表没有意义。 + + 取值范围:10\~100 + + - ORIENTATION + + 决定了表的数据的存储方式。 + + 取值范围: + + - COLUMN:表的数据将以列式存储。 + - ROW(缺省值):表的数据将以行式存储。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >orientation不支持修改。 + + + - COMPRESSION + - 列存表的有效值为LOW/MIDDLE/HIGH/YES/NO,压缩级别依次升高,默认值为 LOW 。 + - 行存表不支持压缩。 + + - MAX\_BATCHROW + + 指定了在数据加载过程中一个存储单元可以容纳记录的最大数目。该参数只对列存表有效。 + + 取值范围:10000\~60000,默认 60000 。 + + - PARTIAL\_CLUSTER\_ROWS + + 指定了在数据加载过程中进行将局部聚簇存储的记录数目。该参数只对列存表有效。 + + 取值范围:大于等于MAX\_BATCHROW,建议取值为MAX\_BATCHROW的整数倍数。 + + - DELTAROW\_THRESHOLD + + 预留参数。该参数只对列存表有效。 + + 取值范围:0~9999 + + +- **COMPRESS / NOCOMPRESS** + + 创建一个新表时,需要在创建表语句中指定关键字 COMPRESS ,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字 NOCOMPRESS 则不对表进行压缩。行存表不支持压缩。 + + 缺省值为 NOCOMPRESS ,即不对元组数据进行压缩。 + +- **TABLESPACE tablespace\_name** + + 指定新表将要在tablespace\_name表空间内创建。如果没有声明,将使用默认表空间。 + +- **PARTITION BY RANGE\(partition\_key\)** + + 创建范围分区。partition\_key为分区键的名称。 + + (1)对于从句是 VALUES LESS THAN 的语法格式: + + >![](public_sys-resources/icon-notice.gif) **须知:** + >对于从句是 VALUE LESS THAN 的语法格式,范围分区策略的分区键最多支持 4 列。 + + 该情形下,分区键支持的数据类型为:SMALLINT、INTEGER、BIGINT、DECIMAL、NUMERIC、REAL、DOUBLE PRECISION、CHARACTER VARYING\(n\)、VARCHAR\(n\)、CHARACTER\(n\)、CHAR\(n\)、CHARACTER、CHAR、TEXT、NVARCHAR2、NAME、TIMESTAMP\[\(p\)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[\(p\)\] \[WITH TIME ZONE\]、DATE。 + + (2)对于从句是 START END 的语法格式: + + >![](public_sys-resources/icon-notice.gif) **须知:** + >对于从句是 START END 的语法格式,范围分区策略的分区键仅支持 1 列。 + + 该情形下,分区键支持的数据类型为:SMALLINT、INTEGER、BIGINT、DECIMAL、NUMERIC、REAL、DOUBLE PRECISION、TIMESTAMP\[\(p\)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[\(p\)\] \[WITH TIME ZONE\]、DATE。 + + (3)对于指定了 INTERVAL 子句的语法格式: + + >![](public_sys-resources/icon-notice.gif) **须知:** + >对于指定了 INTERVAL 子句的语法格式,范围分区策略的分区键仅支持 1 列。 + + 该情形下,分区键支持的数据类型为:TIMESTAMP\[\(p\)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[\(p\)\] \[WITH TIME ZONE\]、DATE。 + +- **PARTITION partition\_name VALUES LESS THAN \( \{ partition\_value | MAXVALUE \} \)** + + 指定各分区的信息。partition\_name为范围分区的名称。partition\_value为范围分区的上边界,取值依赖于partition\_key的类型。 MAXVALUE 表示分区的上边界,它通常用于设置最后一个范围分区的上边界。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- 每个分区都需要指定一个上边界。 + + >- 分区上边界的类型应当和分区键的类型一致。 + + >- 分区列表是按照分区上边界升序排列的,值较小的分区位于值较大的分区之前。 + +- **PARTITION partition\_name \{START \(partition\_value\) END \(partition\_value\) EVERY \(interval\_value\)\} | **\{START \(partition\_value\) END \(partition\_value|MAXVALUE\)\} | \{START\(partition\_value\)\} | **\{END \(partition\_value | MAXVALUE\)**\} + + 指定各分区的信息,各参数意义如下: + + - partition\_name:范围分区的名称或名称前缀,除以下情形外(假定其中的partition\_name是p1),均为分区的名称。 + - 若该定义是START+END+EVERY从句,则语义上定义的分区的名称依次为p1\_1, p1\_2, ...。例如对于定义“PARTITION p1 START\(1\) END\(4\) EVERY\(1\)”,则生成的分区是:\[1, 2\), \[2, 3\) 和 \[3, 4\),名称依次为p1\_1, p1\_2和p1\_3,即此处的 p1 是名称前缀。 + - 若该定义是第一个分区定义,且该定义有 START 值,则范围(MINVALUE, START)将自动作为第一个实际分区,其名称为p1\_0,然后该定义语义描述的分区名称依次为p1\_1, p1\_2, ...。例如对于完整定义“PARTITION p1 START\(1\), PARTITION p2 START\(2\)”,则生成的分区是:\(MINVALUE, 1\), \[1, 2\) 和 \[2, MAXVALUE\),其名称依次为p1\_0, p1\_1和 p2 ,即此处 p1 是名称前缀, p2 是分区名称。这里 MINVALUE 表示最小值。 + + - partition\_value:范围分区的端点值(起始或终点),取值依赖于partition\_key的类型,不可是 MAXVALUE 。 + - interval\_value:对\[START,END\) 表示的范围进行切分,interval\_value是指定切分后每个分区的宽度,不可是MAXVALUE;如果(END-START)值不能整除以 EVERY 值,则仅最后一个分区的宽度小于 EVERY 值。 + - MAXVALUE:表示最大值,它通常用于设置最后一个范围分区的上边界。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >1. 在创建分区表若第一个分区定义含 START 值,则范围(MINVALUE,START)将自动作为实际的第一个分区。 + >2. START END语法需要遵循以下限制: + > - 每个partition\_start\_end\_item中的 START 值(如果有的话,下同)必须小于其 END 值。 + + > - 相邻的两个partition\_start\_end\_item,第一个的 END 值必须等于第二个的 START 值; + + > - 每个partition\_start\_end\_item中的 EVERY 值必须是正向递增的,且必须小于(END-START)值; + + > - 每个分区包含起始值,不包含终点值,即形如:\[起始值,终点值\),起始值是 MINVALUE 时则不包含; + + > - 一个partition\_start\_end\_item创建的每个分区所属的 TABLESPACE 一样; + + > - partition\_name作为分区名称前缀时,其长度不要超过 57 字节,超过时自动截断; + + > - 在创建、修改分区表时请注意分区表的分区总数不可超过最大限制(1048575); + + >3. 在创建分区表时 START END 与 LESS THAN 语法不可混合使用。 + >4. 即使创建分区表时使用 START END 语法,备份(gs\_dump)出的 SQL 语句也是 VALUES LESS THAN 语法格式。 + +- **INTERVAL \('interval\_expr'\) \[ STORE IN \(tablespace\_name \[, ... \] \) \]** + + 间隔分区定义信息。 + + - interval\_expr:自动创建分区的间隔,例如:1 day、1 month。 + + - STORE IN \(tablespace\_name \[, ... \] \):指定存放自动创建分区的表空间列表,如果有指定,则自动创建的分区从表空间列表中循环选择使用,否则使用分区表默认的表空间。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >列存表不支持间隔分区。 + +- **PARTITION BY LIST\(partition\_key\)** + + 创建列表分区。partition\_key为分区键的名称。 + + - 对于partition\_key,列表分区策略的分区键仅支持 1 列。 + - 对于从句是VALUES \(list\_values\_clause\)的语法格式,list\_values\_clause中包含了对应分区存在的键值,推荐每个分区的键值数量不超过 1048575 个。 + + 分区键支持的数据类型为:INT1、INT2、INT4、INT8、NUMERIC、VARCHAR\(n\)、CHAR、BPCHAR、NVARCHAR2、TIMESTAMP\[\(p\)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[\(p\)\] \[WITH TIME ZONE\]、DATE。分区个数不能超过 64 个。 + +- **PARTITION BY HASH\(partition\_key\)** + + 创建哈希分区。partition\_key为分区键的名称。 + + 对于partition\_key,哈希分区策略的分区键仅支持 1 列。 + + 分区键支持的数据类型为:INT1、INT2、INT4、INT8、NUMERIC、VARCHAR\(n\)、CHAR、BPCHAR、TEXT、NVARCHAR2、TIMESTAMP\[\(p\)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[\(p\)\] \[WITH TIME ZONE\]、DATE。分区个数不能超过 1048575 个。 + +- **\{ ENABLE | DISABLE \} ROW MOVEMENT** + + 行迁移开关。 + + 如果进行 UPDATE 操作时,更新了元组在分区键上的值,造成了该元组所在分区发生变化,就会根据该开关给出报错信息,或者进行元组在分区间的转移。 + + 取值范围: + + - ENABLE(缺省值):行迁移开关打开。 + - DISABLE:行迁移开关关闭。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >列表/哈希分区表暂不支持 ROW MOVEMENT 。 + + +- **NOT NULL** + + 字段值不允许为 NULL 。 ENABLE 用于语法兼容,可省略。 + +- **NULL** + + 字段值允许 NULL ,这是缺省。 + + 这个子句只是为和非标准 SQL 数据库兼容。不建议使用。 + +- **CHECK \(condition\) \[ NO INHERIT \]** + +CHECK 约束声明一个布尔表达式,每次要插入的新行或者要更新的行的新值必须使表达式结果为真或未知才能成功,否则会抛出一个异常并且不会修改数据库。 + + 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。 + + 用 NO INHERIT 标记的约束将不会传递到子表中去。 + +ENABLE 用于语法兼容,可省略。 + +- **DEFAULT default\_expr** + +DEFAULT 子句给字段指定缺省值。该数值可以是任何不含变量的表达式\(不允许使用子查询和对本表中的其他字段的交叉引用\)。缺省表达式的数据类型必须和字段类型匹配。 + + 缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为 NULL 。 + +- GENERATED ALWAYS AS \( generation\_expr \) STORED + + 该子句将字段创建为生成列,生成列的值在写入(插入或更新)数据时由generation\_expr计算得到, STORED 表示像普通列一样存储生成列的值。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 生成表达式不能以任何方式引用当前行以外的其他数据。生成表达式不能引用其他生成列,不能引用系统列。生成表达式不能返回结果集,不能使用子查询,不能使用聚集函数,不能使用窗口函数。生成表达式调用的函数只能是不可变(IMMUTABLE)函数。 + > + >- 不能为生成列指定默认值。 + > + >- 生成列不能作为分区键的一部分。 + > + >- 生成列不能和 ON UPDATE 约束字句的 CASCADE , SET NULL , SET DEFAULT 动作同时指定。生成列不能和 ON DELETE 约束字句的SET NULL、SET DEFAULT动作同时指定。 + > + >- 修改和删除生成列的方法和普通列相同。删除生成列依赖的普通列,生成列被自动删除。不能改变生成列所依赖的列的类型。 + > + >- 生成列不能被直接写入。在 INSERT 或 UPDATE 命令中, 不能为生成列指定值, 但是可以指定关键字 DEFAULT 。 + > + >- 生成列的权限控制和普通列一样。 + > + >- 列存表、内存表 MOT 不支持生成列。外表中仅postgres\_fdw支持生成列。 + +- **UNIQUE index\_parameters** + + **UNIQUE \( column\_name \[, ... \] \) index\_parameters** + +UNIQUE 约束表示表里的一个字段或多个字段的组合必须在全表范围内唯一。 + + 对于唯一约束, NULL 被认为是互不相等的。 + +- **PRIMARY KEY index\_parameters** + + **PRIMARY KEY \( column\_name \[, ... \] \) index\_parameters** + + 主键约束声明表中的一个或者多个字段只能包含唯一的非 NULL 值。 + + 一个表只能声明一个主键。 + +- **DEFERRABLE | NOT DEFERRABLE** + + 这两个关键字设置该约束是否可推迟。一个不可推迟的约束将在每条命令之后马上检查。可推迟约束可以推迟到事务结尾使用 SET CONSTRAINTS 命令检查。缺省是 NOT DEFERRABLE 。目前, UNIQUE 约束、主键约束、外键约束可以接受这个子句。所有其他约束类型都是不可推迟的。 + +- **INITIALLY IMMEDIATE | INITIALLY DEFERRED** + + 如果约束是可推迟的,则这个子句声明检查约束的缺省时间。 + + - 如果约束是INITIALLY IMMEDIATE(缺省),则在每条语句执行之后就立即检查它; + - 如果约束是 INITIALLY DEFERRED ,则只有在事务结尾才检查它。 + + 约束检查的时间可以用 SET CONSTRAINTS 命令修改。 + +- **USING INDEX TABLESPACE tablespace\_name** + + 为 UNIQUE 或 PRIMARY KEY 约束相关的索引声明一个表空间。如果没有提供这个子句,这个索引将在default\_tablespace中创建,如果default\_tablespace为空,将使用数据库的缺省表空间。 + + +## 示例 + +- 示例1:创建范围分区表tpcds.web\_returns\_p1,含有 8 个分区,分区键为 integer 类型。 分区的范围分别为:wr\_returned\_date\_sk< 2450815、2450815<= wr\_returned\_date\_sk< 2451179、2451179<=wr\_returned\_date\_sk< 2451544、2451544 <= wr\_returned\_date\_sk< 2451910、2451910 <= wr\_returned\_date\_sk< 2452275、2452275 <= wr\_returned\_date\_sk< 2452640、2452640 <= wr\_returned\_date\_sk< 2453005、wr\_returned\_date\_sk\>=2453005。 + + ``` + --创建表tpcds.web_returns。 + openGauss=# CREATE TABLE tpcds.web_returns + ( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) + ); + --创建分区表tpcds.web_returns_p1。 + openGauss=# CREATE TABLE tpcds.web_returns_p1 + ( + WR_RETURNED_DATE_SK INTEGER , + WR_RETURNED_TIME_SK INTEGER , + WR_ITEM_SK INTEGER NOT NULL , + WR_REFUNDED_CUSTOMER_SK INTEGER , + WR_REFUNDED_CDEMO_SK INTEGER , + WR_REFUNDED_HDEMO_SK INTEGER , + WR_REFUNDED_ADDR_SK INTEGER , + WR_RETURNING_CUSTOMER_SK INTEGER , + WR_RETURNING_CDEMO_SK INTEGER , + WR_RETURNING_HDEMO_SK INTEGER , + WR_RETURNING_ADDR_SK INTEGER , + WR_WEB_PAGE_SK INTEGER , + WR_REASON_SK INTEGER , + WR_ORDER_NUMBER BIGINT NOT NULL , + WR_RETURN_QUANTITY INTEGER , + WR_RETURN_AMT DECIMAL(7,2) , + WR_RETURN_TAX DECIMAL(7,2) , + WR_RETURN_AMT_INC_TAX DECIMAL(7,2) , + WR_FEE DECIMAL(7,2) , + WR_RETURN_SHIP_COST DECIMAL(7,2) , + WR_REFUNDED_CASH DECIMAL(7,2) , + WR_REVERSED_CHARGE DECIMAL(7,2) , + WR_ACCOUNT_CREDIT DECIMAL(7,2) , + WR_NET_LOSS DECIMAL(7,2) + ) + WITH (ORIENTATION = COLUMN,COMPRESSION=MIDDLE) + PARTITION BY RANGE(WR_RETURNED_DATE_SK) + ( + PARTITION P1 VALUES LESS THAN(2450815), + PARTITION P2 VALUES LESS THAN(2451179), + PARTITION P3 VALUES LESS THAN(2451544), + PARTITION P4 VALUES LESS THAN(2451910), + PARTITION P5 VALUES LESS THAN(2452275), + PARTITION P6 VALUES LESS THAN(2452640), + PARTITION P7 VALUES LESS THAN(2453005), + PARTITION P8 VALUES LESS THAN(MAXVALUE) + ); + + --从示例数据表导入数据。 + openGauss=# INSERT INTO tpcds.web_returns_p1 SELECT * FROM tpcds.web_returns; + + --删除分区 P8 。 + openGauss=# ALTER TABLE tpcds.web_returns_p1 DROP PARTITION P8; + + --增加分区 WR_RETURNED_DATE_SK 介于 2453005 和 2453105 之间。 + openGauss=# ALTER TABLE tpcds.web_returns_p1 ADD PARTITION P8 VALUES LESS THAN (2453105); + + --增加分区 WR_RETURNED_DATE_SK 介于 2453105 和 MAXVALUE 之间。 + openGauss=# ALTER TABLE tpcds.web_returns_p1 ADD PARTITION P9 VALUES LESS THAN (MAXVALUE); + + --删除分区 P8 。 + openGauss=# ALTER TABLE tpcds.web_returns_p1 DROP PARTITION FOR (2453005); + + --分区 P7 重命名为 P10 。 + openGauss=# ALTER TABLE tpcds.web_returns_p1 RENAME PARTITION P7 TO P10; + + --分区 P6 重命名为 P11 。 + openGauss=# ALTER TABLE tpcds.web_returns_p1 RENAME PARTITION FOR (2452639) TO P11; + + --查询分区 P10 的行数。 + openGauss=# SELECT count(*) FROM tpcds.web_returns_p1 PARTITION (P10); + count + -------- + 0 + (1 row) + + --查询分区 P1 的行数。 + openGauss=# SELECT COUNT(*) FROM tpcds.web_returns_p1 PARTITION FOR (2450815); + count + -------- + 0 + (1 row) + ``` + +- 示例2:创建范围分区表tpcds.web\_returns\_p2,含有 8 个分区,分区键类型为 integer 类型,其中第 8 个分区上边界为 MAXVALUE 。 + + 八个分区的范围分别为: wr\_returned\_date\_sk< 2450815、2450815<= wr\_returned\_date\_sk< 2451179、2451179<=wr\_returned\_date\_sk< 2451544、2451544 <= wr\_returned\_date\_sk< 2451910、2451910 <= wr\_returned\_date\_sk< 2452275、2452275 <= wr\_returned\_date\_sk< 2452640、2452640 <= wr\_returned\_date\_sk< 2453005、wr\_returned\_date\_sk\>=2453005。 + + 分区表tpcds.web\_returns\_p2的表空间为example1;分区 P1 到 P7 没有声明表空间,使用采用分区表tpcds.web\_returns\_p2的表空间example1;指定分区 P8 的表空间为 example2 。 + + 假定数据库节点的数据目录/pg\_location/mount1/path1,数据库节点的数据目录/pg\_location/mount2/path2,数据库节点的数据目录/pg\_location/mount3/path3,数据库节点的数据目录/pg\_location/mount4/path4是 dwsadmin 用户拥有读写权限的空目录。 + + ``` + openGauss=# CREATE TABLESPACE example1 RELATIVE LOCATION 'tablespace1/tablespace_1'; + openGauss=# CREATE TABLESPACE example2 RELATIVE LOCATION 'tablespace2/tablespace_2'; + openGauss=# CREATE TABLESPACE example3 RELATIVE LOCATION 'tablespace3/tablespace_3'; + openGauss=# CREATE TABLESPACE example4 RELATIVE LOCATION 'tablespace4/tablespace_4'; + + openGauss=# CREATE TABLE tpcds.web_returns_p2 + ( + WR_RETURNED_DATE_SK INTEGER , + WR_RETURNED_TIME_SK INTEGER , + WR_ITEM_SK INTEGER NOT NULL , + WR_REFUNDED_CUSTOMER_SK INTEGER , + WR_REFUNDED_CDEMO_SK INTEGER , + WR_REFUNDED_HDEMO_SK INTEGER , + WR_REFUNDED_ADDR_SK INTEGER , + WR_RETURNING_CUSTOMER_SK INTEGER , + WR_RETURNING_CDEMO_SK INTEGER , + WR_RETURNING_HDEMO_SK INTEGER , + WR_RETURNING_ADDR_SK INTEGER , + WR_WEB_PAGE_SK INTEGER , + WR_REASON_SK INTEGER , + WR_ORDER_NUMBER BIGINT NOT NULL , + WR_RETURN_QUANTITY INTEGER , + WR_RETURN_AMT DECIMAL(7,2) , + WR_RETURN_TAX DECIMAL(7,2) , + WR_RETURN_AMT_INC_TAX DECIMAL(7,2) , + WR_FEE DECIMAL(7,2) , + WR_RETURN_SHIP_COST DECIMAL(7,2) , + WR_REFUNDED_CASH DECIMAL(7,2) , + WR_REVERSED_CHARGE DECIMAL(7,2) , + WR_ACCOUNT_CREDIT DECIMAL(7,2) , + WR_NET_LOSS DECIMAL(7,2) + ) + TABLESPACE example1 + PARTITION BY RANGE(WR_RETURNED_DATE_SK) + ( + PARTITION P1 VALUES LESS THAN(2450815), + PARTITION P2 VALUES LESS THAN(2451179), + PARTITION P3 VALUES LESS THAN(2451544), + PARTITION P4 VALUES LESS THAN(2451910), + PARTITION P5 VALUES LESS THAN(2452275), + PARTITION P6 VALUES LESS THAN(2452640), + PARTITION P7 VALUES LESS THAN(2453005), + PARTITION P8 VALUES LESS THAN(MAXVALUE) TABLESPACE example2 + ) + ENABLE ROW MOVEMENT; + + --以 like 方式创建一个分区表。 + openGauss=# CREATE TABLE tpcds.web_returns_p3 (LIKE tpcds.web_returns_p2 INCLUDING PARTITION); + + --修改分区 P1 的表空间为 example2 。 + openGauss=# ALTER TABLE tpcds.web_returns_p2 MOVE PARTITION P1 TABLESPACE example2; + + --修改分区 P2 的表空间为 example3 。 + openGauss=# ALTER TABLE tpcds.web_returns_p2 MOVE PARTITION P2 TABLESPACE example3; + + --以 2453010 为分割点切分 P8 。 + openGauss=# ALTER TABLE tpcds.web_returns_p2 SPLIT PARTITION P8 AT (2453010) INTO + ( + PARTITION P9 , + PARTITION P10 + ); + + --将 P6 , P7 合并为一个分区。 + openGauss=# ALTER TABLE tpcds.web_returns_p2 MERGE PARTITIONS P6, P7 INTO PARTITION P8; + + --修改分区表迁移属性。 + openGauss=# ALTER TABLE tpcds.web_returns_p2 DISABLE ROW MOVEMENT; + --删除表和表空间。 + openGauss=# DROP TABLE tpcds.web_returns_p1; + openGauss=# DROP TABLE tpcds.web_returns_p2; + openGauss=# DROP TABLE tpcds.web_returns_p3; + openGauss=# DROP TABLESPACE example1; + openGauss=# DROP TABLESPACE example2; + openGauss=# DROP TABLESPACE example3; + openGauss=# DROP TABLESPACE example4; + ``` + + +- 示例3:START END语法创建、修改 Range 分区表。 + + 假定/home/omm/startend\_tbs1、/home/omm/startend\_tbs2、/home/omm/startend\_tbs3、/home/omm/startend\_tbs4是 omm 用户拥有读写权限的空目录。 + + ``` + -- 创建表空间 + openGauss=# CREATE TABLESPACE startend_tbs1 LOCATION '/home/omm/startend_tbs1'; + openGauss=# CREATE TABLESPACE startend_tbs2 LOCATION '/home/omm/startend_tbs2'; + openGauss=# CREATE TABLESPACE startend_tbs3 LOCATION '/home/omm/startend_tbs3'; + openGauss=# CREATE TABLESPACE startend_tbs4 LOCATION '/home/omm/startend_tbs4'; + + -- 创建临时schema + openGauss=# CREATE SCHEMA tpcds; + openGauss=# SET CURRENT_SCHEMA TO tpcds; + + -- 创建分区表,分区键是 integer 类型 + openGauss=# CREATE TABLE tpcds.startend_pt (c1 INT, c2 INT) + TABLESPACE startend_tbs1 + PARTITION BY RANGE (c2) ( + PARTITION p1 START(1) END(1000) EVERY(200) TABLESPACE startend_tbs2, + PARTITION p2 END(2000), + PARTITION p3 START(2000) END(2500) TABLESPACE startend_tbs3, + PARTITION p4 START(2500), + PARTITION p5 START(3000) END(5000) EVERY(1000) TABLESPACE startend_tbs4 + ) + ENABLE ROW MOVEMENT; + + -- 查看分区表信息 + openGauss=# SELECT relname, boundaries , spcname FROM pg_partition p JOIN pg_tablespace t ON p.reltablespace=t.oid and p.parentid='tpcds.startend_pt'::regclass ORDER BY 1; + relname | boundaries | spcname + -------------+------------+--------------- + p1_0 | {1} | startend_tbs2 + p1_1 | {201} | startend_tbs2 + p1_2 | {401} | startend_tbs2 + p1_3 | {601} | startend_tbs2 + p1_4 | {801} | startend_tbs2 + p1_5 | {1000} | startend_tbs2 + p2 | {2000} | startend_tbs1 + p3 | {2500} | startend_tbs3 + p4 | {3000} | startend_tbs1 + p5_1 | {4000} | startend_tbs4 + p5_2 | {5000} | startend_tbs4 + startend_pt | | startend_tbs1 + (12 rows) + + -- 导入数据,查看分区数据量 + openGauss=# INSERT INTO tpcds.startend_pt VALUES (GENERATE_SERIES(0, 4999), GENERATE_SERIES(0, 4999)); + openGauss=# SELECT COUNT(*) FROM tpcds.startend_pt PARTITION FOR (0); + count + ------- + 1 + (1 row) + + openGauss=# SELECT COUNT(*) FROM tpcds.startend_pt PARTITION (p3); + count + ------- + 500 + (1 row) + + -- 增加分区: [5000, 5300), [5300, 5600), [5600, 5900), [5900, 6000) + openGauss=# ALTER TABLE tpcds.startend_pt ADD PARTITION p6 START(5000) END(6000) EVERY(300) TABLESPACE startend_tbs4; + + -- 增加 MAXVALUE 分区: p7 + openGauss=# ALTER TABLE tpcds.startend_pt ADD PARTITION p7 END(MAXVALUE); + + -- 重命名分区 p7 为p8 + openGauss=# ALTER TABLE tpcds.startend_pt RENAME PARTITION p7 TO p8; + + -- 删除分区p8 + openGauss=# ALTER TABLE tpcds.startend_pt DROP PARTITION p8; + + -- 重命名 5950 所在的分区为:p71 + openGauss=# ALTER TABLE tpcds.startend_pt RENAME PARTITION FOR(5950) TO p71; + + -- 分裂 4500 所在的分区[4000, 5000) + openGauss=# ALTER TABLE tpcds.startend_pt SPLIT PARTITION FOR(4500) INTO(PARTITION q1 START(4000) END(5000) EVERY(250) TABLESPACE startend_tbs3); + + -- 修改分区 p2 的表空间为startend_tbs4 + openGauss=# ALTER TABLE tpcds.startend_pt MOVE PARTITION p2 TABLESPACE startend_tbs4; + + -- 查看分区情形 + openGauss=# SELECT relname, boundaries , spcname FROM pg_partition p JOIN pg_tablespace t ON p.reltablespace=t.oid and p.parentid='tpcds.startend_pt'::regclass ORDER BY 1; + relname | boundaries | spcname + -------------+------------+--------------- + p1_0 | {1} | startend_tbs2 + p1_1 | {201} | startend_tbs2 + p1_2 | {401} | startend_tbs2 + p1_3 | {601} | startend_tbs2 + p1_4 | {801} | startend_tbs2 + p1_5 | {1000} | startend_tbs2 + p2 | {2000} | startend_tbs4 + p3 | {2500} | startend_tbs3 + p4 | {3000} | startend_tbs1 + p5_1 | {4000} | startend_tbs4 + p6_1 | {5300} | startend_tbs4 + p6_2 | {5600} | startend_tbs4 + p6_3 | {5900} | startend_tbs4 + p71 | {6000} | startend_tbs4 + q1_1 | {4250} | startend_tbs3 + q1_2 | {4500} | startend_tbs3 + q1_3 | {4750} | startend_tbs3 + q1_4 | {5000} | startend_tbs3 + startend_pt | | startend_tbs1 + (19 rows) + + -- 删除表和表空间 + openGauss=# DROP SCHEMA tpcds CASCADE; + openGauss=# DROP TABLESPACE startend_tbs1; + openGauss=# DROP TABLESPACE startend_tbs2; + openGauss=# DROP TABLESPACE startend_tbs3; + openGauss=# DROP TABLESPACE startend_tbs4; + ``` + + +- 示例4:创建间隔分区表 sales ,初始包含 2 个分区,分区键为 DATE 类型。 分区的范围分别为:time\_id < '2019-02-01 00:00:00'、 + + '2019-02-01 00:00:00' <= time\_id < '2019-02-02 00:00:00' 。 + + ``` + --创建表sales + openGauss=# CREATE TABLE sales + (prod_id NUMBER(6), + cust_id NUMBER , + time_id DATE , + channel_id CHAR(1), + promo_id NUMBER(6), + quantity_sold NUMBER(3), + amount_sold NUMBER(10,2) + ) + PARTITION BY RANGE (time_id) + INTERVAL('1 day') + ( PARTITION p1 VALUES LESS THAN ('2019-02-01 00:00:00'), + PARTITION p2 VALUES LESS THAN ('2019-02-02 00:00:00') + ); + + -- 数据插入分区p1 + openGauss=# INSERT INTO sales VALUES(1, 12 , '2019-01-10 00:00:00', 'a', 1 , 1 , 1); + + -- 数据插入分区p2 + openGauss=# INSERT INTO sales VALUES(1, 12 , '2019-02-01 00:00:00', 'a', 1 , 1 , 1); + + -- 查看分区信息 + openGauss=# SELECT t1.relname, partstrategy , boundaries FROM pg_partition t1 , pg_class t2 WHERE t1.parentid = t2.oid AND t2.relname = 'sales' AND t1.parttype = 'p'; + relname | partstrategy | boundaries + ---------+--------------+------------------------- + p1 | r | {"2019-02-01 00:00:00"} + p2 | r | {"2019-02-02 00:00:00"} + (2 rows) + + -- 插入数据没有匹配的分区,新创建一个分区,并将数据插入该分区 + -- 新分区的范围为 '2019-02-05 00:00:00' <= time_id < '2019-02-06 00:00:00' + openGauss=# INSERT INTO sales VALUES(1, 12 , '2019-02-05 00:00:00', 'a', 1 , 1 , 1); + + -- 插入数据没有匹配的分区,新创建一个分区,并将数据插入该分区 + -- 新分区的范围为 '2019-02-03 00:00:00' <= time_id < '2019-02-04 00:00:00' + openGauss=# INSERT INTO sales VALUES(1, 12 , '2019-02-03 00:00:00', 'a', 1 , 1 , 1); + + -- 查看分区信息 + openGauss=# SELECT t1.relname, partstrategy , boundaries FROM pg_partition t1 , pg_class t2 WHERE t1.parentid = t2.oid AND t2.relname = 'sales' AND t1.parttype = 'p'; + relname | partstrategy | boundaries + ---------+--------------+------------------------- + sys_p1 | i | {"2019-02-06 00:00:00"} + sys_p2 | i | {"2019-02-04 00:00:00"} + p1 | r | {"2019-02-01 00:00:00"} + p2 | r | {"2019-02-02 00:00:00"} + (4 rows) + + ``` + + +- 示例5:创建 LIST 分区表test\_list,初始包含 4 个分区,分区键为 INT 类型。 4 个分区的范围分别为:2000、3000、4000、5000。 + + ``` + --创建表test_list + openGauss=# create table test_list (col1 int, col2 int) + partition by list(col1) + ( + partition p1 values (2000), + partition p2 values (3000), + partition p3 values (4000), + partition p4 values (5000) + ); + + -- 数据插入 + openGauss=# INSERT INTO test_list VALUES(2000, 2000); + INSERT 0 1 + openGauss=# INSERT INTO test_list VALUES(3000, 3000); + INSERT 0 1 + + -- 查看分区信息 + openGauss=# SELECT t1.relname, partstrategy , boundaries FROM pg_partition t1 , pg_class t2 WHERE t1.parentid = t2.oid AND t2.relname = 'test_list' AND t1.parttype = 'p'; + relname | partstrategy | boundaries + ---------+--------------+------------ + p1 | l | {2000} + p2 | l | {3000} + p3 | l | {4000} + p4 | l | {5000} + (4 rows) + + -- 插入数据没有匹配到分区,报错处理 + openGauss=# INSERT INTO test_list VALUES(6000, 6000); + ERROR: inserted partition key does not map to any table partition + + -- 添加分区 + openGauss=# alter table test_list add partition p5 values (6000); + ALTER TABLE + openGauss=# SELECT t1.relname, partstrategy , boundaries FROM pg_partition t1 , pg_class t2 WHERE t1.parentid = t2.oid AND t2.relname = 'test_list' AND t1.parttype = 'p'; + relname | partstrategy | boundaries + ---------+--------------+------------ + p5 | l | {6000} + p4 | l | {5000} + p1 | l | {2000} + p2 | l | {3000} + p3 | l | {4000} + (5 rows) + openGauss=# INSERT INTO test_list VALUES(6000, 6000); + INSERT 0 1 + + -- 分区表和普通表交换数据 + openGauss=# create table t1 (col1 int, col2 int); + CREATE TABLE + openGauss=# select * from test_list partition (p1); + col1 | col2 + ------+------ + 2000 | 2000 + (1 row) + openGauss=# alter table test_list exchange partition (p1) with table t1; + ALTER TABLE + openGauss=# select * from test_list partition (p1); + col1 | col2 + ------+------ + (0 rows) + openGauss=# select * from t1; + col1 | col2 + ------+------ + 2000 | 2000 + (1 row) + + -- truncate分区 + openGauss=# select * from test_list partition (p2); + col1 | col2 + ------+------ + 3000 | 3000 + (1 row) + openGauss=# alter table test_list truncate partition p2; + ALTER TABLE + openGauss=# select * from test_list partition (p2); + col1 | col2 + ------+------ + (0 rows) + + -- 删除分区 + openGauss=# alter table test_list drop partition p5; + ALTER TABLE + openGauss=# SELECT t1.relname, partstrategy , boundaries FROM pg_partition t1 , pg_class t2 WHERE t1.parentid = t2.oid AND t2.relname = 'test_list' AND t1.parttype = 'p'; + relname | partstrategy | boundaries + ---------+--------------+------------ + p4 | l | {5000} + p1 | l | {2000} + p2 | l | {3000} + p3 | l | {4000} + (4 rows) + + openGauss=# INSERT INTO test_list VALUES(6000, 6000); + ERROR: inserted partition key does not map to any table partition + + -- 删除分区表 + openGauss=# drop table test_list; + ``` + + +- 示例6:创建 HASH 分区表test\_hash,初始包含 2 个分区,分区键为 INT 类型。 + + ``` + --创建表test_hash + openGauss=# create table test_hash (col1 int, col2 int) + partition by hash(col1) + ( + partition p1 , + partition p2 + ); + + -- 数据插入 + openGauss=# INSERT INTO test_hash VALUES(1, 1); + INSERT 0 1 + openGauss=# INSERT INTO test_hash VALUES(2, 2); + INSERT 0 1 + openGauss=# INSERT INTO test_hash VALUES(3, 3); + INSERT 0 1 + openGauss=# INSERT INTO test_hash VALUES(4, 4); + INSERT 0 1 + + -- 查看分区信息 + openGauss=# SELECT t1.relname, partstrategy , boundaries FROM pg_partition t1 , pg_class t2 WHERE t1.parentid = t2.oid AND t2.relname = 'test_hash' AND t1.parttype = 'p'; + relname | partstrategy | boundaries + ---------+--------------+------------ + p1 | h | {0} + p2 | h | {1} + (2 rows) + + -- 查看数据 + openGauss=# select * from test_hash partition (p1); + col1 | col2 + ------+------ + 3 | 3 + 4 | 4 + (2 rows) + + openGauss=# select * from test_hash partition (p2); + col1 | col2 + ------+------ + 1 | 1 + 2 | 2 + (2 rows) + + -- 分区表和普通表交换数据 + openGauss=# create table t1 (col1 int, col2 int); + CREATE TABLE + openGauss=# alter table test_hash exchange partition (p1) with table t1; + ALTER TABLE + openGauss=# select * from test_hash partition (p1); + col1 | col2 + ------+------ + (0 rows) + openGauss=# select * from t1; + col1 | col2 + ------+------ + 3 | 3 + 4 | 4 + (2 rows) + + -- truncate分区 + openGauss=# alter table test_hash truncate partition p2; + ALTER TABLE + openGauss=# select * from test_hash partition (p2); + col1 | col2 + ------+------ + (0 rows) + + -- 删除分区表 + openGauss=# drop table test_hash; + ``` + + +## 相关链接 + +[ALTER TABLE PARTITION](ALTER-TABLE-PARTITION.md),[DROP TABLE](DROP-TABLE.md) + diff --git a/content/zh/docs/Developerguide/CREATE-TABLE-SUBPARTITION.md b/content/zh/docs/Developerguide/CREATE-TABLE-SUBPARTITION.md index c931daaaa..0a02067f2 100644 --- a/content/zh/docs/Developerguide/CREATE-TABLE-SUBPARTITION.md +++ b/content/zh/docs/Developerguide/CREATE-TABLE-SUBPARTITION.md @@ -1,907 +1,907 @@ -# CREATE TABLE SUBPARTITION - -## 功能描述 - -创建二级分区表。分区表是把逻辑上的一张表根据某种方案分成几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。对于二级分区表,顶层节点表和一级分区都是逻辑表,不存储数据,只有二级分区(叶子节点)存储数据。 - -二级分区表的分区方案是由两个一级分区的分区方案组合而来的,一级分区的分区方案详见章节CREATE TABLE PARTITION。 - -常见的二级分区表组合方案有Range-Range分区、Range-List分区、Range-Hash分区、List-Range分区、List-List分区、List-Hash分区、Hash-Range分区、Hash-List分区、Hash-Hash分区等。目前二级分区仅支持行存表。 - -## 注意事项 - -- 二级分区表有两个分区键,每个分区键只能支持1列。 -- 唯一约束和主键约束的约束键包含所有分区键将为约束创建LOCAL索引,否则创建GLOBAL索引。 -- 二级分区表的二级分区(叶子节点)个数不能超过1048575个,一级分区无限制,但一级分区下面至少有一个二级分区。 -- 二级分区表只支持行存,不支持列存、段页式、hashbucket。 -- 不支持Upsert、Merge into。 -- 指定分区查询时,如select \* from tablename partition/subpartition \(partitionname\),关键字partition和subpartition注意不要写错。如果写错,查询不会报错,这时查询会变为对表起别名进行查询。 -- 不支持对二级分区 subpartition for \(values\)查询。如select \* from tablename subpartition for \(values\)。 -- 不支持密态数据库、账本数据库和行级访问控制。 - -## 语法格式 - -``` -CREATE TABLE [ IF NOT EXISTS ] subpartition_table_name -( -{ column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ] -| table_constraint -| LIKE source_table [ like_option [...] ] }[, ... ] -) -[ WITH ( {storage_parameter = value} [, ... ] ) ] -[ COMPRESS | NOCOMPRESS ] -[ TABLESPACE tablespace_name ] -PARTITION BY {RANGE | LIST | HASH} (partition_key) SUBPARTITION BY {RANGE | LIST | HASH} (subpartition_key) -( - PARTITION partition_name1 [ VALUES LESS THAN (val1) | VALUES (val1[, …]) ] [ TABLESPACE tablespace ] - ( - { SUBPARTITION subpartition_name1 [ VALUES LESS THAN (val1_1) | VALUES (val1_1[, …])] [ TABLESPACE tablespace ] } [, ...] - )[, ...] -)[ { ENABLE | DISABLE } ROW MOVEMENT ]; -``` - -- 列约束column\_constraint: - - ``` - [ CONSTRAINT constraint_name ] - { NOT NULL | - NULL | - CHECK ( expression ) | - DEFAULT default_e xpr | - GENERATED ALWAYS AS ( generation_expr ) STORED | - UNIQUE index_parameters | - PRIMARY KEY index_parameters | - REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] - [ ON DELETE action ] [ ON UPDATE action ] } - [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] - ``` - -- 表约束table\_constraint: - - ``` - [ CONSTRAINT constraint_name ] - { CHECK ( expression ) | - UNIQUE ( column_name [, ... ] ) index_parameters | - PRIMARY KEY ( column_name [, ... ] ) index_parameters | - FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] - [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } - [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] - ``` - - -- like选项like\_option: - - ``` - { INCLUDING | EXCLUDING } { DEFAULTS | GENERATED | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | RELOPTIONS| ALL } - ``` - - -- 索引存储参数index\_parameters: - - ``` - [ WITH ( {storage_parameter = value} [, ... ] ) ] - [ USING INDEX TABLESPACE tablespace_name ] - ``` - - -## 参数说明 - -- **IF NOT EXISTS** - - 如果已经存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表关系已存在。 - -- **subpartition\_table\_name** - - 二级分区表的名称。 - - 取值范围:字符串,要符合标识符的命名规范。 - - -- **column\_name** - - 新表中要创建的字段名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **data\_type** - - 字段的数据类型。 - -- **COLLATE collation** - - COLLATE子句指定列的排序规则(该列必须是可排列的数据类型)。如果没有指定,则使用默认的排序规则。排序规则可以使用“select \* from pg\_collation;”命令从pg\_collation系统表中查询,默认的排序规则为查询结果中以default开始的行。 - -- **CONSTRAINT constraint\_name** - - 列约束或表约束的名称。可选的约束子句用于声明约束,新行或者更新的行必须满足这些约束才能成功插入或更新。 - - 定义约束有两种方法: - - - 列约束:作为一个列定义的一部分,仅影响该列。 - - 表约束:不和某个列绑在一起,可以作用于多个列。 - -- **LIKE source\_table \[ like\_option ... \]** - - 二级分区表暂不支持该功能。 - -- **WITH \( storage\_parameter \[= value\] \[, ... \] \)** - - 这个子句为表或索引指定一个可选的存储参数。参数的详细描述如下所示: - - - FILLFACTOR - - 一个表的填充因子(fillfactor)是一个介于10和100之间的百分数。100(完全填充)是默认值。如果指定了较小的填充因子,INSERT操作仅按照填充因子指定的百分率填充表页。每个页上的剩余空间将用于在该页上更新行,这就使得UPDATE有机会在同一页上放置同一条记录的新版本,这比把新版本放置在其他页上更有效。对于一个从不更新的表将填充因子设为100是最佳选择,但是对于频繁更新的表,选择较小的填充因子则更加合适。该参数对于列存表没有意义。 - - 取值范围:10\~100 - - - ORIENTATION - - 决定了表的数据的存储方式。 - - 取值范围: - - - COLUMN:表的数据将以列式存储。 - - ROW(缺省值):表的数据将以行式存储。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >orientation不支持修改。 - - - - COMPRESSION - - 列存表的有效值为LOW/MIDDLE/HIGH/YES/NO,压缩级别依次升高,默认值为LOW。 - - 行存表不支持压缩。 - - - MAX\_BATCHROW - - 指定了在数据加载过程中一个存储单元可以容纳记录的最大数目。该参数只对列存表有效。 - - 取值范围:10000\~60000,默认60000。 - - - PARTIAL\_CLUSTER\_ROWS - - 指定了在数据加载过程中进行将局部聚簇存储的记录数目。该参数只对列存表有效。 - - 取值范围:大于等于MAX\_BATCHROW,建议取值为MAX\_BATCHROW的整数倍数。 - - - DELTAROW\_THRESHOLD - - 预留参数。该参数只对列存表有效。 - - 取值范围:0~9999 - - -- **COMPRESS / NOCOMPRESS** - - 创建一个新表时,需要在创建表语句中指定关键字COMPRESS,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字NOCOMPRESS则不对表进行压缩。行存表不支持压缩。 - - 缺省值为NOCOMPRESS,即不对元组数据进行压缩。 - -- **TABLESPACE tablespace\_name** - - 指定新表将要在tablespace\_name表空间内创建。如果没有声明,将使用默认表空间。 - -- **PARTITION BY \{RANGE | LIST | HASH\} \(partition\_key\)** - - 对于partition\_key,分区策略的分区键仅支持1列。 - - 分区键支持的数据类型和一级分区表约束保持一致。 - -- **SUBPARTITION BY \{RANGE | LIST | HASH\} \(subpartition\_key\)** - - 对于subpartition\_key,分区策略的分区键仅支持1列。 - - 分区键支持的数据类型和一级分区表约束保持一致。 - - -- **\{ ENABLE | DISABLE \} ROW MOVEMENT** - - 行迁移开关。 - - 如果进行UPDATE操作时,更新了元组在分区键上的值,造成了该元组所在分区发生变化,就会根据该开关给出报错信息,或者进行元组在分区间的转移。 - - 取值范围: - - - ENABLE(缺省值):行迁移开关打开。 - - DISABLE:行迁移开关关闭。 - -- **NOT NULL** - - 字段值不允许为NULL。ENABLE用于语法兼容,可省略。 - -- **NULL** - - 字段值允许NULL ,这是缺省。 - - 这个子句只是为和非标准SQL数据库兼容。不建议使用。 - -- **CHECK \(condition\) \[ NO INHERIT \]** - - CHECK约束声明一个布尔表达式,每次要插入的新行或者要更新的行的新值必须使表达式结果为真或未知才能成功,否则会抛出一个异常并且不会修改数据库。 - - 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。 - - 用NO INHERIT标记的约束将不会传递到子表中去。 - - ENABLE用于语法兼容,可省略。 - -- **DEFAULT default\_expr** - - DEFAULT子句给字段指定缺省值。该数值可以是任何不含变量的表达式\(不允许使用子查询和对本表中的其他字段的交叉引用\)。缺省表达式的数据类型必须和字段类型匹配。 - - 缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为NULL 。 - -- **GENERATED ALWAYS AS \( generation\_expr \) STORED** - - 该子句将字段创建为生成列,生成列的值在写入(插入或更新)数据时由generation\_expr计算得到,STORED表示像普通列一样存储生成列的值。 - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- 生成表达式不能以任何方式引用当前行以外的其他数据。生成表达式不能引用其他生成列,不能引用系统列。生成表达式不能返回结果集,不能使用子查询,不能使用聚集函数,不能使用窗口函数。生成表达式调用的函数只能是不可变(IMMUTABLE)函数。 - > - >- 不能为生成列指定默认值。 - > - >- 生成列不能作为分区键的一部分。 - > - >- 生成列不能和ON UPDATE约束字句的CASCADE、SET NULL、SET DEFAULT动作同时指定。生成列不能和ON DELETE约束字句的SET NULL、SET DEFAULT动作同时指定。 - > - >- 修改和删除生成列的方法和普通列相同。删除生成列依赖的普通列,生成列被自动删除。不能改变生成列所依赖的列的类型。 - > - >- 生成列不能被直接写入。在INSERT或UPDATE命令中, 不能为生成列指定值, 但是可以指定关键字DEFAULT。 - > - >- 生成列的权限控制和普通列一样。 - > - > - >- 不能为生成列指定默认值。 - > - >- 生成列不能作为分区键的一部分。 - > - >- 生成列不能和ON UPDATE约束字句的CASCADE、SET NULL、SET DEFAULT动作同时指定。生成列不能和ON DELETE约束字句的SET NULL、SET DEFAULT动作同时指定。 - > - >- 修改和删除生成列的方法和普通列相同。删除生成列依赖的普通列,生成列被自动删除。不能改变生成列所依赖的列的类型。 - > - >- 生成列不能被直接写入。在INSERT或UPDATE命令中, 不能为生成列指定值, 但是可以指定关键字DEFAULT。 - > - >- 生成列的权限控制和普通列一样。 - > - >- 列存表、内存表MOT不支持生成列。外表中仅postgres\_fdw支持生成列。 - -- **UNIQUE index\_parameters** - - **UNIQUE \( column\_name \[, ... \] \) index\_parameters** - - UNIQUE约束表示表里的一个字段或多个字段的组合必须在全表范围内唯一。 - - 对于唯一约束,NULL被认为是互不相等的。 - -- **PRIMARY KEY index\_parameters** - - **PRIMARY KEY \( column\_name \[, ... \] \) index\_parameters** - - 主键约束声明表中的一个或者多个字段只能包含唯一的非NULL值。 - - 一个表只能声明一个主键。 - -- **DEFERRABLE | NOT DEFERRABLE** - - 这两个关键字设置该约束是否可推迟。一个不可推迟的约束将在每条命令之后马上检查。可推迟约束可以推迟到事务结尾使用SET CONSTRAINTS命令检查。缺省是NOT DEFERRABLE。目前,UNIQUE约束、主键约束、外键约束可以接受这个子句。所有其他约束类型都是不可推迟的。 - -- **INITIALLY IMMEDIATE | INITIALLY DEFERRED** - - 如果约束是可推迟的,则这个子句声明检查约束的缺省时间。 - - - 如果约束是INITIALLY IMMEDIATE(缺省),则在每条语句执行之后就立即检查它; - - 如果约束是INITIALLY DEFERRED ,则只有在事务结尾才检查它。 - - 约束检查的时间可以用SET CONSTRAINTS命令修改。 - -- **USING INDEX TABLESPACE tablespace\_name** - - 为UNIQUE或PRIMARY KEY约束相关的索引声明一个表空间。如果没有提供这个子句,这个索引将在default\_tablespace中创建,如果default\_tablespace为空,将使用数据库的缺省表空间。 - - -## 示例 - -- 示例1:创建各种组合类型的二级分区表 - - ``` - CREATE TABLE list_list - ( - month_code VARCHAR2 ( 30 ) NOT NULL , - dept_code VARCHAR2 ( 30 ) NOT NULL , - user_no VARCHAR2 ( 30 ) NOT NULL , - sales_amt int - ) - PARTITION BY LIST (month_code) SUBPARTITION BY LIST (dept_code) - ( - PARTITION p_201901 VALUES ( '201902' ) - ( - SUBPARTITION p_201901_a VALUES ( '1' ), - SUBPARTITION p_201901_b VALUES ( '2' ) - ), - PARTITION p_201902 VALUES ( '201903' ) - ( - SUBPARTITION p_201902_a VALUES ( '1' ), - SUBPARTITION p_201902_b VALUES ( '2' ) - ) - ); - insert into list_list values('201902', '1', '1', 1); - insert into list_list values('201902', '2', '1', 1); - insert into list_list values('201902', '1', '1', 1); - insert into list_list values('201903', '2', '1', 1); - insert into list_list values('201903', '1', '1', 1); - insert into list_list values('201903', '2', '1', 1); - select * from list_list; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - 201903 | 1 | 1 | 1 - 201902 | 2 | 1 | 1 - 201902 | 1 | 1 | 1 - 201902 | 1 | 1 | 1 - (6 rows) - - drop table list_list; - CREATE TABLE list_hash - ( - month_code VARCHAR2 ( 30 ) NOT NULL , - dept_code VARCHAR2 ( 30 ) NOT NULL , - user_no VARCHAR2 ( 30 ) NOT NULL , - sales_amt int - ) - PARTITION BY LIST (month_code) SUBPARTITION BY HASH (dept_code) - ( - PARTITION p_201901 VALUES ( '201902' ) - ( - SUBPARTITION p_201901_a, - SUBPARTITION p_201901_b - ), - PARTITION p_201902 VALUES ( '201903' ) - ( - SUBPARTITION p_201902_a, - SUBPARTITION p_201902_b - ) - ); - insert into list_hash values('201902', '1', '1', 1); - insert into list_hash values('201902', '2', '1', 1); - insert into list_hash values('201902', '3', '1', 1); - insert into list_hash values('201903', '4', '1', 1); - insert into list_hash values('201903', '5', '1', 1); - insert into list_hash values('201903', '6', '1', 1); - select * from list_hash; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 4 | 1 | 1 - 201903 | 5 | 1 | 1 - 201903 | 6 | 1 | 1 - 201902 | 2 | 1 | 1 - 201902 | 3 | 1 | 1 - 201902 | 1 | 1 | 1 - (6 rows) - - drop table list_hash; - CREATE TABLE list_range - ( - month_code VARCHAR2 ( 30 ) NOT NULL , - dept_code VARCHAR2 ( 30 ) NOT NULL , - user_no VARCHAR2 ( 30 ) NOT NULL , - sales_amt int - ) - PARTITION BY LIST (month_code) SUBPARTITION BY RANGE (dept_code) - ( - PARTITION p_201901 VALUES ( '201902' ) - ( - SUBPARTITION p_201901_a values less than ('4'), - SUBPARTITION p_201901_b values less than ('6') - ), - PARTITION p_201902 VALUES ( '201903' ) - ( - SUBPARTITION p_201902_a values less than ('3'), - SUBPARTITION p_201902_b values less than ('6') - ) - ); - insert into list_range values('201902', '1', '1', 1); - insert into list_range values('201902', '2', '1', 1); - insert into list_range values('201902', '3', '1', 1); - insert into list_range values('201903', '4', '1', 1); - insert into list_range values('201903', '5', '1', 1); - insert into list_range values('201903', '6', '1', 1); - ERROR: inserted partition key does not map to any table partition - select * from list_range; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 4 | 1 | 1 - 201903 | 5 | 1 | 1 - 201902 | 1 | 1 | 1 - 201902 | 2 | 1 | 1 - 201902 | 3 | 1 | 1 - (5 rows) - - drop table list_range; - CREATE TABLE range_list - ( - month_code VARCHAR2 ( 30 ) NOT NULL , - dept_code VARCHAR2 ( 30 ) NOT NULL , - user_no VARCHAR2 ( 30 ) NOT NULL , - sales_amt int - ) - PARTITION BY RANGE (month_code) SUBPARTITION BY LIST (dept_code) - ( - PARTITION p_201901 VALUES LESS THAN( '201903' ) - ( - SUBPARTITION p_201901_a values ('1'), - SUBPARTITION p_201901_b values ('2') - ), - PARTITION p_201902 VALUES LESS THAN( '201904' ) - ( - SUBPARTITION p_201902_a values ('1'), - SUBPARTITION p_201902_b values ('2') - ) - ); - insert into range_list values('201902', '1', '1', 1); - insert into range_list values('201902', '2', '1', 1); - insert into range_list values('201902', '1', '1', 1); - insert into range_list values('201903', '2', '1', 1); - insert into range_list values('201903', '1', '1', 1); - insert into range_list values('201903', '2', '1', 1); - select * from range_list; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201902 | 2 | 1 | 1 - 201902 | 1 | 1 | 1 - 201902 | 1 | 1 | 1 - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - 201903 | 1 | 1 | 1 - (6 rows) - - drop table range_list; - CREATE TABLE range_hash - ( - month_code VARCHAR2 ( 30 ) NOT NULL , - dept_code VARCHAR2 ( 30 ) NOT NULL , - user_no VARCHAR2 ( 30 ) NOT NULL , - sales_amt int - ) - PARTITION BY RANGE (month_code) SUBPARTITION BY HASH (dept_code) - ( - PARTITION p_201901 VALUES LESS THAN( '201903' ) - ( - SUBPARTITION p_201901_a, - SUBPARTITION p_201901_b - ), - PARTITION p_201902 VALUES LESS THAN( '201904' ) - ( - SUBPARTITION p_201902_a, - SUBPARTITION p_201902_b - ) - ); - insert into range_hash values('201902', '1', '1', 1); - insert into range_hash values('201902', '2', '1', 1); - insert into range_hash values('201902', '1', '1', 1); - insert into range_hash values('201903', '2', '1', 1); - insert into range_hash values('201903', '1', '1', 1); - insert into range_hash values('201903', '2', '1', 1); - select * from range_hash; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201902 | 2 | 1 | 1 - 201902 | 1 | 1 | 1 - 201902 | 1 | 1 | 1 - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - 201903 | 1 | 1 | 1 - (6 rows) - - drop table range_hash; - CREATE TABLE range_range - ( - month_code VARCHAR2 ( 30 ) NOT NULL , - dept_code VARCHAR2 ( 30 ) NOT NULL , - user_no VARCHAR2 ( 30 ) NOT NULL , - sales_amt int - ) - PARTITION BY RANGE (month_code) SUBPARTITION BY RANGE (dept_code) - ( - PARTITION p_201901 VALUES LESS THAN( '201903' ) - ( - SUBPARTITION p_201901_a VALUES LESS THAN( '2' ), - SUBPARTITION p_201901_b VALUES LESS THAN( '3' ) - ), - PARTITION p_201902 VALUES LESS THAN( '201904' ) - ( - SUBPARTITION p_201902_a VALUES LESS THAN( '2' ), - SUBPARTITION p_201902_b VALUES LESS THAN( '3' ) - ) - ); - insert into range_range values('201902', '1', '1', 1); - insert into range_range values('201902', '2', '1', 1); - insert into range_range values('201902', '1', '1', 1); - insert into range_range values('201903', '2', '1', 1); - insert into range_range values('201903', '1', '1', 1); - insert into range_range values('201903', '2', '1', 1); - select * from range_range; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201902 | 1 | 1 | 1 - 201902 | 1 | 1 | 1 - 201902 | 2 | 1 | 1 - 201903 | 1 | 1 | 1 - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - (6 rows) - - drop table range_range; - CREATE TABLE hash_list - ( - month_code VARCHAR2 ( 30 ) NOT NULL , - dept_code VARCHAR2 ( 30 ) NOT NULL , - user_no VARCHAR2 ( 30 ) NOT NULL , - sales_amt int - ) - PARTITION BY hash (month_code) SUBPARTITION BY LIST (dept_code) - ( - PARTITION p_201901 - ( - SUBPARTITION p_201901_a VALUES ( '1' ), - SUBPARTITION p_201901_b VALUES ( '2' ) - ), - PARTITION p_201902 - ( - SUBPARTITION p_201902_a VALUES ( '1' ), - SUBPARTITION p_201902_b VALUES ( '2' ) - ) - ); - insert into hash_list values('201901', '1', '1', 1); - insert into hash_list values('201901', '2', '1', 1); - insert into hash_list values('201901', '1', '1', 1); - insert into hash_list values('201903', '2', '1', 1); - insert into hash_list values('201903', '1', '1', 1); - insert into hash_list values('201903', '2', '1', 1); - select * from hash_list; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - 201903 | 1 | 1 | 1 - 201901 | 2 | 1 | 1 - 201901 | 1 | 1 | 1 - 201901 | 1 | 1 | 1 - (6 rows) - - drop table hash_list; - CREATE TABLE hash_hash - ( - month_code VARCHAR2 ( 30 ) NOT NULL , - dept_code VARCHAR2 ( 30 ) NOT NULL , - user_no VARCHAR2 ( 30 ) NOT NULL , - sales_amt int - ) - PARTITION BY hash (month_code) SUBPARTITION BY hash (dept_code) - ( - PARTITION p_201901 - ( - SUBPARTITION p_201901_a, - SUBPARTITION p_201901_b - ), - PARTITION p_201902 - ( - SUBPARTITION p_201902_a, - SUBPARTITION p_201902_b - ) - ); - insert into hash_hash values('201901', '1', '1', 1); - insert into hash_hash values('201901', '2', '1', 1); - insert into hash_hash values('201901', '1', '1', 1); - insert into hash_hash values('201903', '2', '1', 1); - insert into hash_hash values('201903', '1', '1', 1); - insert into hash_hash values('201903', '2', '1', 1); - select * from hash_hash; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - 201903 | 1 | 1 | 1 - 201901 | 2 | 1 | 1 - 201901 | 1 | 1 | 1 - 201901 | 1 | 1 | 1 - (6 rows) - - drop table hash_hash; - CREATE TABLE hash_range - ( - month_code VARCHAR2 ( 30 ) NOT NULL , - dept_code VARCHAR2 ( 30 ) NOT NULL , - user_no VARCHAR2 ( 30 ) NOT NULL , - sales_amt int - ) - PARTITION BY hash (month_code) SUBPARTITION BY range (dept_code) - ( - PARTITION p_201901 - ( - SUBPARTITION p_201901_a VALUES LESS THAN ( '2' ), - SUBPARTITION p_201901_b VALUES LESS THAN ( '3' ) - ), - PARTITION p_201902 - ( - SUBPARTITION p_201902_a VALUES LESS THAN ( '2' ), - SUBPARTITION p_201902_b VALUES LESS THAN ( '3' ) - ) - ); - insert into hash_range values('201901', '1', '1', 1); - insert into hash_range values('201901', '2', '1', 1); - insert into hash_range values('201901', '1', '1', 1); - insert into hash_range values('201903', '2', '1', 1); - insert into hash_range values('201903', '1', '1', 1); - insert into hash_range values('201903', '2', '1', 1); - select * from hash_range; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 1 | 1 | 1 - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - 201901 | 1 | 1 | 1 - 201901 | 1 | 1 | 1 - 201901 | 2 | 1 | 1 - (6 rows) - ``` - -- 示例2:对二级分区表进行truncate操作 - - ``` - CREATE TABLE list_list - ( - month_code VARCHAR2 ( 30 ) NOT NULL , - dept_code VARCHAR2 ( 30 ) NOT NULL , - user_no VARCHAR2 ( 30 ) NOT NULL , - sales_amt int - ) - PARTITION BY LIST (month_code) SUBPARTITION BY LIST (dept_code) - ( - PARTITION p_201901 VALUES ( '201902' ) - ( - SUBPARTITION p_201901_a VALUES ( '1' ), - SUBPARTITION p_201901_b VALUES ( default ) - ), - PARTITION p_201902 VALUES ( '201903' ) - ( - SUBPARTITION p_201902_a VALUES ( '1' ), - SUBPARTITION p_201902_b VALUES ( '2' ) - ) - ); - insert into list_list values('201902', '1', '1', 1); - insert into list_list values('201902', '2', '1', 1); - insert into list_list values('201902', '1', '1', 1); - insert into list_list values('201903', '2', '1', 1); - insert into list_list values('201903', '1', '1', 1); - insert into list_list values('201903', '2', '1', 1); - select * from list_list; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - 201903 | 1 | 1 | 1 - 201902 | 2 | 1 | 1 - 201902 | 1 | 1 | 1 - 201902 | 1 | 1 | 1 - (6 rows) - - select * from list_list partition (p_201901); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201902 | 2 | 1 | 1 - 201902 | 1 | 1 | 1 - 201902 | 1 | 1 | 1 - (3 rows) - - alter table list_list truncate partition p_201901; - select * from list_list partition (p_201901); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - (0 rows) - - select * from list_list partition (p_201902); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - 201903 | 1 | 1 | 1 - (3 rows) - - alter table list_list truncate partition p_201902; - select * from list_list partition (p_201902); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - (0 rows) - - select * from list_list; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - (0 rows) - - insert into list_list values('201902', '1', '1', 1); - insert into list_list values('201902', '2', '1', 1); - insert into list_list values('201902', '1', '1', 1); - insert into list_list values('201903', '2', '1', 1); - insert into list_list values('201903', '1', '1', 1); - insert into list_list values('201903', '2', '1', 1); - select * from list_list subpartition (p_201901_a); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201902 | 1 | 1 | 1 - 201902 | 1 | 1 | 1 - (2 rows) - - alter table list_list truncate subpartition p_201901_a; - select * from list_list subpartition (p_201901_a); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - (0 rows) - - select * from list_list subpartition (p_201901_b); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201902 | 2 | 1 | 1 - (1 row) - - alter table list_list truncate subpartition p_201901_b; - select * from list_list subpartition (p_201901_b); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - (0 rows) - - select * from list_list subpartition (p_201902_a); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 1 | 1 | 1 - (1 row) - - alter table list_list truncate subpartition p_201902_a; - select * from list_list subpartition (p_201902_a); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - (0 rows) - - select * from list_list subpartition (p_201902_b); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - (2 rows) - - alter table list_list truncate subpartition p_201902_b; - select * from list_list subpartition (p_201902_b); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - (0 rows) - - select * from list_list; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - (0 rows) - - drop table list_list; - - ``` - - -- 示例3:对二级分区表进行split操作 - - ``` - CREATE TABLE list_list - ( - month_code VARCHAR2 ( 30 ) NOT NULL , - dept_code VARCHAR2 ( 30 ) NOT NULL , - user_no VARCHAR2 ( 30 ) NOT NULL , - sales_amt int - ) - PARTITION BY LIST (month_code) SUBPARTITION BY LIST (dept_code) - ( - PARTITION p_201901 VALUES ( '201902' ) - ( - SUBPARTITION p_201901_a VALUES ( '1' ), - SUBPARTITION p_201901_b VALUES ( default ) - ), - PARTITION p_201902 VALUES ( '201903' ) - ( - SUBPARTITION p_201902_a VALUES ( '1' ), - SUBPARTITION p_201902_b VALUES ( default ) - ) - ); - insert into list_list values('201902', '1', '1', 1); - insert into list_list values('201902', '2', '1', 1); - insert into list_list values('201902', '1', '1', 1); - insert into list_list values('201903', '2', '1', 1); - insert into list_list values('201903', '1', '1', 1); - insert into list_list values('201903', '2', '1', 1); - select * from list_list; - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - 201903 | 1 | 1 | 1 - 201902 | 2 | 1 | 1 - 201902 | 1 | 1 | 1 - 201902 | 1 | 1 | 1 - (6 rows) - - select * from list_list subpartition (p_201901_a); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201902 | 1 | 1 | 1 - 201902 | 1 | 1 | 1 - (2 rows) - - select * from list_list subpartition (p_201901_b); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201902 | 2 | 1 | 1 - (1 row) - - alter table list_list split subpartition p_201901_b values (2) into - ( - subpartition p_201901_b, - subpartition p_201901_c - ); - select * from list_list subpartition (p_201901_a); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201902 | 1 | 1 | 1 - 201902 | 1 | 1 | 1 - (2 rows) - - select * from list_list subpartition (p_201901_b); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201902 | 2 | 1 | 1 - (1 row) - - select * from list_list subpartition (p_201901_c); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - (0 rows) - - select * from list_list partition (p_201901); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201902 | 2 | 1 | 1 - 201902 | 1 | 1 | 1 - 201902 | 1 | 1 | 1 - (3 rows) - - select * from list_list subpartition (p_201902_a); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 1 | 1 | 1 - (1 row) - - select * from list_list subpartition (p_201902_b); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - (2 rows) - - alter table list_list split subpartition p_201902_b values (3) into - ( - subpartition p_201902_b, - subpartition p_201902_c - ); - select * from list_list subpartition (p_201902_a); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 1 | 1 | 1 - (1 row) - - select * from list_list subpartition (p_201902_b); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - (0 rows) - - select * from list_list subpartition (p_201902_c); - month_code | dept_code | user_no | sales_amt - ------------+-----------+---------+----------- - 201903 | 2 | 1 | 1 - 201903 | 2 | 1 | 1 - (2 rows) - - drop table list_list; - ``` - - +# CREATE TABLE SUBPARTITION + +## 功能描述 + +创建二级分区表。分区表是把逻辑上的一张表根据某种方案分成几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。对于二级分区表,顶层节点表和一级分区都是逻辑表,不存储数据,只有二级分区(叶子节点)存储数据。 + +二级分区表的分区方案是由两个一级分区的分区方案组合而来的,一级分区的分区方案详见章节 CREATE TABLE PARTITION 。 + +常见的二级分区表组合方案有Range-Range分区、Range-List分区、Range-Hash分区、List-Range分区、List-List分区、List-Hash分区、Hash-Range分区、Hash-List分区、Hash-Hash分区等。目前二级分区仅支持行存表。 + +## 注意事项 + +- 二级分区表有两个分区键,每个分区键只能支持 1 列。 +- 唯一约束和主键约束的约束键包含所有分区键将为约束创建 LOCAL 索引,否则创建 GLOBAL 索引。 +- 二级分区表的二级分区(叶子节点)个数不能超过 1048575 个,一级分区无限制,但一级分区下面至少有一个二级分区。 +- 二级分区表只支持行存,不支持列存、段页式、hashbucket。 +- 不支持Upsert、Merge into。 +- 指定分区查询时,如select \* from tablename partition/subpartition \(partitionname\),关键字 partition 和 subpartition 注意不要写错。如果写错,查询不会报错,这时查询会变为对表起别名进行查询。 +- 不支持对二级分区 subpartition for \(values\)查询。如select \* from tablename subpartition for \(values\)。 +- 不支持密态数据库、账本数据库和行级访问控制。 + +## 语法格式 + +``` +CREATE TABLE [ IF NOT EXISTS ] subpartition_table_name +( +{ column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ] +| table_constraint +| LIKE source_table [ like_option [...] ] }[, ... ] +) +[ WITH ( {storage_parameter = value} [, ... ] ) ] +[ COMPRESS | NOCOMPRESS ] +[ TABLESPACE tablespace_name ] +PARTITION BY {RANGE | LIST | HASH} (partition_key) SUBPARTITION BY {RANGE | LIST | HASH} (subpartition_key) +( + PARTITION partition_name1 [ VALUES LESS THAN (val1) | VALUES (val1[, …]) ] [ TABLESPACE tablespace ] + ( + { SUBPARTITION subpartition_name1 [ VALUES LESS THAN (val1_1) | VALUES (val1_1[, …])] [ TABLESPACE tablespace ] } [, ...] + )[, ...] +)[ { ENABLE | DISABLE } ROW MOVEMENT ]; +``` + +- 列约束column\_constraint: + + ``` + [ CONSTRAINT constraint_name ] + { NOT NULL | + NULL | + CHECK ( expression ) | + DEFAULT default_e xpr | + GENERATED ALWAYS AS ( generation_expr ) STORED | + UNIQUE index_parameters | + PRIMARY KEY index_parameters | + REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] + [ ON DELETE action ] [ ON UPDATE action ] } + [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] + ``` + +- 表约束table\_constraint: + + ``` + [ CONSTRAINT constraint_name ] + { CHECK ( expression ) | + UNIQUE ( column_name [, ... ] ) index_parameters | + PRIMARY KEY ( column_name [, ... ] ) index_parameters | + FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] + [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } + [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] + ``` + + +- like选项like\_option: + + ``` + { INCLUDING | EXCLUDING } { DEFAULTS | GENERATED | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | RELOPTIONS| ALL } + ``` + + +- 索引存储参数index\_parameters: + + ``` + [ WITH ( {storage_parameter = value} [, ... ] ) ] + [ USING INDEX TABLESPACE tablespace_name ] + ``` + + +## 参数说明 + +- **IF NOT EXISTS** + + 如果已经存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表关系已存在。 + +- **subpartition\_table\_name** + + 二级分区表的名称。 + + 取值范围:字符串,要符合标识符的命名规范。 + + +- **column\_name** + + 新表中要创建的字段名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **data\_type** + + 字段的数据类型。 + +- **COLLATE collation** + +COLLATE 子句指定列的排序规则(该列必须是可排列的数据类型)。如果没有指定,则使用默认的排序规则。排序规则可以使用“select \* from pg\_collation;”命令从pg\_collation系统表中查询,默认的排序规则为查询结果中以 default 开始的行。 + +- **CONSTRAINT constraint\_name** + + 列约束或表约束的名称。可选的约束子句用于声明约束,新行或者更新的行必须满足这些约束才能成功插入或更新。 + + 定义约束有两种方法: + + - 列约束:作为一个列定义的一部分,仅影响该列。 + - 表约束:不和某个列绑在一起,可以作用于多个列。 + +- **LIKE source\_table \[ like\_option ... \]** + + 二级分区表暂不支持该功能。 + +- **WITH \( storage\_parameter \[= value\] \[, ... \] \)** + + 这个子句为表或索引指定一个可选的存储参数。参数的详细描述如下所示: + + - FILLFACTOR + + 一个表的填充因子(fillfactor)是一个介于 10 和 100 之间的百分数。100(完全填充)是默认值。如果指定了较小的填充因子, INSERT 操作仅按照填充因子指定的百分率填充表页。每个页上的剩余空间将用于在该页上更新行,这就使得 UPDATE 有机会在同一页上放置同一条记录的新版本,这比把新版本放置在其他页上更有效。对于一个从不更新的表将填充因子设为 100 是最佳选择,但是对于频繁更新的表,选择较小的填充因子则更加合适。该参数对于列存表没有意义。 + + 取值范围:10\~100 + + - ORIENTATION + + 决定了表的数据的存储方式。 + + 取值范围: + + - COLUMN:表的数据将以列式存储。 + - ROW(缺省值):表的数据将以行式存储。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >orientation不支持修改。 + + + - COMPRESSION + - 列存表的有效值为LOW/MIDDLE/HIGH/YES/NO,压缩级别依次升高,默认值为 LOW 。 + - 行存表不支持压缩。 + + - MAX\_BATCHROW + + 指定了在数据加载过程中一个存储单元可以容纳记录的最大数目。该参数只对列存表有效。 + + 取值范围:10000\~60000,默认 60000 。 + + - PARTIAL\_CLUSTER\_ROWS + + 指定了在数据加载过程中进行将局部聚簇存储的记录数目。该参数只对列存表有效。 + + 取值范围:大于等于MAX\_BATCHROW,建议取值为MAX\_BATCHROW的整数倍数。 + + - DELTAROW\_THRESHOLD + + 预留参数。该参数只对列存表有效。 + + 取值范围:0~9999 + + +- **COMPRESS / NOCOMPRESS** + + 创建一个新表时,需要在创建表语句中指定关键字 COMPRESS ,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字 NOCOMPRESS 则不对表进行压缩。行存表不支持压缩。 + + 缺省值为 NOCOMPRESS ,即不对元组数据进行压缩。 + +- **TABLESPACE tablespace\_name** + + 指定新表将要在tablespace\_name表空间内创建。如果没有声明,将使用默认表空间。 + +- **PARTITION BY \{RANGE | LIST | HASH\} \(partition\_key\)** + - 对于partition\_key,分区策略的分区键仅支持 1 列。 + - 分区键支持的数据类型和一级分区表约束保持一致。 + +- **SUBPARTITION BY \{RANGE | LIST | HASH\} \(subpartition\_key\)** + - 对于subpartition\_key,分区策略的分区键仅支持 1 列。 + - 分区键支持的数据类型和一级分区表约束保持一致。 + + +- **\{ ENABLE | DISABLE \} ROW MOVEMENT** + + 行迁移开关。 + + 如果进行 UPDATE 操作时,更新了元组在分区键上的值,造成了该元组所在分区发生变化,就会根据该开关给出报错信息,或者进行元组在分区间的转移。 + + 取值范围: + + - ENABLE(缺省值):行迁移开关打开。 + - DISABLE:行迁移开关关闭。 + +- **NOT NULL** + + 字段值不允许为 NULL 。 ENABLE 用于语法兼容,可省略。 + +- **NULL** + + 字段值允许 NULL ,这是缺省。 + + 这个子句只是为和非标准 SQL 数据库兼容。不建议使用。 + +- **CHECK \(condition\) \[ NO INHERIT \]** + +CHECK 约束声明一个布尔表达式,每次要插入的新行或者要更新的行的新值必须使表达式结果为真或未知才能成功,否则会抛出一个异常并且不会修改数据库。 + + 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。 + + 用 NO INHERIT 标记的约束将不会传递到子表中去。 + +ENABLE 用于语法兼容,可省略。 + +- **DEFAULT default\_expr** + +DEFAULT 子句给字段指定缺省值。该数值可以是任何不含变量的表达式\(不允许使用子查询和对本表中的其他字段的交叉引用\)。缺省表达式的数据类型必须和字段类型匹配。 + + 缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为 NULL 。 + +- **GENERATED ALWAYS AS \( generation\_expr \) STORED** + + 该子句将字段创建为生成列,生成列的值在写入(插入或更新)数据时由generation\_expr计算得到, STORED 表示像普通列一样存储生成列的值。 + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- 生成表达式不能以任何方式引用当前行以外的其他数据。生成表达式不能引用其他生成列,不能引用系统列。生成表达式不能返回结果集,不能使用子查询,不能使用聚集函数,不能使用窗口函数。生成表达式调用的函数只能是不可变(IMMUTABLE)函数。 + > + >- 不能为生成列指定默认值。 + > + >- 生成列不能作为分区键的一部分。 + > + >- 生成列不能和 ON UPDATE 约束字句的CASCADE、SET NULL、SET DEFAULT动作同时指定。生成列不能和 ON DELETE 约束字句的SET NULL、SET DEFAULT动作同时指定。 + > + >- 修改和删除生成列的方法和普通列相同。删除生成列依赖的普通列,生成列被自动删除。不能改变生成列所依赖的列的类型。 + > + >- 生成列不能被直接写入。在 INSERT 或 UPDATE 命令中, 不能为生成列指定值, 但是可以指定关键字 DEFAULT 。 + > + >- 生成列的权限控制和普通列一样。 + > + > + >- 不能为生成列指定默认值。 + > + >- 生成列不能作为分区键的一部分。 + > + >- 生成列不能和 ON UPDATE 约束字句的CASCADE、SET NULL、SET DEFAULT动作同时指定。生成列不能和 ON DELETE 约束字句的SET NULL、SET DEFAULT动作同时指定。 + > + >- 修改和删除生成列的方法和普通列相同。删除生成列依赖的普通列,生成列被自动删除。不能改变生成列所依赖的列的类型。 + > + >- 生成列不能被直接写入。在 INSERT 或 UPDATE 命令中, 不能为生成列指定值, 但是可以指定关键字 DEFAULT 。 + > + >- 生成列的权限控制和普通列一样。 + > + >- 列存表、内存表 MOT 不支持生成列。外表中仅postgres\_fdw支持生成列。 + +- **UNIQUE index\_parameters** + + **UNIQUE \( column\_name \[, ... \] \) index\_parameters** + +UNIQUE 约束表示表里的一个字段或多个字段的组合必须在全表范围内唯一。 + + 对于唯一约束, NULL 被认为是互不相等的。 + +- **PRIMARY KEY index\_parameters** + + **PRIMARY KEY \( column\_name \[, ... \] \) index\_parameters** + + 主键约束声明表中的一个或者多个字段只能包含唯一的非 NULL 值。 + + 一个表只能声明一个主键。 + +- **DEFERRABLE | NOT DEFERRABLE** + + 这两个关键字设置该约束是否可推迟。一个不可推迟的约束将在每条命令之后马上检查。可推迟约束可以推迟到事务结尾使用 SET CONSTRAINTS 命令检查。缺省是 NOT DEFERRABLE 。目前, UNIQUE 约束、主键约束、外键约束可以接受这个子句。所有其他约束类型都是不可推迟的。 + +- **INITIALLY IMMEDIATE | INITIALLY DEFERRED** + + 如果约束是可推迟的,则这个子句声明检查约束的缺省时间。 + + - 如果约束是INITIALLY IMMEDIATE(缺省),则在每条语句执行之后就立即检查它; + - 如果约束是 INITIALLY DEFERRED ,则只有在事务结尾才检查它。 + + 约束检查的时间可以用 SET CONSTRAINTS 命令修改。 + +- **USING INDEX TABLESPACE tablespace\_name** + + 为 UNIQUE 或 PRIMARY KEY 约束相关的索引声明一个表空间。如果没有提供这个子句,这个索引将在default\_tablespace中创建,如果default\_tablespace为空,将使用数据库的缺省表空间。 + + +## 示例 + +- 示例1:创建各种组合类型的二级分区表 + + ``` + CREATE TABLE list_list + ( + month_code VARCHAR2 ( 30 ) NOT NULL , + dept_code VARCHAR2 ( 30 ) NOT NULL , + user_no VARCHAR2 ( 30 ) NOT NULL , + sales_amt int + ) + PARTITION BY LIST (month_code) SUBPARTITION BY LIST (dept_code) + ( + PARTITION p_201901 VALUES ( '201902' ) + ( + SUBPARTITION p_201901_a VALUES ( '1' ), + SUBPARTITION p_201901_b VALUES ( '2' ) + ), + PARTITION p_201902 VALUES ( '201903' ) + ( + SUBPARTITION p_201902_a VALUES ( '1' ), + SUBPARTITION p_201902_b VALUES ( '2' ) + ) + ); + insert into list_list values('201902', '1', '1', 1); + insert into list_list values('201902', '2', '1', 1); + insert into list_list values('201902', '1', '1', 1); + insert into list_list values('201903', '2', '1', 1); + insert into list_list values('201903', '1', '1', 1); + insert into list_list values('201903', '2', '1', 1); + select * from list_list; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + 201903 | 1 | 1 | 1 + 201902 | 2 | 1 | 1 + 201902 | 1 | 1 | 1 + 201902 | 1 | 1 | 1 + (6 rows) + + drop table list_list; + CREATE TABLE list_hash + ( + month_code VARCHAR2 ( 30 ) NOT NULL , + dept_code VARCHAR2 ( 30 ) NOT NULL , + user_no VARCHAR2 ( 30 ) NOT NULL , + sales_amt int + ) + PARTITION BY LIST (month_code) SUBPARTITION BY HASH (dept_code) + ( + PARTITION p_201901 VALUES ( '201902' ) + ( + SUBPARTITION p_201901_a , + SUBPARTITION p_201901_b + ), + PARTITION p_201902 VALUES ( '201903' ) + ( + SUBPARTITION p_201902_a , + SUBPARTITION p_201902_b + ) + ); + insert into list_hash values('201902', '1', '1', 1); + insert into list_hash values('201902', '2', '1', 1); + insert into list_hash values('201902', '3', '1', 1); + insert into list_hash values('201903', '4', '1', 1); + insert into list_hash values('201903', '5', '1', 1); + insert into list_hash values('201903', '6', '1', 1); + select * from list_hash; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 4 | 1 | 1 + 201903 | 5 | 1 | 1 + 201903 | 6 | 1 | 1 + 201902 | 2 | 1 | 1 + 201902 | 3 | 1 | 1 + 201902 | 1 | 1 | 1 + (6 rows) + + drop table list_hash; + CREATE TABLE list_range + ( + month_code VARCHAR2 ( 30 ) NOT NULL , + dept_code VARCHAR2 ( 30 ) NOT NULL , + user_no VARCHAR2 ( 30 ) NOT NULL , + sales_amt int + ) + PARTITION BY LIST (month_code) SUBPARTITION BY RANGE (dept_code) + ( + PARTITION p_201901 VALUES ( '201902' ) + ( + SUBPARTITION p_201901_a values less than ('4'), + SUBPARTITION p_201901_b values less than ('6') + ), + PARTITION p_201902 VALUES ( '201903' ) + ( + SUBPARTITION p_201902_a values less than ('3'), + SUBPARTITION p_201902_b values less than ('6') + ) + ); + insert into list_range values('201902', '1', '1', 1); + insert into list_range values('201902', '2', '1', 1); + insert into list_range values('201902', '3', '1', 1); + insert into list_range values('201903', '4', '1', 1); + insert into list_range values('201903', '5', '1', 1); + insert into list_range values('201903', '6', '1', 1); + ERROR: inserted partition key does not map to any table partition + select * from list_range; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 4 | 1 | 1 + 201903 | 5 | 1 | 1 + 201902 | 1 | 1 | 1 + 201902 | 2 | 1 | 1 + 201902 | 3 | 1 | 1 + (5 rows) + + drop table list_range; + CREATE TABLE range_list + ( + month_code VARCHAR2 ( 30 ) NOT NULL , + dept_code VARCHAR2 ( 30 ) NOT NULL , + user_no VARCHAR2 ( 30 ) NOT NULL , + sales_amt int + ) + PARTITION BY RANGE (month_code) SUBPARTITION BY LIST (dept_code) + ( + PARTITION p_201901 VALUES LESS THAN( '201903' ) + ( + SUBPARTITION p_201901_a values ('1'), + SUBPARTITION p_201901_b values ('2') + ), + PARTITION p_201902 VALUES LESS THAN( '201904' ) + ( + SUBPARTITION p_201902_a values ('1'), + SUBPARTITION p_201902_b values ('2') + ) + ); + insert into range_list values('201902', '1', '1', 1); + insert into range_list values('201902', '2', '1', 1); + insert into range_list values('201902', '1', '1', 1); + insert into range_list values('201903', '2', '1', 1); + insert into range_list values('201903', '1', '1', 1); + insert into range_list values('201903', '2', '1', 1); + select * from range_list; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201902 | 2 | 1 | 1 + 201902 | 1 | 1 | 1 + 201902 | 1 | 1 | 1 + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + 201903 | 1 | 1 | 1 + (6 rows) + + drop table range_list; + CREATE TABLE range_hash + ( + month_code VARCHAR2 ( 30 ) NOT NULL , + dept_code VARCHAR2 ( 30 ) NOT NULL , + user_no VARCHAR2 ( 30 ) NOT NULL , + sales_amt int + ) + PARTITION BY RANGE (month_code) SUBPARTITION BY HASH (dept_code) + ( + PARTITION p_201901 VALUES LESS THAN( '201903' ) + ( + SUBPARTITION p_201901_a , + SUBPARTITION p_201901_b + ), + PARTITION p_201902 VALUES LESS THAN( '201904' ) + ( + SUBPARTITION p_201902_a , + SUBPARTITION p_201902_b + ) + ); + insert into range_hash values('201902', '1', '1', 1); + insert into range_hash values('201902', '2', '1', 1); + insert into range_hash values('201902', '1', '1', 1); + insert into range_hash values('201903', '2', '1', 1); + insert into range_hash values('201903', '1', '1', 1); + insert into range_hash values('201903', '2', '1', 1); + select * from range_hash; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201902 | 2 | 1 | 1 + 201902 | 1 | 1 | 1 + 201902 | 1 | 1 | 1 + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + 201903 | 1 | 1 | 1 + (6 rows) + + drop table range_hash; + CREATE TABLE range_range + ( + month_code VARCHAR2 ( 30 ) NOT NULL , + dept_code VARCHAR2 ( 30 ) NOT NULL , + user_no VARCHAR2 ( 30 ) NOT NULL , + sales_amt int + ) + PARTITION BY RANGE (month_code) SUBPARTITION BY RANGE (dept_code) + ( + PARTITION p_201901 VALUES LESS THAN( '201903' ) + ( + SUBPARTITION p_201901_a VALUES LESS THAN( '2' ), + SUBPARTITION p_201901_b VALUES LESS THAN( '3' ) + ), + PARTITION p_201902 VALUES LESS THAN( '201904' ) + ( + SUBPARTITION p_201902_a VALUES LESS THAN( '2' ), + SUBPARTITION p_201902_b VALUES LESS THAN( '3' ) + ) + ); + insert into range_range values('201902', '1', '1', 1); + insert into range_range values('201902', '2', '1', 1); + insert into range_range values('201902', '1', '1', 1); + insert into range_range values('201903', '2', '1', 1); + insert into range_range values('201903', '1', '1', 1); + insert into range_range values('201903', '2', '1', 1); + select * from range_range; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201902 | 1 | 1 | 1 + 201902 | 1 | 1 | 1 + 201902 | 2 | 1 | 1 + 201903 | 1 | 1 | 1 + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + (6 rows) + + drop table range_range; + CREATE TABLE hash_list + ( + month_code VARCHAR2 ( 30 ) NOT NULL , + dept_code VARCHAR2 ( 30 ) NOT NULL , + user_no VARCHAR2 ( 30 ) NOT NULL , + sales_amt int + ) + PARTITION BY hash (month_code) SUBPARTITION BY LIST (dept_code) + ( + PARTITION p_201901 + ( + SUBPARTITION p_201901_a VALUES ( '1' ), + SUBPARTITION p_201901_b VALUES ( '2' ) + ), + PARTITION p_201902 + ( + SUBPARTITION p_201902_a VALUES ( '1' ), + SUBPARTITION p_201902_b VALUES ( '2' ) + ) + ); + insert into hash_list values('201901', '1', '1', 1); + insert into hash_list values('201901', '2', '1', 1); + insert into hash_list values('201901', '1', '1', 1); + insert into hash_list values('201903', '2', '1', 1); + insert into hash_list values('201903', '1', '1', 1); + insert into hash_list values('201903', '2', '1', 1); + select * from hash_list; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + 201903 | 1 | 1 | 1 + 201901 | 2 | 1 | 1 + 201901 | 1 | 1 | 1 + 201901 | 1 | 1 | 1 + (6 rows) + + drop table hash_list; + CREATE TABLE hash_hash + ( + month_code VARCHAR2 ( 30 ) NOT NULL , + dept_code VARCHAR2 ( 30 ) NOT NULL , + user_no VARCHAR2 ( 30 ) NOT NULL , + sales_amt int + ) + PARTITION BY hash (month_code) SUBPARTITION BY hash (dept_code) + ( + PARTITION p_201901 + ( + SUBPARTITION p_201901_a , + SUBPARTITION p_201901_b + ), + PARTITION p_201902 + ( + SUBPARTITION p_201902_a , + SUBPARTITION p_201902_b + ) + ); + insert into hash_hash values('201901', '1', '1', 1); + insert into hash_hash values('201901', '2', '1', 1); + insert into hash_hash values('201901', '1', '1', 1); + insert into hash_hash values('201903', '2', '1', 1); + insert into hash_hash values('201903', '1', '1', 1); + insert into hash_hash values('201903', '2', '1', 1); + select * from hash_hash; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + 201903 | 1 | 1 | 1 + 201901 | 2 | 1 | 1 + 201901 | 1 | 1 | 1 + 201901 | 1 | 1 | 1 + (6 rows) + + drop table hash_hash; + CREATE TABLE hash_range + ( + month_code VARCHAR2 ( 30 ) NOT NULL , + dept_code VARCHAR2 ( 30 ) NOT NULL , + user_no VARCHAR2 ( 30 ) NOT NULL , + sales_amt int + ) + PARTITION BY hash (month_code) SUBPARTITION BY range (dept_code) + ( + PARTITION p_201901 + ( + SUBPARTITION p_201901_a VALUES LESS THAN ( '2' ), + SUBPARTITION p_201901_b VALUES LESS THAN ( '3' ) + ), + PARTITION p_201902 + ( + SUBPARTITION p_201902_a VALUES LESS THAN ( '2' ), + SUBPARTITION p_201902_b VALUES LESS THAN ( '3' ) + ) + ); + insert into hash_range values('201901', '1', '1', 1); + insert into hash_range values('201901', '2', '1', 1); + insert into hash_range values('201901', '1', '1', 1); + insert into hash_range values('201903', '2', '1', 1); + insert into hash_range values('201903', '1', '1', 1); + insert into hash_range values('201903', '2', '1', 1); + select * from hash_range; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 1 | 1 | 1 + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + 201901 | 1 | 1 | 1 + 201901 | 1 | 1 | 1 + 201901 | 2 | 1 | 1 + (6 rows) + ``` + +- 示例2:对二级分区表进行 truncate 操作 + + ``` + CREATE TABLE list_list + ( + month_code VARCHAR2 ( 30 ) NOT NULL , + dept_code VARCHAR2 ( 30 ) NOT NULL , + user_no VARCHAR2 ( 30 ) NOT NULL , + sales_amt int + ) + PARTITION BY LIST (month_code) SUBPARTITION BY LIST (dept_code) + ( + PARTITION p_201901 VALUES ( '201902' ) + ( + SUBPARTITION p_201901_a VALUES ( '1' ), + SUBPARTITION p_201901_b VALUES ( default ) + ), + PARTITION p_201902 VALUES ( '201903' ) + ( + SUBPARTITION p_201902_a VALUES ( '1' ), + SUBPARTITION p_201902_b VALUES ( '2' ) + ) + ); + insert into list_list values('201902', '1', '1', 1); + insert into list_list values('201902', '2', '1', 1); + insert into list_list values('201902', '1', '1', 1); + insert into list_list values('201903', '2', '1', 1); + insert into list_list values('201903', '1', '1', 1); + insert into list_list values('201903', '2', '1', 1); + select * from list_list; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + 201903 | 1 | 1 | 1 + 201902 | 2 | 1 | 1 + 201902 | 1 | 1 | 1 + 201902 | 1 | 1 | 1 + (6 rows) + + select * from list_list partition (p_201901); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201902 | 2 | 1 | 1 + 201902 | 1 | 1 | 1 + 201902 | 1 | 1 | 1 + (3 rows) + + alter table list_list truncate partition p_201901; + select * from list_list partition (p_201901); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + (0 rows) + + select * from list_list partition (p_201902); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + 201903 | 1 | 1 | 1 + (3 rows) + + alter table list_list truncate partition p_201902; + select * from list_list partition (p_201902); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + (0 rows) + + select * from list_list; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + (0 rows) + + insert into list_list values('201902', '1', '1', 1); + insert into list_list values('201902', '2', '1', 1); + insert into list_list values('201902', '1', '1', 1); + insert into list_list values('201903', '2', '1', 1); + insert into list_list values('201903', '1', '1', 1); + insert into list_list values('201903', '2', '1', 1); + select * from list_list subpartition (p_201901_a); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201902 | 1 | 1 | 1 + 201902 | 1 | 1 | 1 + (2 rows) + + alter table list_list truncate subpartition p_201901_a; + select * from list_list subpartition (p_201901_a); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + (0 rows) + + select * from list_list subpartition (p_201901_b); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201902 | 2 | 1 | 1 + (1 row) + + alter table list_list truncate subpartition p_201901_b; + select * from list_list subpartition (p_201901_b); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + (0 rows) + + select * from list_list subpartition (p_201902_a); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 1 | 1 | 1 + (1 row) + + alter table list_list truncate subpartition p_201902_a; + select * from list_list subpartition (p_201902_a); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + (0 rows) + + select * from list_list subpartition (p_201902_b); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + (2 rows) + + alter table list_list truncate subpartition p_201902_b; + select * from list_list subpartition (p_201902_b); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + (0 rows) + + select * from list_list; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + (0 rows) + + drop table list_list; + + ``` + + +- 示例3:对二级分区表进行 split 操作 + + ``` + CREATE TABLE list_list + ( + month_code VARCHAR2 ( 30 ) NOT NULL , + dept_code VARCHAR2 ( 30 ) NOT NULL , + user_no VARCHAR2 ( 30 ) NOT NULL , + sales_amt int + ) + PARTITION BY LIST (month_code) SUBPARTITION BY LIST (dept_code) + ( + PARTITION p_201901 VALUES ( '201902' ) + ( + SUBPARTITION p_201901_a VALUES ( '1' ), + SUBPARTITION p_201901_b VALUES ( default ) + ), + PARTITION p_201902 VALUES ( '201903' ) + ( + SUBPARTITION p_201902_a VALUES ( '1' ), + SUBPARTITION p_201902_b VALUES ( default ) + ) + ); + insert into list_list values('201902', '1', '1', 1); + insert into list_list values('201902', '2', '1', 1); + insert into list_list values('201902', '1', '1', 1); + insert into list_list values('201903', '2', '1', 1); + insert into list_list values('201903', '1', '1', 1); + insert into list_list values('201903', '2', '1', 1); + select * from list_list; + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + 201903 | 1 | 1 | 1 + 201902 | 2 | 1 | 1 + 201902 | 1 | 1 | 1 + 201902 | 1 | 1 | 1 + (6 rows) + + select * from list_list subpartition (p_201901_a); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201902 | 1 | 1 | 1 + 201902 | 1 | 1 | 1 + (2 rows) + + select * from list_list subpartition (p_201901_b); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201902 | 2 | 1 | 1 + (1 row) + + alter table list_list split subpartition p_201901_b values (2) into + ( + subpartition p_201901_b , + subpartition p_201901_c + ); + select * from list_list subpartition (p_201901_a); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201902 | 1 | 1 | 1 + 201902 | 1 | 1 | 1 + (2 rows) + + select * from list_list subpartition (p_201901_b); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201902 | 2 | 1 | 1 + (1 row) + + select * from list_list subpartition (p_201901_c); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + (0 rows) + + select * from list_list partition (p_201901); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201902 | 2 | 1 | 1 + 201902 | 1 | 1 | 1 + 201902 | 1 | 1 | 1 + (3 rows) + + select * from list_list subpartition (p_201902_a); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 1 | 1 | 1 + (1 row) + + select * from list_list subpartition (p_201902_b); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + (2 rows) + + alter table list_list split subpartition p_201902_b values (3) into + ( + subpartition p_201902_b , + subpartition p_201902_c + ); + select * from list_list subpartition (p_201902_a); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 1 | 1 | 1 + (1 row) + + select * from list_list subpartition (p_201902_b); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + (0 rows) + + select * from list_list subpartition (p_201902_c); + month_code | dept_code | user_no | sales_amt + ------------+-----------+---------+----------- + 201903 | 2 | 1 | 1 + 201903 | 2 | 1 | 1 + (2 rows) + + drop table list_list; + ``` + + diff --git a/content/zh/docs/Developerguide/CREATE-TABLE.md b/content/zh/docs/Developerguide/CREATE-TABLE.md index 8540787db..75dd75827 100644 --- a/content/zh/docs/Developerguide/CREATE-TABLE.md +++ b/content/zh/docs/Developerguide/CREATE-TABLE.md @@ -1,1037 +1,1037 @@ -# CREATE TABLE - -## 功能描述 - -在当前数据库中创建一个新的空白表,该表由命令执行者所有。 - -## 注意事项 - -- 列存表支持的数据类型请参考[列存表支持的数据类型](列存表支持的数据类型.md)。 -- 列存表不支持数组。 -- 列存表不支持生成列。 -- 列存表不支持创建全局临时表。 -- 创建列存表的数量建议不超过1000个。 -- 如果在建表过程中数据库系统发生故障,系统恢复后可能无法自动清除之前已创建的、大小为0的磁盘文件。此种情况出现概率小,不影响数据库系统的正常运行。 -- 列存表的表级约束只支持PARTIAL CLUSTER KEY、UNIQUE、PRIAMRY KEY,不支持外键等表级约束。 -- 列存表的字段约束只支持NULL、NOT NULL、DEFAULT常量值、UNIQUE和PRIMARY KEY。 -- 列存表支持delta表,受参数enable\_delta\_store控制是否开启,受参数deltarow\_threshold控制进入delta表的阀值。 -- 使用JDBC时,支持通过PrepareStatement对DEFAUTL值进行参数化设置。 -- 每张表的列数最大为1600,具体取决于列的类型,所有列的大小加起来不能超过8192 byte,text、varchar、char等长度可变的类型除外。 - -## 语法格式 - -创建表。 - -``` -CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name - ({ column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] - | table_constraint - | LIKE source_table [ like_option [...] ] } - [, ... ]) - [ WITH ( {storage_parameter = value} [, ... ] ) ] - [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] - [ COMPRESS | NOCOMPRESS ] - [ TABLESPACE tablespace_name ]; -``` - -- 其中列约束column\_constraint为: - - ``` - [ CONSTRAINT constraint_name ] - { NOT NULL | - NULL | - CHECK ( expression ) | - DEFAULT default_expr | - UNIQUE index_parameters | - ENCRYPTED WITH ( COLUMN_ENCRYPTION_KEY = column_encryption_key, ENCRYPTION_TYPE = encryption_type_value ) | - PRIMARY KEY index_parameters | - REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] - [ ON DELETE action ] [ ON UPDATE action ] } - [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] - ``` - - -- 其中列的压缩可选项compress\_mode为: - - ``` - { DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS } - ``` - -- 其中表约束table\_constraint为: - - ``` - [ CONSTRAINT constraint_name ] - { CHECK ( expression ) | - UNIQUE ( column_name [, ... ] ) index_parameters | - PRIMARY KEY ( column_name [, ... ] ) index_parameters | - FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ (refcolumn [, ... ] ) ] - [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] | - PARTIAL CLUSTER KEY ( column_name [, ... ] ) } - [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] - ``` - - -- 其中like选项like\_option为: - - ``` - { INCLUDING | EXCLUDING } { DEFAULTS | GENERATED | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | PARTITION | RELOPTIONS | ALL } - ``` - -- 其中索引参数index\_parameters为: - - ``` - [ WITH ( {storage_parameter = value} [, ... ] ) ] - [ USING INDEX TABLESPACE tablespace_name ] - ``` - - -## 参数说明 - -- **UNLOGGED** - - 如果指定此关键字,则创建的表为非日志表。在非日志表中写入的数据不会被写入到预写日志中,这样就会比普通表快很多。但是非日志表在冲突、执行操作系统重启、强制重启、切断电源操作或异常关机后会被自动截断,会造成数据丢失的风险。非日志表中的内容也不会被复制到备服务器中。在非日志表中创建的索引也不会被自动记录。 - - 使用场景:非日志表不能保证数据的安全性,用户应该在确保数据已经做好备份的前提下使用,例如系统升级时进行数据的备份。 - - 故障处理:当异常关机等操作导致非日志表上的索引发生数据丢失时,用户应该对发生错误的索引进行重建。 - -- **GLOBAL | LOCAL** - - 创建临时表时可以在TEMP或TEMPORARY前指定GLOBAL或LOCAL关键字。如果指定GLOBAL关键字,openGauss会创建全局临时表,否则openGauss会创建本地临时表。 - -- **TEMPORARY | TEMP** - - 如果指定TEMP或TEMPORARY关键字,则创建的表为临时表。临时表分为全局临时表和本地临时表两种类型。创建临时表时如果指定GLOBAL关键字则为全局临时表,否则为本地临时表。 - - 全局临时表的元数据对所有会话可见,会话结束后元数据继续存在。会话与会话之间的用户数据、索引和统计信息相互隔离,每个会话只能看到和更改自己提交的数据。全局临时表有两种模式:一种是基于会话级别的\(ON COMMIT PRESERVE ROWS\), 当会话结束时自动清空用户数据;一种是基于事务级别的\(ON COMMIT DELETE ROWS\), 当执行commit或rollback时自动清空用户数据。建表时如果没有指定ON COMMIT选项,则缺省为会话级别。与本地临时表不同,全局临时表建表时可以指定非pg\_temp\_开头的schema。 - - 本地临时表只在当前会话可见,本会话结束后会自动删除。因此,在除当前会话连接的数据库节点故障时,仍然可以在当前会话上创建和使用临时表。由于临时表只在当前会话创建,对于涉及对临时表操作的DDL语句,会产生DDL失败的报错。因此,建议DDL语句中不要对临时表进行操作。TEMP和TEMPORARY等价。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - > - >- 本地临时表通过每个会话独立的以pg\_temp开头的schema来保证只对当前会话可见,因此,不建议用户在日常操作中手动删除以pg\_temp、pg\_toast\_temp开头的schema。 - > - >- 如果建表时不指定TEMPORARY/TEMP关键字,而指定表的schema为当前会话的pg\_temp\_开头的schema,则此表会被创建为临时表。 - > - >- ALTER/DROP全局临时表和索引,如果其它会话正在使用它,禁止操作(ALTER INDEX index\_name REBUILD除外)。 - > - >- 全局临时表的DDL只会影响当前会话的用户数据和索引。例如truncate、reindex、analyze只对当前会话有效。 - > - >- 全局临时表功能可以通过设置GUC参数max\_active\_global\_temporary\_table控制是否启用。如果max\_active\_global\_temporary\_table=0,关闭全局临时表功能。 - > - >- 临时表只对当前会话可见,因此不支持与\\parallel on并行执行一起使用。 - > - >- \\parallel on临时表不支持主备切换。 - -- **IF NOT EXISTS** - - 如果已经存在相同名称的表,不会报出错误,而会发出通知,告知通知此表已存在。 - -- **table\_name** - - 要创建的表名。 - -- **column\_name** - - 新表中要创建的字段名。 - -- **data\_type** - - 字段的数据类型。 - -- **compress\_mode** - - 表字段的压缩选项。该选项指定表字段优先使用的压缩算法。行存表不支持压缩。 - - 取值范围:DELTA、PREFIX、DICTIONARY、NUMSTR、NOCOMPRESS - -- **COLLATE collation** - - COLLATE子句指定列的排序规则(该列必须是可排列的数据类型)。如果没有指定,则使用默认的排序规则。排序规则可以使用“select \* from pg\_collation;”命令从pg\_collation系统表中查询,默认的排序规则为查询结果中以default开始的行。 - -- **LIKE source\_table \[ like\_option ... \]** - - LIKE子句声明一个表,新表自动从这个表中继承所有字段名及其数据类型和非空约束。 - - 新表与源表之间在创建动作完毕之后是完全无关的。在源表做的任何修改都不会传播到新表中,并且也不可能在扫描源表的时候包含新表的数据。 - - 被复制的列和约束并不使用相同的名称进行融合。如果明确的指定了相同的名称或者在另外一个LIKE子句中,将会报错。 - - - 源表上的字段缺省表达式只有在指定INCLUDING DEFAULTS时,才会复制到新表中。缺省是不包含缺省表达式的,即新表中的所有字段的缺省值都是NULL。 - - 源表上的CHECK约束仅在指定INCLUDING CONSTRAINTS时,会复制到新表中,而其他类型的约束永远不会复制到新表中。非空约束总是复制到新表中。此规则同时适用于表约束和列约束。 - - 如果指定了INCLUDING INDEXES,则源表上的索引也将在新表上创建,默认不建立索引。 - - 如果指定了INCLUDING STORAGE,则复制列的STORAGE设置会复制到新表中,默认情况下不包含STORAGE设置。 - - 如果指定了INCLUDING COMMENTS,则源表列、约束和索引的注释会复制到新表中。默认情况下,不复制源表的注释。 - - 如果指定了INCLUDING PARTITION,则源表的分区定义会复制到新表中,同时新表将不能再使用PARTITION BY子句。默认情况下,不拷贝源表的分区定义。如果源表上带有索引,可以使用INCLUDING PARTITION INCLUDING INDEXES语法实现。如果对分区表只使用INCLUDING INDEXES,目标表定义将是普通表,但是索引是分区索引,最后结果会报错,因为普通表不支持分区索引。 - - 如果指定了INCLUDING RELOPTIONS,则源表的存储参数(即源表的WITH子句)会复制到新表中。默认情况下,不复制源表的存储参数。 - - INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION和INCLUDING RELOPTIONS的内容。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - > - >- 如果源表包含serial、bigserial、smallserial类型,或者源表字段的默认值是sequence,且sequence属于源表(通过CREATE SEQUENCE ... OWNED BY创建),这些Sequence不会关联到新表中,新表中会重新创建属于自己的sequence。这和之前版本的处理逻辑不同。如果用户希望源表和新表共享Sequence,需要首先创建一个共享的Sequence(避免使用OWNED BY),并配置为源表字段默认值,这样创建的新表会和源表共享该Sequence。 - > - >- 不建议将其他表私有的Sequence配置为源表字段的默认值,尤其是其他表只分布在特定的NodeGroup上,这可能导致CREATE TABLE ... LIKE执行失败。另外,如果源表配置其他表私有的Sequence,当该表删除时Sequence也会连带删除,这样源表的Sequence将不可用。如果用户希望多个表共享Sequence,建议创建共享的Sequence。 - > - >- 对于分区表EXCLUDING,需要配合INCLUDING ALL使用,如INCLUDING ALL EXCLUDING DEFAULTS,除源分区表的DEFAULTS,其它全包含。 - -- **WITH \( \{ storage\_parameter = value \} \[, ... \] \)** - - 这个子句为表或索引指定一个可选的存储参数。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >使用任意精度类型Numeric定义列时,建议指定精度p以及刻度s。在不指定精度和刻度时,会按输入的显示出来。 - - 参数的详细描述如下所示。 - - - FILLFACTOR - - 一个表的填充因子(fillfactor)是一个介于10和100之间的百分数。100(完全填充)是默认值。如果指定了较小的填充因子,INSERT操作仅按照填充因子指定的百分率填充表页。每个页上的剩余空间将用于在该页上更新行,这就使得UPDATE有机会在同一页上放置同一条记录的新版本,这比把新版本放置在其他页上更有效。对于一个从不更新的表将填充因子设为100是最佳选择,但是对于频繁更新的表,选择较小的填充因子则更加合适。该参数对于列存表没有意义。 - - 取值范围:10\~100 - - - ORIENTATION - - 指定表数据的存储方式,即行存方式、列存方式、ORC格式的方式,该参数设置成功后就不再支持修改。 - - 取值范围: - - - ROW,表示表的数据将以行式存储。 - - 行存储适合于OLTP业务,适用于点查询或者增删操作较多的场景。 - - - COLUMN,表示表的数据将以列式存储。 - - 列存储适合于数据仓库业务,此类型的表上会做大量的汇聚计算,且涉及的列操作较少。 - - 默认值: - - 若指定表空间为普通表空间,默认值为ROW。 - - - STORAGE\_TYPE - - 指定存储引擎类型,该参数设置成功后就不再支持修改。 - - 取值范围: - - - USTORE,表示表支持Inplace-Update存储引擎。 - - ASTORE,表示表支持Append-Only存储引擎。 - - 默认值: - - 不指定表时,默认是Append-Only存储。 - - - COMPRESSION - - 指定表数据的压缩级别,它决定了表数据的压缩比以及压缩时间。一般来讲,压缩级别越高,压缩比也越大,压缩时间也越长;反之亦然。实际压缩比取决于加载的表数据的分布特征。行存表不支持压缩。 - - 取值范围: - - 列存表的有效值为YES/NO/LOW/MIDDLE/HIGH,默认值为LOW。 - - - COMPRESSLEVEL - - 指定表数据同一压缩级别下的不同压缩水平,它决定了同一压缩级别下表数据的压缩比以及压缩时间。对同一压缩级别进行了更加详细的划分,为用户选择压缩比和压缩时间提供了更多的空间。总体来讲,此值越大,表示同一压缩级别下压缩比越大,压缩时间越长;反之亦然。 - - 取值范围:0\~3,默认值为0。 - - - MAX\_BATCHROW - - 指定了在数据加载过程中一个存储单元可以容纳记录的最大数目。该参数只对列存表有效。 - - 取值范围:10000\~60000,默认60000。 - - - PARTIAL\_CLUSTER\_ROWS - - 指定了在数据加载过程中进行将局部聚簇存储的记录数目。该参数只对列存表有效。 - - 取值范围:大于等于MAX\_BATCHROW,建议取值为MAX\_BATCHROW的整数倍。 - - - DELTAROW\_THRESHOLD - - 指定列存表导入时小于多少行的数据进入delta表,只在GUC参数enable\_delta\_store开启时生效。该参数只对列存表有效。 - - 取值范围:0~9999,默认值为100 - - - VERSION - - 指定ORC存储格式的版本。 - - 取值范围:0.12,目前支持ORC 0.12格式,后续会随着ORC格式的发展,支持更多格式。 - - 默认值:0.12 - - - segment - - 使用段页式的方式存储。本参数仅支持行存表。不支持列存表、临时表、unlog表。不支持ustore存储引擎。 - - 取值范围:on/off - - 默认值:off - - - dek\_cipher - - 透明数据加密密钥的密文。当开启enable\_tde选项时会自动申请创建,用户不可单独指定。通过密钥轮转功能可以对密钥进行更新。 - - 取值范围:字符串。 - - 默认值:不开启加密时默认为空。 - - -- **ON COMMIT \{ PRESERVE ROWS | DELETE ROWS | DROP \}** - - ON COMMIT选项决定在事务中执行创建临时表操作,当事务提交时,此临时表的后续操作。有以下三个选项,当前支持PRESERVE ROWS和DELETE ROWS选项。 - - - PRESERVE ROWS(缺省值):提交时不对临时表做任何操作,临时表及其表数据保持不变。 - - DELETE ROWS:提交时删除临时表中数据。 - - DROP:提交时删除此临时表。只支持本地临时表,不支持全局临时表。 - -- **COMPRESS | NOCOMPRESS** - - 创建新表时,需要在CREATE TABLE语句中指定关键字COMPRESS,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字NOCOMPRESS则不对表进行压缩。行存表不支持压缩。 - - 缺省值:NOCOMPRESS,即不对元组数据进行压缩。 - -- **TABLESPACE tablespace\_name** - - 创建新表时指定此关键字,表示新表将要在指定表空间内创建。如果没有声明,将使用默认表空间。 - -- **CONSTRAINT constraint\_name** - - 列约束或表约束的名称。可选的约束子句用于声明约束,新行或者更新的行必须满足这些约束才能成功插入或更新。 - - 定义约束有两种方法: - - - 列约束:作为一个列定义的一部分,仅影响该列。 - - 表约束:不和某个列绑在一起,可以作用于多个列。 - -- **NOT NULL** - - 字段值不允许为NULL。 - -- **NULL** - - 字段值允许为NULL ,这是缺省值。 - - 这个子句只是为和非标准SQL数据库兼容。不建议使用。 - -- **CHECK \( expression \)** - - CHECK约束声明一个布尔表达式,每次要插入的新行或者要更新的行的新值必须使表达式结果为真或未知才能成功,否则会抛出一个异常并且不会修改数据库。 - - 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >expression表达式中,如果存在“<\>NULL”或“!=NULL”,这种写法是无效的,需要写成“is NOT NULL”。 - -- **DEFAULT default\_expr** - - DEFAULT子句给字段指定缺省值。该数值可以是任何不含变量的表达式\(不允许使用子查询和对本表中的其他字段的交叉引用\)。缺省表达式的数据类型必须和字段类型匹配。 - - 缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为NULL 。 - -- **UNIQUE index\_parameters** - - **UNIQUE \( column\_name \[, ... \] \) index\_parameters** - - UNIQUE约束表示表里的一个字段或多个字段的组合必须在全表范围内唯一。 - - 对于唯一约束,NULL被认为是互不相等的。 - -- **PRIMARY KEY index\_parameters** - - **PRIMARY KEY \( column\_name \[, ... \] \) index\_parameters** - - 主键约束声明表中的一个或者多个字段只能包含唯一的非NULL值。 - - 一个表只能声明一个主键。 - -- **REFERENCES reftable \[ \( refcolum \) \] \[ MATCH matchtype \] \[ ON DELETE action \] \[ ON UPDATE action \] \(column constraint\)** - - **FOREIGN KEY \( column\_name \[, ... \] \) REFERENCES reftable \[ \( refcolumn \[, ... \] \) \] \[ MATCH matchtype \] \[ ON DELETE action \] \[ ON UPDATE action \] \(table constraint\)** - - 外键约束要求新表中一列或多列构成的组应该只包含、匹配被参考表中被参考字段值。若省略refcolum,则将使用reftable的主键。被参考列应该是被参考表中的唯一字段或主键。外键约束不能被定义在临时表和永久表之间。 - - 参考字段与被参考字段之间存在三种类型匹配,分别是: - - - MATCH FULL:不允许一个多字段外键的字段为NULL,除非全部外键字段都是NULL。 - - MATCH SIMPLE(缺省):允许任意外键字段为NULL。 - - MATCH PARTIAL:目前暂不支持。 - - 另外,当被参考表中的数据发生改变时,某些操作也会在新表对应字段的数据上执行。ON DELETE子句声明当被参考表中的被参考行被删除时要执行的操作。ON UPDATE子句声明当被参考表中的被参考字段数据更新时要执行的操作。对于ON DELETE子句、ON UPDATE子句的可能动作: - - - NO ACTION(缺省):删除或更新时,创建一个表明违反外键约束的错误。若约束可推迟,且若仍存在任何引用行,那这个错误将会在检查约束的时候产生。 - - RESTRICT:删除或更新时,创建一个表明违反外键约束的错误。与NO ACTION相同,只是动作不可推迟。 - - CASCADE:删除新表中任何引用了被删除行的行,或更新新表中引用行的字段值为被参考字段的新值。 - - SET NULL:设置引用字段为NULL。 - - SET DEFAULT:设置引用字段为它们的缺省值。 - -- **DEFERRABLE | NOT DEFERRABLE** - - 这两个关键字设置该约束是否可推迟。一个不可推迟的约束将在每条命令之后马上检查。可推迟约束可以推迟到事务结尾使用SET CONSTRAINTS命令检查。缺省是NOT DEFERRABLE。目前,UNIQUE约束、主键约束、外键约束可以接受这个子句。所有其他约束类型都是不可推迟的。 - -- **PARTIAL CLUSTER KEY** - - 局部聚簇存储,列存表导入数据时按照指定的列\(单列或多列\),进行局部排序。 - -- **INITIALLY IMMEDIATE | INITIALLY DEFERRED** - - 如果约束是可推迟的,则这个子句声明检查约束的缺省时间。 - - - 如果约束是INITIALLY IMMEDIATE(缺省),则在每条语句执行之后就立即检查它; - - 如果约束是INITIALLY DEFERRED ,则只有在事务结尾才检查它。 - - 约束检查的时间可以用SET CONSTRAINTS命令修改。 - -- **USING INDEX TABLESPACE tablespace\_name** - - 为UNIQUE或PRIMARY KEY约束相关的索引声明一个表空间。如果没有提供这个子句,这个索引将在default\_tablespace中创建,如果default\_tablespace为空,将使用数据库的缺省表空间。 - -- **ENCRYPTION\_TYPE = encryption\_type\_value** - - 为ENCRYPTED WITH约束中的加密类型,encryption\_type\_value的值为\[ DETERMINISTIC | RANDOMIZED \] - - -## 示例 - -``` ---创建简单的表。 -openGauss=# CREATE TABLE tpcds.warehouse_t1 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - -openGauss=# CREATE TABLE tpcds.warehouse_t2 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60), - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); -``` - -``` ---创建表,并指定W_STATE字段的缺省值为GA。 -openGauss=# CREATE TABLE tpcds.warehouse_t3 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) DEFAULT 'GA', - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - ---创建表,并在事务结束时检查W_WAREHOUSE_NAME字段是否有重复。 -openGauss=# CREATE TABLE tpcds.warehouse_t4 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) UNIQUE DEFERRABLE, - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); -``` - -``` ---创建一个带有70%填充因子的表。 -openGauss=# CREATE TABLE tpcds.warehouse_t5 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - UNIQUE(W_WAREHOUSE_NAME) WITH(fillfactor=70) -); - ---或者用下面的语法。 -openGauss=# CREATE TABLE tpcds.warehouse_t6 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) UNIQUE, - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -) WITH(fillfactor=70); - ---创建表,并指定该表数据不写入预写日志。 -openGauss=# CREATE UNLOGGED TABLE tpcds.warehouse_t7 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - ---创建表临时表。 -openGauss=# CREATE TEMPORARY TABLE warehouse_t24 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - ---创建本地临时表,并指定提交事务时删除该临时表数据。 -openGauss=# CREATE TEMPORARY TABLE warehouse_t25 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -) ON COMMIT DELETE ROWS; - ---创建全局临时表,并指定会话结束时删除该临时表数据。 -openGauss=# CREATE GLOBAL TEMPORARY TABLE gtt1 -( - ID INTEGER NOT NULL, - NAME CHAR(16) NOT NULL, - ADDRESS VARCHAR(50) , - POSTCODE CHAR(6) -) ON COMMIT PRESERVE ROWS; - ---创建表时,不希望因为表已存在而报错。 -openGauss=# CREATE TABLE IF NOT EXISTS tpcds.warehouse_t8 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - ---创建普通表空间。 -openGauss=# CREATE TABLESPACE DS_TABLESPACE1 RELATIVE LOCATION 'tablespace/tablespace_1'; ---创建表时,指定表空间。 -openGauss=# CREATE TABLE tpcds.warehouse_t9 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -) TABLESPACE DS_TABLESPACE1; - ---创建表时,单独指定W_WAREHOUSE_NAME的索引表空间。 -openGauss=# CREATE TABLE tpcds.warehouse_t10 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) UNIQUE USING INDEX TABLESPACE DS_TABLESPACE1, - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); -``` - -``` ---创建一个有主键约束的表。 -openGauss=# CREATE TABLE tpcds.warehouse_t11 -( - W_WAREHOUSE_SK INTEGER PRIMARY KEY, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - ----或是用下面的语法,效果完全一样。 -openGauss=# CREATE TABLE tpcds.warehouse_t12 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - PRIMARY KEY(W_WAREHOUSE_SK) -); - ---或是用下面的语法,指定约束的名称。 -openGauss=# CREATE TABLE tpcds.warehouse_t13 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - CONSTRAINT W_CSTR_KEY1 PRIMARY KEY(W_WAREHOUSE_SK) -); - ---创建一个有复合主键约束的表。 -openGauss=# CREATE TABLE tpcds.warehouse_t14 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - CONSTRAINT W_CSTR_KEY2 PRIMARY KEY(W_WAREHOUSE_SK, W_WAREHOUSE_ID) -); ---创建列存表。 -openGauss=# CREATE TABLE tpcds.warehouse_t15 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -) WITH (ORIENTATION = COLUMN); - ---创建局部聚簇存储的列存表。 -openGauss=# CREATE TABLE tpcds.warehouse_t16 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - PARTIAL CLUSTER KEY(W_WAREHOUSE_SK, W_WAREHOUSE_ID) -) WITH (ORIENTATION = COLUMN); - ---定义一个带压缩的列存表。 -openGauss=# CREATE TABLE tpcds.warehouse_t17 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -) WITH (ORIENTATION = COLUMN, COMPRESSION=HIGH); - - ---定义一个检查列约束。 -openGauss=# CREATE TABLE tpcds.warehouse_t19 -( - W_WAREHOUSE_SK INTEGER PRIMARY KEY CHECK (W_WAREHOUSE_SK > 0), - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) CHECK (W_WAREHOUSE_NAME IS NOT NULL), - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - -openGauss=# CREATE TABLE tpcds.warehouse_t20 -( - W_WAREHOUSE_SK INTEGER PRIMARY KEY, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) CHECK (W_WAREHOUSE_NAME IS NOT NULL), - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - CONSTRAINT W_CONSTR_KEY2 CHECK(W_WAREHOUSE_SK > 0 AND W_WAREHOUSE_NAME IS NOT NULL) -); - ---创建一个有外键约束的表。 -openGauss=# CREATE TABLE tpcds.city_t23 -( - W_CITY VARCHAR(60) PRIMARY KEY, - W_ADDRESS TEXT -); -openGauss=# CREATE TABLE tpcds.warehouse_t23 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) REFERENCES tpcds.city_t23(W_CITY), - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - ---或是用下面的语法,效果完全一样。 -openGauss=# CREATE TABLE tpcds.warehouse_t23 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) , - FOREIGN KEY(W_CITY) REFERENCES tpcds.city_t23(W_CITY) -); - ---或是用下面的语法,指定约束的名称。 -openGauss=# CREATE TABLE tpcds.warehouse_t23 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) , - CONSTRAINT W_FORE_KEY1 FOREIGN KEY(W_CITY) REFERENCES tpcds.city_t23(W_CITY) -); - ---向tpcds.warehouse_t19表中增加一个varchar列。 -``` - -``` -openGauss=# ALTER TABLE tpcds.warehouse_t19 ADD W_GOODS_CATEGORY varchar(30); - ---给tpcds.warehouse_t19表增加一个检查约束。 -openGauss=# ALTER TABLE tpcds.warehouse_t19 ADD CONSTRAINT W_CONSTR_KEY4 CHECK (W_STATE IS NOT NULL); - ---在一个操作中改变两个现存字段的类型。 -openGauss=# ALTER TABLE tpcds.warehouse_t19 - ALTER COLUMN W_GOODS_CATEGORY TYPE varchar(80), - ALTER COLUMN W_STREET_NAME TYPE varchar(100); - ---此语句与上面语句等效。 -openGauss=# ALTER TABLE tpcds.warehouse_t19 MODIFY (W_GOODS_CATEGORY varchar(30), W_STREET_NAME varchar(60)); - ---给一个已存在字段添加非空约束。 -openGauss=# ALTER TABLE tpcds.warehouse_t19 ALTER COLUMN W_GOODS_CATEGORY SET NOT NULL; - ---移除已存在字段的非空约束。 -openGauss=# ALTER TABLE tpcds.warehouse_t19 ALTER COLUMN W_GOODS_CATEGORY DROP NOT NULL; - ---如果列存表中还未指定局部聚簇,向在一个列存表中添加局部聚簇列。 -openGauss=# ALTER TABLE tpcds.warehouse_t17 ADD PARTIAL CLUSTER KEY(W_WAREHOUSE_SK); - ---查看约束的名称,并删除一个列存表中的局部聚簇列。 -openGauss=# \d+ tpcds.warehouse_t17 - Table "tpcds.warehouse_t17" - Column | Type | Modifiers | Storage | Stats target | Description --------------------+-----------------------+-----------+----------+--------------+------------- - w_warehouse_sk | integer | not null | plain | | - w_warehouse_id | character(16) | not null | extended | | - w_warehouse_name | character varying(20) | | extended | | - w_warehouse_sq_ft | integer | | plain | | - w_street_number | character(10) | | extended | | - w_street_name | character varying(60) | | extended | | - w_street_type | character(15) | | extended | | - w_suite_number | character(10) | | extended | | - w_city | character varying(60) | | extended | | - w_county | character varying(30) | | extended | | - w_state | character(2) | | extended | | - w_zip | character(10) | | extended | | - w_country | character varying(20) | | extended | | - w_gmt_offset | numeric(5,2) | | main | | -Partial Cluster : - "warehouse_t17_cluster" PARTIAL CLUSTER KEY (w_warehouse_sk) -Has OIDs: no -Location Nodes: ALL DATANODES -Options: compression=no, version=0.12 -openGauss=# ALTER TABLE tpcds.warehouse_t17 DROP CONSTRAINT warehouse_t17_cluster; - ---将表移动到另一个表空间。 -openGauss=# ALTER TABLE tpcds.warehouse_t19 SET TABLESPACE PG_DEFAULT; ---创建模式joe。 -openGauss=# CREATE SCHEMA joe; - ---将表移动到另一个模式中。 -openGauss=# ALTER TABLE tpcds.warehouse_t19 SET SCHEMA joe; - ---重命名已存在的表。 -openGauss=# ALTER TABLE joe.warehouse_t19 RENAME TO warehouse_t23; - ---从warehouse_t23表中删除一个字段。 -openGauss=# ALTER TABLE joe.warehouse_t23 DROP COLUMN W_STREET_NAME; - ---删除表空间、模式joe和模式表warehouse。 -openGauss=# DROP TABLE tpcds.warehouse_t1; -openGauss=# DROP TABLE tpcds.warehouse_t2; -openGauss=# DROP TABLE tpcds.warehouse_t3; -openGauss=# DROP TABLE tpcds.warehouse_t4; -openGauss=# DROP TABLE tpcds.warehouse_t5; -openGauss=# DROP TABLE tpcds.warehouse_t6; -openGauss=# DROP TABLE tpcds.warehouse_t7; -openGauss=# DROP TABLE tpcds.warehouse_t8; -openGauss=# DROP TABLE tpcds.warehouse_t9; -openGauss=# DROP TABLE tpcds.warehouse_t10; -openGauss=# DROP TABLE tpcds.warehouse_t11; -openGauss=# DROP TABLE tpcds.warehouse_t12; -openGauss=# DROP TABLE tpcds.warehouse_t13; -openGauss=# DROP TABLE tpcds.warehouse_t14; -openGauss=# DROP TABLE tpcds.warehouse_t15; -openGauss=# DROP TABLE tpcds.warehouse_t16; -openGauss=# DROP TABLE tpcds.warehouse_t17; -openGauss=# DROP TABLE tpcds.warehouse_t18; -openGauss=# DROP TABLE tpcds.warehouse_t20; -openGauss=# DROP TABLE tpcds.warehouse_t21; -openGauss=# DROP TABLE tpcds.warehouse_t22; -openGauss=# DROP TABLE joe.warehouse_t23; -openGauss=# DROP TABLE tpcds.warehouse_t24; -openGauss=# DROP TABLE tpcds.warehouse_t25; -openGauss=# DROP TABLESPACE DS_TABLESPACE1; -openGauss=# DROP SCHEMA IF EXISTS joe CASCADE; -``` - -## 相关链接 - -[ALTER TABLE](ALTER-TABLE.md),[DROP TABLE](DROP-TABLE.md),[CREATE TABLESPACE](CREATE-TABLESPACE.md) - -## 优化建议 - -- UNLOGGED - - UNLOGGED表和表上的索引因为数据写入时不通过WAL日志机制,写入速度远高于普通表。因此,可以用于缓冲存储复杂查询的中间结果集,增强复杂查询的性能。 - - UNLOGGED表无主备机制,在系统故障或异常断点等情况下,会有数据丢失风险,因此,不可用来存储基础数据。 - -- TEMPORARY | TEMP - -- 临时表只在当前会话可见,会话结束后会自动删除。 - -- LIKE - -- 新表自动从这个表中继承所有字段名及其数据类型和非空约束,新表与源表之间在创建动作完毕之后是完全无关的。 - -- LIKE INCLUDING DEFAULTS - -- 源表上的字段缺省表达式只有在指定INCLUDING DEFAULTS时,才会复制到新表中。缺省是不包含缺省表达式的,即新表中的所有字段的缺省值都是NULL。 - -- LIKE INCLUDING CONSTRAINTS - -- 源表上的CHECK约束仅在指定INCLUDING CONSTRAINTS时,会复制到新表中,而其他类型的约束永远不会复制到新表中。非空约束总是复制到新表中。此规则同时适用于表约束和列约束。 - -- LIKE INCLUDING INDEXES - -- 如果指定了INCLUDING INDEXES,则源表上的索引也将在新表上创建,默认不建立索引。 - -- LIKE INCLUDING STORAGE - -- 如果指定了INCLUDING STORAGE,则复制列的STORAGE设置会复制到新表中,默认情况下不包含STORAGE设置。 - -- LIKE INCLUDING COMMENTS - -- 如果指定了INCLUDING COMMENTS,则源表列、约束和索引的注释会复制到新表中。默认情况下,不复制源表的注释。 - -- LIKE INCLUDING PARTITION - - - 如果指定了INCLUDING PARTITION,则源表的分区定义会复制到新表中,同时新表将不能再使用PARTITION BY子句。默认情况下,不拷贝源表的分区定义。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >列表/哈希分区表暂不支持LIKE INCLUDING PARTITION。 - -- LIKE INCLUDING RELOPTIONS - -- 如果指定了INCLUDING RELOPTIONS,则源表的存储参数(即源表的WITH子句)会复制到新表中。默认情况下,不复制源表的存储参数。 - -- LIKE INCLUDING ALL - -- INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION、INCLUDING RELOPTIONS的内容。 - -- ORIENTATION ROW - -- 创建行存表,行存储适合于OLTP业务,此类型的表上交互事务比较多,一次交互会涉及表中的多个列,用行存查询效率较高。 - -- ORIENTATION COLUMN - - - 创建列存表,列存储适合于数据仓库业务,此类型的表上会做大量的汇聚计算,且涉及的列操作较少。 - - +# CREATE TABLE + +## 功能描述 + +在当前数据库中创建一个新的空白表,该表由命令执行者所有。 + +## 注意事项 + +- 列存表支持的数据类型请参考[列存表支持的数据类型](列存表支持的数据类型.md)。 +- 列存表不支持数组。 +- 列存表不支持生成列。 +- 列存表不支持创建全局临时表。 +- 创建列存表的数量建议不超过 1000 个。 +- 如果在建表过程中数据库系统发生故障,系统恢复后可能无法自动清除之前已创建的、大小为 0 的磁盘文件。此种情况出现概率小,不影响数据库系统的正常运行。 +- 列存表的表级约束只支持PARTIAL CLUSTER KEY、UNIQUE、PRIAMRY KEY,不支持外键等表级约束。 +- 列存表的字段约束只支持NULL、NOT NULL、DEFAULT常量值、UNIQUE和 PRIMARY KEY 。 +- 列存表支持 delta 表,受参数enable\_delta\_store控制是否开启,受参数deltarow\_threshold控制进入 delta 表的阀值。 +- 使用 JDBC 时,支持通过 PrepareStatement 对 DEFAUTL 值进行参数化设置。 +- 每张表的列数最大为 1600 ,具体取决于列的类型,所有列的大小加起来不能超过 8192 byte ,text、varchar、char等长度可变的类型除外。 + +## 语法格式 + +创建表。 + +``` +CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name + ({ column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] + | table_constraint + | LIKE source_table [ like_option [...] ] } + [, ... ]) + [ WITH ( {storage_parameter = value} [, ... ] ) ] + [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] + [ COMPRESS | NOCOMPRESS ] + [ TABLESPACE tablespace_name ]; +``` + +- 其中列约束column\_constraint为: + + ``` + [ CONSTRAINT constraint_name ] + { NOT NULL | + NULL | + CHECK ( expression ) | + DEFAULT default_expr | + UNIQUE index_parameters | + ENCRYPTED WITH ( COLUMN_ENCRYPTION_KEY = column_encryption_key, ENCRYPTION_TYPE = encryption_type_value ) | + PRIMARY KEY index_parameters | + REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] + [ ON DELETE action ] [ ON UPDATE action ] } + [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] + ``` + + +- 其中列的压缩可选项compress\_mode为: + + ``` + { DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS } + ``` + +- 其中表约束table\_constraint为: + + ``` + [ CONSTRAINT constraint_name ] + { CHECK ( expression ) | + UNIQUE ( column_name [, ... ] ) index_parameters | + PRIMARY KEY ( column_name [, ... ] ) index_parameters | + FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ (refcolumn [, ... ] ) ] + [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] | + PARTIAL CLUSTER KEY ( column_name [, ... ] ) } + [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] + ``` + + +- 其中 like 选项like\_option为: + + ``` + { INCLUDING | EXCLUDING } { DEFAULTS | GENERATED | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | PARTITION | RELOPTIONS | ALL } + ``` + +- 其中索引参数index\_parameters为: + + ``` + [ WITH ( {storage_parameter = value} [, ... ] ) ] + [ USING INDEX TABLESPACE tablespace_name ] + ``` + + +## 参数说明 + +- **UNLOGGED** + + 如果指定此关键字,则创建的表为非日志表。在非日志表中写入的数据不会被写入到预写日志中,这样就会比普通表快很多。但是非日志表在冲突、执行操作系统重启、强制重启、切断电源操作或异常关机后会被自动截断,会造成数据丢失的风险。非日志表中的内容也不会被复制到备服务器中。在非日志表中创建的索引也不会被自动记录。 + + 使用场景:非日志表不能保证数据的安全性,用户应该在确保数据已经做好备份的前提下使用,例如系统升级时进行数据的备份。 + + 故障处理:当异常关机等操作导致非日志表上的索引发生数据丢失时,用户应该对发生错误的索引进行重建。 + +- **GLOBAL | LOCAL** + + 创建临时表时可以在 TEMP 或 TEMPORARY 前指定 GLOBAL 或 LOCAL 关键字。如果指定 GLOBAL 关键字, openGauss 会创建全局临时表,否则 openGauss 会创建本地临时表。 + +- **TEMPORARY | TEMP** + + 如果指定 TEMP 或 TEMPORARY 关键字,则创建的表为临时表。临时表分为全局临时表和本地临时表两种类型。创建临时表时如果指定 GLOBAL 关键字则为全局临时表,否则为本地临时表。 + + 全局临时表的元数据对所有会话可见,会话结束后元数据继续存在。会话与会话之间的用户数据、索引和统计信息相互隔离,每个会话只能看到和更改自己提交的数据。全局临时表有两种模式:一种是基于会话级别的\(ON COMMIT PRESERVE ROWS\), 当会话结束时自动清空用户数据;一种是基于事务级别的\(ON COMMIT DELETE ROWS\), 当执行 commit 或 rollback 时自动清空用户数据。建表时如果没有指定 ON COMMIT 选项,则缺省为会话级别。与本地临时表不同,全局临时表建表时可以指定非pg\_temp\_开头的 schema 。 + + 本地临时表只在当前会话可见,本会话结束后会自动删除。因此,在除当前会话连接的数据库节点故障时,仍然可以在当前会话上创建和使用临时表。由于临时表只在当前会话创建,对于涉及对临时表操作的 DDL 语句,会产生 DDL 失败的报错。因此,建议 DDL 语句中不要对临时表进行操作。 TEMP 和 TEMPORARY 等价。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + > + >- 本地临时表通过每个会话独立的以pg\_temp开头的 schema 来保证只对当前会话可见,因此,不建议用户在日常操作中手动删除以pg\_temp、pg\_toast\_temp开头的 schema 。 + > + >- 如果建表时不指定TEMPORARY/TEMP关键字,而指定表的 schema 为当前会话的pg\_temp\_开头的 schema ,则此表会被创建为临时表。 + > + >- ALTER/DROP全局临时表和索引,如果其它会话正在使用它,禁止操作(ALTER INDEX index\_name REBUILD除外)。 + > + >- 全局临时表的 DDL 只会影响当前会话的用户数据和索引。例如truncate、reindex、analyze只对当前会话有效。 + > + >- 全局临时表功能可以通过设置 GUC 参数max\_active\_global\_temporary\_table控制是否启用。如果max\_active\_global\_temporary\_table=0,关闭全局临时表功能。 + > + >- 临时表只对当前会话可见,因此不支持与\\parallel on并行执行一起使用。 + > + >- \\parallel on临时表不支持主备切换。 + +- **IF NOT EXISTS** + + 如果已经存在相同名称的表,不会报出错误,而会发出通知,告知通知此表已存在。 + +- **table\_name** + + 要创建的表名。 + +- **column\_name** + + 新表中要创建的字段名。 + +- **data\_type** + + 字段的数据类型。 + +- **compress\_mode** + + 表字段的压缩选项。该选项指定表字段优先使用的压缩算法。行存表不支持压缩。 + + 取值范围:DELTA、PREFIX、DICTIONARY、NUMSTR、NOCOMPRESS + +- **COLLATE collation** + +COLLATE 子句指定列的排序规则(该列必须是可排列的数据类型)。如果没有指定,则使用默认的排序规则。排序规则可以使用“select \* from pg\_collation;”命令从pg\_collation系统表中查询,默认的排序规则为查询结果中以 default 开始的行。 + +- **LIKE source\_table \[ like\_option ... \]** + +LIKE 子句声明一个表,新表自动从这个表中继承所有字段名及其数据类型和非空约束。 + + 新表与源表之间在创建动作完毕之后是完全无关的。在源表做的任何修改都不会传播到新表中,并且也不可能在扫描源表的时候包含新表的数据。 + + 被复制的列和约束并不使用相同的名称进行融合。如果明确的指定了相同的名称或者在另外一个 LIKE 子句中,将会报错。 + + - 源表上的字段缺省表达式只有在指定 INCLUDING DEFAULTS 时,才会复制到新表中。缺省是不包含缺省表达式的,即新表中的所有字段的缺省值都是 NULL 。 + - 源表上的 CHECK 约束仅在指定 INCLUDING CONSTRAINTS 时,会复制到新表中,而其他类型的约束永远不会复制到新表中。非空约束总是复制到新表中。此规则同时适用于表约束和列约束。 + - 如果指定了 INCLUDING INDEXES ,则源表上的索引也将在新表上创建,默认不建立索引。 + - 如果指定了 INCLUDING STORAGE ,则复制列的 STORAGE 设置会复制到新表中,默认情况下不包含 STORAGE 设置。 + - 如果指定了 INCLUDING COMMENTS ,则源表列、约束和索引的注释会复制到新表中。默认情况下,不复制源表的注释。 + - 如果指定了 INCLUDING PARTITION ,则源表的分区定义会复制到新表中,同时新表将不能再使用 PARTITION BY 子句。默认情况下,不拷贝源表的分区定义。如果源表上带有索引,可以使用 INCLUDING PARTITION INCLUDING INDEXES 语法实现。如果对分区表只使用 INCLUDING INDEXES ,目标表定义将是普通表,但是索引是分区索引,最后结果会报错,因为普通表不支持分区索引。 + - 如果指定了 INCLUDING RELOPTIONS ,则源表的存储参数(即源表的 WITH 子句)会复制到新表中。默认情况下,不复制源表的存储参数。 + - INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION和 INCLUDING RELOPTIONS 的内容。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + > + >- 如果源表包含serial、bigserial、smallserial类型,或者源表字段的默认值是 sequence ,且 sequence 属于源表(通过CREATE SEQUENCE ... OWNED BY创建),这些 Sequence 不会关联到新表中,新表中会重新创建属于自己的 sequence 。这和之前版本的处理逻辑不同。如果用户希望源表和新表共享 Sequence ,需要首先创建一个共享的Sequence(避免使用OWNED BY),并配置为源表字段默认值,这样创建的新表会和源表共享该 Sequence 。 + > + >- 不建议将其他表私有的 Sequence 配置为源表字段的默认值,尤其是其他表只分布在特定的 NodeGroup 上,这可能导致CREATE TABLE ... LIKE执行失败。另外,如果源表配置其他表私有的 Sequence ,当该表删除时 Sequence 也会连带删除,这样源表的 Sequence 将不可用。如果用户希望多个表共享 Sequence ,建议创建共享的 Sequence 。 + > + >- 对于分区表 EXCLUDING ,需要配合 INCLUDING ALL 使用,如 INCLUDING ALL EXCLUDING DEFAULTS ,除源分区表的 DEFAULTS ,其它全包含。 + +- **WITH \( \{ storage\_parameter = value \} \[, ... \] \)** + + 这个子句为表或索引指定一个可选的存储参数。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >使用任意精度类型 Numeric 定义列时,建议指定精度 p 以及刻度 s 。在不指定精度和刻度时,会按输入的显示出来。 + + 参数的详细描述如下所示。 + + - FILLFACTOR + + 一个表的填充因子(fillfactor)是一个介于 10 和 100 之间的百分数。100(完全填充)是默认值。如果指定了较小的填充因子, INSERT 操作仅按照填充因子指定的百分率填充表页。每个页上的剩余空间将用于在该页上更新行,这就使得 UPDATE 有机会在同一页上放置同一条记录的新版本,这比把新版本放置在其他页上更有效。对于一个从不更新的表将填充因子设为 100 是最佳选择,但是对于频繁更新的表,选择较小的填充因子则更加合适。该参数对于列存表没有意义。 + + 取值范围:10\~100 + + - ORIENTATION + + 指定表数据的存储方式,即行存方式、列存方式、ORC格式的方式,该参数设置成功后就不再支持修改。 + + 取值范围: + + - ROW,表示表的数据将以行式存储。 + + 行存储适合于 OLTP 业务,适用于点查询或者增删操作较多的场景。 + + - COLUMN,表示表的数据将以列式存储。 + + 列存储适合于数据仓库业务,此类型的表上会做大量的汇聚计算,且涉及的列操作较少。 + + 默认值: + + 若指定表空间为普通表空间,默认值为 ROW 。 + + - STORAGE\_TYPE + + 指定存储引擎类型,该参数设置成功后就不再支持修改。 + + 取值范围: + + - USTORE,表示表支持Inplace-Update存储引擎。 + - ASTORE,表示表支持Append-Only存储引擎。 + + 默认值: + + 不指定表时,默认是Append-Only存储。 + + - COMPRESSION + + 指定表数据的压缩级别,它决定了表数据的压缩比以及压缩时间。一般来讲,压缩级别越高,压缩比也越大,压缩时间也越长;反之亦然。实际压缩比取决于加载的表数据的分布特征。行存表不支持压缩。 + + 取值范围: + + 列存表的有效值为YES/NO/LOW/MIDDLE/HIGH,默认值为 LOW 。 + + - COMPRESSLEVEL + + 指定表数据同一压缩级别下的不同压缩水平,它决定了同一压缩级别下表数据的压缩比以及压缩时间。对同一压缩级别进行了更加详细的划分,为用户选择压缩比和压缩时间提供了更多的空间。总体来讲,此值越大,表示同一压缩级别下压缩比越大,压缩时间越长;反之亦然。 + + 取值范围:0\~3,默认值为 0 。 + + - MAX\_BATCHROW + + 指定了在数据加载过程中一个存储单元可以容纳记录的最大数目。该参数只对列存表有效。 + + 取值范围:10000\~60000,默认 60000 。 + + - PARTIAL\_CLUSTER\_ROWS + + 指定了在数据加载过程中进行将局部聚簇存储的记录数目。该参数只对列存表有效。 + + 取值范围:大于等于MAX\_BATCHROW,建议取值为MAX\_BATCHROW的整数倍。 + + - DELTAROW\_THRESHOLD + + 指定列存表导入时小于多少行的数据进入 delta 表,只在 GUC 参数enable\_delta\_store开启时生效。该参数只对列存表有效。 + + 取值范围:0~9999,默认值为100 + + - VERSION + + 指定 ORC 存储格式的版本。 + + 取值范围:0.12,目前支持ORC 0.12格式,后续会随着 ORC 格式的发展,支持更多格式。 + + 默认值:0.12 + + - segment + + 使用段页式的方式存储。本参数仅支持行存表。不支持列存表、临时表、unlog表。不支持 ustore 存储引擎。 + + 取值范围:on/off + + 默认值:off + + - dek\_cipher + + 透明数据加密密钥的密文。当开启enable\_tde选项时会自动申请创建,用户不可单独指定。通过密钥轮转功能可以对密钥进行更新。 + + 取值范围:字符串。 + + 默认值:不开启加密时默认为空。 + + +- **ON COMMIT \{ PRESERVE ROWS | DELETE ROWS | DROP \}** + +ON COMMIT 选项决定在事务中执行创建临时表操作,当事务提交时,此临时表的后续操作。有以下三个选项,当前支持 PRESERVE ROWS 和 DELETE ROWS 选项。 + + - PRESERVE ROWS(缺省值):提交时不对临时表做任何操作,临时表及其表数据保持不变。 + - DELETE ROWS:提交时删除临时表中数据。 + - DROP:提交时删除此临时表。只支持本地临时表,不支持全局临时表。 + +- **COMPRESS | NOCOMPRESS** + + 创建新表时,需要在 CREATE TABLE 语句中指定关键字 COMPRESS ,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字 NOCOMPRESS 则不对表进行压缩。行存表不支持压缩。 + + 缺省值:NOCOMPRESS,即不对元组数据进行压缩。 + +- **TABLESPACE tablespace\_name** + + 创建新表时指定此关键字,表示新表将要在指定表空间内创建。如果没有声明,将使用默认表空间。 + +- **CONSTRAINT constraint\_name** + + 列约束或表约束的名称。可选的约束子句用于声明约束,新行或者更新的行必须满足这些约束才能成功插入或更新。 + + 定义约束有两种方法: + + - 列约束:作为一个列定义的一部分,仅影响该列。 + - 表约束:不和某个列绑在一起,可以作用于多个列。 + +- **NOT NULL** + + 字段值不允许为 NULL 。 + +- **NULL** + + 字段值允许为 NULL ,这是缺省值。 + + 这个子句只是为和非标准 SQL 数据库兼容。不建议使用。 + +- **CHECK \( expression \)** + +CHECK 约束声明一个布尔表达式,每次要插入的新行或者要更新的行的新值必须使表达式结果为真或未知才能成功,否则会抛出一个异常并且不会修改数据库。 + + 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >expression表达式中,如果存在“<\>NULL”或“!=NULL”,这种写法是无效的,需要写成“is NOT NULL”。 + +- **DEFAULT default\_expr** + +DEFAULT 子句给字段指定缺省值。该数值可以是任何不含变量的表达式\(不允许使用子查询和对本表中的其他字段的交叉引用\)。缺省表达式的数据类型必须和字段类型匹配。 + + 缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为 NULL 。 + +- **UNIQUE index\_parameters** + + **UNIQUE \( column\_name \[, ... \] \) index\_parameters** + +UNIQUE 约束表示表里的一个字段或多个字段的组合必须在全表范围内唯一。 + + 对于唯一约束, NULL 被认为是互不相等的。 + +- **PRIMARY KEY index\_parameters** + + **PRIMARY KEY \( column\_name \[, ... \] \) index\_parameters** + + 主键约束声明表中的一个或者多个字段只能包含唯一的非 NULL 值。 + + 一个表只能声明一个主键。 + +- **REFERENCES reftable \[ \( refcolum \) \] \[ MATCH matchtype \] \[ ON DELETE action \] \[ ON UPDATE action \] \(column constraint\)** + + **FOREIGN KEY \( column\_name \[, ... \] \) REFERENCES reftable \[ \( refcolumn \[, ... \] \) \] \[ MATCH matchtype \] \[ ON DELETE action \] \[ ON UPDATE action \] \(table constraint\)** + + 外键约束要求新表中一列或多列构成的组应该只包含、匹配被参考表中被参考字段值。若省略 refcolum ,则将使用 reftable 的主键。被参考列应该是被参考表中的唯一字段或主键。外键约束不能被定义在临时表和永久表之间。 + + 参考字段与被参考字段之间存在三种类型匹配,分别是: + + - MATCH FULL:不允许一个多字段外键的字段为 NULL ,除非全部外键字段都是 NULL 。 + - MATCH SIMPLE(缺省):允许任意外键字段为 NULL 。 + - MATCH PARTIAL:目前暂不支持。 + + 另外,当被参考表中的数据发生改变时,某些操作也会在新表对应字段的数据上执行。 ON DELETE 子句声明当被参考表中的被参考行被删除时要执行的操作。 ON UPDATE 子句声明当被参考表中的被参考字段数据更新时要执行的操作。对于 ON DELETE 子句、ON UPDATE子句的可能动作: + + - NO ACTION(缺省):删除或更新时,创建一个表明违反外键约束的错误。若约束可推迟,且若仍存在任何引用行,那这个错误将会在检查约束的时候产生。 + - RESTRICT:删除或更新时,创建一个表明违反外键约束的错误。与 NO ACTION 相同,只是动作不可推迟。 + - CASCADE:删除新表中任何引用了被删除行的行,或更新新表中引用行的字段值为被参考字段的新值。 + - SET NULL:设置引用字段为 NULL 。 + - SET DEFAULT:设置引用字段为它们的缺省值。 + +- **DEFERRABLE | NOT DEFERRABLE** + + 这两个关键字设置该约束是否可推迟。一个不可推迟的约束将在每条命令之后马上检查。可推迟约束可以推迟到事务结尾使用 SET CONSTRAINTS 命令检查。缺省是 NOT DEFERRABLE 。目前, UNIQUE 约束、主键约束、外键约束可以接受这个子句。所有其他约束类型都是不可推迟的。 + +- **PARTIAL CLUSTER KEY** + + 局部聚簇存储,列存表导入数据时按照指定的列\(单列或多列\),进行局部排序。 + +- **INITIALLY IMMEDIATE | INITIALLY DEFERRED** + + 如果约束是可推迟的,则这个子句声明检查约束的缺省时间。 + + - 如果约束是INITIALLY IMMEDIATE(缺省),则在每条语句执行之后就立即检查它; + - 如果约束是 INITIALLY DEFERRED ,则只有在事务结尾才检查它。 + + 约束检查的时间可以用 SET CONSTRAINTS 命令修改。 + +- **USING INDEX TABLESPACE tablespace\_name** + + 为 UNIQUE 或 PRIMARY KEY 约束相关的索引声明一个表空间。如果没有提供这个子句,这个索引将在default\_tablespace中创建,如果default\_tablespace为空,将使用数据库的缺省表空间。 + +- **ENCRYPTION\_TYPE = encryption\_type\_value** + + 为 ENCRYPTED WITH 约束中的加密类型,encryption\_type\_value的值为\[ DETERMINISTIC | RANDOMIZED \] + + +## 示例 + +``` +--创建简单的表。 +openGauss=# CREATE TABLE tpcds.warehouse_t1 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +openGauss=# CREATE TABLE tpcds.warehouse_t2 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60), + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); +``` + +``` +--创建表,并指定 W_STATE 字段的缺省值为 GA 。 +openGauss=# CREATE TABLE tpcds.warehouse_t3 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) DEFAULT 'GA', + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +--创建表,并在事务结束时检查 W_WAREHOUSE_NAME 字段是否有重复。 +openGauss=# CREATE TABLE tpcds.warehouse_t4 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) UNIQUE DEFERRABLE, + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); +``` + +``` +--创建一个带有70%填充因子的表。 +openGauss=# CREATE TABLE tpcds.warehouse_t5 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + UNIQUE(W_WAREHOUSE_NAME) WITH(fillfactor=70) +); + +--或者用下面的语法。 +openGauss=# CREATE TABLE tpcds.warehouse_t6 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) UNIQUE, + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +) WITH(fillfactor=70); + +--创建表,并指定该表数据不写入预写日志。 +openGauss=# CREATE UNLOGGED TABLE tpcds.warehouse_t7 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +--创建表临时表。 +openGauss=# CREATE TEMPORARY TABLE warehouse_t24 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +--创建本地临时表,并指定提交事务时删除该临时表数据。 +openGauss=# CREATE TEMPORARY TABLE warehouse_t25 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +) ON COMMIT DELETE ROWS; + +--创建全局临时表,并指定会话结束时删除该临时表数据。 +openGauss=# CREATE GLOBAL TEMPORARY TABLE gtt1 +( + ID INTEGER NOT NULL , + NAME CHAR(16) NOT NULL, + ADDRESS VARCHAR(50) , + POSTCODE CHAR(6) +) ON COMMIT PRESERVE ROWS; + +--创建表时,不希望因为表已存在而报错。 +openGauss=# CREATE TABLE IF NOT EXISTS tpcds.warehouse_t8 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +--创建普通表空间。 +openGauss=# CREATE TABLESPACE DS_TABLESPACE1 RELATIVE LOCATION 'tablespace/tablespace_1'; +--创建表时,指定表空间。 +openGauss=# CREATE TABLE tpcds.warehouse_t9 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +) TABLESPACE DS_TABLESPACE1; + +--创建表时,单独指定 W_WAREHOUSE_NAME 的索引表空间。 +openGauss=# CREATE TABLE tpcds.warehouse_t10 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) UNIQUE USING INDEX TABLESPACE DS_TABLESPACE1, + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); +``` + +``` +--创建一个有主键约束的表。 +openGauss=# CREATE TABLE tpcds.warehouse_t11 +( + W_WAREHOUSE_SK INTEGER PRIMARY KEY , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +---或是用下面的语法,效果完全一样。 +openGauss=# CREATE TABLE tpcds.warehouse_t12 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + PRIMARY KEY(W_WAREHOUSE_SK) +); + +--或是用下面的语法,指定约束的名称。 +openGauss=# CREATE TABLE tpcds.warehouse_t13 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + CONSTRAINT W_CSTR_KEY1 PRIMARY KEY(W_WAREHOUSE_SK) +); + +--创建一个有复合主键约束的表。 +openGauss=# CREATE TABLE tpcds.warehouse_t14 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + CONSTRAINT W_CSTR_KEY2 PRIMARY KEY(W_WAREHOUSE_SK, W_WAREHOUSE_ID) +); +--创建列存表。 +openGauss=# CREATE TABLE tpcds.warehouse_t15 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +) WITH (ORIENTATION = COLUMN); + +--创建局部聚簇存储的列存表。 +openGauss=# CREATE TABLE tpcds.warehouse_t16 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + PARTIAL CLUSTER KEY(W_WAREHOUSE_SK, W_WAREHOUSE_ID) +) WITH (ORIENTATION = COLUMN); + +--定义一个带压缩的列存表。 +openGauss=# CREATE TABLE tpcds.warehouse_t17 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +) WITH (ORIENTATION = COLUMN, COMPRESSION=HIGH); + + +--定义一个检查列约束。 +openGauss=# CREATE TABLE tpcds.warehouse_t19 +( + W_WAREHOUSE_SK INTEGER PRIMARY KEY CHECK (W_WAREHOUSE_SK > 0), + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) CHECK (W_WAREHOUSE_NAME IS NOT NULL), + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +openGauss=# CREATE TABLE tpcds.warehouse_t20 +( + W_WAREHOUSE_SK INTEGER PRIMARY KEY , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) CHECK (W_WAREHOUSE_NAME IS NOT NULL), + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + CONSTRAINT W_CONSTR_KEY2 CHECK(W_WAREHOUSE_SK > 0 AND W_WAREHOUSE_NAME IS NOT NULL) +); + +--创建一个有外键约束的表。 +openGauss=# CREATE TABLE tpcds.city_t23 +( + W_CITY VARCHAR(60) PRIMARY KEY, + W_ADDRESS TEXT +); +openGauss=# CREATE TABLE tpcds.warehouse_t23 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) REFERENCES tpcds.city_t23(W_CITY), + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +--或是用下面的语法,效果完全一样。 +openGauss=# CREATE TABLE tpcds.warehouse_t23 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) , + FOREIGN KEY(W_CITY) REFERENCES tpcds.city_t23(W_CITY) +); + +--或是用下面的语法,指定约束的名称。 +openGauss=# CREATE TABLE tpcds.warehouse_t23 +( + W_WAREHOUSE_SK INTEGER NOT NULL , + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) , + CONSTRAINT W_FORE_KEY1 FOREIGN KEY(W_CITY) REFERENCES tpcds.city_t23(W_CITY) +); + +--向tpcds.warehouse_t19表中增加一个 varchar 列。 +``` + +``` +openGauss=# ALTER TABLE tpcds.warehouse_t19 ADD W_GOODS_CATEGORY varchar(30); + +--给tpcds.warehouse_t19表增加一个检查约束。 +openGauss=# ALTER TABLE tpcds.warehouse_t19 ADD CONSTRAINT W_CONSTR_KEY4 CHECK (W_STATE IS NOT NULL); + +--在一个操作中改变两个现存字段的类型。 +openGauss=# ALTER TABLE tpcds.warehouse_t19 + ALTER COLUMN W_GOODS_CATEGORY TYPE varchar(80), + ALTER COLUMN W_STREET_NAME TYPE varchar(100); + +--此语句与上面语句等效。 +openGauss=# ALTER TABLE tpcds.warehouse_t19 MODIFY (W_GOODS_CATEGORY varchar(30), W_STREET_NAME varchar(60)); + +--给一个已存在字段添加非空约束。 +openGauss=# ALTER TABLE tpcds.warehouse_t19 ALTER COLUMN W_GOODS_CATEGORY SET NOT NULL; + +--移除已存在字段的非空约束。 +openGauss=# ALTER TABLE tpcds.warehouse_t19 ALTER COLUMN W_GOODS_CATEGORY DROP NOT NULL; + +--如果列存表中还未指定局部聚簇,向在一个列存表中添加局部聚簇列。 +openGauss=# ALTER TABLE tpcds.warehouse_t17 ADD PARTIAL CLUSTER KEY(W_WAREHOUSE_SK); + +--查看约束的名称,并删除一个列存表中的局部聚簇列。 +openGauss=# \d+ tpcds.warehouse_t17 + Table "tpcds.warehouse_t17" + Column | Type | Modifiers | Storage | Stats target | Description +-------------------+-----------------------+-----------+----------+--------------+------------- + w_warehouse_sk | integer | not null | plain | | + w_warehouse_id | character(16) | not null | extended | | + w_warehouse_name | character varying(20) | | extended | | + w_warehouse_sq_ft | integer | | plain | | + w_street_number | character(10) | | extended | | + w_street_name | character varying(60) | | extended | | + w_street_type | character(15) | | extended | | + w_suite_number | character(10) | | extended | | + w_city | character varying(60) | | extended | | + w_county | character varying(30) | | extended | | + w_state | character(2) | | extended | | + w_zip | character(10) | | extended | | + w_country | character varying(20) | | extended | | + w_gmt_offset | numeric(5,2) | | main | | +Partial Cluster : + "warehouse_t17_cluster" PARTIAL CLUSTER KEY (w_warehouse_sk) +Has OIDs: no +Location Nodes: ALL DATANODES +Options: compression=no, version=0.12 +openGauss=# ALTER TABLE tpcds.warehouse_t17 DROP CONSTRAINT warehouse_t17_cluster; + +--将表移动到另一个表空间。 +openGauss=# ALTER TABLE tpcds.warehouse_t19 SET TABLESPACE PG_DEFAULT; +--创建模式 joe 。 +openGauss=# CREATE SCHEMA joe; + +--将表移动到另一个模式中。 +openGauss=# ALTER TABLE tpcds.warehouse_t19 SET SCHEMA joe; + +--重命名已存在的表。 +openGauss=# ALTER TABLE joe.warehouse_t19 RENAME TO warehouse_t23; + +--从 warehouse_t23 表中删除一个字段。 +openGauss=# ALTER TABLE joe.warehouse_t23 DROP COLUMN W_STREET_NAME; + +--删除表空间、模式 joe 和模式表 warehouse 。 +openGauss=# DROP TABLE tpcds.warehouse_t1; +openGauss=# DROP TABLE tpcds.warehouse_t2; +openGauss=# DROP TABLE tpcds.warehouse_t3; +openGauss=# DROP TABLE tpcds.warehouse_t4; +openGauss=# DROP TABLE tpcds.warehouse_t5; +openGauss=# DROP TABLE tpcds.warehouse_t6; +openGauss=# DROP TABLE tpcds.warehouse_t7; +openGauss=# DROP TABLE tpcds.warehouse_t8; +openGauss=# DROP TABLE tpcds.warehouse_t9; +openGauss=# DROP TABLE tpcds.warehouse_t10; +openGauss=# DROP TABLE tpcds.warehouse_t11; +openGauss=# DROP TABLE tpcds.warehouse_t12; +openGauss=# DROP TABLE tpcds.warehouse_t13; +openGauss=# DROP TABLE tpcds.warehouse_t14; +openGauss=# DROP TABLE tpcds.warehouse_t15; +openGauss=# DROP TABLE tpcds.warehouse_t16; +openGauss=# DROP TABLE tpcds.warehouse_t17; +openGauss=# DROP TABLE tpcds.warehouse_t18; +openGauss=# DROP TABLE tpcds.warehouse_t20; +openGauss=# DROP TABLE tpcds.warehouse_t21; +openGauss=# DROP TABLE tpcds.warehouse_t22; +openGauss=# DROP TABLE joe.warehouse_t23; +openGauss=# DROP TABLE tpcds.warehouse_t24; +openGauss=# DROP TABLE tpcds.warehouse_t25; +openGauss=# DROP TABLESPACE DS_TABLESPACE1; +openGauss=# DROP SCHEMA IF EXISTS joe CASCADE; +``` + +## 相关链接 + +[ALTER TABLE](ALTER-TABLE.md),[DROP TABLE](DROP-TABLE.md),[CREATE TABLESPACE](CREATE-TABLESPACE.md) + +## 优化建议 + +- UNLOGGED + - UNLOGGED表和表上的索引因为数据写入时不通过 WAL 日志机制,写入速度远高于普通表。因此,可以用于缓冲存储复杂查询的中间结果集,增强复杂查询的性能。 + - UNLOGGED表无主备机制,在系统故障或异常断点等情况下,会有数据丢失风险,因此,不可用来存储基础数据。 + +- TEMPORARY | TEMP + +- 临时表只在当前会话可见,会话结束后会自动删除。 + +- LIKE + +- 新表自动从这个表中继承所有字段名及其数据类型和非空约束,新表与源表之间在创建动作完毕之后是完全无关的。 + +- LIKE INCLUDING DEFAULTS + +- 源表上的字段缺省表达式只有在指定 INCLUDING DEFAULTS 时,才会复制到新表中。缺省是不包含缺省表达式的,即新表中的所有字段的缺省值都是 NULL 。 + +- LIKE INCLUDING CONSTRAINTS + +- 源表上的 CHECK 约束仅在指定 INCLUDING CONSTRAINTS 时,会复制到新表中,而其他类型的约束永远不会复制到新表中。非空约束总是复制到新表中。此规则同时适用于表约束和列约束。 + +- LIKE INCLUDING INDEXES + +- 如果指定了 INCLUDING INDEXES ,则源表上的索引也将在新表上创建,默认不建立索引。 + +- LIKE INCLUDING STORAGE + +- 如果指定了 INCLUDING STORAGE ,则复制列的 STORAGE 设置会复制到新表中,默认情况下不包含 STORAGE 设置。 + +- LIKE INCLUDING COMMENTS + +- 如果指定了 INCLUDING COMMENTS ,则源表列、约束和索引的注释会复制到新表中。默认情况下,不复制源表的注释。 + +- LIKE INCLUDING PARTITION + + - 如果指定了 INCLUDING PARTITION ,则源表的分区定义会复制到新表中,同时新表将不能再使用 PARTITION BY 子句。默认情况下,不拷贝源表的分区定义。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >列表/哈希分区表暂不支持 LIKE INCLUDING PARTITION 。 + +- LIKE INCLUDING RELOPTIONS + +- 如果指定了 INCLUDING RELOPTIONS ,则源表的存储参数(即源表的 WITH 子句)会复制到新表中。默认情况下,不复制源表的存储参数。 + +- LIKE INCLUDING ALL + +- INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION、INCLUDING RELOPTIONS的内容。 + +- ORIENTATION ROW + +- 创建行存表,行存储适合于 OLTP 业务,此类型的表上交互事务比较多,一次交互会涉及表中的多个列,用行存查询效率较高。 + +- ORIENTATION COLUMN + + - 创建列存表,列存储适合于数据仓库业务,此类型的表上会做大量的汇聚计算,且涉及的列操作较少。 + + diff --git a/content/zh/docs/Developerguide/CREATE-TABLESPACE.md b/content/zh/docs/Developerguide/CREATE-TABLESPACE.md index e366af059..a8a0ee12f 100644 --- a/content/zh/docs/Developerguide/CREATE-TABLESPACE.md +++ b/content/zh/docs/Developerguide/CREATE-TABLESPACE.md @@ -1,132 +1,132 @@ -# CREATE TABLESPACE - -## 功能描述 - -在数据库中创建一个新的表空间。 - -## 注意事项 - -- 系统管理员或者继承了内置角色gs\_roles\_tablespace权限的用户可以创建表空间。 -- 不允许在一个事务块内部执行CREATE TABLESPACE。 -- 执行CREATE TABLESPACE失败,如果内部创建目录(文件)操作成功了就会产生残留的目录(文件),重新创建时需要用户手动清理表空间指定的目录下残留的内容。如果在创建过程中涉及到数据目录下的表空间软连接残留,需要先将软连接的残留文件删除,再重新执行OM相关操作。 -- CREATE TABLESPACE不支持两阶段事务,如果部分节点执行失败,不支持回滚。 -- 创建表空间前的准备工作参考下述参数说明。 -- 在HCS等场景下一般不建议用户使用自定义的表空间。原因:用户自定义表空间通常配合主存(即默认表空间所在的存储设备,如磁盘)以外的其它存储介质使用,以隔离不同业务可以使用的IO资源,而在HCS等场景下,存储设备都是采用标准化的配置,无其它可用的存储介质,自定义表空间使用不当不利于系统长稳运行以及影响整体性能,因此建议使用默认表空间即可。 - -## 语法格式 - -``` -CREATE TABLESPACE tablespace_name - [ OWNER user_name ] [RELATIVE] LOCATION 'directory' [ MAXSIZE 'space_size' ] - [with_option_clause]; -``` - -其中普通表空间的with\_option\_clause为: - -``` -WITH ( {filesystem= { 'general'| "general" | general} | - random_page_cost = { 'value ' | value } | - seq_page_cost = { 'value ' | value }}[,...]) -``` - -## 参数说明 - -- **tablespace\_name** - - 要创建的表空间名称。 - - 表空间名称不能和openGauss中的其他表空间重名,且名称不能以“pg”开头,这样的名称留给系统表空间使用。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **OWNER user\_name** - - 指定该表空间的所有者。缺省时,新表空间的所有者是当前用户。 - - 只有系统管理员可以创建表空间,但是可以通过OWNER子句把表空间的所有权赋给其他非系统管理员。 - - 取值范围:字符串,已存在的用户。 - -- **RELATIVE** - - 使用相对路径,LOCATION目录是相对于各个数据库节点数据目录下的。 - - 目录层次:数据库节点的数据目录/pg\_location/相对路径 - - 相对路径最多指定两层。 - -- **LOCATION directory** - - 用于表空间的目录,对于目录有如下要求: - - - openGauss系统用户必须对该目录拥有读写权限,并且目录为空。如果该目录不存在,将由系统自动创建。 - - 目录必须是绝对路径,目录中不得含有特殊字符(如$、\> 等)。 - - 目录不允许指定在数据库数据目录下。 - - 目录需为本地路径。 - - 取值范围:字符串,有效的目录。 - -- **MAXSIZE 'space\_size'** - - 指定表空间在单个数据库节点上的最大值。 - - 取值范围:字符串格式为正整数+单位,单位当前支持K/M/G/T/P。解析后的数值以K为单位,且范围不能够超过64比特表示的有符号整数,即1KB\~9007199254740991KB。 - -- **random\_page\_cost** - - 指定随机读取page的开销。 - - 取值范围:0\~1.79769e+308。 - - 默认值:使用GUC参数random\_page\_cost的值。 - -- **seq\_page\_cost** - - 指定顺序读取page的开销。 - - 取值范围:0\~1.79769e+308。 - - 默认值:使用GUC参数seq\_page\_cost的值。 - - -## 示例 - -``` ---创建表空间。 -openGauss=# CREATE TABLESPACE ds_location1 RELATIVE LOCATION 'tablespace/tablespace_1'; - ---创建用户joe。 -openGauss=# CREATE ROLE joe IDENTIFIED BY 'xxxxxxxxx'; - ---创建用户jay。 -openGauss=# CREATE ROLE jay IDENTIFIED BY 'xxxxxxxxx'; - ---创建表空间,且所有者指定为用户joe。 -openGauss=# CREATE TABLESPACE ds_location2 OWNER joe RELATIVE LOCATION 'tablespace/tablespace_1'; - ---把表空间ds_location1重命名为ds_location3。 -openGauss=# ALTER TABLESPACE ds_location1 RENAME TO ds_location3; - ---改变表空间ds_location2的所有者。 -openGauss=# ALTER TABLESPACE ds_location2 OWNER TO jay; - ---删除表空间。 -openGauss=# DROP TABLESPACE ds_location2; -openGauss=# DROP TABLESPACE ds_location3; - ---删除用户。 -openGauss=# DROP ROLE joe; -openGauss=# DROP ROLE jay; -``` - -## 相关链接 - -[CREATE DATABASE](CREATE-DATABASE.md),[CREATE TABLE](CREATE-TABLE.md),[CREATE INDEX](CREATE-INDEX.md),[DROP TABLESPACE](DROP-TABLESPACE.md),[ALTER TABLESPACE](ALTER-TABLESPACE.md) - -## 优化建议 - -- create tablespace - - 不建议在事务内部创建表空间。 - - +# CREATE TABLESPACE + +## 功能描述 + +在数据库中创建一个新的表空间。 + +## 注意事项 + +- 系统管理员或者继承了内置角色gs\_roles\_tablespace权限的用户可以创建表空间。 +- 不允许在一个事务块内部执行 CREATE TABLESPACE 。 +- 执行 CREATE TABLESPACE 失败,如果内部创建目录(文件)操作成功了就会产生残留的目录(文件),重新创建时需要用户手动清理表空间指定的目录下残留的内容。如果在创建过程中涉及到数据目录下的表空间软连接残留,需要先将软连接的残留文件删除,再重新执行 OM 相关操作。 +- CREATE TABLESPACE不支持两阶段事务,如果部分节点执行失败,不支持回滚。 +- 创建表空间前的准备工作参考下述参数说明。 +- 在 HCS 等场景下一般不建议用户使用自定义的表空间。原因:用户自定义表空间通常配合主存(即默认表空间所在的存储设备,如磁盘)以外的其它存储介质使用,以隔离不同业务可以使用的 IO 资源,而在 HCS 等场景下,存储设备都是采用标准化的配置,无其它可用的存储介质,自定义表空间使用不当不利于系统长稳运行以及影响整体性能,因此建议使用默认表空间即可。 + +## 语法格式 + +``` +CREATE TABLESPACE tablespace_name + [ OWNER user_name ] [RELATIVE] LOCATION 'directory' [ MAXSIZE 'space_size' ] + [with_option_clause]; +``` + +其中普通表空间的with\_option\_clause为: + +``` +WITH ( {filesystem= { 'general'| "general" | general} | + random_page_cost = { 'value ' | value } | + seq_page_cost = { 'value ' | value }}[,...]) +``` + +## 参数说明 + +- **tablespace\_name** + + 要创建的表空间名称。 + + 表空间名称不能和 openGauss 中的其他表空间重名,且名称不能以“pg”开头,这样的名称留给系统表空间使用。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **OWNER user\_name** + + 指定该表空间的所有者。缺省时,新表空间的所有者是当前用户。 + + 只有系统管理员可以创建表空间,但是可以通过 OWNER 子句把表空间的所有权赋给其他非系统管理员。 + + 取值范围:字符串,已存在的用户。 + +- **RELATIVE** + + 使用相对路径, LOCATION 目录是相对于各个数据库节点数据目录下的。 + + 目录层次:数据库节点的数据目录/pg\_location/相对路径 + + 相对路径最多指定两层。 + +- **LOCATION directory** + + 用于表空间的目录,对于目录有如下要求: + + - openGauss系统用户必须对该目录拥有读写权限,并且目录为空。如果该目录不存在,将由系统自动创建。 + - 目录必须是绝对路径,目录中不得含有特殊字符(如$、\> 等)。 + - 目录不允许指定在数据库数据目录下。 + - 目录需为本地路径。 + + 取值范围:字符串,有效的目录。 + +- **MAXSIZE 'space\_size'** + + 指定表空间在单个数据库节点上的最大值。 + + 取值范围:字符串格式为正整数+单位,单位当前支持K/M/G/T/P。解析后的数值以 K 为单位,且范围不能够超过 64 比特表示的有符号整数,即1KB\~9007199254740991KB。 + +- **random\_page\_cost** + + 指定随机读取 page 的开销。 + + 取值范围:0\~1.79769e+308。 + + 默认值:使用 GUC 参数random\_page\_cost的值。 + +- **seq\_page\_cost** + + 指定顺序读取 page 的开销。 + + 取值范围:0\~1.79769e+308。 + + 默认值:使用 GUC 参数seq\_page\_cost的值。 + + +## 示例 + +``` +--创建表空间。 +openGauss=# CREATE TABLESPACE ds_location1 RELATIVE LOCATION 'tablespace/tablespace_1'; + +--创建用户 joe 。 +openGauss=# CREATE ROLE joe IDENTIFIED BY 'xxxxxxxxx'; + +--创建用户 jay 。 +openGauss=# CREATE ROLE jay IDENTIFIED BY 'xxxxxxxxx'; + +--创建表空间,且所有者指定为用户 joe 。 +openGauss=# CREATE TABLESPACE ds_location2 OWNER joe RELATIVE LOCATION 'tablespace/tablespace_1'; + +--把表空间 ds_location1 重命名为 ds_location3 。 +openGauss=# ALTER TABLESPACE ds_location1 RENAME TO ds_location3; + +--改变表空间 ds_location2 的所有者。 +openGauss=# ALTER TABLESPACE ds_location2 OWNER TO jay; + +--删除表空间。 +openGauss=# DROP TABLESPACE ds_location2; +openGauss=# DROP TABLESPACE ds_location3; + +--删除用户。 +openGauss=# DROP ROLE joe; +openGauss=# DROP ROLE jay; +``` + +## 相关链接 + +[CREATE DATABASE](CREATE-DATABASE.md),[CREATE TABLE](CREATE-TABLE.md),[CREATE INDEX](CREATE-INDEX.md),[DROP TABLESPACE](DROP-TABLESPACE.md),[ALTER TABLESPACE](ALTER-TABLESPACE.md) + +## 优化建议 + +- create tablespace + + 不建议在事务内部创建表空间。 + + diff --git a/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-CONFIGURATION.md b/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-CONFIGURATION.md index c9e5af09f..7a737a76f 100644 --- a/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-CONFIGURATION.md +++ b/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-CONFIGURATION.md @@ -1,123 +1,123 @@ -# CREATE TEXT SEARCH CONFIGURATION - -## 功能描述 - -创建新的文本搜索配置。一个文本搜索配置声明一个能将一个字符串划分成符号的文本搜索解析器,加上可以用于确定搜索对哪些标记感兴趣的字典。 - -## 注意事项 - -- 若仅声明分析器,那么新的文本搜索配置初始没有从符号类型到词典的映射, 因此会忽略所有的单词。后面必须调用ALTER TEXT SEARCH CONFIGURATION命令创建映射使配置生效。如果声明了COPY选项,那么会自动拷贝指定的文本搜索配置的解析器、映射、配置选项等信息。 -- 若模式名称已给出,那么文本搜索配置会在声明的模式中创建。否则会在当前模式创建。 -- 定义文本搜索配置的用户成为其所有者。 -- PARSER和COPY选项是互相排斥的,因为当一个现有配置被复制,其分析器配置也被复制了。 -- 若仅声明分析器,那么新的文本搜索配置初始没有从符号类型到词典的映射, 因此会忽略所有的单词。 - -## 语法格式 - -``` -CREATE TEXT SEARCH CONFIGURATION name - ( PARSER = parser_name | COPY = source_config ) - [ WITH ( {configuration_option = value} [, ...] )]; -``` - -## 参数说明 - -- **name** - - 要创建的文本搜索配置的名称。该名称可以有模式修饰。 - -- **parser\_name** - - 用于该配置的文本搜索分析器的名称。 - -- **source\_config** - - 要复制的现有文本搜索配置的名称。 - -- **configuration\_option** - - 文本搜索配置的配置参数,主要是针对parser\_name执行的解析器或者source\_config隐含的解析器而言的。 - - 取值范围:目前共支持default、ngram两种类型的解析器,其中default类型的解析器没有对应的configuration\_option、ngram类型解析器对应的configuration\_option如[表1](#zh-cn_topic_0283137399_zh-cn_topic_0237122121_zh-cn_topic_0059777835_t0d301ca84e1a4c16ae8bead85aa1a8c3)所示。 - - **表 1** ngram类型解析器对应的配置参数 - - - - - - - - - - - - - - - - - - - - - - -

解析器

-

配置参数

-

参数描述

-

取值范围

-

ngram

-

gram_size

-

分词长度。

-

正整数,1~4

-

默认值:2

-

punctuation_ignore

-

是否忽略标点符号。

-
  • true(默认值):忽略标点符号。
  • false:不忽略标点符号。
-

grapsymbol_ignore

-

是否忽略图形化字符。

-
  • true:忽略图形化字符。
  • false(默认值):不忽略图形化字符。
-
- - -## 示例 - -``` ---创建文本搜索配置。 -openGauss=# CREATE TEXT SEARCH CONFIGURATION ngram2 (parser=ngram) WITH (gram_size = 2, grapsymbol_ignore = false); - ---创建文本搜索配置。 -openGauss=# CREATE TEXT SEARCH CONFIGURATION ngram3 (copy=ngram2) WITH (gram_size = 2, grapsymbol_ignore = false); - ---添加类型映射。 -openGauss=# ALTER TEXT SEARCH CONFIGURATION ngram2 ADD MAPPING FOR multisymbol WITH simple; - ---创建用户joe。 -openGauss=# CREATE USER joe IDENTIFIED BY 'xxxxxxxxx'; - ---修改文本搜索配置的所有者。 -openGauss=# ALTER TEXT SEARCH CONFIGURATION ngram2 OWNER TO joe; - ---修改文本搜索配置的schema。 -openGauss=# ALTER TEXT SEARCH CONFIGURATION ngram2 SET SCHEMA joe; - ---重命名文本搜索配置。 -openGauss=# ALTER TEXT SEARCH CONFIGURATION joe.ngram2 RENAME TO ngram_2; - ---删除类型映射。 -openGauss=# ALTER TEXT SEARCH CONFIGURATION joe.ngram_2 DROP MAPPING IF EXISTS FOR multisymbol; - ---删除文本搜索配置。 -openGauss=# DROP TEXT SEARCH CONFIGURATION joe.ngram_2; -openGauss=# DROP TEXT SEARCH CONFIGURATION ngram3; - ---删除Schema及用户joe。 -openGauss=# DROP SCHEMA IF EXISTS joe CASCADE; -openGauss=# DROP ROLE IF EXISTS joe; -``` - -## 相关链接 - -[ALTER TEXT SEARCH CONFIGURATION](ALTER-TEXT-SEARCH-CONFIGURATION.md), [DROP TEXT SEARCH CONFIGURATION](DROP-TEXT-SEARCH-CONFIGURATION.md) - +# CREATE TEXT SEARCH CONFIGURATION + +## 功能描述 + +创建新的文本搜索配置。一个文本搜索配置声明一个能将一个字符串划分成符号的文本搜索解析器,加上可以用于确定搜索对哪些标记感兴趣的字典。 + +## 注意事项 + +- 若仅声明分析器,那么新的文本搜索配置初始没有从符号类型到词典的映射, 因此会忽略所有的单词。后面必须调用 ALTER TEXT SEARCH CONFIGURATION 命令创建映射使配置生效。如果声明了 COPY 选项,那么会自动拷贝指定的文本搜索配置的解析器、映射、配置选项等信息。 +- 若模式名称已给出,那么文本搜索配置会在声明的模式中创建。否则会在当前模式创建。 +- 定义文本搜索配置的用户成为其所有者。 +- PARSER和 COPY 选项是互相排斥的,因为当一个现有配置被复制,其分析器配置也被复制了。 +- 若仅声明分析器,那么新的文本搜索配置初始没有从符号类型到词典的映射, 因此会忽略所有的单词。 + +## 语法格式 + +``` +CREATE TEXT SEARCH CONFIGURATION name + ( PARSER = parser_name | COPY = source_config ) + [ WITH ( {configuration_option = value} [, ...] )]; +``` + +## 参数说明 + +- **name** + + 要创建的文本搜索配置的名称。该名称可以有模式修饰。 + +- **parser\_name** + + 用于该配置的文本搜索分析器的名称。 + +- **source\_config** + + 要复制的现有文本搜索配置的名称。 + +- **configuration\_option** + + 文本搜索配置的配置参数,主要是针对parser\_name执行的解析器或者source\_config隐含的解析器而言的。 + + 取值范围:目前共支持default、ngram两种类型的解析器,其中 default 类型的解析器没有对应的configuration\_option、ngram类型解析器对应的configuration\_option如[表1](#zh-cn_topic_0283137399_zh-cn_topic_0237122121_zh-cn_topic_0059777835_t0d301ca84e1a4c16ae8bead85aa1a8c3)所示。 + + **表 1** ngram类型解析器对应的配置参数 + + + + + + + + + + + + + + + + + + + + + + +

解析器

+

配置参数

+

参数描述

+

取值范围

+

ngram

+

gram_size

+

分词长度。

+

正整数,1~4

+

默认值:2

+

punctuation_ignore

+

是否忽略标点符号。

+
  • true(默认值):忽略标点符号。
  • false:不忽略标点符号。
+

grapsymbol_ignore

+

是否忽略图形化字符。

+
  • true:忽略图形化字符。
  • false(默认值):不忽略图形化字符。
+
+ + +## 示例 + +``` +--创建文本搜索配置。 +openGauss=# CREATE TEXT SEARCH CONFIGURATION ngram2 (parser=ngram) WITH (gram_size = 2, grapsymbol_ignore = false); + +--创建文本搜索配置。 +openGauss=# CREATE TEXT SEARCH CONFIGURATION ngram3 (copy=ngram2) WITH (gram_size = 2, grapsymbol_ignore = false); + +--添加类型映射。 +openGauss=# ALTER TEXT SEARCH CONFIGURATION ngram2 ADD MAPPING FOR multisymbol WITH simple; + +--创建用户 joe 。 +openGauss=# CREATE USER joe IDENTIFIED BY 'xxxxxxxxx'; + +--修改文本搜索配置的所有者。 +openGauss=# ALTER TEXT SEARCH CONFIGURATION ngram2 OWNER TO joe; + +--修改文本搜索配置的 schema 。 +openGauss=# ALTER TEXT SEARCH CONFIGURATION ngram2 SET SCHEMA joe; + +--重命名文本搜索配置。 +openGauss=# ALTER TEXT SEARCH CONFIGURATION joe.ngram2 RENAME TO ngram_2; + +--删除类型映射。 +openGauss=# ALTER TEXT SEARCH CONFIGURATION joe.ngram_2 DROP MAPPING IF EXISTS FOR multisymbol; + +--删除文本搜索配置。 +openGauss=# DROP TEXT SEARCH CONFIGURATION joe.ngram_2; +openGauss=# DROP TEXT SEARCH CONFIGURATION ngram3; + +--删除 Schema 及用户 joe 。 +openGauss=# DROP SCHEMA IF EXISTS joe CASCADE; +openGauss=# DROP ROLE IF EXISTS joe; +``` + +## 相关链接 + +[ALTER TEXT SEARCH CONFIGURATION](ALTER-TEXT-SEARCH-CONFIGURATION.md), [DROP TEXT SEARCH CONFIGURATION](DROP-TEXT-SEARCH-CONFIGURATION.md) + diff --git a/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-DICTIONARY.md b/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-DICTIONARY.md index 3fea5e208..b153c8423 100644 --- a/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-DICTIONARY.md +++ b/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-DICTIONARY.md @@ -1,143 +1,143 @@ -# CREATE TEXT SEARCH DICTIONARY - -## 功能描述 - -创建一个新的全文检索词典。词典是一种指定在全文检索时识别特定词并处理的方法。 - -词典的创建依赖于预定义模板(在系统表[PG\_TS\_TEMPLATE](PG_TS_TEMPLATE.md)中定义),支持创建五种类型的词典,分别是Simple、Ispell、Synonym、Thesaurus以及Snowball,每种类型的词典可以完成不同的任务。 - -## 注意事项 - -- 具有SYSADMIN权限的用户可以执行创建词典操作,创建该词典的用户自动成为其所有者。 -- 临时模式(pg\_temp)下不允许创建词典。 -- 创建或修改词典之后,任何对于用户自定义的词典定义文件的修改,将不会影响到数据库中的词典。如果需要在数据库中使用这些修改,需使用ALTER语句更新对应词典的定义文件。 - -## 语法格式 - -``` -CREATE TEXT SEARCH DICTIONARY name ( - TEMPLATE = template - [, option = value [, ... ]] -); -``` - -## 参数说明 - -- **name** - - 要创建的词典的名称(可指定模式名,否则在当前模式下创建)。 - - 取值范围:符合标识符命名规范的字符串,且最大长度不超过63个字符。 - -- **template** - - 模板名。 - - 取值范围:系统表[PG\_TS\_TEMPLATE](PG_TS_TEMPLATE.md)中定义的模板:Simple/Synonym/Thesaurus/Ispell/Snowball。 - -- **option** - - 参数名。与template值对应,不同的词典模板具有不同的参数列表,且与指定顺序无关。 - - - Simple词典对应的option - - **STOPWORDS** - - 停用词表文件名,默认后缀名为stop。停用词文件格式为一组word列表,每行定义一个停用词。词典处理时,文件中的空行和空格会被忽略,并将stopword词组转换为小写形式。 - - - **ACCEPT** - - 是否将非停用词设置为已识别。默认值为true。 - - 当Simple词典设置参数ACCEPT=true时,将不会传递任何token给后继词典,此时建议将其放置在词典列表的最后。反之,当ACCEPT=false时,建议将该Simple词典放置在列表中的至少一个词典之前。 - - - **FILEPATH** - - 词典文件所在目录。目录可以指定为本地目录和OBS目录(只能在安全模式下指定OBS目录,通过启动时添加securitymode选项进入安全模式)。其中,本地目录格式为“file://absolute\_path”,OBS目录格式为“obs://bucket\_name/path accesskey=ak secretkey=sk region=rg”。默认值为预定义词典文件所在目录。FILEPATH参数必须和STOPWORDS参数同时指定,不允许单独指定。 - - - Synonym词典对应的option - - **SYNONYM** - - 同义词词典的定义文件名,默认后缀名为syn。 - - 文件格式为一组同义词列表,每行格式为“token synonym”,即token和其对应的synonym,中间以空格相连。 - - - **CASESENSITIVE** - - 设置是否大小写敏感,默认值为false,此时词典文件中的token和synonym均会转为小写形式处理。如果设置为true,则不会进行小写转换。 - - - **FILEPATH** - - 同义词词典文件所在目录。目录可以指定为本地目录和OBS目录两种形式(只能在安全模式下指定OBS目录,通过启动时添加securitymode选项进入安全模式)。其中,本地目录格式为“file://absolute\_path”,OBS目录格式为“obs://bucket\_name/path accesskey=ak secretkey=sk region=rg”。默认值为预定义词典文件所在目录。 - - - Thesaurus词典对应的option - - **DICTFILE** - - 词典定义文件名,默认后缀名为ths。 - - 文件格式为一组同义词列表,每行格式为“sample words : indexed words”,中间冒号(:)作为短语和其替换词间的分隔符。TZ词典处理时,如果有多个匹配的sample words,将选择最长匹配输出。 - - - **DICTIONARY** - - 用于词规范化的子词典名,必须且仅能定义一个。该词典必须是已经存在的,在检查短语匹配之前使用,用于识别和规范输入文本。 - - 如果子词典无法识别输入词,将会报错。此时,需要移除该词或者更新子词典使其识别。此外,可在indexed words的开头放上一个星号(\*)来跳过在其上应用子词典,但是所有sample words必须可以被子词典识别。 - - 如果词典文件定义的sample words中,含有子词典中定义的停用词,需要用问号(?)替代停用词。假设a和the是子词典中所定义的停用词,如下: - - ``` - ? one ? two : swsw - ``` - - 上述同义词组定义会匹配“a one the two”以及“the one a two”,这两个短语均会被swsw替代输出。 - - - **FILEPATH** - - 词典定义文件所在目录。目录可以指定为本地目录和OBS目录两种形式(只能在安全模式下指定OBS目录,通过启动时添加securitymode选项进入安全模式)。其中,本地目录格式为“file://absolute\_path”,OBS目录格式为“obs://bucket\_name/path accesskey=ak secretkey=sk region=rg”。默认值为预定义词典文件所在目录。 - - - Ispell词典 - - **DICTFILE** - - 词典定义文件名,默认后缀名为dict。 - - - **AFFFILE** - - 词缀文件名,默认后缀名为affix。 - - - **STOPWORDS** - - 停用词文件名,默认后缀名为stop,文件格式要求与Simple类型词典的停用词文件相同。 - - - **FILEPATH** - - 词典文件所在目录。可以指定为本地目录和OBS目录两种形式(只能在安全模式下指定OBS目录,通过启动时添加securitymode选项进入安全模式)。其中,本地目录格式为“file://absolute\_path”,OBS目录格式为“obs://bucket\_name/path accesskey=ak secretkey=sk region=rg”。默认值为预定义词典文件所在目录。 - - - Snowball词典 - - **LANGUAGE** - - 语言名,标识使用哪种语言的词干分析算法。算法按照对应语言中的拼写规则,缩减输入词的常见变体形式为一个基础词或词干。 - - - **STOPWORDS** - - 停用词表文件名,默认后缀名为stop,文件格式要求与Simple类型词典的停用词文件相同。 - - - **FILEPATH** - - 词典定义文件所在目录。可以指定为本地目录或者OBS目录(只能在安全模式下指定OBS目录,通过启动时添加securitymode选项进入安全模式)。其中,本地目录格式为“file://absolute\_path”,OBS目录格式为“obs://bucket\_name/path accesskey=ak secretkey=sk region=rg”。默认值为预定义词典文件所在目录。FILEPATH参数必须和STOPWORDS参数同时指定,不允许单独指定。 - - - >![](public_sys-resources/icon-note.gif) **说明:** - >词典定义文件的文件名仅支持小写字母、数据、下划线混合。 - -- **value** - - 参数值。如果不是简单的标识符或数字,则参数值必须加单引号(标示符和数字同样可以加上单引号)。 - - -## 示例 - -请参见[配置示例](配置示例.md)一节的示例。 - -## 相关链接 - -[ALTER TEXT SEARCH DICTIONARY](ALTER-TEXT-SEARCH-DICTIONARY.md),[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md) - +# CREATE TEXT SEARCH DICTIONARY + +## 功能描述 + +创建一个新的全文检索词典。词典是一种指定在全文检索时识别特定词并处理的方法。 + +词典的创建依赖于预定义模板(在系统表[PG\_TS\_TEMPLATE](PG_TS_TEMPLATE.md)中定义),支持创建五种类型的词典,分别是Simple、Ispell、Synonym、Thesaurus以及 Snowball ,每种类型的词典可以完成不同的任务。 + +## 注意事项 + +- 具有 SYSADMIN 权限的用户可以执行创建词典操作,创建该词典的用户自动成为其所有者。 +- 临时模式(pg\_temp)下不允许创建词典。 +- 创建或修改词典之后,任何对于用户自定义的词典定义文件的修改,将不会影响到数据库中的词典。如果需要在数据库中使用这些修改,需使用 ALTER 语句更新对应词典的定义文件。 + +## 语法格式 + +``` +CREATE TEXT SEARCH DICTIONARY name ( + TEMPLATE = template + [, option = value [, ... ]] +); +``` + +## 参数说明 + +- **name** + + 要创建的词典的名称(可指定模式名,否则在当前模式下创建)。 + + 取值范围:符合标识符命名规范的字符串,且最大长度不超过 63 个字符。 + +- **template** + + 模板名。 + + 取值范围:系统表[PG\_TS\_TEMPLATE](PG_TS_TEMPLATE.md)中定义的模板:Simple/Synonym/Thesaurus/Ispell/Snowball。 + +- **option** + + 参数名。与 template 值对应,不同的词典模板具有不同的参数列表,且与指定顺序无关。 + + - Simple词典对应的option + - **STOPWORDS** + + 停用词表文件名,默认后缀名为 stop 。停用词文件格式为一组 word 列表,每行定义一个停用词。词典处理时,文件中的空行和空格会被忽略,并将 stopword 词组转换为小写形式。 + + - **ACCEPT** + + 是否将非停用词设置为已识别。默认值为 true 。 + + 当 Simple 词典设置参数ACCEPT=true时,将不会传递任何 token 给后继词典,此时建议将其放置在词典列表的最后。反之,当ACCEPT=false时,建议将该 Simple 词典放置在列表中的至少一个词典之前。 + + - **FILEPATH** + + 词典文件所在目录。目录可以指定为本地目录和 OBS 目录(只能在安全模式下指定 OBS 目录,通过启动时添加 securitymode 选项进入安全模式)。其中,本地目录格式为“file://absolute\_path”, OBS 目录格式为“obs://bucket\_name/path accesskey=ak secretkey=sk region=rg”。默认值为预定义词典文件所在目录。 FILEPATH 参数必须和 STOPWORDS 参数同时指定,不允许单独指定。 + + - Synonym词典对应的option + - **SYNONYM** + + 同义词词典的定义文件名,默认后缀名为 syn 。 + + 文件格式为一组同义词列表,每行格式为“token synonym”,即 token 和其对应的 synonym ,中间以空格相连。 + + - **CASESENSITIVE** + + 设置是否大小写敏感,默认值为 false ,此时词典文件中的 token 和 synonym 均会转为小写形式处理。如果设置为 true ,则不会进行小写转换。 + + - **FILEPATH** + + 同义词词典文件所在目录。目录可以指定为本地目录和 OBS 目录两种形式(只能在安全模式下指定 OBS 目录,通过启动时添加 securitymode 选项进入安全模式)。其中,本地目录格式为“file://absolute\_path”, OBS 目录格式为“obs://bucket\_name/path accesskey=ak secretkey=sk region=rg”。默认值为预定义词典文件所在目录。 + + - Thesaurus词典对应的option + - **DICTFILE** + + 词典定义文件名,默认后缀名为 ths 。 + + 文件格式为一组同义词列表,每行格式为“sample words : indexed words”,中间冒号(:)作为短语和其替换词间的分隔符。 TZ 词典处理时,如果有多个匹配的 sample words ,将选择最长匹配输出。 + + - **DICTIONARY** + + 用于词规范化的子词典名,必须且仅能定义一个。该词典必须是已经存在的,在检查短语匹配之前使用,用于识别和规范输入文本。 + + 如果子词典无法识别输入词,将会报错。此时,需要移除该词或者更新子词典使其识别。此外,可在 indexed words 的开头放上一个星号(\*)来跳过在其上应用子词典,但是所有 sample words 必须可以被子词典识别。 + + 如果词典文件定义的 sample words 中,含有子词典中定义的停用词,需要用问号(?)替代停用词。假设 a 和 the 是子词典中所定义的停用词,如下: + + ``` + ? one ? two : swsw + ``` + + 上述同义词组定义会匹配“a one the two”以及“the one a two”,这两个短语均会被 swsw 替代输出。 + + - **FILEPATH** + + 词典定义文件所在目录。目录可以指定为本地目录和 OBS 目录两种形式(只能在安全模式下指定 OBS 目录,通过启动时添加 securitymode 选项进入安全模式)。其中,本地目录格式为“file://absolute\_path”, OBS 目录格式为“obs://bucket\_name/path accesskey=ak secretkey=sk region=rg”。默认值为预定义词典文件所在目录。 + + - Ispell词典 + - **DICTFILE** + + 词典定义文件名,默认后缀名为 dict 。 + + - **AFFFILE** + + 词缀文件名,默认后缀名为 affix 。 + + - **STOPWORDS** + + 停用词文件名,默认后缀名为 stop ,文件格式要求与 Simple 类型词典的停用词文件相同。 + + - **FILEPATH** + + 词典文件所在目录。可以指定为本地目录和 OBS 目录两种形式(只能在安全模式下指定 OBS 目录,通过启动时添加 securitymode 选项进入安全模式)。其中,本地目录格式为“file://absolute\_path”, OBS 目录格式为“obs://bucket\_name/path accesskey=ak secretkey=sk region=rg”。默认值为预定义词典文件所在目录。 + + - Snowball词典 + - **LANGUAGE** + + 语言名,标识使用哪种语言的词干分析算法。算法按照对应语言中的拼写规则,缩减输入词的常见变体形式为一个基础词或词干。 + + - **STOPWORDS** + + 停用词表文件名,默认后缀名为 stop ,文件格式要求与 Simple 类型词典的停用词文件相同。 + + - **FILEPATH** + + 词典定义文件所在目录。可以指定为本地目录或者 OBS 目录(只能在安全模式下指定 OBS 目录,通过启动时添加 securitymode 选项进入安全模式)。其中,本地目录格式为“file://absolute\_path”, OBS 目录格式为“obs://bucket\_name/path accesskey=ak secretkey=sk region=rg”。默认值为预定义词典文件所在目录。 FILEPATH 参数必须和 STOPWORDS 参数同时指定,不允许单独指定。 + + + >![](public_sys-resources/icon-note.gif) **说明:** + >词典定义文件的文件名仅支持小写字母、数据、下划线混合。 + +- **value** + + 参数值。如果不是简单的标识符或数字,则参数值必须加单引号(标示符和数字同样可以加上单引号)。 + + +## 示例 + +请参见[配置示例](配置示例.md)一节的示例。 + +## 相关链接 + +[ALTER TEXT SEARCH DICTIONARY](ALTER-TEXT-SEARCH-DICTIONARY.md),[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md) + diff --git a/content/zh/docs/Developerguide/CREATE-TRIGGER.md b/content/zh/docs/Developerguide/CREATE-TRIGGER.md index 48b1a3baa..583509281 100644 --- a/content/zh/docs/Developerguide/CREATE-TRIGGER.md +++ b/content/zh/docs/Developerguide/CREATE-TRIGGER.md @@ -1,355 +1,355 @@ -# CREATE TRIGGER - -## 功能描述 - -创建一个触发器。 触发器将与指定的表或视图关联,并在特定条件下执行指定的函数。 - -## 注意事项 - -- 当前仅支持在普通行存表上创建触发器,不支持在列存表、临时表、unlogged表等类型表上创建触发器。 -- 如果为同一事件定义了多个相同类型的触发器,则按触发器的名称字母顺序触发它们。 -- 触发器常用于多表间数据关联同步场景,对SQL执行性能影响较大,不建议在大数据量同步及对性能要求高的场景中使用。 - -## 语法格式 - -``` -CREATE [ CONSTRAINT ] TRIGGER trigger_name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] } - ON table_name - [ FROM referenced_table_name ] - { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } } - [ FOR [ EACH ] { ROW | STATEMENT } ] - [ WHEN ( condition ) ] - EXECUTE PROCEDURE function_name ( arguments ); -``` - -其中event包含以下几种: - -``` - INSERT - UPDATE [ OF column_name [, ... ] ] - DELETE - TRUNCATE -``` - -## 参数说明 - -- **CONSTRAINT** - - 可选项,指定此参数将创建约束触发器,即触发器作为约束来使用。除了可以使用SET CONSTRAINTS调整触发器触发的时间之外,这与常规触发器相同。 约束触发器必须是AFTER ROW触发器。 - -- **trigger\_name** - - 触发器名称,该名称不能限定模式,因为触发器自动继承其所在表的模式,且同一个表的触发器不能重名。 对于约束触发器,使用[SET CONSTRAINTS](SET-CONSTRAINTS.md)修改触发器行为时也使用此名称。 - - 取值范围:符合标识符命名规范的字符串,且最大长度不超过63个字符。 - -- **BEFORE** - - 触发器函数是在触发事件发生前执行。 - -- **AFTER** - - 触发器函数是在触发事件发生后执行,约束触发器只能指定为AFTER。 - -- **INSTEAD OF** - - 触发器函数直接替代触发事件。 - -- **event** - - 启动触发器的事件,取值范围包括:INSERT、UPDATE、DELETE或TRUNCATE,也可以通过OR同时指定多个触发事件。 - - 对于UPDATE事件类型,可以使用下面语法指定列: - - ``` - UPDATE OF column_name1 [, column_name2 ... ] - ``` - - 表示当这些列作为UPDATE语句的目标列时,才会启动触发器,但是INSTEAD OF UPDATE类型不支持指定列信息。 - -- **table\_name** - - 需要创建触发器的表名称。 - - 取值范围:数据库中已经存在的表名称。 - -- **referenced\_table\_name** - - 约束引用的另一个表的名称。 只能为约束触发器指定,常见于外键约束。 - - 取值范围:数据库中已经存在的表名称。 - -- **DEFERRABLE | NOT DEFERRABLE** - - 约束触发器的启动时机,仅作用于约束触发器。这两个关键字设置该约束是否可推迟。 - - 详细介绍请参见[CREATE TABLE](CREATE-TABLE.md)。 - -- **INITIALLY IMMEDIATE** **| INITIALLY DEFERRED** - - 如果约束是可推迟的,则这个子句声明检查约束的缺省时间,仅作用于约束触发器。 - - 详细介绍请参见[CREATE TABLE](CREATE-TABLE.md)。 - -- **FOR EACH ROW | FOR EACH STATEMENT** - - 触发器的触发频率。 - - - FOR EACH ROW是指该触发器是受触发事件影响的每一行触发一次。 - - FOR EACH STATEMENT是指该触发器是每个SQL语句只触发一次。 - - 未指定时默认值为FOR EACH STATEMENT。约束触发器只能指定为FOR EACH ROW。 - -- **condition** - - 决定是否实际执行触发器函数的条件表达式。当指定WHEN时,只有在条件返回true时才会调用该函数。 - - 在FOR EACH ROW触发器中,WHEN条件可以通过分别写入OLD.column\_name或NEW.column\_name来引用旧行或新行值的列。 当然,INSERT触发器不能引用OLD和DELETE触发器不能引用NEW。 - - INSTEAD OF触发器不支持WHEN条件。 - - WHEN表达式不能包含子查询。 - - 对于约束触发器,WHEN条件的评估不会延迟,而是在执行更新操作后立即发生。 如果条件返回值不为true,则触发器不会排队等待延迟执行。 - -- **function\_name** - - 用户定义的函数,必须声明为不带参数并返回类型为触发器,在触发器触发时执行。 - -- **arguments** - - 执行触发器时要提供给函数的可选的以逗号分隔的参数列表。参数是文字字符串常量,简单的名称和数字常量也可以写在这里,但它们都将被转换为字符串。 请检查触发器函数的实现语言的描述,以了解如何在函数内访问这些参数。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >关于触发器种类: - > - >- INSTEAD OF的触发器必须标记为FOR EACH ROW,并且只能在视图上定义。 - > - >- BEFORE和AFTER触发器作用在视图上时,只能标记为FOR EACH STATEMENT。 - > - >- TRUNCATE类型触发器仅限FOR EACH STATEMENT。 - - **表 1** 表和视图上支持的触发器种类: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

触发时机

-

触发事件

-

行级

-

语句级

-

BEFORE

-

INSERT/UPDATE/DELETE

-

-

表和视图

-

TRUNCATE

-

不支持

-

-

AFTER

-

INSERT/UPDATE/DELETE

-

-

表和视图

-

TRUNCATE

-

不支持

-

-

INSTEAD OF

-

INSERT/UPDATE/DELETE

-

视图

-

不支持

-

TRUNCATE

-

不支持

-

不支持

-
- - **表 2** PLPGSQL类型触发器函数特殊变量: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

变量名

-

变量含义

-

NEW

-

INSERT及UPDATE操作涉及tuple信息中的新值,对DELETE为空。

-

OLD

-

UPDATE及DELETE操作涉及tuple信息中的旧值,对INSERT为空。

-

TG_NAME

-

触发器名称。

-

TG_WHEN

-

触发器触发时机(BEFORE/AFTER/INSTEAD OF)。

-

TG_LEVEL

-

触发频率(ROW/STATEMENT)。

-

TG_OP

-

触发操作(INSERT/UPDATE/DELETE/TRUNCATE)。

-

TG_RELID

-

触发器所在表OID。

-

TG_RELNAME

-

触发器所在表名(已废弃,现用TG_TABLE_NAME替代)。

-

TG_TABLE_NAME

-

触发器所在表名。

-

TG_TABLE_SCHEMA

-

触发器所在表的SCHEMA信息。

-

TG_NARGS

-

触发器函数参数个数。

-

TG_ARGV[]

-

触发器函数参数列表。

-
- - -## 示例 - -``` ---创建源表及触发表 -openGauss=# CREATE TABLE test_trigger_src_tbl(id1 INT, id2 INT, id3 INT); -openGauss=# CREATE TABLE test_trigger_des_tbl(id1 INT, id2 INT, id3 INT); - ---创建触发器函数 -openGauss=# CREATE OR REPLACE FUNCTION tri_insert_func() RETURNS TRIGGER AS - $$ - DECLARE - BEGIN - INSERT INTO test_trigger_des_tbl VALUES(NEW.id1, NEW.id2, NEW.id3); - RETURN NEW; - END - $$ LANGUAGE PLPGSQL; - -openGauss=# CREATE OR REPLACE FUNCTION tri_update_func() RETURNS TRIGGER AS - $$ - DECLARE - BEGIN - UPDATE test_trigger_des_tbl SET id3 = NEW.id3 WHERE id1=OLD.id1; - RETURN OLD; - END - $$ LANGUAGE PLPGSQL; - -openGauss=# CREATE OR REPLACE FUNCTION TRI_DELETE_FUNC() RETURNS TRIGGER AS - $$ - DECLARE - BEGIN - DELETE FROM test_trigger_des_tbl WHERE id1=OLD.id1; - RETURN OLD; - END - $$ LANGUAGE PLPGSQL; - ---创建INSERT触发器 -openGauss=# CREATE TRIGGER insert_trigger - BEFORE INSERT ON test_trigger_src_tbl - FOR EACH ROW - EXECUTE PROCEDURE tri_insert_func(); - ---创建UPDATE触发器 -openGauss=# CREATE TRIGGER update_trigger - AFTER UPDATE ON test_trigger_src_tbl - FOR EACH ROW - EXECUTE PROCEDURE tri_update_func(); - ---创建DELETE触发器 -openGauss=# CREATE TRIGGER delete_trigger - BEFORE DELETE ON test_trigger_src_tbl - FOR EACH ROW - EXECUTE PROCEDURE tri_delete_func(); - ---执行INSERT触发事件并检查触发结果 -openGauss=# INSERT INTO test_trigger_src_tbl VALUES(100,200,300); -openGauss=# SELECT * FROM test_trigger_src_tbl; -openGauss=# SELECT * FROM test_trigger_des_tbl; //查看触发操作是否生效。 - ---执行UPDATE触发事件并检查触发结果 -openGauss=# UPDATE test_trigger_src_tbl SET id3=400 WHERE id1=100; -openGauss=# SELECT * FROM test_trigger_src_tbl; -openGauss=# SELECT * FROM test_trigger_des_tbl; //查看触发操作是否生效 - ---执行DELETE触发事件并检查触发结果 -openGauss=# DELETE FROM test_trigger_src_tbl WHERE id1=100; -openGauss=# SELECT * FROM test_trigger_src_tbl; -openGauss=# SELECT * FROM test_trigger_des_tbl; //查看触发操作是否生效 - ---修改触发器 -openGauss=# ALTER TRIGGER delete_trigger ON test_trigger_src_tbl RENAME TO delete_trigger_renamed; - ---禁用insert_trigger触发器 -openGauss=# ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER insert_trigger; - ---禁用当前表上所有触发器 -openGauss=# ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER ALL; - ---删除触发器 -openGauss=# DROP TRIGGER insert_trigger ON test_trigger_src_tbl; -openGauss=# DROP TRIGGER update_trigger ON test_trigger_src_tbl; -openGauss=# DROP TRIGGER delete_trigger_renamed ON test_trigger_src_tbl; -``` - -## 相关链接 - -[ALTER TRIGGER](ALTER-TRIGGER.md),[DROP TRIGGER](DROP-TRIGGER.md),[ALTER TABLE](ALTER-TABLE.md) - +# CREATE TRIGGER + +## 功能描述 + +创建一个触发器。 触发器将与指定的表或视图关联,并在特定条件下执行指定的函数。 + +## 注意事项 + +- 当前仅支持在普通行存表上创建触发器,不支持在列存表、临时表、unlogged表等类型表上创建触发器。 +- 如果为同一事件定义了多个相同类型的触发器,则按触发器的名称字母顺序触发它们。 +- 触发器常用于多表间数据关联同步场景,对 SQL 执行性能影响较大,不建议在大数据量同步及对性能要求高的场景中使用。 + +## 语法格式 + +``` +CREATE [ CONSTRAINT ] TRIGGER trigger_name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] } + ON table_name + [ FROM referenced_table_name ] + { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } } + [ FOR [ EACH ] { ROW | STATEMENT } ] + [ WHEN ( condition ) ] + EXECUTE PROCEDURE function_name ( arguments ); +``` + +其中 event 包含以下几种: + +``` + INSERT + UPDATE [ OF column_name [, ... ] ] + DELETE + TRUNCATE +``` + +## 参数说明 + +- **CONSTRAINT** + + 可选项,指定此参数将创建约束触发器,即触发器作为约束来使用。除了可以使用 SET CONSTRAINTS 调整触发器触发的时间之外,这与常规触发器相同。 约束触发器必须是 AFTER ROW 触发器。 + +- **trigger\_name** + + 触发器名称,该名称不能限定模式,因为触发器自动继承其所在表的模式,且同一个表的触发器不能重名。 对于约束触发器,使用[SET CONSTRAINTS](SET-CONSTRAINTS.md)修改触发器行为时也使用此名称。 + + 取值范围:符合标识符命名规范的字符串,且最大长度不超过 63 个字符。 + +- **BEFORE** + + 触发器函数是在触发事件发生前执行。 + +- **AFTER** + + 触发器函数是在触发事件发生后执行,约束触发器只能指定为 AFTER 。 + +- **INSTEAD OF** + + 触发器函数直接替代触发事件。 + +- **event** + + 启动触发器的事件,取值范围包括:INSERT、UPDATE、DELETE或 TRUNCATE ,也可以通过 OR 同时指定多个触发事件。 + + 对于 UPDATE 事件类型,可以使用下面语法指定列: + + ``` + UPDATE OF column_name1 [, column_name2 ... ] + ``` + + 表示当这些列作为 UPDATE 语句的目标列时,才会启动触发器,但是 INSTEAD OF UPDATE 类型不支持指定列信息。 + +- **table\_name** + + 需要创建触发器的表名称。 + + 取值范围:数据库中已经存在的表名称。 + +- **referenced\_table\_name** + + 约束引用的另一个表的名称。 只能为约束触发器指定,常见于外键约束。 + + 取值范围:数据库中已经存在的表名称。 + +- **DEFERRABLE | NOT DEFERRABLE** + + 约束触发器的启动时机,仅作用于约束触发器。这两个关键字设置该约束是否可推迟。 + + 详细介绍请参见[CREATE TABLE](CREATE-TABLE.md)。 + +- **INITIALLY IMMEDIATE** **| INITIALLY DEFERRED** + + 如果约束是可推迟的,则这个子句声明检查约束的缺省时间,仅作用于约束触发器。 + + 详细介绍请参见[CREATE TABLE](CREATE-TABLE.md)。 + +- **FOR EACH ROW | FOR EACH STATEMENT** + + 触发器的触发频率。 + + - FOR EACH ROW是指该触发器是受触发事件影响的每一行触发一次。 + - FOR EACH STATEMENT是指该触发器是每个 SQL 语句只触发一次。 + + 未指定时默认值为 FOR EACH STATEMENT 。约束触发器只能指定为 FOR EACH ROW 。 + +- **condition** + + 决定是否实际执行触发器函数的条件表达式。当指定 WHEN 时,只有在条件返回 true 时才会调用该函数。 + + 在 FOR EACH ROW 触发器中, WHEN 条件可以通过分别写入OLD.column\_name或NEW.column\_name来引用旧行或新行值的列。 当然, INSERT 触发器不能引用 OLD 和 DELETE 触发器不能引用 NEW 。 + +INSTEAD OF 触发器不支持 WHEN 条件。 + +WHEN 表达式不能包含子查询。 + + 对于约束触发器, WHEN 条件的评估不会延迟,而是在执行更新操作后立即发生。 如果条件返回值不为 true ,则触发器不会排队等待延迟执行。 + +- **function\_name** + + 用户定义的函数,必须声明为不带参数并返回类型为触发器,在触发器触发时执行。 + +- **arguments** + + 执行触发器时要提供给函数的可选的以逗号分隔的参数列表。参数是文字字符串常量,简单的名称和数字常量也可以写在这里,但它们都将被转换为字符串。 请检查触发器函数的实现语言的描述,以了解如何在函数内访问这些参数。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >关于触发器种类: + > + >- INSTEAD OF的触发器必须标记为 FOR EACH ROW ,并且只能在视图上定义。 + > + >- BEFORE和 AFTER 触发器作用在视图上时,只能标记为 FOR EACH STATEMENT 。 + > + >- TRUNCATE类型触发器仅限 FOR EACH STATEMENT 。 + + **表 1** 表和视图上支持的触发器种类: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

触发时机

+

触发事件

+

行级

+

语句级

+

BEFORE

+

INSERT/UPDATE/DELETE

+

+

表和视图

+

TRUNCATE

+

不支持

+

+

AFTER

+

INSERT/UPDATE/DELETE

+

+

表和视图

+

TRUNCATE

+

不支持

+

+

INSTEAD OF

+

INSERT/UPDATE/DELETE

+

视图

+

不支持

+

TRUNCATE

+

不支持

+

不支持

+
+ + **表 2** PLPGSQL类型触发器函数特殊变量: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

变量名

+

变量含义

+

NEW

+

INSERT及 UPDATE 操作涉及 tuple 信息中的新值,对 DELETE 为空。

+

OLD

+

UPDATE及 DELETE 操作涉及 tuple 信息中的旧值,对 INSERT 为空。

+

TG_NAME

+

触发器名称。

+

TG_WHEN

+

触发器触发时机(BEFORE/AFTER/INSTEAD OF)。

+

TG_LEVEL

+

触发频率(ROW/STATEMENT)。

+

TG_OP

+

触发操作(INSERT/UPDATE/DELETE/TRUNCATE)。

+

TG_RELID

+

触发器所在表 OID 。

+

TG_RELNAME

+

触发器所在表名(已废弃,现用 TG_TABLE_NAME 替代)。

+

TG_TABLE_NAME

+

触发器所在表名。

+

TG_TABLE_SCHEMA

+

触发器所在表的 SCHEMA 信息。

+

TG_NARGS

+

触发器函数参数个数。

+

TG_ARGV[]

+

触发器函数参数列表。

+
+ + +## 示例 + +``` +--创建源表及触发表 +openGauss=# CREATE TABLE test_trigger_src_tbl(id1 INT, id2 INT , id3 INT); +openGauss=# CREATE TABLE test_trigger_des_tbl(id1 INT, id2 INT , id3 INT); + +--创建触发器函数 +openGauss=# CREATE OR REPLACE FUNCTION tri_insert_func() RETURNS TRIGGER AS + $$ + DECLARE + BEGIN + INSERT INTO test_trigger_des_tbl VALUES(NEW.id1, NEW.id2, NEW.id3); + RETURN NEW; + END + $$ LANGUAGE PLPGSQL; + +openGauss=# CREATE OR REPLACE FUNCTION tri_update_func() RETURNS TRIGGER AS + $$ + DECLARE + BEGIN + UPDATE test_trigger_des_tbl SET id3 = NEW.id3 WHERE id1=OLD.id1; + RETURN OLD; + END + $$ LANGUAGE PLPGSQL; + +openGauss=# CREATE OR REPLACE FUNCTION TRI_DELETE_FUNC() RETURNS TRIGGER AS + $$ + DECLARE + BEGIN + DELETE FROM test_trigger_des_tbl WHERE id1=OLD.id1; + RETURN OLD; + END + $$ LANGUAGE PLPGSQL; + +--创建 INSERT 触发器 +openGauss=# CREATE TRIGGER insert_trigger + BEFORE INSERT ON test_trigger_src_tbl + FOR EACH ROW + EXECUTE PROCEDURE tri_insert_func(); + +--创建 UPDATE 触发器 +openGauss=# CREATE TRIGGER update_trigger + AFTER UPDATE ON test_trigger_src_tbl + FOR EACH ROW + EXECUTE PROCEDURE tri_update_func(); + +--创建 DELETE 触发器 +openGauss=# CREATE TRIGGER delete_trigger + BEFORE DELETE ON test_trigger_src_tbl + FOR EACH ROW + EXECUTE PROCEDURE tri_delete_func(); + +--执行 INSERT 触发事件并检查触发结果 +openGauss=# INSERT INTO test_trigger_src_tbl VALUES(100, 200 ,300); +openGauss=# SELECT * FROM test_trigger_src_tbl; +openGauss=# SELECT * FROM test_trigger_des_tbl; //查看触发操作是否生效。 + +--执行 UPDATE 触发事件并检查触发结果 +openGauss=# UPDATE test_trigger_src_tbl SET id3=400 WHERE id1=100; +openGauss=# SELECT * FROM test_trigger_src_tbl; +openGauss=# SELECT * FROM test_trigger_des_tbl; //查看触发操作是否生效 + +--执行 DELETE 触发事件并检查触发结果 +openGauss=# DELETE FROM test_trigger_src_tbl WHERE id1=100; +openGauss=# SELECT * FROM test_trigger_src_tbl; +openGauss=# SELECT * FROM test_trigger_des_tbl; //查看触发操作是否生效 + +--修改触发器 +openGauss=# ALTER TRIGGER delete_trigger ON test_trigger_src_tbl RENAME TO delete_trigger_renamed; + +--禁用 insert_trigger 触发器 +openGauss=# ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER insert_trigger; + +--禁用当前表上所有触发器 +openGauss=# ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER ALL; + +--删除触发器 +openGauss=# DROP TRIGGER insert_trigger ON test_trigger_src_tbl; +openGauss=# DROP TRIGGER update_trigger ON test_trigger_src_tbl; +openGauss=# DROP TRIGGER delete_trigger_renamed ON test_trigger_src_tbl; +``` + +## 相关链接 + +[ALTER TRIGGER](ALTER-TRIGGER.md),[DROP TRIGGER](DROP-TRIGGER.md),[ALTER TABLE](ALTER-TABLE.md) + diff --git a/content/zh/docs/Developerguide/CREATE-TYPE.md b/content/zh/docs/Developerguide/CREATE-TYPE.md index 262075e75..281f3e715 100644 --- a/content/zh/docs/Developerguide/CREATE-TYPE.md +++ b/content/zh/docs/Developerguide/CREATE-TYPE.md @@ -1,274 +1,274 @@ -# CREATE TYPE - -## 功能描述 - -在当前数据库中定义一种新的数据类型。定义数据类型的用户将成为该数据类型的拥有者。类型只适用于行存表 - -有四种形式的CREATE TYPE,分别为:复合类型、基本类型、shell类型和枚举类型。 - -- 复合类型 - - 复合类型由一个属性名和数据类型的列表指定。如果属性的数据类型是可排序的,也可以指定该属性的排序规则。复合类型本质上和表的行类型相同,但是如果只想定义一种类型,使用CREATE TYPE避免了创建一个实际的表。单独的复合类型也是很有用的,例如可以作为函数的参数或者返回类型。 - - 为了能够创建复合类型,必须拥有在其所有属性类型上的USAGE特权。 - -- 基本类型 - - 用户可以自定义一种新的基本类型(标量类型)。通常来说这些函数必须是底层语言所编写。 - -- shell类型 - - shell类型是一种用于后面要定义的类型的占位符,通过发出一个不带除类型名之外其他参数的CREATE TYPE命令可以创建这种类型。在创建基本类型时,需要shell类型作为一种向前引用。 - -- 枚举类型 - - 由若干个标签构成的列表,每一个标签值都是一个非空字符串,且字符串长度必须不超过63个字节。 - - -## 注意事项 - -如果给定一个模式名,那么该类型将被创建在指定的模式中。否则它会被创建在当前模式中。类型名称必须与同一个模式中任何现有的类型或者域相区别(因为表具有相关的数据类型,类型名称也必须与同一个模式中任何现有表的名称不同)。 - -## 语法格式 - -``` -CREATE TYPE name AS - ( [ attribute_name data_type [ COLLATE collation ] [, ... ] ] ) - -CREATE TYPE name ( - INPUT = input_function, - OUTPUT = output_function - [ , RECEIVE = receive_function ] - [ , SEND = send_function ] - [ , TYPMOD_IN = -type_modifier_input_function ] - [ , TYPMOD_OUT = -type_modifier_output_function ] - [ , ANALYZE = analyze_function ] - [ , INTERNALLENGTH = { internallength | -VARIABLE } ] - [ , PASSEDBYVALUE ] - [ , ALIGNMENT = alignment ] - [ , STORAGE = storage ] - [ , LIKE = like_type ] - [ , CATEGORY = category ] - [ , PREFERRED = preferred ] - [ , DEFAULT = default ] - [ , ELEMENT = element ] - [ , DELIMITER = delimiter ] - [ , COLLATABLE = collatable ] -) - -CREATE TYPE name - -CREATE TYPE name AS ENUM - ( [ 'label' [, ... ] ] ) -``` - -## 参数说明 - -复合类型 - -- **name** - - 要创建的类型的名称(可以被模式限定)。 - -- **attribute\_name** - - 复合类型的一个属性(列)的名称。 - -- **data\_type** - - 要成为复合类型的一个列的现有数据类型的名称。 - -- **collation** - - 要关联到复合类型的一列的现有排序规则的名称。排序规则可以使用“select \* from pg\_collation”命令从pg\_collation系统表中查询,默认的排序规则为查询结果中以default开始的行。 - - -基本类型 - -自定义基本类型时,参数可以以任意顺序出现,input\_function和output\_function为必选参数,其它为可选参数。 - -- **input\_function** - - 将数据从类型的外部文本形式转换为内部形式的函数名。 - - 输入函数可以被声明为有一个cstring类型的参数,或者有三个类型分别为cstring、 oid、integer的参数。 - - - cstring参数是以C字符串存在的输入文本。 - - oid参数是该类型自身的OID(对于数组类型则是其元素类型的OID)。 - - integer参数是目标列的typmod(如果知道,不知道则将传递 -1)。 - - 输入函数必须返回一个该数据类型本身的值。通常,一个输入函数应该被声明为STRICT。 如果不是这样,在读到一个NULL输入值时,调用输入函数时第一个参数会是NULL。在这种情况下,该函数必须仍然返回NULL,除非调用函数发生了错误(这种情况主要是想支持域输入函数,域输入函数可能需要拒绝NULL输入)。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >输入和输出函数能被声明为具有新类型的结果或参数是因为:必须在创建新类型之前创建这两个函数。而新类型应该首先被定义为一种shell type,它是一种占位符类型,除了名称和拥有者之外它没有其他属性。这可以通过不带额外参数的命令CREATE TYPE name做到。然后用C写的I/O函数可以被定义为引用这种shell type。最后,用带有完整定义的CREATE TYPE把该shell type替换为一个完全的、合法的类型定义,之后新类型就可以正常使用了。 - -- **output\_function** - - 将数据从类型的内部形式转换为外部文本形式的函数名。 - - 输出函数必须被声明为有一个新数据类型的参数。输出函数必须返回类型cstring。对于NULL值不会调用输出函数。 - -- **receive\_function** - - 可选参数。将数据从类型的外部二进制形式转换成内部形式的函数名。 - - 如果没有该函数,该类型不能参与到二进制输入中。二进制表达转换成内部形式代价更低,然而却更容易移植(例如,标准的整数数据类型使用网络字节序作为外部二进制表达,而内部表达是机器本地的字节序)。receive\_function应该执行足够的检查以确保该值是有效的。 - - 接收函数可以被声明为有一个internal类型的参数,或者有三个类型分别为internal、oid、integer的参数。 - - - internal参数是一个指向StringInfo缓冲区的指针,其中保存着接收到的字节串。 - - oid和integer参数和文本输入函数的相同。 - - 接收函数必须返回一个该数据类型本身的值。通常,一个接收函数应该被声明为STRICT。如果不是这样,在读到一个NULL输入值时调用接收函数时第一个参数会是NULL。在这种情况下,该函数必须仍然返回NULL,除非接收函数发生了错误(这种情况主要是想支持域接收函数,域接收函数可能需要拒绝NULL输入)。 - -- **send\_function** - - 可选参数。将数据从类型的内部形式转换为外部二进制形式的函数名。 - - 如果没有该函数,该类型将不能参与到二进制输出中。发送函数必须被声明为有一个新数据类型的参数。发送函数必须返回类型bytea。对于NULL值不会调用发送函数。 - -- **type\_modifier\_input\_function** - - 可选参数。将类型的修饰符数组转换为内部形式的函数名。 - -- **type\_modifier\_output\_function** - - 可选参数。将类型的修饰符的内部形式转换为外部文本形式的函数名。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >如果该类型支持修饰符(附加在类型声明上的可选约束,例如,char\(5\)或numeric\(30,2\)),则需要可选的type\_modifier\_input\_function以及type\_modifier\_output\_function。openGauss允许用户定义的类型有一个或者多个简单常量或者标识符作为修饰符。不过,为了存储在系统目录中,该信息必须能被打包到一个非负整数值中。所声明的修饰符会被以cstring数组的形式传递给type\_modifier\_input\_function。 type\_modifier\_input\_function必须检查该值的合法性(如果值错误就抛出一个错误),如果值正确,要返回一个非负integer值,该值将被存储在“typmod”列中。如果类型没有 type\_modifier\_input\_function则类型修饰符将被拒绝。type\_modifier\_output\_function把内部的整数typmod值转换回正确的形式用于用户显示。type\_modifier\_output\_function必须返回一个cstring值,该值就是追加到类型名称后的字符串。例如,numeric的函数可能会返回\(30,2\)。如果默认的显示格式就是只把存储的typmod整数值放在圆括号内,则允许省略type\_modifier\_output\_function。 - -- **analyze\_function** - - 可选参数。为该数据类型执行统计分析的函数名的可选参数。 - - 默认情况下,如果该类型有一个默认的B-tree操作符类,ANALYZE将尝试用类型的“equals”和“less-than”操作符来收集统计信息。这种行为对于非标量类型并不合适,因此可以通过指定一个自定义分析函数来覆盖这种行为。分析函数必须被声明为有一个类型为internal的参数,并且返回一个boolean结果。 - -- **internallength** - - 可选参数。一个数字常量,用于指定新类型的内部表达的字节长度。默认为变长。 - - 虽然只有I/O函数和其他为该类型创建的函数才知道新类型的内部表达的细节, 但是内部表达的一些属性必须被向openGauss声明。其中最重要的是internallength。基本数据类型可以是定长的(这种情况下internallength是一个正整数)或者是变长的(把internallength设置为VARIABLE,在内部通过把typlen设置为-1表示)。所有变长类型的内部表达都必须以一个4字节整数开始,internallength定义了总长度。 - -- **PASSEDBYVALUE** - - 可选参数。表示这种数据类型的值需要被传值而不是传引用。传值的类型必须是定长的,并且它们的内部表达不能超过Datum类型(某些机器上是4字节,其他机器上是8字节)的尺寸。 - -- **alignment** - - 可选参数。该参数指定数据类型的存储对齐需求。如果被指定,必须是char、int2、int4或者double。默认是int4。 - - 允许的值等同于以1、2、4或8字节边界对齐。要注意变长类型的alignment参数必须至少为4,因为它们需要包含一个int4作为它们的第一个组成部分。 - -- **storage** - - 可选参数。该数据类型的存储策略。 - - 如果被指定,必须是plain、external、extended或者main。 默认是plain。 - - - plain指定该类型的数据将总是被存储在线内并且不会被压缩。(对定长类型只允许plain) - - extended 指定系统将首先尝试压缩一个长的数据值,并且将在数据仍然太长的情况下把值移出主表行。 - - external允许值被移出主表, 但是系统将不会尝试对它进行压缩。 - - main允许压缩,但是不鼓励把值移出主表(如果没有其他办法让行的大小变得合适,具有这种存储策略的数据项仍将被移出主表,但比起extended以及external项来,这种存储策略的数据项会被优先考虑保留在主表中)。 - - 除plain之外所有的storage值都暗示该数据类型的函数能处理被TOAST过的值。指定的值仅仅是决定一种可TOAST数据类型的列的默认TOAST存储策略,用户可以使用ALTER TABLE SET STORAGE为列选取其他策略。 - - -- **like\_type** - - 可选参数。与新类型具有相同表达的现有数据类型的名称。会从这个类型中复制internallength、 passedbyvalue、 alignment以及storage的值( 除非在这个CREATE TYPE命令的其他地方用显式说明覆盖)。 - - 当新类型的低层实现是以一种现有的类型为参考时,用这种方式指定表达特别有用。 - -- **category** - - 可选参数。这种类型的分类码(一个ASCII 字符)。 默认是“用户定义类型”的'U'。为了创建自定义分类, 也可以选择其他 ASCII字符。 - -- **preferred** - - 可选参数。如果这种类型是其类型分类中的优先类型则为TRUE,否则为FALSE。默认为假。在一个现有类型分类中创建一种新的优先类型要非常谨慎, 因为这可能会导致很大的改变。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >category和preferred参数可以被用来帮助控制在混淆的情况下应用哪一种隐式造型。每一种数据类型都属于一个用单个ASCII 字符命名的分类,并且每一种类型可以是其所属分类中的“首选”。当有助于解决重载函数或操作符时,解析器将优先造型到首选类型(但是只能从同类的其他类型造型)。对于没有隐式转换到或来自任意其他类型的类型,让这些设置保持默认即可。不过,对于有隐式转换的相关类型的组,把它们都标记为属于同一个类别并且选择一种或两种“最常用”的类型作为该类别的首选通常是很有用的。在把一种用户定义的类型增加到一个现有的内建类别(例如,数字或者字符串类型)中时,category参数特别有用。不过,也可以创建新的全部是用户定义类型的类别。对这样的类别,可选择除大写字母之外的任何ASCII 字符。 - -- **default** - - 可选参数。数据类型的默认值。如果被省略,默认值是空。 - - 如果用户希望该数据类型的列被默认为某种非空值,可以指定一个默认值。默认值可以用DEFAULT关键词指定(这样一个默认值可以被附加到一个特定列的显式DEFAULT子句覆盖)。 - -- **element** - - 可选参数。被创建的类型是一个数组,element指定了数组元素的类型。例如,要定义一个4字节整数的数组(int4), 应指定ELEMENT = int4。 - -- **delimiter** - - 可选参数。指定这种类型组成的数组中分隔值的定界符。 - - 可以把delimiter设置为一个特定字符,默认的定界符是逗号(,)。注意定界符是与数组元素类型相关的,而不是数组类型本身相关。 - -- **collatable** - - 可选参数。如果这个类型的操作可以使用排序规则信息,则为TRUE。默认为FALSE。 - - 如果collatable为TRUE,这种类型的列定义和表达式可能通过使用COLLATE子句携带有排序规则信息。在该类型上操作的函数的实现负责真正利用这些信息,仅把类型标记为可排序的并不会让它们自动地去使用这类信息。 - -- **lable** - - 可选参数。与枚举类型的一个值相关的文本标签,其值为长度不超过63个字符的非空字符串。 - - ->![](public_sys-resources/icon-note.gif) **说明:** ->在创建用户定义类型的时候, openGauss会自动创建一个与之关联的数组类型,其名称由该元素类型的名称前缀一个下划线组成。 - -## 示例 - -``` ---创建一种复合类型,建表并插入数据以及查询。 -openGauss=# CREATE TYPE compfoo AS (f1 int, f2 text); -openGauss=# CREATE TABLE t1_compfoo(a int, b compfoo); -openGauss=# CREATE TABLE t2_compfoo(a int, b compfoo); -openGauss=# INSERT INTO t1_compfoo values(1,(1,'demo')); -openGauss=# INSERT INTO t2_compfoo select * from t1_compfoo; -openGauss=# SELECT (b).f1 FROM t1_compfoo; -openGauss=# SELECT * FROM t1_compfoo t1 join t2_compfoo t2 on (t1.b).f1=(t1.b).f1; - ---重命名数据类型。 -openGauss=# ALTER TYPE compfoo RENAME TO compfoo1; - ---要改变一个用户定义类型compfoo1的所有者为usr1。 -openGauss=# CREATE USER usr1 PASSWORD 'xxxxxxxxx'; -openGauss=# ALTER TYPE compfoo1 OWNER TO usr1; - ---把用户定义类型compfoo1的模式改变为usr1。 -openGauss=# ALTER TYPE compfoo1 SET SCHEMA usr1; - ---给一个数据类型增加一个新的属性。 -openGauss=# ALTER TYPE usr1.compfoo1 ADD ATTRIBUTE f3 int; - ---删除compfoo1类型。 -openGauss=# DROP TYPE usr1.compfoo1 cascade; - ---删除相关表和用户。 -openGauss=# DROP TABLE t1_compfoo; -openGauss=# DROP TABLE t2_compfoo; -openGauss=# DROP SCHEMA usr1; -openGauss=# DROP USER usr1; - ---创建一个枚举类型。 -openGauss=# CREATE TYPE bugstatus AS ENUM ('create', 'modify', 'closed'); - ---添加一个标签值。 -openGauss=# ALTER TYPE bugstatus ADD VALUE IF NOT EXISTS 'regress' BEFORE 'closed'; - ---重命名一个标签值。 -openGauss=# ALTER TYPE bugstatus RENAME VALUE 'create' TO 'new'; -``` - -## 相关链接 - -[ALTER TYPE](ALTER-TYPE.md),[DROP TYPE](DROP-TYPE.md) - +# CREATE TYPE + +## 功能描述 + +在当前数据库中定义一种新的数据类型。定义数据类型的用户将成为该数据类型的拥有者。类型只适用于行存表 + +有四种形式的 CREATE TYPE ,分别为:复合类型、基本类型、shell类型和枚举类型。 + +- 复合类型 + + 复合类型由一个属性名和数据类型的列表指定。如果属性的数据类型是可排序的,也可以指定该属性的排序规则。复合类型本质上和表的行类型相同,但是如果只想定义一种类型,使用 CREATE TYPE 避免了创建一个实际的表。单独的复合类型也是很有用的,例如可以作为函数的参数或者返回类型。 + + 为了能够创建复合类型,必须拥有在其所有属性类型上的 USAGE 特权。 + +- 基本类型 + + 用户可以自定义一种新的基本类型(标量类型)。通常来说这些函数必须是底层语言所编写。 + +- shell类型 + +shell 类型是一种用于后面要定义的类型的占位符,通过发出一个不带除类型名之外其他参数的 CREATE TYPE 命令可以创建这种类型。在创建基本类型时,需要 shell 类型作为一种向前引用。 + +- 枚举类型 + + 由若干个标签构成的列表,每一个标签值都是一个非空字符串,且字符串长度必须不超过 63 个字节。 + + +## 注意事项 + +如果给定一个模式名,那么该类型将被创建在指定的模式中。否则它会被创建在当前模式中。类型名称必须与同一个模式中任何现有的类型或者域相区别(因为表具有相关的数据类型,类型名称也必须与同一个模式中任何现有表的名称不同)。 + +## 语法格式 + +``` +CREATE TYPE name AS + ( [ attribute_name data_type [ COLLATE collation ] [, ... ] ] ) + +CREATE TYPE name ( + INPUT = input_function, + OUTPUT = output_function + [ , RECEIVE = receive_function ] + [ , SEND = send_function ] + [ , TYPMOD_IN = +type_modifier_input_function ] + [ , TYPMOD_OUT = +type_modifier_output_function ] + [ , ANALYZE = analyze_function ] + [ , INTERNALLENGTH = { internallength | +VARIABLE } ] + [ , PASSEDBYVALUE ] + [ , ALIGNMENT = alignment ] + [ , STORAGE = storage ] + [ , LIKE = like_type ] + [ , CATEGORY = category ] + [ , PREFERRED = preferred ] + [ , DEFAULT = default ] + [ , ELEMENT = element ] + [ , DELIMITER = delimiter ] + [ , COLLATABLE = collatable ] +) + +CREATE TYPE name + +CREATE TYPE name AS ENUM + ( [ 'label' [, ... ] ] ) +``` + +## 参数说明 + +复合类型 + +- **name** + + 要创建的类型的名称(可以被模式限定)。 + +- **attribute\_name** + + 复合类型的一个属性(列)的名称。 + +- **data\_type** + + 要成为复合类型的一个列的现有数据类型的名称。 + +- **collation** + + 要关联到复合类型的一列的现有排序规则的名称。排序规则可以使用“select \* from pg\_collation”命令从pg\_collation系统表中查询,默认的排序规则为查询结果中以 default 开始的行。 + + +基本类型 + +自定义基本类型时,参数可以以任意顺序出现,input\_function和output\_function为必选参数,其它为可选参数。 + +- **input\_function** + + 将数据从类型的外部文本形式转换为内部形式的函数名。 + + 输入函数可以被声明为有一个 cstring 类型的参数,或者有三个类型分别为cstring、 oid、integer的参数。 + + - cstring参数是以 C 字符串存在的输入文本。 + - oid参数是该类型自身的OID(对于数组类型则是其元素类型的OID)。 + - integer参数是目标列的typmod(如果知道,不知道则将传递 -1)。 + + 输入函数必须返回一个该数据类型本身的值。通常,一个输入函数应该被声明为 STRICT 。 如果不是这样,在读到一个 NULL 输入值时,调用输入函数时第一个参数会是 NULL 。在这种情况下,该函数必须仍然返回 NULL ,除非调用函数发生了错误(这种情况主要是想支持域输入函数,域输入函数可能需要拒绝 NULL 输入)。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >输入和输出函数能被声明为具有新类型的结果或参数是因为:必须在创建新类型之前创建这两个函数。而新类型应该首先被定义为一种 shell type ,它是一种占位符类型,除了名称和拥有者之外它没有其他属性。这可以通过不带额外参数的命令 CREATE TYPE name 做到。然后用 C 写的I/O函数可以被定义为引用这种 shell type 。最后,用带有完整定义的 CREATE TYPE 把该 shell type 替换为一个完全的、合法的类型定义,之后新类型就可以正常使用了。 + +- **output\_function** + + 将数据从类型的内部形式转换为外部文本形式的函数名。 + + 输出函数必须被声明为有一个新数据类型的参数。输出函数必须返回类型 cstring 。对于 NULL 值不会调用输出函数。 + +- **receive\_function** + + 可选参数。将数据从类型的外部二进制形式转换成内部形式的函数名。 + + 如果没有该函数,该类型不能参与到二进制输入中。二进制表达转换成内部形式代价更低,然而却更容易移植(例如,标准的整数数据类型使用网络字节序作为外部二进制表达,而内部表达是机器本地的字节序)。receive\_function应该执行足够的检查以确保该值是有效的。 + + 接收函数可以被声明为有一个 internal 类型的参数,或者有三个类型分别为internal、oid、integer的参数。 + + - internal参数是一个指向 StringInfo 缓冲区的指针,其中保存着接收到的字节串。 + - oid和 integer 参数和文本输入函数的相同。 + + 接收函数必须返回一个该数据类型本身的值。通常,一个接收函数应该被声明为 STRICT 。如果不是这样,在读到一个 NULL 输入值时调用接收函数时第一个参数会是 NULL 。在这种情况下,该函数必须仍然返回 NULL ,除非接收函数发生了错误(这种情况主要是想支持域接收函数,域接收函数可能需要拒绝 NULL 输入)。 + +- **send\_function** + + 可选参数。将数据从类型的内部形式转换为外部二进制形式的函数名。 + + 如果没有该函数,该类型将不能参与到二进制输出中。发送函数必须被声明为有一个新数据类型的参数。发送函数必须返回类型 bytea 。对于 NULL 值不会调用发送函数。 + +- **type\_modifier\_input\_function** + + 可选参数。将类型的修饰符数组转换为内部形式的函数名。 + +- **type\_modifier\_output\_function** + + 可选参数。将类型的修饰符的内部形式转换为外部文本形式的函数名。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >如果该类型支持修饰符(附加在类型声明上的可选约束,例如,char\(5\)或numeric\(30,2\)),则需要可选的type\_modifier\_input\_function以及type\_modifier\_output\_function。 openGauss 允许用户定义的类型有一个或者多个简单常量或者标识符作为修饰符。不过,为了存储在系统目录中,该信息必须能被打包到一个非负整数值中。所声明的修饰符会被以 cstring 数组的形式传递给type\_modifier\_input\_function。 type\_modifier\_input\_function必须检查该值的合法性(如果值错误就抛出一个错误),如果值正确,要返回一个非负 integer 值,该值将被存储在“typmod”列中。如果类型没有 type\_modifier\_input\_function则类型修饰符将被拒绝。type\_modifier\_output\_function把内部的整数 typmod 值转换回正确的形式用于用户显示。type\_modifier\_output\_function必须返回一个 cstring 值,该值就是追加到类型名称后的字符串。例如, numeric 的函数可能会返回\(30,2\)。如果默认的显示格式就是只把存储的 typmod 整数值放在圆括号内,则允许省略type\_modifier\_output\_function。 + +- **analyze\_function** + + 可选参数。为该数据类型执行统计分析的函数名的可选参数。 + + 默认情况下,如果该类型有一个默认的B-tree操作符类, ANALYZE 将尝试用类型的“equals”和“less-than”操作符来收集统计信息。这种行为对于非标量类型并不合适,因此可以通过指定一个自定义分析函数来覆盖这种行为。分析函数必须被声明为有一个类型为 internal 的参数,并且返回一个 boolean 结果。 + +- **internallength** + + 可选参数。一个数字常量,用于指定新类型的内部表达的字节长度。默认为变长。 + + 虽然只有I/O函数和其他为该类型创建的函数才知道新类型的内部表达的细节, 但是内部表达的一些属性必须被向 openGauss 声明。其中最重要的是 internallength 。基本数据类型可以是定长的(这种情况下 internallength 是一个正整数)或者是变长的(把 internallength 设置为 VARIABLE ,在内部通过把 typlen 设置为-1表示)。所有变长类型的内部表达都必须以一个 4 字节整数开始, internallength 定义了总长度。 + +- **PASSEDBYVALUE** + + 可选参数。表示这种数据类型的值需要被传值而不是传引用。传值的类型必须是定长的,并且它们的内部表达不能超过 Datum 类型(某些机器上是 4 字节,其他机器上是 8 字节)的尺寸。 + +- **alignment** + + 可选参数。该参数指定数据类型的存储对齐需求。如果被指定,必须是char、int2、int4或者 double 。默认是 int4 。 + + 允许的值等同于以1、2、4或 8 字节边界对齐。要注意变长类型的 alignment 参数必须至少为 4 ,因为它们需要包含一个 int4 作为它们的第一个组成部分。 + +- **storage** + + 可选参数。该数据类型的存储策略。 + + 如果被指定,必须是plain、external、extended或者 main 。 默认是 plain 。 + + - plain指定该类型的数据将总是被存储在线内并且不会被压缩。(对定长类型只允许plain) + - extended 指定系统将首先尝试压缩一个长的数据值,并且将在数据仍然太长的情况下把值移出主表行。 + - external允许值被移出主表, 但是系统将不会尝试对它进行压缩。 + - main允许压缩,但是不鼓励把值移出主表(如果没有其他办法让行的大小变得合适,具有这种存储策略的数据项仍将被移出主表,但比起 extended 以及 external 项来,这种存储策略的数据项会被优先考虑保留在主表中)。 + + 除 plain 之外所有的 storage 值都暗示该数据类型的函数能处理被 TOAST 过的值。指定的值仅仅是决定一种可 TOAST 数据类型的列的默认 TOAST 存储策略,用户可以使用 ALTER TABLE SET STORAGE 为列选取其他策略。 + + +- **like\_type** + + 可选参数。与新类型具有相同表达的现有数据类型的名称。会从这个类型中复制internallength、 passedbyvalue、 alignment以及 storage 的值( 除非在这个 CREATE TYPE 命令的其他地方用显式说明覆盖)。 + + 当新类型的低层实现是以一种现有的类型为参考时,用这种方式指定表达特别有用。 + +- **category** + + 可选参数。这种类型的分类码(一个 ASCII 字符)。 默认是“用户定义类型”的'U'。为了创建自定义分类, 也可以选择其他 ASCII 字符。 + +- **preferred** + + 可选参数。如果这种类型是其类型分类中的优先类型则为 TRUE ,否则为 FALSE 。默认为假。在一个现有类型分类中创建一种新的优先类型要非常谨慎, 因为这可能会导致很大的改变。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >category和 preferred 参数可以被用来帮助控制在混淆的情况下应用哪一种隐式造型。每一种数据类型都属于一个用单个 ASCII 字符命名的分类,并且每一种类型可以是其所属分类中的“首选”。当有助于解决重载函数或操作符时,解析器将优先造型到首选类型(但是只能从同类的其他类型造型)。对于没有隐式转换到或来自任意其他类型的类型,让这些设置保持默认即可。不过,对于有隐式转换的相关类型的组,把它们都标记为属于同一个类别并且选择一种或两种“最常用”的类型作为该类别的首选通常是很有用的。在把一种用户定义的类型增加到一个现有的内建类别(例如,数字或者字符串类型)中时, category 参数特别有用。不过,也可以创建新的全部是用户定义类型的类别。对这样的类别,可选择除大写字母之外的任何 ASCII 字符。 + +- **default** + + 可选参数。数据类型的默认值。如果被省略,默认值是空。 + + 如果用户希望该数据类型的列被默认为某种非空值,可以指定一个默认值。默认值可以用 DEFAULT 关键词指定(这样一个默认值可以被附加到一个特定列的显式 DEFAULT 子句覆盖)。 + +- **element** + + 可选参数。被创建的类型是一个数组, element 指定了数组元素的类型。例如,要定义一个 4 字节整数的数组(int4), 应指定ELEMENT = int4。 + +- **delimiter** + + 可选参数。指定这种类型组成的数组中分隔值的定界符。 + + 可以把 delimiter 设置为一个特定字符,默认的定界符是逗号(,)。注意定界符是与数组元素类型相关的,而不是数组类型本身相关。 + +- **collatable** + + 可选参数。如果这个类型的操作可以使用排序规则信息,则为 TRUE 。默认为 FALSE 。 + + 如果 collatable 为 TRUE ,这种类型的列定义和表达式可能通过使用 COLLATE 子句携带有排序规则信息。在该类型上操作的函数的实现负责真正利用这些信息,仅把类型标记为可排序的并不会让它们自动地去使用这类信息。 + +- **lable** + + 可选参数。与枚举类型的一个值相关的文本标签,其值为长度不超过 63 个字符的非空字符串。 + + +>![](public_sys-resources/icon-note.gif) **说明:** +>在创建用户定义类型的时候, openGauss 会自动创建一个与之关联的数组类型,其名称由该元素类型的名称前缀一个下划线组成。 + +## 示例 + +``` +--创建一种复合类型,建表并插入数据以及查询。 +openGauss=# CREATE TYPE compfoo AS (f1 int, f2 text); +openGauss=# CREATE TABLE t1_compfoo(a int, b compfoo); +openGauss=# CREATE TABLE t2_compfoo(a int, b compfoo); +openGauss=# INSERT INTO t1_compfoo values(1,(1,'demo')); +openGauss=# INSERT INTO t2_compfoo select * from t1_compfoo; +openGauss=# SELECT (b).f1 FROM t1_compfoo; +openGauss=# SELECT * FROM t1_compfoo t1 join t2_compfoo t2 on (t1.b).f1=(t1.b).f1; + +--重命名数据类型。 +openGauss=# ALTER TYPE compfoo RENAME TO compfoo1; + +--要改变一个用户定义类型 compfoo1 的所有者为 usr1 。 +openGauss=# CREATE USER usr1 PASSWORD 'xxxxxxxxx'; +openGauss=# ALTER TYPE compfoo1 OWNER TO usr1; + +--把用户定义类型 compfoo1 的模式改变为 usr1 。 +openGauss=# ALTER TYPE compfoo1 SET SCHEMA usr1; + +--给一个数据类型增加一个新的属性。 +openGauss=# ALTER TYPE usr1.compfoo1 ADD ATTRIBUTE f3 int; + +--删除 compfoo1 类型。 +openGauss=# DROP TYPE usr1.compfoo1 cascade; + +--删除相关表和用户。 +openGauss=# DROP TABLE t1_compfoo; +openGauss=# DROP TABLE t2_compfoo; +openGauss=# DROP SCHEMA usr1; +openGauss=# DROP USER usr1; + +--创建一个枚举类型。 +openGauss=# CREATE TYPE bugstatus AS ENUM ('create', 'modify', 'closed'); + +--添加一个标签值。 +openGauss=# ALTER TYPE bugstatus ADD VALUE IF NOT EXISTS 'regress' BEFORE 'closed'; + +--重命名一个标签值。 +openGauss=# ALTER TYPE bugstatus RENAME VALUE 'create' TO 'new'; +``` + +## 相关链接 + +[ALTER TYPE](ALTER-TYPE.md),[DROP TYPE](DROP-TYPE.md) + diff --git a/content/zh/docs/Developerguide/CREATE-USER-MAPPING.md b/content/zh/docs/Developerguide/CREATE-USER-MAPPING.md index 427b40b1f..88559d767 100644 --- a/content/zh/docs/Developerguide/CREATE-USER-MAPPING.md +++ b/content/zh/docs/Developerguide/CREATE-USER-MAPPING.md @@ -1,78 +1,78 @@ -# CREATE USER MAPPING - -## 功能描述 - -定义一个用户到一个外部服务器的新映射。 - -## 注意事项 - -当在OPTIONS中出现password选项时,需要保证openGauss每个节点的$GAUSSHOME/bin目录下存在usermapping.key.cipher和usermapping.key.rand文件,如果不存在这两个文件,请使用gs\\\_guc工具生成并使用gs\\\_ssh工具发布到openGauss每个节点的$GAUSSHOME/bin目录下。 - -## 语法格式 - -``` -CREATE USER MAPPING FOR { user_name | USER | CURRENT_USER | PUBLIC } - SERVER server_name - [ OPTIONS ( option 'value' [ , ... ] ) ] -``` - -## 参数说明 - -- **user\_name** - - 要映射到外部服务器的一个现有用户的名称。 - - CURRENT\_USER和USER匹配当前用户的名称。 当PUBLIC被指定时,一个公共映射会被创建,当没有特定用户的映射可用时将会使用它。 - -- **server\_name** - - 将为其创建用户映射的现有服务器的名称。 - -- **OPTIONS \( \{ option\_name ' value ' \} \[, ...\] \)** - - 这个子句指定用户映射的选项。这些选项通常定义该映射实际的用户名和口令。选项名必须唯一。允许的选项名和值与该服务器的外部数据包装器有关。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 用户的口令会加密后保存到系统表[PG\_USER\_MAPPING](PG_USER_MAPPING.md)中,加密时需要使用usermapping.key.cipher和usermapping.key.rand作为加密密码文件和加密因子。首次使用前需要通过如下命令创建这两个文件,并将这两个文件放入各节点目录$GAUSSHOME/bin,且确保具有读权限。gs\_ssh工具可以协助您快速将文件放入各节点对应目录下。 - > ``` - > gs_ssh -c "gs_guc generate -o usermapping -S default -D $GAUSSHOME/bin" - > ``` - >- 其中-S参数指定default时会随机生成密码,用户也可为-S参数指定密码,此密码用于保证生成密码文件的安全性和唯一性,用户无需保存或记忆。其他参数详见工具参考中gs\_guc工具说明。 - - - oracle\_fdw支持的options包括: - - user - - oracle server的用户名。 - - - password - - oracle用户对应的密码。 - - - mysql\_fdw支持的options包括: - - username - - MySQL Server/MariaDB的用户名。 - - - password - - MySQL Server/MariaDB用户对应的密码。 - - - postgres\_fdw支持的options包括: - - user - - 远端openGauss的用户名。 - - - password - - 远端openGauss用户对应的密码。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >openGauss在后台会对用户输入的password加密以保证安全性。该加密所需密钥文件需要使用gs\_guc工具生成并使用gs\_ssh工具发布到openGauss每个节点的$GAUSSHOME/bin目录下。password不应当包含'encryptOpt'前缀,否则会被认为是加密后的密文。 - - - - -## 相关链接 - -[ALTER USER MAPPING](ALTER-USER-MAPPING.md),[DROP USER MAPPING](DROP-USER-MAPPING.md) - +# CREATE USER MAPPING + +## 功能描述 + +定义一个用户到一个外部服务器的新映射。 + +## 注意事项 + +当在 OPTIONS 中出现 password 选项时,需要保证 openGauss 每个节点的$GAUSSHOME/bin目录下存在usermapping.key.cipher和usermapping.key.rand文件,如果不存在这两个文件,请使用gs\\\_guc工具生成并使用gs\\\_ssh工具发布到 openGauss 每个节点的$GAUSSHOME/bin目录下。 + +## 语法格式 + +``` +CREATE USER MAPPING FOR { user_name | USER | CURRENT_USER | PUBLIC } + SERVER server_name + [ OPTIONS ( option 'value' [ , ... ] ) ] +``` + +## 参数说明 + +- **user\_name** + + 要映射到外部服务器的一个现有用户的名称。 + + CURRENT\_USER和 USER 匹配当前用户的名称。 当 PUBLIC 被指定时,一个公共映射会被创建,当没有特定用户的映射可用时将会使用它。 + +- **server\_name** + + 将为其创建用户映射的现有服务器的名称。 + +- **OPTIONS \( \{ option\_name ' value ' \} \[, ...\] \)** + + 这个子句指定用户映射的选项。这些选项通常定义该映射实际的用户名和口令。选项名必须唯一。允许的选项名和值与该服务器的外部数据包装器有关。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 用户的口令会加密后保存到系统表[PG\_USER\_MAPPING](PG_USER_MAPPING.md)中,加密时需要使用usermapping.key.cipher和usermapping.key.rand作为加密密码文件和加密因子。首次使用前需要通过如下命令创建这两个文件,并将这两个文件放入各节点目录$GAUSSHOME/bin,且确保具有读权限。gs\_ssh工具可以协助您快速将文件放入各节点对应目录下。 + > ``` + > gs_ssh -c "gs_guc generate -o usermapping -S default -D $GAUSSHOME/bin" + > ``` + >- 其中-S参数指定 default 时会随机生成密码,用户也可为-S参数指定密码,此密码用于保证生成密码文件的安全性和唯一性,用户无需保存或记忆。其他参数详见工具参考中gs\_guc工具说明。 + + - oracle\_fdw支持的 options 包括: + - user + +oracle server 的用户名。 + + - password + +oracle 用户对应的密码。 + + - mysql\_fdw支持的 options 包括: + - username + + MySQL Server/MariaDB的用户名。 + + - password + + MySQL Server/MariaDB用户对应的密码。 + + - postgres\_fdw支持的 options 包括: + - user + + 远端 openGauss 的用户名。 + + - password + + 远端 openGauss 用户对应的密码。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >openGauss在后台会对用户输入的 password 加密以保证安全性。该加密所需密钥文件需要使用gs\_guc工具生成并使用gs\_ssh工具发布到 openGauss 每个节点的$GAUSSHOME/bin目录下。 password 不应当包含'encryptOpt'前缀,否则会被认为是加密后的密文。 + + + + +## 相关链接 + +[ALTER USER MAPPING](ALTER-USER-MAPPING.md),[DROP USER MAPPING](DROP-USER-MAPPING.md) + diff --git a/content/zh/docs/Developerguide/CREATE-USER.md b/content/zh/docs/Developerguide/CREATE-USER.md index 3c786eecb..6197c630e 100644 --- a/content/zh/docs/Developerguide/CREATE-USER.md +++ b/content/zh/docs/Developerguide/CREATE-USER.md @@ -1,115 +1,115 @@ -# CREATE USER - -## 功能描述 - -创建一个用户。 - -## 注意事项 - -- 通过CREATE USER创建的用户,默认具有LOGIN权限。 -- 通过CREATE USER创建用户的同时,系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA。 -- 系统管理员在普通用户同名schema下创建的对象,所有者为schema的同名用户(非系统管理员)。 - -## 语法格式 - -``` -CREATE USER user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [EXPIRED] | DISABLE }; -``` - -其中option子句用于设置权限及属性等信息。 - -``` -{SYSADMIN | NOSYSADMIN} - | {MONADMIN | NOMONADMIN} - | {OPRADMIN | NOOPRADMIN} - | {POLADMIN | NOPOLADMIN} - | {AUDITADMIN | NOAUDITADMIN} - | {CREATEDB | NOCREATEDB} - | {USEFT | NOUSEFT} - | {CREATEROLE | NOCREATEROLE} - | {INHERIT | NOINHERIT} - | {LOGIN | NOLOGIN} - | {REPLICATION | NOREPLICATION} - | {INDEPENDENT | NOINDEPENDENT} - | {VCADMIN | NOVCADMIN} - | CONNECTION LIMIT connlimit - | VALID BEGIN 'timestamp' - | VALID UNTIL 'timestamp' - | RESOURCE POOL 'respool' - | PERM SPACE 'spacelimit' - | TEMP SPACE 'tmpspacelimit' - | SPILL SPACE 'spillspacelimit' - | IN ROLE role_name [, ...] - | IN GROUP role_name [, ...] - | ROLE role_name [, ...] - | ADMIN role_name [, ...] - | USER role_name [, ...] - | SYSID uid - | DEFAULT TABLESPACE tablespace_name - | PROFILE DEFAULT - | PROFILE profile_name - | PGUSER -``` - -## 参数说明 - -- **user\_name** - - 用户名称。 - - 取值范围:字符串,要符合标识符的命名规范。且最大长度不超过63个字符。 - -- **password** - - 登录密码。 - - 密码规则如下: - - - 密码默认不少于8个字符。 - - 不能与用户名及用户名倒序相同。 - - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为\~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/?)四类字符中的三类字符。 - - 密码也可以是符合格式要求的密文字符串,这种情况主要用于用户数据导入场景,不推荐用户直接使用。如果直接使用密文密码,用户需要知道密文密码对应的明文,并且保证明文密码复杂度,数据库不会校验密文密码复杂度,直接使用密文密码的安全性由用户保证。 - - 创建用户时,应当使用双引号或单引号将用户密码括起来。 - - 取值范围:字符串。 - - -CREATE USER的其他参数值请参考[CREATE ROLE](CREATE-ROLE.md)。 - -## 示例 - -``` ---创建用户jim,登录密码为xxxxxxxxx。 -openGauss=# CREATE USER jim PASSWORD 'xxxxxxxxx'; - ---下面语句与上面的等价。 -openGauss=# CREATE USER kim IDENTIFIED BY 'xxxxxxxxx'; - ---如果创建有“创建数据库”权限的用户,则需要加CREATEDB关键字。 -openGauss=# CREATE USER dim CREATEDB PASSWORD 'xxxxxxxxx'; - ---将用户jim的登录密码由xxxxxxxxx修改为Abcd@123。 -openGauss=# ALTER USER jim IDENTIFIED BY 'Abcd@123' REPLACE 'xxxxxxxxx'; - ---为用户jim追加CREATEROLE权限。 -openGauss=# ALTER USER jim CREATEROLE; - ---将enable_seqscan的值设置为on, 设置成功后,在下一会话中生效。 -openGauss=# ALTER USER jim SET enable_seqscan TO on; - ---重置jim的enable_seqscan参数。 -openGauss=# ALTER USER jim RESET enable_seqscan; - ---锁定jim帐户。 -openGauss=# ALTER USER jim ACCOUNT LOCK; - ---删除用户。 -openGauss=# DROP USER kim CASCADE; -openGauss=# DROP USER jim CASCADE; -openGauss=# DROP USER dim CASCADE; -``` - -## 相关链接 - -[ALTER USER](ALTER-USER.md),[CREATE ROLE](CREATE-ROLE.md),[DROP USER](DROP-USER.md) - +# CREATE USER + +## 功能描述 + +创建一个用户。 + +## 注意事项 + +- 通过 CREATE USER 创建的用户,默认具有 LOGIN 权限。 +- 通过 CREATE USER 创建用户的同时,系统会在执行该命令的数据库中,为该用户创建一个同名的 SCHEMA 。 +- 系统管理员在普通用户同名 schema 下创建的对象,所有者为 schema 的同名用户(非系统管理员)。 + +## 语法格式 + +``` +CREATE USER user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [EXPIRED] | DISABLE }; +``` + +其中 option 子句用于设置权限及属性等信息。 + +``` +{SYSADMIN | NOSYSADMIN} + | {MONADMIN | NOMONADMIN} + | {OPRADMIN | NOOPRADMIN} + | {POLADMIN | NOPOLADMIN} + | {AUDITADMIN | NOAUDITADMIN} + | {CREATEDB | NOCREATEDB} + | {USEFT | NOUSEFT} + | {CREATEROLE | NOCREATEROLE} + | {INHERIT | NOINHERIT} + | {LOGIN | NOLOGIN} + | {REPLICATION | NOREPLICATION} + | {INDEPENDENT | NOINDEPENDENT} + | {VCADMIN | NOVCADMIN} + | CONNECTION LIMIT connlimit + | VALID BEGIN 'timestamp' + | VALID UNTIL 'timestamp' + | RESOURCE POOL 'respool' + | PERM SPACE 'spacelimit' + | TEMP SPACE 'tmpspacelimit' + | SPILL SPACE 'spillspacelimit' + | IN ROLE role_name [, ...] + | IN GROUP role_name [, ...] + | ROLE role_name [, ...] + | ADMIN role_name [, ...] + | USER role_name [, ...] + | SYSID uid + | DEFAULT TABLESPACE tablespace_name + | PROFILE DEFAULT + | PROFILE profile_name + | PGUSER +``` + +## 参数说明 + +- **user\_name** + + 用户名称。 + + 取值范围:字符串,要符合标识符的命名规范。且最大长度不超过 63 个字符。 + +- **password** + + 登录密码。 + + 密码规则如下: + + - 密码默认不少于 8 个字符。 + - 不能与用户名及用户名倒序相同。 + - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为\~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/?)四类字符中的三类字符。 + - 密码也可以是符合格式要求的密文字符串,这种情况主要用于用户数据导入场景,不推荐用户直接使用。如果直接使用密文密码,用户需要知道密文密码对应的明文,并且保证明文密码复杂度,数据库不会校验密文密码复杂度,直接使用密文密码的安全性由用户保证。 + - 创建用户时,应当使用双引号或单引号将用户密码括起来。 + + 取值范围:字符串。 + + +CREATE USER 的其他参数值请参考[CREATE ROLE](CREATE-ROLE.md)。 + +## 示例 + +``` +--创建用户 jim ,登录密码为 xxxxxxxxx 。 +openGauss=# CREATE USER jim PASSWORD 'xxxxxxxxx'; + +--下面语句与上面的等价。 +openGauss=# CREATE USER kim IDENTIFIED BY 'xxxxxxxxx'; + +--如果创建有“创建数据库”权限的用户,则需要加 CREATEDB 关键字。 +openGauss=# CREATE USER dim CREATEDB PASSWORD 'xxxxxxxxx'; + +--将用户 jim 的登录密码由 xxxxxxxxx 修改为Abcd@123。 +openGauss=# ALTER USER jim IDENTIFIED BY 'Abcd@123' REPLACE 'xxxxxxxxx'; + +--为用户 jim 追加 CREATEROLE 权限。 +openGauss=# ALTER USER jim CREATEROLE; + +--将 enable_seqscan 的值设置为 on , 设置成功后,在下一会话中生效。 +openGauss=# ALTER USER jim SET enable_seqscan TO on; + +--重置 jim 的 enable_seqscan 参数。 +openGauss=# ALTER USER jim RESET enable_seqscan; + +--锁定 jim 帐户。 +openGauss=# ALTER USER jim ACCOUNT LOCK; + +--删除用户。 +openGauss=# DROP USER kim CASCADE; +openGauss=# DROP USER jim CASCADE; +openGauss=# DROP USER dim CASCADE; +``` + +## 相关链接 + +[ALTER USER](ALTER-USER.md),[CREATE ROLE](CREATE-ROLE.md),[DROP USER](DROP-USER.md) + diff --git a/content/zh/docs/Developerguide/CREATE-VIEW.md b/content/zh/docs/Developerguide/CREATE-VIEW.md index c2886fed2..031411571 100644 --- a/content/zh/docs/Developerguide/CREATE-VIEW.md +++ b/content/zh/docs/Developerguide/CREATE-VIEW.md @@ -1,74 +1,74 @@ -# CREATE VIEW - -## 功能描述 - -创建一个视图。视图与基本表不同,是一个虚拟的表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。 - -## 注意事项 - -无。 - -## 语法格式 - -``` -CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW view_name [ ( column_name [, ...] ) ] - [ WITH ( {view_option_name [= view_option_value]} [, ... ] ) ] - AS query; -``` - ->![](public_sys-resources/icon-note.gif) **说明:** ->创建视图时使用WITH\(security\_barriers\)可以创建一个相对安全的视图,避免攻击者利用低成本函数的RAISE语句打印出隐藏的基表数据。 - -## 参数说明 - -- **OR REPLACE** - - 如果视图已存在,则重新定义。 - -- **TEMP | TEMPORARY** - - 创建临时视图。 - -- **view\_name** - - 要创建的视图名称。可以用模式修饰。 - - 取值范围:字符串,符合标识符命名规范。 - -- **column\_name** - - 可选的名称列表,用作视图的字段名。如果没有给出,字段名取自查询中的字段名。 - - 取值范围:字符串,符合标识符命名规范。 - -- **view\_option\_name \[= view\_option\_value\]** - - 该子句为视图指定一个可选的参数。 - - 目前view\_option\_name支持的参数仅有security\_barrier,当VIEW试图提供行级安全时,应使用该参数。 - - 取值范围:Boolean类型,TRUE、FALSE - -- **query** - - 为视图提供行和列的SELECT或VALUES语句。 - - -## 示例 - -``` ---创建字段spcname为pg_default组成的视图。 -openGauss=# CREATE VIEW myView AS - SELECT * FROM pg_tablespace WHERE spcname = 'pg_default'; - ---查看视图。 -openGauss=# SELECT * FROM myView ; - ---删除视图myView。 -openGauss=# DROP VIEW myView; -``` - -## 相关链接 - -[ALTER VIEW](ALTER-VIEW.md),[DROP VIEW](DROP-VIEW.md) - +# CREATE VIEW + +## 功能描述 + +创建一个视图。视图与基本表不同,是一个虚拟的表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。 + +## 注意事项 + +无。 + +## 语法格式 + +``` +CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW view_name [ ( column_name [, ...] ) ] + [ WITH ( {view_option_name [= view_option_value]} [, ... ] ) ] + AS query; +``` + +>![](public_sys-resources/icon-note.gif) **说明:** +>创建视图时使用WITH\(security\_barriers\)可以创建一个相对安全的视图,避免攻击者利用低成本函数的 RAISE 语句打印出隐藏的基表数据。 + +## 参数说明 + +- **OR REPLACE** + + 如果视图已存在,则重新定义。 + +- **TEMP | TEMPORARY** + + 创建临时视图。 + +- **view\_name** + + 要创建的视图名称。可以用模式修饰。 + + 取值范围:字符串,符合标识符命名规范。 + +- **column\_name** + + 可选的名称列表,用作视图的字段名。如果没有给出,字段名取自查询中的字段名。 + + 取值范围:字符串,符合标识符命名规范。 + +- **view\_option\_name \[= view\_option\_value\]** + + 该子句为视图指定一个可选的参数。 + + 目前view\_option\_name支持的参数仅有security\_barrier,当 VIEW 试图提供行级安全时,应使用该参数。 + + 取值范围:Boolean类型,TRUE、FALSE + +- **query** + + 为视图提供行和列的 SELECT 或 VALUES 语句。 + + +## 示例 + +``` +--创建字段 spcname 为 pg_default 组成的视图。 +openGauss=# CREATE VIEW myView AS + SELECT * FROM pg_tablespace WHERE spcname = 'pg_default'; + +--查看视图。 +openGauss=# SELECT * FROM myView ; + +--删除视图 myView 。 +openGauss=# DROP VIEW myView; +``` + +## 相关链接 + +[ALTER VIEW](ALTER-VIEW.md),[DROP VIEW](DROP-VIEW.md) + diff --git a/content/zh/docs/Developerguide/CREATE-WEAK-PASSWORD-DICTIONARY.md b/content/zh/docs/Developerguide/CREATE-WEAK-PASSWORD-DICTIONARY.md index beed4f9d6..b9dfcd7e9 100644 --- a/content/zh/docs/Developerguide/CREATE-WEAK-PASSWORD-DICTIONARY.md +++ b/content/zh/docs/Developerguide/CREATE-WEAK-PASSWORD-DICTIONARY.md @@ -1,48 +1,48 @@ -# CREATE WEAK PASSWORD DICTIONARY - -## 功能描述 - -向gs\_global\_config表中插入一个或者多个弱口令。 - -## 注意事项 - -- 只有初始用户、系统管理员和安全管理员拥有权限执行本语法。 -- 弱口令字典中的口令存放在gs\_global\_config系统表中。 -- 弱口令字典默认为空,用户通过本语法可以新增一条或多条弱口令。 -- 当用户尝试通过本语法插入gs\_global\_config表中已存在的弱口令时,会只在表中保留一条该弱口令。 - -## 语法格式 - -``` -CREATE WEAK PASSWORD DICTIONARY - [WITH VALUES] ( {'weak_password'} [, ...] ); -``` - -## 参数说明 - -weak\_password - -弱口令。 - -范围:字符串。 - -## 示例 - -``` ---向gs_global_config系统表中插入单个弱口令。 -openGauss=# CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('password1'); - ---向gs_global_config系统表中插入多个弱口令。 -openGauss=# CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('password2'),('password3'); - ---清空gs_global_config系统表中所有弱口令。 -openGauss=# DROP WEAK PASSWORD DICTIONARY; - ---查看现有弱口令。 -openGauss=# SELECT * FROM gs_global_config WHERE NAME LIKE 'weak_password'; -``` - -## 相关链接 - -[DROP WEAK PASSWORD DICTIONARY](DROP-WEAK-PASSWORD-DICTIONARY.md) - +# CREATE WEAK PASSWORD DICTIONARY + +## 功能描述 + +向gs\_global\_config表中插入一个或者多个弱口令。 + +## 注意事项 + +- 只有初始用户、系统管理员和安全管理员拥有权限执行本语法。 +- 弱口令字典中的口令存放在gs\_global\_config系统表中。 +- 弱口令字典默认为空,用户通过本语法可以新增一条或多条弱口令。 +- 当用户尝试通过本语法插入gs\_global\_config表中已存在的弱口令时,会只在表中保留一条该弱口令。 + +## 语法格式 + +``` +CREATE WEAK PASSWORD DICTIONARY + [WITH VALUES] ( {'weak_password'} [, ...] ); +``` + +## 参数说明 + +weak\_password + +弱口令。 + +范围:字符串。 + +## 示例 + +``` +--向 gs_global_config 系统表中插入单个弱口令。 +openGauss=# CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('password1'); + +--向 gs_global_config 系统表中插入多个弱口令。 +openGauss=# CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('password2'),('password3'); + +--清空 gs_global_config 系统表中所有弱口令。 +openGauss=# DROP WEAK PASSWORD DICTIONARY; + +--查看现有弱口令。 +openGauss=# SELECT * FROM gs_global_config WHERE NAME LIKE 'weak_password'; +``` + +## 相关链接 + +[DROP WEAK PASSWORD DICTIONARY](DROP-WEAK-PASSWORD-DICTIONARY.md) + diff --git a/content/zh/docs/Developerguide/CURSOR.md b/content/zh/docs/Developerguide/CURSOR.md index 8b29439f8..c0a06ab82 100644 --- a/content/zh/docs/Developerguide/CURSOR.md +++ b/content/zh/docs/Developerguide/CURSOR.md @@ -1,65 +1,65 @@ -# CURSOR - -## 功能描述 - -CURSOR命令定义一个游标,用于在一个大的查询里面检索少数几行数据。 - -为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 - -## 注意事项 - -- 游标命令只能在事务块里使用。 -- 通常游标和SELECT一样返回文本格式。因为数据在系统内部是用二进制格式存储的,系统必须对数据做一定转换以生成文本格式。一旦数据是以文本形式返回,客户端应用需要把它们转换成二进制进行操作。使用FETCH语句,游标可以返回文本或二进制格式。 -- 应该小心使用二进制游标。文本格式一般都比对应的二进制格式占用的存储空间大。二进制游标返回内部二进制形态的数据,可能更易于操作。如果想以文本方式显示数据,则以文本方式检索会为用户节约很多客户端的工作。比如,如果查询从某个整数列返回1,在缺省的游标里将获得一个字符串1,但在二进制游标里将得到一个4字节的包含该数值内部形式的数值(大端顺序)。 - -## 语法格式 - -``` -CURSOR cursor_name - [ BINARY ] [ NO SCROLL ] [ { WITH | WITHOUT } HOLD ] - FOR query ; -``` - -## 参数说明 - -- **cursor\_name** - - 将要创建的游标名。 - - 取值范围:遵循数据库对象命名规范。 - -- **BINARY** - - 指明游标以二进制而不是文本格式返回数据。 - -- **NO SCROLL** - - 声明游标检索数据行的方式。 - - - NO SCROLL:声明该游标不能用于以倒序的方式检索数据行。 - - 未声明:根据执行计划的不同,自动判断该游标是否可以用于以倒序的方式检索数据行。 - -- **WITH HOLD | WITHOUT HOLD** - - 声明当创建游标的事务结束后,游标是否能继续使用。 - - - WITH HOLD:声明该游标在创建它的事务结束后仍可继续使用。 - - WITHOUT HOLD:声明该游标在创建它的事务之外不能再继续使用,此游标将在事务结束时被自动关闭。 - - 如果不指定WITH HOLD或WITHOUT HOLD,默认行为是WITHOUT HOLD。 - - 跨节点事务不支持WITH HOLD(例如在多DBnode部署openGauss中所创建的含有DDL的事务属于跨节点事务)。 - -- **query** - - 使用SELECT或VALUES子句指定游标返回的行。 - - 取值范围:SELECT或VALUES子句。 - - -## 示例 - -请参考FETCH的[示例](FETCH.md#zh-cn_topic_0283137321_zh-cn_topic_0237122165_zh-cn_topic_0059778422_s1ee72832a27547e4949061a010e24578)。 - -## 相关链接 - -[FETCH](FETCH.md) - +# CURSOR + +## 功能描述 + +CURSOR 命令定义一个游标,用于在一个大的查询里面检索少数几行数据。 + +为了处理 SQL 语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 + +## 注意事项 + +- 游标命令只能在事务块里使用。 +- 通常游标和 SELECT 一样返回文本格式。因为数据在系统内部是用二进制格式存储的,系统必须对数据做一定转换以生成文本格式。一旦数据是以文本形式返回,客户端应用需要把它们转换成二进制进行操作。使用 FETCH 语句,游标可以返回文本或二进制格式。 +- 应该小心使用二进制游标。文本格式一般都比对应的二进制格式占用的存储空间大。二进制游标返回内部二进制形态的数据,可能更易于操作。如果想以文本方式显示数据,则以文本方式检索会为用户节约很多客户端的工作。比如,如果查询从某个整数列返回 1 ,在缺省的游标里将获得一个字符串 1 ,但在二进制游标里将得到一个 4 字节的包含该数值内部形式的数值(大端顺序)。 + +## 语法格式 + +``` +CURSOR cursor_name + [ BINARY ] [ NO SCROLL ] [ { WITH | WITHOUT } HOLD ] + FOR query ; +``` + +## 参数说明 + +- **cursor\_name** + + 将要创建的游标名。 + + 取值范围:遵循数据库对象命名规范。 + +- **BINARY** + + 指明游标以二进制而不是文本格式返回数据。 + +- **NO SCROLL** + + 声明游标检索数据行的方式。 + + - NO SCROLL:声明该游标不能用于以倒序的方式检索数据行。 + - 未声明:根据执行计划的不同,自动判断该游标是否可以用于以倒序的方式检索数据行。 + +- **WITH HOLD | WITHOUT HOLD** + + 声明当创建游标的事务结束后,游标是否能继续使用。 + + - WITH HOLD:声明该游标在创建它的事务结束后仍可继续使用。 + - WITHOUT HOLD:声明该游标在创建它的事务之外不能再继续使用,此游标将在事务结束时被自动关闭。 + - 如果不指定 WITH HOLD 或 WITHOUT HOLD ,默认行为是 WITHOUT HOLD 。 + - 跨节点事务不支持WITH HOLD(例如在多 DBnode 部署 openGauss 中所创建的含有 DDL 的事务属于跨节点事务)。 + +- **query** + + 使用 SELECT 或 VALUES 子句指定游标返回的行。 + + 取值范围:SELECT或 VALUES 子句。 + + +## 示例 + +请参考 FETCH 的[示例](FETCH.md#zh-cn_topic_0283137321_zh-cn_topic_0237122165_zh-cn_topic_0059778422_s1ee72832a27547e4949061a010e24578)。 + +## 相关链接 + +[FETCH](FETCH.md) + diff --git a/content/zh/docs/Developerguide/Cache-IO.md b/content/zh/docs/Developerguide/Cache-IO.md index 025757ba0..88820cc3e 100644 --- a/content/zh/docs/Developerguide/Cache-IO.md +++ b/content/zh/docs/Developerguide/Cache-IO.md @@ -1,61 +1,61 @@ -# Cache/IO - -- **[STATIO\_USER\_TABLES](STATIO_USER_TABLES.md)** - -- **[SUMMARY\_STATIO\_USER\_TABLES](SUMMARY_STATIO_USER_TABLES.md)** - -- **[GLOBAL\_STATIO\_USER\_TABLES](GLOBAL_STATIO_USER_TABLES.md)** - -- **[STATIO\_USER\_INDEXES](STATIO_USER_INDEXES.md)** - -- **[SUMMARY\_STATIO\_USER\_INDEXES](SUMMARY_STATIO_USER_INDEXES.md)** - -- **[GLOBAL\_STATIO\_USER\_INDEXES](GLOBAL_STATIO_USER_INDEXES.md)** - -- **[STATIO\_USER\_SEQUENCES](STATIO_USER_SEQUENCES.md)** - -- **[SUMMARY\_STATIO\_USER\_SEQUENCES](SUMMARY_STATIO_USER_SEQUENCES.md)** - -- **[GLOBAL\_STATIO\_USER\_SEQUENCES](GLOBAL_STATIO_USER_SEQUENCES.md)** - -- **[STATIO\_SYS\_TABLES](STATIO_SYS_TABLES.md)** - -- **[SUMMARY\_STATIO\_SYS\_TABLES](SUMMARY_STATIO_SYS_TABLES.md)** - -- **[GLOBAL\_STATIO\_SYS\_TABLES](GLOBAL_STATIO_SYS_TABLES.md)** - -- **[STATIO\_SYS\_INDEXES](STATIO_SYS_INDEXES.md)** - -- **[SUMMARY\_STATIO\_SYS\_INDEXES](SUMMARY_STATIO_SYS_INDEXES.md)** - -- **[GLOBAL\_STATIO\_SYS\_INDEXES](GLOBAL_STATIO_SYS_INDEXES.md)** - -- **[STATIO\_SYS\_SEQUENCES](STATIO_SYS_SEQUENCES.md)** - -- **[SUMMARY\_STATIO\_SYS\_SEQUENCES](SUMMARY_STATIO_SYS_SEQUENCES.md)** - -- **[GLOBAL\_STATIO\_SYS\_SEQUENCES](GLOBAL_STATIO_SYS_SEQUENCES.md)** - -- **[STATIO\_ALL\_TABLES](STATIO_ALL_TABLES.md)** - -- **[SUMMARY\_STATIO\_ALL\_TABLES](SUMMARY_STATIO_ALL_TABLES.md)** - -- **[GLOBAL\_STATIO\_ALL\_TABLES](GLOBAL_STATIO_ALL_TABLES.md)** - -- **[STATIO\_ALL\_INDEXES](STATIO_ALL_INDEXES.md)** - -- **[SUMMARY\_STATIO\_ALL\_INDEXES](SUMMARY_STATIO_ALL_INDEXES.md)** - -- **[GLOBAL\_STATIO\_ALL\_INDEXES](GLOBAL_STATIO_ALL_INDEXES.md)** - -- **[STATIO\_ALL\_SEQUENCES](STATIO_ALL_SEQUENCES.md)** - -- **[SUMMARY\_STATIO\_ALL\_SEQUENCES](SUMMARY_STATIO_ALL_SEQUENCES.md)** - -- **[GLOBAL\_STATIO\_ALL\_SEQUENCES](GLOBAL_STATIO_ALL_SEQUENCES.md)** - -- **[GLOBAL\_STAT\_DB\_CU](GLOBAL_STAT_DB_CU.md)** - -- **[GLOBAL\_STAT\_SESSION\_CU](GLOBAL_STAT_SESSION_CU.md)** - - +# Cache/IO + +- **[STATIO\_USER\_TABLES](STATIO_USER_TABLES.md)** + +- **[SUMMARY\_STATIO\_USER\_TABLES](SUMMARY_STATIO_USER_TABLES.md)** + +- **[GLOBAL\_STATIO\_USER\_TABLES](GLOBAL_STATIO_USER_TABLES.md)** + +- **[STATIO\_USER\_INDEXES](STATIO_USER_INDEXES.md)** + +- **[SUMMARY\_STATIO\_USER\_INDEXES](SUMMARY_STATIO_USER_INDEXES.md)** + +- **[GLOBAL\_STATIO\_USER\_INDEXES](GLOBAL_STATIO_USER_INDEXES.md)** + +- **[STATIO\_USER\_SEQUENCES](STATIO_USER_SEQUENCES.md)** + +- **[SUMMARY\_STATIO\_USER\_SEQUENCES](SUMMARY_STATIO_USER_SEQUENCES.md)** + +- **[GLOBAL\_STATIO\_USER\_SEQUENCES](GLOBAL_STATIO_USER_SEQUENCES.md)** + +- **[STATIO\_SYS\_TABLES](STATIO_SYS_TABLES.md)** + +- **[SUMMARY\_STATIO\_SYS\_TABLES](SUMMARY_STATIO_SYS_TABLES.md)** + +- **[GLOBAL\_STATIO\_SYS\_TABLES](GLOBAL_STATIO_SYS_TABLES.md)** + +- **[STATIO\_SYS\_INDEXES](STATIO_SYS_INDEXES.md)** + +- **[SUMMARY\_STATIO\_SYS\_INDEXES](SUMMARY_STATIO_SYS_INDEXES.md)** + +- **[GLOBAL\_STATIO\_SYS\_INDEXES](GLOBAL_STATIO_SYS_INDEXES.md)** + +- **[STATIO\_SYS\_SEQUENCES](STATIO_SYS_SEQUENCES.md)** + +- **[SUMMARY\_STATIO\_SYS\_SEQUENCES](SUMMARY_STATIO_SYS_SEQUENCES.md)** + +- **[GLOBAL\_STATIO\_SYS\_SEQUENCES](GLOBAL_STATIO_SYS_SEQUENCES.md)** + +- **[STATIO\_ALL\_TABLES](STATIO_ALL_TABLES.md)** + +- **[SUMMARY\_STATIO\_ALL\_TABLES](SUMMARY_STATIO_ALL_TABLES.md)** + +- **[GLOBAL\_STATIO\_ALL\_TABLES](GLOBAL_STATIO_ALL_TABLES.md)** + +- **[STATIO\_ALL\_INDEXES](STATIO_ALL_INDEXES.md)** + +- **[SUMMARY\_STATIO\_ALL\_INDEXES](SUMMARY_STATIO_ALL_INDEXES.md)** + +- **[GLOBAL\_STATIO\_ALL\_INDEXES](GLOBAL_STATIO_ALL_INDEXES.md)** + +- **[STATIO\_ALL\_SEQUENCES](STATIO_ALL_SEQUENCES.md)** + +- **[SUMMARY\_STATIO\_ALL\_SEQUENCES](SUMMARY_STATIO_ALL_SEQUENCES.md)** + +- **[GLOBAL\_STATIO\_ALL\_SEQUENCES](GLOBAL_STATIO_ALL_SEQUENCES.md)** + +- **[GLOBAL\_STAT\_DB\_CU](GLOBAL_STAT_DB_CU.md)** + +- **[GLOBAL\_STAT\_SESSION\_CU](GLOBAL_STAT_SESSION_CU.md)** + + diff --git a/content/zh/docs/Developerguide/Configuration.md b/content/zh/docs/Developerguide/Configuration.md index 6e7f74471..642efd337 100644 --- a/content/zh/docs/Developerguide/Configuration.md +++ b/content/zh/docs/Developerguide/Configuration.md @@ -1,7 +1,7 @@ -# Configuration - -- **[CONFIG\_SETTINGS](CONFIG_SETTINGS.md)** - -- **[GLOBAL\_CONFIG\_SETTINGS](GLOBAL_CONFIG_SETTINGS.md)** - - +# Configuration + +- **[CONFIG\_SETTINGS](CONFIG_SETTINGS.md)** + +- **[GLOBAL\_CONFIG\_SETTINGS](GLOBAL_CONFIG_SETTINGS.md)** + + diff --git a/content/zh/docs/Developerguide/CopyManager.md b/content/zh/docs/Developerguide/CopyManager.md index 020c2c0dd..ead93e14a 100644 --- a/content/zh/docs/Developerguide/CopyManager.md +++ b/content/zh/docs/Developerguide/CopyManager.md @@ -1,109 +1,109 @@ -# CopyManager - -CopyManager是openGauss JDBC驱动中提供的一个API接口类,用于批量向openGauss中导入数据。 - -## CopyManager的继承关系 - -CopyManager类位于org.postgresql.copy Package中,继承自java.lang.Object类,该类的声明如下: - -``` -public class CopyManager -extends Object -``` - -## 构造方法 - -public CopyManager\(BaseConnection connection\) - -throws SQLException - -## 常用方法 - -**表 1** CopyManager常用方法 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

返回值

-

方法

-

描述

-

throws

-

CopyIn

-

copyIn(String sql)

-

-

-

SQLException

-

long

-

copyIn(String sql, InputStream from)

-

使用COPY FROM STDIN从InputStream中快速向数据库中的表加载数据。

-

SQLException,IOException

-

long

-

copyIn(String sql, InputStream from, int bufferSize)

-

使用COPY FROM STDIN从InputStream中快速向数据库中的表加载数据。

-

SQLException,IOException

-

long

-

copyIn(String sql, Reader from)

-

使用COPY FROM STDIN从Reader中快速向数据库中的表加载数据。

-

SQLException,IOException

-

long

-

copyIn(String sql, Reader from, int bufferSize)

-

使用COPY FROM STDIN从Reader中快速向数据库中的表加载数据。

-

SQLException,IOException

-

CopyOut

-

copyOut(String sql)

-

-

-

SQLException

-

long

-

copyOut(String sql, OutputStream to)

-

将一个COPY TO STDOUT的结果集从数据库发送到OutputStream类中。

-

SQLException,IOException

-

long

-

copyOut(String sql, Writer to)

-

将一个COPY TO STDOUT的结果集从数据库发送到Writer类中。

-

SQLException,IOException

-
- +# CopyManager + +CopyManager 是 openGauss JDBC 驱动中提供的一个 API 接口类,用于批量向 openGauss 中导入数据。 + +## CopyManager的继承关系 + +CopyManager 类位于org.postgresql.copy Package中,继承自java.lang.Object类,该类的声明如下: + +``` +public class CopyManager +extends Object +``` + +## 构造方法 + +public CopyManager\(BaseConnection connection\) + +throws SQLException + +## 常用方法 + +**表 1** CopyManager常用方法 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

返回值

+

方法

+

描述

+

throws

+

CopyIn

+

copyIn(String sql)

+

-

+

SQLException

+

long

+

copyIn(String sql, InputStream from)

+

使用 COPY FROM STDIN 从 InputStream 中快速向数据库中的表加载数据。

+

SQLException,IOException

+

long

+

copyIn(String sql, InputStream from , int bufferSize)

+

使用 COPY FROM STDIN 从 InputStream 中快速向数据库中的表加载数据。

+

SQLException,IOException

+

long

+

copyIn(String sql, Reader from)

+

使用 COPY FROM STDIN 从 Reader 中快速向数据库中的表加载数据。

+

SQLException,IOException

+

long

+

copyIn(String sql, Reader from , int bufferSize)

+

使用 COPY FROM STDIN 从 Reader 中快速向数据库中的表加载数据。

+

SQLException,IOException

+

CopyOut

+

copyOut(String sql)

+

-

+

SQLException

+

long

+

copyOut(String sql, OutputStream to)

+

将一个 COPY TO STDOUT 的结果集从数据库发送到 OutputStream 类中。

+

SQLException,IOException

+

long

+

copyOut(String sql, Writer to)

+

将一个 COPY TO STDOUT 的结果集从数据库发送到 Writer 类中。

+

SQLException,IOException

+
+ diff --git "a/content/zh/docs/Developerguide/CopyManager\347\261\273\347\256\200\344\273\213.md" "b/content/zh/docs/Developerguide/CopyManager\347\261\273\347\256\200\344\273\213.md" index 61d012b6b..dcf49072f 100644 --- "a/content/zh/docs/Developerguide/CopyManager\347\261\273\347\256\200\344\273\213.md" +++ "b/content/zh/docs/Developerguide/CopyManager\347\261\273\347\256\200\344\273\213.md" @@ -1,109 +1,109 @@ -# CopyManager类简介 - -CopyManager是 openGauss JDBC驱动中提供的一个API接口类,用于批量向openGauss数据库中导入数据。 - -## CopyManager的继承关系 - -CopyManager类位于org.postgresql.copy Package中,继承自java.lang.Object类,该类的声明如下: - -``` -public class CopyManager -extends Object -``` - -## 构造方法 - -public CopyManager\(BaseConnection connection\) - -throws SQLException - -## 常用方法 - -**表 1** CopyManager常用方法 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

返回值

-

方法

-

描述

-

throws

-

CopyIn

-

copyIn(String sql)

-

-

-

SQLException

-

long

-

copyIn(String sql, InputStream from)

-

使用COPY FROM STDIN从InputStream中快速向数据库中的表导入数据。

-

SQLException,IOException

-

long

-

copyIn(String sql, InputStream from, int bufferSize)

-

使用COPY FROM STDIN从InputStream中快速向数据库中的表导入数据。

-

SQLException,IOException

-

long

-

copyIn(String sql, Reader from)

-

使用COPY FROM STDIN从Reader中快速向数据库中的表导入数据。

-

SQLException,IOException

-

long

-

copyIn(String sql, Reader from, int bufferSize)

-

使用COPY FROM STDIN从Reader中快速向数据库中的表导入数据。

-

SQLException,IOException

-

CopyOut

-

copyOut(String sql)

-

-

-

SQLException

-

long

-

copyOut(String sql, OutputStream to)

-

将一个COPY TO STDOUT的结果集从数据库发送到OutputStream类中。

-

SQLException,IOException

-

long

-

copyOut(String sql, Writer to)

-

将一个COPY TO STDOUT的结果集从数据库发送到Writer类中。

-

SQLException,IOException

-
- +# CopyManager类简介 + +CopyManager 是 openGauss JDBC 驱动中提供的一个 API 接口类,用于批量向 openGauss 数据库中导入数据。 + +## CopyManager的继承关系 + +CopyManager 类位于org.postgresql.copy Package中,继承自java.lang.Object类,该类的声明如下: + +``` +public class CopyManager +extends Object +``` + +## 构造方法 + +public CopyManager\(BaseConnection connection\) + +throws SQLException + +## 常用方法 + +**表 1** CopyManager常用方法 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

返回值

+

方法

+

描述

+

throws

+

CopyIn

+

copyIn(String sql)

+

-

+

SQLException

+

long

+

copyIn(String sql, InputStream from)

+

使用 COPY FROM STDIN 从 InputStream 中快速向数据库中的表导入数据。

+

SQLException,IOException

+

long

+

copyIn(String sql, InputStream from , int bufferSize)

+

使用 COPY FROM STDIN 从 InputStream 中快速向数据库中的表导入数据。

+

SQLException,IOException

+

long

+

copyIn(String sql, Reader from)

+

使用 COPY FROM STDIN 从 Reader 中快速向数据库中的表导入数据。

+

SQLException,IOException

+

long

+

copyIn(String sql, Reader from , int bufferSize)

+

使用 COPY FROM STDIN 从 Reader 中快速向数据库中的表导入数据。

+

SQLException,IOException

+

CopyOut

+

copyOut(String sql)

+

-

+

SQLException

+

long

+

copyOut(String sql, OutputStream to)

+

将一个 COPY TO STDOUT 的结果集从数据库发送到 OutputStream 类中。

+

SQLException,IOException

+

long

+

copyOut(String sql, Writer to)

+

将一个 COPY TO STDOUT 的结果集从数据库发送到 Writer 类中。

+

SQLException,IOException

+
+ diff --git "a/content/zh/docs/Developerguide/Custom-Plan\345\222\214Generic-Plan\351\200\211\346\213\251\347\232\204Hint.md" "b/content/zh/docs/Developerguide/Custom-Plan\345\222\214Generic-Plan\351\200\211\346\213\251\347\232\204Hint.md" index 54bd7efff..66a45f94d 100644 --- "a/content/zh/docs/Developerguide/Custom-Plan\345\222\214Generic-Plan\351\200\211\346\213\251\347\232\204Hint.md" +++ "b/content/zh/docs/Developerguide/Custom-Plan\345\222\214Generic-Plan\351\200\211\346\213\251\347\232\204Hint.md" @@ -1,52 +1,52 @@ -# Custom Plan和Generic Plan选择的Hint - -## 功能描述 - -对于以PBE方式执行的查询语句和DML语句,优化器会基于规则、代价、参数等因素选择生成Custom Plan或Generic Plan执行。用户可以通过use\_cplan/use\_gplan的hint指定使用哪种计划执行方式。 - -## 语法格式 - -- 指定使用Custom Plan: - - ``` - use_cplan - ``` - -- 指定使用Generic Plan: - - ``` - use_gplan - ``` - - ->![](public_sys-resources/icon-note.gif) **说明:** ->- 对于非PBE方式执行的SQL语句,设置本hint不会影响执行方式。 ->- 本Hint的优先级仅高于基于代价的选择和plan\_cache\_mode参数,即plan\_cache\_mode无法强制选择执行方式的语句本hint也无法生效。 - -## 示例 - -强制使用Custom Plan - -``` -set enable_fast_query_shipping = off; -create table t (a int, b int, c int); -prepare p as select /*+ use_cplan */ * from t where a = $1; -explain execute p(1); -``` - -计划如下。可以看到过滤条件为入参的实际值,即此计划为Custom Plan。 - -![](figures/zh-cn_image_0000001097419094.png) - -强制使用Generic Plan - -``` -deallocate p; -prepare p as select /*+ use_gplan */ * from t where a = $1; -explain execute p(1); -``` - -计划如下。可以看到过滤条件为待填充的入参,即此计划为Custom Plan。 - -![](figures/zh-cn_image_0000001097739076.png) - +# Custom Plan和 Generic Plan 选择的Hint + +## 功能描述 + +对于以 PBE 方式执行的查询语句和 DML 语句,优化器会基于规则、代价、参数等因素选择生成 Custom Plan 或 Generic Plan 执行。用户可以通过use\_cplan/use\_gplan的 hint 指定使用哪种计划执行方式。 + +## 语法格式 + +- 指定使用Custom Plan: + + ``` + use_cplan + ``` + +- 指定使用Generic Plan: + + ``` + use_gplan + ``` + + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 对于非 PBE 方式执行的 SQL 语句,设置本 hint 不会影响执行方式。 +>- 本 Hint 的优先级仅高于基于代价的选择和plan\_cache\_mode参数,即plan\_cache\_mode无法强制选择执行方式的语句本 hint 也无法生效。 + +## 示例 + +强制使用Custom Plan + +``` +set enable_fast_query_shipping = off; +create table t (a int, b int , c int); +prepare p as select /*+ use_cplan */ * from t where a = $1; +explain execute p(1); +``` + +计划如下。可以看到过滤条件为入参的实际值,即此计划为 Custom Plan 。 + +![](figures/zh-cn_image_0000001097419094.png) + +强制使用Generic Plan + +``` +deallocate p; +prepare p as select /*+ use_gplan */ * from t where a = $1; +explain execute p(1); +``` + +计划如下。可以看到过滤条件为待填充的入参,即此计划为 Custom Plan 。 + +![](figures/zh-cn_image_0000001097739076.png) + diff --git a/content/zh/docs/Developerguide/DB4AI-ARCHIVE_SNAPSHOT.md b/content/zh/docs/Developerguide/DB4AI-ARCHIVE_SNAPSHOT.md index 07f7ea0b5..8fa4cbf21 100644 --- a/content/zh/docs/Developerguide/DB4AI-ARCHIVE_SNAPSHOT.md +++ b/content/zh/docs/Developerguide/DB4AI-ARCHIVE_SNAPSHOT.md @@ -1,39 +1,39 @@ -# DB4AI.ARCHIVE\_SNAPSHOT - -ARCHIVE\_SNAPSHOT是DB4AI特性用于存档快照的接口函数。通过语法ARCHIVE SNAPSHOT调用。生效后的快照无法参数训练等任务。 - -**表 1** DB4AI.ARCHIVE\_SNAPSHOT入参和返回值列表 - - - - - - - - - - - - - - - - - - - - -

参数

-

类型

-

描述

-

i_schema

-

IN NAME

-

快照存储的模式名字,默认值是当前用户

-

i_name

-

IN NAME

-

快照名称

-

res

-

OUT db4ai.snapshot_name

-

结果

-
- +# DB4AI.ARCHIVE\_SNAPSHOT + +ARCHIVE\_SNAPSHOT是 DB4AI 特性用于存档快照的接口函数。通过语法 ARCHIVE SNAPSHOT 调用。生效后的快照无法参数训练等任务。 + +**表 1** DB4AI.ARCHIVE\_SNAPSHOT入参和返回值列表 + + + + + + + + + + + + + + + + + + + + +

参数

+

类型

+

描述

+

i_schema

+

IN NAME

+

快照存储的模式名字,默认值是当前用户

+

i_name

+

IN NAME

+

快照名称

+

res

+

OUT db4ai.snapshot_name

+

结果

+
+ diff --git a/content/zh/docs/Developerguide/DB4AI-CREATE_SNAPSHOT.md b/content/zh/docs/Developerguide/DB4AI-CREATE_SNAPSHOT.md index cda56a3d8..84d65025a 100644 --- a/content/zh/docs/Developerguide/DB4AI-CREATE_SNAPSHOT.md +++ b/content/zh/docs/Developerguide/DB4AI-CREATE_SNAPSHOT.md @@ -1,60 +1,60 @@ -# DB4AI.CREATE\_SNAPSHOT - -CREATE\_SNAPSHOT是DB4AI特性用于创建快照的接口函数。通过语法CREATE SNAPSHOT调用。 - -**表 1** DB4AI.CREATE\_SNAPSHOT入参和返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

参数

-

类型

-

描述

-

i_schema

-

IN NAME

-

快照存储的模式名字,默认值是当前用户或者PUBLIC。

-

i_name

-

IN NAME

-

快照名称。

-

i_commands

-

IN TEXT[]

-

定义数据获取的SQL命令。

-

i_vers

-

IN NAME

-

版本后缀。

-

i_comment

-

IN TEXT

-

快照描述。

-

res

-

OUT db4ai.snapshot_name

-

结果。

-
- +# DB4AI.CREATE\_SNAPSHOT + +CREATE\_SNAPSHOT是 DB4AI 特性用于创建快照的接口函数。通过语法 CREATE SNAPSHOT 调用。 + +**表 1** DB4AI.CREATE\_SNAPSHOT入参和返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

类型

+

描述

+

i_schema

+

IN NAME

+

快照存储的模式名字,默认值是当前用户或者 PUBLIC 。

+

i_name

+

IN NAME

+

快照名称。

+

i_commands

+

IN TEXT[]

+

定义数据获取的 SQL 命令。

+

i_vers

+

IN NAME

+

版本后缀。

+

i_comment

+

IN TEXT

+

快照描述。

+

res

+

OUT db4ai.snapshot_name

+

结果。

+
+ diff --git a/content/zh/docs/Developerguide/DB4AI-CREATE_SNAPSHOT_INTERNAL.md b/content/zh/docs/Developerguide/DB4AI-CREATE_SNAPSHOT_INTERNAL.md index 96ff2d4be..c41dde5d9 100644 --- a/content/zh/docs/Developerguide/DB4AI-CREATE_SNAPSHOT_INTERNAL.md +++ b/content/zh/docs/Developerguide/DB4AI-CREATE_SNAPSHOT_INTERNAL.md @@ -1,60 +1,60 @@ -# DB4AI.CREATE\_SNAPSHOT\_INTERNAL - -CREATE\_SNAPSHOT\_INTERNAL是db4ai.create\_snapshot函数的内置执行函数。函数存在信息校验,无法直接调用。 - -**表 1** DB4AI.CREATE\_SNAPSHOT\_INTERNAL入参和返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

参数

-

类型

-

描述

-

s_id

-

IN BIGINT

-

快照ID。

-

i_schema

-

IN NAME

-

快照存储的名字空间。

-

i_name

-

IN NAME

-

快照名称。

-

i_commands

-

IN TEXT[]

-

定义数据获取的SQL命令。

-

i_comment

-

IN TEXT

-

快照描述。

-

i_owner

-

IN NAME

-

快照拥有者。

-
- +# DB4AI.CREATE\_SNAPSHOT\_INTERNAL + +CREATE\_SNAPSHOT\_INTERNAL是db4ai.create\_snapshot函数的内置执行函数。函数存在信息校验,无法直接调用。 + +**表 1** DB4AI.CREATE\_SNAPSHOT\_INTERNAL入参和返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

类型

+

描述

+

s_id

+

IN BIGINT

+

快照 ID 。

+

i_schema

+

IN NAME

+

快照存储的名字空间。

+

i_name

+

IN NAME

+

快照名称。

+

i_commands

+

IN TEXT[]

+

定义数据获取的 SQL 命令。

+

i_comment

+

IN TEXT

+

快照描述。

+

i_owner

+

IN NAME

+

快照拥有者。

+
+ diff --git a/content/zh/docs/Developerguide/DB4AI-MANAGE_SNAPSHOT_INTERNAL.md b/content/zh/docs/Developerguide/DB4AI-MANAGE_SNAPSHOT_INTERNAL.md index 849408a4b..dde756765 100644 --- a/content/zh/docs/Developerguide/DB4AI-MANAGE_SNAPSHOT_INTERNAL.md +++ b/content/zh/docs/Developerguide/DB4AI-MANAGE_SNAPSHOT_INTERNAL.md @@ -1,46 +1,46 @@ -# DB4AI.MANAGE\_SNAPSHOT\_INTERNAL - -MANAGE\_SNAPSHOT\_INTERNAL是DB4AI.PUBLISH\_SNAPSHOT和DB4AI.ARCHIVE\_SNAPSHOT函数的内置执行函数。函数存在信息校验,无法直接调用。 - -**表 1** DB4AI.MANAGE\_SNAPSHOT\_INTERNAL入参和返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - -

参数

-

类型

-

描述

-

i_schema

-

IN NAME

-

快照存储的模式名字

-

i_name

-

IN NAME

-

快照名称

-

publish

-

IN BOOLEN

-

是否是发布状态

-

res

-

OUT db4ai.snapshot_name

-

结果

-
- +# DB4AI.MANAGE\_SNAPSHOT\_INTERNAL + +MANAGE\_SNAPSHOT\_INTERNAL是DB4AI.PUBLISH\_SNAPSHOT和DB4AI.ARCHIVE\_SNAPSHOT函数的内置执行函数。函数存在信息校验,无法直接调用。 + +**表 1** DB4AI.MANAGE\_SNAPSHOT\_INTERNAL入参和返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

类型

+

描述

+

i_schema

+

IN NAME

+

快照存储的模式名字

+

i_name

+

IN NAME

+

快照名称

+

publish

+

IN BOOLEN

+

是否是发布状态

+

res

+

OUT db4ai.snapshot_name

+

结果

+
+ diff --git a/content/zh/docs/Developerguide/DB4AI-PREPARE_SNAPSHOT.md b/content/zh/docs/Developerguide/DB4AI-PREPARE_SNAPSHOT.md index 1769c1c3d..df4dbe106 100644 --- a/content/zh/docs/Developerguide/DB4AI-PREPARE_SNAPSHOT.md +++ b/content/zh/docs/Developerguide/DB4AI-PREPARE_SNAPSHOT.md @@ -1,60 +1,60 @@ -# DB4AI.PREPARE\_SNAPSHOT - -PREPARE\_SNAPSHOT是DB4AI特性中数据准备模型训练和解释快照进行协作。快照为所有应用更改的数据和文档提供了完整的序列。通过语法PREPARE SNAPSHOT调用。 - -**表 1** DB4AI.PREPARE\_SNAPSHOT入参和返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

参数

-

类型

-

描述

-

i_schema

-

IN NAME

-

快照存储的模式名字,默认值是当前用户或者PUBLIC。

-

i_parent

-

IN NAME

-

父快照名称。

-

i_commands

-

IN TEXT[]

-

定义快照修改的DDL和DML命令。

-

i_vers

-

IN NAME

-

版本后缀。

-

i_comment

-

IN TEXT

-

此数据策展单元的说明。

-

res

-

OUT db4ai.snapshot_name

-

结果。

-
- +# DB4AI.PREPARE\_SNAPSHOT + +PREPARE\_SNAPSHOT是 DB4AI 特性中数据准备模型训练和解释快照进行协作。快照为所有应用更改的数据和文档提供了完整的序列。通过语法 PREPARE SNAPSHOT 调用。 + +**表 1** DB4AI.PREPARE\_SNAPSHOT入参和返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

类型

+

描述

+

i_schema

+

IN NAME

+

快照存储的模式名字,默认值是当前用户或者 PUBLIC 。

+

i_parent

+

IN NAME

+

父快照名称。

+

i_commands

+

IN TEXT[]

+

定义快照修改的 DDL 和 DML 命令。

+

i_vers

+

IN NAME

+

版本后缀。

+

i_comment

+

IN TEXT

+

此数据策展单元的说明。

+

res

+

OUT db4ai.snapshot_name

+

结果。

+
+ diff --git a/content/zh/docs/Developerguide/DB4AI-PREPARE_SNAPSHOT_INTERNAL.md b/content/zh/docs/Developerguide/DB4AI-PREPARE_SNAPSHOT_INTERNAL.md index f236f0900..e6f4486f1 100644 --- a/content/zh/docs/Developerguide/DB4AI-PREPARE_SNAPSHOT_INTERNAL.md +++ b/content/zh/docs/Developerguide/DB4AI-PREPARE_SNAPSHOT_INTERNAL.md @@ -1,102 +1,102 @@ -# DB4AI.PREPARE\_SNAPSHOT\_INTERNAL - -PREPARE\_SNAPSHOT\_INTERNAL是db4ai.prepare\_snapshot函数的内置执行函数。函数存在信息校验,无法直接调用。 - -**表 1** DB4AI.PREPARE\_SNAPSHOT\_INTERNAL入参和返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

参数

-

类型

-

描述

-

s_id

-

IN BIGINT

-

快照ID。

-

p_id

-

IN BIGINT

-

父快照ID。

-

m_id

-

IN BIGINT

-

矩阵id。

-

r_id

-

IN BIGINT

-

根快照ID。

-

i_schema

-

IN NAME

-

快照模式。

-

i_name

-

IN NAME

-

快照名称。

-

i_commands

-

IN TEXT[]

-

定义快照修改的DDL和DML命令。

-

i_comment

-

IN TEXT

-

快照描述。

-

i_owner

-

IN NAME

-

快照所有者。

-

i_idx

-

INOUT INT

-

exec_cmds的索引。

-

i_exec_cmds

-

INOUT TEXT[]

-

用于执行的DDL和DML。

-

i_mapping

-

IN NAME[]

-

将用户列映射到备份列;如果不为NULL,则生成规则。

-
- +# DB4AI.PREPARE\_SNAPSHOT\_INTERNAL + +PREPARE\_SNAPSHOT\_INTERNAL是db4ai.prepare\_snapshot函数的内置执行函数。函数存在信息校验,无法直接调用。 + +**表 1** DB4AI.PREPARE\_SNAPSHOT\_INTERNAL入参和返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

类型

+

描述

+

s_id

+

IN BIGINT

+

快照 ID 。

+

p_id

+

IN BIGINT

+

父快照 ID 。

+

m_id

+

IN BIGINT

+

矩阵 id 。

+

r_id

+

IN BIGINT

+

根快照 ID 。

+

i_schema

+

IN NAME

+

快照模式。

+

i_name

+

IN NAME

+

快照名称。

+

i_commands

+

IN TEXT[]

+

定义快照修改的 DDL 和 DML 命令。

+

i_comment

+

IN TEXT

+

快照描述。

+

i_owner

+

IN NAME

+

快照所有者。

+

i_idx

+

INOUT INT

+

exec_cmds的索引。

+

i_exec_cmds

+

INOUT TEXT[]

+

用于执行的 DDL 和 DML 。

+

i_mapping

+

IN NAME[]

+

将用户列映射到备份列;如果不为 NULL ,则生成规则。

+
+ diff --git a/content/zh/docs/Developerguide/DB4AI-PUBLISH_SNAPSHOT.md b/content/zh/docs/Developerguide/DB4AI-PUBLISH_SNAPSHOT.md index 029ba27fa..31a1b8b68 100644 --- a/content/zh/docs/Developerguide/DB4AI-PUBLISH_SNAPSHOT.md +++ b/content/zh/docs/Developerguide/DB4AI-PUBLISH_SNAPSHOT.md @@ -1,39 +1,39 @@ -# DB4AI.PUBLISH\_SNAPSHOT - -PUBLISH\_SNAPSHOT是DB4AI特性用于发布快照的接口函数。通过语法PUBLISH SNAPSHOT调用。 - -**表 1** DB4AI.PUBLISH\_SNAPSHOT入参和返回值列表 - - - - - - - - - - - - - - - - - - - - -

参数

-

类型

-

描述

-

i_schema

-

IN NAME

-

快照存储的模式名字,默认值是当前用户或者PUBLIC

-

i_name

-

IN NAME

-

快照名称

-

res

-

OUT db4ai.snapshot_name

-

结果

-
- +# DB4AI.PUBLISH\_SNAPSHOT + +PUBLISH\_SNAPSHOT是 DB4AI 特性用于发布快照的接口函数。通过语法 PUBLISH SNAPSHOT 调用。 + +**表 1** DB4AI.PUBLISH\_SNAPSHOT入参和返回值列表 + + + + + + + + + + + + + + + + + + + + +

参数

+

类型

+

描述

+

i_schema

+

IN NAME

+

快照存储的模式名字,默认值是当前用户或者PUBLIC

+

i_name

+

IN NAME

+

快照名称

+

res

+

OUT db4ai.snapshot_name

+

结果

+
+ diff --git a/content/zh/docs/Developerguide/DB4AI-PURGE_SNAPSHOT.md b/content/zh/docs/Developerguide/DB4AI-PURGE_SNAPSHOT.md index 31ce0337e..9311c4641 100644 --- a/content/zh/docs/Developerguide/DB4AI-PURGE_SNAPSHOT.md +++ b/content/zh/docs/Developerguide/DB4AI-PURGE_SNAPSHOT.md @@ -1,39 +1,39 @@ -# DB4AI.PURGE\_SNAPSHOT - -PURGE\_SNAPSHOT是DB4AI特性用于删除快照的接口函数。通过语法PURGE SNAPSHOT调用。 - -**表 1** DB4AI.PURGE\_SNAPSHOT入参和返回值列表 - - - - - - - - - - - - - - - - - - - - -

参数

-

类型

-

描述

-

i_schema

-

IN NAME

-

快照存储的模式名字

-

i_name

-

IN NAME

-

快照名称

-

res

-

OUT db4ai.snapshot_name

-

结果

-
- +# DB4AI.PURGE\_SNAPSHOT + +PURGE\_SNAPSHOT是 DB4AI 特性用于删除快照的接口函数。通过语法 PURGE SNAPSHOT 调用。 + +**表 1** DB4AI.PURGE\_SNAPSHOT入参和返回值列表 + + + + + + + + + + + + + + + + + + + + +

参数

+

类型

+

描述

+

i_schema

+

IN NAME

+

快照存储的模式名字

+

i_name

+

IN NAME

+

快照名称

+

res

+

OUT db4ai.snapshot_name

+

结果

+
+ diff --git a/content/zh/docs/Developerguide/DB4AI-PURGE_SNAPSHOT_INTERNAL.md b/content/zh/docs/Developerguide/DB4AI-PURGE_SNAPSHOT_INTERNAL.md index 671a9139d..a4b3892bc 100644 --- a/content/zh/docs/Developerguide/DB4AI-PURGE_SNAPSHOT_INTERNAL.md +++ b/content/zh/docs/Developerguide/DB4AI-PURGE_SNAPSHOT_INTERNAL.md @@ -1,32 +1,32 @@ -# DB4AI.PURGE\_SNAPSHOT\_INTERNAL - -PURGE\_SNAPSHOT\_INTERNAL是DB4AI.PURGE\_SNAPSHOT函数的内置执行函数。函数存在信息校验,无法直接调用 - -**表 1** DB4AI.PURGE\_SNAPSHOT\_INTERNAL入参和返回值列表 - - - - - - - - - - - - - - - - -

参数

-

类型

-

描述

-

i_schema

-

IN NAME

-

快照存储的模式名字

-

i_name

-

IN NAME

-

快照名称

-
- +# DB4AI.PURGE\_SNAPSHOT\_INTERNAL + +PURGE\_SNAPSHOT\_INTERNAL是DB4AI.PURGE\_SNAPSHOT函数的内置执行函数。函数存在信息校验,无法直接调用 + +**表 1** DB4AI.PURGE\_SNAPSHOT\_INTERNAL入参和返回值列表 + + + + + + + + + + + + + + + + +

参数

+

类型

+

描述

+

i_schema

+

IN NAME

+

快照存储的模式名字

+

i_name

+

IN NAME

+

快照名称

+
+ diff --git "a/content/zh/docs/Developerguide/DB4AI-Query-\346\250\241\345\236\213\350\256\255\347\273\203\345\222\214\346\216\250\346\226\255.md" "b/content/zh/docs/Developerguide/DB4AI-Query-\346\250\241\345\236\213\350\256\255\347\273\203\345\222\214\346\216\250\346\226\255.md" index 79a8be622..c34da937c 100644 --- "a/content/zh/docs/Developerguide/DB4AI-Query-\346\250\241\345\236\213\350\256\255\347\273\203\345\222\214\346\216\250\346\226\255.md" +++ "b/content/zh/docs/Developerguide/DB4AI-Query-\346\250\241\345\236\213\350\256\255\347\273\203\345\222\214\346\216\250\346\226\255.md" @@ -1,533 +1,533 @@ -# DB4AI-Query:模型训练和推断 - -openGauss当前版本支持了原生DB4AI能力,通过引入原生AI算子,简化操作流程,充分利用数据库优化器、执行器的优化与执行能力,获得高性能的数据库内模型训练能力。更简化的模型训练与预测流程、更高的性能表现,让开发者在更短时间内能更专注于模型的调优与数据分析上,而避免了碎片化的技术栈与冗余的代码实现。 - -## 关键字解析 - -**表 1** DB4AI语法及关键字 - - - - - - - - - - - - - - - - - - - - - - - - - -
  

名称

-

描述

-

语句

-

CREATE MODEL

-

创建模型并进行训练,同时保存模型。

-

PREDICT BY

-

利用已有模型进行推断。

-

关键字

-

TARGET

-

训练/推断任务的目标列名。

-

FEATURES

-

训练/推断任务的数据特征列名。

-

MODEL

-

训练任务的模型名称。

-
- -## 使用指导 - -1. 本版本支持的算法概述。 - - 当前版本的DB4AI支持基于SGD算子的逻辑回归(目前支持二分类任务)、线性回归和支持向量机算法(分类任务),以及基于K-Means算子的Kmeans聚类算法。 - -2. 模型训练语法说明。 - - CREATE MODEL - - 使用“CREATE MODEL”语句可以进行模型的创建和训练。模型训练SQL语句,现有一个数据集为kmeans\_2d,该表的数据内容如下: - - ``` - openGauss=# select * from kmeans_2d; - id | position - ----+------------------------------------- - 1 | {74.5268815685995,88.2141939294524} - 2 | {70.9565760521218,98.8114827475511} - 3 | {76.2756086327136,23.8387574302033} - 4 | {17.8495847294107,81.8449544720352} - 5 | {81.2175785354339,57.1677675866522} - 6 | {53.97752255667,49.3158342130482} - 7 | {93.2475341879763,86.934042100329} - 8 | {72.7659293473698,19.7020415100269} - 9 | {16.5800288529135,75.7475957670249} - 10 | {81.8520747194998,40.3476078575477} - 11 | {76.796671198681,86.3827232690528} - 12 | {59.9231450678781,90.9907738864422} - 13 | {70.161884885747,19.7427458665334} - 14 | {11.1269539105706,70.9988166182302} - 15 | {80.5005071521737,65.2822235273197} - 16 | {54.7030725912191,52.151339428965} - 17 | {103.059707058128,80.8419883321039} - 18 | {85.3574452036992,14.9910179991275} - 19 | {28.6501615960151,76.6922890325077} - 20 | {69.7285806713626,49.5416352967732} - (20 rows) - ``` - - 该表的字段position的数据类型为 double precision\[\]. - - - 以Kmeans为例,训练一个模型。从kmeans\_2d训练集中指定position为特征列,使用kmeans算法,创建并保存模型point\_kmeans。 - - ``` - openGauss=# CREATE MODEL point_kmeans USING kmeans FEATURES position FROM kmeans_2d WITH num_centroids=3; - NOTICE: Hyperparameter max_iterations takes value DEFAULT (10) - NOTICE: Hyperparameter num_centroids takes value 3 - NOTICE: Hyperparameter tolerance takes value DEFAULT (0.000010) - NOTICE: Hyperparameter batch_size takes value DEFAULT (10) - NOTICE: Hyperparameter num_features takes value DEFAULT (2) - NOTICE: Hyperparameter distance_function takes value DEFAULT (L2_Squared) - NOTICE: Hyperparameter seeding_function takes value DEFAULT (Random++) - NOTICE: Hyperparameter verbose takes value DEFAULT (0) - NOTICE: Hyperparameter seed takes value DEFAULT (0) - MODEL CREATED. PROCESSED 1 - ``` - - 上述命令中: - - - “CREATE MODEL”语句用于模型的训练和保存。 - - USING关键字指定算法名称。 - - FEATURES用于指定训练模模型的特征,需根据训练数据表的列名添加。 - - TARGET指定模型的训练目标,它可以是训练所需数据表的列名,也可以是一个表达式,例如: price \> 10000。 - - WITH用于指定训练模型时的超参数。当超参未被用户进行设置的时候,框架会使用默认数值。 - - 针对不同的算子,框架支持不同的超参组合: - - **表 2** 算子支持的超参 - - - - - - - - - - - - - -

算子

-

超参

-

GD

-

(logistic_regression、linear_regression、svm_classification)

-

optimizer(char*); verbose(bool); max_iterations(int); max_seconds(double); batch_size(int); learning_rate(double); decay(double); tolerance(double)

-

其中,SVM限定超参lambda(double)

-

Kmeans

-

max_iterations(int); num_centroids(int); tolerance(double); batch_size(int); num_features(int); distance_function(char*); seeding_function(char*); verbose(int);seed(int)

-
- - 当前各个超参数设置的默认值和取值范围如下: - - **表 3** 超参的默认值以及取值范围 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

算子

-

超参(默认值)

-

取值范围

-

超参描述

-

GD (logistic_regression、linear_regression、svm_classification)

-

optimizer = gd(梯度下降法)

-

gd/ngd(自然梯度下降)

-

优化器

-

verbose = false

-

T/F

-

日志显示

-

max_iterations = 100

-

(0, INT_MAX_VALUE]

-

最大迭代次数

-

max_seconds = 0(不对运行时长设限制)

-

[0,INT_MAX_VALUE]

-

运行时长

-

batch_size = 1000

-

(0, MAX_MEMORY_LIMIT]

-

一次训练所选取的样本数

-

learning_rate = 0.8

-

(0, DOUBLE_MAX_VALUE]

-

学习率

-

decay = 0.95

-

(0, DOUBLE_MAX_VALUE]

-

权值衰减率

-

tolerance = 0.0005

-

(0, DOUBLE_MAX_VALUE]

-

公差

-

seed = 0(对seed取随机值)

-

[0, INT_MAX_VALUE]

-

种子

-

just for SVM:lambda = 0.01

-

(0, DOUBLE_MAX_VALUE)

-

正则化参数

-

Kmeans

-

-

max_iterations = 10

-

[1, INT_MAX_VALUE]

-

最大迭代次数

-

num_centroids = 10

-

[1, MAX_MEMORY_LIMIT]

-

簇的数目

-

tolerance = 0.00001

-

(0,1)

-

中心点误差

-

batch_size = 10

-

[1, MAX_MEMORY_LIMIT]

-

一次训练所选取的样本数

-

num_features = 2

-

[1, GS_MAX_COLS]

-

输入样本特征数

-

distance_function = "L2_Squared"

-

L1\L2\L2_Squared\Linf

-

正则化方法

-

seeding_function = "Random++"

-

"Random++"\"KMeans||"

-

初始化种子点方法

-

verbose = 0U

-

{ 0, 1, 2 }

-

冗长模式

-

seed = 0U

-

[0, INT_MAX_VALUE]

-

种子

-

MAX_MEMORY_LIMIT = 最大内存加载的元组数量

-

GS_MAX_COLS = 数据库单表最大属性数量

-
- - - 模型保存成功,则返回创建成功信息: - - ``` - MODEL CREATED. PROCESSED x - ``` - -3. 查看模型信息。 - - 当训练完成后模型会被存储到系统表gs\_model\_warehouse中。系统表gs\_model\_warehouse可以查看到关于模型本身和训练过程的相关信息。 - - 用户可以通过查看系统表的方式查看模型,例如查看模型名为“point\_kmeans”的SQL语句如下: - - ``` - openGauss=# select * from gs_model_warehouse where modelname='point_kmeans'; - -[ RECORD 1 ]---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - modelname | point_kmeans - modelowner | 10 - createtime | 2021-04-30 17:30:39.59044 - processedtuples | 20 - discardedtuples | 0 - pre_process_time | 6.2001e-05 - exec_time | .000185272 - iterations | 5 - outputtype | 23 - modeltype | kmeans - query | CREATE MODEL point_kmeans USING kmeans FEATURES position FROM kmeans_2d WITH num_centroids=3; - modeldata | - weight | - hyperparametersnames | {max_iterations,num_centroids,tolerance,batch_size,num_features,distance_function,seeding_function,verbose,seed} - hyperparametersvalues | {10,3,1e-05,10,2,L2_Squared,Random++,0,0} - hyperparametersoids | {23,23,701,23,23,1043,1043,23,23} - coefnames | {original_num_centroids,actual_num_centroids,dimension,distance_function_id,seed,coordinates} - coefvalues | {3,3,2,2,572368998,"(77.282589,23.724434)(74.421616,73.239455)(18.551682,76.320914)"} - coefoids | - trainingscoresname | - trainingscoresvalue | - modeldescribe | {"id:1,objective_function:542.851169,avg_distance_to_centroid:108.570234,min_distance_to_centroid:1.027078,max_distance_to_centroid:297.210108,std_dev_distance_to_centroid:105.053257,cluster_size:5","id:2,objective_function:5825.982139,avg_distance_to_centroid:529.634740,min_distance_to_centroid:100.270449,max_distance_to_centroid:990.300588,std_dev_distance_to_centroid:285.915094,cluster_size:11","id:3,objective_function:220.792591,avg_distance_to_centroid:55.198148,min_distance_to_centroid:4.216111,max_distance_to_centroid:102.117204,std_dev_distance_to_centroid:39.319118,cluster_size:4"} - ``` - -4. 利用已存在的模型做推断任务。 - - 使用“SELECT”和“PREDICT BY”关键字利用已有模型完成推断任务。 - - 查询语法:SELECT…PREDICT BY…\(FEATURES…\)…FROM…; - - ``` - openGauss=# SELECT id, PREDICT BY point_kmeans (FEATURES position) as pos FROM (select * from kmeans_2d limit 10); - id | pos - ----+----- - 1 | 2 - 2 | 2 - 3 | 1 - 4 | 3 - 5 | 2 - 6 | 2 - 7 | 2 - 8 | 1 - 9 | 3 - 10 | 1 - (10 rows) - ``` - - 针对相同的推断任务,同一个模型的结果是稳定的。且基于相同的超参数和训练集训练的模型也具有稳定性,同时AI模型训练存在随机成分(每个batch的数据分布、随机梯度下降),所以不同的模型间的计算表现、结果允许存在小的差别。 - -5. 查看执行计划。 - - 使用explain语句可对“CREATE MODEL”和“PREDICT BY”的模型训练或预测过程中的执行计划进行分析。Explain关键字后可直接拼接CREATE MODEL/ PREDICT BY语句(子句),也可接可选的参数,支持的参数如下: - - **表 4** EXPLAIN支持的参数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

参数名

-

描述

-

ANALYZE

-

布尔型变量,追加运行时间、循环次数等描述信息

-

VERBOSE

-

布尔型变量,控制训练的运行信息是否输出到客户端

-

COSTS

-

布尔型变量

-

CPU

-

布尔型变量

-

DETAIL

-

布尔型变量,不可用

-

NODES

-

布尔型变量,不可用

-

NUM_NODES

-

布尔型变量,不可用

-

BUFFERS

-

布尔型变量

-

TIMING

-

布尔型变量

-

PLAN

-

布尔型变量

-

FORMAT

-

可选格式类型:TEXT / XML / JSON / YAML

-
- - 示例: - - ``` - openGauss=# Explain CREATE MODEL patient_logisitic_regression USING logistic_regression FEATURES second_attack, treatment TARGET trait_anxiety > 50 FROM patients WITH batch_size=10, learning_rate = 0.05; - NOTICE: Hyperparameter batch_size takes value 10 - NOTICE: Hyperparameter decay takes value DEFAULT (0.950000) - NOTICE: Hyperparameter learning_rate takes value 0.050000 - NOTICE: Hyperparameter max_iterations takes value DEFAULT (100) - NOTICE: Hyperparameter max_seconds takes value DEFAULT (0) - NOTICE: Hyperparameter optimizer takes value DEFAULT (gd) - NOTICE: Hyperparameter tolerance takes value DEFAULT (0.000500) - NOTICE: Hyperparameter seed takes value DEFAULT (0) - NOTICE: Hyperparameter verbose takes value DEFAULT (FALSE) - NOTICE: GD shuffle cache size 212369 - QUERY PLAN - ------------------------------------------------------------------- - Gradient Descent (cost=0.00..0.00 rows=0 width=0) - -> Seq Scan on patients (cost=0.00..32.20 rows=1776 width=12) - (2 rows) - ``` - -6. 异常场景。 - - 训练阶段。 - - 场景一:当超参数的设置超出取值范围,模型训练失败,返回ERROR,并提示错误,例如: - - ``` - openGauss=# CREATE MODEL patient_linear_regression USING linear_regression FEATURES second_attack,treatment TARGET trait_anxiety FROM patients WITH optimizer='aa'; - NOTICE: Hyperparameter batch_size takes value DEFAULT (1000) - NOTICE: Hyperparameter decay takes value DEFAULT (0.950000) - NOTICE: Hyperparameter learning_rate takes value DEFAULT (0.800000) - NOTICE: Hyperparameter max_iterations takes value DEFAULT (100) - NOTICE: Hyperparameter max_seconds takes value DEFAULT (0) - NOTICE: Hyperparameter optimizer takes value aa - ERROR: Invalid hyperparameter value for optimizer. Valid values are: gd, ngd. (default is gd) - ``` - - - 场景二:当模型名称已存在,模型保存失败,返回ERROR,并提示错误原因: - - ``` - openGauss=# CREATE MODEL patient_linear_regression USING linear_regression FEATURES second_attack,treatment TARGET trait_anxiety FROM patients; - NOTICE: Hyperparameter batch_size takes value DEFAULT (1000) - NOTICE: Hyperparameter decay takes value DEFAULT (0.950000) - NOTICE: Hyperparameter learning_rate takes value DEFAULT (0.800000) - NOTICE: Hyperparameter max_iterations takes value DEFAULT (100) - NOTICE: Hyperparameter max_seconds takes value DEFAULT (0) - NOTICE: Hyperparameter optimizer takes value DEFAULT (gd) - NOTICE: Hyperparameter tolerance takes value DEFAULT (0.000500) - NOTICE: Hyperparameter seed takes value DEFAULT (0) - NOTICE: Hyperparameter verbose takes value DEFAULT (FALSE) - NOTICE: GD shuffle cache size 5502 - ERROR: The model name "patient_linear_regression" already exists in gs_model_warehouse. - ``` - - - 场景三:FEATURE或者TARGETS列是\*,返回ERROR,并提示错误原因: - - ``` - openGauss=# CREATE MODEL patient_linear_regression USING linear_regression FEATURES * TARGET trait_anxiety FROM - patients; - ERROR: FEATURES clause cannot be * - -----------------------------------------------------------------------------------------------------------------------、 - openGauss=# CREATE MODEL patient_linear_regression USING linear_regression FEATURES second_attack,treatment TARGET * FROM patients; - ERROR: TARGET clause cannot be * - ``` - - - 场景四:对于无监督学习方法使用TARGET关键字,或者在监督学习方法中不适用TARGET关键字,均会返回ERROR,并提示错误原因: - - ``` - openGauss=# CREATE MODEL patient_linear_regression USING linear_regression FEATURES second_attack,treatment FROM patients; - ERROR: Supervised ML algorithms require TARGET clause - ----------------------------------------------------------------------------------------------------------------------------- - CREATE MODEL patient_linear_regression USING linear_regression TARGET trait_anxiety FROM patients; ERROR: Supervised ML algorithms require FEATURES clause - ``` - - - 场景五:当GUC参数statement\_timeout设置了时长,训练超时执行的语句将被终止:执行CREATE MODEL语句。训练集的大小、训练轮数(iteration)、提前终止条件(tolerance、max\_seconds)、并行线程数(nthread)等参数都会影响训练时长。当时长超过数据库限制,语句被终止模型训练失败。 - - - 推断阶段。 - - 场景六:当模型名在系统表中查找不到,数据库会报ERROR: - - ``` - openGauss=# select id, PREDICT BY patient_logistic_regression (FEATURES second_attack,treatment) FROM patients; - ERROR: There is no model called "patient_logistic_regression". - ``` - - - 场景七:当做推断任务FEATURES的数据维度和数据类型与训练集存在不一致,将报ERROR,并提示错误原因,例如: - - ``` - openGauss=# select id, PREDICT BY patient_linear_regression (FEATURES second_attack) FROM patients; - ERROR: Invalid number of features for prediction, provided 1, expected 2 - CONTEXT: referenced column: patient_linear_regression_pred - ------------------------------------------------------------------------------------------------------------------------------------- - openGauss=# select id, PREDICT BY patient_linear_regression (FEATURES 1,second_attack,treatment) FROM patients; - ERROR: Invalid number of features for prediction, provided 3, expected 2 - CONTEXT: referenced column: patient_linear_regression_pre - ``` - - - - +# DB4AI-Query:模型训练和推断 + +openGauss 当前版本支持了原生 DB4AI 能力,通过引入原生 AI 算子,简化操作流程,充分利用数据库优化器、执行器的优化与执行能力,获得高性能的数据库内模型训练能力。更简化的模型训练与预测流程、更高的性能表现,让开发者在更短时间内能更专注于模型的调优与数据分析上,而避免了碎片化的技术栈与冗余的代码实现。 + +## 关键字解析 + +**表 1** DB4AI语法及关键字 + + + + + + + + + + + + + + + + + + + + + + + + + +
  

名称

+

描述

+

语句

+

CREATE MODEL

+

创建模型并进行训练,同时保存模型。

+

PREDICT BY

+

利用已有模型进行推断。

+

关键字

+

TARGET

+

训练/推断任务的目标列名。

+

FEATURES

+

训练/推断任务的数据特征列名。

+

MODEL

+

训练任务的模型名称。

+
+ +## 使用指导 + +1. 本版本支持的算法概述。 + + 当前版本的 DB4AI 支持基于 SGD 算子的逻辑回归(目前支持二分类任务)、线性回归和支持向量机算法(分类任务),以及基于K-Means算子的 Kmeans 聚类算法。 + +2. 模型训练语法说明。 + - CREATE MODEL + + 使用“CREATE MODEL”语句可以进行模型的创建和训练。模型训练 SQL 语句,现有一个数据集为kmeans\_2d,该表的数据内容如下: + + ``` + openGauss=# select * from kmeans_2d; + id | position + ----+------------------------------------- + 1 | {74.5268815685995,88.2141939294524} + 2 | {70.9565760521218,98.8114827475511} + 3 | {76.2756086327136,23.8387574302033} + 4 | {17.8495847294107,81.8449544720352} + 5 | {81.2175785354339,57.1677675866522} + 6 | {53.97752255667,49.3158342130482} + 7 | {93.2475341879763,86.934042100329} + 8 | {72.7659293473698,19.7020415100269} + 9 | {16.5800288529135,75.7475957670249} + 10 | {81.8520747194998,40.3476078575477} + 11 | {76.796671198681,86.3827232690528} + 12 | {59.9231450678781,90.9907738864422} + 13 | {70.161884885747,19.7427458665334} + 14 | {11.1269539105706,70.9988166182302} + 15 | {80.5005071521737,65.2822235273197} + 16 | {54.7030725912191,52.151339428965} + 17 | {103.059707058128,80.8419883321039} + 18 | {85.3574452036992,14.9910179991275} + 19 | {28.6501615960151,76.6922890325077} + 20 | {69.7285806713626,49.5416352967732} + (20 rows) + ``` + + 该表的字段 position 的数据类型为 double precision\[\]. + + - 以 Kmeans 为例,训练一个模型。从kmeans\_2d训练集中指定 position 为特征列,使用 kmeans 算法,创建并保存模型point\_kmeans。 + + ``` + openGauss=# CREATE MODEL point_kmeans USING kmeans FEATURES position FROM kmeans_2d WITH num_centroids=3; + NOTICE: Hyperparameter max_iterations takes value DEFAULT (10) + NOTICE: Hyperparameter num_centroids takes value 3 + NOTICE: Hyperparameter tolerance takes value DEFAULT (0.000010) + NOTICE: Hyperparameter batch_size takes value DEFAULT (10) + NOTICE: Hyperparameter num_features takes value DEFAULT (2) + NOTICE: Hyperparameter distance_function takes value DEFAULT (L2_Squared) + NOTICE: Hyperparameter seeding_function takes value DEFAULT (Random++) + NOTICE: Hyperparameter verbose takes value DEFAULT (0) + NOTICE: Hyperparameter seed takes value DEFAULT (0) + MODEL CREATED. PROCESSED 1 + ``` + + 上述命令中: + + - “CREATE MODEL”语句用于模型的训练和保存。 + - USING关键字指定算法名称。 + - FEATURES用于指定训练模模型的特征,需根据训练数据表的列名添加。 + - TARGET指定模型的训练目标,它可以是训练所需数据表的列名,也可以是一个表达式,例如: price \> 10000。 + - WITH用于指定训练模型时的超参数。当超参未被用户进行设置的时候,框架会使用默认数值。 + + 针对不同的算子,框架支持不同的超参组合: + + **表 2** 算子支持的超参 + + + + + + + + + + + + + +

算子

+

超参

+

GD

+

(logistic_regression、linear_regression、svm_classification)

+

optimizer(char*); verbose(bool); max_iterations(int); max_seconds(double); batch_size(int); learning_rate(double); decay(double); tolerance(double)

+

其中, SVM 限定超参lambda(double)

+

Kmeans

+

max_iterations(int); num_centroids(int); tolerance(double); batch_size(int); num_features(int); distance_function(char*); seeding_function(char*); verbose(int);seed(int)

+
+ + 当前各个超参数设置的默认值和取值范围如下: + + **表 3** 超参的默认值以及取值范围 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

算子

+

超参(默认值)

+

取值范围

+

超参描述

+

GD (logistic_regression、linear_regression、svm_classification)

+

optimizer = gd(梯度下降法)

+

gd/ngd(自然梯度下降)

+

优化器

+

verbose = false

+

T/F

+

日志显示

+

max_iterations = 100

+

(0, INT_MAX_VALUE]

+

最大迭代次数

+

max_seconds = 0(不对运行时长设限制)

+

[0,INT_MAX_VALUE]

+

运行时长

+

batch_size = 1000

+

(0, MAX_MEMORY_LIMIT]

+

一次训练所选取的样本数

+

learning_rate = 0.8

+

(0, DOUBLE_MAX_VALUE]

+

学习率

+

decay = 0.95

+

(0, DOUBLE_MAX_VALUE]

+

权值衰减率

+

tolerance = 0.0005

+

(0, DOUBLE_MAX_VALUE]

+

公差

+

seed = 0(对 seed 取随机值)

+

[0, INT_MAX_VALUE]

+

种子

+

just for SVM:lambda = 0.01

+

(0, DOUBLE_MAX_VALUE)

+

正则化参数

+

Kmeans

+

+

max_iterations = 10

+

[1, INT_MAX_VALUE]

+

最大迭代次数

+

num_centroids = 10

+

[1, MAX_MEMORY_LIMIT]

+

簇的数目

+

tolerance = 0.00001

+

(0,1)

+

中心点误差

+

batch_size = 10

+

[1, MAX_MEMORY_LIMIT]

+

一次训练所选取的样本数

+

num_features = 2

+

[1, GS_MAX_COLS]

+

输入样本特征数

+

distance_function = "L2_Squared"

+

L1\L2\L2_Squared\Linf

+

正则化方法

+

seeding_function = "Random++"

+

"Random++"\"KMeans||"

+

初始化种子点方法

+

verbose = 0U

+

{ 0, 1 , 2 }

+

冗长模式

+

seed = 0U

+

[0, INT_MAX_VALUE]

+

种子

+

MAX_MEMORY_LIMIT = 最大内存加载的元组数量

+

GS_MAX_COLS = 数据库单表最大属性数量

+
+ + - 模型保存成功,则返回创建成功信息: + + ``` + MODEL CREATED. PROCESSED x + ``` + +3. 查看模型信息。 + + 当训练完成后模型会被存储到系统表gs\_model\_warehouse中。系统表gs\_model\_warehouse可以查看到关于模型本身和训练过程的相关信息。 + + 用户可以通过查看系统表的方式查看模型,例如查看模型名为“point\_kmeans”的 SQL 语句如下: + + ``` + openGauss=# select * from gs_model_warehouse where modelname='point_kmeans'; + -[ RECORD 1 ]---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + modelname | point_kmeans + modelowner | 10 + createtime | 2021-04-30 17:30:39.59044 + processedtuples | 20 + discardedtuples | 0 + pre_process_time | 6.2001e-05 + exec_time | .000185272 + iterations | 5 + outputtype | 23 + modeltype | kmeans + query | CREATE MODEL point_kmeans USING kmeans FEATURES position FROM kmeans_2d WITH num_centroids=3; + modeldata | + weight | + hyperparametersnames | {max_iterations, num_centroids , tolerance , batch_size , num_features , distance_function , seeding_function , verbose ,seed} + hyperparametersvalues | {10, 3 ,1e-05, 10 , 2 , L2_Squared ,Random++, 0 ,0} + hyperparametersoids | {23, 23 , 701 , 23 , 23 , 1043 , 1043 , 23 ,23} + coefnames | {original_num_centroids, actual_num_centroids , dimension , distance_function_id , seed ,coordinates} + coefvalues | {3, 3 , 2 , 2 , 572368998 ,"(77.282589,23.724434)(74.421616,73.239455)(18.551682,76.320914)"} + coefoids | + trainingscoresname | + trainingscoresvalue | + modeldescribe | {"id:1,objective_function:542.851169,avg_distance_to_centroid:108.570234,min_distance_to_centroid:1.027078,max_distance_to_centroid:297.210108,std_dev_distance_to_centroid:105.053257,cluster_size:5","id:2,objective_function:5825.982139,avg_distance_to_centroid:529.634740,min_distance_to_centroid:100.270449,max_distance_to_centroid:990.300588,std_dev_distance_to_centroid:285.915094,cluster_size:11","id:3,objective_function:220.792591,avg_distance_to_centroid:55.198148,min_distance_to_centroid:4.216111,max_distance_to_centroid:102.117204,std_dev_distance_to_centroid:39.319118,cluster_size:4"} + ``` + +4. 利用已存在的模型做推断任务。 + + 使用“SELECT”和“PREDICT BY”关键字利用已有模型完成推断任务。 + + 查询语法:SELECT…PREDICT BY…\(FEATURES…\)…FROM…; + + ``` + openGauss=# SELECT id, PREDICT BY point_kmeans (FEATURES position) as pos FROM (select * from kmeans_2d limit 10); + id | pos + ----+----- + 1 | 2 + 2 | 2 + 3 | 1 + 4 | 3 + 5 | 2 + 6 | 2 + 7 | 2 + 8 | 1 + 9 | 3 + 10 | 1 + (10 rows) + ``` + + 针对相同的推断任务,同一个模型的结果是稳定的。且基于相同的超参数和训练集训练的模型也具有稳定性,同时 AI 模型训练存在随机成分(每个 batch 的数据分布、随机梯度下降),所以不同的模型间的计算表现、结果允许存在小的差别。 + +5. 查看执行计划。 + + 使用 explain 语句可对“CREATE MODEL”和“PREDICT BY”的模型训练或预测过程中的执行计划进行分析。 Explain 关键字后可直接拼接CREATE MODEL/ PREDICT BY语句(子句),也可接可选的参数,支持的参数如下: + + **表 4** EXPLAIN支持的参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数名

+

描述

+

ANALYZE

+

布尔型变量,追加运行时间、循环次数等描述信息

+

VERBOSE

+

布尔型变量,控制训练的运行信息是否输出到客户端

+

COSTS

+

布尔型变量

+

CPU

+

布尔型变量

+

DETAIL

+

布尔型变量,不可用

+

NODES

+

布尔型变量,不可用

+

NUM_NODES

+

布尔型变量,不可用

+

BUFFERS

+

布尔型变量

+

TIMING

+

布尔型变量

+

PLAN

+

布尔型变量

+

FORMAT

+

可选格式类型:TEXT / XML / JSON / YAML

+
+ + 示例: + + ``` + openGauss=# Explain CREATE MODEL patient_logisitic_regression USING logistic_regression FEATURES second_attack, treatment TARGET trait_anxiety > 50 FROM patients WITH batch_size=10, learning_rate = 0.05; + NOTICE: Hyperparameter batch_size takes value 10 + NOTICE: Hyperparameter decay takes value DEFAULT (0.950000) + NOTICE: Hyperparameter learning_rate takes value 0.050000 + NOTICE: Hyperparameter max_iterations takes value DEFAULT (100) + NOTICE: Hyperparameter max_seconds takes value DEFAULT (0) + NOTICE: Hyperparameter optimizer takes value DEFAULT (gd) + NOTICE: Hyperparameter tolerance takes value DEFAULT (0.000500) + NOTICE: Hyperparameter seed takes value DEFAULT (0) + NOTICE: Hyperparameter verbose takes value DEFAULT (FALSE) + NOTICE: GD shuffle cache size 212369 + QUERY PLAN + ------------------------------------------------------------------- + Gradient Descent (cost=0.00..0.00 rows=0 width=0) + -> Seq Scan on patients (cost=0.00..32.20 rows=1776 width=12) + (2 rows) + ``` + +6. 异常场景。 + - 训练阶段。 + - 场景一:当超参数的设置超出取值范围,模型训练失败,返回 ERROR ,并提示错误,例如: + + ``` + openGauss=# CREATE MODEL patient_linear_regression USING linear_regression FEATURES second_attack,treatment TARGET trait_anxiety FROM patients WITH optimizer='aa'; + NOTICE: Hyperparameter batch_size takes value DEFAULT (1000) + NOTICE: Hyperparameter decay takes value DEFAULT (0.950000) + NOTICE: Hyperparameter learning_rate takes value DEFAULT (0.800000) + NOTICE: Hyperparameter max_iterations takes value DEFAULT (100) + NOTICE: Hyperparameter max_seconds takes value DEFAULT (0) + NOTICE: Hyperparameter optimizer takes value aa + ERROR: Invalid hyperparameter value for optimizer. Valid values are: gd, ngd. (default is gd) + ``` + + - 场景二:当模型名称已存在,模型保存失败,返回 ERROR ,并提示错误原因: + + ``` + openGauss=# CREATE MODEL patient_linear_regression USING linear_regression FEATURES second_attack,treatment TARGET trait_anxiety FROM patients; + NOTICE: Hyperparameter batch_size takes value DEFAULT (1000) + NOTICE: Hyperparameter decay takes value DEFAULT (0.950000) + NOTICE: Hyperparameter learning_rate takes value DEFAULT (0.800000) + NOTICE: Hyperparameter max_iterations takes value DEFAULT (100) + NOTICE: Hyperparameter max_seconds takes value DEFAULT (0) + NOTICE: Hyperparameter optimizer takes value DEFAULT (gd) + NOTICE: Hyperparameter tolerance takes value DEFAULT (0.000500) + NOTICE: Hyperparameter seed takes value DEFAULT (0) + NOTICE: Hyperparameter verbose takes value DEFAULT (FALSE) + NOTICE: GD shuffle cache size 5502 + ERROR: The model name "patient_linear_regression" already exists in gs_model_warehouse. + ``` + + - 场景三:FEATURE或者 TARGETS 列是\*,返回 ERROR ,并提示错误原因: + + ``` + openGauss=# CREATE MODEL patient_linear_regression USING linear_regression FEATURES * TARGET trait_anxiety FROM + patients; + ERROR: FEATURES clause cannot be * + -----------------------------------------------------------------------------------------------------------------------、 + openGauss=# CREATE MODEL patient_linear_regression USING linear_regression FEATURES second_attack,treatment TARGET * FROM patients; + ERROR: TARGET clause cannot be * + ``` + + - 场景四:对于无监督学习方法使用 TARGET 关键字,或者在监督学习方法中不适用 TARGET 关键字,均会返回 ERROR ,并提示错误原因: + + ``` + openGauss=# CREATE MODEL patient_linear_regression USING linear_regression FEATURES second_attack,treatment FROM patients; + ERROR: Supervised ML algorithms require TARGET clause + ----------------------------------------------------------------------------------------------------------------------------- + CREATE MODEL patient_linear_regression USING linear_regression TARGET trait_anxiety FROM patients; ERROR: Supervised ML algorithms require FEATURES clause + ``` + + - 场景五:当 GUC 参数statement\_timeout设置了时长,训练超时执行的语句将被终止:执行 CREATE MODEL 语句。训练集的大小、训练轮数(iteration)、提前终止条件(tolerance、max\_seconds)、并行线程数(nthread)等参数都会影响训练时长。当时长超过数据库限制,语句被终止模型训练失败。 + + - 推断阶段。 + - 场景六:当模型名在系统表中查找不到,数据库会报ERROR: + + ``` + openGauss=# select id, PREDICT BY patient_logistic_regression (FEATURES second_attack,treatment) FROM patients; + ERROR: There is no model called "patient_logistic_regression". + ``` + + - 场景七:当做推断任务 FEATURES 的数据维度和数据类型与训练集存在不一致,将报 ERROR ,并提示错误原因,例如: + + ``` + openGauss=# select id, PREDICT BY patient_linear_regression (FEATURES second_attack) FROM patients; + ERROR: Invalid number of features for prediction, provided 1 , expected 2 + CONTEXT: referenced column: patient_linear_regression_pred + ------------------------------------------------------------------------------------------------------------------------------------- + openGauss=# select id, PREDICT BY patient_linear_regression (FEATURES 1, second_attack ,treatment) FROM patients; + ERROR: Invalid number of features for prediction, provided 3 , expected 2 + CONTEXT: referenced column: patient_linear_regression_pre + ``` + + + + diff --git a/content/zh/docs/Developerguide/DB4AI-SAMPLE_SNAPSHOT.md b/content/zh/docs/Developerguide/DB4AI-SAMPLE_SNAPSHOT.md index a9b4829b6..0746a29df 100644 --- a/content/zh/docs/Developerguide/DB4AI-SAMPLE_SNAPSHOT.md +++ b/content/zh/docs/Developerguide/DB4AI-SAMPLE_SNAPSHOT.md @@ -1,67 +1,67 @@ -# DB4AI.SAMPLE\_SNAPSHOT - -SAMPLE\_SNAPSHOT是DB4AI特性用于对基数据进行采样生成快照的接口函数。通过语法SAMPLE SNAPSHOT调用。 - -**表 1** DB4AI.SAMPLE\_SNAPSHOT入参和返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

参数

-

类型

-

描述

-

i_schema

-

IN NAME

-

快照存储的模式名字

-

i_parent

-

IN NAME

-

父快照名称

-

i_sample_infixes

-

IN NAME[]

-

示例快照名称中缀

-

i_sample_ratios

-

IN NUMBER[]

-

每个样本的大小,作为父集的比率

-

i_stratify

-

IN NAME[]

-

分层策略

-

i_sample_comments

-

IN TEXT[]

-

示例快照描述

-

res

-

OUT db4ai.snapshot_name

-

结果

-
- +# DB4AI.SAMPLE\_SNAPSHOT + +SAMPLE\_SNAPSHOT是 DB4AI 特性用于对基数据进行采样生成快照的接口函数。通过语法 SAMPLE SNAPSHOT 调用。 + +**表 1** DB4AI.SAMPLE\_SNAPSHOT入参和返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

类型

+

描述

+

i_schema

+

IN NAME

+

快照存储的模式名字

+

i_parent

+

IN NAME

+

父快照名称

+

i_sample_infixes

+

IN NAME[]

+

示例快照名称中缀

+

i_sample_ratios

+

IN NUMBER[]

+

每个样本的大小,作为父集的比率

+

i_stratify

+

IN NAME[]

+

分层策略

+

i_sample_comments

+

IN TEXT[]

+

示例快照描述

+

res

+

OUT db4ai.snapshot_name

+

结果

+
+ diff --git a/content/zh/docs/Developerguide/DB4AI-SNAPSHOT.md b/content/zh/docs/Developerguide/DB4AI-SNAPSHOT.md index 401ac35a9..4c8d4c128 100644 --- a/content/zh/docs/Developerguide/DB4AI-SNAPSHOT.md +++ b/content/zh/docs/Developerguide/DB4AI-SNAPSHOT.md @@ -1,137 +1,137 @@ -# DB4AI.SNAPSHOT - -SNAPSHOT表记录当前用户通过特性DB4AI.SNAPSHOT存储的快照。 - -**表 1** db4ai.snapshot表属性 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

实例

-

id

-

bigint

-

当前快照的ID。

-

1

-

parent_id

-

bigint

-

父快照的ID。

-

0

-

matrix_id

-

bigint

-

CSS模式下快照的矩阵ID,否则为NULL。

-

0

-

root_id

-

bigint

-

初始快照的ID,通过db4ai.create_snapshot()从操作数据构建。

-

0

-

schema

-

name

-

导出快照视图的模式。

-

public

-

name

-

name

-

快照的名称,包括版本后缀。

-

example0@1.1.0

-

owner

-

name

-

创建此快照的用户的名称。

-

nw

-

commands

-

text[]

-

记录如何从其根快照生成到此快照的SQL语句的完整列表。

-

{DELETE,"WHERE id > 7"}

-

comment

-

text

-

快照说明。

-

inherits from @1.0.0

-

published

-

boolean

-

TRUE,当且仅当快照当前已发布。

-

f

-

archived

-

boolean

-

TRUE,当且仅当快照当前已存档。

-

f

-

created

-

timestamp without time zone

-

快照创建日期的时间戳。

-

2021-08-25 10:59:52.955604

-

row_count

-

bigint

-

此快照中的数据行数。

-

8

-
- +# DB4AI.SNAPSHOT + +SNAPSHOT 表记录当前用户通过特性DB4AI.SNAPSHOT存储的快照。 + +**表 1** db4ai.snapshot表属性 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

实例

+

id

+

bigint

+

当前快照的 ID 。

+

1

+

parent_id

+

bigint

+

父快照的 ID 。

+

0

+

matrix_id

+

bigint

+

CSS模式下快照的矩阵 ID ,否则为 NULL 。

+

0

+

root_id

+

bigint

+

初始快照的 ID ,通过db4ai.create_snapshot()从操作数据构建。

+

0

+

schema

+

name

+

导出快照视图的模式。

+

public

+

name

+

name

+

快照的名称,包括版本后缀。

+

example0@1.1.0

+

owner

+

name

+

创建此快照的用户的名称。

+

nw

+

commands

+

text[]

+

记录如何从其根快照生成到此快照的 SQL 语句的完整列表。

+

{DELETE,"WHERE id > 7"}

+

comment

+

text

+

快照说明。

+

inherits from @1.0.0

+

published

+

boolean

+

TRUE,当且仅当快照当前已发布。

+

f

+

archived

+

boolean

+

TRUE,当且仅当快照当前已存档。

+

f

+

created

+

timestamp without time zone

+

快照创建日期的时间戳。

+

2021-08-25 10:59:52.955604

+

row_count

+

bigint

+

此快照中的数据行数。

+

8

+
+ diff --git a/content/zh/docs/Developerguide/DB4AI-Schema.md b/content/zh/docs/Developerguide/DB4AI-Schema.md index 3f854403d..feb109b90 100644 --- a/content/zh/docs/Developerguide/DB4AI-Schema.md +++ b/content/zh/docs/Developerguide/DB4AI-Schema.md @@ -1,27 +1,27 @@ -# DB4AI Schema - -DB4AI模式在AI特性中主要是用来存储和管理数据集版本。模式中保存数据表的原始视图快照,每一个数据版本的更改记录以及版本快照的管理信息。模式面向普通用户,用户可在该模式下查找特性DB4AI.SNAPSHOT创建的快照版本信息。 - -- **[DB4AI.SNAPSHOT](DB4AI-SNAPSHOT.md)** - -- **[DB4AI.CREATE\_SNAPSHOT](DB4AI-CREATE_SNAPSHOT.md)** - -- **[DB4AI.CREATE\_SNAPSHOT\_INTERNAL](DB4AI-CREATE_SNAPSHOT_INTERNAL.md)** - -- **[DB4AI.PREPARE\_SNAPSHOT](DB4AI-PREPARE_SNAPSHOT.md)** - -- **[DB4AI.PREPARE\_SNAPSHOT\_INTERNAL](DB4AI-PREPARE_SNAPSHOT_INTERNAL.md)** - -- **[DB4AI.ARCHIVE\_SNAPSHOT](DB4AI-ARCHIVE_SNAPSHOT.md)** - -- **[DB4AI.PUBLISH\_SNAPSHOT](DB4AI-PUBLISH_SNAPSHOT.md)** - -- **[DB4AI.MANAGE\_SNAPSHOT\_INTERNAL](DB4AI-MANAGE_SNAPSHOT_INTERNAL.md)** - -- **[DB4AI.SAMPLE\_SNAPSHOT](DB4AI-SAMPLE_SNAPSHOT.md)** - -- **[DB4AI.PURGE\_SNAPSHOT](DB4AI-PURGE_SNAPSHOT.md)** - -- **[DB4AI.PURGE\_SNAPSHOT\_INTERNAL](DB4AI-PURGE_SNAPSHOT_INTERNAL.md)** - - +# DB4AI Schema + +DB4AI 模式在 AI 特性中主要是用来存储和管理数据集版本。模式中保存数据表的原始视图快照,每一个数据版本的更改记录以及版本快照的管理信息。模式面向普通用户,用户可在该模式下查找特性DB4AI.SNAPSHOT创建的快照版本信息。 + +- **[DB4AI.SNAPSHOT](DB4AI-SNAPSHOT.md)** + +- **[DB4AI.CREATE\_SNAPSHOT](DB4AI-CREATE_SNAPSHOT.md)** + +- **[DB4AI.CREATE\_SNAPSHOT\_INTERNAL](DB4AI-CREATE_SNAPSHOT_INTERNAL.md)** + +- **[DB4AI.PREPARE\_SNAPSHOT](DB4AI-PREPARE_SNAPSHOT.md)** + +- **[DB4AI.PREPARE\_SNAPSHOT\_INTERNAL](DB4AI-PREPARE_SNAPSHOT_INTERNAL.md)** + +- **[DB4AI.ARCHIVE\_SNAPSHOT](DB4AI-ARCHIVE_SNAPSHOT.md)** + +- **[DB4AI.PUBLISH\_SNAPSHOT](DB4AI-PUBLISH_SNAPSHOT.md)** + +- **[DB4AI.MANAGE\_SNAPSHOT\_INTERNAL](DB4AI-MANAGE_SNAPSHOT_INTERNAL.md)** + +- **[DB4AI.SAMPLE\_SNAPSHOT](DB4AI-SAMPLE_SNAPSHOT.md)** + +- **[DB4AI.PURGE\_SNAPSHOT](DB4AI-PURGE_SNAPSHOT.md)** + +- **[DB4AI.PURGE\_SNAPSHOT\_INTERNAL](DB4AI-PURGE_SNAPSHOT_INTERNAL.md)** + + diff --git "a/content/zh/docs/Developerguide/DB4AI-Snapshots\346\225\260\346\215\256\347\211\210\346\234\254\347\256\241\347\220\206.md" "b/content/zh/docs/Developerguide/DB4AI-Snapshots\346\225\260\346\215\256\347\211\210\346\234\254\347\256\241\347\220\206.md" index f91c93bd7..760d83f3e 100644 --- "a/content/zh/docs/Developerguide/DB4AI-Snapshots\346\225\260\346\215\256\347\211\210\346\234\254\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Developerguide/DB4AI-Snapshots\346\225\260\346\215\256\347\211\210\346\234\254\347\256\241\347\220\206.md" @@ -1,264 +1,264 @@ -# DB4AI-Snapshots数据版本管理 - -DB4AI-Snapshots是DB4AI模块用于管理数据集版本的功能。通过DB4AI-Snapshots组件,开发者可以简单、快速地进行特征筛选、类型转换等数据预处理操作,同时还可以像git一样对训练数据集进行版本控制。数据表快照创建成功后可以像视图一样进行使用,但是一经发布后,数据表快照便固化为不可变的静态数据,如需修改该数据表快照的内容,需要创建一个版本号不同的新数据表快照。 - -## DB4AI-Snapshots的生命周期 - -DB4AI-Snapshots的状态包括published、archived以及purged。其中,published可以用于标记该DB4AI-Snapshots已经发布,可以进行使用。archived表示当前 DB4AI-Snapshots 处于“存档期”,一般不进行新模型的训练,而是利用旧数据对新的模型进行验证。purged则是该DB4AI-Snapshots 已经被删除的状态,在数据库系统中无法再检索到。 - -需要注意的是快照管理功能是为了给用户提供统一的训练数据,不同团队成员可以使用给定的训练数据来重新训练机器学习模型,方便用户间协同。为此**私有用户**和**三权分立**状态(enableSeparationOfDuty=ON)等涉及不支持用户数据转写等情况将不支持Snapshot特性。 - -用户可以通过“CREATE SNAPSHOT”语句创建数据表快照,创建好的快照默认即为published状态。可以采用两种模式创建数据表快照,即为MSS以及CSS模式,它们可以通过GUC参数db4ai\_snapshot\_mode进行配置。对于MSS模式,它是采用物化算法进行实现的,存储了原始数据集的数据实体;CSS则是基于相对计算算法实现的,存储的是数据的增量信息。数据表快照的元信息存储在DB4AI的系统目录中。可以通过db4ai.snapshot 系统表查看到。 - -可以通过“ARCHIVE SNAPSHOT”语句将某一个数据表快照标记为archived状态,可以通过“PUBLISH SNAPSHOT”语句将其再度标记为published状态。标记数据表快照的状态,是为了帮助数据科学家进行团队合作使用的。 - -当一个数据表快照已经丧失存在价值时,可以通过“PURGE SNAPSHOT”语句删除它,以便永久删除其数据并恢复存储空间。 - -## DB4AI-Snapshots使用指导 - -1. 创建表以及插入表数据。 - - 数据库内存在已有的数据表,可根据该已有的数据表创建对应的数据表快照。为了后续演示,在此处新建一个名为 t1 的数据表,并向其中插入测试数据。 - - ``` - create table t1 (id int, name varchar); - insert into t1 values (1, 'zhangsan'); - insert into t1 values (2, 'lisi'); - insert into t1 values (3, 'wangwu'); - insert into t1 values (4, 'lisa'); - insert into t1 values (5, 'jack'); - ``` - - 通过SQL语句,查询搭配数据表内容。 - - ``` - SELECT * FROM t1; - id | name - ----+---------- - 1 | zhangsan - 2 | lisi - 3 | wangwu - 4 | lisa - 5 | jack - (5 rows) - ``` - -2. 使用DB4AI-Snapshots。 - - 创建DB4AI-Snapshots - - - 示例1:CREATE SNAPSHOT…AS - - 示例如下,其中,默认版本分隔符为 “@”, 默认子版本分割符为 “.”,该分割符可以分别通过GUC参数db4ai\_snapshot\_version\_delimiter以及db4ai\_snapshot\_version\_separator进行设置。 - - ``` - create snapshot s1@1.0 comment is 'first version' as select * from t1; - schema | name - --------+-------- - public | s1@1.0 - (1 row) - ``` - - 上述结果提示已经创建了数据表 s1的快照,版本号为 1.0。创建好后的数据表快照可以像使用一般视图一样进行查询,但不支持通过“INSERT INTO”语句进行更新。例如下面几种语句都可以查询到数据表快照s1的对应版本1.0的内容: - - ``` - SELECT * FROM s1@1.0; - SELECT * FROM public.s1@1.0; - SELECT * FROM public . s1 @ 1.0; - id | name - ----+---------- - 1 | zhangsan - 2 | lisi - 3 | wangwu - 4 | lisa - 5 | jack - (5 rows) - ``` - - 可以通过下列SQL语句修改数据表t1的内容: - - ``` - UPDATE t1 SET name = 'tom' where id = 4; - insert into t1 values (6, 'john'); - insert into t1 values (7, 'tim'); - ``` - - 再检索数据表t1的内容时,发现虽然数据表t1的内容已经发生变化,但是数据表快照 s1@1.0 版本的查询结果并未发生变化。由于数据表t1的数据已经发生了改变,如果将当前数据表的内容作为版本2.0,则可创建快照**s1@2.0**,创建的SQL语句如下: - - ``` - create snapshot s1@2.0 as select * from t1; - ``` - - 通过上述例子,我们可以发现,数据表快照可以固化数据表的内容,避免中途对数据的改动造成机器学习模型训练时的不稳定,同时可以避免多用户同时访问、修改同一个表时造成的锁冲突。 - - - - 示例2:CREATE SNAPSHOT…FROM - - SQL语句可以对一个已经创建好的数据表快照进行继承,利用在此基础上进行的数据修改产生一个新的数据表快照。例如: - - ``` - create snapshot s1@3.0 from @1.0 comment is 'inherits from @1.0' using (INSERT VALUES(6, 'john'), (7, 'tim'); DELETE WHERE id = 1); - schema | name - --------+-------- - public | s1@3.0 - (1 row) - ``` - - 其中,“@”为数据表快照的版本分隔符,from子句后加上已存在的数据表快照,用法为“@”+版本号,USING关键字后加入可选的几个操作关键字(INSERT …/UPDATE …/DELETE …/ALTER …),其中 “INSERT INTO”以及“DELETE FROM”语句中的“INTO”、“FROM”等与数据表快照名字相关联的子句可以省略,具体可以参考[AI特性函数](AI特性函数.md)。 - - 示例中,基于前述s1@1.0快照,插入2条数据,删除1条新的数据,新生成的快照s1@3.0,检索该s1@3.0: - - ``` - SELECT * FROM s1@3.0; - id | name - ----+---------- - 2 | lisi - 3 | wangwu - 4 | lisa - 5 | jack - 6 | john - 7 | tim - (7 rows) - ``` - - - - - 删除数据表快照SNAPSHOT - - ``` - purge snapshot s1@3.0; - schema | name - --------+-------- - public | s1@3.0 - (1 row) - ``` - - 此时,已经无法再从s1@3.0 中检索到数据了,同时该数据表快照在db4ai.snapshot视图中的记录也会被清除。删除该版本的数据表快照不会影响其他版本的数据表快照。 - - - - 从数据表快照中采样 - - 示例:从snapshot s1中抽取数据,使用0.5抽样率。 - - ``` - sample snapshot s1@2.0 stratify by name as nick at ratio .5; - schema | name - --------+------------ - public | s1nick@2.0 - (1 row) - ``` - - 可以利用该功能创建训练集与测试集,例如: - - ``` - SAMPLE SNAPSHOT s1@2.0 STRATIFY BY name AS _test AT RATIO .2, AS _train AT RATIO .8 COMMENT IS 'training'; - schema | name - --------+---------------- - public | s1_test@2.0 - public | s1_train@2.0 - (2 rows) - ``` - - - - 发布数据表快照 - - 采用下述SQL语句将数据表快照 s1@2.0 标记为published 状态: - - ``` - publish snapshot s1@2.0; - schema | name - --------+-------- - public | s1@2.0 - (1 row) - ``` - - - - 存档数据表快照 - - 采用下述语句可以将数据表快照标记为 archived 状态: - - ``` - archive snapshot s1@2.0; - schema | name - --------+-------- - public | s1@2.0 - (1 row) - ``` - - 可以通过db4ai-snapshots提供的视图查看当前数据表快照的状态以及其他信息: - - ``` - select * from db4ai.snapshot; - id | parent_id | matrix_id | root_id | schema | name | owner | commands | comment | published | archived | created | row_count - ----+-----------+-----------+---------+--------+------------+--------+------------------------------------------+---------+-----------+----------+----------------------------+----------- - 1 | | | 1 | public | s1@2.0 | omm | {"select *","from t1 where id > 3",NULL} | | t | f | 2021-04-17 09:24:11.139868 | 2 - 2 | 1 | | 1 | public | s1nick@2.0 | omm | {"SAMPLE nick .5 {name}"} | | f | f | 2021-04-17 10:02:31.73923 | 0 - ``` - - -3. 异常场景。 - - 数据表或db4ai-snapshots不存在时。 - - ``` - purge snapshot s1nick@2.0; - publish snapshot s1nick@2.0; - --------- - ERROR: snapshot public."s1nick@2.0" does not exist - CONTEXT: PL/pgSQL function db4ai.publish_snapshot(name,name) line 11 at assignment - - archive snapshot s1nick@2.0; - ---------- - ERROR: snapshot public."s1nick@2.0" does not exist - CONTEXT: PL/pgSQL function db4ai.archive_snapshot(name,name) line 11 at assignment - ``` - - - 删除snapshot时,有依赖该快照的其他snapshot,需先确保删除对本快照所依赖的其他快照。 - - ``` - purge snapshot s1@1.0; - ERROR: cannot purge root snapshot 'public."s1@1.0"' having dependent snapshots - HINT: purge all dependent snapshots first - CONTEXT: referenced column: purge_snapshot_internal - SQL statement "SELECT db4ai.purge_snapshot_internal(i_schema, i_name)" - PL/pgSQL function db4ai.purge_snapshot(name,name) line 71 at PERFORM - ``` - - -4. 相关GUC参数。 - - db4ai\_snapshot\_mode: - - Snapshot有2种模式:MSS(物化模式,存储数据实体)和CSS(计算模式,存储增量信息)。Snapshot可在MSS和CSS之间切换快照模式,默认是MSS模式。 - - - db4ai\_snapshot\_version\_delimiter: - - 该参数为数据表快照版本分隔符。“@”为数据表快照的默认版本分隔符。 - - - db4ai\_snapshot\_version\_separator: - - 该参数为数据表快照子版本分隔符。“.”为数据表快照的默认版本分隔符。 - - -5. DB4AI Schema下的数据表快照详情db4ai.snapshot。 - - ``` - openGauss=# \d db4ai.snapshot - Table "db4ai.snapshot" - Column | Type | Modifiers - -----------+-----------------------------+--------------------------- - id | bigint | - parent_id | bigint | - matrix_id | bigint | - root_id | bigint | - schema | name | not null - name | name | not null - owner | name | not null - commands | text[] | not null - comment | text | - published | boolean | not null default false - archived | boolean | not null default false - created | timestamp without time zone | default pg_systimestamp() - row_count | bigint | not null - Indexes: - "snapshot_pkey" PRIMARY KEY, btree (schema, name) TABLESPACE pg_default - "snapshot_id_key" UNIQUE CONSTRAINT, btree (id) TABLESPACE pg_default - ``` - +# DB4AI-Snapshots数据版本管理 + +DB4AI-Snapshots是 DB4AI 模块用于管理数据集版本的功能。通过DB4AI-Snapshots组件,开发者可以简单、快速地进行特征筛选、类型转换等数据预处理操作,同时还可以像 git 一样对训练数据集进行版本控制。数据表快照创建成功后可以像视图一样进行使用,但是一经发布后,数据表快照便固化为不可变的静态数据,如需修改该数据表快照的内容,需要创建一个版本号不同的新数据表快照。 + +## DB4AI-Snapshots的生命周期 + +DB4AI-Snapshots的状态包括published、archived以及 purged 。其中, published 可以用于标记该DB4AI-Snapshots已经发布,可以进行使用。 archived 表示当前 DB4AI-Snapshots 处于“存档期”,一般不进行新模型的训练,而是利用旧数据对新的模型进行验证。 purged 则是该DB4AI-Snapshots 已经被删除的状态,在数据库系统中无法再检索到。 + +需要注意的是快照管理功能是为了给用户提供统一的训练数据,不同团队成员可以使用给定的训练数据来重新训练机器学习模型,方便用户间协同。为此**私有用户**和**三权分立**状态(enableSeparationOfDuty=ON)等涉及不支持用户数据转写等情况将不支持 Snapshot 特性。 + +用户可以通过“CREATE SNAPSHOT”语句创建数据表快照,创建好的快照默认即为 published 状态。可以采用两种模式创建数据表快照,即为 MSS 以及 CSS 模式,它们可以通过 GUC 参数db4ai\_snapshot\_mode进行配置。对于 MSS 模式,它是采用物化算法进行实现的,存储了原始数据集的数据实体;CSS则是基于相对计算算法实现的,存储的是数据的增量信息。数据表快照的元信息存储在 DB4AI 的系统目录中。可以通过db4ai.snapshot 系统表查看到。 + +可以通过“ARCHIVE SNAPSHOT”语句将某一个数据表快照标记为 archived 状态,可以通过“PUBLISH SNAPSHOT”语句将其再度标记为 published 状态。标记数据表快照的状态,是为了帮助数据科学家进行团队合作使用的。 + +当一个数据表快照已经丧失存在价值时,可以通过“PURGE SNAPSHOT”语句删除它,以便永久删除其数据并恢复存储空间。 + +## DB4AI-Snapshots使用指导 + +1. 创建表以及插入表数据。 + + 数据库内存在已有的数据表,可根据该已有的数据表创建对应的数据表快照。为了后续演示,在此处新建一个名为 t1 的数据表,并向其中插入测试数据。 + + ``` + create table t1 (id int, name varchar); + insert into t1 values (1, 'zhangsan'); + insert into t1 values (2, 'lisi'); + insert into t1 values (3, 'wangwu'); + insert into t1 values (4, 'lisa'); + insert into t1 values (5, 'jack'); + ``` + + 通过 SQL 语句,查询搭配数据表内容。 + + ``` + SELECT * FROM t1; + id | name + ----+---------- + 1 | zhangsan + 2 | lisi + 3 | wangwu + 4 | lisa + 5 | jack + (5 rows) + ``` + +2. 使用DB4AI-Snapshots。 + - 创建DB4AI-Snapshots + + - 示例1:CREATE SNAPSHOT…AS + + 示例如下,其中,默认版本分隔符为 “@”, 默认子版本分割符为 “.”,该分割符可以分别通过 GUC 参数db4ai\_snapshot\_version\_delimiter以及db4ai\_snapshot\_version\_separator进行设置。 + + ``` + create snapshot s1@1.0 comment is 'first version' as select * from t1; + schema | name + --------+-------- + public | s1@1.0 + (1 row) + ``` + + 上述结果提示已经创建了数据表 s1 的快照,版本号为 1.0。创建好后的数据表快照可以像使用一般视图一样进行查询,但不支持通过“INSERT INTO”语句进行更新。例如下面几种语句都可以查询到数据表快照 s1 的对应版本1.0的内容: + + ``` + SELECT * FROM s1@1.0; + SELECT * FROM public.s1@1.0; + SELECT * FROM public . s1 @ 1.0; + id | name + ----+---------- + 1 | zhangsan + 2 | lisi + 3 | wangwu + 4 | lisa + 5 | jack + (5 rows) + ``` + + 可以通过下列 SQL 语句修改数据表 t1 的内容: + + ``` + UPDATE t1 SET name = 'tom' where id = 4; + insert into t1 values (6, 'john'); + insert into t1 values (7, 'tim'); + ``` + + 再检索数据表 t1 的内容时,发现虽然数据表 t1 的内容已经发生变化,但是数据表快照 s1@1.0 版本的查询结果并未发生变化。由于数据表 t1 的数据已经发生了改变,如果将当前数据表的内容作为版本2.0,则可创建快照**s1@2.0**,创建的 SQL 语句如下: + + ``` + create snapshot s1@2.0 as select * from t1; + ``` + + 通过上述例子,我们可以发现,数据表快照可以固化数据表的内容,避免中途对数据的改动造成机器学习模型训练时的不稳定,同时可以避免多用户同时访问、修改同一个表时造成的锁冲突。 + + + - 示例2:CREATE SNAPSHOT…FROM + +SQL 语句可以对一个已经创建好的数据表快照进行继承,利用在此基础上进行的数据修改产生一个新的数据表快照。例如: + + ``` + create snapshot s1@3.0 from @1.0 comment is 'inherits from @1.0' using (INSERT VALUES(6, 'john'), (7, 'tim'); DELETE WHERE id = 1); + schema | name + --------+-------- + public | s1@3.0 + (1 row) + ``` + + 其中,“@”为数据表快照的版本分隔符, from 子句后加上已存在的数据表快照,用法为“@”+版本号, USING 关键字后加入可选的几个操作关键字(INSERT …/UPDATE …/DELETE …/ALTER …),其中 “INSERT INTO”以及“DELETE FROM”语句中的“INTO”、“FROM”等与数据表快照名字相关联的子句可以省略,具体可以参考[AI特性函数](AI特性函数.md)。 + + 示例中,基于前述s1@1.0快照,插入 2 条数据,删除 1 条新的数据,新生成的快照s1@3.0,检索该s1@3.0: + + ``` + SELECT * FROM s1@3.0; + id | name + ----+---------- + 2 | lisi + 3 | wangwu + 4 | lisa + 5 | jack + 6 | john + 7 | tim + (7 rows) + ``` + + + + - 删除数据表快照SNAPSHOT + + ``` + purge snapshot s1@3.0; + schema | name + --------+-------- + public | s1@3.0 + (1 row) + ``` + + 此时,已经无法再从s1@3.0 中检索到数据了,同时该数据表快照在db4ai.snapshot视图中的记录也会被清除。删除该版本的数据表快照不会影响其他版本的数据表快照。 + + + - 从数据表快照中采样 + + 示例:从 snapshot s1 中抽取数据,使用0.5抽样率。 + + ``` + sample snapshot s1@2.0 stratify by name as nick at ratio .5; + schema | name + --------+------------ + public | s1nick@2.0 + (1 row) + ``` + + 可以利用该功能创建训练集与测试集,例如: + + ``` + SAMPLE SNAPSHOT s1@2.0 STRATIFY BY name AS _test AT RATIO .2, AS _train AT RATIO .8 COMMENT IS 'training'; + schema | name + --------+---------------- + public | s1_test@2.0 + public | s1_train@2.0 + (2 rows) + ``` + + + - 发布数据表快照 + + 采用下述 SQL 语句将数据表快照 s1@2.0 标记为 published 状态: + + ``` + publish snapshot s1@2.0; + schema | name + --------+-------- + public | s1@2.0 + (1 row) + ``` + + + - 存档数据表快照 + + 采用下述语句可以将数据表快照标记为 archived 状态: + + ``` + archive snapshot s1@2.0; + schema | name + --------+-------- + public | s1@2.0 + (1 row) + ``` + + 可以通过db4ai-snapshots提供的视图查看当前数据表快照的状态以及其他信息: + + ``` + select * from db4ai.snapshot; + id | parent_id | matrix_id | root_id | schema | name | owner | commands | comment | published | archived | created | row_count + ----+-----------+-----------+---------+--------+------------+--------+------------------------------------------+---------+-----------+----------+----------------------------+----------- + 1 | | | 1 | public | s1@2.0 | omm | {"select *","from t1 where id > 3",NULL} | | t | f | 2021-04-17 09:24:11.139868 | 2 + 2 | 1 | | 1 | public | s1nick@2.0 | omm | {"SAMPLE nick .5 {name}"} | | f | f | 2021-04-17 10:02:31.73923 | 0 + ``` + + +3. 异常场景。 + - 数据表或db4ai-snapshots不存在时。 + + ``` + purge snapshot s1nick@2.0; + publish snapshot s1nick@2.0; + --------- + ERROR: snapshot public."s1nick@2.0" does not exist + CONTEXT: PL/pgSQL function db4ai.publish_snapshot(name,name) line 11 at assignment + + archive snapshot s1nick@2.0; + ---------- + ERROR: snapshot public."s1nick@2.0" does not exist + CONTEXT: PL/pgSQL function db4ai.archive_snapshot(name,name) line 11 at assignment + ``` + + - 删除 snapshot 时,有依赖该快照的其他 snapshot ,需先确保删除对本快照所依赖的其他快照。 + + ``` + purge snapshot s1@1.0; + ERROR: cannot purge root snapshot 'public."s1@1.0"' having dependent snapshots + HINT: purge all dependent snapshots first + CONTEXT: referenced column: purge_snapshot_internal + SQL statement "SELECT db4ai.purge_snapshot_internal(i_schema, i_name)" + PL/pgSQL function db4ai.purge_snapshot(name,name) line 71 at PERFORM + ``` + + +4. 相关 GUC 参数。 + - db4ai\_snapshot\_mode: + +Snapshot 有 2 种模式:MSS(物化模式,存储数据实体)和CSS(计算模式,存储增量信息)。 Snapshot 可在 MSS 和 CSS 之间切换快照模式,默认是 MSS 模式。 + + - db4ai\_snapshot\_version\_delimiter: + + 该参数为数据表快照版本分隔符。“@”为数据表快照的默认版本分隔符。 + + - db4ai\_snapshot\_version\_separator: + + 该参数为数据表快照子版本分隔符。“.”为数据表快照的默认版本分隔符。 + + +5. DB4AI Schema下的数据表快照详情db4ai.snapshot。 + + ``` + openGauss=# \d db4ai.snapshot + Table "db4ai.snapshot" + Column | Type | Modifiers + -----------+-----------------------------+--------------------------- + id | bigint | + parent_id | bigint | + matrix_id | bigint | + root_id | bigint | + schema | name | not null + name | name | not null + owner | name | not null + commands | text[] | not null + comment | text | + published | boolean | not null default false + archived | boolean | not null default false + created | timestamp without time zone | default pg_systimestamp() + row_count | bigint | not null + Indexes: + "snapshot_pkey" PRIMARY KEY, btree (schema, name) TABLESPACE pg_default + "snapshot_id_key" UNIQUE CONSTRAINT, btree (id) TABLESPACE pg_default + ``` + diff --git "a/content/zh/docs/Developerguide/DB4AI-\346\225\260\346\215\256\345\272\223\345\216\237\347\224\237AI\345\274\225\346\223\216.md" "b/content/zh/docs/Developerguide/DB4AI-\346\225\260\346\215\256\345\272\223\345\216\237\347\224\237AI\345\274\225\346\223\216.md" index 020521cf5..46d0779e7 100644 --- "a/content/zh/docs/Developerguide/DB4AI-\346\225\260\346\215\256\345\272\223\345\216\237\347\224\237AI\345\274\225\346\223\216.md" +++ "b/content/zh/docs/Developerguide/DB4AI-\346\225\260\346\215\256\345\272\223\345\216\237\347\224\237AI\345\274\225\346\223\216.md" @@ -1,11 +1,11 @@ -# DB4AI:数据库原生AI引擎 - -DB4AI是指利用数据库的能力驱动AI任务,实现数据存储、技术栈的同构。通过在数据库内集成AI算法,令openGauss具备数据库原生AI计算引擎、模型管理、AI算子、AI原生执行计划的能力,为用户提供普惠AI技术。不同于传统的AI建模流程,DB4AI“一站式”建模可以解决数据在各平台的反复流转问题,同时简化开发流程,并可通过数据库规划出最优执行路径,让开发者更专注于具体业务和模型的调优上,具备同类产品不具备的易用性与性能优势。 - -- **[DB4AI-Snapshots数据版本管理](DB4AI-Snapshots数据版本管理.md)** - -- **[DB4AI-Query:模型训练和推断](DB4AI-Query-模型训练和推断.md)** - -- **[plpython-fenced模式](plpython-fenced模式.md)** - - +# DB4AI:数据库原生 AI 引擎 + +DB4AI 是指利用数据库的能力驱动 AI 任务,实现数据存储、技术栈的同构。通过在数据库内集成 AI 算法,令 openGauss 具备数据库原生 AI 计算引擎、模型管理、AI算子、AI原生执行计划的能力,为用户提供普惠 AI 技术。不同于传统的 AI 建模流程,DB4AI“一站式”建模可以解决数据在各平台的反复流转问题,同时简化开发流程,并可通过数据库规划出最优执行路径,让开发者更专注于具体业务和模型的调优上,具备同类产品不具备的易用性与性能优势。 + +- **[DB4AI-Snapshots数据版本管理](DB4AI-Snapshots数据版本管理.md)** + +- **[DB4AI-Query:模型训练和推断](DB4AI-Query-模型训练和推断.md)** + +- **[plpython-fenced模式](plpython-fenced模式.md)** + + diff --git a/content/zh/docs/Developerguide/DBE_PERF-Schema.md b/content/zh/docs/Developerguide/DBE_PERF-Schema.md index 9cf107681..b58437694 100644 --- a/content/zh/docs/Developerguide/DBE_PERF-Schema.md +++ b/content/zh/docs/Developerguide/DBE_PERF-Schema.md @@ -1,27 +1,27 @@ -# DBE\_PERF Schema - -DBE\_PERF Schema内视图主要用来诊断性能问题,也是WDR Snapshot的数据来源。数据库安装后,默认只有初始用户具有模式dbe\_perf的权限。若是由旧版本升级而来,为保持权限的前向兼容,模式dbe\_perf的权限与旧版本保持一致。从OS、Instance、Memory等多个维度划分组织视图,并且符合如下命名规范: - -- GLOBAL\_开头的视图,代表从数据库节点请求数据,并将数据追加对外返回,不会处理数据。 -- SUMMARY\_开头的视图,代表是将openGauss内的数据概述,多数情况下是返回数据库节点(有时只有数据库主节点的)的数据,会对数据进行加工和汇聚。 -- 非这两者开头的视图,一般代表本地视图,不会向其它数据库节点请求数据。 - -DBE\_PERF Schema内视图如下: - -- **[OS](OS.md)** -- **[Instance](Instance.md)** -- **[Memory](Memory.md)** -- **[File](File.md)** -- **[Object](Object.md)** -- **[Workload](Workload.md)** -- **[Session/Thread](Session-Thread.md)** -- **[Transaction](Transaction.md)** -- **[Query](Query.md)** -- **[Cache/IO](Cache-IO.md)** -- **[Utility](Utility.md)** -- **[Lock](LOCK.md)** -- **[Wait Events](Wait-Events.md)** -- **[Configuration](Configuration.md)** -- **[Operator](Operator.md)** -- **[Workload Manager](Workload-Manager.md)** - +# DBE\_PERF Schema + +DBE\_PERF Schema内视图主要用来诊断性能问题,也是 WDR Snapshot 的数据来源。数据库安装后,默认只有初始用户具有模式dbe\_perf的权限。若是由旧版本升级而来,为保持权限的前向兼容,模式dbe\_perf的权限与旧版本保持一致。从OS、Instance、Memory等多个维度划分组织视图,并且符合如下命名规范: + +- GLOBAL\_开头的视图,代表从数据库节点请求数据,并将数据追加对外返回,不会处理数据。 +- SUMMARY\_开头的视图,代表是将 openGauss 内的数据概述,多数情况下是返回数据库节点(有时只有数据库主节点的)的数据,会对数据进行加工和汇聚。 +- 非这两者开头的视图,一般代表本地视图,不会向其它数据库节点请求数据。 + +DBE\_PERF Schema内视图如下: + +- **[OS](OS.md)** +- **[Instance](Instance.md)** +- **[Memory](Memory.md)** +- **[File](File.md)** +- **[Object](Object.md)** +- **[Workload](Workload.md)** +- **[Session/Thread](Session-Thread.md)** +- **[Transaction](Transaction.md)** +- **[Query](Query.md)** +- **[Cache/IO](Cache-IO.md)** +- **[Utility](Utility.md)** +- **[Lock](LOCK.md)** +- **[Wait Events](Wait-Events.md)** +- **[Configuration](Configuration.md)** +- **[Operator](Operator.md)** +- **[Workload Manager](Workload-Manager.md)** + diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-Schema.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-Schema.md index 20507cb2b..9583bf40e 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-Schema.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-Schema.md @@ -1,210 +1,210 @@ -# DBE\_PLDEBUGGER Schema - -DBE\_PLDEBUGGER下系统函数用于单机下调试存储过程,目前支持的接口及其描述如下所示。仅管理员有权限执行这些调试接口。 - ->![](public_sys-resources/icon-notice.gif) **须知:** ->当在函数体中创建用户时,调用attach、next、continue、 info\_code、step、info\_breakpoint、backtrace、 finish中会返回密码的明文。因此不建议用户在函数体中创建用户。 - -对应权限角色为gs\_role\_pldebugger,可以由管理员用户通过如下命令将debugger权限赋权给该用户。 - -``` -GRANT gs_role_pldebugger to user; -``` - -需要有两个客户端连接数据库,一个客户端负责执行调试接口作为debug端,另一个客户端执行调试函数,控制server端存储过程执行。示例如下。 - -- 准备调试 - - 通过PG\_PROC,查找到待调试存储过程的oid,并执行DBE\_PLDEBUGGER.turn\_on\(oid\)。本客户端就会作为server端使用。 - - ``` - openGauss=# CREATE OR REPLACE PROCEDURE test_debug ( IN x INT) - AS - BEGIN - INSERT INTO t1 (a) VALUES (x); - END; - / - CREATE PROCEDURE - openGauss=# SELECT OID FROM PG_PROC WHERE PRONAME='test_debug'; - oid - ------- - 16389 - (1 row) - openGauss=# SELECT * FROM DBE_PLDEBUGGER.turn_on(16389); - nodename | port - ----------+------ - datanode | 0 - (1 row) - ``` - - -- 开始调试 - - server端执行存储过程,会在存储过程内第一条SQL语句前hang住,等待debug端发送的调试消息。仅支持直接执行存储过程的调试,不支持通过trigger调用执行的存储过程调试。 - - ``` - openGauss=# call test_debug(1); - ``` - - 再起一个客户端,作为debug端,通过turn\_on返回的数据,调用DBE\_PLDEBUGGER.attach关联到该存储过程上进行调试。 - - ``` - openGauss=# SELECT * FROM DBE_PLDEBUGGER.attach('datanode',0); - funcoid | funcname | lineno | query - ---------+------------+--------+---------------------------------- - 16389 | test_debug | 3 | INSERT INTO t1 (a) VALUES (x); - (1 row) - ``` - - 在执行attach的客户端调试,执行下一条statement。 - - ``` - openGauss=# SELECT * FROM DBE_PLDEBUGGER.next(); - funcoid | funcname | lineno | query - ---------+------------+--------+---------------------- - 16389 | test_debug | 0 | [EXECUTION FINISHED] - (1 row) - ``` - - 在执行attach的客户端调试,将当前所有变量输出。 - - ``` - openGauss=# SELECT * FROM DBE_PLDEBUGGER.info_locals(); - varname | vartype | value | package_name - ---------+---------+-------+-------------- - $1 | int4 | 1 | - (1 row) - ``` - - 直接执行完成当前正在调试的存储过程。 - - ``` - openGauss=# SELECT * FROM DBE_PLDEBUGGER.continue(); - funcoid | funcname | lineno | query - ---------+------------+--------+---------------------- - 16389 | test_debug | 0 | [EXECUTION FINISHED] - (1 row) - ``` - - 直接退出当前正在调试的存储过程,不执行尚未执行的语句。 - - ``` - openGauss=# SELECT * FROM DBE_PLDEBUGGER.abort(); - abort - ------- - t - (1 row) - ``` - - 存储过程执行结束后,调试会自动退出,再进行调试需要重新attach关联。如果server端不需要继续调试,可执行turn\_off关闭,或退出session。具体调试接口请见下面列表。 - - **表 1** DBE\_PLDEBUGGER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

接口名称

-

描述

-

DBE_PLDEBUGGER.turn_on

-

server端调用,标记存储过程可以调试,调用后执行该存储过程时会hang住等待调试信息。

-

DBE_PLDEBUGGER.turn_off

-

server端调用,标记存储过程关闭调试。

-

DBE_PLDEBUGGER.local_debug_server_info

-

server端调用,打印本session内所有已turn_on的存储过程。

-

DBE_PLDEBUGGER.attach

-

debug端调用,关联到正在调试存储过程。

-

DBE_PLDEBUGGER.info_locals

-

debug端调用,打印正在调试的存储过程中的变量当前值。

-

DBE_PLDEBUGGER.next

-

debug端调用,单步执行。

-

DBE_PLDEBUGGER.continue

-

debug端调用,继续执行,直到断点或存储过程结束。

-

DBE_PLDEBUGGER.abort

-

debug端调用,停止调试,server端报错长跳转。

-

DBE_PLDEBUGGER.print_var

-

debug端调用,打印正在调试的存储过程中指定的变量当前值。

-

DBE_PLDEBUGGER.info_code

-

debug和server端都可以调用,打印指定存储过程的源语句和各行对应的行号。

-

DBE_PLDEBUGGER.step

-

debug端调用,单步进入执行。

-

DBE_PLDEBUGGER.add_breakpoint

-

debug端调用,新增断点。

-

DBE_PLDEBUGGER.delete_breakpoint

-

debug端调用,删除断点。

-

DBE_PLDEBUGGER.info_breakpoints

-

debug端调用,查看当前的所有断点。

-

DBE_PLDEBUGGER.backtrace

-

debug端调用,查看当前的调用栈。

-

DBE_PLDEBUGGER.enable_breakpoint

-

debug端调用,激活被禁用的断点。

-

DBE_PLDEBUGGER.disable_breakpoint

-

debug端调用,禁用已激活的断点。

-

DBE_PLDEBUGGER.finish

-

debug端调用,继续调试,直到断点或返回上一层调用栈。

-

DBE_PLDEBUGGER.set_var

-

debug端调用,为变量进行赋值操作。

-
- - - - +# DBE\_PLDEBUGGER Schema + +DBE\_PLDEBUGGER下系统函数用于单机下调试存储过程,目前支持的接口及其描述如下所示。仅管理员有权限执行这些调试接口。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>当在函数体中创建用户时,调用attach、next、continue、 info\_code、step、info\_breakpoint、backtrace、 finish中会返回密码的明文。因此不建议用户在函数体中创建用户。 + +对应权限角色为gs\_role\_pldebugger,可以由管理员用户通过如下命令将 debugger 权限赋权给该用户。 + +``` +GRANT gs_role_pldebugger to user; +``` + +需要有两个客户端连接数据库,一个客户端负责执行调试接口作为 debug 端,另一个客户端执行调试函数,控制 server 端存储过程执行。示例如下。 + +- 准备调试 + + 通过PG\_PROC,查找到待调试存储过程的 oid ,并执行DBE\_PLDEBUGGER.turn\_on\(oid\)。本客户端就会作为 server 端使用。 + + ``` + openGauss=# CREATE OR REPLACE PROCEDURE test_debug ( IN x INT) + AS + BEGIN + INSERT INTO t1 (a) VALUES (x); + END; + / + CREATE PROCEDURE + openGauss=# SELECT OID FROM PG_PROC WHERE PRONAME='test_debug'; + oid + ------- + 16389 + (1 row) + openGauss=# SELECT * FROM DBE_PLDEBUGGER.turn_on(16389); + nodename | port + ----------+------ + datanode | 0 + (1 row) + ``` + + +- 开始调试 + +server 端执行存储过程,会在存储过程内第一条 SQL 语句前 hang 住,等待 debug 端发送的调试消息。仅支持直接执行存储过程的调试,不支持通过 trigger 调用执行的存储过程调试。 + + ``` + openGauss=# call test_debug(1); + ``` + + 再起一个客户端,作为 debug 端,通过turn\_on返回的数据,调用DBE\_PLDEBUGGER.attach关联到该存储过程上进行调试。 + + ``` + openGauss=# SELECT * FROM DBE_PLDEBUGGER.attach('datanode',0); + funcoid | funcname | lineno | query + ---------+------------+--------+---------------------------------- + 16389 | test_debug | 3 | INSERT INTO t1 (a) VALUES (x); + (1 row) + ``` + + 在执行 attach 的客户端调试,执行下一条 statement 。 + + ``` + openGauss=# SELECT * FROM DBE_PLDEBUGGER.next(); + funcoid | funcname | lineno | query + ---------+------------+--------+---------------------- + 16389 | test_debug | 0 | [EXECUTION FINISHED] + (1 row) + ``` + + 在执行 attach 的客户端调试,将当前所有变量输出。 + + ``` + openGauss=# SELECT * FROM DBE_PLDEBUGGER.info_locals(); + varname | vartype | value | package_name + ---------+---------+-------+-------------- + $1 | int4 | 1 | + (1 row) + ``` + + 直接执行完成当前正在调试的存储过程。 + + ``` + openGauss=# SELECT * FROM DBE_PLDEBUGGER.continue(); + funcoid | funcname | lineno | query + ---------+------------+--------+---------------------- + 16389 | test_debug | 0 | [EXECUTION FINISHED] + (1 row) + ``` + + 直接退出当前正在调试的存储过程,不执行尚未执行的语句。 + + ``` + openGauss=# SELECT * FROM DBE_PLDEBUGGER.abort(); + abort + ------- + t + (1 row) + ``` + + 存储过程执行结束后,调试会自动退出,再进行调试需要重新 attach 关联。如果 server 端不需要继续调试,可执行turn\_off关闭,或退出 session 。具体调试接口请见下面列表。 + + **表 1** DBE\_PLDEBUGGER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

接口名称

+

描述

+

DBE_PLDEBUGGER.turn_on

+

server端调用,标记存储过程可以调试,调用后执行该存储过程时会 hang 住等待调试信息。

+

DBE_PLDEBUGGER.turn_off

+

server端调用,标记存储过程关闭调试。

+

DBE_PLDEBUGGER.local_debug_server_info

+

server端调用,打印本 session 内所有已 turn_on 的存储过程。

+

DBE_PLDEBUGGER.attach

+

debug端调用,关联到正在调试存储过程。

+

DBE_PLDEBUGGER.info_locals

+

debug端调用,打印正在调试的存储过程中的变量当前值。

+

DBE_PLDEBUGGER.next

+

debug端调用,单步执行。

+

DBE_PLDEBUGGER.continue

+

debug端调用,继续执行,直到断点或存储过程结束。

+

DBE_PLDEBUGGER.abort

+

debug端调用,停止调试, server 端报错长跳转。

+

DBE_PLDEBUGGER.print_var

+

debug端调用,打印正在调试的存储过程中指定的变量当前值。

+

DBE_PLDEBUGGER.info_code

+

debug和 server 端都可以调用,打印指定存储过程的源语句和各行对应的行号。

+

DBE_PLDEBUGGER.step

+

debug端调用,单步进入执行。

+

DBE_PLDEBUGGER.add_breakpoint

+

debug端调用,新增断点。

+

DBE_PLDEBUGGER.delete_breakpoint

+

debug端调用,删除断点。

+

DBE_PLDEBUGGER.info_breakpoints

+

debug端调用,查看当前的所有断点。

+

DBE_PLDEBUGGER.backtrace

+

debug端调用,查看当前的调用栈。

+

DBE_PLDEBUGGER.enable_breakpoint

+

debug端调用,激活被禁用的断点。

+

DBE_PLDEBUGGER.disable_breakpoint

+

debug端调用,禁用已激活的断点。

+

DBE_PLDEBUGGER.finish

+

debug端调用,继续调试,直到断点或返回上一层调用栈。

+

DBE_PLDEBUGGER.set_var

+

debug端调用,为变量进行赋值操作。

+
+ + + + diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-abort.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-abort.md index 61b3dcf90..24afceca7 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-abort.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-abort.md @@ -1,32 +1,32 @@ -# DBE\_PLDEBUGGER.abort - -令server端执行的存储过程报错跳出。返回值表示是否成功发送abort。 - -函数原型为: - -``` -DBE_PLDEBUGGER.abort() -RETURN boolean; -``` - -**表 1** abort 返回值列表 - - - - - - - - - - - - -

名称

-

类型

-

描述

-

abort

-

OUT boolean

-

表示成功或失败。

-
- +# DBE\_PLDEBUGGER.abort + +令 server 端执行的存储过程报错跳出。返回值表示是否成功发送 abort 。 + +函数原型为: + +``` +DBE_PLDEBUGGER.abort() +RETURN boolean; +``` + +**表 1** abort 返回值列表 + + + + + + + + + + + + +

名称

+

类型

+

描述

+

abort

+

OUT boolean

+

表示成功或失败。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-add_breakpoint.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-add_breakpoint.md index 757044634..2b81b701b 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-add_breakpoint.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-add_breakpoint.md @@ -1,39 +1,39 @@ -# DBE\_PLDEBUGGER.add\_breakpoint - -debug端调试过程中,调用add\_breakpoint增加新的断点。如果返回-1则说明指定的断点不合法,请参考[DBE\_PLDEBUGGER.info\_code](DBE_PLDEBUGGER-info_code.md)的canbreak字段确定断点合适的位置。 - -**表 1** add\_breakpoint入参和返回值列表 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

funcoid

-

IN text

-

函数ID。

-

lineno

-

IN integer

-

行号。

-

breakpointno

-

OUT integer

-

断点编号。

-
- +# DBE\_PLDEBUGGER.add\_breakpoint + +debug 端调试过程中,调用add\_breakpoint增加新的断点。如果返回-1则说明指定的断点不合法,请参考[DBE\_PLDEBUGGER.info\_code](DBE_PLDEBUGGER-info_code.md)的 canbreak 字段确定断点合适的位置。 + +**表 1** add\_breakpoint入参和返回值列表 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

funcoid

+

IN text

+

函数 ID 。

+

lineno

+

IN integer

+

行号。

+

breakpointno

+

OUT integer

+

断点编号。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-attach.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-attach.md index a9cc2c5a2..88fc40184 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-attach.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-attach.md @@ -1,62 +1,62 @@ -# DBE\_PLDEBUGGER.attach - -server端执行存储过程,停在第一条语句前,等待debug端关联。debug端调用attach,传入nodename和port,关联到该存储过程上。 - -如果调试过程中报错,attach会自动失效;如果调试过程中attach到其他存储过程上,当前attach的调试也会失效。 - -**表 1** attach 入参和返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

nodename

-

IN text

-

节点名称。

-

port

-

IN integer

-

连接端口号。

-

funcoid

-

OUT oid

-

函数id。

-

funcname

-

OUT text

-

函数名。

-

lineno

-

OUT integer

-

当前调试运行的下一行行号。

-

query

-

OUT text

-

当前调试的下一行函数源码。

-
- +# DBE\_PLDEBUGGER.attach + +server 端执行存储过程,停在第一条语句前,等待 debug 端关联。 debug 端调用 attach ,传入 nodename 和 port ,关联到该存储过程上。 + +如果调试过程中报错, attach 会自动失效;如果调试过程中 attach 到其他存储过程上,当前 attach 的调试也会失效。 + +**表 1** attach 入参和返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

IN text

+

节点名称。

+

port

+

IN integer

+

连接端口号。

+

funcoid

+

OUT oid

+

函数 id 。

+

funcname

+

OUT text

+

函数名。

+

lineno

+

OUT integer

+

当前调试运行的下一行行号。

+

query

+

OUT text

+

当前调试的下一行函数源码。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-backtrace.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-backtrace.md index 078db0d8a..6b214fb53 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-backtrace.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-backtrace.md @@ -1,53 +1,53 @@ -# DBE\_PLDEBUGGER.backtrace - -debug端调试过程中,调用backtrace,查看当前的调用堆栈。 - -**表 1** backtrace返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

frameno

-

OUT integer

-

调用栈编号。

-

funcname

-

OUT oid

-

函数名。

-

lineno

-

OUT integer

-

行号。

-

query

-

OUT text

-

断点内容。

-

funcoid

-

OUT oid

-

函数oid。

-
- +# DBE\_PLDEBUGGER.backtrace + +debug 端调试过程中,调用 backtrace ,查看当前的调用堆栈。 + +**表 1** backtrace返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

frameno

+

OUT integer

+

调用栈编号。

+

funcname

+

OUT oid

+

函数名。

+

lineno

+

OUT integer

+

行号。

+

query

+

OUT text

+

断点内容。

+

funcoid

+

OUT oid

+

函数 oid 。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-continue.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-continue.md index 2af56e901..1c25f07c7 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-continue.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-continue.md @@ -1,53 +1,53 @@ -# DBE\_PLDEBUGGER.continue - -执行当前存储过程,直到下一个断点或结束。返回值表示执行的下一条的行数和对应query。 - -函数原型为: - -``` -DBE_PLDEBUGGER.continue() -RETURN Record; -``` - -**表 1** continue 返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

funcoid

-

OUT oid

-

函数id。

-

funcname

-

OUT text

-

函数名。

-

lineno

-

OUT integer

-

当前调试运行的下一行行号。

-

query

-

OUT text

-

当前调试的下一行函数源码。

-
- +# DBE\_PLDEBUGGER.continue + +执行当前存储过程,直到下一个断点或结束。返回值表示执行的下一条的行数和对应 query 。 + +函数原型为: + +``` +DBE_PLDEBUGGER.continue() +RETURN Record; +``` + +**表 1** continue 返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

funcoid

+

OUT oid

+

函数 id 。

+

funcname

+

OUT text

+

函数名。

+

lineno

+

OUT integer

+

当前调试运行的下一行行号。

+

query

+

OUT text

+

当前调试的下一行函数源码。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-delete_breakpoint.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-delete_breakpoint.md index 1d7b36337..d338e1675 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-delete_breakpoint.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-delete_breakpoint.md @@ -1,32 +1,32 @@ -# DBE\_PLDEBUGGER.delete\_breakpoint - -debug端调试过程中,调用delete\_breakpoint删除已有的断点。 - -**表 1** delete\_breakpoint入参和返回值列表 - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

breakpointno

-

IN integer

-

断点编号。

-

result

-

OUT bool

-

是否成功。

-
- +# DBE\_PLDEBUGGER.delete\_breakpoint + +debug 端调试过程中,调用delete\_breakpoint删除已有的断点。 + +**表 1** delete\_breakpoint入参和返回值列表 + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

breakpointno

+

IN integer

+

断点编号。

+

result

+

OUT bool

+

是否成功。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-disable_breakpoint.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-disable_breakpoint.md index 7e63498d6..9420aea14 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-disable_breakpoint.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-disable_breakpoint.md @@ -1,32 +1,32 @@ -# DBE\_PLDEBUGGER.disable\_breakpoint - -debug端调试过程中,调用disable\_breakpoint禁用已被激活的断点。 - -**表 1** disable\_breakpoint入参和返回值列表 - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

breakpointno

-

IN integer

-

断点编号

-

result

-

OUT bool

-

是否成功

-
- +# DBE\_PLDEBUGGER.disable\_breakpoint + +debug 端调试过程中,调用disable\_breakpoint禁用已被激活的断点。 + +**表 1** disable\_breakpoint入参和返回值列表 + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

breakpointno

+

IN integer

+

断点编号

+

result

+

OUT bool

+

是否成功

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-enable_breakpoint.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-enable_breakpoint.md index 0c04f4c85..1bd8f1391 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-enable_breakpoint.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-enable_breakpoint.md @@ -1,32 +1,32 @@ -# DBE\_PLDEBUGGER.enable\_breakpoint - -debug端调试过程中,调用enable\_breakpoint激活已被禁用的断点。 - -**表 1** enable\_breakpoint入参和返回值列表 - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

breakpointno

-

IN integer

-

断点编号

-

result

-

OUT bool

-

是否成功

-
- +# DBE\_PLDEBUGGER.enable\_breakpoint + +debug 端调试过程中,调用enable\_breakpoint激活已被禁用的断点。 + +**表 1** enable\_breakpoint入参和返回值列表 + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

breakpointno

+

IN integer

+

断点编号

+

result

+

OUT bool

+

是否成功

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-finish.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-finish.md index 6d567701c..f2e01afb7 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-finish.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-finish.md @@ -1,46 +1,46 @@ -# DBE\_PLDEBUGGER.finish - -执行存储过程中当前的SQL直到下一个断点触发或执行到上层栈的下一行。 - -**表 1** finish入参和返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

funcoid

-

OUT oid

-

函数id。

-

funcname

-

OUT text

-

函数名。

-

lineno

-

OUT integer

-

当前调试运行的下一行行号。

-

query

-

OUT text

-

当前调试的下一行函数源码。

-
- +# DBE\_PLDEBUGGER.finish + +执行存储过程中当前的 SQL 直到下一个断点触发或执行到上层栈的下一行。 + +**表 1** finish入参和返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

funcoid

+

OUT oid

+

函数 id 。

+

funcname

+

OUT text

+

函数名。

+

lineno

+

OUT integer

+

当前调试运行的下一行行号。

+

query

+

OUT text

+

当前调试的下一行函数源码。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-info_breakpoints.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-info_breakpoints.md index fa12f7e50..2016dd83a 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-info_breakpoints.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-info_breakpoints.md @@ -1,46 +1,46 @@ -# DBE\_PLDEBUGGER.info\_breakpoints - -debug端调试过程中,调用info\_breakpoints,查看当前的函数断点。 - -**表 1** info\_breakpoints返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

breakpointno

-

OUT integer

-

断点编号。

-

funcoid

-

OUT oid

-

函数ID。

-

lineno

-

OUT integer

-

行号。

-

query

-

OUT text

-

断点内容。

-
- +# DBE\_PLDEBUGGER.info\_breakpoints + +debug 端调试过程中,调用info\_breakpoints,查看当前的函数断点。 + +**表 1** info\_breakpoints返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

breakpointno

+

OUT integer

+

断点编号。

+

funcoid

+

OUT oid

+

函数 ID 。

+

lineno

+

OUT integer

+

行号。

+

query

+

OUT text

+

断点内容。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-info_code.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-info_code.md index affc37de2..6b8055446 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-info_code.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-info_code.md @@ -1,46 +1,46 @@ -# DBE\_PLDEBUGGER.info\_code - -debug端调试过程中,调用info\_code,查看指定存储过程的源语句和各行对应的行号,行号从函数体开始,函数头部分行号为空。 - -**表 1** info\_code入参和返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

funcoid

-

IN oid

-

函数ID。

-

lineno

-

OUT integer

-

行号。

-

query

-

OUT text

-

源语句。

-

canbreak

-

OUT bool

-

当前行是否支持断点。

-
- +# DBE\_PLDEBUGGER.info\_code + +debug 端调试过程中,调用info\_code,查看指定存储过程的源语句和各行对应的行号,行号从函数体开始,函数头部分行号为空。 + +**表 1** info\_code入参和返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

funcoid

+

IN oid

+

函数ID。

+

lineno

+

OUT integer

+

行号。

+

query

+

OUT text

+

源语句。

+

canbreak

+

OUT bool

+

当前行是否支持断点。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-info_locals.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-info_locals.md index 901fd9985..d547bb643 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-info_locals.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-info_locals.md @@ -1,60 +1,60 @@ -# DBE\_PLDEBUGGER.info\_locals - -debug端调试过程中,调用info\_locals,打印当前存储过程内变量。该函数入参frameno表示查询遍历的栈层数,支持无入参调用,缺省为查看最上层栈变量。 - -**表 1** info\_locals入参和返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

frameno

-

IN integer (可选)

-

指定的栈层数,缺省为最顶层

-

varname

-

OUT text

-

变量名

-

vartype

-

OUT text

-

变量类型

-

value

-

OUT text

-

变量值

-

package_name

-

OUT text

-

变量对应的package名,非package时为空

-

isconst

-

OUT boolean

-

是否为常量

-
- +# DBE\_PLDEBUGGER.info\_locals + +debug 端调试过程中,调用info\_locals,打印当前存储过程内变量。该函数入参 frameno 表示查询遍历的栈层数,支持无入参调用,缺省为查看最上层栈变量。 + +**表 1** info\_locals入参和返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

frameno

+

IN integer (可选)

+

指定的栈层数,缺省为最顶层

+

varname

+

OUT text

+

变量名

+

vartype

+

OUT text

+

变量类型

+

value

+

OUT text

+

变量值

+

package_name

+

OUT text

+

变量对应的 package 名,非 package 时为空

+

isconst

+

OUT boolean

+

是否为常量

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-local_debug_server_info.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-local_debug_server_info.md index 9bb21c12a..e36fe0609 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-local_debug_server_info.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-local_debug_server_info.md @@ -1,39 +1,39 @@ -# DBE\_PLDEBUGGER.local\_debug\_server\_info - -用于查找当前连接中已经turn\_on的存储过程oid。便于用户确认在调试哪些存储过程,需要通过funcoid和pg\_proc配合使用。 - -**表 1** local\_debug\_server\_info 返回值列表 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

nodename

-

OUT text

-

节点名称。

-

port

-

OUT bigint

-

端口号。

-

funcoid

-

OUT oid

-

存储过程oid。

-
- +# DBE\_PLDEBUGGER.local\_debug\_server\_info + +用于查找当前连接中已经turn\_on的存储过程 oid 。便于用户确认在调试哪些存储过程,需要通过 funcoid 和pg\_proc配合使用。 + +**表 1** local\_debug\_server\_info 返回值列表 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

OUT text

+

节点名称。

+

port

+

OUT bigint

+

端口号。

+

funcoid

+

OUT oid

+

存储过程 oid 。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-next.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-next.md index 1cd78a3ad..ac9c51af1 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-next.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-next.md @@ -1,46 +1,46 @@ -# DBE\_PLDEBUGGER.next - -执行存储过程中当前的sql,返回执行的下一条的行数和对应query。 - -**表 1** next返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

funcoid

-

OUT oid

-

函数id。

-

funcname

-

OUT text

-

函数名。

-

lineno

-

OUT integer

-

当前调试运行的下一行行号。

-

query

-

OUT text

-

当前调试的下一行函数源码。

-
- +# DBE\_PLDEBUGGER.next + +执行存储过程中当前的 sql ,返回执行的下一条的行数和对应 query 。 + +**表 1** next返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

funcoid

+

OUT oid

+

函数 id 。

+

funcname

+

OUT text

+

函数名。

+

lineno

+

OUT integer

+

当前调试运行的下一行行号。

+

query

+

OUT text

+

当前调试的下一行函数源码。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-print_var.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-print_var.md index 08abab259..25d0582b6 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-print_var.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-print_var.md @@ -1,67 +1,67 @@ -# DBE\_PLDEBUGGER.print\_var - -debug端调试过程中,调用print\_var,打印当前存储过程内变量中指定的变量名及其取值。该函数入参frameno表示查询遍历的栈层数,支持不加入该参数调用,缺省为查看最上层栈变量。 - -**表 1** print\_var入参和返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

var_name

-

IN text

-

变量。

-

frameno

-

IN integer(可选)

-

指定的栈层数,缺省为最顶层。

-

varname

-

OUT text

-

变量名。

-

vartype

-

OUT text

-

变量类型。

-

value

-

OUT text

-

变量值。

-

package_name

-

OUT text

-

变量对应的package名,预留使用,当前均为空。

-

isconst

-

OUT boolean

-

是否为常量。

-
- +# DBE\_PLDEBUGGER.print\_var + +debug 端调试过程中,调用print\_var,打印当前存储过程内变量中指定的变量名及其取值。该函数入参 frameno 表示查询遍历的栈层数,支持不加入该参数调用,缺省为查看最上层栈变量。 + +**表 1** print\_var入参和返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

var_name

+

IN text

+

变量。

+

frameno

+

IN integer(可选)

+

指定的栈层数,缺省为最顶层。

+

varname

+

OUT text

+

变量名。

+

vartype

+

OUT text

+

变量类型。

+

value

+

OUT text

+

变量值。

+

package_name

+

OUT text

+

变量对应的 package 名,预留使用,当前均为空。

+

isconst

+

OUT boolean

+

是否为常量。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-set_var.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-set_var.md index 4a35ea1d6..cc6b838b8 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-set_var.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-set_var.md @@ -1,39 +1,39 @@ -# DBE\_PLDEBUGGER.set\_var - -将指定的调试的存储过程中最上层栈上的变量修改为入参的取值。如果存储过程中包含同名的变量,set\_var只支持第一个变量值的设置。 - -**表 1** set\_var入参和返回值列表 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

var_name

-

IN text

-

变量名。

-

value

-

IN text

-

修改值。

-

result

-

OUT boolean

-

结果,是否成功。

-
- +# DBE\_PLDEBUGGER.set\_var + +将指定的调试的存储过程中最上层栈上的变量修改为入参的取值。如果存储过程中包含同名的变量,set\_var只支持第一个变量值的设置。 + +**表 1** set\_var入参和返回值列表 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

var_name

+

IN text

+

变量名。

+

value

+

IN text

+

修改值。

+

result

+

OUT boolean

+

结果,是否成功。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-step.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-step.md index a18cd13b6..526fc441e 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-step.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-step.md @@ -1,46 +1,46 @@ -# DBE\_PLDEBUGGER.step - -debug端调试过程中,如果当前执行的是一个存储过程,则进入该存储过程继续调试,返回该存储过程第一行的行号等信息,如果当前执行的不是存储过程,则和next行为一致,执行该sql后返回下一行的行号等信息。 - -**表 1** step入参和返回值列表 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

funcoid

-

OUT oid

-

函数id。

-

funcname

-

OUT text

-

函数名。

-

lineno

-

OUT integer

-

当前调试运行的下一行行号。

-

query

-

OUT text

-

当前调试的下一行函数源码。

-
- +# DBE\_PLDEBUGGER.step + +debug 端调试过程中,如果当前执行的是一个存储过程,则进入该存储过程继续调试,返回该存储过程第一行的行号等信息,如果当前执行的不是存储过程,则和 next 行为一致,执行该 sql 后返回下一行的行号等信息。 + +**表 1** step入参和返回值列表 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

funcoid

+

OUT oid

+

函数 id 。

+

funcname

+

OUT text

+

函数名。

+

lineno

+

OUT integer

+

当前调试运行的下一行行号。

+

query

+

OUT text

+

当前调试的下一行函数源码。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-turn_off.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-turn_off.md index 876fda231..deb887792 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-turn_off.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-turn_off.md @@ -1,39 +1,39 @@ -# DBE\_PLDEBUGGER.turn\_off - -用于去掉turn\_on添加的调试标记,返回值表示成功或失败。可通过DBE\_PLDEBUGGER.local\_debug\_server\_info查找已经turn\_on的存储过程oid。 - -函数原型为: - -``` -DBE_PLDEBUGGER.turn_off(Oid) -RETURN boolean; -``` - -**表 1** turn\_off 入参和返回值列表 - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

func_oid

-

IN oid

-

函数oid。

-

turn_off

-

OUT boolean

-

turn off是否成功。

-
- +# DBE\_PLDEBUGGER.turn\_off + +用于去掉turn\_on添加的调试标记,返回值表示成功或失败。可通过DBE\_PLDEBUGGER.local\_debug\_server\_info查找已经turn\_on的存储过程 oid 。 + +函数原型为: + +``` +DBE_PLDEBUGGER.turn_off(Oid) +RETURN boolean; +``` + +**表 1** turn\_off 入参和返回值列表 + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

func_oid

+

IN oid

+

函数 oid 。

+

turn_off

+

OUT boolean

+

turn off是否成功。

+
+ diff --git a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-turn_on.md b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-turn_on.md index 3395ffd95..b65af0fa1 100644 --- a/content/zh/docs/Developerguide/DBE_PLDEBUGGER-turn_on.md +++ b/content/zh/docs/Developerguide/DBE_PLDEBUGGER-turn_on.md @@ -1,46 +1,46 @@ -# DBE\_PLDEBUGGER.turn\_on - -该函数用于标记某一存储过程为可调试,执行turn\_on后server端可以执行该存储过程来进行调试。需要用户根据系统表PG\_PROC手动获取存储过程oid,传入函数中。turn\_on后本session内执行该存储过程会停在第一条sql前等待debug端的调试操作。该设置会在session断连后默认被清理掉。目前不支持对启用自治事务的存储过程/函数进行调试。 - -函数原型为: - -``` -DBE_PLDEBUGGER.turn_on(Oid) -RETURN Record; -``` - -**表 1** turn\_on 入参和返回值列表 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

func_oid

-

IN oid

-

函数oid。

-

nodename

-

OUT text

-

节点名称。

-

port

-

OUT integer

-

连接端口号。

-
- +# DBE\_PLDEBUGGER.turn\_on + +该函数用于标记某一存储过程为可调试,执行turn\_on后 server 端可以执行该存储过程来进行调试。需要用户根据系统表PG\_PROC手动获取存储过程 oid ,传入函数中。turn\_on后本 session 内执行该存储过程会停在第一条 sql 前等待 debug 端的调试操作。该设置会在 session 断连后默认被清理掉。目前不支持对启用自治事务的存储过程/函数进行调试。 + +函数原型为: + +``` +DBE_PLDEBUGGER.turn_on(Oid) +RETURN Record; +``` + +**表 1** turn\_on 入参和返回值列表 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

func_oid

+

IN oid

+

函数 oid 。

+

nodename

+

OUT text

+

节点名称。

+

port

+

OUT integer

+

连接端口号。

+
+ diff --git "a/content/zh/docs/Developerguide/DCF\345\217\202\346\225\260\350\256\276\347\275\256.md" "b/content/zh/docs/Developerguide/DCF\345\217\202\346\225\260\350\256\276\347\275\256.md" index 50e6f5dda..9cbc4ce03 100644 --- "a/content/zh/docs/Developerguide/DCF\345\217\202\346\225\260\350\256\276\347\275\256.md" +++ "b/content/zh/docs/Developerguide/DCF\345\217\202\346\225\260\350\256\276\347\275\256.md" @@ -1,338 +1,338 @@ -# DCF参数设置 - -## enable\_dcf - -**参数说明:**是否开启DCF模式,该参数不允许修改。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型,on/off。on表示当前安装部署方式为DCF模式,off表示当前安装部署方式为非DCF模式。 - -**默认值:**off - -## dcf\_ssl - -**参数说明:**是否开启SSL,重启生效。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型,on/off。on表示使用SSL,off表示不使用SSL。 - -**默认值:**on - -## dcf\_config - -**参数说明:**用户安装时自定义配置信息,该参数不允许修改。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**默认值:**字符串,安装时用户自定义配置 - -## dcf\_data\_path - -**参数说明:**DCF数据路径,该参数不允许修改。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**默认值:**字符串,DN数据目录下的dcf\_data目录 - -## dcf\_log\_path - -**参数说明:**DCF日志路径,该参数不允许修改。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**默认值:**字符串,DN数据目录下的dcf\_log目录 - -## dcf\_node\_id - -**参数说明:**DCF所在DN节点ID,用户安装时自定义,该参数不允许修改。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**默认值:**整型,安装时用户自定义配置 - -## dcf\_max\_workers - -**参数说明:**DCF回调函数线程个数。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,10\~262143 - -**默认值:**10 - -## dcf\_truncate\_threshold - -**参数说明:**DN对DCF日志进行truncate的门限阈值。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,1\~2147483647 - -**默认值:**100000 - -## dcf\_election\_timeout - -**参数说明:**DCF leader和follower选举超时时间。选举超时时间数值依赖于当前DN之间的网络状况,在超时时间较小且网络极差的情形下,会有超时选举发生,待网络恢复选举恢复正常。建议根据当前网络状态合理设置超时时间。对DCF节点时钟的约束:DCF节点间最大时钟差异小于选举超时时间的一半。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,单位s,1\~600 - -**默认值:**3 - -## dcf\_run\_mode - -**参数说明:**DCF选举模式,0表示自动选举模式,2表示去使能选举模式。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**枚举类型,0、2 - -**默认值:**0 - -## dcf\_log\_level - -**参数说明:**DCF日志级别。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**字符串 - -- **关闭日志**:“NONE”,NONE表示关闭日志打印,不能与以下日志级别混合使用。 -- **开启日志:“**RUN\_ERR|RUN\_WAR|RUN\_INF|DEBUG\_ERR|DEBUG\_WAR|DEBUG\_INF|TRACE|PROFILE|OPER” - - 日志级别可以从上述字符串中选取字符串并使用竖线组合使用,不能配置空串。 - - -**默认值:**“RUN\_ERR|RUN\_WAR|DEBUG\_ERR|OPER|RUN\_INF|PROFILE” - -## dcf\_log\_backup\_file\_count - -**参数说明:**DCF运行日志备份保留个数。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,1\~100 - -**默认值:**10 - -## dcf\_max\_log\_file\_size - -**参数说明:**DCF运行日志单个文件最大大小。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,单位MB,1\~1000 - -**默认值:**10 - -## dcf\_socket\_timeout - -**参数说明:**DCF通信模块连接socket超时时间,参数重启生效。对于网络环境比较差的环境,若配置很小的超时时间,可能会导致建链不成功,此时需要适当增大此值。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,单位ms,10\~600000 - -**默认值:**5000 - -## dcf\_connect\_timeout - -**参数说明:**DCF通信模块建立连接超时时间,参数重启生效。对于网络环境比较差的环境,若配置很小的超时时间,可能会导致建链不成功,此时需要适当增大此值。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,单位ms,10\~600000 - -**默认值:**60000 - -## dcf\_mec\_fragment\_size - -**参数说明:**DCF通信模块fragment大小,参数重启生效。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,单位KB,32\~10240 - -**默认值:**64 - -## dcf\_stg\_pool\_max\_size - -**参数说明:**DCF存储模内存池最大值,参数重启生效。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,单位MB,32\~2147483647 - -**默认值:**2048 - -## dcf\_stg\_pool\_init\_size - -**参数说明:**DCF存储模块内存池最小值,参数重启生效。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,单位MB,32\~2147483647 - -**默认值:**32 - -## dcf\_mec\_pool\_max\_size - -**参数说明:**DCF通信模块内存池最大值,参数重启生效。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,单位MB,32\~2147483647 - -**默认值:**200 - -## dcf\_flow\_control\_disk\_rawait\_threshold - -**参数说明:**DCF流控功能的磁盘等待阈值。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,单位us,0\~2147483647 - -**默认值:**100000 - -## dcf\_flow\_control\_net\_queue\_message\_num\_threshold - -**参数说明:**DCF流控功能的网络队列消息数阈值。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,0\~2147483647 - -**默认值:**1024 - -## dcf\_flow\_control\_cpu\_threshold - -**参数说明:**DCF CPU流控阈值。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,单位百分比,0\~2147483647 - -**默认值:**100 - -## dcf\_mec\_batch\_size - -**参数说明:**DCF通信批量消息数,数值为0时,DCF会根据网络以及写入数据量自适应调整,参数重启生效。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,0\~1024 - -**默认值:**0 - -## dcf\_mem\_pool\_max\_size - -**参数说明:**DCF内存最大值,参数重启生效。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,单位MB,32\~2147483647 - -**默认值:**2048 - -## dcf\_mem\_pool\_init\_size - -**参数说明:**DCF内存初始化大小,参数重启生效。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,单位MB,32\~2147483647 - -**默认值:**32 - -## dcf\_compress\_algorithm - -**参数说明:**DCF运行日志传输压缩算法,参数重启生效。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型 - -- 0表示不压缩 -- 1表示ZSTD压缩算法 -- 2表示LZ4压缩算法 - -**默认值:**0 - -## dcf\_compress\_level - -**参数说明:**DCF日志传输压缩级别,参数重启生效,此参数生效前提必须配置有效的压缩算法,即设置合法的dcf\_compress\_algorithm参数。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型 - -- 若不使用压缩算法,取值不生效 -- 若选择ZSTD压缩算法,取值范围1\~22 -- 若选择LZ4压缩算法,取值范围1\~9 - -**默认值:**1 - -## dcf\_mec\_channel\_num - -**参数说明:**DCF通信通道数量,参数重启生效。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,1\~64 - -**默认值:**1 - -## dcf\_rep\_append\_thread\_num - -**参数说明:**DCF日志复制线程数量,参数重启生效。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,1\~1000 - -**默认值:**2 - -## dcf\_mec\_agent\_thread\_num - -**参数说明:**DCF通信工作线程数量,参数重启生效。dcf\_mec\_agent\_thread\_num值建议不少于2\*节点数\*dcf\_mec\_channel\_num。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,1\~1000 - -**默认值:**10 - -## dcf\_mec\_reactor\_thread\_num - -**参数说明:**DCF使用reactor线程数量,参数重启生效。dcf\_mec\_reactor\_thread\_num与dcf\_mec\_agent\_thread\_num比例建议1:40。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,1\~100 - -**默认值:**1 - -## dcf\_log\_file\_permission - -**参数说明:**DCF运行日志文件属性,参数重启生效。若用户需要支持同组的其他用户访问日志,首先需要所有的父目录都支持同组的其他用户也能访问。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**枚举型,600、640 - -**默认值:**600 - -## dcf\_log\_path\_permission - -**参数说明:**DCF运行日志目录属性,参数重启生效,不支持修改。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**枚举型,700、750 - -**默认值:**700 - +# DCF参数设置 + +## enable\_dcf + +**参数说明:**是否开启 DCF 模式,该参数不允许修改。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**布尔型,on/off。 on 表示当前安装部署方式为 DCF 模式, off 表示当前安装部署方式为非 DCF 模式。 + +**默认值:**off + +## dcf\_ssl + +**参数说明:**是否开启 SSL ,重启生效。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**布尔型,on/off。 on 表示使用 SSL , off 表示不使用 SSL 。 + +**默认值:**on + +## dcf\_config + +**参数说明:**用户安装时自定义配置信息,该参数不允许修改。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**默认值:**字符串,安装时用户自定义配置 + +## dcf\_data\_path + +**参数说明:**DCF数据路径,该参数不允许修改。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**默认值:**字符串, DN 数据目录下的dcf\_data目录 + +## dcf\_log\_path + +**参数说明:**DCF日志路径,该参数不允许修改。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**默认值:**字符串, DN 数据目录下的dcf\_log目录 + +## dcf\_node\_id + +**参数说明:**DCF所在 DN 节点 ID ,用户安装时自定义,该参数不允许修改。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**默认值:**整型,安装时用户自定义配置 + +## dcf\_max\_workers + +**参数说明:**DCF回调函数线程个数。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,10\~262143 + +**默认值:**10 + +## dcf\_truncate\_threshold + +**参数说明:**DN对 DCF 日志进行 truncate 的门限阈值。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,1\~2147483647 + +**默认值:**100000 + +## dcf\_election\_timeout + +**参数说明:**DCF leader和 follower 选举超时时间。选举超时时间数值依赖于当前 DN 之间的网络状况,在超时时间较小且网络极差的情形下,会有超时选举发生,待网络恢复选举恢复正常。建议根据当前网络状态合理设置超时时间。对 DCF 节点时钟的约束:DCF节点间最大时钟差异小于选举超时时间的一半。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,单位 s ,1\~600 + +**默认值:**3 + +## dcf\_run\_mode + +**参数说明:**DCF选举模式, 0 表示自动选举模式, 2 表示去使能选举模式。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**枚举类型,0、2 + +**默认值:**0 + +## dcf\_log\_level + +**参数说明:**DCF日志级别。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**字符串 + +- **关闭日志**:“NONE”, NONE 表示关闭日志打印,不能与以下日志级别混合使用。 +- **开启日志:“**RUN\_ERR|RUN\_WAR|RUN\_INF|DEBUG\_ERR|DEBUG\_WAR|DEBUG\_INF|TRACE|PROFILE|OPER” + + 日志级别可以从上述字符串中选取字符串并使用竖线组合使用,不能配置空串。 + + +**默认值:**“RUN\_ERR|RUN\_WAR|DEBUG\_ERR|OPER|RUN\_INF|PROFILE” + +## dcf\_log\_backup\_file\_count + +**参数说明:**DCF运行日志备份保留个数。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,1\~100 + +**默认值:**10 + +## dcf\_max\_log\_file\_size + +**参数说明:**DCF运行日志单个文件最大大小。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,单位 MB ,1\~1000 + +**默认值:**10 + +## dcf\_socket\_timeout + +**参数说明:**DCF通信模块连接 socket 超时时间,参数重启生效。对于网络环境比较差的环境,若配置很小的超时时间,可能会导致建链不成功,此时需要适当增大此值。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,单位 ms ,10\~600000 + +**默认值:**5000 + +## dcf\_connect\_timeout + +**参数说明:**DCF通信模块建立连接超时时间,参数重启生效。对于网络环境比较差的环境,若配置很小的超时时间,可能会导致建链不成功,此时需要适当增大此值。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,单位 ms ,10\~600000 + +**默认值:**60000 + +## dcf\_mec\_fragment\_size + +**参数说明:**DCF通信模块 fragment 大小,参数重启生效。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,单位 KB ,32\~10240 + +**默认值:**64 + +## dcf\_stg\_pool\_max\_size + +**参数说明:**DCF存储模内存池最大值,参数重启生效。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,单位 MB ,32\~2147483647 + +**默认值:**2048 + +## dcf\_stg\_pool\_init\_size + +**参数说明:**DCF存储模块内存池最小值,参数重启生效。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,单位 MB ,32\~2147483647 + +**默认值:**32 + +## dcf\_mec\_pool\_max\_size + +**参数说明:**DCF通信模块内存池最大值,参数重启生效。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,单位 MB ,32\~2147483647 + +**默认值:**200 + +## dcf\_flow\_control\_disk\_rawait\_threshold + +**参数说明:**DCF流控功能的磁盘等待阈值。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,单位 us ,0\~2147483647 + +**默认值:**100000 + +## dcf\_flow\_control\_net\_queue\_message\_num\_threshold + +**参数说明:**DCF流控功能的网络队列消息数阈值。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,0\~2147483647 + +**默认值:**1024 + +## dcf\_flow\_control\_cpu\_threshold + +**参数说明:**DCF CPU流控阈值。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,单位百分比,0\~2147483647 + +**默认值:**100 + +## dcf\_mec\_batch\_size + +**参数说明:**DCF通信批量消息数,数值为 0 时, DCF 会根据网络以及写入数据量自适应调整,参数重启生效。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,0\~1024 + +**默认值:**0 + +## dcf\_mem\_pool\_max\_size + +**参数说明:**DCF内存最大值,参数重启生效。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,单位 MB ,32\~2147483647 + +**默认值:**2048 + +## dcf\_mem\_pool\_init\_size + +**参数说明:**DCF内存初始化大小,参数重启生效。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,单位 MB ,32\~2147483647 + +**默认值:**32 + +## dcf\_compress\_algorithm + +**参数说明:**DCF运行日志传输压缩算法,参数重启生效。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型 + +- 0表示不压缩 +- 1表示 ZSTD 压缩算法 +- 2表示 LZ4 压缩算法 + +**默认值:**0 + +## dcf\_compress\_level + +**参数说明:**DCF日志传输压缩级别,参数重启生效,此参数生效前提必须配置有效的压缩算法,即设置合法的dcf\_compress\_algorithm参数。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型 + +- 若不使用压缩算法,取值不生效 +- 若选择 ZSTD 压缩算法,取值范围1\~22 +- 若选择 LZ4 压缩算法,取值范围1\~9 + +**默认值:**1 + +## dcf\_mec\_channel\_num + +**参数说明:**DCF通信通道数量,参数重启生效。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,1\~64 + +**默认值:**1 + +## dcf\_rep\_append\_thread\_num + +**参数说明:**DCF日志复制线程数量,参数重启生效。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,1\~1000 + +**默认值:**2 + +## dcf\_mec\_agent\_thread\_num + +**参数说明:**DCF通信工作线程数量,参数重启生效。dcf\_mec\_agent\_thread\_num值建议不少于2\*节点数\*dcf\_mec\_channel\_num。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,1\~1000 + +**默认值:**10 + +## dcf\_mec\_reactor\_thread\_num + +**参数说明:**DCF使用 reactor 线程数量,参数重启生效。dcf\_mec\_reactor\_thread\_num与dcf\_mec\_agent\_thread\_num比例建议1:40。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,1\~100 + +**默认值:**1 + +## dcf\_log\_file\_permission + +**参数说明:**DCF运行日志文件属性,参数重启生效。若用户需要支持同组的其他用户访问日志,首先需要所有的父目录都支持同组的其他用户也能访问。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**枚举型,600、640 + +**默认值:**600 + +## dcf\_log\_path\_permission + +**参数说明:**DCF运行日志目录属性,参数重启生效,不支持修改。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**枚举型,700、750 + +**默认值:**700 + diff --git "a/content/zh/docs/Developerguide/DCL\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" "b/content/zh/docs/Developerguide/DCL\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" index 1b67c6ec1..5516305d1 100644 --- "a/content/zh/docs/Developerguide/DCL\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" +++ "b/content/zh/docs/Developerguide/DCL\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" @@ -1,82 +1,82 @@ -# DCL语法一览表 - -DCL(Data Control Language数据控制语言),是用来创建用户角色、设置或更改数据库用户或角色权限的语句。 - -## 定义角色 - -角色是用来管理权限的,从数据库安全的角度考虑,可以把所有的管理和操作权限划分到不同的角色上。所涉及的SQL语句,请参考[表1](#zh-cn_topic_0283136632_zh-cn_topic_0237122051_zh-cn_topic_0059777960_tf1770f1724d84240998305bfca259f11)。 - -**表 1** 角色定义相关SQL - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建角色

-

CREATE ROLE

-

修改角色属性

-

ALTER ROLE

-

删除角色

-

DROP ROLE

-
- -## 定义用户 - -用户是用来登录数据库的,通过对用户赋予不同的权限,可以方便地管理用户对数据库的访问及操作。所涉及的SQL语句,请参考[表2](#zh-cn_topic_0283136632_zh-cn_topic_0237122051_zh-cn_topic_0059777960_t52a128d57b274569b95a3b35f6871348)。 - -**表 2** 用户定义相关SQL - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建用户

-

CREATE USER

-

修改用户属性

-

ALTER USER

-

删除用户

-

DROP USER

-
- -## 授权 - -openGauss提供了针对数据对象和角色授权的语句,请参考[GRANT](GRANT.md)。 - -## 收回权限 - -openGauss提供了收回权限的语句,请参考[REVOKE](REVOKE.md)。 - -## 设置默认权限 - -openGauss允许设置应用于将来创建的对象的权限,请参考[ALTER DEFAULT PRIVILEGES](ALTER-DEFAULT-PRIVILEGES.md)。 - -## 关闭当前节点 - -openGauss支持使用shutdown命令关闭当前数据库节点,请参考[SHUTDOWN](SHUTDOWN.md)。 - +# DCL语法一览表 + +DCL(Data Control Language数据控制语言),是用来创建用户角色、设置或更改数据库用户或角色权限的语句。 + +## 定义角色 + +角色是用来管理权限的,从数据库安全的角度考虑,可以把所有的管理和操作权限划分到不同的角色上。所涉及的 SQL 语句,请参考[表1](#zh-cn_topic_0283136632_zh-cn_topic_0237122051_zh-cn_topic_0059777960_tf1770f1724d84240998305bfca259f11)。 + +**表 1** 角色定义相关SQL + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建角色

+

CREATE ROLE

+

修改角色属性

+

ALTER ROLE

+

删除角色

+

DROP ROLE

+
+ +## 定义用户 + +用户是用来登录数据库的,通过对用户赋予不同的权限,可以方便地管理用户对数据库的访问及操作。所涉及的 SQL 语句,请参考[表2](#zh-cn_topic_0283136632_zh-cn_topic_0237122051_zh-cn_topic_0059777960_t52a128d57b274569b95a3b35f6871348)。 + +**表 2** 用户定义相关SQL + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建用户

+

CREATE USER

+

修改用户属性

+

ALTER USER

+

删除用户

+

DROP USER

+
+ +## 授权 + +openGauss 提供了针对数据对象和角色授权的语句,请参考[GRANT](GRANT.md)。 + +## 收回权限 + +openGauss 提供了收回权限的语句,请参考[REVOKE](REVOKE.md)。 + +## 设置默认权限 + +openGauss 允许设置应用于将来创建的对象的权限,请参考[ALTER DEFAULT PRIVILEGES](ALTER-DEFAULT-PRIVILEGES.md)。 + +## 关闭当前节点 + +openGauss 支持使用 shutdown 命令关闭当前数据库节点,请参考[SHUTDOWN](SHUTDOWN.md)。 + diff --git "a/content/zh/docs/Developerguide/DDL\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" "b/content/zh/docs/Developerguide/DDL\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" index e0835d7e9..86ebcc7ab 100644 --- "a/content/zh/docs/Developerguide/DDL\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" +++ "b/content/zh/docs/Developerguide/DDL\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" @@ -1,575 +1,575 @@ -# DDL语法一览表 - -DDL(Data Definition Language数据定义语言),用于定义或修改数据库中的对象。如:表、索引、视图等。 - ->![](public_sys-resources/icon-note.gif) **说明:** -> ->openGauss不支持数据库主节点不完整时进行DDL操作。例如:openGauss中有1个数据库主节点故障时执行新建数据库、表等操作都会失败。 - -## 定义客户端加密主密钥 - -客户端加密主密钥主要用于密态数据库特性,用来加密列加密密钥\(cek\)。客户端加密主密钥定义主要包括创建客户端加密主密钥以及删除客户端加密主密钥。所涉及的SQL语句,请参考[表1](#table1932183717514)。 - -**表 1** 客户端加密主密钥定义相关SQL - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建客户端加密主密钥

-

CREATE CLIENT MASTER KEY

-

删除客户端加密主密钥

-

DROP CLIENT MASTER KEY

-
- -## 定义列加密密钥 - -列加密密钥主要用于密态数据库特性中,用来加密数据。列加密密钥定义主要包括创建列加密密钥以及删除列加密密钥。所涉及的SQL语句,请参考[表2](#table1932183717514)。 - -**表 2** 列加密密钥定义相关SQL - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建列加密密钥

-

CREATE COLUMN ENCRYPTION KEY

-

删列加密密钥

-

DROP COLUMN ENCRYPTION KEY

-
- -## 定义数据库 - -数据库是组织、存储和管理数据的仓库,而数据库定义主要包括:创建数据库、修改数据库属性以及删除数据库。所涉及的SQL语句,请参考[表3](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_t986073679146430a8bce8bf0ea8f3607)。 - -**表 3** 数据库定义相关SQL - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建数据库

-

CREATE DATABASE

-

修改数据库属性

-

ALTER DATABASE

-

删除数据库

-

DROP DATABASE

-
- -## 定义模式 - -模式是一组数据库对象的集合,主要用于控制对数据库对象的访问。所涉及的SQL语句,请参考[表4](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_t02977f28a9564837881f110b305d7509)。 - -**表 4** 模式定义相关SQL - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建模式

-

CREATE SCHEMA

-

修改模式属性

-

ALTER SCHEMA

-

删除模式

-

DROP SCHEMA

-
- -## 定义表空间 - -表空间用于管理数据对象,与磁盘上的一个目录对应。所涉及的SQL语句,请参考[表5](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_t9b028195c0d143f6b8fc7065af1ce2f9)。 - -**表 5** 表空间定义相关SQL - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建表空间

-

CREATE TABLESPACE

-

修改表空间属性

-

ALTER TABLESPACE

-

删除表空间

-

DROP TABLESPACE

-
- -## 定义表 - -表是数据库中的一种特殊数据结构,用于存储数据对象以及对象之间的关系。所涉及的SQL语句,请参考[表6](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_tcd92dbef720d4b7eaa5bf7a290b98605)。 - -**表 6** 表定义相关SQL - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建表

-

CREATE TABLE

-

修改表属性

-

ALTER TABLE

-

删除表

-

DROP TABLE

-
- -## 定义分区表 - -分区表是一种逻辑表,数据是由普通表存储的,主要用于提升查询性能。所涉及的SQL语句,请参考[表7](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_t3ec179079c524dbaae801012f990a692)。 - -**表 7** 分区表定义相关SQL - - - - - - - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建分区表

-

CREATE TABLE PARTITION

-

创建分区

-

ALTER TABLE PARTITION

-

修改分区表属性

-

ALTER TABLE PARTITION

-

删除分区

-

ALTER TABLE PARTITION

-

删除分区表

-

DROP TABLE

-
- -## 定义索引 - -索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。所涉及的SQL语句,请参考[表8](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_te79920e4b7b849b7a64fb71029436d48)。 - -**表 8** 索引定义相关SQL - - - - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建索引

-

CREATE INDEX

-

修改索引属性

-

ALTER INDEX

-

删除索引

-

DROP INDEX

-

重建索引

-

REINDEX

-
- -## 定义存储过程 - -存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数(如果该存储过程带有参数)来执行它。所涉及的SQL语句,请参考[表9](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_t0116270962694804b50796a5d6824f3b)。 - -**表 9** 存储过程定义相关SQL - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建存储过程

-

CREATE PROCEDURE

-

删除存储过程

-

DROP PROCEDURE

-
- -## 定义函数 - -在openGauss中,它和存储过程类似,也是一组SQL语句集,使用上没有差别。所涉及的SQL语句,请参考[表10](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_tde31d523c25742e2aecc5ae8a17d561b)。 - -**表 10** 函数定义相关SQL - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建函数

-

CREATE FUNCTION

-

修改函数属性

-

ALTER FUNCTION

-

删除函数

-

DROP FUNCTION

-
- -## 定义包 - -包是模块化的思想,由包头(package specification)和包体\(package body\)组成,用来分类管理存储过程和函数,类似于Java、C++等语言中的类。 - -**表 11** 包定义相关SQL - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建包

-

14.14.72-CREATE PACKAGE

-

删除包

-

14.14.111-DROP PACKAGE

-
- -## 定义视图 - -视图是从一个或几个基本表中导出的虚表,可用于控制用户对数据访问,请参考[表12](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_td65563e06b1c491892dbad9b57f3b96d)。 - -**表 12** 视图定义相关SQL - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建视图

-

CREATE VIEW

-

删除视图

-

DROP VIEW

-
- -## 定义游标 - -为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化,请参考[表13](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_t191f977ebe0a4ab5b1348c888403e3b4)。 - -**表 13** 游标定义相关SQL - - - - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建游标

-

CURSOR

-

移动游标

-

MOVE

-

从游标中提取数据

-

FETCH

-

关闭游标

-

CLOSE

-
- -## 定义聚合函数 - -**表 14** 聚合函数定义相关SQL - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建一个新的聚合函数

-

CREATE AGGREGATE

-

修改聚合函数

-

ALTER AGGREGATE

-

删除聚合函数

-

DROP AGGREGATE

-
- -## 定义数据类型转换 - -**表 15** 数据类型定义相关SQL - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建一个新的用户自定义数据类型转换

-

CREATE CAST

-

删除用户自定义数据类型转换

-

DROP CAST

-
- -## 定义插件扩展 - -**表 16** 插件扩展定义相关SQL - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建一个新的插件扩展

-

CREATE EXTENSION

-

修改插件扩展

-

ALTER EXTENSION

-

删除插件扩展

-

DROP EXTENSION

-
- -## 定义操作符 - -**表 17** 操作符定义相关SQL - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建一个新的操作符

-

CREATE OPERATOR

-

修改操作符

-

ALTER OPERATOR

-

删除操作符

-

DROP OPERATOR

-
- -## 定义过程语言 - -**表 18** 过程语言定义相关SQL - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建一个新的过程语言

-

CREATE LANGUAGE

-

修改过程语言

-

ALTER LANGUAGE

-

删除过程语言

-

DROP LANGUAGE

-
- -## 定义数据类型 - -**表 19** 数据类型定义相关SQL - - - - - - - - - - - - - - - - -

功能

-

相关SQL

-

创建一个新的数据类型

-

CREATE TYPE

-

修改数据类型

-

ALTER TYPE

-

删除数据类型

-

DROP TYPE

-
- +# DDL语法一览表 + +DDL(Data Definition Language数据定义语言),用于定义或修改数据库中的对象。如:表、索引、视图等。 + +>![](public_sys-resources/icon-note.gif) **说明:** +> +>openGauss不支持数据库主节点不完整时进行 DDL 操作。例如:openGauss中有 1 个数据库主节点故障时执行新建数据库、表等操作都会失败。 + +## 定义客户端加密主密钥 + +客户端加密主密钥主要用于密态数据库特性,用来加密列加密密钥\(cek\)。客户端加密主密钥定义主要包括创建客户端加密主密钥以及删除客户端加密主密钥。所涉及的 SQL 语句,请参考[表1](#table1932183717514)。 + +**表 1** 客户端加密主密钥定义相关SQL + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建客户端加密主密钥

+

CREATE CLIENT MASTER KEY

+

删除客户端加密主密钥

+

DROP CLIENT MASTER KEY

+
+ +## 定义列加密密钥 + +列加密密钥主要用于密态数据库特性中,用来加密数据。列加密密钥定义主要包括创建列加密密钥以及删除列加密密钥。所涉及的 SQL 语句,请参考[表2](#table1932183717514)。 + +**表 2** 列加密密钥定义相关SQL + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建列加密密钥

+

CREATE COLUMN ENCRYPTION KEY

+

删列加密密钥

+

DROP COLUMN ENCRYPTION KEY

+
+ +## 定义数据库 + +数据库是组织、存储和管理数据的仓库,而数据库定义主要包括:创建数据库、修改数据库属性以及删除数据库。所涉及的 SQL 语句,请参考[表3](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_t986073679146430a8bce8bf0ea8f3607)。 + +**表 3** 数据库定义相关SQL + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建数据库

+

CREATE DATABASE

+

修改数据库属性

+

ALTER DATABASE

+

删除数据库

+

DROP DATABASE

+
+ +## 定义模式 + +模式是一组数据库对象的集合,主要用于控制对数据库对象的访问。所涉及的 SQL 语句,请参考[表4](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_t02977f28a9564837881f110b305d7509)。 + +**表 4** 模式定义相关SQL + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建模式

+

CREATE SCHEMA

+

修改模式属性

+

ALTER SCHEMA

+

删除模式

+

DROP SCHEMA

+
+ +## 定义表空间 + +表空间用于管理数据对象,与磁盘上的一个目录对应。所涉及的 SQL 语句,请参考[表5](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_t9b028195c0d143f6b8fc7065af1ce2f9)。 + +**表 5** 表空间定义相关SQL + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建表空间

+

CREATE TABLESPACE

+

修改表空间属性

+

ALTER TABLESPACE

+

删除表空间

+

DROP TABLESPACE

+
+ +## 定义表 + +表是数据库中的一种特殊数据结构,用于存储数据对象以及对象之间的关系。所涉及的 SQL 语句,请参考[表6](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_tcd92dbef720d4b7eaa5bf7a290b98605)。 + +**表 6** 表定义相关SQL + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建表

+

CREATE TABLE

+

修改表属性

+

ALTER TABLE

+

删除表

+

DROP TABLE

+
+ +## 定义分区表 + +分区表是一种逻辑表,数据是由普通表存储的,主要用于提升查询性能。所涉及的 SQL 语句,请参考[表7](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_t3ec179079c524dbaae801012f990a692)。 + +**表 7** 分区表定义相关SQL + + + + + + + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建分区表

+

CREATE TABLE PARTITION

+

创建分区

+

ALTER TABLE PARTITION

+

修改分区表属性

+

ALTER TABLE PARTITION

+

删除分区

+

ALTER TABLE PARTITION

+

删除分区表

+

DROP TABLE

+
+ +## 定义索引 + +索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。所涉及的 SQL 语句,请参考[表8](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_te79920e4b7b849b7a64fb71029436d48)。 + +**表 8** 索引定义相关SQL + + + + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建索引

+

CREATE INDEX

+

修改索引属性

+

ALTER INDEX

+

删除索引

+

DROP INDEX

+

重建索引

+

REINDEX

+
+ +## 定义存储过程 + +存储过程是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数(如果该存储过程带有参数)来执行它。所涉及的 SQL 语句,请参考[表9](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_t0116270962694804b50796a5d6824f3b)。 + +**表 9** 存储过程定义相关SQL + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建存储过程

+

CREATE PROCEDURE

+

删除存储过程

+

DROP PROCEDURE

+
+ +## 定义函数 + +在 openGauss 中,它和存储过程类似,也是一组 SQL 语句集,使用上没有差别。所涉及的 SQL 语句,请参考[表10](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_tde31d523c25742e2aecc5ae8a17d561b)。 + +**表 10** 函数定义相关SQL + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建函数

+

CREATE FUNCTION

+

修改函数属性

+

ALTER FUNCTION

+

删除函数

+

DROP FUNCTION

+
+ +## 定义包 + +包是模块化的思想,由包头(package specification)和包体\(package body\)组成,用来分类管理存储过程和函数,类似于Java、C++等语言中的类。 + +**表 11** 包定义相关SQL + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建包

+

14.14.72-CREATE PACKAGE

+

删除包

+

14.14.111-DROP PACKAGE

+
+ +## 定义视图 + +视图是从一个或几个基本表中导出的虚表,可用于控制用户对数据访问,请参考[表12](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_td65563e06b1c491892dbad9b57f3b96d)。 + +**表 12** 视图定义相关SQL + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建视图

+

CREATE VIEW

+

删除视图

+

DROP VIEW

+
+ +## 定义游标 + +为了处理 SQL 语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化,请参考[表13](#zh-cn_topic_0283136643_zh-cn_topic_0237122049_zh-cn_topic_0059777960_t191f977ebe0a4ab5b1348c888403e3b4)。 + +**表 13** 游标定义相关SQL + + + + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建游标

+

CURSOR

+

移动游标

+

MOVE

+

从游标中提取数据

+

FETCH

+

关闭游标

+

CLOSE

+
+ +## 定义聚合函数 + +**表 14** 聚合函数定义相关SQL + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建一个新的聚合函数

+

CREATE AGGREGATE

+

修改聚合函数

+

ALTER AGGREGATE

+

删除聚合函数

+

DROP AGGREGATE

+
+ +## 定义数据类型转换 + +**表 15** 数据类型定义相关SQL + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建一个新的用户自定义数据类型转换

+

CREATE CAST

+

删除用户自定义数据类型转换

+

DROP CAST

+
+ +## 定义插件扩展 + +**表 16** 插件扩展定义相关SQL + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建一个新的插件扩展

+

CREATE EXTENSION

+

修改插件扩展

+

ALTER EXTENSION

+

删除插件扩展

+

DROP EXTENSION

+
+ +## 定义操作符 + +**表 17** 操作符定义相关SQL + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建一个新的操作符

+

CREATE OPERATOR

+

修改操作符

+

ALTER OPERATOR

+

删除操作符

+

DROP OPERATOR

+
+ +## 定义过程语言 + +**表 18** 过程语言定义相关SQL + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建一个新的过程语言

+

CREATE LANGUAGE

+

修改过程语言

+

ALTER LANGUAGE

+

删除过程语言

+

DROP LANGUAGE

+
+ +## 定义数据类型 + +**表 19** 数据类型定义相关SQL + + + + + + + + + + + + + + + + +

功能

+

相关SQL

+

创建一个新的数据类型

+

CREATE TYPE

+

修改数据类型

+

ALTER TYPE

+

删除数据类型

+

DROP TYPE

+
+ diff --git a/content/zh/docs/Developerguide/DEALLOCATE.md b/content/zh/docs/Developerguide/DEALLOCATE.md index f5ba13945..f539af74a 100644 --- a/content/zh/docs/Developerguide/DEALLOCATE.md +++ b/content/zh/docs/Developerguide/DEALLOCATE.md @@ -1,33 +1,33 @@ -# DEALLOCATE - -## 功能描述 - -DEALLOCATE用于删除前面编写的预备语句。如果用户没有明确删除一个预备语句,那么它将在会话结束的时候被删除。 - -PREPARE关键字总被忽略。 - -## 注意事项 - -无。 - -## 语法格式 - -``` -DEALLOCATE [ PREPARE ] { name | ALL }; -``` - -## 参数说明 - -- **name** - - 将要删除的预备语句。 - -- **ALL** - - 删除所有预备语句。 - - -## 示例 - -无。 - +# DEALLOCATE + +## 功能描述 + +DEALLOCATE 用于删除前面编写的预备语句。如果用户没有明确删除一个预备语句,那么它将在会话结束的时候被删除。 + +PREPARE 关键字总被忽略。 + +## 注意事项 + +无。 + +## 语法格式 + +``` +DEALLOCATE [ PREPARE ] { name | ALL }; +``` + +## 参数说明 + +- **name** + + 将要删除的预备语句。 + +- **ALL** + + 删除所有预备语句。 + + +## 示例 + +无。 + diff --git a/content/zh/docs/Developerguide/DECLARE.md b/content/zh/docs/Developerguide/DECLARE.md index 95debadda..5baf1bd96 100644 --- a/content/zh/docs/Developerguide/DECLARE.md +++ b/content/zh/docs/Developerguide/DECLARE.md @@ -1,91 +1,91 @@ -# DECLARE - -## 功能描述 - -DECLARE命令既可以定义一个游标,用于在一个大的查询里面检索少数几行数据,也可以作为一个匿名块的开始。 - -本节主要描述定义为游标的用法,开启匿名块的用法见[BEGIN](BEGIN.md)。 - -为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 - -通常游标和SELECT一样返回文本格式。因为数据在系统内部是用二进制格式存储的,系统必须对数据做一定转换以生成文本格式。一旦数据是以文本形式返回,客户端应用需要把它们转换成二进制进行操作。使用FETCH语句,游标可以返回文本或二进制格式。 - -## 注意事项 - -- 游标命令只能在事务块里使用。 -- 应该小心使用二进制游标。文本格式一般都比对应的二进制格式占用的存储空间大。二进制游标返回内部二进制形态的数据,可能更易于操作。如果想以文本方式显示数据,则以文本方式检索会为用户节约很多客户端的工作。比如,如果查询从某个整数列返回1,在缺省的游标里将获得一个字符串1,但在二进制游标里将得到一个4字节的包含该数值内部形式的数值(大端顺序)。 - -## 语法格式 - -- 定义游标 - - ``` - DECLARE cursor_name [ BINARY ] [ NO SCROLL ] - CURSOR [ { WITH | WITHOUT } HOLD ] FOR query ; - ``` - -- 开启匿名块 - - ``` - [DECLARE [declare_statements]] - BEGIN - execution_statements - END; - / - ``` - - -## 参数说明 - -- **cursor\_name** - - 将要创建的游标名。 - - 取值范围:遵循数据库对象命名规范。 - -- **BINARY** - - 指明游标以二进制而不是文本格式返回数据。 - -- **NO SCROLL** - - 声明游标检索数据行的方式。 - - - NO SCROLL:声明该游标不能用于以倒序的方式检索数据行。 - - 未声明:根据执行计划的不同,自动判断该游标是否可以用于以倒序的方式检索数据行。 - -- **WITH HOLD** - - **WITHOUT HOLD** - - 声明当创建游标的事务结束后,游标是否能继续使用。 - - - WITH HOLD:声明该游标在创建它的事务结束后仍可继续使用。 - - WITHOUT HOLD:声明该游标在创建它的事务之外不能再继续使用,此游标将在事务结束时被自动关闭。 - - 如果不指定WITH HOLD或WITHOUT HOLD,默认行为是WITHOUT HOLD。 - -- **query** - - 使用SELECT或VALUES子句指定游标返回的行。 - - 取值范围:SELECT或VALUES子句。 - -- **declare\_statements** - - 声明变量,包括变量名和变量类型,如“sales\_cnt int”。 - -- **execution\_statements** - - 匿名块中要执行的语句。 - - 取值范围:已存在的函数名称。 - - -## 示例 - -定义游标示例请参考FETCH的[示例](FETCH.md#zh-cn_topic_0283137321_zh-cn_topic_0237122165_zh-cn_topic_0059778422_s1ee72832a27547e4949061a010e24578)。 - -## 相关链接 - -[BEGIN](BEGIN.md),[FETCH](FETCH.md) - +# DECLARE + +## 功能描述 + +DECLARE 命令既可以定义一个游标,用于在一个大的查询里面检索少数几行数据,也可以作为一个匿名块的开始。 + +本节主要描述定义为游标的用法,开启匿名块的用法见[BEGIN](BEGIN.md)。 + +为了处理 SQL 语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 + +通常游标和 SELECT 一样返回文本格式。因为数据在系统内部是用二进制格式存储的,系统必须对数据做一定转换以生成文本格式。一旦数据是以文本形式返回,客户端应用需要把它们转换成二进制进行操作。使用 FETCH 语句,游标可以返回文本或二进制格式。 + +## 注意事项 + +- 游标命令只能在事务块里使用。 +- 应该小心使用二进制游标。文本格式一般都比对应的二进制格式占用的存储空间大。二进制游标返回内部二进制形态的数据,可能更易于操作。如果想以文本方式显示数据,则以文本方式检索会为用户节约很多客户端的工作。比如,如果查询从某个整数列返回 1 ,在缺省的游标里将获得一个字符串 1 ,但在二进制游标里将得到一个 4 字节的包含该数值内部形式的数值(大端顺序)。 + +## 语法格式 + +- 定义游标 + + ``` + DECLARE cursor_name [ BINARY ] [ NO SCROLL ] + CURSOR [ { WITH | WITHOUT } HOLD ] FOR query ; + ``` + +- 开启匿名块 + + ``` + [DECLARE [declare_statements]] + BEGIN + execution_statements + END; + / + ``` + + +## 参数说明 + +- **cursor\_name** + + 将要创建的游标名。 + + 取值范围:遵循数据库对象命名规范。 + +- **BINARY** + + 指明游标以二进制而不是文本格式返回数据。 + +- **NO SCROLL** + + 声明游标检索数据行的方式。 + + - NO SCROLL:声明该游标不能用于以倒序的方式检索数据行。 + - 未声明:根据执行计划的不同,自动判断该游标是否可以用于以倒序的方式检索数据行。 + +- **WITH HOLD** + + **WITHOUT HOLD** + + 声明当创建游标的事务结束后,游标是否能继续使用。 + + - WITH HOLD:声明该游标在创建它的事务结束后仍可继续使用。 + - WITHOUT HOLD:声明该游标在创建它的事务之外不能再继续使用,此游标将在事务结束时被自动关闭。 + - 如果不指定 WITH HOLD 或 WITHOUT HOLD ,默认行为是 WITHOUT HOLD 。 + +- **query** + + 使用 SELECT 或 VALUES 子句指定游标返回的行。 + + 取值范围:SELECT或 VALUES 子句。 + +- **declare\_statements** + + 声明变量,包括变量名和变量类型,如“sales\_cnt int”。 + +- **execution\_statements** + + 匿名块中要执行的语句。 + + 取值范围:已存在的函数名称。 + + +## 示例 + +定义游标示例请参考 FETCH 的[示例](FETCH.md#zh-cn_topic_0283137321_zh-cn_topic_0237122165_zh-cn_topic_0059778422_s1ee72832a27547e4949061a010e24578)。 + +## 相关链接 + +[BEGIN](BEGIN.md),[FETCH](FETCH.md) + diff --git a/content/zh/docs/Developerguide/DELETE.md b/content/zh/docs/Developerguide/DELETE.md index ca1f56594..0d373022a 100644 --- a/content/zh/docs/Developerguide/DELETE.md +++ b/content/zh/docs/Developerguide/DELETE.md @@ -1,106 +1,106 @@ -# DELETE - -## 功能描述 - -DELETE从指定的表里删除满足WHERE子句的行。如果WHERE子句不存在,将删除表中所有行,结果只保留表结构。 - -## 注意事项 - -- 要删除表中的数据,用户必须对它有DELETE权限。同样也必须有USING子句引用的表以及condition上读取的表的SELECT权限。 -- 对于列存表,暂时不支持RETURNING子句。 - -## 语法格式 - -``` -[ WITH [ RECURSIVE ] with_query [, ...] ] -DELETE [/*+ plan_hint */] FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ] - [ USING using_list ] - [ WHERE condition | WHERE CURRENT OF cursor_name ] - [ RETURNING { * | { output_expr [ [ AS ] output_name ] } [, ...] } ]; -``` - -## 参数说明 - -- **WITH \[ RECURSIVE \] with\_query \[, ...\]** - - 用于声明一个或多个可以在主查询中通过名称引用的子查询,相当于临时表。 - - 如果声明了RECURSIVE,那么允许SELECT子查询通过名称引用它自己。 - - 其中with\_query的详细格式为: - - ``` - with_query_name [ ( column_name [, ...] ) ] AS - ( {select | values | insert | update | delete} ) - ``` - - - with\_query\_name指定子查询生成的结果集名称,在查询中可使用该名称访问子查询的结果集。 - - column\_name指定子查询结果集中显示的列名。 - - - 每个子查询可以是SELECT、VALUES、INSERT、UPDATE或DELETE语句。 -- **plan\_hint子句** - - 以/\*+ \*/的形式在DELETE关键字后,用于对DELETE对应的语句块生成的计划进行hint调优,详细用法请参见章节[使用Plan Hint进行调优](使用Plan-Hint进行调优.md)。每条语句中只有第一个/\*+ plan\_hint \*/注释块会作为hint生效,里面可以写多条hint。 - -- **ONLY** - - 如果指定ONLY则只有该表被删除;如果没有声明,则该表和它的所有子表将都被删除。 - -- **table\_name** - - 目标表的名称(可以有模式修饰)。 - - 取值范围:已存在的表名。 - -- **alias** - - 目标表的别名。 - - 取值范围:字符串,符合标识符命名规范。 - -- **using\_list** - - using子句。 - -- **condition** - - 一个返回Boolean值的表达式,用于判断哪些行需要被删除。 - -- **WHERE CURRENT OF cursor\_name** - - 当前不支持,仅保留语法接口。 - -- **output\_expr** - - DELETE命令删除行之后计算输出结果的表达式。该表达式可以使用表的任意字段。可以使用\*返回被删除行的所有字段。 - -- **output\_name** - - 一个字段的输出名称。 - - 取值范围:字符串,符合标识符命名规范。 - - -## 示例 - -``` ---创建表tpcds.customer_address_bak。 -openGauss=# CREATE TABLE tpcds.customer_address_bak AS TABLE tpcds.customer_address; - ---删除tpcds.customer_address_bak中ca_address_sk小于14888的职员。 -openGauss=# DELETE FROM tpcds.customer_address_bak WHERE ca_address_sk < 14888; - ---删除tpcds.customer_address_bak中所有数据。 -openGauss=# DELETE FROM tpcds.customer_address_bak; - ---删除tpcds.customer_address_bak表。 -openGauss=# DROP TABLE tpcds.customer_address_bak; -``` - -## 优化建议 - -- delete - - 如果要删除表中的所有记录,建议使用truncate语法。 - - +# DELETE + +## 功能描述 + +DELETE 从指定的表里删除满足 WHERE 子句的行。如果 WHERE 子句不存在,将删除表中所有行,结果只保留表结构。 + +## 注意事项 + +- 要删除表中的数据,用户必须对它有 DELETE 权限。同样也必须有 USING 子句引用的表以及 condition 上读取的表的 SELECT 权限。 +- 对于列存表,暂时不支持 RETURNING 子句。 + +## 语法格式 + +``` +[ WITH [ RECURSIVE ] with_query [, ...] ] +DELETE [/*+ plan_hint */] FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ] + [ USING using_list ] + [ WHERE condition | WHERE CURRENT OF cursor_name ] + [ RETURNING { * | { output_expr [ [ AS ] output_name ] } [, ...] } ]; +``` + +## 参数说明 + +- **WITH \[ RECURSIVE \] with\_query \[, ...\]** + + 用于声明一个或多个可以在主查询中通过名称引用的子查询,相当于临时表。 + + 如果声明了 RECURSIVE ,那么允许 SELECT 子查询通过名称引用它自己。 + + 其中with\_query的详细格式为: + + ``` + with_query_name [ ( column_name [, ...] ) ] AS + ( {select | values | insert | update | delete} ) + ``` + + - with\_query\_name指定子查询生成的结果集名称,在查询中可使用该名称访问子查询的结果集。 + - column\_name指定子查询结果集中显示的列名。 + + - 每个子查询可以是SELECT、VALUES、INSERT、UPDATE或 DELETE 语句。 +- **plan\_hint子句** + + 以/\*+ \*/的形式在 DELETE 关键字后,用于对 DELETE 对应的语句块生成的计划进行 hint 调优,详细用法请参见章节[使用 Plan Hint 进行调优](使用Plan-Hint进行调优.md)。每条语句中只有第一个/\*+ plan\_hint \*/注释块会作为 hint 生效,里面可以写多条 hint 。 + +- **ONLY** + + 如果指定 ONLY 则只有该表被删除;如果没有声明,则该表和它的所有子表将都被删除。 + +- **table\_name** + + 目标表的名称(可以有模式修饰)。 + + 取值范围:已存在的表名。 + +- **alias** + + 目标表的别名。 + + 取值范围:字符串,符合标识符命名规范。 + +- **using\_list** + +using 子句。 + +- **condition** + + 一个返回 Boolean 值的表达式,用于判断哪些行需要被删除。 + +- **WHERE CURRENT OF cursor\_name** + + 当前不支持,仅保留语法接口。 + +- **output\_expr** + +DELETE 命令删除行之后计算输出结果的表达式。该表达式可以使用表的任意字段。可以使用\*返回被删除行的所有字段。 + +- **output\_name** + + 一个字段的输出名称。 + + 取值范围:字符串,符合标识符命名规范。 + + +## 示例 + +``` +--创建表tpcds.customer_address_bak。 +openGauss=# CREATE TABLE tpcds.customer_address_bak AS TABLE tpcds.customer_address; + +--删除tpcds.customer_address_bak中 ca_address_sk 小于 14888 的职员。 +openGauss=# DELETE FROM tpcds.customer_address_bak WHERE ca_address_sk < 14888; + +--删除tpcds.customer_address_bak中所有数据。 +openGauss=# DELETE FROM tpcds.customer_address_bak; + +--删除tpcds.customer_address_bak表。 +openGauss=# DROP TABLE tpcds.customer_address_bak; +``` + +## 优化建议 + +- delete + + 如果要删除表中的所有记录,建议使用 truncate 语法。 + + diff --git "a/content/zh/docs/Developerguide/DML\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" "b/content/zh/docs/Developerguide/DML\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" index 31f6c0b1c..039e3c9b9 100644 --- "a/content/zh/docs/Developerguide/DML\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" +++ "b/content/zh/docs/Developerguide/DML\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" @@ -1,60 +1,60 @@ -# DML语法一览表 - -DML(Data Manipulation Language数据操作语言),用于对数据库表中的数据进行操作。如:插入、更新、查询、删除。 - -## 插入数据 - -插入数据是往数据库表中添加一条或多条记录,请参考[INSERT](INSERT.md)。 - -## 修改数据 - -修改数据是修改数据库表中的一条或多条记录,请参考[UPDATE](UPDATE.md)。 - -## 查询数据 - -数据库查询语句SELECT是用于在数据库中检索适合条件的信息,请参考[SELECT](SELECT.md)。 - -## 删除数据 - -openGauss提供了两种删除表数据的语句:删除表中指定条件的数据,请参考[DELETE](DELETE.md);或删除表的所有数据,请参考[TRUNCATE](TRUNCATE.md)。 - -TRUNCATE快速地从表中删除所有行,它和在每个表上进行无条件的DELETE有同样的效果,不过因为它不做表扫描,因而快得多。在大表上最有用。 - -## 拷贝数据 - -openGauss提供了在表和文件之间拷贝数据的语句,请参考[COPY](COPY.md)。 - -## 锁定表 - -openGauss提供了多种锁模式用于控制对表中数据的并发访问,请参考[LOCK](LOCK.md)。 - -## 调用函数 - -openGauss提供了三个用于调用函数的语句,它们在语法结构上没有差别,请参考[CALL](CALL.md)。 - -## 操作会话 - -用户与数据库之间建立的连接称为会话,请参考[表1](#zh-cn_topic_0283137022_zh-cn_topic_0237122050_zh-cn_topic_0059777960_t320d7e04ba33427cbe2132b994ef6cb2)。 - -**表 1** 会话相关SQL - - - - - - - - - - - - - -

功能

-

相关SQL

-

修改会话

-

ALTER SESSION

-

结束会话

-

ALTER SYSTEM KILL SESSION

-
- +# DML语法一览表 + +DML(Data Manipulation Language数据操作语言),用于对数据库表中的数据进行操作。如:插入、更新、查询、删除。 + +## 插入数据 + +插入数据是往数据库表中添加一条或多条记录,请参考[INSERT](INSERT.md)。 + +## 修改数据 + +修改数据是修改数据库表中的一条或多条记录,请参考[UPDATE](UPDATE.md)。 + +## 查询数据 + +数据库查询语句 SELECT 是用于在数据库中检索适合条件的信息,请参考[SELECT](SELECT.md)。 + +## 删除数据 + +openGauss 提供了两种删除表数据的语句:删除表中指定条件的数据,请参考[DELETE](DELETE.md);或删除表的所有数据,请参考[TRUNCATE](TRUNCATE.md)。 + +TRUNCATE 快速地从表中删除所有行,它和在每个表上进行无条件的 DELETE 有同样的效果,不过因为它不做表扫描,因而快得多。在大表上最有用。 + +## 拷贝数据 + +openGauss 提供了在表和文件之间拷贝数据的语句,请参考[COPY](COPY.md)。 + +## 锁定表 + +openGauss 提供了多种锁模式用于控制对表中数据的并发访问,请参考[LOCK](LOCK.md)。 + +## 调用函数 + +openGauss 提供了三个用于调用函数的语句,它们在语法结构上没有差别,请参考[CALL](CALL.md)。 + +## 操作会话 + +用户与数据库之间建立的连接称为会话,请参考[表1](#zh-cn_topic_0283137022_zh-cn_topic_0237122050_zh-cn_topic_0059777960_t320d7e04ba33427cbe2132b994ef6cb2)。 + +**表 1** 会话相关SQL + + + + + + + + + + + + + +

功能

+

相关SQL

+

修改会话

+

ALTER SESSION

+

结束会话

+

ALTER SYSTEM KILL SESSION

+
+ diff --git a/content/zh/docs/Developerguide/DO.md b/content/zh/docs/Developerguide/DO.md index 81cd7be1b..328293bb9 100644 --- a/content/zh/docs/Developerguide/DO.md +++ b/content/zh/docs/Developerguide/DO.md @@ -1,51 +1,51 @@ -# DO - -## 功能描述 - -执行匿名代码块。 - -代码块被看做是没有参数的一段函数体,返回值类型是void。它的解析和执行是同一时刻发生的。 - -## 注意事项 - -- 程序语言在使用之前,必须通过命令CREATE LANGUAGE安装到当前的数据库中。 plpgsql是默认的安装语言,其它语言安装时必须指定。 -- 如果语言是不受信任的,用户必须有使用程序语言的USAGE权限,或者是系统管理员。 - -## 语法格式 - -``` -DO [ LANGUAGE lang_name ] code; -``` - -## 参数说明 - -- **lang\_name** - - 用来解析代码的程序语言的名称,如果缺省,默认的语言是plpgsql。 - -- **code** - - 程序语言代码可以被执行的。程序语言必须指定为字符串才行。 - - -## 示例 - -``` ---创建用户webuser。 -openGauss=# CREATE USER webuser PASSWORD 'xxxxxxxxx'; - ---授予用户webuser对模式tpcds下视图的所有操作权限。 -openGauss=# DO $$DECLARE r record; -BEGIN - FOR r IN SELECT c.relname table_name,n.nspname table_schema FROM pg_class c,pg_namespace n - WHERE c.relnamespace = n.oid AND n.nspname = 'tpcds' AND relkind IN ('r','v') - LOOP - EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; - END LOOP; -END$$; - - ---删除用户webuser。 -openGauss=# DROP USER webuser CASCADE; -``` - +# DO + +## 功能描述 + +执行匿名代码块。 + +代码块被看做是没有参数的一段函数体,返回值类型是 void 。它的解析和执行是同一时刻发生的。 + +## 注意事项 + +- 程序语言在使用之前,必须通过命令 CREATE LANGUAGE 安装到当前的数据库中。 plpgsql 是默认的安装语言,其它语言安装时必须指定。 +- 如果语言是不受信任的,用户必须有使用程序语言的 USAGE 权限,或者是系统管理员。 + +## 语法格式 + +``` +DO [ LANGUAGE lang_name ] code; +``` + +## 参数说明 + +- **lang\_name** + + 用来解析代码的程序语言的名称,如果缺省,默认的语言是 plpgsql 。 + +- **code** + + 程序语言代码可以被执行的。程序语言必须指定为字符串才行。 + + +## 示例 + +``` +--创建用户 webuser 。 +openGauss=# CREATE USER webuser PASSWORD 'xxxxxxxxx'; + +--授予用户 webuser 对模式 tpcds 下视图的所有操作权限。 +openGauss=# DO $$DECLARE r record; +BEGIN + FOR r IN SELECT c.relname table_name,n.nspname table_schema FROM pg_class c,pg_namespace n + WHERE c.relnamespace = n.oid AND n.nspname = 'tpcds' AND relkind IN ('r','v') + LOOP + EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; + END LOOP; +END$$; + + +--删除用户 webuser 。 +openGauss=# DROP USER webuser CASCADE; +``` + diff --git a/content/zh/docs/Developerguide/DROP-AGGREGATE.md b/content/zh/docs/Developerguide/DROP-AGGREGATE.md index 44c30e9a6..b87883693 100644 --- a/content/zh/docs/Developerguide/DROP-AGGREGATE.md +++ b/content/zh/docs/Developerguide/DROP-AGGREGATE.md @@ -1,51 +1,51 @@ -# DROP AGGREGATE - -## 功能描述 - -删除一个聚合函数。 - -## 注意事项 - -DROP AGGREGATE删除一个现存的聚合函数,执行这条命令的用户必须是该聚合函数的所有者。 - -## 语法格式 - -``` -DROP AGGREGATE [ IF EXISTS ] name ( argtype [ , ... ] ) [ CASCADE | RESTRICT ] -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的聚合不存在,那么发出一个 notice 而不是抛出一个错误。 - -- **name** - - 现存的聚合函数名(可以有模式修饰)。 - -- **argtype** - - 聚合函数操作的输入数据类型,要引用一个零参数聚合函数,请用\*代替输入数据类型列表。 - -- **CASCADE** - - 级联删除依赖于这个聚合函数的对象。 - -- **RESTRICT** - - 如果有任何依赖对象,则拒绝删除这个聚合函数。这是缺省处理。 - - -## 示例 - -将integer类型的聚合函数myavg删除: - -``` -DROP AGGREGATE myavg(integer); -``` - -## 兼容性 - -SQL 标准里没有DROP AGGREGATE语句。 - +# DROP AGGREGATE + +## 功能描述 + +删除一个聚合函数。 + +## 注意事项 + +DROP AGGREGATE 删除一个现存的聚合函数,执行这条命令的用户必须是该聚合函数的所有者。 + +## 语法格式 + +``` +DROP AGGREGATE [ IF EXISTS ] name ( argtype [ , ... ] ) [ CASCADE | RESTRICT ] +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的聚合不存在,那么发出一个 notice 而不是抛出一个错误。 + +- **name** + + 现存的聚合函数名(可以有模式修饰)。 + +- **argtype** + + 聚合函数操作的输入数据类型,要引用一个零参数聚合函数,请用\*代替输入数据类型列表。 + +- **CASCADE** + + 级联删除依赖于这个聚合函数的对象。 + +- **RESTRICT** + + 如果有任何依赖对象,则拒绝删除这个聚合函数。这是缺省处理。 + + +## 示例 + +将 integer 类型的聚合函数 myavg 删除: + +``` +DROP AGGREGATE myavg(integer); +``` + +## 兼容性 + +SQL 标准里没有 DROP AGGREGATE 语句。 + diff --git a/content/zh/docs/Developerguide/DROP-AUDIT-POLICY.md b/content/zh/docs/Developerguide/DROP-AUDIT-POLICY.md index be3588ebe..cedda36d7 100644 --- a/content/zh/docs/Developerguide/DROP-AUDIT-POLICY.md +++ b/content/zh/docs/Developerguide/DROP-AUDIT-POLICY.md @@ -1,32 +1,32 @@ -# DROP AUDIT POLICY - -## 功能描述 - -删除一个审计策略。 - -## 注意事项 - -只有poladmin、sysadmin或初始用户才能进行此操作。 - -## 语法格式 - -``` -DROP AUDIT POLICY [IF EXISTS] policy_name; -``` - -## 参数说明 - -policy\_name - -审计策略名称,需要唯一,不可重复。 - -取值范围:字符串,要符合标识符的命名规范。 - -## 示例 - -请参考CREATE AUDIT POLICY的[示例](CREATE-AUDIT-POLICY.md#section7854941155112)。 - -## 相关链接 - -[ALTER AUDIT POLICY](ALTER-AUDIT-POLICY.md),[CREATE AUDIT POLICY](CREATE-AUDIT-POLICY.md)。 - +# DROP AUDIT POLICY + +## 功能描述 + +删除一个审计策略。 + +## 注意事项 + +只有poladmin、sysadmin或初始用户才能进行此操作。 + +## 语法格式 + +``` +DROP AUDIT POLICY [IF EXISTS] policy_name; +``` + +## 参数说明 + +policy\_name + +审计策略名称,需要唯一,不可重复。 + +取值范围:字符串,要符合标识符的命名规范。 + +## 示例 + +请参考 CREATE AUDIT POLICY 的[示例](CREATE-AUDIT-POLICY.md#section7854941155112)。 + +## 相关链接 + +[ALTER AUDIT POLICY](ALTER-AUDIT-POLICY.md),[CREATE AUDIT POLICY](CREATE-AUDIT-POLICY.md)。 + diff --git a/content/zh/docs/Developerguide/DROP-CAST.md b/content/zh/docs/Developerguide/DROP-CAST.md index bbedbbacb..9c9cb1d78 100644 --- a/content/zh/docs/Developerguide/DROP-CAST.md +++ b/content/zh/docs/Developerguide/DROP-CAST.md @@ -1,51 +1,51 @@ -# DROP CAST - -## 功能描述 - -删除一个类型转换。 - -## 注意事项 - -DROP CAST删除一个先前定义过的类型转换。 - -要能删除一个类型转换,你必须拥有源或者目的数据类型。这是和创建一个类型转换相同的权限。 - -## 语法格式 - -``` -DROP CAST [ IF EXISTS ] (source_type AS target_type) [ CASCADE | RESTRICT ] -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的转换不存在,那么发出一个 notice 而不是抛出一个错误。 - -- **source\_type** - - 类型转换里的源数据类型。 - -- **target\_type** - - 类型转换里的目标数据类型。 - -- **CASCADE** - - **RESTRICT** - - 这些键字没有任何效果,因为在类型转换上没有依赖关系。 - - -## 示例 - -删除从text到int的转换: - -``` -DROP CAST (text AS int); -``` - -## 兼容性 - -DROP CAST遵循 SQL 标准。 - +# DROP CAST + +## 功能描述 + +删除一个类型转换。 + +## 注意事项 + +DROP CAST 删除一个先前定义过的类型转换。 + +要能删除一个类型转换,你必须拥有源或者目的数据类型。这是和创建一个类型转换相同的权限。 + +## 语法格式 + +``` +DROP CAST [ IF EXISTS ] (source_type AS target_type) [ CASCADE | RESTRICT ] +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的转换不存在,那么发出一个 notice 而不是抛出一个错误。 + +- **source\_type** + + 类型转换里的源数据类型。 + +- **target\_type** + + 类型转换里的目标数据类型。 + +- **CASCADE** + + **RESTRICT** + + 这些键字没有任何效果,因为在类型转换上没有依赖关系。 + + +## 示例 + +删除从 text 到 int 的转换: + +``` +DROP CAST (text AS int); +``` + +## 兼容性 + +DROP CAST 遵循 SQL 标准。 + diff --git a/content/zh/docs/Developerguide/DROP-CLIENT-MASTER-KEY.md b/content/zh/docs/Developerguide/DROP-CLIENT-MASTER-KEY.md index 10211409d..835584ddb 100644 --- a/content/zh/docs/Developerguide/DROP-CLIENT-MASTER-KEY.md +++ b/content/zh/docs/Developerguide/DROP-CLIENT-MASTER-KEY.md @@ -1,47 +1,47 @@ -# DROP CLIENT MASTER KEY - -## 功能描述 - -删除一个客户端加密主密钥(CMK)。 - -## 注意事项 - -- 只有客户端加密主密钥所有者或者被授予了DROP权限的用户有权限执行命令,系统管理员默认拥有此权限。 -- 该命令不仅删除数据库中的密钥对象,还会同时删除客户端指定路径下该密钥对象对应的密钥文件。 - -## 语法格式 - -``` -DROP CLIENT MASTER KEY [ IF EXISTS ] client_master_key_name [CASCADE]; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的客户端加密主密钥不存在,则发出一个notice而不是抛出一个错误。 - -- **client\_master\_key\_name** - - 要删除的客户端加密主密钥名称。 - - 取值范围:字符串,已存在的客户端加密主密钥对象的名称。 - -- **CASCADE** - - **CASCADE**:表示允许级联删除依赖于客户端加密主密钥的对象。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >在执行本语法的生命周期中,同时需要客户端和服务端更改状态,发生异常时可能存在服务端已删除密钥信息,但客户端未删除密钥文件的情况。 - >此时,客户端并不会在执行下一条语法的生命周期中,检查是否有期望被删除但却因发生异常而未被删除的密钥文件,而是需要用户定期检查密钥文件夹,对未被使用的密钥文件进行确认并处理。 - - - -## **示例** - -``` ---删除客户端加密主密钥对象。 -openGauss=> DROP CLIENT MASTER KEY ImgCMK CASCADE; -NOTICE: drop cascades to column setting: imgcek -DROP CLIENT MASTER KEY -``` - +# DROP CLIENT MASTER KEY + +## 功能描述 + +删除一个客户端加密主密钥(CMK)。 + +## 注意事项 + +- 只有客户端加密主密钥所有者或者被授予了 DROP 权限的用户有权限执行命令,系统管理员默认拥有此权限。 +- 该命令不仅删除数据库中的密钥对象,还会同时删除客户端指定路径下该密钥对象对应的密钥文件。 + +## 语法格式 + +``` +DROP CLIENT MASTER KEY [ IF EXISTS ] client_master_key_name [CASCADE]; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的客户端加密主密钥不存在,则发出一个 notice 而不是抛出一个错误。 + +- **client\_master\_key\_name** + + 要删除的客户端加密主密钥名称。 + + 取值范围:字符串,已存在的客户端加密主密钥对象的名称。 + +- **CASCADE** + - **CASCADE**:表示允许级联删除依赖于客户端加密主密钥的对象。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >在执行本语法的生命周期中,同时需要客户端和服务端更改状态,发生异常时可能存在服务端已删除密钥信息,但客户端未删除密钥文件的情况。 + >此时,客户端并不会在执行下一条语法的生命周期中,检查是否有期望被删除但却因发生异常而未被删除的密钥文件,而是需要用户定期检查密钥文件夹,对未被使用的密钥文件进行确认并处理。 + + + +## **示例** + +``` +--删除客户端加密主密钥对象。 +openGauss=> DROP CLIENT MASTER KEY ImgCMK CASCADE; +NOTICE: drop cascades to column setting: imgcek +DROP CLIENT MASTER KEY +``` + diff --git a/content/zh/docs/Developerguide/DROP-COLUMN-ENCRYPTION-KEY.md b/content/zh/docs/Developerguide/DROP-COLUMN-ENCRYPTION-KEY.md index 6038ce2c6..0738fb616 100644 --- a/content/zh/docs/Developerguide/DROP-COLUMN-ENCRYPTION-KEY.md +++ b/content/zh/docs/Developerguide/DROP-COLUMN-ENCRYPTION-KEY.md @@ -1,38 +1,38 @@ -# DROP COLUMN ENCRYPTION KEY - -## 功能描述 - -删除一个列加密密钥(CEK)。 - -## 注意事项 - -只有列加密密钥所有者或者被授予了DROP权限的用户有权限执行命令,系统管理员默认拥有此权限。 - -## 语法格式 - -``` -DROP COLUMN ENCRYPTION KEY [ IF EXISTS ] column_encryption_key_name [CASCADE]; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的列加密密钥不存在,则发出一个notice而不是抛出一个错误。 - -- **column\_encryption\_key\_name** - - 要删除的列加密密钥名称。 - - 取值范围:字符串,已存在的列加密密钥名称。 - - -## 示例 - -``` ---删除列加密密钥。 -openGauss=# DROP COLUMN ENCRYPTION KEY ImgCEK CASCADE; -ERROR: cannot drop column setting: imgcek cascadely because encrypted column depend on it. -HINT: we have to drop encrypted column: name, ... before drop column setting: imgcek cascadely. -``` - +# DROP COLUMN ENCRYPTION KEY + +## 功能描述 + +删除一个列加密密钥(CEK)。 + +## 注意事项 + +只有列加密密钥所有者或者被授予了 DROP 权限的用户有权限执行命令,系统管理员默认拥有此权限。 + +## 语法格式 + +``` +DROP COLUMN ENCRYPTION KEY [ IF EXISTS ] column_encryption_key_name [CASCADE]; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的列加密密钥不存在,则发出一个 notice 而不是抛出一个错误。 + +- **column\_encryption\_key\_name** + + 要删除的列加密密钥名称。 + + 取值范围:字符串,已存在的列加密密钥名称。 + + +## 示例 + +``` +--删除列加密密钥。 +openGauss=# DROP COLUMN ENCRYPTION KEY ImgCEK CASCADE; +ERROR: cannot drop column setting: imgcek cascadely because encrypted column depend on it. +HINT: we have to drop encrypted column: name, ... before drop column setting: imgcek cascadely. +``` + diff --git a/content/zh/docs/Developerguide/DROP-DATA-SOURCE.md b/content/zh/docs/Developerguide/DROP-DATA-SOURCE.md index 8e2c749c1..dccf88094 100644 --- a/content/zh/docs/Developerguide/DROP-DATA-SOURCE.md +++ b/content/zh/docs/Developerguide/DROP-DATA-SOURCE.md @@ -1,51 +1,51 @@ -# DROP DATA SOURCE - -## 功能描述 - -删除一个Data Source对象。 - -## 注意事项 - -只有属主/系统管理员/初始用户才可以删除一个Data Source对象。 - -## 语法格式 - -``` -DROP DATA SOURCE [IF EXISTS] src_name [CASCADE | RESTRICT]; -``` - -## 参数说明 - -- **src\_name** - - 待删除的Data Source对象名称。 - - 取值范围:字符串,符合标识符命名规范。 - -- **IF EXISTS** - - 如果指定的Data Source不存在,则发出一个notice而不是报错。 - -- **CASCADE | RESTRICT** - - **CASCADE**:表示允许级联删除依赖于Data Source的对象。 - - **RESTRICT**(缺省值):表示有依赖于该Data Source的对象存在,则该Data Source无法删除。 - - 目前Data Source对象没有被依赖的对象,CASCADE和RESTRICT效果一样,保留此选项是为了向后兼容性。 - - - -## 示例 - -``` ---创建Data Source对象。 -openGauss=# CREATE DATA SOURCE ds_tst1; - ---删除Data Source对象。 -openGauss=# DROP DATA SOURCE ds_tst1 CASCADE; -openGauss=# DROP DATA SOURCE IF EXISTS ds_tst1 RESTRICT; -``` - -## 相关链接 - -[CREATE DATA SOURCE](CREATE-DATA-SOURCE.md),[ALTER DATA SOURCE](ALTER-DATA-SOURCE.md) - +# DROP DATA SOURCE + +## 功能描述 + +删除一个 Data Source 对象。 + +## 注意事项 + +只有属主/系统管理员/初始用户才可以删除一个 Data Source 对象。 + +## 语法格式 + +``` +DROP DATA SOURCE [IF EXISTS] src_name [CASCADE | RESTRICT]; +``` + +## 参数说明 + +- **src\_name** + + 待删除的 Data Source 对象名称。 + + 取值范围:字符串,符合标识符命名规范。 + +- **IF EXISTS** + + 如果指定的 Data Source 不存在,则发出一个 notice 而不是报错。 + +- **CASCADE | RESTRICT** + - **CASCADE**:表示允许级联删除依赖于 Data Source 的对象。 + - **RESTRICT**(缺省值):表示有依赖于该 Data Source 的对象存在,则该 Data Source 无法删除。 + + 目前 Data Source 对象没有被依赖的对象, CASCADE 和 RESTRICT 效果一样,保留此选项是为了向后兼容性。 + + + +## 示例 + +``` +--创建 Data Source 对象。 +openGauss=# CREATE DATA SOURCE ds_tst1; + +--删除 Data Source 对象。 +openGauss=# DROP DATA SOURCE ds_tst1 CASCADE; +openGauss=# DROP DATA SOURCE IF EXISTS ds_tst1 RESTRICT; +``` + +## 相关链接 + +[CREATE DATA SOURCE](CREATE-DATA-SOURCE.md),[ALTER DATA SOURCE](ALTER-DATA-SOURCE.md) + diff --git a/content/zh/docs/Developerguide/DROP-DATABASE.md b/content/zh/docs/Developerguide/DROP-DATABASE.md index 00946a3f7..95a87aa15 100644 --- a/content/zh/docs/Developerguide/DROP-DATABASE.md +++ b/content/zh/docs/Developerguide/DROP-DATABASE.md @@ -1,51 +1,51 @@ -# DROP DATABASE - -## 功能描述 - -删除一个数据库。 - -## 注意事项 - -- 只有数据库所有者或者被授予了数据库DROP权限的用户有权限执行DROP DATABASE命令,系统管理员默认拥有此权限。 -- 不能对系统默认安装的三个数据库(POSTGRES、TEMPLATE0和TEMPLATE1)执行删除操作,系统做了保护。如果想查看当前服务中有哪几个数据库,可以用gsql的\\l命令查看。 -- 如果有用户正在与要删除的数据库连接,则删除操作失败。 -- 不能在事务块中执行DROP DATABASE命令。 -- 如果执行DROP DATABASE失败,事务回滚,需要再次执行一次DROP DATABASE IF EXISTS。 - ->![](public_sys-resources/icon-notice.gif) **须知:** ->DROP DATABASE一旦执行将无法撤销,请谨慎使用。 - -## 语法格式 - -``` -DROP DATABASE [ IF EXISTS ] database_name ; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的数据库不存在,则发出一个notice而不是抛出一个错误。 - -- **database\_name** - - 要删除的数据库名称。 - - 取值范围:字符串,已存在的数据库名称。 - - -## 示例 - -请参见CREATE DATABASE的[示例](CREATE-DATABASE.md#zh-cn_topic_0283137050_zh-cn_topic_0237122099_zh-cn_topic_0059778277_s6be7b8abbb4b4aceb9dae686434d672c)。 - -## 相关链接 - -[CREATE DATABASE](CREATE-DATABASE.md) - -## 优化建议 - -- drop database - - 不支持在事务中删除database。 - - +# DROP DATABASE + +## 功能描述 + +删除一个数据库。 + +## 注意事项 + +- 只有数据库所有者或者被授予了数据库 DROP 权限的用户有权限执行 DROP DATABASE 命令,系统管理员默认拥有此权限。 +- 不能对系统默认安装的三个数据库(POSTGRES、TEMPLATE0和TEMPLATE1)执行删除操作,系统做了保护。如果想查看当前服务中有哪几个数据库,可以用 gsql 的\\l命令查看。 +- 如果有用户正在与要删除的数据库连接,则删除操作失败。 +- 不能在事务块中执行 DROP DATABASE 命令。 +- 如果执行 DROP DATABASE 失败,事务回滚,需要再次执行一次 DROP DATABASE IF EXISTS 。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>DROP DATABASE一旦执行将无法撤销,请谨慎使用。 + +## 语法格式 + +``` +DROP DATABASE [ IF EXISTS ] database_name ; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的数据库不存在,则发出一个 notice 而不是抛出一个错误。 + +- **database\_name** + + 要删除的数据库名称。 + + 取值范围:字符串,已存在的数据库名称。 + + +## 示例 + +请参见 CREATE DATABASE 的[示例](CREATE-DATABASE.md#zh-cn_topic_0283137050_zh-cn_topic_0237122099_zh-cn_topic_0059778277_s6be7b8abbb4b4aceb9dae686434d672c)。 + +## 相关链接 + +[CREATE DATABASE](CREATE-DATABASE.md) + +## 优化建议 + +- drop database + + 不支持在事务中删除 database 。 + + diff --git a/content/zh/docs/Developerguide/DROP-DIRECTORY.md b/content/zh/docs/Developerguide/DROP-DIRECTORY.md index a25115883..c18ef5357 100644 --- a/content/zh/docs/Developerguide/DROP-DIRECTORY.md +++ b/content/zh/docs/Developerguide/DROP-DIRECTORY.md @@ -1,41 +1,41 @@ -# DROP DIRECTORY - -## 功能描述 - -删除指定的directory对象。 - -## 注意事项 - -当enable_access_server_directory=off时,只允许初始用户删除directory对象;当enable_access_server_directory=on时,具有SYSADMIN权限的用户、directory对象的属主、被授予了该directory的DROP权限的用户或者继承了内置角色gs_rloe_directory_drop权限的用户可以删除directory。 - -## 语法格式 - -``` -DROP DIRECTORY [ IF EXISTS ] directory_name; -``` - -## 参数说明 - -- **directory\_name** - - 目录名称。 - - 取值范围:已经存在的目录名。 - - -## 示例 - -``` ---创建目录。 -openGauss=# CREATE OR REPLACE DIRECTORY dir as '/tmp/'; - ---删除目录。 -openGauss=# DROP DIRECTORY dir; -``` - -## 相关链接 - -[CREATE DIRECTORY](CREATE-DIRECTORY.md),[ALTER DIRECTORY](ALTER-DIRECTORY.md) - +# DROP DIRECTORY + +## 功能描述 + +删除指定的 directory 对象。 + +## 注意事项 + +当enable_access_server_directory=off时,只允许初始用户删除 directory 对象;当enable_access_server_directory=on时,具有 SYSADMIN 权限的用户、directory对象的属主、被授予了该 directory 的 DROP 权限的用户或者继承了内置角色 gs_rloe_directory_drop 权限的用户可以删除 directory 。 + +## 语法格式 + +``` +DROP DIRECTORY [ IF EXISTS ] directory_name; +``` + +## 参数说明 + +- **directory\_name** + + 目录名称。 + + 取值范围:已经存在的目录名。 + + +## 示例 + +``` +--创建目录。 +openGauss=# CREATE OR REPLACE DIRECTORY dir as '/tmp/'; + +--删除目录。 +openGauss=# DROP DIRECTORY dir; +``` + +## 相关链接 + +[CREATE DIRECTORY](CREATE-DIRECTORY.md),[ALTER DIRECTORY](ALTER-DIRECTORY.md) + diff --git a/content/zh/docs/Developerguide/DROP-EXTENSION.md b/content/zh/docs/Developerguide/DROP-EXTENSION.md index 1db631664..01bec07a4 100644 --- a/content/zh/docs/Developerguide/DROP-EXTENSION.md +++ b/content/zh/docs/Developerguide/DROP-EXTENSION.md @@ -1,46 +1,46 @@ -# DROP EXTENSION - -## 功能描述 - -删除一个扩展。 - -## 注意事项 - -- DROP EXTENSION命令从数据库中删除一个扩展。在删除扩展的过程中,构成扩展的组件也会一起删除。 -- 必须是扩展的拥有者才能够使用DROP EXTENSION命令。 - -## 语法格式 - -``` -DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] -``` - -## 参数说明 - -- **IF EXISTS** - - 当使用IF EXISTS参数,如果扩展不存在时,不会抛出错误,而是产生一个通知。 - -- **name** - - 已经安装的扩展模块的名称。 - -- **CASCADE** - - 自动删除依赖于该扩展的对象。 - -- **RESTRICT** - - 如果有依赖于扩展的对象,则不允许删除次扩展(除非它所有的成员对象和其它扩展对象在一条DROP命令一起删除)。这是缺省行为。 - - -## 示例 - -从当前数据库中删除扩展hstore - -``` -DROP EXTENSION hstore; -``` - -在当前数据库中,如果有使用hstore的对象的,这条命令就会失败,比如任一表中的字段使用hstore类型。这时增加CASCADE选项会强制删除扩展和依赖于扩展的对象。 - +# DROP EXTENSION + +## 功能描述 + +删除一个扩展。 + +## 注意事项 + +- DROP EXTENSION命令从数据库中删除一个扩展。在删除扩展的过程中,构成扩展的组件也会一起删除。 +- 必须是扩展的拥有者才能够使用 DROP EXTENSION 命令。 + +## 语法格式 + +``` +DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] +``` + +## 参数说明 + +- **IF EXISTS** + + 当使用 IF EXISTS 参数,如果扩展不存在时,不会抛出错误,而是产生一个通知。 + +- **name** + + 已经安装的扩展模块的名称。 + +- **CASCADE** + + 自动删除依赖于该扩展的对象。 + +- **RESTRICT** + + 如果有依赖于扩展的对象,则不允许删除次扩展(除非它所有的成员对象和其它扩展对象在一条 DROP 命令一起删除)。这是缺省行为。 + + +## 示例 + +从当前数据库中删除扩展hstore + +``` +DROP EXTENSION hstore; +``` + +在当前数据库中,如果有使用 hstore 的对象的,这条命令就会失败,比如任一表中的字段使用 hstore 类型。这时增加 CASCADE 选项会强制删除扩展和依赖于扩展的对象。 + diff --git a/content/zh/docs/Developerguide/DROP-FOREIGN-TABLE.md b/content/zh/docs/Developerguide/DROP-FOREIGN-TABLE.md index c8a978917..26d25dd80 100644 --- a/content/zh/docs/Developerguide/DROP-FOREIGN-TABLE.md +++ b/content/zh/docs/Developerguide/DROP-FOREIGN-TABLE.md @@ -1,41 +1,41 @@ -# DROP FOREIGN TABLE - -## 功能描述 - -删除指定的外表。 - -## 注意事项 - -DROP FOREIGN TABLE会强制删除指定的表,删除表后,依赖该表的索引会被删除,因此引用该表的函数和存储过程将无法执行。 - -## 语法格式 - -``` -DROP FOREIGN TABLE [ IF EXISTS ] - table_name [, ...] [ CASCADE | RESTRICT ]; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的表不存在,则发出一个notice而不是抛出一个错误。 - -- **table\_name** - - 表名称。 - - 取值范围:已存在的表名。 - -- **CASCADE | RESTRICT** - - - CASCADE:级联删除依赖于表的对象(比如视图)。 - - - RESTRICT:如果存在依赖对象,则拒绝删除该表。这个是缺省。 - - - -## 相关链接 - -[ALTER FOREIGN TABLE](ALTER-FOREIGN-TABLE.md),[CREATE FOREIGN TABLE](CREATE-FOREIGN-TABLE.md) - +# DROP FOREIGN TABLE + +## 功能描述 + +删除指定的外表。 + +## 注意事项 + +DROP FOREIGN TABLE 会强制删除指定的表,删除表后,依赖该表的索引会被删除,因此引用该表的函数和存储过程将无法执行。 + +## 语法格式 + +``` +DROP FOREIGN TABLE [ IF EXISTS ] + table_name [, ...] [ CASCADE | RESTRICT ]; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的表不存在,则发出一个 notice 而不是抛出一个错误。 + +- **table\_name** + + 表名称。 + + 取值范围:已存在的表名。 + +- **CASCADE | RESTRICT** + + - CASCADE:级联删除依赖于表的对象(比如视图)。 + + - RESTRICT:如果存在依赖对象,则拒绝删除该表。这个是缺省。 + + + +## 相关链接 + +[ALTER FOREIGN TABLE](ALTER-FOREIGN-TABLE.md),[CREATE FOREIGN TABLE](CREATE-FOREIGN-TABLE.md) + diff --git a/content/zh/docs/Developerguide/DROP-FUNCTION.md b/content/zh/docs/Developerguide/DROP-FUNCTION.md index c5a9e94ba..d85bc01ab 100644 --- a/content/zh/docs/Developerguide/DROP-FUNCTION.md +++ b/content/zh/docs/Developerguide/DROP-FUNCTION.md @@ -1,51 +1,51 @@ -# DROP FUNCTION - -## 功能描述 - -删除一个已存在的函数。 - -## 注意事项 - -- 如果函数中涉及对临时表相关操作,则无法使用DROP FUNCTION删除函数。 -- 只有函数的所有者或者被授予了函数DROP权限的用户才能执行DROP FUNCTION命令,系统管理员默认拥有该权限。 - -## 语法格式 - -``` -DROP FUNCTION [ IF EXISTS ] function_name -[ ( [ {[ argmode ] [ argname ] argtype} [, ...] ] ) [ CASCADE | RESTRICT ] ]; -``` - -## 参数说明 - -- **IF EXISTS** - - IF EXISTS表示,如果函数存在则执行删除操作,函数不存在也不会报错,只是发出一个notice。 - -- **function\_name** - - 要删除的函数名称。 - - 取值范围:已存在的函数名。 - -- **argmode** - - 函数参数的模式。 - -- **argname** - - 函数参数的名称。 - -- **argtype** - - 函数参数的类型。 - - -## 示例 - -请参见的[示例](CREATE-FUNCTION.md#zh-cn_topic_0283136560_zh-cn_topic_0237122104_zh-cn_topic_0059778837_scc61c5d3cc3e48c1a1ef323652dda821)。 - -## 相关链接 - -[ALTER FUNCTION](ALTER-FUNCTION.md),[CREATE FUNCTION](CREATE-FUNCTION.md) - +# DROP FUNCTION + +## 功能描述 + +删除一个已存在的函数。 + +## 注意事项 + +- 如果函数中涉及对临时表相关操作,则无法使用 DROP FUNCTION 删除函数。 +- 只有函数的所有者或者被授予了函数 DROP 权限的用户才能执行 DROP FUNCTION 命令,系统管理员默认拥有该权限。 + +## 语法格式 + +``` +DROP FUNCTION [ IF EXISTS ] function_name +[ ( [ {[ argmode ] [ argname ] argtype} [, ...] ] ) [ CASCADE | RESTRICT ] ]; +``` + +## 参数说明 + +- **IF EXISTS** + +IF EXISTS 表示,如果函数存在则执行删除操作,函数不存在也不会报错,只是发出一个 notice 。 + +- **function\_name** + + 要删除的函数名称。 + + 取值范围:已存在的函数名。 + +- **argmode** + + 函数参数的模式。 + +- **argname** + + 函数参数的名称。 + +- **argtype** + + 函数参数的类型。 + + +## 示例 + +请参见的[示例](CREATE-FUNCTION.md#zh-cn_topic_0283136560_zh-cn_topic_0237122104_zh-cn_topic_0059778837_scc61c5d3cc3e48c1a1ef323652dda821)。 + +## 相关链接 + +[ALTER FUNCTION](ALTER-FUNCTION.md),[CREATE FUNCTION](CREATE-FUNCTION.md) + diff --git a/content/zh/docs/Developerguide/DROP-GROUP.md b/content/zh/docs/Developerguide/DROP-GROUP.md index 2ac0af9ba..7b115b8d7 100644 --- a/content/zh/docs/Developerguide/DROP-GROUP.md +++ b/content/zh/docs/Developerguide/DROP-GROUP.md @@ -1,26 +1,26 @@ -# DROP GROUP - -## 功能描述 - -删除用户组。 - -DROP GROUP是DROP ROLE的别名。 - -## 注意事项 - -DROP GROUP是openGauss管理工具封装的接口,用来实现openGauss管理。该接口不建议用户直接使用,以免对openGauss状态造成影响。 - -## 语法格式 - -``` -DROP GROUP [ IF EXISTS ] group_name [, ...]; -``` - -## 参数说明 - -请参见DROP ROLE的[参数说明](DROP-ROLE.md#zh-cn_topic_0283136937_zh-cn_topic_0237122147_zh-cn_topic_0059778848_sabe550f7ed48409b8ffd1d88ca9f0725)。 - -## 相关链接 - -[CREATE GROUP](CREATE-GROUP.md),[ALTER GROUP](ALTER-GROUP.md),[DROP ROLE](DROP-ROLE.md) - +# DROP GROUP + +## 功能描述 + +删除用户组。 + +DROP GROUP 是 DROP ROLE 的别名。 + +## 注意事项 + +DROP GROUP 是 openGauss 管理工具封装的接口,用来实现 openGauss 管理。该接口不建议用户直接使用,以免对 openGauss 状态造成影响。 + +## 语法格式 + +``` +DROP GROUP [ IF EXISTS ] group_name [, ...]; +``` + +## 参数说明 + +请参见 DROP ROLE 的[参数说明](DROP-ROLE.md#zh-cn_topic_0283136937_zh-cn_topic_0237122147_zh-cn_topic_0059778848_sabe550f7ed48409b8ffd1d88ca9f0725)。 + +## 相关链接 + +[CREATE GROUP](CREATE-GROUP.md),[ALTER GROUP](ALTER-GROUP.md),[DROP ROLE](DROP-ROLE.md) + diff --git a/content/zh/docs/Developerguide/DROP-INDEX.md b/content/zh/docs/Developerguide/DROP-INDEX.md index ee9b399a9..a2e4e6d97 100644 --- a/content/zh/docs/Developerguide/DROP-INDEX.md +++ b/content/zh/docs/Developerguide/DROP-INDEX.md @@ -1,50 +1,50 @@ -# DROP INDEX - -## 功能描述 - -删除索引。 - -## 注意事项 - -只有索引的所有者或者拥有索引所在表的INDEX权限的用户有权限执行DROP INDEX命令,系统管理员默认拥有此权限。 - -## 语法格式 - -``` -DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] - index_name [, ...] [ CASCADE | RESTRICT ]; -``` - -## 参数说明 - -- **CONCURRENTLY** - - 以不加锁的方式删除索引。删除索引时,一般会阻塞其他语句对该索引所依赖表的访问。加此关键字,可实现删除过程中不做阻塞。 - - 此选项只能指定一个索引的名称,并且CASCADE选项不支持。 - - 普通DROP INDEX命令可以在事务内执行,但是DROP INDEX CONCURRENTLY不可以在事务内执行。 - -- **IF EXISTS** - - 如果指定的索引不存在,则发出一个notice而不是抛出一个错误。 - -- **index\_name** - - 要删除的索引名。 - - 取值范围:已存在的索引。 - -- **CASCADE | RESTRICT** - - CASCADE:表示允许级联删除依赖于该索引的对象。 - - RESTRICT(缺省值):表示有依赖与此索引的对象存在,则该索引无法被删除。 - - -## 示例 - -请参见CREATE INDEX的[示例](CREATE-INDEX.md#zh-cn_topic_0283136578_zh-cn_topic_0237122106_zh-cn_topic_0059777455_s985289833081489e9d77c485755bd362)。 - -## 相关链接 - -[ALTER INDEX](ALTER-INDEX.md),[CREATE INDEX](CREATE-INDEX.md) - +# DROP INDEX + +## 功能描述 + +删除索引。 + +## 注意事项 + +只有索引的所有者或者拥有索引所在表的 INDEX 权限的用户有权限执行 DROP INDEX 命令,系统管理员默认拥有此权限。 + +## 语法格式 + +``` +DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] + index_name [, ...] [ CASCADE | RESTRICT ]; +``` + +## 参数说明 + +- **CONCURRENTLY** + + 以不加锁的方式删除索引。删除索引时,一般会阻塞其他语句对该索引所依赖表的访问。加此关键字,可实现删除过程中不做阻塞。 + + 此选项只能指定一个索引的名称,并且 CASCADE 选项不支持。 + + 普通 DROP INDEX 命令可以在事务内执行,但是 DROP INDEX CONCURRENTLY 不可以在事务内执行。 + +- **IF EXISTS** + + 如果指定的索引不存在,则发出一个 notice 而不是抛出一个错误。 + +- **index\_name** + + 要删除的索引名。 + + 取值范围:已存在的索引。 + +- **CASCADE | RESTRICT** + - CASCADE:表示允许级联删除依赖于该索引的对象。 + - RESTRICT(缺省值):表示有依赖与此索引的对象存在,则该索引无法被删除。 + + +## 示例 + +请参见 CREATE INDEX 的[示例](CREATE-INDEX.md#zh-cn_topic_0283136578_zh-cn_topic_0237122106_zh-cn_topic_0059777455_s985289833081489e9d77c485755bd362)。 + +## 相关链接 + +[ALTER INDEX](ALTER-INDEX.md),[CREATE INDEX](CREATE-INDEX.md) + diff --git a/content/zh/docs/Developerguide/DROP-LANGUAGE.md b/content/zh/docs/Developerguide/DROP-LANGUAGE.md index 5496d5d29..ae20c3539 100644 --- a/content/zh/docs/Developerguide/DROP-LANGUAGE.md +++ b/content/zh/docs/Developerguide/DROP-LANGUAGE.md @@ -1,43 +1,43 @@ -# DROP LANGUAGE - -## 功能描述 - -删除一个过程语言。单机和集中式暂不支持删除过程语言。 - -## 语法格式 - -``` -DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ] -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的过程语言不存在,那么发出一个 notice 而不是抛出一个错误。 - -- **name** - - 现存语言的名称。出于向下兼容的考虑,这个名字可以用单引号包围。 - -- **CASCADE** - - 级联删除依赖于该语言的对象(比如该语言写的函数)。 - -- **RESTRICT** - - 如果存在依赖对象,则拒绝删除。这个是缺省。 - - -## 示例 - -下面命令删除plsample语言: - -``` -DROP LANGUAGE plsample; -``` - -## 兼容性 - -SQL标准里没有DROP LANGUAGE语句。 - +# DROP LANGUAGE + +## 功能描述 + +删除一个过程语言。单机和集中式暂不支持删除过程语言。 + +## 语法格式 + +``` +DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ] +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的过程语言不存在,那么发出一个 notice 而不是抛出一个错误。 + +- **name** + + 现存语言的名称。出于向下兼容的考虑,这个名字可以用单引号包围。 + +- **CASCADE** + + 级联删除依赖于该语言的对象(比如该语言写的函数)。 + +- **RESTRICT** + + 如果存在依赖对象,则拒绝删除。这个是缺省。 + + +## 示例 + +下面命令删除 plsample 语言: + +``` +DROP LANGUAGE plsample; +``` + +## 兼容性 + +SQL 标准里没有 DROP LANGUAGE 语句。 + diff --git a/content/zh/docs/Developerguide/DROP-MASKING-POLICY.md b/content/zh/docs/Developerguide/DROP-MASKING-POLICY.md index efda849ac..0637f230c 100644 --- a/content/zh/docs/Developerguide/DROP-MASKING-POLICY.md +++ b/content/zh/docs/Developerguide/DROP-MASKING-POLICY.md @@ -1,38 +1,38 @@ -# DROP MASKING POLICY - -## 功能描述 - -删除脱敏策略。 - -## 注意事项 - -只有poladmin、sysadmin或初始用户才能执行此操作。 - -## 语法格式 - -``` -DROP MASKING POLICY [IF EXISTS] policy_name; -``` - -## 参数说明 - -**policy\_name** - -审计策略名称,需要唯一,不可重复。 - -取值范围:字符串,要符合标识符的命名规范。 - -## 示例 - -``` ---删除一个脱敏策略。 -openGauss=# DROP MASKING POLICY IF EXISTS maskpol1; - ---删除一组脱敏策略。 -openGauss=# DROP MASKING POLICY IF EXISTS maskpol1, maskpol2, maskpol3; -``` - -## 相关链接 - -[ALTER MASKING POLICY](ALTER-MASKING-POLICY.md),[CREATE MASKING POLICY](CREATE-MASKING-POLICY.md)。 - +# DROP MASKING POLICY + +## 功能描述 + +删除脱敏策略。 + +## 注意事项 + +只有poladmin、sysadmin或初始用户才能执行此操作。 + +## 语法格式 + +``` +DROP MASKING POLICY [IF EXISTS] policy_name; +``` + +## 参数说明 + +**policy\_name** + +审计策略名称,需要唯一,不可重复。 + +取值范围:字符串,要符合标识符的命名规范。 + +## 示例 + +``` +--删除一个脱敏策略。 +openGauss=# DROP MASKING POLICY IF EXISTS maskpol1; + +--删除一组脱敏策略。 +openGauss=# DROP MASKING POLICY IF EXISTS maskpol1, maskpol2 , maskpol3; +``` + +## 相关链接 + +[ALTER MASKING POLICY](ALTER-MASKING-POLICY.md),[CREATE MASKING POLICY](CREATE-MASKING-POLICY.md)。 + diff --git a/content/zh/docs/Developerguide/DROP-MATERIALIZED-VIEW.md b/content/zh/docs/Developerguide/DROP-MATERIALIZED-VIEW.md index ac3f7f0e8..7975d56f2 100644 --- a/content/zh/docs/Developerguide/DROP-MATERIALIZED-VIEW.md +++ b/content/zh/docs/Developerguide/DROP-MATERIALIZED-VIEW.md @@ -1,42 +1,42 @@ -# DROP MATERIALIZED VIEW - -## 功能描述 - -强制删除数据库中已有的物化视图。 - -## 注意事项 - -只有物化视图的所有者有权限执行DROP MATERIALIZED VIEW命令,系统管理员默认拥有此权限。 - -## 语法格式 - -``` -DROP MATERIALIZED VIEW [ IF EXISTS ] mv_name [, ...] [ CASCADE | RESTRICT ]; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的物化视图不存在,则发出一个notice而不是抛出一个错误。 - -- **mv\_name** - - 要删除的物化视图名称。 - -- **CASCADE | RESTRICT** - - CASCADE:级联删除依赖此物化视图的对象。 - - RESTRICT:如果有依赖对象存在,则拒绝删除此物化视图。此选项为缺省值。 - - -## 示例 - -``` ---删除名为my_mv的物化视图。 -openGauss=# DROP MATERIALIZED VIEW my_mv; -``` - -## 相关链接 - -[ALTER MATERIALIZED VIEW](ALTER-MATERIALIZED-VIEW.md),[CREATE INCREMENTAL MATERIALIZED VIEW](CREATE-INCREMENTAL-MATERIALIZED-VIEW.md), [CREATE MATERIALIZED VIEW](CREATE-MATERIALIZED-VIEW.md),[CREATE TABLE](CREATE-TABLE.md),[REFRESH INCREMENTAL MATERIALIZED VIEW](REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md),[REFRESH MATERIALIZED VIEW](REFRESH-MATERIALIZED-VIEW.md) - +# DROP MATERIALIZED VIEW + +## 功能描述 + +强制删除数据库中已有的物化视图。 + +## 注意事项 + +只有物化视图的所有者有权限执行 DROP MATERIALIZED VIEW 命令,系统管理员默认拥有此权限。 + +## 语法格式 + +``` +DROP MATERIALIZED VIEW [ IF EXISTS ] mv_name [, ...] [ CASCADE | RESTRICT ]; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的物化视图不存在,则发出一个 notice 而不是抛出一个错误。 + +- **mv\_name** + + 要删除的物化视图名称。 + +- **CASCADE | RESTRICT** + - CASCADE:级联删除依赖此物化视图的对象。 + - RESTRICT:如果有依赖对象存在,则拒绝删除此物化视图。此选项为缺省值。 + + +## 示例 + +``` +--删除名为 my_mv 的物化视图。 +openGauss=# DROP MATERIALIZED VIEW my_mv; +``` + +## 相关链接 + +[ALTER MATERIALIZED VIEW](ALTER-MATERIALIZED-VIEW.md),[CREATE INCREMENTAL MATERIALIZED VIEW](CREATE-INCREMENTAL-MATERIALIZED-VIEW.md), [CREATE MATERIALIZED VIEW](CREATE-MATERIALIZED-VIEW.md),[CREATE TABLE](CREATE-TABLE.md),[REFRESH INCREMENTAL MATERIALIZED VIEW](REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md),[REFRESH MATERIALIZED VIEW](REFRESH-MATERIALIZED-VIEW.md) + diff --git a/content/zh/docs/Developerguide/DROP-MODEL.md b/content/zh/docs/Developerguide/DROP-MODEL.md index 1b4a52b1d..b5202a139 100644 --- a/content/zh/docs/Developerguide/DROP-MODEL.md +++ b/content/zh/docs/Developerguide/DROP-MODEL.md @@ -1,28 +1,28 @@ -# DROP MODEL - -## 功能描述 - -删除一个已训练完成保存的模型对象。 - -## 注意事项 - -所删除模型可在系统表gs\_model\_warehouse中查看到。 - -## 语法格式 - -``` -DROP MODEL model_name; -``` - -## 参数说明 - -model\_name - -模型名称 - -取值范围:字符串,需要符合标识符的命名规范。 - -## 相关链接 - -[CREATE MODEL](CREATE-MODEL.md),[PREDICT BY](PREDICT-BY.md) - +# DROP MODEL + +## 功能描述 + +删除一个已训练完成保存的模型对象。 + +## 注意事项 + +所删除模型可在系统表gs\_model\_warehouse中查看到。 + +## 语法格式 + +``` +DROP MODEL model_name; +``` + +## 参数说明 + +model\_name + +模型名称 + +取值范围:字符串,需要符合标识符的命名规范。 + +## 相关链接 + +[CREATE MODEL](CREATE-MODEL.md),[PREDICT BY](PREDICT-BY.md) + diff --git a/content/zh/docs/Developerguide/DROP-OPERATOR.md b/content/zh/docs/Developerguide/DROP-OPERATOR.md index cb7ec6afc..3221b64c6 100644 --- a/content/zh/docs/Developerguide/DROP-OPERATOR.md +++ b/content/zh/docs/Developerguide/DROP-OPERATOR.md @@ -1,67 +1,67 @@ -# DROP OPERATOR - -## 功能描述 - -删除一个操作符。 - -## 注意事项 - -DROP OPERATOR语句从数据库中删除一个现存的操作符。要执行这个命令,你必须是操作符所有者。 - -## 语法格式 - -``` -DROP OPERATOR [ IF EXISTS ] name ( { left_type | NONE } , { right_type | NONE } ) [ CASCADE | RESTRICT ] -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的操作符不存在,那么发出一个 notice 而不是抛出一个错误。 - -- **name** - - 一个现存的操作符的名字(可以有模式修饰)。 - -- **left\_type** - - 该操作符左操作数的类型。如果没有则写NONE。 - -- **right\_type** - - 该操作符右操作数的类型。如果没有则写NONE。 - -- **CASCADE** - - 级联删除依赖于此操作符的所有对象。 - -- **RESTRICT** - - 如果有任何依赖对象则拒绝删除此操作符。这个是缺省项。 - - -## 示例 - -将用于integer的幂操作符a^b删除: - -``` -DROP OPERATOR ^ (integer, integer); -``` - -为类型bit删除左单目位操作符\~b: - -``` -DROP OPERATOR ~ (none, bit); -``` - -删除用于bigint的阶乘x!: - -``` -DROP OPERATOR ! (bigint, none); -``` - -## 兼容性 - -SQL 标准里没有DROP OPERATOR语句 - +# DROP OPERATOR + +## 功能描述 + +删除一个操作符。 + +## 注意事项 + +DROP OPERATOR 语句从数据库中删除一个现存的操作符。要执行这个命令,你必须是操作符所有者。 + +## 语法格式 + +``` +DROP OPERATOR [ IF EXISTS ] name ( { left_type | NONE } , { right_type | NONE } ) [ CASCADE | RESTRICT ] +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的操作符不存在,那么发出一个 notice 而不是抛出一个错误。 + +- **name** + + 一个现存的操作符的名字(可以有模式修饰)。 + +- **left\_type** + + 该操作符左操作数的类型。如果没有则写 NONE 。 + +- **right\_type** + + 该操作符右操作数的类型。如果没有则写 NONE 。 + +- **CASCADE** + + 级联删除依赖于此操作符的所有对象。 + +- **RESTRICT** + + 如果有任何依赖对象则拒绝删除此操作符。这个是缺省项。 + + +## 示例 + +将用于 integer 的幂操作符a^b删除: + +``` +DROP OPERATOR ^ (integer, integer); +``` + +为类型 bit 删除左单目位操作符\~b: + +``` +DROP OPERATOR ~ (none, bit); +``` + +删除用于 bigint 的阶乘 x !: + +``` + DROP OPERATOR ! (bigint, none); +``` + +## 兼容性 + +SQL 标准里没有 DROP OPERATOR 语句 + diff --git a/content/zh/docs/Developerguide/DROP-OWNED.md b/content/zh/docs/Developerguide/DROP-OWNED.md index 5fe38d564..5a1372fb0 100644 --- a/content/zh/docs/Developerguide/DROP-OWNED.md +++ b/content/zh/docs/Developerguide/DROP-OWNED.md @@ -1,34 +1,34 @@ -# DROP OWNED - -## 功能描述 - -删除一个数据库角色所拥有的数据库对象。 - -## 注意事项 - -- 所有该角色在当前数据库里和共享对象(数据库、表空间)上的所有对象上的权限都将被撤销。 -- DROP OWNED常常被用来为移除一个或者多个角色做准备。因为DROP OWNED只影响当前数据库中的对象,通常需要在包含将被移除角色所拥有的对象的每一个数据库中都执行这个命令。 -- 使用CASCADE选项可能导致这个命令递归去删除由其他用户所拥有的对象。 -- 角色所拥有的数据库、表空间将不会被移除。 - -## 语法格式 - -``` -DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]; -``` - -## 参数说明 - -- **name** - - 角色名。 - -- **CASCADE | RESTRICT** - - CASCADE:级联删除所有依赖于被删除对象的对象。 - - RESTRICT(缺省值):拒绝删除那些有任何依赖对象存在的对象。 - - -## 相关链接 - -[REASSIGN OWNED](REASSIGN-OWNED.md) , [DROP ROLE](DROP-ROLE.md) - +# DROP OWNED + +## 功能描述 + +删除一个数据库角色所拥有的数据库对象。 + +## 注意事项 + +- 所有该角色在当前数据库里和共享对象(数据库、表空间)上的所有对象上的权限都将被撤销。 +- DROP OWNED常常被用来为移除一个或者多个角色做准备。因为 DROP OWNED 只影响当前数据库中的对象,通常需要在包含将被移除角色所拥有的对象的每一个数据库中都执行这个命令。 +- 使用 CASCADE 选项可能导致这个命令递归去删除由其他用户所拥有的对象。 +- 角色所拥有的数据库、表空间将不会被移除。 + +## 语法格式 + +``` +DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]; +``` + +## 参数说明 + +- **name** + + 角色名。 + +- **CASCADE | RESTRICT** + - CASCADE:级联删除所有依赖于被删除对象的对象。 + - RESTRICT(缺省值):拒绝删除那些有任何依赖对象存在的对象。 + + +## 相关链接 + +[REASSIGN OWNED](REASSIGN-OWNED.md) , [DROP ROLE](DROP-ROLE.md) + diff --git a/content/zh/docs/Developerguide/DROP-PACKAGE.md b/content/zh/docs/Developerguide/DROP-PACKAGE.md index 613c91c18..116c6b382 100644 --- a/content/zh/docs/Developerguide/DROP-PACKAGE.md +++ b/content/zh/docs/Developerguide/DROP-PACKAGE.md @@ -1,17 +1,17 @@ -# DROP PACKAGE - -## 功能描述 - -删除已存在的PACKAGE或者PACKAGE BODY。 - -## 注意事项 - -删除PACKAGE BODY后,PACKAGE内的存储过程及函数会同时失效。 - -## 语法格式 - -``` -DROP PACKAGE [ IF EXISTS ] package_name; -DROP PACKAGE BODY [ IF EXISTS ] package_name; -``` - +# DROP PACKAGE + +## 功能描述 + +删除已存在的 PACKAGE 或者 PACKAGE BODY 。 + +## 注意事项 + +删除 PACKAGE BODY 后, PACKAGE 内的存储过程及函数会同时失效。 + +## 语法格式 + +``` +DROP PACKAGE [ IF EXISTS ] package_name; +DROP PACKAGE BODY [ IF EXISTS ] package_name; +``` + diff --git a/content/zh/docs/Developerguide/DROP-PROCEDURE.md b/content/zh/docs/Developerguide/DROP-PROCEDURE.md index da07f1526..8fcef55b0 100644 --- a/content/zh/docs/Developerguide/DROP-PROCEDURE.md +++ b/content/zh/docs/Developerguide/DROP-PROCEDURE.md @@ -1,33 +1,33 @@ -# DROP PROCEDURE - -## 功能描述 - -删除已存在的存储过程。 - -## 注意事项 - -无。 - -## 语法格式 - -``` -DROP PROCEDURE [ IF EXISTS ] procedure_name ; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的存储过程不存在,发出一个notice而不是抛出一个错误。 - -- **procedure\_name** - - 要删除的存储过程名称。 - - 取值范围:已存在的存储过程名。 - - -## 相关链接 - -[CREATE PROCEDURE](CREATE-PROCEDURE.md) - +# DROP PROCEDURE + +## 功能描述 + +删除已存在的存储过程。 + +## 注意事项 + +无。 + +## 语法格式 + +``` +DROP PROCEDURE [ IF EXISTS ] procedure_name ; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的存储过程不存在,发出一个 notice 而不是抛出一个错误。 + +- **procedure\_name** + + 要删除的存储过程名称。 + + 取值范围:已存在的存储过程名。 + + +## 相关链接 + +[CREATE PROCEDURE](CREATE-PROCEDURE.md) + diff --git a/content/zh/docs/Developerguide/DROP-RESOURCE-LABEL.md b/content/zh/docs/Developerguide/DROP-RESOURCE-LABEL.md index 96815e348..8e8f0bd8f 100644 --- a/content/zh/docs/Developerguide/DROP-RESOURCE-LABEL.md +++ b/content/zh/docs/Developerguide/DROP-RESOURCE-LABEL.md @@ -1,38 +1,38 @@ -# DROP RESOURCE LABEL - -## 功能描述 - -删除资源标签。 - -## 注意事项 - -只有poladmin、sysadmin或初始用户才能执行此操作。 - -## 语法格式 - -``` -DROP RESOURCE LABEL [IF EXISTS] policy_name[, ...]*; -``` - -## 参数说明 - -**label\_name** - -资源标签名称; - -取值范围:字符串,要符合标识符的命名规范。 - -## 示例 - -``` ---删除一个资源标签。 -openGauss=# DROP RESOURCE LABEL IF EXISTS res_label1; - ---删除一组资源标签。 -openGauss=# DROP RESOURCE LABEL IF EXISTS res_label1, res_label2, res_label3; -``` - -## 相关链接 - -[ALTER RESOURCE LABEL](ALTER-RESOURCE-LABEL.md),[CREATE RESOURCE LABEL](CREATE-RESOURCE-LABEL.md) - +# DROP RESOURCE LABEL + +## 功能描述 + +删除资源标签。 + +## 注意事项 + +只有poladmin、sysadmin或初始用户才能执行此操作。 + +## 语法格式 + +``` +DROP RESOURCE LABEL [IF EXISTS] policy_name[, ...]*; +``` + +## 参数说明 + +**label\_name** + +资源标签名称; + +取值范围:字符串,要符合标识符的命名规范。 + +## 示例 + +``` +--删除一个资源标签。 +openGauss=# DROP RESOURCE LABEL IF EXISTS res_label1; + +--删除一组资源标签。 +openGauss=# DROP RESOURCE LABEL IF EXISTS res_label1, res_label2 , res_label3; +``` + +## 相关链接 + +[ALTER RESOURCE LABEL](ALTER-RESOURCE-LABEL.md),[CREATE RESOURCE LABEL](CREATE-RESOURCE-LABEL.md) + diff --git a/content/zh/docs/Developerguide/DROP-RESOURCE-POOL.md b/content/zh/docs/Developerguide/DROP-RESOURCE-POOL.md index 6e4a17f44..881e08d71 100644 --- a/content/zh/docs/Developerguide/DROP-RESOURCE-POOL.md +++ b/content/zh/docs/Developerguide/DROP-RESOURCE-POOL.md @@ -1,41 +1,41 @@ -# DROP RESOURCE POOL - -## 功能描述 - -删除一个资源池。 - ->![](public_sys-resources/icon-note.gif) **说明:** ->如果某个角色已关联到该资源池,无法删除。 - -## 注意事项 - -只要用户对当前数据库有DROP权限,就可以删除资源池。 - -## 语法格式 - -``` -DROP RESOURCE POOL [ IF EXISTS ] pool_name; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的资源池不存在,发出一个notice而不是抛出一个错误。 - - -- **pool\_name** - - 已创建过的资源池名称。 - - 取值范围:字符串,要符合标识符的命名规范。 - - -## 示例 - -请参见CREATE RESOURCE POOL的[示例](CREATE-RESOURCE-POOL.md#zh-cn_topic_0059777569_s44181f6d005b4da1952aaeff4ef66e0e)。 - -## 相关链接 - -[ALTER RESOURCE POOL](ALTER-RESOURCE-POOL.md),[CREATE RESOURCE POOL](CREATE-RESOURCE-POOL.md) - +# DROP RESOURCE POOL + +## 功能描述 + +删除一个资源池。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>如果某个角色已关联到该资源池,无法删除。 + +## 注意事项 + +只要用户对当前数据库有 DROP 权限,就可以删除资源池。 + +## 语法格式 + +``` +DROP RESOURCE POOL [ IF EXISTS ] pool_name; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的资源池不存在,发出一个 notice 而不是抛出一个错误。 + + +- **pool\_name** + + 已创建过的资源池名称。 + + 取值范围:字符串,要符合标识符的命名规范。 + + +## 示例 + +请参见 CREATE RESOURCE POOL 的[示例](CREATE-RESOURCE-POOL.md#zh-cn_topic_0059777569_s44181f6d005b4da1952aaeff4ef66e0e)。 + +## 相关链接 + +[ALTER RESOURCE POOL](ALTER-RESOURCE-POOL.md),[CREATE RESOURCE POOL](CREATE-RESOURCE-POOL.md) + diff --git a/content/zh/docs/Developerguide/DROP-ROLE.md b/content/zh/docs/Developerguide/DROP-ROLE.md index c91430dcb..443c306a8 100644 --- a/content/zh/docs/Developerguide/DROP-ROLE.md +++ b/content/zh/docs/Developerguide/DROP-ROLE.md @@ -1,37 +1,37 @@ -# DROP ROLE - -## 功能描述 - -删除指定的角色。 - -## 注意事项 - -无。 - -## 语法格式 - -``` -DROP ROLE [ IF EXISTS ] role_name [, ...]; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的角色不存在,则发出一个notice而不是抛出一个错误。 - -- **role\_name** - - 要删除的角色名称。 - - 取值范围:已存在的角色。 - - -## 示例 - -请参见CREATE ROLE的[示例](CREATE-ROLE.md#zh-cn_topic_0283136858_zh-cn_topic_0237122112_zh-cn_topic_0059778189_s0dea2f90b8474387aff0ab3f366a611e)。 - -## 相关链接 - -[CREATE ROLE](CREATE-ROLE.md),[ALTER ROLE](ALTER-ROLE.md),[SET ROLE](SET-ROLE.md) - +# DROP ROLE + +## 功能描述 + +删除指定的角色。 + +## 注意事项 + +无。 + +## 语法格式 + +``` +DROP ROLE [ IF EXISTS ] role_name [, ...]; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的角色不存在,则发出一个 notice 而不是抛出一个错误。 + +- **role\_name** + + 要删除的角色名称。 + + 取值范围:已存在的角色。 + + +## 示例 + +请参见 CREATE ROLE 的[示例](CREATE-ROLE.md#zh-cn_topic_0283136858_zh-cn_topic_0237122112_zh-cn_topic_0059778189_s0dea2f90b8474387aff0ab3f366a611e)。 + +## 相关链接 + +[CREATE ROLE](CREATE-ROLE.md),[ALTER ROLE](ALTER-ROLE.md),[SET ROLE](SET-ROLE.md) + diff --git a/content/zh/docs/Developerguide/DROP-ROW-LEVEL-SECURITY-POLICY.md b/content/zh/docs/Developerguide/DROP-ROW-LEVEL-SECURITY-POLICY.md index 1a6df0440..d091da016 100644 --- a/content/zh/docs/Developerguide/DROP-ROW-LEVEL-SECURITY-POLICY.md +++ b/content/zh/docs/Developerguide/DROP-ROW-LEVEL-SECURITY-POLICY.md @@ -1,53 +1,53 @@ -# DROP ROW LEVEL SECURITY POLICY - -## 功能描述 - -删除表上某个行访问控制策略。 - -## 注意事项 - -仅表的所有者或者管理员用户才能删除表的行访问控制策略。 - -## 语法格式 - -``` -DROP [ ROW LEVEL SECURITY ] POLICY [ IF EXISTS ] policy_name ON table_name [ CASCADE | RESTRICT ] -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的行访问控制策略不存在,发出一个notice而不是抛出一个错误。 - -- **policy\_name** - - 要删除的行访问控制策略的名称。 - - - table\_name - - 行访问控制策略所在的数据表名。 - - - CASCADE/RESTRICT - - 仅适配此语法,无对象依赖于该行访问控制策略,CASCADE和RESTRICT效果相同。 - - - -## 示例 - -``` ---创建数据表all_data -openGauss=# CREATE TABLE all_data(id int, role varchar(100), data varchar(100)); - ---创建行访问控制策略 -openGauss=# CREATE ROW LEVEL SECURITY POLICY all_data_rls ON all_data USING(role = CURRENT_USER); - ---删除行访问控制策略 -openGauss=# DROP ROW LEVEL SECURITY POLICY all_data_rls ON all_data; -``` - -## 相关链接 - -[ALTER ROW LEVEL SECURITY POLICY](ALTER-ROW-LEVEL-SECURITY-POLICY.md),[CREATE ROW LEVEL SECURITY POLICY](CREATE-ROW-LEVEL-SECURITY-POLICY.md) - +# DROP ROW LEVEL SECURITY POLICY + +## 功能描述 + +删除表上某个行访问控制策略。 + +## 注意事项 + +仅表的所有者或者管理员用户才能删除表的行访问控制策略。 + +## 语法格式 + +``` +DROP [ ROW LEVEL SECURITY ] POLICY [ IF EXISTS ] policy_name ON table_name [ CASCADE | RESTRICT ] +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的行访问控制策略不存在,发出一个 notice 而不是抛出一个错误。 + +- **policy\_name** + + 要删除的行访问控制策略的名称。 + + - table\_name + + 行访问控制策略所在的数据表名。 + + - CASCADE/RESTRICT + + 仅适配此语法,无对象依赖于该行访问控制策略, CASCADE 和 RESTRICT 效果相同。 + + + +## 示例 + +``` +--创建数据表all_data +openGauss=# CREATE TABLE all_data(id int, role varchar(100), data varchar(100)); + +--创建行访问控制策略 +openGauss=# CREATE ROW LEVEL SECURITY POLICY all_data_rls ON all_data USING(role = CURRENT_USER); + +--删除行访问控制策略 +openGauss=# DROP ROW LEVEL SECURITY POLICY all_data_rls ON all_data; +``` + +## 相关链接 + +[ALTER ROW LEVEL SECURITY POLICY](ALTER-ROW-LEVEL-SECURITY-POLICY.md),[CREATE ROW LEVEL SECURITY POLICY](CREATE-ROW-LEVEL-SECURITY-POLICY.md) + diff --git a/content/zh/docs/Developerguide/DROP-RULE.md b/content/zh/docs/Developerguide/DROP-RULE.md index a2b3aa5e3..581f71728 100644 --- a/content/zh/docs/Developerguide/DROP-RULE.md +++ b/content/zh/docs/Developerguide/DROP-RULE.md @@ -1,42 +1,42 @@ -# DROP RULE - -## 功能描述 - -删除一个重写规则。 - -## 语法格式 - -``` -DROP RULE [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ] -``` - -## 参数说明 - -- IF EXISTS - - 如果该规则不存在,会抛出一个NOTICE。 - -- name - - 要删除的现存规则名称。 - -- table\_name - - 该规则应用的表名。 - -- CASCADE - - 自动级联删除依赖于此规则的对象。 - -- RESTRICT - - 缺省情况下,如果有任何依赖对象,则拒绝删除此规则。 - - -## 示例 - -``` ---删除重写规则newrule -DROP RULE newrule ON mytable; -``` - +# DROP RULE + +## 功能描述 + +删除一个重写规则。 + +## 语法格式 + +``` +DROP RULE [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ] +``` + +## 参数说明 + +- IF EXISTS + + 如果该规则不存在,会抛出一个 NOTICE 。 + +- name + + 要删除的现存规则名称。 + +- table\_name + + 该规则应用的表名。 + +- CASCADE + + 自动级联删除依赖于此规则的对象。 + +- RESTRICT + + 缺省情况下,如果有任何依赖对象,则拒绝删除此规则。 + + +## 示例 + +``` +--删除重写规则newrule +DROP RULE newrule ON mytable; +``` + diff --git a/content/zh/docs/Developerguide/DROP-SCHEMA.md b/content/zh/docs/Developerguide/DROP-SCHEMA.md index ddbd909c4..4e72fc524 100644 --- a/content/zh/docs/Developerguide/DROP-SCHEMA.md +++ b/content/zh/docs/Developerguide/DROP-SCHEMA.md @@ -1,47 +1,47 @@ -# DROP SCHEMA - -## 功能描述 - -从数据库中删除模式。 - -## 注意事项 - -只有模式的所有者或者被授予了模式DROP权限的用户有权限执行DROP SCHEMA命令,系统管理员默认拥有此权限。 - -## 语法格式 - -``` -DROP SCHEMA [ IF EXISTS ] schema_name [, ...] [ CASCADE | RESTRICT ]; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的模式不存在,发出一个notice而不是抛出一个错误。 - -- **schema\_name** - - 模式的名称。 - - 取值范围:已存在模式名。 - -- **CASCADE | RESTRICT** - - CASCADE:自动删除包含在模式中的对象。 - - RESTRICT:如果模式包含任何对象,则删除失败(缺省行为)。 - - ->![](public_sys-resources/icon-notice.gif) **须知:** ->不要随意删除pg\_temp或pg\_toast\_temp开头的模式,这些模式是系统内部使用的,如果删除,可能导致无法预知的结果。 - ->![](public_sys-resources/icon-note.gif) **说明:** ->无法删除当前模式。如果要删除当前模式,须切换到其他模式下。 - -## 示例 - -请参见CREATE SCHEMA的[示例](CREATE-SCHEMA.md#zh-cn_topic_0283137491_zh-cn_topic_0237122113_zh-cn_topic_0059777945_s05e72232af5e4507aad1511c025d7617)。 - -## 相关链接 - -[ALTER SCHEMA](ALTER-SCHEMA.md),[CREATE SCHEMA](CREATE-SCHEMA.md)。 - +# DROP SCHEMA + +## 功能描述 + +从数据库中删除模式。 + +## 注意事项 + +只有模式的所有者或者被授予了模式 DROP 权限的用户有权限执行 DROP SCHEMA 命令,系统管理员默认拥有此权限。 + +## 语法格式 + +``` +DROP SCHEMA [ IF EXISTS ] schema_name [, ...] [ CASCADE | RESTRICT ]; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的模式不存在,发出一个 notice 而不是抛出一个错误。 + +- **schema\_name** + + 模式的名称。 + + 取值范围:已存在模式名。 + +- **CASCADE | RESTRICT** + - CASCADE:自动删除包含在模式中的对象。 + - RESTRICT:如果模式包含任何对象,则删除失败(缺省行为)。 + + +>![](public_sys-resources/icon-notice.gif) **须知:** +>不要随意删除pg\_temp或pg\_toast\_temp开头的模式,这些模式是系统内部使用的,如果删除,可能导致无法预知的结果。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>无法删除当前模式。如果要删除当前模式,须切换到其他模式下。 + +## 示例 + +请参见 CREATE SCHEMA 的[示例](CREATE-SCHEMA.md#zh-cn_topic_0283137491_zh-cn_topic_0237122113_zh-cn_topic_0059777945_s05e72232af5e4507aad1511c025d7617)。 + +## 相关链接 + +[ALTER SCHEMA](ALTER-SCHEMA.md),[CREATE SCHEMA](CREATE-SCHEMA.md)。 + diff --git a/content/zh/docs/Developerguide/DROP-SEQUENCE.md b/content/zh/docs/Developerguide/DROP-SEQUENCE.md index 7907e7332..57805d79f 100644 --- a/content/zh/docs/Developerguide/DROP-SEQUENCE.md +++ b/content/zh/docs/Developerguide/DROP-SEQUENCE.md @@ -1,49 +1,49 @@ -# DROP SEQUENCE - -## 功能描述 - -从当前数据库里删除序列。 - -## 注意事项 - -只有序列的所有者或者被授予了序列DROP权限的用户才能删除,系统管理员默认拥有该权限。 - -## 语法格式 - -``` -DROP SEQUENCE [ IF EXISTS ] {[schema.]sequence_name} [ , ... ] [ CASCADE | RESTRICT ]; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的序列不存在,则发出一个notice而不是抛出一个错误。 - -- **name** - - 序列名称。 - -- **CASCADE** - - 级联删除依赖序列的对象。 - -- **RESTRICT** - - 如果存在任何依赖的对象,则拒绝删除序列。此项是缺省值。 - - -## 示例 - -``` ---创建一个名为serial的递增序列,从101开始。 -openGauss=# CREATE SEQUENCE serial START 101; - ---删除序列。 -openGauss=# DROP SEQUENCE serial; -``` - -## 相关链接 - -[ALTER SEQUENCE](ALTER-SEQUENCE.md), [CREATE SEQUENCE](CREATE-SEQUENCE.md) - +# DROP SEQUENCE + +## 功能描述 + +从当前数据库里删除序列。 + +## 注意事项 + +只有序列的所有者或者被授予了序列 DROP 权限的用户才能删除,系统管理员默认拥有该权限。 + +## 语法格式 + +``` +DROP SEQUENCE [ IF EXISTS ] {[schema.]sequence_name} [ , ... ] [ CASCADE | RESTRICT ]; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的序列不存在,则发出一个 notice 而不是抛出一个错误。 + +- **name** + + 序列名称。 + +- **CASCADE** + + 级联删除依赖序列的对象。 + +- **RESTRICT** + + 如果存在任何依赖的对象,则拒绝删除序列。此项是缺省值。 + + +## 示例 + +``` +--创建一个名为 serial 的递增序列,从 101 开始。 +openGauss=# CREATE SEQUENCE serial START 101; + +--删除序列。 +openGauss=# DROP SEQUENCE serial; +``` + +## 相关链接 + +[ALTER SEQUENCE](ALTER-SEQUENCE.md), [CREATE SEQUENCE](CREATE-SEQUENCE.md) + diff --git a/content/zh/docs/Developerguide/DROP-SERVER.md b/content/zh/docs/Developerguide/DROP-SERVER.md index 5c5eb4c9a..df21a449d 100644 --- a/content/zh/docs/Developerguide/DROP-SERVER.md +++ b/content/zh/docs/Developerguide/DROP-SERVER.md @@ -1,38 +1,38 @@ -# DROP SERVER - -## 功能描述 - -删除现有的一个数据服务器。 - -## 注意事项 - -只有server的所有者或者被授予了server的DROP权限的用户才可以删除,系统管理员默认拥有该权限。 - -## 语法格式 - -``` -DROP SERVER [ IF EXISTS ] server_name [ {CASCADE | RESTRICT} ] ; -``` - -## 参数描述 - -- **IF EXISTS** - - 如果指定的数据服务器不存在,则发出一个notice而不是抛出一个错误。 - -- **server\_name** - - 服务器名称。 - -- **CASCADE | RESTRICT** - - - CASCADE:级联删除依赖于server的对象 。 - - - RESTRICT(缺省值):如果存在依赖对象,则拒绝删除该server。 - - - -## 相关链接 - -[ALTER SERVER](ALTER-SERVER.md),[CREATE SERVER](CREATE-SERVER.md) - +# DROP SERVER + +## 功能描述 + +删除现有的一个数据服务器。 + +## 注意事项 + +只有 server 的所有者或者被授予了 server 的 DROP 权限的用户才可以删除,系统管理员默认拥有该权限。 + +## 语法格式 + +``` +DROP SERVER [ IF EXISTS ] server_name [ {CASCADE | RESTRICT} ] ; +``` + +## 参数描述 + +- **IF EXISTS** + + 如果指定的数据服务器不存在,则发出一个 notice 而不是抛出一个错误。 + +- **server\_name** + + 服务器名称。 + +- **CASCADE | RESTRICT** + + - CASCADE:级联删除依赖于 server 的对象 。 + + - RESTRICT(缺省值):如果存在依赖对象,则拒绝删除该 server 。 + + + +## 相关链接 + +[ALTER SERVER](ALTER-SERVER.md),[CREATE SERVER](CREATE-SERVER.md) + diff --git a/content/zh/docs/Developerguide/DROP-SYNONYM.md b/content/zh/docs/Developerguide/DROP-SYNONYM.md index 16fd94119..ae721eb23 100644 --- a/content/zh/docs/Developerguide/DROP-SYNONYM.md +++ b/content/zh/docs/Developerguide/DROP-SYNONYM.md @@ -1,39 +1,39 @@ -# DROP SYNONYM - -## 功能描述 - -删除指定的SYNONYM对象。 - -## 注意事项 - -只有SYNONYM的所有者有权限执行DROP SYNONYM命令,系统管理员默认拥有此权限。 - -## 语法格式 - -``` -DROP SYNONYM [ IF EXISTS ] synonym_name [ CASCADE | RESTRICT ]; -``` - -## 参数描述 - -- **IF EXISTS** - - 如果指定的同义词不存在,则发出一个notice而不是抛出一个错误。 - -- **synonym\_name** - - 同义词名字,可以带模式名。 - -- **CASCADE | RESTRICT** - - CASCADE:级联删除依赖同义词的对象(比如视图)。 - - RESTRICT:如果有依赖对象存在,则拒绝删除同义词。此选项为缺省值。 - - -## 示例 - -请参考CREATE SYNONYM的[示例](CREATE-SYNONYM.md#zh-cn_topic_0283136599_zh-cn_topic_0237122116_section1853433744413)。 - -## 相关链接 - -[ALTER SYNONYM](ALTER-SYNONYM.md),[CREATE SYNONYM](CREATE-SYNONYM.md) - +# DROP SYNONYM + +## 功能描述 + +删除指定的 SYNONYM 对象。 + +## 注意事项 + +只有 SYNONYM 的所有者有权限执行 DROP SYNONYM 命令,系统管理员默认拥有此权限。 + +## 语法格式 + +``` +DROP SYNONYM [ IF EXISTS ] synonym_name [ CASCADE | RESTRICT ]; +``` + +## 参数描述 + +- **IF EXISTS** + + 如果指定的同义词不存在,则发出一个 notice 而不是抛出一个错误。 + +- **synonym\_name** + + 同义词名字,可以带模式名。 + +- **CASCADE | RESTRICT** + - CASCADE:级联删除依赖同义词的对象(比如视图)。 + - RESTRICT:如果有依赖对象存在,则拒绝删除同义词。此选项为缺省值。 + + +## 示例 + +请参考 CREATE SYNONYM 的[示例](CREATE-SYNONYM.md#zh-cn_topic_0283136599_zh-cn_topic_0237122116_section1853433744413)。 + +## 相关链接 + +[ALTER SYNONYM](ALTER-SYNONYM.md),[CREATE SYNONYM](CREATE-SYNONYM.md) + diff --git a/content/zh/docs/Developerguide/DROP-TABLE.md b/content/zh/docs/Developerguide/DROP-TABLE.md index ac8ff696a..7f0d7415e 100644 --- a/content/zh/docs/Developerguide/DROP-TABLE.md +++ b/content/zh/docs/Developerguide/DROP-TABLE.md @@ -1,45 +1,45 @@ -# DROP TABLE - -## 功能描述 - -删除指定的表。 - -## 注意事项 - -- DROP TABLE会强制删除指定的表,删除表后,依赖该表的索引会被删除,而使用到该表的函数和存储过程将无法执行。删除分区表,会同时删除分区表中的所有分区。 -- 只有表的所有者或者被授予了表的DROP权限的用户才能执行DROP TABLE,系统管理员默认拥有该权限。 - -## 语法格式 - -``` -DROP TABLE [ IF EXISTS ] - { [schema.]table_name } [, ...] [ CASCADE | RESTRICT ]; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的表不存在,则发出一个notice而不是抛出一个错误。 - -- **schema** - - 模式名称。 - -- **table\_name** - - 表名称。 - -- **CASCADE | RESTRICT** - - CASCADE:级联删除依赖于表的对象(比如视图)。 - - RESTRICT(缺省项):如果存在依赖对象,则拒绝删除该表。这个是缺省。 - - -## 示例 - -请参考CREATE TABLE的[示例](CREATE-TABLE.md#zh-cn_topic_0283137629_zh-cn_topic_0237122117_zh-cn_topic_0059778169_s86758dcf05d442d2a9ebd272e76ed1b8)。 - -## 相关链接 - -[ALTER TABLE](ALTER-TABLE.md),[CREATE TABLE](CREATE-TABLE.md) - +# DROP TABLE + +## 功能描述 + +删除指定的表。 + +## 注意事项 + +- DROP TABLE会强制删除指定的表,删除表后,依赖该表的索引会被删除,而使用到该表的函数和存储过程将无法执行。删除分区表,会同时删除分区表中的所有分区。 +- 只有表的所有者或者被授予了表的 DROP 权限的用户才能执行 DROP TABLE ,系统管理员默认拥有该权限。 + +## 语法格式 + +``` +DROP TABLE [ IF EXISTS ] + { [schema.]table_name } [, ...] [ CASCADE | RESTRICT ]; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的表不存在,则发出一个 notice 而不是抛出一个错误。 + +- **schema** + + 模式名称。 + +- **table\_name** + + 表名称。 + +- **CASCADE | RESTRICT** + - CASCADE:级联删除依赖于表的对象(比如视图)。 + - RESTRICT(缺省项):如果存在依赖对象,则拒绝删除该表。这个是缺省。 + + +## 示例 + +请参考 CREATE TABLE 的[示例](CREATE-TABLE.md#zh-cn_topic_0283137629_zh-cn_topic_0237122117_zh-cn_topic_0059778169_s86758dcf05d442d2a9ebd272e76ed1b8)。 + +## 相关链接 + +[ALTER TABLE](ALTER-TABLE.md),[CREATE TABLE](CREATE-TABLE.md) + diff --git a/content/zh/docs/Developerguide/DROP-TABLESPACE.md b/content/zh/docs/Developerguide/DROP-TABLESPACE.md index b0073c0b9..6ca7e9c07 100644 --- a/content/zh/docs/Developerguide/DROP-TABLESPACE.md +++ b/content/zh/docs/Developerguide/DROP-TABLESPACE.md @@ -1,48 +1,48 @@ -# DROP TABLESPACE - -## 功能描述 - -删除一个表空间。 - -## 注意事项 - -- 只有表空间所有者或者被授予了表空间DROP权限的用户有权限执行DROP TABLESPACE命令,系统管理员默认拥有此权限。 -- 在删除一个表空间之前,表空间里面不能有任何数据库对象,否则会报错。 -- DROP TABLESPACE不支持回滚,因此,不能出现在事务块内部。 -- 执行DROP TABLESPACE操作时,如果有另外的会话执行\\db查询操作,可能会由于tablespace事务的原因导致查询失败,请重新执行\\db查询操作。 -- 如果执行DROP TABLESPACE失败,需要再次执行一次DROP TABLESPACE IF EXISTS。 - -## 语法格式 - -``` -DROP TABLESPACE [ IF EXISTS ] tablespace_name; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的表空间不存在,则发出一个notice而不是抛出一个错误。 - -- **tablespace\_name** - - 表空间的名称。 - - 取值范围:已存在的表空间的名称。 - - -## 示例 - -请参见CREATE TABLESPACE的[示例](CREATE-TABLESPACE.md#zh-cn_topic_0283137328_zh-cn_topic_0237122120_zh-cn_topic_0059777670_s4e5e97caa377440d87fad0d49b56323e)。 - -## 相关链接 - -[ALTER TABLESPACE](ALTER-TABLESPACE.md), [CREATE TABLESPACE](CREATE-TABLESPACE.md) - -## 优化建议 - -- drop database - - 不支持在事务中删除database。 - - +# DROP TABLESPACE + +## 功能描述 + +删除一个表空间。 + +## 注意事项 + +- 只有表空间所有者或者被授予了表空间 DROP 权限的用户有权限执行 DROP TABLESPACE 命令,系统管理员默认拥有此权限。 +- 在删除一个表空间之前,表空间里面不能有任何数据库对象,否则会报错。 +- DROP TABLESPACE不支持回滚,因此,不能出现在事务块内部。 +- 执行 DROP TABLESPACE 操作时,如果有另外的会话执行\\db查询操作,可能会由于 tablespace 事务的原因导致查询失败,请重新执行\\db查询操作。 +- 如果执行 DROP TABLESPACE 失败,需要再次执行一次 DROP TABLESPACE IF EXISTS 。 + +## 语法格式 + +``` +DROP TABLESPACE [ IF EXISTS ] tablespace_name; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的表空间不存在,则发出一个 notice 而不是抛出一个错误。 + +- **tablespace\_name** + + 表空间的名称。 + + 取值范围:已存在的表空间的名称。 + + +## 示例 + +请参见 CREATE TABLESPACE 的[示例](CREATE-TABLESPACE.md#zh-cn_topic_0283137328_zh-cn_topic_0237122120_zh-cn_topic_0059777670_s4e5e97caa377440d87fad0d49b56323e)。 + +## 相关链接 + +[ALTER TABLESPACE](ALTER-TABLESPACE.md), [CREATE TABLESPACE](CREATE-TABLESPACE.md) + +## 优化建议 + +- drop database + + 不支持在事务中删除 database 。 + + diff --git a/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-CONFIGURATION.md b/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-CONFIGURATION.md index 4e660a850..cb500a4a0 100644 --- a/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-CONFIGURATION.md +++ b/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-CONFIGURATION.md @@ -1,43 +1,43 @@ -# DROP TEXT SEARCH CONFIGURATION - -## 功能描述 - -删除已有文本搜索配置。 - -## 注意事项 - -要执行这个命令,用户必须是该配置的所有者。 - -## 语法格式 - -``` -DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的文本搜索配置不存在,那么发出一个notice而不是抛出一个错误。 - -- **name** - - 要删除的文本搜索配置名称(可有模式修饰)。 - -- **CASCADE** - - 级联删除依赖文本搜索配置的对象。 - -- **RESTRICT** - - 若有任何对象依赖文本搜索配置则拒绝删除它。这是默认情况。 - - -## 示例 - -请参见CREATE TEXT SEARCH CONFIGURATION的[示例](CREATE-TEXT-SEARCH-CONFIGURATION.md#zh-cn_topic_0283137399_zh-cn_topic_0237122121_zh-cn_topic_0059777835_sc3a4aef5c0c0420eaf5a2e67097004a2)。 - -## 相关链接 - -[ALTER TEXT SEARCH CONFIGURATION](ALTER-TEXT-SEARCH-CONFIGURATION.md), [CREATE TEXT SEARCH CONFIGURATION](CREATE-TEXT-SEARCH-CONFIGURATION.md) - +# DROP TEXT SEARCH CONFIGURATION + +## 功能描述 + +删除已有文本搜索配置。 + +## 注意事项 + +要执行这个命令,用户必须是该配置的所有者。 + +## 语法格式 + +``` +DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的文本搜索配置不存在,那么发出一个 notice 而不是抛出一个错误。 + +- **name** + + 要删除的文本搜索配置名称(可有模式修饰)。 + +- **CASCADE** + + 级联删除依赖文本搜索配置的对象。 + +- **RESTRICT** + + 若有任何对象依赖文本搜索配置则拒绝删除它。这是默认情况。 + + +## 示例 + +请参见 CREATE TEXT SEARCH CONFIGURATION 的[示例](CREATE-TEXT-SEARCH-CONFIGURATION.md#zh-cn_topic_0283137399_zh-cn_topic_0237122121_zh-cn_topic_0059777835_sc3a4aef5c0c0420eaf5a2e67097004a2)。 + +## 相关链接 + +[ALTER TEXT SEARCH CONFIGURATION](ALTER-TEXT-SEARCH-CONFIGURATION.md), [CREATE TEXT SEARCH CONFIGURATION](CREATE-TEXT-SEARCH-CONFIGURATION.md) + diff --git a/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-DICTIONARY.md b/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-DICTIONARY.md index eab3e882d..031d302c0 100644 --- a/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-DICTIONARY.md +++ b/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-DICTIONARY.md @@ -1,52 +1,52 @@ -# DROP TEXT SEARCH DICTIONARY - -## 功能描述 - -删除全文检索词典。 - -## 注意事项 - -- 预定义词典不支持DROP操作。 -- 只有词典的所有者可以执行DROP操作,系统管理员默认拥有此权限。 -- 谨慎执行DROP...CASCADE操作,该操作将级联删除使用该词典的文本搜索配置(TEXT SEARCH CONFIGURATION)。 - -## 语法格式 - -``` -DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ] -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的全文检索词典不存在,那么发出一个Notice而不是报错。 - -- **name** - - 要删除的词典名称(可指定模式名,否则默认在当前模式下)。 - - 取值范围:已存在的词典名。 - -- **CASCADE** - - 自动删除依赖于该词典的对象,并依次删除依赖于这些对象的所有对象。 - - 如果存在任何一个使用该词典的文本搜索配置,此DROP命令将不会成功。可添加CASCADE以删除引用该词典的所有文本搜索配置以及词典。 - -- **RESTRICT** - - 如果任何对象依赖词典,则拒绝删除该词典。这是缺省值。 - - -## 示例 - -``` ---删除词典english -openGauss=# DROP TEXT SEARCH DICTIONARY english; -``` - -## 相关链接 - -[ALTER TEXT SEARCH DICTIONARY](ALTER-TEXT-SEARCH-DICTIONARY.md),[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md) - +# DROP TEXT SEARCH DICTIONARY + +## 功能描述 + +删除全文检索词典。 + +## 注意事项 + +- 预定义词典不支持 DROP 操作。 +- 只有词典的所有者可以执行 DROP 操作,系统管理员默认拥有此权限。 +- 谨慎执行DROP...CASCADE操作,该操作将级联删除使用该词典的文本搜索配置(TEXT SEARCH CONFIGURATION)。 + +## 语法格式 + +``` +DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ] +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的全文检索词典不存在,那么发出一个 Notice 而不是报错。 + +- **name** + + 要删除的词典名称(可指定模式名,否则默认在当前模式下)。 + + 取值范围:已存在的词典名。 + +- **CASCADE** + + 自动删除依赖于该词典的对象,并依次删除依赖于这些对象的所有对象。 + + 如果存在任何一个使用该词典的文本搜索配置,此 DROP 命令将不会成功。可添加 CASCADE 以删除引用该词典的所有文本搜索配置以及词典。 + +- **RESTRICT** + + 如果任何对象依赖词典,则拒绝删除该词典。这是缺省值。 + + +## 示例 + +``` +--删除词典english +openGauss=# DROP TEXT SEARCH DICTIONARY english; +``` + +## 相关链接 + +[ALTER TEXT SEARCH DICTIONARY](ALTER-TEXT-SEARCH-DICTIONARY.md),[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md) + diff --git a/content/zh/docs/Developerguide/DROP-TRIGGER.md b/content/zh/docs/Developerguide/DROP-TRIGGER.md index c33b2cf57..1cc7ed328 100644 --- a/content/zh/docs/Developerguide/DROP-TRIGGER.md +++ b/content/zh/docs/Developerguide/DROP-TRIGGER.md @@ -1,47 +1,47 @@ -# DROP TRIGGER - -## 功能描述 - -删除触发器。 - -## 注意事项 - -只有触发器的所有者可以执行DROP TRIGGER操作,系统管理员默认拥有此权限。 - -## 语法格式 - -``` -DROP TRIGGER [ IF EXISTS ] trigger_name ON table_name [ CASCADE | RESTRICT ]; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的触发器不存在,则发出一个notice而不是抛出一个错误。 - -- **trigger\_name** - - 要删除的触发器名称。 - - 取值范围:已存在的触发器。 - -- **table\_name** - - 要删除的触发器所在的表名称。 - - 取值范围:已存在的含触发器的表。 - -- **CASCADE | RESTRICT** - - CASCADE:级联删除依赖此触发器的对象。 - - RESTRICT:如果有依赖对象存在,则拒绝删除此触发器。此选项为缺省值。 - - -## 示例 - -请参见[CREATE TRIGGER](CREATE-TRIGGER.md)的[示例](CREATE-TRIGGER.md#zh-cn_topic_0283137165_zh-cn_topic_0237122123_zh-cn_topic_0059778166_sfbca773f5bcd4799b3ea668b3eb074fa)。 - -## 相关链接 - -[CREATE TRIGGER](CREATE-TRIGGER.md),[ALTER TRIGGER](ALTER-TRIGGER.md),[ALTER TABLE](ALTER-TABLE.md) - +# DROP TRIGGER + +## 功能描述 + +删除触发器。 + +## 注意事项 + +只有触发器的所有者可以执行 DROP TRIGGER 操作,系统管理员默认拥有此权限。 + +## 语法格式 + +``` +DROP TRIGGER [ IF EXISTS ] trigger_name ON table_name [ CASCADE | RESTRICT ]; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的触发器不存在,则发出一个 notice 而不是抛出一个错误。 + +- **trigger\_name** + + 要删除的触发器名称。 + + 取值范围:已存在的触发器。 + +- **table\_name** + + 要删除的触发器所在的表名称。 + + 取值范围:已存在的含触发器的表。 + +- **CASCADE | RESTRICT** + - CASCADE:级联删除依赖此触发器的对象。 + - RESTRICT:如果有依赖对象存在,则拒绝删除此触发器。此选项为缺省值。 + + +## 示例 + +请参见[CREATE TRIGGER](CREATE-TRIGGER.md)的[示例](CREATE-TRIGGER.md#zh-cn_topic_0283137165_zh-cn_topic_0237122123_zh-cn_topic_0059778166_sfbca773f5bcd4799b3ea668b3eb074fa)。 + +## 相关链接 + +[CREATE TRIGGER](CREATE-TRIGGER.md),[ALTER TRIGGER](ALTER-TRIGGER.md),[ALTER TABLE](ALTER-TABLE.md) + diff --git a/content/zh/docs/Developerguide/DROP-TYPE.md b/content/zh/docs/Developerguide/DROP-TYPE.md index 4e492eead..f9c68732d 100644 --- a/content/zh/docs/Developerguide/DROP-TYPE.md +++ b/content/zh/docs/Developerguide/DROP-TYPE.md @@ -1,43 +1,43 @@ -# DROP TYPE - -## 功能描述 - -删除一个用户定义的数据类型。 - -## 注意事项 - -只有类型的所有者或者被授予了类型DROP权限的用户有权限执行DROP TYPE命令,系统管理员默认拥有此权限。 - -## 语法格式 - -``` -DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的类型不存在,那么发出一个notice而不是抛出一个错误。 - -- **name** - - 要删除的类型名\(可以有模式修饰\)。 - -- **CASCADE** - - 级联删除依赖该类型的对象\(比如字段、函数、操作符等\)。 - - **RESTRICT** - - 如果有依赖对象,则拒绝删除该类型(缺省行为)。 - - -## 示例 - -请参考CREATE TYPE的[示例](CREATE-TYPE.md#zh-cn_topic_0283136568_zh-cn_topic_0237122124_zh-cn_topic_0059779377_s66a0b4a6a1df4ba4a116c6c565a0fe9d)。 - -## 相关链接 - -[CREATE TYPE](CREATE-TYPE.md),[ALTER TYPE](ALTER-TYPE.md) - +# DROP TYPE + +## 功能描述 + +删除一个用户定义的数据类型。 + +## 注意事项 + +只有类型的所有者或者被授予了类型 DROP 权限的用户有权限执行 DROP TYPE 命令,系统管理员默认拥有此权限。 + +## 语法格式 + +``` +DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的类型不存在,那么发出一个 notice 而不是抛出一个错误。 + +- **name** + + 要删除的类型名\(可以有模式修饰\)。 + +- **CASCADE** + + 级联删除依赖该类型的对象\(比如字段、函数、操作符等\)。 + + **RESTRICT** + + 如果有依赖对象,则拒绝删除该类型(缺省行为)。 + + +## 示例 + +请参考 CREATE TYPE 的[示例](CREATE-TYPE.md#zh-cn_topic_0283136568_zh-cn_topic_0237122124_zh-cn_topic_0059779377_s66a0b4a6a1df4ba4a116c6c565a0fe9d)。 + +## 相关链接 + +[CREATE TYPE](CREATE-TYPE.md),[ALTER TYPE](ALTER-TYPE.md) + diff --git a/content/zh/docs/Developerguide/DROP-USER-MAPPING.md b/content/zh/docs/Developerguide/DROP-USER-MAPPING.md index 2ab8b814b..9923e4014 100644 --- a/content/zh/docs/Developerguide/DROP-USER-MAPPING.md +++ b/content/zh/docs/Developerguide/DROP-USER-MAPPING.md @@ -1,33 +1,33 @@ -# DROP USER MAPPING - -## 功能描述 - -移除一个用于外部服务器的用户映射。 - -## 语法格式 - -``` -DROP USER MAPPING [ IF EXISTS ] FOR { user_name | USER | CURRENT_USER | PUBLIC } SERVER server_name; -``` - -## 参数描述 - -- **IF EXISTS** - - 如果该用户映射不存在则不要抛出一个错误,而是发出一个提示。 - -- **user\_name** - - 该映射的用户名。 - - CURRENT\_USER和USER匹配当前用户的名称。PUBLIC被用来匹配系统中所有现存和未来的用户名。 - -- **server\_name** - - 用户映射的服务器名。 - - -## 相关链接 - -[ALTER USER MAPPING](ALTER-USER-MAPPING.md),[CREATE USER MAPPING](CREATE-USER-MAPPING.md) - +# DROP USER MAPPING + +## 功能描述 + +移除一个用于外部服务器的用户映射。 + +## 语法格式 + +``` +DROP USER MAPPING [ IF EXISTS ] FOR { user_name | USER | CURRENT_USER | PUBLIC } SERVER server_name; +``` + +## 参数描述 + +- **IF EXISTS** + + 如果该用户映射不存在则不要抛出一个错误,而是发出一个提示。 + +- **user\_name** + + 该映射的用户名。 + + CURRENT\_USER和 USER 匹配当前用户的名称。 PUBLIC 被用来匹配系统中所有现存和未来的用户名。 + +- **server\_name** + + 用户映射的服务器名。 + + +## 相关链接 + +[ALTER USER MAPPING](ALTER-USER-MAPPING.md),[CREATE USER MAPPING](CREATE-USER-MAPPING.md) + diff --git a/content/zh/docs/Developerguide/DROP-USER.md b/content/zh/docs/Developerguide/DROP-USER.md index 24a7d2191..f668ad016 100644 --- a/content/zh/docs/Developerguide/DROP-USER.md +++ b/content/zh/docs/Developerguide/DROP-USER.md @@ -1,55 +1,55 @@ -# DROP USER - -## 功能描述 - -删除用户,同时会删除同名的schema。 - -## 注意事项 - -- 须使用CASCADE级联删除依赖用户的对象(除数据库外)。当删除用户的级联对象时,如果级联对象处于锁定状态,则此级联对象无法被删除,直到对象被解锁或锁定级联对象的进程被杀死。 -- 在openGauss中,存在一个配置参数enable\_kill\_query,此参数在配置文件postgresql.conf中。此参数影响级联删除用户对象的行为: - - 当参数enable\_kill\_query为on ,且使用CASCADE模式删除用户时,会自动kill锁定用户级联对象的进程,并删除用户。 - - 当参数enable\_kill\_query为off,且使用CASCADE模式删除用户时,会等待锁定级联对象的进程结束之后再删除用户。 - -- 在数据库中删除用户时,如果依赖用户的对象在其他数据库中或者依赖用户的对象是其他数据库,请用户先手动删除其他数据库中的依赖对象或直接删除依赖数据库,再删除用户。即drop user不支持跨数据库进行级联删除。 -- 如果该用户被DATA SOURCE对象依赖时,无法直接级联删除该用户,需要手动删除对应的DATA SOURCE对象之后再删除该用户。 - -## 语法格式 - -``` -DROP USER [ IF EXISTS ] user_name [, ...] [ CASCADE | RESTRICT ]; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的用户不存在,发出一个notice而不是抛出一个错误。 - -- **user\_name** - - 待删除的用户名。 - - 取值范围:已存在的用户名。 - -- **CASCADE | RESTRICT** - - CASCADE:级联删除依赖用户的对象。 - - RESTRICT:如果用户还有任何依赖的对象,则拒绝删除该用户(缺省行为)。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >在openGauss中,存在一个配置参数enable\_kill\_query,此参数在配置文件postgresql.conf中。此参数影响级联删除用户对象的行为: - > - >- 当参数enable\_kill\_query为on ,且使用CASCADE模式删除用户时,会自动kill锁定用户级联对象的进程,并删除用户。 - > - >- 当参数enable\_kill\_query为off,且使用CASCADE模式删除用户时,会等待锁定级联对象的进程结束之后再删除用户。 - - - -## 示例 - -请参考CREATE USER的[示例](CREATE-USER.md#zh-cn_topic_0283136891_zh-cn_topic_0237122125_zh-cn_topic_0059778166_sfbca773f5bcd4799b3ea668b3eb074fa)。 - -## 相关链接 - -[ALTER USER](ALTER-USER.md),[CREATE USER](CREATE-USER.md) - +# DROP USER + +## 功能描述 + +删除用户,同时会删除同名的 schema 。 + +## 注意事项 + +- 须使用 CASCADE 级联删除依赖用户的对象(除数据库外)。当删除用户的级联对象时,如果级联对象处于锁定状态,则此级联对象无法被删除,直到对象被解锁或锁定级联对象的进程被杀死。 +- 在 openGauss 中,存在一个配置参数enable\_kill\_query,此参数在配置文件postgresql.conf中。此参数影响级联删除用户对象的行为: + - 当参数enable\_kill\_query为 on ,且使用 CASCADE 模式删除用户时,会自动 kill 锁定用户级联对象的进程,并删除用户。 + - 当参数enable\_kill\_query为 off ,且使用 CASCADE 模式删除用户时,会等待锁定级联对象的进程结束之后再删除用户。 + +- 在数据库中删除用户时,如果依赖用户的对象在其他数据库中或者依赖用户的对象是其他数据库,请用户先手动删除其他数据库中的依赖对象或直接删除依赖数据库,再删除用户。即 drop user 不支持跨数据库进行级联删除。 +- 如果该用户被 DATA SOURCE 对象依赖时,无法直接级联删除该用户,需要手动删除对应的 DATA SOURCE 对象之后再删除该用户。 + +## 语法格式 + +``` +DROP USER [ IF EXISTS ] user_name [, ...] [ CASCADE | RESTRICT ]; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的用户不存在,发出一个 notice 而不是抛出一个错误。 + +- **user\_name** + + 待删除的用户名。 + + 取值范围:已存在的用户名。 + +- **CASCADE | RESTRICT** + - CASCADE:级联删除依赖用户的对象。 + - RESTRICT:如果用户还有任何依赖的对象,则拒绝删除该用户(缺省行为)。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >在 openGauss 中,存在一个配置参数enable\_kill\_query,此参数在配置文件postgresql.conf中。此参数影响级联删除用户对象的行为: + > + >- 当参数enable\_kill\_query为 on ,且使用 CASCADE 模式删除用户时,会自动 kill 锁定用户级联对象的进程,并删除用户。 + > + >- 当参数enable\_kill\_query为 off ,且使用 CASCADE 模式删除用户时,会等待锁定级联对象的进程结束之后再删除用户。 + + + +## 示例 + +请参考 CREATE USER 的[示例](CREATE-USER.md#zh-cn_topic_0283136891_zh-cn_topic_0237122125_zh-cn_topic_0059778166_sfbca773f5bcd4799b3ea668b3eb074fa)。 + +## 相关链接 + +[ALTER USER](ALTER-USER.md),[CREATE USER](CREATE-USER.md) + diff --git a/content/zh/docs/Developerguide/DROP-VIEW.md b/content/zh/docs/Developerguide/DROP-VIEW.md index 7bc3ef420..d7ce7c8a3 100644 --- a/content/zh/docs/Developerguide/DROP-VIEW.md +++ b/content/zh/docs/Developerguide/DROP-VIEW.md @@ -1,41 +1,41 @@ -# DROP VIEW - -## 功能描述 - -数据库中强制删除已有的视图。 - -## 注意事项 - -只有视图的所有者或者被授予了视图DROP权限的用户才有权限执行DROP VIEW的命令,系统管理员默认拥有此权限。 - -## 语法格式 - -``` -DROP VIEW [ IF EXISTS ] view_name [, ...] [ CASCADE | RESTRICT ]; -``` - -## 参数说明 - -- **IF EXISTS** - - 如果指定的视图不存在,则发出一个notice而不是抛出一个错误。 - -- **view\_name** - - 要删除的视图名称。 - - 取值范围:已存在的视图。 - -- **CASCADE | RESTRICT** - - CASCADE:级联删除依赖此视图的对象(比如其他视图)。 - - RESTRICT:如果有依赖对象存在,则拒绝删除此视图。此选项为缺省值。 - - -## 示例 - -请参见CREATE VIEW的[示例](CREATE-VIEW.md#zh-cn_topic_0283137480_zh-cn_topic_0237122126_zh-cn_topic_0059779377_s66a0b4a6a1df4ba4a116c6c565a0fe9d)。 - -## 相关链接 - -[ALTER VIEW](ALTER-VIEW.md),[CREATE VIEW](CREATE-VIEW.md) - +# DROP VIEW + +## 功能描述 + +数据库中强制删除已有的视图。 + +## 注意事项 + +只有视图的所有者或者被授予了视图 DROP 权限的用户才有权限执行 DROP VIEW 的命令,系统管理员默认拥有此权限。 + +## 语法格式 + +``` +DROP VIEW [ IF EXISTS ] view_name [, ...] [ CASCADE | RESTRICT ]; +``` + +## 参数说明 + +- **IF EXISTS** + + 如果指定的视图不存在,则发出一个 notice 而不是抛出一个错误。 + +- **view\_name** + + 要删除的视图名称。 + + 取值范围:已存在的视图。 + +- **CASCADE | RESTRICT** + - CASCADE:级联删除依赖此视图的对象(比如其他视图)。 + - RESTRICT:如果有依赖对象存在,则拒绝删除此视图。此选项为缺省值。 + + +## 示例 + +请参见 CREATE VIEW 的[示例](CREATE-VIEW.md#zh-cn_topic_0283137480_zh-cn_topic_0237122126_zh-cn_topic_0059779377_s66a0b4a6a1df4ba4a116c6c565a0fe9d)。 + +## 相关链接 + +[ALTER VIEW](ALTER-VIEW.md),[CREATE VIEW](CREATE-VIEW.md) + diff --git a/content/zh/docs/Developerguide/DROP-WEAK-PASSWORD-DICTIONARY.md b/content/zh/docs/Developerguide/DROP-WEAK-PASSWORD-DICTIONARY.md index ad4c32ccf..4540b8175 100644 --- a/content/zh/docs/Developerguide/DROP-WEAK-PASSWORD-DICTIONARY.md +++ b/content/zh/docs/Developerguide/DROP-WEAK-PASSWORD-DICTIONARY.md @@ -1,28 +1,28 @@ -# DROP WEAK PASSWORD DICTIONARY - -## 功能描述 - -清空gs\_global\_config中的所有弱口令。 - -## 注意事项 - -只有初始用户、系统管理员和安全管理员拥有权限执行本语法。 - -## 语法格式 - -``` -DROP WEAK PASSWORD DICTIONARY; -``` - -## 参数说明 - -无。 - -## 示例 - -参见CREATE WEAK PASSWORD DICTIONARY的示例。 - -## 相关链接 - -[CREATE WEAK PASSWORD DICTIONARY](CREATE-WEAK-PASSWORD-DICTIONARY.md) - +# DROP WEAK PASSWORD DICTIONARY + +## 功能描述 + +清空gs\_global\_config中的所有弱口令。 + +## 注意事项 + +只有初始用户、系统管理员和安全管理员拥有权限执行本语法。 + +## 语法格式 + +``` +DROP WEAK PASSWORD DICTIONARY; +``` + +## 参数说明 + +无。 + +## 示例 + +参见 CREATE WEAK PASSWORD DICTIONARY 的示例。 + +## 相关链接 + +[CREATE WEAK PASSWORD DICTIONARY](CREATE-WEAK-PASSWORD-DICTIONARY.md) + diff --git a/content/zh/docs/Developerguide/DV_SESSIONS.md b/content/zh/docs/Developerguide/DV_SESSIONS.md index f073f50e0..9aa1612e8 100644 --- a/content/zh/docs/Developerguide/DV_SESSIONS.md +++ b/content/zh/docs/Developerguide/DV_SESSIONS.md @@ -1,49 +1,49 @@ -# DV\_SESSIONS - -DV\_SESSIONS视图存储当前会话的所有会话信息。默认只有系统管理员权限才可以访问此系统表,普通用户需要授权才可以访问。 - -**表 1** DV\_SESSIONS字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sid

-

bigint

-

当前活动的后台线程的OID。

-

serial#

-

integer

-

当前活动的后台线程的序号,在openGauss中为0。

-

user#

-

oid

-

登录此后台线程的用户的OID。oid 为0表示此后台线程为全局辅助线程(auxiliary)。

-

username

-

name

-

登录此后台线程的用户名。username为空表示此后台线程为全局辅助线程(auxiliary)。

-

可以通过和pg_stat_get_activity() 关联查询,识别出application_name。

-

例如:

-

select s.*,a.application_name from DV_SESSIONS as s left join pg_stat_get_activity(NULL) as a on s.sid=a.sessionid;

-
- +# DV\_SESSIONS + +DV\_SESSIONS视图存储当前会话的所有会话信息。默认只有系统管理员权限才可以访问此系统表,普通用户需要授权才可以访问。 + +**表 1** DV\_SESSIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sid

+

bigint

+

当前活动的后台线程的 OID 。

+

serial#

+

integer

+

当前活动的后台线程的序号,在openGauss中为 0 。

+

user#

+

oid

+

登录此后台线程的用户的 OID 。 oid 为 0 表示此后台线程为全局辅助线程(auxiliary)。

+

username

+

name

+

登录此后台线程的用户名。 username 为空表示此后台线程为全局辅助线程(auxiliary)。

+

可以通过和 pg_stat_get_activity() 关联查询,识别出 application_name 。

+

例如:

+

select s.*,a.application_name from DV_SESSIONS as s left join pg_stat_get_activity(NULL) as a on s.sid=a.sessionid;

+
+ diff --git a/content/zh/docs/Developerguide/DV_SESSION_LONGOPS.md b/content/zh/docs/Developerguide/DV_SESSION_LONGOPS.md index 9e3983bf5..eee6b2402 100644 --- a/content/zh/docs/Developerguide/DV_SESSION_LONGOPS.md +++ b/content/zh/docs/Developerguide/DV_SESSION_LONGOPS.md @@ -1,46 +1,46 @@ -# DV\_SESSION\_LONGOPS - -DV\_SESSION\_LONGOPS视图存储当前正在执行的操作的进度。该视图需要授权访问。 - -**表 1** DV\_SESSION\_LONGOPS字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sid

-

bigint

-

当前正在执行的后台进程的OID。

-

serial#

-

integer

-

当前正在执行的后台进程的序号,在openGauss中为0。

-

sofar

-

integer

-

目前完成的工作量,在openGauss中为空。

-

totalwork

-

integer

-

工作总量,在openGauss中为空。

-
- +# DV\_SESSION\_LONGOPS + +DV\_SESSION\_LONGOPS视图存储当前正在执行的操作的进度。该视图需要授权访问。 + +**表 1** DV\_SESSION\_LONGOPS字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sid

+

bigint

+

当前正在执行的后台进程的 OID 。

+

serial#

+

integer

+

当前正在执行的后台进程的序号,在openGauss中为 0 。

+

sofar

+

integer

+

目前完成的工作量,在openGauss中为空。

+

totalwork

+

integer

+

工作总量,在openGauss中为空。

+
+ diff --git "a/content/zh/docs/Developerguide/Database\345\222\214Schema\350\256\276\350\256\241.md" "b/content/zh/docs/Developerguide/Database\345\222\214Schema\350\256\276\350\256\241.md" index e1e6b344e..3ee06413c 100644 --- "a/content/zh/docs/Developerguide/Database\345\222\214Schema\350\256\276\350\256\241.md" +++ "b/content/zh/docs/Developerguide/Database\345\222\214Schema\350\256\276\350\256\241.md" @@ -1,21 +1,21 @@ -# Database和Schema设计 - -openGauss中可以使用Database和Schema实现业务的隔离,区别在于Database的隔离更加彻底,各个Database之间共享资源极少,可实现连接隔离、权限隔离等,Database之间无法直接互访。Schema隔离的方式共用资源较多,可以通过grant与revoke语法便捷地控制不同用户对各Schema及其下属对象的权限。 - -- 从便捷性和资源共享效率上考虑,推荐使用Schema进行业务隔离。 -- 建议系统管理员创建Schema和Database,再赋予相关用户对应的权限。 - -## Database设计建议 - -- 【规则】在实际业务中,根据需要创建新的Database,不建议直接使用数据库实例默认的postgres数据库。 -- 【建议】一个数据库实例内,用户自定义的Database数量建议不超过3个。 -- 【建议】为了适应全球化的需求,使数据库编码能够存储与表示绝大多数的字符,建议创建Database的时候使用UTF-8编码。 -- 【关注】创建Database时,需要重点关注字符集编码(ENCODING)和兼容性(DBCOMPATIBILITY)两个配置项。openGauss支持A、B、C和PG四种兼容模式,分别表示兼容O语法、MY语法、TD语法和POSTGRES语法,不同兼容模式下的语法行为存在一定差异,默认为A兼容模式。 -- 【关注】Database的owner默认拥有该Database下所有对象的所有权限,包括删除权限。删除权限影响较大,请谨慎使用。 - -## Schema设计建议 - -- 【关注】如果该用户不具有sysadmin权限或者不是该Schema的owner,要访问Schema下的对象,需要同时给用户赋予Schema的usage权限和对象的相应权限。 -- 【关注】如果要在Schema下创建对象,需要授予操作用户该Schema的create权限。 -- 【关注】Schema的owner默认拥有该Schema下对象的所有权限,包括删除权限。删除权限影响较大,请谨慎使用。 - +# Database和 Schema 设计 + +openGauss 中可以使用 Database 和 Schema 实现业务的隔离,区别在于 Database 的隔离更加彻底,各个 Database 之间共享资源极少,可实现连接隔离、权限隔离等, Database 之间无法直接互访。 Schema 隔离的方式共用资源较多,可以通过 grant 与 revoke 语法便捷地控制不同用户对各 Schema 及其下属对象的权限。 + +- 从便捷性和资源共享效率上考虑,推荐使用 Schema 进行业务隔离。 +- 建议系统管理员创建 Schema 和 Database ,再赋予相关用户对应的权限。 + +## Database设计建议 + +- 【规则】在实际业务中,根据需要创建新的 Database ,不建议直接使用数据库实例默认的 postgres 数据库。 +- 【建议】一个数据库实例内,用户自定义的 Database 数量建议不超过 3 个。 +- 【建议】为了适应全球化的需求,使数据库编码能够存储与表示绝大多数的字符,建议创建 Database 的时候使用UTF-8编码。 +- 【关注】创建 Database 时,需要重点关注字符集编码(ENCODING)和兼容性(DBCOMPATIBILITY)两个配置项。 openGauss 支持A、B、C和 PG 四种兼容模式,分别表示兼容 O 语法、MY语法、TD语法和 POSTGRES 语法,不同兼容模式下的语法行为存在一定差异,默认为 A 兼容模式。 +- 【关注】Database的 owner 默认拥有该 Database 下所有对象的所有权限,包括删除权限。删除权限影响较大,请谨慎使用。 + +## Schema设计建议 + +- 【关注】如果该用户不具有 sysadmin 权限或者不是该 Schema 的 owner ,要访问 Schema 下的对象,需要同时给用户赋予 Schema 的 usage 权限和对象的相应权限。 +- 【关注】如果要在 Schema 下创建对象,需要授予操作用户该 Schema 的 create 权限。 +- 【关注】Schema的 owner 默认拥有该 Schema 下对象的所有权限,包括删除权限。删除权限影响较大,请谨慎使用。 + diff --git "a/content/zh/docs/Developerguide/DeepSQL-\345\272\223\345\206\205AI\347\256\227\346\263\225.md" "b/content/zh/docs/Developerguide/DeepSQL-\345\272\223\345\206\205AI\347\256\227\346\263\225.md" index 928f01706..5415498c5 100644 --- "a/content/zh/docs/Developerguide/DeepSQL-\345\272\223\345\206\205AI\347\256\227\346\263\225.md" +++ "b/content/zh/docs/Developerguide/DeepSQL-\345\272\223\345\206\205AI\347\256\227\346\263\225.md" @@ -1,6 +1,6 @@ -# DeepSQL:库内AI算法 +# DeepSQL:库内 AI 算法 -数据库DeepSQL特性实现DB4AI功能,即在数据库内实现AI算法,以更好的支撑大数据的快速分析和计算。这里提供了一整套基于SQL的机器学习、数据挖掘以及统计学的算法,用户可以直接使用SQL进行机器学习工作。DeepSQL能够抽象出端到端从数据到模型的研发过程,配合底层的引擎及自动优化,具备基础SQL知识的技术人员即可完成大部分的机器学习模型训练及预测任务。整个分析和处理都运行在数据库引擎中,用户可以直接分析和处理数据库内的数据,不需要在数据库和其它平台之间进行数据传递,避免在多个环境之间进行不必要地数据移动。 +数据库 DeepSQL 特性实现 DB4AI 功能,即在数据库内实现 AI 算法,以更好的支撑大数据的快速分析和计算。这里提供了一整套基于 SQL 的机器学习、数据挖掘以及统计学的算法,用户可以直接使用 SQL 进行机器学习工作。 DeepSQL 能够抽象出端到端从数据到模型的研发过程,配合底层的引擎及自动优化,具备基础 SQL 知识的技术人员即可完成大部分的机器学习模型训练及预测任务。整个分析和处理都运行在数据库引擎中,用户可以直接分析和处理数据库内的数据,不需要在数据库和其它平台之间进行数据传递,避免在多个环境之间进行不必要地数据移动。 - **[概述](概述-44.md)** diff --git a/content/zh/docs/Developerguide/Developerguide.md b/content/zh/docs/Developerguide/Developerguide.md index 87e786e32..2c7a1003c 100644 --- a/content/zh/docs/Developerguide/Developerguide.md +++ b/content/zh/docs/Developerguide/Developerguide.md @@ -1,16 +1,16 @@ -# 开发者指南 - -## 概述 - -本文档介绍如何设计、创建、查询和维护数据库。包括SQL语句、存储过程、系统表和视图等。 - -## 读者对象 - -- 数据库管理员。 -- 应用程序设计或开发人员。 - -作为数据库管理员和应用程序开发人员,至少需要了解以下知识: - -- 操作系统知识。 - -- SQL语法。 +# 开发者指南 + +## 概述 + +本文档介绍如何设计、创建、查询和维护数据库。包括 SQL 语句、存储过程、系统表和视图等。 + +## 读者对象 + +- 数据库管理员。 +- 应用程序设计或开发人员。 + +作为数据库管理员和应用程序开发人员,至少需要了解以下知识: + +- 操作系统知识。 + +- SQL语法。 diff --git a/content/zh/docs/Developerguide/EXECUTE-DIRECT.md b/content/zh/docs/Developerguide/EXECUTE-DIRECT.md index f48420358..8c35b8fae 100644 --- a/content/zh/docs/Developerguide/EXECUTE-DIRECT.md +++ b/content/zh/docs/Developerguide/EXECUTE-DIRECT.md @@ -1,78 +1,78 @@ -# EXECUTE DIRECT - -## 功能描述 - -在指定的节点上执行SQL语句。一般情况下,SQL语句的执行是由集群负载自动分配到合适的节点上,execute direct主要用于数据库维护和测试。 - -## 注意事项 - -- 当enable\_nonsysadmin\_execute\_direct=off时,只有系统管理员和监控管理员才能执行EXECUTE DIRECT。 -- 为了各个节点上数据的一致性,SQL语句仅支持SELECT,不允许执行事务语句、DDL、DML。 -- 使用此类型语句在指定的DN执行stddev聚集计算时,返回结果集是以三元数组形式返回,如\{3, 8, 30\},表示count结果为3,sum结果为8,平方和为30。使用此类型语句在指定的DN执行AVG聚集计算时,返回结果集以二元组形式返回,如\{4,2\},表示sum结果为4,count结果为2。注意,当数据为列存时,调用avg函数结果未定义,请使用stddev\_samp函数。 -- 当指定多个节点时,不支持agg函数,当query中包含agg函数时,会返回“EXECUTE DIRECT on multinode not support agg functions.” -- 由于CN节点不存储用户表数据,不允许指定CN节点执行用户表上的SELECT查询。 -- 不允许执行嵌套的EXECUTE DIRECT语句,即执行的SQL语句不能同样是EXECUTE DIRECT语句,此时可直接执行最内层EXECUTE DIRECT语句代替。 -- agg函数查询结果与直接在CN上查询不一致,会返回多个信息,不支持array\_avg函数。 - -## 语法格式 - -``` -EXECUTE DIRECT ON ( nodename [, ... ] ) query ; -EXECUTE DIRECT ON { COORDINATORS | DATANODES | ALL } query; -``` - -## 参数说明 - -- nodename - - 节点名称。 - - 取值范围:已存在的节点。 - -- query - - 要执行查询语句。 - -- COORDINATORS - - 在所有coordinator执行查询语句。 - -- DATANODES - - 在所有datanode执行查询语句。 - -- ALL - - 在所有coordinator和datanode执行查询语句。 - - -## 示例 - -``` ---查询当前数据库实例的节点分布状态。 -openGauss=# SELECT * FROM pgxc_node; - node_name | node_type | node_port | node_host | node_port1 | node_host1 | hostis_primary | nodeis_primary | nodeis_preferred | node_id | sctp_port | control_port | sctp_port1 | control_port1 ---------------+-----------+-----------+----------------+------------+----------------+----------------+----------------+------------------+-------------+-----------+--------------+------------+--------------- - cn_5001 | C | 8050 | 10.180.155.74 | 8050 | 10.180.155.74 | t | f | f | 1120683504 | 0 | 0 | 0 | 0 - cn_5003 | C | 8050 | 10.180.157.130 | 8050 | 10.180.157.130 | t | f | f | -125853378 | 0 | 0 | 0 | 0 - dn_6001_6002 | D | 40050 | 10.180.155.74 | 45050 | 10.146.187.231 | t | f | f | 1644780306 | 40052 | 40052 | 45052 | 45052 - dn_6003_6004 | D | 40050 | 10.146.187.231 | 45050 | 10.180.157.130 | t | f | f | -966646068 | 40052 | 40052 | 45052 | 45052 - dn_6005_6006 | D | 40050 | 10.180.157.130 | 45050 | 10.180.155.74 | t | f | f | 868850011 | 40052 | 40052 | 45052 | 45052 - cn_5002 | C | 8050 | localhost | 8050 | localhost | t | f | f | -1736975100 | 0 | 0 | 0 | 0 -(6 rows) - ---查询dn_6001_6002上tpcds.customer_address记录。 -openGauss=# EXECUTE DIRECT ON(dn_6001_6002) 'select count(*) from tpcds.customer_address'; - count -------- - 16922 -(1 row) - ---查询tpcds.customer_address所有记录。 -openGauss=# SELECT count(*) FROM tpcds.customer_address; - count -------- - 50000 -(1 row) -``` - +# EXECUTE DIRECT + +## 功能描述 + +在指定的节点上执行 SQL 语句。一般情况下, SQL 语句的执行是由集群负载自动分配到合适的节点上, execute direct 主要用于数据库维护和测试。 + +## 注意事项 + +- 当enable\_nonsysadmin\_execute\_direct=off时,只有系统管理员和监控管理员才能执行 EXECUTE DIRECT 。 +- 为了各个节点上数据的一致性, SQL 语句仅支持 SELECT ,不允许执行事务语句、DDL、DML。 +- 使用此类型语句在指定的 DN 执行 stddev 聚集计算时,返回结果集是以三元数组形式返回,如\{3, 8 , 30\},表示 count 结果为 3 , sum 结果为 8 ,平方和为 30 。使用此类型语句在指定的 DN 执行 AVG 聚集计算时,返回结果集以二元组形式返回,如\{4,2\},表示 sum 结果为 4 , count 结果为 2 。注意,当数据为列存时,调用 avg 函数结果未定义,请使用stddev\_samp函数。 +- 当指定多个节点时,不支持 agg 函数,当 query 中包含 agg 函数时,会返回“EXECUTE DIRECT on multinode not support agg functions.” +- 由于 CN 节点不存储用户表数据,不允许指定 CN 节点执行用户表上的 SELECT 查询。 +- 不允许执行嵌套的 EXECUTE DIRECT 语句,即执行的 SQL 语句不能同样是 EXECUTE DIRECT 语句,此时可直接执行最内层 EXECUTE DIRECT 语句代替。 +- agg函数查询结果与直接在 CN 上查询不一致,会返回多个信息,不支持array\_avg函数。 + +## 语法格式 + +``` +EXECUTE DIRECT ON ( nodename [, ... ] ) query ; +EXECUTE DIRECT ON { COORDINATORS | DATANODES | ALL } query; +``` + +## 参数说明 + +- nodename + + 节点名称。 + + 取值范围:已存在的节点。 + +- query + + 要执行查询语句。 + +- COORDINATORS + + 在所有 coordinator 执行查询语句。 + +- DATANODES + + 在所有 datanode 执行查询语句。 + +- ALL + + 在所有 coordinator 和 datanode 执行查询语句。 + + +## 示例 + +``` +--查询当前数据库实例的节点分布状态。 +openGauss=# SELECT * FROM pgxc_node; + node_name | node_type | node_port | node_host | node_port1 | node_host1 | hostis_primary | nodeis_primary | nodeis_preferred | node_id | sctp_port | control_port | sctp_port1 | control_port1 +--------------+-----------+-----------+----------------+------------+----------------+----------------+----------------+------------------+-------------+-----------+--------------+------------+--------------- + cn_5001 | C | 8050 | 10.180.155.74 | 8050 | 10.180.155.74 | t | f | f | 1120683504 | 0 | 0 | 0 | 0 + cn_5003 | C | 8050 | 10.180.157.130 | 8050 | 10.180.157.130 | t | f | f | -125853378 | 0 | 0 | 0 | 0 + dn_6001_6002 | D | 40050 | 10.180.155.74 | 45050 | 10.146.187.231 | t | f | f | 1644780306 | 40052 | 40052 | 45052 | 45052 + dn_6003_6004 | D | 40050 | 10.146.187.231 | 45050 | 10.180.157.130 | t | f | f | -966646068 | 40052 | 40052 | 45052 | 45052 + dn_6005_6006 | D | 40050 | 10.180.157.130 | 45050 | 10.180.155.74 | t | f | f | 868850011 | 40052 | 40052 | 45052 | 45052 + cn_5002 | C | 8050 | localhost | 8050 | localhost | t | f | f | -1736975100 | 0 | 0 | 0 | 0 +(6 rows) + +--查询 dn_6001_6002 上tpcds.customer_address记录。 +openGauss=# EXECUTE DIRECT ON(dn_6001_6002) 'select count(*) from tpcds.customer_address'; + count +------- + 16922 +(1 row) + +--查询tpcds.customer_address所有记录。 +openGauss=# SELECT count(*) FROM tpcds.customer_address; + count +------- + 50000 +(1 row) +``` + diff --git a/content/zh/docs/Developerguide/EXECUTE.md b/content/zh/docs/Developerguide/EXECUTE.md index bd2378eb2..46aed879e 100644 --- a/content/zh/docs/Developerguide/EXECUTE.md +++ b/content/zh/docs/Developerguide/EXECUTE.md @@ -1,54 +1,54 @@ -# EXECUTE - -## 功能描述 - -执行一个前面准备好的预备语句。因为一个预备语句只在会话的生命期里存在,那么预备语句必须是在当前会话的前些时候用PREPARE语句创建的。 - -## 注意事项 - -如果创建预备语句的PREPARE语句声明了一些参数,那么传递给EXECUTE语句的必须是一个兼容的参数集,否则就会生成一个错误。 - -## 语法格式 - -``` -EXECUTE name [ ( parameter [, ...] ) ]; -``` - -## 参数说明 - -- **name** - - 要执行的预备语句的名称。 - -- **parameter** - - 给预备语句的一个参数的具体数值。它必须是一个和生成与创建这个预备语句时指定参数的数据类型相兼容的值的表达式。 - - -## 示例 - -``` ---创建表reason。 -openGauss=# CREATE TABLE tpcds.reason ( - CD_DEMO_SK INTEGER NOT NULL, - CD_GENDER character(16) , - CD_MARITAL_STATUS character(100) -) -; - ---插入数据。 -openGauss=# INSERT INTO tpcds.reason VALUES(51, 'AAAAAAAADDAAAAAA', 'reason 51'); - ---创建表reason_t1。 -openGauss=# CREATE TABLE tpcds.reason_t1 AS TABLE tpcds.reason; - ---为一个INSERT语句创建一个预备语句然后执行它。 -openGauss=# PREPARE insert_reason(integer,character(16),character(100)) AS INSERT INTO tpcds.reason_t1 VALUES($1,$2,$3); - -openGauss=# EXECUTE insert_reason(52, 'AAAAAAAADDAAAAAA', 'reason 52'); - ---删除表reason和reason_t1。 -openGauss=# DROP TABLE tpcds.reason; -openGauss=# DROP TABLE tpcds.reason_t1; -``` - +# EXECUTE + +## 功能描述 + +执行一个前面准备好的预备语句。因为一个预备语句只在会话的生命期里存在,那么预备语句必须是在当前会话的前些时候用 PREPARE 语句创建的。 + +## 注意事项 + +如果创建预备语句的 PREPARE 语句声明了一些参数,那么传递给 EXECUTE 语句的必须是一个兼容的参数集,否则就会生成一个错误。 + +## 语法格式 + +``` +EXECUTE name [ ( parameter [, ...] ) ]; +``` + +## 参数说明 + +- **name** + + 要执行的预备语句的名称。 + +- **parameter** + + 给预备语句的一个参数的具体数值。它必须是一个和生成与创建这个预备语句时指定参数的数据类型相兼容的值的表达式。 + + +## 示例 + +``` +--创建表 reason 。 +openGauss=# CREATE TABLE tpcds.reason ( + CD_DEMO_SK INTEGER NOT NULL , + CD_GENDER character(16) , + CD_MARITAL_STATUS character(100) +) +; + +--插入数据。 +openGauss=# INSERT INTO tpcds.reason VALUES(51, 'AAAAAAAADDAAAAAA', 'reason 51'); + +--创建表 reason_t1 。 +openGauss=# CREATE TABLE tpcds.reason_t1 AS TABLE tpcds.reason; + +--为一个 INSERT 语句创建一个预备语句然后执行它。 +openGauss=# PREPARE insert_reason(integer,character(16),character(100)) AS INSERT INTO tpcds.reason_t1 VALUES($1,$2,$3); + +openGauss=# EXECUTE insert_reason(52, 'AAAAAAAADDAAAAAA', 'reason 52'); + +--删除表 reason 和 reason_t1 。 +openGauss=# DROP TABLE tpcds.reason; +openGauss=# DROP TABLE tpcds.reason_t1; +``` + diff --git a/content/zh/docs/Developerguide/EXPLAIN-PLAN.md b/content/zh/docs/Developerguide/EXPLAIN-PLAN.md index c41871cb5..423d46352 100644 --- a/content/zh/docs/Developerguide/EXPLAIN-PLAN.md +++ b/content/zh/docs/Developerguide/EXPLAIN-PLAN.md @@ -1,79 +1,79 @@ -# EXPLAIN PLAN - -## 功能描述 - -通过EXPLAIN PLAN命令可以将查询执行的计划信息存储于PLAN\_TABLE表中。与EXPLAIN命令不同的是,EXPLAIN PLAN仅将计划信息进行存储,而不会打印到屏幕。 - -## 语法格式 - -``` -EXPLAIN PLAN -[ SET STATEMENT_ID = string ] -FOR statement ; -``` - -## 参数说明 - -- EXPLAIN中的PLAN选项表示需要将计划信息存储于PLAN\_TABLE中,存储成功将返回“EXPLAIN SUCCESS”。 -- STATEMENT\_ID用户可以对查询设置标签,输入的标签信息也将存储于PLAN\_TABLE中。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >用户在执行EXPLAIN PLAN时,如果没有进行SET STATEMENT\_ID,则默认为空值。同时,用户可输入的STATEMENT\_ID最大长度为30个字节,超过长度将会产生报错。 - - -## 注意事项 - -- EXPLAIN PLAN不支持在数据库节点上执行。 -- 对于执行错误的SQL无法进行计划信息的收集。 -- PLAN\_TABLE中的数据是session级生命周期并且session隔离和用户隔离,用户只能看到当前session、当前用户的数据。 - -## 示例 - -使用EXPLAIN PLAN收集SQL语句的执行计划,通常包括以下步骤: - -1. 执行EXPLAN PLAN。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >执行EXPLAIN PLAN 后会将计划信息自动存储于PLAN\_TABLE中,不支持对PLAN\_TABLE进行INSERT、UPDATE、ANALYZE等操作。 - >PLAN\_TABLE详细介绍见[PLAN\_TABLE](PLAN_TABLE.md)。 - - ``` - explain plan set statement_id='TPCH-Q4' for - select - o_orderpriority, - count(*) as order_count - from - orders - where - o_orderdate >= '1993-07-01'::date - and o_orderdate < '1993-07-01'::date + interval '3 month' - and exists ( - select - * - from - lineitem - where - l_orderkey = o_orderkey - and l_commitdate < l_receiptdate - ) - group by - o_orderpriority - order by - o_orderpriority; - ``` - -2. 查询PLAN\_TABLE。 - - ``` - SELECT * FROM PLAN_TABLE; - ``` - - ![](figures/文档.png) - -3. 清理PLAN\_TABLE表中的数据。 - - ``` - DELETE FROM PLAN_TABLE WHERE xxx; - ``` - - +# EXPLAIN PLAN + +## 功能描述 + +通过 EXPLAIN PLAN 命令可以将查询执行的计划信息存储于PLAN\_TABLE表中。与 EXPLAIN 命令不同的是, EXPLAIN PLAN 仅将计划信息进行存储,而不会打印到屏幕。 + +## 语法格式 + +``` +EXPLAIN PLAN +[ SET STATEMENT_ID = string ] +FOR statement ; +``` + +## 参数说明 + +- EXPLAIN中的 PLAN 选项表示需要将计划信息存储于PLAN\_TABLE中,存储成功将返回“EXPLAIN SUCCESS”。 +- STATEMENT\_ID用户可以对查询设置标签,输入的标签信息也将存储于PLAN\_TABLE中。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >用户在执行 EXPLAIN PLAN 时,如果没有进行SET STATEMENT\_ID,则默认为空值。同时,用户可输入的STATEMENT\_ID最大长度为 30 个字节,超过长度将会产生报错。 + + +## 注意事项 + +- EXPLAIN PLAN不支持在数据库节点上执行。 +- 对于执行错误的 SQL 无法进行计划信息的收集。 +- PLAN\_TABLE中的数据是 session 级生命周期并且 session 隔离和用户隔离,用户只能看到当前session、当前用户的数据。 + +## 示例 + +使用 EXPLAIN PLAN 收集 SQL 语句的执行计划,通常包括以下步骤: + +1. 执行 EXPLAN PLAN 。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >执行 EXPLAIN PLAN 后会将计划信息自动存储于PLAN\_TABLE中,不支持对PLAN\_TABLE进行INSERT、UPDATE、ANALYZE等操作。 + >PLAN\_TABLE详细介绍见[PLAN\_TABLE](PLAN_TABLE.md)。 + + ``` + explain plan set statement_id='TPCH-Q4' for + select + o_orderpriority , + count(*) as order_count + from + orders + where + o_orderdate >= '1993-07-01'::date + and o_orderdate < '1993-07-01'::date + interval '3 month' + and exists ( + select + * + from + lineitem + where + l_orderkey = o_orderkey + and l_commitdate < l_receiptdate + ) + group by + o_orderpriority + order by + o_orderpriority; + ``` + +2. 查询PLAN\_TABLE。 + + ``` + SELECT * FROM PLAN_TABLE; + ``` + + ![](figures/文档.png) + +3. 清理PLAN\_TABLE表中的数据。 + + ``` + DELETE FROM PLAN_TABLE WHERE xxx; + ``` + + diff --git a/content/zh/docs/Developerguide/EXPLAIN.md b/content/zh/docs/Developerguide/EXPLAIN.md index e7459b574..c17db0fc1 100644 --- a/content/zh/docs/Developerguide/EXPLAIN.md +++ b/content/zh/docs/Developerguide/EXPLAIN.md @@ -1,259 +1,259 @@ -# EXPLAIN - -## 功能描述 - -显示SQL语句的执行计划。 - -执行计划将显示SQL语句所引用的表会采用什么样的扫描方式,如:简单的顺序扫描、索引扫描等。如果引用了多个表,执行计划还会显示用到的JOIN算法。 - -执行计划的最关键的部分是语句的预计执行开销,这是计划生成器估算执行该语句将花费多长的时间。 - -若指定了ANALYZE选项,则该语句会被执行,然后根据实际的运行结果显示统计数据,包括每个计划节点内时间总开销(毫秒为单位)和实际返回的总行数。这对于判断计划生成器的估计是否接近现实非常有用。 - -## 注意事项 - -- 在指定ANALYZE选项时,语句会被执行。如果用户想使用EXPLAIN分析INSERT、UPDATE、DELETE、CREATE TABLE AS或EXECUTE语句,而不想改动数据(执行这些语句会影响数据),请使用如下方法。 - - ``` - START TRANSACTION; - EXPLAIN ANALYZE ...; - ROLLBACK; - ``` - -- 由于参数DETAIL、NODES、NUM\_NODES是分布式模式下的功能,在单机模式中是被禁止使用的。假如使用,会产生如下错误。 - - ``` - openGauss=# create table student(id int, name char(20)); - CREATE TABLE - openGauss=# explain (nodes true) insert into student values(5,'a'),(6,'b'); - ERROR: unrecognized EXPLAIN option "nodes" - openGauss=# explain (num_nodes true) insert into student values(5,'a'),(6,'b'); - ERROR: unrecognized EXPLAIN option "num_nodes" - ``` - - -## 语法格式 - -- 显示SQL语句的执行计划,支持多种选项,对选项顺序无要求。 - - ``` - EXPLAIN [ ( option [, ...] ) ] statement; - ``` - - 其中选项option子句的语法为。 - - ``` - ANALYZE [ boolean ] | - ANALYSE [ boolean ] | - VERBOSE [ boolean ] | - COSTS [ boolean ] | - CPU [ boolean ] | - DETAIL [ boolean ] |(不可用) - NODES [ boolean ] |(不可用) - NUM_NODES [ boolean ] |(不可用) - BUFFERS [ boolean ] | - TIMING [ boolean ] | - PLAN [ boolean ] | - FORMAT { TEXT | XML | JSON | YAML } - ``` - -- 显示SQL语句的执行计划,且要按顺序给出选项。 - - ``` - EXPLAIN { [ { ANALYZE | ANALYSE } ] [ VERBOSE ] | PERFORMANCE } statement; - ``` - - -## 参数说明 - -- **statement** - - 指定要分析的SQL语句。 - -- **ANALYZE boolean | ANALYSE boolean** - - 显示实际运行时间和其他统计数据。 - - 取值范围: - - - TRUE(缺省值):显示实际运行时间和其他统计数据。 - - FALSE:不显示。 - -- **VERBOSE boolean** - - 显示有关计划的额外信息。 - - 取值范围: - - - TRUE(缺省值):显示额外信息。 - - FALSE:不显示。 - -- **COSTS boolean** - - 包括每个规划节点的估计总成本,以及估计的行数和每行的宽度。 - - 取值范围: - - - TRUE(缺省值):显示估计总成本和宽度。 - - FALSE:不显示。 - -- **CPU boolean** - - 打印CPU的使用情况的信息。 - - 取值范围: - - - TRUE(缺省值):显示CPU的使用情况。 - - FALSE:不显示。 - -- **DETAIL boolean**(不可用) - - 打印数据库节点上的信息。 - - 取值范围: - - - TRUE(缺省值):打印数据库节点的信息。 - - FALSE:不打印。 - -- **NODES boolean**(不可用) - - 打印query执行的节点信息。 - - 取值范围: - - - TRUE(缺省值):打印执行的节点的信息。 - - FALSE:不打印。 - -- **NUM\_NODES boolean**(不可用) - - 打印执行中的节点的个数信息。 - - 取值范围: - - - TRUE(缺省值):打印数据库节点个数的信息。 - - FALSE:不打印。 - -- **BUFFERS boolean** - - 包括缓冲区的使用情况的信息。 - - 取值范围: - - - TRUE:显示缓冲区的使用情况。 - - FALSE(缺省值):不显示。 - -- **TIMING boolean** - - 包括实际的启动时间和花费在输出节点上的时间信息。 - - 取值范围: - - - TRUE(缺省值):显示启动时间和花费在输出节点上的时间信息。 - - FALSE:不显示。 - -- **PLAN** - - 是否将执行计划存储在plan\_table中。当该选项开启时,会将执行计划存储在PLAN\_TABLE中,不打印到当前屏幕,因此该选项为on时,不能与其他选项同时使用。 - - 取值范围: - - - ON(缺省值):将执行计划存储在plan\_table中,不打印到当前屏幕。执行成功返回EXPLAIN SUCCESS。 - - OFF:不存储执行计划,将执行计划打印到当前屏幕。 - -- **FORMAT** - - 指定输出格式。 - - 取值范围:TEXT、XML、JSON和YAML。 - - 默认值:TEXT。 - -- **PERFORMANCE** - - 使用此选项时,即打印执行中的所有相关信息。 - - -## 示例 - -``` ---创建一个表tpcds.customer_address_p1。 -openGauss=# CREATE TABLE tpcds.customer_address_p1 AS TABLE tpcds.customer_address; - ---修改explain_perf_mode为normal -openGauss=# SET explain_perf_mode=normal; - ---显示表简单查询的执行计划。 -openGauss=# EXPLAIN SELECT * FROM tpcds.customer_address_p1; -QUERY PLAN --------------------------------------------------- -Data Node Scan (cost=0.00..0.00 rows=0 width=0) -Node/s: All dbnodes -(2 rows) - ---以JSON格式输出的执行计划(explain_perf_mode为normal时)。 -openGauss=# EXPLAIN(FORMAT JSON) SELECT * FROM tpcds.customer_address_p1; - QUERY PLAN --------------------------------------- - [ + - { + - "Plan": { + - "Node Type": "Data Node Scan",+ - "Startup Cost": 0.00, + - "Total Cost": 0.00, + - "Plan Rows": 0, + - "Plan Width": 0, + - "Node/s": "All dbnodes" + - } + - } + - ] -(1 row) - ---如果有一个索引,当使用一个带索引WHERE条件的查询,可能会显示一个不同的计划。 -openGauss=# EXPLAIN SELECT * FROM tpcds.customer_address_p1 WHERE ca_address_sk=10000; -QUERY PLAN --------------------------------------------------- -Data Node Scan (cost=0.00..0.00 rows=0 width=0) -Node/s: dn_6005_6006 -(2 rows) - ---以YAML格式输出的执行计划(explain_perf_mode为normal时)。 -openGauss=# EXPLAIN(FORMAT YAML) SELECT * FROM tpcds.customer_address_p1 WHERE ca_address_sk=10000; - QUERY PLAN ---------------------------------- - - Plan: + - Node Type: "Data Node Scan"+ - Startup Cost: 0.00 + - Total Cost: 0.00 + - Plan Rows: 0 + - Plan Width: 0 + - Node/s: "dn_6005_6006" -(1 row) - ---禁止开销估计的执行计划。 -openGauss=# EXPLAIN(COSTS FALSE)SELECT * FROM tpcds.customer_address_p1 WHERE ca_address_sk=10000; - QUERY PLAN ------------------------- - Data Node Scan - Node/s: dn_6005_6006 -(2 rows) - ---带有聚集函数查询的执行计划。 -openGauss=# EXPLAIN SELECT SUM(ca_address_sk) FROM tpcds.customer_address_p1 WHERE ca_address_sk<10000; - QUERY PLAN ---------------------------------------------------------------------------------------- - Aggregate (cost=18.19..14.32 rows=1 width=4) - -> Streaming (type: GATHER) (cost=18.19..14.32 rows=3 width=4) - Node/s: All dbnodes - -> Aggregate (cost=14.19..14.20 rows=3 width=4) - -> Seq Scan on customer_address_p1 (cost=0.00..14.18 rows=10 width=4) - Filter: (ca_address_sk < 10000) -(6 rows) - ---删除表tpcds.customer_address_p1。 -openGauss=# DROP TABLE tpcds.customer_address_p1; -``` - -## 相关链接 - -[ANALYZE | ANALYSE](ANALYZE-ANALYSE.md) - +# EXPLAIN + +## 功能描述 + +显示 SQL 语句的执行计划。 + +执行计划将显示 SQL 语句所引用的表会采用什么样的扫描方式,如:简单的顺序扫描、索引扫描等。如果引用了多个表,执行计划还会显示用到的 JOIN 算法。 + +执行计划的最关键的部分是语句的预计执行开销,这是计划生成器估算执行该语句将花费多长的时间。 + +若指定了 ANALYZE 选项,则该语句会被执行,然后根据实际的运行结果显示统计数据,包括每个计划节点内时间总开销(毫秒为单位)和实际返回的总行数。这对于判断计划生成器的估计是否接近现实非常有用。 + +## 注意事项 + +- 在指定 ANALYZE 选项时,语句会被执行。如果用户想使用 EXPLAIN 分析INSERT、UPDATE、DELETE、CREATE TABLE AS或 EXECUTE 语句,而不想改动数据(执行这些语句会影响数据),请使用如下方法。 + + ``` + START TRANSACTION; + EXPLAIN ANALYZE ...; + ROLLBACK; + ``` + +- 由于参数DETAIL、NODES、NUM\_NODES是分布式模式下的功能,在单机模式中是被禁止使用的。假如使用,会产生如下错误。 + + ``` + openGauss=# create table student(id int, name char(20)); + CREATE TABLE + openGauss=# explain (nodes true) insert into student values(5,'a'),(6,'b'); + ERROR: unrecognized EXPLAIN option "nodes" + openGauss=# explain (num_nodes true) insert into student values(5,'a'),(6,'b'); + ERROR: unrecognized EXPLAIN option "num_nodes" + ``` + + +## 语法格式 + +- 显示 SQL 语句的执行计划,支持多种选项,对选项顺序无要求。 + + ``` + EXPLAIN [ ( option [, ...] ) ] statement; + ``` + + 其中选项 option 子句的语法为。 + + ``` + ANALYZE [ boolean ] | + ANALYSE [ boolean ] | + VERBOSE [ boolean ] | + COSTS [ boolean ] | + CPU [ boolean ] | + DETAIL [ boolean ] |(不可用) + NODES [ boolean ] |(不可用) + NUM_NODES [ boolean ] |(不可用) + BUFFERS [ boolean ] | + TIMING [ boolean ] | + PLAN [ boolean ] | + FORMAT { TEXT | XML | JSON | YAML } + ``` + +- 显示 SQL 语句的执行计划,且要按顺序给出选项。 + + ``` + EXPLAIN { [ { ANALYZE | ANALYSE } ] [ VERBOSE ] | PERFORMANCE } statement; + ``` + + +## 参数说明 + +- **statement** + + 指定要分析的 SQL 语句。 + +- **ANALYZE boolean | ANALYSE boolean** + + 显示实际运行时间和其他统计数据。 + + 取值范围: + + - TRUE(缺省值):显示实际运行时间和其他统计数据。 + - FALSE:不显示。 + +- **VERBOSE boolean** + + 显示有关计划的额外信息。 + + 取值范围: + + - TRUE(缺省值):显示额外信息。 + - FALSE:不显示。 + +- **COSTS boolean** + + 包括每个规划节点的估计总成本,以及估计的行数和每行的宽度。 + + 取值范围: + + - TRUE(缺省值):显示估计总成本和宽度。 + - FALSE:不显示。 + +- **CPU boolean** + + 打印 CPU 的使用情况的信息。 + + 取值范围: + + - TRUE(缺省值):显示 CPU 的使用情况。 + - FALSE:不显示。 + +- **DETAIL boolean**(不可用) + + 打印数据库节点上的信息。 + + 取值范围: + + - TRUE(缺省值):打印数据库节点的信息。 + - FALSE:不打印。 + +- **NODES boolean**(不可用) + + 打印 query 执行的节点信息。 + + 取值范围: + + - TRUE(缺省值):打印执行的节点的信息。 + - FALSE:不打印。 + +- **NUM\_NODES boolean**(不可用) + + 打印执行中的节点的个数信息。 + + 取值范围: + + - TRUE(缺省值):打印数据库节点个数的信息。 + - FALSE:不打印。 + +- **BUFFERS boolean** + + 包括缓冲区的使用情况的信息。 + + 取值范围: + + - TRUE:显示缓冲区的使用情况。 + - FALSE(缺省值):不显示。 + +- **TIMING boolean** + + 包括实际的启动时间和花费在输出节点上的时间信息。 + + 取值范围: + + - TRUE(缺省值):显示启动时间和花费在输出节点上的时间信息。 + - FALSE:不显示。 + +- **PLAN** + + 是否将执行计划存储在plan\_table中。当该选项开启时,会将执行计划存储在PLAN\_TABLE中,不打印到当前屏幕,因此该选项为 on 时,不能与其他选项同时使用。 + + 取值范围: + + - ON(缺省值):将执行计划存储在plan\_table中,不打印到当前屏幕。执行成功返回 EXPLAIN SUCCESS 。 + - OFF:不存储执行计划,将执行计划打印到当前屏幕。 + +- **FORMAT** + + 指定输出格式。 + + 取值范围:TEXT、XML、JSON和 YAML 。 + + 默认值:TEXT。 + +- **PERFORMANCE** + + 使用此选项时,即打印执行中的所有相关信息。 + + +## 示例 + +``` +--创建一个表tpcds.customer_address_p1。 +openGauss=# CREATE TABLE tpcds.customer_address_p1 AS TABLE tpcds.customer_address; + +--修改 explain_perf_mode 为normal +openGauss=# SET explain_perf_mode=normal; + +--显示表简单查询的执行计划。 +openGauss=# EXPLAIN SELECT * FROM tpcds.customer_address_p1; +QUERY PLAN +-------------------------------------------------- +Data Node Scan (cost=0.00..0.00 rows=0 width=0) +Node/s: All dbnodes +(2 rows) + +--以 JSON 格式输出的执行计划(explain_perf_mode为 normal 时)。 +openGauss=# EXPLAIN(FORMAT JSON) SELECT * FROM tpcds.customer_address_p1; + QUERY PLAN +-------------------------------------- + [ + + { + + "Plan": { + + "Node Type": "Data Node Scan",+ + "Startup Cost": 0.00, + + "Total Cost": 0.00, + + "Plan Rows": 0, + + "Plan Width": 0, + + "Node/s": "All dbnodes" + + } + + } + + ] +(1 row) + +--如果有一个索引,当使用一个带索引 WHERE 条件的查询,可能会显示一个不同的计划。 +openGauss=# EXPLAIN SELECT * FROM tpcds.customer_address_p1 WHERE ca_address_sk=10000; +QUERY PLAN +-------------------------------------------------- +Data Node Scan (cost=0.00..0.00 rows=0 width=0) +Node/s: dn_6005_6006 +(2 rows) + +--以 YAML 格式输出的执行计划(explain_perf_mode为 normal 时)。 +openGauss=# EXPLAIN(FORMAT YAML) SELECT * FROM tpcds.customer_address_p1 WHERE ca_address_sk=10000; + QUERY PLAN +--------------------------------- + - Plan: + + Node Type: "Data Node Scan"+ + Startup Cost: 0.00 + + Total Cost: 0.00 + + Plan Rows: 0 + + Plan Width: 0 + + Node/s: "dn_6005_6006" +(1 row) + +--禁止开销估计的执行计划。 +openGauss=# EXPLAIN(COSTS FALSE)SELECT * FROM tpcds.customer_address_p1 WHERE ca_address_sk=10000; + QUERY PLAN +------------------------ + Data Node Scan + Node/s: dn_6005_6006 +(2 rows) + +--带有聚集函数查询的执行计划。 +openGauss=# EXPLAIN SELECT SUM(ca_address_sk) FROM tpcds.customer_address_p1 WHERE ca_address_sk<10000; + QUERY PLAN +--------------------------------------------------------------------------------------- + Aggregate (cost=18.19..14.32 rows=1 width=4) + -> Streaming (type: GATHER) (cost=18.19..14.32 rows=3 width=4) + Node/s: All dbnodes + -> Aggregate (cost=14.19..14.20 rows=3 width=4) + -> Seq Scan on customer_address_p1 (cost=0.00..14.18 rows=10 width=4) + Filter: (ca_address_sk < 10000) +(6 rows) + +--删除表tpcds.customer_address_p1。 +openGauss=# DROP TABLE tpcds.customer_address_p1; +``` + +## 相关链接 + +[ANALYZE | ANALYSE](ANALYZE-ANALYSE.md) + diff --git a/content/zh/docs/Developerguide/FETCH.md b/content/zh/docs/Developerguide/FETCH.md index c1f19944e..9aa90b444 100644 --- a/content/zh/docs/Developerguide/FETCH.md +++ b/content/zh/docs/Developerguide/FETCH.md @@ -1,215 +1,215 @@ -# FETCH - -## 功能描述 - -FETCH通过已创建的游标来检索数据。 - -每个游标都有一个供FETCH使用的关联位置。游标的关联位置可以在查询结果的第一行之前,或者在结果中的任意行,或者在结果的最后一行之后: - -- 游标刚创建完之后,关联位置在第一行之前的。 -- 在抓取了一些移动行之后,关联位置在检索到的最后一行上。 -- 如果FETCH抓取完了所有可用行,它就停在最后一行后面,或者在反向抓取的情况下是停在第一行前面。 -- FETCH ALL或FETCH BACKWARD ALL将总是把游标的关联位置放在最后一行或者在第一行前面。 - -## 注意事项 - -- 如果游标定义了NO SCROLL,则不允许使用例如FETCH BACKWARD之类的反向抓取。 -- NEXT、PRIOR、FIRST、LAST、ABSOLUTE、RELATIVE形式在恰当地移动游标之后抓取一条记录。如果后面没有数据行,就返回一个空的结果,此时游标就会停在查询结果的最后一行之后(向后查询时)或者第一行之前(向前查询时)。 -- FORWARD和BACKWARD形式在向前或者向后移动的过程中抓取指定的行数,然后把游标定位在最后返回的行上;或者是,如果count大于可用的行数,则在所有行之后(向后查询时)或者之前(向前查询时)。 -- RELATIVE 0、FORWARD 0、BACKWARD 0都要求在不移动游标的前提下抓取当前行,也就是重新抓取最近刚抓取过的行。除非游标定位在第一行之前或者最后一行之后,这个动作都应该成功,而在那两种情况下,不返回任何行。 -- 当FETCH的游标上涉及列存表时,不支持BACKWARD、PRIOR等涉及反向获取操作。 - -## 语法格式 - -``` -FETCH [ direction { FROM | IN } ] cursor_name; -``` - -其中direction子句为可选参数。 - -``` -NEXT - | PRIOR - | FIRST - | LAST - | ABSOLUTE count - | RELATIVE count - | count - | ALL - | FORWARD - | FORWARD count - | FORWARD ALL - | BACKWARD - | BACKWARD count - | BACKWARD ALL -``` - -## 参数说明 - -- **direction\_clause** - - 定义抓取数据的方向。 - - 取值范围: - - - NEXT(缺省值) - - 从当前关联位置开始,抓取下一行。 - - - PRIOR - - 从当前关联位置开始,抓取上一行。 - - - FIRST - - 抓取查询的第一行(和ABSOLUTE 1相同)。 - - - LAST - - 抓取查询的最后一行(和ABSOLUTE -1相同)。 - - - ABSOLUTE count - - 抓取查询中第count行。 - - ABSOLUTE抓取不会比用相对位移移动到需要的数据行更快,因为下层的实现必须遍历所有中间的行。 - - count取值范围:有符号的整数 - - - count为正数,就从查询结果的第一行开始,抓取第count行。 - - count为负数,就从查询结果末尾抓取第abs\(_count_\)行。 - - count为0时,定位在第一行之前。 - - - RELATIVE count - - 从当前关联位置开始,抓取随后或前面的第count行。 - - 取值范围:有符号的整数 - - - count为正数就抓取当前关联位置之后的第count行。 - - count为负数就抓取当前关联位置之前的第abs\(count\)行。 - - 如果当前行没有数据的话,RELATIVE 0返回空。 - - - count - - 抓取随后的count行(和FORWARD count一样)。 - - - ALL - - 从当前关联位置开始,抓取所有剩余的行(和FORWARD ALL一样)。 - - - FORWARD - - 抓取下一行(和NEXT一样)。 - - - FORWARD count - - 从当前关联位置开始,抓取随后或前面的count行。 - - - FORWARD ALL - - 从当前关联位置开始,抓取所有剩余行。 - - - BACKWARD - - 从当前关联位置开始,抓取前面一行\(和PRIOR一样\) 。 - - - BACKWARD count - - 从当前关联位置开始,抓取前面的count行(向后扫描)。 - - 取值范围:有符号的整数 - - - count为正数就抓取当前关联位置之前的count行。 - - count为负数就抓取当前关联位置之后的abs(count)行。 - - 如果有数据的话,BACKWARD 0重新抓取当前行。 - - - BACKWARD ALL - - 从当前关联位置开始,抓取所有前面的行(向后扫描) 。 - - -- **\{ FROM | IN \} cursor\_name** - - 使用关键字FROM或IN指定游标名称。 - - 取值范围:已创建的游标的名称。 - - -## 示例 - -``` ---SELECT语句,用一个游标读取一个表。开始一个事务。 -openGauss=# START TRANSACTION; - ---建立一个名为cursor1的游标。 -openGauss=# CURSOR cursor1 FOR SELECT * FROM tpcds.customer_address ORDER BY 1; - ---抓取头3行到游标cursor1里。 -openGauss=# FETCH FORWARD 3 FROM cursor1; - ca_address_sk | ca_address_id | ca_street_number | ca_street_name | ca_street_type | ca_suite_number | ca_city | ca_county | ca_state | ca_zip | ca_country | ca_gmt_offset | ca_location_type ----------------+------------------+------------------+--------------------+-----------------+-----------------+-----------------+-----------------+----------+------------+---------------+---------------+---------------------- - 1 | AAAAAAAABAAAAAAA | 18 | Jackson | Parkway | Suite 280 | Fairfield | Maricopa County | AZ | 86192 | United States | -7.00 | condo - 2 | AAAAAAAACAAAAAAA | 362 | Washington 6th | RD | Suite 80 | Fairview | Taos County | NM | 85709 | United States | -7.00 | condo - 3 | AAAAAAAADAAAAAAA | 585 | Dogwood Washington | Circle | Suite Q | Pleasant Valley | York County | PA | 12477 | United States | -5.00 | single family -(3 rows) - ---关闭游标并提交事务。 -openGauss=# CLOSE cursor1; - ---结束一个事务。 -openGauss=# END; - ---VALUES子句,用一个游标读取VALUES子句中的内容。开始一个事务。 -openGauss=# START TRANSACTION; - ---建立一个名为cursor2的游标。 -openGauss=# CURSOR cursor2 FOR VALUES(1,2),(0,3) ORDER BY 1; - ---抓取头2行到游标cursor2里。 -openGauss=# FETCH FORWARD 2 FROM cursor2; -column1 | column2 ----------+--------- -0 | 3 -1 | 2 -(2 rows) - ---关闭游标并提交事务。 -openGauss=# CLOSE cursor2; - ---结束一个事务。 -openGauss=# END; - ---WITH HOLD游标的使用,开启事务。 -openGauss=# START TRANSACTION; - ---创建一个with hold游标。 -openGauss=# DECLARE cursor1 CURSOR WITH HOLD FOR SELECT * FROM tpcds.customer_address ORDER BY 1; - ---抓取头2行到游标cursor1里。 -openGauss=# FETCH FORWARD 2 FROM cursor1; - ca_address_sk | ca_address_id | ca_street_number | ca_street_name | ca_street_type | ca_suite_number | ca_city | ca_county | ca_state | ca_zip | ca_country | ca_gmt_offset | ca_location_type ----------------+------------------+------------------+--------------------+-----------------+-----------------+-----------------+-----------------+----------+------------+---------------+---------------+---------------------- - 1 | AAAAAAAABAAAAAAA | 18 | Jackson | Parkway | Suite 280 | Fairfield | Maricopa County | AZ | 86192 | United States | -7.00 | condo - 2 | AAAAAAAACAAAAAAA | 362 | Washington 6th | RD | Suite 80 | Fairview | Taos County | NM | 85709 | United States | -7.00 | condo -(2 rows) - ---结束事务。 -openGauss=# END; - ---抓取下一行到游标cursor1里。 -openGauss=# FETCH FORWARD 1 FROM cursor1; - ca_address_sk | ca_address_id | ca_street_number | ca_street_name | ca_street_type | ca_suite_number | ca_city | ca_county | ca_state | ca_zip | ca_country | ca_gmt_offset | ca_location_type ----------------+------------------+------------------+--------------------+-----------------+-----------------+-----------------+-----------------+----------+------------+---------------+---------------+---------------------- - 3 | AAAAAAAADAAAAAAA | 585 | Dogwood Washington | Circle | Suite Q | Pleasant Valley | York County | PA | 12477 | United States | -5.00 | single family -(1 row) - ---关闭游标。 -openGauss=# CLOSE cursor1; - -``` - -## 相关链接 - -[CLOSE](CLOSE.md),[MOVE](MOVE.md) - +# FETCH + +## 功能描述 + +FETCH 通过已创建的游标来检索数据。 + +每个游标都有一个供 FETCH 使用的关联位置。游标的关联位置可以在查询结果的第一行之前,或者在结果中的任意行,或者在结果的最后一行之后: + +- 游标刚创建完之后,关联位置在第一行之前的。 +- 在抓取了一些移动行之后,关联位置在检索到的最后一行上。 +- 如果 FETCH 抓取完了所有可用行,它就停在最后一行后面,或者在反向抓取的情况下是停在第一行前面。 +- FETCH ALL或 FETCH BACKWARD ALL 将总是把游标的关联位置放在最后一行或者在第一行前面。 + +## 注意事项 + +- 如果游标定义了 NO SCROLL ,则不允许使用例如 FETCH BACKWARD 之类的反向抓取。 +- NEXT、PRIOR、FIRST、LAST、ABSOLUTE、RELATIVE形式在恰当地移动游标之后抓取一条记录。如果后面没有数据行,就返回一个空的结果,此时游标就会停在查询结果的最后一行之后(向后查询时)或者第一行之前(向前查询时)。 +- FORWARD和 BACKWARD 形式在向前或者向后移动的过程中抓取指定的行数,然后把游标定位在最后返回的行上;或者是,如果 count 大于可用的行数,则在所有行之后(向后查询时)或者之前(向前查询时)。 +- RELATIVE 0、FORWARD 0、BACKWARD 0都要求在不移动游标的前提下抓取当前行,也就是重新抓取最近刚抓取过的行。除非游标定位在第一行之前或者最后一行之后,这个动作都应该成功,而在那两种情况下,不返回任何行。 +- 当 FETCH 的游标上涉及列存表时,不支持BACKWARD、PRIOR等涉及反向获取操作。 + +## 语法格式 + +``` +FETCH [ direction { FROM | IN } ] cursor_name; +``` + +其中 direction 子句为可选参数。 + +``` +NEXT + | PRIOR + | FIRST + | LAST + | ABSOLUTE count + | RELATIVE count + | count + | ALL + | FORWARD + | FORWARD count + | FORWARD ALL + | BACKWARD + | BACKWARD count + | BACKWARD ALL +``` + +## 参数说明 + +- **direction\_clause** + + 定义抓取数据的方向。 + + 取值范围: + + - NEXT(缺省值) + + 从当前关联位置开始,抓取下一行。 + + - PRIOR + + 从当前关联位置开始,抓取上一行。 + + - FIRST + + 抓取查询的第一行(和 ABSOLUTE 1 相同)。 + + - LAST + + 抓取查询的最后一行(和ABSOLUTE -1相同)。 + + - ABSOLUTE count + + 抓取查询中第 count 行。 + +ABSOLUTE 抓取不会比用相对位移移动到需要的数据行更快,因为下层的实现必须遍历所有中间的行。 + +count 取值范围:有符号的整数 + + - count为正数,就从查询结果的第一行开始,抓取第 count 行。 + - count为负数,就从查询结果末尾抓取第abs\(_count_\)行。 + - count为 0 时,定位在第一行之前。 + + - RELATIVE count + + 从当前关联位置开始,抓取随后或前面的第 count 行。 + + 取值范围:有符号的整数 + + - count为正数就抓取当前关联位置之后的第 count 行。 + - count为负数就抓取当前关联位置之前的第abs\(count\)行。 + - 如果当前行没有数据的话, RELATIVE 0 返回空。 + + - count + + 抓取随后的 count 行(和 FORWARD count 一样)。 + + - ALL + + 从当前关联位置开始,抓取所有剩余的行(和 FORWARD ALL 一样)。 + + - FORWARD + + 抓取下一行(和 NEXT 一样)。 + + - FORWARD count + + 从当前关联位置开始,抓取随后或前面的 count 行。 + + - FORWARD ALL + + 从当前关联位置开始,抓取所有剩余行。 + + - BACKWARD + + 从当前关联位置开始,抓取前面一行\(和 PRIOR 一样\) 。 + + - BACKWARD count + + 从当前关联位置开始,抓取前面的 count 行(向后扫描)。 + + 取值范围:有符号的整数 + + - count为正数就抓取当前关联位置之前的 count 行。 + - count为负数就抓取当前关联位置之后的abs(count)行。 + - 如果有数据的话, BACKWARD 0 重新抓取当前行。 + + - BACKWARD ALL + + 从当前关联位置开始,抓取所有前面的行(向后扫描) 。 + + +- **\{ FROM | IN \} cursor\_name** + + 使用关键字 FROM 或 IN 指定游标名称。 + + 取值范围:已创建的游标的名称。 + + +## 示例 + +``` +--SELECT语句,用一个游标读取一个表。开始一个事务。 +openGauss=# START TRANSACTION; + +--建立一个名为 cursor1 的游标。 +openGauss=# CURSOR cursor1 FOR SELECT * FROM tpcds.customer_address ORDER BY 1; + +--抓取头 3 行到游标 cursor1 里。 +openGauss=# FETCH FORWARD 3 FROM cursor1; + ca_address_sk | ca_address_id | ca_street_number | ca_street_name | ca_street_type | ca_suite_number | ca_city | ca_county | ca_state | ca_zip | ca_country | ca_gmt_offset | ca_location_type +---------------+------------------+------------------+--------------------+-----------------+-----------------+-----------------+-----------------+----------+------------+---------------+---------------+---------------------- + 1 | AAAAAAAABAAAAAAA | 18 | Jackson | Parkway | Suite 280 | Fairfield | Maricopa County | AZ | 86192 | United States | -7.00 | condo + 2 | AAAAAAAACAAAAAAA | 362 | Washington 6th | RD | Suite 80 | Fairview | Taos County | NM | 85709 | United States | -7.00 | condo + 3 | AAAAAAAADAAAAAAA | 585 | Dogwood Washington | Circle | Suite Q | Pleasant Valley | York County | PA | 12477 | United States | -5.00 | single family +(3 rows) + +--关闭游标并提交事务。 +openGauss=# CLOSE cursor1; + +--结束一个事务。 +openGauss=# END; + +--VALUES子句,用一个游标读取 VALUES 子句中的内容。开始一个事务。 +openGauss=# START TRANSACTION; + +--建立一个名为 cursor2 的游标。 +openGauss=# CURSOR cursor2 FOR VALUES(1,2),(0,3) ORDER BY 1; + +--抓取头 2 行到游标 cursor2 里。 +openGauss=# FETCH FORWARD 2 FROM cursor2; +column1 | column2 +---------+--------- +0 | 3 +1 | 2 +(2 rows) + +--关闭游标并提交事务。 +openGauss=# CLOSE cursor2; + +--结束一个事务。 +openGauss=# END; + +--WITH HOLD游标的使用,开启事务。 +openGauss=# START TRANSACTION; + +--创建一个 with hold 游标。 +openGauss=# DECLARE cursor1 CURSOR WITH HOLD FOR SELECT * FROM tpcds.customer_address ORDER BY 1; + +--抓取头 2 行到游标 cursor1 里。 +openGauss=# FETCH FORWARD 2 FROM cursor1; + ca_address_sk | ca_address_id | ca_street_number | ca_street_name | ca_street_type | ca_suite_number | ca_city | ca_county | ca_state | ca_zip | ca_country | ca_gmt_offset | ca_location_type +---------------+------------------+------------------+--------------------+-----------------+-----------------+-----------------+-----------------+----------+------------+---------------+---------------+---------------------- + 1 | AAAAAAAABAAAAAAA | 18 | Jackson | Parkway | Suite 280 | Fairfield | Maricopa County | AZ | 86192 | United States | -7.00 | condo + 2 | AAAAAAAACAAAAAAA | 362 | Washington 6th | RD | Suite 80 | Fairview | Taos County | NM | 85709 | United States | -7.00 | condo +(2 rows) + +--结束事务。 +openGauss=# END; + +--抓取下一行到游标 cursor1 里。 +openGauss=# FETCH FORWARD 1 FROM cursor1; + ca_address_sk | ca_address_id | ca_street_number | ca_street_name | ca_street_type | ca_suite_number | ca_city | ca_county | ca_state | ca_zip | ca_country | ca_gmt_offset | ca_location_type +---------------+------------------+------------------+--------------------+-----------------+-----------------+-----------------+-----------------+----------+------------+---------------+---------------+---------------------- + 3 | AAAAAAAADAAAAAAA | 585 | Dogwood Washington | Circle | Suite Q | Pleasant Valley | York County | PA | 12477 | United States | -5.00 | single family +(1 row) + +--关闭游标。 +openGauss=# CLOSE cursor1; + +``` + +## 相关链接 + +[CLOSE](CLOSE.md),[MOVE](MOVE.md) + diff --git a/content/zh/docs/Developerguide/FILE_IOSTAT.md b/content/zh/docs/Developerguide/FILE_IOSTAT.md index fac6e895e..ecd06c8e5 100644 --- a/content/zh/docs/Developerguide/FILE_IOSTAT.md +++ b/content/zh/docs/Developerguide/FILE_IOSTAT.md @@ -1,109 +1,109 @@ -# FILE\_IOSTAT - -通过对数据文件IO的统计,反映数据的IO性能,用以发现IO操作异常等性能问题。 - -**表 1** FILE\_IOSTAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

filenum

-

oid

-

文件标识。

-

dbid

-

oid

-

数据库标识。

-

spcid

-

oid

-

表空间标识。

-

phyrds

-

bigint

-

读物理文件的数目。

-

phywrts

-

bigint

-

写物理文件的数目。

-

phyblkrd

-

bigint

-

读物理文件块的数目。

-

phyblkwrt

-

bigint

-

写物理文件块的数目。

-

readtim

-

bigint

-

读文件的总时长(单位:微秒)。

-

writetim

-

bigint

-

写文件的总时长(单位:微秒)。

-

avgiotim

-

bigint

-

读写文件的平均时长(单位:微秒)。

-

lstiotim

-

bigint

-

最后一次读文件时长(单位:微秒)。

-

miniotim

-

bigint

-

读写文件的最小时长(单位:微秒)。

-

maxiowtm

-

bigint

-

读写文件的最大时长(单位:微秒)。

-
- +# FILE\_IOSTAT + +通过对数据文件 IO 的统计,反映数据的 IO 性能,用以发现 IO 操作异常等性能问题。 + +**表 1** FILE\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

filenum

+

oid

+

文件标识。

+

dbid

+

oid

+

数据库标识。

+

spcid

+

oid

+

表空间标识。

+

phyrds

+

bigint

+

读物理文件的数目。

+

phywrts

+

bigint

+

写物理文件的数目。

+

phyblkrd

+

bigint

+

读物理文件块的数目。

+

phyblkwrt

+

bigint

+

写物理文件块的数目。

+

readtim

+

bigint

+

读文件的总时长(单位:微秒)。

+

writetim

+

bigint

+

写文件的总时长(单位:微秒)。

+

avgiotim

+

bigint

+

读写文件的平均时长(单位:微秒)。

+

lstiotim

+

bigint

+

最后一次读文件时长(单位:微秒)。

+

miniotim

+

bigint

+

读写文件的最小时长(单位:微秒)。

+

maxiowtm

+

bigint

+

读写文件的最大时长(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/FILE_REDO_IOSTAT.md b/content/zh/docs/Developerguide/FILE_REDO_IOSTAT.md index 87e3cfcf5..b2dd8d62b 100644 --- a/content/zh/docs/Developerguide/FILE_REDO_IOSTAT.md +++ b/content/zh/docs/Developerguide/FILE_REDO_IOSTAT.md @@ -1,67 +1,67 @@ -# FILE\_REDO\_IOSTAT - -本节点Redo(WAL)相关的统计信息。 - -**表 1** FILE\_REDO\_IOSTAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

phywrts

-

bigint

-

向wal buffer中写的次数。

-

phyblkwrt

-

bigint

-

向wal buffer中写的block的块数。

-

writetim

-

bigint

-

向xlog文件中写操作的时间(单位:微秒)。

-

avgiotim

-

bigint

-

平均写xlog的时间(writetim/phywrts)(单位:微秒)。

-

lstiotim

-

bigint

-

最后一次写xlog的时间(单位:微秒)。

-

miniotim

-

bigint

-

最小的写xlog时间(单位:微秒)。

-

maxiowtm

-

bigint

-

最大的写xlog时间(单位:微秒)。

-
- +# FILE\_REDO\_IOSTAT + +本节点Redo(WAL)相关的统计信息。 + +**表 1** FILE\_REDO\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

phywrts

+

bigint

+

向 wal buffer 中写的次数。

+

phyblkwrt

+

bigint

+

向 wal buffer 中写的 block 的块数。

+

writetim

+

bigint

+

向 xlog 文件中写操作的时间(单位:微秒)。

+

avgiotim

+

bigint

+

平均写 xlog 的时间(writetim/phywrts)(单位:微秒)。

+

lstiotim

+

bigint

+

最后一次写 xlog 的时间(单位:微秒)。

+

miniotim

+

bigint

+

最小的写 xlog 时间(单位:微秒)。

+

maxiowtm

+

bigint

+

最大的写 xlog 时间(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/File.md b/content/zh/docs/Developerguide/File.md index 3899c50f4..5e84ccb0d 100644 --- a/content/zh/docs/Developerguide/File.md +++ b/content/zh/docs/Developerguide/File.md @@ -1,21 +1,21 @@ -# File - -- **[FILE\_IOSTAT](FILE_IOSTAT.md)** - -- **[SUMMARY\_FILE\_IOSTAT](SUMMARY_FILE_IOSTAT.md)** - -- **[GLOBAL\_FILE\_IOSTAT](GLOBAL_FILE_IOSTAT.md)** - -- **[FILE\_REDO\_IOSTAT](FILE_REDO_IOSTAT.md)** - -- **[SUMMARY\_FILE\_REDO\_IOSTAT](SUMMARY_FILE_REDO_IOSTAT.md)** - -- **[GLOBAL\_FILE\_REDO\_IOSTAT](GLOBAL_FILE_REDO_IOSTAT.md)** - -- **[LOCAL\_REL\_IOSTAT](LOCAL_REL_IOSTAT.md)** - -- **[GLOBAL\_REL\_IOSTAT](GLOBAL_REL_IOSTAT.md)** - -- **[SUMMARY\_REL\_IOSTAT](SUMMARY_REL_IOSTAT.md)** - - +# File + +- **[FILE\_IOSTAT](FILE_IOSTAT.md)** + +- **[SUMMARY\_FILE\_IOSTAT](SUMMARY_FILE_IOSTAT.md)** + +- **[GLOBAL\_FILE\_IOSTAT](GLOBAL_FILE_IOSTAT.md)** + +- **[FILE\_REDO\_IOSTAT](FILE_REDO_IOSTAT.md)** + +- **[SUMMARY\_FILE\_REDO\_IOSTAT](SUMMARY_FILE_REDO_IOSTAT.md)** + +- **[GLOBAL\_FILE\_REDO\_IOSTAT](GLOBAL_FILE_REDO_IOSTAT.md)** + +- **[LOCAL\_REL\_IOSTAT](LOCAL_REL_IOSTAT.md)** + +- **[GLOBAL\_REL\_IOSTAT](GLOBAL_REL_IOSTAT.md)** + +- **[SUMMARY\_REL\_IOSTAT](SUMMARY_REL_IOSTAT.md)** + + diff --git a/content/zh/docs/Developerguide/Foreign-Data-Wrapper.md b/content/zh/docs/Developerguide/Foreign-Data-Wrapper.md index aa26d7831..5cb99a29c 100644 --- a/content/zh/docs/Developerguide/Foreign-Data-Wrapper.md +++ b/content/zh/docs/Developerguide/Foreign-Data-Wrapper.md @@ -1,14 +1,14 @@ -# Foreign Data Wrapper -openGauss的fdw实现的功能是各个openGauss数据库及远程服务器(包括数据库、文件系统)之间的跨库操作。目前支持的远程服务器类型包括Oracle、MySQL(MariaDB)、openGauss(postgres_fdw)、file_fdw 、dblink。 - -- **[oracle_fdw](用于Oracle的外部数据包装器.md)** - -- **[mysql_fdw](mysql_fdw.md)** - -- **[postgres_fdw](postgres_fdw.md)** - -- **[file_fdw](file_fdw.md)** - -- **[dblink](dblink.md)** - - +# Foreign Data Wrapper +openGauss 的 fdw 实现的功能是各个 openGauss 数据库及远程服务器(包括数据库、文件系统)之间的跨库操作。目前支持的远程服务器类型包括Oracle、MySQL(MariaDB)、openGauss(postgres_fdw)、file_fdw 、dblink。 + +- **[oracle_fdw](用于 Oracle 的外部数据包装器.md)** + +- **[mysql_fdw](mysql_fdw.md)** + +- **[postgres_fdw](postgres_fdw.md)** + +- **[file_fdw](file_fdw.md)** + +- **[dblink](dblink.md)** + + diff --git a/content/zh/docs/Developerguide/GAUSS-00001----GAUSS-00010.md b/content/zh/docs/Developerguide/GAUSS-00001----GAUSS-00010.md index 5fda1c33a..c60ffc32e 100644 --- a/content/zh/docs/Developerguide/GAUSS-00001----GAUSS-00010.md +++ b/content/zh/docs/Developerguide/GAUSS-00001----GAUSS-00010.md @@ -28,7 +28,7 @@ GAUSS-00004: "operator requires run-time type coercion: %s" SQLSTATE: 42883 -错误原因:使用order by using语句指定使用某个操作符,在运行中,会去校验所给类型和操作符之间是否兼容,不兼容即报错。 +错误原因:使用 order by using 语句指定使用某个操作符,在运行中,会去校验所给类型和操作符之间是否兼容,不兼容即报错。 解决办法:确保使用时指定的操作符和类型之间是兼容的。 diff --git a/content/zh/docs/Developerguide/GAUSS-00011----GAUSS-00020.md b/content/zh/docs/Developerguide/GAUSS-00011----GAUSS-00020.md index 3483d9cd5..06d0b91cd 100644 --- a/content/zh/docs/Developerguide/GAUSS-00011----GAUSS-00020.md +++ b/content/zh/docs/Developerguide/GAUSS-00011----GAUSS-00020.md @@ -22,7 +22,7 @@ SQLSTATE: 22P06 错误原因:非法的操作符。 -解决办法:检查SQL语句中的操作符是否合法。 +解决办法:检查 SQL 语句中的操作符是否合法。 GAUSS-00014: "cannot subscript type %s because it is not an array" @@ -68,7 +68,7 @@ GAUSS-00020: "cache lookup failed for function %u" SQLSTATE: 22P06 -错误原因:在系统表中未找到对应ID的函数。 +错误原因:在系统表中未找到对应 ID 的函数。 -解决办法:请检查是否有会话并发对该函数做了drop或create or replace的操作。 +解决办法:请检查是否有会话并发对该函数做了 drop 或 create or replace 的操作。 diff --git a/content/zh/docs/Developerguide/GAUSS-00021----GAUSS-00030.md b/content/zh/docs/Developerguide/GAUSS-00021----GAUSS-00030.md index e6a694beb..c9082301a 100644 --- a/content/zh/docs/Developerguide/GAUSS-00021----GAUSS-00030.md +++ b/content/zh/docs/Developerguide/GAUSS-00021----GAUSS-00030.md @@ -38,7 +38,7 @@ SQLSTATE: 42804 错误原因:两个类型的类别不一样。 -解决办法:可查看pg\_type中的typcategory字段确定每个类型属于的类别。 +解决办法:可查看pg\_type中的 typcategory 字段确定每个类型属于的类别。 GAUSS-00027: "%s could not convert type %s to %s" diff --git a/content/zh/docs/Developerguide/GAUSS-00031----GAUSS-00040.md b/content/zh/docs/Developerguide/GAUSS-00031----GAUSS-00040.md index a0e16bc74..f6e1593c2 100644 --- a/content/zh/docs/Developerguide/GAUSS-00031----GAUSS-00040.md +++ b/content/zh/docs/Developerguide/GAUSS-00031----GAUSS-00040.md @@ -12,17 +12,17 @@ GAUSS-00032: "argument declared 'anyarray' is not consistent with argument decla SQLSTATE: 42804 -错误原因:对于数组类型的ANY谓词,定义的数组类型与ANY数组中每个元素的类型不匹配。 +错误原因:对于数组类型的 ANY 谓词,定义的数组类型与 ANY 数组中每个元素的类型不匹配。 -解决办法:1.请分别查看定义的ANY数组的类型和ANY数组中元素的类型;2.分别确认查询语句中出现的ANY数组的类型和ANY数组中元素的类型是否正确。 +解决办法:1.请分别查看定义的 ANY 数组的类型和 ANY 数组中元素的类型;2.分别确认查询语句中出现的 ANY 数组的类型和 ANY 数组中元素的类型是否正确。 GAUSS-00033: "argument declared 'anyrange' is not a range but type %s" SQLSTATE: 42804 -错误原因:对于范围类型的ANY谓词,定义的范围类型与ANY数组中每个元素的类型不匹配。 +错误原因:对于范围类型的 ANY 谓词,定义的范围类型与 ANY 数组中每个元素的类型不匹配。 -解决办法:1.请分别查看定义的ANY范围的类型和ANY数组中元素的类型;2.分别确认查询语句中出现的ANY范围的类型和ANY数组中元素的类型是否正确。 +解决办法:1.请分别查看定义的 ANY 范围的类型和 ANY 数组中元素的类型;2.分别确认查询语句中出现的 ANY 范围的类型和 ANY 数组中元素的类型是否正确。 GAUSS-00034: "argument declared 'anyrange' is not consistent with argument declared 'anyelement'" @@ -38,13 +38,13 @@ SQLSTATE: 42804 错误原因:无法识别数组元素类型。 -解决办法:请确认ANY谓词中数组元素的类型是否正确。 +解决办法:请确认 ANY 谓词中数组元素的类型是否正确。 GAUSS-00036: "type matched to anynonarray is an array type: %s" SQLSTATE: 42804 -错误原因:实际需要的不是array类型。 +错误原因:实际需要的不是 array 类型。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -52,9 +52,9 @@ GAUSS-00037: "type matched to anyenum is not an enum type: %s" SQLSTATE: 42804 -错误原因:实际需要的是enum类型。 +错误原因:实际需要的是 enum 类型。 -解决办法:声明为anyenum类型的参数只接受enum类型。 +解决办法:声明为 anyenum 类型的参数只接受 enum 类型。 GAUSS-00038: "could not find range type for data type %s" diff --git a/content/zh/docs/Developerguide/GAUSS-00041----GAUSS-00050.md b/content/zh/docs/Developerguide/GAUSS-00041----GAUSS-00050.md index d8e384aa0..8ac8e5c0a 100644 --- a/content/zh/docs/Developerguide/GAUSS-00041----GAUSS-00050.md +++ b/content/zh/docs/Developerguide/GAUSS-00041----GAUSS-00050.md @@ -22,7 +22,7 @@ SQLSTATE: 0A000 错误原因:standard\_conforming\_strings开关关闭情况下,字符串常量不能定义为统一编码的转义字符。 -解决办法:1.请检查输入语句中的转义字符是否正确。2.通过gsql将standard\_conforming\_strings开关设置为on。 +解决办法:1.请检查输入语句中的转义字符是否正确。2.通过 gsql 将standard\_conforming\_strings开关设置为 on 。 GAUSS-00044: "invalid Unicode escape" @@ -38,7 +38,7 @@ SQLSTATE: 22P06 错误原因:在字符串中使用了非法的转义字符'\\'。 -解决办法:检查SQL语法中使用的转义字符'\\'是否正确,并修改SQL语法。 +解决办法:检查 SQL 语法中使用的转义字符'\\'是否正确,并修改 SQL 语法。 GAUSS-00046: "%s at end of input" @@ -54,7 +54,7 @@ SQLSTATE: 42601 错误原因:语法错误。 -解决办法:保证执行的sql没有语法错误。 +解决办法:保证执行的 sql 没有语法错误。 GAUSS-00048: "core\_yylex\_init\(\) failed: %m" @@ -70,5 +70,5 @@ SQLSTATE: XX000 错误原因:invalid input or unsupport format -解决办法:用户检查输入SQL。 +解决办法:用户检查输入 SQL 。 diff --git a/content/zh/docs/Developerguide/GAUSS-00051----GAUSS-00060.md b/content/zh/docs/Developerguide/GAUSS-00051----GAUSS-00060.md index 417ce71fe..6eeee9ebc 100644 --- a/content/zh/docs/Developerguide/GAUSS-00051----GAUSS-00060.md +++ b/content/zh/docs/Developerguide/GAUSS-00051----GAUSS-00060.md @@ -22,23 +22,23 @@ SQLSTATE: 42704 错误原因:给定的类型名在系统表pg\_type中没有定义对应的操作执行函数。 -解决办法:请确认语句中使用的类型名是否正确。如果正确,请通过create type语句自定义所使用类型名对应的操作函数。 +解决办法:请确认语句中使用的类型名是否正确。如果正确,请通过 create type 语句自定义所使用类型名对应的操作函数。 GAUSS-00055: "type modifier cannot be specified for shell type '%s'" SQLSTATE: 42601 -错误原因:自定义的类型包含了typmod。 +错误原因:自定义的类型包含了 typmod 。 -解决办法:自定义的类型不能包含typmod。 +解决办法:自定义的类型不能包含 typmod 。 GAUSS-00056: "type modifier is not allowed for type '%s'" SQLSTATE: 42601 -错误原因:自定义的类型包含了typmod。 +错误原因:自定义的类型包含了 typmod 。 -解决办法:自定义的类型不能包含typmod。 +解决办法:自定义的类型不能包含 typmod 。 GAUSS-00057: "type modifiers must be simple constants or identifiers" @@ -54,7 +54,7 @@ SQLSTATE: 42804 错误原因:collation与类型不匹配,输入的问题。 -解决办法:用户检查输入SQL。 +解决办法:用户检查输入 SQL 。 GAUSS-00059: "typeTypeId\(\) called with NULL type struct" diff --git a/content/zh/docs/Developerguide/GAUSS-00061----GAUSS-00070.md b/content/zh/docs/Developerguide/GAUSS-00061----GAUSS-00070.md index 7549d666f..f574ecd9f 100644 --- a/content/zh/docs/Developerguide/GAUSS-00061----GAUSS-00070.md +++ b/content/zh/docs/Developerguide/GAUSS-00061----GAUSS-00070.md @@ -28,7 +28,7 @@ GAUSS-00064: "could not identify column '%s' in record data type" SQLSTATE: 42703 -错误原因:列不存在,通过record数据类型不能识别列。 +错误原因:列不存在,通过 record 数据类型不能识别列。 解决办法:检查列是否存在。 @@ -70,7 +70,7 @@ SQLSTATE: 0A000 错误原因:不支持跨数据库的引用对象。 -解决办法:避免跨数据库的引用。在数据库Database2中不能通过Database1.schema.object方式访问数据库Database1中的对象,object包括:表、索引、视图等。 +解决办法:避免跨数据库的引用。在数据库 Database2 中不能通过Database1.schema.object方式访问数据库 Database1 中的对象, object 包括:表、索引、视图等。 GAUSS-00070: "improper qualified name \(too many dotted names\): %s" diff --git a/content/zh/docs/Developerguide/GAUSS-00071----GAUSS-00080.md b/content/zh/docs/Developerguide/GAUSS-00071----GAUSS-00080.md index ad50f3e9c..998447e4c 100644 --- a/content/zh/docs/Developerguide/GAUSS-00071----GAUSS-00080.md +++ b/content/zh/docs/Developerguide/GAUSS-00071----GAUSS-00080.md @@ -20,9 +20,9 @@ GAUSS-00073: "arguments of row IN must all be row expressions" SQLSTATE: 42601 -错误原因:对于IN表达式,参数不是数组类型,也不是行表达式。 +错误原因:对于 IN 表达式,参数不是数组类型,也不是行表达式。 -解决办法:对于IN表达式,参数为数组类型或者行表达式。 +解决办法:对于 IN 表达式,参数为数组类型或者行表达式。 GAUSS-00074: "unexpected non-SELECT command in SubLink" diff --git a/content/zh/docs/Developerguide/GAUSS-00081----GAUSS-00090.md b/content/zh/docs/Developerguide/GAUSS-00081----GAUSS-00090.md index 478dce5c4..0b25ca829 100644 --- a/content/zh/docs/Developerguide/GAUSS-00081----GAUSS-00090.md +++ b/content/zh/docs/Developerguide/GAUSS-00081----GAUSS-00090.md @@ -4,9 +4,9 @@ GAUSS-00081: "unnamed XML attribute value must be a column reference" SQLSTATE: 42601 -错误原因:未命名的XML属性值必须是列的引用。 +错误原因:未命名的 XML 属性值必须是列的引用。 -解决办法:用户检查输入SQL。 +解决办法:用户检查输入 SQL 。 GAUSS-00082: "XML attribute name '%s' appears more than once" @@ -14,13 +14,13 @@ SQLSTATE: 42601 错误原因:XMLELEMENT中出现了重复的列。 -解决办法:用户检查输入SQL。 +解决办法:用户检查输入 SQL 。 GAUSS-00083: "cannot cast XMLSERIALIZE result to %s" SQLSTATE: 42846 -错误原因:将XMLSERIALIZE类型转换到其它类型时报错。 +错误原因:将 XMLSERIALIZE 类型转换到其它类型时报错。 解决办法:使用时类型之间要保证可以相互转换。 @@ -36,7 +36,7 @@ GAUSS-00085: "WHERE CURRENT OF clause not yet supported" SQLSTATE: 54001 -错误原因:使用了WHERE CURRENT OF语法。 +错误原因:使用了 WHERE CURRENT OF 语法。 解决办法:WHERE CURRENT OF语法未支持,不建议使用。 @@ -52,17 +52,17 @@ GAUSS-00087: "cannot compare rows of zero length" SQLSTATE: 0A000 -错误原因:行比较的长度为0。 +错误原因:行比较的长度为 0 。 -解决办法:使用行比较时,保证长度不为0。 +解决办法:使用行比较时,保证长度不为 0 。 GAUSS-00088: "row comparison operator must yield type Boolean, not type %s" SQLSTATE: 42804 -错误原因:行表达式比较的返回值不是bool类型。 +错误原因:行表达式比较的返回值不是 bool 类型。 -解决办法:行表达式比较的返回值要求是bool类型。 +解决办法:行表达式比较的返回值要求是 bool 类型。 GAUSS-00089: "row comparison operator must not return a set" diff --git a/content/zh/docs/Developerguide/GAUSS-00101----GAUSS-00110.md b/content/zh/docs/Developerguide/GAUSS-00101----GAUSS-00110.md index aed5c5acf..8637d556f 100644 --- a/content/zh/docs/Developerguide/GAUSS-00101----GAUSS-00110.md +++ b/content/zh/docs/Developerguide/GAUSS-00101----GAUSS-00110.md @@ -68,15 +68,15 @@ GAUSS-00109: "a column definition list is only allowed for functions returning ' SQLSTATE: 42601 -错误原因:非返回record类型的函数不接受列定义列表(或表定义)。 +错误原因:非返回 record 类型的函数不接受列定义列表(或表定义)。 -解决办法:对于非返回record类型的函数不要使用表定义指定返回值。 +解决办法:对于非返回 record 类型的函数不要使用表定义指定返回值。 GAUSS-00110: "a column definition list is required for functions returning 'record'" SQLSTATE: 42601 -错误原因:返回record类型的函数需要列定义列表(或表定义)。 +错误原因:返回 record 类型的函数需要列定义列表(或表定义)。 -解决办法:对于返回record类型的函数要使用表定义指定返回值。 +解决办法:对于返回 record 类型的函数要使用表定义指定返回值。 diff --git a/content/zh/docs/Developerguide/GAUSS-00111----GAUSS-00120.md b/content/zh/docs/Developerguide/GAUSS-00111----GAUSS-00120.md index f7cc9b92d..db1c586d7 100644 --- a/content/zh/docs/Developerguide/GAUSS-00111----GAUSS-00120.md +++ b/content/zh/docs/Developerguide/GAUSS-00111----GAUSS-00120.md @@ -4,9 +4,9 @@ GAUSS-00111: "column '%s' cannot be declared SETOF" SQLSTATE: 42P16 -错误原因:函数的返回中声明某一列为SETOF。 +错误原因:函数的返回中声明某一列为 SETOF 。 -解决办法:函数的返回中不能声明某一列为SETOF。 +解决办法:函数的返回中不能声明某一列为 SETOF 。 GAUSS-00112: "function '%s' in FROM has unsupported return type %s" @@ -22,7 +22,7 @@ SQLSTATE: 42P10 错误原因:VALUES中参数的个数和实际指定的列个数不一致。 -解决办法:请检查VALUES中参数的个数和实际指定的列个数是否一致。 +解决办法:请检查 VALUES 中参数的个数和实际指定的列个数是否一致。 GAUSS-00114: "joins can have at most %d columns" @@ -30,15 +30,15 @@ SQLSTATE: 54000 错误原因:join中列的个数超过了限制。 -解决办法:join中列的个数不能超过32767个。 +解决办法:join中列的个数不能超过 32767 个。 GAUSS-00115: "WITH query '%s' does not have a RETURNING clause" SQLSTATE: 0A000 -错误原因:非SELECT的with语句没有指定returning子句。 +错误原因:非 SELECT 的 with 语句没有指定 returning 子句。 -解决办法:非SELECT的with语句需要指定returning子句。 +解决办法:非 SELECT 的 with 语句需要指定 returning 子句。 GAUSS-00116: "function in FROM has unsupported return type" diff --git a/content/zh/docs/Developerguide/GAUSS-00121----GAUSS-00130.md b/content/zh/docs/Developerguide/GAUSS-00121----GAUSS-00130.md index 0e78e645d..e745685ec 100644 --- a/content/zh/docs/Developerguide/GAUSS-00121----GAUSS-00130.md +++ b/content/zh/docs/Developerguide/GAUSS-00121----GAUSS-00130.md @@ -44,9 +44,9 @@ GAUSS-00126: "missing FROM-clause entry for table '%s'" SQLSTATE: 42P01 -错误原因:with语句中缺少from子句。 +错误原因:with语句中缺少 from 子句。 -解决办法:with语句中必须包含from子句。 +解决办法:with语句中必须包含 from 子句。 GAUSS-00127: "Password must be quoted" diff --git a/content/zh/docs/Developerguide/GAUSS-00131----GAUSS-00140.md b/content/zh/docs/Developerguide/GAUSS-00131----GAUSS-00140.md index 42d9eb8eb..c49f398be 100644 --- a/content/zh/docs/Developerguide/GAUSS-00131----GAUSS-00140.md +++ b/content/zh/docs/Developerguide/GAUSS-00131----GAUSS-00140.md @@ -4,7 +4,7 @@ GAUSS-00131: "current database cannot be changed" SQLSTATE: 0A000 -错误原因:在当前数据库中对catalog进行设置。 +错误原因:在当前数据库中对 catalog 进行设置。 解决办法:不允许设置系统表。 @@ -14,7 +14,7 @@ SQLSTATE: 42601 错误原因:时间间隔格式设置错误。 -解决办法:间隔格式必须是HOUR or HOUR TO MINUTE。 +解决办法:间隔格式必须是 HOUR or HOUR TO MINUTE 。 GAUSS-00133: "interval precision specified twice" @@ -52,9 +52,9 @@ GAUSS-00137: "constraint declared INITIALLY DEFERRED must be DEFERRABLE" SQLSTATE: 42601 -错误原因:声明为INITIALLY DEFERRED的约束必须是DEFERRABLE的。 +错误原因:声明为 INITIALLY DEFERRED 的约束必须是 DEFERRABLE 的。 -解决办法:声明为INITIALLY DEFERRED的约束必须是DEFERRABLE的。 +解决办法:声明为 INITIALLY DEFERRED 的约束必须是 DEFERRABLE 的。 GAUSS-00138: "conflicting constraint properties" diff --git a/content/zh/docs/Developerguide/GAUSS-00141----GAUSS-00150.md b/content/zh/docs/Developerguide/GAUSS-00141----GAUSS-00150.md index c8e755198..25db7016b 100644 --- a/content/zh/docs/Developerguide/GAUSS-00141----GAUSS-00150.md +++ b/content/zh/docs/Developerguide/GAUSS-00141----GAUSS-00150.md @@ -44,23 +44,23 @@ GAUSS-00148: "VALUES in FROM must have an alias" SQLSTATE: 42601 -错误原因:values语句出现在from子句中未使用别名。 +错误原因:values语句出现在 from 子句中未使用别名。 -解决办法:values语句出现在from子句中必须使用别名。 +解决办法:values语句出现在 from 子句中必须使用别名。 GAUSS-00149: "precision for type float must be at least 1 bit" SQLSTATE: 22023 -错误原因:指定float的精度时,精度小于1。 +错误原因:指定 float 的精度时,精度小于 1 。 -解决办法:指定float的精度时,精度最小是1。 +解决办法:指定 float 的精度时,精度最小是 1 。 GAUSS-00150: "precision for type float must be less than 54 bits" SQLSTATE: 22023 -错误原因:指定float的精度时,精度大于54。 +错误原因:指定 float 的精度时,精度大于 54 。 -解决办法:指定float的精度时,精度最大是54。 +解决办法:指定 float 的精度时,精度最大是 54 。 diff --git a/content/zh/docs/Developerguide/GAUSS-00151----GAUSS-00160.md b/content/zh/docs/Developerguide/GAUSS-00151----GAUSS-00160.md index a95837485..626ee6895 100644 --- a/content/zh/docs/Developerguide/GAUSS-00151----GAUSS-00160.md +++ b/content/zh/docs/Developerguide/GAUSS-00151----GAUSS-00160.md @@ -12,25 +12,25 @@ GAUSS-00152: "RANGE PRECEDING is only supported with UNBOUNDED" SQLSTATE: 0A000 -错误原因:RANGE PRECEDING使用时没有指定UNBOUNDED。 +错误原因:RANGE PRECEDING使用时没有指定 UNBOUNDED 。 -解决办法:RANGE PRECEDING使用时必须指定UNBOUNDED。 +解决办法:RANGE PRECEDING使用时必须指定 UNBOUNDED 。 GAUSS-00153: "RANGE FOLLOWING is only supported with UNBOUNDED" SQLSTATE: 0A000 -错误原因:RANGE FOLLOWING使用时没有指定UNBOUNDED。 +错误原因:RANGE FOLLOWING使用时没有指定 UNBOUNDED 。 -解决办法:RANGE FOLLOWING使用时必须指定UNBOUNDED。 +解决办法:RANGE FOLLOWING使用时必须指定 UNBOUNDED 。 GAUSS-00154: "frame start cannot be UNBOUNDED FOLLOWING" SQLSTATE: 42P20 -错误原因:frame start指定了UNBOUNDED FOLLOWING。 +错误原因:frame start指定了 UNBOUNDED FOLLOWING 。 -解决办法:frame start不能是UNBOUNDED FOLLOWING。 +解决办法:frame start不能是 UNBOUNDED FOLLOWING 。 GAUSS-00155: "frame starting from following row cannot end with current row" @@ -44,9 +44,9 @@ GAUSS-00156: "frame end cannot be UNBOUNDED PRECEDING" SQLSTATE: 42P20 -错误原因:frame end指定了UNBOUNDED PRECEDING。 +错误原因:frame end指定了 UNBOUNDED PRECEDING 。 -解决办法:frame end不能是UNBOUNDED PRECEDING。 +解决办法:frame end不能是 UNBOUNDED PRECEDING 。 GAUSS-00157: "frame starting from current row cannot have preceding rows" @@ -76,7 +76,7 @@ GAUSS-00160: "wrong number of parameters on left side of OVERLAPS expression" SQLSTATE: 42601 -错误原因:overlaps函数的左参数个数大于2。 +错误原因:overlaps函数的左参数个数大于 2 。 解决办法:overlaps支持一个参数或者两个参数的表达式。 diff --git a/content/zh/docs/Developerguide/GAUSS-00161----GAUSS-00170.md b/content/zh/docs/Developerguide/GAUSS-00161----GAUSS-00170.md index b8bae1696..5b80529e7 100644 --- a/content/zh/docs/Developerguide/GAUSS-00161----GAUSS-00170.md +++ b/content/zh/docs/Developerguide/GAUSS-00161----GAUSS-00170.md @@ -4,7 +4,7 @@ GAUSS-00161: "wrong number of parameters on right side of OVERLAPS expression" SQLSTATE: 42601 -错误原因:overlaps函数的右参数个数大于2。 +错误原因:overlaps函数的右参数个数大于 2 。 解决办法:overlaps支持一个参数或者两个参数的表达式。 @@ -12,41 +12,41 @@ GAUSS-00162: "multiple ORDER BY clauses not allowed" SQLSTATE: 42601 -错误原因:INSERT INTO SELECT语法中使用了多个ORDER BY子句。 +错误原因:INSERT INTO SELECT语法中使用了多个 ORDER BY 子句。 -解决办法:INSERT INTO SELECT语法中只能使用一个ORDER BY子句。 +解决办法:INSERT INTO SELECT语法中只能使用一个 ORDER BY 子句。 GAUSS-00163: "multiple OFFSET clauses not allowed" SQLSTATE: 42601 -错误原因:insert into select语法中使用多个offset子句。 +错误原因:insert into select语法中使用多个 offset 子句。 -解决办法:insertintoselect语法中只能使用一个offset子句。 +解决办法:insertintoselect语法中只能使用一个 offset 子句。 GAUSS-00164: "multiple LIMIT clauses not allowed" SQLSTATE: 42601 -错误原因:insert into select语法中使用多个limit子句。 +错误原因:insert into select语法中使用多个 limit 子句。 -解决办法:insertintoselect语法中只能使用一个limit子句。 +解决办法:insertintoselect语法中只能使用一个 limit 子句。 GAUSS-00165: "multiple WITH clauses not allowed"。 SQLSTATE: 42601 -错误原因:INSERT INTO SELECT语法中使用多个WITH子句。 +错误原因:INSERT INTO SELECT语法中使用多个 WITH 子句。 -解决办法:INSERT INTO SELECT语法中只能使用一个WITH子句。 +解决办法:INSERT INTO SELECT语法中只能使用一个 WITH 子句。 GAUSS-00166: "OUT and INOUT arguments aren't allowed in TABLE functions" SQLSTATE: 42601 -错误原因:out/inout参数类型用在table function中。 +错误原因:out/inout参数类型用在 table function 中。 -解决办法:out/inout参数类型不能用在table function中。 +解决办法:out/inout参数类型不能用在 table function 中。 GAUSS-00167: "multiple COLLATE clauses not allowed" @@ -68,15 +68,15 @@ GAUSS-00169: "%s constraints cannot be marked DEFERRABLE" SQLSTATE: 0A000 -错误原因:使用了不能标记为DEFERRABLE的约束。 +错误原因:使用了不能标记为 DEFERRABLE 的约束。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00170: "%s constraints cannot be marked NOT VALID" SQLSTATE: 0A000 -错误原因:使用了不能标记为NOT VALID的约束。 +错误原因:使用了不能标记为 NOT VALID 的约束。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 diff --git a/content/zh/docs/Developerguide/GAUSS-00171----GAUSS-00180.md b/content/zh/docs/Developerguide/GAUSS-00171----GAUSS-00180.md index 94a1e693c..8e76fd23a 100644 --- a/content/zh/docs/Developerguide/GAUSS-00171----GAUSS-00180.md +++ b/content/zh/docs/Developerguide/GAUSS-00171----GAUSS-00180.md @@ -4,17 +4,17 @@ GAUSS-00171: "%s constraints cannot be marked NO INHERIT" SQLSTATE: 0A000 -错误原因:使用了不能标记为NO INHERIT的约束。 +错误原因:使用了不能标记为 NO INHERIT 的约束。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00172: "undefined or invalid action for statement ' alter system '" SQLSTATE: 42704 -错误原因:使用alter system时的选项长度不为1。 +错误原因:使用 alter system 时的选项长度不为 1 。 -解决办法:使用alter system时的选项长度为1。 +解决办法:使用 alter system 时的选项长度为 1 。 GAUSS-00173: "unsupported action '%s' for statement ' alter system '" @@ -36,9 +36,9 @@ GAUSS-00175: "missing or invalid session ID" SQLSTATE: 42704 -错误原因:ALTER SYSTEM中使用的Session ID不正确。 +错误原因:ALTER SYSTEM中使用的 Session ID 不正确。 -解决办法:使用正确的Session ID,查询dv\_sessions视图查看。 +解决办法:使用正确的 Session ID ,查询dv\_sessions视图查看。 GAUSS-00176: "parameter '%s' is assigned more than once" @@ -54,7 +54,7 @@ SQLSTATE: 42P02 错误原因:未定义参数。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00178: "the parameter located '%d' have been assigned" @@ -62,7 +62,7 @@ SQLSTATE: 42710 错误原因:参数模式已被赋值。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00179: "parameter mode %c doesn't exist" diff --git a/content/zh/docs/Developerguide/GAUSS-00181----GAUSS-00190.md b/content/zh/docs/Developerguide/GAUSS-00181----GAUSS-00190.md index 4487a3351..d7ea13a36 100644 --- a/content/zh/docs/Developerguide/GAUSS-00181----GAUSS-00190.md +++ b/content/zh/docs/Developerguide/GAUSS-00181----GAUSS-00190.md @@ -6,7 +6,7 @@ SQLSTATE: 42883 错误原因:函数未定义。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00182: "function '%s' isn't exclusive" @@ -22,7 +22,7 @@ SQLSTATE: 42883 错误原因:函数未定义。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00184: "invalid name: %s" @@ -52,9 +52,9 @@ GAUSS-00188: "WITH clause containing a data-modifying statement must be at the t SQLSTATE: 0A000 -错误原因:非SELECT的with语句,应该放在整个查询的最前面。 +错误原因:非 SELECT 的 with 语句,应该放在整个查询的最前面。 -解决办法:非SELECT的with语句,应该放在整个查询的最前面。 +解决办法:非 SELECT 的 with 语句,应该放在整个查询的最前面。 GAUSS-00189: "wrong number of output columns in WITH" diff --git a/content/zh/docs/Developerguide/GAUSS-00191----GAUSS-00200.md b/content/zh/docs/Developerguide/GAUSS-00191----GAUSS-00200.md index ab7e8f9a2..f1c33433b 100644 --- a/content/zh/docs/Developerguide/GAUSS-00191----GAUSS-00200.md +++ b/content/zh/docs/Developerguide/GAUSS-00191----GAUSS-00200.md @@ -44,9 +44,9 @@ GAUSS-00197: "ORDER BY in a recursive query is not implemented" SQLSTATE: 0A000 -错误原因:递归查询中使用了order by。 +错误原因:递归查询中使用了 order by 。 -解决办法:递归查询中使用order by没有实现。 +解决办法:递归查询中使用 order by 没有实现。 GAUSS-00198: "OFFSET in a recursive query is not implemented" @@ -54,15 +54,15 @@ SQLSTATE: 0A000 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00199: "LIMIT in a recursive query is not implemented" SQLSTATE: 0A000 -错误原因:递归查询中使用了limit。 +错误原因:递归查询中使用了 limit 。 -解决办法:递归查询中使用limit没有实现。 +解决办法:递归查询中使用 limit 没有实现。 GAUSS-00200: "FOR UPDATE/SHARE in a recursive query is not implemented" diff --git a/content/zh/docs/Developerguide/GAUSS-00201----GAUSS-00210.md b/content/zh/docs/Developerguide/GAUSS-00201----GAUSS-00210.md index f2db0d086..fd3c913e0 100644 --- a/content/zh/docs/Developerguide/GAUSS-00201----GAUSS-00210.md +++ b/content/zh/docs/Developerguide/GAUSS-00201----GAUSS-00210.md @@ -6,7 +6,7 @@ SQLSTATE: XX004 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00203: "unrecognized set op: %d" @@ -38,7 +38,7 @@ SQLSTATE: XX000 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00210: "cannot use aggregate function in function expression in FROM" diff --git a/content/zh/docs/Developerguide/GAUSS-00211----GAUSS-00220.md b/content/zh/docs/Developerguide/GAUSS-00211----GAUSS-00220.md index 1126ed7a6..510f90600 100644 --- a/content/zh/docs/Developerguide/GAUSS-00211----GAUSS-00220.md +++ b/content/zh/docs/Developerguide/GAUSS-00211----GAUSS-00220.md @@ -12,17 +12,17 @@ GAUSS-00212: "column name '%s' appears more than once in USING clause" SQLSTATE: 42701 -错误原因:join时,使用using语法,同一个列名在using中出现多次。 +错误原因:join时,使用 using 语法,同一个列名在 using 中出现多次。 -解决办法:join时,使用using语法,同一个列名在using中只能出现一次。 +解决办法:join时,使用 using 语法,同一个列名在 using 中只能出现一次。 GAUSS-00214: "column '%s' specified in USING clause does not exist in left table" SQLSTATE: 42703 -错误原因:join时,使用using语法,在左表中找不到对应的列名。 +错误原因:join时,使用 using 语法,在左表中找不到对应的列名。 -解决办法:join时,使用using语法,要保证使用的列名在左右表中。 +解决办法:join时,使用 using 语法,要保证使用的列名在左右表中。 GAUSS-00217: "column alias list for '%s' has too many entries" @@ -36,23 +36,23 @@ GAUSS-00218: "argument of %s must not contain variables" SQLSTATE: 42P10 -错误原因:类似Limit类的子句中使用了变量。 +错误原因:类似 Limit 类的子句中使用了变量。 -解决办法:类似Limit类的子句中不能使用变量。 +解决办法:类似 Limit 类的子句中不能使用变量。 GAUSS-00219: "argument of %s must not contain aggregate functions" SQLSTATE: 42803 -错误原因:类似Limit类的子句中使用了聚集函数。 +错误原因:类似 Limit 类的子句中使用了聚集函数。 -解决办法:类似Limit类的子句中不能使用聚集函数。 +解决办法:类似 Limit 类的子句中不能使用聚集函数。 GAUSS-00220: "argument of %s must not contain window functions" SQLSTATE: 42P20 -错误原因:类似Limit类的子句中使用了窗口函数。 +错误原因:类似 Limit 类的子句中使用了窗口函数。 -解决办法:类似Limit类的子句中不能使用窗口函数。 +解决办法:类似 Limit 类的子句中不能使用窗口函数。 diff --git a/content/zh/docs/Developerguide/GAUSS-00221----GAUSS-00230.md b/content/zh/docs/Developerguide/GAUSS-00221----GAUSS-00230.md index e5af5fd2f..4330f8eff 100644 --- a/content/zh/docs/Developerguide/GAUSS-00221----GAUSS-00230.md +++ b/content/zh/docs/Developerguide/GAUSS-00221----GAUSS-00230.md @@ -30,7 +30,7 @@ SQLSTATE: 42P20 错误原因:Window名已经被定义了。 -解决办法:请使用未被定义的window名。 +解决办法:请使用未被定义的 window 名。 GAUSS-00225: "window '%s' does not exist" @@ -44,39 +44,39 @@ GAUSS-00226: "cannot override PARTITION BY clause of window '%s'" SQLSTATE: 42P20 -错误原因:不能覆盖窗口函数中的PARTITION BY子句。 +错误原因:不能覆盖窗口函数中的 PARTITION BY 子句。 -解决办法:请检查语法确认窗口函数中的PARTITION BY子句不被覆盖。 +解决办法:请检查语法确认窗口函数中的 PARTITION BY 子句不被覆盖。 GAUSS-00227: "cannot override ORDER BY clause of window '%s'" SQLSTATE: 42P20 -错误原因:不能覆盖窗口函数中的ORDER BY子句。 +错误原因:不能覆盖窗口函数中的 ORDER BY 子句。 -解决办法:请检查语法确认窗口函数中的PARTITION BY子句不被覆盖。 +解决办法:请检查语法确认窗口函数中的 PARTITION BY 子句不被覆盖。 GAUSS-00228: "cannot override frame clause of window '%s'" SQLSTATE: 42P20 -错误原因:不能覆盖窗口函数中的frame子句。 +错误原因:不能覆盖窗口函数中的 frame 子句。 -解决办法:不能覆盖窗口函数中的frame子句。 +解决办法:不能覆盖窗口函数中的 frame 子句。 GAUSS-00229: "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list" SQLSTATE: 42P10 -错误原因: 聚集操作中使用DISTINCT,ORDER BY表达式的参数没有出现在目标列中。 +错误原因: 聚集操作中使用 DISTINCT , ORDER BY 表达式的参数没有出现在目标列中。 -解决办法:请检查确保聚集操作中使用DISTINCT,ORDER BY表达式时的参数在目标列中存在。 +解决办法:请检查确保聚集操作中使用 DISTINCT , ORDER BY 表达式时的参数在目标列中存在。 GAUSS-00230: "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" SQLSTATE: 42P10 -错误原因:DISTINCT ON和ORDER BY同时使用时,ORDER BY后的表达式和DISTINCT ON的表达式不相同。 +错误原因:DISTINCT ON和 ORDER BY 同时使用时, ORDER BY 后的表达式和 DISTINCT ON 的表达式不相同。 -解决办法:DISTINCT ON和ORDER BY同时使用时,ORDER BY后的表达式需要和DISTINCT ON的表达式相同。 +解决办法:DISTINCT ON和 ORDER BY 同时使用时, ORDER BY 后的表达式需要和 DISTINCT ON 的表达式相同。 diff --git a/content/zh/docs/Developerguide/GAUSS-00231----GAUSS-00240.md b/content/zh/docs/Developerguide/GAUSS-00231----GAUSS-00240.md index a9cf8ad55..cfb6256a8 100644 --- a/content/zh/docs/Developerguide/GAUSS-00231----GAUSS-00240.md +++ b/content/zh/docs/Developerguide/GAUSS-00231----GAUSS-00240.md @@ -12,9 +12,9 @@ GAUSS-00232: "operator %s is not a valid ordering operator" SQLSTATE: 42809 -错误原因:使用order by是指定的操作符不是合法的排序操作符。 +错误原因:使用 order by 是指定的操作符不是合法的排序操作符。 -解决办法:使用order by指定操作符时,只能使用 \>或者<排序。 +解决办法:使用 order by 指定操作符时,只能使用 \>或者<排序。 GAUSS-00233: "unrecognized sortby\_dir: %d" @@ -38,7 +38,7 @@ SQLSTATE: 0A000 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00236: "aggregate function calls cannot be nested" @@ -54,7 +54,7 @@ SQLSTATE: 42803 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00238: "cache lookup failed for aggregate %u" diff --git a/content/zh/docs/Developerguide/GAUSS-00241----GAUSS-00250.md b/content/zh/docs/Developerguide/GAUSS-00241----GAUSS-00250.md index 7eb6f770b..4a69cd0aa 100644 --- a/content/zh/docs/Developerguide/GAUSS-00241----GAUSS-00250.md +++ b/content/zh/docs/Developerguide/GAUSS-00241----GAUSS-00250.md @@ -12,9 +12,9 @@ GAUSS-00242: "aggregates not allowed in GROUP BY clause" SQLSTATE: 42803 -错误原因:聚集函数出现在group by子句中。 +错误原因:聚集函数出现在 group by 子句中。 -解决办法:聚集函数不允许出现在group by子句中。 +解决办法:聚集函数不允许出现在 group by 子句中。 GAUSS-00243: "aggregate functions not allowed in a recursive query's recursive term" @@ -46,7 +46,7 @@ SQLSTATE: 42P20 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00247: "window functions not allowed in GROUP BY clause" @@ -60,17 +60,17 @@ GAUSS-00248: "window functions not allowed in window definition" SQLSTATE: 42P20 -错误原因:窗口函数出现在partition clause里或者order by clause里。 +错误原因:窗口函数出现在 partition clause 里或者 order by clause 里。 -解决办法:窗口函数不允许出现在partition clause里或者order by clause里。 +解决办法:窗口函数不允许出现在 partition clause 里或者 order by clause 里。 GAUSS-00249: "column '%s.%s' must appear in the GROUP BY clause or be used in an aggregate function" SQLSTATE: 42803 -错误原因:使用group by时,targetlist里边的变量没有变量出现在group by的变量里,或者使用聚集函数。 +错误原因:使用 group by 时, targetlist 里边的变量没有变量出现在 group by 的变量里,或者使用聚集函数。 -解决办法:使用group by时,targetlist里边的变量必须出现在group by的变量里,或者使用聚集函数。 +解决办法:使用 group by 时, targetlist 里边的变量必须出现在 group by 的变量里,或者使用聚集函数。 GAUSS-00250: "subquery uses ungrouped column '%s.%s' from outer query" diff --git a/content/zh/docs/Developerguide/GAUSS-00251----GAUSS-00260.md b/content/zh/docs/Developerguide/GAUSS-00251----GAUSS-00260.md index 42fc863e8..c5fc1bc80 100644 --- a/content/zh/docs/Developerguide/GAUSS-00251----GAUSS-00260.md +++ b/content/zh/docs/Developerguide/GAUSS-00251----GAUSS-00260.md @@ -14,7 +14,7 @@ SQLSTATE: XX000 错误原因:引用没找到。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00253: "cannot assign to system column '%s'" @@ -30,7 +30,7 @@ SQLSTATE: 0A000 错误原因:设置了数组里类型元素的默认值。 -解决办法:不要对数组类型的变量设置default。 +解决办法:不要对数组类型的变量设置 default 。 GAUSS-00255: "cannot set a subfield to DEFAULT" @@ -52,7 +52,7 @@ GAUSS-00257: "cannot assign to field '%s' of column '%s' because its type %s is SQLSTATE: 42804 -错误原因:对非复合类型的变量指定field。 +错误原因:对非复合类型的变量指定 field 。 解决办法:不能对非复合类型的变量作此操作。 @@ -60,7 +60,7 @@ GAUSS-00258: "cannot assign to field '%s' of column '%s' because there is no suc SQLSTATE: 42703 -错误原因:对非复合类型的变量指定field。 +错误原因:对非复合类型的变量指定 field 。 解决办法:不能对非复合类型的变量作此操作。 @@ -78,5 +78,5 @@ SQLSTATE: 42804 错误原因:被赋值的对象和实际表达式的类型不匹配。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 diff --git a/content/zh/docs/Developerguide/GAUSS-00261----GAUSS-00270.md b/content/zh/docs/Developerguide/GAUSS-00261----GAUSS-00270.md index aadb9ac91..be181c99c 100644 --- a/content/zh/docs/Developerguide/GAUSS-00261----GAUSS-00270.md +++ b/content/zh/docs/Developerguide/GAUSS-00261----GAUSS-00270.md @@ -22,7 +22,7 @@ SQLSTATE: 42601 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00265: "Un-support feature" @@ -36,17 +36,17 @@ GAUSS-00268: "VALUES lists must all be the same length" SQLSTATE: 42601 -错误原因:INSERT ... VALUES语句中VALUES列表的数目与字段数目不匹配。 +错误原因:INSERT ... VALUES语句中 VALUES 列表的数目与字段数目不匹配。 -解决办法:1.请通过\\d tblname查看表的字段信息。2.检查INSERT ... VALUES语句中VALUES的数目与表的字段数目是否匹配。3.修改INSERT ... VALUES语句的语法。 +解决办法:1.请通过\\d tblname查看表的字段信息。2.检查INSERT ... VALUES语句中 VALUES 的数目与表的字段数目是否匹配。3.修改INSERT ... VALUES语句的语法。 GAUSS-00269: "VALUES must not contain table references" SQLSTATE: 0A000 -错误原因:INSERT... VALUES语句的SELECT子句中有关系表JOIN列表。 +错误原因:INSERT... VALUES语句的 SELECT 子句中有关系表 JOIN 列表。 -解决办法:检查INSERT ... VALUES语句中的SELECT子句是否有非法的JOIN列表。重新根据INSERT语法结构修改INSERT语句。 +解决办法:检查INSERT ... VALUES语句中的 SELECT 子句是否有非法的 JOIN 列表。重新根据 INSERT 语法结构修改 INSERT 语句。 GAUSS-00270: "VALUES must not contain OLD or NEW references" @@ -54,5 +54,5 @@ SQLSTATE: 0A000 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 diff --git a/content/zh/docs/Developerguide/GAUSS-00271----GAUSS-00280.md b/content/zh/docs/Developerguide/GAUSS-00271----GAUSS-00280.md index df4ed591e..8b8f17b2f 100644 --- a/content/zh/docs/Developerguide/GAUSS-00271----GAUSS-00280.md +++ b/content/zh/docs/Developerguide/GAUSS-00271----GAUSS-00280.md @@ -4,9 +4,9 @@ GAUSS-00271: "cannot use aggregate function in VALUES" SQLSTATE: 42803 -错误原因:INSERT语句中VALUES子句包含聚合函数。 +错误原因:INSERT语句中 VALUES 子句包含聚合函数。 -解决办法:INSERT语句中VALUES子句不能包含聚合函数,请检查INSERT语法是否正确,重新根据INSERT语法结构修改INSERT语句。 +解决办法:INSERT语句中 VALUES 子句不能包含聚合函数,请检查 INSERT 语法是否正确,重新根据 INSERT 语法结构修改 INSERT 语句。 GAUSS-00272: "cannot use window function in VALUES" @@ -14,7 +14,7 @@ SQLSTATE: 42P20 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00273: "INSERT has more expressions than target columns" @@ -30,15 +30,15 @@ SQLSTATE: 42601 错误原因:INSERT语句中目标列数目大于对应的有效表达式或值的数目。 -解决办法:请检查目标列数目和表达式/值的数目是否匹配。如存在不匹配,请修改INSERT语句。 +解决办法:请检查目标列数目和表达式/值的数目是否匹配。如存在不匹配,请修改 INSERT 语句。 GAUSS-00275: "SELECT ... INTO is not allowed here" SQLSTATE: 42601 -错误原因:语法解析错误:SELECT语句中出现了INTO子句。 +错误原因:语法解析错误:SELECT语句中出现了 INTO 子句。 -解决办法:SELECT语句中不允许出现INTO子句,请检查并修改SELECT语句。 +解决办法:SELECT语句中不允许出现 INTO 子句,请检查并修改 SELECT 语句。 GAUSS-00276: "DEFAULT can only appear in a VALUES list within INSERT" @@ -46,7 +46,7 @@ SQLSTATE: 42601 错误原因:语法解析错误:SELECT语句中存在缺省的表达式或值。 -解决办法:缺省表达式或值只能出现在INSERT语句中,请检查当前SELECT语句语法是否正确。 +解决办法:缺省表达式或值只能出现在 INSERT 语句中,请检查当前 SELECT 语句语法是否正确。 GAUSS-00277: "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" @@ -54,7 +54,7 @@ SQLSTATE: 0A000 错误原因:SELECT语句的表达式或值中包含有SELECT FOR UPDATE/SHARE子句。 -解决办法:SELECT语句的表达式或值中不允许包含有SELECT FOR UPDATE/SHARE子句,请检查并修改SELECT语句。 +解决办法:SELECT语句的表达式或值中不允许包含有SELECT FOR UPDATE/SHARE子句,请检查并修改 SELECT 语句。 GAUSS-00278: "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" @@ -62,7 +62,7 @@ SQLSTATE: 0A000 错误原因:SELECT语句的集合子句(UNION/INTERSECT/EXCEPT)中包含有SELECT FOR UPDATE/SHARE子句。 -解决办法:SELECT语句的集合子句中不允许包含有SELECT FOR UPDATE/SHARE子句,请检查并修改SELECT语句。 +解决办法:SELECT语句的集合子句中不允许包含有SELECT FOR UPDATE/SHARE子句,请检查并修改 SELECT 语句。 GAUSS-00279: "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" @@ -70,7 +70,7 @@ SQLSTATE: 0A000 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00280: "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" @@ -78,5 +78,5 @@ SQLSTATE: 42601 错误原因:语法解析错误:INTO子句在SELECT..UNION/INTERSECT/EXCEPT语句中的位置错误。 -解决办法:INTO只能出现在SELECT..UNION/INTERSECT/EXCEPT语句中,不能出现在SELECT..UNION/INTERSECT/EXCEPT..SELECT的第二个select子句中。 +解决办法:INTO只能出现在SELECT..UNION/INTERSECT/EXCEPT语句中,不能出现在SELECT..UNION/INTERSECT/EXCEPT..SELECT的第二个 select 子句中。 diff --git a/content/zh/docs/Developerguide/GAUSS-00281----GAUSS-00290.md b/content/zh/docs/Developerguide/GAUSS-00281----GAUSS-00290.md index c3b0af7cb..a100b09a5 100644 --- a/content/zh/docs/Developerguide/GAUSS-00281----GAUSS-00290.md +++ b/content/zh/docs/Developerguide/GAUSS-00281----GAUSS-00290.md @@ -6,7 +6,7 @@ SQLSTATE: 42P10 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00282: "each %s query must have the same number of columns" @@ -14,7 +14,7 @@ SQLSTATE: 42601 错误原因:语法错误。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00283: "cannot use aggregate function in UPDATE" @@ -22,7 +22,7 @@ SQLSTATE: 42803 错误原因:UPDATE语法中,更新列的值不能为聚合函数。 -解决办法:请检查UPDATE语法中待更新的列值是否有聚合函数。待更新的列值不能为聚合函数,若有,请修改更新语法。 +解决办法:请检查 UPDATE 语法中待更新的列值是否有聚合函数。待更新的列值不能为聚合函数,若有,请修改更新语法。 GAUSS-00284: "cannot use window function in UPDATE" @@ -30,7 +30,7 @@ SQLSTATE: 42P20 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00285: "UPDATE target count mismatch --- internal error" @@ -46,15 +46,15 @@ SQLSTATE: 42703 错误原因:UPDATE语法中,待更新的列名在表中不存在。 -解决办法:请检查UPDATE语法中待更新的列名是否正确。 +解决办法:请检查 UPDATE 语法中待更新的列名是否正确。 GAUSS-00287: "cannot use aggregate function in RETURNING" SQLSTATE: 42803 -错误原因:INSERT/UPDATE/DELETE语法中的RETURNING子句非法的包含聚合函数。 +错误原因:INSERT/UPDATE/DELETE语法中的 RETURNING 子句非法的包含聚合函数。 -解决办法:INSERT/UPDATE/DELETE语法中的RETURNING子句中不能包含聚合函数,请检查语法是否正确。 +解决办法:INSERT/UPDATE/DELETE语法中的 RETURNING 子句中不能包含聚合函数,请检查语法是否正确。 GAUSS-00288: "cannot use window function in RETURNING" @@ -62,5 +62,5 @@ SQLSTATE: 42P20 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 diff --git a/content/zh/docs/Developerguide/GAUSS-00291----GAUSS-00300.md b/content/zh/docs/Developerguide/GAUSS-00291----GAUSS-00300.md index 01acc31f7..57389e6c6 100644 --- a/content/zh/docs/Developerguide/GAUSS-00291----GAUSS-00300.md +++ b/content/zh/docs/Developerguide/GAUSS-00291----GAUSS-00300.md @@ -6,15 +6,15 @@ SQLSTATE: XX000 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00292: "DECLARE CURSOR must not contain data-modifying statements in WITH" SQLSTATE: 0A000 -错误原因:DECLARE CURSOR语法中的WITH子句含有INSERT/UPDATE/DELETE语句。 +错误原因:DECLARE CURSOR语法中的 WITH 子句含有INSERT/UPDATE/DELETE语句。 -解决办法:DECLARE CURSOR语法中的WITH子句不能包含INSERT/UPDATE/DELETE语句。 +解决办法:DECLARE CURSOR语法中的 WITH 子句不能包含INSERT/UPDATE/DELETE语句。 GAUSS-00293: "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" @@ -44,15 +44,15 @@ GAUSS-00298: "PGXC Node %s: object not defined" SQLSTATE: 42704 -错误原因:指定的node对象异常或者不存在。 +错误原因:指定的 node 对象异常或者不存在。 -解决办法:请检查指定的nodename是否存在或运行正常。如果异常,需要重新启动该node节点。 +解决办法:请检查指定的 nodename 是否存在或运行正常。如果异常,需要重新启动该 node 节点。 GAUSS-00300: "EXECUTE DIRECT cannot execute DML queries" SQLSTATE: 0A000 -错误原因:EXECUTE DIRECT ON \( nodename \[, ... \] \) query语法中在DN上执行了DML语句。 +错误原因:EXECUTE DIRECT ON \( nodename \[, ... \] \) query语法中在 DN 上执行了 DML 语句。 -解决办法:在EXECUTE DIRECT ON \( nodename \[, ... \] \) query语法中不能执行DML语句,目前只支持SELECT语句。 +解决办法:在EXECUTE DIRECT ON \( nodename \[, ... \] \) query语法中不能执行 DML 语句,目前只支持 SELECT 语句。 diff --git a/content/zh/docs/Developerguide/GAUSS-00301----GAUSS-00310.md b/content/zh/docs/Developerguide/GAUSS-00301----GAUSS-00310.md index cb3502d9c..89f90486c 100644 --- a/content/zh/docs/Developerguide/GAUSS-00301----GAUSS-00310.md +++ b/content/zh/docs/Developerguide/GAUSS-00301----GAUSS-00310.md @@ -4,23 +4,23 @@ GAUSS-00301: "EXECUTE DIRECT cannot execute this utility query" SQLSTATE: 0A000 -错误原因:EXECUTE DIRECT ON \( nodename \[, ... \] \) query语法中在DN上执行了DDL语句。 +错误原因:EXECUTE DIRECT ON \( nodename \[, ... \] \) query语法中在 DN 上执行了 DDL 语句。 -解决办法:在EXECUTE DIRECT ON \( nodename \[, ... \] \) query语法中不能执行DDL语句,目前只支持SELECT语句。 +解决办法:在EXECUTE DIRECT ON \( nodename \[, ... \] \) query语法中不能执行 DDL 语句,目前只支持 SELECT 语句。 GAUSS-00302: "EXECUTE DIRECT cannot execute locally this utility query" SQLSTATE: 0A000 -错误原因:特性不支持:EXECUTE DIRECT ON \( nodename \[, ... \] \) query语法中在DN上执行了Set变量语句。 +错误原因:特性不支持:EXECUTE DIRECT ON \( nodename \[, ... \] \) query语法中在 DN 上执行了 Set 变量语句。 -解决办法:在EXECUTE DIRECT ON \( nodename \[, ... \] \) query语法中不能执行Set变量语句,目前只支持SELECT语句。 +解决办法:在EXECUTE DIRECT ON \( nodename \[, ... \] \) query语法中不能执行 Set 变量语句,目前只支持 SELECT 语句。 GAUSS-00303: "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" SQLSTATE: 0A000 -错误原因:SELECT FOR UPDATE/SHARE不支持DISTINCT子句。 +错误原因:SELECT FOR UPDATE/SHARE不支持 DISTINCT 子句。 解决办法:修改语句。 @@ -28,7 +28,7 @@ GAUSS-00304: "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" SQLSTATE: 0A000 -错误原因:SELECT ... FOR UPDATE/SHARE不支持GROUP BY子句。 +错误原因:SELECT ... FOR UPDATE/SHARE不支持 GROUP BY 子句。 解决办法:修改SELECT ... FOR UPDATE/SHARE语句。 @@ -36,7 +36,7 @@ GAUSS-00305: "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" SQLSTATE: 0A000 -错误原因:SELECT ... FOR UPDATE/SHARE不支持HAVING子句。 +错误原因:SELECT ... FOR UPDATE/SHARE不支持 HAVING 子句。 解决办法:修改SELECT ... FOR UPDATE/SHARE语句。 diff --git a/content/zh/docs/Developerguide/GAUSS-00311----GAUSS-00320.md b/content/zh/docs/Developerguide/GAUSS-00311----GAUSS-00320.md index e016ed8ef..994945688 100644 --- a/content/zh/docs/Developerguide/GAUSS-00311----GAUSS-00320.md +++ b/content/zh/docs/Developerguide/GAUSS-00311----GAUSS-00320.md @@ -4,9 +4,9 @@ GAUSS-00311: "SELECT FOR UPDATE/SHARE cannot be applied to a join" SQLSTATE: 0A000 -错误原因:SELECT ... FOR UPDATE/SHARE...OF table\_name语法中的范围表为JOIN类型的连接表。 +错误原因:SELECT ... FOR UPDATE/SHARE...OF table\_name语法中的范围表为 JOIN 类型的连接表。 -解决办法:SELECT ... FOR UPDATE/SHARE...OF table\_name语法中指定的表名不能为JOIN类型的连接表,请修改语法结构。 +解决办法:SELECT ... FOR UPDATE/SHARE...OF table\_name语法中指定的表名不能为 JOIN 类型的连接表,请修改语法结构。 GAUSS-00312: "SELECT FOR UPDATE/SHARE cannot be applied to a function" @@ -20,9 +20,9 @@ GAUSS-00313: "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" SQLSTATE: 0A000 -错误原因:SELECT ... FOR UPDATE/SHARE...OF table\_name语法中的范围表为WITH子句标识的列表。 +错误原因:SELECT ... FOR UPDATE/SHARE...OF table\_name语法中的范围表为 WITH 子句标识的列表。 -解决办法:SELECT ... FOR UPDATE/SHARE...OF table\_name语法中指定的表名不能为WITH子句标识的列表,请修改语法结构。 +解决办法:SELECT ... FOR UPDATE/SHARE...OF table\_name语法中指定的表名不能为 WITH 子句标识的列表,请修改语法结构。 GAUSS-00314: "unrecognized RTE type: %d" @@ -36,47 +36,47 @@ GAUSS-00315: "relation '%s' in FOR UPDATE/SHARE clause not found in FROM clause" SQLSTATE: 42P01 -错误原因:SELECT ... FROM table1\_name FOR UPDATE/SHARE...OF table\_name语法中的table\_name在FROM子句中不存在。 +错误原因:SELECT ... FROM table1\_name FOR UPDATE/SHARE...OF table\_name语法中的table\_name在 FROM 子句中不存在。 -解决办法:SELECT ... FROM table1\_name FOR UPDATE/SHARE...OF table\_name语法中的table\_name必须在FROM子句中存在。 +解决办法:SELECT ... FROM table1\_name FOR UPDATE/SHARE...OF table\_name语法中的table\_name必须在 FROM 子句中存在。 GAUSS-00316: "unsupport 'like clause including partition' for partitioned table" SQLSTATE: 42P16 -错误原因:CREATE TABLE ... LIKE source\_table语法中LIKE子句表名指定为分区表的语法错误。 +错误原因:CREATE TABLE ... LIKE source\_table语法中 LIKE 子句表名指定为分区表的语法错误。 -解决办法:CREATE TABLE ... LIKE source\_table语法中LIKE子句源表名如果指定为分区表,需要使用partition by子句,请修改语法结构。 +解决办法:CREATE TABLE ... LIKE source\_table语法中 LIKE 子句源表名如果指定为分区表,需要使用 partition by 子句,请修改语法结构。 GAUSS-00317: "unsupport 'like clause including reloptions' together with 'with'" SQLSTATE: 42P16 -错误原因:CREATE TABLE ... LIKE source\_table语法中LIKE子句中包含有INCLUDING RELOPTIONS选项,与源表的WITH子句一起使用,存在语法冲突。 +错误原因:CREATE TABLE ... LIKE source\_table语法中 LIKE 子句中包含有 INCLUDING RELOPTIONS 选项,与源表的 WITH 子句一起使用,存在语法冲突。 -解决办法:“CREATE TABLE ... LIKE source\_table语法中LIKE子句中包含有INCLUDING RELOPTIONS选项,该选项不能与源表的WITH子句一起使用。由于INCLUDING RELOPTIONS选项和源表中的即源表的WITH子句都表示源表的存储参数将拷贝至新表,因此只需要使用其中一个选项即可。” +解决办法:“CREATE TABLE ... LIKE source\_table语法中 LIKE 子句中包含有 INCLUDING RELOPTIONS 选项,该选项不能与源表的 WITH 子句一起使用。由于 INCLUDING RELOPTIONS 选项和源表中的即源表的 WITH 子句都表示源表的存储参数将拷贝至新表,因此只需要使用其中一个选项即可。” GAUSS-00318: "array of serial is not implemented" SQLSTATE: 0A000 -错误原因:特性不支持:CREATE TABLE或ALTER TABLE语法中的字段类型为序列数组产生错误。 +错误原因:特性不支持:CREATE TABLE或 ALTER TABLE 语法中的字段类型为序列数组产生错误。 -解决办法:CREATE TABLE或ALTER TABLE语法中的字段类型不能为序列数组。 +解决办法:CREATE TABLE或 ALTER TABLE 语法中的字段类型不能为序列数组。 GAUSS-00319: "conflicting NULL/NOT NULL declarations for column '%s' of table '%s'" SQLSTATE: 42601 -错误原因:CREATE TABLE或ALTER TABLE语法中定义的非空列名与约束子句中定义的列名为空产生矛盾。 +错误原因:CREATE TABLE或 ALTER TABLE 语法中定义的非空列名与约束子句中定义的列名为空产生矛盾。 -解决办法:CREATE TABLE或ALTER TABLE语法中约束子句中定义的列名为空,需要和字段名列表中定义的列名保持一致。 +解决办法:CREATE TABLE或 ALTER TABLE 语法中约束子句中定义的列名为空,需要和字段名列表中定义的列名保持一致。 GAUSS-00320: "multiple default values specified for column '%s' of table '%s'" SQLSTATE: 42601 -错误原因:CREATE TABLE或ALTER TABLE语法的约束子句中定义的列名指定了多个值。 +错误原因:CREATE TABLE或 ALTER TABLE 语法的约束子句中定义的列名指定了多个值。 -解决办法:CREATE TABLE或ALTER TABLE语法的约束子句中定义的列名只能指定一个值。 +解决办法:CREATE TABLE或 ALTER TABLE 语法的约束子句中定义的列名只能指定一个值。 diff --git a/content/zh/docs/Developerguide/GAUSS-00321----GAUSS-00330.md b/content/zh/docs/Developerguide/GAUSS-00321----GAUSS-00330.md index 4b07bcedf..6461dd5fc 100644 --- a/content/zh/docs/Developerguide/GAUSS-00321----GAUSS-00330.md +++ b/content/zh/docs/Developerguide/GAUSS-00321----GAUSS-00330.md @@ -6,7 +6,7 @@ SQLSTATE: XX000 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00322: "unrecognized constraint type: %d" @@ -24,53 +24,53 @@ SQLSTATE: XX000 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-00324: "'%s' is not a table, view, composite type, or foreign table" +GAUSS-00324: "'%s' is not a table, view , composite type , or foreign table" SQLSTATE: 42809 -错误原因:CREATE TABLE ... LIKE source\_table语法的LIKE子句中的source\_table不是关系表、视图、复合类型或外表。 +错误原因:CREATE TABLE ... LIKE source\_table语法的 LIKE 子句中的source\_table不是关系表、视图、复合类型或外表。 -解决办法:CREATE TABLE ... LIKE source\_table语法的LIKE子句中的source\_table必须为关系表、视图、复合类型或外表中的一种。 +解决办法:CREATE TABLE ... LIKE source\_table语法的 LIKE 子句中的source\_table必须为关系表、视图、复合类型或外表中的一种。 GAUSS-00325: "could not specify 'INCLUDING PARTITION' for non-partitioned-table relation:'%s'" SQLSTATE: 42809 -错误原因:CREATE TABLE ... LIKE source\_table语法对分区表错误指定了INCLUDING PARTITION。 +错误原因:CREATE TABLE ... LIKE source\_table语法对分区表错误指定了 INCLUDING PARTITION 。 -解决办法:CREATE TABLE ... LIKE source\_table语法不能对分区表指定了INCLUDING PARTITION。 +解决办法:CREATE TABLE ... LIKE source\_table语法不能对分区表指定了 INCLUDING PARTITION 。 GAUSS-00326: "could not specify 2 or more 'INCLUDING PARTITION' clauses, only one is allowed" SQLSTATE: 42809 -错误原因:CREATE TABLE ... (LIKE source\_table INCLUDING PARTITION)语法中指定了多于1个LIKE...INCLUDING PARTITION子句。 +错误原因:CREATE TABLE ... (LIKE source\_table INCLUDING PARTITION)语法中指定了多于 1 个LIKE...INCLUDING PARTITION子句。 -解决办法:CREATE TABLE ... (LIKE source\_table INCLUDING PARTITION)语法中只能指定1个LIKE...INCLUDING PARTITION子句。 +解决办法:CREATE TABLE ... (LIKE source\_table INCLUDING PARTITION)语法中只能指定 1 个LIKE...INCLUDING PARTITION子句。 GAUSS-00327: "could not specify 2 or more 'INCLUDING RELOPTIONS' clauses, only one is allowed" SQLSTATE: 42809 -错误原因:CREATE TABLE ... LIKE source\_table语法LIKE子句中指定了多于1个INCLUDINGRELOPTIONS。 +错误原因:CREATE TABLE ... LIKE source\_table语法 LIKE 子句中指定了多于 1 个 INCLUDINGRELOPTIONS 。 -解决办法:CREATE TABLE ... LIKE source\_table语法LIKE子句中只能指定1个INCLUDINGRELOPTIONS。 +解决办法:CREATE TABLE ... LIKE source\_table语法 LIKE 子句中只能指定 1 个 INCLUDINGRELOPTIONS 。 GAUSS-00328: "could not specify 2 or more 'INCLUDING DISTRIBUTION' clauses, only one is allowed" SQLSTATE: 42809 -错误原因:CREATE TABLE ... LIKE source\_table语法LIKE子句中指定了多于1个INCLUDINGDISTRIBUTION。 +错误原因:CREATE TABLE ... LIKE source\_table语法 LIKE 子句中指定了多于 1 个 INCLUDINGDISTRIBUTION 。 -解决办法:CREATE TABLE ... LIKE source\_table语法LIKE子句中只能指定1个INCLUDINGDISTRIBUTION。 +解决办法:CREATE TABLE ... LIKE source\_table语法 LIKE 子句中只能指定 1 个 INCLUDINGDISTRIBUTION 。 GAUSS-00329: "Postgres-XC does not support VIEW in LIKE clauses" SQLSTATE: 0A000 -错误原因:特性不支持:CREATE TABLE ... LIKE语法的LIKE子句中不支持视图。 +错误原因:特性不支持:CREATE TABLE ... LIKE语法的 LIKE 子句中不支持视图。 -解决办法:修改CREATE TABLE ... LIKE语法的LIKE子句删除视图。 +解决办法:修改CREATE TABLE ... LIKE语法的 LIKE 子句删除视图。 GAUSS-00330: "cannot convert whole-row table reference" @@ -78,5 +78,5 @@ SQLSTATE: 0A000 错误原因:不支持的语法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 diff --git a/content/zh/docs/Developerguide/GAUSS-00331----GAUSS-00340.md b/content/zh/docs/Developerguide/GAUSS-00331----GAUSS-00340.md index c79cf6c21..d887eb322 100644 --- a/content/zh/docs/Developerguide/GAUSS-00331----GAUSS-00340.md +++ b/content/zh/docs/Developerguide/GAUSS-00331----GAUSS-00340.md @@ -12,33 +12,33 @@ GAUSS-00332: "null partition key value for relation '%s'" SQLSTATE: XX000 -错误原因:不支持null partition key value 。 +错误原因:不支持 null partition key value 。 -解决办法:检查partition key value。 +解决办法:检查 partition key value 。 GAUSS-00333: "partition key column's number of relation '%s' is not a 1-D smallint array" SQLSTATE: XX000 -错误原因:CREATE TABLE ... LIKE语法的LIKE子句中指定INCLUDING PARTITION的分区键值列数错误或列类型错误。 +错误原因:CREATE TABLE ... LIKE语法的 LIKE 子句中指定 INCLUDING PARTITION 的分区键值列数错误或列类型错误。 -解决办法:CREATE TABLE ... LIKE语法的LIKE子句中指定INCLUDING PARTITION的分区键值列数为1且列值类型为整型。 +解决办法:CREATE TABLE ... LIKE语法的 LIKE 子句中指定 INCLUDING PARTITION 的分区键值列数为 1 且列值类型为整型。 GAUSS-00334: "partition key column's number of %s not in the range of all its columns" SQLSTATE: XX000 -错误原因:CREATE TABLE ... LIKE语法的LIKE子句中指定INCLUDING PARTITION的分区键值列数超过了当前表的列数范围。 +错误原因:CREATE TABLE ... LIKE语法的 LIKE 子句中指定 INCLUDING PARTITION 的分区键值列数超过了当前表的列数范围。 -解决办法:CREATE TABLE ... LIKE语法的LIKE子句中指定INCLUDING PARTITION的分区键值列数范围必须在1到表最大列数的范围内。 +解决办法:CREATE TABLE ... LIKE语法的 LIKE 子句中指定 INCLUDING PARTITION 的分区键值列数范围必须在 1 到表最大列数的范围内。 GAUSS-00335: "' including partition ' for list partitioned relation: '%s' not implemented yet" SQLSTATE: XX000 -错误原因:CREATE TABLE ... LIKE语法的LIKE子句中指定INCLUDING PARTITION的分区类型错误。 +错误原因:CREATE TABLE ... LIKE语法的 LIKE 子句中指定 INCLUDING PARTITION 的分区类型错误。 -解决办法:CREATE TABLE ... LIKE语法的LIKE子句中指定INCLUDING PARTITION的分区类型只能为定义为范围分区或哈希分区,列表分区暂不支持。 +解决办法:CREATE TABLE ... LIKE语法的 LIKE 子句中指定 INCLUDING PARTITION 的分区类型只能为定义为范围分区或哈希分区,列表分区暂不支持。 GAUSS-00336: "cache lookup failed for constraint %u" diff --git a/content/zh/docs/Developerguide/GAUSS-00341----GAUSS-00350.md b/content/zh/docs/Developerguide/GAUSS-00341----GAUSS-00350.md index 33c1411da..af9b6f852 100644 --- a/content/zh/docs/Developerguide/GAUSS-00341----GAUSS-00350.md +++ b/content/zh/docs/Developerguide/GAUSS-00341----GAUSS-00350.md @@ -28,15 +28,15 @@ GAUSS-00344: "multiple primary keys for table '%s' are not allowed" SQLSTATE: 42P16 -错误原因:CREATE TABLE ... LIKE source\_table语法LIKE子句中指定了多个INCLUDING INDEXES的主键。 +错误原因:CREATE TABLE ... LIKE source\_table语法 LIKE 子句中指定了多个 INCLUDING INDEXES 的主键。 -解决办法:CREATE TABLE ... LIKE source\_table语法LIKE子句中只能指定了1个INCLUDING INDEXES的主键。 +解决办法:CREATE TABLE ... LIKE source\_table语法 LIKE 子句中只能指定了 1 个 INCLUDING INDEXES 的主键。 GAUSS-00345: "cannot use an existing index in CREATE TABLE" SQLSTATE: 0A000 -错误原因:错误的使用CREATE TABLE语法给索引字段指定约束。 +错误原因:错误的使用 CREATE TABLE 语法给索引字段指定约束。 解决办法:“ALTER TABLE ... ADD table\_constraint语法给数据表增加一个新约束”。 diff --git a/content/zh/docs/Developerguide/GAUSS-00351----GAUSS-00360.md b/content/zh/docs/Developerguide/GAUSS-00351----GAUSS-00360.md index f97cd5da3..0faf41c7d 100644 --- a/content/zh/docs/Developerguide/GAUSS-00351----GAUSS-00360.md +++ b/content/zh/docs/Developerguide/GAUSS-00351----GAUSS-00360.md @@ -44,31 +44,31 @@ GAUSS-00356: "inherited relation '%s' is not a table" SQLSTATE: 42809 -错误原因:CREATE TABLE ... INHERITS parent\_table语法中INHERITS子句声明的表为非法的数据表。 +错误原因:CREATE TABLE ... INHERITS parent\_table语法中 INHERITS 子句声明的表为非法的数据表。 -解决办法:请检查CREATE TABLE ... INHERITS parent\_table语法中INHERITS子句声明的表是否为一个已存在的表。 +解决办法:请检查CREATE TABLE ... INHERITS parent\_table语法中 INHERITS 子句声明的表是否为一个已存在的表。 GAUSS-00357: "column '%s' named in key does not exist" SQLSTATE: 42703 -错误原因:CREATE TABLE语法中使用约束子句或INHERITS子句声明的表的字段名在表中不存在。 +错误原因:CREATE TABLE语法中使用约束子句或 INHERITS 子句声明的表的字段名在表中不存在。 -解决办法:请检查CREATE TABLE语法中使用约束子句或INHERITS子句声明的表的字段名是否在表中存在,如果不存在需要更换继承的字段名或重新创建表。 +解决办法:请检查 CREATE TABLE 语法中使用约束子句或 INHERITS 子句声明的表的字段名是否在表中存在,如果不存在需要更换继承的字段名或重新创建表。 GAUSS-00358: "column '%s' appears twice in primary key constraint" SQLSTATE: 42701 -错误原因:CREATE TABLE ... CONSTRAINT语法的PRIMARY KEY子句中指定的主键约束包含的约束属性中有2个相同的主键名。 +错误原因:CREATE TABLE ... CONSTRAINT语法的 PRIMARY KEY 子句中指定的主键约束包含的约束属性中有 2 个相同的主键名。 -解决办法:请检查CREATE TABLE ... CONSTRAINT语法的PRIMARY KEY子句中指定的主键约束包含的约束属性中是否存在2个相同的主键名,并修改或删除其中一个主键名。 +解决办法:请检查CREATE TABLE ... CONSTRAINT语法的 PRIMARY KEY 子句中指定的主键约束包含的约束属性中是否存在 2 个相同的主键名,并修改或删除其中一个主键名。 GAUSS-00359: "column '%s' appears twice in unique constraint" SQLSTATE: 42701 -错误原因:CREATE TABLE ... CONSTRAINT语法的UNIQE子句中指定的主键约束包含的约束属性中有2个相同的主键名。 +错误原因:CREATE TABLE ... CONSTRAINT语法的 UNIQE 子句中指定的主键约束包含的约束属性中有 2 个相同的主键名。 -解决办法:请检查CREATE TABLE ... CONSTRAINT语法的UNIQE子句中指定的主键约束包含的约束属性中是否存在2个相同的主键名,并修改或删除其中一个主键名。 +解决办法:请检查CREATE TABLE ... CONSTRAINT语法的 UNIQE 子句中指定的主键约束包含的约束属性中是否存在 2 个相同的主键名,并修改或删除其中一个主键名。 diff --git a/content/zh/docs/Developerguide/GAUSS-00361----GAUSS-00370.md b/content/zh/docs/Developerguide/GAUSS-00361----GAUSS-00370.md index 498bc968d..adf11b33e 100644 --- a/content/zh/docs/Developerguide/GAUSS-00361----GAUSS-00370.md +++ b/content/zh/docs/Developerguide/GAUSS-00361----GAUSS-00370.md @@ -6,7 +6,7 @@ SQLSTATE: 0A000 错误原因: 对列存表通过CREATE INDEX...USING method语法中指定的访问方法错误。 -解决办法:对列存表创建索引时指定的访问方法只能为psort类型,请修改索引的访问方法。 +解决办法:对列存表创建索引时指定的访问方法只能为 psort 类型,请修改索引的访问方法。 GAUSS-00362: "index expression cannot return a set" @@ -36,25 +36,25 @@ GAUSS-00365: "rule WHERE condition cannot contain references to other relations" SQLSTATE: 42P17 -错误原因:CREATE RULE语法中的WHERE条件表达式引用了NEW和OLD之外的表。 +错误原因:CREATE RULE语法中的 WHERE 条件表达式引用了 NEW 和 OLD 之外的表。 -解决办法:CREATE RULE语法中的WHERE条件表达式除了引用NEW和OLD之外不能引用其他任何表,请检查并修改语法。 +解决办法:CREATE RULE语法中的 WHERE 条件表达式除了引用 NEW 和 OLD 之外不能引用其他任何表,请检查并修改语法。 GAUSS-00368: "Rule may not use NOTIFY, it is not yet supported" SQLSTATE: 42P17 -错误原因:特性不支持:CREATE RULE语法中指定规则动作的命令错误的使用了NOTIFY。 +错误原因:特性不支持:CREATE RULE语法中指定规则动作的命令错误的使用了 NOTIFY 。 -解决办法:CREATE RULE语法中指定规则动作的命令只能包含SELECT、INSERT、UPDATE或DELETE,当前版本暂时还不支持NOTIFY,请修改语法。 +解决办法:CREATE RULE语法中指定规则动作的命令只能包含SELECT、INSERT、UPDATE或 DELETE ,当前版本暂时还不支持 NOTIFY ,请修改语法。 -GAUSS-00369: "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions" +GAUSS-00369: "rules with WHERE conditions can only have SELECT, INSERT , UPDATE , or DELETE actions" SQLSTATE: 42P17 -错误原因:特性不支持:CREATE RULE语法中指定规则动作的命令错误的使用了CREATE、DESTROY、COPY和VACUUM等功能型数据定义语句。 +错误原因:特性不支持:CREATE RULE语法中指定规则动作的命令错误的使用了CREATE、DESTROY、COPY和 VACUUM 等功能型数据定义语句。 -解决办法:CREATE RULE语法中指定规则动作的命令目前只支持SELECT、INSERT、UPDATE或DELETE等动作。 +解决办法:CREATE RULE语法中指定规则动作的命令目前只支持SELECT、INSERT、UPDATE或 DELETE 等动作。 GAUSS-00370: "conditional UNION/INTERSECT/EXCEPT statements are not implemented" @@ -62,5 +62,5 @@ SQLSTATE: 0A000 错误原因:对于用户建立的规则,生成的查询树中,对UNION/INTERSECT/EXCEPT进行了过滤操作,该执行模式目前不支持。 -解决办法:尝试进行rule的改写,规避不支持的行为,或请联系技术支持工程师提供技术支持。 +解决办法:尝试进行 rule 的改写,规避不支持的行为,或请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-00371----GAUSS-00380.md b/content/zh/docs/Developerguide/GAUSS-00371----GAUSS-00380.md index 65e3961b6..97abbc455 100644 --- a/content/zh/docs/Developerguide/GAUSS-00371----GAUSS-00380.md +++ b/content/zh/docs/Developerguide/GAUSS-00371----GAUSS-00380.md @@ -4,33 +4,33 @@ GAUSS-00371: "ON SELECT rule cannot use OLD" SQLSTATE: 42P17 -错误原因:CREATE RULE name AS ON SELECT语法中WHERE条件表达式中引用的表名不能为OLD表。 +错误原因:CREATE RULE name AS ON SELECT语法中 WHERE 条件表达式中引用的表名不能为 OLD 表。 -解决办法:请检查CREATE RULE name AS ON SELECT语法中WHERE条件表达式引用的表名是否包含OLD表,并修改为非OLD表。 +解决办法:请检查 CREATE RULE name AS ON SELECT 语法中 WHERE 条件表达式引用的表名是否包含 OLD 表,并修改为非 OLD 表。 GAUSS-00372: "ON SELECT rule cannot use NEW" SQLSTATE: 42P17 -错误原因:CREATE RULE name AS ON SELECT语法中WHERE条件表达式中引用的表名不能为NEW表。 +错误原因:CREATE RULE name AS ON SELECT语法中 WHERE 条件表达式中引用的表名不能为 NEW 表。 -解决办法:请检查CREATE RULE name AS ON SELECT语法中WHERE条件表达式引用的表名是否包含NEW表,并修改为非OLD表。 +解决办法:请检查 CREATE RULE name AS ON SELECT 语法中 WHERE 条件表达式引用的表名是否包含 NEW 表,并修改为非 OLD 表。 GAUSS-00373: "ON INSERT rule cannot use OLD" SQLSTATE: 42P17 -错误原因:CREATE RULE name AS ON INSERT语法中WHERE条件表达式中引用的表名不能为OLD表。 +错误原因:CREATE RULE name AS ON INSERT语法中 WHERE 条件表达式中引用的表名不能为 OLD 表。 -解决办法:请检查CREATE RULE name AS ON INSERT语法中WHERE条件表达式引用的表名是否包含OLD表,并修改为非OLD表。 +解决办法:请检查 CREATE RULE name AS ON INSERT 语法中 WHERE 条件表达式引用的表名是否包含 OLD 表,并修改为非 OLD 表。 GAUSS-00374: "ON DELETE rule cannot use NEW" SQLSTATE: 42P17 -错误原因:CREATE RULE name AS ON DELETE语法中WHERE条件表达式中引用的表名不能为NEW表。 +错误原因:CREATE RULE name AS ON DELETE语法中 WHERE 条件表达式中引用的表名不能为 NEW 表。 -解决办法:请检查CREATE RULE name AS ON DELETE语法中WHERE条件表达式引用的表名是否包含NEW表,并修改为非OLD表。 +解决办法:请检查 CREATE RULE name AS ON DELETE 语法中 WHERE 条件表达式引用的表名是否包含 NEW 表,并修改为非 OLD 表。 GAUSS-00377: "missing definition of adding partition" @@ -38,29 +38,29 @@ SQLSTATE: XX000 错误原因:ALTER TABLE ADD PARTITION语法为指定的分区表添加一个分区时,分区中定义的分区列、索引、限制条件或父表存在无效值。 -解决办法:请检查ALTER TABLE ADD PARTITION语法为指定的分区表添加的一个分区中定义的分区列、索引、限制条件或父表是否存在无效值,并修改为有效值。 +解决办法:请检查 ALTER TABLE ADD PARTITION 语法为指定的分区表添加的一个分区中定义的分区列、索引、限制条件或父表是否存在无效值,并修改为有效值。 GAUSS-00378: "misplaced DEFERRABLE clause" SQLSTATE: 42601 -错误原因:CREATE TABLE或ALTER TABLE语法中column\_constraint子句指定的列的限制条件为可推迟类型错误。 +错误原因:CREATE TABLE或 ALTER TABLE 语法中column\_constraint子句指定的列的限制条件为可推迟类型错误。 -解决办法:CREATE TABLE或ALTER TABLE语法中column\_constraint子句指定的列的限制类型只能为主键、UNIQUE、排他或外表时才能设置为可推迟类型。 +解决办法:CREATE TABLE或 ALTER TABLE 语法中column\_constraint子句指定的列的限制类型只能为主键、UNIQUE、排他或外表时才能设置为可推迟类型。 GAUSS-00379: "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" SQLSTATE: 42601 -错误原因:CREATE TABLE或ALTER TABLE语法中column\_constraint子句列表中同时存在可推迟类型和不可推迟类型。 +错误原因:CREATE TABLE或 ALTER TABLE 语法中column\_constraint子句列表中同时存在可推迟类型和不可推迟类型。 -解决办法:CREATE TABLE或ALTER TABLE语法中column\_constraint子句列表中只能存在可推迟类型或非可推迟类型两者中的一种,请修改column\_constraint子句列表。 +解决办法:CREATE TABLE或 ALTER TABLE 语法中column\_constraint子句列表中只能存在可推迟类型或非可推迟类型两者中的一种,请修改column\_constraint子句列表。 GAUSS-00380: "misplaced NOT DEFERRABLE clause" SQLSTATE: 42601 -错误原因:CREATE TABLE或ALTER TABLE语法中column\_constraint子句指定的列的限制条件为不可推迟类型错误。 +错误原因:CREATE TABLE或 ALTER TABLE 语法中column\_constraint子句指定的列的限制条件为不可推迟类型错误。 -解决办法:CREATE TABLE或ALTER TABLE语法中column\_constraint子句指定的列的限制类型只能为主键、UNIQUE、排他或外表时才能设置为不可推迟类型。 +解决办法:CREATE TABLE或 ALTER TABLE 语法中column\_constraint子句指定的列的限制类型只能为主键、UNIQUE、排他或外表时才能设置为不可推迟类型。 diff --git a/content/zh/docs/Developerguide/GAUSS-00381----GAUSS-00390.md b/content/zh/docs/Developerguide/GAUSS-00381----GAUSS-00390.md index 2ad9e5907..0e29a4129 100644 --- a/content/zh/docs/Developerguide/GAUSS-00381----GAUSS-00390.md +++ b/content/zh/docs/Developerguide/GAUSS-00381----GAUSS-00390.md @@ -6,7 +6,7 @@ SQLSTATE: 42601 错误原因:语法错误。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00382: "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" @@ -14,7 +14,7 @@ SQLSTATE: 42601 错误原因:语法错误。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00383: "misplaced INITIALLY IMMEDIATE clause" @@ -22,15 +22,15 @@ SQLSTATE: 42601 错误原因:语法错误。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00384: "CREATE specifies a schema \(%s\) different from the one being created \(%s\)" SQLSTATE: 42P15 -错误原因:在CREATE SCHEMA schema\_name schema\_element...语法中,schema\_element指示的CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE PARTITION或GRANT子句中的包含的模式名与schema\_name不匹配。 +错误原因:在CREATE SCHEMA schema\_name schema\_element...语法中,schema\_element指示的CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE PARTITION或 GRANT 子句中的包含的模式名与schema\_name不匹配。 -解决办法:在CREATE SCHEMA schema\_name schema\_element...语法中,需要确认并修改schema\_element指示的CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE PARTITION或GRANT子句中的包含的模式名与schema\_name一致。 +解决办法:在CREATE SCHEMA schema\_name schema\_element...语法中,需要确认并修改schema\_element指示的CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE PARTITION或 GRANT 子句中的包含的模式名与schema\_name一致。 GAUSS-00385: "unsupport inherits clause for partitioned table" @@ -38,7 +38,7 @@ SQLSTATE: 42601 错误原因:语法错误。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00386: "inherited relation '%s' is a foreign table" @@ -46,7 +46,7 @@ SQLSTATE: 42809 错误原因:不支持的用法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00387: "inherited relation '%s' is a partitioned table" @@ -68,7 +68,7 @@ GAUSS-00390: "unsupported feature with temporary/unlogged table for partitioned SQLSTATE:42601 -错误原因:CREATE TEMPORARY/UNLOGGED TABLE table\_name …语法中分区表不支持TEMPORARY或UNLOGGED属性。 +错误原因:CREATE TEMPORARY/UNLOGGED TABLE table\_name …语法中分区表不支持 TEMPORARY 或 UNLOGGED 属性。 -解决办法:CREATE TEMPORARY/UNLOGGED TABLE table\_name …语法中指定为TEMPORARY或UNLOGGED属性的表不支持分区表,请修改表名为非分区表。 +解决办法:CREATE TEMPORARY/UNLOGGED TABLE table\_name …语法中指定为 TEMPORARY 或 UNLOGGED 属性的表不支持分区表,请修改表名为非分区表。 diff --git a/content/zh/docs/Developerguide/GAUSS-00391----GAUSS-00400.md b/content/zh/docs/Developerguide/GAUSS-00391----GAUSS-00400.md index 53f42dbdf..367f7510a 100644 --- a/content/zh/docs/Developerguide/GAUSS-00391----GAUSS-00400.md +++ b/content/zh/docs/Developerguide/GAUSS-00391----GAUSS-00400.md @@ -4,17 +4,17 @@ GAUSS-00392: "too many partition keys for partitioned table" SQLSTATE: 42P16 -错误原因:创建表为范围分区表时,指定的分区列数目超过了规定的最大数目4。 +错误原因:创建表为范围分区表时,指定的分区列数目超过了规定的最大数目 4 。 -解决办法:创建表为范围分区表时,请保证分区列最大数目不超过4个。 +解决办法:创建表为范围分区表时,请保证分区列最大数目不超过 4 个。 GAUSS-00393: "too many partitions for partitioned table" SQLSTATE: 42P16 -错误原因:PARTITION BY RANGE\(partition\_key\)\(range\_partition\_definition\_list\)...语法创建范围分区表时,指定的分区值列表数目超过了规定的最大数目32767。 +错误原因:PARTITION BY RANGE\(partition\_key\)\(range\_partition\_definition\_list\)...语法创建范围分区表时,指定的分区值列表数目超过了规定的最大数目 32767 。 -解决办法:请确保指定的分区值列表最大数目不超过32767。 +解决办法:请确保指定的分区值列表最大数目不超过 32767 。 GAUSS-00394: "Range partitioned table with INTERVAL was forbidden" @@ -30,7 +30,7 @@ SQLSTATE: 42P16 错误原因:不支持的用法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00397: "duplicate partition name: '%s'" @@ -44,9 +44,9 @@ GAUSS-00398: "column '%s' appears twice in partial cluster key constraint" SQLSTATE: 42701 -错误原因:CREATE TABLE ... CONSTRAINT PARTIAL CLUSTER KEY (columnList)语法中columnList列表中存在重复的列名。 +错误原因:CREATE TABLE ... CONSTRAINT PARTIAL CLUSTER KEY (columnList)语法中 columnList 列表中存在重复的列名。 -解决办法:请检查并修改CREATE TABLE ... CONSTRAINT PARTIAL CLUSTER KEY (columnList)语法中columnList列表中存在的重复列名。 +解决办法:请检查并修改CREATE TABLE ... CONSTRAINT PARTIAL CLUSTER KEY (columnList)语法中 columnList 列表中存在的重复列名。 GAUSS-00399: "column name '%s' conflicts with a system column name" @@ -60,7 +60,7 @@ GAUSS-00400: "access method 'psort' does not support WHERE clause" SQLSTATE: 0A000 -错误原因:在CREATE INDEX或ALTER TABLE语法中INDEX子句中指定的访问方式如果为psort时,INDEX子句中不支持WHERE子句。 +错误原因:在 CREATE INDEX 或 ALTER TABLE 语法中 INDEX 子句中指定的访问方式如果为 psort 时, INDEX 子句中不支持 WHERE 子句。 -解决办法:在CREATE INDEX或ALTER TABLE语法中INDEX子句中指定的访问方式如果为psort时,请检查INDEX子句中是否存在WHERE子句,并修改语法。 +解决办法:在 CREATE INDEX 或 ALTER TABLE 语法中 INDEX 子句中指定的访问方式如果为 psort 时,请检查 INDEX 子句中是否存在 WHERE 子句,并修改语法。 diff --git a/content/zh/docs/Developerguide/GAUSS-00401----GAUSS-00410.md b/content/zh/docs/Developerguide/GAUSS-00401----GAUSS-00410.md index d91e999d9..4ac05efff 100644 --- a/content/zh/docs/Developerguide/GAUSS-00401----GAUSS-00410.md +++ b/content/zh/docs/Developerguide/GAUSS-00401----GAUSS-00410.md @@ -4,9 +4,9 @@ GAUSS-00401: "access method 'psort' does not support index expressions" SQLSTATE: 0A000 -错误原因:在CREATE INDEX或ALTER TABLE语法中INDEX子句中指定的访问方式如果为psort时,INDEX子句中不支持表达式。 +错误原因:在 CREATE INDEX 或 ALTER TABLE 语法中 INDEX 子句中指定的访问方式如果为 psort 时, INDEX 子句中不支持表达式。 -解决办法:在CREATE INDEX或ALTER TABLE语法中INDEX子句中指定的访问方式如果为psort时,请检查INDEX子句中是否存在表达式,并修改语法。 +解决办法:在 CREATE INDEX 或 ALTER TABLE 语法中 INDEX 子句中指定的访问方式如果为 psort 时,请检查 INDEX 子句中是否存在表达式,并修改语法。 GAUSS-00402: "Partition key value can not be null" @@ -52,7 +52,7 @@ GAUSS-00407: "DISTINCT specified, but %s is not an aggregate function" SQLSTATE: 42809 -错误原因:指定了DISTINCT,但是函数却不是聚集函数。 +错误原因:指定了 DISTINCT ,但是函数却不是聚集函数。 解决办法:选择一个有效的聚集函数。 @@ -60,7 +60,7 @@ GAUSS-00408: "ORDER BY specified, but %s is not an aggregate function" SQLSTATE: 42809 -错误原因:指定了ORDER BY,但是函数却不是聚集函数。 +错误原因:指定了 ORDER BY ,但是函数却不是聚集函数。 解决办法:选择一个有效的聚集函数。 @@ -68,7 +68,7 @@ GAUSS-00409: "OVER specified, but %s is not a window function nor an aggregate f SQLSTATE: 42809 -错误原因:指定了OVER,但是函数却不是窗口函数或者聚集函数。 +错误原因:指定了 OVER ,但是函数却不是窗口函数或者聚集函数。 解决办法:选择一个有效的窗口函数或聚集函数。 diff --git a/content/zh/docs/Developerguide/GAUSS-00411----GAUSS-00420.md b/content/zh/docs/Developerguide/GAUSS-00411----GAUSS-00420.md index f91400b2b..8d8806293 100644 --- a/content/zh/docs/Developerguide/GAUSS-00411----GAUSS-00420.md +++ b/content/zh/docs/Developerguide/GAUSS-00411----GAUSS-00420.md @@ -36,25 +36,25 @@ GAUSS-00415: "window function call requires an OVER clause" SQLSTATE: 42809 -错误原因:调用函数或表达式为窗口函数时,OVER子句未定义。 +错误原因:调用函数或表达式为窗口函数时, OVER 子句未定义。 -解决办法:调用函数或表达式为窗口函数时,该窗口函数必须使用OVER子句定义,请检查并修改语法。 +解决办法:调用函数或表达式为窗口函数时,该窗口函数必须使用 OVER 子句定义,请检查并修改语法。 GAUSS-00416: "DISTINCT is not implemented for window functions" SQLSTATE: 0A000 -错误原因:调用函数或表达式为窗口函数时,该窗口函数存在DISTINCT子句。 +错误原因:调用函数或表达式为窗口函数时,该窗口函数存在 DISTINCT 子句。 -解决办法:调用函数或表达式为窗口函数时,窗口函数中不能包含DISTINCT子句,请检查并修改语法。 +解决办法:调用函数或表达式为窗口函数时,窗口函数中不能包含 DISTINCT 子句,请检查并修改语法。 GAUSS-00417: "aggregate ORDER BY is not implemented for window functions" SQLSTATE: 0A000 -错误原因:调用函数或表达式为窗口函数时,该窗口函数存在ORDER BY子句。 +错误原因:调用函数或表达式为窗口函数时,该窗口函数存在 ORDER BY 子句。 -解决办法:调用函数或表达式为窗口函数时,窗口函数中不能包含ORDER BY子句,请检查并修改语法。 +解决办法:调用函数或表达式为窗口函数时,窗口函数中不能包含 ORDER BY 子句,请检查并修改语法。 GAUSS-00418: "window functions cannot return sets" diff --git a/content/zh/docs/Developerguide/GAUSS-00421----GAUSS-00430.md b/content/zh/docs/Developerguide/GAUSS-00421----GAUSS-00430.md index 86d63d97b..be115036c 100644 --- a/content/zh/docs/Developerguide/GAUSS-00421----GAUSS-00430.md +++ b/content/zh/docs/Developerguide/GAUSS-00421----GAUSS-00430.md @@ -14,7 +14,7 @@ SQLSTATE: 42883 错误原因:聚合函数的参数无效。 -解决办法:请检查确认聚合函数的参数数目是否为0。 +解决办法:请检查确认聚合函数的参数数目是否为 0 。 GAUSS-00423: "aggregate %s does not exist" @@ -38,7 +38,7 @@ SQLSTATE: 42P08 错误原因:不支持的用法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-00427: "could not determine data type of parameter $%d" diff --git a/content/zh/docs/Developerguide/GAUSS-00431----GAUSS-00440.md b/content/zh/docs/Developerguide/GAUSS-00431----GAUSS-00440.md index e73f03bf3..e4e65afcc 100644 --- a/content/zh/docs/Developerguide/GAUSS-00431----GAUSS-00440.md +++ b/content/zh/docs/Developerguide/GAUSS-00431----GAUSS-00440.md @@ -38,7 +38,7 @@ SQLSTATE: XX000 错误原因:目前没有可用的清理线程两阶段提交事务。 -解决办法:将GUC参数autovacuum\_max\_workers调大。 +解决办法:将 GUC 参数autovacuum\_max\_workers调大。 GAUSS-00436: "cache lookup failed for database %u" diff --git a/content/zh/docs/Developerguide/GAUSS-00481----GAUSS-00490.md b/content/zh/docs/Developerguide/GAUSS-00481----GAUSS-00490.md index 53b00e2f1..6d58539f7 100644 --- a/content/zh/docs/Developerguide/GAUSS-00481----GAUSS-00490.md +++ b/content/zh/docs/Developerguide/GAUSS-00481----GAUSS-00490.md @@ -22,7 +22,7 @@ SQLSTATE: 22023 错误原因:重置目标参数错误。 -解决办法:参数必须为bgwriter。 +解决办法:参数必须为 bgwriter 。 GAUSS-00484: "could not read statistics message: %m" @@ -76,7 +76,7 @@ GAUSS-00490: "materialize mode required, but it is not allowed in this context" SQLSTATE: 0A000 -错误原因:返回tuplestore在当前上下文不支持。 +错误原因:返回 tuplestore 在当前上下文不支持。 解决办法:修改返回值类型。 diff --git a/content/zh/docs/Developerguide/GAUSS-00491----GAUSS-00500.md b/content/zh/docs/Developerguide/GAUSS-00491----GAUSS-00500.md index 5a87dd596..837543d55 100644 --- a/content/zh/docs/Developerguide/GAUSS-00491----GAUSS-00500.md +++ b/content/zh/docs/Developerguide/GAUSS-00491----GAUSS-00500.md @@ -44,25 +44,25 @@ GAUSS-00496: "option '%s' not recognized" SQLSTATE: XX000 -错误原因:不识别copy中某个选项的值。 +错误原因:不识别 copy 中某个选项的值。 -解决办法:检查copy中该不识别的参数是否正确。 +解决办法:检查 copy 中该不识别的参数是否正确。 GAUSS-00497: "%d is not a valid encoding code" SQLSTATE: 42704 -错误原因:将字符串转换为ASCII编码格式时,未使用指定的编码标识符。 +错误原因:将字符串转换为 ASCII 编码格式时,未使用指定的编码标识符。 -解决办法:将字符串转换为ASCII编码格式时,请确认使用指定的编码标识符编号必须小于42。 +解决办法:将字符串转换为 ASCII 编码格式时,请确认使用指定的编码标识符编号必须小于 42 。 GAUSS-00498: "%s is not a valid encoding name" SQLSTATE: 42704 -错误原因:将字符串转换为ASCII编码格式时,使用的字符编码名无效。 +错误原因:将字符串转换为 ASCII 编码格式时,使用的字符编码名无效。 -解决办法:将字符串转换为ASCII编码格式时,请确认使用指定的编码标识符名必须为以下列表中的有效名称。 +解决办法:将字符串转换为 ASCII 编码格式时,请确认使用指定的编码标识符名必须为以下列表中的有效名称。 GAUSS-00500: "permission denied to create database" @@ -70,5 +70,5 @@ SQLSTATE: 42501 错误原因:当前用户角色没有权限创建数据库。 -解决办法:只有拥有CREATEDB权限的用户或系统管理员才可以创建新数据库,请确认用户权限是否正确。 +解决办法:只有拥有 CREATEDB 权限的用户或系统管理员才可以创建新数据库,请确认用户权限是否正确。 diff --git a/content/zh/docs/Developerguide/GAUSS-00501----GAUSS-00510.md b/content/zh/docs/Developerguide/GAUSS-00501----GAUSS-00510.md index a549ba71a..be3fc80e9 100644 --- a/content/zh/docs/Developerguide/GAUSS-00501----GAUSS-00510.md +++ b/content/zh/docs/Developerguide/GAUSS-00501----GAUSS-00510.md @@ -6,7 +6,7 @@ SQLSTATE: 3D000 错误原因:template1模板数据库不存在。 -解决办法:数据库系统存在异常导致模板数据库template1丢失,请重启数据库或者通过手动创建模板数据库template1。 +解决办法:数据库系统存在异常导致模板数据库 template1 丢失,请重启数据库或者通过手动创建模板数据库 template1 。 GAUSS-00502: "permission denied to copy database '%s'" @@ -14,15 +14,15 @@ SQLSTATE: 42501 错误原因:创建数据库语法中,如果原数据库不是模板数据库,当前用户角色没有权限创建数据库。 -解决办法:创建数据库语法中,如果原数据库不是模板数据库,只有拥有CREATEDB权限的用户或系统管理员才可以创建新数据库,请确认用户权限是否正确。 +解决办法:创建数据库语法中,如果原数据库不是模板数据库,只有拥有 CREATEDB 权限的用户或系统管理员才可以创建新数据库,请确认用户权限是否正确。 GAUSS-00503: "invalid server encoding %d" SQLSTATE: 42809 -错误原因:在创建数据库语法中,使用ENCODING encoding指定的编码格式无效。 +错误原因:在创建数据库语法中,使用 ENCODING encoding 指定的编码格式无效。 -解决办法:在创建数据库语法中,使用ENCODING encoding指定的编码格式必须出现在以下编码格式中:GBK、UTF8、Latin1 +解决办法:在创建数据库语法中,使用 ENCODING encoding 指定的编码格式必须出现在以下编码格式中:GBK、UTF8、Latin1 GAUSS-00504: "invalid locale name: '%s'" @@ -36,41 +36,41 @@ GAUSS-00505: "new encoding \(%s\) is incompatible with the encoding of the templ SQLSTATE: 22023 -错误原因:在创建数据库语法中,指定新数据库使用的字符编码与template0模板数据库的字符编码不匹配。 +错误原因:在创建数据库语法中,指定新数据库使用的字符编码与 template0 模板数据库的字符编码不匹配。 -解决办法:在创建数据库语法中,指定新数据库使用的字符编码与template0模板数据库的字符编码必须一致。请使用命令“show server\_encoding;”检查template0模板数据库的字符编码,并修改当前创建数据库指定的字符编码。 +解决办法:在创建数据库语法中,指定新数据库使用的字符编码与 template0 模板数据库的字符编码必须一致。请使用命令“show server\_encoding;”检查 template0 模板数据库的字符编码,并修改当前创建数据库指定的字符编码。 GAUSS-00506: "new collation \(%s\) is incompatible with the collation of the template database \(%s\)" SQLSTATE: 22023 -错误原因:在创建数据库语法中,指定新数据库使用的字符集与template0模板数据库的字符集不匹配。 +错误原因:在创建数据库语法中,指定新数据库使用的字符集与 template0 模板数据库的字符集不匹配。 -解决办法:在创建数据库语法中,指定新数据库使用的字符集与template0模板数据库的字符集必须一致,请使用命令“show lc\_collate;”检查template0模板数据库的字符集,并修改当前创建数据库指定的字符集。 +解决办法:在创建数据库语法中,指定新数据库使用的字符集与 template0 模板数据库的字符集必须一致,请使用命令“show lc\_collate;”检查 template0 模板数据库的字符集,并修改当前创建数据库指定的字符集。 GAUSS-00507: "new LC\_CTYPE \(%s\) is incompatible with the LC\_CTYPE of the template database \(%s\)" SQLSTATE: 22023 -错误原因:在创建数据库语法中,指定新数据库使用的字符分类与template0模板数据库的字符分类不匹配。 +错误原因:在创建数据库语法中,指定新数据库使用的字符分类与 template0 模板数据库的字符分类不匹配。 -解决办法:在创建数据库语法中,指定新数据库使用的字符分类与template0模板数据库的字符分类必须一致,请使用命令“show lc\_ctype;”检查template0模板数据库的字符分类,并修改当前创建数据库指定的字符分类。 +解决办法:在创建数据库语法中,指定新数据库使用的字符分类与 template0 模板数据库的字符分类必须一致,请使用命令“show lc\_ctype;”检查 template0 模板数据库的字符分类,并修改当前创建数据库指定的字符分类。 GAUSS-00508: "pg\_global cannot be used as default tablespace" SQLSTATE: 22023 -错误原因:在创建数据库语法中,指定新数据库使用缺省的表空间tablespace为pg\_global错误。 +错误原因:在创建数据库语法中,指定新数据库使用缺省的表空间 tablespace 为pg\_global错误。 -解决办法:在创建数据库语法中,指定新数据库使用缺省的表空间tablespace不能为pg\_global,目前只支持缺省的表空间。 +解决办法:在创建数据库语法中,指定新数据库使用缺省的表空间 tablespace 不能为pg\_global,目前只支持缺省的表空间。 GAUSS-00509: "cannot assign new default tablespace '%s'" SQLSTATE: 0A000 -错误原因:在创建数据库语法中,指定新数据库使用缺省的表空间tablespace为pg\_global错误。 +错误原因:在创建数据库语法中,指定新数据库使用缺省的表空间 tablespace 为pg\_global错误。 -解决办法:在创建数据库语法中,指定新数据库使用除缺省的表空间和全局表空间以外的其他表空间tablespace时,请确认该表空间所在目录是否为有效的目录,如果为无效目录,请创建一个有效的目录。 +解决办法:在创建数据库语法中,指定新数据库使用除缺省的表空间和全局表空间以外的其他表空间 tablespace 时,请确认该表空间所在目录是否为有效的目录,如果为无效目录,请创建一个有效的目录。 GAUSS-00510: "database '%s' already exists" diff --git a/content/zh/docs/Developerguide/GAUSS-00511----GAUSS-00520.md b/content/zh/docs/Developerguide/GAUSS-00511----GAUSS-00520.md index 9479bb882..b9cc111f0 100644 --- a/content/zh/docs/Developerguide/GAUSS-00511----GAUSS-00520.md +++ b/content/zh/docs/Developerguide/GAUSS-00511----GAUSS-00520.md @@ -28,9 +28,9 @@ GAUSS-00514: "cannot drop a template database" SQLSTATE: 42809 -错误原因:试图删除模板数据库template0或template1,为非法操作。 +错误原因:试图删除模板数据库 template0 或 template1 ,为非法操作。 -解决办法:系统默认模板数据库template0或template1不能被删除,请重新指定需要删除的数据库。 +解决办法:系统默认模板数据库 template0 或 template1 不能被删除,请重新指定需要删除的数据库。 GAUSS-00515: "cannot drop the currently open database" @@ -44,9 +44,9 @@ GAUSS-00516: "cannot drop the default database" SQLSTATE: 42809 -错误原因:试图删除系统缺省的默认数据库postgres,为无效操作。 +错误原因:试图删除系统缺省的默认数据库 postgres ,为无效操作。 -解决办法:系统缺省的默认数据库postgres不能被删除,请确认操作是否正确。 +解决办法:系统缺省的默认数据库 postgres 不能被删除,请确认操作是否正确。 GAUSS-00517: "database '%s' is being accessed by other users" diff --git a/content/zh/docs/Developerguide/GAUSS-00521----GAUSS-00530.md b/content/zh/docs/Developerguide/GAUSS-00521----GAUSS-00530.md index 66322a7a9..fa6ebe97b 100644 --- a/content/zh/docs/Developerguide/GAUSS-00521----GAUSS-00530.md +++ b/content/zh/docs/Developerguide/GAUSS-00521----GAUSS-00530.md @@ -4,7 +4,7 @@ GAUSS-00521: "cannot change the tablespace of the currently open database" SQLSTATE: 55006 -错误原因:通过ALTER DATABASE SET TABLESPACE语法修改数据库表空间时,该数据库正在被其他用户打开,不能执行当前操作。 +错误原因:通过 ALTER DATABASE SET TABLESPACE 语法修改数据库表空间时,该数据库正在被其他用户打开,不能执行当前操作。 解决办法:请确认当前待执行的修改数据库表空间操作中的数据库是否正在被其他用户打开,如果已被其他用户打开,请将数据库退出后再次尝试执行该操作。 @@ -12,7 +12,7 @@ GAUSS-00522: "some relations of database '%s' are already in tablespace '%s'" SQLSTATE: 55000 -错误原因:通过ALTER DATABASE SET TABLESPACE语法修改数据库表空间时,该数据库的表空间目录下已经存在表、索引、视图等关系对象,不能执行当前操作。 +错误原因:通过 ALTER DATABASE SET TABLESPACE 语法修改数据库表空间时,该数据库的表空间目录下已经存在表、索引、视图等关系对象,不能执行当前操作。 解决办法:请确认当前待执行的修改数据库表空间操作中的数据库中是否已经存在表、索引、试图等关系对象,需要先删除已存在的对象后再次尝试执行该操作。 @@ -28,9 +28,9 @@ GAUSS-00524: "permission denied to change owner of database" SQLSTATE: 42501 -错误原因:使用ALTER DATABASE name OWNER TO newowner语法修改数据库所有者时,当前用户没有权限执行该操作。 +错误原因:使用 ALTER DATABASE name OWNER TO newowner 语法修改数据库所有者时,当前用户没有权限执行该操作。 -解决办法:使用ALTER DATABASE name OWNER TO newowner语法修改数据库所有者时,请确认当前用户是否为数据库所有者权限的用户或管理员用户,其他用户没有权限执行该操作。 +解决办法:使用 ALTER DATABASE name OWNER TO newowner 语法修改数据库所有者时,请确认当前用户是否为数据库所有者权限的用户或管理员用户,其他用户没有权限执行该操作。 GAUSS-00526: "could not create directory '%s': %m" diff --git a/content/zh/docs/Developerguide/GAUSS-00531----GAUSS-00540.md b/content/zh/docs/Developerguide/GAUSS-00531----GAUSS-00540.md index 1f8a4cea5..7a933268e 100644 --- a/content/zh/docs/Developerguide/GAUSS-00531----GAUSS-00540.md +++ b/content/zh/docs/Developerguide/GAUSS-00531----GAUSS-00540.md @@ -12,9 +12,9 @@ GAUSS-00532: "tablespace location '%s' is too long" SQLSTATE: 42P17 -错误原因:使用CREATE TABLESPACE tablespace\_name ...LOCATION语法指定表空间目录长度超过了最大长度1024。 +错误原因:使用CREATE TABLESPACE tablespace\_name ...LOCATION语法指定表空间目录长度超过了最大长度 1024 。 -解决办法:使用CREATE TABLESPACE tablespace\_name ...LOCATION语法指定表空间目录时,位置信息字符串指定的目录长度必须小于系统规定的最大长度1024。 +解决办法:使用CREATE TABLESPACE tablespace\_name ...LOCATION语法指定表空间目录时,位置信息字符串指定的目录长度必须小于系统规定的最大长度 1024 。 GAUSS-00533: "unacceptable tablespace name '%s'" @@ -44,7 +44,7 @@ GAUSS-00536: "Tablespace '%s' does not exist." SQLSTATE: 42704 -错误原因:通过DROP TABLESPACE删除的表空间不存在。 +错误原因:通过 DROP TABLESPACE 删除的表空间不存在。 解决办法:请通过"\\db"查询待删除的表空间名称是否存在,系统只支持删除存在的表空间。 diff --git a/content/zh/docs/Developerguide/GAUSS-00541----GAUSS-00550.md b/content/zh/docs/Developerguide/GAUSS-00541----GAUSS-00550.md index 6f6057b6e..0e5d9056a 100644 --- a/content/zh/docs/Developerguide/GAUSS-00541----GAUSS-00550.md +++ b/content/zh/docs/Developerguide/GAUSS-00541----GAUSS-00550.md @@ -60,9 +60,9 @@ GAUSS-00549: "'%s' is an aggregate function" SQLSTATE: 42809 -错误原因:1.使用DROP FUNCTION删除聚集函数失败;2.使用ALTER FUNCTION修改聚集函数失败;3.pg\_get\_functiondef获取聚集函数定义失败。 +错误原因:1.使用 DROP FUNCTION 删除聚集函数失败;2.使用 ALTER FUNCTION 修改聚集函数失败;3.pg\_get\_functiondef获取聚集函数定义失败。 -解决办法:1.可以使用DROP AGGREGATE删除聚集函数;2.可以使用ALTER AGGREGATE修改聚集函数;3.可以查看系统表pg\_aggregate。 +解决办法:1.可以使用 DROP AGGREGATE 删除聚集函数;2.可以使用 ALTER AGGREGATE 修改聚集函数;3.可以查看系统表pg\_aggregate。 GAUSS-00550: "unexpected object type \(%d\)" diff --git a/content/zh/docs/Developerguide/GAUSS-00551----GAUSS-00560.md b/content/zh/docs/Developerguide/GAUSS-00551----GAUSS-00560.md index f6544a72d..af8bfc7ca 100644 --- a/content/zh/docs/Developerguide/GAUSS-00551----GAUSS-00560.md +++ b/content/zh/docs/Developerguide/GAUSS-00551----GAUSS-00560.md @@ -6,13 +6,13 @@ SQLSTATE: 42P22 错误原因:对于视图的列无法决策使用哪种排序规则。 -解决办法:使用COLLATE子句指定排序规则。 +解决办法:使用 COLLATE 子句指定排序规则。 GAUSS-00552: "view must have at least one column" SQLSTATE: 42P16 -错误原因:定义视图指定的列数少于1个。 +错误原因:定义视图指定的列数少于 1 个。 解决办法:定义视图至少需要包含一列。 @@ -60,9 +60,9 @@ GAUSS-00559: "views must not contain data-modifying statements in WITH" SQLSTATE: 0A000 -错误原因:定义视图语句中包含WITH子句。 +错误原因:定义视图语句中包含 WITH 子句。 -解决办法:保证获取结果的query是单SELECT语句。 +解决办法:保证获取结果的 query 是单 SELECT 语句。 GAUSS-00560: "CREATE VIEW specifies more column names than columns" diff --git a/content/zh/docs/Developerguide/GAUSS-00561----GAUSS-00570.md b/content/zh/docs/Developerguide/GAUSS-00561----GAUSS-00570.md index 3245e687c..ba6ee821f 100644 --- a/content/zh/docs/Developerguide/GAUSS-00561----GAUSS-00570.md +++ b/content/zh/docs/Developerguide/GAUSS-00561----GAUSS-00570.md @@ -4,9 +4,9 @@ GAUSS-00561: "views cannot be unlogged because they do not have storage" SQLSTATE: 42601 -错误原因:定义视图时指定为UNLOGGED。 +错误原因:定义视图时指定为 UNLOGGED 。 -解决办法:视图没有真正的存储,定义视图时不能指定为UNLOGGED。 +解决办法:视图没有真正的存储,定义视图时不能指定为 UNLOGGED 。 GAUSS-00562: "unrecognized value for EXPLAIN option '%s': '%s'" @@ -22,47 +22,47 @@ SQLSTATE: 42601 错误原因:EXPLAIN的参数无法识别。 -解决办法:EXPLAIN支持的参数包括:analyze、verbose、costs、buffers、nodes、num\_nodes、timing、CPU、detail、performance和format。 +解决办法:EXPLAIN支持的参数包括:analyze、verbose、costs、buffers、nodes、num\_nodes、timing、CPU、detail、performance和 format 。 GAUSS-00564: "EXPLAIN option BUFFERS requires ANALYZE" SQLSTATE: 22023 -错误原因:EXPLAIN BUFFERS没有同时指定ANALYZE。 +错误原因:EXPLAIN BUFFERS没有同时指定 ANALYZE 。 -解决办法:EXPLAIN BUFFERS需要同时指定ANALYZE。 +解决办法:EXPLAIN BUFFERS需要同时指定 ANALYZE 。 GAUSS-00565: "EXPLAIN option CPU requires ANALYZE" SQLSTATE: 22023 -错误原因:EXPLAIN CPU没有同时指定ANALYZE。 +错误原因:EXPLAIN CPU没有同时指定 ANALYZE 。 -解决办法:EXPLAIN CPU需要同时指定ANALYZE。 +解决办法:EXPLAIN CPU需要同时指定 ANALYZE 。 GAUSS-00566: "EXPLAIN option DETAIL requires ANALYZE" SQLSTATE: 22023 -错误原因:EXPLAIN DETAIL没有同时指定ANALYZE。 +错误原因:EXPLAIN DETAIL没有同时指定 ANALYZE 。 -解决办法:EXPLAIN DETAIL需要同时指定ANALYZE。 +解决办法:EXPLAIN DETAIL需要同时指定 ANALYZE 。 GAUSS-00567: "EXPLAIN option TIMING requires ANALYZE" SQLSTATE: 22023 -错误原因:EXPLAIN TIMING没有同时指定ANALYZE。 +错误原因:EXPLAIN TIMING没有同时指定 ANALYZE 。 -解决办法:EXPLAIN TIMING需要同时指定ANALYZE。 +解决办法:EXPLAIN TIMING需要同时指定 ANALYZE 。 GAUSS-00568: "EXPLAIN %s requires ANALYZE" SQLSTATE: 22023 -错误原因:EXPLAIN CREATE TABLE AS SELECT或EXPLAIN SELECT INTO没有指定ANALYZE。 +错误原因:EXPLAIN CREATE TABLE AS SELECT或 EXPLAIN SELECT INTO 没有指定 ANALYZE 。 -解决办法:EXPLAIN CREATE TABLE AS SELECT或EXPLAIN SELECT INTO需要指定ANALYZE。 +解决办法:EXPLAIN CREATE TABLE AS SELECT或 EXPLAIN SELECT INTO 需要指定 ANALYZE 。 GAUSS-00569: "no tlist entry for key %d" diff --git a/content/zh/docs/Developerguide/GAUSS-00571----GAUSS-00580.md b/content/zh/docs/Developerguide/GAUSS-00571----GAUSS-00580.md index 55c2f6b16..2a3338ed3 100644 --- a/content/zh/docs/Developerguide/GAUSS-00571----GAUSS-00580.md +++ b/content/zh/docs/Developerguide/GAUSS-00571----GAUSS-00580.md @@ -14,13 +14,13 @@ SQLSTATE: 39P01 错误原因:函数没有被触发器管理器调用。 -解决办法:保证函数作为AFTER ROW trigger被调用。 +解决办法:保证函数作为 AFTER ROW trigger 被调用。 GAUSS-00573: "function '%s' must be fired AFTER ROW" SQLSTATE: 39P01 -错误原因:函数在AFTER ROW触发器触发之前就被调用。 +错误原因:函数在 AFTER ROW 触发器触发之前就被调用。 解决办法:AFTER ROW触发器中的函数应该在触发器触发之后被调用。 @@ -36,7 +36,7 @@ GAUSS-00575: "Permission denied to create role with option UNENCRYPTED." SQLSTATE: XX000 -错误原因:CREATE ROLE指定参数UNENCRYPTED报错。 +错误原因:CREATE ROLE指定参数 UNENCRYPTED 报错。 解决办法:密码必须加密,禁止使用密码的明文。 diff --git a/content/zh/docs/Developerguide/GAUSS-00581----GAUSS-00590.md b/content/zh/docs/Developerguide/GAUSS-00581----GAUSS-00590.md index b97d6afec..ed65e4444 100644 --- a/content/zh/docs/Developerguide/GAUSS-00581----GAUSS-00590.md +++ b/content/zh/docs/Developerguide/GAUSS-00581----GAUSS-00590.md @@ -6,7 +6,7 @@ SQLSTATE: 42939 错误原因:用户名是保留关键字。 -解决办法:用户名不能是public或none。 +解决办法:用户名不能是 public 或 none 。 GAUSS-00582: "role '%s' already exists" @@ -22,7 +22,7 @@ SQLSTATE: XX000 错误原因:密码不符合复杂性要求。 -解决办法:请参照密码规则进行修改:1. 不能和用户名相同。2. 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为\~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/?)四类字符中的三类字符",且不少于8个字符。 +解决办法:请参照密码规则进行修改:1. 不能和用户名相同。2. 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为\~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/?)四类字符中的三类字符",且不少于 8 个字符。 GAUSS-00588: "The password could not be NULL." @@ -36,7 +36,7 @@ GAUSS-00589: "unacceptable user name: fail to create same name schema for user ' SQLSTATE: 42939 -错误原因:用户名非法,创建同名的schema失败。 +错误原因:用户名非法,创建同名的 schema 失败。 解决办法:用户名不能以'pg\_'开头,'pg\_'开头主要用作系统模式。 diff --git a/content/zh/docs/Developerguide/GAUSS-00601----GAUSS-00610.md b/content/zh/docs/Developerguide/GAUSS-00601----GAUSS-00610.md index 292c7cdd4..45fd957d1 100644 --- a/content/zh/docs/Developerguide/GAUSS-00601----GAUSS-00610.md +++ b/content/zh/docs/Developerguide/GAUSS-00601----GAUSS-00610.md @@ -28,7 +28,7 @@ GAUSS-00606: "The role's password is null in pg\_authid, REPLACE should not be s SQLSTATE: XX000 -错误原因:修改密码失败,用户未指定密码,不能指定REPLACE。 +错误原因:修改密码失败,用户未指定密码,不能指定 REPLACE 。 解决办法:请指定密码。 diff --git a/content/zh/docs/Developerguide/GAUSS-00611----GAUSS-00620.md b/content/zh/docs/Developerguide/GAUSS-00611----GAUSS-00620.md index bb39f2208..c918b4c05 100644 --- a/content/zh/docs/Developerguide/GAUSS-00611----GAUSS-00620.md +++ b/content/zh/docs/Developerguide/GAUSS-00611----GAUSS-00620.md @@ -4,7 +4,7 @@ GAUSS-00611: "fail to drop the current schema" SQLSTATE: 55006 -错误原因:DROP ROLE失败,删除当前schema失败。 +错误原因:DROP ROLE失败,删除当前 schema 失败。 解决办法:不能删除当前用户。 diff --git a/content/zh/docs/Developerguide/GAUSS-00621----GAUSS-00630.md b/content/zh/docs/Developerguide/GAUSS-00621----GAUSS-00630.md index db331be21..3e3929c98 100644 --- a/content/zh/docs/Developerguide/GAUSS-00621----GAUSS-00630.md +++ b/content/zh/docs/Developerguide/GAUSS-00621----GAUSS-00630.md @@ -28,9 +28,9 @@ GAUSS-00625: "must have admin option on role '%s'" SQLSTATE: 42501 -错误原因:系统管理员用户却不具有SYSADMIN属性。 +错误原因:系统管理员用户却不具有 SYSADMIN 属性。 -解决办法:创建系统管理员用户时,请指定SYSADMIN属性。 +解决办法:创建系统管理员用户时,请指定 SYSADMIN 属性。 GAUSS-00626: "must be system admin to set grantor" @@ -54,15 +54,15 @@ SQLSTATE: 3F000 错误原因:schema不存在。 -解决办法:检查schema是否存在。 +解决办法:检查 schema 是否存在。 GAUSS-00629: "cannot cancel current session's query" SQLSTATE: 42601 -错误原因:cancel当前session的查询失败。 +错误原因:cancel当前 session 的查询失败。 -解决办法:检查是否当前session对用户拥有的对象进行加锁。 +解决办法:检查是否当前 session 对用户拥有的对象进行加锁。 GAUSS-00630: "md5-password encryption failed." diff --git a/content/zh/docs/Developerguide/GAUSS-00631----GAUSS-00640.md b/content/zh/docs/Developerguide/GAUSS-00631----GAUSS-00640.md index 630bf053a..e11e3d799 100644 --- a/content/zh/docs/Developerguide/GAUSS-00631----GAUSS-00640.md +++ b/content/zh/docs/Developerguide/GAUSS-00631----GAUSS-00640.md @@ -1,74 +1,74 @@ -# GAUSS-00631 -- GAUSS-00640 - -GAUSS-00631: "sha256-password encryption failed." - -SQLSTATE: XX000 - -错误原因:SHA256加密失败。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-00633: "Password must contain at least %d upper characters." - -SQLSTATE: 28P01 - -错误原因:密码应至少包含由GUC参数password\_min\_uppercase指定个数的大写字母。 - -解决办法:在密码中添加大写字母以满足参数要求。 - -GAUSS-00634: "Password must contain at least %d lower characters." - -SQLSTATE: 28P01 - -错误原因:密码应至少包含由GUC参数password\_min\_lowercase指定个数的小写字母。 - -解决办法:在密码中添加小写字母以满足参数要求。 - -GAUSS-00635: "Password must contain at least %d digital characters." - -SQLSTATE: 28P01 - -错误原因:密码应至少包含由GUC参数password\_min\_digital指定个数的数字。 - -解决办法:在密码中添加数字以满足参数要求。 - -GAUSS-00636: "Password must contain at least %d special characters." - -SQLSTATE: 28P01 - -错误原因:密码应至少包含由GUC参数password\_min\_special指定个数的特殊字符。 - -解决办法:在密码中添加特殊字符以满足参数要求。 - -GAUSS-00637: "Password must contain at least three kinds of characters." - -SQLSTATE: 28P01 - -错误原因:密码包含的字符类型少于3种。 - -解决办法:请参照密码规则进行修改:1. 密码默认不少于8个字符。2. 不能和用户名相同。3. 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为\~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/?)四类字符中的三类字符。 - -GAUSS-00638: "The parameter roleID of CheckPasswordComplexity is NULL" - -SQLSTATE: XX000 - -错误原因:密码复杂性检查失败,roleID为空。 - -解决办法:roleID不能为空。 - -GAUSS-00639: "The parameter newPasswd of CheckPasswordComplexity is NULL" - -SQLSTATE: XX000 - -错误原因:密码复杂性检查失败,新密码为空。 - -解决办法:新密码不能为空,请重新输入。 - -GAUSS-00640: "Password should not equal to the rolname." - -SQLSTATE: XX000 - -错误原因:新密码和用户名相同。 - -解决办法:不允许密码和用户名相同。请重新选择符合要求的密码。 - +# GAUSS-00631 -- GAUSS-00640 + +GAUSS-00631: "sha256-password encryption failed." + +SQLSTATE: XX000 + +错误原因:SHA256加密失败。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-00633: "Password must contain at least %d upper characters." + +SQLSTATE: 28P01 + +错误原因:密码应至少包含由 GUC 参数password\_min\_uppercase指定个数的大写字母。 + +解决办法:在密码中添加大写字母以满足参数要求。 + +GAUSS-00634: "Password must contain at least %d lower characters." + +SQLSTATE: 28P01 + +错误原因:密码应至少包含由 GUC 参数password\_min\_lowercase指定个数的小写字母。 + +解决办法:在密码中添加小写字母以满足参数要求。 + +GAUSS-00635: "Password must contain at least %d digital characters." + +SQLSTATE: 28P01 + +错误原因:密码应至少包含由 GUC 参数password\_min\_digital指定个数的数字。 + +解决办法:在密码中添加数字以满足参数要求。 + +GAUSS-00636: "Password must contain at least %d special characters." + +SQLSTATE: 28P01 + +错误原因:密码应至少包含由 GUC 参数password\_min\_special指定个数的特殊字符。 + +解决办法:在密码中添加特殊字符以满足参数要求。 + +GAUSS-00637: "Password must contain at least three kinds of characters." + +SQLSTATE: 28P01 + +错误原因:密码包含的字符类型少于 3 种。 + +解决办法:请参照密码规则进行修改:1. 密码默认不少于 8 个字符。2. 不能和用户名相同。3. 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为\~!@\#$%^&\*\(\)-\_=+\\|\[\{\}\];:,<.\>/?)四类字符中的三类字符。 + +GAUSS-00638: "The parameter roleID of CheckPasswordComplexity is NULL" + +SQLSTATE: XX000 + +错误原因:密码复杂性检查失败, roleID 为空。 + +解决办法:roleID不能为空。 + +GAUSS-00639: "The parameter newPasswd of CheckPasswordComplexity is NULL" + +SQLSTATE: XX000 + +错误原因:密码复杂性检查失败,新密码为空。 + +解决办法:新密码不能为空,请重新输入。 + +GAUSS-00640: "Password should not equal to the rolname." + +SQLSTATE: XX000 + +错误原因:新密码和用户名相同。 + +解决办法:不允许密码和用户名相同。请重新选择符合要求的密码。 + diff --git a/content/zh/docs/Developerguide/GAUSS-00641----GAUSS-00650.md b/content/zh/docs/Developerguide/GAUSS-00641----GAUSS-00650.md index 5ce3a9db8..e3c4942c7 100644 --- a/content/zh/docs/Developerguide/GAUSS-00641----GAUSS-00650.md +++ b/content/zh/docs/Developerguide/GAUSS-00641----GAUSS-00650.md @@ -6,7 +6,7 @@ SQLSTATE: XX000 错误原因:密码字符串反转失败。 -解决办法:内部错误,检查是否发生OOM。 +解决办法:内部错误,检查是否发生 OOM 。 GAUSS-00644: "New password should not equal to the reverse of old ones." @@ -46,7 +46,7 @@ SQLSTATE: XX000 错误原因:roleid无效。 -解决办法:检查roleid是否合法。 +解决办法:检查 roleid 是否合法。 GAUSS-00649: "Permission denied." @@ -60,7 +60,7 @@ GAUSS-00650: "TryLockAccount\(\): parameter extrafails is less than zero." SQLSTATE: XX000 -错误原因:参数extrafails小于0。 +错误原因:参数 extrafails 小于 0 。 -解决办法:保证参数extrafails不小于0。 +解决办法:保证参数 extrafails 不小于 0 。 diff --git a/content/zh/docs/Developerguide/GAUSS-00651----GAUSS-00660.md b/content/zh/docs/Developerguide/GAUSS-00651----GAUSS-00660.md index 02bf2d6fa..139a326ef 100644 --- a/content/zh/docs/Developerguide/GAUSS-00651----GAUSS-00660.md +++ b/content/zh/docs/Developerguide/GAUSS-00651----GAUSS-00660.md @@ -14,7 +14,7 @@ SQLSTATE: XX000 错误原因:roleid无效。 -解决办法:检查roleid是否合法。 +解决办法:检查 roleid 是否合法。 GAUSS-00653: "IsAccountLocked\(\): roleid is not valid." @@ -22,7 +22,7 @@ SQLSTATE: XX000 错误原因:roleid无效。 -解决办法:检查roleid是否合法。 +解决办法:检查 roleid 是否合法。 GAUSS-00654: "getAccountLockedStyle: roleid is not valid." @@ -38,7 +38,7 @@ SQLSTATE: XX000 错误原因:roleid无效。 -解决办法:检查roleid是否合法。 +解决办法:检查 roleid 是否合法。 GAUSS-00656: "Invalid username/password,login denied." @@ -52,7 +52,7 @@ GAUSS-00657: "User's passwordtime in pg\_auth\_history is 0." SQLSTATE: 28P01 -错误原因:pg\_auth\_history中对应用户的passwordtime为空。 +错误原因:pg\_auth\_history中对应用户的 passwordtime 为空。 解决办法:此列理论上不会为空,若出现问题,请联系技术支持工程师提供技术支持。 @@ -60,23 +60,23 @@ GAUSS-00658: "aggregate stype must be specified" SQLSTATE: 42P13 -错误原因:聚集函数定义时stype没有指定。 +错误原因:聚集函数定义时 stype 没有指定。 -解决办法:聚集函数定义时必须指定stype。 +解决办法:聚集函数定义时必须指定 stype 。 GAUSS-00659: "aggregate sfunc must be specified" SQLSTATE: 42P13 -错误原因:聚集函数定义时sfunc没有指定。 +错误原因:聚集函数定义时 sfunc 没有指定。 -解决办法:聚集函数定义时必须指定sfunc。 +解决办法:聚集函数定义时必须指定 sfunc 。 GAUSS-00660: "aggregate input type must be specified" SQLSTATE: 42P13 -错误原因:聚集函数定义时input type没有指定。 +错误原因:聚集函数定义时 input type 没有指定。 -解决办法:聚集函数定义时必须指定input type。 +解决办法:聚集函数定义时必须指定 input type 。 diff --git a/content/zh/docs/Developerguide/GAUSS-00661----GAUSS-00670.md b/content/zh/docs/Developerguide/GAUSS-00661----GAUSS-00670.md index 33eade869..c1ceffe15 100644 --- a/content/zh/docs/Developerguide/GAUSS-00661----GAUSS-00670.md +++ b/content/zh/docs/Developerguide/GAUSS-00661----GAUSS-00670.md @@ -6,7 +6,7 @@ SQLSTATE: 42P13 错误原因:聚集函数定义时参数发生冗余。 -解决办法:pg8.2之后使用新风格定的聚集函数,不用再指定basetype来表述输入类型。 +解决办法:pg8.2之后使用新风格定的聚集函数,不用再指定 basetype 来表述输入类型。 GAUSS-00662: "aggregate transition data type cannot be %s" @@ -14,7 +14,7 @@ SQLSTATE: 42P13 错误原因:聚集函数转换的数据类型有误。 -解决办法:转换类型不能为pseudo-type,对于初始用户转换类型可以为internal。 +解决办法:转换类型不能为pseudo-type,对于初始用户转换类型可以为 internal 。 GAUSS-00663: "function %s already exists in schema '%s'" @@ -30,7 +30,7 @@ SQLSTATE: XX000 错误原因:不支持的特性。 -解决办法:列存表不支持继承和CREATE TABLE OF TYPENAME,检查表定义语句。 +解决办法:列存表不支持继承和 CREATE TABLE OF TYPENAME ,检查表定义语句。 GAUSS-00665: "column store unsupport constraint '%s'" @@ -76,7 +76,7 @@ GAUSS-00670: "only shared relations can be placed in pg\_global tablespace" SQLSTATE: 22023 -错误原因:用户定义的relation不能置于pg\_global表空间下。 +错误原因:用户定义的 relation 不能置于pg\_global表空间下。 -解决办法:只有共享的relation可以置于pg\_global表空间下。 +解决办法:只有共享的 relation 可以置于pg\_global表空间下。 diff --git a/content/zh/docs/Developerguide/GAUSS-00671----GAUSS-00680.md b/content/zh/docs/Developerguide/GAUSS-00671----GAUSS-00680.md index 378dd6761..2607badc4 100644 --- a/content/zh/docs/Developerguide/GAUSS-00671----GAUSS-00680.md +++ b/content/zh/docs/Developerguide/GAUSS-00671----GAUSS-00680.md @@ -28,17 +28,17 @@ GAUSS-00676: "DROP INDEX CONCURRENTLY does not support CASCADE" SQLSTATE: 0A000 -错误原因:DROP INDEX CONCURRENTLY语句指定CASCADE。 +错误原因:DROP INDEX CONCURRENTLY语句指定 CASCADE 。 -解决办法:DROP INDEX CONCURRENTLY语句不支持指定CASCADE。 +解决办法:DROP INDEX CONCURRENTLY语句不支持指定 CASCADE 。 GAUSS-00677: "unrecognized drop object type: %d" SQLSTATE: XX000 -错误原因:对象drop类型不支持。 +错误原因:对象 drop 类型不支持。 -解决办法:检查对象drop类型是否支持。 +解决办法:检查对象 drop 类型是否支持。 GAUSS-00678: "permission denied: '%s' is a system catalog" @@ -52,7 +52,7 @@ GAUSS-00679: "PGXC does not support RESTART IDENTITY yet" SQLSTATE: 0A000 -错误原因:TRUNCATE语句指定RESTART IDENTITY。 +错误原因:TRUNCATE语句指定 RESTART IDENTITY 。 -解决办法:暂时不支持TRUNCATE语句指定RESTART IDENTITY。 +解决办法:暂时不支持 TRUNCATE 语句指定 RESTART IDENTITY 。 diff --git a/content/zh/docs/Developerguide/GAUSS-00681----GAUSS-00690.md b/content/zh/docs/Developerguide/GAUSS-00681----GAUSS-00690.md index 1bda2a134..c7dffb4bf 100644 --- a/content/zh/docs/Developerguide/GAUSS-00681----GAUSS-00690.md +++ b/content/zh/docs/Developerguide/GAUSS-00681----GAUSS-00690.md @@ -12,17 +12,17 @@ GAUSS-00682: "cannot truncate temporary tables of other sessions" SQLSTATE: 0A000 -错误原因:truncate其他session的临时表。 +错误原因:truncate其他 session 的临时表。 -解决办法:请勿truncate其他session的临时表。 +解决办法:请勿 truncate 其他 session 的临时表。 GAUSS-00683: "tables can have at most %d columns" SQLSTATE: 54011 -错误原因:表超过1600列。 +错误原因:表超过 1600 列。 -解决办法:表最多拥有1600列。 +解决办法:表最多拥有 1600 列。 GAUSS-00684: "cannot inherit from temporary relation '%s'" @@ -30,7 +30,7 @@ SQLSTATE: 42809 错误原因:继承临时表。 -解决办法:临时表仅当前session可见,请勿继承临时表。 +解决办法:临时表仅当前 session 可见,请勿继承临时表。 GAUSS-00685: "cannot inherit from temporary relation of another session" @@ -38,7 +38,7 @@ SQLSTATE: 42809 错误原因:继承临时表。 -解决办法:临时表仅当前session可见,请勿继承临时表。 +解决办法:临时表仅当前 session 可见,请勿继承临时表。 GAUSS-00686: "relation '%s' would be inherited from more than once" diff --git a/content/zh/docs/Developerguide/GAUSS-00691----GAUSS-00700.md b/content/zh/docs/Developerguide/GAUSS-00691----GAUSS-00700.md index 85b505cc7..92670abcd 100644 --- a/content/zh/docs/Developerguide/GAUSS-00691----GAUSS-00700.md +++ b/content/zh/docs/Developerguide/GAUSS-00691----GAUSS-00700.md @@ -28,19 +28,19 @@ GAUSS-00694: "check constraint name '%s' appears multiple times but with differe SQLSTATE: 42710 -错误原因:不同表达式的check约束名出现多次。 +错误原因:不同表达式的 check 约束名出现多次。 -解决办法:检查不同表达式的check约束名是否出现多次。 +解决办法:检查不同表达式的 check 约束名是否出现多次。 GAUSS-00695: "cannot rename column of typed table" SQLSTATE: 42809 -错误原因:对type进行更名操作。 +错误原因:对 type 进行更名操作。 -解决办法:不能修改type的列名。 +解决办法:不能修改 type 的列名。 -GAUSS-00696: "'%s' is not a table, view, composite type, index, or foreign table" +GAUSS-00696: "'%s' is not a table, view , composite type , index , or foreign table" SQLSTATE: 42809 diff --git a/content/zh/docs/Developerguide/GAUSS-00701----GAUSS-00710.md b/content/zh/docs/Developerguide/GAUSS-00701----GAUSS-00710.md index f5cc77034..e5ef544f0 100644 --- a/content/zh/docs/Developerguide/GAUSS-00701----GAUSS-00710.md +++ b/content/zh/docs/Developerguide/GAUSS-00701----GAUSS-00710.md @@ -14,15 +14,15 @@ SQLSTATE: 42P07 错误原因:relation已存在。 -解决办法:检查是否存在重名的relation。 +解决办法:检查是否存在重名的 relation 。 GAUSS-00703: "GTM error, could not rename sequence" SQLSTATE: 08006 -错误原因:GTM出错,GTM中重名失败。 +错误原因:GTM出错, GTM 中重名失败。 -解决办法:请使用gs\_om -t status --detail命令检查GTM是否状态正常。 +解决办法:请使用gs\_om -t status --detail命令检查 GTM 是否状态正常。 GAUSS-00706: "partition '%s' of relation '%s' already exists" @@ -36,7 +36,7 @@ GAUSS-00710: "cache lookup failed for partition %u of relation %u" SQLSTATE: 42704 -错误原因:提示的partition查找失败。 +错误原因:提示的 partition 查找失败。 解决办法:系统异常,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-00711----GAUSS-00720.md b/content/zh/docs/Developerguide/GAUSS-00711----GAUSS-00720.md index dc9278d10..9da1335a3 100644 --- a/content/zh/docs/Developerguide/GAUSS-00711----GAUSS-00720.md +++ b/content/zh/docs/Developerguide/GAUSS-00711----GAUSS-00720.md @@ -38,31 +38,31 @@ SQLSTATE: 54001 错误原因:ALTER操作与数据重分布不兼容。 -解决办法:使用与数据重分布兼容的ALTER操作。 +解决办法:使用与数据重分布兼容的 ALTER 操作。 GAUSS-00716: "cannot set with oids on partitioned table" SQLSTATE: 0A000 -错误原因:修改分区表的oids。 +错误原因:修改分区表的 oids 。 -解决办法:请勿修改分区表的oids。 +解决办法:请勿修改分区表的 oids 。 GAUSS-00717: "cannot set without oids on partitioned table" SQLSTATE: 0A000 -错误原因:修改分区表的oids。 +错误原因:修改分区表的 oids 。 -解决办法:请勿修改分区表的oids。 +解决办法:请勿修改分区表的 oids 。 GAUSS-00718: "cannot rewrite temporary tables of other sessions" SQLSTATE: 0A000 -错误原因:重写其他session的临时表。 +错误原因:重写其他 session 的临时表。 -解决办法:请勿重写其他session的临时表。 +解决办法:请勿重写其他 session 的临时表。 GAUSS-00719: "cannot rewrite system relation '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-00721----GAUSS-00730.md b/content/zh/docs/Developerguide/GAUSS-00721----GAUSS-00730.md index a842a8bff..f01d79f3c 100644 --- a/content/zh/docs/Developerguide/GAUSS-00721----GAUSS-00730.md +++ b/content/zh/docs/Developerguide/GAUSS-00721----GAUSS-00730.md @@ -12,9 +12,9 @@ GAUSS-00722: "check constraint '%s' is violated by some row" SQLSTATE: 23514 -错误原因:一些行违反了check约束。 +错误原因:一些行违反了 check 约束。 -解决办法:检查是否存在check约束冲突。 +解决办法:检查是否存在 check 约束冲突。 GAUSS-00723: "cannot alter type '%s' because column '%s.%s' uses it" @@ -44,9 +44,9 @@ GAUSS-00726: "cannot alter type '%s' because it is the type of a typed table" SQLSTATE: 2BP01 -错误原因:修改类型失败,它是一个type表的类型。 +错误原因:修改类型失败,它是一个 type 表的类型。 -解决办法:使用ALTER ... CASCADE同时修改type表。 +解决办法:使用ALTER ... CASCADE同时修改 type 表。 GAUSS-00727: "type %s is not a composite type" diff --git a/content/zh/docs/Developerguide/GAUSS-00731----GAUSS-00740.md b/content/zh/docs/Developerguide/GAUSS-00731----GAUSS-00740.md index 4ed912d61..494c22050 100644 --- a/content/zh/docs/Developerguide/GAUSS-00731----GAUSS-00740.md +++ b/content/zh/docs/Developerguide/GAUSS-00731----GAUSS-00740.md @@ -4,33 +4,33 @@ GAUSS-00731: "child table '%s' has different type for column '%s'" SQLSTATE: 42804 -错误原因:AddColumn操作时,向parent添加一列,检测到child table与添加列有相同的列名,但是类型不一样,本操作不能执行。 +错误原因:AddColumn操作时,向 parent 添加一列,检测到 child table 与添加列有相同的列名,但是类型不一样,本操作不能执行。 -解决办法:建议修改添加列类型,使其与child table有相同的类型。 +解决办法:建议修改添加列类型,使其与 child table 有相同的类型。 GAUSS-00732: "child table '%s' has different collation for column '%s'" SQLSTATE: 42P21 -错误原因:AddColumn操作时,向parent添加一列,检测到child table与添加列有相同的列名,但是排序方式\(collation\)不一样,本操作不能执行。 +错误原因:AddColumn操作时,向 parent 添加一列,检测到 child table 与添加列有相同的列名,但是排序方式\(collation\)不一样,本操作不能执行。 -解决办法:建议修改添加列排序方式\(collation\),使其与child table有相同的排序方式。 +解决办法:建议修改添加列排序方式\(collation\),使其与 child table 有相同的排序方式。 GAUSS-00733: "child table '%s' has a conflicting '%s' column" SQLSTATE: 42804 -错误原因:AddColumn操作时,向parent添加一列,检测到child table与添加列有相同的列名,child table与新添加列冲突,本操作不能执行。 +错误原因:AddColumn操作时,向 parent 添加一列,检测到 child table 与添加列有相同的列名, child table 与新添加列冲突,本操作不能执行。 -解决办法:建议修改添加列,避免与child table发生冲突。 +解决办法:建议修改添加列,避免与 child table 发生冲突。 GAUSS-00735: "column must be added to child tables too" SQLSTATE: 42P16 -错误原因:AddColumn操作时,向parent table添加一列,新添列必须添加到child table中,否则不能执行。 +错误原因:AddColumn操作时,向 parent table 添加一列,新添列必须添加到 child table 中,否则不能执行。 -解决办法:建议将向parent table新添列递归的添加到child table中。 +解决办法:建议将向 parent table 新添列递归的添加到 child table 中。 GAUSS-00736: "column '%s' of relation '%s' already exists" @@ -56,7 +56,7 @@ SQLSTATE: 42P16 解决办法:建议取消本操作,表的主键不能被修改。 -GAUSS-00739: "'%s' is not a table, index, or foreign table" +GAUSS-00739: "'%s' is not a table, index , or foreign table" SQLSTATE: 42809 diff --git a/content/zh/docs/Developerguide/GAUSS-00741----GAUSS-00750.md b/content/zh/docs/Developerguide/GAUSS-00741----GAUSS-00750.md index e3a8a3006..fad52a9fd 100644 --- a/content/zh/docs/Developerguide/GAUSS-00741----GAUSS-00750.md +++ b/content/zh/docs/Developerguide/GAUSS-00741----GAUSS-00750.md @@ -12,9 +12,9 @@ GAUSS-00742: "column data type %s can only have storage PLAIN" SQLSTATE: 0A000 -错误原因:ALTER TABLE ALTER COLUMN SET STORAGE操作时,列存储类型只能设置为PLAIN类型。 +错误原因:ALTER TABLE ALTER COLUMN SET STORAGE操作时,列存储类型只能设置为 PLAIN 类型。 -解决办法:将建议将列数据存储类型设置PLAIN类型。 +解决办法:将建议将列数据存储类型设置 PLAIN 类型。 GAUSS-00743: "cannot drop column from typed table" @@ -52,7 +52,7 @@ GAUSS-00749: "index '%s' is not unique" SQLSTATE: XX000 -错误原因:添加unique约束涉及的index不带unique属性。 +错误原因:添加 unique 约束涉及的 index 不带 unique 属性。 解决办法:系统异常,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-00751----GAUSS-00760.md b/content/zh/docs/Developerguide/GAUSS-00751----GAUSS-00760.md index b2734f8ce..85b6a5e98 100644 --- a/content/zh/docs/Developerguide/GAUSS-00751----GAUSS-00760.md +++ b/content/zh/docs/Developerguide/GAUSS-00751----GAUSS-00760.md @@ -4,7 +4,7 @@ GAUSS-00751: "cluster key for relation '%s' already exists" SQLSTATE: 42710 -错误原因:ALTER TABLE ADD CONSTRAINT操作时,关系表的cluster key已经存在,不能执行。 +错误原因:ALTER TABLE ADD CONSTRAINT操作时,关系表的 cluster key 已经存在,不能执行。 解决办法:新增约束已经存在,建议更改新增约束。 @@ -36,9 +36,9 @@ GAUSS-00756: "constraints on unlogged tables may reference only permanent or unl SQLSTATE: 42P16 -错误原因:unlogged表的外键约束限制只能参照普通表或unlogged表。 +错误原因:unlogged表的外键约束限制只能参照普通表或 unlogged 表。 -解决办法:unlogged表的约束限制只能参照普通表或unlogged表。 +解决办法:unlogged表的约束限制只能参照普通表或 unlogged 表。 GAUSS-00757: "constraints on temporary tables may reference only temporary tables" diff --git a/content/zh/docs/Developerguide/GAUSS-00761----GAUSS-00770.md b/content/zh/docs/Developerguide/GAUSS-00761----GAUSS-00770.md index a8d4f1c3a..d57908f97 100644 --- a/content/zh/docs/Developerguide/GAUSS-00761----GAUSS-00770.md +++ b/content/zh/docs/Developerguide/GAUSS-00761----GAUSS-00770.md @@ -36,7 +36,7 @@ GAUSS-00765: "constraint '%s' of relation '%s' is not a foreign key or check con SQLSTATE: 42809 -错误原因:ALTER TABLE VALIDATE CONSTRAINT操作时,该关系约束不是外键或CHECK CONSTRAINT。 +错误原因:ALTER TABLE VALIDATE CONSTRAINT操作时,该关系约束不是外键或 CHECK CONSTRAINT 。 解决办法:建议更改此操作,或取消本操作。 @@ -44,9 +44,9 @@ GAUSS-00766: "constraint must be validated on child tables too" SQLSTATE: 42P16 -错误原因:ALTER TABLE VALIDATE CONSTRAINT操作时,parent table添加的约束同样应添加到child table上。 +错误原因:ALTER TABLE VALIDATE CONSTRAINT操作时, parent table 添加的约束同样应添加到 child table 上。 -解决办法:建议对parent table添加的约束同样添加到child table上。 +解决办法:建议对 parent table 添加的约束同样添加到 child table 上。 GAUSS-00767: "column '%s' referenced in foreign key constraint does not exist" @@ -60,7 +60,7 @@ GAUSS-00768: "cannot have more than %d keys in a foreign key" SQLSTATE: 54011 -错误原因:外键的参照列数目超过32。 +错误原因:外键的参照列数目超过 32 。 解决办法:建议限制外键参照列的数目。 @@ -68,7 +68,7 @@ GAUSS-00769: "cannot use a deferrable primary key for referenced table '%s'" SQLSTATE: 55000 -错误原因:GetPrimaryKey操作,deferrable primary key不能执行此操作。 +错误原因:GetPrimaryKey操作, deferrable primary key 不能执行此操作。 解决办法:建议取消本操作。 diff --git a/content/zh/docs/Developerguide/GAUSS-00771----GAUSS-00780.md b/content/zh/docs/Developerguide/GAUSS-00771----GAUSS-00780.md index 8e87d47c8..0c9e5383e 100644 --- a/content/zh/docs/Developerguide/GAUSS-00771----GAUSS-00780.md +++ b/content/zh/docs/Developerguide/GAUSS-00771----GAUSS-00780.md @@ -4,7 +4,7 @@ GAUSS-00771: "cannot use a deferrable unique constraint for referenced table '%s SQLSTATE: 55000 -错误原因:外键不能依赖deferrable unique constraint。 +错误原因:外键不能依赖 deferrable unique constraint 。 解决办法:建议更改外键依赖。 diff --git a/content/zh/docs/Developerguide/GAUSS-00781----GAUSS-00790.md b/content/zh/docs/Developerguide/GAUSS-00781----GAUSS-00790.md index b2cd204f4..87e635189 100644 --- a/content/zh/docs/Developerguide/GAUSS-00781----GAUSS-00790.md +++ b/content/zh/docs/Developerguide/GAUSS-00781----GAUSS-00790.md @@ -28,15 +28,15 @@ GAUSS-00786: "cannot use window function in transform expression" SQLSTATE: 42P20 -错误原因:ALTER COLUMN TYPE操作,转换表达式不能使用window函数。 +错误原因:ALTER COLUMN TYPE操作,转换表达式不能使用 window 函数。 -解决办法:转换表达式不支持window函数,建议更改本操作。 +解决办法:转换表达式不支持 window 函数,建议更改本操作。 GAUSS-00788: "type of inherited column '%s' must be changed in child tables too" SQLSTATE: 42P16 -错误原因:ALTER COLUMN TYPE操作,当parent table列的类型改变时,child table列类型也要随之改变。 +错误原因:ALTER COLUMN TYPE操作,当 parent table 列的类型改变时, child table 列类型也要随之改变。 解决办法:建议语句中指明子表随父表的变化递归变化。 diff --git a/content/zh/docs/Developerguide/GAUSS-00791----GAUSS-00800.md b/content/zh/docs/Developerguide/GAUSS-00791----GAUSS-00800.md index b68da124c..fff724d2a 100644 --- a/content/zh/docs/Developerguide/GAUSS-00791----GAUSS-00800.md +++ b/content/zh/docs/Developerguide/GAUSS-00791----GAUSS-00800.md @@ -78,5 +78,5 @@ SQLSTATE: XX000 错误原因:表更改语句的子类型异常。 -解决办法:请检查SQL语句是否支持。 +解决办法:请检查 SQL 语句是否支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-00801----GAUSS-00810.md b/content/zh/docs/Developerguide/GAUSS-00801----GAUSS-00810.md index 10d6cea6a..2b0c2ee48 100644 --- a/content/zh/docs/Developerguide/GAUSS-00801----GAUSS-00810.md +++ b/content/zh/docs/Developerguide/GAUSS-00801----GAUSS-00810.md @@ -20,7 +20,7 @@ GAUSS-00803: "cannot change owner of sequence '%s'" SQLSTATE: 0A000 -错误原因:ALTER TABLE OWNER操作,sequence的所属者不能更改其所属者。 +错误原因:ALTER TABLE OWNER操作, sequence 的所属者不能更改其所属者。 解决办法:sequence所属者自己不能更改其所属者,建议取消本操作。 @@ -32,7 +32,7 @@ SQLSTATE: 42809 解决办法:不能更改复合类型的所属者,建议取消本操作。 -GAUSS-00805: "'%s' is not a table, view, sequence, or foreign table" +GAUSS-00805: "'%s' is not a table, view , sequence , or foreign table" SQLSTATE: 42809 @@ -46,21 +46,21 @@ SQLSTATE: 42704 错误原因:ALTER TABLE CLUSTER ON操作,表的索引不存在。 -解决办法:表的索引不存在无法设置Cluster,建议更改本操作。 +解决办法:表的索引不存在无法设置 Cluster ,建议更改本操作。 GAUSS-00807: "cannot have multiple SET TABLESPACE subcommands" SQLSTATE: 42601 -错误原因:ALTER TABLE SET TABLESPACE操作,不能有多条SET TABLESPACE子命令。 +错误原因:ALTER TABLE SET TABLESPACE操作,不能有多条 SET TABLESPACE 子命令。 -解决办法:不支持多条SET TABLESPACE子命令,建议更改本操作。 +解决办法:不支持多条 SET TABLESPACE 子命令,建议更改本操作。 GAUSS-00808: "relkind of psort tuple shouldn't be '%c'." SQLSTATE: XX000 -错误原因:设置psort参数涉及的表类型不对。 +错误原因:设置 psort 参数涉及的表类型不对。 解决办法:检查表类型是否为列存表。 @@ -68,7 +68,7 @@ GAUSS-00809: "psort tuple doesn't have the correct ORIENTATION value." SQLSTATE: XX000 -错误原因:设置psort参数涉及的表类型不对。 +错误原因:设置 psort 参数涉及的表类型不对。 解决办法:检查表类型是否为列存表。 diff --git a/content/zh/docs/Developerguide/GAUSS-00811----GAUSS-00820.md b/content/zh/docs/Developerguide/GAUSS-00811----GAUSS-00820.md index 75c89b48a..fc725abe0 100644 --- a/content/zh/docs/Developerguide/GAUSS-00811----GAUSS-00820.md +++ b/content/zh/docs/Developerguide/GAUSS-00811----GAUSS-00820.md @@ -1,12 +1,12 @@ # GAUSS-00811 -- GAUSS-00820 -GAUSS-00811: "'%s' is not a table, index, or TOAST table" +GAUSS-00811: "'%s' is not a table, index , or TOAST table" SQLSTATE: 42809 -错误原因:Set, reset, or replace reloptions操作,对象必须是表、索引或TOAST表。 +错误原因:Set, reset , or replace reloptions 操作,对象必须是表、索引或 TOAST 表。 -解决办法:表、索引及TOAST表外,不能进行此操作。 +解决办法:表、索引及 TOAST 表外,不能进行此操作。 GAUSS-00812: "can not set tablespace for partition of neither table nor index" diff --git a/content/zh/docs/Developerguide/GAUSS-00821----GAUSS-00830.md b/content/zh/docs/Developerguide/GAUSS-00821----GAUSS-00830.md index f44371349..b4d4647af 100644 --- a/content/zh/docs/Developerguide/GAUSS-00821----GAUSS-00830.md +++ b/content/zh/docs/Developerguide/GAUSS-00821----GAUSS-00830.md @@ -20,33 +20,33 @@ GAUSS-00823: "table '%s' without OIDs cannot inherit from table '%s' with OIDs" SQLSTATE: 42809 -错误原因:ALTER TABLE INHERIT操作,没有OIDs的表不能继承。 +错误原因:ALTER TABLE INHERIT操作,没有 OIDs 的表不能继承。 -解决办法:没有OIDs的表不能继承父表,建议更改修改本表具有OIDs。 +解决办法:没有 OIDs 的表不能继承父表,建议更改修改本表具有 OIDs 。 GAUSS-00824: "column '%s' in child table must be marked NOT NULL" SQLSTATE: 42804 -错误原因:ALTER TABLE INHERIT操作,parent table有not null限制,child table的列必需有not null限制。 +错误原因:ALTER TABLE INHERIT操作, parent table 有 not null 限制, child table 的列必需有 not null 限制。 -解决办法:建议为child table增加not null列属性。 +解决办法:建议为 child table 增加 not null 列属性。 GAUSS-00825: "child table is missing column '%s'" SQLSTATE: 42804 -错误原因:ALTER TABLE INHERIT操作,child table中有缺失的列,不能继承自parent table。 +错误原因:ALTER TABLE INHERIT操作, child table 中有缺失的列,不能继承自 parent table 。 -解决办法:建议添加child table中的缺失列,或取消本继承关系。 +解决办法:建议添加 child table 中的缺失列,或取消本继承关系。 GAUSS-00826: "child table '%s' has different definition for check constraint '%s'" SQLSTATE: 42804 -错误原因:ALTER TABLE INHERIT操作,child table与parent table有不同的约束定义,不能继承。 +错误原因:ALTER TABLE INHERIT操作, child table 与 parent table 有不同的约束定义,不能继承。 -解决办法:建议将child table与parent table设置为相同的约束定义。 +解决办法:建议将 child table 与 parent table 设置为相同的约束定义。 GAUSS-00827: "constraint '%s' conflicts with non-inherited constraint on child table '%s'" @@ -78,5 +78,5 @@ SQLSTATE: 42809 错误原因:ALTER TABLE OF操作,将一个表附加到复合类型时,类型表不能继承。 -解决办法:检查ALTER TABLE操作,附加的继承表不能是复合类型。 +解决办法:检查 ALTER TABLE 操作,附加的继承表不能是复合类型。 diff --git a/content/zh/docs/Developerguide/GAUSS-00831----GAUSS-00840.md b/content/zh/docs/Developerguide/GAUSS-00831----GAUSS-00840.md index 3f02aa764..9726e7646 100644 --- a/content/zh/docs/Developerguide/GAUSS-00831----GAUSS-00840.md +++ b/content/zh/docs/Developerguide/GAUSS-00831----GAUSS-00840.md @@ -38,7 +38,7 @@ SQLSTATE: 42809 错误原因:DROP OF操作的表不是一个类型表。 -解决办法:检查DROP OF操作涉及的表是否是类型表。 +解决办法:检查 DROP OF 操作涉及的表是否是类型表。 GAUSS-00837: "Distribution mode cannot be altered" @@ -46,29 +46,29 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE语句中,分布模式不能被更改。 -解决办法:ALTER TABLE语句中不能更改分布模式,请修改并检查ALTER TABLE语句。 +解决办法:ALTER TABLE语句中不能更改分布模式,请修改并检查 ALTER TABLE 语句。 GAUSS-00838: "Cannot alter table to distribution incompatible with existing constraints" SQLSTATE: 0A000 -错误原因:检测表的REDISTRIBUTION时,发现与现存的CONSTRAINTS存在冲突,故不能REDISTRIBUTION。 +错误原因:检测表的 REDISTRIBUTION 时,发现与现存的 CONSTRAINTS 存在冲突,故不能 REDISTRIBUTION 。 -解决办法:更改REDISTRIBUTION,避免与现存CONSTRAINTS冲突。 +解决办法:更改 REDISTRIBUTION ,避免与现存 CONSTRAINTS 冲突。 GAUSS-00839: "Node list is empty: one node at least is mandatory" SQLSTATE: 42710 -错误原因:DELETE NODE LIST时,检测到NODE LIST为空,故不能进行删除操作。 +错误原因:DELETE NODE LIST时,检测到 NODE LIST 为空,故不能进行删除操作。 -解决办法:DELETE NODE LIST不能作用于空的LIST,请检查并修改本操作语句。 +解决办法:DELETE NODE LIST不能作用于空的 LIST ,请检查并修改本操作语句。 GAUSS-00840: "PGXC Node %s: object not in relation node list" SQLSTATE: 42710 -错误原因:DELETE NODE LIST时,检测到NODE不在该LIST中,故不能进行删除操作。 +错误原因:DELETE NODE LIST时,检测到 NODE 不在该 LIST 中,故不能进行删除操作。 -解决办法:DELETE NODE LIST操作不能删除LIST中不存在的NODE节点,请检查并修改本操作。 +解决办法:DELETE NODE LIST操作不能删除 LIST 中不存在的 NODE 节点,请检查并修改本操作。 diff --git a/content/zh/docs/Developerguide/GAUSS-00841----GAUSS-00850.md b/content/zh/docs/Developerguide/GAUSS-00841----GAUSS-00850.md index 9419e0013..ebb6745a4 100644 --- a/content/zh/docs/Developerguide/GAUSS-00841----GAUSS-00850.md +++ b/content/zh/docs/Developerguide/GAUSS-00841----GAUSS-00850.md @@ -4,25 +4,25 @@ GAUSS-00841: "PGXC Node %s: object already in relation node list" SQLSTATE: 42710 -错误原因:ADD NODE LIST时,检测到NODE节点已经存在LIST中,故不能进行添加操作。 +错误原因:ADD NODE LIST时,检测到 NODE 节点已经存在 LIST 中,故不能进行添加操作。 -解决办法:ADD NODE LIST操作检测到NODE在LIST中已经存在,无需进行本操作。 +解决办法:ADD NODE LIST操作检测到 NODE 在 LIST 中已经存在,无需进行本操作。 GAUSS-00842: "cannot move an owned sequence into another schema" SQLSTATE: 0A000 -错误原因:ALTER TABLE SET SCHEMA时,不能将所有者的sequence更改给其他模式(SCHEMA)。 +错误原因:ALTER TABLE SET SCHEMA时,不能将所有者的 sequence 更改给其他模式(SCHEMA)。 -解决办法:在ALTER TABLE SET SCHEMA操作时,不支持将所有者的sequence转给其他模式,建议修改此ALTER TABLE SET SCHEMA语句。 +解决办法:在 ALTER TABLE SET SCHEMA 操作时,不支持将所有者的 sequence 转给其他模式,建议修改此 ALTER TABLE SET SCHEMA 语句。 GAUSS-00843: "relation '%s' already exists in schema '%s'" SQLSTATE: 42P07 -错误原因:ALTER RELATION NAMESPACE时,检测到该relation在本模式(SCHEMA)中已经存在。 +错误原因:ALTER RELATION NAMESPACE时,检测到该 relation 在本模式(SCHEMA)中已经存在。 -解决办法:ALTER RELATION NAMESPACE时,relation在本SCHEMA中已经存在,无需此操作。 +解决办法:ALTER RELATION NAMESPACE时, relation 在本 SCHEMA 中已经存在,无需此操作。 GAUSS-00844: "failed to change schema dependency for relation '%s'" @@ -36,7 +36,7 @@ GAUSS-00845: "permission denied: system catalog '%s' can not be altered" SQLSTATE: 42501 -错误原因:不允许对系统表进行RENAME、SET SCHEMA和ALTER TABLE操作。 +错误原因:不允许对系统表进行RENAME、SET SCHEMA和 ALTER TABLE 操作。 解决办法:请不要对系统表进行修改。 diff --git a/content/zh/docs/Developerguide/GAUSS-00851----GAUSS-00860.md b/content/zh/docs/Developerguide/GAUSS-00851----GAUSS-00860.md index e65dcb664..2778c3b6b 100644 --- a/content/zh/docs/Developerguide/GAUSS-00851----GAUSS-00860.md +++ b/content/zh/docs/Developerguide/GAUSS-00851----GAUSS-00860.md @@ -4,15 +4,15 @@ GAUSS-00851: "cannot %s '%s' because it is in use" SQLSTATE: 55006 -错误原因:执行SQL语句时,需要访问的数据分区正被访问,不能执行此命令。 +错误原因:执行 SQL 语句时,需要访问的数据分区正被访问,不能执行此命令。 -解决办法:建议等待数据分区访问结束再执行此SQL语句。 +解决办法:建议等待数据分区访问结束再执行此 SQL 语句。 GAUSS-00852: "there is no column for a partitioned table!" SQLSTATE: 42601 -错误原因:当从分区表中获取partition key sequence时,分区表列为空。 +错误原因:当从分区表中获取 partition key sequence 时,分区表列为空。 解决办法:建议更改访问非空分区表。 @@ -20,15 +20,15 @@ GAUSS-00853: "there is no partition key!" SQLSTATE: 42601 -错误原因:当从分区表中获取partition key sequence时,partition keys全为空。 +错误原因:当从分区表中获取 partition key sequence 时, partition keys 全为空。 -解决办法:建议将partition keys更改为正确、存在的键值。 +解决办法:建议将 partition keys 更改为正确、存在的键值。 GAUSS-00854: "duplicate partition key: %s" SQLSTATE: 42701 -错误原因:当从分区表中获取partition key sequence时,partition key有重复。 +错误原因:当从分区表中获取 partition key sequence 时, partition key 有重复。 解决办法:建议更改此分区表。 @@ -38,7 +38,7 @@ SQLSTATE: 42804 错误原因:该列数据类型不能作为interval partition\(间隔分区\)的列。 -解决办法:建议修改本数据类型,使其满足interval partition列要求。 +解决办法:建议修改本数据类型,使其满足 interval partition 列要求。 GAUSS-00858: "column %s cannot serve as a range partitioning column because of its datatype" @@ -54,7 +54,7 @@ SQLSTATE: 42601 错误原因:更改分区值为数组时,分区边界链表\(partition bound list\)包含元素个数小于目标元素个数。 -解决办法:建议更改目标元素个数,使其与partition bound list元素个数相等。 +解决办法:建议更改目标元素个数,使其与 partition bound list 元素个数相等。 GAUSS-00860: "partition bound list contains too many elements" @@ -62,5 +62,5 @@ SQLSTATE: 42601 错误原因:更改分区值为数组时,分区边界链表\(partition bound list\)包含元素个数大于目标元素个数。 -解决办法:建议更改目标元素个数,使其与partition bound list元素个数相等。 +解决办法:建议更改目标元素个数,使其与 partition bound list 元素个数相等。 diff --git a/content/zh/docs/Developerguide/GAUSS-00861----GAUSS-00870.md b/content/zh/docs/Developerguide/GAUSS-00861----GAUSS-00870.md index 0db0c18e2..165fdb88f 100644 --- a/content/zh/docs/Developerguide/GAUSS-00861----GAUSS-00870.md +++ b/content/zh/docs/Developerguide/GAUSS-00861----GAUSS-00870.md @@ -4,7 +4,7 @@ GAUSS-00865: "invalid range partiiton table definition" SQLSTATE: 42601 -错误原因:调用ComparePartitionValue函数时,此处为无效的分区表定义。 +错误原因:调用 ComparePartitionValue 函数时,此处为无效的分区表定义。 解决办法:建议重新选择有效的分区表。 @@ -12,7 +12,7 @@ GAUSS-00866: "there is no partition key" SQLSTATE: 42601 -错误原因:调用ComparePartitionValue函数时,不存在分区值。 +错误原因:调用 ComparePartitionValue 函数时,不存在分区值。 解决办法:建议重新选择有效的分区表。 @@ -20,7 +20,7 @@ GAUSS-00868: "partition bound of partition '%s' is too low" SQLSTATE: 42601 -错误原因:调用ComparePartitionValue函数时,分区表的分区边界过小。 +错误原因:调用 ComparePartitionValue 函数时,分区表的分区边界过小。 解决办法:检查建表语句,保证分区的边界值递增。 diff --git a/content/zh/docs/Developerguide/GAUSS-00871----GAUSS-00880.md b/content/zh/docs/Developerguide/GAUSS-00871----GAUSS-00880.md index 0a5818245..ba8862373 100644 --- a/content/zh/docs/Developerguide/GAUSS-00871----GAUSS-00880.md +++ b/content/zh/docs/Developerguide/GAUSS-00871----GAUSS-00880.md @@ -6,7 +6,7 @@ SQLSTATE: XX000 错误原因:不能对NON-PARTITIONED表设置不可用的索引分区。 -解决办法:对PARTITION表设置索引分区。 +解决办法:对 PARTITION 表设置索引分区。 GAUSS-00872: "can not set all index unusable on one partition against NON-PARTITIONED table" @@ -14,7 +14,7 @@ SQLSTATE: XX000 错误原因:不能对NON-PARTITIONED表设置不可用的全索引分区。 -解决办法:针对PARTITION表设置全索引分区。 +解决办法:针对 PARTITION 表设置全索引分区。 GAUSS-00873: "can not enable row movement against NON-PARTITIONED table" @@ -22,7 +22,7 @@ SQLSTATE: XX000 错误原因:NON-PARTITIONED表不开启行移动。 -解决办法:建议更改此操作或者更改NON-PARTITIONED表为PARTITION表。 +解决办法:建议更改此操作或者更改NON-PARTITIONED表为 PARTITION 表。 GAUSS-00874: "can not disable row movement against NON-PARTITIONED table" @@ -30,7 +30,7 @@ SQLSTATE: XX000 错误原因:NON-PARTITIONED表不能取消行移动。 -解决办法:建议更改此操作或者更改NON-PARTITIONED表为PARTITION表。 +解决办法:建议更改此操作或者更改NON-PARTITIONED表为 PARTITION 表。 GAUSS-00875: "can not truncate partition against NON-PARTITIONED table" @@ -38,7 +38,7 @@ SQLSTATE: XX000 错误原因:NON-PARTITIONED表不支持截断分区。 -解决办法:建议更改此操作或者更改NON-PARTITIONED表为PARTITION表。 +解决办法:建议更改此操作或者更改NON-PARTITIONED表为 PARTITION 表。 GAUSS-00876: "can not exchange partition against NON-PARTITIONED table" @@ -46,7 +46,7 @@ SQLSTATE: XX000 错误原因:NON-PARTITIONED表不能更改分区。 -解决办法:建议更改此操作或者更改NON-PARTITIONED表为PARTITION表。 +解决办法:建议更改此操作或者更改NON-PARTITIONED表为 PARTITION 表。 GAUSS-00877: "can not merge partition against NON-PARTITIONED table" @@ -54,7 +54,7 @@ SQLSTATE: XX000 错误原因:NON-PARTITIONED表不能合并分区。 -解决办法:建议更改此操作或者更改NON-PARTITIONED表为PARTITION表。 +解决办法:建议更改此操作或者更改NON-PARTITIONED表为 PARTITION 表。 GAUSS-00878: "can not split partition against NON-PARTITIONED table" @@ -62,7 +62,7 @@ SQLSTATE: XX000 错误原因:NON-PARTITIONED表不能分割分区。 -解决办法:建议更改此操作或者更改NON-PARTITIONED表为PARTITION表。 +解决办法:建议更改此操作或者更改NON-PARTITIONED表为 PARTITION 表。 GAUSS-00880: "the current relation have already reached max number of partitions" diff --git a/content/zh/docs/Developerguide/GAUSS-00881----GAUSS-00890.md b/content/zh/docs/Developerguide/GAUSS-00881----GAUSS-00890.md index bead8fe8b..b932943a7 100644 --- a/content/zh/docs/Developerguide/GAUSS-00881----GAUSS-00890.md +++ b/content/zh/docs/Developerguide/GAUSS-00881----GAUSS-00890.md @@ -12,7 +12,7 @@ GAUSS-00883: "could not acquire AccessExclusiveLock on dest table partition '%s' SQLSTATE: XX000 -错误原因:没有拿到分区的AccessExclusiveLock。 +错误原因:没有拿到分区的 AccessExclusiveLock 。 解决办法:可能由于并发冲突引起,稍后再试。 @@ -44,7 +44,7 @@ GAUSS-00888: "could not find tuple for relation %u" SQLSTATE: XX000 -错误原因:在执行ModifyRowMovement操作时,检测到无法获取关系表的元组,故不能进行此操作。 +错误原因:在执行 ModifyRowMovement 操作时,检测到无法获取关系表的元组,故不能进行此操作。 解决办法:建议检查关系表的元组属性,或取消此操作。 diff --git a/content/zh/docs/Developerguide/GAUSS-00891----GAUSS-00900.md b/content/zh/docs/Developerguide/GAUSS-00891----GAUSS-00900.md index 4078a2463..bc969ad93 100644 --- a/content/zh/docs/Developerguide/GAUSS-00891----GAUSS-00900.md +++ b/content/zh/docs/Developerguide/GAUSS-00891----GAUSS-00900.md @@ -4,9 +4,9 @@ GAUSS-00891: "source partitions must be at least two partitions" SQLSTATE: XX000 -错误原因:MergePartition操作时,检测到原始分区数目小于2,故不能进行MergePartition操作。 +错误原因:MergePartition操作时,检测到原始分区数目小于 2 ,故不能进行 MergePartition 操作。 -解决办法:建议检查表的原始分区数目,数目小于2个时,不能进行合并操作。 +解决办法:建议检查表的原始分区数目,数目小于 2 个时,不能进行合并操作。 GAUSS-00892: "merge partitions of relation '%s', source partitions must be no more than %d partitions" @@ -20,9 +20,9 @@ GAUSS-00893: "merge partitions cannot process inusable index relation \\''%s\\'' SQLSTATE: XX000 -错误原因:MergePartition操作时,检测到包含不可用的本地索引,不能进行MergePartition操作。 +错误原因:MergePartition操作时,检测到包含不可用的本地索引,不能进行 MergePartition 操作。 -解决办法:建议检查表的本地索引可用性,修改不可用索引,再进行MergePartition操作。 +解决办法:建议检查表的本地索引可用性,修改不可用索引,再进行 MergePartition 操作。 GAUSS-00895: "source partitions must be continuous and in ascending order of boundary" diff --git a/content/zh/docs/Developerguide/GAUSS-00901----GAUSS-00910.md b/content/zh/docs/Developerguide/GAUSS-00901----GAUSS-00910.md index 84e78c1fa..e369dd6f9 100644 --- a/content/zh/docs/Developerguide/GAUSS-00901----GAUSS-00910.md +++ b/content/zh/docs/Developerguide/GAUSS-00901----GAUSS-00910.md @@ -6,7 +6,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表必有相同的行/列存储。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表是否有相同的行列存储,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表是否有相同的行列存储,否则不能执行。 GAUSS-00902: "tables in ALTER TABLE EXCHANGE PARTITION must have the same type of compress" @@ -14,7 +14,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表必有相同的压缩类型。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表是否有相同的压缩类型,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表是否有相同的压缩类型,否则不能执行。 GAUSS-00903: "tables in ALTER TABLE EXCHANGE PARTITION must have the same number of columns" @@ -22,7 +22,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表必有相同的列数。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表是否有相同的列数,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表是否有相同的列数,否则不能执行。 GAUSS-00904: "column name mismatch in ALTER TABLE EXCHANGE PARTITION" @@ -30,7 +30,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表列名不匹配。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表是否有相同的列名,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表是否有相同的列名,否则不能执行。 GAUSS-00905: "column type or size mismatch in ALTER TABLE EXCHANGE PARTITION" @@ -38,7 +38,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表列类型及大小不匹配。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表是否有相同的列类型和大小,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表是否有相同的列类型和大小,否则不能执行。 GAUSS-00906: "column not null constraint mismatch in ALTER TABLE EXCHANGE PARTITION" @@ -46,7 +46,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表列不能为空限制不匹配。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表列是否同时有不能为空限制,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表列是否同时有不能为空限制,否则不能执行。 GAUSS-00907: "column default constraint mismatch in ALTER TABLE EXCHANGE PARTITION" @@ -54,7 +54,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表列默认限制不匹配。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表列是否有相同的默认限制,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表列是否有相同的默认限制,否则不能执行。 GAUSS-00908: "column collation mismatch in ALTER TABLE EXCHANGE PARTITION" @@ -62,7 +62,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行表的列排序不匹配。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表是否有相同的列排序,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表是否有相同的列排序,否则不能执行。 GAUSS-00909: "column storage mismatch in ALTER TABLE EXCHANGE PARTITION" @@ -70,7 +70,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表列存储不匹配。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表是否有相同的列存储,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表是否有相同的列存储,否则不能执行。 GAUSS-00910: "the type of column compress mismatch in ALTER TABLE EXCHANGE PARTITION" @@ -78,5 +78,5 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表列压缩类型不匹配。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表是否有相同的压缩类型,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表是否有相同的压缩类型,否则不能执行。 diff --git a/content/zh/docs/Developerguide/GAUSS-00911----GAUSS-00920.md b/content/zh/docs/Developerguide/GAUSS-00911----GAUSS-00920.md index d089e59fc..d25267b7e 100644 --- a/content/zh/docs/Developerguide/GAUSS-00911----GAUSS-00920.md +++ b/content/zh/docs/Developerguide/GAUSS-00911----GAUSS-00920.md @@ -6,7 +6,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表列限制不匹配。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表是否有相同的列限制,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表是否有相同的列限制,否则不能执行。 GAUSS-00912: "distribute mismatch for tables in ALTER TABLE EXCHANGE PARTITION" @@ -14,7 +14,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表列分布不匹配。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表是否有相同的列分布,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表是否有相同的列分布,否则不能执行。 GAUSS-00913: "tables in ALTER TABLE EXCHANGE PARTITION must have the same number of indexs" @@ -22,7 +22,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表索引数目不匹配。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表是否有相同的索引数目,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表是否有相同的索引数目,否则不能执行。 GAUSS-00914: "index mismatch for tables in ALTER TABLE EXCHANGE PARTITION" @@ -30,7 +30,7 @@ SQLSTATE: 0A000 错误原因:ALTER TABLE EXCHANGE PARTITION语句执行的表索引不匹配。 -解决办法:建议检查ALTER TABLE EXCHANGE PARTITION语句执行的表是否有相同的表索引,否则不能执行。 +解决办法:建议检查 ALTER TABLE EXCHANGE PARTITION 语句执行的表是否有相同的表索引,否则不能执行。 GAUSS-00915: "some rows in table do not qualify for specified partition" @@ -44,7 +44,7 @@ GAUSS-00916: "the number of resulting partitions must be more than one" SQLSTATE: 42601 -错误原因:SPLIT PARTITION操作得到结果数目小于2个,表明分割分区失败。 +错误原因:SPLIT PARTITION操作得到结果数目小于 2 个,表明分割分区失败。 解决办法:无分割点\(split point\),分割分区失败,建议检查失败原因。 @@ -54,7 +54,7 @@ SQLSTATE: 42601 错误原因:SPLIT PARTITION操作得到的第一结果分区边界过低,分割分区失败。 -解决办法:分割分区操作失败,建议重新检查SPLIT PARTITION操作。 +解决办法:分割分区操作失败,建议重新检查 SPLIT PARTITION 操作。 GAUSS-00918: "the bound of resulting partition '%s' is too low" @@ -62,7 +62,7 @@ SQLSTATE: 42601 错误原因:SPLIT PARTITION操作得到的结果分区边界过低,分割分区失败。 -解决办法:分割分区操作失败,建议重新检查SPLIT PARTITION操作。 +解决办法:分割分区操作失败,建议重新检查 SPLIT PARTITION 操作。 GAUSS-00919: "the bound of the last resulting partition is not equal with specified partition bound" @@ -70,7 +70,7 @@ SQLSTATE: 42601 错误原因:SPLIT PARTITION操作得到的最后一个结果分区边界与指定分区边界不等,分割分区失败。 -解决办法:分割分区操作失败,建议重新检查SPLIT PARTITION操作。 +解决办法:分割分区操作失败,建议重新检查 SPLIT PARTITION 操作。 GAUSS-00920: "number of boundary items NOT EQUAL to number of partition keys" @@ -78,5 +78,5 @@ SQLSTATE: 42601 错误原因:SPLIT PARTITION操作得到的边界项数目与分区键值数目不同,分割分区失败。 -解决办法:分割分区操作失败,建议重新检查SPLIT PARTITION操作。 +解决办法:分割分区操作失败,建议重新检查 SPLIT PARTITION 操作。 diff --git a/content/zh/docs/Developerguide/GAUSS-00921----GAUSS-00930.md b/content/zh/docs/Developerguide/GAUSS-00921----GAUSS-00930.md index c71486158..478475613 100644 --- a/content/zh/docs/Developerguide/GAUSS-00921----GAUSS-00930.md +++ b/content/zh/docs/Developerguide/GAUSS-00921----GAUSS-00930.md @@ -6,7 +6,7 @@ SQLSTATE: 0A000 错误原因:SPLIT PARTITION操作得到的分割点应介于前分区与后分区之间,实际得到的分割点小于前分区。 -解决办法:分割分区操作失败,建议重新检查SPLIT PARTITION操作。 +解决办法:分割分区操作失败,建议重新检查 SPLIT PARTITION 操作。 GAUSS-00922: "split point is too high" @@ -14,7 +14,7 @@ SQLSTATE: 0A000 错误原因:SPLIT PARTITION操作得到的分割点应介于前分区与后分区之间,实际得到的分割点大于后分区。 -解决办法:分割分区操作失败,建议重新检查SPLIT PARTITION操作。 +解决办法:分割分区操作失败,建议重新检查 SPLIT PARTITION 操作。 GAUSS-00923: "resulting partition '%s' name conflicts with that of an existing partition" @@ -30,13 +30,13 @@ SQLSTATE: 42601 错误原因:SPLIT PARTITION操作得到的边界项数目与分区键值数目不同,分割分区失败。 -解决办法:分割分区操作失败,建议重新检查SPLIT PARTITION操作。 +解决办法:分割分区操作失败,建议重新检查 SPLIT PARTITION 操作。 GAUSS-00925: "cache lookup failed for toast table: %u" SQLSTATE: XX000 -错误原因:没有找到对应的toast表。 +错误原因:没有找到对应的 toast 表。 解决办法:系统表异常,请联系技术支持工程师提供技术支持。 @@ -44,7 +44,7 @@ GAUSS-00926: "cache lookup failed for cuDesc table: %u" SQLSTATE: XX000 -错误原因:没有找到对应的cuDesc表。 +错误原因:没有找到对应的 cuDesc 表。 解决办法:系统表异常,请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-00927: "cache lookup failed for delta table: %u" SQLSTATE: XX000 -错误原因:没有找到对应的delta表。 +错误原因:没有找到对应的 delta 表。 解决办法:系统表异常,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-00931----GAUSS-00940.md b/content/zh/docs/Developerguide/GAUSS-00931----GAUSS-00940.md index 2e017da29..09f649f59 100644 --- a/content/zh/docs/Developerguide/GAUSS-00931----GAUSS-00940.md +++ b/content/zh/docs/Developerguide/GAUSS-00931----GAUSS-00940.md @@ -14,7 +14,7 @@ SQLSTATE: 42P13 错误原因:SQL函数不支持返回共享类型的变量。 -解决办法:修改SQL函数,不使用共享类型变量作为返回值。 +解决办法:修改 SQL 函数,不使用共享类型变量作为返回值。 GAUSS-00937: "SQL function cannot accept shell type %s" @@ -22,7 +22,7 @@ SQLSTATE: 42P13 错误原因:SQL函数不支持共享类型的变量作为函数参数。 -解决办法:修改SQL函数,不使用共享类型变量作为函数参数。 +解决办法:修改 SQL 函数,不使用共享类型变量作为函数参数。 GAUSS-00938: "type %s does not exist" @@ -38,5 +38,5 @@ SQLSTATE: 42P13 错误原因:VARIADIC参数必须放在输入参数的最后位置。 -解决办法:修改函数参数列表,将VARIADIC参数放在输入参数的最后位置。 +解决办法:修改函数参数列表,将 VARIADIC 参数放在输入参数的最后位置。 diff --git a/content/zh/docs/Developerguide/GAUSS-00941----GAUSS-00950.md b/content/zh/docs/Developerguide/GAUSS-00941----GAUSS-00950.md index 5faa2597e..bfff32cc8 100644 --- a/content/zh/docs/Developerguide/GAUSS-00941----GAUSS-00950.md +++ b/content/zh/docs/Developerguide/GAUSS-00941----GAUSS-00950.md @@ -6,7 +6,7 @@ SQLSTATE: 42P13 错误原因:VARIADIC参数必须是数组类型。 -解决办法:修改函数参数,使用数组类型变量作为VARIADIC参数。 +解决办法:修改函数参数,使用数组类型变量作为 VARIADIC 参数。 GAUSS-00942: "parameter name '%s' used more than once" @@ -60,7 +60,7 @@ GAUSS-00948: "invalid volatility '%s'" SQLSTATE: XX000 -错误原因:函数volatile类型非法。 +错误原因:函数 volatile 类型非法。 解决办法:系统表异常,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-00951----GAUSS-00960.md b/content/zh/docs/Developerguide/GAUSS-00951----GAUSS-00960.md index 80e6b5593..f91f8edde 100644 --- a/content/zh/docs/Developerguide/GAUSS-00951----GAUSS-00960.md +++ b/content/zh/docs/Developerguide/GAUSS-00951----GAUSS-00960.md @@ -6,7 +6,7 @@ SQLSTATE: 22023 错误原因:COST必须是正数。 -解决办法:检查函数定义,确保COST定义为正数。 +解决办法:检查函数定义,确保 COST 定义为正数。 GAUSS-00952: "ROWS must be positive" @@ -14,15 +14,15 @@ SQLSTATE: 22023 错误原因:ROWS必须还正数。 -解决办法:检查函数定义,确保ROWS定义为正数。 +解决办法:检查函数定义,确保 ROWS 定义为正数。 GAUSS-00953: "only one AS item needed for language '%s'" SQLSTATE: 42P13 -错误原因:只需要一个AS子句。 +错误原因:只需要一个 AS 子句。 -解决办法:检查函数定义,确保只有一个AS子句。 +解决办法:检查函数定义,确保只有一个 AS 子句。 GAUSS-00954: "language '%s' does not exist" @@ -36,9 +36,9 @@ GAUSS-00955: "only system admin can define a leakproof function" SQLSTATE: 42501 -错误原因:只有系统管理员来能定义leakproof函数。 +错误原因:只有系统管理员来能定义 leakproof 函数。 -解决办法:使用系统管理员帐户来创建leakproof函数。 +解决办法:使用系统管理员帐户来创建 leakproof 函数。 GAUSS-00957: "function result type cannot be a view." @@ -52,9 +52,9 @@ GAUSS-00958: "ROWS is not applicable when function does not return a set" SQLSTATE: 22023 -错误原因:如果不是返回结果集的函数,不能指定ROWS。 +错误原因:如果不是返回结果集的函数,不能指定 ROWS 。 -解决办法:检查函数定义,对返回结果集的函数才指定ROWS。 +解决办法:检查函数定义,对返回结果集的函数才指定 ROWS 。 GAUSS-00959: "cache lookup failed for pg\_aggregate tuple for function %u" @@ -68,7 +68,7 @@ GAUSS-00960: "function %u doesn't return OPAQUE" SQLSTATE: XX000 -错误原因:函数返回类型不是OPAQUE。 +错误原因:函数返回类型不是 OPAQUE 。 解决办法:请检查对应的函数的返回类型是否正确。 diff --git a/content/zh/docs/Developerguide/GAUSS-00961----GAUSS-00970.md b/content/zh/docs/Developerguide/GAUSS-00961----GAUSS-00970.md index 5ec4b8705..65bee648e 100644 --- a/content/zh/docs/Developerguide/GAUSS-00961----GAUSS-00970.md +++ b/content/zh/docs/Developerguide/GAUSS-00961----GAUSS-00970.md @@ -4,17 +4,17 @@ GAUSS-00962: "source data type %s is a pseudo-type" SQLSTATE: 42809 -错误原因:源数据类型不能为pseudo类型。 +错误原因:源数据类型不能为 pseudo 类型。 -解决办法:检查要创建的CAST,确保源数据类型不是pseudo类型。 +解决办法:检查要创建的 CAST ,确保源数据类型不是 pseudo 类型。 GAUSS-00963: "target data type %s is a pseudo-type" SQLSTATE: 42809 -错误原因:目标数据类型不能为pseudo类型。 +错误原因:目标数据类型不能为 pseudo 类型。 -解决办法:检查要创建的CAST,确保目标数据类型不是pseudo类型。 +解决办法:检查要创建的 CAST ,确保目标数据类型不是 pseudo 类型。 GAUSS-00964: "must be owner of type %s or type %s" @@ -22,15 +22,15 @@ SQLSTATE: 42501 错误原因:必须是源类型和目标类型的所有者。 -解决办法:检查SQL语句,确保是源类型和目标类型的所有者。 +解决办法:检查 SQL 语句,确保是源类型和目标类型的所有者。 GAUSS-00965: "cast function must take one to three arguments" SQLSTATE: 42P17 -错误原因:CAST函数必须指定1到3个参数。 +错误原因:CAST函数必须指定 1 到 3 个参数。 -解决办法:检查CAST函数,确保有1到3个参数。 +解决办法:检查 CAST 函数,确保有 1 到 3 个参数。 GAUSS-00966: "argument of cast function must match or be binary-coercible from source data type" @@ -38,23 +38,23 @@ SQLSTATE: 42P17 错误原因:CAST函数的参数必须和源数据类型匹配或二进制兼容。 -解决办法:检查CAST函数,确保参数和源数据类型匹配或二进制兼容。 +解决办法:检查 CAST 函数,确保参数和源数据类型匹配或二进制兼容。 GAUSS-00967: "second argument of cast function must be type integer" SQLSTATE: 42P17 -错误原因:CAST函数的第2个参数必须是整数类型。 +错误原因:CAST函数的第 2 个参数必须是整数类型。 -解决办法:检查CAST函数,确保第2个参数是整数类型。 +解决办法:检查 CAST 函数,确保第 2 个参数是整数类型。 GAUSS-00968: "third argument of cast function must be type Boolean" SQLSTATE: 42P17 -错误原因:CAST函数的第3个参数必须是布尔类型。 +错误原因:CAST函数的第 3 个参数必须是布尔类型。 -解决办法:检查CAST函数,确保第3个参数是布尔类型。 +解决办法:检查 CAST 函数,确保第 3 个参数是布尔类型。 GAUSS-00969: "return data type of cast function must match or be binary-coercible to target data type" @@ -62,13 +62,13 @@ SQLSTATE: 42P17 错误原因:return data type of cast function must match or be binary-coercible to target data typeCAST函数的返回数据类型必须和目标数据类型匹配或二进制兼容。 -解决办法:check the CAST function and make sure that return data type of cast function match or be binary-coercible to target data type检查CAST函数,确保返回数据类型和目标数据类型匹配或二进制兼容。 +解决办法:check the CAST function and make sure that return data type of cast function match or be binary-coercible to target data type检查 CAST 函数,确保返回数据类型和目标数据类型匹配或二进制兼容。 GAUSS-00970: "cast function must not be volatile" SQLSTATE: 42P17 -错误原因:cast function must not be volatileCAST函数的属性不能是volatile的。 +错误原因:cast function must not be volatileCAST函数的属性不能是 volatile 的。 -解决办法:check the CAST function and make sure that cast function not be volatile检查CAST函数,确保它的属性不是volatile的。 +解决办法:check the CAST function and make sure that cast function not be volatile检查 CAST 函数,确保它的属性不是 volatile 的。 diff --git a/content/zh/docs/Developerguide/GAUSS-00971----GAUSS-00980.md b/content/zh/docs/Developerguide/GAUSS-00971----GAUSS-00980.md index b1fe6dcb3..7344b3976 100644 --- a/content/zh/docs/Developerguide/GAUSS-00971----GAUSS-00980.md +++ b/content/zh/docs/Developerguide/GAUSS-00971----GAUSS-00980.md @@ -6,7 +6,7 @@ SQLSTATE: 42P17 错误原因:函数不能是聚集函数。 -解决办法:检查CAST函数,确保它不是聚集函数。 +解决办法:检查 CAST 函数,确保它不是聚集函数。 GAUSS-00972: "cast function must not be a window function" @@ -14,7 +14,7 @@ SQLSTATE: 42P17 错误原因:函数不能是窗口函数。 -解决办法:检查CAST函数,确保他不是窗口函数。 +解决办法:检查 CAST 函数,确保他不是窗口函数。 GAUSS-00973: "cast function must not return a set" @@ -22,15 +22,15 @@ SQLSTATE: 42P17 错误原因:函数不能返回结果集。 -解决办法:检查CAST函数,确保它不返回结果集"。 +解决办法:检查 CAST 函数,确保它不返回结果集"。 GAUSS-00974: "must be system admin to create a cast WITHOUT FUNCTION" SQLSTATE: 42501 -错误原因:必须是系统管理员才能指定CAST函数的WITHOUT FUNCTION属性。 +错误原因:必须是系统管理员才能指定 CAST 函数的 WITHOUT FUNCTION 属性。 -解决办法:若要在创建CAST函数时指定WITHOUT FUNCTION属性,必须使用管理员帐户来执行创建语句。 +解决办法:若要在创建 CAST 函数时指定 WITHOUT FUNCTION 属性,必须使用管理员帐户来执行创建语句。 GAUSS-00975: "source and target data types are not physically compatible" @@ -38,7 +38,7 @@ SQLSTATE: 42P17 错误原因:源数据类型和目标数据类型不是物理兼容的(物理兼容是指:这两种数据类型在pg\_type系统表中的typlen、typbyval、typalign都相同)。 -解决办法:创建一个CAST时,保证源数据类型和目标数据类型是物理兼容的(物理兼容是指:这两种数据类型在pg\_type系统表中的typlen、typbyval、typalign都相同)。 +解决办法:创建一个 CAST 时,保证源数据类型和目标数据类型是物理兼容的(物理兼容是指:这两种数据类型在pg\_type系统表中的typlen、typbyval、typalign都相同)。 GAUSS-00976: "composite data types are not binary-compatible" @@ -46,7 +46,7 @@ SQLSTATE: 42P17 错误原因:复合数据类型不是二进制兼容的,因此不能进行转换。 -解决办法:创建CAST时,请勿使用复合数据类型作为源数据类型或目标数据类型。 +解决办法:创建 CAST 时,请勿使用复合数据类型作为源数据类型或目标数据类型。 GAUSS-00977: "enum data types are not binary-compatible" @@ -54,7 +54,7 @@ SQLSTATE: 42P17 错误原因:枚举数据类型不是二进制兼容的,因此不能进行转换。 -解决办法:创建CAST时,请勿使用枚举数据类型作为源数据类型或目标数据类型。 +解决办法:创建 CAST 时,请勿使用枚举数据类型作为源数据类型或目标数据类型。 GAUSS-00978: "array data types are not binary-compatible" @@ -62,7 +62,7 @@ SQLSTATE: 42P17 错误原因:数组类型不是二进制兼容的,因此不能进行转换。 -解决办法:创建CAST时,请勿使用数组类型作为源数据类型或目标数据类型。 +解决办法:创建 CAST 时,请勿使用数组类型作为源数据类型或目标数据类型。 GAUSS-00979: "domain data types must not be marked binary-compatible" @@ -70,7 +70,7 @@ SQLSTATE: 42P17 错误原因:domain data types must not be marked binary-compatibledomain数据类型不是二进制兼容的,因此不能进行转换。 -解决办法:创建CAST时,请勿使用domain数据类型作为源数据类型或目标数据类型。 +解决办法:创建 CAST 时,请勿使用 domain 数据类型作为源数据类型或目标数据类型。 GAUSS-00980: "source data type and target data type are the same" @@ -78,5 +78,5 @@ SQLSTATE: 42P17 错误原因:源数据类型和目标数据类型相同。 -解决办法:创建CAST时,保证源数据类型和目标数据类型不同。 +解决办法:创建 CAST 时,保证源数据类型和目标数据类型不同。 diff --git a/content/zh/docs/Developerguide/GAUSS-00981----GAUSS-00990.md b/content/zh/docs/Developerguide/GAUSS-00981----GAUSS-00990.md index 57558bebc..a53d04583 100644 --- a/content/zh/docs/Developerguide/GAUSS-00981----GAUSS-00990.md +++ b/content/zh/docs/Developerguide/GAUSS-00981----GAUSS-00990.md @@ -12,17 +12,17 @@ GAUSS-00982: "cast from type %s to type %s already exists" SQLSTATE: 42710 -错误原因:从源数据类型到目标数据类型的CAST已经存在。 +错误原因:从源数据类型到目标数据类型的 CAST 已经存在。 -解决办法:从源数据类型到目标数据类型的CAST已经存在,无需再创建。 +解决办法:从源数据类型到目标数据类型的 CAST 已经存在,无需再创建。 GAUSS-00983: "cast from type %s to type %s does not exist" SQLSTATE: 42704 -错误原因:从源数据类型到目标数据类型的CAST不存在。 +错误原因:从源数据类型到目标数据类型的 CAST 不存在。 -解决办法:检查pg\_cast系统表,看这个CAST是否存在,入不存在,可以进行创建,或重写sql语句来避免使用这个CAST。 +解决办法:检查pg\_cast系统表,看这个 CAST 是否存在,入不存在,可以进行创建,或重写 sql 语句来避免使用这个 CAST 。 GAUSS-00984: "could not find tuple for cast %u" diff --git a/content/zh/docs/Developerguide/GAUSS-00991----GAUSS-01000.md b/content/zh/docs/Developerguide/GAUSS-00991----GAUSS-01000.md index d53dabb52..7008ab567 100644 --- a/content/zh/docs/Developerguide/GAUSS-00991----GAUSS-01000.md +++ b/content/zh/docs/Developerguide/GAUSS-00991----GAUSS-01000.md @@ -4,9 +4,9 @@ GAUSS-00991: "encoding conversion function %s must return type 'void'" SQLSTATE: 42P17 -错误原因:编码转换函数只能返回void。 +错误原因:编码转换函数只能返回 void 。 -解决办法:检查编码转换函数,确保其返回void。 +解决办法:检查编码转换函数,确保其返回 void 。 GAUSS-00992: "cache lookup failed for conversion %u" @@ -38,7 +38,7 @@ SQLSTATE: 42000 错误原因:语法错误。 -解决办法:检查sql语句的语法是否正确。 +解决办法:检查 sql 语句的语法是否正确。 GAUSS-01000: "type '%s' already exists" diff --git a/content/zh/docs/Developerguide/GAUSS-01001----GAUSS-01010.md b/content/zh/docs/Developerguide/GAUSS-01001----GAUSS-01010.md index e8895193e..03d107804 100644 --- a/content/zh/docs/Developerguide/GAUSS-01001----GAUSS-01010.md +++ b/content/zh/docs/Developerguide/GAUSS-01001----GAUSS-01010.md @@ -4,9 +4,9 @@ GAUSS-01001: "invalid type category '%s': must be simple ASCII" SQLSTATE: 22023 -错误原因:非法的类型类别:类别名必须是简单ASCII字符(ASCII值33--126)。 +错误原因:非法的类型类别:类别名必须是简单 ASCII 字符(ASCII值33--126)。 -解决办法:确保使用简单ASCII字符(ACII值22--126)作为类型的类别名。 +解决办法:确保使用简单 ASCII 字符(ACII值22--126)作为类型的类别名。 GAUSS-01002: "array element type cannot be %s" @@ -36,17 +36,17 @@ GAUSS-01005: "type input function must be specified" SQLSTATE: 42P17 -错误原因:没有指定数据类型的input函数。 +错误原因:没有指定数据类型的 input 函数。 -解决办法:检查数据类型定义语句,确保制定了input函数。 +解决办法:检查数据类型定义语句,确保制定了 input 函数。 GAUSS-01006: "type output function must be specified" SQLSTATE: 42P17 -错误原因:没有指定数据类型的output函数。 +错误原因:没有指定数据类型的 output 函数。 -解决办法:检查数据类型定义语句,确保制定了output函数。 +解决办法:检查数据类型定义语句,确保制定了 output 函数。 GAUSS-01007: "type modifier output function is useless without a type modifier input function" @@ -60,23 +60,23 @@ GAUSS-01008: "type input function %s must return type %s" SQLSTATE: 42P17 -错误原因:类型的input函数没有返回指定的类型。 +错误原因:类型的 input 函数没有返回指定的类型。 -解决办法:检查类型定义语句,确保input函数返回指定的类型。 +解决办法:检查类型定义语句,确保 input 函数返回指定的类型。 GAUSS-01009: "type output function %s must return type 'cstring'" SQLSTATE: 42P17 -错误原因:类型的output函数没有返回指定的类型。 +错误原因:类型的 output 函数没有返回指定的类型。 -解决办法:检查类型定义语句,确保output函数返回指定的类型。 +解决办法:检查类型定义语句,确保 output 函数返回指定的类型。 GAUSS-01010: "type receive function %s must return type %s" SQLSTATE: 42P17 -错误原因:类型的receive函数没有返回指定的类型。 +错误原因:类型的 receive 函数没有返回指定的类型。 -解决办法:检查类型定义语句,确保receive函数返回指定的类型。 +解决办法:检查类型定义语句,确保 receive 函数返回指定的类型。 diff --git a/content/zh/docs/Developerguide/GAUSS-01011----GAUSS-01020.md b/content/zh/docs/Developerguide/GAUSS-01011----GAUSS-01020.md index d2b7111ee..c81c3d8be 100644 --- a/content/zh/docs/Developerguide/GAUSS-01011----GAUSS-01020.md +++ b/content/zh/docs/Developerguide/GAUSS-01011----GAUSS-01020.md @@ -4,9 +4,9 @@ GAUSS-01011: "type send function %s must return type 'bytea'" SQLSTATE: 42P17 -错误原因:类型的send函数没有返回指定的类型。 +错误原因:类型的 send 函数没有返回指定的类型。 -解决办法:检查类型定义语句,确保send函数返回指定的类型。 +解决办法:检查类型定义语句,确保 send 函数返回指定的类型。 GAUSS-01012: "'%s' is not a valid base type for a domain" @@ -14,7 +14,7 @@ SQLSTATE: 42804 错误原因:domain的基类型不合法。 -解决办法:检查类型定义语句,确保domain的基类型是合法的(当前合法的是'b'、'd'、'e'、'r')。 +解决办法:检查类型定义语句,确保 domain 的基类型是合法的(当前合法的是'b'、'd'、'e'、'r')。 GAUSS-01013: "multiple default expressions" @@ -22,7 +22,7 @@ SQLSTATE: 42601 错误原因:不能指定多个默认表达式。 -解决办法:检查SQL语句,确保没有定义多个默认表达式。 +解决办法:检查 SQL 语句,确保没有定义多个默认表达式。 GAUSS-01014: "conflicting NULL/NOT NULL constraints" @@ -30,15 +30,15 @@ SQLSTATE: 42601 错误原因:NULL/NOT NULL约束冲突。 -解决办法:检查SQL语句,确保NULL/NOTNULL约束没有冲突。 +解决办法:检查 SQL 语句,确保NULL/NOTNULL约束没有冲突。 GAUSS-01015: "CHECK constraints for domains cannot be marked NO INHERIT" SQLSTATE: 42P17 -错误原因:domain的CHECK约束不能指定为NO INHERIT。 +错误原因:domain的 CHECK 约束不能指定为 NO INHERIT 。 -解决办法:检查SQL语句,确保domain的CHECK约束不指定NO INHERIT属性。 +解决办法:检查 SQL 语句,确保 domain 的 CHECK 约束不指定 NO INHERIT 属性。 GAUSS-01016: "unique constraints not possible for domains" @@ -46,7 +46,7 @@ SQLSTATE: 42000 错误原因:unique constraints are not allowed for domain defination.Domain定义中不允许有唯一性约束。 -解决办法:检查domain定义语句,确保其中没有唯一性约束。 +解决办法:检查 domain 定义语句,确保其中没有唯一性约束。 GAUSS-01017: "primary key constraints not possible for domains" @@ -54,7 +54,7 @@ SQLSTATE: 42601 错误原因:Domain定义中不允许有主键约束。 -解决办法:检查domain定义语句,确保其中没有主键约束。 +解决办法:检查 domain 定义语句,确保其中没有主键约束。 GAUSS-01018: "exclusion constraints not possible for domains" @@ -62,7 +62,7 @@ SQLSTATE: 42601 错误原因:Domain定义中不允许有排他性约束。 -解决办法:检查domain定义语句,确保其中没有排他性约束。 +解决办法:检查 domain 定义语句,确保其中没有排他性约束。 GAUSS-01019: "foreign key constraints not possible for domains" @@ -70,13 +70,13 @@ SQLSTATE: 42601 错误原因:Domain定义中不允许有外键约束。 -解决办法:检查domain定义语句,确保其中没有外键约束。 +解决办法:检查 domain 定义语句,确保其中没有外键约束。 GAUSS-01020: "specifying constraint deferrability not supported for domains" SQLSTATE: 0A000 -错误原因:domain不支持指定约束的deferrability属性。 +错误原因:domain不支持指定约束的 deferrability 属性。 -解决办法:检查domain定义语句,删除约束的deferrability属性。 +解决办法:检查 domain 定义语句,删除约束的 deferrability 属性。 diff --git a/content/zh/docs/Developerguide/GAUSS-01021----GAUSS-01030.md b/content/zh/docs/Developerguide/GAUSS-01021----GAUSS-01030.md index a26a844df..5035baf2e 100644 --- a/content/zh/docs/Developerguide/GAUSS-01021----GAUSS-01030.md +++ b/content/zh/docs/Developerguide/GAUSS-01021----GAUSS-01030.md @@ -6,7 +6,7 @@ SQLSTATE: XX000 错误原因:constraint的类型非法。 -解决办法:请检查SQL语句中定义的约束类型是否正确。 +解决办法:请检查 SQL 语句中定义的约束类型是否正确。 GAUSS-01022: "%s is not an enum" @@ -14,7 +14,7 @@ SQLSTATE: 42809 错误原因:此对象不是一个枚举。 -解决办法:检查SQL语句,确保操作对象是一个枚举。 +解决办法:检查 SQL 语句,确保操作对象是一个枚举。 GAUSS-01024: "type attribute 'subtype' is required" @@ -22,7 +22,7 @@ SQLSTATE: 42601 错误原因:没有指定类型的“subtype”属性。 -解决办法:检查sql语句,添加subtype。 +解决办法:检查 sql 语句,添加 subtype 。 GAUSS-01025: "range subtype cannot be %s" @@ -30,39 +30,39 @@ SQLSTATE: 42804 错误原因:不能是伪类型。 -解决办法:检查sql语句,确保range subtype不是伪类型。 +解决办法:检查 sql 语句,确保 range subtype 不是伪类型。 GAUSS-01026: "range collation specified but subtype does not support collation" SQLSTATE: 42809 -错误原因:指定了range collation但是subtype不支持collation。 +错误原因:指定了 range collation 但是 subtype 不支持 collation 。 -解决办法:检查sql语句,如指定了collation,则subtype必须支持collation.。 +解决办法:检查 sql 语句,如指定了 collation ,则 subtype 必须支持collation.。 GAUSS-01027: "typmod\_in function %s must return type 'integer'" SQLSTATE: 42P17 -错误原因:typmod\_in函数必须返回integer类型。 +错误原因:typmod\_in函数必须返回 integer 类型。 -解决办法:检查tymod\_in函数,确保返回类型是integer类型。 +解决办法:检查tymod\_in函数,确保返回类型是 integer 类型。 GAUSS-01028: "typmod\_out function %s must return type 'cstring'" SQLSTATE: 42P17 -错误原因:typmod\_out函数必须返回cstring类型。 +错误原因:typmod\_out函数必须返回 cstring 类型。 -解决办法:检查tymod\_out函数,确保返回类型是cstring类型。 +解决办法:检查tymod\_out函数,确保返回类型是 cstring 类型。 GAUSS-01029: "type analyze function %s must return type 'Boolean'" SQLSTATE: 42P17 -错误原因:类型的analyze函数必须返回Boolean类型。 +错误原因:类型的 analyze 函数必须返回 Boolean 类型。 -解决办法:检查analyze函数,确保返回类型是Boolean类型的。 +解决办法:检查 analyze 函数,确保返回类型是 Boolean 类型的。 GAUSS-01030: "operator class '%s' does not accept data type %s" @@ -70,5 +70,5 @@ SQLSTATE: 42804 错误原因:operator class不支持此数据类型。 -解决办法:检查sql语句,确保subtype类型和operator class相匹配。 +解决办法:检查 sql 语句,确保 subtype 类型和 operator class 相匹配。 diff --git a/content/zh/docs/Developerguide/GAUSS-01041----GAUSS-01050.md b/content/zh/docs/Developerguide/GAUSS-01041----GAUSS-01050.md index b1ea2bb59..21dcd194d 100644 --- a/content/zh/docs/Developerguide/GAUSS-01041----GAUSS-01050.md +++ b/content/zh/docs/Developerguide/GAUSS-01041----GAUSS-01050.md @@ -54,15 +54,15 @@ SQLSTATE: 42809 错误原因:此对象不是一个类型。 -解决办法:检查SQL语句,确保要处理的对象是一个类型。 +解决办法:检查 SQL 语句,确保要处理的对象是一个类型。 GAUSS-01048: "%s is a table's row type" SQLSTATE: 42809 -错误原因:此对象是一个表的行类型,不能使用ALTER TYPE语法。 +错误原因:此对象是一个表的行类型,不能使用 ALTER TYPE 语法。 -解决办法:使用ALTER TABLE语法来替代。 +解决办法:使用 ALTER TABLE 语法来替代。 GAUSS-01049: "cannot alter array type %s" diff --git a/content/zh/docs/Developerguide/GAUSS-01051----GAUSS-01060.md b/content/zh/docs/Developerguide/GAUSS-01051----GAUSS-01060.md index e5273df9d..2457f74c8 100644 --- a/content/zh/docs/Developerguide/GAUSS-01051----GAUSS-01060.md +++ b/content/zh/docs/Developerguide/GAUSS-01051----GAUSS-01060.md @@ -14,7 +14,7 @@ SQLSTATE: 22023 错误原因:管道名为空。 -解决办法:检查sql语句,给定管道名。 +解决办法:检查 sql 语句,给定管道名。 GAUSS-01053: "channel name too long" @@ -22,7 +22,7 @@ SQLSTATE: 22023 错误原因:管道名超出长度限制。 -解决办法:检查sql语句,确保管道名长度符合要求。 +解决办法:检查 sql 语句,确保管道名长度符合要求。 GAUSS-01054: "payload string too long" @@ -30,15 +30,15 @@ SQLSTATE: 22023 错误原因:payload字符串超出长度限制。 -解决办法:检查sql语句,确保payload字符串长度符合要求。 +解决办法:检查 sql 语句,确保 payload 字符串长度符合要求。 -GAUSS-01055: "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY" +GAUSS-01055: "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN , or NOTIFY" SQLSTATE: 0A000 -错误原因:不允许Prepare一个执行过LISTEN,UNLISTEN或NOTIFY操作的事务。 +错误原因:不允许 Prepare 一个执行过 LISTEN , UNLISTEN 或 NOTIFY 操作的事务。 -解决办法:检查sql语句,确保要prepare的事务没有执行过LISTEN、UNLISTEN或NOTIFY操作。 +解决办法:检查 sql 语句,确保要 prepare 的事务没有执行过LISTEN、UNLISTEN或 NOTIFY 操作。 GAUSS-01056: "too many notifications in the NOTIFY queue" @@ -54,15 +54,15 @@ SQLSTATE: XX000 错误原因:CREATE TABLE AS SELECT重写结果错误。 -解决办法:重写结果应该只有一个语句,请尝试简化CREATE TABLE AS后的SELECT语句。 +解决办法:重写结果应该只有一个语句,请尝试简化 CREATE TABLE AS 后的 SELECT 语句。 GAUSS-01058: "no collation was derived for column '%s' with collatable type %s" SQLSTATE: 42P22 -错误原因:属性列支持attcollation但是对应的attcollation无效,导致无法正常创建heap表格。 +错误原因:属性列支持 attcollation 但是对应的 attcollation 无效,导致无法正常创建 heap 表格。 -解决办法:检查创建表格时属性列关于collation定义的有效性。 +解决办法:检查创建表格时属性列关于 collation 定义的有效性。 GAUSS-01059: "CREATE TABLE AS specifies too many column names" @@ -70,7 +70,7 @@ SQLSTATE: 42601 错误原因:CREATE TABLE AS指定的列太多。 -解决办法:检查sql语句,确保指定的列数相匹配。 +解决办法:检查 sql 语句,确保指定的列数相匹配。 GAUSS-01060: "option '%s' not found" @@ -78,5 +78,5 @@ SQLSTATE: 42704 错误原因:选项未找到。 -解决办法:检查sql语句,确保指定了相应选项。 +解决办法:检查 sql 语句,确保指定了相应选项。 diff --git a/content/zh/docs/Developerguide/GAUSS-01061----GAUSS-01070.md b/content/zh/docs/Developerguide/GAUSS-01061----GAUSS-01070.md index 6e26979f4..6f9e9e7e9 100644 --- a/content/zh/docs/Developerguide/GAUSS-01061----GAUSS-01070.md +++ b/content/zh/docs/Developerguide/GAUSS-01061----GAUSS-01070.md @@ -6,15 +6,15 @@ SQLSTATE: 42710 错误原因:选项出现了多次。 -解决办法:检查sql语句,确保一个选项只出现一次。 +解决办法:检查 sql 语句,确保一个选项只出现一次。 GAUSS-01062: "unrecognized action %d on option '%s'" SQLSTATE: XX000 -错误原因:对应选项的action设置非法。 +错误原因:对应选项的 action 设置非法。 -解决办法:请检查相应的SQL语句选项参数是否正确。 +解决办法:请检查相应的 SQL 语句选项参数是否正确。 GAUSS-01063: "foreign-data wrapper '%s' does not exist" @@ -38,7 +38,7 @@ SQLSTATE: 42704 错误原因:server不存在。 -解决办法:检查是否已经创建了对应的server。 +解决办法:检查是否已经创建了对应的 server 。 GAUSS-01066: "server '%s' already exists" @@ -46,7 +46,7 @@ SQLSTATE: 42710 错误原因:server已存在。 -解决办法:对应的server已存在,无需创建。 +解决办法:对应的 server 已存在,无需创建。 GAUSS-01067: "permission denied to change owner of foreign-data wrapper '%s'" @@ -70,7 +70,7 @@ SQLSTATE: 42704 错误原因: foreign server不存在。 -解决办法:检查是否已经创建了对应的foreign server。 +解决办法:检查是否已经创建了对应的 foreign server 。 GAUSS-01070: "function %s must return type 'fdw\_handler'" diff --git a/content/zh/docs/Developerguide/GAUSS-01071----GAUSS-01080.md b/content/zh/docs/Developerguide/GAUSS-01071----GAUSS-01080.md index 8e7e8fbe6..c5a12673b 100644 --- a/content/zh/docs/Developerguide/GAUSS-01071----GAUSS-01080.md +++ b/content/zh/docs/Developerguide/GAUSS-01071----GAUSS-01080.md @@ -20,7 +20,7 @@ GAUSS-01073: "cache lookup failed for foreign-data wrapper %u" SQLSTATE: XX000 -错误原因:无法找到对应的foreign data wrapper。 +错误原因:无法找到对应的 foreign data wrapper 。 解决办法:请检查使用中的gds、hdfs外表以及roach、obs设置是否正确。 @@ -28,7 +28,7 @@ GAUSS-01074: "cache lookup failed for foreign server %u" SQLSTATE: XX000 -错误原因:无法找到对应的foreign data wrapper。 +错误原因:无法找到对应的 foreign data wrapper 。 解决办法:请检查使用中的gds、hdfs外表以及roach、obs设置是否正确。 @@ -36,17 +36,17 @@ GAUSS-01075: "user mapping '%s' already exists for server %s" SQLSTATE: 42710 -错误原因:server的user mapping已存在。 +错误原因:server的 user mapping 已存在。 -解决办法:server的user mapping已存在,无需创建。 +解决办法:server的 user mapping 已存在,无需创建。 GAUSS-01076: "user mapping '%s' does not exist for the server" SQLSTATE: 42704 -错误原因:server的user mapping不存在。 +错误原因:server的 user mapping 不存在。 -解决办法:server的user mapping不存在,请确保使用前创建了user mapping。 +解决办法:server的 user mapping 不存在,请确保使用前创建了 user mapping 。 GAUSS-01077: "cache lookup failed for user mapping %u" diff --git a/content/zh/docs/Developerguide/GAUSS-01091----GAUSS-01100.md b/content/zh/docs/Developerguide/GAUSS-01091----GAUSS-01100.md index 335cd15c9..3a48a4cf3 100644 --- a/content/zh/docs/Developerguide/GAUSS-01091----GAUSS-01100.md +++ b/content/zh/docs/Developerguide/GAUSS-01091----GAUSS-01100.md @@ -4,9 +4,9 @@ GAUSS-01091: "cstore.%s is a internal table" SQLSTATE: XX000 -错误原因:cstore.开头的表是内部表,不允许VACUUM。 +错误原因:cstore.开头的表是内部表,不允许 VACUUM 。 -解决办法:不VACUUM内部表。 +解决办法:不 VACUUM 内部表。 GAUSS-01092: "pg\_class entry for relid %u vanished during vacuuming" @@ -46,7 +46,7 @@ SQLSTATE: 42601 错误原因:缺少参数。 -解决办法:检查sql语句参数个数。 +解决办法:检查 sql 语句参数个数。 GAUSS-01097: "%s requires a numeric value" @@ -54,7 +54,7 @@ SQLSTATE: 42601 错误原因:需要一个数字类型的参数,但语句中给的参数不是。 -解决办法:检查SQL语句,给出正确的参数。 +解决办法:检查 SQL 语句,给出正确的参数。 GAUSS-01098: "%s requires a Boolean value" @@ -62,7 +62,7 @@ SQLSTATE: 42601 错误原因:需要一个布尔类型的参数,但语句中给的参数不是。 -解决办法:检查SQL语句,给出正确的参数。 +解决办法:检查 SQL 语句,给出正确的参数。 GAUSS-01099: "argument of %s must be a name" diff --git a/content/zh/docs/Developerguide/GAUSS-01101----GAUSS-01110.md b/content/zh/docs/Developerguide/GAUSS-01101----GAUSS-01110.md index 22db81d84..3cdc470fc 100644 --- a/content/zh/docs/Developerguide/GAUSS-01101----GAUSS-01110.md +++ b/content/zh/docs/Developerguide/GAUSS-01101----GAUSS-01110.md @@ -4,9 +4,9 @@ GAUSS-01101: "%s requires an integer value" SQLSTATE: 42601 -错误原因:需要一个integer类型的参数,但语句中给的参数不是。 +错误原因:需要一个 integer 类型的参数,但语句中给的参数不是。 -解决办法:检查SQL语句,给出正确的参数。 +解决办法:检查 SQL 语句,给出正确的参数。 GAUSS-01102: "invalid argument for %s: '%s'" @@ -14,69 +14,69 @@ SQLSTATE: 42601 错误原因:参数不合法。 -解决办法:检查SQL语句,给出正确的参数。 +解决办法:检查 SQL 语句,给出正确的参数。 GAUSS-01103: "table is not partitioned" SQLSTATE: 0A000 -错误原因:要cluster表分区,但该表不是分区表。 +错误原因:要 cluster 表分区,但该表不是分区表。 -解决办法:检查表名,对普通表不能cluster分区。 +解决办法:检查表名,对普通表不能 cluster 分区。 GAUSS-01104: "cannot cluster temporary tables of other sessions" SQLSTATE: 0A000 -错误原因:不能cluster其他session创建的临时表。 +错误原因:不能 cluster 其他 session 创建的临时表。 -解决办法:检查要cluster的表,不能CLUSTER其他session创建的临时表。 +解决办法:检查要 cluster 的表,不能 CLUSTER 其他 session 创建的临时表。 GAUSS-01105: "there is no previously clustered index for table '%s'" SQLSTATE: 42704 -错误原因:没有指定索引名称,该表之前也未做过cluster,因此无法确定以那个索引来做cluster。 +错误原因:没有指定索引名称,该表之前也未做过 cluster ,因此无法确定以那个索引来做 cluster 。 -解决办法:如果不指定cluster的索引名称,就必须保证该表之前做过cluster,系统使用上次cluster的索引。否则,需要指明要做cluster的索引名称。 +解决办法:如果不指定 cluster 的索引名称,就必须保证该表之前做过 cluster ,系统使用上次 cluster 的索引。否则,需要指明要做 cluster 的索引名称。 GAUSS-01106: "cannot cluster a shared catalog" SQLSTATE: 0A000 -错误原因:不能对一个多数据库间共享的系统表做cluster操作。 +错误原因:不能对一个多数据库间共享的系统表做 cluster 操作。 -解决办法:请勿对共享的系统表做cluster操作。 +解决办法:请勿对共享的系统表做 cluster 操作。 GAUSS-01107: "cannot vacuum temporary tables of other sessions" SQLSTATE: 0A000 -错误原因:不能VACUUM其他session创建的临时表。 +错误原因:不能 VACUUM 其他 session 创建的临时表。 -解决办法:检查要VACUUM的表,不能VACUUM其他session创建的临时表。 +解决办法:检查要 VACUUM 的表,不能 VACUUM 其他 session 创建的临时表。 GAUSS-01108: "'%s' is not an index for table '%s'" SQLSTATE: 42809 -错误原因:此索引不是这个表的索引,因此不能做cluster。 +错误原因:此索引不是这个表的索引,因此不能做 cluster 。 -解决办法:检查SQL语句中索引和对应的表是否匹配。 +解决办法:检查 SQL 语句中索引和对应的表是否匹配。 GAUSS-01109: "cannot cluster on index '%s' because access method does not support clustering" SQLSTATE: 0A000 -错误原因:不能对此索引做cluster,此索引类型不支持cluster。 +错误原因:不能对此索引做 cluster ,此索引类型不支持 cluster 。 -解决办法:请勿对此类型的索引做cluster,此索引类型不支持cluster。 +解决办法:请勿对此类型的索引做 cluster ,此索引类型不支持 cluster 。 GAUSS-01110: "cannot cluster on partial index '%s'" SQLSTATE: 0A000 -错误原因:不能对部分索引\(partial index\)做cluster。 +错误原因:不能对部分索引\(partial index\)做 cluster 。 -解决办法:请勿对部分索引\(partial index\)做cluster。 +解决办法:请勿对部分索引\(partial index\)做 cluster 。 diff --git a/content/zh/docs/Developerguide/GAUSS-01111----GAUSS-01120.md b/content/zh/docs/Developerguide/GAUSS-01111----GAUSS-01120.md index 868e1764d..a4887b682 100644 --- a/content/zh/docs/Developerguide/GAUSS-01111----GAUSS-01120.md +++ b/content/zh/docs/Developerguide/GAUSS-01111----GAUSS-01120.md @@ -4,15 +4,15 @@ GAUSS-01111: "cannot cluster on invalid index '%s'" SQLSTATE: 0A000 -错误原因:指定的索引是CREATE INDEX CONCURRENTLY失败后遗留的无效索引,不能对无效索引做cluster。 +错误原因:指定的索引是 CREATE INDEX CONCURRENTLY 失败后遗留的无效索引,不能对无效索引做 cluster 。 -解决办法:请勿对无效索引做cluster。 +解决办法:请勿对无效索引做 cluster 。 GAUSS-01112: "cannot cluster on invalid index %u" SQLSTATE: XX000 -错误原因:对应index非法,不能进行cluster操作。 +错误原因:对应 index 非法,不能进行 cluster 操作。 解决办法:系统表异常,请联系技术支持工程师提供技术支持。 @@ -20,9 +20,9 @@ GAUSS-01113: "CLUSTER does not support lossy index conditions" SQLSTATE: XX000 -错误原因:CLUSTER不支持lossy索引条件。 +错误原因:CLUSTER不支持 lossy 索引条件。 -解决办法:请检查CLUTER表建立的索引,hash索引和gist索引不支持。 +解决办法:请检查 CLUTER 表建立的索引, hash 索引和 gist 索引不支持。 GAUSS-01114: "unexpected HeapTupleSatisfiesVacuum result" @@ -44,31 +44,31 @@ GAUSS-01117: "cannot swap mapped relation '%s' with non-mapped relation" SQLSTATE: XX000 -错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,由于表1的物理存储文件无效,不能交换当前表的物理文件。 +错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,由于表 1 的物理存储文件无效,不能交换当前表的物理文件。 -解决办法:1、确认gs\_switch\_relfilenode函数第一个参数中表1的物理文件是否有效;2、删除表1,通过create table语法重新创建表,重建当前表的物理文件。 +解决办法:1、确认gs\_switch\_relfilenode函数第一个参数中表 1 的物理文件是否有效;2、删除表 1 ,通过 create table 语法重新创建表,重建当前表的物理文件。 GAUSS-01118: "cannot change tablespace of mapped relation '%s'" SQLSTATE: XX000 -错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,两张表的tablespace不一致,不能交换两张表的tablespace。 +错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,两张表的 tablespace 不一致,不能交换两张表的 tablespace 。 -解决办法:删除当前表,通过create tablespace重新创建tablespace,通过语法create table语法重新创建表。 +解决办法:删除当前表,通过 create tablespace 重新创建 tablespace ,通过语法 create table 语法重新创建表。 GAUSS-01119: "cannot swap toast by links for mapped relation '%s'" SQLSTATE: XX000 -错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,待交换两张表中其中有一张表的toast表为空,不能交换两张表的物理文件。 +错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,待交换两张表中其中有一张表的 toast 表为空,不能交换两张表的物理文件。 -解决办法:删除当前表,通过create table语法重新创建表,重建当前表的物理文件。 +解决办法:删除当前表,通过 create table 语法重新创建表,重建当前表的物理文件。 GAUSS-01120: "could not find relation mapping for relation '%s', OID %u" SQLSTATE: XX000 -错误原因:在扩容充分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,由于表1的物理存储文件无效,不能交换当前表的物理文件。 +错误原因:在扩容充分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,由于表 1 的物理存储文件无效,不能交换当前表的物理文件。 -解决办法:1、确认gs\_switch\_relfilenode函数第一个参数中表1的物理文件是否有效;2、删除表1,通过create table语法重新创建表,重建当前表的物理文件。 +解决办法:1、确认gs\_switch\_relfilenode函数第一个参数中表 1 的物理文件是否有效;2、删除表 1 ,通过 create table 语法重新创建表,重建当前表的物理文件。 diff --git a/content/zh/docs/Developerguide/GAUSS-01121----GAUSS-01130.md b/content/zh/docs/Developerguide/GAUSS-01121----GAUSS-01130.md index 0c82b3716..12221e9fd 100644 --- a/content/zh/docs/Developerguide/GAUSS-01121----GAUSS-01130.md +++ b/content/zh/docs/Developerguide/GAUSS-01121----GAUSS-01130.md @@ -4,15 +4,15 @@ GAUSS-01121: "cannot swap toast files by content when there's only one" SQLSTATE: XX000 -错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,待交换两张表中其中有一张表的toast表为空,不能交换两张表的物理文件。 +错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,待交换两张表中其中有一张表的 toast 表为空,不能交换两张表的物理文件。 -解决办法:删除当前表,通过create table语法重新创建表,重建当前表的物理文件。 +解决办法:删除当前表,通过 create table 语法重新创建表,重建当前表的物理文件。 GAUSS-01122: "cannot swap toast files by links for system catalogs" SQLSTATE: XX000 -错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,不允许交换系统表的toast物理文件。 +错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,不允许交换系统表的 toast 物理文件。 解决办法:在扩容重分过程中,通过gs\_switch\_relfilenode函数不允许交换系统表的物理文件,非法的操作。请确认函数的参数中是否包含有系统表的表名。 @@ -20,25 +20,25 @@ GAUSS-01123: "expected one dependency record for TOAST table, found %ld" SQLSTATE: XX000 -错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,由于toast表依赖的对象数大于1个,导致交换物理文件失败。 +错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张表的物理文件时,由于 toast 表依赖的对象数大于 1 个,导致交换物理文件失败。 -解决办法:确认toast表在pg\_depend表中依赖的对象数大于1个,如果大于1个请先删除对象的依赖后再调用该函数交换物理文件。 +解决办法:确认 toast 表在pg\_depend表中依赖的对象数大于 1 个,如果大于 1 个请先删除对象的依赖后再调用该函数交换物理文件。 GAUSS-01124: "expected none dependency record for partiton's TOAST table, found %ld" SQLSTATE: XX000 -错误原因:重建分区表对分区文件进行交换操作处理时,如果待交换的表包含有toast表需要做toast表的文件交换。其中toast表有依赖对象,导致交换分区文件失败。 +错误原因:重建分区表对分区文件进行交换操作处理时,如果待交换的表包含有 toast 表需要做 toast 表的文件交换。其中 toast 表有依赖对象,导致交换分区文件失败。 -解决办法:对需要重建的分区表通过create table partition重新创建分区表。 +解决办法:对需要重建的分区表通过 create table partition 重新创建分区表。 GAUSS-01125: "expected one dependency record for CUDesc/Delta table, found %ld" SQLSTATE: XX000 -错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张列存表的物理文件时,由于列存表依赖的对象数大于1个,导致交换物理文件失败。 +错误原因:在扩容重分过程中,通过gs\_switch\_relfilenode函数交换两张列存表的物理文件时,由于列存表依赖的对象数大于 1 个,导致交换物理文件失败。 -解决办法:确认列存表在pg\_depend表中依赖的对象数大于1个,如果大于1个请先删除对象的依赖后再调用该函数交换物理文件。 +解决办法:确认列存表在pg\_depend表中依赖的对象数大于 1 个,如果大于 1 个请先删除对象的依赖后再调用该函数交换物理文件。 GAUSS-01127: "invalid statement name: must not be empty" @@ -60,9 +60,9 @@ GAUSS-01129: "utility statements cannot be prepared" SQLSTATE: 42P14 -错误原因:DDL命令不能使用prepare。 +错误原因:DDL命令不能使用 prepare 。 -解决办法:DDL语句无需prepare,直接执行即可。 +解决办法:DDL语句无需 prepare ,直接执行即可。 GAUSS-01130: "EXECUTE does not support variable-result cached plans" diff --git a/content/zh/docs/Developerguide/GAUSS-01131----GAUSS-01140.md b/content/zh/docs/Developerguide/GAUSS-01131----GAUSS-01140.md index 147c5bb40..d72c12c0f 100644 --- a/content/zh/docs/Developerguide/GAUSS-01131----GAUSS-01140.md +++ b/content/zh/docs/Developerguide/GAUSS-01131----GAUSS-01140.md @@ -4,9 +4,9 @@ GAUSS-01131: "prepared statement is not a SELECT" SQLSTATE: 42809 -错误原因:CREATE TABLE AS EXECUTE语句中的prepared语句只能是select查询。 +错误原因:CREATE TABLE AS EXECUTE语句中的 prepared 语句只能是 select 查询。 -解决办法:修改SQL语句,CREATE TABLE AS EXECUTE语句中的prepared语句改为select语句。 +解决办法:修改 SQL 语句, CREATE TABLE AS EXECUTE 语句中的 prepared 语句改为 select 语句。 GAUSS-01132: "wrong number of parameters for prepared statement '%s'" @@ -14,7 +14,7 @@ SQLSTATE: 42601 错误原因:Prepared语句所需参数与实际获得的参数数目不匹配。 -解决办法:请检查EXECUTE语法中的参数个数和PREPARE语法中创建预备语句参数个数是否一致,保证EXECUTE和PREPARE语法中参数个数的一致性,并重新调用PREPARE和EXECUTE语法执行。 +解决办法:请检查 EXECUTE 语法中的参数个数和 PREPARE 语法中创建预备语句参数个数是否一致,保证 EXECUTE 和 PREPARE 语法中参数个数的一致性,并重新调用 PREPARE 和 EXECUTE 语法执行。 GAUSS-01136: "parameter $%d of type %s cannot be coerced to the expected type %s" @@ -22,7 +22,7 @@ SQLSTATE: 42804 错误原因:Prepared语句中参数类型无法转化为期待的参数类型。 -解决办法:增加相应的类型转化或保证Prepared中的参数类型。 +解决办法:增加相应的类型转化或保证 Prepared 中的参数类型。 GAUSS-01137: "Passing parameters in PREPARE statement is not supported" @@ -30,7 +30,7 @@ SQLSTATE: 0A000 错误原因:Prepared语句不支持远程传递参数。 -解决办法:请勿在Prepared语句中执行分布式传输参数的操作。 +解决办法:请勿在 Prepared 语句中执行分布式传输参数的操作。 GAUSS-01138: "prepared statement '%s' already exists" @@ -38,15 +38,15 @@ SQLSTATE: 42P05 错误原因:Prepared语句已经存在。 -解决办法:查看pg\_prepared\_statements中关于已有prepared语句的记录,请勿重复创建prepared语句。 +解决办法:查看pg\_prepared\_statements中关于已有 prepared 语句的记录,请勿重复创建 prepared 语句。 GAUSS-01139: "prepared statement '%s' does not exist" SQLSTATE: 26000 -错误原因:执行了不存在的Prepared语句。 +错误原因:执行了不存在的 Prepared 语句。 -解决办法:查看pg\_prepared\_statements中是否有自己执行的prepared语句。 +解决办法:查看pg\_prepared\_statements中是否有自己执行的 prepared 语句。 GAUSS-01140: "EXPLAIN EXECUTE does not support variable-result cached plans" diff --git a/content/zh/docs/Developerguide/GAUSS-01141----GAUSS-01150.md b/content/zh/docs/Developerguide/GAUSS-01141----GAUSS-01150.md index cc69a897c..a4b45b3b4 100644 --- a/content/zh/docs/Developerguide/GAUSS-01141----GAUSS-01150.md +++ b/content/zh/docs/Developerguide/GAUSS-01141----GAUSS-01150.md @@ -4,9 +4,9 @@ GAUSS-01141: "datanode statement '%s' does not exist" SQLSTATE: 26000 -错误原因:EXECUTE DIRECT语法中没有包含指定执行的DN信息。 +错误原因:EXECUTE DIRECT语法中没有包含指定执行的 DN 信息。 -解决办法:请检查EXECUTE DIRECT语法是否正确,并指定执行的DN信息。 +解决办法:请检查 EXECUTE DIRECT 语法是否正确,并指定执行的 DN 信息。 GAUSS-01142: "must be system admin to create procedural language '%s'" @@ -60,15 +60,15 @@ GAUSS-01148: "COPY BINARY is not supported to stdout or from stdin" SQLSTATE: 0A000 -错误原因:不支持copy二进制数据类型到标准输入中的输出界面。 +错误原因:不支持 copy 二进制数据类型到标准输入中的输出界面。 -解决办法:请勿进行copy二进制数据类型到标准输入中的输出界面的操作。 +解决办法:请勿进行 copy 二进制数据类型到标准输入中的输出界面的操作。 GAUSS-01149: "could not write to COPY file: %m" SQLSTATE: XX000 -错误原因:无法copy数据到指定文件。 +错误原因:无法 copy 数据到指定文件。 解决办法:检查指定文件是否有权限异常问题。 diff --git a/content/zh/docs/Developerguide/GAUSS-01151----GAUSS-01160.md b/content/zh/docs/Developerguide/GAUSS-01151----GAUSS-01160.md index 449546f39..9e721264b 100644 --- a/content/zh/docs/Developerguide/GAUSS-01151----GAUSS-01160.md +++ b/content/zh/docs/Developerguide/GAUSS-01151----GAUSS-01160.md @@ -6,7 +6,7 @@ SQLSTATE: XX000 错误原因:Copy to指定的目标数据源不支持。 -解决办法:请修改Copy to指定的目标数据源。 +解决办法:请修改 Copy to 指定的目标数据源。 GAUSS-01152: "COPY\_GDS does not implement in CopySendEndOfRow" @@ -14,13 +14,13 @@ SQLSTATE: XX000 错误原因:Copy to指定的目标数据源不支持。 -解决办法:请修改Copy to指定的目标数据源。 +解决办法:请修改 Copy to 指定的目标数据源。 GAUSS-01153: "could not read from COPY file: %m" SQLSTATE: XX000 -错误原因:无法读取指定copy文件中的数据。 +错误原因:无法读取指定 copy 文件中的数据。 解决办法:请检查指定文件是否被破坏或权限是否足够。 @@ -54,7 +54,7 @@ SQLSTATE: XX000 错误原因:Copy to指定的目标数据源不支持。 -解决办法:请修改Copy to指定的目标数据源。 +解决办法:请修改 Copy to 指定的目标数据源。 GAUSS-01158: "unimplemented CopyDest mode" @@ -62,15 +62,15 @@ SQLSTATE: XX000 错误原因:Copy to指定的目标数据源不支持。 -解决办法:请修改Copy to指定的目标数据源。 +解决办法:请修改 Copy to 指定的目标数据源。 GAUSS-01159: "must be system admin to COPY to or from a file" SQLSTATE: 42501 -错误原因:必须是管理员用户才能进行对于文件的copy操作。 +错误原因:必须是管理员用户才能进行对于文件的 copy 操作。 -解决办法:检查执行文件copy操作的用户是否具有管理员权限。 +解决办法:检查执行文件 copy 操作的用户是否具有管理员权限。 GAUSS-01160: "position of field '%s' can not be less then 0" diff --git a/content/zh/docs/Developerguide/GAUSS-01161----GAUSS-01170.md b/content/zh/docs/Developerguide/GAUSS-01161----GAUSS-01170.md index 2fa6fce33..050700bfa 100644 --- a/content/zh/docs/Developerguide/GAUSS-01161----GAUSS-01170.md +++ b/content/zh/docs/Developerguide/GAUSS-01161----GAUSS-01170.md @@ -12,17 +12,17 @@ GAUSS-01162: "max length of data row cannot greater than 1GB" SQLSTATE: 42601 -错误原因:数据行不能大于1GB。 +错误原因:数据行不能大于 1GB 。 -解决办法:检查行数据大小是否超过1GB。 +解决办法:检查行数据大小是否超过 1GB 。 GAUSS-01163: "max length of data row cannot greater than 1GB" SQLSTATE: 42601 -错误原因:数据行不能大于1GB。 +错误原因:数据行不能大于 1GB 。 -解决办法:检查行数据大小是否超过1GB。 +解决办法:检查行数据大小是否超过 1GB 。 GAUSS-01164: "pre-field '%s' can not be covered by field '%s'" @@ -38,7 +38,7 @@ SQLSTATE: 42883 错误原因:Copy操作指定的编码格式和数据库编码之间无默认转换函数。 -解决办法:请修改Copy操作指定的编码格式。 +解决办法:请修改 Copy 操作指定的编码格式。 GAUSS-01166: "invalid user-define header file '%s'" @@ -78,5 +78,5 @@ SQLSTATE: 22023 错误原因:copy数据中使用了过长的空字符串。 -解决办法:copy数据中不能使用超过100个的空字符串。 +解决办法:copy数据中不能使用超过 100 个的空字符串。 diff --git a/content/zh/docs/Developerguide/GAUSS-01171----GAUSS-01180.md b/content/zh/docs/Developerguide/GAUSS-01171----GAUSS-01180.md index 731a19704..a3e3e41df 100644 --- a/content/zh/docs/Developerguide/GAUSS-01171----GAUSS-01180.md +++ b/content/zh/docs/Developerguide/GAUSS-01171----GAUSS-01180.md @@ -6,7 +6,7 @@ SQLSTATE: 22023 错误原因:参数选项必须是列名之一。 -解决办法:检查copy中参数名是否为表列名。 +解决办法:检查 copy 中参数名是否为表列名。 GAUSS-01172: "argument to option '%s' must be a valid encoding name" @@ -14,23 +14,23 @@ SQLSTATE: 22023 错误原因:参数选项必须是可用的编码名。 -解决办法:检查copy中参数是否为已知编码类型。 +解决办法:检查 copy 中参数是否为已知编码类型。 GAUSS-01174: "invalid value of FIX" SQLSTATE: 22023 -错误原因:不识别copy中fix选项的值。 +错误原因:不识别 copy 中 fix 选项的值。 -解决办法:检查copy参数fix是否正确。 +解决办法:检查 copy 参数 fix 是否正确。 GAUSS-01175: "option '%s' not recognized" SQLSTATE: 42601 -错误原因: 不识别copy中某个选项的值。 +错误原因: 不识别 copy 中某个选项的值。 -解决办法:检查copy中该不识别的参数是否正确。 +解决办法:检查 copy 中该不识别的参数是否正确。 GAUSS-01176: "cannot specify DELIMITER in BINARY/FIXED mode" @@ -52,23 +52,23 @@ GAUSS-01178: "FORMATTER only can be specified in FIXED mode" SQLSTATE: 42601 -错误原因:只能在FIXED模式下指定FORMATTER参数。 +错误原因:只能在 FIXED 模式下指定 FORMATTER 参数。 -解决办法:请在FIXED模式下指定FORMATTER参数。 +解决办法:请在 FIXED 模式下指定 FORMATTER 参数。 GAUSS-01179: "FORMATTER must be specified in FIXED mode" SQLSTATE: 42601 -错误原因:FIXED模式下必须指定FORMATTER参数。 +错误原因:FIXED模式下必须指定 FORMATTER 参数。 -解决办法:FIXED模式下必须指定FORMATTER参数。 +解决办法:FIXED模式下必须指定 FORMATTER 参数。 GAUSS-01180: "FIX only can be specified in FIXED mode" SQLSTATE: 42601 -错误原因:FIX只能在FIXED模式下指定。 +错误原因:FIX只能在 FIXED 模式下指定。 -解决办法:FIX只能在FIXED模式下指定。 +解决办法:FIX只能在 FIXED 模式下指定。 diff --git a/content/zh/docs/Developerguide/GAUSS-01181----GAUSS-01190.md b/content/zh/docs/Developerguide/GAUSS-01181----GAUSS-01190.md index 52046f419..f29c5dfed 100644 --- a/content/zh/docs/Developerguide/GAUSS-01181----GAUSS-01190.md +++ b/content/zh/docs/Developerguide/GAUSS-01181----GAUSS-01190.md @@ -6,7 +6,7 @@ SQLSTATE: 0A000 错误原因:Copy操作指定的分隔符长度超限。 -解决办法:请修改Copy操作指定的分隔符,长度控制在10字节以内。 +解决办法:请修改 Copy 操作指定的分隔符,长度控制在 10 字节以内。 GAUSS-01182: "COPY delimiter cannot be newline or carriage return" @@ -28,7 +28,7 @@ GAUSS-01184: "delimiter '%s' cannot contain any characters in'%s'" SQLSTATE: 22023 -错误原因:导入非CSV格式时,指定的分隔符中包含了不允许的字符(a-z0-9以及.\\)。 +错误原因:导入非 CSV 格式时,指定的分隔符中包含了不允许的字符(a-z0-9以及.\\)。 解决办法:重新指定分隔符,不允许出现a-z0-9以及.\\中的任何一个字符。 @@ -36,31 +36,31 @@ GAUSS-01185: "COPY HEADER available only in CSV mode" SQLSTATE: 0A000 -错误原因:COPY操作中的头行检测只支持CSV模式。 +错误原因:COPY操作中的头行检测只支持 CSV 模式。 -解决办法:请在CSV模式下支持头行检测。 +解决办法:请在 CSV 模式下支持头行检测。 GAUSS-01186: "COPY quote available only in CSV mode" SQLSTATE: 0A000 -错误原因:COPY操作中的引用字符只支持CSV模式。 +错误原因:COPY操作中的引用字符只支持 CSV 模式。 -解决办法:请在CSV模式下使用引用字符。 +解决办法:请在 CSV 模式下使用引用字符。 GAUSS-01188: "delimiter cannot contain quote character" SQLSTATE: 22023 -错误原因:导入CSV格式时指定的分隔符中出现了引号字符。 +错误原因:导入 CSV 格式时指定的分隔符中出现了引号字符。 -解决办法:需要重新指定CSV格式的分隔符或者引号字符。 +解决办法:需要重新指定 CSV 格式的分隔符或者引号字符。 GAUSS-01189: "COPY escape available only in CSV mode" SQLSTATE: 0A000 -错误原因:COPY操作中逃逸字符只支持CSV模式。 +错误原因:COPY操作中逃逸字符只支持 CSV 模式。 -解决办法:请在CSV模式中使用逃逸字符。 +解决办法:请在 CSV 模式中使用逃逸字符。 diff --git a/content/zh/docs/Developerguide/GAUSS-01191----GAUSS-01200.md b/content/zh/docs/Developerguide/GAUSS-01191----GAUSS-01200.md index 23e8ce74f..cd38fc666 100644 --- a/content/zh/docs/Developerguide/GAUSS-01191----GAUSS-01200.md +++ b/content/zh/docs/Developerguide/GAUSS-01191----GAUSS-01200.md @@ -4,17 +4,17 @@ GAUSS-01191: "COPY force quote available only in CSV mode" SQLSTATE: 0A000 -错误原因:COPY操作中强制引用字符只支持CSV模式。 +错误原因:COPY操作中强制引用字符只支持 CSV 模式。 -解决办法:请在CSV模式中使用强制引用字符。 +解决办法:请在 CSV 模式中使用强制引用字符。 GAUSS-01194: "COPY force not null only available using COPY FROM" SQLSTATE: 0A000 -错误原因:COPY操作中强制非空字符只支持COPY FROM操作。 +错误原因:COPY操作中强制非空字符只支持 COPY FROM 操作。 -解决办法:请使用COPY FROM语句实现强制非空字符。 +解决办法:请使用 COPY FROM 语句实现强制非空字符。 GAUSS-01195: "COPY delimiter must not appear in the NULL specification" @@ -36,15 +36,15 @@ GAUSS-01198: "SHARED mode can not be used with CSV format" SQLSTATE: 0A000 -错误原因:不能在CSV格式支持共享模式。 +错误原因:不能在 CSV 格式支持共享模式。 -解决办法:请勿在CSV格式场景使用共享模式。 +解决办法:请勿在 CSV 格式场景使用共享模式。 GAUSS-01199: "HEADER FILE only available using COPY TO or WRITE ONLY foreign table" SQLSTATE: 0A000 -错误原因:头文件只能在copy to和只有外表的场景中使用。 +错误原因:头文件只能在 copy to 和只有外表的场景中使用。 -解决办法:请在copy to或外表场景使用头文件。 +解决办法:请在 copy to 或外表场景使用头文件。 diff --git a/content/zh/docs/Developerguide/GAUSS-01201----GAUSS-01210.md b/content/zh/docs/Developerguide/GAUSS-01201----GAUSS-01210.md index 02e725e18..e3a2a7fe8 100644 --- a/content/zh/docs/Developerguide/GAUSS-01201----GAUSS-01210.md +++ b/content/zh/docs/Developerguide/GAUSS-01201----GAUSS-01210.md @@ -4,39 +4,39 @@ GAUSS-01201: "can not specify EOL in BINARY mode" SQLSTATE: 0A000 -错误原因:不能在BINARY模式下指定终止符。 +错误原因:不能在 BINARY 模式下指定终止符。 -解决办法:请勿在BINARY模式下使用终止符。 +解决办法:请勿在 BINARY 模式下使用终止符。 GAUSS-01202: "FIX specification only available using COPY FROM or READ ONLY foreign table" SQLSTATE: 42000 -错误原因:指定FIX参数只能在copy from和只读外表的场景中使用。 +错误原因:指定 FIX 参数只能在 copy from 和只读外表的场景中使用。 -解决办法:请在copy from或外表场景使用指定FIX参数的操作。 +解决办法:请在 copy from 或外表场景使用指定 FIX 参数的操作。 GAUSS-01203: "FILEHEADER specification only available using HEAD" SQLSTATE: 42601 -错误原因:用户在导出的时候指定从哪个文件来读取HEAD信息,但是并没有指定是否真正需要HEAD信息。 +错误原因:用户在导出的时候指定从哪个文件来读取 HEAD 信息,但是并没有指定是否真正需要 HEAD 信息。 -解决办法:在导出语句中明确指定HEADER项,或者去掉读取的文件名信息。 +解决办法:在导出语句中明确指定 HEADER 项,或者去掉读取的文件名信息。 GAUSS-01204: "table '%s' does not have OIDs" SQLSTATE: 42703 -错误原因:导入数据时指定了文本中存在OID项,但是用户表并不存在OID列。 +错误原因:导入数据时指定了文本中存在 OID 项,但是用户表并不存在 OID 列。 -解决办法:检查要导入的数据是否与用户表的定义在OID上是否一致,要么删除导入的OID项,要么对用户表增加OID列。 +解决办法:检查要导入的数据是否与用户表的定义在 OID 上是否一致,要么删除导入的 OID 项,要么对用户表增加 OID 列。 GAUSS-01206: "unexpected rewrite result" SQLSTATE: XX000 -错误原因: 系统内部错误。导入SQL语句的重写结果非预期。 +错误原因: 系统内部错误。导入 SQL 语句的重写结果非预期。 解决办法:运行时错误,请联系技术支持工程师提供技术支持。 @@ -44,25 +44,25 @@ GAUSS-01207: "COPY \(SELECT INTO\) is not supported" SQLSTATE: 0A000 -错误原因:不支持COPY中SELECT INTO语法。 +错误原因:不支持 COPY 中 SELECT INTO 语法。 -解决办法:COPY中不建议使用SELECT INTO语法。 +解决办法:COPY中不建议使用 SELECT INTO 语法。 GAUSS-01208: "FORCE QUOTE column '%s' not referenced by COPY" SQLSTATE: 42P10 -错误原因:在CSV COPY TO模式下,在每个声明的字段周围对所有非NULL值没有使用引号包围。 +错误原因:在 CSV COPY TO 模式下,在每个声明的字段周围对所有非 NULL 值没有使用引号包围。 -解决办法:在CSV COPY TO模式下,强制在每个声明的字段周围对所有非NULL值都使用引号包围。NULL输出不会被引号包围。 +解决办法:在 CSV COPY TO 模式下,强制在每个声明的字段周围对所有非 NULL 值都使用引号包围。 NULL 输出不会被引号包围。 GAUSS-01209: "FORCE NOT NULL column '%s' not referenced by COPY" SQLSTATE: 42P10 -错误原因:在CSV COPY FROM模式下,指定的字段输入为空。 +错误原因:在 CSV COPY FROM 模式下,指定的字段输入为空。 -解决办法:在CSV COPY FROM模式下,指定的字段输入不能为空。 +解决办法:在 CSV COPY FROM 模式下,指定的字段输入不能为空。 GAUSS-01210: "could not close file '%s': %m" diff --git a/content/zh/docs/Developerguide/GAUSS-01211----GAUSS-01220.md b/content/zh/docs/Developerguide/GAUSS-01211----GAUSS-01220.md index e738f75fc..dc20958be 100644 --- a/content/zh/docs/Developerguide/GAUSS-01211----GAUSS-01220.md +++ b/content/zh/docs/Developerguide/GAUSS-01211----GAUSS-01220.md @@ -4,33 +4,33 @@ GAUSS-01211: "cannot copy from view '%s'" SQLSTATE: 42809 -错误原因:无法从视图中COPY数据。 +错误原因:无法从视图中 COPY 数据。 -解决办法:请勿从视图中COPY数据。 +解决办法:请勿从视图中 COPY 数据。 GAUSS-01212: "cannot copy from foreign table '%s'" SQLSTATE: 42809 -错误原因:无法从外表中COPY数据。 +错误原因:无法从外表中 COPY 数据。 -解决办法:请勿从外表中COPY数据。 +解决办法:请勿从外表中 COPY 数据。 GAUSS-01213: "cannot copy from sequence '%s'" SQLSTATE: 42809 -错误原因:无法从序列中COPY数据。 +错误原因:无法从序列中 COPY 数据。 -解决办法:请勿从序列中COPY数据。 +解决办法:请勿从序列中 COPY 数据。 GAUSS-01214: "cannot copy from non-table relation '%s'" SQLSTATE: 42809 -错误原因:无法从非表关系中COPY数据。 +错误原因:无法从非表关系中 COPY 数据。 -解决办法:请勿从非表关系中COPY数据。 +解决办法:请勿从非表关系中 COPY 数据。 GAUSS-01215: "relative path not allowed for COPY to file" @@ -54,7 +54,7 @@ SQLSTATE: 42809 错误原因:期望为文件的参数是目录。 -解决办法:请指定COPY的文件名而非目录名。 +解决办法:请指定 COPY 的文件名而非目录名。 GAUSS-01218: "could not chmod file '%s' : %m" @@ -70,7 +70,7 @@ SQLSTATE: XX000 错误原因:不支持的文件格式。 -解决办法:请使用COPY支持的文本、二进制、CSV格式。 +解决办法:请使用 COPY 支持的文本、二进制、CSV格式。 GAUSS-01220: "null value in column '%s' violates not-null constraint" diff --git a/content/zh/docs/Developerguide/GAUSS-01221----GAUSS-01230.md b/content/zh/docs/Developerguide/GAUSS-01221----GAUSS-01230.md index 038b84b8f..64de31ad1 100644 --- a/content/zh/docs/Developerguide/GAUSS-01221----GAUSS-01230.md +++ b/content/zh/docs/Developerguide/GAUSS-01221----GAUSS-01230.md @@ -4,47 +4,47 @@ GAUSS-01221: "Column Store unsupport CHECK constraint" SQLSTATE: XX000 -错误原因:当前列存不支持CHECK约束。 +错误原因:当前列存不支持 CHECK 约束。 -解决办法:删除CHECK约束。 +解决办法:删除 CHECK 约束。 GAUSS-01222: "cannot copy to view '%s'" SQLSTATE: 42809 -错误原因:无法COPY数据到视图。 +错误原因:无法 COPY 数据到视图。 -解决办法:请勿COPY数据到视图中。 +解决办法:请勿 COPY 数据到视图中。 GAUSS-01223: "cannot copy to foreign table '%s'" SQLSTATE: 42809 -错误原因:无法COPY数据到外表。 +错误原因:无法 COPY 数据到外表。 -解决办法:请勿COPY数据到外表中。 +解决办法:请勿 COPY 数据到外表中。 GAUSS-01224: "cannot copy to sequence '%s'" SQLSTATE: 42809 -错误原因:无法COPY数据到序列。 +错误原因:无法 COPY 数据到序列。 -解决办法:请勿COPY数据到序列中。 +解决办法:请勿 COPY 数据到序列中。 GAUSS-01225: "cannot copy to non-table relation '%s'" SQLSTATE: 42809 -错误原因:无法COPY数据非正规表。 +错误原因:无法 COPY 数据非正规表。 -解决办法:请勿COPY数据非正规表中。 +解决办法:请勿 COPY 数据非正规表中。 GAUSS-01226: "invalid COPY file header \(COPY SEND\)" SQLSTATE: 22P04 -错误原因:无效COPY操作文件头。 +错误原因:无效 COPY 操作文件头。 解决办法:COPY数据文件被破坏,请检查文件。 @@ -62,7 +62,7 @@ SQLSTATE: XX000 错误原因:向行存表导入压缩数据的过程中,出现了数据丢失的现象。 -解决办法:使用alter table关闭行存表的压缩特性,重新导入数据。 +解决办法:使用 alter table 关闭行存表的压缩特性,重新导入数据。 GAUSS-01229: "Non-shippable ROW triggers not supported with COPY" @@ -70,7 +70,7 @@ SQLSTATE: 0A000 错误原因:COPY操作不支持行触发器。 -解决办法:请勿在COPY中使用行触发器。 +解决办法:请勿在 COPY 中使用行触发器。 GAUSS-01230: "could not open file '%s' for reading: %m" diff --git a/content/zh/docs/Developerguide/GAUSS-01231----GAUSS-01240.md b/content/zh/docs/Developerguide/GAUSS-01231----GAUSS-01240.md index 2c3d55cfd..bd1b39d9a 100644 --- a/content/zh/docs/Developerguide/GAUSS-01231----GAUSS-01240.md +++ b/content/zh/docs/Developerguide/GAUSS-01231----GAUSS-01240.md @@ -28,7 +28,7 @@ GAUSS-01236: "missing data for OID column" SQLSTATE: 22P04 -错误原因:copy时OID为空值。 +错误原因:copy时 OID 为空值。 解决办法:检查数据文件首列是否有空值。 @@ -36,17 +36,17 @@ GAUSS-01237: "null OID in COPY data" SQLSTATE: 22P04 -错误原因:copy操作时对应的OID为空。 +错误原因:copy操作时对应的 OID 为空。 -解决办法:检查copy语句,确保需要导入数据的表的OID不为空。 +解决办法:检查 copy 语句,确保需要导入数据的表的 OID 不为空。 GAUSS-01238: "invalid OID in COPY data" SQLSTATE: 22P04 -错误原因:数据所对应的OID是一个无效的OID。 +错误原因:数据所对应的 OID 是一个无效的 OID 。 -解决办法:检查copy语句中属性列与实际数据是否相对应。 +解决办法:检查 copy 语句中属性列与实际数据是否相对应。 GAUSS-01239: "missing data for column '%s'" @@ -54,13 +54,13 @@ SQLSTATE: 22P04 错误原因:copy语句中希望导入的列数大于实际的数据列数,使得其中的某列没有数据。 -解决办法:检查copy语句中的属性列与导入的数据量列数是否一致。 +解决办法:检查 copy 语句中的属性列与导入的数据量列数是否一致。 GAUSS-01240: "received copy data after EOF marker" SQLSTATE: 22P04 -错误原因:在EOF标记后仍然读取了数据,这是因为在旧协议中没有定义EOF标记。 +错误原因:在 EOF 标记后仍然读取了数据,这是因为在旧协议中没有定义 EOF 标记。 解决办法:确保按照当前协议书写的数据不会超过预期想要的。 diff --git a/content/zh/docs/Developerguide/GAUSS-01241----GAUSS-01250.md b/content/zh/docs/Developerguide/GAUSS-01241----GAUSS-01250.md index a3a1ca86e..9965c64bb 100644 --- a/content/zh/docs/Developerguide/GAUSS-01241----GAUSS-01250.md +++ b/content/zh/docs/Developerguide/GAUSS-01241----GAUSS-01250.md @@ -6,7 +6,7 @@ SQLSTATE: 22P04 错误原因:属性个数期望的与实际不一致。 -解决办法:“1、从DN端返回给CN端的属性个数出错,属于内部错误,请联系技术支持工程师提供技术支持。 2、目标表属性个数与要拷贝的源文件属性个数不一致。需要检查待copy文件的列数和表中指定的列数是否一致。” +解决办法:“1、从 DN 端返回给 CN 端的属性个数出错,属于内部错误,请联系技术支持工程师提供技术支持。 2、目标表属性个数与要拷贝的源文件属性个数不一致。需要检查待 copy 文件的列数和表中指定的列数是否一致。” GAUSS-01242: "literal carriage return found in data" @@ -20,7 +20,7 @@ GAUSS-01243: "literal newline found in data" SQLSTATE: 22P04 -错误原因:在CSV文件中发现不可识别的数据格式。 +错误原因:在 CSV 文件中发现不可识别的数据格式。 解决办法:请检查文件格式及文件数据内容规范性。 @@ -52,7 +52,7 @@ GAUSS-01247: "unexpected EOF in COPY data" SQLSTATE: 22P04 -错误原因:读取COPY文件出现失败。 +错误原因:读取 COPY 文件出现失败。 解决办法:请检查文件数据格式合法性。 @@ -60,7 +60,7 @@ GAUSS-01248: "invalid field size" SQLSTATE: 22P04 -错误原因:读取COPY文件中数据大小错误。 +错误原因:读取 COPY 文件中数据大小错误。 解决办法:请检查文件数据格式合法性。 @@ -76,7 +76,7 @@ GAUSS-01250: "Failed to initialize Datanodes for COPY" SQLSTATE: 08000 -错误原因:无法为COPY操作初始化数据节点之间的连接。 +错误原因:无法为 COPY 操作初始化数据节点之间的连接。 -解决办法:需要依次检查:1. 集群状态是否正常;2. 节点之间的连接是否正常;3. 当前节点之间的网络连接是否正常;4. 所有节点上的内存资源是充足的,未发生OOM问题。 +解决办法:需要依次检查:1. 集群状态是否正常;2. 节点之间的连接是否正常;3. 当前节点之间的网络连接是否正常;4. 所有节点上的内存资源是充足的,未发生 OOM 问题。 diff --git a/content/zh/docs/Developerguide/GAUSS-01251----GAUSS-01260.md b/content/zh/docs/Developerguide/GAUSS-01251----GAUSS-01260.md index 00f7612b5..30aafd7eb 100644 --- a/content/zh/docs/Developerguide/GAUSS-01251----GAUSS-01260.md +++ b/content/zh/docs/Developerguide/GAUSS-01251----GAUSS-01260.md @@ -20,25 +20,25 @@ GAUSS-01253: "Invalid URL '%s' in LOCATION" SQLSTATE: XX000 -错误原因:GDS服务中URL参数错误。 +错误原因:GDS服务中 URL 参数错误。 -解决办法:请检查URL参数值及格式正确性。 +解决办法:请检查 URL 参数值及格式正确性。 GAUSS-01254: "unrecognized URL '%s'" SQLSTATE: XX000 -错误原因:GDS服务中URL参数错误。 +错误原因:GDS服务中 URL 参数错误。 -解决办法:请检查URL参数值及格式正确性。 +解决办法:请检查 URL 参数值及格式正确性。 GAUSS-01255: "wrong URL format '%s'" SQLSTATE: XX000 -错误原因:GDS服务中URL参数错误。 +错误原因:GDS服务中 URL 参数错误。 -解决办法:请检查URL参数值及格式正确性。 +解决办法:请检查 URL 参数值及格式正确性。 GAUSS-01256: "unable to open file '%s'" @@ -60,7 +60,7 @@ GAUSS-01258: "no files found to import" SQLSTATE: XX000 -错误原因:检测到导入的文件数目为0,在raise\_errors\_if\_no\_files开启的时候,进行报错处理。 +错误原因:检测到导入的文件数目为 0 ,在raise\_errors\_if\_no\_files开启的时候,进行报错处理。 解决办法:关闭raise\_errors\_if\_no\_files参数。 @@ -70,13 +70,13 @@ SQLSTATE: XX000 错误原因:this is a sql syntax errorsql语法错误。 -解决办法:check your sql syntax.检查sql语句的语法是否正确。 +解决办法:check your sql syntax.检查 sql 语句的语法是否正确。 GAUSS-01260: "Incomplete Message from GDS ." SQLSTATE: XX000 -错误原因:从GDS中收到了非预期的消息数据。 +错误原因:从 GDS 中收到了非预期的消息数据。 解决办法:首先需要检查当前网络运行状况(丢包率是否较高);若网络运行良好,则属于内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-01261----GAUSS-01270.md b/content/zh/docs/Developerguide/GAUSS-01261----GAUSS-01270.md index 2c81e1e11..677477370 100644 --- a/content/zh/docs/Developerguide/GAUSS-01261----GAUSS-01270.md +++ b/content/zh/docs/Developerguide/GAUSS-01261----GAUSS-01270.md @@ -22,7 +22,7 @@ SQLSTATE: XX000 错误原因:元组中数据记录错误。 -解决办法:请结合报错Context,尝试定位文本中导致此报错的数据行,检查是否存在非法字符。若否,请联系技术支持工程师提供技术支持。 +解决办法:请结合报错 Context ,尝试定位文本中导致此报错的数据行,检查是否存在非法字符。若否,请联系技术支持工程师提供技术支持。 GAUSS-01265: "could not cache error info:%m" @@ -30,7 +30,7 @@ SQLSTATE: XX000 错误原因:错误信息无法缓存。 -解决办法:请结合报错Context,尝试定位文本中导致此报错的数据行,检查是否存在非法字符。若否,请联系技术支持工程师提供技术支持。 +解决办法:请结合报错 Context ,尝试定位文本中导致此报错的数据行,检查是否存在非法字符。若否,请联系技术支持工程师提供技术支持。 GAUSS-01266: "could not fetch error record:%m" @@ -38,7 +38,7 @@ SQLSTATE: XX000 错误原因:错误信息获取失败。 -解决办法:请结合报错Context,尝试定位文本中导致此报错的数据行,检查是否存在非法字符。若否,请联系技术支持工程师提供技术支持。 +解决办法:请结合报错 Context ,尝试定位文本中导致此报错的数据行,检查是否存在非法字符。若否,请联系技术支持工程师提供技术支持。 GAUSS-01267: "incomplete error record" @@ -46,7 +46,7 @@ SQLSTATE: XX000 错误原因:不完整的错误信息记录。 -解决办法:请结合报错Context,尝试定位文本中导致此报错的数据行,检查是否存在非法字符。若否,请联系技术支持工程师提供技术支持。 +解决办法:请结合报错 Context ,尝试定位文本中导致此报错的数据行,检查是否存在非法字符。若否,请联系技术支持工程师提供技术支持。 GAUSS-01268: "access method '%s' does not exist" @@ -68,7 +68,7 @@ GAUSS-01270: "cannot use more than %d columns in an index" SQLSTATE: 54011 -错误原因:一个索引中不能同时指定超过32列。 +错误原因:一个索引中不能同时指定超过 32 列。 -解决办法:请勿在一个索引中同时指定超过32列。 +解决办法:请勿在一个索引中同时指定超过 32 列。 diff --git a/content/zh/docs/Developerguide/GAUSS-01271----GAUSS-01280.md b/content/zh/docs/Developerguide/GAUSS-01271----GAUSS-01280.md index 9d580d235..62e1409b9 100644 --- a/content/zh/docs/Developerguide/GAUSS-01271----GAUSS-01280.md +++ b/content/zh/docs/Developerguide/GAUSS-01271----GAUSS-01280.md @@ -4,11 +4,11 @@ GAUSS-01271: "non-partitioned table does not support local partitioned indexes " SQLSTATE: 0A000 -错误原因:非分区表不支持创建local模式下的分区索引。 +错误原因:非分区表不支持创建 local 模式下的分区索引。 -解决办法:1、如果需要创建local模式下的分区索引,需要重新创建基表为分区表。 +解决办法:1、如果需要创建 local 模式下的分区索引,需要重新创建基表为分区表。 -2、如果不需要创建local模式下的分区索引,需要删除Create unique index...local;语法最后的local参数。 +2、如果不需要创建 local 模式下的分区索引,需要删除Create unique index...local;语法最后的 local 参数。 GAUSS-01274: "cannot create index on foreign table '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-01281----GAUSS-01290.md b/content/zh/docs/Developerguide/GAUSS-01281----GAUSS-01290.md index 120c96ae2..1190632f1 100644 --- a/content/zh/docs/Developerguide/GAUSS-01281----GAUSS-01290.md +++ b/content/zh/docs/Developerguide/GAUSS-01281----GAUSS-01290.md @@ -28,7 +28,7 @@ GAUSS-01284: "Cannot create index whose evaluation cannot be enforced to remote SQLSTATE: 0A000 -错误原因:openGauss主键约束通过unique btree索引实现。主键约束没有包含分布列时,无法成功创建索引。 +错误原因:openGauss主键约束通过 unique btree 索引实现。主键约束没有包含分布列时,无法成功创建索引。 解决办法:请检查主键约束中是否包含分布列。 @@ -62,7 +62,7 @@ SQLSTATE: 42P17 错误原因:不支持的分区策略。 -解决办法:目前仅支持对RANGE或INTERNAL分区表创建分区索引时,请重新修改分区表为RANGE或INTERNAL类型分区表,再创建分区索引。 +解决办法:目前仅支持对 RANGE 或 INTERNAL 分区表创建分区索引时,请重新修改分区表为 RANGE 或 INTERNAL 类型分区表,再创建分区索引。 GAUSS-01289: "collation '%s' does not exist" diff --git a/content/zh/docs/Developerguide/GAUSS-01291----GAUSS-01300.md b/content/zh/docs/Developerguide/GAUSS-01291----GAUSS-01300.md index 1a972bf1c..330aa3823 100644 --- a/content/zh/docs/Developerguide/GAUSS-01291----GAUSS-01300.md +++ b/content/zh/docs/Developerguide/GAUSS-01291----GAUSS-01300.md @@ -78,5 +78,5 @@ SQLSTATE: 0A000 错误原因:索引处理方法不支持ASC/DESC选项。 -解决办法:重建索引并设置索引列的访问方法(pg\_am中amcanorder字段)为true支持索引列排序。 +解决办法:重建索引并设置索引列的访问方法(pg\_am中 amcanorder 字段)为 true 支持索引列排序。 diff --git a/content/zh/docs/Developerguide/GAUSS-01301----GAUSS-01310.md b/content/zh/docs/Developerguide/GAUSS-01301----GAUSS-01310.md index c22baab69..f12537c90 100644 --- a/content/zh/docs/Developerguide/GAUSS-01301----GAUSS-01310.md +++ b/content/zh/docs/Developerguide/GAUSS-01301----GAUSS-01310.md @@ -6,7 +6,7 @@ SQLSTATE: 0A000 错误原因:索引处理方法不支持NULLS/FIRST/LAST选项。 -解决办法:重建索引并设置索引列的访问方法(pg\_am中amcanorder字段)为true支持索引列排序。 +解决办法:重建索引并设置索引列的访问方法(pg\_am中 amcanorder 字段)为 true 支持索引列排序。 GAUSS-01302: "operator class '%s' does not exist for access method '%s'" @@ -28,7 +28,7 @@ GAUSS-01304: "'%s' does not mean oid '%u'" SQLSTATE: XX000 -错误原因:分区表OID获取错误。 +错误原因:分区表 OID 获取错误。 解决办法:通过ALTER INDEX...REBUILD;语法重建索引。 @@ -46,7 +46,7 @@ SQLSTATE: XX000 错误原因:无法得到分区表索引的索引。 -解决办法:在Cache中查找partition表的索引表(pg\_index系统表的索引信息)失败,Cache存在异常,请联系技术支持工程师提供技术支持。 +解决办法:在 Cache 中查找 partition 表的索引表(pg\_index系统表的索引信息)失败, Cache 存在异常,请联系技术支持工程师提供技术支持。 GAUSS-01309: "unable to find attribute %d for relation %u." @@ -54,7 +54,7 @@ SQLSTATE: XX000 错误原因:无法找到表的属性信息。 -解决办法:在Cache中查找partition索引表的属性列失败,Cache存在异常,请联系技术支持工程师提供技术支持。 +解决办法:在 Cache 中查找 partition 索引表的属性列失败, Cache 存在异常,请联系技术支持工程师提供技术支持。 GAUSS-01310: "cache %d lookup failed for relation %u" diff --git a/content/zh/docs/Developerguide/GAUSS-01311----GAUSS-01320.md b/content/zh/docs/Developerguide/GAUSS-01311----GAUSS-01320.md index 85b2cf6ab..f25fa0497 100644 --- a/content/zh/docs/Developerguide/GAUSS-01311----GAUSS-01320.md +++ b/content/zh/docs/Developerguide/GAUSS-01311----GAUSS-01320.md @@ -30,7 +30,7 @@ SQLSTATE: 0A000 错误原因:不支持创建不被记录的序列。 -解决办法:请勿创建unlogged类型序列。 +解决办法:请勿创建 unlogged 类型序列。 GAUSS-01317: "GTM error, could not create sequence" @@ -38,7 +38,7 @@ SQLSTATE: 08006 错误原因:GTM错误,无法创建序列。 -解决办法:通过命令\[gs\_om -t status --detail\]查看gtm状态,如果gtm状态异常,请参考《故障处理》手册定位解决GTM故障问题后再次进行创建序列操作。 +解决办法:通过命令\[gs\_om -t status --detail\]查看 gtm 状态,如果 gtm 状态异常,请参考《故障处理》手册定位解决 GTM 故障问题后再次进行创建序列操作。 GAUSS-01318: "GTM error, could not alter sequence" @@ -46,7 +46,7 @@ SQLSTATE: 08006 错误原因:GTM错误,无法修改序列。 -解决办法:通过命令\[gs\_om -t status --detail\]查看gtm状态,如果gtm状态异常,请参考《故障处理》手册定位解决GTM故障问题后再次进行创建序列操作。 +解决办法:通过命令\[gs\_om -t status --detail\]查看 gtm 状态,如果 gtm 状态异常,请参考《故障处理》手册定位解决 GTM 故障问题后再次进行创建序列操作。 GAUSS-01319: "permission denied for sequence %s" diff --git a/content/zh/docs/Developerguide/GAUSS-01321----GAUSS-01330.md b/content/zh/docs/Developerguide/GAUSS-01321----GAUSS-01330.md index c6c9b68c4..221a1c832 100644 --- a/content/zh/docs/Developerguide/GAUSS-01321----GAUSS-01330.md +++ b/content/zh/docs/Developerguide/GAUSS-01321----GAUSS-01330.md @@ -30,7 +30,7 @@ SQLSTATE: 08006 错误原因:GTM错误,无法获得序列值。 -解决办法:通过命令\[gs\_om -t status --detail\]查看gtm状态,如果gtm状态异常,请参考《故障处理》手册定位解决GTM故障问题后再次进行创建序列操作。 +解决办法:通过命令\[gs\_om -t status --detail\]查看 gtm 状态,如果 gtm 状态异常,请参考《故障处理》手册定位解决 GTM 故障问题后再次进行创建序列操作。 GAUSS-01326: "bad magic number in sequence '%s': %08X" @@ -44,9 +44,9 @@ GAUSS-01327: "INCREMENT must not be zero" SQLSTATE: 22023 -错误原因:序列中增量值不能为0。 +错误原因:序列中增量值不能为 0 。 -解决办法:序列中增量值不能为0。 +解决办法:序列中增量值不能为 0 。 GAUSS-01328: "MINVALUE \(%s\) must be less than MAXVALUE \(%s\)" diff --git a/content/zh/docs/Developerguide/GAUSS-01331----GAUSS-01340.md b/content/zh/docs/Developerguide/GAUSS-01331----GAUSS-01340.md index c3d44ee43..e36eaed04 100644 --- a/content/zh/docs/Developerguide/GAUSS-01331----GAUSS-01340.md +++ b/content/zh/docs/Developerguide/GAUSS-01331----GAUSS-01340.md @@ -4,25 +4,25 @@ GAUSS-01331: "RESTART value \(%s\) cannot be less than MINVALUE \(%s\)" SQLSTATE: 22023 -错误原因:RESTART子句,RESTART的值小于了MINVALUE。 +错误原因:RESTART子句, RESTART 的值小于了 MINVALUE 。 -解决办法:修改RESTART子句,使得RESTART的值不小于MINVALUE。 +解决办法:修改 RESTART 子句,使得 RESTART 的值不小于 MINVALUE 。 GAUSS-01332: "RESTART value \(%s\) cannot be greater than MAXVALUE \(%s\)" SQLSTATE: 22023 -错误原因:RESTART子句,RESTART的值大于了MAXVALUE。 +错误原因:RESTART子句, RESTART 的值大于了 MAXVALUE 。 -解决办法:修改RESTART子句,使得RESTART的值不大于MAXVALUE。 +解决办法:修改 RESTART 子句,使得 RESTART 的值不大于 MAXVALUE 。 GAUSS-01334: "invalid OWNED BY option" SQLSTATE: 42601 -错误原因:OWNED BY子句中指定的不是NONE。 +错误原因:OWNED BY子句中指定的不是 NONE 。 -解决办法:修改为OWNED BY NONE。 +解决办法:修改为 OWNED BY NONE 。 GAUSS-01335: "sequence must have same owner as table it is linked to" @@ -30,15 +30,15 @@ SQLSTATE: 55000 错误原因:sequence与关联的表不是一个所有者。 -解决办法:OWNED BY子句只能指定与sequence相同OWNER的table。 +解决办法:OWNED BY子句只能指定与 sequence 相同 OWNER 的 table 。 GAUSS-01336: "sequence must be in same schema as table it is linked to" SQLSTATE: 55000 -错误原因:sequence与关联的表不是一个schema。 +错误原因:sequence与关联的表不是一个 schema 。 -解决办法:OWNED BY子句只能指定与sequence相同schema的table。 +解决办法:OWNED BY子句只能指定与 sequence 相同 schema 的 table 。 GAUSS-01337: "seq\_redo: unknown op code %u" diff --git a/content/zh/docs/Developerguide/GAUSS-01341----GAUSS-01350.md b/content/zh/docs/Developerguide/GAUSS-01341----GAUSS-01350.md index 2076fc463..9a26b4f5a 100644 --- a/content/zh/docs/Developerguide/GAUSS-01341----GAUSS-01350.md +++ b/content/zh/docs/Developerguide/GAUSS-01341----GAUSS-01350.md @@ -28,17 +28,17 @@ GAUSS-01345: "text search parser gettoken method is required" SQLSTATE: 42P17 -错误原因:CREATE TEXT SEARCH PARSER,没有定义gettoken方法。 +错误原因:CREATE TEXT SEARCH PARSER,没有定义 gettoken 方法。 -解决办法:CREATE TEXT SEARCH PARSER,需要定义gettoken函数。 +解决办法:CREATE TEXT SEARCH PARSER,需要定义 gettoken 函数。 GAUSS-01347: "text search parser lextypes method is required" SQLSTATE: 42P17 -错误原因:CREATE TEXT SEARCH PARSER,没有定义lextypes方法。 +错误原因:CREATE TEXT SEARCH PARSER,没有定义 lextypes 方法。 -解决办法:CREATE TEXT SEARCH PARSER,需要定义start函数。 +解决办法:CREATE TEXT SEARCH PARSER,需要定义 start 函数。 GAUSS-01348: "cache lookup failed for text search parser %u" diff --git a/content/zh/docs/Developerguide/GAUSS-01351----GAUSS-01360.md b/content/zh/docs/Developerguide/GAUSS-01351----GAUSS-01360.md index 6ea33c248..d8bab6cf5 100644 --- a/content/zh/docs/Developerguide/GAUSS-01351----GAUSS-01360.md +++ b/content/zh/docs/Developerguide/GAUSS-01351----GAUSS-01360.md @@ -12,25 +12,25 @@ GAUSS-01352: "text search template '%s' does not accept options" SQLSTATE: 42601 -错误原因:CREATE TEXT SEARCH DICTIONARY/ALTER TEXT SEARCH DICTIONARY,没有指定INIT方法,但是指定了options。 +错误原因:CREATE TEXT SEARCH DICTIONARY/ALTER TEXT SEARCH DICTIONARY,没有指定 INIT 方法,但是指定了 options 。 -解决办法:CREATE TEXT SEARCH DICTIONARY/ALTER TEXT SEARCH DICTIONARY,要么在指定INIT时,才指定options选项,要么不要指定任何options。 +解决办法:CREATE TEXT SEARCH DICTIONARY/ALTER TEXT SEARCH DICTIONARY,要么在指定 INIT 时,才指定 options 选项,要么不要指定任何 options 。 GAUSS-01353: "text search template is required" SQLSTATE: 42P17 -错误原因:CREATE TEXT SEARCH DICTIONARY,没有提供template。 +错误原因:CREATE TEXT SEARCH DICTIONARY,没有提供 template 。 -解决办法:CREATE TEXT SEARCH DICTIONARY,需要提供template。 +解决办法:CREATE TEXT SEARCH DICTIONARY,需要提供 template 。 GAUSS-01354: "cache lookup failed for text search dictionary %u" SQLSTATE: XX000 -错误原因:在系统表中未找到对应ID的全文检索词典。 +错误原因:在系统表中未找到对应 ID 的全文检索词典。 -解决办法:请检查是否有会话并发对该词典执行了drop操作。 +解决办法:请检查是否有会话并发对该词典执行了 drop 操作。 GAUSS-01355: "text search dictionary '%s' already exists" @@ -68,9 +68,9 @@ GAUSS-01359: "text search template lexize method is required" SQLSTATE: 42P17 -错误原因:CREATE TEXT SEARCH TEMPLATE,没有提供合法的lexize方法。 +错误原因:CREATE TEXT SEARCH TEMPLATE,没有提供合法的 lexize 方法。 -解决办法:CREATE TEXT SEARCH TEMPLATE,需要提供合法的lexize方法。 +解决办法:CREATE TEXT SEARCH TEMPLATE,需要提供合法的 lexize 方法。 GAUSS-01360: "must be system admin to rename text search templates" diff --git a/content/zh/docs/Developerguide/GAUSS-01361----GAUSS-01370.md b/content/zh/docs/Developerguide/GAUSS-01361----GAUSS-01370.md index a66c547aa..81e73e16b 100644 --- a/content/zh/docs/Developerguide/GAUSS-01361----GAUSS-01370.md +++ b/content/zh/docs/Developerguide/GAUSS-01361----GAUSS-01370.md @@ -4,9 +4,9 @@ GAUSS-01362: "cache lookup failed for text search configuration %u" SQLSTATE: XX000 -错误原因:在系统表中未找到对应ID的全文检索配置。 +错误原因:在系统表中未找到对应 ID 的全文检索配置。 -解决办法:请检查是否有会话并发对该配置做了drop操作。 +解决办法:请检查是否有会话并发对该配置做了 drop 操作。 GAUSS-01363: "text search configuration parameter '%s' not recognized" @@ -28,9 +28,9 @@ GAUSS-01365: "text search parser is required" SQLSTATE: 42P17 -错误原因:CREATE TEXT SEARCH CONFIGURATION,从parser/copy中计算出的最终的parser非法。 +错误原因:CREATE TEXT SEARCH CONFIGURATION,从parser/copy中计算出的最终的 parser 非法。 -解决办法:CREATE TEXT SEARCH CONFIGURATION,从parser/copy中计算出的最终的parser必须是可用的。 +解决办法:CREATE TEXT SEARCH CONFIGURATION,从parser/copy中计算出的最终的 parser 必须是可用的。 GAUSS-01366: "text search configuration '%s' already exists" @@ -52,7 +52,7 @@ GAUSS-01368: "method lextype isn't defined for text search parser %u" SQLSTATE: XX000 -错误原因:系统表pg\_ts\_parser中对应的prslextype定义错误。 +错误原因:系统表pg\_ts\_parser中对应的 prslextype 定义错误。 解决办法:系统表pg\_ts\_parser属性信息错误,请联系技术支持工程师提供技术支持。 @@ -68,7 +68,7 @@ GAUSS-01370: "mapping for token type '%s' does not exist" SQLSTATE: 42704 -错误原因:ALTER TEXT SEARCH CONFIGURATION\(DROP MAPPING\),某个标识的MAPPING不存在。 +错误原因:ALTER TEXT SEARCH CONFIGURATION\(DROP MAPPING\),某个标识的 MAPPING 不存在。 -解决办法:ALTER TEXT SEARCH CONFIGURATION\(DROP MAPPING\),必须指定存在的某个mapping。 +解决办法:ALTER TEXT SEARCH CONFIGURATION\(DROP MAPPING\),必须指定存在的某个 mapping 。 diff --git a/content/zh/docs/Developerguide/GAUSS-01371----GAUSS-01380.md b/content/zh/docs/Developerguide/GAUSS-01371----GAUSS-01380.md index b25b8746b..00d5aeaa8 100644 --- a/content/zh/docs/Developerguide/GAUSS-01371----GAUSS-01380.md +++ b/content/zh/docs/Developerguide/GAUSS-01371----GAUSS-01380.md @@ -4,9 +4,9 @@ GAUSS-01371: "invalid parameter list format: '%s'" SQLSTATE: 42601 -错误原因:反序列化字典选项时,参数list格式不正确,=后面缺少空格。 +错误原因:反序列化字典选项时,参数 list 格式不正确,=后面缺少空格。 -解决办法:参数list格式不正确,=后面紧跟一个空格。 +解决办法:参数 list 格式不正确,=后面紧跟一个空格。 GAUSS-01372: "unrecognized deserialize\_deflist state: %d" @@ -20,39 +20,39 @@ GAUSS-01375: "Bad socket." SQLSTATE: XX000 -错误原因:系统内部错误。read socket不合法。 +错误原因:系统内部错误。 read socket 不合法。 -解决办法:请检查gds与数据节点的网络连接、网络环境、节点的系统端口是否正常。 +解决办法:请检查 gds 与数据节点的网络连接、网络环境、节点的系统端口是否正常。 GAUSS-01376: "Unexpected EOF on GDS connection '%s': %m" SQLSTATE: XX000 -错误原因:系统内部错误。与GDS端交互数据时,发生了错误。 +错误原因:系统内部错误。与 GDS 端交互数据时,发生了错误。 -解决办法:请检查gds与数据节点的网络连接、网络环境、节点的系统端口是否正常。请检查GDS的LOG,查看相关WARNING和ERROR日志,定位相关原因。 +解决办法:请检查 gds 与数据节点的网络连接、网络环境、节点的系统端口是否正常。请检查 GDS 的 LOG ,查看相关 WARNING 和 ERROR 日志,定位相关原因。 GAUSS-01377: "Unexpected connection EOF from '%s':%m" SQLSTATE: XX000 -错误原因:系统内部错误。与GDS端交互数据时,发生了错误。 +错误原因:系统内部错误。与 GDS 端交互数据时,发生了错误。 -解决办法:请检查gds与数据节点的网络连接、网络环境、节点的系统端口是否正常。请检查GDS的LOG,查看相关WARNING和ERROR日志,定位相关原因。 +解决办法:请检查 gds 与数据节点的网络连接、网络环境、节点的系统端口是否正常。请检查 GDS 的 LOG ,查看相关 WARNING 和 ERROR 日志,定位相关原因。 GAUSS-01378: "invalid URI '%s'" SQLSTATE: XX000 -错误原因:提供给GDS外表的URI非法。 +错误原因:提供给 GDS 外表的 URI 非法。 -解决办法:请检查并纠正GDS外表中location相关设置。 +解决办法:请检查并纠正 GDS 外表中 location 相关设置。 GAUSS-01380: "'%s' is a table" SQLSTATE: 42809 -错误原因:在表上定义了INSTEAD OF触发器。 +错误原因:在表上定义了 INSTEAD OF 触发器。 -解决办法:不要在表上定义INSTEAD OF trigger,只能定义BEFORE/AFTER。 +解决办法:不要在表上定义 INSTEAD OF trigger ,只能定义BEFORE/AFTER。 diff --git a/content/zh/docs/Developerguide/GAUSS-01381----GAUSS-01390.md b/content/zh/docs/Developerguide/GAUSS-01381----GAUSS-01390.md index 561fadb1a..5b92c30c2 100644 --- a/content/zh/docs/Developerguide/GAUSS-01381----GAUSS-01390.md +++ b/content/zh/docs/Developerguide/GAUSS-01381----GAUSS-01390.md @@ -6,7 +6,7 @@ SQLSTATE: 42809 错误原因:在视图上定义了row-level BEFORE or AFTER triggers/TRUNCATE触发器。 -解决办法:在视图上只能定义INSTEAD OF触发器。 +解决办法:在视图上只能定义 INSTEAD OF 触发器。 GAUSS-01382: "'%s' is not a table or view" @@ -22,15 +22,15 @@ SQLSTATE: 0A000 错误原因:定义了ROW-level TRUNCATE triggers。 -解决办法:不要定义TRUNCATE FOR EACH ROW。 +解决办法:不要定义 TRUNCATE FOR EACH ROW 。 GAUSS-01385: "INSTEAD OF triggers cannot have WHEN conditions" SQLSTATE: 0A000 -错误原因:INSTEAD OF triggers附加了WHEN子句。 +错误原因:INSTEAD OF triggers附加了 WHEN 子句。 -解决办法:INSTEAD OF triggers附加了WHEN子句。 +解决办法:INSTEAD OF triggers附加了 WHEN 子句。 GAUSS-01386: "INSTEAD OF triggers cannot have column lists" @@ -60,15 +60,15 @@ GAUSS-01389: "cannot use window function in trigger WHEN condition" SQLSTATE: 42P20 -错误原因:trigger WHEN子句中使用了window函数。 +错误原因:trigger WHEN子句中使用了 window 函数。 -解决办法:trigger WHEN子句中不能使用window函数。 +解决办法:trigger WHEN子句中不能使用 window 函数。 GAUSS-01390: "statement trigger's WHEN condition cannot reference column values" SQLSTATE: 42P17 -错误原因:statement triggers的WHEN子句引用了列值。 +错误原因:statement triggers的 WHEN 子句引用了列值。 -解决办法:statement triggers的WHEN子句不能引用列值。 +解决办法:statement triggers的 WHEN 子句不能引用列值。 diff --git a/content/zh/docs/Developerguide/GAUSS-01391----GAUSS-01400.md b/content/zh/docs/Developerguide/GAUSS-01391----GAUSS-01400.md index 95673448e..358e2e21f 100644 --- a/content/zh/docs/Developerguide/GAUSS-01391----GAUSS-01400.md +++ b/content/zh/docs/Developerguide/GAUSS-01391----GAUSS-01400.md @@ -4,25 +4,25 @@ GAUSS-01391: "INSERT trigger's WHEN condition cannot reference OLD values" SQLSTATE: 42P17 -错误原因:INSERT trigger的WHEN子句引用了OLD值。 +错误原因:INSERT trigger的 WHEN 子句引用了 OLD 值。 -解决办法:INSERT trigger的WHEN子句不能引用OLD值。 +解决办法:INSERT trigger的 WHEN 子句不能引用 OLD 值。 GAUSS-01392: "DELETE trigger's WHEN condition cannot reference NEW values" SQLSTATE: 42P17 -错误原因:DELETE trigger的WHEN子句引用了NEW值。 +错误原因:DELETE trigger的 WHEN 子句引用了 NEW 值。 -解决办法:DELETE trigger的WHEN子句不能引用NEW值。 +解决办法:DELETE trigger的 WHEN 子句不能引用 NEW 值。 GAUSS-01393: "BEFORE trigger's WHEN condition cannot reference NEW system columns" SQLSTATE: 0A000 -错误原因:BEFORE trigger的WHEN子句引用了NEW系统列值。 +错误原因:BEFORE trigger的 WHEN 子句引用了 NEW 系统列值。 -解决办法:BEFORE trigger的WHEN子句不能引用NEW系统列值。 +解决办法:BEFORE trigger的 WHEN 子句不能引用 NEW 系统列值。 GAUSS-01394: "trigger WHEN condition cannot contain references to other relations" @@ -36,17 +36,17 @@ GAUSS-01395: "function %s must return type 'trigger'" SQLSTATE: 42P17 -错误原因:trigger function的返回值不是trigger类型。 +错误原因:trigger function的返回值不是 trigger 类型。 -解决办法:trigger function的返回值必须是trigger类型。 +解决办法:trigger function的返回值必须是 trigger 类型。 GAUSS-01396: "trigger '%s' for relation '%s' already exists" SQLSTATE: 42710 -错误原因:relation上已经定义了同名的trigger。 +错误原因:relation上已经定义了同名的 trigger 。 -解决办法:修改create trigger的名称,不要与已有trigger重名。 +解决办法:修改 create trigger 的名称,不要与已有 trigger 重名。 GAUSS-01397: "confused about RI update function" @@ -76,7 +76,7 @@ GAUSS-01400: "trigger '%s' for table '%s' does not exist" SQLSTATE: 42704 -错误原因:按照名称去查找trigger,结果发现找不到。 +错误原因:按照名称去查找 trigger ,结果发现找不到。 -解决办法:指定存在的trigger名。 +解决办法:指定存在的 trigger 名。 diff --git a/content/zh/docs/Developerguide/GAUSS-01401----GAUSS-01410.md b/content/zh/docs/Developerguide/GAUSS-01401----GAUSS-01410.md index ca2dfd0d1..213c93c5e 100644 --- a/content/zh/docs/Developerguide/GAUSS-01401----GAUSS-01410.md +++ b/content/zh/docs/Developerguide/GAUSS-01401----GAUSS-01410.md @@ -4,9 +4,9 @@ GAUSS-01401: "permission denied: '%s' is a system trigger" SQLSTATE: 42501 -错误原因:使用非系统管理员帐号ENABLE/DISABLE系统trigger。 +错误原因:使用非系统管理员帐号ENABLE/DISABLE系统 trigger 。 -解决办法:使用系统管理员帐号ENABLE/DISABLE系统trigger。 +解决办法:使用系统管理员帐号ENABLE/DISABLE系统 trigger 。 GAUSS-01402: "tgargs is null in trigger for relation '%s'" @@ -20,7 +20,7 @@ GAUSS-01403: "trigger function %u returned null value" SQLSTATE: 39P01 -错误原因:系统内部错误。执行trigger函数,trigger函数返回了NULL值。 +错误原因:系统内部错误。执行 trigger 函数, trigger 函数返回了 NULL 值。 解决办法:请联系技术支持工程师提供技术支持。 @@ -30,7 +30,7 @@ SQLSTATE: 39P01 错误原因:BEFORE STATEMENT trigger有返回值。 -解决办法:检查BEFORE STATEMENT trigger的trigger函数,不能返回记录。 +解决办法:检查 BEFORE STATEMENT trigger 的 trigger 函数,不能返回记录。 GAUSS-01405: "could not serialize access due to concurrent update" diff --git a/content/zh/docs/Developerguide/GAUSS-01411----GAUSS-01420.md b/content/zh/docs/Developerguide/GAUSS-01411----GAUSS-01420.md index 8e08f19d2..e566cb8a5 100644 --- a/content/zh/docs/Developerguide/GAUSS-01411----GAUSS-01420.md +++ b/content/zh/docs/Developerguide/GAUSS-01411----GAUSS-01420.md @@ -4,25 +4,25 @@ GAUSS-01411: "cross-database references are not implemented: '%s.%s.%s'" SQLSTATE: 0A000 -错误原因:SET CONSTRAINT语句,在当前数据库中设置别的数据库的CONSTRAINT。 +错误原因:SET CONSTRAINT语句,在当前数据库中设置别的数据库的 CONSTRAINT 。 -解决办法:SET CONSTRAINT语句,不要在当前数据库中设置别的数据库的CONSTRAINT。 +解决办法:SET CONSTRAINT语句,不要在当前数据库中设置别的数据库的 CONSTRAINT 。 GAUSS-01412: "constraint '%s' is not deferrable" SQLSTATE: 42809 -错误原因:SET CONSTRAINT语句,constraint不是可延迟的。 +错误原因:SET CONSTRAINT语句, constraint 不是可延迟的。 -解决办法:SET CONSTRAINT语句,不能设置不可延迟的constraint为可延迟的。 +解决办法:SET CONSTRAINT语句,不能设置不可延迟的 constraint 为可延迟的。 GAUSS-01413: "constraint '%s' does not exist" SQLSTATE: 42704 -错误原因:SET CONSTRAINT语句,constraint不存在。 +错误原因:SET CONSTRAINT语句, constraint 不存在。 -解决办法:SET CONSTRAINT语句,必须指定存在的constraint。 +解决办法:SET CONSTRAINT语句,必须指定存在的 constraint 。 GAUSS-01414: "no triggers found for constraint with OID %u" diff --git a/content/zh/docs/Developerguide/GAUSS-01421----GAUSS-01430.md b/content/zh/docs/Developerguide/GAUSS-01421----GAUSS-01430.md index a94f0a96b..cc129d045 100644 --- a/content/zh/docs/Developerguide/GAUSS-01421----GAUSS-01430.md +++ b/content/zh/docs/Developerguide/GAUSS-01421----GAUSS-01430.md @@ -6,7 +6,7 @@ SQLSTATE: 55P03 错误原因:LOCK TABLE NOWAIT,在表上加不上锁。 -解决办法:改成LOCK TABLE。 +解决办法:改成 LOCK TABLE 。 GAUSS-01422: "cache lookup failed for access method %u" @@ -20,17 +20,17 @@ GAUSS-01423: "operator family '%s' does not exist for access method '%s'" SQLSTATE: 42704 -错误原因:ALTER OPERATOR FAMILY时,为指定access method服务的operator family不存在。 +错误原因:ALTER OPERATOR FAMILY时,为指定 access method 服务的 operator family 不存在。 -解决办法:查看已有的OPERATOR FAMILY,检查出错的ALTER OPERATOR FAMILY中指定的access method与OPERATOR FAMILY是否匹配。 +解决办法:查看已有的 OPERATOR FAMILY ,检查出错的 ALTER OPERATOR FAMILY 中指定的 access method 与 OPERATOR FAMILY 是否匹配。 GAUSS-01424: "operator family '%s' for access method '%s' already exists" SQLSTATE: 42710 -错误原因:CREATE OPERATOR FAMILY时,创建的OPERATOR FAMILY已经存在了。 +错误原因:CREATE OPERATOR FAMILY时,创建的 OPERATOR FAMILY 已经存在了。 -解决办法:CREATE OPERATOR FAMILY时,名称须与已有OPERATOR FAMILY不重复。 +解决办法:CREATE OPERATOR FAMILY时,名称须与已有 OPERATOR FAMILY 不重复。 GAUSS-01425: "must be system admin to create an operator class" @@ -44,25 +44,25 @@ GAUSS-01426: "invalid operator number %d, must be between 1 and %d" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR CLASS/ALTER OPERATOR FAMILY的OPERATOR子句中的strategy\_number小于1或者大于index\_method的最大strategy\_number。 +错误原因:CREATE OPERATOR CLASS/ALTER OPERATOR FAMILY的 OPERATOR 子句中的strategy\_number小于 1 或者大于index\_method的最大strategy\_number。 -解决办法:CREATE OPERATOR CLASS/ALTER OPERATOR FAMILY的OPERATOR子句中的strategy\_number须得在1和index\_method的最大strategy\_number之间。 +解决办法:CREATE OPERATOR CLASS/ALTER OPERATOR FAMILY的 OPERATOR 子句中的strategy\_number须得在 1 和index\_method的最大strategy\_number之间。 GAUSS-01427: "invalid procedure number %d, must be between 1 and %d" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR CLASS/ALTER OPERATOR FAMILY的FUNCTION子句中的support\_number小于1或者大于index\_method的最大support\_number。 +错误原因:CREATE OPERATOR CLASS/ALTER OPERATOR FAMILY的 FUNCTION 子句中的support\_number小于 1 或者大于index\_method的最大support\_number。 -解决办法:CREATE OPERATOR CLASS/ALTER OPERATOR FAMILY的FUNCTION子句中的support\_number须得在1和index\_method的最大support\_number之间。 +解决办法:CREATE OPERATOR CLASS/ALTER OPERATOR FAMILY的 FUNCTION 子句中的support\_number须得在 1 和index\_method的最大support\_number之间。 GAUSS-01428: "storage type specified more than once" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR CLASS包含了多个相同的STORAGE子句。 +错误原因:CREATE OPERATOR CLASS包含了多个相同的 STORAGE 子句。 -解决办法:CREATE OPERATOR CLASS的多个STORAGE子句不可重复。 +解决办法:CREATE OPERATOR CLASS的多个 STORAGE 子句不可重复。 GAUSS-01429: "unrecognized item type: %d" @@ -70,13 +70,13 @@ SQLSTATE: XX000 错误原因:系统不支持用户自定义操作符。 -解决办法:系统不支持用户自定义操作符,导致通过语法create operator创建自定义操作符失败。 +解决办法:系统不支持用户自定义操作符,导致通过语法 create operator 创建自定义操作符失败。 GAUSS-01430: "storage type cannot be different from data type for access method '%s'" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR CLASS的STORAGE子句指定的storage\_type与column\_type不同,但是指定的access\_method不允许这样。 +错误原因:CREATE OPERATOR CLASS的 STORAGE 子句指定的storage\_type与column\_type不同,但是指定的access\_method不允许这样。 -解决办法:CREATE OPERATOR CLASS的STORAGE子句指定的index中实际存储的数据类型storage\_type,须与access\_method的列数据类型column\_type相同。 +解决办法:CREATE OPERATOR CLASS的 STORAGE 子句指定的 index 中实际存储的数据类型storage\_type,须与access\_method的列数据类型column\_type相同。 diff --git a/content/zh/docs/Developerguide/GAUSS-01431----GAUSS-01440.md b/content/zh/docs/Developerguide/GAUSS-01431----GAUSS-01440.md index 4b547fc51..67aa9ec5b 100644 --- a/content/zh/docs/Developerguide/GAUSS-01431----GAUSS-01440.md +++ b/content/zh/docs/Developerguide/GAUSS-01431----GAUSS-01440.md @@ -4,17 +4,17 @@ GAUSS-01431: "operator class '%s' for access method '%s' already exists" SQLSTATE: 42710 -错误原因:CREATE OPERATOR CLASS,定义的operator class已经存在。 +错误原因:CREATE OPERATOR CLASS,定义的 operator class 已经存在。 -解决办法:CREATE OPERATOR CLASS,定义的operator class须与已有的operator class不同名。 +解决办法:CREATE OPERATOR CLASS,定义的 operator class 须与已有的 operator class 不同名。 GAUSS-01432: "could not make operator class '%s' be default for type %s" SQLSTATE: 42710 -错误原因:CREATE OPERATOR CLASS,使用关键字为数据类型创建默认的OPERATOR CLASS时,发现该数据类型已有默认的OPERATOR CLASS。 +错误原因:CREATE OPERATOR CLASS,使用关键字为数据类型创建默认的 OPERATOR CLASS 时,发现该数据类型已有默认的 OPERATOR CLASS 。 -解决办法:CREATE OPERATOR CLASS,使用关键字为数据类型创建默认的OPERATOR CLASS时,首先确认该数据类型没有默认的OPERATOR CLASS。 +解决办法:CREATE OPERATOR CLASS,使用关键字为数据类型创建默认的 OPERATOR CLASS 时,首先确认该数据类型没有默认的 OPERATOR CLASS 。 GAUSS-01433: "must be system admin to create an operator family" @@ -36,47 +36,47 @@ GAUSS-01435: "operator argument types must be specified in ALTER OPERATOR FAMILY SQLSTATE: 42601 -错误原因:ALTER OPERATOR FAMILY ... ADD OPERATOR,没有指定OPERATOR的参数类型。 +错误原因:ALTER OPERATOR FAMILY ... ADD OPERATOR,没有指定 OPERATOR 的参数类型。 -解决办法:ALTER OPERATOR FAMILY ... ADD OPERATOR,须得指定OPERATOR的参数类型。 +解决办法:ALTER OPERATOR FAMILY ... ADD OPERATOR,须得指定 OPERATOR 的参数类型。 GAUSS-01436: "STORAGE cannot be specified in ALTER OPERATOR FAMILY" SQLSTATE: 42601 -错误原因:ALTER OPERATOR FAMILY ... ADD中指定了STORAGE子句。 +错误原因:ALTER OPERATOR FAMILY ... ADD中指定了 STORAGE 子句。 -解决办法:ALTER OPERATOR FAMILY ... ADD中不能指定STORAGE子句。 +解决办法:ALTER OPERATOR FAMILY ... ADD中不能指定 STORAGE 子句。 GAUSS-01437: "one or two argument types must be specified" SQLSTATE: 42601 -错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP中指定的OPERATOR/FUNCTION参数超过了2个。 +错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP中指定的OPERATOR/FUNCTION参数超过了 2 个。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP中指定的OPERATOR/FUNCTION参数只能是1个或者2个。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP中指定的OPERATOR/FUNCTION参数只能是 1 个或者 2 个。 GAUSS-01438: "index operators must be binary" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD指定的OPERATOR不是二元操作符。 +错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD指定的 OPERATOR 不是二元操作符。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD指定的OPERATOR须得是二元操作符。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD指定的 OPERATOR 须得是二元操作符。 GAUSS-01439: "access method '%s' does not support ordering operators" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD,指定了sort operator,但是access\_method不支持排序。 +错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD,指定了 sort operator ,但是access\_method不支持排序。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD,只有access\_method支持排序操作符时,指定的OPERATOR才可以FOR ORDER,否则只能FOR SEARCH。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD,只有access\_method支持排序操作符时,指定的 OPERATOR 才可以 FOR ORDER ,否则只能 FOR SEARCH 。 GAUSS-01440: "index search operators must return Boolean" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD OPERATOR…FOR SEARCH,但是该操作符的返回值不是BOOL类型。 +错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD OPERATOR…FOR SEARCH,但是该操作符的返回值不是 BOOL 类型。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD OPERATOR…FOR SEARCH,则操作符的返回值必须是BOOL类型。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD OPERATOR…FOR SEARCH,则操作符的返回值必须是 BOOL 类型。 diff --git a/content/zh/docs/Developerguide/GAUSS-01441----GAUSS-01450.md b/content/zh/docs/Developerguide/GAUSS-01441----GAUSS-01450.md index 49ea4e4da..95f565f91 100644 --- a/content/zh/docs/Developerguide/GAUSS-01441----GAUSS-01450.md +++ b/content/zh/docs/Developerguide/GAUSS-01441----GAUSS-01450.md @@ -4,41 +4,41 @@ GAUSS-01441: "btree comparison procedures must have two arguments" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,access\_method是btree且指定的函数是btree比较函数,但是参数个数不是2个。 +错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,access\_method是 btree 且指定的函数是 btree 比较函数,但是参数个数不是 2 个。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,指定的函数是btree比较函数,则参数个数必须是2个。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,指定的函数是 btree 比较函数,则参数个数必须是 2 个。 GAUSS-01442: "btree comparison procedures must return integer" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,access\_method是btree且指定的函数是btree比较函数,但是返回值类型不是int。 +错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,access\_method是 btree 且指定的函数是 btree 比较函数,但是返回值类型不是 int 。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,指定的函数是btree比较函数,则返回值类型必须是int。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,指定的函数是 btree 比较函数,则返回值类型必须是 int 。 GAUSS-01443: "btree sort support procedures must accept type 'internal'" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,access\_method是btree且指定的函数是btree sort support函数,但是参数类型不是internal。 +错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,access\_method是 btree 且指定的函数是 btree sort support 函数,但是参数类型不是 internal 。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,指定的函数是btree sort support函数,则参数类型必须是internal。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,指定的函数是 btree sort support 函数,则参数类型必须是 internal 。 GAUSS-01444: "btree sort support procedures must return void" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,access\_method是btree且指定的函数是btree sort support函数,但是返回值类型不是void。 +错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,access\_method是 btree 且指定的函数是 btree sort support 函数,但是返回值类型不是 void 。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,指定的函数是btree sort support函数,则返回值类型必须是void。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,指定的函数是 btree sort support 函数,则返回值类型必须是 void 。 GAUSS-01446: "hash procedures must return integer" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,access\_method是hash,但是返回值类型不是int。 +错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,access\_method是 hash ,但是返回值类型不是 int 。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,access\_method是hash,则返回值类型必须是int。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD FUNCTION,access\_method是 hash ,则返回值类型必须是 int 。 GAUSS-01447: "associated data types must be specified for index support procedure" @@ -54,7 +54,7 @@ SQLSTATE: 42P17 错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP procedure,相同的函数出现了多次。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP procedure,确保一个SQL语句中不要出现重复函数。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP procedure,确保一个 SQL 语句中不要出现重复函数。 GAUSS-01449: "operator number %d for \(%s,%s\) appears more than once" @@ -62,13 +62,13 @@ SQLSTATE: 42P17 错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP operator,相同的操作符出现了多次。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP operator,确保一个SQL语句中不要出现重复的操作符。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP operator,确保一个 SQL 语句中不要出现重复的操作符。 GAUSS-01450: "operator %d\(%s,%s\) already exists in operator family '%s'" SQLSTATE: 42710 -错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP operator,已经存在了相同的operator。 +错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP operator,已经存在了相同的 operator 。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP operator之前,确保添加的operator在指定的operator family中尚未存在。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP operator之前,确保添加的 operator 在指定的 operator family 中尚未存在。 diff --git a/content/zh/docs/Developerguide/GAUSS-01451----GAUSS-01460.md b/content/zh/docs/Developerguide/GAUSS-01451----GAUSS-01460.md index 3e1767393..b7f42d69e 100644 --- a/content/zh/docs/Developerguide/GAUSS-01451----GAUSS-01460.md +++ b/content/zh/docs/Developerguide/GAUSS-01451----GAUSS-01460.md @@ -4,25 +4,25 @@ GAUSS-01451: "function %d\(%s,%s\) already exists in operator family '%s'" SQLSTATE: 42710 -错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP function,已经存在了相同的function。 +错误原因:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP function,已经存在了相同的 function 。 -解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP function之前,确保添加的function在指定的operator family中尚未存在。 +解决办法:CREATE OPERATOR CLASS、ALTER OPERATOR FAMILY ... ADD/DROP function之前,确保添加的 function 在指定的 operator family 中尚未存在。 GAUSS-01452: "operator %d\(%s,%s\) does not exist in operator family '%s'" SQLSTATE: 42704 -错误原因:ALTER OPERATOR FAMILY ... DROP operator,但是指定的operator不存在。 +错误原因:ALTER OPERATOR FAMILY ... DROP operator,但是指定的 operator 不存在。 -解决办法:ALTER OPERATOR FAMILY ... DROP operator,必须确保指定的operator在指定的operator family中存在。 +解决办法:ALTER OPERATOR FAMILY ... DROP operator,必须确保指定的 operator 在指定的 operator family 中存在。 GAUSS-01453: "function %d\(%s,%s\) does not exist in operator family '%s'" SQLSTATE: 42704 -错误原因:ALTER OPERATOR FAMILY ... DROP function,但是指定的function不存在。 +错误原因:ALTER OPERATOR FAMILY ... DROP function,但是指定的 function 不存在。 -解决办法:ALTER OPERATOR FAMILY ... DROP function,必须确保指定的function在指定的operator family中存在。 +解决办法:ALTER OPERATOR FAMILY ... DROP function,必须确保指定的 function 在指定的 operator family 中存在。 GAUSS-01454: "could not find tuple for amop entry %u" @@ -44,39 +44,39 @@ GAUSS-01456: "operator class '%s' for access method '%s' already exists in schem SQLSTATE: 42710 -错误原因:ALTER OPERATOR CLASS name USING index\_method RENAME TO new\_name,但是新名称在schema中已经存在了。 +错误原因:ALTER OPERATOR CLASS name USING index\_method RENAME TO new\_name,但是新名称在 schema 中已经存在了。 -解决办法:ALTER OPERATOR CLASS name USING index\_method RENAME TO new\_name,首先确保新名称在schema中不存在。 +解决办法:ALTER OPERATOR CLASS name USING index\_method RENAME TO new\_name,首先确保新名称在 schema 中不存在。 GAUSS-01457: "operator family '%s' for access method '%s' already exists in schema '%s'" SQLSTATE: 42710 -错误原因:ALTER OPERATOR FAMILY name USING index\_method RENAME TO new\_name,但是新名称在schema中已经存在了。 +错误原因:ALTER OPERATOR FAMILY name USING index\_method RENAME TO new\_name,但是新名称在 schema 中已经存在了。 -解决办法:ALTER OPERATOR FAMILY name USING index\_method RENAME TO new\_name,首先确保新名称在schema中不存在。 +解决办法:ALTER OPERATOR FAMILY name USING index\_method RENAME TO new\_name,首先确保新名称在 schema 中不存在。 GAUSS-01458: "SETOF type not allowed for operator argument" SQLSTATE: 42P13 -错误原因:CREATE OPERATOR,左参数或右参数是SETOF类型(集合)。 +错误原因:CREATE OPERATOR,左参数或右参数是 SETOF 类型(集合)。 -解决办法:CREATE OPERATOR,左参数和右参数都不能是SETOF类型(集合)。 +解决办法:CREATE OPERATOR,左参数和右参数都不能是 SETOF 类型(集合)。 GAUSS-01459: "operator procedure must be specified" SQLSTATE: 42P13 -错误原因:CREATE OPERATOR,没有指定procedure。 +错误原因:CREATE OPERATOR,没有指定 procedure 。 -解决办法:CREATE OPERATOR,必须指定procedure。 +解决办法:CREATE OPERATOR,必须指定 procedure 。 GAUSS-01460: "at least one of leftarg or rightarg must be specified" SQLSTATE: 42P13 -错误原因:CREATE OPERATOR,既没有指定LEFTARG,也没有指定RIGHTARG。 +错误原因:CREATE OPERATOR,既没有指定 LEFTARG ,也没有指定 RIGHTARG 。 -解决办法:CREATE OPERATOR,LEFTARG和RIGHTARG,起码指定一个。 +解决办法:CREATE OPERATOR, LEFTARG 和 RIGHTARG ,起码指定一个。 diff --git a/content/zh/docs/Developerguide/GAUSS-01461----GAUSS-01470.md b/content/zh/docs/Developerguide/GAUSS-01461----GAUSS-01470.md index 2dad16274..38f4267fe 100644 --- a/content/zh/docs/Developerguide/GAUSS-01461----GAUSS-01470.md +++ b/content/zh/docs/Developerguide/GAUSS-01461----GAUSS-01470.md @@ -4,33 +4,33 @@ GAUSS-01461: "restriction estimator function %s must return type 'float8'" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR,指定的RESTRICT函数返回值不是float8类型。 +错误原因:CREATE OPERATOR,指定的 RESTRICT 函数返回值不是 float8 类型。 -解决办法:CREATE OPERATOR,指定的RESTRICT函数返回值必须是float8类型。 +解决办法:CREATE OPERATOR,指定的 RESTRICT 函数返回值必须是 float8 类型。 GAUSS-01462: "join estimator function %s must return type 'float8'" SQLSTATE: 42P17 -错误原因:CREATE OPERATOR,指定的JOIN函数返回值不是float8类型。 +错误原因:CREATE OPERATOR,指定的 JOIN 函数返回值不是 float8 类型。 -解决办法:CREATE OPERATOR,指定的JOIN函数返回值必须是float8类型。 +解决办法:CREATE OPERATOR,指定的 JOIN 函数返回值必须是 float8 类型。 GAUSS-01464: "invalid cursor name: must not be empty" SQLSTATE: 34000 -错误原因:DECLARE/CLOSE/FETCH/MOVE CURSOR时,没有指定CURSOR的名称。 +错误原因:DECLARE/CLOSE/FETCH/MOVE CURSOR时,没有指定 CURSOR 的名称。 -解决办法:DECLARE/CLOSE/FETCH/MOVE CURSOR时,必须指定CURSOR的名称。 +解决办法:DECLARE/CLOSE/FETCH/MOVE CURSOR时,必须指定 CURSOR 的名称。 GAUSS-01465: "cursor '%s' does not exist" SQLSTATE: 34000 -错误原因:FETCH/MOVE/CLOSE CURSOR/CURRENT OF/XML CURSOR操作时,指定CURSOR的名称不存在。 +错误原因:FETCH/MOVE/CLOSE CURSOR/CURRENT OF/XML CURSOR操作时,指定 CURSOR 的名称不存在。 -解决办法:FETCH/MOVE/CLOSE CURSOR/CURRENT OF/XML CURSOR操作时,指定CURSOR的名称必须存在。 +解决办法:FETCH/MOVE/CLOSE CURSOR/CURRENT OF/XML CURSOR操作时,指定 CURSOR 的名称必须存在。 GAUSS-01466: "portal '%s' cannot be run" @@ -60,15 +60,15 @@ GAUSS-01469: "unrecognized rename stmt type: %d" SQLSTATE: XX000 -错误原因:ALTER..RENAME TO..语法中Alter对象类型错误。 +错误原因:ALTER..RENAME TO..语法中 Alter 对象类型错误。 -解决办法:请参照《SQL指南》中ALTER..RENAME TO..语法对应Alter对象的类型。 +解决办法:请参照《SQL指南》中ALTER..RENAME TO..语法对应 Alter 对象的类型。 GAUSS-01470: "unrecognized AlterObjectSchemaStmt type: %d" SQLSTATE: XX000 -错误原因:ALTER..SET SCHEMA..语法中Alter对象类型错误。 +错误原因:ALTER..SET SCHEMA..语法中 Alter 对象类型错误。 -解决办法:请参照《SQL指南》中ALTER..SET SCHEMA..语法对应Alter对象的类型。 +解决办法:请参照《SQL指南》中ALTER..SET SCHEMA..语法对应 Alter 对象的类型。 diff --git a/content/zh/docs/Developerguide/GAUSS-01471----GAUSS-01480.md b/content/zh/docs/Developerguide/GAUSS-01471----GAUSS-01480.md index 5ae538a9c..33c741299 100644 --- a/content/zh/docs/Developerguide/GAUSS-01471----GAUSS-01480.md +++ b/content/zh/docs/Developerguide/GAUSS-01471----GAUSS-01480.md @@ -4,47 +4,47 @@ GAUSS-01471: "cache lookup failed for object %u of catalog '%s'" SQLSTATE: XX000 -错误原因:ALTER..SET TABLESPACE..语法处理过程中从Cache获取Alter对象失败。 +错误原因:ALTER..SET TABLESPACE..语法处理过程中从 Cache 获取 Alter 对象失败。 -解决办法:由于系统Cache存在异常导致根据Alter对象OID从Cache获取对象tuple失败,请联系技术支持工程师提供技术支持。 +解决办法:由于系统 Cache 存在异常导致根据 Alter 对象 OID 从 Cache 获取对象 tuple 失败,请联系技术支持工程师提供技术支持。 GAUSS-01472: "must be system admin to set schema of %s" SQLSTATE: 42501 -错误原因:修改对象的namespace,但是使用的帐户不是系统管理员。 +错误原因:修改对象的 namespace ,但是使用的帐户不是系统管理员。 -解决办法:修改对象的namespace,使用的帐户必须是系统管理员。 +解决办法:修改对象的 namespace ,使用的帐户必须是系统管理员。 GAUSS-01473: "%s already exists in schema '%s'" SQLSTATE: 42710 -错误原因:修改对象的namespace,但是对象在新的schema内已经存在。 +错误原因:修改对象的 namespace ,但是对象在新的 schema 内已经存在。 -解决办法:修改对象的namespace,确保对象在新的schema内不存在。 +解决办法:修改对象的 namespace ,确保对象在新的 schema 内不存在。 GAUSS-01474: "unrecognized AlterOwnerStmt type: %d" SQLSTATE: XX000 -错误原因:ALTER..OWNER TO..语法中Alter对象类型错误。 +错误原因:ALTER..OWNER TO..语法中 Alter 对象类型错误。 -解决办法:请参照《SQL指南》中ALTER..OWNER TO..语法对应Alter对象的类型。 +解决办法:请参照《SQL指南》中ALTER..OWNER TO..语法对应 Alter 对象的类型。 GAUSS-01475: "Table %s does not support sampling operation for analyze." SQLSTATE: 42703 -错误原因:对于gds外表不支持analyze采样操作。 +错误原因:对于 gds 外表不支持 analyze 采样操作。 -解决办法:gds外表不支持analyze。 +解决办法:gds外表不支持 analyze 。 GAUSS-01476: "unsupported datatype" SQLSTATE: XX000 -错误原因:对列存表进行analyze时,列存表中包含不支持的数据类型。 +错误原因:对列存表进行 analyze 时,列存表中包含不支持的数据类型。 解决办法:请检查列存表定义是否正常,如果异常请重新创建列存表。如果仍然上报该错误,请联系技术支持工程师提供技术支持。 @@ -52,23 +52,23 @@ GAUSS-01477: "extension '%s' does not exist" SQLSTATE: 42704 -错误原因:CREATE EXTENSION或者ALTER EXTENSION时,发现了EXTENSION不存在的情况。 +错误原因:CREATE EXTENSION或者 ALTER EXTENSION 时,发现了 EXTENSION 不存在的情况。 -解决办法:CREATE EXTENSION时,确保依赖的EXTENSION存在;ALTER EXTENSION时,只能ALTER已经存在的EXTENSION。 +解决办法:CREATE EXTENSION时,确保依赖的 EXTENSION 存在;ALTER EXTENSION时,只能 ALTER 已经存在的 EXTENSION 。 GAUSS-01478: "invalid extension name: '%s'" SQLSTATE: 22023 -错误原因:CREATE EXTENSION时,EXTENSION名称非法。 +错误原因:CREATE EXTENSION时, EXTENSION 名称非法。 -解决办法:CREATE EXTENSION时,EXTENSION名称不能出现以下4种情况之一:(1)无名;(2)包含--;(3)以-开头或结束;(4)包含文件夹间隔符如/或者\\\\。 +解决办法:CREATE EXTENSION时, EXTENSION 名称不能出现以下 4 种情况之一:(1)无名;(2)包含--;(3)以-开头或结束;(4)包含文件夹间隔符如/或者\\\\。 GAUSS-01479: "invalid extension version name: '%s'" SQLSTATE: 22023 -错误原因:CREATE EXTENSION时,VERSION名称非法,或ALTER EXTENSION时,new\_version/default\_version非法。 +错误原因:CREATE EXTENSION时, VERSION 名称非法,或 ALTER EXTENSION 时,new\_version/default\_version非法。 -解决办法:CREATE EXTENSION时或ALTER EXTENSION时,version/new\_version/default\_version不能出现以下情况:(1)无名;(2)包含--;(3)以-开头或结束;(4)包含文件夹间隔符如/或者\\\\。 +解决办法:CREATE EXTENSION时或 ALTER EXTENSION 时,version/new\_version/default\_version不能出现以下情况:(1)无名;(2)包含--;(3)以-开头或结束;(4)包含文件夹间隔符如/或者\\\\。 diff --git a/content/zh/docs/Developerguide/GAUSS-01481----GAUSS-01490.md b/content/zh/docs/Developerguide/GAUSS-01481----GAUSS-01490.md index 3179fe854..c26b170bc 100644 --- a/content/zh/docs/Developerguide/GAUSS-01481----GAUSS-01490.md +++ b/content/zh/docs/Developerguide/GAUSS-01481----GAUSS-01490.md @@ -4,73 +4,73 @@ GAUSS-01481: "parameter '%s' cannot be set in a secondary extension control file SQLSTATE: 42601 -错误原因:CREATE EXTENSION时或ALTER EXTENSION时或执行EXTENSION相关的系统函数时,在secondary control file中指定了default\_version或者directory参数。 +错误原因:CREATE EXTENSION时或 ALTER EXTENSION 时或执行 EXTENSION 相关的系统函数时,在 secondary control file 中指定了default\_version或者 directory 参数。 -解决办法:CREATE EXTENSION时或ALTER EXTENSION时或执行EXTENSION相关的系统函数时,不能在secondary control file中指定default\_version或者directory参数。 +解决办法:CREATE EXTENSION时或 ALTER EXTENSION 时或执行 EXTENSION 相关的系统函数时,不能在 secondary control file 中指定default\_version或者 directory 参数。 GAUSS-01482: "parameter '%s' requires a Boolean value" SQLSTATE: 22023 -错误原因:\(1\)CREATE EXTENSION时或ALTER EXTENSION时或执行EXTENSION相关的系统函数时,在控制文件中没有给参数relocatable/sysadmin指定一个BOOL值。 +错误原因:\(1\)CREATE EXTENSION时或 ALTER EXTENSION 时或执行 EXTENSION 相关的系统函数时,在控制文件中没有给参数relocatable/sysadmin指定一个 BOOL 值。 -解决办法:\(1\)CREATE EXTENSION时或ALTER EXTENSION时或执行EXTENSION相关的系统函数时,在控制文件中,必须给参数relocatable/sysadmin指定一个BOOL值。 +解决办法:\(1\)CREATE EXTENSION时或 ALTER EXTENSION 时或执行 EXTENSION 相关的系统函数时,在控制文件中,必须给参数relocatable/sysadmin指定一个 BOOL 值。 GAUSS-01483: "'%s' is not a valid encoding name" SQLSTATE: 42704 -错误原因:CREATE EXTENSION时或ALTER EXTENSION时或执行EXTENSION相关的系统函数时,在控制文件中没有给参数encoding指定一个合法的encoding名称。 +错误原因:CREATE EXTENSION时或 ALTER EXTENSION 时或执行 EXTENSION 相关的系统函数时,在控制文件中没有给参数 encoding 指定一个合法的 encoding 名称。 -解决办法:CREATE EXTENSION时或ALTER EXTENSION时或执行EXTENSION相关的系统函数时,在控制文件中必须给参数encoding指定一个合法的encoding名称。 +解决办法:CREATE EXTENSION时或 ALTER EXTENSION 时或执行 EXTENSION 相关的系统函数时,在控制文件中必须给参数 encoding 指定一个合法的 encoding 名称。 GAUSS-01484: "parameter '%s' must be a list of extension names" SQLSTATE: 22023 -错误原因:CREATE EXTENSION时或ALTER EXTENSION时或执行EXTENSION相关的系统函数时,在控制文件中没有给参数requires指定a list of extension names +错误原因:CREATE EXTENSION时或 ALTER EXTENSION 时或执行 EXTENSION 相关的系统函数时,在控制文件中没有给参数 requires 指定a list of extension names -解决办法:CREATE EXTENSION时或ALTER EXTENSION时或执行EXTENSION相关的系统函数时,在控制文件中必须给参数requires指定a list of extension names +解决办法:CREATE EXTENSION时或 ALTER EXTENSION 时或执行 EXTENSION 相关的系统函数时,在控制文件中必须给参数 requires 指定a list of extension names GAUSS-01485: "unrecognized parameter '%s' in file '%s'" SQLSTATE: 42601 -错误原因:CREATE EXTENSION时或ALTER EXTENSION时或执行EXTENSION相关的系统函数时,在控制文件中指定了非法参数。 +错误原因:CREATE EXTENSION时或 ALTER EXTENSION 时或执行 EXTENSION 相关的系统函数时,在控制文件中指定了非法参数。 -解决办法:CREATE EXTENSION时或ALTER EXTENSION时或执行EXTENSION相关的系统函数时,在控制文件中仅可指定如下参数。directory/default\_version/module\_pathname/comment/schema/relocatable/sysadmin/encoding/requires。 +解决办法:CREATE EXTENSION时或 ALTER EXTENSION 时或执行 EXTENSION 相关的系统函数时,在控制文件中仅可指定如下参数。directory/default\_version/module\_pathname/comment/schema/relocatable/sysadmin/encoding/requires。 GAUSS-01486: "parameter 'schema' cannot be specified when 'relocatable' is true" SQLSTATE: 42601 -错误原因:CREATE EXTENSION时或ALTER EXTENSION时或执行EXTENSION相关的系统函数时,在控制文件中,当指定relocatable为true时,同时又指定了schema参数。 +错误原因:CREATE EXTENSION时或 ALTER EXTENSION 时或执行 EXTENSION 相关的系统函数时,在控制文件中,当指定 relocatable 为 true 时,同时又指定了 schema 参数。 -解决办法:CREATE EXTENSION时或ALTER EXTENSION时或执行EXTENSION相关的系统函数时,在控制文件中,当指定relocatable为true时,不能再指定了schema参数。 +解决办法:CREATE EXTENSION时或 ALTER EXTENSION 时或执行 EXTENSION 相关的系统函数时,在控制文件中,当指定 relocatable 为 true 时,不能再指定了 schema 参数。 GAUSS-01487: "transaction control statements are not allowed within an extension script" SQLSTATE: 0A000 -错误原因:CREATE EXTENSION时或ALTER EXTENSION时,EXTENSION的SQL脚本文件中出现了控制事务的SQL语句。 +错误原因:CREATE EXTENSION时或 ALTER EXTENSION 时, EXTENSION 的 SQL 脚本文件中出现了控制事务的 SQL 语句。 -解决办法:CREATE EXTENSION时或ALTER EXTENSION时,EXTENSION的SQL脚本文件中不能使用控制事务的SQL语句。 +解决办法:CREATE EXTENSION时或 ALTER EXTENSION 时, EXTENSION 的 SQL 脚本文件中不能使用控制事务的 SQL 语句。 GAUSS-01488: "permission denied to create extension '%s'" SQLSTATE: 42501 -错误原因:CREATE EXTENSION时,EXTENSION的控制文件要求必须以系统管理员权限运行,但是实际帐户不是系统管理员。 +错误原因:CREATE EXTENSION时, EXTENSION 的控制文件要求必须以系统管理员权限运行,但是实际帐户不是系统管理员。 -解决办法:CREATE EXTENSION时,EXTENSION的控制文件要求必须以系统管理员权限运行,则实际帐户也必须是系统管理员。 +解决办法:CREATE EXTENSION时, EXTENSION 的控制文件要求必须以系统管理员权限运行,则实际帐户也必须是系统管理员。 GAUSS-01489: "permission denied to update extension '%s'" SQLSTATE: 42501 -错误原因:ALTER EXTENSION时,EXTENSION的控制文件要求必须以系统管理员权限运行,但是实际帐户不是系统管理员。 +错误原因:ALTER EXTENSION时, EXTENSION 的控制文件要求必须以系统管理员权限运行,但是实际帐户不是系统管理员。 -解决办法:ALTER EXTENSION时,EXTENSION的控制文件要求必须以系统管理员权限运行,则实际帐户也必须是系统管理员。 +解决办法:ALTER EXTENSION时, EXTENSION 的控制文件要求必须以系统管理员权限运行,则实际帐户也必须是系统管理员。 GAUSS-01490: "extension '%s' has no update path from version '%s' to version '%s'" @@ -78,5 +78,5 @@ SQLSTATE: 22023 错误原因:CREATE EXTENSION/ALTER EXTENSION时,不存在从旧版本到新版本的更新路径。 -解决办法:CREATE EXTENSION/ALTER EXTENSION时,如果有版本FROM old\_version、UPDATE TO new\_version,确保新旧版本号对应的SQL文件名称和路径的正确性。 +解决办法:CREATE EXTENSION/ALTER EXTENSION时,如果有版本FROM old\_version、UPDATE TO new\_version,确保新旧版本号对应的 SQL 文件名称和路径的正确性。 diff --git a/content/zh/docs/Developerguide/GAUSS-01491----GAUSS-01500.md b/content/zh/docs/Developerguide/GAUSS-01491----GAUSS-01500.md index d117bc8bd..70ea885fd 100644 --- a/content/zh/docs/Developerguide/GAUSS-01491----GAUSS-01500.md +++ b/content/zh/docs/Developerguide/GAUSS-01491----GAUSS-01500.md @@ -4,9 +4,9 @@ GAUSS-01492: "nested CREATE EXTENSION is not supported" SQLSTATE: 0A000 -错误原因:CREATE EXTENSION时,SQL中嵌套创建EXTENSION。 +错误原因:CREATE EXTENSION时, SQL 中嵌套创建 EXTENSION 。 -解决办法:CREATE EXTENSION时,SQL中不允许嵌套创建EXTENSION。 +解决办法:CREATE EXTENSION时, SQL 中不允许嵌套创建 EXTENSION 。 GAUSS-01493: "unrecognized option: %s" @@ -20,55 +20,55 @@ GAUSS-01494: "version to install must be specified" SQLSTATE: 22023 -错误原因:CREATE/ALTER EXTENSION时,既没有指定new version,控制文件中也没有指定default version。 +错误原因:CREATE/ALTER EXTENSION时,既没有指定 new version ,控制文件中也没有指定 default version 。 -解决办法:CREATE/ALTER EXTENSION时,要么指定new version,要么在控制文件中指定default version。 +解决办法:CREATE/ALTER EXTENSION时,要么指定 new version ,要么在控制文件中指定 default version 。 GAUSS-01495: "FROM version must be different from installation target version '%s'" SQLSTATE: 22023 -错误原因:CREATE EXTENSION时,FROM版本号和VERSION版本号指定的版本号相同。 +错误原因:CREATE EXTENSION时, FROM 版本号和 VERSION 版本号指定的版本号相同。 -解决办法:CREATE EXTENSION时,FROM版本号和VERSION版本号指定的版本号必须不同。 +解决办法:CREATE EXTENSION时, FROM 版本号和 VERSION 版本号指定的版本号必须不同。 GAUSS-01496: "extension '%s' must be installed in schema '%s'" SQLSTATE: 0A000 -错误原因:CREATE EXTENSION时,WITH SCHEMA指定的schema和控制文件中指定的schema不同。 +错误原因:CREATE EXTENSION时, WITH SCHEMA 指定的 schema 和控制文件中指定的 schema 不同。 -解决办法:CREATE EXTENSION时,WITH SCHEMA指定的schema必须与控制文件中指定的schema相同。 +解决办法:CREATE EXTENSION时, WITH SCHEMA 指定的 schema 必须与控制文件中指定的 schema 相同。 GAUSS-01497: "there is no default creation target" SQLSTATE: XX000 -错误原因:CREATE EXTENSION语法中当不指定SCHEMA选项时,默认当前缺省的SCHEMA,但当前缺省的SCHEMA路径为空值。 +错误原因:CREATE EXTENSION语法中当不指定 SCHEMA 选项时,默认当前缺省的 SCHEMA ,但当前缺省的 SCHEMA 路径为空值。 -解决办法:当前缺省的SCHEMA为空,当前系统存在异常或存在人为删除当前SCHEMA的目录导致,请联系技术支持工程师提供技术支持。 +解决办法:当前缺省的 SCHEMA 为空,当前系统存在异常或存在人为删除当前 SCHEMA 的目录导致,请联系技术支持工程师提供技术支持。 GAUSS-01498: "required extension '%s' is not installed" SQLSTATE: 42704 -错误原因:CREATE EXTENSION/ALTER EXTENSION时,控制文件中指定的依赖的某个EXTENSION尚未安装。 +错误原因:CREATE EXTENSION/ALTER EXTENSION时,控制文件中指定的依赖的某个 EXTENSION 尚未安装。 -解决办法:CREATE EXTENSION/ALTER EXTENSION时,控制文件中指定的所有EXTENSION必须已经安装,已安装的EXTENSION可以通过\\dx查看。 +解决办法:CREATE EXTENSION/ALTER EXTENSION时,控制文件中指定的所有 EXTENSION 必须已经安装,已安装的 EXTENSION 可以通过\\dx查看。 GAUSS-01499: "cannot drop extension '%s' because it is being modified" SQLSTATE: 55000 -错误原因:DROP EXTENSION时,EXTENSION正在被别的session修改。 +错误原因:DROP EXTENSION时, EXTENSION 正在被别的 session 修改。 -解决办法:DROP EXTENSION时,EXTENSION不能正在被别的session修改。 +解决办法:DROP EXTENSION时, EXTENSION 不能正在被别的 session 修改。 GAUSS-01500: "pg\_extension\_config\_dump\(\) can only be called from an SQL script executed by CREATE EXTENSION" SQLSTATE: 0A000 -错误原因:pg\_extension\_config\_dump没有在CREATE EXTENSION的SQL脚本文件中执行。 +错误原因:pg\_extension\_config\_dump没有在 CREATE EXTENSION 的 SQL 脚本文件中执行。 -解决办法:pg\_extension\_config\_dump只能在CREATE EXTENSION的SQL脚本文件中执行。 +解决办法:pg\_extension\_config\_dump只能在 CREATE EXTENSION 的 SQL 脚本文件中执行。 diff --git a/content/zh/docs/Developerguide/GAUSS-01501----GAUSS-01510.md b/content/zh/docs/Developerguide/GAUSS-01501----GAUSS-01510.md index 6604bab9d..3683d7249 100644 --- a/content/zh/docs/Developerguide/GAUSS-01501----GAUSS-01510.md +++ b/content/zh/docs/Developerguide/GAUSS-01501----GAUSS-01510.md @@ -4,25 +4,25 @@ GAUSS-01501: "OID %u does not refer to a table" SQLSTATE: 42P01 -错误原因:pg\_extension\_config\_dump\(\)函数的参数1不是pg\_class内定义的表。 +错误原因:pg\_extension\_config\_dump\(\)函数的参数 1 不是pg\_class内定义的表。 -解决办法:pg\_extension\_config\_dump\(\)函数的参数1必须是pg\_class内定义的表。 +解决办法:pg\_extension\_config\_dump\(\)函数的参数 1 必须是pg\_class内定义的表。 GAUSS-01502: "table '%s' is not a member of the extension being created" SQLSTATE: 55000 -错误原因:pg\_extension\_config\_dump\(\)函数的参数1不是正在创建的EXTENSION的成员。 +错误原因:pg\_extension\_config\_dump\(\)函数的参数 1 不是正在创建的 EXTENSION 的成员。 -解决办法:pg\_extension\_config\_dump\(\)函数的参数1必须是正在创建的EXTENSION的成员。 +解决办法:pg\_extension\_config\_dump\(\)函数的参数 1 必须是正在创建的 EXTENSION 的成员。 GAUSS-01503: "extension with oid %u does not exist" SQLSTATE: XX000 -错误原因:根据当前extension对象的OID从Cache中查找系统表pg\_extension的tuple错误。 +错误原因:根据当前 extension 对象的 OID 从 Cache 中查找系统表pg\_extension的 tuple 错误。 -解决办法:由于系统Cache存在异常导致根据extension对象OID从Cache获取对象tuple失败,请联系技术支持工程师提供技术支持。 +解决办法:由于系统 Cache 存在异常导致根据 extension 对象 OID 从 Cache 获取对象 tuple 失败,请联系技术支持工程师提供技术支持。 GAUSS-01504: "extconfig is not a 1-D Oid array" @@ -44,23 +44,23 @@ GAUSS-01507: "extension name cannot be qualified" SQLSTATE: 42601 -错误原因:ALTER EXTENSION SET SCHEMA,指定EXTENSION名称时,extension的前面加了schema名称。 +错误原因:ALTER EXTENSION SET SCHEMA,指定 EXTENSION 名称时, extension 的前面加了 schema 名称。 -解决办法:ALTER EXTENSION SET SCHEMA,指定EXTENSION名称时,extension的前面不可以加schema名称。 +解决办法:ALTER EXTENSION SET SCHEMA,指定 EXTENSION 名称时, extension 的前面不可以加 schema 名称。 GAUSS-01508: "cannot move extension '%s' into schema '%s' because the extension contains the schema" SQLSTATE: 55000 -错误原因:ALTER EXTENSION SET SCHEMA,新的schema是当前EXTENSION的成员。 +错误原因:ALTER EXTENSION SET SCHEMA,新的 schema 是当前 EXTENSION 的成员。 -解决办法:ALTER EXTENSION SET SCHEMA,新的schema不可以是当前EXTENSION的成员。 +解决办法:ALTER EXTENSION SET SCHEMA,新的 schema 不可以是当前 EXTENSION 的成员。 GAUSS-01509: "extension '%s' does not support SET SCHEMA" SQLSTATE: 0A000 -错误原因:ALTER EXTENSION SET SCHEMA,当前EXTENSION的relocatable参数为false。 +错误原因:ALTER EXTENSION SET SCHEMA,当前 EXTENSION 的 relocatable 参数为 false 。 -解决办法:只对EXTENSION的relocatable参数为true的EXTENSION执行ALTER EXTENSION SET SCHEMA。 +解决办法:只对 EXTENSION 的 relocatable 参数为 true 的 EXTENSION 执行 ALTER EXTENSION SET SCHEMA 。 diff --git a/content/zh/docs/Developerguide/GAUSS-01511----GAUSS-01520.md b/content/zh/docs/Developerguide/GAUSS-01511----GAUSS-01520.md index cc895f5f3..a11784ab4 100644 --- a/content/zh/docs/Developerguide/GAUSS-01511----GAUSS-01520.md +++ b/content/zh/docs/Developerguide/GAUSS-01511----GAUSS-01520.md @@ -12,25 +12,25 @@ GAUSS-01513: "%s is already a member of extension '%s'" SQLSTATE: 55000 -错误原因:\(1\)ALTER EXTENSION ADD,添加的对象已经是EXTENSION的成员了。\(2\)CREATE EXTENSION,EXTENSION的SQL脚本文件内创建的某个对象已经是别的EXTENSION的成员了。 +错误原因:\(1\)ALTER EXTENSION ADD,添加的对象已经是 EXTENSION 的成员了。\(2\)CREATE EXTENSION, EXTENSION 的 SQL 脚本文件内创建的某个对象已经是别的 EXTENSION 的成员了。 -解决办法:\(1\)ALTER EXTENSION ADD,添加的对象必须尚未是EXTENSION的成员了。\(2\)CREATE EXTENSION,EXTENSION的SQL脚本文件内创建的所有对象都不能是别的EXTENSION的成员。 +解决办法:\(1\)ALTER EXTENSION ADD,添加的对象必须尚未是 EXTENSION 的成员了。\(2\)CREATE EXTENSION, EXTENSION 的 SQL 脚本文件内创建的所有对象都不能是别的 EXTENSION 的成员。 GAUSS-01514: "cannot add schema '%s' to extension '%s' because the schema contains the extension" SQLSTATE: 55000 -错误原因:ALTER EXTENSION ADD,ADD的schema就是EXTENSION所在的schema。 +错误原因:ALTER EXTENSION ADD, ADD 的 schema 就是 EXTENSION 所在的 schema 。 -解决办法:ALTER EXTENSION ADD,ADD的schema不能是EXTENSION所在的schema。 +解决办法:ALTER EXTENSION ADD, ADD 的 schema 不能是 EXTENSION 所在的 schema 。 GAUSS-01515: "%s is not a member of extension '%s'" SQLSTATE: 55000 -错误原因:ALTER EXTENSION DROP,删除的对象尚不是EXTENSION的成员。 +错误原因:ALTER EXTENSION DROP,删除的对象尚不是 EXTENSION 的成员。 -解决办法:ALTER EXTENSION DROP,删除的对象必须是EXTENSION的成员。 +解决办法:ALTER EXTENSION DROP,删除的对象必须是 EXTENSION 的成员。 GAUSS-01517: "cache lookup failed for extension %u" @@ -44,23 +44,23 @@ GAUSS-01518: "no security label providers have been loaded" SQLSTATE: 22023 -错误原因:执行SECURITY LABEL语句,没有加载SECURITY LABEL EXTENSION。 +错误原因:执行 SECURITY LABEL 语句,没有加载 SECURITY LABEL EXTENSION 。 -解决办法:执行SECURITY LABEL之前,加载相关SECURITY LABEL的EXTENSION。 +解决办法:执行 SECURITY LABEL 之前,加载相关 SECURITY LABEL 的 EXTENSION 。 GAUSS-01519: "must specify provider when multiple security label providers have been loaded" SQLSTATE: 22023 -错误原因:执行SECURITY LABEL语句,没有指定SECURITY LABEL。 +错误原因:执行 SECURITY LABEL 语句,没有指定 SECURITY LABEL 。 -解决办法:执行SECURITY LABEL语句,必须指定SECURITY LABEL。 +解决办法:执行 SECURITY LABEL 语句,必须指定 SECURITY LABEL 。 GAUSS-01520: "security label provider '%s' is not loaded" SQLSTATE: 22023 -错误原因:执行SECURITY LABEL语句,指定的安全标记没有加载。 +错误原因:执行 SECURITY LABEL 语句,指定的安全标记没有加载。 -解决办法:执行SECURITY LABEL语句,仅指定加载的安全标记。 +解决办法:执行 SECURITY LABEL 语句,仅指定加载的安全标记。 diff --git a/content/zh/docs/Developerguide/GAUSS-01531----GAUSS-01540.md b/content/zh/docs/Developerguide/GAUSS-01531----GAUSS-01540.md index faf1b7658..885c6ba0a 100644 --- a/content/zh/docs/Developerguide/GAUSS-01531----GAUSS-01540.md +++ b/content/zh/docs/Developerguide/GAUSS-01531----GAUSS-01540.md @@ -14,7 +14,7 @@ SQLSTATE: XX000 错误原因:setop中出现了交叉引用。 -解决办法:检查查询中SETOP操作对应的输入列,是否存在与其他子查询的交叉引用。 +解决办法:检查查询中 SETOP 操作对应的输入列,是否存在与其他子查询的交叉引用。 GAUSS-01533: "only UNION queries can be recursive" @@ -28,7 +28,7 @@ GAUSS-01534: "could not implement recursive UNION" SQLSTATE: 0A000 -错误原因:不能实现递归的UNION操作,所有列的类型都必须可哈希。 +错误原因:不能实现递归的 UNION 操作,所有列的类型都必须可哈希。 解决办法:调整相关列,所有列都得可哈希。 @@ -36,9 +36,9 @@ GAUSS-01535: "could not implement %s" SQLSTATE: 0A000 -错误原因:不能实现UNION、INTERSECT或者EXCEPT ,因为有的数据类型只支持哈希,另外一些类型只支持排序。 +错误原因:不能实现UNION、INTERSECT或者 EXCEPT ,因为有的数据类型只支持哈希,另外一些类型只支持排序。 -解决办法:UNION、INTERSECT或者EXCEPT相关列都得可哈希且可排序 +解决办法:UNION、INTERSECT或者 EXCEPT 相关列都得可哈希且可排序 GAUSS-01536: "could not find inherited attribute '%s' of relation '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-01581----GAUSS-01590.md b/content/zh/docs/Developerguide/GAUSS-01581----GAUSS-01590.md index 7ff357eaf..6019b64ba 100644 --- a/content/zh/docs/Developerguide/GAUSS-01581----GAUSS-01590.md +++ b/content/zh/docs/Developerguide/GAUSS-01581----GAUSS-01590.md @@ -44,7 +44,7 @@ GAUSS-01587: "cannot access temporary or unlogged relations during recovery" SQLSTATE: 0A000 -错误原因:系统内部错误。恢复期间无法访问临时表或者UNLOGGED表。 +错误原因:系统内部错误。恢复期间无法访问临时表或者 UNLOGGED 表。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-01601----GAUSS-01610.md b/content/zh/docs/Developerguide/GAUSS-01601----GAUSS-01610.md index db430e2ec..1dfb5aee8 100644 --- a/content/zh/docs/Developerguide/GAUSS-01601----GAUSS-01610.md +++ b/content/zh/docs/Developerguide/GAUSS-01601----GAUSS-01610.md @@ -54,7 +54,7 @@ SQLSTATE: XX000 错误原因:计划产生失败。 -解决办法:请检查查询是否合理,例如join方式是否合理等。 +解决办法:请检查查询是否合理,例如 join 方式是否合理等。 GAUSS-01608: "ORDER/GROUP BY expression not found in targetlist" @@ -68,7 +68,7 @@ GAUSS-01610: "relation %s is not partitioned" SQLSTATE: XX000 -错误原因:系统内部错误。检测索引是否有不可用的分区,heap或者index不是分区的,或者不是范围分区。 +错误原因:系统内部错误。检测索引是否有不可用的分区, heap 或者 index 不是分区的,或者不是范围分区。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-01611----GAUSS-01620.md b/content/zh/docs/Developerguide/GAUSS-01611----GAUSS-01620.md index 60cd727c8..22cf943a6 100644 --- a/content/zh/docs/Developerguide/GAUSS-01611----GAUSS-01620.md +++ b/content/zh/docs/Developerguide/GAUSS-01611----GAUSS-01620.md @@ -12,7 +12,7 @@ GAUSS-01612: "bit map error when searching for unusable index partition" SQLSTATE: XX000 -错误原因:系统内部错误。查找不可用的index partition时,发生bit位错误。 +错误原因:系统内部错误。查找不可用的 index partition 时,发生 bit 位错误。 解决办法:报错,事务回滚。 @@ -20,7 +20,7 @@ GAUSS-01613: "bit map error after searching for unusable index partition" SQLSTATE: XX000 -错误原因:系统内部错误。查找不可用的index partition时,发生bit位错误。 +错误原因:系统内部错误。查找不可用的 index partition 时,发生 bit 位错误。 解决办法:报错,事务回滚。 @@ -44,7 +44,7 @@ GAUSS-01617: "partitionPruningForExpr: parameter can not be null" SQLSTATE: XX000 -错误原因:系统内部错误。剪枝时,得到的参数为NULL。 +错误原因:系统内部错误。剪枝时,得到的参数为 NULL 。 解决办法:请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-01618: "get null for partition pruning" SQLSTATE: XX000 -错误原因:系统内部错误。剪枝时,得到的内部剪枝结果为NULL。 +错误原因:系统内部错误。剪枝时,得到的内部剪枝结果为 NULL 。 解决办法:请联系技术支持工程师提供技术支持。 @@ -60,7 +60,7 @@ GAUSS-01619: "For every node in same expression, pruning result's intervalOffset SQLSTATE: XX000 -错误原因:系统内部错误。同一表达式内的节点,其剪枝结果的最小interval分区序号必须相同。 +错误原因:系统内部错误。同一表达式内的节点,其剪枝结果的最小 interval 分区序号必须相同。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-01641----GAUSS-01650.md b/content/zh/docs/Developerguide/GAUSS-01641----GAUSS-01650.md index f12b20444..a2cb3f10d 100644 --- a/content/zh/docs/Developerguide/GAUSS-01641----GAUSS-01650.md +++ b/content/zh/docs/Developerguide/GAUSS-01641----GAUSS-01650.md @@ -36,7 +36,7 @@ GAUSS-01647: "could not find array type for datatype %s" SQLSTATE: XX000 -错误原因:该数据类型不能支持array sublink方式。 +错误原因:该数据类型不能支持 array sublink 方式。 解决办法:修改子查询的类型。 diff --git a/content/zh/docs/Developerguide/GAUSS-01651----GAUSS-01660.md b/content/zh/docs/Developerguide/GAUSS-01651----GAUSS-01660.md index 9ddacea5b..5bcef4d75 100644 --- a/content/zh/docs/Developerguide/GAUSS-01651----GAUSS-01660.md +++ b/content/zh/docs/Developerguide/GAUSS-01651----GAUSS-01660.md @@ -36,17 +36,17 @@ GAUSS-01655: "could not implement GROUP BY" SQLSTATE: 0A000 -错误原因:SELECT的Window子句,某些类型只支持hash,另外一些类型只支持sort,因此无法支持GROUP BY。 +错误原因:SELECT的 Window 子句,某些类型只支持 hash ,另外一些类型只支持 sort ,因此无法支持 GROUP BY 。 -解决办法:修改GROUP BY子句,使用可哈希且可排序的列。 +解决办法:修改 GROUP BY 子句,使用可哈希且可排序的列。 GAUSS-01656: "could not implement DISTINCT" SQLSTATE: 0A000 -错误原因:SELECT的Window子句,某些类型只支持hash,另外一些类型只支持sort,因此无法支持DISTINCT。 +错误原因:SELECT的 Window 子句,某些类型只支持 hash ,另外一些类型只支持 sort ,因此无法支持 DISTINCT 。 -解决办法:修改distinct子句,使用可哈希且可排序的列。 +解决办法:修改 distinct 子句,使用可哈希且可排序的列。 GAUSS-01657: "failed to locate grouping columns" @@ -68,15 +68,15 @@ GAUSS-01659: "could not implement window PARTITION BY" SQLSTATE: 0A000 -错误原因: SELECT的Window子句,Window partitioning column不是可排序的数据类型,导致不能实现window PARTITION BY。 +错误原因: SELECT的 Window 子句, Window partitioning column 不是可排序的数据类型,导致不能实现 window PARTITION BY 。 -解决办法:修改PARTITION BY子句,使用可排序的列。 +解决办法:修改 PARTITION BY 子句,使用可排序的列。 GAUSS-01660: "could not implement window ORDER BY" SQLSTATE: 0A000 -错误原因:SELECT的Window子句,Window ordering column不是可排序的数据类型,导致不能实现window ORDER BY。 +错误原因:SELECT的 Window 子句, Window ordering column 不是可排序的数据类型,导致不能实现 window ORDER BY 。 -解决办法:修改ORDER BY子句,使用可排序的列。 +解决办法:修改 ORDER BY 子句,使用可排序的列。 diff --git a/content/zh/docs/Developerguide/GAUSS-01671----GAUSS-01680.md b/content/zh/docs/Developerguide/GAUSS-01671----GAUSS-01680.md index 7c9c48c82..b7e800f6a 100644 --- a/content/zh/docs/Developerguide/GAUSS-01671----GAUSS-01680.md +++ b/content/zh/docs/Developerguide/GAUSS-01671----GAUSS-01680.md @@ -52,7 +52,7 @@ GAUSS-01678: "Fail to create path for partitioned table by the lack of info" SQLSTATE: XX000 -错误原因:系统内部错误。为分区表的scan算子设置信息时,输入参数不合法。 +错误原因:系统内部错误。为分区表的 scan 算子设置信息时,输入参数不合法。 解决办法:请联系技术支持工程师提供技术支持。 @@ -60,7 +60,7 @@ GAUSS-01679: "Only Scan operator have patition attribute" SQLSTATE: XX000 -错误原因:为分区表的非scan算子设置信息。 +错误原因:为分区表的非 scan 算子设置信息。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-01691----GAUSS-01700.md b/content/zh/docs/Developerguide/GAUSS-01691----GAUSS-01700.md index d805079ee..cb9682046 100644 --- a/content/zh/docs/Developerguide/GAUSS-01691----GAUSS-01700.md +++ b/content/zh/docs/Developerguide/GAUSS-01691----GAUSS-01700.md @@ -14,7 +14,7 @@ SQLSTATE: 55000 错误原因:不能更新视图。 -解决办法:需要ON UPDATE DO INSTEAD 规则或者 INSTEAD OF UPDATE trigger。 +解决办法:需要 ON UPDATE DO INSTEAD 规则或者 INSTEAD OF UPDATE trigger 。 GAUSS-01694: "cannot delete from view '%s'" @@ -22,7 +22,7 @@ SQLSTATE: 55000 错误原因:不能从视图中删除。 -解决办法:需要ON UPDATE DO INSTEAD 规则或者 INSTEAD OF UPDATE trigger。 +解决办法:需要 ON UPDATE DO INSTEAD 规则或者 INSTEAD OF UPDATE trigger 。 GAUSS-01697: "invalid fork name" diff --git a/content/zh/docs/Developerguide/GAUSS-01701----GAUSS-01710.md b/content/zh/docs/Developerguide/GAUSS-01701----GAUSS-01710.md index dae39b0e4..9153cfdc7 100644 --- a/content/zh/docs/Developerguide/GAUSS-01701----GAUSS-01710.md +++ b/content/zh/docs/Developerguide/GAUSS-01701----GAUSS-01710.md @@ -4,9 +4,9 @@ GAUSS-01702: "permission denied to create '%s.%s'" SQLSTATE: 42501 -错误原因:创建表的模式不是系统锁允许的或者数据库对象所属名称空间不是系统所支持的,导致无法正常创建heap表。 +错误原因:创建表的模式不是系统锁允许的或者数据库对象所属名称空间不是系统所支持的,导致无法正常创建 heap 表。 -解决办法:检查创建时使用的mode或者对象名所属名称空间是否正确拼写。 +解决办法:检查创建时使用的 mode 或者对象名所属名称空间是否正确拼写。 GAUSS-01703: "column name '%s' specified more than once" @@ -36,33 +36,33 @@ GAUSS-01706: "no collation was derived for column '%s' with collatable type %s" SQLSTATE: 42P16 -错误原因:属性列支持attcollation但是对应的attcollation无效,导致无法正常创建heap表格。 +错误原因:属性列支持 attcollation 但是对应的 attcollation 无效,导致无法正常创建 heap 表格。 -解决办法:检查创建表格时属性列关于collation定义的有效性。 +解决办法:检查创建表格时属性列关于 collation 定义的有效性。 GAUSS-01707: "Invalid distribution column specified" SQLSTATE: 42P16 -错误原因:用于标记分布情况的属性名并不在表格属性列中,导致属性列个数小于等于0,因此错误。 +错误原因:用于标记分布情况的属性名并不在表格属性列中,导致属性列个数小于等于 0 ,因此错误。 -解决办法:检查distributeby语句中属性名是否存在于表定义的属性列中。 +解决办法:检查 distributeby 语句中属性名是否存在于表定义的属性列中。 GAUSS-01708: "Column %s is not a hash distributable data type" SQLSTATE: 42809 -错误原因:该数据类型不支持作为hash分布列。 +错误原因:该数据类型不支持作为 hash 分布列。 -解决办法:检查手册查看哪些数据类型能够作为hash分布列被使用并检查当前使用的属性列对应的数据类型。 +解决办法:检查手册查看哪些数据类型能够作为 hash 分布列被使用并检查当前使用的属性列对应的数据类型。 GAUSS-01709: "Column %s is not modulo distributable data type" SQLSTATE: 42809 -错误原因:该数据类型不支持作为modulo分布列。 +错误原因:该数据类型不支持作为 modulo 分布列。 -解决办法:检查手册查看哪些数据类型能够作为modulo分布列被使用并检查当前使用的属性列对应的数据类型。 +解决办法:检查手册查看哪些数据类型能够作为 modulo 分布列被使用并检查当前使用的属性列对应的数据类型。 GAUSS-01710: "Invalid distribution type" diff --git a/content/zh/docs/Developerguide/GAUSS-01711----GAUSS-01720.md b/content/zh/docs/Developerguide/GAUSS-01711----GAUSS-01720.md index 9fb79a9a7..422777b34 100644 --- a/content/zh/docs/Developerguide/GAUSS-01711----GAUSS-01720.md +++ b/content/zh/docs/Developerguide/GAUSS-01711----GAUSS-01720.md @@ -4,9 +4,9 @@ GAUSS-01712: "PGXC node %s: not a Datanode" SQLSTATE: 42601 -错误原因:该名称对应的节点并不是一个DN类型的节点。 +错误原因:该名称对应的节点并不是一个 DN 类型的节点。 -解决办法:检查nodeid的正确性并检查系统当前状态。 +解决办法:检查 nodeid 的正确性并检查系统当前状态。 GAUSS-01713: "PGXC Group %s: group not defined" @@ -14,7 +14,7 @@ SQLSTATE: 42704 错误原因:group\_name对应的节点组不存在。 -解决办法:检查调用的group\_name是否正确,或数据库在创建时是否正确创建group。 +解决办法:检查调用的group\_name是否正确,或数据库在创建时是否正确创建 group 。 GAUSS-01714: "shared relations must be placed in pg\_global tablespace" @@ -52,7 +52,7 @@ GAUSS-01718: "cache lookup failed for foreign table %u" SQLSTATE: XX000 -错误原因:无法找到对应的foreign data wrapper。 +错误原因:无法找到对应的 foreign data wrapper 。 解决办法:请检查使用中的gds、hdfs外表以及roach、obs设置是否正确。 @@ -62,7 +62,7 @@ SQLSTATE: XX000 错误原因:找不到分区表中相关的元组。 -解决办法:检查relid对应的是否为分区表并检查该表的元组状况。 +解决办法:检查 relid 对应的是否为分区表并检查该表的元组状况。 GAUSS-01720: "check constraint '%s' already exists" diff --git a/content/zh/docs/Developerguide/GAUSS-01721----GAUSS-01730.md b/content/zh/docs/Developerguide/GAUSS-01721----GAUSS-01730.md index 8951fb1ba..995a8ea5a 100644 --- a/content/zh/docs/Developerguide/GAUSS-01721----GAUSS-01730.md +++ b/content/zh/docs/Developerguide/GAUSS-01721----GAUSS-01730.md @@ -22,7 +22,7 @@ SQLSTATE: 42P10 错误原因:default表达式中含有表格属性变量。 -解决办法:检查sql语句中的default表达式中是否含有属性变量名。 +解决办法:检查 sql 语句中的 default 表达式中是否含有属性变量名。 GAUSS-01724: "default expression must not return a set" @@ -30,7 +30,7 @@ SQLSTATE: 42804 错误原因:default表达式返回的是个集合,这是不被允许的。 -解决办法:检查sql语句中的default表达式中其返回值是否可能为集合。 +解决办法:检查 sql 语句中的 default 表达式中其返回值是否可能为集合。 GAUSS-01725: "cannot use subquery in default expression" @@ -38,7 +38,7 @@ SQLSTATE: 0A000 错误原因:default表达式中含有子查询,这是不允许的。 -解决办法:检查sql语句中的default表达式是否使用子查询语句。 +解决办法:检查 sql 语句中的 default 表达式是否使用子查询语句。 GAUSS-01727: "cannot use window function in default expression" @@ -46,13 +46,13 @@ SQLSTATE: 42P20 错误原因:default表达式中含有窗口函数,这是不被允许的。 -解决办法:检查sql语句中的default表达式是否使用窗口函数。 +解决办法:检查 sql 语句中的 default 表达式是否使用窗口函数。 GAUSS-01728: "column '%s' is of type %s but default expression is of type %s" SQLSTATE: 42804 -错误原因:属性的类型与调用的对应default表达式的返回类型不一致。 +错误原因:属性的类型与调用的对应 default 表达式的返回类型不一致。 解决办法:检查相应的表达式并进行重写。 @@ -68,7 +68,7 @@ GAUSS-01730: "unsupported ON COMMIT and foreign key combination" SQLSTATE: 0A000 -错误原因:当前表2的外键是表1的主键,即表2引用了表1,但是在COMMIT的设置上并不相同。 +错误原因:当前表 2 的外键是表 1 的主键,即表 2 引用了表 1 ,但是在 COMMIT 的设置上并不相同。 -解决办法:检查两张表格在COMMIT设置上是否相同。 +解决办法:检查两张表格在 COMMIT 设置上是否相同。 diff --git a/content/zh/docs/Developerguide/GAUSS-01731----GAUSS-01740.md b/content/zh/docs/Developerguide/GAUSS-01731----GAUSS-01740.md index 3fcf3afcd..df790cd98 100644 --- a/content/zh/docs/Developerguide/GAUSS-01731----GAUSS-01740.md +++ b/content/zh/docs/Developerguide/GAUSS-01731----GAUSS-01740.md @@ -1,74 +1,74 @@ -# GAUSS-01731 -- GAUSS-01740 - -GAUSS-01731: "cannot truncate a table referenced in a foreign key constraint" - -SQLSTATE: 0A000 - -错误原因:不能truncate被另外一张表外键限制所引用的表格。 - -解决办法:检查当前需truncate表格是否被其他表格引用,如果如此,应同时删除。 - -GAUSS-01732: "buildPartitionKey\(\): partKeys specified NONE IS found'" - -SQLSTATE: 22015 - -错误原因:没有找到与表格中属性相对应的partKeys。 - -解决办法:检查创建分区表时是否正确给出了partKeys。 - -GAUSS-01733: "cache lookup failed for partition %u" - -SQLSTATE: XX000 - -错误原因:缓存中分区查找失败。 - -解决办法:建议更换为有效分区。 - -GAUSS-01734: "missing definition for new partition" - -SQLSTATE: XX000 - -错误原因:所需增加的新的分区没有定义。 - -解决办法:确定在添加新的分区前该分区被正确定义。 - -GAUSS-01735: "boundary not defined for new partition" - -SQLSTATE: XX000 - -错误原因:新增加的分区中没有定义边界。 - -解决办法:确保新增加的分区中正确定义了新分区的边界。 - -GAUSS-01736: "too many partition keys, allowed is %d" - -SQLSTATE: XX000 - -错误原因:新增加的分区中定义的边界个数超过了所允许的增加的最大分区数。 - -解决办法:确保每次新增加的分区个数不超过所允许增加的分区个数。 - -GAUSS-01737: "number of partition key columns MUST less or equal than 4" - -SQLSTATE: XX000 - -错误原因:分区的分区属性列个数必须小于或等于4。 - -解决办法:检查原有分区表中用于分区的属性列\(partition key\)个数是否在允许范围内。 - -GAUSS-01738: "inserted partition key does not map to any table partition" - -SQLSTATE: P0002 - -错误原因:插入的元组的分区键值和任意一个已存在的分区键都匹配不上。 - -解决办法:建议检查插入的数据是否存在超出分区表分区范围。 - -GAUSS-01739: "Inserted partition key does not map to any table partition" - -SQLSTATE: P0002 - -错误原因:新插入的分区键是无法进行识别的。 - -解决办法:检查插入的分区键是否与当前的分区相互匹配。 - +# GAUSS-01731 -- GAUSS-01740 + +GAUSS-01731: "cannot truncate a table referenced in a foreign key constraint" + +SQLSTATE: 0A000 + +错误原因:不能 truncate 被另外一张表外键限制所引用的表格。 + +解决办法:检查当前需 truncate 表格是否被其他表格引用,如果如此,应同时删除。 + +GAUSS-01732: "buildPartitionKey\(\): partKeys specified NONE IS found'" + +SQLSTATE: 22015 + +错误原因:没有找到与表格中属性相对应的 partKeys 。 + +解决办法:检查创建分区表时是否正确给出了 partKeys 。 + +GAUSS-01733: "cache lookup failed for partition %u" + +SQLSTATE: XX000 + +错误原因:缓存中分区查找失败。 + +解决办法:建议更换为有效分区。 + +GAUSS-01734: "missing definition for new partition" + +SQLSTATE: XX000 + +错误原因:所需增加的新的分区没有定义。 + +解决办法:确定在添加新的分区前该分区被正确定义。 + +GAUSS-01735: "boundary not defined for new partition" + +SQLSTATE: XX000 + +错误原因:新增加的分区中没有定义边界。 + +解决办法:确保新增加的分区中正确定义了新分区的边界。 + +GAUSS-01736: "too many partition keys, allowed is %d" + +SQLSTATE: XX000 + +错误原因:新增加的分区中定义的边界个数超过了所允许的增加的最大分区数。 + +解决办法:确保每次新增加的分区个数不超过所允许增加的分区个数。 + +GAUSS-01737: "number of partition key columns MUST less or equal than 4" + +SQLSTATE: XX000 + +错误原因:分区的分区属性列个数必须小于或等于 4 。 + +解决办法:检查原有分区表中用于分区的属性列\(partition key\)个数是否在允许范围内。 + +GAUSS-01738: "inserted partition key does not map to any table partition" + +SQLSTATE: P0002 + +错误原因:插入的元组的分区键值和任意一个已存在的分区键都匹配不上。 + +解决办法:建议检查插入的数据是否存在超出分区表分区范围。 + +GAUSS-01739: "Inserted partition key does not map to any table partition" + +SQLSTATE: P0002 + +错误原因:新插入的分区键是无法进行识别的。 + +解决办法:检查插入的分区键是否与当前的分区相互匹配。 + diff --git a/content/zh/docs/Developerguide/GAUSS-01741----GAUSS-01750.md b/content/zh/docs/Developerguide/GAUSS-01741----GAUSS-01750.md index fdc8691e4..2faf85371 100644 --- a/content/zh/docs/Developerguide/GAUSS-01741----GAUSS-01750.md +++ b/content/zh/docs/Developerguide/GAUSS-01741----GAUSS-01750.md @@ -22,31 +22,31 @@ SQLSTATE: 42602 错误原因:想要创建的操作名称是不合法的。 -解决办法:检查创建的操作名称是否是合法的,包括名称的长度,名称中是否包含无效的字符,是否包含不允许的标记符等,具体可见validOperatorName函数。 +解决办法:检查创建的操作名称是否是合法的,包括名称的长度,名称中是否包含无效的字符,是否包含不允许的标记符等,具体可见 validOperatorName 函数。 GAUSS-01745: "only binary operators can have commutators" SQLSTATE: 42P13 -错误原因:针对存在左右变量的场景,只有binary类型的操作才可包含转向\(commutators\)运算。 +错误原因:针对存在左右变量的场景,只有 binary 类型的操作才可包含转向\(commutators\)运算。 -解决办法:请检查需要创建的operator是否是binary operators。 +解决办法:请检查需要创建的 operator 是否是 binary operators 。 GAUSS-01746: "only binary operators can have join selectivity" SQLSTATE: 42P13 -错误原因:针对存在左右变量的场景,只有binary类型的操作才可计算连接选择率\(join selectivity\)。 +错误原因:针对存在左右变量的场景,只有 binary 类型的操作才可计算连接选择率\(join selectivity\)。 -解决办法:请检查需要创建的operator是否是binary operators。 +解决办法:请检查需要创建的 operator 是否是 binary operators 。 GAUSS-01748: "only binary operators can hash" SQLSTATE: 42P13 -错误原因:针对存在左右变量的场景,只有binary类型的操作才可用于mergejoin路径。 +错误原因:针对存在左右变量的场景,只有 binary 类型的操作才可用于 mergejoin 路径。 -解决办法:请检查需要创建的operator是否是binary operators。 +解决办法:请检查需要创建的 operator 是否是 binary operators 。 GAUSS-01749: "only boolean operators can have negators" @@ -54,7 +54,7 @@ SQLSTATE: 42P13 错误原因:只有布尔类型的操作返回值才可支持否操作。 -解决办法:请检查需要创建的operator是否是Boolean类型。 +解决办法:请检查需要创建的 operator 是否是 Boolean 类型。 GAUSS-01750: "only boolean operators can have restriction selectivity" @@ -62,5 +62,5 @@ SQLSTATE: 42P13 错误原因:只有布尔类型的操作返回值才可计算限制性条件的选择率。 -解决办法:请检查需要创建的operator是否是Boolean类型。 +解决办法:请检查需要创建的 operator 是否是 Boolean 类型。 diff --git a/content/zh/docs/Developerguide/GAUSS-01751----GAUSS-01760.md b/content/zh/docs/Developerguide/GAUSS-01751----GAUSS-01760.md index 6699fe020..89e54a50a 100644 --- a/content/zh/docs/Developerguide/GAUSS-01751----GAUSS-01760.md +++ b/content/zh/docs/Developerguide/GAUSS-01751----GAUSS-01760.md @@ -6,15 +6,15 @@ SQLSTATE: 42P13 错误原因:只有布尔类型的操作返回值才可计算连接选择率。 -解决办法:请检查需要创建的operator是否是Boolean类型。 +解决办法:请检查需要创建的 operator 是否是 Boolean 类型。 GAUSS-01753: "only boolean operators can hash" SQLSTATE: 42P13 -错误原因:只有布尔类型的操作返回值才可用于生成hash路径。 +错误原因:只有布尔类型的操作返回值才可用于生成 hash 路径。 -解决办法:请检查需要创建的operator是否是Boolean类型。 +解决办法:请检查需要创建的 operator 是否是 Boolean 类型。 GAUSS-01754: "operator %s already exists" @@ -22,7 +22,7 @@ SQLSTATE: 42723 错误原因:当前想要创建的操作已经存在。 -解决办法:请检查需要创建的operator是否已经存在。 +解决办法:请检查需要创建的 operator 是否已经存在。 GAUSS-01755: "operator cannot be its own negator or sort operator" diff --git a/content/zh/docs/Developerguide/GAUSS-01761----GAUSS-01770.md b/content/zh/docs/Developerguide/GAUSS-01761----GAUSS-01770.md index 9802ab9fe..95f5430a0 100644 --- a/content/zh/docs/Developerguide/GAUSS-01761----GAUSS-01770.md +++ b/content/zh/docs/Developerguide/GAUSS-01761----GAUSS-01770.md @@ -14,7 +14,7 @@ SQLSTATE: 42501 错误原因:对该大对象数据的所有权关系错误。 -解决办法:检查通过get\_object\_address处所获得的大对象数据Id并于此处的进行比对。 +解决办法:检查通过get\_object\_address处所获得的大对象数据 Id 并于此处的进行比对。 GAUSS-01763: "must be system admin" @@ -62,5 +62,5 @@ SQLSTATE: 42P16 错误原因:当前的临时表并不在创建临时表所创建的临时表空间中,即临时表所属的是其他空间,因此错误。 -解决办法:检查创建临时表时临时表空间是否被正确创建,并查看对应的临时表空间的OID。 +解决办法:检查创建临时表时临时表空间是否被正确创建,并查看对应的临时表空间的 OID 。 diff --git a/content/zh/docs/Developerguide/GAUSS-01771----GAUSS-01780.md b/content/zh/docs/Developerguide/GAUSS-01771----GAUSS-01780.md index 44260c16c..5f96706f1 100644 --- a/content/zh/docs/Developerguide/GAUSS-01771----GAUSS-01780.md +++ b/content/zh/docs/Developerguide/GAUSS-01771----GAUSS-01780.md @@ -4,9 +4,9 @@ GAUSS-01771: "cannot create relations in temporary schemas of other sessions" SQLSTATE: 42P16 -错误原因:不可在其它sessions的临时表空间中创建表。 +错误原因:不可在其它 sessions 的临时表空间中创建表。 -解决办法:创建表之前需确认当前的sessions。 +解决办法:创建表之前需确认当前的 sessions 。 GAUSS-01772: "cannot create temporary relation in non-temporary schema" diff --git a/content/zh/docs/Developerguide/GAUSS-01781----GAUSS-01790.md b/content/zh/docs/Developerguide/GAUSS-01781----GAUSS-01790.md index 05b2b4f1c..fe9ab12f2 100644 --- a/content/zh/docs/Developerguide/GAUSS-01781----GAUSS-01790.md +++ b/content/zh/docs/Developerguide/GAUSS-01781----GAUSS-01790.md @@ -76,7 +76,7 @@ GAUSS-01790: "current user does not have privilege to role %s" SQLSTATE: 42501 -错误原因:当前用户没有管理role的权限。 +错误原因:当前用户没有管理 role 的权限。 解决办法:可向管理员确认用户当前的权限。 diff --git a/content/zh/docs/Developerguide/GAUSS-01811----GAUSS-01820.md b/content/zh/docs/Developerguide/GAUSS-01811----GAUSS-01820.md index e593f5885..07ec10131 100644 --- a/content/zh/docs/Developerguide/GAUSS-01811----GAUSS-01820.md +++ b/content/zh/docs/Developerguide/GAUSS-01811----GAUSS-01820.md @@ -14,23 +14,23 @@ SQLSTATE: 42622 错误原因:使用的动态库名称过长。 -解决办法:当前支持的最大长度是1000,请确保不要超过该长度。 +解决办法:当前支持的最大长度是 1000 ,请确保不要超过该长度。 GAUSS-01816: "allParameterTypes is not a 1-D Oid array" SQLSTATE: XX000 -错误原因:创建procedure时,出现异常:传入参数有误。 +错误原因:创建 procedure 时,出现异常:传入参数有误。 -解决办法:请检查传入参数allParameterTypes的有效性。 +解决办法:请检查传入参数 allParameterTypes 的有效性。 GAUSS-01817: "parameterModes is not a 1-D char array" SQLSTATE: XX000 -错误原因:创建procedure时,出现异常:传入参数有误。 +错误原因:创建 procedure 时,出现异常:传入参数有误。 -解决办法:请检查传入参数parameterModes的有效性。 +解决办法:请检查传入参数 parameterModes 的有效性。 GAUSS-01818: "cannot determine result data type" @@ -44,9 +44,9 @@ GAUSS-01819: "unsafe use of pseudo-type 'internal'" SQLSTATE: 42P13 -错误原因:由于没有相关的internal输入项,使得internal的返回类型存在风险。 +错误原因:由于没有相关的 internal 输入项,使得 internal 的返回类型存在风险。 -解决办法:需要确认存在相关的internal输入项。 +解决办法:需要确认存在相关的 internal 输入项。 GAUSS-01820: "'%s' is already an attribute of type %s" diff --git a/content/zh/docs/Developerguide/GAUSS-01821----GAUSS-01830.md b/content/zh/docs/Developerguide/GAUSS-01821----GAUSS-01830.md index 41dbeec51..1a7c7540f 100644 --- a/content/zh/docs/Developerguide/GAUSS-01821----GAUSS-01830.md +++ b/content/zh/docs/Developerguide/GAUSS-01821----GAUSS-01830.md @@ -4,25 +4,25 @@ GAUSS-01821: "variadic parameter must be last" SQLSTATE: XX000 -错误原因:创建procedure时,variadic参数出现异常。 +错误原因:创建 procedure 时, variadic 参数出现异常。 -解决办法:仅最后一个参数可以是variadic。 +解决办法:仅最后一个参数可以是 variadic 。 GAUSS-01822: "variadic parameter is not an array" SQLSTATE: XX000 -错误原因:创建procedure时,variadic参数出现异常(不是数组)。 +错误原因:创建 procedure 时, variadic 参数出现异常(不是数组)。 -解决办法:请检查variadic参数。 +解决办法:请检查 variadic 参数。 GAUSS-01823: "invalid parameter mode '%c'" SQLSTATE: XX000 -错误原因:创建procedure时,出现无效的PROARGMODE参数。 +错误原因:创建 procedure 时,出现无效的 PROARGMODE 参数。 -解决办法:请检查PROARGMODE参数。 +解决办法:请检查 PROARGMODE 参数。 GAUSS-01824: "more than one function '%s' already exist, please drop function first" @@ -46,7 +46,7 @@ SQLSTATE: 42P13 错误原因:无法改变已经创建的函数的返回类型。 -解决办法:检查新建函数的返回类型或者drop之前创建的函数。 +解决办法:检查新建函数的返回类型或者 drop 之前创建的函数。 GAUSS-01827: "cannot change name of input parameter '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-01831----GAUSS-01840.md b/content/zh/docs/Developerguide/GAUSS-01831----GAUSS-01840.md index 2d5532ca7..7841a037e 100644 --- a/content/zh/docs/Developerguide/GAUSS-01831----GAUSS-01840.md +++ b/content/zh/docs/Developerguide/GAUSS-01831----GAUSS-01840.md @@ -28,7 +28,7 @@ GAUSS-01834: "null prosrc for C function %u" SQLSTATE: XX005 -错误原因:获取自定义C函数时出错。 +错误原因:获取自定义 C 函数时出错。 解决办法:请检查函数名是否正确。 @@ -36,7 +36,7 @@ GAUSS-01835: "null probin for C function %u" SQLSTATE: XX005 -错误原因:获取内置C函数时出错。 +错误原因:获取内置 C 函数时出错。 解决办法:请检查函数名是否正确。 @@ -46,7 +46,7 @@ SQLSTATE: 42P13 错误原因:SQL函数当前不支持返回format\_type\_be\(proc-\>prorettype\)型的数据类型。 -解决办法:检查sql语句的返回并进行确认。 +解决办法:检查 sql 语句的返回并进行确认。 GAUSS-01837: "SQL functions cannot have arguments of type %s" @@ -54,21 +54,21 @@ SQLSTATE: 42P13 错误原因:函数当中不允许使用format\_type\_be\(proc-\>proargtypes.values\[i\]\)类型的参数。 -解决办法:检查sql函数中参数的类型。 +解决办法:检查 sql 函数中参数的类型。 GAUSS-01838: "In XC, SQL functions cannot contain utility statements" SQLSTATE: 42601 -错误原因:sql函数中不可包含utility statements。 +错误原因:sql函数中不可包含 utility statements 。 -解决办法:检查sql函数中的内容。 +解决办法:检查 sql 函数中的内容。 GAUSS-01840: "no conversion name supplied" SQLSTATE: XX000 -错误原因:在创建conversion使,没有提供conversion name。 +错误原因:在创建 conversion 使,没有提供 conversion name 。 -解决办法:请检查conversion name是否为空。 +解决办法:请检查 conversion name 是否为空。 diff --git a/content/zh/docs/Developerguide/GAUSS-01841----GAUSS-01850.md b/content/zh/docs/Developerguide/GAUSS-01841----GAUSS-01850.md index b2f0dd5d7..a669f44d2 100644 --- a/content/zh/docs/Developerguide/GAUSS-01841----GAUSS-01850.md +++ b/content/zh/docs/Developerguide/GAUSS-01841----GAUSS-01850.md @@ -4,39 +4,39 @@ GAUSS-01841: "conversion '%s' already exists" SQLSTATE: 42710 -错误原因:当前创建的名为conname的conversion已经创建,无法创建同名的conversion。 +错误原因:当前创建的名为 conname 的 conversion 已经创建,无法创建同名的 conversion 。 -解决办法:检查需要创建的conversion是否存在与之相同名称的conversion。 +解决办法:检查需要创建的 conversion 是否存在与之相同名称的 conversion 。 GAUSS-01842: "default conversion for %s to %s already exists" SQLSTATE: 42710 -错误原因:当前创建的由conforencoding到contoencoding得conversion已经存在,无法创建具有相同功能的conversion。 +错误原因:当前创建的由 conforencoding 到 contoencoding 得 conversion 已经存在,无法创建具有相同功能的 conversion 。 -解决办法:检查所需创建的conversion功能是否已经存在,无需创建具有相同功能的conversion。 +解决办法:检查所需创建的 conversion 功能是否已经存在,无需创建具有相同功能的 conversion 。 GAUSS-01843: "could not find tuple for conversion %u" SQLSTATE: XX000 -错误原因:从pg\_conversion中删除tuple时出错:未找到该tuple。 +错误原因:从pg\_conversion中删除 tuple 时出错:未找到该 tuple 。 -解决办法:请检查tuple oid是否正确。 +解决办法:请检查 tuple oid 是否正确。 GAUSS-01844: "pgxc class relid invalid." SQLSTATE: XX000 -错误原因:在创建pgxc\_class时,出现无效的relid。 +错误原因:在创建pgxc\_class时,出现无效的 relid 。 -解决办法:请检查传入参数relid的合法性。 +解决办法:请检查传入参数 relid 的合法性。 GAUSS-01845: "pgxc\_group should have at least one default node group" SQLSTATE: XX000 -错误原因:pgxc\_group不应该是NULL。 +错误原因:pgxc\_group不应该是 NULL 。 解决办法:请检查创建pgxc\_class时,pgxc\_group状态。 @@ -52,7 +52,7 @@ GAUSS-01848: "partition '%s' does not exist" SQLSTATE: 42P01 -错误原因:名为partitionName的分区并不存在。 +错误原因:名为 partitionName 的分区并不存在。 解决办法:检查对应于表格的分区名称,并进行核对。 diff --git a/content/zh/docs/Developerguide/GAUSS-01851----GAUSS-01860.md b/content/zh/docs/Developerguide/GAUSS-01851----GAUSS-01860.md index 645d58b63..e8ebf54c1 100644 --- a/content/zh/docs/Developerguide/GAUSS-01851----GAUSS-01860.md +++ b/content/zh/docs/Developerguide/GAUSS-01851----GAUSS-01860.md @@ -4,7 +4,7 @@ GAUSS-01851: "invalid input parameters when searching for local index under some SQLSTATE: 42704 -错误原因:在检查索引OID有效性时,发现输入的参数是无效的。 +错误原因:在检查索引 OID 有效性时,发现输入的参数是无效的。 解决办法:检查输入参数的有效性。 @@ -12,7 +12,7 @@ GAUSS-01852: "%u is not a partitioned index" SQLSTATE: 42704 -错误原因:参数OID对应的对象并非是一个分区索引。 +错误原因:参数 OID 对应的对象并非是一个分区索引。 解决办法:检查在执行流程中传入的参数的实际属性,可通过系统表来检查。 @@ -20,23 +20,23 @@ GAUSS-01853: "%u not found in pg\_class" SQLSTATE: 42704 -错误原因:无法在pg\_class系统表中找到参数OID对应的对象。 +错误原因:无法在pg\_class系统表中找到参数 OID 对应的对象。 -解决办法:确认想要查找的对象的OID并确认是否已经完成analyze操作并正确导入系统表。 +解决办法:确认想要查找的对象的 OID 并确认是否已经完成 analyze 操作并正确导入系统表。 GAUSS-01854: "not found local index %u in pg\_partition" SQLSTATE: 42704 -错误原因:在pg\_partition系统表中无法查找到对应的local index。 +错误原因:在pg\_partition系统表中无法查找到对应的 local index 。 -解决办法:检查local index参数的有效性并与实际创建时所创建的属性进行核对。 +解决办法:检查 local index 参数的有效性并与实际创建时所创建的属性进行核对。 GAUSS-01855: "none is the son local index of index %u" SQLSTATE: 42704 -错误原因:在partitionedIndexid对应的索引中没有找到局部索引。 +错误原因:在 partitionedIndexid 对应的索引中没有找到局部索引。 解决办法:检查所需查找的局部索引的正确性。 diff --git a/content/zh/docs/Developerguide/GAUSS-01861----GAUSS-01870.md b/content/zh/docs/Developerguide/GAUSS-01861----GAUSS-01870.md index 70663b7c2..c74f986a4 100644 --- a/content/zh/docs/Developerguide/GAUSS-01861----GAUSS-01870.md +++ b/content/zh/docs/Developerguide/GAUSS-01861----GAUSS-01870.md @@ -12,9 +12,9 @@ GAUSS-01862: "shared tables cannot be toasted after gs\_initdb" SQLSTATE: 55000 -错误原因:当初始化数据库完成后,不允许对共享内存表做toast操作。 +错误原因:当初始化数据库完成后,不允许对共享内存表做 toast 操作。 -解决办法:请检查当前状态,若已完成初始化,则不允许toast共享内存表。 +解决办法:请检查当前状态,若已完成初始化,则不允许 toast 共享内存表。 GAUSS-01863: "cache lookup failed for relation or partition %u" diff --git a/content/zh/docs/Developerguide/GAUSS-01871----GAUSS-01880.md b/content/zh/docs/Developerguide/GAUSS-01871----GAUSS-01880.md index 152d2ac8b..2c671a96d 100644 --- a/content/zh/docs/Developerguide/GAUSS-01871----GAUSS-01880.md +++ b/content/zh/docs/Developerguide/GAUSS-01871----GAUSS-01880.md @@ -38,13 +38,13 @@ SQLSTATE: 42809 错误原因:无法对一个索引对象进行赋权限。 -解决办法:检查需要赋予权限的list中的对象情况,确保对象需全为表对象。 +解决办法:检查需要赋予权限的 list 中的对象情况,确保对象需全为表对象。 GAUSS-01877: "invalid privilege type USAGE for table" SQLSTATE: 0LP01 -错误原因:USAGE这种权限类型只支持sequences,不支持non-sequences场景。 +错误原因:USAGE这种权限类型只支持 sequences ,不支持non-sequences场景。 解决办法:检查表的类型。 diff --git a/content/zh/docs/Developerguide/GAUSS-01881----GAUSS-01890.md b/content/zh/docs/Developerguide/GAUSS-01881----GAUSS-01890.md index 1c28765d4..2cbecc3ae 100644 --- a/content/zh/docs/Developerguide/GAUSS-01881----GAUSS-01890.md +++ b/content/zh/docs/Developerguide/GAUSS-01881----GAUSS-01890.md @@ -62,5 +62,5 @@ SQLSTATE: 42P01 错误原因:在出口程序中检查用户的访问权限时,发现对应表格不存在。 -解决办法:检查pg\_class系统表中OID所对应的表格是否存在。 +解决办法:检查pg\_class系统表中 OID 所对应的表格是否存在。 diff --git a/content/zh/docs/Developerguide/GAUSS-01891----GAUSS-01900.md b/content/zh/docs/Developerguide/GAUSS-01891----GAUSS-01900.md index d40638cac..2dcbf9e7e 100644 --- a/content/zh/docs/Developerguide/GAUSS-01891----GAUSS-01900.md +++ b/content/zh/docs/Developerguide/GAUSS-01891----GAUSS-01900.md @@ -22,13 +22,13 @@ SQLSTATE: 42704 错误原因:在出口程序中检查用户的访问权限时,发现不存在对应的语言格式。 -解决办法:检查pg\_language系统表中是否存在该language定义。 +解决办法:检查pg\_language系统表中是否存在该 language 定义。 GAUSS-01894: "schema with OID %u does not exist" SQLSTATE: 3F000 -错误原因:在出口程序中检查用户的访问权限时,发现不存在对应的schema空间。 +错误原因:在出口程序中检查用户的访问权限时,发现不存在对应的 schema 空间。 解决办法:检查pg\_namespace系统表中是否存在该命名空间定义。 @@ -54,7 +54,7 @@ SQLSTATE: XX000 错误原因:foreign server不存在。 -解决办法:检查是否已经创建了对应的foreign server。 +解决办法:检查是否已经创建了对应的 foreign server 。 GAUSS-01898: "type with OID %u does not exist" @@ -62,7 +62,7 @@ SQLSTATE: XX000 错误原因:在出口程序中检查用户的访问权限时,发现不存在对应的数据类型。 -解决办法:检查pg\_type系统表中所有的type的类型定义。 +解决办法:检查pg\_type系统表中所有的 type 的类型定义。 GAUSS-01899: "type with OID %u does not exist" @@ -70,7 +70,7 @@ SQLSTATE: 42704 错误原因:在出口程序中检查用户的访问权限时,发现不存在对应的数据类型。 -解决办法:检查pg\_type系统表中所有的type的类型定义。 +解决办法:检查pg\_type系统表中所有的 type 的类型定义。 GAUSS-01900: "operator with OID %u does not exist" @@ -78,5 +78,5 @@ SQLSTATE: 42883 错误原因:在检查用户权限时,发现不存在对应的操作类型。 -解决办法:检查pg\_operator系统表中operator的定义。 +解决办法:检查pg\_operator系统表中 operator 的定义。 diff --git a/content/zh/docs/Developerguide/GAUSS-01901----GAUSS-01910.md b/content/zh/docs/Developerguide/GAUSS-01901----GAUSS-01910.md index 5c9d8e46c..185a3d122 100644 --- a/content/zh/docs/Developerguide/GAUSS-01901----GAUSS-01910.md +++ b/content/zh/docs/Developerguide/GAUSS-01901----GAUSS-01910.md @@ -6,7 +6,7 @@ SQLSTATE: 42883 错误原因:在出口程序中检查用户的访问权限时,发现不存在对应的语言格式。 -解决办法:检查pg\_language系统表中是否存在该language定义。 +解决办法:检查pg\_language系统表中是否存在该 language 定义。 GAUSS-01904: "text search dictionary with OID %u does not exist" @@ -36,17 +36,17 @@ GAUSS-01907: "conversion with OID %u does not exist" SQLSTATE: 42704 -错误原因:在检查用户权限时,发现不存在对应的conversion。 +错误原因:在检查用户权限时,发现不存在对应的 conversion 。 -解决办法:检查pg\_collation系统表中所有的conversion。 +解决办法:检查pg\_collation系统表中所有的 conversion 。 GAUSS-01908: "extension with OID %u does not exist" SQLSTATE: 42704 -错误原因:在检查用户权限时,发现不存在对应的extension。 +错误原因:在检查用户权限时,发现不存在对应的 extension 。 -解决办法:检查pg\_extension系统表中所有的extension。 +解决办法:检查pg\_extension系统表中所有的 extension 。 GAUSS-01909: "relation '%s' has relchecks = 0" diff --git a/content/zh/docs/Developerguide/GAUSS-01911----GAUSS-01920.md b/content/zh/docs/Developerguide/GAUSS-01911----GAUSS-01920.md index adc1d62e5..9899f1a26 100644 --- a/content/zh/docs/Developerguide/GAUSS-01911----GAUSS-01920.md +++ b/content/zh/docs/Developerguide/GAUSS-01911----GAUSS-01920.md @@ -4,41 +4,41 @@ GAUSS-01911: "constraint '%s' for domain %s already exists" SQLSTATE: 42710 -错误原因:在当前表对象中,重命名时想要使用的constraint名称已经存在。 +错误原因:在当前表对象中,重命名时想要使用的 constraint 名称已经存在。 -解决办法:请确认当前域中的已经存在的constraint名称。 +解决办法:请确认当前域中的已经存在的 constraint 名称。 GAUSS-01912: "table '%s' has multiple constraints named '%s'" SQLSTATE: 42710 -错误原因:当前表中至少有两个相同名称的constraint。 +错误原因:当前表中至少有两个相同名称的 constraint 。 -解决办法:请确保对于同一张表,其constraint名称不相重合。 +解决办法:请确保对于同一张表,其 constraint 名称不相重合。 GAUSS-01913: "constraint '%s' for table '%s' does not exist" SQLSTATE: 42704 -错误原因:当前表中不存在该constraint。 +错误原因:当前表中不存在该 constraint 。 -解决办法:请确认当前表中存在该constraint,或核查该表上的constraint。 +解决办法:请确认当前表中存在该 constraint ,或核查该表上的 constraint 。 GAUSS-01914: "domain '%s' has multiple constraints named '%s'" SQLSTATE: 42710 -错误原因:当前域中至少有两个相同名称的constraint。 +错误原因:当前域中至少有两个相同名称的 constraint 。 -解决办法:请确保在同一域中,其constraint名称不相重合。 +解决办法:请确保在同一域中,其 constraint 名称不相重合。 GAUSS-01915: "constraint '%s' for domain '%s' does not exist" SQLSTATE: 42704 -错误原因:当前域中不存在该constraint。 +错误原因:当前域中不存在该 constraint 。 -解决办法:请确认该域所持有的constraint。 +解决办法:请确认该域所持有的 constraint 。 GAUSS-01916: "null conkey for constraint %u" @@ -60,17 +60,17 @@ GAUSS-01918: "no aggregate name supplied" SQLSTATE: XX000 -错误原因:Aggregate未提供name。 +错误原因:Aggregate未提供 name 。 -解决办法:请提供Aggregate name。 +解决办法:请提供 Aggregate name 。 GAUSS-01919: "aggregate must have a transition function" SQLSTATE: XX000 -错误原因:Aggregate必须有一个transition function。 +错误原因:Aggregate必须有一个 transition function 。 -解决办法:请提供transition function。 +解决办法:请提供 transition function 。 GAUSS-01920: "cannot determine transition data type" diff --git a/content/zh/docs/Developerguide/GAUSS-01921----GAUSS-01930.md b/content/zh/docs/Developerguide/GAUSS-01921----GAUSS-01930.md index 489bf5945..ffae38dde 100644 --- a/content/zh/docs/Developerguide/GAUSS-01921----GAUSS-01930.md +++ b/content/zh/docs/Developerguide/GAUSS-01921----GAUSS-01930.md @@ -4,7 +4,7 @@ GAUSS-01921: "return type of transition function %s is not %s" SQLSTATE: 42804 -错误原因:依据transfn确定的返回类型与声明的返回类型不相匹配。 +错误原因:依据 transfn 确定的返回类型与声明的返回类型不相匹配。 解决办法:对于复合类型必须确保其返回类型与声明的一致性。 @@ -20,9 +20,9 @@ GAUSS-01923: "return type of collection function %s is not %s" SQLSTATE: 42804 -错误原因:collection函数的返回类型与预期的aggTreanType不同。 +错误原因:collection函数的返回类型与预期的 aggTreanType 不同。 -解决办法:检查是否调用了正确的collection函数。 +解决办法:检查是否调用了正确的 collection 函数。 GAUSS-01924: "cannot determine result data type" diff --git a/content/zh/docs/Developerguide/GAUSS-01931----GAUSS-01940.md b/content/zh/docs/Developerguide/GAUSS-01931----GAUSS-01940.md index 05b987052..cb834f815 100644 --- a/content/zh/docs/Developerguide/GAUSS-01931----GAUSS-01940.md +++ b/content/zh/docs/Developerguide/GAUSS-01931----GAUSS-01940.md @@ -14,7 +14,7 @@ SQLSTATE: 2BP01 错误原因:由于其他对象依赖这些对象,无法删除这些对象。 -解决办法:使用drop cascade来级联删除依赖对象。 +解决办法:使用 drop cascade 来级联删除依赖对象。 GAUSS-01933: "invalid varlevelsup %d" @@ -68,9 +68,9 @@ GAUSS-01939: "no namespace name supplied" SQLSTATE: XX000 -错误原因:创建namespace时,未提供namespace的名称。 +错误原因:创建 namespace 时,未提供 namespace 的名称。 -解决办法:请提供namespace的名称。 +解决办法:请提供 namespace 的名称。 GAUSS-01940: "primary keys cannot be expressions" diff --git a/content/zh/docs/Developerguide/GAUSS-01951----GAUSS-01960.md b/content/zh/docs/Developerguide/GAUSS-01951----GAUSS-01960.md index 6ee7c2101..2cb2eee72 100644 --- a/content/zh/docs/Developerguide/GAUSS-01951----GAUSS-01960.md +++ b/content/zh/docs/Developerguide/GAUSS-01951----GAUSS-01960.md @@ -12,9 +12,9 @@ GAUSS-01952: "cannot reindex temporary tables of other sessions" SQLSTATE: 0A000 -错误原因:不能重组其他session临时表上索引。 +错误原因:不能重组其他 session 临时表上索引。 -解决办法:不要重组其他session上的临时表上索引。 +解决办法:不要重组其他 session 上的临时表上索引。 GAUSS-01953: "cannot reindex while reindexing" @@ -36,7 +36,7 @@ GAUSS-01955: "Memory alloc failed for indexInfo" SQLSTATE: XX000 -错误原因:生成IndexInfo结构失败。 +错误原因:生成 IndexInfo 结构失败。 解决办法:检查有足够的内存。 @@ -60,7 +60,7 @@ GAUSS-01958: "mergingBtreeIndexes, only btree indexes can be merged" SQLSTATE: XX000 -错误原因:只能合并B树索引。 +错误原因:只能合并 B 树索引。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-01961----GAUSS-01970.md b/content/zh/docs/Developerguide/GAUSS-01961----GAUSS-01970.md index 1822ec354..d9f2a3a36 100644 --- a/content/zh/docs/Developerguide/GAUSS-01961----GAUSS-01970.md +++ b/content/zh/docs/Developerguide/GAUSS-01961----GAUSS-01970.md @@ -6,7 +6,7 @@ SQLSTATE: 42602 错误原因:无效的枚举类型。 -解决办法:请检查SQL语句中是否包含所提示的无效枚举类型。 +解决办法:请检查 SQL 语句中是否包含所提示的无效枚举类型。 GAUSS-01962: "'%s' is not an existing enum label" @@ -14,7 +14,7 @@ SQLSTATE: 22023 错误原因:无效的枚举类型。 -解决办法:请检查SQL语句中是否包含所提示的无效枚举类型。 +解决办法:请检查 SQL 语句中是否包含所提示的无效枚举类型。 GAUSS-01963: "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" @@ -22,7 +22,7 @@ SQLSTATE: 22023 错误原因:修改枚举类型与二进制升级不兼容。 -解决办法:请检查SQL语句中是否包含对于枚举类型的修改。 +解决办法:请检查 SQL 语句中是否包含对于枚举类型的修改。 GAUSS-01965: "alignment '%c' is invalid for passed-by-value type of size %d" @@ -44,7 +44,7 @@ GAUSS-01967: "alignment '%c' is invalid for variable-length type" SQLSTATE: 42P17 -错误原因:变长类型不合法的alignment。 +错误原因:变长类型不合法的 alignment 。 解决办法:检查创建类型的定义。 @@ -62,5 +62,5 @@ SQLSTATE: 42710 错误原因:数组类型名称超长。 -解决办法:请检查当前创建类型的定义语法中填写的数组类型长度是否超过最大值63。 +解决办法:请检查当前创建类型的定义语法中填写的数组类型长度是否超过最大值 63 。 diff --git a/content/zh/docs/Developerguide/GAUSS-01981----GAUSS-01990.md b/content/zh/docs/Developerguide/GAUSS-01981----GAUSS-01990.md index 779cd20fc..d3146dd8b 100644 --- a/content/zh/docs/Developerguide/GAUSS-01981----GAUSS-01990.md +++ b/content/zh/docs/Developerguide/GAUSS-01981----GAUSS-01990.md @@ -4,7 +4,7 @@ GAUSS-01983: "cannot continue WAL streaming, recovery has already ended" SQLSTATE: XX000 -错误原因:主机上不用启动walreceiver,如果启动了报错退出。 +错误原因:主机上不用启动 walreceiver ,如果启动了报错退出。 解决办法:正常报错,不用处理。 @@ -28,7 +28,7 @@ GAUSS-01987: "number of requested standby connections exceeds max\_wal\_senders SQLSTATE: 53300 -错误原因:主机上备机连接数达到上限,可能原因是备机尝试连接主机了很多次,每次连接都失败了,也可能原因是主机上max\_wal\_senders设置过小,特别是在备机执行build命令的情况下,因为此时主机要启动两个发送线程来完成数据和日志的发送。 +错误原因:主机上备机连接数达到上限,可能原因是备机尝试连接主机了很多次,每次连接都失败了,也可能原因是主机上max\_wal\_senders设置过小,特别是在备机执行 build 命令的情况下,因为此时主机要启动两个发送线程来完成数据和日志的发送。 解决办法:查看之前的连接是否已关闭,如果没有则人工关掉。查看max\_wal\_senders设置是否偏小,如果偏小则手工调大。 diff --git a/content/zh/docs/Developerguide/GAUSS-02011----GAUSS-02020.md b/content/zh/docs/Developerguide/GAUSS-02011----GAUSS-02020.md index ecbe99e13..bebd4f2ff 100644 --- a/content/zh/docs/Developerguide/GAUSS-02011----GAUSS-02020.md +++ b/content/zh/docs/Developerguide/GAUSS-02011----GAUSS-02020.md @@ -12,7 +12,7 @@ GAUSS-02016: "replconninfo1 or replconninfo2 not configured." SQLSTATE: XX000 -错误原因:postgresql.conf配置文件中存在replconninfo1或者replconninfo2配置为空。 +错误原因:postgresql.conf配置文件中存在 replconninfo1 或者 replconninfo2 配置为空。 解决办法:使用gs\_guc工具修改对应报错实例的postgresql.conf中的配置项。 @@ -20,7 +20,7 @@ GAUSS-02017: "terminating walreceiver process due to administrator command" SQLSTATE: 57P01 -错误原因:备机walreceiver线程收到SIGTERM信号,线程退出前打印提示。 +错误原因:备机 walreceiver 线程收到 SIGTERM 信号,线程退出前打印提示。 解决办法:检查日志中前面的相关处理,确定操作是否正常。 diff --git a/content/zh/docs/Developerguide/GAUSS-02021----GAUSS-02030.md b/content/zh/docs/Developerguide/GAUSS-02021----GAUSS-02030.md index e152d6fb3..cdcc95b3f 100644 --- a/content/zh/docs/Developerguide/GAUSS-02021----GAUSS-02030.md +++ b/content/zh/docs/Developerguide/GAUSS-02021----GAUSS-02030.md @@ -22,7 +22,7 @@ SQLSTATE: XX000 错误原因:备机/从备请求的日志在主机上已经被删除了。 -解决办法:检查主机实例的pg\_xlog目录,确定是否存在名称不连续的日志。需要去重建备机或重启从备,集群环境下,CM会自动重建备机。 +解决办法:检查主机实例的pg\_xlog目录,确定是否存在名称不连续的日志。需要去重建备机或重启从备,集群环境下, CM 会自动重建备机。 GAUSS-02027: "could not open file '%s' \(log file %u, segment %u\): %m" @@ -36,7 +36,7 @@ GAUSS-02030: "%u/%u/%u invalid bcm buffer %u" SQLSTATE: XX000 -错误原因:无法读取到指定的BCM buffer。 +错误原因:无法读取到指定的 BCM buffer 。 解决办法:通过检查日志以及数据文件,确认是否存在异常删除的情况。重新启动实例。 diff --git a/content/zh/docs/Developerguide/GAUSS-02041----GAUSS-02050.md b/content/zh/docs/Developerguide/GAUSS-02041----GAUSS-02050.md index a1742bcd3..97dbfce4f 100644 --- a/content/zh/docs/Developerguide/GAUSS-02041----GAUSS-02050.md +++ b/content/zh/docs/Developerguide/GAUSS-02041----GAUSS-02050.md @@ -4,7 +4,7 @@ GAUSS-02041: "could not fsync file '%s': %m" SQLSTATE: XX000 -错误原因:无法sync文件。 +错误原因:无法 sync 文件。 解决办法:检查具体的错误码,进行处理。 diff --git a/content/zh/docs/Developerguide/GAUSS-02061----GAUSS-02070.md b/content/zh/docs/Developerguide/GAUSS-02061----GAUSS-02070.md index 407db3aed..4180e44ec 100644 --- a/content/zh/docs/Developerguide/GAUSS-02061----GAUSS-02070.md +++ b/content/zh/docs/Developerguide/GAUSS-02061----GAUSS-02070.md @@ -12,7 +12,7 @@ GAUSS-02064: "writing incorrect data page checksum at: rnode\[%u,%u,%u\], blockn SQLSTATE: XX000 -错误原因:备机收到主机发送的数据页CRC校验不通过。 +错误原因:备机收到主机发送的数据页 CRC 校验不通过。 解决办法:检查网络环境,确定当前是否存在丢包现象。 @@ -28,7 +28,7 @@ GAUSS-02069: "could not find type OID for relation %u" SQLSTATE: XX000 -错误原因:查找对应的relation失败。 +错误原因:查找对应的 relation 失败。 解决办法:系统表异常,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02081----GAUSS-02090.md b/content/zh/docs/Developerguide/GAUSS-02081----GAUSS-02090.md index 9bcfeed72..3f8bfcf00 100644 --- a/content/zh/docs/Developerguide/GAUSS-02081----GAUSS-02090.md +++ b/content/zh/docs/Developerguide/GAUSS-02081----GAUSS-02090.md @@ -36,7 +36,7 @@ GAUSS-02087: "byval datum but length = %lu" SQLSTATE: XX000 -错误原因: 当前string所表示的数据超过了datum所表示的范围。 +错误原因: 当前 string 所表示的数据超过了 datum 所表示的范围。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02091----GAUSS-02100.md b/content/zh/docs/Developerguide/GAUSS-02091----GAUSS-02100.md index a7c855260..2d6c84694 100644 --- a/content/zh/docs/Developerguide/GAUSS-02091----GAUSS-02100.md +++ b/content/zh/docs/Developerguide/GAUSS-02091----GAUSS-02100.md @@ -4,7 +4,7 @@ GAUSS-02091: "unrecognized OID: '%.\*s'" SQLSTATE: XX000 -错误原因:内部错误:无法识别的OID号。 +错误原因:内部错误:无法识别的 OID 号。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -20,7 +20,7 @@ GAUSS-02093: "cannot list\_concat\(\) a list to itself" SQLSTATE: XX000 -错误原因:不可将一个list连接到它本身。 +错误原因:不可将一个 list 连接到它本身。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -44,7 +44,7 @@ GAUSS-02096: "bitmapset is empty" SQLSTATE: XX000 -错误原因:当前的bitmapset不可为空。 +错误原因:当前的 bitmapset 不可为空。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -60,7 +60,7 @@ GAUSS-02098: "cannot get type for untransformed sublink" SQLSTATE: XX000 -错误原因:系统内部错误:对于sublink表达式节点,如果sublink未转换,则无法正确获得表达式类型 +错误原因:系统内部错误:对于 sublink 表达式节点,如果 sublink 未转换,则无法正确获得表达式类型 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -68,7 +68,7 @@ GAUSS-02099: "cannot get collation for untransformed sublink" SQLSTATE: XX000 -错误原因:系统内部错误:对于sublink表达式节点,如果sublink未转换,则无法正确获得表达式的collation +错误原因:系统内部错误:对于 sublink 表达式节点,如果 sublink 未转换,则无法正确获得表达式的collation 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -76,7 +76,7 @@ GAUSS-02100: "cannot set collation for untransformed sublink" SQLSTATE: XX000 -错误原因:系统内部错误:无法未转换的sublink设置collation +错误原因:系统内部错误:无法未转换的 sublink 设置collation 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02101----GAUSS-02110.md b/content/zh/docs/Developerguide/GAUSS-02101----GAUSS-02110.md index 3462ab3ba..41177c197 100644 --- a/content/zh/docs/Developerguide/GAUSS-02101----GAUSS-02110.md +++ b/content/zh/docs/Developerguide/GAUSS-02101----GAUSS-02110.md @@ -22,7 +22,7 @@ SQLSTATE: XX000 错误原因:语法错误。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-02104: "%s at line %d" @@ -30,7 +30,7 @@ SQLSTATE: XX000 错误原因:语法错误。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-02105: "incorrect number of columns in row \(expected %d, got %d\)" diff --git a/content/zh/docs/Developerguide/GAUSS-02121----GAUSS-02130.md b/content/zh/docs/Developerguide/GAUSS-02121----GAUSS-02130.md index bfa8e2efc..a8bbeaad2 100644 --- a/content/zh/docs/Developerguide/GAUSS-02121----GAUSS-02130.md +++ b/content/zh/docs/Developerguide/GAUSS-02121----GAUSS-02130.md @@ -22,13 +22,13 @@ SQLSTATE: 42710 错误原因:group已经被定义过。 -解决办法:删除已定义的同名group,或修改新的group名称。 +解决办法:删除已定义的同名 group ,或修改新的 group 名称。 GAUSS-02129: "PGXC node %s: only Datanodes can be group members" SQLSTATE: 42601 -错误原因:group的成员只能为DN类型。 +错误原因:group的成员只能为 DN 类型。 -解决办法:修改创建node group的SQL语句。 +解决办法:修改创建 node group 的 SQL 语句。 diff --git a/content/zh/docs/Developerguide/GAUSS-02131----GAUSS-02140.md b/content/zh/docs/Developerguide/GAUSS-02131----GAUSS-02140.md index df2863ce3..dfb0aac10 100644 --- a/content/zh/docs/Developerguide/GAUSS-02131----GAUSS-02140.md +++ b/content/zh/docs/Developerguide/GAUSS-02131----GAUSS-02140.md @@ -6,7 +6,7 @@ SQLSTATE: 42710 错误原因:group\_name对应的节点组不存在。 -解决办法:检查调用的group\_name是否正确,或数据库在创建时是否正确创建group。 +解决办法:检查调用的group\_name是否正确,或数据库在创建时是否正确创建 group 。 GAUSS-02136: "PGXC Group %s: group not defined" @@ -14,21 +14,21 @@ SQLSTATE: XX000 错误原因:group\_name对应的节点组不存在。 -解决办法:检查调用的group\_name是否正确,或数据库在创建时是否正确创建group。 +解决办法:检查调用的group\_name是否正确,或数据库在创建时是否正确创建 group 。 GAUSS-02137: "No options specified" SQLSTATE: 42601 -错误原因:语法错误,执行create node语句中没有带with option。 +错误原因:语法错误,执行 create node 语句中没有带 with option 。 -解决办法:修改执行的语句(存疑,用户自行create node是否应作为不推荐行为)。 +解决办法:修改执行的语句(存疑,用户自行 create node 是否应作为不推荐行为)。 GAUSS-02138: "port value is out of range" SQLSTATE: 22003 -错误原因:指定的端口号port超出范围。 +错误原因:指定的端口号 port 超出范围。 -解决办法:修改SQL语句中的port。 +解决办法:修改 SQL 语句中的 port 。 diff --git a/content/zh/docs/Developerguide/GAUSS-02141----GAUSS-02150.md b/content/zh/docs/Developerguide/GAUSS-02141----GAUSS-02150.md index a84c2cbc0..e09e0bfa5 100644 --- a/content/zh/docs/Developerguide/GAUSS-02141----GAUSS-02150.md +++ b/content/zh/docs/Developerguide/GAUSS-02141----GAUSS-02150.md @@ -4,9 +4,9 @@ GAUSS-02141: "port1 value is out of range" SQLSTATE: 22003 -错误原因:指定的端口号port1超出范围。 +错误原因:指定的端口号 port1 超出范围。 -解决办法:修改SQL语句中的port。 +解决办法:修改 SQL 语句中的 port 。 GAUSS-02143: "control\_port1 value is out of range" @@ -20,9 +20,9 @@ GAUSS-02144: "type value is incorrect, specify 'coordinator or 'datanode'" SQLSTATE: 22023 -错误原因:指定的类型有误,只能为coordinator或datanode类型。 +错误原因:指定的类型有误,只能为 coordinator 或 datanode 类型。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-02145: "incorrect option: %s" @@ -30,13 +30,13 @@ SQLSTATE: 42601 错误原因:指定的选项不正确。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-02146: "PGXC node %s: cannot be a primary node, it has to be a Datanode" SQLSTATE: 42601 -错误原因:Create node或Alter node不能将Coordinator指定为主节点。 +错误原因:Create node或 Alter node 不能将 Coordinator 指定为主节点。 解决办法:禁止执行此操作。 @@ -44,7 +44,7 @@ GAUSS-02147: "PGXC node %s: cannot be a preferred node, it has to be a Datanode" SQLSTATE: 42601 -错误原因:不能将Coordinator指定为首选节点,必须是DN。 +错误原因:不能将 Coordinator 指定为首选节点,必须是 DN 。 解决办法:禁止执行此操作。 @@ -52,7 +52,7 @@ GAUSS-02148: "PGXC node %s: Node type not specified" SQLSTATE: 42601 -错误原因:语法错误,执行create node语句的with option中没有type字段。 +错误原因:语法错误,执行 create node 语句的 with option 中没有 type 字段。 解决办法:修改执行的语句。 @@ -60,7 +60,7 @@ GAUSS-02149: "Please choose different node name." SQLSTATE: 42P17 -错误原因:执行create node指定的node name无法通过hash产生独特的node id。 +错误原因:执行 create node 指定的 node name 无法通过 hash 产生独特的 node id 。 -解决办法:修改指定的node name。 +解决办法:修改指定的 node name 。 diff --git a/content/zh/docs/Developerguide/GAUSS-02151----GAUSS-02160.md b/content/zh/docs/Developerguide/GAUSS-02151----GAUSS-02160.md index 384057a49..ea004fa46 100644 --- a/content/zh/docs/Developerguide/GAUSS-02151----GAUSS-02160.md +++ b/content/zh/docs/Developerguide/GAUSS-02151----GAUSS-02160.md @@ -4,15 +4,15 @@ GAUSS-02152: "Node name '%s' is too long" SQLSTATE: 42P17 -错误原因:指定的node name过长。 +错误原因:指定的 node name 过长。 -解决办法:修改指定的node name。 +解决办法:修改指定的 node name 。 GAUSS-02153: "Failed to create coordinator, the maximum number of coordinators %d specified by 'max\_coordinators' has been reached." SQLSTATE: 42601 -错误原因:语法错误,创建的coordinator数量超过设置的max\_coordinators数量。 +错误原因:语法错误,创建的 coordinator 数量超过设置的max\_coordinators数量。 解决办法:调大max\_coordinators配置参数。 @@ -20,7 +20,7 @@ GAUSS-02154: "Failed to create datanode, the maximum number of datanodes %d spec SQLSTATE: 42601 -错误原因:语法错误,创建的DN数量超过设置的max\_datanodes数量。 +错误原因:语法错误,创建的 DN 数量超过设置的max\_datanodes数量。 解决办法:调大max\_datanodes配置参数。 @@ -28,9 +28,9 @@ GAUSS-02155: "PGXC node %s: two nodes cannot be primary" SQLSTATE: 42601 -错误原因:语法错误,已经创建了一个primary node。 +错误原因:语法错误,已经创建了一个 primary node 。 -解决办法:根据需要将之前创建的primary node改为非primary节点。 +解决办法:根据需要将之前创建的 primary node 改为非 primary 节点。 GAUSS-02157: "cache lookup failed for object %u" @@ -44,15 +44,15 @@ GAUSS-02158: "PGXC node %s: cannot alter Coordinator to Datanode" SQLSTATE: 42601 -错误原因:语法错误,无法将CN改为DN。 +错误原因:语法错误,无法将 CN 改为 DN 。 -解决办法:禁止将CN修改为DN。 +解决办法:禁止将 CN 修改为 DN 。 GAUSS-02159: "PGXC node %s: cannot alter Datanode to Coordinator" SQLSTATE: 42601 -错误原因:语法错误,无法将DN改为CN。 +错误原因:语法错误,无法将 DN 改为 CN 。 -解决办法:禁止将DN修改为CN。 +解决办法:禁止将 DN 修改为 CN 。 diff --git a/content/zh/docs/Developerguide/GAUSS-02161----GAUSS-02170.md b/content/zh/docs/Developerguide/GAUSS-02161----GAUSS-02170.md index 8f1fed4fa..32b71b4a2 100644 --- a/content/zh/docs/Developerguide/GAUSS-02161----GAUSS-02170.md +++ b/content/zh/docs/Developerguide/GAUSS-02161----GAUSS-02170.md @@ -4,7 +4,7 @@ GAUSS-02161: "PGXC Node %s: cannot drop local node" SQLSTATE: 42601 -错误原因:语法错误,无法drop当前节点。 +错误原因:语法错误,无法 drop 当前节点。 解决办法:禁止删除本地节点信息。 diff --git a/content/zh/docs/Developerguide/GAUSS-02181----GAUSS-02190.md b/content/zh/docs/Developerguide/GAUSS-02181----GAUSS-02190.md index d3b3669d7..d36acb587 100644 --- a/content/zh/docs/Developerguide/GAUSS-02181----GAUSS-02190.md +++ b/content/zh/docs/Developerguide/GAUSS-02181----GAUSS-02190.md @@ -44,7 +44,7 @@ GAUSS-02186: "Unexpected response from the Datanodes for 'c' message, current re SQLSTATE: XX001 -错误原因: 系统内部错误:对于'c'报文头的消息,遇到了非copyto请求 +错误原因: 系统内部错误:对于'c'报文头的消息,遇到了非 copyto 请求 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -60,7 +60,7 @@ GAUSS-02189: "Unexpected response from the Datanodes for 'S' message, current re SQLSTATE: XX001 -错误原因:系统内部错误:对于'S'报文头的消息,遇到了非set命令请求。 +错误原因:系统内部错误:对于'S'报文头的消息,遇到了非 set 命令请求。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -68,7 +68,7 @@ GAUSS-02190: "Unexpected response from the Datanodes for 'G' message, current re SQLSTATE: XX001 -错误原因:系统内部错误:对于'G'报文头的消息,遇到了非copy in命令请求。 +错误原因:系统内部错误:对于'G'报文头的消息,遇到了非 copy in 命令请求。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02191----GAUSS-02200.md b/content/zh/docs/Developerguide/GAUSS-02191----GAUSS-02200.md index c869bc4a1..6c098ab82 100644 --- a/content/zh/docs/Developerguide/GAUSS-02191----GAUSS-02200.md +++ b/content/zh/docs/Developerguide/GAUSS-02191----GAUSS-02200.md @@ -4,7 +4,7 @@ GAUSS-02191: "Unexpected response from the Datanodes for 'H' message, current re SQLSTATE: XX001 -错误原因:系统内部错误:对于'H'报文头的消息,遇到了非copy out命令请求。 +错误原因:系统内部错误:对于'H'报文头的消息,遇到了非 copy out 命令请求。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -12,7 +12,7 @@ GAUSS-02192: "Unexpected response from the Datanodes for 'd' message, current re SQLSTATE: XX001 -错误原因:系统内部错误:对于'd'报文头的消息,遇到了非copy out 数据命令请求。 +错误原因:系统内部错误:对于'd'报文头的消息,遇到了非 copy out 数据命令请求。 解决办法:请联系技术支持工程师提供技术支持。 @@ -28,7 +28,7 @@ GAUSS-02195: "Unexpected response from Datanode" SQLSTATE: XX000。 -错误原因:系统内部错误:来自于DN的非预期响应。 +错误原因:系统内部错误:来自于 DN 的非预期响应。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-02196: "Failed to read response from Datanodes Detail: %s\\n" SQLSTATE: XX000 -错误原因:系统内部错误:无法从DN正常获取响应。 +错误原因:系统内部错误:无法从 DN 正常获取响应。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-02198: "Unexpected response from the Datanodes, result = %d, request type SQLSTATE: XX000 -错误原因:系统内部错误:从DN获得非预期的响应。 +错误原因:系统内部错误:从 DN 获得非预期的响应。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02201----GAUSS-02210.md b/content/zh/docs/Developerguide/GAUSS-02201----GAUSS-02210.md index a2f3cf165..7cc8b58ce 100644 --- a/content/zh/docs/Developerguide/GAUSS-02201----GAUSS-02210.md +++ b/content/zh/docs/Developerguide/GAUSS-02201----GAUSS-02210.md @@ -12,7 +12,7 @@ GAUSS-02209: "Error while running COPY" SQLSTATE: XX000 -错误原因:系统内部错误:在收集信息时发现来自于DN的非预期响应。 +错误原因:系统内部错误:在收集信息时发现来自于 DN 的非预期响应。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02211----GAUSS-02220.md b/content/zh/docs/Developerguide/GAUSS-02211----GAUSS-02220.md index 4de218304..d070a5a2c 100644 --- a/content/zh/docs/Developerguide/GAUSS-02211----GAUSS-02220.md +++ b/content/zh/docs/Developerguide/GAUSS-02211----GAUSS-02220.md @@ -12,7 +12,7 @@ GAUSS-02212: "Failed to get next transaction ID" SQLSTATE: XX000 -错误原因:系统内部错误:无法获得下一个事务ID。 +错误原因:系统内部错误:无法获得下一个事务 ID 。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -20,7 +20,7 @@ GAUSS-02214: "Failed to send command to Datanodes" SQLSTATE: XX000 -错误原因:无法下发命令到DN。 +错误原因:无法下发命令到 DN 。 解决办法:请检查当前集群连接状态。 @@ -28,7 +28,7 @@ GAUSS-02215: "Unexpected response from Datanode %u" SQLSTATE: XX000 -错误原因:系统内部错误:来自于DN非预期响应。 +错误原因:系统内部错误:来自于 DN 非预期响应。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -44,7 +44,7 @@ GAUSS-02217: "Failed to read response from Datanodes when ending query" SQLSTATE: XX000 -错误原因:系统内部错误:在结束查询时无法从DN读取响应信息。 +错误原因:系统内部错误:在结束查询时无法从 DN 读取响应信息。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-02218: "Failed to close Datanode cursor" SQLSTATE: XX000 -错误原因:系统内部错误:无法关闭DN上的游标。 +错误原因:系统内部错误:无法关闭 DN 上的游标。 解决办法:请检查当前集群连接状态。 @@ -68,7 +68,7 @@ GAUSS-02220: "cannot run EXECUTE DIRECT with utility inside a transaction block" SQLSTATE: 25001 -错误原因:无法在事务内部执行EXECUTE DIRECT命令。 +错误原因:无法在事务内部执行 EXECUTE DIRECT 命令。 -解决办法:请在事务外执行该EXECUTE DIRECT命令。 +解决办法:请在事务外执行该 EXECUTE DIRECT 命令。 diff --git a/content/zh/docs/Developerguide/GAUSS-02221----GAUSS-02230.md b/content/zh/docs/Developerguide/GAUSS-02221----GAUSS-02230.md index cc7e1c3cf..670c8a912 100644 --- a/content/zh/docs/Developerguide/GAUSS-02221----GAUSS-02230.md +++ b/content/zh/docs/Developerguide/GAUSS-02221----GAUSS-02230.md @@ -44,7 +44,7 @@ GAUSS-02230: "Failed to read response from Datanode %u when ending query" SQLSTATE: XX000 -错误原因:无法从DN收到结果。 +错误原因:无法从 DN 收到结果。 -解决办法:检查DN的状态,重启集群后,重新查询。 +解决办法:检查 DN 的状态,重启集群后,重新查询。 diff --git a/content/zh/docs/Developerguide/GAUSS-02251----GAUSS-02260.md b/content/zh/docs/Developerguide/GAUSS-02251----GAUSS-02260.md index dfb9469b6..efd80b24b 100644 --- a/content/zh/docs/Developerguide/GAUSS-02251----GAUSS-02260.md +++ b/content/zh/docs/Developerguide/GAUSS-02251----GAUSS-02260.md @@ -20,9 +20,9 @@ GAUSS-02258: "Failed to read response from Datanodes. Detail: %s\\n" SQLSTATE: XX000 -错误原因:发送端连接断开,具体原因见Detail后的信息。 +错误原因:发送端连接断开,具体原因见 Detail 后的信息。 -解决办法:查看对端DN是否出现故障,或排查网络是否出现异常。 +解决办法:查看对端 DN 是否出现故障,或排查网络是否出现异常。 GAUSS-02260: "Unhandled datatype for modulo or hash distribution\\n" diff --git a/content/zh/docs/Developerguide/GAUSS-02261----GAUSS-02270.md b/content/zh/docs/Developerguide/GAUSS-02261----GAUSS-02270.md index 7d72b85d4..37e32a5cd 100644 --- a/content/zh/docs/Developerguide/GAUSS-02261----GAUSS-02270.md +++ b/content/zh/docs/Developerguide/GAUSS-02261----GAUSS-02270.md @@ -4,7 +4,7 @@ GAUSS-02265: "BitmapOr doesn't support zero inputs" SQLSTATE: XX000 -错误原因:系统内部错误,BitmapOr算子的输入为空。 +错误原因:系统内部错误, BitmapOr 算子的输入为空。 解决办法:请联系技术支持工程师提供技术支持。 @@ -12,9 +12,9 @@ GAUSS-02266: "could not identify CTID variable" SQLSTATE: 42809 -错误原因: 获取到的变量不是ctid变量。 +错误原因: 获取到的变量不是 ctid 变量。 -解决办法:查看执行计划,检查表达式返回的类型是否是ctid类型,若否,请联系技术支持工程师提供技术支持。 +解决办法:查看执行计划,检查表达式返回的类型是否是 ctid 类型,若否,请联系技术支持工程师提供技术支持。 GAUSS-02268: "invalid operation on partition, allowed are UPDATE/DELETE/SELECT" diff --git a/content/zh/docs/Developerguide/GAUSS-02271----GAUSS-02280.md b/content/zh/docs/Developerguide/GAUSS-02271----GAUSS-02280.md index 7518321e1..c960cdf01 100644 --- a/content/zh/docs/Developerguide/GAUSS-02271----GAUSS-02280.md +++ b/content/zh/docs/Developerguide/GAUSS-02271----GAUSS-02280.md @@ -12,7 +12,7 @@ GAUSS-02272: "%s is not allowed in a SQL function" SQLSTATE: 0A000 -错误原因:事务语句不能出现在SQL函数里。 +错误原因:事务语句不能出现在 SQL 函数里。 解决办法:请检查函数定义。 @@ -28,7 +28,7 @@ GAUSS-02274: "failed to fetch lazy-eval tuple" SQLSTATE: 22P08 -错误原因:系统内部错误,从tuplestore中获取元组失败。 +错误原因:系统内部错误,从 tuplestore 中获取元组失败。 解决办法:请联系技术支持工程师提供技术支持。 @@ -44,7 +44,7 @@ GAUSS-02277: "mergejoin clause is not an OpExpr" SQLSTATE: XX000 -错误原因:计划问题,mergejoin的条件不是一个算术表达式。 +错误原因:计划问题, mergejoin 的条件不是一个算术表达式。 解决办法:生成的计划有问题,请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-02278: "unsupported mergejoin strategy %d" SQLSTATE: XX000 -错误原因:计划问题,mergejoin使用的排序策略问题。 +错误原因:计划问题, mergejoin 使用的排序策略问题。 解决办法:内部问题,请联系技术支持工程师提供技术支持。 @@ -60,7 +60,7 @@ GAUSS-02279: "cannot merge using non-equality operator %u" SQLSTATE: XX000 -错误原因:计划问题,mergejoin使用的连接策略问题 +错误原因:计划问题, mergejoin 使用的连接策略问题 解决办法:内部问题,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02281----GAUSS-02290.md b/content/zh/docs/Developerguide/GAUSS-02281----GAUSS-02290.md index 64eab9d53..2d16fe121 100644 --- a/content/zh/docs/Developerguide/GAUSS-02281----GAUSS-02290.md +++ b/content/zh/docs/Developerguide/GAUSS-02281----GAUSS-02290.md @@ -4,7 +4,7 @@ GAUSS-02281: "unrecognized mergejoin state: %d" SQLSTATE: XX000 -错误原因:执行问题,mergejoin选择的执行策略错误导致。 +错误原因:执行问题, mergejoin 选择的执行策略错误导致。 解决办法:内部问题,请联系技术支持工程师提供技术支持。 @@ -12,7 +12,7 @@ GAUSS-02282: "RIGHT JOIN is only supported with merge-joinable join conditions" SQLSTATE: 0A000 -错误原因: 计划问题,merge right join不支持。 +错误原因: 计划问题, merge right join 不支持。 解决办法:内部问题,请联系技术支持工程师提供技术支持。 @@ -20,15 +20,15 @@ GAUSS-02283: "FULL JOIN is only supported with merge-joinable join conditions" SQLSTATE: 0A000 -错误原因:对于mergejoin来说,full join无法处理非常数型的连接表达式\(joinclauses\)。 +错误原因:对于 mergejoin 来说, full join 无法处理非常数型的连接表达式\(joinclauses\)。 -解决办法:检查sql语句在调用full join时joinclauses是否为常数型。 +解决办法:检查 sql 语句在调用 full join 时 joinclauses 是否为常数型。 GAUSS-02284: "non-MVCC snapshots are not supported in index-only scans" SQLSTATE: 0A000 -错误原因:index-only scan不支持非MVCC的snapshot。 +错误原因:index-only scan不支持非 MVCC 的 snapshot 。 解决办法:请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-02285: "EvalPlanQual recheck is not supported in index-only scans" SQLSTATE: 0A000 -错误原因:index-only scan不支持并发更新时的recheck。 +错误原因:index-only scan不支持并发更新时的 recheck 。 解决办法:请联系技术支持工程师提供技术支持。 @@ -44,9 +44,9 @@ GAUSS-02288: "could not find hash function for hash operator %u" SQLSTATE: 42883 -错误原因:找不到对应的hash函数。 +错误原因:找不到对应的 hash 函数。 -解决办法:检查数据类型是否支持hash。 +解决办法:检查数据类型是否支持 hash 。 GAUSS-02289: "cursor '%s' is not a SELECT query" diff --git a/content/zh/docs/Developerguide/GAUSS-02291----GAUSS-02300.md b/content/zh/docs/Developerguide/GAUSS-02291----GAUSS-02300.md index 565605ee7..6ee2f74ab 100644 --- a/content/zh/docs/Developerguide/GAUSS-02291----GAUSS-02300.md +++ b/content/zh/docs/Developerguide/GAUSS-02291----GAUSS-02300.md @@ -6,15 +6,15 @@ SQLSTATE: 24000 错误原因:游标重复作用在当前表上。 -解决办法:检查sql语句是否存在嵌套作用或多次作用情况。 +解决办法:检查 sql 语句是否存在嵌套作用或多次作用情况。 GAUSS-02292: "cursor '%s' does not have a FOR UPDATE/SHARE reference to table '%s'" SQLSTATE: 24000 -错误原因:对包含“current of”和“update”的sql语句没有找到定义对该表的update/share语法。 +错误原因:对包含“current of”和“update”的 sql 语句没有找到定义对该表的update/share语法。 -解决办法:对包含“current of”的sql语句,检查是否正确定义了对表的update/share操作或检查优化器部分是否正确处理。 +解决办法:对包含“current of”的 sql 语句,检查是否正确定义了对表的update/share操作或检查优化器部分是否正确处理。 GAUSS-02294: "cursor '%s' is not a simply updatable scan of table '%s'" @@ -22,7 +22,7 @@ SQLSTATE: 24000 错误原因:对包含“current of”语法且不包含“update”的语法的查询语句没有找到对应的扫描节点。 -解决办法:检查sql语句是否正确编写对表的操作或检查优化器是否正确处理。 +解决办法:检查 sql 语句是否正确编写对表的操作或检查优化器是否正确处理。 GAUSS-02295: "type of parameter %d \(%s\) does not match that when preparing the plan \(%s\)" @@ -30,7 +30,7 @@ SQLSTATE: 42804 错误原因:执行过程中返回的参数类型与执行计划中对表达式的参数类型的描述不一致。 -解决办法:1、请检查sql语句中表达式参数的类型是否一致。2、请检查执行代码,确保参数属性的正确性。 +解决办法:1、请检查 sql 语句中表达式参数的类型是否一致。2、请检查执行代码,确保参数属性的正确性。 GAUSS-02296: "no value found for parameter %d" @@ -44,7 +44,7 @@ GAUSS-02297: "LIMIT subplan failed to run backwards" SQLSTATE: XX005 -错误原因:LIMIT下层算子反向扫描时提前返回NULL。 +错误原因:LIMIT下层算子反向扫描时提前返回 NULL 。 解决办法:请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-02298: "impossible LIMIT state: %d" SQLSTATE: XX006 -错误原因:不可能的LIMIT状态。 +错误原因:不可能的 LIMIT 状态。 解决办法:请联系技术支持工程师提供技术支持。 @@ -62,7 +62,7 @@ SQLSTATE: 2201X 错误原因:OFFSET count是无效的负值。 -解决办法:count值必须大于等于0。 +解决办法:count值必须大于等于 0 。 GAUSS-02300: "LIMIT must not be negative" @@ -70,5 +70,5 @@ SQLSTATE: 2201W 错误原因:LIMIT count是无效的负值。 -解决办法:count值必须大于等于0。 +解决办法:count值必须大于等于 0 。 diff --git a/content/zh/docs/Developerguide/GAUSS-02301----GAUSS-02310.md b/content/zh/docs/Developerguide/GAUSS-02301----GAUSS-02310.md index 7390bec27..4df7c40c4 100644 --- a/content/zh/docs/Developerguide/GAUSS-02301----GAUSS-02310.md +++ b/content/zh/docs/Developerguide/GAUSS-02301----GAUSS-02310.md @@ -4,39 +4,39 @@ GAUSS-02301: "frame starting offset must not be null" SQLSTATE: 22004 -错误原因:window frame子句指定的start offset为NULL。 +错误原因:window frame子句指定的 start offset 为 NULL 。 -解决办法:检查sql语句,保证frame子句的start offset非空。 +解决办法:检查 sql 语句,保证 frame 子句的 start offset 非空。 GAUSS-02302: "frame starting offset must not be negative" SQLSTATE: 22023 -错误原因:window frame子句指定的start offset为负数。 +错误原因:window frame子句指定的 start offset 为负数。 -解决办法:检查sql语句,保证frame子句的start offset非负。 +解决办法:检查 sql 语句,保证 frame 子句的 start offset 非负。 GAUSS-02303: "frame ending offset must not be null" SQLSTATE: 22004 -错误原因:window frame子句指定的ending offset为NULL。 +错误原因:window frame子句指定的 ending offset 为 NULL 。 -解决办法:检查sql语句,保证frame子句的ending offset非空。 +解决办法:检查 sql 语句,保证 frame 子句的 ending offset 非空。 GAUSS-02304: "frame ending offset must not be negative" SQLSTATE: 22023 -错误原因:window frame子句指定的ending offset为负数。 +错误原因:window frame子句指定的 ending offset 为负数。 -解决办法:检查sql语句,保证frame子句的ending offset非负。 +解决办法:检查 sql 语句,保证 frame 子句的 ending offset 非负。 GAUSS-02306: "WindowFunc with winref %u assigned to WindowAgg with winref %u" SQLSTATE: 42804 -错误原因:计划问题,window func的序号和windowagg中的序号对不上。 +错误原因:计划问题, window func 的序号和 windowagg 中的序号对不上。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02311----GAUSS-02320.md b/content/zh/docs/Developerguide/GAUSS-02311----GAUSS-02320.md index fe42e3943..3403b7451 100644 --- a/content/zh/docs/Developerguide/GAUSS-02311----GAUSS-02320.md +++ b/content/zh/docs/Developerguide/GAUSS-02311----GAUSS-02320.md @@ -22,7 +22,7 @@ SQLSTATE: 42P25 错误原因:表达式中不存在聚集函数。 -解决办法:检查SQL中的AggRef表达式。 +解决办法:检查 SQL 中的 AggRef 表达式。 GAUSS-02316: "no window functions in this expression context" @@ -30,7 +30,7 @@ SQLSTATE: 42P20 错误原因:表达式中不存在窗口函数。 -解决办法:检查SQL中的WindowFunc表达式。 +解决办法:检查 SQL 中的 WindowFunc 表达式。 GAUSS-02317: "attribute number %d exceeds number of columns %d" @@ -46,7 +46,7 @@ SQLSTATE: 42P24 错误原因:类型不匹配。 -解决办法:根据报错Detail信息检查SQL语句。 +解决办法:根据报错 Detail 信息检查 SQL 语句。 GAUSS-02319: "table row type and query-specified row type do not match" diff --git a/content/zh/docs/Developerguide/GAUSS-02321----GAUSS-02330.md b/content/zh/docs/Developerguide/GAUSS-02321----GAUSS-02330.md index 3b9503257..949b094ec 100644 --- a/content/zh/docs/Developerguide/GAUSS-02321----GAUSS-02330.md +++ b/content/zh/docs/Developerguide/GAUSS-02321----GAUSS-02330.md @@ -6,7 +6,7 @@ SQLSTATE: XX000 错误原因:属性列不存在。 -解决办法:根据列名检查SQL语句。 +解决办法:根据列名检查 SQL 语句。 GAUSS-02323: "set-return function not supported in vector eninge" @@ -28,9 +28,9 @@ GAUSS-02325: "function returning setof record called in context that cannot acce SQLSTATE: 0A000 -错误原因:特性不支持,返回结果集的函数不能接受record类型。 +错误原因:特性不支持,返回结果集的函数不能接受 record 类型。 -解决办法:返回结果集的函数不要使用record类型。 +解决办法:返回结果集的函数不要使用 record 类型。 GAUSS-02326: "function return row and query-specified return row do not match" diff --git a/content/zh/docs/Developerguide/GAUSS-02331----GAUSS-02340.md b/content/zh/docs/Developerguide/GAUSS-02331----GAUSS-02340.md index 74d0aa8c7..1e53d409f 100644 --- a/content/zh/docs/Developerguide/GAUSS-02331----GAUSS-02340.md +++ b/content/zh/docs/Developerguide/GAUSS-02331----GAUSS-02340.md @@ -4,9 +4,9 @@ GAUSS-02331: "IS DISTINCT FROM does not support set arguments" SQLSTATE: 42804 -错误原因:“is distinct from”型sql语句不支持多个参数。 +错误原因:“is distinct from”型 sql 语句不支持多个参数。 -解决办法:检查当前sql语句是否正确使用。 +解决办法:检查当前 sql 语句是否正确使用。 GAUSS-02333: "cannot merge incompatible arrays" @@ -14,7 +14,7 @@ SQLSTATE: 42804 错误原因:两个矩阵的类型不一致。 -解决办法:检查sql语句中进行操作的两个矩阵类型是否一致。 +解决办法:检查 sql 语句中进行操作的两个矩阵类型是否一致。 GAUSS-02334: "multidimensional arrays must have array expressions with matching dimensions" @@ -38,7 +38,7 @@ SQLSTATE: 42804 错误原因:NULLIF操作不支持返回参数为集合的场景。 -解决办法:检查sql语句中返回给NULLIF操作的参数是否可能为集合。 +解决办法:检查 sql 语句中返回给 NULLIF 操作的参数是否可能为集合。 GAUSS-02338: "domain %s does not allow null values" diff --git a/content/zh/docs/Developerguide/GAUSS-02341----GAUSS-02350.md b/content/zh/docs/Developerguide/GAUSS-02341----GAUSS-02350.md index 14eea6e16..498512d2d 100644 --- a/content/zh/docs/Developerguide/GAUSS-02341----GAUSS-02350.md +++ b/content/zh/docs/Developerguide/GAUSS-02341----GAUSS-02350.md @@ -36,17 +36,17 @@ GAUSS-02345: "SubPlan found with no parent plan" SQLSTATE: 42P27 -错误原因:AlternativeSubPlan表达式无父节点PlanState为空。 +错误原因:AlternativeSubPlan表达式无父节点 PlanState 为空。 -解决办法:检查SQL语句和执行计划是否存在父节点为空的情况。 +解决办法:检查 SQL 语句和执行计划是否存在父节点为空的情况。 GAUSS-02346: "AlternativeSubPlan found with no parent plan" SQLSTATE: 42P27 -错误原因:SubPlan表达式无父节点PlanState为空。 +错误原因:SubPlan表达式无父节点 PlanState 为空。 -解决办法:检查SQL语句和执行计划是否存在父节点为空的情况。 +解决办法:检查 SQL 语句和执行计划是否存在父节点为空的情况。 GAUSS-02347: "target type is not an array" @@ -62,7 +62,7 @@ SQLSTATE: 42804 错误原因:行表达式类型不匹配。 -解决办法:检查是否有ALTER COLUMN TYPE操作修改了类型。 +解决办法:检查是否有 ALTER COLUMN TYPE 操作修改了类型。 GAUSS-02349: "could not identify a comparison function for type %s" @@ -70,7 +70,7 @@ SQLSTATE: 42883 错误原因:min/max表达式中类型的比较函数未定义。 -解决办法:检查SQL语句中min/max表达式的用法是否有问题。 +解决办法:检查 SQL 语句中min/max表达式的用法是否有问题。 GAUSS-02350: "CTE subplans should not be executed via ExecSubPlan" diff --git a/content/zh/docs/Developerguide/GAUSS-02351----GAUSS-02360.md b/content/zh/docs/Developerguide/GAUSS-02351----GAUSS-02360.md index 88af66143..41cebd2c8 100644 --- a/content/zh/docs/Developerguide/GAUSS-02351----GAUSS-02360.md +++ b/content/zh/docs/Developerguide/GAUSS-02351----GAUSS-02360.md @@ -12,7 +12,7 @@ GAUSS-02352: "hashed subplan with direct correlation not supported" SQLSTATE: XX000 -错误原因:生成的计划有问题,hashed subplan不支持相关子查询。 +错误原因:生成的计划有问题, hashed subplan 不支持相关子查询。 解决办法:优化器问题,请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-02355: "ANY/ALL subselect unsupported as initplan" SQLSTATE: XX000 -错误原因:any/all子查询不支持作为initplan。 +错误原因:any/all子查询不支持作为 initplan 。 解决办法:检查查询语句,非相关的子查询不要使用any/all子查询语句。 @@ -44,15 +44,15 @@ GAUSS-02356: "CTE subplans should not be executed via ExecSetParamPlan" SQLSTATE: XX000 -错误原因:cte子查询不能作为非相关子查询的query。 +错误原因:cte子查询不能作为非相关子查询的 query 。 -解决办法:检查查询语句,非相关的子查询不要使用cte子查询语句。 +解决办法:检查查询语句,非相关的子查询不要使用 cte 子查询语句。 GAUSS-02357: "direct correlated subquery unsupported as initplan" SQLSTATE: XX000 -错误原因:相关子查询不能作为initplan。 +错误原因:相关子查询不能作为 initplan 。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02361----GAUSS-02370.md b/content/zh/docs/Developerguide/GAUSS-02361----GAUSS-02370.md index b9ba5ee91..b2fb8014c 100644 --- a/content/zh/docs/Developerguide/GAUSS-02361----GAUSS-02370.md +++ b/content/zh/docs/Developerguide/GAUSS-02361----GAUSS-02370.md @@ -4,7 +4,7 @@ GAUSS-02361: "partition table delete conflict" SQLSTATE: 40000 -错误原因:并发删除partition 表。 +错误原因:并发删除 partition 表。 解决办法:不使用并发操作。 @@ -20,7 +20,7 @@ GAUSS-02363: "failed to fetch deleted tuple for DELETE RETURNING" SQLSTATE: XX000 -错误原因:delete带有returning时获取删除的元组失败。 +错误原因:delete带有 returning 时获取删除的元组失败。 解决办法:内部问题,请联系技术支持工程师提供技术支持。 @@ -28,7 +28,7 @@ GAUSS-02364: "cannot UPDATE during bootstrap" SQLSTATE: XX000 -错误原因:初始化阶段不能有update操作。 +错误原因:初始化阶段不能有 update 操作。 解决办法:内部问题,请联系技术支持工程师提供技术支持。 @@ -46,12 +46,12 @@ SQLSTATE: XX000 错误原因: -1. 创建分区表时指定了DISABLE ROW MOVEMENT。 +1. 创建分区表时指定了 DISABLE ROW MOVEMENT 。 2. 数据更新超出了分区范围。 解决办法: -1. 修改表为ENABLE ROW MOVEMENT。例如: +1. 修改表为 ENABLE ROW MOVEMENT 。例如: ``` ALTER TABLE table_name ENABLE ROW MOVEMENT @@ -65,7 +65,7 @@ SQLSTATE: 40000 错误原因: 不允许并发更新分区表。 -解决办法:创建表时指定DISABLE ROW MOVEMENT。 +解决办法:创建表时指定 DISABLE ROW MOVEMENT 。 GAUSS-02368: "unrecognized heap\_update status: %u" diff --git a/content/zh/docs/Developerguide/GAUSS-02371----GAUSS-02380.md b/content/zh/docs/Developerguide/GAUSS-02371----GAUSS-02380.md index 55788b99d..c7c98b27c 100644 --- a/content/zh/docs/Developerguide/GAUSS-02371----GAUSS-02380.md +++ b/content/zh/docs/Developerguide/GAUSS-02371----GAUSS-02380.md @@ -4,7 +4,7 @@ GAUSS-02372: "tableoid is null when update partitioned table" SQLSTATE: XX000 -错误原因:获取到的junk 列是NULL。 +错误原因:获取到的 junk 列是 NULL 。 解决办法:内部问题,请联系技术支持工程师提供技术支持。 @@ -12,7 +12,7 @@ GAUSS-02374: "could not find junk ctid column" SQLSTATE: XX000 -错误原因:找不到junk列。 +错误原因:找不到 junk 列。 解决办法:内部问题,请联系技术支持工程师提供技术支持。 @@ -20,7 +20,7 @@ GAUSS-02375: "could not find junk tableoid column" SQLSTATE: XX000 -错误原因:找不到junk列。 +错误原因:找不到 junk 列。 解决办法:内部问题,请联系技术支持工程师提供技术支持。 @@ -28,7 +28,7 @@ GAUSS-02376: "could not find junk wholerow column" SQLSTATE: XX000 -错误原因:找不到junk列。 +错误原因:找不到 junk 列。 解决办法:内部问题,请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-02377: "ExecReScanModifyTable is not implemented" SQLSTATE: XX000 -错误原因:modify table的rescan函数没有实现。 +错误原因:modify table的 rescan 函数没有实现。 解决办法:计划问题,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02381----GAUSS-02390.md b/content/zh/docs/Developerguide/GAUSS-02381----GAUSS-02390.md index 0f2803287..7c2c981d0 100644 --- a/content/zh/docs/Developerguide/GAUSS-02381----GAUSS-02390.md +++ b/content/zh/docs/Developerguide/GAUSS-02381----GAUSS-02390.md @@ -30,13 +30,13 @@ SQLSTATE: XX000 错误原因:整列的更新操作不支持。 -解决办法:检查SQL语句。 +解决办法:检查 SQL 语句。 GAUSS-02390: "cannot change sequence '%s'" SQLSTATE: 42809 -错误原因:错误的对象类型,INSERT/UPDATE/DELETE语句不能修改Sequence。 +错误原因:错误的对象类型,INSERT/UPDATE/DELETE语句不能修改 Sequence 。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 diff --git a/content/zh/docs/Developerguide/GAUSS-02391----GAUSS-02400.md b/content/zh/docs/Developerguide/GAUSS-02391----GAUSS-02400.md index 42dc8400b..cfca41bf9 100644 --- a/content/zh/docs/Developerguide/GAUSS-02391----GAUSS-02400.md +++ b/content/zh/docs/Developerguide/GAUSS-02391----GAUSS-02400.md @@ -4,57 +4,57 @@ GAUSS-02391: "cannot change TOAST relation '%s'" SQLSTATE: 42809 -错误原因:错误的对象类型,INSERT/UPDATE/DELETE语句不能修改TOAST表。 +错误原因:错误的对象类型,INSERT/UPDATE/DELETE语句不能修改 TOAST 表。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-02392: "cannot insert into foreign table '%s'" SQLSTATE: 0A000 -错误原因:特性不支持,外表不支持INSERT操作。 +错误原因:特性不支持,外表不支持 INSERT 操作。 -解决办法:不要对外表进行INSERT操作。 +解决办法:不要对外表进行 INSERT 操作。 GAUSS-02393: "foreign table '%s' does not allow inserts" SQLSTATE: 55000 -错误原因:特性不支持,外表不支持INSERT操作。 +错误原因:特性不支持,外表不支持 INSERT 操作。 -解决办法:不要对外表进行INSERT操作。 +解决办法:不要对外表进行 INSERT 操作。 GAUSS-02394: "cannot update foreign table '%s'" SQLSTATE: 0A000 -错误原因:特性不支持,外表不支持UPDATE操作。 +错误原因:特性不支持,外表不支持 UPDATE 操作。 -解决办法:不要对外表进行UPDATE操作。 +解决办法:不要对外表进行 UPDATE 操作。 GAUSS-02395: "foreign table '%s' does not allow updates" SQLSTATE: 55000 -错误原因:特性不支持,外表不支持UPDATE操作。 +错误原因:特性不支持,外表不支持 UPDATE 操作。 -解决办法:不要对外表进行UPDATE操作。 +解决办法:不要对外表进行 UPDATE 操作。 GAUSS-02396: "cannot delete from foreign table '%s'" SQLSTATE: 0A000 -错误原因:特性不支持,外表不支持DELETE操作。 +错误原因:特性不支持,外表不支持 DELETE 操作。 -解决办法:不要对外表进行DELETE操作。 +解决办法:不要对外表进行 DELETE 操作。 GAUSS-02397: "foreign table '%s' does not allow deletes" SQLSTATE: 55000 -错误原因:特性不支持,外表不支持DELETE操作。 +错误原因:特性不支持,外表不支持 DELETE 操作。 -解决办法:不要对外表进行DELETE操作。 +解决办法:不要对外表进行 DELETE 操作。 GAUSS-02398: "cannot change relation '%s'" @@ -62,21 +62,21 @@ SQLSTATE: 42809 错误原因:错误的对象类型,存在INSERT/UPDATE/DELETE语句不能修改的对象类型。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-02399: "cannot lock rows in sequence '%s'" SQLSTATE: 42809 -错误原因:错误的对象类型,不能为Sequence加锁。 +错误原因:错误的对象类型,不能为 Sequence 加锁。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-02400: "cannot lock rows in TOAST relation '%s'" SQLSTATE: 42809 -错误原因:错误的对象类型,不能为TOAST表加锁。 +错误原因:错误的对象类型,不能为 TOAST 表加锁。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 diff --git a/content/zh/docs/Developerguide/GAUSS-02401----GAUSS-02410.md b/content/zh/docs/Developerguide/GAUSS-02401----GAUSS-02410.md index c47e2b4a5..a00c4bb7a 100644 --- a/content/zh/docs/Developerguide/GAUSS-02401----GAUSS-02410.md +++ b/content/zh/docs/Developerguide/GAUSS-02401----GAUSS-02410.md @@ -6,7 +6,7 @@ SQLSTATE: 42809 错误原因:错误的对象类型,不能为视图加锁。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-02402: "cannot lock rows in foreign table '%s'" @@ -14,7 +14,7 @@ SQLSTATE: 42809 错误原因:错误的对象类型,不能为外表加锁。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-02403: "cannot lock rows in relation '%s'" @@ -22,29 +22,29 @@ SQLSTATE: 42809 错误原因:错误的对象类型,存在不能加锁的对象。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-02404: "new row for relation '%s' violates check constraint '%s'" SQLSTATE: 23514 -错误原因:新的数据和check约束冲突。 +错误原因:新的数据和 check 约束冲突。 -解决办法:检查数据是否和check约束冲突。 +解决办法:检查数据是否和 check 约束冲突。 GAUSS-02405: "failed to find ExecRowMark for rangetable index %u" SQLSTATE: XX000 -错误原因:通过index在Rangetable中未找到ExecRowMark。 +错误原因:通过 index 在 Rangetable 中未找到 ExecRowMark 。 -解决办法:检查SQL语句和执行计划。 +解决办法:检查 SQL 语句和执行计划。 GAUSS-02407: "t\_xmin is uncommitted in tuple to be updated" SQLSTATE: XX000 -错误原因:欲更新的元组xmin未提交。 +错误原因:欲更新的元组 xmin 未提交。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02421----GAUSS-02430.md b/content/zh/docs/Developerguide/GAUSS-02421----GAUSS-02430.md index 598dc7d87..d6dfcaf2d 100644 --- a/content/zh/docs/Developerguide/GAUSS-02421----GAUSS-02430.md +++ b/content/zh/docs/Developerguide/GAUSS-02421----GAUSS-02430.md @@ -12,7 +12,7 @@ GAUSS-02422: "BitmapAnd doesn't support zero inputs" SQLSTATE: XX000 -错误原因:系统内部错误。BitmapAnd算子的输入为空。 +错误原因:系统内部错误。 BitmapAnd 算子的输入为空。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02441----GAUSS-02450.md b/content/zh/docs/Developerguide/GAUSS-02441----GAUSS-02450.md index 599daf278..69739159e 100644 --- a/content/zh/docs/Developerguide/GAUSS-02441----GAUSS-02450.md +++ b/content/zh/docs/Developerguide/GAUSS-02441----GAUSS-02450.md @@ -36,7 +36,7 @@ GAUSS-02445: "poll\(\) failed: %m" SQLSTATE: XX000 -错误原因:系统调用poll失败。 +错误原因:系统调用 poll 失败。 解决办法:数据库内部错误,请根据系统错误提示信息,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02461----GAUSS-02470.md b/content/zh/docs/Developerguide/GAUSS-02461----GAUSS-02470.md index 360ab3b74..2faee2b01 100644 --- a/content/zh/docs/Developerguide/GAUSS-02461----GAUSS-02470.md +++ b/content/zh/docs/Developerguide/GAUSS-02461----GAUSS-02470.md @@ -62,7 +62,7 @@ SQLSTATE: XX000 错误原因:data目录不存在或权限错误。 -解决办法:检查data数据目录是否存在或权限是否正确。 +解决办法:检查 data 数据目录是否存在或权限是否正确。 GAUSS-02470: "could not create semaphore: error code %d" diff --git a/content/zh/docs/Developerguide/GAUSS-02471----GAUSS-02480.md b/content/zh/docs/Developerguide/GAUSS-02471----GAUSS-02480.md index 0599fac1e..f16d222d9 100644 --- a/content/zh/docs/Developerguide/GAUSS-02471----GAUSS-02480.md +++ b/content/zh/docs/Developerguide/GAUSS-02471----GAUSS-02480.md @@ -52,7 +52,7 @@ GAUSS-02477: "too late to require new tuplestore eflags" SQLSTATE: 23514 -错误原因:系统内部错误:设置新的tuplestore 标记过晚。 +错误原因:系统内部错误:设置新的 tuplestore 标记过晚。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -60,7 +60,7 @@ GAUSS-02478: "tuplestore seek failed" SQLSTATE: 22P07 -错误原因:系统内部错误:寻找不到对应位置的tuple数据信息。 +错误原因:系统内部错误:寻找不到对应位置的 tuple 数据信息。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -68,7 +68,7 @@ GAUSS-02479: "invalid tuplestore state" SQLSTATE: XX006 -错误原因:系统内部错误:当前tuplestor状态错误。 +错误原因:系统内部错误:当前 tuplestor 状态错误。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02481----GAUSS-02490.md b/content/zh/docs/Developerguide/GAUSS-02481----GAUSS-02490.md index a4597a823..4bfe47861 100644 --- a/content/zh/docs/Developerguide/GAUSS-02481----GAUSS-02490.md +++ b/content/zh/docs/Developerguide/GAUSS-02481----GAUSS-02490.md @@ -28,7 +28,7 @@ GAUSS-02484: "unexpected end of tape" SQLSTATE: 22000 -错误原因:系统内部错误:从逻辑Tape上读取数据过程中遇到非预期的结束。 +错误原因:系统内部错误:从逻辑 Tape 上读取数据过程中遇到非预期的结束。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-02485: "unexpected end of data" SQLSTATE: 22P07 -错误原因:系统内部错误:从逻辑Tape上读取数据过程中遇到非预期的数据终止。 +错误原因:系统内部错误:从逻辑 Tape 上读取数据过程中遇到非预期的数据终止。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-02488: "too late to require new batchstore eflags" SQLSTATE: XX006 -错误原因:系统内部错误:设置新的batchstore 标记过晚。 +错误原因:系统内部错误:设置新的 batchstore 标记过晚。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -68,7 +68,7 @@ GAUSS-02490: "invalid batchstore state" SQLSTATE: XX006 -错误原因:系统内部错误:无效的batchstore状态。 +错误原因:系统内部错误:无效的 batchstore 状态。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02491----GAUSS-02500.md b/content/zh/docs/Developerguide/GAUSS-02491----GAUSS-02500.md index 9ee1c1eff..13f5fca54 100644 --- a/content/zh/docs/Developerguide/GAUSS-02491----GAUSS-02500.md +++ b/content/zh/docs/Developerguide/GAUSS-02491----GAUSS-02500.md @@ -28,7 +28,7 @@ GAUSS-02494: "could not read block %ld of temporary file: %m" SQLSTATE: XX000 -错误原因:系统内部错误:无法从临时文件中读取block数据块。 +错误原因:系统内部错误:无法从临时文件中读取 block 数据块。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-02495: "invalid logtape state: should be dirty" SQLSTATE: 22000 -错误原因:系统内部错误:无效的logtape状态。 +错误原因:系统内部错误:无效的 logtape 状态。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-02497: "insufficient memory allowed for sort" SQLSTATE: 53000 -错误原因:执行sort过程中内存不足。 +错误原因:执行 sort 过程中内存不足。 解决办法:work\_mem过小,请调大work\_mem参数取值。 @@ -68,7 +68,7 @@ GAUSS-02499: "retrieved too many tuples in a bounded sort" SQLSTATE: 23001 -错误原因:系统内部错误:在排序过程中,遇到了非预期的结束符,导致在bounded排序时,所需的数据不足。 +错误原因:系统内部错误:在排序过程中,遇到了非预期的结束符,导致在 bounded 排序时,所需的数据不足。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -76,7 +76,7 @@ GAUSS-02500: "tuplesort\_restorepos failed" SQLSTATE: 22P07 -错误原因:系统内部错误:在做mergejoin过程中无法重新计量当前位置。 +错误原因:系统内部错误:在做 mergejoin 过程中无法重新计量当前位置。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02501----GAUSS-02510.md b/content/zh/docs/Developerguide/GAUSS-02501----GAUSS-02510.md index 9c1e23b29..c5cc0419f 100644 --- a/content/zh/docs/Developerguide/GAUSS-02501----GAUSS-02510.md +++ b/content/zh/docs/Developerguide/GAUSS-02501----GAUSS-02510.md @@ -28,7 +28,7 @@ GAUSS-02504: "Failed to fetch from data node cursor" SQLSTATE: 22P08 -错误原因:系统内部错误:无法从DN游标中获取数据。 +错误原因:系统内部错误:无法从 DN 游标中获取数据。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-02505: "Node id %d is incorrect" SQLSTATE: XX006 -错误原因:系统内部错误:获取到的节点ID号错误。 +错误原因:系统内部错误:获取到的节点 ID 号错误。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -46,13 +46,13 @@ SQLSTATE: XX000 错误原因:语法错误。 -解决办法:检查sql语句的语法是否正确。 +解决办法:检查 sql 语句的语法是否正确。 GAUSS-02507: "Unexpected response from the data nodes" SQLSTATE: XX006 -错误原因:系统内部错误:非期望的来自于DN的响应信息。 +错误原因:系统内部错误:非期望的来自于 DN 的响应信息。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02561----GAUSS-02570.md b/content/zh/docs/Developerguide/GAUSS-02561----GAUSS-02570.md index 71a634168..fe3c25d49 100644 --- a/content/zh/docs/Developerguide/GAUSS-02561----GAUSS-02570.md +++ b/content/zh/docs/Developerguide/GAUSS-02561----GAUSS-02570.md @@ -12,7 +12,7 @@ GAUSS-02564: "zero-length component in parameter 'dynamic\_library\_path'" SQLSTATE: 42602 -错误原因:动态库地址长度为0,不合法。 +错误原因:动态库地址长度为 0 ,不合法。 解决办法:请检查动态库的地址。 @@ -52,7 +52,7 @@ GAUSS-02569: "proargnames must have the same number of elements as the function SQLSTATE: 22023 -错误原因:系统内部错误:函数参数数目与proarnames不匹配。 +错误原因:系统内部错误:函数参数数目与 proarnames 不匹配。 解决办法:请检查输入参数。 diff --git a/content/zh/docs/Developerguide/GAUSS-02571----GAUSS-02580.md b/content/zh/docs/Developerguide/GAUSS-02571----GAUSS-02580.md index 157f3df9b..8a10ee5d9 100644 --- a/content/zh/docs/Developerguide/GAUSS-02571----GAUSS-02580.md +++ b/content/zh/docs/Developerguide/GAUSS-02571----GAUSS-02580.md @@ -20,7 +20,7 @@ GAUSS-02574: "could not determine row description for function returning record" SQLSTATE: 42804 -错误原因:无法确定RECORD返回类型函数的RECORD类型定义。 +错误原因:无法确定 RECORD 返回类型函数的 RECORD 类型定义。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -30,7 +30,7 @@ SQLSTATE: 42883 错误原因:无法在函数查找表内找到函数定义。 -解决办法:检查SQL语句中的函数是否有效。 +解决办法:检查 SQL 语句中的函数是否有效。 GAUSS-02576: "unrecognized function API version: %d" diff --git a/content/zh/docs/Developerguide/GAUSS-02581----GAUSS-02590.md b/content/zh/docs/Developerguide/GAUSS-02581----GAUSS-02590.md index 79a151061..85f3b0944 100644 --- a/content/zh/docs/Developerguide/GAUSS-02581----GAUSS-02590.md +++ b/content/zh/docs/Developerguide/GAUSS-02581----GAUSS-02590.md @@ -6,23 +6,23 @@ SQLSTATE: 54023 错误原因:函数输入参数过多。 -解决办法:通过\\df检查函数定义的参数数目和当前查询语句输入的参数数目是否一致。函数最大参数数目为16。 +解决办法:通过\\df检查函数定义的参数数目和当前查询语句输入的参数数目是否一致。函数最大参数数目为 16 。 GAUSS-02583: "input function %u returned non-NULL" SQLSTATE: XX005 -错误原因:列数据进行类型处理后返回了空字符串,与not null要求冲突。 +错误原因:列数据进行类型处理后返回了空字符串,与 not null 要求冲突。 -解决办法:修正列数据不为空,满足not null约束。 +解决办法:修正列数据不为空,满足 not null 约束。 GAUSS-02584: "input function %u returned NULL" SQLSTATE: XX005 -错误原因:列数据进行类型处理后返回了非空字符串,与null要求冲突。 +错误原因:列数据进行类型处理后返回了非空字符串,与 null 要求冲突。 -解决办法:修正列数据为空,满足null约束。 +解决办法:修正列数据为空,满足 null 约束。 GAUSS-02585: "receive function %u returned non-NULL" @@ -44,7 +44,7 @@ GAUSS-02587: "could not reopen file '%s' as stderr: %m" SQLSTATE: XX000 -错误原因:无法作为STDERR重定向文件打开。 +错误原因:无法作为 STDERR 重定向文件打开。 解决办法:检查文件是否存在。 @@ -52,7 +52,7 @@ GAUSS-02588: "could not reopen file '%s' as stdout: %m" SQLSTATE: XX000 -错误原因:无法作为STDOUT重定向文件打开。 +错误原因:无法作为 STDOUT 重定向文件打开。 解决办法:检查文件是否存在。 diff --git a/content/zh/docs/Developerguide/GAUSS-02601----GAUSS-02610.md b/content/zh/docs/Developerguide/GAUSS-02601----GAUSS-02610.md index 0ce626021..c8e473e50 100644 --- a/content/zh/docs/Developerguide/GAUSS-02601----GAUSS-02610.md +++ b/content/zh/docs/Developerguide/GAUSS-02601----GAUSS-02610.md @@ -54,7 +54,7 @@ SQLSTATE: 22P05 错误原因:无法找到对应的字符编码。 -解决办法:请通过“select \* from pg\_conversion;”查看conname列,确认两种字符编码能否互相转换。 +解决办法:请通过“select \* from pg\_conversion;”查看 conname 列,确认两种字符编码能否互相转换。 GAUSS-02608: "encoding name too long" diff --git a/content/zh/docs/Developerguide/GAUSS-02611----GAUSS-02620.md b/content/zh/docs/Developerguide/GAUSS-02611----GAUSS-02620.md index c24fd1683..00f6789ad 100644 --- a/content/zh/docs/Developerguide/GAUSS-02611----GAUSS-02620.md +++ b/content/zh/docs/Developerguide/GAUSS-02611----GAUSS-02620.md @@ -30,7 +30,7 @@ SQLSTATE: 22023 错误原因:无法识别的字符编码集。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-02615: "invalid byte value for encoding '%s': 0x%02x" @@ -52,7 +52,7 @@ GAUSS-02617: "unexpected encoding ID %d for WIN character sets" SQLSTATE: XX000 -错误原因:对于Windows字符集无法识别的字符编码。 +错误原因:对于 Windows 字符集无法识别的字符编码。 解决办法:检查数据中是否含有不可识别的字符。 @@ -60,7 +60,7 @@ GAUSS-02618: "unexpected encoding ID %d for ISO 8859 character sets" SQLSTATE: XX000 -错误原因:对于ISO 8859字符集无法识别的字符编码。 +错误原因:对于 ISO 8859 字符集无法识别的字符编码。 解决办法:检查数据中是否含有不可识别的字符。 @@ -76,7 +76,7 @@ GAUSS-02620: "cursor '%s' already exists" SQLSTATE: 42P03 -错误原因:创建portal时已经有重名的portal。 +错误原因:创建 portal 时已经有重名的 portal 。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02621----GAUSS-02630.md b/content/zh/docs/Developerguide/GAUSS-02621----GAUSS-02630.md index 7b552e245..7ab3a421a 100644 --- a/content/zh/docs/Developerguide/GAUSS-02621----GAUSS-02630.md +++ b/content/zh/docs/Developerguide/GAUSS-02621----GAUSS-02630.md @@ -28,9 +28,9 @@ GAUSS-02625: "cannot PREPARE a transaction that has created a cursor WITH HOLD" SQLSTATE: 0A000 -错误原因:无法对于创建WITH HOLD关键字游标的事务进行prepare操作。 +错误原因:无法对于创建 WITH HOLD 关键字游标的事务进行 prepare 操作。 -解决办法:检查SQL脚本文件中是否含有WITH HOLD关键字的游标。 +解决办法:检查 SQL 脚本文件中是否含有 WITH HOLD 关键字的游标。 GAUSS-02627: "invalid memory alloc request size %lu" diff --git a/content/zh/docs/Developerguide/GAUSS-02631----GAUSS-02640.md b/content/zh/docs/Developerguide/GAUSS-02631----GAUSS-02640.md index 3b1b3d263..393f6fe44 100644 --- a/content/zh/docs/Developerguide/GAUSS-02631----GAUSS-02640.md +++ b/content/zh/docs/Developerguide/GAUSS-02631----GAUSS-02640.md @@ -12,7 +12,7 @@ GAUSS-02632: "null maxvalue for tuple %u" SQLSTATE: XX000 -错误原因:范围分区的maxvalue为空。 +错误原因:范围分区的 maxvalue 为空。 解决办法:检查分区表定义。 diff --git a/content/zh/docs/Developerguide/GAUSS-02641----GAUSS-02650.md b/content/zh/docs/Developerguide/GAUSS-02641----GAUSS-02650.md index f7ed889d6..3efe15be9 100644 --- a/content/zh/docs/Developerguide/GAUSS-02641----GAUSS-02650.md +++ b/content/zh/docs/Developerguide/GAUSS-02641----GAUSS-02650.md @@ -4,7 +4,7 @@ GAUSS-02642: "fail to get partition oid, because range partition index is overfl SQLSTATE: XX000 -错误原因:获取分区OID失败,分区下标越界。 +错误原因:获取分区 OID 失败,分区下标越界。 解决办法:检查分区表定义和查询语句。 diff --git a/content/zh/docs/Developerguide/GAUSS-02661----GAUSS-02670.md b/content/zh/docs/Developerguide/GAUSS-02661----GAUSS-02670.md index 746356b96..36c61da01 100644 --- a/content/zh/docs/Developerguide/GAUSS-02661----GAUSS-02670.md +++ b/content/zh/docs/Developerguide/GAUSS-02661----GAUSS-02670.md @@ -4,9 +4,9 @@ GAUSS-02661: "SET %s takes only one argument" SQLSTATE: 22023 -错误原因:当前GUC变量不支持指定多个参数值。 +错误原因:当前 GUC 变量不支持指定多个参数值。 -解决办法:请检查SET命令确保每次只指定一个参数值。 +解决办法:请检查 SET 命令确保每次只指定一个参数值。 GAUSS-02663: "unexpected SET TRANSACTION element: %s" diff --git a/content/zh/docs/Developerguide/GAUSS-02671----GAUSS-02680.md b/content/zh/docs/Developerguide/GAUSS-02671----GAUSS-02680.md index e30c59244..f23549ce1 100644 --- a/content/zh/docs/Developerguide/GAUSS-02671----GAUSS-02680.md +++ b/content/zh/docs/Developerguide/GAUSS-02671----GAUSS-02680.md @@ -6,7 +6,7 @@ SQLSTATE: 22004 错误原因:SET命令没有指定变量名。 -解决办法:请指定变量名后,重新执行SET。 +解决办法:请指定变量名后,重新执行 SET 。 GAUSS-02672: "Postgres-XC: ERROR SET query" @@ -60,9 +60,9 @@ GAUSS-02678: "permission denied to set parameter '%s'" SQLSTATE: 42501 -错误原因:当前用户没有权限修改该GUC变量。 +错误原因:当前用户没有权限修改该 GUC 变量。 -解决办法:建议切换初始用户修改该GUC参数。 +解决办法:建议切换初始用户修改该 GUC 参数。 GAUSS-02679: "Invalid username/password,set role denied." diff --git a/content/zh/docs/Developerguide/GAUSS-02721----GAUSS-02730.md b/content/zh/docs/Developerguide/GAUSS-02721----GAUSS-02730.md index cbedad29e..c8860c5fb 100644 --- a/content/zh/docs/Developerguide/GAUSS-02721----GAUSS-02730.md +++ b/content/zh/docs/Developerguide/GAUSS-02721----GAUSS-02730.md @@ -36,17 +36,17 @@ GAUSS-02725: "partition %u deleted while still in use" SQLSTATE: XX000 -错误原因:用户SQL语句调度问题。 +错误原因:用户 SQL 语句调度问题。 -解决办法:正在使用的partition不能删除。请修改调度语句。 +解决办法:正在使用的 partition 不能删除。请修改调度语句。 GAUSS-02726: "partition %u is still open" SQLSTATE: XX000 -错误原因:用户SQL语句调度问题。 +错误原因:用户 SQL 语句调度问题。 -解决办法:正在使用的partition不能删除。请修改调度语句。 +解决办法:正在使用的 partition 不能删除。请修改调度语句。 GAUSS-02727: "could not find pg\_partition tuple for index %u" diff --git a/content/zh/docs/Developerguide/GAUSS-02731----GAUSS-02740.md b/content/zh/docs/Developerguide/GAUSS-02731----GAUSS-02740.md index 2f6b7cfe7..4f009feff 100644 --- a/content/zh/docs/Developerguide/GAUSS-02731----GAUSS-02740.md +++ b/content/zh/docs/Developerguide/GAUSS-02731----GAUSS-02740.md @@ -20,7 +20,7 @@ GAUSS-02733: "could not open relation mapping file '%s': %m" SQLSTATE: XX000 -错误原因:内部错误,找不到relation映射文件。 +错误原因:内部错误,找不到 relation 映射文件。 解决办法:建议检查数据目录是否被外部修改,或者联系请联系技术支持工程师提供技术支持。 @@ -28,7 +28,7 @@ GAUSS-02735: "relation mapping file '%s' contains invalid data" SQLSTATE: XX000 -错误原因:内部错误,relation映射文件数据不一致。 +错误原因:内部错误, relation 映射文件数据不一致。 解决办法:建议检查数据目录是否被外部修改,或者联系请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-02736: "relation mapping file '%s' contains incorrect checksum" SQLSTATE: XX000 -错误原因:内部错误,relation映射文件数据不一致。 +错误原因:内部错误, relation 映射文件数据不一致。 解决办法:建议检查数据目录是否被外部修改,或者联系请联系技术支持工程师提供技术支持。 @@ -44,7 +44,7 @@ GAUSS-02738: "could not write to relation mapping file '%s': %m" SQLSTATE: XX000 -错误原因:内部错误,访问relation映射文件失败。 +错误原因:内部错误,访问 relation 映射文件失败。 解决办法:建议检查数据目录是否被外部修改,或者联系请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-02740: "could not close relation mapping file '%s': %m" SQLSTATE: XX000 -错误原因:内部错误,访问relation映射文件失败。 +错误原因:内部错误,访问 relation 映射文件失败。 解决办法:建议检查数据目录是否被外部修改,或者联系请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02791----GAUSS-02800.md b/content/zh/docs/Developerguide/GAUSS-02791----GAUSS-02800.md index a496befef..902843510 100644 --- a/content/zh/docs/Developerguide/GAUSS-02791----GAUSS-02800.md +++ b/content/zh/docs/Developerguide/GAUSS-02791----GAUSS-02800.md @@ -14,7 +14,7 @@ SQLSTATE: 25001 错误原因:SET TRANSACTION SNAPSHOT必须作为第一条语句执行。 -解决办法:建议检查SQL脚本文件,是否“SET TRANSACTION SNAPSHOT”之前是否包含其他语句。 +解决办法:建议检查 SQL 脚本文件,是否“SET TRANSACTION SNAPSHOT”之前是否包含其他语句。 GAUSS-02793: "a snapshot-importing transaction must have isolation level SERIALIZABLE or REPEATABLE READ" @@ -70,5 +70,5 @@ SQLSTATE: XX000 错误原因:函数tsvector\_setweight的第二个参数类型不能识别。 -解决办法:第二个参数只支持A a B b C c D d八个字符。 +解决办法:第二个参数只支持 A a B b C c D d 八个字符。 diff --git a/content/zh/docs/Developerguide/GAUSS-02801----GAUSS-02810.md b/content/zh/docs/Developerguide/GAUSS-02801----GAUSS-02810.md index 1bef25d2d..605bd0237 100644 --- a/content/zh/docs/Developerguide/GAUSS-02801----GAUSS-02810.md +++ b/content/zh/docs/Developerguide/GAUSS-02801----GAUSS-02810.md @@ -4,7 +4,7 @@ GAUSS-02801: "string is too long for tsvector \(%d bytes, max %d bytes\)" SQLSTATE: 54000 -错误原因:字符串超出tsvector最大长度。 +错误原因:字符串超出 tsvector 最大长度。 解决办法:建议检查输入数据是否过长。 @@ -12,7 +12,7 @@ GAUSS-02802: "unrecognized operator: %d" SQLSTATE: XX000 -错误原因:不能识别的tsvector操作符。 +错误原因:不能识别的 tsvector 操作符。 解决办法:请检查输入,只支持 ! | &三种操作符。 @@ -20,7 +20,7 @@ GAUSS-02803: "SPI\_prepare\('%s'\) failed" SQLSTATE: XX000 -错误原因:SPI\_prepare调用返回NULL值。 +错误原因:SPI\_prepare调用返回 NULL 值。 解决办法:内部错误,产生的原因很多,请联系技术支持工程师提供技术支持。 @@ -28,7 +28,7 @@ GAUSS-02804: "SPI\_cursor\_open\('%s'\) failed" SQLSTATE: XX000 -错误原因:SPI\_cursor\_open调用返回NULL值。 +错误原因:SPI\_cursor\_open调用返回 NULL 值。 解决办法:内部错误,产生的原因很多,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02811----GAUSS-02820.md b/content/zh/docs/Developerguide/GAUSS-02811----GAUSS-02820.md index 24fd9e981..66d80e95b 100644 --- a/content/zh/docs/Developerguide/GAUSS-02811----GAUSS-02820.md +++ b/content/zh/docs/Developerguide/GAUSS-02811----GAUSS-02820.md @@ -12,9 +12,9 @@ GAUSS-02812: "column '%s' is not of tsvector type" SQLSTATE: 42804 -错误原因:选取列非tsvector类型。 +错误原因:选取列非 tsvector 类型。 -解决办法:建议检查选取列是否为tsvector类型。 +解决办法:建议检查选取列是否为 tsvector 类型。 GAUSS-02813: "configuration column '%s' does not exist" @@ -76,7 +76,7 @@ GAUSS-02820: "invalid input syntax for type numeric: '%s'" SQLSTATE: 22P02 -错误原因:非法的Numeric输入。 +错误原因:非法的 Numeric 输入。 -解决办法:请检查数据中是否包含非法的Numeric输入。 +解决办法:请检查数据中是否包含非法的 Numeric 输入。 diff --git a/content/zh/docs/Developerguide/GAUSS-02821----GAUSS-02830.md b/content/zh/docs/Developerguide/GAUSS-02821----GAUSS-02830.md index 8b9abf4e7..09d9647b8 100644 --- a/content/zh/docs/Developerguide/GAUSS-02821----GAUSS-02830.md +++ b/content/zh/docs/Developerguide/GAUSS-02821----GAUSS-02830.md @@ -4,31 +4,31 @@ GAUSS-02821: "invalid length in external 'numeric' value" SQLSTATE: 22P03 -错误原因:非法的Numeric输入。 +错误原因:非法的 Numeric 输入。 -解决办法:请检查数据中是否包含非法的Numeric输入。 +解决办法:请检查数据中是否包含非法的 Numeric 输入。 GAUSS-02822: "invalid sign in external 'numeric' value" SQLSTATE: 22P03 -错误原因:非法的Numeric输入。 +错误原因:非法的 Numeric 输入。 -解决办法:请检查数据中是否包含非法的Numeric输入。 +解决办法:请检查数据中是否包含非法的 Numeric 输入。 GAUSS-02823: "invalid digit in external 'numeric' value" SQLSTATE: 22P03 -错误原因:非法的Numeric输入。 +错误原因:非法的 Numeric 输入。 -解决办法:请检查数据中是否包含非法的Numeric输入。 +解决办法:请检查数据中是否包含非法的 Numeric 输入。 GAUSS-02824: "NUMERIC precision %d must be between 1 and %d" SQLSTATE: 22023 -错误原因:非法的Numeric输入,精度超出范围。 +错误原因:非法的 Numeric 输入,精度超出范围。 解决办法:请根据提示修改输入满足范围要求。 @@ -36,7 +36,7 @@ GAUSS-02825: "NUMERIC scale %d must be between 0 and precision %d" SQLSTATE: 22023 -错误原因:非法的Numeric输入,位数超出范围。 +错误原因:非法的 Numeric 输入,位数超出范围。 解决办法:请根据提示修改输入满足范围要求。 @@ -44,25 +44,25 @@ GAUSS-02826: "invalid NUMERIC type modifier" SQLSTATE: 22023 -错误原因:非法的Numeric输入。 +错误原因:非法的 Numeric 输入。 -解决办法:请检查数据中是否包含非法的Numeric输入。 +解决办法:请检查数据中是否包含非法的 Numeric 输入。 GAUSS-02827: "count must be greater than zero" SQLSTATE: 2201G -错误原因:width\_bucket函数的count参数必须大于0。 +错误原因:width\_bucket函数的 count 参数必须大于 0 。 -解决办法:建议检查width\_bucket函数的count参数是否小于或等于0。 +解决办法:建议检查width\_bucket函数的 count 参数是否小于或等于 0 。 -GAUSS-02828: "operand, lower bound, and upper bound cannot be NaN" +GAUSS-02828: "operand, lower bound , and upper bound cannot be NaN" SQLSTATE: 2201G -错误原因:width\_bucket函数的操作数,下限,上限不能为NaN。 +错误原因:width\_bucket函数的操作数,下限,上限不能为 NaN 。 -解决办法:建议检查width\_bucket函数的操作数,上限,下限是否为NaN。 +解决办法:建议检查width\_bucket函数的操作数,上限,下限是否为 NaN 。 GAUSS-02829: "lower bound cannot equal upper bound" diff --git a/content/zh/docs/Developerguide/GAUSS-02831----GAUSS-02840.md b/content/zh/docs/Developerguide/GAUSS-02831----GAUSS-02840.md index deb9667f5..6eaa191cc 100644 --- a/content/zh/docs/Developerguide/GAUSS-02831----GAUSS-02840.md +++ b/content/zh/docs/Developerguide/GAUSS-02831----GAUSS-02840.md @@ -4,9 +4,9 @@ GAUSS-02831: "zero raised to a negative power is undefined" SQLSTATE: 2201F -错误原因:不支持计算0的负数次方。 +错误原因:不支持计算 0 的负数次方。 -解决办法:建议检查输入中是否存在计算0的负数次方。 +解决办法:建议检查输入中是否存在计算 0 的负数次方。 GAUSS-02832: "a negative number raised to a non-integer power yields a complex result" @@ -20,9 +20,9 @@ GAUSS-02833: "cannot convert NaN to integer" SQLSTATE: 0A000 -错误原因:不支持转换Numeric的NaN到整型。 +错误原因:不支持转换 Numeric 的 NaN 到整型。 -解决办法:请检查是否存在NaN转换为整型的计算。 +解决办法:请检查是否存在 NaN 转换为整型的计算。 GAUSS-02834: "integer out of range" @@ -30,15 +30,15 @@ SQLSTATE: 22003 错误原因:整形溢出。 -解决办法:请检查语句是否存在整形溢出的可能,或者将整型转换成Numeric类型。 +解决办法:请检查语句是否存在整形溢出的可能,或者将整型转换成 Numeric 类型。 GAUSS-02835: "cannot convert NaN to bigint" SQLSTATE: 0A000 -错误原因:不支持转换Numeric的NaN到bigint类型。 +错误原因:不支持转换 Numeric 的 NaN 到 bigint 类型。 -解决办法:请检查是否存在NaN转换为bigint类型的计算。 +解决办法:请检查是否存在 NaN 转换为 bigint 类型的计算。 GAUSS-02836: "bigint out of range" @@ -46,7 +46,7 @@ SQLSTATE: 22003 错误原因:bigint溢出。 -解决办法:建议检查语句是否存在bigint溢出的可能,或者转换成Numeric类。 +解决办法:建议检查语句是否存在 bigint 溢出的可能,或者转换成 Numeric 类。 GAUSS-02837: "cannot convert NaN to smallint" diff --git a/content/zh/docs/Developerguide/GAUSS-02841----GAUSS-02850.md b/content/zh/docs/Developerguide/GAUSS-02841----GAUSS-02850.md index ed65c8bb9..28bbc279c 100644 --- a/content/zh/docs/Developerguide/GAUSS-02841----GAUSS-02850.md +++ b/content/zh/docs/Developerguide/GAUSS-02841----GAUSS-02850.md @@ -44,9 +44,9 @@ GAUSS-02846: "division by zero" SQLSTATE: 22012 -错误原因:除数为0。 +错误原因:除数为 0 。 -解决办法:检查sql语句,对于除数可能为0的时候进行特殊处理。 +解决办法:检查 sql 语句,对于除数可能为 0 的时候进行特殊处理。 GAUSS-02847: "cannot take square root of a negative number" @@ -60,7 +60,7 @@ GAUSS-02849: "cannot take logarithm of zero" SQLSTATE: 2201E -错误原因:对数参数不能为0。 +错误原因:对数参数不能为 0 。 解决办法:请检查语句或数据,或请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02851----GAUSS-02860.md b/content/zh/docs/Developerguide/GAUSS-02851----GAUSS-02860.md index e0225d52c..a761f266e 100644 --- a/content/zh/docs/Developerguide/GAUSS-02851----GAUSS-02860.md +++ b/content/zh/docs/Developerguide/GAUSS-02851----GAUSS-02860.md @@ -22,13 +22,13 @@ SQLSTATE: 22023 错误原因:语句错误。 -解决办法:修改SQL。间隔不能是0。 +解决办法:修改 SQL 。间隔不能是 0 。 GAUSS-02855: "argument of ntile must be greater than zero" SQLSTATE: 22014 -错误原因:系统内部错误:获取的frame中参数表达式值应大于0。 +错误原因:系统内部错误:获取的 frame 中参数表达式值应大于 0 。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-02856: "argument of nth\_value must be greater than zero" SQLSTATE: 22016 -错误原因:系统内部错误:对于某个frame,从1开始后其第n个值需大于零。 +错误原因:系统内部错误:对于某个 frame ,从 1 开始后其第 n 个值需大于零。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-02861----GAUSS-02870.md b/content/zh/docs/Developerguide/GAUSS-02861----GAUSS-02870.md index 1dd38d3b7..c34805f2a 100644 --- a/content/zh/docs/Developerguide/GAUSS-02861----GAUSS-02870.md +++ b/content/zh/docs/Developerguide/GAUSS-02861----GAUSS-02870.md @@ -38,7 +38,7 @@ SQLSTATE: 42601 错误原因:语法错误。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 GAUSS-02866: "malformed range literal: '%s'" @@ -46,7 +46,7 @@ SQLSTATE: 22P02 错误原因:语法错误。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 GAUSS-02867: "cannot store a toast pointer inside a range" @@ -54,7 +54,7 @@ SQLSTATE: 22000 错误原因:语法错误。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 GAUSS-02868: "invalid input syntax for type macaddr: '%s'" @@ -62,7 +62,7 @@ SQLSTATE: 22P02 错误原因:语法错误。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 GAUSS-02869: "invalid octet value in 'macaddr' value: '%s'" @@ -70,7 +70,7 @@ SQLSTATE: 22003 错误原因:语法错误。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 GAUSS-02870: "unrecognized QueryItem type: %d" diff --git a/content/zh/docs/Developerguide/GAUSS-02871----GAUSS-02880.md b/content/zh/docs/Developerguide/GAUSS-02871----GAUSS-02880.md index 66eb44705..f0808d3c7 100644 --- a/content/zh/docs/Developerguide/GAUSS-02871----GAUSS-02880.md +++ b/content/zh/docs/Developerguide/GAUSS-02871----GAUSS-02880.md @@ -6,7 +6,7 @@ SQLSTATE: 42601 错误原因:tsvector变量的语法错误。 -解决办法:请检查传入tsvector类型的变量的语法。 +解决办法:请检查传入 tsvector 类型的变量的语法。 GAUSS-02872: "there is no escaped character: '%s'" @@ -28,7 +28,7 @@ GAUSS-02874: "unrecognized state in gettoken\_tsvector: %d" SQLSTATE: XX000 -错误原因:内部解析tsvector变量出现状态错误。 +错误原因:内部解析 tsvector 变量出现状态错误。 解决办法:请先检查字符串的语法问题,或者请联系技术支持工程师提供技术支持。 @@ -46,7 +46,7 @@ SQLSTATE: XX004 错误原因:语法错误。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 GAUSS-02880: "invalid input syntax for type json" @@ -54,5 +54,5 @@ SQLSTATE: 22P02 错误原因:语法错误。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 diff --git a/content/zh/docs/Developerguide/GAUSS-02881----GAUSS-02890.md b/content/zh/docs/Developerguide/GAUSS-02881----GAUSS-02890.md index 5b0fb336d..8eb7f8802 100644 --- a/content/zh/docs/Developerguide/GAUSS-02881----GAUSS-02890.md +++ b/content/zh/docs/Developerguide/GAUSS-02881----GAUSS-02890.md @@ -6,7 +6,7 @@ SQLSTATE: 22023 错误原因:语法错误。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 GAUSS-02882: "length for type %s must be at least 1" diff --git a/content/zh/docs/Developerguide/GAUSS-02901----GAUSS-02910.md b/content/zh/docs/Developerguide/GAUSS-02901----GAUSS-02910.md index aaadc0ce0..1dae26b8d 100644 --- a/content/zh/docs/Developerguide/GAUSS-02901----GAUSS-02910.md +++ b/content/zh/docs/Developerguide/GAUSS-02901----GAUSS-02910.md @@ -28,7 +28,7 @@ GAUSS-02904: "could not format cidr value: %m" SQLSTATE: 22P03 -错误原因:网络地址格式化CIDR格式失败。 +错误原因:网络地址格式化 CIDR 格式失败。 解决办法:建议检查需要被格式化数据是否为有效网络地址。 @@ -44,17 +44,17 @@ GAUSS-02906: "cannot AND inet values of different sizes" SQLSTATE: 22023 -错误原因:不支持IPv4地址和IPv6同时作为AND的操作数。 +错误原因:不支持 IPv4 地址和 IPv6 同时作为 AND 的操作数。 -解决办法:建议检查AND的左右操作数是否为相同IP地址族。 +解决办法:建议检查 AND 的左右操作数是否为相同 IP 地址族。 GAUSS-02907: "cannot OR inet values of different sizes" SQLSTATE: 22023 -错误原因:不支持IPv4地址和IPv6同时作为OR的操作数。 +错误原因:不支持 IPv4 地址和 IPv6 同时作为 OR 的操作数。 -解决办法:建议检查OR的左右操作数是否为相同IP地址族。 +解决办法:建议检查 OR 的左右操作数是否为相同 IP 地址族。 GAUSS-02908: "result is out of range" @@ -68,9 +68,9 @@ GAUSS-02909: "cannot subtract inet values of different sizes" SQLSTATE: 22023 -错误原因:不支持IPv4地址和IPv6同时作为SUBTRACT的操作数。 +错误原因:不支持 IPv4 地址和 IPv6 同时作为 SUBTRACT 的操作数。 -解决办法:建议检查SUBTRACT的操作数是否为相同IP地址族。 +解决办法:建议检查 SUBTRACT 的操作数是否为相同 IP 地址族。 GAUSS-02910: "arraycontsel called for unrecognized operator %u" diff --git a/content/zh/docs/Developerguide/GAUSS-02911----GAUSS-02920.md b/content/zh/docs/Developerguide/GAUSS-02911----GAUSS-02920.md index f237da2c6..02490a058 100644 --- a/content/zh/docs/Developerguide/GAUSS-02911----GAUSS-02920.md +++ b/content/zh/docs/Developerguide/GAUSS-02911----GAUSS-02920.md @@ -76,7 +76,7 @@ GAUSS-02920: "invalid number of dimensions: %d" SQLSTATE: 22023 -错误原因:数组的维度小于0。 +错误原因:数组的维度小于 0 。 解决办法:检查输入参数。 diff --git a/content/zh/docs/Developerguide/GAUSS-02931----GAUSS-02940.md b/content/zh/docs/Developerguide/GAUSS-02931----GAUSS-02940.md index 2c8b9ae3b..7570236fb 100644 --- a/content/zh/docs/Developerguide/GAUSS-02931----GAUSS-02940.md +++ b/content/zh/docs/Developerguide/GAUSS-02931----GAUSS-02940.md @@ -36,17 +36,17 @@ GAUSS-02935: "function '%s' must be fired for DELETE" SQLSTATE: 39P01 -错误原因:函数应该在delete操作时被触发,但实际没有。 +错误原因:函数应该在 delete 操作时被触发,但实际没有。 -解决办法:检查trigger触发逻辑是否异常。 +解决办法:检查 trigger 触发逻辑是否异常。 GAUSS-02936: "no pg\_constraint entry for trigger '%s' on table '%s'" SQLSTATE: 42P17 -错误原因:对于表上的触发器,没有对应的constraint。 +错误原因:对于表上的触发器,没有对应的 constraint 。 -解决办法:删除相关的完整性约束触发器,然后重新添加constraint。 +解决办法:删除相关的完整性约束触发器,然后重新添加 constraint 。 GAUSS-02937: "wrong pg\_constraint entry for trigger '%s' on table '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-02941----GAUSS-02950.md b/content/zh/docs/Developerguide/GAUSS-02941----GAUSS-02950.md index 8d881cdfc..2916c06a3 100644 --- a/content/zh/docs/Developerguide/GAUSS-02941----GAUSS-02950.md +++ b/content/zh/docs/Developerguide/GAUSS-02941----GAUSS-02950.md @@ -54,7 +54,7 @@ SQLSTATE: XX001 错误原因:Node ID超出范围。 -解决办法:目前支持的最大DN数为4096,因此Node ID超出4096或小于0即为超出范围。请检查超出范围的Node ID并改正。 +解决办法:目前支持的最大 DN 数为 4096 ,因此 Node ID 超出 4096 或小于 0 即为超出范围。请检查超出范围的 Node ID 并改正。 GAUSS-02950: "Node id is too long" @@ -62,5 +62,5 @@ SQLSTATE: XX001 错误原因:node id超出长度。 -解决办法:目前支持的最大DN数为4096,因此Node ID的长度不小于5即为超出长度,请检查超出长度的Node ID并改正。 +解决办法:目前支持的最大 DN 数为 4096 ,因此 Node ID 的长度不小于 5 即为超出长度,请检查超出长度的 Node ID 并改正。 diff --git a/content/zh/docs/Developerguide/GAUSS-02951----GAUSS-02960.md b/content/zh/docs/Developerguide/GAUSS-02951----GAUSS-02960.md index f0b319288..4d21d35ef 100644 --- a/content/zh/docs/Developerguide/GAUSS-02951----GAUSS-02960.md +++ b/content/zh/docs/Developerguide/GAUSS-02951----GAUSS-02960.md @@ -14,7 +14,7 @@ SQLSTATE: 42P22 错误原因:解析器不能解析隐式转换类型。 -解决办法:检查当前字符串比较的collation是否可能有多个。 +解决办法:检查当前字符串比较的 collation 是否可能有多个。 GAUSS-02953: "could not convert string to UTF-16: error code %lu" @@ -22,13 +22,13 @@ SQLSTATE: XX000 错误原因:不能将字符串转为UTF-16格式。 -解决办法:根据error code决定如何处理。 +解决办法:根据 error code 决定如何处理。 GAUSS-02954: "could not compare Unicode strings: %m" SQLSTATE: XX000 -错误原因:不能将字符串转为Unicode格式。 +错误原因:不能将字符串转为 Unicode 格式。 解决办法:检查出错的字符串并改正。 @@ -36,9 +36,9 @@ GAUSS-02955: "index %d out of valid range, 0..%d" SQLSTATE: 2202E -错误原因:输入的索引值超出bytea字符串长度范围。 +错误原因:输入的索引值超出 bytea 字符串长度范围。 -解决办法:请检查bytea字符串长度,确保索引值在其长度范围内。 +解决办法:请检查 bytea 字符串长度,确保索引值在其长度范围内。 GAUSS-02956: "invalid name syntax" @@ -60,9 +60,9 @@ GAUSS-02958: "field position must be greater than zero" SQLSTATE: 22023 -错误原因:分隔字符串的位置小于1。 +错误原因:分隔字符串的位置小于 1 。 -解决办法:分隔字符串的位置必须大于0,至少为1。 +解决办法:分隔字符串的位置必须大于 0 ,至少为 1 。 GAUSS-02959: "string\_agg\_transfn called in non-aggregate context" diff --git a/content/zh/docs/Developerguide/GAUSS-02961----GAUSS-02970.md b/content/zh/docs/Developerguide/GAUSS-02961----GAUSS-02970.md index 89caf44ff..ef5b66dae 100644 --- a/content/zh/docs/Developerguide/GAUSS-02961----GAUSS-02970.md +++ b/content/zh/docs/Developerguide/GAUSS-02961----GAUSS-02970.md @@ -28,15 +28,15 @@ GAUSS-02965: "unrecognized conversion specifier '%c'" SQLSTATE: 22023 -错误原因:text转为string的方式定义错误。 +错误原因:text转为 string 的方式定义错误。 -解决办法:检查text转为String的方式,只能为'%s','%I','%L'。 +解决办法:检查 text 转为 String 的方式,只能为'%s','%I','%L'。 GAUSS-02966: "null values cannot be formatted as an SQL identifier" SQLSTATE: 22004 -错误原因:当text转为string的方式为'%I'时,输入数据不能为NULL。 +错误原因:当 text 转为 string 的方式为'%I'时,输入数据不能为 NULL 。 解决办法:检查转换类别是否正确。 diff --git a/content/zh/docs/Developerguide/GAUSS-02971----GAUSS-02980.md b/content/zh/docs/Developerguide/GAUSS-02971----GAUSS-02980.md index e08416fa6..4b8b3bccb 100644 --- a/content/zh/docs/Developerguide/GAUSS-02971----GAUSS-02980.md +++ b/content/zh/docs/Developerguide/GAUSS-02971----GAUSS-02980.md @@ -12,7 +12,7 @@ GAUSS-02972: "invalid input syntax for type real: '%s'" SQLSTATE: 22P02 -错误原因:输入的需要转real类型的字符串格式不对。 +错误原因:输入的需要转 real 类型的字符串格式不对。 解决办法:检查输入数据。 @@ -20,7 +20,7 @@ GAUSS-02973: "'%s' is out of range for type real" SQLSTATE: 22003 -错误原因:输入的字符串转real类型后溢出。 +错误原因:输入的字符串转 real 类型后溢出。 解决办法:检查输入数据。 @@ -28,7 +28,7 @@ GAUSS-02974: "'%s' is out of range for type double precision" SQLSTATE: 22003 -错误原因:输入的字符串转double类型后溢出。 +错误原因:输入的字符串转 double 类型后溢出。 解决办法:检查输入数据。 @@ -46,7 +46,7 @@ SQLSTATE: XX000 错误原因:setseed()函数参数超过合法范围。 -解决办法:修改setseed()函数参数在-1到1之间。 +解决办法:修改setseed()函数参数在-1到 1 之间。 GAUSS-02978: "lower and upper bounds must be finite" diff --git a/content/zh/docs/Developerguide/GAUSS-02981----GAUSS-02990.md b/content/zh/docs/Developerguide/GAUSS-02981----GAUSS-02990.md index f2d93e389..7baa01350 100644 --- a/content/zh/docs/Developerguide/GAUSS-02981----GAUSS-02990.md +++ b/content/zh/docs/Developerguide/GAUSS-02981----GAUSS-02990.md @@ -22,13 +22,13 @@ SQLSTATE: 22023 错误原因:读取文件时,需要读取的长度超过了最大值。 -解决办法:减少读取长度,减少到1G以下。 +解决办法:减少读取长度,减少到 1G 以下。 GAUSS-02984: "could not seek in file '%s': %m" SQLSTATE: XX000 -错误原因:不能根据offset定位文件。 +错误原因:不能根据 offset 定位文件。 解决办法:查看文件状态是否异常。 @@ -54,5 +54,5 @@ SQLSTATE: 54000 错误原因:读取文件时,需要读取的长度超过了最大值。 -解决办法:减少读取长度,减少到1G以下。 +解决办法:减少读取长度,减少到 1G 以下。 diff --git a/content/zh/docs/Developerguide/GAUSS-02991----GAUSS-03000.md b/content/zh/docs/Developerguide/GAUSS-02991----GAUSS-03000.md index 9b352ba18..62be26d3b 100644 --- a/content/zh/docs/Developerguide/GAUSS-02991----GAUSS-03000.md +++ b/content/zh/docs/Developerguide/GAUSS-02991----GAUSS-03000.md @@ -1,82 +1,82 @@ -# GAUSS-02991 -- GAUSS-03000 - -GAUSS-02991: "requested character too large" - -SQLSTATE: 54000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-02992: "requested character too large for encoding: %d" - -SQLSTATE: 54000 - -错误原因:输入的字符串太长。 - -解决办法:仅支持unicode编码字符,请检查输入字符串。 - -GAUSS-02993: "TIMESTAMP\(%d\)%s precision must not be negative" - -SQLSTATE: 22023 - -错误原因:timestamp类型的精度不能小于0。 - -解决办法:检查timestamp类型的精度。 - -GAUSS-02994: "timestamp out of range: '%s'" - -SQLSTATE: 22020 - -错误原因:timestamp类型数值越界。 - -解决办法:检查timestamp类型的数值。 - -GAUSS-02995: "date/time value '%s' is no longer supported" - -SQLSTATE: 0A000 - -错误原因:输入的待转换为timestamp类型的字符串值解析错误。 - -解决办法:请检查输入的字符串格式是否正确。待转换为timestamp的字符串格式需满足“日期/时间类型”格式要求。 - -GAUSS-02996: "unexpected dtype %d while parsing timestamp '%s'" - -SQLSTATE: XX000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-02997: "timestamp out of range" - -SQLSTATE: 22008 - -错误原因:timestamp数据越界。 - -解决办法:检查timestamp类型的数值是否合法。 - -GAUSS-02998: "timestamp cannot be NaN" - -SQLSTATE: 22008 - -错误原因:timestamp类型数据不能为无限值。 - -解决办法:检查输入数据。 - -GAUSS-02999: "smalldatetime out of range: '%s'" - -SQLSTATE: 22008 - -错误原因:数值越界。 - -解决办法:检查输入数据。 - -GAUSS-03000: "unexpected dtype %d while parsing smalldatetime '%s'" - -SQLSTATE: XX000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-02991 -- GAUSS-03000 + +GAUSS-02991: "requested character too large" + +SQLSTATE: 54000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-02992: "requested character too large for encoding: %d" + +SQLSTATE: 54000 + +错误原因:输入的字符串太长。 + +解决办法:仅支持 unicode 编码字符,请检查输入字符串。 + +GAUSS-02993: "TIMESTAMP\(%d\)%s precision must not be negative" + +SQLSTATE: 22023 + +错误原因:timestamp类型的精度不能小于 0 。 + +解决办法:检查 timestamp 类型的精度。 + +GAUSS-02994: "timestamp out of range: '%s'" + +SQLSTATE: 22020 + +错误原因:timestamp类型数值越界。 + +解决办法:检查 timestamp 类型的数值。 + +GAUSS-02995: "date/time value '%s' is no longer supported" + +SQLSTATE: 0A000 + +错误原因:输入的待转换为 timestamp 类型的字符串值解析错误。 + +解决办法:请检查输入的字符串格式是否正确。待转换为 timestamp 的字符串格式需满足“日期/时间类型”格式要求。 + +GAUSS-02996: "unexpected dtype %d while parsing timestamp '%s'" + +SQLSTATE: XX000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-02997: "timestamp out of range" + +SQLSTATE: 22008 + +错误原因:timestamp数据越界。 + +解决办法:检查 timestamp 类型的数值是否合法。 + +GAUSS-02998: "timestamp cannot be NaN" + +SQLSTATE: 22008 + +错误原因:timestamp类型数据不能为无限值。 + +解决办法:检查输入数据。 + +GAUSS-02999: "smalldatetime out of range: '%s'" + +SQLSTATE: 22008 + +错误原因:数值越界。 + +解决办法:检查输入数据。 + +GAUSS-03000: "unexpected dtype %d while parsing smalldatetime '%s'" + +SQLSTATE: XX000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-03001----GAUSS-03010.md b/content/zh/docs/Developerguide/GAUSS-03001----GAUSS-03010.md index f97f01737..27d50866f 100644 --- a/content/zh/docs/Developerguide/GAUSS-03001----GAUSS-03010.md +++ b/content/zh/docs/Developerguide/GAUSS-03001----GAUSS-03010.md @@ -20,7 +20,7 @@ GAUSS-03003: "timestamp\(%d\) precision must be between %d and %d" SQLSTATE: 22023 -错误原因:timestamp的精度只能界于0到6之间。 +错误原因:timestamp的精度只能界于 0 到 6 之间。 解决办法:检查输入的精度是否越界。 @@ -60,7 +60,7 @@ GAUSS-03008: "invalid INTERVAL type modifier" SQLSTATE: 22023 -错误原因:非法的interval类型精度值。 +错误原因:非法的 interval 类型精度值。 解决办法:检查类型精度值。 diff --git a/content/zh/docs/Developerguide/GAUSS-03011----GAUSS-03020.md b/content/zh/docs/Developerguide/GAUSS-03011----GAUSS-03020.md index 47883dd9a..d94b881ae 100644 --- a/content/zh/docs/Developerguide/GAUSS-03011----GAUSS-03020.md +++ b/content/zh/docs/Developerguide/GAUSS-03011----GAUSS-03020.md @@ -12,7 +12,7 @@ GAUSS-03014: "cannot subtract infinite timestamps" SQLSTATE: 22008 -错误原因:不能减去无限值的timestamp值。 +错误原因:不能减去无限值的 timestamp 值。 解决办法:检查输入数据。 @@ -52,7 +52,7 @@ GAUSS-03019: "timestamp with time zone units '%s' not recognized" SQLSTATE: 22023 -错误原因:带timezone的timestamp没有时间单位。 +错误原因:带 timezone 的 timestamp 没有时间单位。 解决办法:检查输入参数。 diff --git a/content/zh/docs/Developerguide/GAUSS-03021----GAUSS-03030.md b/content/zh/docs/Developerguide/GAUSS-03021----GAUSS-03030.md index edb2284a4..a9ff50778 100644 --- a/content/zh/docs/Developerguide/GAUSS-03021----GAUSS-03030.md +++ b/content/zh/docs/Developerguide/GAUSS-03021----GAUSS-03030.md @@ -12,7 +12,7 @@ GAUSS-03022: "could not convert to time zone '%s'" SQLSTATE: 22023 -错误原因:无法转换到指定的time zone。 +错误原因:无法转换到指定的 time zone 。 解决办法:检查输入参数。 @@ -20,7 +20,7 @@ GAUSS-03023: "time zone '%s' not recognized" SQLSTATE: 22023 -错误原因:需要转换的timezone不能识别。 +错误原因:需要转换的 timezone 不能识别。 解决办法:检查输入参数。 @@ -46,7 +46,7 @@ SQLSTATE: 0A000 错误原因:年份值非法。 -解决办法:请检查年份的位数是否为4。 +解决办法:请检查年份的位数是否为 4 。 GAUSS-03029: "the month is invalid!" @@ -54,7 +54,7 @@ SQLSTATE: 0A000 错误原因:月份值非法。 -解决办法:请检查月份的位数是否为2。 +解决办法:请检查月份的位数是否为 2 。 GAUSS-03030: "the format is not correct\\n" diff --git a/content/zh/docs/Developerguide/GAUSS-03031----GAUSS-03040.md b/content/zh/docs/Developerguide/GAUSS-03031----GAUSS-03040.md index e7ea3d7ee..0a3c03d02 100644 --- a/content/zh/docs/Developerguide/GAUSS-03031----GAUSS-03040.md +++ b/content/zh/docs/Developerguide/GAUSS-03031----GAUSS-03040.md @@ -14,7 +14,7 @@ SQLSTATE: 0A000 错误原因:小时值非法。 -解决办法:请检查小时的位数是否为2。 +解决办法:请检查小时的位数是否为 2 。 GAUSS-03033: "the minute is invalid!" @@ -22,7 +22,7 @@ SQLSTATE: 0A000 错误原因:分钟值非法。 -解决办法:请检查分钟的位数是否为2。 +解决办法:请检查分钟的位数是否为 2 。 GAUSS-03034: "the year = %d is illegal" diff --git a/content/zh/docs/Developerguide/GAUSS-03041----GAUSS-03050.md b/content/zh/docs/Developerguide/GAUSS-03041----GAUSS-03050.md index b42b555b1..08c302abd 100644 --- a/content/zh/docs/Developerguide/GAUSS-03041----GAUSS-03050.md +++ b/content/zh/docs/Developerguide/GAUSS-03041----GAUSS-03050.md @@ -20,7 +20,7 @@ GAUSS-03043: "encoding conversion from %s to ASCII not supported" SQLSTATE: 0A000 -错误原因:不支持从当前编码格式转换为ascii。 +错误原因:不支持从当前编码格式转换为 ascii 。 解决办法:请检查输入字符的编码格式。 @@ -36,7 +36,7 @@ GAUSS-03045: "could not format 'path' value" SQLSTATE: 22023 -错误原因:无法获取path信息。 +错误原因:无法获取 path 信息。 解决办法:检查输入参数。 @@ -62,7 +62,7 @@ SQLSTATE: 0A000 错误原因:line类型不支持。 -解决办法:检查此版本是否支持line类型。 +解决办法:检查此版本是否支持 line 类型。 GAUSS-03049: "invalid input syntax for type path: '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-03051----GAUSS-03060.md b/content/zh/docs/Developerguide/GAUSS-03051----GAUSS-03060.md index 45e6af06f..8bfe786c1 100644 --- a/content/zh/docs/Developerguide/GAUSS-03051----GAUSS-03060.md +++ b/content/zh/docs/Developerguide/GAUSS-03051----GAUSS-03060.md @@ -36,7 +36,7 @@ GAUSS-03056: "invalid input syntax for type polygon: '%s'" SQLSTATE: 22P02 -错误原因:输入的polygon类型值无法解析。 +错误原因:输入的 polygon 类型值无法解析。 解决办法:检查输入参数,应该以点对\(a,b\)格式使用","间隔的字符串输入。 @@ -68,7 +68,7 @@ GAUSS-03060: "open path cannot be converted to polygon" SQLSTATE: 22023 -错误原因:没有回路的path不能转换成多角形。 +错误原因:没有回路的 path 不能转换成多角形。 解决办法:检查输入路径是否有回路。 diff --git a/content/zh/docs/Developerguide/GAUSS-03061----GAUSS-03070.md b/content/zh/docs/Developerguide/GAUSS-03061----GAUSS-03070.md index f2a24dd47..23e248c2e 100644 --- a/content/zh/docs/Developerguide/GAUSS-03061----GAUSS-03070.md +++ b/content/zh/docs/Developerguide/GAUSS-03061----GAUSS-03070.md @@ -12,7 +12,7 @@ GAUSS-03062: "could not format 'circle' value" SQLSTATE: 22023 -错误原因:使用输入的circle类型值无法构造circle类型数据。 +错误原因:使用输入的 circle 类型值无法构造 circle 类型数据。 解决办法:无(不可能出现)。 @@ -20,17 +20,17 @@ GAUSS-03063: "invalid radius in external 'circle' value" SQLSTATE: 22P03 -错误原因:输入的circle的半径小于0。 +错误原因:输入的 circle 的半径小于 0 。 -解决办法:检查输入的circle值。 +解决办法:检查输入的 circle 值。 GAUSS-03064: "cannot convert circle with radius zero to polygon" SQLSTATE: 0A000 -错误原因:不能将半径为0的圆转换为多角形。 +错误原因:不能将半径为 0 的圆转换为多角形。 -解决办法:检查输入的circle值。 +解决办法:检查输入的 circle 值。 GAUSS-03065: "must request at least 2 points" @@ -44,7 +44,7 @@ GAUSS-03066: "cannot convert empty polygon to circle" SQLSTATE: 22023 -错误原因:不能将没有点集的多角形转换为circle型值。 +错误原因:不能将没有点集的多角形转换为 circle 型值。 解决办法:检查输入的多角形值。 @@ -60,7 +60,7 @@ GAUSS-03068: "value '%s' is out of range for type integer" SQLSTATE: 22003 -错误原因:参数值超过了integer类型的取值范围。 +错误原因:参数值超过了 integer 类型的取值范围。 解决办法:请检查输入参数。 @@ -68,7 +68,7 @@ GAUSS-03069: "value '%s' is out of range for type smallint" SQLSTATE: 22003 -错误原因:参数值超过了smallint类型的取值范围。 +错误原因:参数值超过了 smallint 类型的取值范围。 解决办法:请检查输入参数。 @@ -76,6 +76,6 @@ GAUSS-03070: "value '%s' is out of range for 8-bit integer" SQLSTATE: 22003 -错误原因:参数值超过了8位int类型的取值范围。 +错误原因:参数值超过了 8 位 int 类型的取值范围。 解决办法:请检查输入参数。 diff --git a/content/zh/docs/Developerguide/GAUSS-03071----GAUSS-03080.md b/content/zh/docs/Developerguide/GAUSS-03071----GAUSS-03080.md index 8a7d222cc..379fa6661 100644 --- a/content/zh/docs/Developerguide/GAUSS-03071----GAUSS-03080.md +++ b/content/zh/docs/Developerguide/GAUSS-03071----GAUSS-03080.md @@ -14,13 +14,13 @@ SQLSTATE: 2201B 错误原因:输入的表达式非法。 -解决办法:检查数据库encoding。 +解决办法:检查数据库 encoding 。 GAUSS-03073: "invalid regexp option: '%c'" SQLSTATE: 22023 -错误原因:非法的regexp转换类型。 +错误原因:非法的 regexp 转换类型。 解决办法:检查输入参数。 @@ -36,7 +36,7 @@ GAUSS-03075: "regexp\_split does not support the global option" SQLSTATE: 22023 -错误原因:regexp\_split目前不支持global选项。 +错误原因:regexp\_split目前不支持 global 选项。 解决办法:修改分隔选项。 @@ -68,7 +68,7 @@ GAUSS-03079: "cannot convert abstime 'invalid' to timestamp" SQLSTATE: 0A000 -错误原因:绝对时间非法,无法转换为timestamp类型。 +错误原因:绝对时间非法,无法转换为 timestamp 类型。 解决办法:请检查输入参数。 diff --git a/content/zh/docs/Developerguide/GAUSS-03081----GAUSS-03090.md b/content/zh/docs/Developerguide/GAUSS-03081----GAUSS-03090.md index cd36433b5..8a5062c2a 100644 --- a/content/zh/docs/Developerguide/GAUSS-03081----GAUSS-03090.md +++ b/content/zh/docs/Developerguide/GAUSS-03081----GAUSS-03090.md @@ -4,7 +4,7 @@ GAUSS-03081: "invalid status in external 'tinterval' value" SQLSTATE: 22P03 -错误原因:输入的字符串中获得的interval错误状态与数据对应的状态不一致。 +错误原因:输入的字符串中获得的 interval 错误状态与数据对应的状态不一致。 解决办法:检测输入字符串。 @@ -12,7 +12,7 @@ GAUSS-03082: "cannot convert reltime 'invalid' to interval" SQLSTATE: 0A000 -错误原因:reltime类型值非法,不能转换为interval类型。 +错误原因:reltime类型值非法,不能转换为 interval 类型。 解决办法:检查输入参数。 @@ -20,7 +20,7 @@ GAUSS-03083: "invalid input syntax for type tinterval: '%s'" SQLSTATE: 22007 -错误原因:输入字符串转换为tinterval类型时语法错误。 +错误原因:输入字符串转换为 tinterval 类型时语法错误。 解决办法:检查输入字符串。 @@ -28,7 +28,7 @@ GAUSS-03084: "invalid input syntax for type boolean: '%s'" SQLSTATE: 22P02 -错误原因:输入字符串转换为Boolean类型时语法错误。 +错误原因:输入字符串转换为 Boolean 类型时语法错误。 解决办法:检查输入字符串。 diff --git a/content/zh/docs/Developerguide/GAUSS-03091----GAUSS-03100.md b/content/zh/docs/Developerguide/GAUSS-03091----GAUSS-03100.md index 88d49313d..685070f07 100644 --- a/content/zh/docs/Developerguide/GAUSS-03091----GAUSS-03100.md +++ b/content/zh/docs/Developerguide/GAUSS-03091----GAUSS-03100.md @@ -28,7 +28,7 @@ GAUSS-03095: "invalid number of dimensions: %d" SQLSTATE: 22P03 -错误原因:数组的维度小于0。 +错误原因:数组的维度小于 0 。 解决办法:检查输入参数。 @@ -36,7 +36,7 @@ GAUSS-03096: "invalid array flags" SQLSTATE: 22P03 -错误原因:数组标志非法,只能为0或1。 +错误原因:数组标志非法,只能为 0 或 1 。 解决办法:检查输入参数。 @@ -52,7 +52,7 @@ GAUSS-03098: "insufficient data left in message" SQLSTATE: 22P03 -错误原因:message中剩余的长度小于message首获取的长度值。 +错误原因:message中剩余的长度小于 message 首获取的长度值。 解决办法:检查当前字符串。 diff --git a/content/zh/docs/Developerguide/GAUSS-03101----GAUSS-03110.md b/content/zh/docs/Developerguide/GAUSS-03101----GAUSS-03110.md index e4cafaf6b..148386953 100644 --- a/content/zh/docs/Developerguide/GAUSS-03101----GAUSS-03110.md +++ b/content/zh/docs/Developerguide/GAUSS-03101----GAUSS-03110.md @@ -20,7 +20,7 @@ GAUSS-03103: "cannot assign null value to an element of a fixed-length array" SQLSTATE: 22004 -错误原因:不能将定长元素数组的元素值替换为NULL值。 +错误原因:不能将定长元素数组的元素值替换为 NULL 值。 解决办法:检查输入参数。 @@ -46,7 +46,7 @@ SQLSTATE: XX000 错误原因:array的参数非法。 -解决办法:修改查询中array的参数。 +解决办法:修改查询中 array 的参数。 GAUSS-03107: "null input array" @@ -54,13 +54,13 @@ SQLSTATE: XX000 错误原因:array没有参数。 -解决办法:为array增加合法参数。 +解决办法:为 array 增加合法参数。 GAUSS-03108: "null array element not allowed in this context" SQLSTATE: 22004 -错误原因:如果当前数组元素标志不为NULL,则不允许数组元素的值为NULL。 +错误原因:如果当前数组元素标志不为 NULL ,则不允许数组元素的值为 NULL 。 解决办法:检查输入参数。 diff --git a/content/zh/docs/Developerguide/GAUSS-03111----GAUSS-03120.md b/content/zh/docs/Developerguide/GAUSS-03111----GAUSS-03120.md index af2df38cc..d974742da 100644 --- a/content/zh/docs/Developerguide/GAUSS-03111----GAUSS-03120.md +++ b/content/zh/docs/Developerguide/GAUSS-03111----GAUSS-03120.md @@ -4,7 +4,7 @@ GAUSS-03111: "dimension array or low bound array cannot be null" SQLSTATE: 22004 -错误原因:数组维度和填充下标不能为NULL。 +错误原因:数组维度和填充下标不能为 NULL 。 解决办法:检查输入参数。 @@ -20,7 +20,7 @@ GAUSS-03113: "wrong range of array subscripts" SQLSTATE: 2202E -错误原因:数组的维度下界必须是1。 +错误原因:数组的维度下界必须是 1 。 解决办法:检查输入参数。 @@ -36,7 +36,7 @@ GAUSS-03115: "unrecognized encoding: '%s'" SQLSTATE: 22023 -错误原因:根据当前的字符串无法找到对应的encoding。 +错误原因:根据当前的字符串无法找到对应的 encoding 。 解决办法:检查输入字符串。 diff --git a/content/zh/docs/Developerguide/GAUSS-03121----GAUSS-03130.md b/content/zh/docs/Developerguide/GAUSS-03121----GAUSS-03130.md index 62b78ed76..f71714ad3 100644 --- a/content/zh/docs/Developerguide/GAUSS-03121----GAUSS-03130.md +++ b/content/zh/docs/Developerguide/GAUSS-03121----GAUSS-03130.md @@ -20,7 +20,7 @@ GAUSS-03123: "'char' out of range" SQLSTATE: 22003 -错误原因:int4转换为char时溢出。 +错误原因:int4转换为 char 时溢出。 解决办法:请检查输入参数。 @@ -28,7 +28,7 @@ GAUSS-03124: "invalid input syntax for type oid: '%s'" SQLSTATE: 22P02 -错误原因:输入字符串转换为OID类型时语法错误。 +错误原因:输入字符串转换为 OID 类型时语法错误。 解决办法:检查输入参数。 @@ -36,7 +36,7 @@ GAUSS-03125: "value '%s' is out of range for type oid" SQLSTATE: 22003 -错误原因:值超出OID类型的值域。 +错误原因:值超出 OID 类型的值域。 解决办法:检查输入参数。 @@ -46,13 +46,13 @@ SQLSTATE: 22023 错误原因:OID类型数组有太多的元素值。 -解决办法:最多支持666个值。 +解决办法:最多支持 666 个值。 GAUSS-03127: "invalid oidvector data" SQLSTATE: 22P03 -错误原因:OID类型数组里的元素不为OID类型,非法。 +错误原因:OID类型数组里的元素不为 OID 类型,非法。 解决办法:检查输入参数。 @@ -60,7 +60,7 @@ GAUSS-03129: "typmod array must be type cstring\[\]" SQLSTATE: 2202E -错误原因:当前函数中处理的数组类型必须为cstring型。 +错误原因:当前函数中处理的数组类型必须为 cstring 型。 解决办法:检查数组元素类型。 diff --git a/content/zh/docs/Developerguide/GAUSS-03131----GAUSS-03140.md b/content/zh/docs/Developerguide/GAUSS-03131----GAUSS-03140.md index eba765373..cd472f861 100644 --- a/content/zh/docs/Developerguide/GAUSS-03131----GAUSS-03140.md +++ b/content/zh/docs/Developerguide/GAUSS-03131----GAUSS-03140.md @@ -12,25 +12,25 @@ GAUSS-03132: "unrecognized key word: '%s'" SQLSTATE: 22P02 -错误原因:ACL的关键字只能是group或user。 +错误原因:ACL的关键字只能是 group 或 user 。 -解决办法:检查ACL的关键字是否正确。 +解决办法:检查 ACL 的关键字是否正确。 GAUSS-03133: "missing name" SQLSTATE: 22P02 -错误原因:在关键字group或user之后缺少名称。 +错误原因:在关键字 group 或 user 之后缺少名称。 -解决办法:检查ACL的语法。 +解决办法:检查 ACL 的语法。 GAUSS-03134: "missing '=' sign" SQLSTATE: 22P02 -错误原因:缺少group或user的权限赋值符。 +错误原因:缺少 group 或 user 的权限赋值符。 -解决办法:检查ACL的语法。 +解决办法:检查 ACL 的语法。 GAUSS-03135: "invalid mode character: must be one of '%s'" @@ -38,15 +38,15 @@ SQLSTATE: 22P02 错误原因:权限模式非法,必须为"arwdDxtXUCTc"之一。 -解决办法:检查ACL的语法。 +解决办法:检查 ACL 的语法。 GAUSS-03136: "a name must follow the '/' sign" SQLSTATE: 22P02 -错误原因:如果将权限返回sysadmin,需要在"/"后指定名称。 +错误原因:如果将权限返回 sysadmin ,需要在"/"后指定名称。 -解决办法:检查ACL的语法。 +解决办法:检查 ACL 的语法。 GAUSS-03137: "invalid size: %d" @@ -60,9 +60,9 @@ GAUSS-03138: "ACL array contains wrong data type" SQLSTATE: 22023 -错误原因:ACL数组中包含了非ACL元素。 +错误原因:ACL数组中包含了非 ACL 元素。 -解决办法:检查ACL数组是否合法。 +解决办法:检查 ACL 数组是否合法。 GAUSS-03139: "ACL arrays must be one-dimensional" @@ -70,13 +70,13 @@ SQLSTATE: 22023 错误原因:ACL数组只能是一维。 -解决办法:检查ACL数组是否合法。 +解决办法:检查 ACL 数组是否合法。 GAUSS-03140: "ACL arrays must not contain null values" SQLSTATE: 22004 -错误原因:ACL数组中不能包含NULL值。 +错误原因:ACL数组中不能包含 NULL 值。 -解决办法:检查ACL数组是否合法。 +解决办法:检查 ACL 数组是否合法。 diff --git a/content/zh/docs/Developerguide/GAUSS-03141----GAUSS-03150.md b/content/zh/docs/Developerguide/GAUSS-03141----GAUSS-03150.md index dfd0a290d..f0dffd16a 100644 --- a/content/zh/docs/Developerguide/GAUSS-03141----GAUSS-03150.md +++ b/content/zh/docs/Developerguide/GAUSS-03141----GAUSS-03150.md @@ -4,7 +4,7 @@ GAUSS-03141: "extra garbage at the end of the ACL specification" SQLSTATE: 22P02 -错误原因:需要转换为ACL数组的字符串解析完毕后还剩余多余字符。 +错误原因:需要转换为 ACL 数组的字符串解析完毕后还剩余多余字符。 解决办法:检查输入字符串。 @@ -14,7 +14,7 @@ SQLSTATE: XX000 错误原因:acldefault函数输入参数错误。 -解决办法:不要手动调用acldefault函数,或修改acldefault函数第一个入参。 +解决办法:不要手动调用 acldefault 函数,或修改 acldefault 函数第一个入参。 GAUSS-03143: "grant options cannot be granted back to your own grantor" @@ -22,7 +22,7 @@ SQLSTATE: 0LP01 错误原因:赋权出现回环,即赋权赋回给原始的赋权者。 -解决办法:检查ACL规则。 +解决办法:检查 ACL 规则。 GAUSS-03144: "dependent privileges exist" @@ -30,7 +30,7 @@ SQLSTATE: 2BP01 错误原因:删除权限时,存在依赖权限。 -解决办法:使用cascade关键字级联删除。 +解决办法:使用 cascade 关键字级联删除。 GAUSS-03145: "null ACL" @@ -46,7 +46,7 @@ SQLSTATE: 0A000 错误原因:aclinsert函数不支持。 -解决办法:不能手动调用不支持的aclinsert函数。 +解决办法:不能手动调用不支持的 aclinsert 函数。 GAUSS-03147: "aclremove is no longer supported" @@ -54,7 +54,7 @@ SQLSTATE: 0A000 错误原因:aclremove函数不支持。 -解决办法:不能手动调用不支持的aclremove函数。 +解决办法:不能手动调用不支持的 aclremove 函数。 GAUSS-03148: "unrecognized privilege type: '%s'" @@ -62,7 +62,7 @@ SQLSTATE: 22023 错误原因:makeaclitem函数参数不正确。 -解决办法:不要手动调用makeaclitem函数,或者makeaclitem函数第三个参数。 +解决办法:不要手动调用 makeaclitem 函数,或者 makeaclitem 函数第三个参数。 GAUSS-03149: "unrecognized aclright: %d" @@ -70,7 +70,7 @@ SQLSTATE: XX000 错误原因:aclexplode函数参数不正确。 -解决办法:不要手动调用aclexplode函数,或者修改aclexplode函数参数。 +解决办法:不要手动调用 aclexplode 函数,或者修改 aclexplode 函数参数。 GAUSS-03150: "function '%s' does not exist" diff --git a/content/zh/docs/Developerguide/GAUSS-03161----GAUSS-03170.md b/content/zh/docs/Developerguide/GAUSS-03161----GAUSS-03170.md index 23dca8ae6..cc2dad322 100644 --- a/content/zh/docs/Developerguide/GAUSS-03161----GAUSS-03170.md +++ b/content/zh/docs/Developerguide/GAUSS-03161----GAUSS-03170.md @@ -78,5 +78,5 @@ SQLSTATE: 22P02 错误原因:enum的输入非法。 -解决办法:修改enum的输入。 +解决办法:修改 enum 的输入。 diff --git a/content/zh/docs/Developerguide/GAUSS-03171----GAUSS-03180.md b/content/zh/docs/Developerguide/GAUSS-03171----GAUSS-03180.md index 40e577afc..6c0916109 100644 --- a/content/zh/docs/Developerguide/GAUSS-03171----GAUSS-03180.md +++ b/content/zh/docs/Developerguide/GAUSS-03171----GAUSS-03180.md @@ -6,7 +6,7 @@ SQLSTATE: 22P03 错误原因:enum参数非法。 -解决办法:修改enum参数。 +解决办法:修改 enum 参数。 GAUSS-03172: "invalid argument for enum\_recv" @@ -30,15 +30,15 @@ SQLSTATE: 55000 错误原因:enum中没有值。 -解决办法:为enum中赋值。 +解决办法:为 enum 中赋值。 GAUSS-03175: "could not open tablespace directory '%s': %m" SQLSTATE: XX000 -错误原因:无法打开table space的路径。 +错误原因:无法打开 table space 的路径。 -解决办法:检查table space对应的路径是否损坏。 +解决办法:检查 table space 对应的路径是否损坏。 GAUSS-03176: "Parameter value should not be negative." diff --git a/content/zh/docs/Developerguide/GAUSS-03181----GAUSS-03190.md b/content/zh/docs/Developerguide/GAUSS-03181----GAUSS-03190.md index c1dab52b1..8b4e00d9a 100644 --- a/content/zh/docs/Developerguide/GAUSS-03181----GAUSS-03190.md +++ b/content/zh/docs/Developerguide/GAUSS-03181----GAUSS-03190.md @@ -12,9 +12,9 @@ GAUSS-03182: "array of weight is too short" SQLSTATE: 2202E -错误原因:函数ts\_rank\_wtt的参数中,一维数组的元素个数小于4个。 +错误原因:函数ts\_rank\_wtt的参数中,一维数组的元素个数小于 4 个。 -解决办法:保证一维数组的元素个数大于等于4个。 +解决办法:保证一维数组的元素个数大于等于 4 个。 GAUSS-03183: "array of weight must not contain nulls" @@ -30,7 +30,7 @@ SQLSTATE: 22023 错误原因:函数ts\_rank\_wtt的第一个参数,数组元素中的数据大于1.0。 -解决办法:数组的元组不能大于1。 +解决办法:数组的元组不能大于 1 。 GAUSS-03185: "more than one function named '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-03211----GAUSS-03220.md b/content/zh/docs/Developerguide/GAUSS-03211----GAUSS-03220.md index dba385dfa..17b2858ea 100644 --- a/content/zh/docs/Developerguide/GAUSS-03211----GAUSS-03220.md +++ b/content/zh/docs/Developerguide/GAUSS-03211----GAUSS-03220.md @@ -6,7 +6,7 @@ SQLSTATE: XX000 错误原因:tsquery类型的字符串中未找到操作符。 -解决办法:检查数据的输入,保证tsquery类型的变量包含操作符。 +解决办法:检查数据的输入,保证 tsquery 类型的变量包含操作符。 GAUSS-03212: "malformed tsquery: extra nodes" diff --git a/content/zh/docs/Developerguide/GAUSS-03241----GAUSS-03250.md b/content/zh/docs/Developerguide/GAUSS-03241----GAUSS-03250.md index 642ca22fa..d78cb5ddf 100644 --- a/content/zh/docs/Developerguide/GAUSS-03241----GAUSS-03250.md +++ b/content/zh/docs/Developerguide/GAUSS-03241----GAUSS-03250.md @@ -28,9 +28,9 @@ GAUSS-03244: "date/time value 'current' is no longer supported" SQLSTATE: 0A000 -错误原因:不支持current值。 +错误原因:不支持 current 值。 -解决办法:不使用current值。 +解决办法:不使用 current 值。 GAUSS-03245: "date out of range: '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-03251----GAUSS-03260.md b/content/zh/docs/Developerguide/GAUSS-03251----GAUSS-03260.md index 017da1ec1..00330f333 100644 --- a/content/zh/docs/Developerguide/GAUSS-03251----GAUSS-03260.md +++ b/content/zh/docs/Developerguide/GAUSS-03251----GAUSS-03260.md @@ -14,7 +14,7 @@ SQLSTATE: 22023 错误原因:SQL参数不对。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 GAUSS-03253: "time zone displacement out of range" @@ -30,7 +30,7 @@ SQLSTATE: 22023 错误原因:SQL参数不对。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 GAUSS-03255: "'interval' time zone '%s' not valid" diff --git a/content/zh/docs/Developerguide/GAUSS-03291----GAUSS-03300.md b/content/zh/docs/Developerguide/GAUSS-03291----GAUSS-03300.md index cf635f396..13bf1a8c7 100644 --- a/content/zh/docs/Developerguide/GAUSS-03291----GAUSS-03300.md +++ b/content/zh/docs/Developerguide/GAUSS-03291----GAUSS-03300.md @@ -46,7 +46,7 @@ SQLSTATE: 22015 错误原因:interval字段的值超出范围。 -解决办法:修正输入,确保interval字段取值合法。 +解决办法:修正输入,确保 interval 字段取值合法。 GAUSS-03297: "time zone displacement out of range: '%s'" @@ -54,7 +54,7 @@ SQLSTATE: 22009 错误原因:time zone displacement字段的值超出范围。 -解决办法:修正输入,确保time zone displacement字段取值合法。 +解决办法:修正输入,确保 time zone displacement 字段取值合法。 GAUSS-03298: "invalid input syntax for type %s: '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-03301----GAUSS-03310.md b/content/zh/docs/Developerguide/GAUSS-03301----GAUSS-03310.md index 147b9e5ff..bc6054bb4 100644 --- a/content/zh/docs/Developerguide/GAUSS-03301----GAUSS-03310.md +++ b/content/zh/docs/Developerguide/GAUSS-03301----GAUSS-03310.md @@ -4,9 +4,9 @@ GAUSS-03301: "cannot lock cluster for backup in presence of %d uncommitted prepa SQLSTATE: 55P03 -错误原因:存在未提交的prepared transaction时无法锁定集群进行备份。 +错误原因:存在未提交的 prepared transaction 时无法锁定集群进行备份。 -解决办法:等待prepared transaction提交后,在锁定集群进行备份。 +解决办法:等待 prepared transaction 提交后,在锁定集群进行备份。 GAUSS-03302: "cannot lock cluster for backup, lock is already held" @@ -36,7 +36,7 @@ GAUSS-03306: "positions array too long" SQLSTATE: XX000 -错误原因:输入的字符串长度超过了tsvector类型允许的最大长度\( \(1<<20\) - 1\)。 +错误原因:输入的字符串长度超过了 tsvector 类型允许的最大长度\( \(1<<20\) - 1\)。 解决办法:调整输入的字符串长度。 diff --git a/content/zh/docs/Developerguide/GAUSS-03311----GAUSS-03320.md b/content/zh/docs/Developerguide/GAUSS-03311----GAUSS-03320.md index 7f36eec43..b1f24acd0 100644 --- a/content/zh/docs/Developerguide/GAUSS-03311----GAUSS-03320.md +++ b/content/zh/docs/Developerguide/GAUSS-03311----GAUSS-03320.md @@ -44,25 +44,25 @@ GAUSS-03316: "could not create locale '%s': %m" SQLSTATE: 22023 -错误原因:无法创建locale,操作系统找不到指定的locale名称。 +错误原因:无法创建 locale ,操作系统找不到指定的 locale 名称。 -解决办法:请检查创建的locale是否是操作系统支持的locale。 +解决办法:请检查创建的 locale 是否是操作系统支持的 locale 。 GAUSS-03317: "collations with different collate and ctype values are not supported on this platform" SQLSTATE: 0A000 -错误原因:当前操作系统不支持含有不同collate和ctype值的collation。 +错误原因:当前操作系统不支持含有不同 collate 和 ctype 值的 collation 。 -解决办法:collation允许指定各列数据的排序规则。创建collation时,如果设置LC\_COLLATE和LC\_CTYPE的值,则要求二者设置为相同的值。 +解决办法:collation允许指定各列数据的排序规则。创建 collation 时,如果设置LC\_COLLATE和LC\_CTYPE的值,则要求二者设置为相同的值。 GAUSS-03318: "nondefault collations are not supported on this platform" SQLSTATE: 0A000 -错误原因:非缺省的collation不支持。 +错误原因:非缺省的 collation 不支持。 -解决办法:使用平台缺省的collation。 +解决办法:使用平台缺省的 collation 。 GAUSS-03319: "wcstombs\_l is not available" diff --git a/content/zh/docs/Developerguide/GAUSS-03321----GAUSS-03330.md b/content/zh/docs/Developerguide/GAUSS-03321----GAUSS-03330.md index f18be1a09..dd75f5f9d 100644 --- a/content/zh/docs/Developerguide/GAUSS-03321----GAUSS-03330.md +++ b/content/zh/docs/Developerguide/GAUSS-03321----GAUSS-03330.md @@ -4,23 +4,23 @@ GAUSS-03321: "invalid multibyte character for locale" SQLSTATE: 22021 -错误原因:待转换的字符是一个非法的多字节字符。该字符是符合服务器locale的,但是服务器设置的LC\_CTYPE locale与数据库的字符编码不兼容。 +错误原因:待转换的字符是一个非法的多字节字符。该字符是符合服务器 locale 的,但是服务器设置的LC\_CTYPE locale与数据库的字符编码不兼容。 -解决办法:服务器设置的locale与数据库字符编码不兼容,请重新设置服务器的locale。 +解决办法:服务器设置的 locale 与数据库字符编码不兼容,请重新设置服务器的 locale 。 GAUSS-03322: "unsupported XML feature" SQLSTATE: 0A000 -错误原因:不支持XML特性。 +错误原因:不支持 XML 特性。 -解决办法:不使用XML特性相关功能。 +解决办法:不使用 XML 特性相关功能。 GAUSS-03323: "invalid XML comment" SQLSTATE: 2200S -错误原因:非法的XML注释。 +错误原因:非法的 XML 注释。 解决办法:XML注释的格式为<-- … --\>。 @@ -28,25 +28,25 @@ GAUSS-03324: "not an XML document" SQLSTATE: 2200L -错误原因:xmltotext函数中的输入的xml不是合法的XML文档。 +错误原因:xmltotext函数中的输入的 xml 不是合法的 XML 文档。 -解决办法:修改XML数据,使之变为合法的XML文档。 +解决办法:修改 XML 数据,使之变为合法的 XML 文档。 GAUSS-03325: "invalid XML processing instruction" SQLSTATE: 42601 -错误原因:XML处理指令(PI)非法,其target name不应为“xml”(不分大小写)。 +错误原因:XML处理指令(PI)非法,其 target name 不应为“xml”(不分大小写)。 -解决办法:修改XML文档中PI的target name。 +解决办法:修改 XML 文档中 PI 的 target name 。 GAUSS-03326: "invalid XML processing instruction" SQLSTATE: 42601 -错误原因:XML处理指令(PI)非法,其target name不应为“xml”(不分大小写)。 +错误原因:XML处理指令(PI)非法,其 target name 不应为“xml”(不分大小写)。 -解决办法:修改XML文档中PI的target name。 +解决办法:修改 XML 文档中 PI 的 target name 。 GAUSS-03327: "xmlvalidate is not implemented" @@ -54,13 +54,13 @@ SQLSTATE: 0A000 错误原因:XMLVALIDATE功能没有实现。 -解决办法:不使用XMLVALIDATE函数。 +解决办法:不使用 XMLVALIDATE 函数。 GAUSS-03328: "could not initialize XML library" SQLSTATE: XX000 -错误原因:系统错误,初始化XML库失败。 +错误原因:系统错误,初始化 XML 库失败。 解决办法:请联系技术支持工程师提供技术支持。 @@ -68,7 +68,7 @@ GAUSS-03329: "could not set up XML error handler" SQLSTATE: 0A000 -错误原因:系统错误,无法设置XML error handler。 +错误原因:系统错误,无法设置 XML error handler 。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-03331----GAUSS-03340.md b/content/zh/docs/Developerguide/GAUSS-03331----GAUSS-03340.md index 18e19a458..d7ed3397f 100644 --- a/content/zh/docs/Developerguide/GAUSS-03331----GAUSS-03340.md +++ b/content/zh/docs/Developerguide/GAUSS-03331----GAUSS-03340.md @@ -28,7 +28,7 @@ GAUSS-03334: "invalid array for XML namespace mapping" SQLSTATE: 22000 -错误原因:系统内部错误,XML命名空间映射的数组不合法,必须是2维数组。 +错误原因:系统内部错误, XML 命名空间映射的数组不合法,必须是 2 维数组。 解决办法:请联系技术支持工程师提供技术支持。 @@ -38,29 +38,29 @@ SQLSTATE: 22000 错误原因:Xpath表达式为空。 -解决办法:在调用XML函数时提供合法的Xpath表达式。 +解决办法:在调用 XML 函数时提供合法的 Xpath 表达式。 GAUSS-03336: "neither namespace name nor URI may be null" SQLSTATE: 22004 -错误原因:XML命名空间或其对应的URL为空。 +错误原因:XML命名空间或其对应的 URL 为空。 -解决办法:修改XML的命名空间或URL,使其非空。 +解决办法:修改 XML 的命名空间或 URL ,使其非空。 GAUSS-03338: "LIKE pattern must not end with escape character" SQLSTATE: 22025 -错误原因:Like谓词中的pattern不应以转换字符结束。 +错误原因:Like谓词中的 pattern 不应以转换字符结束。 -解决办法:修正like后面的pattern,去掉尾部的转义字符。 +解决办法:修正 like 后面的 pattern ,去掉尾部的转义字符。 GAUSS-03339: "invalid format specification for an interval value" SQLSTATE: 22007 -错误原因:在把date/time转换为char时,输入参数不能是interval类型。 +错误原因:在把date/time转换为 char 时,输入参数不能是 interval 类型。 解决办法:输入参数应使用正确的时间类型。 diff --git a/content/zh/docs/Developerguide/GAUSS-03351----GAUSS-03360.md b/content/zh/docs/Developerguide/GAUSS-03351----GAUSS-03360.md index 7ac5924e3..63dc4e9a6 100644 --- a/content/zh/docs/Developerguide/GAUSS-03351----GAUSS-03360.md +++ b/content/zh/docs/Developerguide/GAUSS-03351----GAUSS-03360.md @@ -20,9 +20,9 @@ GAUSS-03353: "invalid data for match in format string" SQLSTATE: 22007 -错误原因:数据转换为timestamp格式时,format参数值不正确,不符合timestamp格式。 +错误原因:数据转换为 timestamp 格式时, format 参数值不正确,不符合 timestamp 格式。 -解决办法:请修正转换格式format的字符串,使其能正确表示timestamp格式,重新执行。 +解决办法:请修正转换格式 format 的字符串,使其能正确表示 timestamp 格式,重新执行。 GAUSS-03354: "'%s' is not a number" @@ -36,25 +36,25 @@ GAUSS-03355: "could not determine which collation to use for lower\(\) function" SQLSTATE: 42P22 -错误原因:在调用lower函数时无法确定使用的collation。 +错误原因:在调用 lower 函数时无法确定使用的 collation 。 -解决办法:应该使用COLLATE子句显式设定collation。 +解决办法:应该使用 COLLATE 子句显式设定 collation 。 GAUSS-03356: "could not determine which collation to use for upper\(\) function" SQLSTATE: 42P22 -错误原因:在调用upper函数时无法确定使用的collation。 +错误原因:在调用 upper 函数时无法确定使用的 collation 。 -解决办法:应该使用COLLATE子句显式设定collation。 +解决办法:应该使用 COLLATE 子句显式设定 collation 。 GAUSS-03357: "could not determine which collation to use for initcap\(\) function" SQLSTATE: 42P22 -错误原因:在调用initcap函数时无法确定使用的collation。 +错误原因:在调用 initcap 函数时无法确定使用的 collation 。 -解决办法:应该使用COLLATE子句显式设定collation。 +解决办法:应该使用 COLLATE 子句显式设定 collation 。 GAUSS-03358: " RR/RRRR should be between 0 - 9999" @@ -68,9 +68,9 @@ GAUSS-03359: "invalid combination of date conventions" SQLSTATE: 22007 -错误原因:日期格式错误,不应在混合使用公历和ISO星期日期格式。 +错误原因:日期格式错误,不应在混合使用公历和 ISO 星期日期格式。 -解决办法:修正日期格式,使用公历日期或者ISO星期日期。 +解决办法:修正日期格式,使用公历日期或者 ISO 星期日期。 GAUSS-03360: "conflicting values for '%s' field in formatting string" diff --git a/content/zh/docs/Developerguide/GAUSS-03371----GAUSS-03380.md b/content/zh/docs/Developerguide/GAUSS-03371----GAUSS-03380.md index 2cecdd2bb..1defd7d4a 100644 --- a/content/zh/docs/Developerguide/GAUSS-03371----GAUSS-03380.md +++ b/content/zh/docs/Developerguide/GAUSS-03371----GAUSS-03380.md @@ -20,7 +20,7 @@ GAUSS-03373: "hour '%d' is invalid for the 12-hour clock" SQLSTATE: 22007 -错误原因:日期时间格式错误, 12小时制中的小时数不合法。 +错误原因:日期时间格式错误, 12 小时制中的小时数不合法。 解决办法:12小时制中的小时数应在1-12之间。 diff --git a/content/zh/docs/Developerguide/GAUSS-03381----GAUSS-03390.md b/content/zh/docs/Developerguide/GAUSS-03381----GAUSS-03390.md index f0f40bebe..e974a153a 100644 --- a/content/zh/docs/Developerguide/GAUSS-03381----GAUSS-03390.md +++ b/content/zh/docs/Developerguide/GAUSS-03381----GAUSS-03390.md @@ -68,7 +68,7 @@ GAUSS-03389: "ts\_rewrite query must return two tsquery columns" SQLSTATE: 22023 -错误原因:系统错误:text search重写查询必须返回两个tsquery列。 +错误原因:系统错误:text search重写查询必须返回两个 tsquery 列。 解决办法:检查函数ts\_rewrite调用时输入的查询语句,保证语句只能返回两列。 diff --git a/content/zh/docs/Developerguide/GAUSS-03391----GAUSS-03400.md b/content/zh/docs/Developerguide/GAUSS-03391----GAUSS-03400.md index be68fa316..a33014137 100644 --- a/content/zh/docs/Developerguide/GAUSS-03391----GAUSS-03400.md +++ b/content/zh/docs/Developerguide/GAUSS-03391----GAUSS-03400.md @@ -68,7 +68,7 @@ GAUSS-03400: "hash does not support mark/restore" SQLSTATE: XX000 -错误原因:哈希不支持记录或者恢复scan position。 +错误原因:哈希不支持记录或者恢复 scan position 。 解决办法:属于功能不支持,请检查使用方式。 diff --git a/content/zh/docs/Developerguide/GAUSS-03401----GAUSS-03410.md b/content/zh/docs/Developerguide/GAUSS-03401----GAUSS-03410.md index 14b69c279..98a85807b 100644 --- a/content/zh/docs/Developerguide/GAUSS-03401----GAUSS-03410.md +++ b/content/zh/docs/Developerguide/GAUSS-03401----GAUSS-03410.md @@ -4,7 +4,7 @@ GAUSS-03402: "hash\_redo: unimplemented" SQLSTATE: XX000 -错误原因:哈希索引不支持的redo。 +错误原因:哈希索引不支持的 redo 。 解决办法:属于功能不支持,请检查使用方式和场景。 @@ -14,7 +14,7 @@ SQLSTATE: 54000 错误原因:元组的大小超过一个页的大小。 -解决办法:内部错误。检查是否使用了toast。 +解决办法:内部错误。检查是否使用了 toast 。 GAUSS-03405: "failed to add index item to '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-03411----GAUSS-03420.md b/content/zh/docs/Developerguide/GAUSS-03411----GAUSS-03420.md index bb084bd8b..bc10aa41a 100644 --- a/content/zh/docs/Developerguide/GAUSS-03411----GAUSS-03420.md +++ b/content/zh/docs/Developerguide/GAUSS-03411----GAUSS-03420.md @@ -4,15 +4,15 @@ GAUSS-03411: "scan in progress on supposedly new bucket" SQLSTATE: XX000 -错误原因:在新的bucket上有scan操作。 +错误原因:在新的 bucket 上有 scan 操作。 -解决办法:等scan操作结束后,再尝试执行本操作。 +解决办法:等 scan 操作结束后,再尝试执行本操作。 GAUSS-03412: "could not get lock on supposedly new bucket" SQLSTATE: XX000 -错误原因:新bucket上的锁被占用。 +错误原因:新 bucket 上的锁被占用。 解决办法:尝试再次执行。 @@ -20,7 +20,7 @@ GAUSS-03413: "invalid overflow block number %u" SQLSTATE: XX000 -错误原因:超过hash表的内部最大页号。 +错误原因:超过 hash 表的内部最大页号。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 @@ -28,7 +28,7 @@ GAUSS-03414: "firstfreebit found no free bit" SQLSTATE: XX000 -错误原因:没有找到free bit。 +错误原因:没有找到 free bit 。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-03415: "invalid overflow bit number %u" SQLSTATE: XX000 -错误原因:超过最大bitmap页数。 +错误原因:超过最大 bitmap 页数。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-03421----GAUSS-03430.md b/content/zh/docs/Developerguide/GAUSS-03421----GAUSS-03430.md index 8f59d1234..935ff830e 100644 --- a/content/zh/docs/Developerguide/GAUSS-03421----GAUSS-03430.md +++ b/content/zh/docs/Developerguide/GAUSS-03421----GAUSS-03430.md @@ -30,7 +30,7 @@ SQLSTATE: 54000 错误原因:元组的大小超过一个页的大小。 -解决办法:内部错误,属于预防性报错。检查是否使用了toast机制。 +解决办法:内部错误,属于预防性报错。检查是否使用了 toast 机制。 GAUSS-03426: "failed to add item to index page in '%s'" @@ -44,7 +44,7 @@ GAUSS-03427: "failed to add item to index root page" SQLSTATE: XX000 -错误原因:向root页面插入元组失败。 +错误原因:向 root 页面插入元组失败。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 @@ -60,7 +60,7 @@ GAUSS-03429: "ginmerge: unimplemented" SQLSTATE: XX000 -错误原因:不支持gin索引merge。 +错误原因:不支持 gin 索引 merge 。 解决办法:属于功能不支持,请检查使用方式和场景。 @@ -70,5 +70,5 @@ SQLSTATE: XX000 错误原因:searchMode错误。 -解决办法:检查所设置的searchmode。 +解决办法:检查所设置的 searchmode 。 diff --git a/content/zh/docs/Developerguide/GAUSS-03431----GAUSS-03440.md b/content/zh/docs/Developerguide/GAUSS-03431----GAUSS-03440.md index bf676b8c0..8efb92ce4 100644 --- a/content/zh/docs/Developerguide/GAUSS-03431----GAUSS-03440.md +++ b/content/zh/docs/Developerguide/GAUSS-03431----GAUSS-03440.md @@ -4,15 +4,15 @@ GAUSS-03431: "old GIN indexes do not support whole-index scans nor searches for SQLSTATE: 0A000 -错误原因:低版本的gin索引不支持,whole-index scan或null的搜索。 +错误原因:低版本的 gin 索引不支持,whole-index scan或 null 的搜索。 -解决办法:在新版本上重新创建gin索引。 +解决办法:在新版本上重新创建 gin 索引。 GAUSS-03432: "GIN does not support mark/restore" SQLSTATE: XX000 -错误原因:Gin索引不支持记录或者恢复scan position。 +错误原因:Gin索引不支持记录或者恢复 scan position 。 解决办法:属于功能不支持,请检查使用方式。 @@ -36,7 +36,7 @@ GAUSS-03438: "ginarrayextract requires three arguments" SQLSTATE: XX000 -错误原因:该函数需要3个参数。 +错误原因:该函数需要 3 个参数。 解决办法:检查函数ginarrayextract\_2args的使用方法。 @@ -44,7 +44,7 @@ GAUSS-03439: "ginqueryarrayextract: unknown strategy number: %d" SQLSTATE: XX000 -错误原因:使用了错误的strategy。 +错误原因:使用了错误的 strategy 。 -解决办法:检查函数ginqueryarrayextract的使用方法,检查第三个参数。 +解决办法:检查函数 ginqueryarrayextract 的使用方法,检查第三个参数。 diff --git a/content/zh/docs/Developerguide/GAUSS-03441----GAUSS-03450.md b/content/zh/docs/Developerguide/GAUSS-03441----GAUSS-03450.md index e02227012..347383170 100644 --- a/content/zh/docs/Developerguide/GAUSS-03441----GAUSS-03450.md +++ b/content/zh/docs/Developerguide/GAUSS-03441----GAUSS-03450.md @@ -20,7 +20,7 @@ GAUSS-03443: "cannot do ordered scan on index '%s', because it is being reindexe SQLSTATE: XX000 -错误原因:reindex的过程中不支持order scan。 +错误原因:reindex的过程中不支持 order scan 。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 @@ -28,9 +28,9 @@ GAUSS-03444: "invalid %s regproc" SQLSTATE: XX000 -错误原因:非法的regproc。 +错误原因:非法的 regproc 。 -解决办法:内部错误,检查regproc。 +解决办法:内部错误,检查 regproc 。 GAUSS-03445: "multixact\_redo: unknown op code %u" diff --git a/content/zh/docs/Developerguide/GAUSS-03491----GAUSS-03500.md b/content/zh/docs/Developerguide/GAUSS-03491----GAUSS-03500.md index 8761a3f72..188c2505c 100644 --- a/content/zh/docs/Developerguide/GAUSS-03491----GAUSS-03500.md +++ b/content/zh/docs/Developerguide/GAUSS-03491----GAUSS-03500.md @@ -44,9 +44,9 @@ GAUSS-03498: "recovery is in progress" SQLSTATE: 55000 -错误原因:系统处于前滚阶段,不能执行WAL控制函数。 +错误原因:系统处于前滚阶段,不能执行 WAL 控制函数。 -解决办法:请等待系统启动完毕后,重新执行WAL控制函数。 +解决办法:请等待系统启动完毕后,重新执行 WAL 控制函数。 GAUSS-03500: "WAL level not sufficient for creating a restore point" diff --git a/content/zh/docs/Developerguide/GAUSS-03501----GAUSS-03510.md b/content/zh/docs/Developerguide/GAUSS-03501----GAUSS-03510.md index a22390a77..aa7e30793 100644 --- a/content/zh/docs/Developerguide/GAUSS-03501----GAUSS-03510.md +++ b/content/zh/docs/Developerguide/GAUSS-03501----GAUSS-03510.md @@ -4,7 +4,7 @@ GAUSS-03501: "value too long for restore point \(maximum %d characters\)" SQLSTATE: 22023 -错误原因:恢复点的名称长度超过了63个字节。 +错误原因:恢复点的名称长度超过了 63 个字节。 解决办法:请缩短恢复点的名称,重新创建。 diff --git a/content/zh/docs/Developerguide/GAUSS-03541----GAUSS-03550.md b/content/zh/docs/Developerguide/GAUSS-03541----GAUSS-03550.md index 81ef3c79d..a8e62ac4e 100644 --- a/content/zh/docs/Developerguide/GAUSS-03541----GAUSS-03550.md +++ b/content/zh/docs/Developerguide/GAUSS-03541----GAUSS-03550.md @@ -60,9 +60,9 @@ GAUSS-03549: "requested timeline %u is not a child of database system timeline % SQLSTATE: XX000 -错误原因:备份的WAL日志文件与数据库不匹配。 +错误原因:备份的 WAL 日志文件与数据库不匹配。 -解决办法:请确保WAL日志文件与数据库一致后,重启恢复数据库。 +解决办法:请确保 WAL 日志文件与数据库一致后,重启恢复数据库。 GAUSS-03550: "could not find redo location referenced by checkpoint record" diff --git a/content/zh/docs/Developerguide/GAUSS-03571----GAUSS-03580.md b/content/zh/docs/Developerguide/GAUSS-03571----GAUSS-03580.md index 2f1109493..567893e28 100644 --- a/content/zh/docs/Developerguide/GAUSS-03571----GAUSS-03580.md +++ b/content/zh/docs/Developerguide/GAUSS-03571----GAUSS-03580.md @@ -4,9 +4,9 @@ GAUSS-03571: "WAL level not sufficient for making an online backup" SQLSTATE: 55000 -错误原因:配置WAL级别不足。 +错误原因:配置 WAL 级别不足。 -解决办法:配置WAL级别为archive或hot\_standby,重启数据库后执行备份操作。 +解决办法:配置 WAL 级别为 archive 或hot\_standby,重启数据库后执行备份操作。 GAUSS-03572: "backup label too long \(max %d bytes\)" @@ -28,9 +28,9 @@ GAUSS-03574: "WAL generated with full\_page\_writes=off was replayed since last SQLSTATE: 55000 -错误原因:配置项full\_page\_writes为off。 +错误原因:配置项full\_page\_writes为 off 。 -解决办法:配置full\_page\_writes为on,在主机做CHECKPOINT后,再次执行备份。 +解决办法:配置full\_page\_writes为 on ,在主机做 CHECKPOINT 后,再次执行备份。 GAUSS-03575: "could not write file '%s': %m" @@ -68,9 +68,9 @@ GAUSS-03579: "WAL generated with full\_page\_writes=off was replayed during onli SQLSTATE: 55000 -错误原因:配置项full\_page\_writes为off。 +错误原因:配置项full\_page\_writes为 off 。 -解决办法:请配置full\_page\_writes为on,在主机做CHECKPOINT后,再次执行备份。 +解决办法:请配置full\_page\_writes为 on ,在主机做 CHECKPOINT 后,再次执行备份。 GAUSS-03580: "invalid record offset at %X/%X." diff --git a/content/zh/docs/Developerguide/GAUSS-03581----GAUSS-03590.md b/content/zh/docs/Developerguide/GAUSS-03581----GAUSS-03590.md index 304329292..a79ff7d2f 100644 --- a/content/zh/docs/Developerguide/GAUSS-03581----GAUSS-03590.md +++ b/content/zh/docs/Developerguide/GAUSS-03581----GAUSS-03590.md @@ -14,15 +14,15 @@ SQLSTATE: 22023 错误原因:事务标识参数太长。 -解决办法:请检查输入参数后,重新执行PREPARE TRANSACTION操作。 +解决办法:请检查输入参数后,重新执行 PREPARE TRANSACTION 操作。 GAUSS-03583: "prepared transactions are disabled" SQLSTATE: 55000 -错误原因:配置项max\_prepared\_transactions为0。 +错误原因:配置项max\_prepared\_transactions为 0 。 -解决办法:请配置max\_prepared\_transactions为非0值。 +解决办法:请配置max\_prepared\_transactions为非 0 值。 GAUSS-03584: "transaction identifier '%s' is already in use" @@ -30,7 +30,7 @@ SQLSTATE: 42710 错误原因:事务标识参数正在使用。 -解决办法:请检查输入参数,重新执行PREPARE TRANSACTION操作。 +解决办法:请检查输入参数,重新执行 PREPARE TRANSACTION 操作。 GAUSS-03585: "maximum number of prepared transactions reached" diff --git a/content/zh/docs/Developerguide/GAUSS-03601----GAUSS-03610.md b/content/zh/docs/Developerguide/GAUSS-03601----GAUSS-03610.md index a9e978d9b..1c5c08235 100644 --- a/content/zh/docs/Developerguide/GAUSS-03601----GAUSS-03610.md +++ b/content/zh/docs/Developerguide/GAUSS-03601----GAUSS-03610.md @@ -4,7 +4,7 @@ GAUSS-03603: "number of index columns \(%d\) exceeds limit \(%d\)" SQLSTATE: 54011 -错误原因:索引元组的数目超过了上限32个。 +错误原因:索引元组的数目超过了上限 32 个。 解决办法:减少需要建立行存索引的列数目。 diff --git a/content/zh/docs/Developerguide/GAUSS-03611----GAUSS-03620.md b/content/zh/docs/Developerguide/GAUSS-03611----GAUSS-03620.md index 8f7517f52..8d9c43d4c 100644 --- a/content/zh/docs/Developerguide/GAUSS-03611----GAUSS-03620.md +++ b/content/zh/docs/Developerguide/GAUSS-03611----GAUSS-03620.md @@ -30,7 +30,7 @@ SQLSTATE: 42601 错误原因:RESET不支持指定参数值。 -解决办法:请检查RESET命令,再次执行命令重置缺省值。 +解决办法:请检查 RESET 命令,再次执行命令重置缺省值。 GAUSS-03616: "unrecognized parameter namespace '%s'" @@ -62,7 +62,7 @@ SQLSTATE: XX000 错误原因:BOOL类型项数据不合法。 -解决办法:请检查BOOL类型项数据的合法性,再次执行操作。 +解决办法:请检查 BOOL 类型项数据的合法性,再次执行操作。 GAUSS-03620: "invalid value for integer option '%s': %s" @@ -70,5 +70,5 @@ SQLSTATE: XX000 错误原因:INT类型项数据不合法。 -解决办法:请检查INT类型项数据的合法性,再次执行操作。 +解决办法:请检查 INT 类型项数据的合法性,再次执行操作。 diff --git a/content/zh/docs/Developerguide/GAUSS-03621----GAUSS-03630.md b/content/zh/docs/Developerguide/GAUSS-03621----GAUSS-03630.md index bc22446a9..0383f72cf 100644 --- a/content/zh/docs/Developerguide/GAUSS-03621----GAUSS-03630.md +++ b/content/zh/docs/Developerguide/GAUSS-03621----GAUSS-03630.md @@ -14,7 +14,7 @@ SQLSTATE: XX000 错误原因:FLOAT类型项数据不合法。 -解决办法:请检查FLOAT类型项数据,再次执行操作。 +解决办法:请检查 FLOAT 类型项数据,再次执行操作。 GAUSS-03623: "unsupported reloption type %d" @@ -46,7 +46,7 @@ SQLSTATE: 22023 错误原因:ORIENTATION项的参数不合法。 -解决办法:请检查ORIENTATION项参数的合法性,再次执行操作。 +解决办法:请检查 ORIENTATION 项参数的合法性,再次执行操作。 GAUSS-03627: "Invalid string for 'COMPRESSION' option" @@ -54,13 +54,13 @@ SQLSTATE: 22023 错误原因:COMPRESSION项的参数不合法。 -解决办法:请检查COMPRESSION项参数的合法性,再次执行操作。 +解决办法:请检查 COMPRESSION 项参数的合法性,再次执行操作。 GAUSS-03628: "unrecognized StrategyNumber: %d" SQLSTATE: XX000 -错误原因:使用的strategy错误。 +错误原因:使用的 strategy 错误。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 @@ -68,7 +68,7 @@ GAUSS-03629: "missing oprcode for operator %u" SQLSTATE: XX000 -错误原因:非法的oprcode。 +错误原因:非法的 oprcode 。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 @@ -76,7 +76,7 @@ GAUSS-03630: "btree index keys must be ordered by attribute" SQLSTATE: XX000 -错误原因:索引的属性列小于1。 +错误原因:索引的属性列小于 1 。 解决办法:检查B-tree索引是否创建正确。 diff --git a/content/zh/docs/Developerguide/GAUSS-03631----GAUSS-03640.md b/content/zh/docs/Developerguide/GAUSS-03631----GAUSS-03640.md index 07ab8d255..c08192f94 100644 --- a/content/zh/docs/Developerguide/GAUSS-03631----GAUSS-03640.md +++ b/content/zh/docs/Developerguide/GAUSS-03631----GAUSS-03640.md @@ -4,9 +4,9 @@ GAUSS-03631: "multiple active vacuums for index '%s'" SQLSTATE: XX000 -错误原因:一个索引上同时有多个VACUUM操作。 +错误原因:一个索引上同时有多个 VACUUM 操作。 -解决办法:避免同时对一个b-tree索引做多个VACUUM操作。 +解决办法:避免同时对一个b-tree索引做多个 VACUUM 操作。 GAUSS-03632: "out of btvacinfo slots" @@ -14,13 +14,13 @@ SQLSTATE: XX000 错误原因:VACUUM操作数量超过最大值。 -解决办法:等其他VACUUM操作执行完成后再支持该操作。 +解决办法:等其他 VACUUM 操作执行完成后再支持该操作。 GAUSS-03633: "index '%s' is not a btree" SQLSTATE: XX002 -错误原因:该节点不是B-tree索引的root。 +错误原因:该节点不是B-tree索引的 root 。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 @@ -28,7 +28,7 @@ GAUSS-03635: "no live root page found in index '%s'" SQLSTATE: XX000 -错误原因:B-tree索引没有root节点。 +错误原因:B-tree索引没有 root 节点。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-03636: "root page %u of index '%s' has level %u, expected %u" SQLSTATE: XX000 -错误原因:索引的root页有错误的level信息。 +错误原因:索引的 root 页有错误的 level 信息。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-03671----GAUSS-03680.md b/content/zh/docs/Developerguide/GAUSS-03671----GAUSS-03680.md index 6493cfe8b..04b4a2f3d 100644 --- a/content/zh/docs/Developerguide/GAUSS-03671----GAUSS-03680.md +++ b/content/zh/docs/Developerguide/GAUSS-03671----GAUSS-03680.md @@ -68,7 +68,7 @@ GAUSS-03679: "GiST only supports forward scan direction" SQLSTATE: XX000 -错误原因:只支持forward方向。 +错误原因:只支持 forward 方向。 解决办法:内部错误。检查扫描方向,第二个参数。 diff --git a/content/zh/docs/Developerguide/GAUSS-03681----GAUSS-03690.md b/content/zh/docs/Developerguide/GAUSS-03681----GAUSS-03690.md index e78df2f4e..52f2f0541 100644 --- a/content/zh/docs/Developerguide/GAUSS-03681----GAUSS-03690.md +++ b/content/zh/docs/Developerguide/GAUSS-03681----GAUSS-03690.md @@ -4,9 +4,9 @@ GAUSS-03683: "invalid value for 'buffering' option" SQLSTATE: 22023 -错误原因:BufferingOption的选项非:on、off和auto。 +错误原因:BufferingOption的选项非:on、off和 auto 。 -解决办法:内部错误。检查BufferingOption选项。 +解决办法:内部错误。检查 BufferingOption 选项。 GAUSS-03685: "failed to re-find parent for block %u" @@ -20,7 +20,7 @@ GAUSS-03687: "gistmerge: unimplemented" SQLSTATE: XX000 -错误原因:gist不支持的merge。 +错误原因:gist不支持的 merge 。 解决办法:属于功能不支持,请检查使用方式和场景。 diff --git a/content/zh/docs/Developerguide/GAUSS-03701----GAUSS-03710.md b/content/zh/docs/Developerguide/GAUSS-03701----GAUSS-03710.md index 8f8341eb7..3b968f0a6 100644 --- a/content/zh/docs/Developerguide/GAUSS-03701----GAUSS-03710.md +++ b/content/zh/docs/Developerguide/GAUSS-03701----GAUSS-03710.md @@ -12,7 +12,7 @@ GAUSS-03702: "inconsistent tuple chain links in page %u of index '%s'" SQLSTATE: XX000 -错误原因:spgist内部tuple chain list出错。 +错误原因:spgist内部 tuple chain list 出错。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-03707: "spgmerge: unimplemented" SQLSTATE: XX000 -错误原因:SPGIN索引不支持merge操作。 +错误原因:SPGIN索引不支持 merge 操作。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-03711----GAUSS-03720.md b/content/zh/docs/Developerguide/GAUSS-03711----GAUSS-03720.md index 7e5740003..88c3ca1a1 100644 --- a/content/zh/docs/Developerguide/GAUSS-03711----GAUSS-03720.md +++ b/content/zh/docs/Developerguide/GAUSS-03711----GAUSS-03720.md @@ -28,7 +28,7 @@ GAUSS-03716: "cannot enlarge root tuple any more" SQLSTATE: XX000 -错误原因:不能扩大root tuple。 +错误原因:不能扩大 root tuple 。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-03720: "cannot add a node to an allTheSame inner tuple" SQLSTATE: XX000 -错误原因:不能将一个node添加到完全相同的内部元组上。 +错误原因:不能将一个 node 添加到完全相同的内部元组上。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-03721----GAUSS-03730.md b/content/zh/docs/Developerguide/GAUSS-03721----GAUSS-03730.md index ca5fb3f02..1ce6002b5 100644 --- a/content/zh/docs/Developerguide/GAUSS-03721----GAUSS-03730.md +++ b/content/zh/docs/Developerguide/GAUSS-03721----GAUSS-03730.md @@ -4,7 +4,7 @@ GAUSS-03721: "cannot add a node to an inner tuple without node labels" SQLSTATE: XX000 -错误原因:给内部元组增加node时,node标签不能为空。 +错误原因:给内部元组增加 node 时, node 标签不能为空。 解决办法:内部错误,属于预防性报错机制。请联系技术支持工程师提供技术支持。 @@ -20,9 +20,9 @@ GAUSS-03723: "row is too big: size %lu, maximum size %lu" SQLSTATE: 54000 -错误原因:单个元组的长度超过了规格,也无法通过TOAST技术进行存储。 +错误原因:单个元组的长度超过了规格,也无法通过 TOAST 技术进行存储。 -解决办法:可以将列数目较多的大表拆分为多个小表再进行数据存储,也可以将一些数据类型修改为字符串类型进行存储。64位xid系统改变了页面规格,如果旧表发生报错,也需要将列数目较多的大表拆分为多个小表再进行数据存储或者将一些数据类型修改为字符串类型进行存储。 +解决办法:可以将列数目较多的大表拆分为多个小表再进行数据存储,也可以将一些数据类型修改为字符串类型进行存储。 64 位 xid 系统改变了页面规格,如果旧表发生报错,也需要将列数目较多的大表拆分为多个小表再进行数据存储或者将一些数据类型修改为字符串类型进行存储。 GAUSS-03724: "failed to add tuple" diff --git a/content/zh/docs/Developerguide/GAUSS-03731----GAUSS-03740.md b/content/zh/docs/Developerguide/GAUSS-03731----GAUSS-03740.md index 215436a81..bda0540a3 100644 --- a/content/zh/docs/Developerguide/GAUSS-03731----GAUSS-03740.md +++ b/content/zh/docs/Developerguide/GAUSS-03731----GAUSS-03740.md @@ -28,17 +28,17 @@ GAUSS-03734: "unexpected chunk size %d \(expected %d\) in chunk %d of %d for toa SQLSTATE: XX014 -错误原因:toast表chunk size与预期不符。 +错误原因:toast表 chunk size 与预期不符。 -解决办法:检查toast表。 +解决办法:检查 toast 表。 GAUSS-03735: "unexpected chunk size %d \(expected %d\) in final chunk %d for toast value %u in %s when fetching slice" SQLSTATE: XX014 -错误原因: toast表chunk size与预期不符。 +错误原因: toast表 chunk size 与预期不符。 -解决办法:检查toast表。 +解决办法:检查 toast 表。 GAUSS-03736: "could not open relation with OID %u" @@ -46,7 +46,7 @@ SQLSTATE: XX000 错误原因:Relation OID非法。 -解决办法:查询pg\_class检查表名与OID。 +解决办法:查询pg\_class检查表名与 OID 。 GAUSS-03737: "block number %u is out of range for relation '%s'" @@ -60,7 +60,7 @@ GAUSS-03738: "attempted to delete invisible tuple" SQLSTATE: XX000 -错误原因: 尝试删除不可见的tuple。 +错误原因: 尝试删除不可见的 tuple 。 解决办法:检查操作的表是否有并发操作。 diff --git a/content/zh/docs/Developerguide/GAUSS-03741----GAUSS-03750.md b/content/zh/docs/Developerguide/GAUSS-03741----GAUSS-03750.md index 908657c44..487638cbe 100644 --- a/content/zh/docs/Developerguide/GAUSS-03741----GAUSS-03750.md +++ b/content/zh/docs/Developerguide/GAUSS-03741----GAUSS-03750.md @@ -4,7 +4,7 @@ GAUSS-03741: "attempted to update invisible tuple" SQLSTATE: XX000 -错误原因:尝试更新的tuple不可见。 +错误原因:尝试更新的 tuple 不可见。 解决办法:检查操作的表是否有并发操作。 @@ -12,7 +12,7 @@ GAUSS-03742: "attempted to lock invisible tuple" SQLSTATE: XX000 -错误原因:尝试加锁的tuple不可见。 +错误原因:尝试加锁的 tuple 不可见。 解决办法:检查操作的表是否有并发操作。 @@ -28,7 +28,7 @@ GAUSS-03744: "heap\_inplace\_update: invalid lp" SQLSTATE: XX000 -错误原因:更新操作的tuple指针非法。 +错误原因:更新操作的 tuple 指针非法。 解决办法:请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-03745: "heap\_inplace\_update: wrong tuple length" SQLSTATE: XX000 -错误原因:更新操作的tuple长度非法。 +错误原因:更新操作的 tuple 长度非法。 解决办法:请联系技术支持工程师提供技术支持。 @@ -44,9 +44,9 @@ GAUSS-03746: "heap\_delete\_redo: invalid lp" SQLSTATE: XX000 -错误原因:redo delete时tuple指针非法。 +错误原因:redo delete时 tuple 指针非法。 -解决办法:检查Xlog是否正确。 +解决办法:检查 Xlog 是否正确。 GAUSS-03747: "heap\_insert\_redo: invalid max offset number" @@ -54,15 +54,15 @@ SQLSTATE: XX000 错误原因:redo insert时页面偏移量非法。 -解决办法:检查Xlog是否正确。 +解决办法:检查 Xlog 是否正确。 GAUSS-03748: "heap\_insert\_redo: failed to add tuple" SQLSTATE: XX000 -错误原因:redo insert 添加tuple失败。 +错误原因:redo insert 添加 tuple 失败。 -解决办法:检查Xlog是否正确。 +解决办法:检查 Xlog 是否正确。 GAUSS-03749: "heap\_multi\_insert\_redo: invalid max offset number" @@ -70,13 +70,13 @@ SQLSTATE: XX000 错误原因:redo multi insert时页面偏移量非法。 -解决办法:检查Xlog是否正确。 +解决办法:检查 Xlog 是否正确。 GAUSS-03750: "heap\_multi\_insert\_redo: failed to add tuple" SQLSTATE: XX000 -错误原因:redo multi insert 添加tuple失败。 +错误原因:redo multi insert 添加 tuple 失败。 -解决办法:检查Xlog是否正确。 +解决办法:检查 Xlog 是否正确。 diff --git a/content/zh/docs/Developerguide/GAUSS-03751----GAUSS-03760.md b/content/zh/docs/Developerguide/GAUSS-03751----GAUSS-03760.md index 18c40ab5f..33caf50db 100644 --- a/content/zh/docs/Developerguide/GAUSS-03751----GAUSS-03760.md +++ b/content/zh/docs/Developerguide/GAUSS-03751----GAUSS-03760.md @@ -6,7 +6,7 @@ SQLSTATE: XX000 错误原因:redo update tuple指针非法。 -解决办法:检查Xlog是否正确。 +解决办法:检查 Xlog 是否正确。 GAUSS-03752: "heap\_update\_redo: invalid max offset number" @@ -14,15 +14,15 @@ SQLSTATE: XX000 错误原因:redo update tuple页面偏移量非法。 -解决办法:检查Xlog是否正确。 +解决办法:检查 Xlog 是否正确。 GAUSS-03753: "heap\_update\_redo: failed to add tuple" SQLSTATE: XX000 -错误原因:redo update添加tuple失败。 +错误原因:redo update添加 tuple 失败。 -解决办法:检查Xlog是否正确。 +解决办法:检查 Xlog 是否正确。 GAUSS-03754: "heap\_lock\_redo: invalid lp" @@ -30,7 +30,7 @@ SQLSTATE: XX000 错误原因:redo lock tuple指针非法。 -解决办法:检查Xlog是否正确。 +解决办法:检查 Xlog 是否正确。 GAUSS-03755: "heap\_inplace\_redo: invalid lp" @@ -38,7 +38,7 @@ SQLSTATE: XX000 错误原因:redo inplace tuple指针非法。 -解决办法:检查Xlog是否正确。 +解决办法:检查 Xlog 是否正确。 GAUSS-03756: "heap\_inplace\_redo: wrong tuple length" @@ -46,13 +46,13 @@ SQLSTATE: XX000 错误原因:redo inplace tuple长度非法。 -解决办法:检查Xlog是否正确。 +解决办法:检查 Xlog 是否正确。 GAUSS-03759: "relation '%s' is not table or index" SQLSTATE: XX000 -错误原因:操作的relation不是表或索引。 +错误原因:操作的 relation 不是表或索引。 -解决办法:检查SQL操作的对象是否是表或索引。 +解决办法:检查 SQL 操作的对象是否是表或索引。 diff --git a/content/zh/docs/Developerguide/GAUSS-03761----GAUSS-03770.md b/content/zh/docs/Developerguide/GAUSS-03761----GAUSS-03770.md index 7d9571552..77e746952 100644 --- a/content/zh/docs/Developerguide/GAUSS-03761----GAUSS-03770.md +++ b/content/zh/docs/Developerguide/GAUSS-03761----GAUSS-03770.md @@ -6,7 +6,7 @@ SQLSTATE: XX000 错误原因:操作的分区不是表或索引。 -解决办法:检查SQL操作的对象是否是表或索引。 +解决办法:检查 SQL 操作的对象是否是表或索引。 GAUSS-03762: "closing partition %u, but relation %u is neither table nor index" @@ -14,13 +14,13 @@ SQLSTATE: 2200X 错误原因:关闭的分区不是表或索引。 -解决办法:检查SQL操作的对象是否是表或索引。 +解决办法:检查 SQL 操作的对象是否是表或索引。 GAUSS-03763: "failed to add tuple to page" SQLSTATE: XX000 -错误原因:页面添加tuple失败。 +错误原因:页面添加 tuple 失败。 解决办法:请联系技术支持工程师提供技术支持。 @@ -44,7 +44,7 @@ GAUSS-03767: "This query is not supported by optimizer in CStore" SQLSTATE: XX000 -错误原因:列存查询在CN上执行。 +错误原因:列存查询在 CN 上执行。 -解决办法:检查执行计划是否在CN上查询了列存表。 +解决办法:检查执行计划是否在 CN 上查询了列存表。 diff --git a/content/zh/docs/Developerguide/GAUSS-03781----GAUSS-03790.md b/content/zh/docs/Developerguide/GAUSS-03781----GAUSS-03790.md index da7879d53..ab64f4228 100644 --- a/content/zh/docs/Developerguide/GAUSS-03781----GAUSS-03790.md +++ b/content/zh/docs/Developerguide/GAUSS-03781----GAUSS-03790.md @@ -4,7 +4,7 @@ GAUSS-03781: "CStore: unrecognized heap\_update status: %u" SQLSTATE: XX000 -错误原因:CUDesc表Tuple更新状态不能识别。 +错误原因:CUDesc表 Tuple 更新状态不能识别。 解决办法:请联系技术支持工程师提供技术支持。 @@ -12,17 +12,17 @@ GAUSS-03785: "WITH query name '%s' appears in both a rule action and the query b SQLSTATE: 0A000 -错误原因:WITH语句的名称在规则action和重写语句中同时出现。 +错误原因:WITH语句的名称在规则 action 和重写语句中同时出现。 -解决办法:请检查规则action和重写语句,避免相同名称的WITH语句。 +解决办法:请检查规则 action 和重写语句,避免相同名称的 WITH 语句。 GAUSS-03786: "cannot have RETURNING lists in multiple rules" SQLSTATE: 0A000 -错误原因:多条规则含有RETURNING列表。 +错误原因:多条规则含有 RETURNING 列表。 -解决办法:修正规则的语法,消除不当的RETURNING列表。 +解决办法:修正规则的语法,消除不当的 RETURNING 列表。 GAUSS-03787: "bogus resno %d in targetlist" @@ -36,9 +36,9 @@ GAUSS-03788: "multiple assignments to same column '%s'" SQLSTATE: 42601 -错误原因:语法错误,对同一列多次赋值 (除非所有赋值都是FieldStore或ArrayRef赋值操作)。 +错误原因:语法错误,对同一列多次赋值 (除非所有赋值都是 FieldStore 或 ArrayRef 赋值操作)。 -解决办法:修正UPDATE语句的语法,避免对同一列进行多次赋值。 +解决办法:修正 UPDATE 语句的语法,避免对同一列进行多次赋值。 GAUSS-03789: "cannot happen" diff --git a/content/zh/docs/Developerguide/GAUSS-03791----GAUSS-03800.md b/content/zh/docs/Developerguide/GAUSS-03791----GAUSS-03800.md index 2072c9518..b510a9332 100644 --- a/content/zh/docs/Developerguide/GAUSS-03791----GAUSS-03800.md +++ b/content/zh/docs/Developerguide/GAUSS-03791----GAUSS-03800.md @@ -20,47 +20,47 @@ GAUSS-03794: "infinite recursion detected in rules for relation '%s'" SQLSTATE: 42P17 -错误原因:在rules中出现无穷嵌套。 +错误原因:在 rules 中出现无穷嵌套。 -解决办法:检查rule用法。 +解决办法:检查 rule 用法。 GAUSS-03795: "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH" SQLSTATE: 0A000 -错误原因:data-modifying子句不支持DO INSTEAD NOTHING rules。 +错误原因:data-modifying子句不支持 DO INSTEAD NOTHING rules 。 -解决办法:检查rule用法。 +解决办法:检查 rule 用法。 GAUSS-03796: "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH" SQLSTATE: 0A000 -错误原因:data-modifying子句不支持conditional DO INSTEAD NO rules。 +错误原因:data-modifying子句不支持 conditional DO INSTEAD NO rules 。 -解决办法:检查rule用法。 +解决办法:检查 rule 用法。 GAUSS-03797: "DO ALSO rules are not supported for data-modifying statements in WITH" SQLSTATE: 0A000 -错误原因:data-modifying子句不支持DO ALSO rules。 +错误原因:data-modifying子句不支持 DO ALSO rules 。 -解决办法:检查rule用法。 +解决办法:检查 rule 用法。 GAUSS-03799: "cannot perform INSERT RETURNING on relation '%s'" SQLSTATE: 0A000 -错误原因:INSTEAD rule中没有带returning,而原语句带returning,不能对表执行insert returning,出错。 +错误原因:INSTEAD rule中没有带 returning ,而原语句带 returning ,不能对表执行 insert returning ,出错。 -解决办法:需要使用带有returning子句的无条件的ON INSERT DO INSTEAD rule。 +解决办法:需要使用带有 returning 子句的无条件的 ON INSERT DO INSTEAD rule 。 GAUSS-03800: "cannot perform UPDATE RETURNING on relation '%s'" SQLSTATE: 0A000 -错误原因:INSTEAD rule中没有带returning,而原语句带returning,不能对表执行update returning,出错。 +错误原因:INSTEAD rule中没有带 returning ,而原语句带 returning ,不能对表执行 update returning ,出错。 -解决办法:需要使用带有returning子句的无条件的ON UPDATE DO INSTEAD rule。 +解决办法:需要使用带有 returning 子句的无条件的 ON UPDATE DO INSTEAD rule 。 diff --git a/content/zh/docs/Developerguide/GAUSS-03801----GAUSS-03810.md b/content/zh/docs/Developerguide/GAUSS-03801----GAUSS-03810.md index 89660ce26..5a5c3e5ba 100644 --- a/content/zh/docs/Developerguide/GAUSS-03801----GAUSS-03810.md +++ b/content/zh/docs/Developerguide/GAUSS-03801----GAUSS-03810.md @@ -4,17 +4,17 @@ GAUSS-03801: "cannot perform DELETE RETURNING on relation '%s'" SQLSTATE: 0A000 -错误原因:INSTEAD rule中没有带returning,而原语句带returning,不能对表执行delete returning。 +错误原因:INSTEAD rule中没有带 returning ,而原语句带 returning ,不能对表执行 delete returning 。 -解决办法:需要使用带有returning子句的无条件的ON DELETE DO INSTEAD rule。 +解决办法:需要使用带有 returning 子句的无条件的 ON DELETE DO INSTEAD rule 。 GAUSS-03802: "WITH cannot be used in a query that is rewritten by rules into multiple queries" SQLSTATE: 0A000 -错误原因:多query中使用了WITH。 +错误原因:多 query 中使用了 WITH 。 -解决办法:检查rule用法。 +解决办法:检查 rule 用法。 GAUSS-03803: "Unexpected commandType or intoClause is not set properly" @@ -52,7 +52,7 @@ GAUSS-03807: "conditional utility statements are not implemented" SQLSTATE: 0A000 -错误原因:使用了conditional utility子句。 +错误原因:使用了 conditional utility 子句。 解决办法:未实现该功能,检查保证不传入该类型子句。 @@ -68,7 +68,7 @@ GAUSS-03809: "WHERE CURRENT OF on a view is not implemented" SQLSTATE: 0A000 -错误原因:在视图上使用了WHERE CURRENT OF子句。 +错误原因:在视图上使用了 WHERE CURRENT OF 子句。 解决办法:未实现该功能,检查保证不传入该类型子句。 diff --git a/content/zh/docs/Developerguide/GAUSS-03811----GAUSS-03820.md b/content/zh/docs/Developerguide/GAUSS-03811----GAUSS-03820.md index 6b0619ca6..a782f222a 100644 --- a/content/zh/docs/Developerguide/GAUSS-03811----GAUSS-03820.md +++ b/content/zh/docs/Developerguide/GAUSS-03811----GAUSS-03820.md @@ -4,33 +4,33 @@ GAUSS-03811: "rule '%s' for relation '%s' already exists" SQLSTATE: 42710 -错误原因:试图插入某表已经存在的rule。 +错误原因:试图插入某表已经存在的 rule 。 -解决办法:检查表的rule,若已经存在,则不再插入。 +解决办法:检查表的 rule ,若已经存在,则不再插入。 GAUSS-03812: "rule actions on OLD are not implemented" SQLSTATE: 0A000 -错误原因:对于OLD值的规则行为未实现。 +错误原因:对于 OLD 值的规则行为未实现。 -解决办法:使用view或trigger进行规避。 +解决办法:使用 view 或 trigger 进行规避。 GAUSS-03813: "rule actions on NEW are not implemented" SQLSTATE: 0A000 -错误原因:对于NEW值的规则行为未实现。 +错误原因:对于 NEW 值的规则行为未实现。 -解决办法:使用trigger进行规避。 +解决办法:使用 trigger 进行规避。 GAUSS-03814: "INSTEAD NOTHING rules on SELECT are not implemented" SQLSTATE: 0A000 -错误原因:试图使用INSTEAD NOTHING rule ON SELECT,不支持。 +错误原因:试图使用 INSTEAD NOTHING rule ON SELECT ,不支持。 -解决办法:检查rule用法。 +解决办法:检查 rule 用法。 GAUSS-03815: "multiple actions for rules on SELECT are not implemented" @@ -44,7 +44,7 @@ GAUSS-03816: "rules on SELECT must have action INSTEAD SELECT" SQLSTATE: 0A000 -错误原因:对应的规则行为必须是INSTEAD SELECT。 +错误原因:对应的规则行为必须是 INSTEAD SELECT 。 解决办法:请检查定义的规则行为是否正确。 @@ -52,7 +52,7 @@ GAUSS-03817: "rules on SELECT must not contain data-modifying statements in WITH SQLSTATE: 0A000 -错误原因:对应的规则行为在WITH语句中不能包含数据改动的操作。 +错误原因:对应的规则行为在 WITH 语句中不能包含数据改动的操作。 解决办法:请检查定义的规则行为是否正确。 @@ -68,7 +68,7 @@ GAUSS-03819: "'%s' is already a view" SQLSTATE: 55000 -错误原因:对于view,仅能有一个ON SELECT规则行为。 +错误原因:对于 view ,仅能有一个 ON SELECT 规则行为。 解决办法:请检查定义的规则行为是否正确。 diff --git a/content/zh/docs/Developerguide/GAUSS-03821----GAUSS-03830.md b/content/zh/docs/Developerguide/GAUSS-03821----GAUSS-03830.md index 0f549a693..f512e10a1 100644 --- a/content/zh/docs/Developerguide/GAUSS-03821----GAUSS-03830.md +++ b/content/zh/docs/Developerguide/GAUSS-03821----GAUSS-03830.md @@ -44,31 +44,31 @@ GAUSS-03826: "cannot have multiple RETURNING lists in a rule" SQLSTATE: 0A000 -错误原因:在一个rule中写了多个returning lists。 +错误原因:在一个 rule 中写了多个 returning lists 。 -解决办法:检查returning lists个数。 +解决办法:检查 returning lists 个数。 GAUSS-03827: "RETURNING lists are not supported in conditional rules" SQLSTATE: 0A000 -错误原因:在conditional rules里头使用了returning lists。 +错误原因:在 conditional rules 里头使用了 returning lists 。 -解决办法:不支持,考虑去掉returning lists。 +解决办法:不支持,考虑去掉 returning lists 。 GAUSS-03828: "RETURNING lists are not supported in non-INSTEAD rules" SQLSTATE: 0A000 -错误原因:在non-INSTEAD rules使用了returning lists。 +错误原因:在non-INSTEAD rules使用了 returning lists 。 -解决办法:不支持,考虑去掉returning lists。 +解决办法:不支持,考虑去掉 returning lists 。 GAUSS-03829: "SELECT rule's target list has too many entries" SQLSTATE: 42P17 -错误原因:在SELECT rules目标列表有太多输入,输入的比要求的列数多。 +错误原因:在 SELECT rules 目标列表有太多输入,输入的比要求的列数多。 解决办法:检查输入的列数,去掉多余的列。 diff --git a/content/zh/docs/Developerguide/GAUSS-03831----GAUSS-03840.md b/content/zh/docs/Developerguide/GAUSS-03831----GAUSS-03840.md index e380b324e..b4473165e 100644 --- a/content/zh/docs/Developerguide/GAUSS-03831----GAUSS-03840.md +++ b/content/zh/docs/Developerguide/GAUSS-03831----GAUSS-03840.md @@ -6,7 +6,7 @@ SQLSTATE: 42P17 错误原因:SELECT rule中列名不同。 -解决办法:检查SELECT rule目标输入中的列名。 +解决办法:检查 SELECT rule 目标输入中的列名。 GAUSS-03832: "SELECT rule's target entry %d has different type from column '%s'" @@ -14,7 +14,7 @@ SQLSTATE: 42P17 错误原因:SELECT rule中列类型不同。 -解决办法:检查SELECT rule目标输入中的列类型。 +解决办法:检查 SELECT rule 目标输入中的列类型。 GAUSS-03833: "SELECT rule's target entry %d has different size from column '%s'" @@ -22,7 +22,7 @@ SQLSTATE: 42P17 错误原因:SELECT rule中列大小不同。 -解决办法:检查SELECT rule目标输入中的列大小。 +解决办法:检查 SELECT rule 目标输入中的列大小。 GAUSS-03834: "SELECT rule's target list has too few entries" @@ -30,31 +30,31 @@ SQLSTATE: 42P17 错误原因:SELECT rule中输入列个数太少。 -解决办法:检查SELECT rule中输入列的数目。 +解决办法:检查 SELECT rule 中输入列的数目。 GAUSS-03835: "rule '%s' for relation '%s' does not exist" SQLSTATE: 42704 -错误原因:试图disable或enable rule,但是对应的表没有所要处理的rule。 +错误原因:试图 disable 或 enable rule ,但是对应的表没有所要处理的 rule 。 -解决办法:检查表的rule。 +解决办法:检查表的 rule 。 GAUSS-03836: "rule '%s' does not exist" SQLSTATE: 42704 -错误原因:试图获取对应表的某个rule,但是不存在。 +错误原因:试图获取对应表的某个 rule ,但是不存在。 -解决办法:检查表的rule。 +解决办法:检查表的 rule 。 GAUSS-03837: "there are multiple rules named '%s'" SQLSTATE: 42710 -错误原因:试图获取对应表的某个rule,但是出现多个同名的rule。 +错误原因:试图获取对应表的某个 rule ,但是出现多个同名的 rule 。 -解决办法:检查表的rule。 +解决办法:检查表的 rule 。 GAUSS-03838: "Column store don't support this system column" diff --git a/content/zh/docs/Developerguide/GAUSS-03841----GAUSS-03850.md b/content/zh/docs/Developerguide/GAUSS-03841----GAUSS-03850.md index 860c8550c..331940620 100644 --- a/content/zh/docs/Developerguide/GAUSS-03841----GAUSS-03850.md +++ b/content/zh/docs/Developerguide/GAUSS-03841----GAUSS-03850.md @@ -4,7 +4,7 @@ GAUSS-03841: "vector scan for VecMarkPos is not yet implemented " SQLSTATE: XX000 -错误原因:系统内部错误:未实现针对列存扫描节点的MarkPos功能。 +错误原因:系统内部错误:未实现针对列存扫描节点的 MarkPos 功能。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -12,7 +12,7 @@ GAUSS-03842: "VecResult for VecMarkPos is not yet implemented " SQLSTATE: XX000 -错误原因:系统内部错误:未实现针对列存result节点的MarkPos功能。 +错误原因:系统内部错误:未实现针对列存 result 节点的 MarkPos 功能。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -20,7 +20,7 @@ GAUSS-03844: "vector scan for VecRestrPos is not yet implemented " SQLSTATE: XX000 -错误原因:系统内部错误:未实现针对列存扫描节点的RestrPos功能。 +错误原因:系统内部错误:未实现针对列存扫描节点的 RestrPos 功能。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -28,7 +28,7 @@ GAUSS-03845: "VecResult for VecRestrPos is not yet implemented " SQLSTATE: XX000 -错误原因:系统内部错误:未实现针对列存result节点的RestrPos功能。 +错误原因:系统内部错误:未实现针对列存 result 节点的 RestrPos 功能。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -44,7 +44,7 @@ GAUSS-03849: "could not find tuple for operator %u" SQLSTATE: XX000 -错误原因:依据ID编号无法从系统表pg\_operator中获取对应的信息 +错误原因:依据 ID 编号无法从系统表pg\_operator中获取对应的信息 解决办法:请查询pg\_operator系统表进行确认。 diff --git a/content/zh/docs/Developerguide/GAUSS-03851----GAUSS-03860.md b/content/zh/docs/Developerguide/GAUSS-03851----GAUSS-03860.md index db5fb7ef2..25a8ca247 100644 --- a/content/zh/docs/Developerguide/GAUSS-03851----GAUSS-03860.md +++ b/content/zh/docs/Developerguide/GAUSS-03851----GAUSS-03860.md @@ -20,7 +20,7 @@ GAUSS-03854: "VecRemoteQuery ReScan is not yet implemented" SQLSTATE: 0A000 -错误原因:不支持VecRemoteQuery二次扫描。 +错误原因:不支持 VecRemoteQuery 二次扫描。 解决办法:检查扫描语句。 @@ -30,13 +30,13 @@ SQLSTATE: XX000 错误原因:不支持的用法。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-03860: "Un-support CHECK constraint" SQLSTATE: XX000 -错误原因:列存暂不支持CHECK约束。 +错误原因:列存暂不支持 CHECK 约束。 -解决办法:检查语法,去掉check约束。 +解决办法:检查语法,去掉 check 约束。 diff --git a/content/zh/docs/Developerguide/GAUSS-03861----GAUSS-03870.md b/content/zh/docs/Developerguide/GAUSS-03861----GAUSS-03870.md index 7b581d774..b186638ca 100644 --- a/content/zh/docs/Developerguide/GAUSS-03861----GAUSS-03870.md +++ b/content/zh/docs/Developerguide/GAUSS-03861----GAUSS-03870.md @@ -36,7 +36,7 @@ GAUSS-03867: "could not write to hashAgg temporary file: %m" SQLSTATE: XX000 -错误原因:写hashAgg临时文件出错。 +错误原因:写 hashAgg 临时文件出错。 解决办法:检查文件权限、用户权限等。 @@ -44,7 +44,7 @@ GAUSS-03868: "could not read from hashAgg temporary file: %m" SQLSTATE: XX000 -错误原因:读取hashAgg临时文件出错。 +错误原因:读取 hashAgg 临时文件出错。 解决办法:检查文件权限、用户权限等。 @@ -60,7 +60,7 @@ GAUSS-03870: "Unsupported array reference expression in vector engine" SQLSTATE: XX000 -错误原因:系统内部错误:未实现Array reference表达式的向量化。 +错误原因:系统内部错误:未实现 Array reference 表达式的向量化。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-03871----GAUSS-03880.md b/content/zh/docs/Developerguide/GAUSS-03871----GAUSS-03880.md index 02cee3d10..9ee831834 100644 --- a/content/zh/docs/Developerguide/GAUSS-03871----GAUSS-03880.md +++ b/content/zh/docs/Developerguide/GAUSS-03871----GAUSS-03880.md @@ -4,7 +4,7 @@ GAUSS-03873: "Unsupported field expression in vector engine" SQLSTATE: XX000 -错误原因:系统内部错误:未实现FieldSelect表达式函数的向量化 +错误原因:系统内部错误:未实现 FieldSelect 表达式函数的向量化 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -12,7 +12,7 @@ GAUSS-03874: "Unsupported field store expression in vector engine" SQLSTATE: XX000 -错误原因:系统内部错误:未实现Field Store表达式函数的向量化 +错误原因:系统内部错误:未实现 Field Store 表达式函数的向量化 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -20,7 +20,7 @@ GAUSS-03875: "Unsupported convert row type expression in vector engine" SQLSTATE: XX000 -错误原因:系统内部错误:未实现ConvertRowType表达式函数的向量化。 +错误原因:系统内部错误:未实现 ConvertRowType 表达式函数的向量化。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-03877: "Unsupported xml expression in vector engine" SQLSTATE: XX000 -错误原因:系统内部错误:未实现XML表达式函数的向量化。 +错误原因:系统内部错误:未实现 XML 表达式函数的向量化。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -44,7 +44,7 @@ GAUSS-03878: "Unsupported coerce to domain expression in vector engine" SQLSTATE: XX000 -错误原因:系统内部错误:未实现CoerceToDomain表达式函数的向量化。 +错误原因:系统内部错误:未实现 CoerceToDomain 表达式函数的向量化。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-03879: "Unsupported coerce to domain value expression in vector engine" SQLSTATE: XX000 -错误原因:系统内部错误:未实现CoerceToDomainValue表达式函数的向量化。 +错误原因:系统内部错误:未实现 CoerceToDomainValue 表达式函数的向量化。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -60,7 +60,7 @@ GAUSS-03880: "Unsupported current of expression in vector engine" SQLSTATE: XX000 -错误原因:系统内部错误:未实现CurrentOf表达式函数的向量化。 +错误原因:系统内部错误:未实现 CurrentOf 表达式函数的向量化。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-03881----GAUSS-03890.md b/content/zh/docs/Developerguide/GAUSS-03881----GAUSS-03890.md index 9c33d5877..0a7c02282 100644 --- a/content/zh/docs/Developerguide/GAUSS-03881----GAUSS-03890.md +++ b/content/zh/docs/Developerguide/GAUSS-03881----GAUSS-03890.md @@ -4,7 +4,7 @@ GAUSS-03882: "Unsupported array coerce expression in vector engine" SQLSTATE: XX000 -错误原因:系统内部错误:未实现ArrayCoerce表达式函数的向量化。 +错误原因:系统内部错误:未实现 ArrayCoerce 表达式函数的向量化。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-03931----GAUSS-03940.md b/content/zh/docs/Developerguide/GAUSS-03931----GAUSS-03940.md index 651e5b0e3..7b8fd291f 100644 --- a/content/zh/docs/Developerguide/GAUSS-03931----GAUSS-03940.md +++ b/content/zh/docs/Developerguide/GAUSS-03931----GAUSS-03940.md @@ -4,7 +4,7 @@ GAUSS-03935: "user mapping not found for '%s'" SQLSTATE: 42704 -错误原因:初始化Foreign data wrapper出现问题。 +错误原因:初始化 Foreign data wrapper 出现问题。 解决办法:请检查使用中的gds、hdfs外表以及roach、obs设置是否正确。若不正确,请联系技术支持工程师提供技术支持。 @@ -12,7 +12,7 @@ GAUSS-03936: "foreign-data wrapper handler function %u did not return an FdwRout SQLSTATE: XX000 -错误原因:初始化Foreign data wrapper出现问题。 +错误原因:初始化 Foreign data wrapper 出现问题。 解决办法:请检查使用中的gds、hdfs外表以及roach、obs设置是否正确。若不正确,请联系技术支持工程师提供技术支持。 @@ -20,7 +20,7 @@ GAUSS-03937: "foreign-data wrapper '%s' has no handler" SQLSTATE: 55000 -错误原因:初始化Foreign data wrapper出现问题。 +错误原因:初始化 Foreign data wrapper 出现问题。 解决办法:请检查使用中的gds、hdfs外表以及roach、obs设置是否正确。若否,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-03971----GAUSS-03980.md b/content/zh/docs/Developerguide/GAUSS-03971----GAUSS-03980.md index f76fb13a1..841414035 100644 --- a/content/zh/docs/Developerguide/GAUSS-03971----GAUSS-03980.md +++ b/content/zh/docs/Developerguide/GAUSS-03971----GAUSS-03980.md @@ -28,7 +28,7 @@ GAUSS-03977: "multiple Accept parameters" SQLSTATE: 22023 -错误原因:输入了多个Accept参数。 +错误原因:输入了多个 Accept 参数。 解决办法:检查参数。 @@ -36,7 +36,7 @@ GAUSS-03978: "unrecognized simple dictionary parameter: '%s'" SQLSTATE: 22023 -错误原因:输入了错误的dictionary参数。 +错误原因:输入了错误的 dictionary 参数。 解决办法:检查参数。 @@ -52,7 +52,7 @@ GAUSS-03980: "unrecognized headline parameter: '%s'" SQLSTATE: 22023 -错误原因:对于HighlightAll命令输入了错误的参数。 +错误原因:对于 HighlightAll 命令输入了错误的参数。 -解决办法:对于HighlightAll参数只能是1、on、true、t、y和yes。 +解决办法:对于 HighlightAll 参数只能是1、on、true、t、y和 yes 。 diff --git a/content/zh/docs/Developerguide/GAUSS-03981----GAUSS-03990.md b/content/zh/docs/Developerguide/GAUSS-03981----GAUSS-03990.md index 5426655fd..0fa72b185 100644 --- a/content/zh/docs/Developerguide/GAUSS-03981----GAUSS-03990.md +++ b/content/zh/docs/Developerguide/GAUSS-03981----GAUSS-03990.md @@ -12,7 +12,7 @@ GAUSS-03982: "MinWords should be positive" SQLSTATE: 22023 -错误原因:输入的min\_words小于0。 +错误原因:输入的min\_words小于 0 。 解决办法:调整min\_words为正数。 @@ -20,17 +20,17 @@ GAUSS-03983: "ShortWord should be \>= 0" SQLSTATE: 22023 -错误原因:输入的ShortWord小于0。 +错误原因:输入的 ShortWord 小于 0 。 -解决办法:调整ShortWord大于等于0。 +解决办法:调整 ShortWord 大于等于 0 。 GAUSS-03984: "MaxFragments should be \>= 0" SQLSTATE: 22023 -错误原因:输入的MaxFragments小于0。 +错误原因:输入的 MaxFragments 小于 0 。 -解决办法:调整MaxFragments大于等于0。 +解决办法:调整 MaxFragments 大于等于 0 。 GAUSS-03985: "Invalid formatter options '%s'" @@ -62,7 +62,7 @@ SQLSTATE: XX000 错误原因:不可识别的模式。 -解决办法:请使用normal,shared,private模式,再次执行操作。 +解决办法:请使用 normal , shared , private 模式,再次执行操作。 GAUSS-03989: "LOAD format '%s' not recognized" @@ -70,5 +70,5 @@ SQLSTATE: 22023 错误原因:不可识别的模式。 -解决办法:请使用text,csv,fixed模式,再次执行操作。 +解决办法:请使用 text , csv , fixed 模式,再次执行操作。 diff --git a/content/zh/docs/Developerguide/GAUSS-04001----GAUSS-04010.md b/content/zh/docs/Developerguide/GAUSS-04001----GAUSS-04010.md index 92b846811..cc94d47d6 100644 --- a/content/zh/docs/Developerguide/GAUSS-04001----GAUSS-04010.md +++ b/content/zh/docs/Developerguide/GAUSS-04001----GAUSS-04010.md @@ -12,9 +12,9 @@ GAUSS-04002: "SHARED mode can only be used with TEXT format" SQLSTATE: XX000 -错误原因:用户尝试在使用shared模式的GDS外表时使用TEXT以外的格式。 +错误原因:用户尝试在使用 shared 模式的 GDS 外表时使用 TEXT 以外的格式。 -解决办法:报错对应的GDS外表仅能够读取TEXT格式文件流,请在导入规格中做对应修改。 +解决办法:报错对应的 GDS 外表仅能够读取 TEXT 格式文件流,请在导入规格中做对应修改。 GAUSS-04003: "can't find error record table '%s'" @@ -60,7 +60,7 @@ GAUSS-04009: "only both text && csv formats are supported for foreign table" SQLSTATE: 0A000 -错误原因:外表仅支持text和csv格式数据。 +错误原因:外表仅支持 text 和 csv 格式数据。 解决办法:检查外表数据格式,再次执行操作。 diff --git a/content/zh/docs/Developerguide/GAUSS-04011----GAUSS-04020.md b/content/zh/docs/Developerguide/GAUSS-04011----GAUSS-04020.md index e639285bf..a5e7c6448 100644 --- a/content/zh/docs/Developerguide/GAUSS-04011----GAUSS-04020.md +++ b/content/zh/docs/Developerguide/GAUSS-04011----GAUSS-04020.md @@ -52,9 +52,9 @@ GAUSS-04018: "could not translate host name '%s' to address: %s" SQLSTATE: XX000 -错误原因:不能将主机名转换为IP地址。 +错误原因:不能将主机名转换为 IP 地址。 -解决办法:请检查hba.conf中配置的主机名称,IP地址是否正确。 +解决办法:请检查hba.conf中配置的主机名称, IP 地址是否正确。 GAUSS-04019: "unsupported integer size %d" diff --git a/content/zh/docs/Developerguide/GAUSS-04021----GAUSS-04030.md b/content/zh/docs/Developerguide/GAUSS-04021----GAUSS-04030.md index ecb9a2073..a4075cc29 100644 --- a/content/zh/docs/Developerguide/GAUSS-04021----GAUSS-04030.md +++ b/content/zh/docs/Developerguide/GAUSS-04021----GAUSS-04030.md @@ -4,7 +4,7 @@ GAUSS-04021: "insufficient data left in message" SQLSTATE: 08P01 -错误原因:message中剩余的长度小于message首获取的长度值。 +错误原因:message中剩余的长度小于 message 首获取的长度值。 解决办法:检查当前字符串。 @@ -28,7 +28,7 @@ GAUSS-04024: "Postgres-XC does not support large object yet" SQLSTATE: 0A000 -错误原因:目前还不支持large object。 +错误原因:目前还不支持 large object 。 解决办法:不建议使用此特性。 diff --git a/content/zh/docs/Developerguide/GAUSS-04071----GAUSS-04080.md b/content/zh/docs/Developerguide/GAUSS-04071----GAUSS-04080.md index 85f96703e..a3454eb17 100644 --- a/content/zh/docs/Developerguide/GAUSS-04071----GAUSS-04080.md +++ b/content/zh/docs/Developerguide/GAUSS-04071----GAUSS-04080.md @@ -20,7 +20,7 @@ GAUSS-04073: "not enough shared memory for elements of data structure '%s' \(%lu SQLSTATE: 53200 -错误原因:没有足够共享内存初始化PredXactList。 +错误原因:没有足够共享内存初始化 PredXactList 。 解决办法:检查系统剩余内存是否足够。 @@ -30,13 +30,13 @@ SQLSTATE: 0A000 错误原因:hot standby不能设置为可串行化模式。 -解决办法:检查default\_transaction\_isolation设置,设置为repeatable read。 +解决办法:检查default\_transaction\_isolation设置,设置为 repeatable read 。 GAUSS-04075: "a snapshot-importing transaction must not be READ ONLY DEFERRABLE" SQLSTATE: 0A000 -错误原因:不支持READ ONLY DEFERRABLE事务导入快照。 +错误原因:不支持 READ ONLY DEFERRABLE 事务导入快照。 解决办法:请调整事务级别。 diff --git a/content/zh/docs/Developerguide/GAUSS-04091----GAUSS-04100.md b/content/zh/docs/Developerguide/GAUSS-04091----GAUSS-04100.md index 74ec21c4d..8e03e4aba 100644 --- a/content/zh/docs/Developerguide/GAUSS-04091----GAUSS-04100.md +++ b/content/zh/docs/Developerguide/GAUSS-04091----GAUSS-04100.md @@ -44,7 +44,7 @@ GAUSS-04096: "failed to re-find shared lock object" SQLSTATE: XX000 -错误原因:重新查找shared lock失败。 +错误原因:重新查找 shared lock 失败。 解决办法:请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-04097: "failed to re-find shared proclock object" SQLSTATE: XX000 -错误原因:重新查找shared proclock失败。 +错误原因:重新查找 shared proclock 失败。 解决办法:请联系技术支持工程师提供技术支持。 @@ -68,7 +68,7 @@ GAUSS-04099: "cannot PREPARE while holding both session-level and transaction-le SQLSTATE: 0A000 -错误原因:不能对同一对象同时持有session级和事务级锁。 +错误原因:不能对同一对象同时持有 session 级和事务级锁。 解决办法:检查对象加锁情况。 @@ -76,7 +76,7 @@ GAUSS-04100: "we seem to have dropped a bit somewhere" SQLSTATE: XX000 -错误原因:持有锁和放锁mask不匹配。 +错误原因:持有锁和放锁 mask 不匹配。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04101----GAUSS-04110.md b/content/zh/docs/Developerguide/GAUSS-04101----GAUSS-04110.md index 2ad1d759e..c14a8598c 100644 --- a/content/zh/docs/Developerguide/GAUSS-04101----GAUSS-04110.md +++ b/content/zh/docs/Developerguide/GAUSS-04101----GAUSS-04110.md @@ -12,7 +12,7 @@ GAUSS-04103: "cannot wait without a PGPROC structure" SQLSTATE: XX000 -错误原因:MyProc为NULL。 +错误原因:MyProc为 NULL 。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04131----GAUSS-04140.md b/content/zh/docs/Developerguide/GAUSS-04131----GAUSS-04140.md index 3ec78bda7..65fd23f0d 100644 --- a/content/zh/docs/Developerguide/GAUSS-04131----GAUSS-04140.md +++ b/content/zh/docs/Developerguide/GAUSS-04131----GAUSS-04140.md @@ -12,7 +12,7 @@ GAUSS-04134: "memory is not enough during decompressing CU for integer type %d" SQLSTATE: XX000 -错误原因:列存CU解压缩时内存不足。 +错误原因:列存 CU 解压缩时内存不足。 解决办法:请调大数据库内存配置参数,或者请联系技术支持工程师提供技术支持。 @@ -38,7 +38,7 @@ SQLSTATE: XX000 错误原因:CUID耗尽。 -解决办法:请在VACUUM执行成功后,再次执行操作。 +解决办法:请在 VACUUM 执行成功后,再次执行操作。 GAUSS-04140: "build global column space cache hash table failed" diff --git a/content/zh/docs/Developerguide/GAUSS-04191----GAUSS-04200.md b/content/zh/docs/Developerguide/GAUSS-04191----GAUSS-04200.md index d29174ae2..aec97a4f7 100644 --- a/content/zh/docs/Developerguide/GAUSS-04191----GAUSS-04200.md +++ b/content/zh/docs/Developerguide/GAUSS-04191----GAUSS-04200.md @@ -4,7 +4,7 @@ GAUSS-04192: "could not open file '%s' \(target block %u\): %m" SQLSTATE: XX000 -错误原因:文件打开失败,发生IO错误。 +错误原因:文件打开失败,发生 IO 错误。 解决办法:检查是否文件句柄资源不足。 @@ -22,7 +22,7 @@ SQLSTATE: 08P01 错误原因:输出的结果列数和要求的列数不一致。 -解决办法:检查query。 +解决办法:检查 query 。 GAUSS-04200: "unsupported portal strategy: %d" diff --git a/content/zh/docs/Developerguide/GAUSS-04201----GAUSS-04210.md b/content/zh/docs/Developerguide/GAUSS-04201----GAUSS-04210.md index 0e7b7c1d6..88a9968fa 100644 --- a/content/zh/docs/Developerguide/GAUSS-04201----GAUSS-04210.md +++ b/content/zh/docs/Developerguide/GAUSS-04201----GAUSS-04210.md @@ -30,15 +30,15 @@ SQLSTATE: XX000 错误原因:SQL参数不对。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 GAUSS-04205: "current transaction is aborted, commands ignored until end of transaction block" SQLSTATE: 25P02 -错误原因:事务回滚时,接受了非commit和rollback的命令。 +错误原因:事务回滚时,接受了非 commit 和 rollback 的命令。 -解决办法:执行sql语句时,要保证上一个事务已经提交或者回滚。 +解决办法:执行 sql 语句时,要保证上一个事务已经提交或者回滚。 GAUSS-04206: "function call message contains %d arguments but function requires %d" @@ -70,7 +70,7 @@ SQLSTATE: 08P01 错误原因:无效的信息类型。 -解决办法:输入有效的message type类型。 +解决办法:输入有效的 message type 类型。 GAUSS-04210: "could not set timer for session timeout" diff --git a/content/zh/docs/Developerguide/GAUSS-04211----GAUSS-04220.md b/content/zh/docs/Developerguide/GAUSS-04211----GAUSS-04220.md index f96da38b7..fade0248e 100644 --- a/content/zh/docs/Developerguide/GAUSS-04211----GAUSS-04220.md +++ b/content/zh/docs/Developerguide/GAUSS-04211----GAUSS-04220.md @@ -20,7 +20,7 @@ GAUSS-04215: "cannot insert multiple commands into a prepared statement" SQLSTATE: 42601 -错误原因:在prepared statement中插入了多条命令。 +错误原因:在 prepared statement 中插入了多条命令。 解决办法:仅插入一条命令。 @@ -46,13 +46,13 @@ SQLSTATE: 34000 错误原因:portal不存在。 -解决办法:检查对应的portal,传入正确的portal name。 +解决办法:检查对应的 portal ,传入正确的 portal name 。 GAUSS-04220: "floating-point exception" SQLSTATE: 22P01 -错误原因:float异常,如过界,除以0等。 +错误原因:float异常,如过界,除以 0 等。 -解决办法:输入有效的float值。 +解决办法:输入有效的 float 值。 diff --git a/content/zh/docs/Developerguide/GAUSS-04221----GAUSS-04230.md b/content/zh/docs/Developerguide/GAUSS-04221----GAUSS-04230.md index 1fa4f64af..973655e18 100644 --- a/content/zh/docs/Developerguide/GAUSS-04221----GAUSS-04230.md +++ b/content/zh/docs/Developerguide/GAUSS-04221----GAUSS-04230.md @@ -14,7 +14,7 @@ SQLSTATE: 57P01 错误原因:autovacuum进程被管理员停止。 -解决办法:请与管理员联系确认autovacuum是否被停止,并由管理员重新启动。 +解决办法:请与管理员联系确认 autovacuum 是否被停止,并由管理员重新启动。 GAUSS-04223: "terminating connection due to conflict with recovery" diff --git a/content/zh/docs/Developerguide/GAUSS-04231----GAUSS-04240.md b/content/zh/docs/Developerguide/GAUSS-04231----GAUSS-04240.md index 65bf6684f..0120ac238 100644 --- a/content/zh/docs/Developerguide/GAUSS-04231----GAUSS-04240.md +++ b/content/zh/docs/Developerguide/GAUSS-04231----GAUSS-04240.md @@ -4,9 +4,9 @@ GAUSS-04231: "canceling statement due to %s request" SQLSTATE: 57014 -错误原因:用户或者CN取消了该操作。 +错误原因:用户或者 CN 取消了该操作。 -解决办法:请检查用户或CN取消操作的原因是否正常。如果是正常的取消操作,可以不用处理。如果是异常取消,请分析和修复。 +解决办法:请检查用户或 CN 取消操作的原因是否正常。如果是正常的取消操作,可以不用处理。如果是异常取消,请分析和修复。 GAUSS-04232: "stack depth limit exceeded" @@ -52,15 +52,15 @@ GAUSS-04239: "invalid CLOSE message subtype %d" SQLSTATE: 08P01 -错误原因:从前端或者标准输入中输入了无效的CLOSE命令。 +错误原因:从前端或者标准输入中输入了无效的 CLOSE 命令。 -解决办法:输入正确的CLOSE命令,CLOSE类型只能是S或者P。 +解决办法:输入正确的 CLOSE 命令, CLOSE 类型只能是 S 或者 P 。 GAUSS-04240: "invalid DESCRIBE message subtype %d" SQLSTATE: 08P01 -错误原因:从前端或者标准输入中输入了无效的DESCRIBE命令。 +错误原因:从前端或者标准输入中输入了无效的 DESCRIBE 命令。 -解决办法:输入正确的DESCRIBE命令,describe类型只能是S或者P。 +解决办法:输入正确的 DESCRIBE 命令, describe 类型只能是 S 或者 P 。 diff --git a/content/zh/docs/Developerguide/GAUSS-04241----GAUSS-04250.md b/content/zh/docs/Developerguide/GAUSS-04241----GAUSS-04250.md index d84bccd4e..e1a0df070 100644 --- a/content/zh/docs/Developerguide/GAUSS-04241----GAUSS-04250.md +++ b/content/zh/docs/Developerguide/GAUSS-04241----GAUSS-04250.md @@ -4,7 +4,7 @@ GAUSS-04241: "Invalid command received" SQLSTATE: XX000 -错误原因:从前端或者标准输入中输入了无效的命令,‘b’打头的,非bP、bX和bE。 +错误原因:从前端或者标准输入中输入了无效的命令,‘b’打头的,非bP、bX和 bE 。 解决办法:输入正确的命令。 @@ -54,13 +54,13 @@ SQLSTATE: 0A000 错误原因:不支持用一条语句同事创建临时和非临时对象。 -解决办法:修改SQL语句,将临时对象和非临时对象分开成多条语句创建。 +解决办法:修改 SQL 语句,将临时对象和非临时对象分开成多条语句创建。 GAUSS-04249: "Postgres-XC does not support FOREIGN DATA WRAPPER yet" SQLSTATE: 0A000 -错误原因:特征不支持,不支持FOREIGN DATA WRAPPER。 +错误原因:特征不支持,不支持 FOREIGN DATA WRAPPER 。 解决办法: 系统内部错误。请联系技术支持工程师提供技术支持。 @@ -68,7 +68,7 @@ GAUSS-04250: "Postgres-XC does not support USER MAPPING yet" SQLSTATE: 0A000 -错误原因:不支持CREATE USER MAPPING语句。 +错误原因:不支持 CREATE USER MAPPING 语句。 -解决办法:不要执行CREATE USER MAPPING。 +解决办法:不要执行 CREATE USER MAPPING 。 diff --git a/content/zh/docs/Developerguide/GAUSS-04251----GAUSS-04260.md b/content/zh/docs/Developerguide/GAUSS-04251----GAUSS-04260.md index e6f2b36ce..7b42503f6 100644 --- a/content/zh/docs/Developerguide/GAUSS-04251----GAUSS-04260.md +++ b/content/zh/docs/Developerguide/GAUSS-04251----GAUSS-04260.md @@ -20,9 +20,9 @@ GAUSS-04254: "PGXC does not support GRANT on multiple object types" SQLSTATE: 0A000 -错误原因:openGauss的GRANT语法不支持同时操作VIEW和TABLE。 +错误原因:openGauss的 GRANT 语法不支持同时操作 VIEW 和 TABLE 。 -解决办法:建议对VIEW和TABLE的GRANT操作分开执行。 +解决办法:建议对 VIEW 和 TABLE 的 GRANT 操作分开执行。 GAUSS-04255: "unrecognized define stmt type: %d" @@ -36,23 +36,23 @@ GAUSS-04257: "DROP not supported for TEMP and non-TEMP objects" SQLSTATE: 0A000 -错误原因:在DROP语句一次性drop多个对象时,这些对象中不能既有临时对象,同时又有非临时对象。 +错误原因:在 DROP 语句一次性 drop 多个对象时,这些对象中不能既有临时对象,同时又有非临时对象。 -解决办法:应该将临时对象和非临时对象分开DROP。 +解决办法:应该将临时对象和非临时对象分开 DROP 。 GAUSS-04258: "%s is not yet supported." SQLSTATE: 0A000 -错误原因:在黑名单开关(support\_extended\_features)为off时,黑名单上的特性不被支持。 +错误原因:在黑名单开关(support\_extended\_features)为 off 时,黑名单上的特性不被支持。 -解决办法:如果使用黑名单上的对象,应该打开黑名单开关,并不对黑名单上的对象做ALTER或DELETE操作。 +解决办法:如果使用黑名单上的对象,应该打开黑名单开关,并不对黑名单上的对象做 ALTER 或 DELETE 操作。 GAUSS-04260: "Failed to send snapshot to Datanode %u" SQLSTATE: XX000 -错误原因:系统内部错误:向DN发送snapshot失败。 +错误原因:系统内部错误:向 DN 发送 snapshot 失败。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04261----GAUSS-04270.md b/content/zh/docs/Developerguide/GAUSS-04261----GAUSS-04270.md index dd99eaa0c..b0a86fcb7 100644 --- a/content/zh/docs/Developerguide/GAUSS-04261----GAUSS-04270.md +++ b/content/zh/docs/Developerguide/GAUSS-04261----GAUSS-04270.md @@ -12,7 +12,7 @@ GAUSS-04265: "delete or update failed because lock conflict" SQLSTATE: XX000 -错误原因:由于删除/更新条件复杂,导致同一CU中的两行在删除/更新执行的时机间隔较长,使Tuple删除/更新锁冲突。 +错误原因:由于删除/更新条件复杂,导致同一 CU 中的两行在删除/更新执行的时机间隔较长,使 Tuple 删除/更新锁冲突。 解决办法:调整删除/更新条件,降低执行的复杂度。 diff --git a/content/zh/docs/Developerguide/GAUSS-04271----GAUSS-04280.md b/content/zh/docs/Developerguide/GAUSS-04271----GAUSS-04280.md index 0ff8e995c..bbd8cd91e 100644 --- a/content/zh/docs/Developerguide/GAUSS-04271----GAUSS-04280.md +++ b/content/zh/docs/Developerguide/GAUSS-04271----GAUSS-04280.md @@ -62,5 +62,5 @@ SQLSTATE: XX000 错误原因:错误表尝试记录错误数据时发生错误。 -解决办法:请结合报错Context,尝试定位文本中导致此报错的数据行,检查是否存在非法字符。若仍不能解决,请联系技术支持工程师提供技术支持。 +解决办法:请结合报错 Context ,尝试定位文本中导致此报错的数据行,检查是否存在非法字符。若仍不能解决,请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04281----GAUSS-04290.md b/content/zh/docs/Developerguide/GAUSS-04281----GAUSS-04290.md index cf319e16e..ac0bcd12f 100644 --- a/content/zh/docs/Developerguide/GAUSS-04281----GAUSS-04290.md +++ b/content/zh/docs/Developerguide/GAUSS-04281----GAUSS-04290.md @@ -44,7 +44,7 @@ GAUSS-04290: "length of field '%s' longer than limit of \\'%d\\'" SQLSTATE: 22P04 -错误原因:使用Fixed格式的GDS外表进行导出时列数据长度大于外表表明长度。 +错误原因:使用 Fixed 格式的 GDS 外表进行导出时列数据长度大于外表表明长度。 解决办法:请根据报错信息修改外表定义。 diff --git a/content/zh/docs/Developerguide/GAUSS-04291----GAUSS-04300.md b/content/zh/docs/Developerguide/GAUSS-04291----GAUSS-04300.md index 717887388..0180a9481 100644 --- a/content/zh/docs/Developerguide/GAUSS-04291----GAUSS-04300.md +++ b/content/zh/docs/Developerguide/GAUSS-04291----GAUSS-04300.md @@ -36,9 +36,9 @@ GAUSS-04295:"Fail to send signal to backend\(tid:%lu\). " SQLSTATE: XX000 -错误原因:向backend thread发送内部信号失败。 +错误原因:向 backend thread 发送内部信号失败。 -解决办法:backend可能已经退出,由用户确认该backend是否还存在。 +解决办法:backend可能已经退出,由用户确认该 backend 是否还存在。 GAUSS-04296:"out of memory when preparing zlib encoder. " diff --git a/content/zh/docs/Developerguide/GAUSS-04311----GAUSS-04320.md b/content/zh/docs/Developerguide/GAUSS-04311----GAUSS-04320.md index c1d7f0c15..fa5516d29 100644 --- a/content/zh/docs/Developerguide/GAUSS-04311----GAUSS-04320.md +++ b/content/zh/docs/Developerguide/GAUSS-04311----GAUSS-04320.md @@ -1,10 +1,10 @@ -# GAUSS-04311 -- GAUSS-04320 - -GAUSS-04325: "Parallel Function: Failed to send command to Datanode %u" - -SQLSTATE: XX000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-04311 -- GAUSS-04320 + +GAUSS-04325: "Parallel Function: Failed to send command to Datanode %u" + +SQLSTATE: XX000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-04321----GAUSS-04330.md b/content/zh/docs/Developerguide/GAUSS-04321----GAUSS-04330.md index 4f71049a9..3437cb279 100644 --- a/content/zh/docs/Developerguide/GAUSS-04321----GAUSS-04330.md +++ b/content/zh/docs/Developerguide/GAUSS-04321----GAUSS-04330.md @@ -4,15 +4,15 @@ GAUSS-04321: "Failed to receive GTM commit transaction response after %s. SQLSTATE: XX000 -错误原因:可能由于GTM断连,无法得到通知GTM提交事务的反馈信息。 +错误原因:可能由于 GTM 断连,无法得到通知 GTM 提交事务的反馈信息。 -解决办法:检查与GTM的连接正常与否。 +解决办法:检查与 GTM 的连接正常与否。 GAUSS-04325: "Parallel Function: Failed to send command to Datanode %u " SQLSTATE: XX000 -错误原因:向DN发送sql/plan失败。 +错误原因:向 DN 发送sql/plan失败。 解决办法:内部错误,请联系技术支持工程师提供技术支持。 @@ -20,7 +20,7 @@ GAUSS-04326: "Parallel Function: Failed to read response from Datanodes Detail: SQLSTATE: XX000 -错误原因:收不到对端DN的消息响应。 +错误原因:收不到对端 DN 的消息响应。 解决办法:检查是否有节点故障或者网络连接是否正常。 @@ -28,7 +28,7 @@ GAUSS-04330: "pooler: Failed to send SIGTERM to postgres thread:%lu in PoolManag SQLSTATE: XX000 -错误原因:向backend thread发送内部信号失败。 +错误原因:向 backend thread 发送内部信号失败。 解决办法:用户可以再次重试。 diff --git a/content/zh/docs/Developerguide/GAUSS-04331----GAUSS-04340.md b/content/zh/docs/Developerguide/GAUSS-04331----GAUSS-04340.md index 3467671fc..d6c4e3680 100644 --- a/content/zh/docs/Developerguide/GAUSS-04331----GAUSS-04340.md +++ b/content/zh/docs/Developerguide/GAUSS-04331----GAUSS-04340.md @@ -12,9 +12,9 @@ GAUSS-04335: "pooler: Communication failure, failed to send session commands or SQLSTATE: 08000 -错误原因:连接出现错误,和DN的通讯失败。 +错误原因:连接出现错误,和 DN 的通讯失败。 -解决办法:重新执行query。 +解决办法:重新执行 query 。 GAUSS-04336: "pooler: Failed to duplicate fd, error: %s" @@ -30,5 +30,5 @@ SQLSTATE: XX000 错误原因:内存上下文错误。 -解决办法:重新执行query。 +解决办法:重新执行 query 。 diff --git a/content/zh/docs/Developerguide/GAUSS-04341----GAUSS-04350.md b/content/zh/docs/Developerguide/GAUSS-04341----GAUSS-04350.md index b7a68e32b..2234c3cbf 100644 --- a/content/zh/docs/Developerguide/GAUSS-04341----GAUSS-04350.md +++ b/content/zh/docs/Developerguide/GAUSS-04341----GAUSS-04350.md @@ -6,7 +6,7 @@ SQLSTATE: 0A000 错误原因:Stream模式下不支持并发更新操作。 -解决办法:关掉enable\_stream\_operator开关或者避免Stream模式下的并发更新操作。 +解决办法:关掉enable\_stream\_operator开关或者避免 Stream 模式下的并发更新操作。 GAUSS-04344: "cannot read results" @@ -28,7 +28,7 @@ GAUSS-04348: "%s is redistributing, please retry later." SQLSTATE: 0A000 -错误原因:正在重分布的表不支持导入之外的其他DDL操作。 +错误原因:正在重分布的表不支持导入之外的其他 DDL 操作。 解决办法:等待正在重分布的表重分布完成后重试。 @@ -36,7 +36,7 @@ GAUSS-04350: "duplicated URL '%s' in LOCATION" SQLSTATE: XX000 -错误原因:gds使用的URL重复。 +错误原因:gds使用的 URL 重复。 -解决办法:确认gds使用的URL与已存在使用的URL不重复。 +解决办法:确认 gds 使用的 URL 与已存在使用的 URL 不重复。 diff --git a/content/zh/docs/Developerguide/GAUSS-04351----GAUSS-04360.md b/content/zh/docs/Developerguide/GAUSS-04351----GAUSS-04360.md index b9b04d712..88e8fe2d2 100644 --- a/content/zh/docs/Developerguide/GAUSS-04351----GAUSS-04360.md +++ b/content/zh/docs/Developerguide/GAUSS-04351----GAUSS-04360.md @@ -4,25 +4,25 @@ GAUSS-04351: "IGNORE\_EXTRA\_DATA only available on READ ONLY foreign table" SQLSTATE: 42601 -错误原因:创建可写外表时,在OPTIONS中使用了IGNORE\_EXTRA\_DATA。 +错误原因:创建可写外表时,在 OPTIONS 中使用了IGNORE\_EXTRA\_DATA。 -解决办法:删除外表定义OPTIONS中的IGNORE\_EXTRA\_DATA。 +解决办法:删除外表定义 OPTIONS 中的IGNORE\_EXTRA\_DATA。 GAUSS-04352: "Permission denied to drop resource pools." SQLSTATE: 42501 -错误原因:禁止普通用户进行删除resource pool对象的操作。 +错误原因:禁止普通用户进行删除 resource pool 对象的操作。 -解决办法:只有系统用户可以对resource pool对象进行删除操作。普通用户无权删除。 +解决办法:只有系统用户可以对 resource pool 对象进行删除操作。普通用户无权删除。 GAUSS-04353: "App Workload Group Mapping '%s': object not defined" SQLSTATE: 42704 -错误原因:不允许移除一个不存在的app workload group mapping。 +错误原因:不允许移除一个不存在的 app workload group mapping 。 -解决办法:只允许移除一个已存在的app workload group mapping。 +解决办法:只允许移除一个已存在的 app workload group mapping 。 GAUSS-04355: "internal error, rename partitioned table failed" diff --git a/content/zh/docs/Developerguide/GAUSS-04361----GAUSS-04370.md b/content/zh/docs/Developerguide/GAUSS-04361----GAUSS-04370.md index fd6ac6057..6c729bb6f 100644 --- a/content/zh/docs/Developerguide/GAUSS-04361----GAUSS-04370.md +++ b/content/zh/docs/Developerguide/GAUSS-04361----GAUSS-04370.md @@ -4,9 +4,9 @@ GAUSS-04361: "explain\_perf\_mode requires FORMAT TEXT" SQLSTATE: 22023 -错误原因:此参数设置为非normal模式时,使用了非text格式的format。 +错误原因:此参数设置为非 normal 模式时,使用了非 text 格式的 format 。 -解决办法:设置explain\_perf\_mode为非normal格式时,需要format必须是text格式。 +解决办法:设置explain\_perf\_mode为非 normal 格式时,需要 format 必须是 text 格式。 GAUSS-04363: "unsupported type %d" @@ -28,9 +28,9 @@ GAUSS-04366: "The old password can not be NULL, please input your old password w SQLSTATE: XX000 -错误原因:在修改系统管理员用户密码或使用identified by语法修改用户密码时需要提供原始密码用于确认。如果没有提供原始密码则报错。 +错误原因:在修改系统管理员用户密码或使用 identified by 语法修改用户密码时需要提供原始密码用于确认。如果没有提供原始密码则报错。 -解决办法:修改系统管理员用户密码或使用identified by语法修改用户密码时,需要使用replace语法给出原始密码。 +解决办法:修改系统管理员用户密码或使用 identified by 语法修改用户密码时,需要使用 replace 语法给出原始密码。 GAUSS-04367: "The old password is invalid." diff --git a/content/zh/docs/Developerguide/GAUSS-04371----GAUSS-04380.md b/content/zh/docs/Developerguide/GAUSS-04371----GAUSS-04380.md index 2ad12af1d..95f8a5ad4 100644 --- a/content/zh/docs/Developerguide/GAUSS-04371----GAUSS-04380.md +++ b/content/zh/docs/Developerguide/GAUSS-04371----GAUSS-04380.md @@ -12,9 +12,9 @@ GAUSS-04372: "tablespace cannot be created under data directory" SQLSTATE: 42P17 -错误原因:用户在data目录下面创建tablespace会产生这个错误。 +错误原因:用户在 data 目录下面创建 tablespace 会产生这个错误。 -解决办法:不允许在data目录创建tablespace,发现创建的tablespace的绝对路径包含data目录则报错。 +解决办法:不允许在 data 目录创建 tablespace ,发现创建的 tablespace 的绝对路径包含 data 目录则报错。 GAUSS-04373: "unchangeable tablespace '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-04381----GAUSS-04390.md b/content/zh/docs/Developerguide/GAUSS-04381----GAUSS-04390.md index 537103bc4..dd1a58f77 100644 --- a/content/zh/docs/Developerguide/GAUSS-04381----GAUSS-04390.md +++ b/content/zh/docs/Developerguide/GAUSS-04381----GAUSS-04390.md @@ -4,9 +4,9 @@ GAUSS-04381: "detected write past chunk end in %s %p" SQLSTATE: XX000 -错误原因:在free内存时,验证填充的字符,若不正确,报错。 +错误原因:在 free 内存时,验证填充的字符,若不正确,报错。 -解决办法:PANIC级别,用于Debug模式下的内存越界检查,终止进程,产生core。 +解决办法:PANIC级别,用于 Debug 模式下的内存越界检查,终止进程,产生 core 。 GAUSS-04383: "Bucketmap is NULL" @@ -20,7 +20,7 @@ GAUSS-04385: "invalid name of memory context: NULL or '' " SQLSTATE: XX000 -错误原因:函数参数检查,NULL或者空字符串被认为是非法的内存上下文名称。 +错误原因:函数参数检查, NULL 或者空字符串被认为是非法的内存上下文名称。 解决办法:由用户确保内存上下文名称的合法性。 @@ -28,9 +28,9 @@ GAUSS-04386: "Failed to receive GTM commit transaction response for DN or other SQLSTATE: XX000 -错误原因:可能由于GTM断连,无法得到通知GTM提交事务的反馈信息。 +错误原因:可能由于 GTM 断连,无法得到通知 GTM 提交事务的反馈信息。 -解决办法:检查与GTM的连接正常与否。 +解决办法:检查与 GTM 的连接正常与否。 GAUSS-04387: "column '%s' needs too many memory" @@ -44,7 +44,7 @@ GAUSS-04390: "Failed to initialze NativeTarget for LLVM." SQLSTATE: XX000 -错误原因:启动数据库时初始化LLVM本地对象失败。 +错误原因:启动数据库时初始化 LLVM 本地对象失败。 解决办法:重新启动数据库。 diff --git a/content/zh/docs/Developerguide/GAUSS-04391----GAUSS-04400.md b/content/zh/docs/Developerguide/GAUSS-04391----GAUSS-04400.md index af78aecbb..d7c95f5b9 100644 --- a/content/zh/docs/Developerguide/GAUSS-04391----GAUSS-04400.md +++ b/content/zh/docs/Developerguide/GAUSS-04391----GAUSS-04400.md @@ -4,7 +4,7 @@ GAUSS-04391: "Failed to initialze NativeTargetAsmPrinter for LLVM." SQLSTATE: XX000 -错误原因:启动数据库时初始化LLVM本地对象ASM打印器失败。 +错误原因:启动数据库时初始化 LLVM 本地对象 ASM 打印器失败。 解决办法:重新启动数据库。 @@ -12,7 +12,7 @@ GAUSS-04392: "Failed to initialze NativeTargetAsmParser for LLVM." SQLSTATE: XX000 -错误原因:启动数据库时初始化LLVM本地对象ASM解析器失败。 +错误原因:启动数据库时初始化 LLVM 本地对象 ASM 解析器失败。 解决办法:重新启动数据库。 diff --git a/content/zh/docs/Developerguide/GAUSS-04401----GAUSS-04410.md b/content/zh/docs/Developerguide/GAUSS-04401----GAUSS-04410.md index c73ad5e67..3194ef7dd 100644 --- a/content/zh/docs/Developerguide/GAUSS-04401----GAUSS-04410.md +++ b/content/zh/docs/Developerguide/GAUSS-04401----GAUSS-04410.md @@ -4,7 +4,7 @@ GAUSS-04401: "The local index %u on the partition %u not exist." SQLSTATE: 42704 -错误原因:可能由于drop partition和drop index并发,在drop index的时候可能对应index已经不存在了。 +错误原因:可能由于 drop partition 和 drop index 并发,在 drop index 的时候可能对应 index 已经不存在了。 解决办法:调整并发控制。 @@ -12,9 +12,9 @@ GAUSS-04403: "Can only access temp objects of the current session." SQLSTATE: 0A000 -错误原因:访问了其他session的临时对象。 +错误原因:访问了其他 session 的临时对象。 -解决办法:只允许访问本session的临时对象,不支持访问其他session的临时对象。 +解决办法:只允许访问本 session 的临时对象,不支持访问其他 session 的临时对象。 GAUSS-04404: "cache lookup failed for role %u" @@ -32,8 +32,8 @@ SQLSTATE: 0A000 解决办法: -1. 退出当前session,再重新连接并创建临时表。 -2. 使用DROP SCHEMA %s, %s CASCADE来删除临时schema,再重建临时表。 +1. 退出当前 session ,再重新连接并创建临时表。 +2. 使用DROP SCHEMA %s, %s CASCADE来删除临时 schema ,再重建临时表。 GAUSS-04407: "Not allowed to insert into relation pg\_auth\_history." @@ -47,7 +47,7 @@ GAUSS-04408: "do not support create non-temp table like temp table" SQLSTATE: 0A000 -错误原因:创建普通表时使用了like临时表语法,不支持这样使用。 +错误原因:创建普通表时使用了 like 临时表语法,不支持这样使用。 -解决办法:不支持创建非临时表like临时表,如果要使用like临时表语法,请将要创建的表也指定为临时表。 +解决办法:不支持创建非临时表 like 临时表,如果要使用 like 临时表语法,请将要创建的表也指定为临时表。 diff --git a/content/zh/docs/Developerguide/GAUSS-04411----GAUSS-04420.md b/content/zh/docs/Developerguide/GAUSS-04411----GAUSS-04420.md index fa431b736..9bac93267 100644 --- a/content/zh/docs/Developerguide/GAUSS-04411----GAUSS-04420.md +++ b/content/zh/docs/Developerguide/GAUSS-04411----GAUSS-04420.md @@ -12,7 +12,7 @@ GAUSS-04414: "The number of %s distribute key can not exceed 1" SQLSTATE: 42601 -错误原因:非hash分布的表的分布列不能超过1。 +错误原因:非 hash 分布的表的分布列不能超过 1 。 解决办法:修改建表语句,指定一个列作为分布列。 @@ -28,17 +28,17 @@ GAUSS-04417: "Alias '%s' reference with window function included is not supporte SQLSTATE: 42703 -错误原因:别名引用,被引用的表达式不能包含window function。 +错误原因:别名引用,被引用的表达式不能包含 window function 。 -解决办法:修改sql语句,不支持该用法。 +解决办法:修改 sql 语句,不支持该用法。 GAUSS-04418: "Alias '%s' reference with volatile function included is not supported." SQLSTATE: 42703 -错误原因:别名引用,被引用的表达式不能包含volatile function。 +错误原因:别名引用,被引用的表达式不能包含 volatile function 。 -解决办法:修改sql语句,不支持该用法。 +解决办法:修改 sql 语句,不支持该用法。 GAUSS-04419: "Alias '%s' is ambiguous." diff --git a/content/zh/docs/Developerguide/GAUSS-04421----GAUSS-04430.md b/content/zh/docs/Developerguide/GAUSS-04421----GAUSS-04430.md index 921b0b58f..29fb11fea 100644 --- a/content/zh/docs/Developerguide/GAUSS-04421----GAUSS-04430.md +++ b/content/zh/docs/Developerguide/GAUSS-04421----GAUSS-04430.md @@ -4,7 +4,7 @@ GAUSS-04422: "%u/%u/%u invalid bcm meta buffer %u" SQLSTATE: XX000 -错误原因:无效的BCM文件的meta页面。 +错误原因:无效的 BCM 文件的 meta 页面。 解决办法:请联系技术支持工程师提供技术支持。 @@ -12,7 +12,7 @@ GAUSS-04424: "Vector aggregation does not support this distinct clause in aggreg SQLSTATE: XX000 -错误原因:aggregation向量化执行引擎初始化时,聚合函数不支持distinct子句。 +错误原因:aggregation向量化执行引擎初始化时,聚合函数不支持 distinct 子句。 解决办法:请联系技术支持工程师提供技术支持。 @@ -28,17 +28,17 @@ GAUSS-04426: "Explicit prepare transaction is not supported." SQLSTATE: 0A000 -错误原因:不支持显式prepare。由于用户输入了显式prepare语句。 +错误原因:不支持显式 prepare 。由于用户输入了显式 prepare 语句。 -解决办法:不输入显式prepare语句。 +解决办法:不输入显式 prepare 语句。 GAUSS-04427: "Explicit commit prepared transaction is not supported." SQLSTATE: 0A000 -错误原因:不支持显式commit prepared。由于用户输入了显式commit prepared语句。 +错误原因:不支持显式 commit prepared 。由于用户输入了显式 commit prepared 语句。 -解决办法:不输入显式commit prepared语句。 +解决办法:不输入显式 commit prepared 语句。 GAUSS-04428: "Explicit rollback prepared transaction is not supported." diff --git a/content/zh/docs/Developerguide/GAUSS-04431----GAUSS-04440.md b/content/zh/docs/Developerguide/GAUSS-04431----GAUSS-04440.md index e5df61dd5..7411097cc 100644 --- a/content/zh/docs/Developerguide/GAUSS-04431----GAUSS-04440.md +++ b/content/zh/docs/Developerguide/GAUSS-04431----GAUSS-04440.md @@ -14,7 +14,7 @@ SQLSTATE: XX000 错误原因:操作系统函数io\_getevents\(\)执行失败。 -解决办法:检测操作系统内核函数是否大于Linux 2.6.23,确认操作系统安装了libaio库。 +解决办法:检测操作系统内核函数是否大于Linux 2.6.23,确认操作系统安装了 libaio 库。 GAUSS-04434: "parent of GROUPING is not VecAgg node" @@ -38,7 +38,7 @@ SQLSTATE: 0A000 错误原因:alternative表达式没有实现向量化。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-04437: "Unsupported rowexpr expression in vector engine" @@ -46,15 +46,15 @@ SQLSTATE: 0A000 错误原因:rowexpr表达式没有向量化。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-04438: "unsupported vector sub plan type %d" SQLSTATE: XX000 -错误原因:用了向量化执行引擎不支持的Subplan类型,报错提示不支持。 +错误原因:用了向量化执行引擎不支持的 Subplan 类型,报错提示不支持。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-04439: "Unsupported state in vec sort agg" @@ -68,7 +68,7 @@ GAUSS-04440: "Failed to connect hdfs." SQLSTATE: XX000 -错误原因:连接HDFS失败。 +错误原因:连接 HDFS 失败。 -解决办法:请检查CN日志,根据这条报错可以搜索到具体报错原因。 +解决办法:请检查 CN 日志,根据这条报错可以搜索到具体报错原因。 diff --git a/content/zh/docs/Developerguide/GAUSS-04441----GAUSS-04450.md b/content/zh/docs/Developerguide/GAUSS-04441----GAUSS-04450.md index 32e81a909..8da76ca6e 100644 --- a/content/zh/docs/Developerguide/GAUSS-04441----GAUSS-04450.md +++ b/content/zh/docs/Developerguide/GAUSS-04441----GAUSS-04450.md @@ -4,7 +4,7 @@ GAUSS-04441: "Unsupport store format, only support ORC format for DFS table." SQLSTATE: XX000 -错误原因:系统内部错误。HDFS表检测数据格式,发现不是ORC格式。 +错误原因:系统内部错误。 HDFS 表检测数据格式,发现不是 ORC 格式。 解决办法:修改数据格式。 @@ -12,7 +12,7 @@ GAUSS-04442: "'INSERT' is not supported by the type of relation." SQLSTATE: D0011 -错误原因:该表不支持insert操作。 +错误原因:该表不支持 insert 操作。 解决办法:请联系技术支持工程师提供技术支持。 @@ -20,7 +20,7 @@ GAUSS-04443: "'DELETE' is not supported by the type of relation." SQLSTATE: D0011 -错误原因:该表不支持delete操作。 +错误原因:该表不支持 delete 操作。 解决办法:请联系技术支持工程师提供技术支持。 @@ -28,7 +28,7 @@ GAUSS-04444: "'UPDATE' is not supported by the type of relation." SQLSTATE: D0011 -错误原因:该表不支持update操作。 +错误原因:该表不支持 update 操作。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04461----GAUSS-04470.md b/content/zh/docs/Developerguide/GAUSS-04461----GAUSS-04470.md index 3ed24f9e6..34f80564a 100644 --- a/content/zh/docs/Developerguide/GAUSS-04461----GAUSS-04470.md +++ b/content/zh/docs/Developerguide/GAUSS-04461----GAUSS-04470.md @@ -4,7 +4,7 @@ GAUSS-04468: "corrupt during reset shared hash table '%s'" SQLSTATE: XX000 -错误原因:重置共享hash表过程中内存崩溃。 +错误原因:重置共享 hash 表过程中内存崩溃。 解决办法:节点重启,无须额外处理。 @@ -12,7 +12,7 @@ GAUSS-04469: "terminating SyncLocalXactsWithGTM process due to administrator com SQLSTATE: 57P01 -错误原因:主降备或者系统退出过程中SyncLocalXactsWithGTM被停止。 +错误原因:主降备或者系统退出过程中 SyncLocalXactsWithGTM 被停止。 解决办法:无须额外处理。 diff --git a/content/zh/docs/Developerguide/GAUSS-04471----GAUSS-04480.md b/content/zh/docs/Developerguide/GAUSS-04471----GAUSS-04480.md index bc9fe63e2..da6ce3235 100644 --- a/content/zh/docs/Developerguide/GAUSS-04471----GAUSS-04480.md +++ b/content/zh/docs/Developerguide/GAUSS-04471----GAUSS-04480.md @@ -1,18 +1,18 @@ # GAUSS-04471 -- GAUSS-04480 -GAUSS-04471: "fallocate\(fd=%d, amount=%d, offset=%ld\),write count\(%d\), errno\(%d\), maybe you use adio without XFS filesystem, if you really want do this,please turn off GUC parameter enable\_fast\_allocate" +GAUSS-04471: "fallocate\(fd=%d, amount=%d, offset=%ld\),write count\(%d\), errno\(%d\), maybe you use adio without XFS filesystem , if you really want do this ,please turn off GUC parameter enable\_fast\_allocate" SQLSTATE: XX000 错误原因:快速分配数据文件块失败。 -解决办法:确认文件系统是XFS,若不是请关闭enable\_fast\_allocate配置项。 +解决办法:确认文件系统是 XFS ,若不是请关闭enable\_fast\_allocate配置项。 GAUSS-04472: "FileAsyncRead, file access failed %d" SQLSTATE: XX000 -错误原因:在异步IO的模式下,服务器读取数据文件前,需要检测到文件状态异常。 +错误原因:在异步 IO 的模式下,服务器读取数据文件前,需要检测到文件状态异常。 解决办法:请确保数据文件状态正常,若数据文件异常,请从备机或备份数据中恢复。 @@ -20,7 +20,7 @@ GAUSS-04474: "FileAsyncWrite, file access failed %d" SQLSTATE: XX000 -错误原因:异步IO写数据文件前检测到文件状态异常。 +错误原因:异步 IO 写数据文件前检测到文件状态异常。 解决办法:请确保数据文件状态正常,若数据文件异常,请从备机或备份数据中恢复。 @@ -28,11 +28,11 @@ GAUSS-04476: "FileAccess\(\) FAILED %d" SQLSTATE: XX000 -错误原因:异步IO读写数据文件前检测到文件状态异常。 +错误原因:异步 IO 读写数据文件前检测到文件状态异常。 解决办法:请确保数据文件状态正常,若数据文件异常,请从备机或备份数据中恢复。 -GAUSS-04479: "fallocate\(fd=%d, amount=%u, offset=%u\),write count\(%d\), errno\(%d\), maybe you use adio without XFS filesystem, if you really want do this,please turn off GUC parameter enable\_fast\_allocate" +GAUSS-04479: "fallocate\(fd=%d, amount=%u, offset=%u\),write count\(%d\), errno\(%d\), maybe you use adio without XFS filesystem , if you really want do this ,please turn off GUC parameter enable\_fast\_allocate" SQLSTATE: XX000 diff --git a/content/zh/docs/Developerguide/GAUSS-04481----GAUSS-04490.md b/content/zh/docs/Developerguide/GAUSS-04481----GAUSS-04490.md index 1d3eaa8df..e118dd016 100644 --- a/content/zh/docs/Developerguide/GAUSS-04481----GAUSS-04490.md +++ b/content/zh/docs/Developerguide/GAUSS-04481----GAUSS-04490.md @@ -12,7 +12,7 @@ GAUSS-04483: "CheckIOState, find an error in async write" SQLSTATE: XX000 -错误原因: VACUUM FULL行存表产生写IO错误。 +错误原因: VACUUM FULL行存表产生写 IO 错误。 解决办法:检测磁盘是否发生故障是否需要更新磁盘后可尝试重新执行。 @@ -24,11 +24,11 @@ SQLSTATE: 无 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-04485: "posix\_memalign fails, The alignment argument was not a power of two, or was not a multiple of sizeof\(void \*\)" +GAUSS-04485: "posix\_memalign fails, The alignment argument was not a power of two , or was not a multiple of sizeof\(void \*\)" SQLSTATE: XX000 -错误原因:系统内部错误。操作系统内存不足或者申请内存对齐参数不为2的幂次方或者指针参数异常。 +错误原因:系统内部错误。操作系统内存不足或者申请内存对齐参数不为 2 的幂次方或者指针参数异常。 解决办法:操作系统释放部分内存后,可尝试重新执行。 diff --git a/content/zh/docs/Developerguide/GAUSS-04491----GAUSS-04500.md b/content/zh/docs/Developerguide/GAUSS-04491----GAUSS-04500.md index 69c5fa20d..971cc65dc 100644 --- a/content/zh/docs/Developerguide/GAUSS-04491----GAUSS-04500.md +++ b/content/zh/docs/Developerguide/GAUSS-04491----GAUSS-04500.md @@ -6,7 +6,7 @@ SQLSTATE: XX000 错误原因:冗余的选项。 -解决办法:检查DDL语句中的选项是否有重复。 +解决办法:检查 DDL 语句中的选项是否有重复。 GAUSS-04494: "max\_dop value can't be %ld." @@ -14,7 +14,7 @@ SQLSTATE: 22003 错误原因:max\_dop的值无效。 -解决办法:设置max\_dop的值必须大于等于1。 +解决办法:设置max\_dop的值必须大于等于 1 。 GAUSS-04495: "invalid value '%s' for parameter '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-04501----GAUSS-04510.md b/content/zh/docs/Developerguide/GAUSS-04501----GAUSS-04510.md index a21dbb846..02e560a3a 100644 --- a/content/zh/docs/Developerguide/GAUSS-04501----GAUSS-04510.md +++ b/content/zh/docs/Developerguide/GAUSS-04501----GAUSS-04510.md @@ -4,7 +4,7 @@ GAUSS-04503: "wrong buffer passed to BCM\_clear, BlockNumber from buf is %u,mapB SQLSTATE: XX000 -错误原因:错误的BCM buffer或者BCM buffer对应的块号和map块号不一致。 +错误原因:错误的 BCM buffer 或者 BCM buffer 对应的块号和 map 块号不一致。 解决办法:系统内部错误。请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04521----GAUSS-04530.md b/content/zh/docs/Developerguide/GAUSS-04521----GAUSS-04530.md index cfd513146..1d8e4645e 100644 --- a/content/zh/docs/Developerguide/GAUSS-04521----GAUSS-04530.md +++ b/content/zh/docs/Developerguide/GAUSS-04521----GAUSS-04530.md @@ -30,13 +30,13 @@ SQLSTATE: 25001 错误原因:pg\_pool\_validate函数不能在事务块中执行。 -解决办法:直接调用pg\_pool\_validate,而不是采用start transaction的方式。 +解决办法:直接调用pg\_pool\_validate,而不是采用 start transaction 的方式。 GAUSS-04529: "Failed to send query ID to %s while sending query ID with sync" SQLSTATE: XX000 -错误原因:发送query ID失败。 +错误原因:发送 query ID 失败。 解决办法:检查对端节点是否报错退出,或者当前是否有网络问题。 @@ -44,7 +44,7 @@ GAUSS-04530: "Failed to read response from Datanodes while sending query ID with SQLSTATE: XX000 -错误原因:发送query ID失败。 +错误原因:发送 query ID 失败。 解决办法:检查对端节点是否报错退出,或者当前是否有网络问题。 diff --git a/content/zh/docs/Developerguide/GAUSS-04531----GAUSS-04540.md b/content/zh/docs/Developerguide/GAUSS-04531----GAUSS-04540.md index 5a0a28d18..702bb71dd 100644 --- a/content/zh/docs/Developerguide/GAUSS-04531----GAUSS-04540.md +++ b/content/zh/docs/Developerguide/GAUSS-04531----GAUSS-04540.md @@ -4,7 +4,7 @@ GAUSS-04531: "Unexpected response from %s while sending query ID with sync" SQLSTATE: XX000 -错误原因:发送query ID失败。 +错误原因:发送 query ID 失败。 解决办法:系统内部错误。请联系技术支持工程师提供技术支持。 @@ -12,7 +12,7 @@ GAUSS-04532: "Could not begin transaction on %s" SQLSTATE: XX000 -错误原因:系统内部错误。在analyze处理过程中,向CN/DN发送查询pg\_class表和pg\_statistic表信息构造的query命令失败。 +错误原因:系统内部错误。在 analyze 处理过程中,向CN/DN发送查询pg\_class表和pg\_statistic表信息构造的 query 命令失败。 解决办法:请联系技术支持工程师提供技术支持。 @@ -20,7 +20,7 @@ GAUSS-04533: "Failed to read response from CN %u when ending query" SQLSTATE: XX000 -错误原因:系统内部错误。在analyze处理过程中,其他CN从源CN获取统计pg\_class和pg\_statistic系统表信息时,从消息缓冲区中收到EOF消息。 +错误原因:系统内部错误。在 analyze 处理过程中,其他 CN 从源 CN 获取统计pg\_class和pg\_statistic系统表信息时,从消息缓冲区中收到 EOF 消息。 解决办法:请联系技术支持工程师提供技术支持。 @@ -28,7 +28,7 @@ GAUSS-04534: "Unexpected response from CN %u" SQLSTATE: XX000 -错误原因:系统内部错误。在analyze处理过程中,其他CN从源CN获取统计pg\_class和pg\_statistic系统表信息时,从消息缓冲区中收到不期望的响应消息。 +错误原因:系统内部错误。在 analyze 处理过程中,其他 CN 从源 CN 获取统计pg\_class和pg\_statistic系统表信息时,从消息缓冲区中收到不期望的响应消息。 解决办法:请联系技术支持工程师提供技术支持。 @@ -36,7 +36,7 @@ GAUSS-04535: "Failed to read response from DN %u when ending query" SQLSTATE: XX000 -错误原因:全局统计信息做analyze过程中,CN从DN1获取pg\_class或pg\_statistic统计信息时,未收到EOF消息。 +错误原因:全局统计信息做 analyze 过程中, CN 从 DN1 获取pg\_class或pg\_statistic统计信息时,未收到 EOF 消息。 解决办法:系统内部错误。请联系技术支持工程师提供技术支持。 @@ -44,7 +44,7 @@ GAUSS-04536: "Unexpected response from DN %u" SQLSTATE: XX000 -错误原因:全局统计信息做analyze过程中,CN从DN1获取pg\_class或pg\_statistic统计信息时,收到不期望的响应消息。 +错误原因:全局统计信息做 analyze 过程中, CN 从 DN1 获取pg\_class或pg\_statistic统计信息时,收到不期望的响应消息。 解决办法:系统内部错误。请联系技术支持工程师提供技术支持。 @@ -62,7 +62,7 @@ SQLSTATE: XX000 错误原因:输入的表不存在。 -解决办法:执行SQL语句输入正确的表名。 +解决办法:执行 SQL 语句输入正确的表名。 GAUSS-04540: "Failed to create directory on HDFS." diff --git a/content/zh/docs/Developerguide/GAUSS-04541----GAUSS-04550.md b/content/zh/docs/Developerguide/GAUSS-04541----GAUSS-04550.md index c4852a70d..2650790d9 100644 --- a/content/zh/docs/Developerguide/GAUSS-04541----GAUSS-04550.md +++ b/content/zh/docs/Developerguide/GAUSS-04541----GAUSS-04550.md @@ -12,7 +12,7 @@ GAUSS-04543: "Failed to find the information of DFS table." SQLSTATE: 42P17 -错误原因:增加delta表的分布信息时,没有找到HDFS的信息。 +错误原因:增加 delta 表的分布信息时,没有找到 HDFS 的信息。 解决办法:尝试再次执行解决。 @@ -28,7 +28,7 @@ GAUSS-04545: "function roach\_handler must return type 'fdw\_handler'" SQLSTATE: 42809 -错误原因:系统内部错误。roach导出需绑定fdw\_handler。 +错误原因:系统内部错误。 roach 导出需绑定fdw\_handler。 解决办法:请联系技术支持工程师提供技术支持。 @@ -38,13 +38,13 @@ SQLSTATE: XX000 错误原因:roach导出不能正常打开。 -解决办法:检查roach外表指定的location中包含的roach path是否可以正常访问。 +解决办法:检查 roach 外表指定的 location 中包含的 roach path 是否可以正常访问。 GAUSS-04547: "could not read from roach" SQLSTATE: XX000 -错误原因:系统内部错误。用roach方式导出时不能正常拷贝数据。 +错误原因:系统内部错误。用 roach 方式导出时不能正常拷贝数据。 解决办法:请联系技术支持工程师提供技术支持。 @@ -52,15 +52,15 @@ GAUSS-04549: "can not specify multiple locations" SQLSTATE: 0A000 -错误原因:roach导出方式指定的location不能多于一个。 +错误原因:roach导出方式指定的 location 不能多于一个。 -解决办法:指定roach外表的location只能限定一个。 +解决办法:指定 roach 外表的 location 只能限定一个。 GAUSS-04550: "could not close roach %s" SQLSTATE: XX000 -错误原因:系统内部错误。roach导出结束后不能正常关闭。 +错误原因:系统内部错误。 roach 导出结束后不能正常关闭。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04551----GAUSS-04560.md b/content/zh/docs/Developerguide/GAUSS-04551----GAUSS-04560.md index b562fb73d..2bcbb5a43 100644 --- a/content/zh/docs/Developerguide/GAUSS-04551----GAUSS-04560.md +++ b/content/zh/docs/Developerguide/GAUSS-04551----GAUSS-04560.md @@ -4,7 +4,7 @@ GAUSS-04551: "could not write to roach" SQLSTATE: XX000 -错误原因:系统内部错误。roach导出时报错。 +错误原因:系统内部错误。 roach 导出时报错。 解决办法:请联系技术支持工程师提供技术支持。 @@ -54,7 +54,7 @@ SQLSTATE: XX000 错误原因:已分配的内存在释放时未发现。 -解决办法:避免double free而导致报错。 +解决办法:避免 double free 而导致报错。 GAUSS-04559: "Error happen when execute memcpy\_s:%d in reallocating aliged memory" @@ -68,7 +68,7 @@ GAUSS-04560: "unsupport to get memory size under aligned memory allocator" SQLSTATE: XX000 -错误原因:在对齐内存上下文处理时,不支持GetChunkSpace函数。 +错误原因:在对齐内存上下文处理时,不支持 GetChunkSpace 函数。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04561----GAUSS-04570.md b/content/zh/docs/Developerguide/GAUSS-04561----GAUSS-04570.md index 91f46fe87..b01108343 100644 --- a/content/zh/docs/Developerguide/GAUSS-04561----GAUSS-04570.md +++ b/content/zh/docs/Developerguide/GAUSS-04561----GAUSS-04570.md @@ -4,7 +4,7 @@ GAUSS-04562: "unsupport to reallocate memory under stack memory allocator" SQLSTATE: XX000 -错误原因:在栈式内存上下文处理时,不支持realloc函数。 +错误原因:在栈式内存上下文处理时,不支持 realloc 函数。 解决办法:请联系技术支持工程师提供技术支持。 @@ -12,7 +12,7 @@ GAUSS-04563: "unsupport to get memory size under stack memory allocator" SQLSTATE: XX000 -错误原因:在栈式内存上下文处理时,不支持GetChunkSpace函数。 +错误原因:在栈式内存上下文处理时,不支持 GetChunkSpace 函数。 解决办法:请联系技术支持工程师提供技术支持。 @@ -38,7 +38,7 @@ SQLSTATE: XX000 错误原因:release版本不支持。 -解决办法:不建议使用。因为此特性在debug版本支持。 +解决办法:不建议使用。因为此特性在 debug 版本支持。 GAUSS-04570: "specified timestamp format is null" diff --git a/content/zh/docs/Developerguide/GAUSS-04571----GAUSS-04580.md b/content/zh/docs/Developerguide/GAUSS-04571----GAUSS-04580.md index de9c4fb0e..e7c1f8241 100644 --- a/content/zh/docs/Developerguide/GAUSS-04571----GAUSS-04580.md +++ b/content/zh/docs/Developerguide/GAUSS-04571----GAUSS-04580.md @@ -6,7 +6,7 @@ SQLSTATE: 22007 错误原因:SQL参数不对。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 GAUSS-04573: "specified time format is null" @@ -44,7 +44,7 @@ GAUSS-04578: "ExpectedEntries should be \> 0 and < 10000000." SQLSTATE: XX000 -错误原因:创建bloom filter时指定的元素预期个数超过了允许的范畴。 +错误原因:创建 bloom filter 时指定的元素预期个数超过了允许的范畴。 解决办法:请联系技术支持工程师提供技术支持。减少指定元素的个数。 diff --git a/content/zh/docs/Developerguide/GAUSS-04581----GAUSS-04590.md b/content/zh/docs/Developerguide/GAUSS-04581----GAUSS-04590.md index ad9423c98..46e2fd74c 100644 --- a/content/zh/docs/Developerguide/GAUSS-04581----GAUSS-04590.md +++ b/content/zh/docs/Developerguide/GAUSS-04581----GAUSS-04590.md @@ -4,23 +4,23 @@ GAUSS-04581: "BloomFilters are not compatible for merging." SQLSTATE: XX000 -错误原因:对两个系数不同的bloom filter对象执行合并操作。 +错误原因:对两个系数不同的 bloom filter 对象执行合并操作。 -解决办法:请联系技术支持工程师提供技术支持。不允许两个不同系数的bloom filter对象执行合并操作。 +解决办法:请联系技术支持工程师提供技术支持。不允许两个不同系数的 bloom filter 对象执行合并操作。 GAUSS-04582: "Failed to get enviroment parameter $GAUSSHOME or it is NULL, please set $GAUSSHOME as your installation directory!" SQLSTATE: 22004 -错误原因:加载ir文件依赖于环境变量GAUSSHOME,如果未设置GAUSSHOME,则报错处理避免后续无效操作。 +错误原因:加载 ir 文件依赖于环境变量 GAUSSHOME ,如果未设置 GAUSSHOME ,则报错处理避免后续无效操作。 -解决办法:检查是否设置环境变量GAUSSHOME,如果没有GAUSSHOME环境变量,需要进行设置。 +解决办法:检查是否设置环境变量 GAUSSHOME ,如果没有 GAUSSHOME 环境变量,需要进行设置。 GAUSS-04584: "Codegen failed on the procedure of ExecVecQual!" SQLSTATE: XX000 -错误原因:在生成总体IR函数时,若有一个表达式未正确处理,则使用codegen功能失败。 +错误原因:在生成总体 IR 函数时,若有一个表达式未正确处理,则使用 codegen 功能失败。 解决办法:请联系技术支持工程师提供技术支持。确认该查询是否符合代码生成要求并设置enable\_codegen=off。 diff --git a/content/zh/docs/Developerguide/GAUSS-04591----GAUSS-04600.md b/content/zh/docs/Developerguide/GAUSS-04591----GAUSS-04600.md index db8e9f451..27f2b3abc 100644 --- a/content/zh/docs/Developerguide/GAUSS-04591----GAUSS-04600.md +++ b/content/zh/docs/Developerguide/GAUSS-04591----GAUSS-04600.md @@ -4,7 +4,7 @@ GAUSS-04591: "Failed to create LLVM state object ExecutionEngine: %s" SQLSTATE: 42704 -错误原因:在编译当前module时,需要将module挂靠在一个execution engine上。如果创建该execution engine失败,则报错处理,避免下一步无效操作。 +错误原因:在编译当前 module 时,需要将 module 挂靠在一个 execution engine 上。如果创建该 execution engine 失败,则报错处理,避免下一步无效操作。 解决办法:请重新尝试或设置enable\_codegen=off完成该查询。 @@ -12,7 +12,7 @@ GAUSS-04592: "Codegen failed on verifying IR function %s." SQLSTATE: 42883 -错误原因:根据代码得到的IR函数是无效的或逻辑存在缺陷。 +错误原因:根据代码得到的 IR 函数是无效的或逻辑存在缺陷。 解决办法:设置enable\_codegen=off来规避该问题。请联系技术支持工程师提供技术支持。 @@ -20,7 +20,7 @@ GAUSS-04593: "Failed to create llvm function prototype." SQLSTATE: XX000 -错误原因:声明LLVM函数原型失败,报错处理。 +错误原因:声明 LLVM 函数原型失败,报错处理。 解决办法:请重试或设置enable\_codegen=off。 @@ -36,31 +36,31 @@ GAUSS-04597: "Failed on getting IR function : LLVMIRtexteq!\\n" SQLSTATE: XX000 -错误原因:从当前LLVM module中未找到该LLVMIRtexteq函数,为避免后续无效调用,报错处理。 +错误原因:从当前 LLVM module 中未找到该 LLVMIRtexteq 函数,为避免后续无效调用,报错处理。 -解决办法:避免对应IR文件的ll文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 +解决办法:避免对应 IR 文件的 ll 文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 GAUSS-04598: "Failed on getting IR function : LLVMIRtextlt!\\n" SQLSTATE: XX000 -错误原因:从当前LLVM module中未找到该LLVMIRtextlt函数,为避免后续无效调用,报错处理。 +错误原因:从当前 LLVM module 中未找到该 LLVMIRtextlt 函数,为避免后续无效调用,报错处理。 -解决办法:避免对应IR文件的ll文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 +解决办法:避免对应 IR 文件的 ll 文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 GAUSS-04599: "Failed on getting IR function : LLVMIRtextgt!\\n" SQLSTATE: XX000 -错误原因:从当前LLVM module中未找到该LLVMIRtextgt函数,为避免后续无效调用,报错处理。 +错误原因:从当前 LLVM module 中未找到该 LLVMIRtextgt 函数,为避免后续无效调用,报错处理。 -解决办法:避免对应IR文件的ll文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 +解决办法:避免对应 IR 文件的 ll 文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 GAUSS-04600: "Failed on getting IR function : LLVMIRsubstring!\\n" SQLSTATE: XX000 -错误原因:从当前LLVM module中未找到该LLVMIRsubstring函数,未避免后续无效调用,报错处理。 +错误原因:从当前 LLVM module 中未找到该 LLVMIRsubstring 函数,未避免后续无效调用,报错处理。 -解决办法:避免对应IR文件的ll文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 +解决办法:避免对应 IR 文件的 ll 文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 diff --git a/content/zh/docs/Developerguide/GAUSS-04601----GAUSS-04610.md b/content/zh/docs/Developerguide/GAUSS-04601----GAUSS-04610.md index 202870523..20b7d8b21 100644 --- a/content/zh/docs/Developerguide/GAUSS-04601----GAUSS-04610.md +++ b/content/zh/docs/Developerguide/GAUSS-04601----GAUSS-04610.md @@ -4,73 +4,73 @@ GAUSS-04601: "Failed on getting IR function : LLVMIRrtrim1!\\n" SQLSTATE: XX000 -错误原因:对应IR文件的ll文件中包含该函数实现。 +错误原因:对应 IR 文件的 ll 文件中包含该函数实现。 -解决办法:避免对应IR文件的ll文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 +解决办法:避免对应 IR 文件的 ll 文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 GAUSS-04602: "Failed on getting IR function : LLVMIRbtrim1!\\n" SQLSTATE: XX000 -错误原因:从当前LLVM module中未找到该LLVMIRbtrim1函数,为避免后续无效调用,报错处理。 +错误原因:从当前 LLVM module 中未找到该 LLVMIRbtrim1 函数,为避免后续无效调用,报错处理。 -解决办法:避免对应IR文件的ll文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 +解决办法:避免对应 IR 文件的 ll 文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 GAUSS-04603: "Failed on getting IR function : LLVMIRbpchareq!\\n" SQLSTATE: XX000 -错误原因:从当前LLVM module中未找到LLVMIRbpchareq函数,为避免后续无效调用,报错处理。 +错误原因:从当前 LLVM module 中未找到 LLVMIRbpchareq 函数,为避免后续无效调用,报错处理。 -解决办法:避免对应IR文件的ll文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 +解决办法:避免对应 IR 文件的 ll 文件中包含该函数实现或设置enable\_codegen=off来规避该问题。 GAUSS-04604: "Cannot get the llvm::Intrinsic::sadd\_with\_overflow function!\\n" SQLSTATE: XX000 -错误原因:此处需要调用LLVM库中的加法函数,如果声明该加法函数失败,则报错处理。 +错误原因:此处需要调用 LLVM 库中的加法函数,如果声明该加法函数失败,则报错处理。 -解决办法:检查LLVM库及LLVM存放位置是否正确或者请联系技术支持工程师提供技术支持。 +解决办法:检查 LLVM 库及 LLVM 存放位置是否正确或者请联系技术支持工程师提供技术支持。 GAUSS-04605: "Cannot get the llvm::Intrinsic::ssub\_with\_overflow function!\\n" SQLSTATE: XX000 -错误原因:此处需要调用LLVM库中的减法函数,如果声明该减法函数失败,则报错处理。 +错误原因:此处需要调用 LLVM 库中的减法函数,如果声明该减法函数失败,则报错处理。 -解决办法:检查LLVM库及LLVM存放位置是否正确或者请联系技术支持工程师提供技术支持。 +解决办法:检查 LLVM 库及 LLVM 存放位置是否正确或者请联系技术支持工程师提供技术支持。 GAUSS-04606: "Cannot get the llvm::Intrinsic::smul\_with\_overflow function!\\n" SQLSTATE: XX000 -错误原因:此处需要调用LLVM库中的乘法函数,如果声明该乘法函数失败,则报错处理。 +错误原因:此处需要调用 LLVM 库中的乘法函数,如果声明该乘法函数失败,则报错处理。 -解决办法:检查LLVM库及LLVM存放位置是否正确或者请联系技术支持工程师提供技术支持。 +解决办法:检查 LLVM 库及 LLVM 存放位置是否正确或者请联系技术支持工程师提供技术支持。 -GAUSS-04607: "Unsupport address, cfgpath, storepath options when the filesystem is not HDFS." +GAUSS-04607: "Unsupport address, cfgpath , storepath options when the filesystem is not HDFS." SQLSTATE: XX000 -错误原因:在创建tablespace时,只有filesystem选项是HDFS时,才支持address、cfgpath、storepath选项。 +错误原因:在创建 tablespace 时,只有 filesystem 选项是 HDFS 时,才支持address、cfgpath、storepath选项。 -解决办法:请检查CREATE TABLESPACE..LOCATION address, cfgpath, storepath选项内容是否为HDFS的文件系统。 +解决办法:请检查CREATE TABLESPACE..LOCATION address, cfgpath , storepath 选项内容是否为 HDFS 的文件系统。 GAUSS-04608: "Failed to get storepath from tablespace options." SQLSTATE: XX000 -错误原因:无法从创建tablespace的选项中获取有效的storepath参数。 +错误原因:无法从创建 tablespace 的选项中获取有效的 storepath 参数。 -解决办法:请检查CREATE TABLESPACE..LOCATION语法中是否包含storepath选项。 +解决办法:请检查CREATE TABLESPACE..LOCATION语法中是否包含 storepath 选项。 GAUSS-04609: "Failed to get cfgpath from tablespace options." SQLSTATE: XX000 -错误原因:创建HDFS表空间时没有找到cfgpath参数。 +错误原因:创建 HDFS 表空间时没有找到 cfgpath 参数。 -解决办法:创建HDFS表空间时,需要指定cfgpath。 +解决办法:创建 HDFS 表空间时,需要指定 cfgpath 。 GAUSS-04610: "Failed to create directory '%s' on HDFS." diff --git a/content/zh/docs/Developerguide/GAUSS-04611----GAUSS-04620.md b/content/zh/docs/Developerguide/GAUSS-04611----GAUSS-04620.md index c774251da..b88cf85a4 100644 --- a/content/zh/docs/Developerguide/GAUSS-04611----GAUSS-04620.md +++ b/content/zh/docs/Developerguide/GAUSS-04611----GAUSS-04620.md @@ -4,9 +4,9 @@ GAUSS-04611: "tablespace HDFS path '%s' is too long." SQLSTATE: 42P17 -错误原因:HDFS表空间的cfgpath的路径太长。 +错误原因:HDFS表空间的 cfgpath 的路径太长。 -解决办法:设置路径不能超过1024。 +解决办法:设置路径不能超过 1024 。 GAUSS-04612: "Directory '%s' already in use as a tablespace on HDFS." @@ -14,13 +14,13 @@ SQLSTATE: 55006 错误原因:报错的目录已经存在,所以创建表空间失败。 -解决办法:创建表空间时重新选取一个storepath参数值。 +解决办法:创建表空间时重新选取一个 storepath 参数值。 GAUSS-04613: "Failed to drop external directory, because the cfgpath option has not been found from pg\_tablespace." SQLSTATE: XX000 -错误原因:删除表空间时,在被删除的表空间的option中没有发现cfgpath参数。 +错误原因:删除表空间时,在被删除的表空间的 option 中没有发现 cfgpath 参数。 解决办法:pg\_tablespace系统表中,已存在的表空间名称被异常修改,系统内部错误。请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04621----GAUSS-04630.md b/content/zh/docs/Developerguide/GAUSS-04621----GAUSS-04630.md index 0cd369c48..7cc935ad3 100644 --- a/content/zh/docs/Developerguide/GAUSS-04621----GAUSS-04630.md +++ b/content/zh/docs/Developerguide/GAUSS-04621----GAUSS-04630.md @@ -12,23 +12,23 @@ GAUSS-04623: "invalid GDS command: %d" SQLSTATE: XX000 -错误原因:收到了非法的GDS交互。 +错误原因:收到了非法的 GDS 交互。 -解决办法:请检查GDS外表对应的导入文件中是否存在非法数据并对文件进行数据清洗后再次导入。 +解决办法:请检查 GDS 外表对应的导入文件中是否存在非法数据并对文件进行数据清洗后再次导入。 GAUSS-04624: "Failed to deserialize command, which type is %d" SQLSTATE: XX000 -错误原因:收到了非法的GDS交互。 +错误原因:收到了非法的 GDS 交互。 -解决办法:请检查GDS外表对应的导入文件中是否存在非法数据并对文件进行数据清洗后再次导入。 +解决办法:请检查 GDS 外表对应的导入文件中是否存在非法数据并对文件进行数据清洗后再次导入。 GAUSS-04626: "Invalid schema oid: %u" SQLSTATE: 3F000 -错误原因:没有找到用户输入的schema。 +错误原因:没有找到用户输入的 schema 。 解决办法:请联系技术支持工程师提供技术支持。 @@ -36,9 +36,9 @@ GAUSS-04627: "deltamerge: This relation doesn't support vacuum deltamerge operat SQLSTATE: 42P01 -错误原因:通过语法“vacuum deltamerge \[table\_name\]”merge delta表时,该表不支持deltamerge操作。 +错误原因:通过语法“vacuum deltamerge \[table\_name\]”merge delta表时,该表不支持 deltamerge 操作。 -解决办法:请确认语法vacuum deltamerge \[table\_name\]中指定的table\_name是否为delta表。 +解决办法:请确认语法vacuum deltamerge \[table\_name\]中指定的table\_name是否为 delta 表。 GAUSS-04629: "gs\_switch\_relfilenode can be only used by redistribution tool." @@ -54,5 +54,5 @@ SQLSTATE: 22023 错误原因:DFS表空间不允许被用作默认表空间。 -解决办法:不要将DFS表空间用作默认表空间。 +解决办法:不要将 DFS 表空间用作默认表空间。 diff --git a/content/zh/docs/Developerguide/GAUSS-04631----GAUSS-04640.md b/content/zh/docs/Developerguide/GAUSS-04631----GAUSS-04640.md index ce9a4888d..ab37f017e 100644 --- a/content/zh/docs/Developerguide/GAUSS-04631----GAUSS-04640.md +++ b/content/zh/docs/Developerguide/GAUSS-04631----GAUSS-04640.md @@ -4,9 +4,9 @@ GAUSS-04631: "It is unsupported to rename database '%s' on DFS tablespace '%s'." SQLSTATE: 0A000 -错误原因:如果数据库中的表使用了DFS类型的表空间,那么该数据库不支持重命名。 +错误原因:如果数据库中的表使用了 DFS 类型的表空间,那么该数据库不支持重命名。 -解决办法:如果需要对数据库进行重命名,请确认数据库中的表未使用DFS表空间。 +解决办法:如果需要对数据库进行重命名,请确认数据库中的表未使用 DFS 表空间。 GAUSS-04634: "cannot alter text search configuration '%s' because other objects depend on it" @@ -20,9 +20,9 @@ GAUSS-04637: "It is not allowed to assign version option for non-dfs table." SQLSTATE: XX000 -错误原因:创建行存表或者CU格式的列存表时指定了version参数直接报错。 +错误原因:创建行存表或者 CU 格式的列存表时指定了 version 参数直接报错。 -解决办法:创建行存表或者CU格式的列存表时不要version参数。 +解决办法:创建行存表或者 CU 格式的列存表时不要 version 参数。 GAUSS-04638: "Unsupport '%s' option" @@ -36,7 +36,7 @@ GAUSS-04639: "Invalid string for 'VERSION' option" SQLSTATE: XX000 -错误原因:无效的version参数。 +错误原因:无效的 version 参数。 解决办法:参数只支持0.12。 @@ -44,7 +44,7 @@ GAUSS-04640: "Num of partition keys in value-partitioned table should not be zer SQLSTATE: XX000 -错误原因:创建valuesHDFS分区表时,没有指定分区列。 +错误原因:创建 valuesHDFS 分区表时,没有指定分区列。 -解决办法:创建valuesHDFS分区表时,指定不少于1,但是不超过4的列数。 +解决办法:创建 valuesHDFS 分区表时,指定不少于 1 ,但是不超过 4 的列数。 diff --git a/content/zh/docs/Developerguide/GAUSS-04641----GAUSS-04650.md b/content/zh/docs/Developerguide/GAUSS-04641----GAUSS-04650.md index 6f4aa03b3..7ef08ddae 100644 --- a/content/zh/docs/Developerguide/GAUSS-04641----GAUSS-04650.md +++ b/content/zh/docs/Developerguide/GAUSS-04641----GAUSS-04650.md @@ -4,41 +4,41 @@ GAUSS-04641: "Num of partition keys in value-partitioned table exceeds max allow SQLSTATE: XX000 -错误原因:创建valuesHDFS分区表时,指定分区列超过四个。 +错误原因:创建 valuesHDFS 分区表时,指定分区列超过四个。 -解决办法:创建valuesHDFS分区表时,指定不少于1,但是不超过4的列数。 +解决办法:创建 valuesHDFS 分区表时,指定不少于 1 ,但是不超过 4 的列数。 GAUSS-04642: "Unsupport partition strategy '%s' feature for dfs table." SQLSTATE: XX000 -错误原因:仅支持value HDFS分区表,其余分区不支持,直接报错。 +错误原因:仅支持 value HDFS 分区表,其余分区不支持,直接报错。 -解决办法:创建分区HDFS表时,指定为value分区。 +解决办法:创建分区 HDFS 表时,指定为 value 分区。 GAUSS-04644: "Value partitioned table can only be created on DFS tablespace." SQLSTATE: 0A000 -错误原因:对于value分区,只支持在dfs表上创建。 +错误原因:对于 value 分区,只支持在 dfs 表上创建。 -解决办法:除了dfs表,其他类型表不要创建value分区。 +解决办法:除了 dfs 表,其他类型表不要创建 value 分区。 GAUSS-04645: "It is not supported to truncate foreign table '%s'." SQLSTATE: 42809 -错误原因:对于外表,不支持truncate操作。 +错误原因:对于外表,不支持 truncate 操作。 -解决办法:对于外表,不要使用truncate操作。 +解决办法:对于外表,不要使用 truncate 操作。 GAUSS-04646: "It is not supported to truncate non-table '%s'" SQLSTATE: 42809 -错误原因:对于非正常表的数据库对象,不支持truncate操作。 +错误原因:对于非正常表的数据库对象,不支持 truncate 操作。 -解决办法:对于非正常表的数据库对象,不要使用truncate操作。 +解决办法:对于非正常表的数据库对象,不要使用 truncate 操作。 GAUSS-04648: "Storage type '%s' is meaningless for column relation" @@ -54,7 +54,7 @@ SQLSTATE: 42804 错误原因:value partition 对于部分类型不支持。 -解决办法:请检查资料文档,确认value partition支持的数据类型范围。 +解决办法:请检查资料文档,确认 value partition 支持的数据类型范围。 GAUSS-04650: "can not set tablespace for partitioned relation" diff --git a/content/zh/docs/Developerguide/GAUSS-04651----GAUSS-04660.md b/content/zh/docs/Developerguide/GAUSS-04651----GAUSS-04660.md index d451df105..30c25548d 100644 --- a/content/zh/docs/Developerguide/GAUSS-04651----GAUSS-04660.md +++ b/content/zh/docs/Developerguide/GAUSS-04651----GAUSS-04660.md @@ -4,17 +4,17 @@ GAUSS-04651: "It is not supported to rename schema '%s' which includes DFS table SQLSTATE: 42939 -错误原因:当前不支持通过ALTER SCHEMA schema\_name RENAME TO new\_schema\_name语法更名包含有DFS表的SCHEMA。 +错误原因:当前不支持通过ALTER SCHEMA schema\_name RENAME TO new\_schema\_name语法更名包含有 DFS 表的 SCHEMA 。 -解决办法:请检查ALTER SCHEMA schema\_name RENAME TO new\_schema\_name语法中schema\_name中是否包含DFS表,如果存在则不允许此操作。请删除DFS表后再次做更名操作即可。 +解决办法:请检查ALTER SCHEMA schema\_name RENAME TO new\_schema\_name语法中schema\_name中是否包含 DFS 表,如果存在则不允许此操作。请删除 DFS 表后再次做更名操作即可。 GAUSS-04652: "COPY\_ROACH does not implement in CopySendEndOfRow" SQLSTATE: XX000 -错误原因:ROACH不能用于COPY TO导出。 +错误原因:ROACH不能用于 COPY TO 导出。 -解决办法:ROACH不能用于COPY TO导出。 +解决办法:ROACH不能用于 COPY TO 导出。 GAUSS-04653: "the bulkload compatible illegal chars flag is already set before bulkload starts" @@ -28,7 +28,7 @@ GAUSS-04655: "cannot specify bulkload compatibility options in BINARY mode" SQLSTATE: 42601 -错误原因:内部错误:之前导入的CopyState对象未清除。 +错误原因:内部错误:之前导入的 CopyState 对象未清除。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04661----GAUSS-04670.md b/content/zh/docs/Developerguide/GAUSS-04661----GAUSS-04670.md index 18f352ec9..03060b4f0 100644 --- a/content/zh/docs/Developerguide/GAUSS-04661----GAUSS-04670.md +++ b/content/zh/docs/Developerguide/GAUSS-04661----GAUSS-04670.md @@ -4,39 +4,39 @@ GAUSS-04662: "illegal chars conversion may confuse COPY null 0x%x" SQLSTATE: 42601 -错误原因:null导入参数设置为空格或者问号,同时又将compatible\_illegal\_chars设置为true,标识导入非法字符兼容。由于导入非法字符兼容会将非法字符转换为空格或者问号,所以会与null参数混淆引发潜在的导入错误。 +错误原因:null导入参数设置为空格或者问号,同时又将compatible\_illegal\_chars设置为 true ,标识导入非法字符兼容。由于导入非法字符兼容会将非法字符转换为空格或者问号,所以会与 null 参数混淆引发潜在的导入错误。 -解决办法:将null设置为非空格或问号的其他字符以避免与非法字符转换后产生混淆。 +解决办法:将 null 设置为非空格或问号的其他字符以避免与非法字符转换后产生混淆。 GAUSS-04663: "illegal chars conversion may confuse COPY delimiter 0x%x" SQLSTATE: 42601 -错误原因:delimiter导入参数设置为空格或者问号,同时又将compatible\_illegal\_chars设置为true,标识导入非法字符兼容。由于导入非法字符兼容会将非法字符转换为空格或者问号,所以会与delimiter参数混淆引发潜在的导入错误。 +错误原因:delimiter导入参数设置为空格或者问号,同时又将compatible\_illegal\_chars设置为 true ,标识导入非法字符兼容。由于导入非法字符兼容会将非法字符转换为空格或者问号,所以会与 delimiter 参数混淆引发潜在的导入错误。 -解决办法:将delimiter设置为非空格或问号的其他字符以避免与非法字符转换后产生混淆。 +解决办法:将 delimiter 设置为非空格或问号的其他字符以避免与非法字符转换后产生混淆。 GAUSS-04664: "illegal chars conversion may confuse COPY quote 0x%x" SQLSTATE: XX000 -错误原因:quote导入参数设置为空格或者问号,同时又将compatible\_illegal\_chars设置为true,标识导入非法字符兼容。由于导入非法字符兼容会将非法字符转换为空格或者问号,所以会与quote参数混淆引发潜在的导入错误。 +错误原因:quote导入参数设置为空格或者问号,同时又将compatible\_illegal\_chars设置为 true ,标识导入非法字符兼容。由于导入非法字符兼容会将非法字符转换为空格或者问号,所以会与 quote 参数混淆引发潜在的导入错误。 -解决办法:将quote设置为非空格或问号的其他字符以避免与非法字符转换后产生混淆。 +解决办法:将 quote 设置为非空格或问号的其他字符以避免与非法字符转换后产生混淆。 GAUSS-04665: "illegal chars conversion may confuse COPY escape 0x%x" SQLSTATE: 42601 -错误原因:escape导入参数设置为空格或者问号,同时又将compatible\_illegal\_chars设置为true,标识导入非法字符兼容。由于导入非法字符兼容会将非法字符转换为空格或者问号,所以会与escape参数混淆引发潜在的导入错误。 +错误原因:escape导入参数设置为空格或者问号,同时又将compatible\_illegal\_chars设置为 true ,标识导入非法字符兼容。由于导入非法字符兼容会将非法字符转换为空格或者问号,所以会与 escape 参数混淆引发潜在的导入错误。 -解决办法:将escape设置为非空格或问号的其他字符以避免与非法字符转换后产生混淆。 +解决办法:将 escape 设置为非空格或问号的其他字符以避免与非法字符转换后产生混淆。 GAUSS-04666: "the bulkload state isn't accordant" SQLSTATE: XX000 -错误原因:系统内部错误。全局变量缓存的CopyState与当前导入的CopyState不一致。 +错误原因:系统内部错误。全局变量缓存的 CopyState 与当前导入的 CopyState 不一致。 解决办法:请联系技术支持工程师提供技术支持。 @@ -44,7 +44,7 @@ GAUSS-04667: "Failed to get import task for dn:%s" SQLSTATE: XX000 -错误原因:GDS导入数据对于某一个DN未分配导入任务。 +错误原因:GDS导入数据对于某一个 DN 未分配导入任务。 解决办法:可尝试再次执行解决。 @@ -52,7 +52,7 @@ GAUSS-04668: "Receive wrong messge %d from GDS." SQLSTATE: XX000 -错误原因:DN从GDS端获取错误消息。 +错误原因:DN从 GDS 端获取错误消息。 解决办法:检查当前网络运行状况是否良好,可尝试再次执行解决。 @@ -60,7 +60,7 @@ GAUSS-04669: "Receive incomplete message from GDS." SQLSTATE: XX000 -错误原因:DN从GDS端获取当前未支持消息。 +错误原因:DN从 GDS 端获取当前未支持消息。 解决办法:检查当前网络运行状况是否良好,可尝试再次执行解决。 diff --git a/content/zh/docs/Developerguide/GAUSS-04681----GAUSS-04690.md b/content/zh/docs/Developerguide/GAUSS-04681----GAUSS-04690.md index 424297312..3ed595612 100644 --- a/content/zh/docs/Developerguide/GAUSS-04681----GAUSS-04690.md +++ b/content/zh/docs/Developerguide/GAUSS-04681----GAUSS-04690.md @@ -4,9 +4,9 @@ GAUSS-04681: "CUBE is limited to 12 elements" SQLSTATE: 54011 -错误原因:CUBE参数个数小于等于12。 +错误原因:CUBE参数个数小于等于 12 。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-04682: "type %s is not yet supported." @@ -14,7 +14,7 @@ SQLSTATE: 0A000 错误原因:特性不支持。 -解决办法:修改SQL Statement。 +解决办法:修改 SQL Statement 。 GAUSS-04683: "REFERENCES constraint is not yet supported." diff --git a/content/zh/docs/Developerguide/GAUSS-04691----GAUSS-04700.md b/content/zh/docs/Developerguide/GAUSS-04691----GAUSS-04700.md index fed0cd235..223f36098 100644 --- a/content/zh/docs/Developerguide/GAUSS-04691----GAUSS-04700.md +++ b/content/zh/docs/Developerguide/GAUSS-04691----GAUSS-04700.md @@ -12,15 +12,15 @@ GAUSS-04693: "For foreign table ROUNDROBIN distribution type is built-in support SQLSTATE: 0A000 -错误原因:GDS外表内建支持ROUNDROBIN分布信息,不支持在创建外表时显式添加分布信息。 +错误原因:GDS外表内建支持 ROUNDROBIN 分布信息,不支持在创建外表时显式添加分布信息。 -解决办法:在创建GDS外表时,去除指定的分布信息。 +解决办法:在创建 GDS 外表时,去除指定的分布信息。 GAUSS-04695: "Value-based partition table should have one column at least" SQLSTATE: 42601 -错误原因:基于value的分区表至少有一列。 +错误原因:基于 value 的分区表至少有一列。 解决办法:请联系技术支持工程师提供技术支持。 @@ -28,7 +28,7 @@ GAUSS-04696: "Value-Based partition table creation encounters unexpected data in SQLSTATE: XX000 -错误原因:创建value分区表时遇到了异常数据。 +错误原因:创建 value 分区表时遇到了异常数据。 解决办法:请联系技术支持工程师提供技术支持。 @@ -36,25 +36,25 @@ GAUSS-04697: "too many grouping sets present \(max 4096\)" SQLSTATE: 54001 -错误原因:分组个数不能超过4096。 +错误原因:分组个数不能超过 4096 。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-04698: "arguments to GROUPING must be grouping expressions of the associated query level" SQLSTATE: 42803 -错误原因:grouping参数没有再group by子句中找到。 +错误原因:grouping参数没有再 group by 子句中找到。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-04699: "GROUPING must have fewer than 32 arguments" SQLSTATE: 54023 -错误原因:grouping的参数个数小于32。 +错误原因:grouping的参数个数小于 32 。 -解决办法:修改SQL语句。 +解决办法:修改 SQL 语句。 GAUSS-04700: "ngram parser only support UTF8/GBK encoding" diff --git a/content/zh/docs/Developerguide/GAUSS-04701----GAUSS-04710.md b/content/zh/docs/Developerguide/GAUSS-04701----GAUSS-04710.md index eecd92270..62fcf9583 100644 --- a/content/zh/docs/Developerguide/GAUSS-04701----GAUSS-04710.md +++ b/content/zh/docs/Developerguide/GAUSS-04701----GAUSS-04710.md @@ -4,7 +4,7 @@ GAUSS-04706: "The parameter can not smaller than -1." SQLSTATE: XX000 -错误原因:入参检查,prevbit必须\>=-1。 +错误原因:入参检查, prevbit 必须\>=-1。 解决办法:请联系技术支持工程师提供技术支持。 @@ -12,7 +12,7 @@ GAUSS-04708: "Column count in table definition does not match with ORC file %s." SQLSTATE: 22000 -错误原因:表的列定义和orc文件中的列不符合。 +错误原因:表的列定义和 orc 文件中的列不符合。 解决办法:请联系技术支持工程师提供技术支持。 @@ -20,7 +20,7 @@ GAUSS-04709: "Error occurs while read row index of orc file, detail can be found SQLSTATE: 22000 -错误原因:DFS上的ORC格式文件索引数据出错。 +错误原因:DFS上的 ORC 格式文件索引数据出错。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04711----GAUSS-04720.md b/content/zh/docs/Developerguide/GAUSS-04711----GAUSS-04720.md index e61c394f4..dfd019bb4 100644 --- a/content/zh/docs/Developerguide/GAUSS-04711----GAUSS-04720.md +++ b/content/zh/docs/Developerguide/GAUSS-04711----GAUSS-04720.md @@ -6,7 +6,7 @@ SQLSTATE: 0A000 错误原因:HDFS表不支持的数据类型。 -解决办法:根据提示的信息变更定义类型为HDFS表支持类型。 +解决办法:根据提示的信息变更定义类型为 HDFS 表支持类型。 GAUSS-04715: "Invalid string for 'COMPRESSION' option." @@ -14,5 +14,5 @@ SQLSTATE: 22023 错误原因:无效的压缩模式。 -解决办法:创建表时设置正确压缩模式,HDFS只支持zlib和snappy。 +解决办法:创建表时设置正确压缩模式, HDFS 只支持 zlib 和 snappy 。 diff --git a/content/zh/docs/Developerguide/GAUSS-04721----GAUSS-04730.md b/content/zh/docs/Developerguide/GAUSS-04721----GAUSS-04730.md index 5820167ae..8d70ef7a0 100644 --- a/content/zh/docs/Developerguide/GAUSS-04721----GAUSS-04730.md +++ b/content/zh/docs/Developerguide/GAUSS-04721----GAUSS-04730.md @@ -4,15 +4,15 @@ GAUSS-04721: "The start index is over the limit." SQLSTATE: 22000 -错误原因:在HDFS表导入数据时,将上层的数据填充到底层数据流buffer过程中,导入的数据超过了buffer的最大限制。 +错误原因:在 HDFS 表导入数据时,将上层的数据填充到底层数据流 buffer 过程中,导入的数据超过了 buffer 的最大限制。 -解决办法:在对应DN日志中查看具体原因信息。 +解决办法:在对应 DN 日志中查看具体原因信息。 GAUSS-04722: "DFS connector can not be NULL when loading data into dfs table." SQLSTATE: 42704 -错误原因:HDFS导入过程中,发现和dfs的链接是无效指针。 +错误原因:HDFS导入过程中,发现和 dfs 的链接是无效指针。 解决办法:请联系技术支持工程师提供技术支持。 @@ -28,7 +28,7 @@ GAUSS-04727: "could not find operator by oid %u" SQLSTATE: 42704 -错误原因:系统内部错误。通过OID查找操作类型失败。 +错误原因:系统内部错误。通过 OID 查找操作类型失败。 解决办法:请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-04730: "We only support pushing down opExpr and null test predicates." SQLSTATE: 0A000 -错误原因:系统内部错误。仅仅支持表达式和null谓词下推。 +错误原因:系统内部错误。仅仅支持表达式和 null 谓词下推。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04731----GAUSS-04740.md b/content/zh/docs/Developerguide/GAUSS-04731----GAUSS-04740.md index c8601b19d..32fda04be 100644 --- a/content/zh/docs/Developerguide/GAUSS-04731----GAUSS-04740.md +++ b/content/zh/docs/Developerguide/GAUSS-04731----GAUSS-04740.md @@ -12,23 +12,23 @@ GAUSS-04732: "The maximum accuracy of decimal/numeric data type supported is %d SQLSTATE: 0A000 -错误原因:decimal/numeric支持的最大进度超过规定38位。 +错误原因:decimal/numeric支持的最大进度超过规定 38 位。 -解决办法:建表时定义decimal/numeric类型的精度小于或者等于38。 +解决办法:建表时定义decimal/numeric类型的精度小于或者等于 38 。 GAUSS-04737: "There is an illegal character \\'%c\\' in the option %s." SQLSTATE: 44000 -错误原因:在filename或者foldername的option中存在非法字符。 +错误原因:在 filename 或者 foldername 的 option 中存在非法字符。 -解决办法:检查flilename或者foldername路径的规范性,重新创建HDFS外表。 +解决办法:检查 flilename 或者 foldername 路径的规范性,重新创建 HDFS 外表。 GAUSS-04738: "The option %s should not be end with \\'%c\\'." SQLSTATE: 44000 -错误原因:检测filename的option以'/'结束直接报错。 +错误原因:检测 filename 的 option 以'/'结束直接报错。 -解决办法:filename的option不能以'/'结束。 +解决办法:filename的 option 不能以'/'结束。 diff --git a/content/zh/docs/Developerguide/GAUSS-04741----GAUSS-04750.md b/content/zh/docs/Developerguide/GAUSS-04741----GAUSS-04750.md index 233a5c6de..05aad15a1 100644 --- a/content/zh/docs/Developerguide/GAUSS-04741----GAUSS-04750.md +++ b/content/zh/docs/Developerguide/GAUSS-04741----GAUSS-04750.md @@ -4,15 +4,15 @@ GAUSS-04741: "The path '%s' must be an absolute path." SQLSTATE: 42P17 -错误原因:检测filename或者foldername的路径不是绝对路径。 +错误原因:检测 filename 或者 foldername 的路径不是绝对路径。 -解决办法:创建HDFS表指定的foldername或者filename必须是一个绝对路径。 +解决办法:创建 HDFS 表指定的 foldername 或者 filename 必须是一个绝对路径。 GAUSS-04742: "The address option exists illegal character: \\'%c\\'" SQLSTATE: 44000 -错误原因:HDFS的Server的address option中存在非法字符空格。 +错误原因:HDFS的 Server 的 address option 中存在非法字符空格。 解决办法:将非法字符空格去掉。 @@ -20,17 +20,17 @@ GAUSS-04744: "The count of address '%s' must be not greater than %d." SQLSTATE: 44000 -错误原因:address的数量不能超过2个。 +错误原因:address的数量不能超过 2 个。 -解决办法:创建DFS server时指定的address不能超过两个。 +解决办法:创建 DFS server 时指定的 address 不能超过两个。 GAUSS-04745: "Unsupport ipv6 foramt" SQLSTATE: 44000 -错误原因:DFS server的address不支持ipv6格式。 +错误原因:DFS server的 address 不支持 ipv6 格式。 -解决办法:创建DFS server的address改为ipv4格式。 +解决办法:创建 DFS server 的 address 改为 ipv4 格式。 GAUSS-04746: "The incorrect address format" @@ -38,7 +38,7 @@ SQLSTATE: 44000 错误原因:address的格式书写错误。 -解决办法:查看正确描述address。 +解决办法:查看正确描述 address 。 GAUSS-04747: "Failed to create DfsInsert handler when updating table." @@ -52,7 +52,7 @@ GAUSS-04748: "build global dfs space cache hash table failed" SQLSTATE: 42704 -错误原因:系统内部错误。创建全局的HDFS连接缓存失败。 +错误原因:系统内部错误。创建全局的 HDFS 连接缓存失败。 解决办法:请联系技术支持工程师提供技术支持。 @@ -68,7 +68,7 @@ GAUSS-04750: "could not initialize DFS space hash table" SQLSTATE: 42704 -错误原因:不能创建用于缓存文件序号的hash table。 +错误原因:不能创建用于缓存文件序号的 hash table 。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-04751----GAUSS-04760.md b/content/zh/docs/Developerguide/GAUSS-04751----GAUSS-04760.md index 3e31b7d5b..f91da1616 100644 --- a/content/zh/docs/Developerguide/GAUSS-04751----GAUSS-04760.md +++ b/content/zh/docs/Developerguide/GAUSS-04751----GAUSS-04760.md @@ -4,9 +4,9 @@ GAUSS-04752: "could not initialize partition pruning result cache." SQLSTATE: XX000 -错误原因:分区表导入过程中用以分区搜索的cache创建失败。 +错误原因:分区表导入过程中用以分区搜索的 cache 创建失败。 -解决办法:检查机器是否有足够的内存来创建分区收索cache。 +解决办法:检查机器是否有足够的内存来创建分区收索 cache 。 GAUSS-04753: "Unsupported data type on column:%s when forming partition signature" @@ -28,7 +28,7 @@ GAUSS-04758: "Only ORC is supported for now." SQLSTATE: 0A000 -错误原因:系统内部错误。 手册HDFS表仅支持ORC格式。 +错误原因:系统内部错误。 手册 HDFS 表仅支持 ORC 格式。 解决办法:请联系技术支持工程师提供技术支持。 @@ -44,7 +44,7 @@ GAUSS-04760: "type '%s' is not supported in DFS ORC format column store" SQLSTATE: 0A000 -错误原因:此数据类型是HDFS表不支持的。 +错误原因:此数据类型是 HDFS 表不支持的。 -解决办法:创建HDFS表时使用其他数据类型。 +解决办法:创建 HDFS 表时使用其他数据类型。 diff --git a/content/zh/docs/Developerguide/GAUSS-04761----GAUSS-04770.md b/content/zh/docs/Developerguide/GAUSS-04761----GAUSS-04770.md index 19e301812..814c69f68 100644 --- a/content/zh/docs/Developerguide/GAUSS-04761----GAUSS-04770.md +++ b/content/zh/docs/Developerguide/GAUSS-04761----GAUSS-04770.md @@ -6,31 +6,31 @@ SQLSTATE: 0A000 错误原因:行存表压缩参数指定错误。 -解决办法:修正压缩参数为yes或者no。 +解决办法:修正压缩参数为 yes 或者 no 。 GAUSS-04762: "Invalid string for 'filesystem' option." SQLSTATE: 22023 -错误原因:创建表空间时,设置的filesystem的值错误,直接报错。 +错误原因:创建表空间时,设置的 filesystem 的值错误,直接报错。 -解决办法:创建表空间时,设置的filesystem为general或者为hdfs。 +解决办法:创建表空间时,设置的 filesystem 为 general 或者为 hdfs 。 GAUSS-04764: "No storepath is specified for a DFS server." SQLSTATE: XX000 -错误原因:创建HDFS表空间时没有指定storepath。 +错误原因:创建 HDFS 表空间时没有指定 storepath 。 -解决办法:创建HDFS表空间时指定storepath。 +解决办法:创建 HDFS 表空间时指定 storepath 。 GAUSS-04765: "current text search configuration doesnot support options" SQLSTATE: 22023 -错误原因:当前的configuration不支持options。 +错误原因:当前的 configuration 不支持 options 。 -解决办法:按照文档修改SQL语句。 +解决办法:按照文档修改 SQL 语句。 GAUSS-04766: "CUListWrite: Cannot allocate memory" @@ -55,7 +55,7 @@ GAUSS-04770: "write cu failed, colid\(%d\) cuid\(%u\), offset\(%lu\), size\(%d\) SQLSTATE: XX000 -错误原因:异步IO写数据文件操作异常。 +错误原因:异步 IO 写数据文件操作异常。 解决办法:从备机或者备份数据恢复集群数据文件。 diff --git a/content/zh/docs/Developerguide/GAUSS-04771----GAUSS-04780.md b/content/zh/docs/Developerguide/GAUSS-04771----GAUSS-04780.md index e59db411f..9daa5a401 100644 --- a/content/zh/docs/Developerguide/GAUSS-04771----GAUSS-04780.md +++ b/content/zh/docs/Developerguide/GAUSS-04771----GAUSS-04780.md @@ -20,7 +20,7 @@ GAUSS-04779: "The relation '%s' has no distribute type." SQLSTATE: 0A000 -错误原因:所查询的表没有分布类型,比如在CN查询desc表。 +错误原因:所查询的表没有分布类型,比如在 CN 查询 desc 表。 -解决办法:此类表只可以在DN查询。 +解决办法:此类表只可以在 DN 查询。 diff --git a/content/zh/docs/Developerguide/GAUSS-04781----GAUSS-04790.md b/content/zh/docs/Developerguide/GAUSS-04781----GAUSS-04790.md index cbebe669f..67a9e71b9 100644 --- a/content/zh/docs/Developerguide/GAUSS-04781----GAUSS-04790.md +++ b/content/zh/docs/Developerguide/GAUSS-04781----GAUSS-04790.md @@ -4,17 +4,17 @@ GAUSS-04781: "Upper-level GROUPING found where not expected" SQLSTATE: XX000 -错误原因:上层的grouping不能存在于subplan中。 +错误原因:上层的 grouping 不能存在于 subplan 中。 -解决办法:重新写语义相同的SQL语句。 +解决办法:重新写语义相同的 SQL 语句。 GAUSS-04782: "GROUPING found where not expected" SQLSTATE: XX000 -错误原因:where等字句中不能含有grouping。 +错误原因:where等字句中不能含有 grouping 。 -解决办法:请修改SQL语句。 +解决办法:请修改 SQL 语句。 GAUSS-04783: "ORDER/GROUP BY expression not found in list" diff --git a/content/zh/docs/Developerguide/GAUSS-04791----GAUSS-04800.md b/content/zh/docs/Developerguide/GAUSS-04791----GAUSS-04800.md index bef180959..1510c690e 100644 --- a/content/zh/docs/Developerguide/GAUSS-04791----GAUSS-04800.md +++ b/content/zh/docs/Developerguide/GAUSS-04791----GAUSS-04800.md @@ -1,74 +1,74 @@ -# GAUSS-04791 -- GAUSS-04800 - -GAUSS-04791: "invalid hashbucketId syntax" - -SQLSTATE: 42602 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04792: "Cannot drop all buckets" - -SQLSTATE: D0011 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04793: "Invalid bucket id %u, max bucket id is %d" - -SQLSTATE: 22023 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04794: "invalid relation file path %s for relpath\_parse\_rnode" - -SQLSTATE: 22023 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04795: "Failed to write data to the dfs file list, error code: %d" - -SQLSTATE: 无 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04796: "grant to public operation is forbidden in security mode" - -SQLSTATE: 0LP01 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04797: "Forbid grant language c to user with grant option." - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04798: "Forbid grant language c to public." - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04800: "Only roles with sysadmin or createdb privileges can do GRANT/REVOKE." - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-04791 -- GAUSS-04800 + +GAUSS-04791: "invalid hashbucketId syntax" + +SQLSTATE: 42602 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04792: "Cannot drop all buckets" + +SQLSTATE: D0011 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04793: "Invalid bucket id %u, max bucket id is %d" + +SQLSTATE: 22023 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04794: "invalid relation file path %s for relpath\_parse\_rnode" + +SQLSTATE: 22023 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04795: "Failed to write data to the dfs file list, error code: %d" + +SQLSTATE: 无 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04796: "grant to public operation is forbidden in security mode" + +SQLSTATE: 0LP01 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04797: "Forbid grant language c to user with grant option." + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04798: "Forbid grant language c to public." + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04800: "Only roles with sysadmin or createdb privileges can do GRANT/REVOKE." + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-04801----GAUSS-04810.md b/content/zh/docs/Developerguide/GAUSS-04801----GAUSS-04810.md index bd00948a4..f8b9c1e55 100644 --- a/content/zh/docs/Developerguide/GAUSS-04801----GAUSS-04810.md +++ b/content/zh/docs/Developerguide/GAUSS-04801----GAUSS-04810.md @@ -1,58 +1,58 @@ -# GAUSS-04801 -- GAUSS-04810 - -GAUSS-04803: "cache lookup failed for data source %u" - -SQLSTATE: 29P01 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04804: "computing nodegroup is not a valid group." - -SQLSTATE: 22000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04805: "directory with OID %u does not exist" - -SQLSTATE: 42704 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04807: "data source with OID %u does not exist" - -SQLSTATE: 42704 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04808: "synonym with OID %u does not exist" - -SQLSTATE: 42704 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04809: "Invalid Oid of local index %u on the partition %u." - -SQLSTATE: 42704 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04810: "cache lookup failed for directory %u" - -SQLSTATE: 29P01 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-04801 -- GAUSS-04810 + +GAUSS-04803: "cache lookup failed for data source %u" + +SQLSTATE: 29P01 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04804: "computing nodegroup is not a valid group." + +SQLSTATE: 22000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04805: "directory with OID %u does not exist" + +SQLSTATE: 42704 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04807: "data source with OID %u does not exist" + +SQLSTATE: 42704 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04808: "synonym with OID %u does not exist" + +SQLSTATE: 42704 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04809: "Invalid Oid of local index %u on the partition %u." + +SQLSTATE: 42704 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04810: "cache lookup failed for directory %u" + +SQLSTATE: 29P01 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-04911----GAUSS-04920.md b/content/zh/docs/Developerguide/GAUSS-04911----GAUSS-04920.md index af91c07db..2753b2dc2 100644 --- a/content/zh/docs/Developerguide/GAUSS-04911----GAUSS-04920.md +++ b/content/zh/docs/Developerguide/GAUSS-04911----GAUSS-04920.md @@ -1,82 +1,82 @@ -# GAUSS-04911 -- GAUSS-04920 - -GAUSS-04911: "empty password returned by client" - -SQLSTATE: 28P01 - -错误原因: 客户端返回的密码为空。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04912: "Could not get user information on this platform" - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04913: "could not look up local user ID %ld: %s" - -SQLSTATE: D0011 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04914: "could not create SSL context : %s.\)" - -SQLSTATE: 无 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04915: "certificate file '%s' has group or world access" - -SQLSTATE: F0000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04916: "ca certificate file '%s' has group or world access" - -SQLSTATE: F0000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04917: "DH: generating parameters \(3072 bits\) failed" - -SQLSTATE: 无 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04918: "Last read message sequence %u is not equal to the max written message sequence %u" - -SQLSTATE: 22000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04919: "alert, failed in revert command buffer, invalid params data len %d pq buffer size %d" - -SQLSTATE: 22023 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04920: "expected message sequnce is %d, actual message sequence is %d" - -SQLSTATE: 22000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-04911 -- GAUSS-04920 + +GAUSS-04911: "empty password returned by client" + +SQLSTATE: 28P01 + +错误原因: 客户端返回的密码为空。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04912: "Could not get user information on this platform" + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04913: "could not look up local user ID %ld: %s" + +SQLSTATE: D0011 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04914: "could not create SSL context : %s.\)" + +SQLSTATE: 无 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04915: "certificate file '%s' has group or world access" + +SQLSTATE: F0000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04916: "ca certificate file '%s' has group or world access" + +SQLSTATE: F0000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04917: "DH: generating parameters \(3072 bits\) failed" + +SQLSTATE: 无 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04918: "Last read message sequence %u is not equal to the max written message sequence %u" + +SQLSTATE: 22000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04919: "alert, failed in revert command buffer , invalid params data len %d pq buffer size %d" + +SQLSTATE: 22023 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04920: "expected message sequnce is %d, actual message sequence is %d" + +SQLSTATE: 22000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-04971----GAUSS-04980.md b/content/zh/docs/Developerguide/GAUSS-04971----GAUSS-04980.md index b0e184e59..df1614dac 100644 --- a/content/zh/docs/Developerguide/GAUSS-04971----GAUSS-04980.md +++ b/content/zh/docs/Developerguide/GAUSS-04971----GAUSS-04980.md @@ -1,74 +1,74 @@ -# GAUSS-04971 -- GAUSS-04980 - -GAUSS-04971: "No function matches the given arguments names. You might need to add explicit declare arguments names." - -SQLSTATE: 22023 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04972: "argname should not be null" - -SQLSTATE: 22023 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04974: "must be system admin or monitor admin to use EXECUTE DIRECT" - -SQLSTATE: 42501 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04975: "Unsupported typeoid: %d for T\_Integer value, please add single quota and try again." - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04976: "pstate-\>p\_target\_relation is NULL unexpectedly" - -SQLSTATE: 22004 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04977: "tupleDesc should not be null" - -SQLSTATE: XX005 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04978: "It is forbidden to use placeholder and dollar quoting together." - -SQLSTATE: 42601 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04979: "type '%s' must be in installation group" - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-04980: "Date type is unsupported for hdfs table in TD-format database." - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-04971 -- GAUSS-04980 + +GAUSS-04971: "No function matches the given arguments names. You might need to add explicit declare arguments names." + +SQLSTATE: 22023 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04972: "argname should not be null" + +SQLSTATE: 22023 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04974: "must be system admin or monitor admin to use EXECUTE DIRECT" + +SQLSTATE: 42501 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04975: "Unsupported typeoid: %d for T\_Integer value, please add single quota and try again." + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04976: "pstate-\>p\_target\_relation is NULL unexpectedly" + +SQLSTATE: 22004 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04977: "tupleDesc should not be null" + +SQLSTATE: XX005 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04978: "It is forbidden to use placeholder and dollar quoting together." + +SQLSTATE: 42601 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04979: "type '%s' must be in installation group" + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-04980: "Date type is unsupported for hdfs table in TD-format database." + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05001----GAUSS-05010.md b/content/zh/docs/Developerguide/GAUSS-05001----GAUSS-05010.md index 6caa1dae8..bff85114b 100644 --- a/content/zh/docs/Developerguide/GAUSS-05001----GAUSS-05010.md +++ b/content/zh/docs/Developerguide/GAUSS-05001----GAUSS-05010.md @@ -32,7 +32,7 @@ SQLSTATE: 0A000 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-05005: "Only the primary key, unique, not null and null be supported." +GAUSS-05005: "Only the primary key, unique , not null and null be supported." SQLSTATE: 0A000 diff --git a/content/zh/docs/Developerguide/GAUSS-05091----GAUSS-05100.md b/content/zh/docs/Developerguide/GAUSS-05091----GAUSS-05100.md index 671ad8f00..018495d58 100644 --- a/content/zh/docs/Developerguide/GAUSS-05091----GAUSS-05100.md +++ b/content/zh/docs/Developerguide/GAUSS-05091----GAUSS-05100.md @@ -32,7 +32,7 @@ SQLSTATE: 22023 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-05095: "you can only take append\_mode = on, off, refresh, read\_only, end\_catchup" +GAUSS-05095: "you can only take append\_mode = on, off , refresh , read\_only, end\_catchup" SQLSTATE: 22023 diff --git a/content/zh/docs/Developerguide/GAUSS-05111----GAUSS-05120.md b/content/zh/docs/Developerguide/GAUSS-05111----GAUSS-05120.md index 0d08a57f4..69a4981f8 100644 --- a/content/zh/docs/Developerguide/GAUSS-05111----GAUSS-05120.md +++ b/content/zh/docs/Developerguide/GAUSS-05111----GAUSS-05120.md @@ -1,34 +1,34 @@ -# GAUSS-05111 -- GAUSS-05120 - -GAUSS-05112: "Get buckets failed.reason:the buckets number\(%d\) is not correct\(%d\)." - -SQLSTATE: D0011 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05113: "group\_members is null for tuple %u" - -SQLSTATE: 22004 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05116: "Can not find redistributed source group with in\_redistribution 'y'." - -SQLSTATE: 42704 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05119: "NodeGroup name %s can not be preserved group name" - -SQLSTATE: 42601 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05111 -- GAUSS-05120 + +GAUSS-05112: "Get buckets failed.reason:the buckets number\(%d\) is not correct\(%d\)." + +SQLSTATE: D0011 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05113: "group\_members is null for tuple %u" + +SQLSTATE: 22004 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05116: "Can not find redistributed source group with in\_redistribution 'y'." + +SQLSTATE: 42704 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05119: "NodeGroup name %s can not be preserved group name" + +SQLSTATE: 42601 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05121----GAUSS-05130.md b/content/zh/docs/Developerguide/GAUSS-05121----GAUSS-05130.md index d2c8bcf35..945f1cb35 100644 --- a/content/zh/docs/Developerguide/GAUSS-05121----GAUSS-05130.md +++ b/content/zh/docs/Developerguide/GAUSS-05121----GAUSS-05130.md @@ -1,10 +1,10 @@ -# GAUSS-05121 -- GAUSS-05130 - -GAUSS-05126: "group\_name can not be NULL " - -SQLSTATE: XX005 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05121 -- GAUSS-05130 + +GAUSS-05126: "group\_name can not be NULL " + +SQLSTATE: XX005 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05131----GAUSS-05140.md b/content/zh/docs/Developerguide/GAUSS-05131----GAUSS-05140.md index 1da5262a7..5a52070e3 100644 --- a/content/zh/docs/Developerguide/GAUSS-05131----GAUSS-05140.md +++ b/content/zh/docs/Developerguide/GAUSS-05131----GAUSS-05140.md @@ -1,26 +1,26 @@ -# GAUSS-05131 -- GAUSS-05140 - -GAUSS-05133: "The installation group has no members." - -SQLSTATE: 58000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05137: "No destgroup in resize process" - -SQLSTATE: 42601 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05138: "NodeGroup name %s is invalid." - -SQLSTATE: 42601 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05131 -- GAUSS-05140 + +GAUSS-05133: "The installation group has no members." + +SQLSTATE: 58000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05137: "No destgroup in resize process" + +SQLSTATE: 42601 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05138: "NodeGroup name %s is invalid." + +SQLSTATE: 42601 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05141----GAUSS-05150.md b/content/zh/docs/Developerguide/GAUSS-05141----GAUSS-05150.md index a2691482e..f570f755f 100644 --- a/content/zh/docs/Developerguide/GAUSS-05141----GAUSS-05150.md +++ b/content/zh/docs/Developerguide/GAUSS-05141----GAUSS-05150.md @@ -1,18 +1,18 @@ -# GAUSS-05141 -- GAUSS-05150 - -GAUSS-05145: "cannot drop '%s' because other objects depend on it" - -SQLSTATE: 2BP01 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05150: "cannot drop '%s' because at least one role %u depend on it" - -SQLSTATE: 2BP01 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05141 -- GAUSS-05150 + +GAUSS-05145: "cannot drop '%s' because other objects depend on it" + +SQLSTATE: 2BP01 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05150: "cannot drop '%s' because at least one role %u depend on it" + +SQLSTATE: 2BP01 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05151----GAUSS-05160.md b/content/zh/docs/Developerguide/GAUSS-05151----GAUSS-05160.md index 50149ee56..a2612139f 100644 --- a/content/zh/docs/Developerguide/GAUSS-05151----GAUSS-05160.md +++ b/content/zh/docs/Developerguide/GAUSS-05151----GAUSS-05160.md @@ -1,58 +1,58 @@ -# GAUSS-05151 -- GAUSS-05160 - -GAUSS-05152: "default\_storage\_nodegroup %s not defined." - -SQLSTATE: 42710 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05153: "Bucketmap is not found with given groupoid %u" - -SQLSTATE: 42704 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05155: "Connection to database failed: %s" - -SQLSTATE: 58000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05156: "execute statement: %s failed: %s" - -SQLSTATE: 58000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05157: "PQtuples num is invalid : %d" - -SQLSTATE: 58000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05158: "fail to get tables in database %s for query remain table" - -SQLSTATE: 58000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05160: "Invalid null pointer attribute for gs\_get\_nodegroup\_tablecount\(\)" - -SQLSTATE: 42P24 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05151 -- GAUSS-05160 + +GAUSS-05152: "default\_storage\_nodegroup %s not defined." + +SQLSTATE: 42710 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05153: "Bucketmap is not found with given groupoid %u" + +SQLSTATE: 42704 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05155: "Connection to database failed: %s" + +SQLSTATE: 58000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05156: "execute statement: %s failed: %s" + +SQLSTATE: 58000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05157: "PQtuples num is invalid : %d" + +SQLSTATE: 58000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05158: "fail to get tables in database %s for query remain table" + +SQLSTATE: 58000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05160: "Invalid null pointer attribute for gs\_get\_nodegroup\_tablecount\(\)" + +SQLSTATE: 42P24 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05161----GAUSS-05170.md b/content/zh/docs/Developerguide/GAUSS-05161----GAUSS-05170.md index 382676ce0..af385be63 100644 --- a/content/zh/docs/Developerguide/GAUSS-05161----GAUSS-05170.md +++ b/content/zh/docs/Developerguide/GAUSS-05161----GAUSS-05170.md @@ -54,7 +54,7 @@ SQLSTATE: XX000 错误原因:内部错误,pgxc\_node系统表被破坏或者用户自行修改过报错节点的pgxc\_node\_name参数。 -解决办法:不建议用户修改pgxc\_node\_name参数,如因错误修改导致报错参考:1. restore模式启动CN,查询pgxc\_node系统表获取nodename,根据此信息恢复配置参数。2. 以OM部署的此实例的标准日志命名恢复配置参数。 +解决办法:不建议用户修改pgxc\_node\_name参数,如因错误修改导致报错参考:1. restore模式启动 CN ,查询pgxc\_node系统表获取 nodename ,根据此信息恢复配置参数。2. 以 OM 部署的此实例的标准日志命名恢复配置参数。 GAUSS-05168: "message len is too short" diff --git a/content/zh/docs/Developerguide/GAUSS-05171----GAUSS-05180.md b/content/zh/docs/Developerguide/GAUSS-05171----GAUSS-05180.md index 9746feb51..ae7d61c3a 100644 --- a/content/zh/docs/Developerguide/GAUSS-05171----GAUSS-05180.md +++ b/content/zh/docs/Developerguide/GAUSS-05171----GAUSS-05180.md @@ -12,9 +12,9 @@ GAUSS-05172: "failed to get pooled connections" SQLSTATE: 53000 -错误原因:从pooler manager线程获取连接失败。 +错误原因:从 pooler manager 线程获取连接失败。 -解决办法:查看报错日志附近pooler manager的日志确定错误根因,并根据相应日志尝试修复。 +解决办法:查看报错日志附近 pooler manager 的日志确定错误根因,并根据相应日志尝试修复。 GAUSS-05173: "replication type is invalid in PGXCNodeGetNodeId \(nodeoid = %u, node\_type = %c" diff --git a/content/zh/docs/Developerguide/GAUSS-05221---GAUSS-05230.md b/content/zh/docs/Developerguide/GAUSS-05221---GAUSS-05230.md index 846bbca4a..f9f4bf0aa 100644 --- a/content/zh/docs/Developerguide/GAUSS-05221---GAUSS-05230.md +++ b/content/zh/docs/Developerguide/GAUSS-05221---GAUSS-05230.md @@ -32,7 +32,7 @@ SQLSTATE: 无 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-05225: "pooler: The node\(oid:%u\) has no available slot, the number of slot in use reaches upper limit!" +GAUSS-05225: "pooler: The node\(oid:%u\) has no available slot, the number of slot in use reaches upper limit !" SQLSTATE: 53300 @@ -48,7 +48,7 @@ SQLSTATE: 01000 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-05227: "pooler: Communication failure, failed to send session commands or invalid incoming data, error count: %d." +GAUSS-05227: "pooler: Communication failure, failed to send session commands or invalid incoming data , error count: %d." SQLSTATE: 08000 @@ -56,7 +56,7 @@ SQLSTATE: 08000 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-05228: "pooler: failed to create connections in parallel mode, due to failover, pending" +GAUSS-05228: "pooler: failed to create connections in parallel mode, due to failover , pending" SQLSTATE: 08006 diff --git a/content/zh/docs/Developerguide/GAUSS-05381----GAUSS-05390.md b/content/zh/docs/Developerguide/GAUSS-05381----GAUSS-05390.md index 991c2d594..4fa344b4c 100644 --- a/content/zh/docs/Developerguide/GAUSS-05381----GAUSS-05390.md +++ b/content/zh/docs/Developerguide/GAUSS-05381----GAUSS-05390.md @@ -1,82 +1,82 @@ -# GAUSS-05381 -- GAUSS-05390 - -GAUSS-05381: "unsupported function or view in %s mode." - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05382: "invalid null pointer input for text\_to\_cstring\(\)" - -SQLSTATE: XX005 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05383: "blob length: %d ,out of memory" - -SQLSTATE: 53200 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05384: "blob/bytea size:%d, only can recevie blob/bytea less than 500M " - -SQLSTATE: 53200 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05385: "unsupport type %s" - -SQLSTATE: XX004 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05386: "could not determine data type of concat\(\) input to variadic" - -SQLSTATE: 42P38 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05387: "could not determine data type of format\(\) input" - -SQLSTATE: 22023 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05388: "number is out of range" - -SQLSTATE: 22003 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05389: "format specifies argument 0, but arguments are numbered from 1" - -SQLSTATE: 22023 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05390: "width argument position must be ended by '$'" - -SQLSTATE: 22023 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05381 -- GAUSS-05390 + +GAUSS-05381: "unsupported function or view in %s mode." + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05382: "invalid null pointer input for text\_to\_cstring\(\)" + +SQLSTATE: XX005 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05383: "blob length: %d ,out of memory" + +SQLSTATE: 53200 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05384: "blob/bytea size:%d, only can recevie blob/bytea less than 500M " + +SQLSTATE: 53200 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05385: "unsupport type %s" + +SQLSTATE: XX004 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05386: "could not determine data type of concat\(\) input to variadic" + +SQLSTATE: 42P38 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05387: "could not determine data type of format\(\) input" + +SQLSTATE: 22023 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05388: "number is out of range" + +SQLSTATE: 22003 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05389: "format specifies argument 0, but arguments are numbered from 1" + +SQLSTATE: 22023 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05390: "width argument position must be ended by '$'" + +SQLSTATE: 22023 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05391----GAUSS-05400.md b/content/zh/docs/Developerguide/GAUSS-05391----GAUSS-05400.md index fde3eb1b7..b3c228c28 100644 --- a/content/zh/docs/Developerguide/GAUSS-05391----GAUSS-05400.md +++ b/content/zh/docs/Developerguide/GAUSS-05391----GAUSS-05400.md @@ -1,74 +1,74 @@ -# GAUSS-05391 -- GAUSS-05400 - -GAUSS-05391: "ACL string cannot be NULL." - -SQLSTATE: 22P02 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05392: "ACL item cannot be NULL." - -SQLSTATE: 22P02 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05394: "hash num out of the int max, \[%ld\]" - -SQLSTATE: 22000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05395: "input julian date is overflow" - -SQLSTATE: 22023 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05396: "the interval value is overflow, it can not perform as oracle interval-style" - -SQLSTATE: 22003 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05397: "could not stat bucket dir '%s': %m" - -SQLSTATE: 无 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05398: "rel path is not a dir '%s': %m" - -SQLSTATE: 无 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05399: "could not stat file under bucket dir '%s': %m" - -SQLSTATE: 无 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05400: "expected 1 row, actual %u row" - -SQLSTATE: YY015 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05391 -- GAUSS-05400 + +GAUSS-05391: "ACL string cannot be NULL." + +SQLSTATE: 22P02 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05392: "ACL item cannot be NULL." + +SQLSTATE: 22P02 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05394: "hash num out of the int max, \[%ld\]" + +SQLSTATE: 22000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05395: "input julian date is overflow" + +SQLSTATE: 22023 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05396: "the interval value is overflow, it can not perform as oracle interval-style" + +SQLSTATE: 22003 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05397: "could not stat bucket dir '%s': %m" + +SQLSTATE: 无 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05398: "rel path is not a dir '%s': %m" + +SQLSTATE: 无 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05399: "could not stat file under bucket dir '%s': %m" + +SQLSTATE: 无 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05400: "expected 1 row, actual %u row" + +SQLSTATE: YY015 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05451----GAUSS-05460.md b/content/zh/docs/Developerguide/GAUSS-05451----GAUSS-05460.md index 92dea1e27..47c47d0aa 100644 --- a/content/zh/docs/Developerguide/GAUSS-05451----GAUSS-05460.md +++ b/content/zh/docs/Developerguide/GAUSS-05451----GAUSS-05460.md @@ -8,7 +8,7 @@ SQLSTATE: 无 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-05452: "bogus data in lock file '%s': '%s', please kill the instance process, than remove the damaged lock file" +GAUSS-05452: "bogus data in lock file '%s': '%s', please kill the instance process , than remove the damaged lock file" SQLSTATE: 无 diff --git a/content/zh/docs/Developerguide/GAUSS-05471----GAUSS-05480.md b/content/zh/docs/Developerguide/GAUSS-05471----GAUSS-05480.md index 736b039e5..0bc5b2f00 100644 --- a/content/zh/docs/Developerguide/GAUSS-05471----GAUSS-05480.md +++ b/content/zh/docs/Developerguide/GAUSS-05471----GAUSS-05480.md @@ -1,74 +1,74 @@ -# GAUSS-05471 -- GAUSS-05480 - -GAUSS-05472: "permission denied to set role '%s'" - -SQLSTATE: 42501 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05473: "first stage encryption password failed" - -SQLSTATE: 28P01 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05474: "second stage encryption password failed" - -SQLSTATE: 28P01 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05475: "Invalid password stored" - -SQLSTATE: 28P01 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05476: "replication\_type is not allowed set 1 in Current Version. Set to default \(0\)." - -SQLSTATE: 22023 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05477: "Length of file or line is too long." - -SQLSTATE: F0000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05478: "Failed to initilize the memory\(%uM\) of search server, maybe it exceed the half of maxChunksPerProcess\(%dM\)." - -SQLSTATE: 53200 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05479: "invalid operation on memory context" - -SQLSTATE: D0011 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05480: "We can not set memory context parent with different session number" - -SQLSTATE: 无 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05471 -- GAUSS-05480 + +GAUSS-05472: "permission denied to set role '%s'" + +SQLSTATE: 42501 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05473: "first stage encryption password failed" + +SQLSTATE: 28P01 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05474: "second stage encryption password failed" + +SQLSTATE: 28P01 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05475: "Invalid password stored" + +SQLSTATE: 28P01 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05476: "replication\_type is not allowed set 1 in Current Version. Set to default \(0\)." + +SQLSTATE: 22023 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05477: "Length of file or line is too long." + +SQLSTATE: F0000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05478: "Failed to initilize the memory\(%uM\) of search server, maybe it exceed the half of maxChunksPerProcess\(%dM\)." + +SQLSTATE: 53200 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05479: "invalid operation on memory context" + +SQLSTATE: D0011 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05480: "We can not set memory context parent with different session number" + +SQLSTATE: 无 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05541----GAUSS-05550.md b/content/zh/docs/Developerguide/GAUSS-05541----GAUSS-05550.md index 56e1c45dd..b26dcafa3 100644 --- a/content/zh/docs/Developerguide/GAUSS-05541----GAUSS-05550.md +++ b/content/zh/docs/Developerguide/GAUSS-05541----GAUSS-05550.md @@ -40,7 +40,7 @@ SQLSTATE: 无 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-05546: "\(r|receiver init\)\\tLibcomm init receiver threads fail, wait\(10s\) timeout, please check the machine resource usage, and try again later." +GAUSS-05546: "\(r|receiver init\)\\tLibcomm init receiver threads fail, wait\(10s\) timeout, please check the machine resource usage , and try again later." SQLSTATE: 无 diff --git a/content/zh/docs/Developerguide/GAUSS-05551----GAUSS-05560.md b/content/zh/docs/Developerguide/GAUSS-05551----GAUSS-05560.md index 8ff23d689..7910ce73a 100644 --- a/content/zh/docs/Developerguide/GAUSS-05551----GAUSS-05560.md +++ b/content/zh/docs/Developerguide/GAUSS-05551----GAUSS-05560.md @@ -72,7 +72,7 @@ SQLSTATE: 22023 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-05560: "for ODBC driver, we need a DSN!" +GAUSS-05560: "for ODBC driver, we need a DSN !" SQLSTATE: 22023 diff --git a/content/zh/docs/Developerguide/GAUSS-05691----GAUSS-05700.md b/content/zh/docs/Developerguide/GAUSS-05691----GAUSS-05700.md index a36079b67..39c6113e8 100644 --- a/content/zh/docs/Developerguide/GAUSS-05691----GAUSS-05700.md +++ b/content/zh/docs/Developerguide/GAUSS-05691----GAUSS-05700.md @@ -8,7 +8,7 @@ SQLSTATE: 39000 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-05692: "it's an encrypted cluster, but parameter not initialized!" +GAUSS-05692: "it's an encrypted cluster, but parameter not initialized !" SQLSTATE: 无 diff --git a/content/zh/docs/Developerguide/GAUSS-05701----GAUSS-05710.md b/content/zh/docs/Developerguide/GAUSS-05701----GAUSS-05710.md index 8943d46a2..7967fc468 100644 --- a/content/zh/docs/Developerguide/GAUSS-05701----GAUSS-05710.md +++ b/content/zh/docs/Developerguide/GAUSS-05701----GAUSS-05710.md @@ -16,7 +16,7 @@ SQLSTATE: 22023 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-05703: "Decrypt transparent\_encrypted\_string failed, please check it!\\n" +GAUSS-05703: "Decrypt transparent\_encrypted\_string failed, please check it !\\n" SQLSTATE: 22023 diff --git a/content/zh/docs/Developerguide/GAUSS-05811----GAUSS-05820.md b/content/zh/docs/Developerguide/GAUSS-05811----GAUSS-05820.md index cd264f67f..f5a8a76e3 100644 --- a/content/zh/docs/Developerguide/GAUSS-05811----GAUSS-05820.md +++ b/content/zh/docs/Developerguide/GAUSS-05811----GAUSS-05820.md @@ -1,34 +1,34 @@ -# GAUSS-05811 -- GAUSS-05820 - -GAUSS-05811: "redundant options: 'io\_priority'" - -SQLSTATE: 22002 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05812: "io\_priority can only be named as 'High', 'Low', 'Medium' and 'None'." - -SQLSTATE: 22023 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05813: "redundant options: 'nodegroup'" - -SQLSTATE: 22002 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05819: "redundant options: 'is\_foreign'" - -SQLSTATE: 22002 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05811 -- GAUSS-05820 + +GAUSS-05811: "redundant options: 'io\_priority'" + +SQLSTATE: 22002 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05812: "io\_priority can only be named as 'High', 'Low', 'Medium' and 'None'." + +SQLSTATE: 22023 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05813: "redundant options: 'nodegroup'" + +SQLSTATE: 22002 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05819: "redundant options: 'is\_foreign'" + +SQLSTATE: 22002 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05821----GAUSS-05830.md b/content/zh/docs/Developerguide/GAUSS-05821----GAUSS-05830.md index cf74db853..657f00f32 100644 --- a/content/zh/docs/Developerguide/GAUSS-05821----GAUSS-05830.md +++ b/content/zh/docs/Developerguide/GAUSS-05821----GAUSS-05830.md @@ -1,34 +1,34 @@ -# GAUSS-05821 -- GAUSS-05830 - -GAUSS-05823: "Can't modify is\_foreign option when altering resource pool." - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05826: "Can't create parent resource pool used for foreign users." - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05827: "cannot get resource pool information of %u" - -SQLSTATE: 22004 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05828: "cache lookup failed for resource pool id %u, it is removed?" - -SQLSTATE: 22023 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05821 -- GAUSS-05830 + +GAUSS-05823: "Can't modify is\_foreign option when altering resource pool." + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05826: "Can't create parent resource pool used for foreign users." + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05827: "cannot get resource pool information of %u" + +SQLSTATE: 22004 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05828: "cache lookup failed for resource pool id %u, it is removed?" + +SQLSTATE: 22023 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05831----GAUSS-05840.md b/content/zh/docs/Developerguide/GAUSS-05831----GAUSS-05840.md index b0aeace6e..6e4be85d6 100644 --- a/content/zh/docs/Developerguide/GAUSS-05831----GAUSS-05840.md +++ b/content/zh/docs/Developerguide/GAUSS-05831----GAUSS-05840.md @@ -1,66 +1,66 @@ -# GAUSS-05831 -- GAUSS-05840 - -GAUSS-05833: "The create resource pool statement buffer is too small\(%d\)." - -SQLSTATE: 42P26 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05834: "must be system admin or vcadmin to create resource pool" - -SQLSTATE: 42501 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05835: "default session\_respool 'invalid\_pool' is not allowed to set by user" - -SQLSTATE: 42602 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05836: "The memory of resource pool htab cannot be out of %dMB. please drop the unnecessary resource pools" - -SQLSTATE: 42P26 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05837: "must be system admin or vcadmin to change resource pools" - -SQLSTATE: 42501 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05838: "user %u does not exist" - -SQLSTATE: 42704 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05839: "user set perm space failed because its used perm space is out of perm space limit." - -SQLSTATE: 22023 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05840: "user set temp space failed because its used temp space is out of temp space limit." - -SQLSTATE: 22023 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05831 -- GAUSS-05840 + +GAUSS-05833: "The create resource pool statement buffer is too small\(%d\)." + +SQLSTATE: 42P26 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05834: "must be system admin or vcadmin to create resource pool" + +SQLSTATE: 42501 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05835: "default session\_respool 'invalid\_pool' is not allowed to set by user" + +SQLSTATE: 42602 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05836: "The memory of resource pool htab cannot be out of %dMB. please drop the unnecessary resource pools" + +SQLSTATE: 42P26 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05837: "must be system admin or vcadmin to change resource pools" + +SQLSTATE: 42501 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05838: "user %u does not exist" + +SQLSTATE: 42704 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05839: "user set perm space failed because its used perm space is out of perm space limit." + +SQLSTATE: 22023 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05840: "user set temp space failed because its used temp space is out of temp space limit." + +SQLSTATE: 22023 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05861----GAUSS-05870.md b/content/zh/docs/Developerguide/GAUSS-05861----GAUSS-05870.md index 94fd9ee04..50c4d3f85 100644 --- a/content/zh/docs/Developerguide/GAUSS-05861----GAUSS-05870.md +++ b/content/zh/docs/Developerguide/GAUSS-05861----GAUSS-05870.md @@ -1,42 +1,42 @@ -# GAUSS-05861 -- GAUSS-05870 - -GAUSS-05862: "session\_respool name '%s' does not exist" - -SQLSTATE: 42602 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05863: "parent resource pool '%s' cannot be used as sesion\_respool" - -SQLSTATE: 42809 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05864: "resource pool '%s' is not in logical cluster '%s'." - -SQLSTATE: 22023 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05869: "Error: environment variable '%s' contain invaild symbol '%s'.\\n" - -SQLSTATE: 22023 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05870: "Cgroup is not mounted or enable\_control\_group is false" - -SQLSTATE: 0B000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05861 -- GAUSS-05870 + +GAUSS-05862: "session\_respool name '%s' does not exist" + +SQLSTATE: 42602 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05863: "parent resource pool '%s' cannot be used as sesion\_respool" + +SQLSTATE: 42809 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05864: "resource pool '%s' is not in logical cluster '%s'." + +SQLSTATE: 22023 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05869: "Error: environment variable '%s' contain invaild symbol '%s'.\\n" + +SQLSTATE: 22023 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05870: "Cgroup is not mounted or enable\_control\_group is false" + +SQLSTATE: 0B000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05881----GAUSS-05890.md b/content/zh/docs/Developerguide/GAUSS-05881----GAUSS-05890.md index b37b1e9a8..52991cf33 100644 --- a/content/zh/docs/Developerguide/GAUSS-05881----GAUSS-05890.md +++ b/content/zh/docs/Developerguide/GAUSS-05881----GAUSS-05890.md @@ -1,66 +1,66 @@ -# GAUSS-05881 -- GAUSS-05890 - -GAUSS-05881: "out of memory of current memory." - -SQLSTATE: 53200 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05882: "Central node is recovering now, please retry later." - -SQLSTATE: 08006 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05885: "client recover failed" - -SQLSTATE: 58000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05886: "records is NULL." - -SQLSTATE: XX000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05887: "out of memory of records." - -SQLSTATE: 53200 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05888: "dynamic workload record number is not correct!" - -SQLSTATE: XX000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05889: "invalid retcode \[%d\]" - -SQLSTATE: 无 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05890: "invalid paras." - -SQLSTATE: 22023 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05881 -- GAUSS-05890 + +GAUSS-05881: "out of memory of current memory." + +SQLSTATE: 53200 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05882: "Central node is recovering now, please retry later." + +SQLSTATE: 08006 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05885: "client recover failed" + +SQLSTATE: 58000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05886: "records is NULL." + +SQLSTATE: XX000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05887: "out of memory of records." + +SQLSTATE: 53200 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05888: "dynamic workload record number is not correct!" + +SQLSTATE: XX000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05889: "invalid retcode \[%d\]" + +SQLSTATE: 无 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05890: "invalid paras." + +SQLSTATE: 22023 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05961----GAUSS-05970.md b/content/zh/docs/Developerguide/GAUSS-05961----GAUSS-05970.md index 136df9dc3..2fa9f28bd 100644 --- a/content/zh/docs/Developerguide/GAUSS-05961----GAUSS-05970.md +++ b/content/zh/docs/Developerguide/GAUSS-05961----GAUSS-05970.md @@ -1,50 +1,50 @@ -# GAUSS-05961 -- GAUSS-05970 - -GAUSS-05961: "permission denied to alter tablespace in security mode" - -SQLSTATE: 42501 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05962: "It is unsupported to reset 'filesystem' option." - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05963: "It is unsupported to alter general tablespace to hdfs tablespace." - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05964: "Tablespace '%u' does not exist." - -SQLSTATE: 58P01 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05965: "Can not get tablespace size with SnapshotNow after try 3 times." - -SQLSTATE: P0002 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05970: "conflicting or redundant option: 'resource pool'" - -SQLSTATE: 42601 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05961 -- GAUSS-05970 + +GAUSS-05961: "permission denied to alter tablespace in security mode" + +SQLSTATE: 42501 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05962: "It is unsupported to reset 'filesystem' option." + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05963: "It is unsupported to alter general tablespace to hdfs tablespace." + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05964: "Tablespace '%u' does not exist." + +SQLSTATE: 58P01 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05965: "Can not get tablespace size with SnapshotNow after try 3 times." + +SQLSTATE: P0002 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05970: "conflicting or redundant option: 'resource pool'" + +SQLSTATE: 42601 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05971----GAUSS-05980.md b/content/zh/docs/Developerguide/GAUSS-05971----GAUSS-05980.md index 2481a7824..41059bf15 100644 --- a/content/zh/docs/Developerguide/GAUSS-05971----GAUSS-05980.md +++ b/content/zh/docs/Developerguide/GAUSS-05971----GAUSS-05980.md @@ -1,42 +1,42 @@ -# GAUSS-05971 -- GAUSS-05980 - -GAUSS-05971: "conflicting or redundant option: 'user group default'" - -SQLSTATE: 42601 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05972: "conflictiong or redundant option: 'spill space'" - -SQLSTATE: 42601 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05975: "Can not create role with resource pool \(%s\) with foreign users option." - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05976: "parent cannot be itself." - -SQLSTATE: 0P000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05977: "Role '%s': object not defined." - -SQLSTATE: 42704 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05971 -- GAUSS-05980 + +GAUSS-05971: "conflicting or redundant option: 'user group default'" + +SQLSTATE: 42601 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05972: "conflictiong or redundant option: 'spill space'" + +SQLSTATE: 42601 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05975: "Can not create role with resource pool \(%s\) with foreign users option." + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05976: "parent cannot be itself." + +SQLSTATE: 0P000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05977: "Role '%s': object not defined." + +SQLSTATE: 42704 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-05981----GAUSS-05990.md b/content/zh/docs/Developerguide/GAUSS-05981----GAUSS-05990.md index 084147233..5ab159568 100644 --- a/content/zh/docs/Developerguide/GAUSS-05981----GAUSS-05990.md +++ b/content/zh/docs/Developerguide/GAUSS-05981----GAUSS-05990.md @@ -1,50 +1,50 @@ -# GAUSS-05981 -- GAUSS-05990 - -GAUSS-05981: "Independent user is not supported." - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05982: "Independent user cannot have sysadmin, auditadmin, vcadmin, createrole, monadmin and opradmin attributes." - -SQLSTATE: 42501 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05983: "Failed to Generate the random number, errcode:%u" - -SQLSTATE: 22000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05984: "Can not alter role with resource pool \(%s\) with foreign users option." - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05985: "resource pool of role '%s' does not exist." - -SQLSTATE: 42P26 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-05989: "Can not alter Role '%s' to vcadmin." - -SQLSTATE: 0LP01 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-05981 -- GAUSS-05990 + +GAUSS-05981: "Independent user is not supported." + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05982: "Independent user cannot have sysadmin, auditadmin , vcadmin , createrole , monadmin and opradmin attributes." + +SQLSTATE: 42501 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05983: "Failed to Generate the random number, errcode:%u" + +SQLSTATE: 22000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05984: "Can not alter role with resource pool \(%s\) with foreign users option." + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05985: "resource pool of role '%s' does not exist." + +SQLSTATE: 42P26 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-05989: "Can not alter Role '%s' to vcadmin." + +SQLSTATE: 0LP01 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-06001----GAUSS-06010.md b/content/zh/docs/Developerguide/GAUSS-06001----GAUSS-06010.md index 9fe285c29..877e862aa 100644 --- a/content/zh/docs/Developerguide/GAUSS-06001----GAUSS-06010.md +++ b/content/zh/docs/Developerguide/GAUSS-06001----GAUSS-06010.md @@ -1,74 +1,74 @@ -# GAUSS-06001 -- GAUSS-06010 - -GAUSS-06001: "password encryption failed" - -SQLSTATE: 28P01 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06002: "cache lookup failed for role with oid %u" - -SQLSTATE: 42704 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06003: "%s is not supported for using here, just support template0" - -SQLSTATE: 22023 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06005: "could not drop database while ddl delay function is enabled" - -SQLSTATE: 55006 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06006: "database '%s' is used by a logical decoding slot" - -SQLSTATE: 55006 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06007: "Database '%s' is being accessed by other users. You can stop all connections by command: 'clean connection to all force for database XXXX;' or wait for the sessions to end by querying view: 'pg\_stat\_activity'." - -SQLSTATE: 55006 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06008: "dbase\_redo: unknown op code %hhu" - -SQLSTATE: XX004 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06009: "Not support alter cross-database private pbject, please switch to '%s' and run this command" - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06010: "permission denied to create foreign table in security mode" - -SQLSTATE: 42501 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-06001 -- GAUSS-06010 + +GAUSS-06001: "password encryption failed" + +SQLSTATE: 28P01 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06002: "cache lookup failed for role with oid %u" + +SQLSTATE: 42704 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06003: "%s is not supported for using here, just support template0" + +SQLSTATE: 22023 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06005: "could not drop database while ddl delay function is enabled" + +SQLSTATE: 55006 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06006: "database '%s' is used by a logical decoding slot" + +SQLSTATE: 55006 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06007: "Database '%s' is being accessed by other users. You can stop all connections by command: 'clean connection to all force for database XXXX;' or wait for the sessions to end by querying view: 'pg\_stat\_activity'." + +SQLSTATE: 55006 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06008: "dbase\_redo: unknown op code %hhu" + +SQLSTATE: XX004 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06009: "Not support alter cross-database private pbject, please switch to '%s' and run this command" + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06010: "permission denied to create foreign table in security mode" + +SQLSTATE: 42501 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-06051----GAUSS-06060.md b/content/zh/docs/Developerguide/GAUSS-06051----GAUSS-06060.md index 5a0bc1ddb..c56d40025 100644 --- a/content/zh/docs/Developerguide/GAUSS-06051----GAUSS-06060.md +++ b/content/zh/docs/Developerguide/GAUSS-06051----GAUSS-06060.md @@ -1,74 +1,74 @@ -# GAUSS-06051 -- GAUSS-06060 - -GAUSS-06051: "It's not supported to add column with default value for timeseries tables." - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06052: "It's not supported to alter table add column default with nextval expression." - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06053: "It is not supported on DFS table. The detailed reasons are the followings:" - -SQLSTATE: 42P16 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06054: "cannot drop TSTime column '%s' from timeseries table" - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06055: "unrecognized table type: %d" - -SQLSTATE: XX004 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06056: "cannot alter column type to '%s'" - -SQLSTATE: 42P16 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06057: "PSort %u should depend on only one index relation but not %ld." - -SQLSTATE: OP002 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06059: "no perm space is available for the targeted owner" - -SQLSTATE: 53000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06060: "no perm space is available for the targeted user group" - -SQLSTATE: 53000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-06051 -- GAUSS-06060 + +GAUSS-06051: "It's not supported to add column with default value for timeseries tables." + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06052: "It's not supported to alter table add column default with nextval expression." + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06053: "It is not supported on DFS table. The detailed reasons are the followings:" + +SQLSTATE: 42P16 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06054: "cannot drop TSTime column '%s' from timeseries table" + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06055: "unrecognized table type: %d" + +SQLSTATE: XX004 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06056: "cannot alter column type to '%s'" + +SQLSTATE: 42P16 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06057: "PSort %u should depend on only one index relation but not %ld." + +SQLSTATE: OP002 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06059: "no perm space is available for the targeted owner" + +SQLSTATE: 53000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06060: "no perm space is available for the targeted user group" + +SQLSTATE: 53000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-06071----GAUSS-06080.md b/content/zh/docs/Developerguide/GAUSS-06071----GAUSS-06080.md index 3357a9555..579084d63 100644 --- a/content/zh/docs/Developerguide/GAUSS-06071----GAUSS-06080.md +++ b/content/zh/docs/Developerguide/GAUSS-06071----GAUSS-06080.md @@ -40,7 +40,7 @@ SQLSTATE: 42809 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-06076: "The obs foreign partition table cannot support on text, csv, carbondata format." +GAUSS-06076: "The obs foreign partition table cannot support on text, csv , carbondata format." SQLSTATE: 无 diff --git a/content/zh/docs/Developerguide/GAUSS-06121----GAUSS-06130.md b/content/zh/docs/Developerguide/GAUSS-06121----GAUSS-06130.md index c0ec09860..0d1f20bd9 100644 --- a/content/zh/docs/Developerguide/GAUSS-06121----GAUSS-06130.md +++ b/content/zh/docs/Developerguide/GAUSS-06121----GAUSS-06130.md @@ -1,74 +1,74 @@ -# GAUSS-06121 -- GAUSS-06130 - -GAUSS-06121: "invalid nodeId: %s\(%d\)" - -SQLSTATE: 无 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06123: "could not open relation %s\(%u\) on node %s." - -SQLSTATE: 42P01 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06124: "Both table should have the same hashbucket option\(on or off\)" - -SQLSTATE: 22023 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06125: "analyze prefetch block list can not be NULL" - -SQLSTATE: 无 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06126: "records n should not be zero" - -SQLSTATE: 22012 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06127: "Multi-columns statistic does not support hist/corr/mcelem/dechist" - -SQLSTATE: 42P10 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06128: "COPY\_OBS does not implement in CopySendEndOfRow" - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06129: "could not get data from COPY source" - -SQLSTATE: 22023 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06130: "copy from stdin failed because receive close conn message type 0x%02X" - -SQLSTATE: 08P01 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-06121 -- GAUSS-06130 + +GAUSS-06121: "invalid nodeId: %s\(%d\)" + +SQLSTATE: 无 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06123: "could not open relation %s\(%u\) on node %s." + +SQLSTATE: 42P01 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06124: "Both table should have the same hashbucket option\(on or off\)" + +SQLSTATE: 22023 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06125: "analyze prefetch block list can not be NULL" + +SQLSTATE: 无 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06126: "records n should not be zero" + +SQLSTATE: 22012 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06127: "Multi-columns statistic does not support hist/corr/mcelem/dechist" + +SQLSTATE: 42P10 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06128: "COPY\_OBS does not implement in CopySendEndOfRow" + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06129: "could not get data from COPY source" + +SQLSTATE: 22023 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06130: "copy from stdin failed because receive close conn message type 0x%02X" + +SQLSTATE: 08P01 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-06131----GAUSS-06140.md b/content/zh/docs/Developerguide/GAUSS-06131----GAUSS-06140.md index 2fc996f23..29e0b6d31 100644 --- a/content/zh/docs/Developerguide/GAUSS-06131----GAUSS-06140.md +++ b/content/zh/docs/Developerguide/GAUSS-06131----GAUSS-06140.md @@ -62,7 +62,7 @@ SQLSTATE:无 错误原因:NULL值不能包含自定义换行符。 -解决办法:请检查NULL值,确保NULL值不包含自定义换行符。 +解决办法:请检查 NULL 值,确保 NULL 值不包含自定义换行符。 GAUSS-06138: "EOL string '%s' cannot contain any characters in'%s'" @@ -76,15 +76,15 @@ GAUSS-06139: "EOL specification can not be used with non-text format using COPY SQLSTATE:无 -错误原因:自定义换行符不能用于非TEXT格式的copy导入或只读外表。 +错误原因:自定义换行符不能用于非 TEXT 格式的 copy 导入或只读外表。 -解决办法:请检查copy导入或只读外表的设置的文件格式,确保为TEXT格式。 +解决办法:请检查 copy 导入或只读外表的设置的文件格式,确保为 TEXT 格式。 GAUSS-06140: "EOL specification can not be used with non-text format using COPY TO or WRITE ONLY foreign table except 0x0D0A and 0x0A" SQLSTATE:无 -错误原因:自定义换行符不能用于非TEXT格式的copy导出或只写外表,但是允许自定义换行符0x0D0A和0x0A。 +错误原因:自定义换行符不能用于非 TEXT 格式的 copy 导出或只写外表,但是允许自定义换行符 0x0D0A 和 0x0A 。 -解决办法:请检查copy导出或只写外表的设置的文件格式,确保为TEXT格式。 +解决办法:请检查 copy 导出或只写外表的设置的文件格式,确保为 TEXT 格式。 diff --git a/content/zh/docs/Developerguide/GAUSS-06151----GAUSS-06160.md b/content/zh/docs/Developerguide/GAUSS-06151----GAUSS-06160.md index 25526dc3b..50f68936a 100644 --- a/content/zh/docs/Developerguide/GAUSS-06151----GAUSS-06160.md +++ b/content/zh/docs/Developerguide/GAUSS-06151----GAUSS-06160.md @@ -28,7 +28,7 @@ GAUSS-06154: "Abnormal data package received, package length is %d, input buffer SQLSTATE:无 -错误原因:接受到异常的数据包,数据包的长度为xx,接收buffer的长度为xx。 +错误原因:接受到异常的数据包,数据包的长度为 xx ,接收 buffer 的长度为 xx 。 解决办法:请检查数据文件,确保数据文件没有问题。 diff --git a/content/zh/docs/Developerguide/GAUSS-06161----GAUSS-06170.md b/content/zh/docs/Developerguide/GAUSS-06161----GAUSS-06170.md index 2ec5cb39b..3fa3adb59 100644 --- a/content/zh/docs/Developerguide/GAUSS-06161----GAUSS-06170.md +++ b/content/zh/docs/Developerguide/GAUSS-06161----GAUSS-06170.md @@ -1,74 +1,74 @@ -# GAUSS-06161 -- GAUSS-06170 - -GAUSS-06162: "It is not supported to create index on DFS tablespace." - -SQLSTATE: 42P17 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06163: "The operation of 'REINDEX INTERNAL TABLE %s PARTITION %s' failed. " - -SQLSTATE: 42P23 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06164: "The operation of 'REINDEX INTERNAL TABLE %s' on part '%u' failed. " - -SQLSTATE: 42P23 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06165: "The operation of 'REINDEX INTERNAL TABLE %s' failed. " - -SQLSTATE: XX002 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06166: "The table '%s' doesn't support the operation of 'REINDEX INTERNAL TABLE'. There is no Desc table on it." - -SQLSTATE: 42P01 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06167: "Bypass process Failed" - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06168: "uuids can not be NIL when generating uuid in restore mode." - -SQLSTATE: OP003 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06169: "Create table Like in multi-nodegroup is not supported" - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06170: "Temporary sequences are not supported" - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-06161 -- GAUSS-06170 + +GAUSS-06162: "It is not supported to create index on DFS tablespace." + +SQLSTATE: 42P17 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06163: "The operation of 'REINDEX INTERNAL TABLE %s PARTITION %s' failed. " + +SQLSTATE: 42P23 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06164: "The operation of 'REINDEX INTERNAL TABLE %s' on part '%u' failed. " + +SQLSTATE: 42P23 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06165: "The operation of 'REINDEX INTERNAL TABLE %s' failed. " + +SQLSTATE: XX002 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06166: "The table '%s' doesn't support the operation of 'REINDEX INTERNAL TABLE'. There is no Desc table on it." + +SQLSTATE: 42P01 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06167: "Bypass process Failed" + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06168: "uuids can not be NIL when generating uuid in restore mode." + +SQLSTATE: OP003 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06169: "Create table Like in multi-nodegroup is not supported" + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06170: "Temporary sequences are not supported" + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-06231----GAUSS-0640.md b/content/zh/docs/Developerguide/GAUSS-06231----GAUSS-0640.md index e0bf3adca..1357decbb 100644 --- a/content/zh/docs/Developerguide/GAUSS-06231----GAUSS-0640.md +++ b/content/zh/docs/Developerguide/GAUSS-06231----GAUSS-0640.md @@ -110,7 +110,7 @@ SQLSTATE:无 错误原因:NULL值不能包含自定义换行符。 -解决办法:请检查NULL值,确保NULL值不包含自定义换行符。 +解决办法:请检查 NULL 值,确保 NULL 值不包含自定义换行符。 GAUSS-06138: "EOL string '%s' cannot contain any characters in'%s'" @@ -124,15 +124,15 @@ GAUSS-06139: "EOL specification can not be used with non-text format using COPY SQLSTATE:无 -错误原因:自定义换行符不能用于非TEXT格式的copy导入或只读外表。 +错误原因:自定义换行符不能用于非 TEXT 格式的 copy 导入或只读外表。 -解决办法:请检查copy导入或只读外表的设置的文件格式,确保为TEXT格式。 +解决办法:请检查 copy 导入或只读外表的设置的文件格式,确保为 TEXT 格式。 GAUSS-06140: "EOL specification can not be used with non-text format using COPY TO or WRITE ONLY foreign table except 0x0D0A and 0x0A" SQLSTATE:无 -错误原因:自定义换行符不能用于非TEXT格式的copy导出或只写外表,但是允许自定义换行符0x0D0A和0x0A。 +错误原因:自定义换行符不能用于非 TEXT 格式的 copy 导出或只写外表,但是允许自定义换行符 0x0D0A 和 0x0A 。 -解决办法:请检查copy导出或只写外表的设置的文件格式,确保为TEXT格式。 +解决办法:请检查 copy 导出或只写外表的设置的文件格式,确保为 TEXT 格式。 diff --git a/content/zh/docs/Developerguide/GAUSS-06321----GAUSS-06330.md b/content/zh/docs/Developerguide/GAUSS-06321----GAUSS-06330.md index 9ac1ca497..898546ffe 100644 --- a/content/zh/docs/Developerguide/GAUSS-06321----GAUSS-06330.md +++ b/content/zh/docs/Developerguide/GAUSS-06321----GAUSS-06330.md @@ -1,74 +1,74 @@ -# GAUSS-06321 -- GAUSS-06330 - -GAUSS-06322: "Unexpected range table entry type." - -SQLSTATE: 0A000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06323: "exec\_nodes could not be NULL" - -SQLSTATE: 22004 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06324: "distribution could not be NULL" - -SQLSTATE: 22004 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06325: "is\_outer\_replicated and is\_inner\_replicated could not all be false" - -SQLSTATE: 22004 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06326: "\[ng\_get\_single\_dn\_group\_exec\_node\] unknown exec location." - -SQLSTATE: 2F000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06327: "Can not get valid skew value from hint." - -SQLSTATE: XX005 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06328: "Can not generate equal operation for non skew side." - -SQLSTATE: XX005 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06329: "Invalid skew stream type %d." - -SQLSTATE: XX004 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06330: "Expected positive width estimation." - -SQLSTATE: 22000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-06321 -- GAUSS-06330 + +GAUSS-06322: "Unexpected range table entry type." + +SQLSTATE: 0A000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06323: "exec\_nodes could not be NULL" + +SQLSTATE: 22004 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06324: "distribution could not be NULL" + +SQLSTATE: 22004 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06325: "is\_outer\_replicated and is\_inner\_replicated could not all be false" + +SQLSTATE: 22004 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06326: "\[ng\_get\_single\_dn\_group\_exec\_node\] unknown exec location." + +SQLSTATE: 2F000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06327: "Can not get valid skew value from hint." + +SQLSTATE: XX005 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06328: "Can not generate equal operation for non skew side." + +SQLSTATE: XX005 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06329: "Invalid skew stream type %d." + +SQLSTATE: XX004 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06330: "Expected positive width estimation." + +SQLSTATE: 22000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-06361----GAUSS-06370.md b/content/zh/docs/Developerguide/GAUSS-06361----GAUSS-06370.md index acd8fa868..44b376cca 100644 --- a/content/zh/docs/Developerguide/GAUSS-06361----GAUSS-06370.md +++ b/content/zh/docs/Developerguide/GAUSS-06361----GAUSS-06370.md @@ -32,7 +32,7 @@ SQLSTATE: XX005 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-06365: "Invalid argument: only support ls, addjar, rmjar options." +GAUSS-06365: "Invalid argument: only support ls, addjar , rmjar options." SQLSTATE: 22023 diff --git a/content/zh/docs/Developerguide/GAUSS-06451----GAUSS-06460.md b/content/zh/docs/Developerguide/GAUSS-06451----GAUSS-06460.md index b177284e7..e2f033123 100644 --- a/content/zh/docs/Developerguide/GAUSS-06451----GAUSS-06460.md +++ b/content/zh/docs/Developerguide/GAUSS-06451----GAUSS-06460.md @@ -1,34 +1,34 @@ -# GAUSS-06451 -- GAUSS-06460 - -GAUSS-06457: "Unable to create table on old installation group '%s' while in cluster resizing." - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法: 请联系技术支持工程师提供技术支持。 - -GAUSS-06458: "Current Node is not active" - -SQLSTATE: 22023 - -错误原因: 系统内部错误。 - -解决办法: 请联系技术支持工程师提供技术支持。 - -GAUSS-06459: "commit xid %lu is not equal to the excute one %lu." - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法: 请联系技术支持工程师提供技术支持。 - -GAUSS-06460: "abort xid %lu is not equal to the former one %lu." - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法: 请联系技术支持工程师提供技术支持。 - +# GAUSS-06451 -- GAUSS-06460 + +GAUSS-06457: "Unable to create table on old installation group '%s' while in cluster resizing." + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法: 请联系技术支持工程师提供技术支持。 + +GAUSS-06458: "Current Node is not active" + +SQLSTATE: 22023 + +错误原因: 系统内部错误。 + +解决办法: 请联系技术支持工程师提供技术支持。 + +GAUSS-06459: "commit xid %lu is not equal to the excute one %lu." + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法: 请联系技术支持工程师提供技术支持。 + +GAUSS-06460: "abort xid %lu is not equal to the former one %lu." + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法: 请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-06461----GAUSS-06470.md b/content/zh/docs/Developerguide/GAUSS-06461----GAUSS-06470.md index b25e963ef..21e7be919 100644 --- a/content/zh/docs/Developerguide/GAUSS-06461----GAUSS-06470.md +++ b/content/zh/docs/Developerguide/GAUSS-06461----GAUSS-06470.md @@ -1,74 +1,74 @@ -# GAUSS-06461 -- GAUSS-06470 - -GAUSS-06461: "Current mode does not support FOREIGN table yet" - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法: 请联系技术支持工程师提供技术支持。 - -GAUSS-06462: "Current mode does not support FOREIGN server yet" - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法: 请联系技术支持工程师提供技术支持。 - -GAUSS-06463: "NOT-SUPPORT: Not support DROP multiple objects different nodegroup" - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法: 请联系技术支持工程师提供技术支持。 - -GAUSS-06464: "permission denied to drop foreign table in security mode" - -SQLSTATE: 42501 - -错误原因: 系统内部错误。 - -解决办法: 请联系技术支持工程师提供技术支持。 - -GAUSS-06465: "foreign table '%s.%s' does not exist" - -SQLSTATE: 42P01 - -错误原因: 系统内部错误。 - -解决办法: 请联系技术支持工程师提供技术支持。 - -GAUSS-06466: "NOT-SUPPORT: Not support DROP multiple functions in different nodegroup" - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法: 请联系技术支持工程师提供技术支持。 - -GAUSS-06467: "operation copy with file is forbidden in security mode." - -SQLSTATE: D0011 - -错误原因: 系统内部错误。 - -解决办法: 请联系技术支持工程师提供技术支持。 - -GAUSS-06468: "NOT-SUPPORT: Not support Grant/Revoke privileges to objects in different nodegroup" - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法: 请联系技术支持工程师提供技术支持。 - -GAUSS-06469: "user defined range type is not yet supported." - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -ACTION: 请联系技术支持工程师提供技术支持。 - +# GAUSS-06461 -- GAUSS-06470 + +GAUSS-06461: "Current mode does not support FOREIGN table yet" + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法: 请联系技术支持工程师提供技术支持。 + +GAUSS-06462: "Current mode does not support FOREIGN server yet" + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法: 请联系技术支持工程师提供技术支持。 + +GAUSS-06463: "NOT-SUPPORT: Not support DROP multiple objects different nodegroup" + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法: 请联系技术支持工程师提供技术支持。 + +GAUSS-06464: "permission denied to drop foreign table in security mode" + +SQLSTATE: 42501 + +错误原因: 系统内部错误。 + +解决办法: 请联系技术支持工程师提供技术支持。 + +GAUSS-06465: "foreign table '%s.%s' does not exist" + +SQLSTATE: 42P01 + +错误原因: 系统内部错误。 + +解决办法: 请联系技术支持工程师提供技术支持。 + +GAUSS-06466: "NOT-SUPPORT: Not support DROP multiple functions in different nodegroup" + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法: 请联系技术支持工程师提供技术支持。 + +GAUSS-06467: "operation copy with file is forbidden in security mode." + +SQLSTATE: D0011 + +错误原因: 系统内部错误。 + +解决办法: 请联系技术支持工程师提供技术支持。 + +GAUSS-06468: "NOT-SUPPORT: Not support Grant/Revoke privileges to objects in different nodegroup" + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法: 请联系技术支持工程师提供技术支持。 + +GAUSS-06469: "user defined range type is not yet supported." + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +ACTION: 请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-06471----GAUSS-06480.md b/content/zh/docs/Developerguide/GAUSS-06471----GAUSS-06480.md index 17e73d85f..9950b9f07 100644 --- a/content/zh/docs/Developerguide/GAUSS-06471----GAUSS-06480.md +++ b/content/zh/docs/Developerguide/GAUSS-06471----GAUSS-06480.md @@ -1,58 +1,58 @@ -# GAUSS-06471 -- GAUSS-06480 - -GAUSS-06471: "This relation doesn't support analyze with column." - -SQLSTATE: 42P01 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06473: "Invalid value '%s' in WITH clause" - -SQLSTATE: 42601 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06474: "Don't support node group in single\_node mode." - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06476: "%s can not run inside a transaction block" - -SQLSTATE: 25001 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06478: "unrecognized portal strategy: %d" - -SQLSTATE: XX000 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-06479: "cursor can only scan forward" - -SQLSTATE: 55000 - -错误原因:显式的声明了NO SCROLL选项或当前执行计划不支持backward scan。 - -解决办法:若是显式的声明了NO SCROLL直接删除NO SCROLL选项即可。若是当前执行计划不支持,则需要调整执行计划。 - -GAUSS-06480: "Cursor rewind are not supported." - -SQLSTATE: 0A000 - -错误原因: 系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-06471 -- GAUSS-06480 + +GAUSS-06471: "This relation doesn't support analyze with column." + +SQLSTATE: 42P01 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06473: "Invalid value '%s' in WITH clause" + +SQLSTATE: 42601 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06474: "Don't support node group in single\_node mode." + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06476: "%s can not run inside a transaction block" + +SQLSTATE: 25001 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06478: "unrecognized portal strategy: %d" + +SQLSTATE: XX000 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-06479: "cursor can only scan forward" + +SQLSTATE: 55000 + +错误原因:显式的声明了 NO SCROLL 选项或当前执行计划不支持 backward scan 。 + +解决办法:若是显式的声明了 NO SCROLL 直接删除 NO SCROLL 选项即可。若是当前执行计划不支持,则需要调整执行计划。 + +GAUSS-06480: "Cursor rewind are not supported." + +SQLSTATE: 0A000 + +错误原因: 系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-06551----GAUSS-06560.md b/content/zh/docs/Developerguide/GAUSS-06551----GAUSS-06560.md index 29450ffee..6d61a9f67 100644 --- a/content/zh/docs/Developerguide/GAUSS-06551----GAUSS-06560.md +++ b/content/zh/docs/Developerguide/GAUSS-06551----GAUSS-06560.md @@ -28,7 +28,7 @@ GAUSS-06154: "Abnormal data package received, package length is %d, input buffer SQLSTATE:无 -错误原因:接受到异常的数据包,数据包的长度为xx,接收buffer的长度为xx。 +错误原因:接受到异常的数据包,数据包的长度为 xx ,接收 buffer 的长度为 xx 。 解决办法:请检查数据文件,确保数据文件没有问题。 diff --git a/content/zh/docs/Developerguide/GAUSS-06991----GAUSS-07000.md b/content/zh/docs/Developerguide/GAUSS-06991----GAUSS-07000.md index 8e7345a80..bde9cf679 100644 --- a/content/zh/docs/Developerguide/GAUSS-06991----GAUSS-07000.md +++ b/content/zh/docs/Developerguide/GAUSS-06991----GAUSS-07000.md @@ -72,7 +72,7 @@ SQLSTATE: 0A000 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-07000: "relation '%s' has no free space to upgrade. Current xid is %lu, please VACUUM FULL this relation!!!" +GAUSS-07000: "relation '%s' has no free space to upgrade. Current xid is %lu, please VACUUM FULL this relation !!!" SQLSTATE: 0A000 diff --git a/content/zh/docs/Developerguide/GAUSS-07071----GAUSS-07080.md b/content/zh/docs/Developerguide/GAUSS-07071----GAUSS-07080.md index 278974771..157d4644e 100644 --- a/content/zh/docs/Developerguide/GAUSS-07071----GAUSS-07080.md +++ b/content/zh/docs/Developerguide/GAUSS-07071----GAUSS-07080.md @@ -72,7 +72,7 @@ SQLSTATE: 无 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-07080: "could not find valid CBM file between %08X/%08X and %08X/%08X, which may be caused by previous CBM switch-off, truncation, or corruption" +GAUSS-07080: "could not find valid CBM file between %08X/%08X and %08X/%08X, which may be caused by previous CBM switch-off, truncation , or corruption" SQLSTATE: 58P03 diff --git a/content/zh/docs/Developerguide/GAUSS-07081----GAUSS-07090.md b/content/zh/docs/Developerguide/GAUSS-07081----GAUSS-07090.md index 9390c750c..101ac9c81 100644 --- a/content/zh/docs/Developerguide/GAUSS-07081----GAUSS-07090.md +++ b/content/zh/docs/Developerguide/GAUSS-07081----GAUSS-07090.md @@ -16,7 +16,7 @@ SQLSTATE: 58P03 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-07083: "there is a gap between CBM file %s and %s, which may be caused by previous CBM switch-off, truncation, or corruption" +GAUSS-07083: "there is a gap between CBM file %s and %s, which may be caused by previous CBM switch-off, truncation , or corruption" SQLSTATE: 29P02 diff --git a/content/zh/docs/Developerguide/GAUSS-07111----GAUSS-07120.md b/content/zh/docs/Developerguide/GAUSS-07111----GAUSS-07120.md index 77bef9613..b8121509e 100644 --- a/content/zh/docs/Developerguide/GAUSS-07111----GAUSS-07120.md +++ b/content/zh/docs/Developerguide/GAUSS-07111----GAUSS-07120.md @@ -32,7 +32,7 @@ SQLSTATE: 54000 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-07115: "Node %s: prepare gid is %s, and top xid is %lu, different transaction!" +GAUSS-07115: "Node %s: prepare gid is %s, and top xid is %lu, different transaction !" SQLSTATE: 25000 diff --git a/content/zh/docs/Developerguide/GAUSS-07311----GAUSS-07320.md b/content/zh/docs/Developerguide/GAUSS-07311----GAUSS-07320.md index b5ffe2139..f96a4eeba 100644 --- a/content/zh/docs/Developerguide/GAUSS-07311----GAUSS-07320.md +++ b/content/zh/docs/Developerguide/GAUSS-07311----GAUSS-07320.md @@ -56,7 +56,7 @@ SQLSTATE: 22000 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-07318: "Invalid tupleSortState, tupleSlot, or sorting strategy while getting tuple in cstore psort." +GAUSS-07318: "Invalid tupleSortState, tupleSlot , or sorting strategy while getting tuple in cstore psort." SQLSTATE: XX000 diff --git a/content/zh/docs/Developerguide/GAUSS-07341----GAUSS-07350.md b/content/zh/docs/Developerguide/GAUSS-07341----GAUSS-07350.md index d58a31ae5..1b511bac2 100644 --- a/content/zh/docs/Developerguide/GAUSS-07341----GAUSS-07350.md +++ b/content/zh/docs/Developerguide/GAUSS-07341----GAUSS-07350.md @@ -48,7 +48,7 @@ SQLSTATE: YY014 解决办法:请联系技术支持工程师提供技术支持。 -GAUSS-07347: "Snapshot is invalid, this is a safe error, snapshot too old." +GAUSS-07347: "Snapshot is invalid, this is a safe error , snapshot too old." SQLSTATE: YY014 diff --git a/content/zh/docs/Developerguide/GAUSS-07391----GAUSS-07400.md b/content/zh/docs/Developerguide/GAUSS-07391----GAUSS-07400.md index 48cb00d03..b4f019421 100644 --- a/content/zh/docs/Developerguide/GAUSS-07391----GAUSS-07400.md +++ b/content/zh/docs/Developerguide/GAUSS-07391----GAUSS-07400.md @@ -4,7 +4,7 @@ GAUSS-07391\] : "OutputPluginPrepareWrite needs to be called before OutputPlugin SQLSTATE: LL001 -错误原因:调用OutputPluginWrite函数前应该先调用OutputPluginPrepareWrite函数。 +错误原因:调用 OutputPluginWrite 函数前应该先调用 OutputPluginPrepareWrite 函数。 解决办法:请联系技术支持工程师提供技术支持。 diff --git a/content/zh/docs/Developerguide/GAUSS-50000----GAUSS-50099.md b/content/zh/docs/Developerguide/GAUSS-50000----GAUSS-50099.md index f608f230e..e2bbd4b20 100644 --- a/content/zh/docs/Developerguide/GAUSS-50000----GAUSS-50099.md +++ b/content/zh/docs/Developerguide/GAUSS-50000----GAUSS-50099.md @@ -44,7 +44,7 @@ GAUSS-50005: "The parameter '-%s' and '-%s' can not be used together." SQLSTATE: 无 -错误原因:参数A和参数B不能同时被指定。 +错误原因:参数 A 和参数 B 不能同时被指定。 解决办法:检查报错信息中所涉及的两个参数以及要执行的场景,只允许指定其中一个。 @@ -60,7 +60,7 @@ GAUSS-50007: "Failed to set %s parameter." SQLSTATE: 无 -错误原因:设置GUC参数失败。 +错误原因:设置 GUC 参数失败。 解决办法:检查gs\_guc工具中参数设置是否满足工具要求。 diff --git a/content/zh/docs/Developerguide/GAUSS-50100----GAUSS-50199.md b/content/zh/docs/Developerguide/GAUSS-50100----GAUSS-50199.md index ba475a094..52469975d 100644 --- a/content/zh/docs/Developerguide/GAUSS-50100----GAUSS-50199.md +++ b/content/zh/docs/Developerguide/GAUSS-50100----GAUSS-50199.md @@ -36,17 +36,17 @@ GAUSS-50104: "Only a user with the root permission can run this script." SQLSTATE: 无 -错误原因:只有root权限的用户才能执行该脚本。 +错误原因:只有 root 权限的用户才能执行该脚本。 -解决办法:切换到有root权限的用户来执行该脚本。 +解决办法:切换到有 root 权限的用户来执行该脚本。 GAUSS-50105: "Cannot run this script as a user with the root permission." SQLSTATE: 无 -错误原因:不能以root权限的用户来执行该脚本。 +错误原因:不能以 root 权限的用户来执行该脚本。 -解决办法:切换到非root权限的其他用户来执行该脚本。 +解决办法:切换到非 root 权限的其他用户来执行该脚本。 GAUSS-50106: "Failed to change the owner of %s." @@ -62,7 +62,7 @@ SQLSTATE: 无 错误原因:修改文件/目录的权限失败。 -解决办法:检查修改文件/目录的用户是否为root用户或者赋予文件/目录的权限值是否正确。 +解决办法:检查修改文件/目录的用户是否为 root 用户或者赋予文件/目录的权限值是否正确。 GAUSS-50108: "Failed to change the owner and permission of %s." @@ -76,9 +76,9 @@ GAUSS-50109: "Only a user with the root permission can check SSD information." SQLSTATE: 无 -错误原因:仅root权限的用户才能检查SSD信息。 +错误原因:仅 root 权限的用户才能检查 SSD 信息。 -解决办法:检查当前用户是否具有root权限。 +解决办法:检查当前用户是否具有 root 权限。 GAUSS-50110: "Cannot execute this script on %s." diff --git a/content/zh/docs/Developerguide/GAUSS-50200----GAUSS-50299.md b/content/zh/docs/Developerguide/GAUSS-50200----GAUSS-50299.md index 4f8d9f29f..89954d081 100644 --- a/content/zh/docs/Developerguide/GAUSS-50200----GAUSS-50299.md +++ b/content/zh/docs/Developerguide/GAUSS-50200----GAUSS-50299.md @@ -214,7 +214,7 @@ SQLSTATE: 无 错误原因:远程恢复失败。 -解决办法:检查执行的restore命令是否正确。 +解决办法:检查执行的 restore 命令是否正确。 GAUSS-50227: "Failed to compress %s." diff --git a/content/zh/docs/Developerguide/GAUSS-50300----GAUSS-50399.md b/content/zh/docs/Developerguide/GAUSS-50300----GAUSS-50399.md index e8c3cbd76..f46711533 100644 --- a/content/zh/docs/Developerguide/GAUSS-50300----GAUSS-50399.md +++ b/content/zh/docs/Developerguide/GAUSS-50300----GAUSS-50399.md @@ -12,7 +12,7 @@ GAUSS-50301: "The cluster user/group cannot be a root user/group." SQLSTATE: 无 -错误原因:集群用户的用户/组不能是root用户/组。 +错误原因:集群用户的用户/组不能是 root 用户/组。 解决办法:更改集群用户的用户/组。 @@ -20,17 +20,17 @@ GAUSS-50302: "The cluster user cannot be a user with the root permission." SQLSTATE: 无 -错误原因:集群用户不能拥有root权限。 +错误原因:集群用户不能拥有 root 权限。 -解决办法:更改集群用户的权限或切换没有root权限的其他集群用户。 +解决办法:更改集群用户的权限或切换没有 root 权限的其他集群用户。 GAUSS-50303: "Cannot install the program as a user with the root permission." SQLSTATE: 无 -错误原因:不能用root权限的用户来安装该程序。 +错误原因:不能用 root 权限的用户来安装该程序。 -解决办法:更改该用户的权限或切换到没有root权限的其他用户。 +解决办法:更改该用户的权限或切换到没有 root 权限的其他用户。 GAUSS-50304: "The new user \[%s\] is not the same as the old user \[%s\]." diff --git a/content/zh/docs/Developerguide/GAUSS-50400----GAUSS-50499.md b/content/zh/docs/Developerguide/GAUSS-50400----GAUSS-50499.md index 0dfed9fc5..c7538261a 100644 --- a/content/zh/docs/Developerguide/GAUSS-50400----GAUSS-50499.md +++ b/content/zh/docs/Developerguide/GAUSS-50400----GAUSS-50499.md @@ -22,7 +22,7 @@ SQLSTATE: 无 错误原因:INODE的使用率不能超过指定值。 -解决办法:检查确保INODE的使用率不要超过指定值。 +解决办法:检查确保 INODE 的使用率不要超过指定值。 GAUSS-50403: "The IO scheduling policy is incorrect." @@ -38,13 +38,13 @@ SQLSTATE: 无 错误原因:XFS挂载类型必须是指定类型。 -解决办法:更改XFS的挂载类型为指定的类型。 +解决办法:更改 XFS 的挂载类型为指定的类型。 GAUSS-50405: "The pre-read block size must be 16384." SQLSTATE: 无 -错误原因:预读块大小必须是16384。 +错误原因:预读块大小必须是 16384 。 解决办法:使用gs\_checkos对其进行设置。具体的设置请参考gs\_checkos工具的使用。 diff --git a/content/zh/docs/Developerguide/GAUSS-50500----GAUSS-50599.md b/content/zh/docs/Developerguide/GAUSS-50500----GAUSS-50599.md index f2f32eea4..1374234fa 100644 --- a/content/zh/docs/Developerguide/GAUSS-50500----GAUSS-50599.md +++ b/content/zh/docs/Developerguide/GAUSS-50500----GAUSS-50599.md @@ -6,21 +6,21 @@ SQLSTATE: 无 错误原因:swap分区小于实际内存。 -解决办法:调整设置swap分区的大小,修改其值使其大于实际内存。 +解决办法:调整设置 swap 分区的大小,修改其值使其大于实际内存。 GAUSS-50501: "Shared\_buffers must be less than shmmax. Please check it." SQLSTATE: 无 -错误原因:Shared\_buffers值必须小于shmmax值。 +错误原因:Shared\_buffers值必须小于 shmmax 值。 -解决办法:集群中所有节点在文件/etc/sysctl.conf中调整设置shmmax值的大小,使其大于shmall的值,然后执行/sbin/sysctl -p命令,让修改后的参数生效,重新执行命令。 +解决办法:集群中所有节点在文件/etc/sysctl.conf中调整设置 shmmax 值的大小,使其大于 shmall 的值,然后执行/sbin/sysctl -p命令,让修改后的参数生效,重新执行命令。 GAUSS-50502: "Failed to obtain %s information." SQLSTATE: 无 -错误原因:获取swap分区或者内存信息失败。 +错误原因:获取 swap 分区或者内存信息失败。 解决办法:检查系统是否正常。 diff --git a/content/zh/docs/Developerguide/GAUSS-50600----GAUSS-50699.md b/content/zh/docs/Developerguide/GAUSS-50600----GAUSS-50699.md index aa39373b9..6f3ec1ead 100644 --- a/content/zh/docs/Developerguide/GAUSS-50600----GAUSS-50699.md +++ b/content/zh/docs/Developerguide/GAUSS-50600----GAUSS-50699.md @@ -6,7 +6,7 @@ SQLSTATE: 无 错误原因:IP ping不通。 -解决办法:检查并设置网络,使其相互能够ping通。 +解决办法:检查并设置网络,使其相互能够 ping 通。 GAUSS-50601: "The port \[%s\] is occupied." @@ -30,7 +30,7 @@ SQLSTATE: 无 错误原因:IP 无效。 -解决办法:检查并修改为正确的IP。 +解决办法:检查并修改为正确的 IP 。 GAUSS-50604: "Failed to obtain network interface card of backIp\(%s\)." @@ -54,13 +54,13 @@ SQLSTATE: 无 错误原因:BackIP不能有相同的子网掩码。 -解决办法:给BackIP设置一个子网掩码。 +解决办法:给 BackIP 设置一个子网掩码。 GAUSS-50607:"Failed to obtain configuring virtual IP line number position of network startup file." SQLSTATE: 无 -错误原因:网卡启动文件中获取虚拟IP是失败 +错误原因:网卡启动文件中获取虚拟 IP 是失败 解决办法:用户手动检查网卡配置文件,查看是否被破坏 @@ -68,7 +68,7 @@ GAUSS-50608:"Failed to writing virtual IP setting cmds into init file." SQLSTATE: 无 -错误原因:在初始化文件中写虚拟IP设置命令失败 +错误原因:在初始化文件中写虚拟 IP 设置命令失败 解决办法:用户手动检查网卡配置文件,查看是否被破坏 @@ -118,15 +118,15 @@ SQLSTATE: 无 错误原因:检查网卡信息失败 -解决办法:查看ifconfig是否可用,可用状态下重新查询。 +解决办法:查看 ifconfig 是否可用,可用状态下重新查询。 GAUSS-50615:"IP %s and IP %s are not in the same network segment." SQLSTATE: 无 -错误原因:两个IP的网段不一致 +错误原因:两个 IP 的网段不一致 -解决办法:将两个IP的网段配在相同网段,重新执行。 +解决办法:将两个 IP 的网段配在相同网段,重新执行。 GAUSS-50616:"Failed to get network interface." @@ -134,7 +134,7 @@ SQLSTATE: 无 错误原因:获取网络接口失败 -解决办法:确保IP存在,ifconfig可用,网卡配置文件中有IP信息,重新执行。 +解决办法:确保 IP 存在, ifconfig 可用,网卡配置文件中有 IP 信息,重新执行。 GAUSS-50617: "The node of XML configure file has the same virtual IP." diff --git a/content/zh/docs/Developerguide/GAUSS-51000----GAUSS-51099.md b/content/zh/docs/Developerguide/GAUSS-51000----GAUSS-51099.md index 858092ffb..4abdc0721 100644 --- a/content/zh/docs/Developerguide/GAUSS-51000----GAUSS-51099.md +++ b/content/zh/docs/Developerguide/GAUSS-51000----GAUSS-51099.md @@ -6,21 +6,21 @@ SQLSTATE: 无 错误原因:THP服务没有关闭。 -解决办法:关闭THP服务。 +解决办法:关闭 THP 服务。 GAUSS-51001: "Failed to obtain THP service." SQLSTATE: 无 -错误原因:获取THP服务信息失败。 +错误原因:获取 THP 服务信息失败。 -解决办法:检查THP文件是否存在。 +解决办法:检查 THP 文件是否存在。 GAUSS-51002: "Failed to close THP service." SQLSTATE: 无 -错误原因:关闭THP服务失败。 +错误原因:关闭 THP 服务失败。 -解决办法:检查THP文件是否存在。 +解决办法:检查 THP 文件是否存在。 diff --git a/content/zh/docs/Developerguide/GAUSS-51100----GAUSS-51199.md b/content/zh/docs/Developerguide/GAUSS-51100----GAUSS-51199.md index b9a971d92..78dfb7a5d 100644 --- a/content/zh/docs/Developerguide/GAUSS-51100----GAUSS-51199.md +++ b/content/zh/docs/Developerguide/GAUSS-51100----GAUSS-51199.md @@ -4,7 +4,7 @@ GAUSS-51100: "Failed to verify SSH trust on these nodes: %s." SQLSTATE: 无 -错误原因:在各节点上核实SSH互信失败。 +错误原因:在各节点上核实 SSH 互信失败。 解决办法:检查确保各节点互信必须创建。 @@ -14,7 +14,7 @@ SQLSTATE: 无 错误原因:远程连接异常。 -解决办法:检查确保网络连接必须正常;检查确保远程机器的IP及登录用户和密码必须正确。 +解决办法:检查确保网络连接必须正常;检查确保远程机器的 IP 及登录用户和密码必须正确。 GAUSS-51102:"Failed to exchange SSH keys for user \[%s\] performing the %s operation." @@ -28,15 +28,15 @@ GAUSS-51103: "Failed to execute the PSSH command \[%s\]." SQLSTATE: 无 -错误原因:执行PSSH命令失败。 +错误原因:执行 PSSH 命令失败。 -解决办法:检查确保PSSH工具必须完整;检查确保执行命令必须正确。 +解决办法:检查确保 PSSH 工具必须完整;检查确保执行命令必须正确。 GAUSS-51104: "Failed to obtain SSH status." SQLSTATE: 无 -错误原因:获取ssh状态和结果失败。 +错误原因:获取 ssh 状态和结果失败。 解决办法:检查确保网络连接必须正常;检查确保连接机器必须存在。 @@ -44,9 +44,9 @@ GAUSS-51105: "Failed to parse SSH output: %s." SQLSTATE: 无 -错误原因:解析ssh结果失败。 +错误原因:解析 ssh 结果失败。 -解决办法:检查确保SSH工具必须完整;检查确保解析命令必须正确。 +解决办法:检查确保 SSH 工具必须完整;检查确保解析命令必须正确。 GAUSS-51106: "The SSH tool does not exist." @@ -54,7 +54,7 @@ SQLSTATE: 无 错误原因:SSH工具不存在。 -解决办法:检查确保SSH工具必须存在。 +解决办法:检查确保 SSH 工具必须存在。 GAUSS-51107: "Ssh Paramiko failed." @@ -65,15 +65,15 @@ SQLSTATE: 无 解决办法: 1. 检查网络连接是否正常; -2. 检查Paramiko包是否存在; +2. 检查 Paramiko 包是否存在; 3. 检查/etc/ssh/sshd\_config文件以下选项: - PasswordAuthentication=yes; - MaxStartups=1000; - UseDNS=no; - - ClientAliveInterval大于10800或者等于0; - - 当集群中机器较多时,MaxSessions是否配置过小。 + - ClientAliveInterval大于 10800 或者等于0; + - 当集群中机器较多时, MaxSessions 是否配置过小。 -4. 修改配置后,请重启sshd服务。 +4. 修改配置后,请重启 sshd 服务。 GAUSS-51108: "Ssh-keygen failed." @@ -95,7 +95,7 @@ GAUSS-51110: "Failed to obtain RSA host key for local host." SQLSTATE: 无 -错误原因:获取本地主机的RSA主机密钥失败 +错误原因:获取本地主机的 RSA 主机密钥失败 解决办法:检查获取失败的原因,重新执行 @@ -103,7 +103,7 @@ GAUSS-51111: "Failed to append local ID to authorized\_keys on remote node." SQLSTATE: 无 -错误原因:将本地ID添加进远程节点的authorized\_keys上失败 +错误原因:将本地 ID 添加进远程节点的authorized\_keys上失败 解决办法:检查添加失败的原因,重新添加 @@ -111,7 +111,7 @@ GAUSS-51112: "Failed to exchange SSH keys for user\[%s\] using hostname." SQLSTATE: 无 -错误原因:使用用户名交换SSH 密钥失败。 +错误原因:使用用户名交换 SSH 密钥失败。 解决办法:检查网络是否正常。 diff --git a/content/zh/docs/Developerguide/GAUSS-51200----GAUSS-51299.md b/content/zh/docs/Developerguide/GAUSS-51200----GAUSS-51299.md index 91d5af69d..83f266cef 100644 --- a/content/zh/docs/Developerguide/GAUSS-51200----GAUSS-51299.md +++ b/content/zh/docs/Developerguide/GAUSS-51200----GAUSS-51299.md @@ -4,9 +4,9 @@ GAUSS-51200: "The parameter \[%s\] in the XML file does not exist." SQLSTATE: 无 -错误原因:找不到XML中的%s参数。 +错误原因:找不到 XML 中的%s参数。 -解决办法:检查XML里的配置参数。 +解决办法:检查 XML 里的配置参数。 GAUSS-51201: "Node names must be configured." @@ -46,7 +46,7 @@ SQLSTATE: 无 错误原因:刷新实例编号失败。 -解决办法:由于要根据当前集群的静态配置文件来刷新新集群CN的ID,所以需要检查静态配置文件是否存在或损坏,用户是否有权访问。 +解决办法:由于要根据当前集群的静态配置文件来刷新新集群 CN 的 ID ,所以需要检查静态配置文件是否存在或损坏,用户是否有权访问。 GAUSS-51206: "The MPPRC file path must be an absolute path: %s." @@ -54,15 +54,15 @@ SQLSTATE: 无 错误原因:MPPRC路径必须为绝对路径。 -解决办法:修改MPPRC路径值为绝对路径值。 +解决办法:修改 MPPRC 路径值为绝对路径值。 GAUSS-51207: "Failed to obtain backIp from node \[%s\]." SQLSTATE: 无 -错误原因:获取节点backIp失败。 +错误原因:获取节点 backIp 失败。 -解决办法:检查并正确配置该节点上的backIp。 +解决办法:检查并正确配置该节点上的 backIp 。 GAUSS-51208: "Invalid %s number \[%d\]." @@ -110,13 +110,13 @@ SQLSTATE: 无 错误原因:端口号冲突。 -解决办法:查看被占用端口的进程是否有用,如果没用kill掉,或者更换新的端口号。 +解决办法:查看被占用端口的进程是否有用,如果没用 kill 掉,或者更换新的端口号。 GAUSS-51214: "The number of capacity expansion DN nodes cannot be less than three or CN nodes cannot be less than one." SQLSTATE: 无 -错误原因:扩容前的节点数不能少于3个。 +错误原因:扩容前的节点数不能少于 3 个。 解决办法:确保扩容前的节点数大于等于三个。 @@ -132,9 +132,9 @@ GAUSS-51216: "The capacity expansion node \[%s\] must contain CN or DN." SQLSTATE: 无 -错误原因:扩容的节点上不能没有CN或DN。 +错误原因:扩容的节点上不能没有 CN 或 DN 。 -解决办法:在扩容节点上增加CN或DN。 +解决办法:在扩容节点上增加 CN 或 DN 。 GAUSS-51217: "The cluster's static configuration does not match the new configuration file." @@ -142,7 +142,7 @@ SQLSTATE: 无 错误原因:集群配置不一致。 -解决办法:修改新XML配置文件,使其与集群静态配置保持一致。 +解决办法:修改新 XML 配置文件,使其与集群静态配置保持一致。 GAUSS-51218:“Failed to obtain initialized configuration parameter: %s.” @@ -156,9 +156,9 @@ GAUSS-51219: "There is no CN in cluster." SQLSTATE: 无 -错误原因:集群中没有安装CN。 +错误原因:集群中没有安装 CN 。 -解决办法:重新配置XML文件,然后执行前置和安装操作。 +解决办法:重新配置 XML 文件,然后执行前置和安装操作。 GAUSS-51220: "The IP address %s is incorrect." @@ -166,7 +166,7 @@ SQLSTATE: 无 错误原因:IP地址不正确。 -解决办法:检查XML中配置的IP地址是否正确。 +解决办法:检查 XML 中配置的 IP 地址是否正确。 GAUSS-51221: "Failed to configure hosts mapping information." @@ -174,7 +174,7 @@ SQLSTATE: 无 错误原因:配置主机映射失败。 -解决办法:检查/etc/hosts文件是否存在;文件中配置的主机名和IP地址是否一一对应。 +解决办法:检查/etc/hosts文件是否存在;文件中配置的主机名和 IP 地址是否一一对应。 GAUSS-51222: "Failed to check hostname mapping." @@ -188,9 +188,9 @@ GAUSS-51223: "Failed to obtain network inet addr on the node\(%s\)." SQLSTATE: 无 -错误原因:在节点获取inet地址失败 +错误原因:在节点获取 inet 地址失败 -解决办法:用户在root下ifconfig手动确认,如果inet存在重新执行 +解决办法:用户在 root 下 ifconfig 手动确认,如果 inet 存在重新执行 GAUSS-51224: "The ip\(%s\) has been used on other nodes." @@ -198,31 +198,31 @@ SQLSTATE: 无 错误原因:IP已经在其它节点中使用。 -解决办法:检查XML中各个节点的IP是否有冲突。 +解决办法:检查 XML 中各个节点的 IP 是否有冲突。 GAUSS-51225: "Failed to set virtual IP." SQLSTATE: 无 -错误原因:设置虚拟IP失败 +错误原因:设置虚拟 IP 失败 -解决办法:查看设置的虚拟IP是否已经使用 +解决办法:查看设置的虚拟 IP 是否已经使用 GAUSS-51226: "Virtual IP\(s\) and Back IP\(s\) do not have the same network segment." SQLSTATE: 无 -错误原因:虚拟IP和backIP不在相同的网段。 +错误原因:虚拟 IP 和 backIP 不在相同的网段。 -解决办法:在XML中配置虚拟IP和backIP在同一个网段。 +解决办法:在 XML 中配置虚拟 IP 和 backIP 在同一个网段。 GAUSS-51227: "The number of %s on all nodes are different." SQLSTATE: 无 -错误原因:所有节点上的backIP和sshIP数不相同。 +错误原因:所有节点上的 backIP 和 sshIP 数不相同。 -解决办法:XML中配置backIP和sshIP数目相同。 +解决办法:XML中配置 backIP 和 sshIP 数目相同。 GAUSS-51228: "The number %s does not match %s number." @@ -236,9 +236,9 @@ GAUSS-51229: "The DN listenIp\(%s\) is not in the virtualIp or backIp on the nod SQLSTATE: 无 -错误原因:DN的listenIP没有在虚拟IP和backIp里。 +错误原因:DN的 listenIP 没有在虚拟 IP 和 backIp 里。 -解决办法:在XML中将listenIP修改为虚拟IP或backIp。 +解决办法:在 XML 中将 listenIP 修改为虚拟 IP 或 backIp 。 GAUSS-51230: "The number of %s must %s." @@ -246,15 +246,15 @@ SQLSTATE: 无 错误原因:CM Server/GTM/ETCD的数量不正确。 -解决办法:在XML中配置CM Server/GTM/ETCD正确的数量。 +解决办法:在 XML 中配置CM Server/GTM/ETCD正确的数量。 GAUSS-51231: "Old nodes is less than 2." SQLSTATE: 无 -错误原因:旧节点数小于2。 +错误原因:旧节点数小于 2 。 -解决办法:在XML中节点配置的数量必须大于等于3。 +解决办法:在 XML 中节点配置的数量必须大于等于 3 。 GAUSS-51232: "XML configuration and static configuration are the same." @@ -262,7 +262,7 @@ SQLSTATE: 无 错误原因:XML配置和静态配置文件相同。 -解决办法:在要做扩容、缩容和manageCN等操作时,XML必须与之前安装集群的XML不同。 +解决办法:在要做扩容、缩容和 manageCN 等操作时, XML 必须与之前安装集群的 XML 不同。 GAUSS-51233: "The Port\(%s\) is invalid on the node\(%s\)." @@ -270,13 +270,13 @@ SQLSTATE: 无 错误原因:端口无效。 -解决办法:检查XML中配置的端口号是否正确。 +解决办法:检查 XML 中配置的端口号是否正确。 GAUSS-51234 : "The configuration file \[%s\] contains parsing errors." SQLSTATE: 无 -错误原因:解析XML文件不正确。 +错误原因:解析 XML 文件不正确。 解决办法:检查配置文件是否有损坏,如果是则从另一节点拷贝一份配置文件即可;如果不是,则重新安装集群。 @@ -292,9 +292,9 @@ GAUSS-51236: "Failed to parsing xml." SQLSTATE: 无 -错误原因:解析XML错误。 +错误原因:解析 XML 错误。 -解决办法:查看XML是否成功打开。 +解决办法:查看 XML 是否成功打开。 GAUSS-51239: "Failed to parse json. gs\_collect configuration file \(%s\) is invalid , check key in json file" diff --git a/content/zh/docs/Developerguide/GAUSS-51300----GAUSS-51399.md b/content/zh/docs/Developerguide/GAUSS-51300----GAUSS-51399.md index 0039e1c8b..3742d3d03 100644 --- a/content/zh/docs/Developerguide/GAUSS-51300----GAUSS-51399.md +++ b/content/zh/docs/Developerguide/GAUSS-51300----GAUSS-51399.md @@ -4,17 +4,17 @@ GAUSS-51300: "Failed to execute SQL: %s." SQLSTATE: 无 -错误原因: 执行SQL语句错误。 +错误原因: 执行 SQL 语句错误。 -解决办法: 1.确保SQL语句的正确性;2.检查数据库状态是否正常;3.检查是否有权限执行命令;4.检查数据库对象是否存在。 +解决办法: 1.确保 SQL 语句的正确性;2.检查数据库状态是否正常;3.检查是否有权限执行命令;4.检查数据库对象是否存在。 GAUSS-51301 : "Execute SQL time out. \\nSql: %s." SQLSTATE: 无 -错误原因: 执行SQL超时。 +错误原因: 执行 SQL 超时。 -解决办法: 1.确保SQL语句的正确性;2.检查数据库状态是否正常;3.检查是否有权限执行命令;4.检查网络状态。 +解决办法: 1.确保 SQL 语句的正确性;2.检查数据库状态是否正常;3.检查是否有权限执行命令;4.检查网络状态。 GAUSS-51302: "The table '%s.%s' does not exist or is private table!" diff --git a/content/zh/docs/Developerguide/GAUSS-51400----GAUSS-51499.md b/content/zh/docs/Developerguide/GAUSS-51400----GAUSS-51499.md index 715693d36..a729cf567 100644 --- a/content/zh/docs/Developerguide/GAUSS-51400----GAUSS-51499.md +++ b/content/zh/docs/Developerguide/GAUSS-51400----GAUSS-51499.md @@ -12,9 +12,9 @@ GAUSS-51401: "Failed to do %s.sh." SQLSTATE: 无 -错误原因: 执行shell脚本失败。 +错误原因: 执行 shell 脚本失败。 -解决办法: 1.检查命令是否正确;2.检查是否有权限执行命令;3.确保shell脚本存在。 +解决办法: 1.检查命令是否正确;2.检查是否有权限执行命令;3.确保 shell 脚本存在。 GAUSS\_50402: "The usage of INODE cannot be greater than %s." diff --git a/content/zh/docs/Developerguide/GAUSS-51600----GAUSS-51699.md b/content/zh/docs/Developerguide/GAUSS-51600----GAUSS-51699.md index d2e23fbf7..b3bc89490 100644 --- a/content/zh/docs/Developerguide/GAUSS-51600----GAUSS-51699.md +++ b/content/zh/docs/Developerguide/GAUSS-51600----GAUSS-51699.md @@ -30,13 +30,13 @@ SQLSTATE: 无 错误原因:获取对等的实例失败。 -解决办法:1.如果获取GTM,则确保gtm.conf路径存在;2.检查配置是否正确。 +解决办法:1.如果获取 GTM ,则确保gtm.conf路径存在;2.检查配置是否正确。 GAUSS-51604: "There is no HA status for %s." SQLSTATE: 无 -错误原因:实例没有HA状态。 +错误原因:实例没有 HA 状态。 解决办法:确保集群状态以及网络连接正常。 @@ -92,15 +92,15 @@ SQLSTATE: 无 错误原因:创建实例失败。 -解决办法:检查XML中有CN的节点配置是否正确。 +解决办法:检查 XML 中有 CN 的节点配置是否正确。 GAUSS-51612: "The instance IDs \[%s\] are not found in %s." SQLSTATE: 无 -错误原因:在节点信息里没有找到某个实例ID。 +错误原因:在节点信息里没有找到某个实例 ID 。 -解决办法:在做增删CN时,检查XML中增删CN的节点配置是否正确。 +解决办法:在做增删 CN 时,检查 XML 中增删 CN 的节点配置是否正确。 GAUSS-51613: "There is no instance in %s to be built." @@ -108,7 +108,7 @@ SQLSTATE: 无 错误原因:没有需要创建的实例。 -解决办法:在做manageCN的时候,XML配置的不正确,XML中没有在新节点中配实例。 +解决办法:在做 manageCN 的时候, XML 配置的不正确, XML 中没有在新节点中配实例。 GAUSS-51614: "Received signal\[%d\]." @@ -148,7 +148,7 @@ SQLSTATE: 无 错误原因:获取所有主机名失败。 -解决办法:确保ssh互信正常。 +解决办法:确保 ssh 互信正常。 GAUSS-51619: "The host·name \[%s\] is not in the cluster." @@ -156,7 +156,7 @@ SQLSTATE: 无 错误原因:当前节点不在集群内。 -解决办法:检查xml中是否配置了该节点。 +解决办法:检查 xml 中是否配置了该节点。 GAUSS-51620: "Failed to obtain %s instance information." @@ -164,7 +164,7 @@ SQLSTATE: 无 错误原因:获取实例信息失败。 -解决办法:1.确保XML配置正确;2.检查确保集群/节点/实例当前状态无异常。 +解决办法:1.确保 XML 配置正确;2.检查确保集群/节点/实例当前状态无异常。 GAUSS-51621: "HA IP is empty." @@ -172,7 +172,7 @@ SQLSTATE: 无 错误原因:HA IP为空。 -解决办法:检查XML文件配置信息,如果XML中配置了HA IP,此时需确保其值配置正确;如果XML中没有配置HA IP,则其会默认使用backIP,此时需要确保正确配置XML文件中的backIP。 +解决办法:检查 XML 文件配置信息,如果 XML 中配置了 HA IP ,此时需确保其值配置正确;如果 XML 中没有配置 HA IP ,则其会默认使用 backIP ,此时需要确保正确配置 XML 文件中的 backIP 。 GAUSS-51622: "There is no %s on %s node." @@ -180,7 +180,7 @@ SQLSTATE: 无 错误原因:节点上没有CN/DN实例。 -解决办法:1.检查XML中该节点是否配置了CN/DN实例;2.检查确保集群/节点/实例当前状态无异常。 +解决办法:1.检查 XML 中该节点是否配置了CN/DN实例;2.检查确保集群/节点/实例当前状态无异常。 GAUSS-51623: "Failed to obtain version." @@ -194,7 +194,7 @@ GAUSS-51624: "Failed to get CN connections." SQLSTATE: 无 -错误原因:获取CN连接数失败。 +错误原因:获取 CN 连接数失败。 解决办法:检查确保集群/节点/实例当前状态无异常。 @@ -244,23 +244,23 @@ SQLSTATE: 无 错误原因:节点名不存在。 -解决办法:1.检查XML中是否配置了该节点;2.检查确保集群/节点/实例当前状态无异常。 +解决办法:1.检查 XML 中是否配置了该节点;2.检查确保集群/节点/实例当前状态无异常。 GAUSS-51631: "Failed to delete the %s instance." SQLSTATE: 无 -错误原因:删除CN实例失败。 +错误原因:删除 CN 实例失败。 -解决办法:1.确保ssh互信正常;2.确保命令操作执行正确;3.检查确保集群/节点/实例当前状态无异常。 +解决办法:1.确保 ssh 互信正常;2.确保命令操作执行正确;3.检查确保集群/节点/实例当前状态无异常。 GAUSS-51632: "Failed to do %s." SQLSTATE: 无 -错误原因:执行python脚本失败。 +错误原因:执行 python 脚本失败。 -解决办法:1.确保python脚本存在;2.确保命令操作执行正确;3.检查确保集群/节点/实例当前状态无异常。 +解决办法:1.确保 python 脚本存在;2.确保命令操作执行正确;3.检查确保集群/节点/实例当前状态无异常。 GAUSS-51633: "The·step·of·upgrade·number·%s·is·incorrect." @@ -282,9 +282,9 @@ GAUSS-51635: "Failed to check SHA256." SQLSTATE: 无 -错误原因:检查SHA256失败。 +错误原因:检查 SHA256 失败。 -解决办法:1.确保SHA256文件存在;2.确保命令操作执行正确;3.检查确保集群/节点/实例当前状态无异常。 +解决办法:1.确保 SHA256 文件存在;2.确保命令操作执行正确;3.检查确保集群/节点/实例当前状态无异常。 GAUSS-51636: "Failed to obtain %s node information." @@ -292,7 +292,7 @@ SQLSTATE: 无 错误原因:获取节点信息失败。 -解决办法:1.确保XML中配置了该节点;2.确保命令操作执行正确;3.检查确保集群/节点/实例当前状态无异常。 +解决办法:1.确保 XML 中配置了该节点;2.确保命令操作执行正确;3.检查确保集群/节点/实例当前状态无异常。 GAUSS-51637: "The %s does not match with %s." @@ -308,7 +308,7 @@ SQLSTATE: 无 错误原因:在某个节点上追加实例失败。 -解决办法:1.检查XML配置是否正确,路径是否有冲突;2.检查确保集群/节点/实例当前状态无异常。 +解决办法:1.检查 XML 配置是否正确,路径是否有冲突;2.检查确保集群/节点/实例当前状态无异常。 GAUSS-51639: "Failed to obtain %s status of local node." diff --git a/content/zh/docs/Developerguide/GAUSS-51700----GAUSS-51799.md b/content/zh/docs/Developerguide/GAUSS-51700----GAUSS-51799.md index fdf0e3b4d..3e5c5516d 100644 --- a/content/zh/docs/Developerguide/GAUSS-51700----GAUSS-51799.md +++ b/content/zh/docs/Developerguide/GAUSS-51700----GAUSS-51799.md @@ -1,42 +1,42 @@ -# GAUSS-51700 -- GAUSS-51799 - -GAUSS-51704: "Failed to set Cgroup." - -SQLSTATE: 无 - -错误原因:设置Cgroups失败 - -解决办法:重新设置 - -GAUSS-51706: "Failed to check Cgroup." - -SQLSTATE: 无 - -错误原因:检查Cgroups失败。 - -解决办法:检查数据库状态是否正常。 - -GAUSS-51707: "Failed to install Cgroup." - -SQLSTATE: 无 - -错误原因:安装Cgroups失败。 - -解决办法:检查数据库中是否已经成功挂载了Cgroups组件。 - -GAUSS-51708: "Failed to uninstall Cgroup." - -SQLSTATE:无 - -错误原因:卸载Cgroups失败 - -解决办法:重新执行卸载 - -GAUSS-51709: "Failed to clean Cgroup configuration file." - -SQLSTATE:无 - -错误原因:清除Cgroups配置文件失败 - -解决办法:重新执行清除命令 - +# GAUSS-51700 -- GAUSS-51799 + +GAUSS-51704: "Failed to set Cgroup." + +SQLSTATE: 无 + +错误原因:设置 Cgroups 失败 + +解决办法:重新设置 + +GAUSS-51706: "Failed to check Cgroup." + +SQLSTATE: 无 + +错误原因:检查 Cgroups 失败。 + +解决办法:检查数据库状态是否正常。 + +GAUSS-51707: "Failed to install Cgroup." + +SQLSTATE: 无 + +错误原因:安装 Cgroups 失败。 + +解决办法:检查数据库中是否已经成功挂载了 Cgroups 组件。 + +GAUSS-51708: "Failed to uninstall Cgroup." + +SQLSTATE:无 + +错误原因:卸载 Cgroups 失败 + +解决办法:重新执行卸载 + +GAUSS-51709: "Failed to clean Cgroup configuration file." + +SQLSTATE:无 + +错误原因:清除 Cgroups 配置文件失败 + +解决办法:重新执行清除命令 + diff --git a/content/zh/docs/Developerguide/GAUSS-51800----GAUSS-51899.md b/content/zh/docs/Developerguide/GAUSS-51800----GAUSS-51899.md index 9dff3e1b9..9aea39c76 100644 --- a/content/zh/docs/Developerguide/GAUSS-51800----GAUSS-51899.md +++ b/content/zh/docs/Developerguide/GAUSS-51800----GAUSS-51899.md @@ -54,7 +54,7 @@ SQLSTATE: 无 错误原因:集群已经安装。 -解决办法:检查.bashrc文件中$GAUSS\_ENV环境变量的值是否为2。 +解决办法:检查.bashrc文件中$GAUSS\_ENV环境变量的值是否为 2 。 GAUSS-51807: "$GAUSSHOME of user is not equal to installation path." @@ -62,7 +62,7 @@ SQLSTATE: 无 错误原因:GAUSSHOME路径和集群安装路径不一致。 -解决办法:1.检查权限是否正确;2.检查网络连接是否正常;3.检查设置环境变量命令是否准确;4.检查./bashrc文件中$GAUSSHOME环境变量的值是否与XML中配置的路径相同。 +解决办法:1.检查权限是否正确;2.检查网络连接是否正常;3.检查设置环境变量命令是否准确;4.检查./bashrc文件中$GAUSSHOME环境变量的值是否与 XML 中配置的路径相同。 GAUSS-51808: "The env file contains errmsg: %s." @@ -70,7 +70,7 @@ SQLSTATE: 无 错误原因:/etc/profile等环境变量文件包含错误流或输出流。 -解决办法:根据提示检查对应文件,执行source,找到对应的输出信息,并删除对应shell。 +解决办法:根据提示检查对应文件,执行 source ,找到对应的输出信息,并删除对应 shell 。 GAUSS-51809: "The variable \[%s\] context \[%s\] is invalid." diff --git a/content/zh/docs/Developerguide/GAUSS-52000----GAUSS-52099.md b/content/zh/docs/Developerguide/GAUSS-52000----GAUSS-52099.md index d80772fd8..5000ad473 100644 --- a/content/zh/docs/Developerguide/GAUSS-52000----GAUSS-52099.md +++ b/content/zh/docs/Developerguide/GAUSS-52000----GAUSS-52099.md @@ -14,5 +14,5 @@ SQLSTATE:无 错误原因:集群节点时区不一致。 -解决办法:使用date命令将各个节点的时区设为一致。 +解决办法:使用 date 命令将各个节点的时区设为一致。 diff --git a/content/zh/docs/Developerguide/GAUSS-52200----GAUSS-52299.md b/content/zh/docs/Developerguide/GAUSS-52200----GAUSS-52299.md index fc3f2c55e..a06b7fe60 100644 --- a/content/zh/docs/Developerguide/GAUSS-52200----GAUSS-52299.md +++ b/content/zh/docs/Developerguide/GAUSS-52200----GAUSS-52299.md @@ -4,9 +4,9 @@ GAUSS-52200: "Unable to import module: %s." SQLSTATE: 无 -错误原因:采用系统默认python执行工具,导致导入包错:缺少python依赖的库。 +错误原因:采用系统默认 python 执行工具,导致导入包错:缺少 python 依赖的库。 -解决办法:使用安装包中自带的python执行工具,即进入安装包解压的目录,使用“./工具名”方式来执行命令。 +解决办法:使用安装包中自带的 python 执行工具,即进入安装包解压的目录,使用“./工具名”方式来执行命令。 以执行前置为例: @@ -26,7 +26,7 @@ GAUSS-52201: "The current python version %s is not supported." SQLSTATE: 无 -错误原因:操作系统默认的Python不是2.6.X或2.7.X。 +错误原因:操作系统默认的 Python 不是2.6.X或2.7.X。 -解决办法:替换操作系统默认的Python编译器版本。 +解决办法:替换操作系统默认的 Python 编译器版本。 diff --git a/content/zh/docs/Developerguide/GAUSS-52300----GAUSS-52399.md b/content/zh/docs/Developerguide/GAUSS-52300----GAUSS-52399.md index b855c5d57..78dcd68d4 100644 --- a/content/zh/docs/Developerguide/GAUSS-52300----GAUSS-52399.md +++ b/content/zh/docs/Developerguide/GAUSS-52300----GAUSS-52399.md @@ -14,5 +14,5 @@ SQLSTATE: 无 错误原因:检查操作系统参数失败。 -解决办法:1.查看"uname -r 2\>/dev/null"命令是否可用;2.查看"grep -Er '\\' /etc/keepalived/keepalived.conf "命令是否可执行;3.检查python是否安装以及是否有安装multiprocessing模块。 +解决办法:1.查看"uname -r 2\>/dev/null"命令是否可用;2.查看"grep -Er '\\' /etc/keepalived/keepalived.conf "命令是否可执行;3.检查 python 是否安装以及是否有安装 multiprocessing 模块。 diff --git a/content/zh/docs/Developerguide/GAUSS-52400----GAUSS-52499.md b/content/zh/docs/Developerguide/GAUSS-52400----GAUSS-52499.md index a68218c74..d01679e5b 100644 --- a/content/zh/docs/Developerguide/GAUSS-52400----GAUSS-52499.md +++ b/content/zh/docs/Developerguide/GAUSS-52400----GAUSS-52499.md @@ -14,7 +14,7 @@ SQLSTATE: 无 错误原因:系统范围内每个信号集中的信号量/信号集/信号量最大数目不正确。当前%s的值为:。 -解决办法:查看cat /proc/sys/kernel/sem获取信号数量,检查SEMMSL、SEMMNI或者SEMMNS是否满足要求。 +解决办法:查看cat /proc/sys/kernel/sem获取信号数量,检查SEMMSL、SEMMNI或者 SEMMNS 是否满足要求。 GAUSS-52402: "IP \[%s\] is not matched with hostname \[%s\]. \\n" @@ -22,7 +22,7 @@ SQLSTATE: 无 错误原因:IP与主机名不匹配。 -解决办法:检查IP和主机名是否匹配,如果不匹配,则需要修改/etc/profile文件使其相匹配。 +解决办法:检查 IP 和主机名是否匹配,如果不匹配,则需要修改/etc/profile文件使其相匹配。 GAUSS-52403: "Command \\"%s\\" does not exist or the user has no execute permission on %s." diff --git a/content/zh/docs/Developerguide/GAUSS-52600----GAUSS-52699.md b/content/zh/docs/Developerguide/GAUSS-52600----GAUSS-52699.md index 80388ada6..d82dd79c3 100644 --- a/content/zh/docs/Developerguide/GAUSS-52600----GAUSS-52699.md +++ b/content/zh/docs/Developerguide/GAUSS-52600----GAUSS-52699.md @@ -1,218 +1,218 @@ -# GAUSS-52600 -- GAUSS-52699 - -GAUSS-52600: "Can not obtain any cluster ring." - -SQLSTATE: 无 - -错误原因:不能获取数据库中的任何环。 - -解决办法:检查XML中节点信息是否配置正确。 - -GAUSS-52601: "Redistribution failed due to user request." - -SQLSTATE: 无 - -错误原因:由于用户请求,重分布失败。 - -解决办法:检查在扩容/缩容过程中,用户有没有执行非法操作。 - -GAUSS-52604: " Parameter '-r'\[%s\] can not be more than the numbers of cluster ring\[%s\]." - -SQLSTATE: 无 - -错误原因:参数-r的值不能比数据库环的数量还要多。 - -解决办法:检查gs\_shrink命令中'-r'参数的值是否超过数据库XML中配置的数据库环的个数。 - -GAUSS-52605: "Can not contract local node\(%s\). " - -SQLSTATE: 无 - -错误原因:不能缩容本地节点。 - -解决办法:检查XML中配置的缩容节点是否包含执行缩容命令的所在节点。 - -GAUSS-52606: " Contract too many nodes. It should left three nodes to format a cluster at least." - -SQLSTATE: 无 - -错误原因:缩容太多节点。缩容后的数据库至少保留3个节点。 - -解决办法:检查执行缩容命令的XML文件配置中缩容以后的数据库节点数量是否小于3个。 - -GAUSS-52607: " \[%s\] does not at the end of instance list." - -SQLSTATE: 无 - -错误原因:节点不在实例列表的末尾。 - -解决办法:检查XML中配置的缩容节点是否为数据库节点中按顺序排序的末尾几个节点。 - -GAUSS-52608: " \[%s\] contains %s instance." - -SQLSTATE: 无 - -错误原因:节点包含CM Server/ETCD实例。 - -解决办法:检查缩容的节点中是否包含CM Server/ETCD实例,如果是,则需要重新配置对应节点,使其不能包含CM Server/ETCD实例,然后重新执行命令。 - -GAUSS-52609: " All contracted nodes do not contain DN instance." - -SQLSTATE: 无 - -错误原因:所有的缩容节点中不能包含DN实例。 - -解决办法:检查XML中配置的缩容节点是否包含DN实例。 - -GAUSS-52612: " All dilatation nodes do not contain the DN instance." - -SQLSTATE: 无 - -错误原因:所有的扩容节点不能包含DN实例。 - -解决办法:检查XML中配置的扩容节点中是否配置了DN实例。 - -GAUSS-52613: " Static configuration is not matched on some nodes. Please handle it first." - -SQLSTATE: 无 - -错误原因:节点上的静态配置文件与新的XML文件不匹配。 - -解决办法:检查xml文件配置是否正确,修改后重新执行前置脚本。 - -GAUSS-52614: "Timeout. The current cluster status is %s." - -SQLSTATE: 无 - -错误原因:超时。 - -解决办法:重试。 - -GAUSS-52615: "Cluster lock unlocked due to timeout. " - -SQLSTATE: 无 - -错误原因:由于超时数据库解锁失败。 - -解决办法:1.检查数据库状态是否正常;2.数据库可否进行写操作;3.查看相对应的日志,查看详细的错误信息。 - -GAUSS-52616: "Can not find a similar instance for \[%s %s\]. " - -SQLSTATE: 无 - -错误原因:不能找到一个近似的实例\[主机名 实例目录\]。 - -解决办法:1.检查数据库状态是否正常;2.XML中节点信息是否配置正确。 - -GAUSS-52617: "Invalid check type. " - -SQLSTATE: 无 - -错误原因:无效的检查类型。 - -解决办法:缩容模块检查节点组的检查类型错误,应该是precheck和postcheck,其他类型都是错误。 - -GAUSS-52618: "Failed to delete etcd from node. " - -SQLSTATE: 无 - -错误原因:删除ETCD失败。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-52619: "Failed to uninstall application." - -SQLSTATE: 无 - -错误原因:卸载应用失败。 - -解决办法:重新执行。 - -GAUSS-52620: " Not all nodes found. The following is what we found: %s." - -SQLSTATE: 无 - -错误原因:没有找到所有节点。以下是我们找到的节点:。 - -解决办法:1.检查数据库状态是否正常;2.检查XML中配置的缩容节点名是否正确。 - -GAUSS-52621: " No DNs specified in target create new group." - -SQLSTATE: 无 - -错误原因:在创建新节点组时没有DN。 - -解决办法:缩容模块创建新节点组时,没有DN,需要检查确认节点上DN配置是否正常。 - -GAUSS-52622: " No new group name specified in target create new group." - -SQLSTATE: 无 - -错误原因:在创建新节点组时没有节点组名。 - -解决办法:缩容模块创建新节点组时,新节点组名为空,需要检查新节点组名是否正确,新节点组名取值范围:group\_version2或group\_version1。 - -GAUSS-52625: "The local instance and peer instance does not both in contracted nodes. " - -SQLSTATE: 无 - -错误原因:本地实例和对端实例不在同一个缩容节点。 - -解决办法:请检查缩容节点是否自成一个环。 - -GAUSS-52627: " The current cluster is locked." - -SQLSTATE: 无 - -错误原因:数据库处于锁状态。 - -解决办法:扩容模块检查老节点数据库已经被锁定,需要将当前数据库解锁后继续扩容。 - -GAUSS-52628: "Static configuration has already been updated on all nodes, expansion has been completed possibly. " - -SQLSTATE: 无 - -错误原因:静态配置文件已经在各个节点更新,扩容可能已经完成。 - -解决办法:查看扩容以后的数据库状态是否正常,如果数据库中已经包含了扩容节点并且数据库状态正常,那么就不用再执行扩容命令了。 - -GAUSS-52629: "Cluster ring\(%s\) can not obtain less than three nodes. " - -SQLSTATE: 无 - -错误原因:数据库环不能小于3个节点。 - -解决办法:检查缩容场景下使用的XML文件配置,执行的缩容节点数量是否小于3。 - -GAUSS-52630: "Failed to set the read-only mode parameter for all DN instances. " - -SQLSTATE: 无 - -错误原因:设置所有DN实例只读模式参数失败。 - -解决办法:检查gs\_guc工具是否存在,数据库状态是否正常,重试设置只读模式。 - -GAUSS-52632: "Cluster breakdown or abnormal operation during expanding online, lock process for expansion is lost." - -SQLSTATE: 无 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-52633: "Can not excute redistribution for shrink excuted failed." - -SQLSTATE: 无 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - -GAUSS-52634: "Redis table record count cannot be more than %d." - -SQLSTATE: 无 - -错误原因:系统内部错误。 - -解决办法:请联系技术支持工程师提供技术支持。 - +# GAUSS-52600 -- GAUSS-52699 + +GAUSS-52600: "Can not obtain any cluster ring." + +SQLSTATE: 无 + +错误原因:不能获取数据库中的任何环。 + +解决办法:检查 XML 中节点信息是否配置正确。 + +GAUSS-52601: "Redistribution failed due to user request." + +SQLSTATE: 无 + +错误原因:由于用户请求,重分布失败。 + +解决办法:检查在扩容/缩容过程中,用户有没有执行非法操作。 + +GAUSS-52604: " Parameter '-r'\[%s\] can not be more than the numbers of cluster ring\[%s\]." + +SQLSTATE: 无 + +错误原因:参数-r的值不能比数据库环的数量还要多。 + +解决办法:检查gs\_shrink命令中'-r'参数的值是否超过数据库 XML 中配置的数据库环的个数。 + +GAUSS-52605: "Can not contract local node\(%s\). " + +SQLSTATE: 无 + +错误原因:不能缩容本地节点。 + +解决办法:检查 XML 中配置的缩容节点是否包含执行缩容命令的所在节点。 + +GAUSS-52606: " Contract too many nodes. It should left three nodes to format a cluster at least." + +SQLSTATE: 无 + +错误原因:缩容太多节点。缩容后的数据库至少保留 3 个节点。 + +解决办法:检查执行缩容命令的 XML 文件配置中缩容以后的数据库节点数量是否小于 3 个。 + +GAUSS-52607: " \[%s\] does not at the end of instance list." + +SQLSTATE: 无 + +错误原因:节点不在实例列表的末尾。 + +解决办法:检查 XML 中配置的缩容节点是否为数据库节点中按顺序排序的末尾几个节点。 + +GAUSS-52608: " \[%s\] contains %s instance." + +SQLSTATE: 无 + +错误原因:节点包含CM Server/ETCD实例。 + +解决办法:检查缩容的节点中是否包含CM Server/ETCD实例,如果是,则需要重新配置对应节点,使其不能包含CM Server/ETCD实例,然后重新执行命令。 + +GAUSS-52609: " All contracted nodes do not contain DN instance." + +SQLSTATE: 无 + +错误原因:所有的缩容节点中不能包含 DN 实例。 + +解决办法:检查 XML 中配置的缩容节点是否包含 DN 实例。 + +GAUSS-52612: " All dilatation nodes do not contain the DN instance." + +SQLSTATE: 无 + +错误原因:所有的扩容节点不能包含 DN 实例。 + +解决办法:检查 XML 中配置的扩容节点中是否配置了 DN 实例。 + +GAUSS-52613: " Static configuration is not matched on some nodes. Please handle it first." + +SQLSTATE: 无 + +错误原因:节点上的静态配置文件与新的 XML 文件不匹配。 + +解决办法:检查 xml 文件配置是否正确,修改后重新执行前置脚本。 + +GAUSS-52614: "Timeout. The current cluster status is %s." + +SQLSTATE: 无 + +错误原因:超时。 + +解决办法:重试。 + +GAUSS-52615: "Cluster lock unlocked due to timeout. " + +SQLSTATE: 无 + +错误原因:由于超时数据库解锁失败。 + +解决办法:1.检查数据库状态是否正常;2.数据库可否进行写操作;3.查看相对应的日志,查看详细的错误信息。 + +GAUSS-52616: "Can not find a similar instance for \[%s %s\]. " + +SQLSTATE: 无 + +错误原因:不能找到一个近似的实例\[主机名 实例目录\]。 + +解决办法:1.检查数据库状态是否正常;2.XML中节点信息是否配置正确。 + +GAUSS-52617: "Invalid check type. " + +SQLSTATE: 无 + +错误原因:无效的检查类型。 + +解决办法:缩容模块检查节点组的检查类型错误,应该是 precheck 和 postcheck ,其他类型都是错误。 + +GAUSS-52618: "Failed to delete etcd from node. " + +SQLSTATE: 无 + +错误原因:删除 ETCD 失败。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-52619: "Failed to uninstall application." + +SQLSTATE: 无 + +错误原因:卸载应用失败。 + +解决办法:重新执行。 + +GAUSS-52620: " Not all nodes found. The following is what we found: %s." + +SQLSTATE: 无 + +错误原因:没有找到所有节点。以下是我们找到的节点:。 + +解决办法:1.检查数据库状态是否正常;2.检查 XML 中配置的缩容节点名是否正确。 + +GAUSS-52621: " No DNs specified in target create new group." + +SQLSTATE: 无 + +错误原因:在创建新节点组时没有 DN 。 + +解决办法:缩容模块创建新节点组时,没有 DN ,需要检查确认节点上 DN 配置是否正常。 + +GAUSS-52622: " No new group name specified in target create new group." + +SQLSTATE: 无 + +错误原因:在创建新节点组时没有节点组名。 + +解决办法:缩容模块创建新节点组时,新节点组名为空,需要检查新节点组名是否正确,新节点组名取值范围:group\_version2或group\_version1。 + +GAUSS-52625: "The local instance and peer instance does not both in contracted nodes. " + +SQLSTATE: 无 + +错误原因:本地实例和对端实例不在同一个缩容节点。 + +解决办法:请检查缩容节点是否自成一个环。 + +GAUSS-52627: " The current cluster is locked." + +SQLSTATE: 无 + +错误原因:数据库处于锁状态。 + +解决办法:扩容模块检查老节点数据库已经被锁定,需要将当前数据库解锁后继续扩容。 + +GAUSS-52628: "Static configuration has already been updated on all nodes, expansion has been completed possibly. " + +SQLSTATE: 无 + +错误原因:静态配置文件已经在各个节点更新,扩容可能已经完成。 + +解决办法:查看扩容以后的数据库状态是否正常,如果数据库中已经包含了扩容节点并且数据库状态正常,那么就不用再执行扩容命令了。 + +GAUSS-52629: "Cluster ring\(%s\) can not obtain less than three nodes. " + +SQLSTATE: 无 + +错误原因:数据库环不能小于 3 个节点。 + +解决办法:检查缩容场景下使用的 XML 文件配置,执行的缩容节点数量是否小于 3 。 + +GAUSS-52630: "Failed to set the read-only mode parameter for all DN instances. " + +SQLSTATE: 无 + +错误原因:设置所有 DN 实例只读模式参数失败。 + +解决办法:检查gs\_guc工具是否存在,数据库状态是否正常,重试设置只读模式。 + +GAUSS-52632: "Cluster breakdown or abnormal operation during expanding online, lock process for expansion is lost." + +SQLSTATE: 无 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-52633: "Can not excute redistribution for shrink excuted failed." + +SQLSTATE: 无 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + +GAUSS-52634: "Redis table record count cannot be more than %d." + +SQLSTATE: 无 + +错误原因:系统内部错误。 + +解决办法:请联系技术支持工程师提供技术支持。 + diff --git a/content/zh/docs/Developerguide/GAUSS-52700----GAUSS-52799.md b/content/zh/docs/Developerguide/GAUSS-52700----GAUSS-52799.md index 43e47dd0a..ef2374797 100644 --- a/content/zh/docs/Developerguide/GAUSS-52700----GAUSS-52799.md +++ b/content/zh/docs/Developerguide/GAUSS-52700----GAUSS-52799.md @@ -4,15 +4,15 @@ GAUSS-52700: "Failed to update ETCD." SQLSTATE: 无 -错误原因:更新ETCD失败。 +错误原因:更新 ETCD 失败。 -解决办法:根据replace日志分析处理。 +解决办法:根据 replace 日志分析处理。 GAUSS-52701: "All the CMAgents instances are abnormal. Cannot fix the cluster." SQLSTATE: 无 -错误原因:所有的CM Agent实例损坏,不能修复集群。 +错误原因:所有的 CM Agent 实例损坏,不能修复集群。 解决办法:通过gs\_replace工具进行温备。 @@ -28,9 +28,9 @@ GAUSS-52703: "The number of normal ETCD must be greater than half." SQLSTATE: 无 -错误原因:集群中正常的ETCD个数必须大于一半。 +错误原因:集群中正常的 ETCD 个数必须大于一半。 -解决办法:1.检查温备后集群状态是否正常;2.集群中正常的ETCD数量是否超过一半。 +解决办法:1.检查温备后集群状态是否正常;2.集群中正常的 ETCD 数量是否超过一半。 GAUSS-52704: "Failed to check the %s condition." @@ -44,15 +44,15 @@ GAUSS-52705: "Failed to obtain ETCD key." SQLSTATE: 无 -错误原因:获取ETCD key失败。 +错误原因:获取 ETCD key 失败。 -解决办法:查看etcdctl日志分析处理。 +解决办法:查看 etcdctl 日志分析处理。 GAUSS-52706: "Failed to clean ETCD and touch flag file on %s." SQLSTATE: 无 -错误原因:在节点上清理ETCD实例和创建标志文件失败。 +错误原因:在节点上清理 ETCD 实例和创建标志文件失败。 解决办法:检查对应节点上是否有足够权限。 @@ -62,7 +62,7 @@ SQLSTATE: 无 错误原因:温备节点安装失败。 -解决办法:根据replace日志进行分析处理。 +解决办法:根据 replace 日志进行分析处理。 GAUSS-52708: "Failed to configure on %s." @@ -70,7 +70,7 @@ SQLSTATE: 无 错误原因:温备节点配置失败。 -解决办法:根据replace日志进行分析处理。 +解决办法:根据 replace 日志进行分析处理。 GAUSS-52709: "Failed to check the cluster configuration differences:" @@ -78,7 +78,7 @@ SQLSTATE: 无 错误原因:检查集群配置差异失败。 -解决办法:在做温备或者修改IP时,对比xml文件和当前集群配置是否有差异,如果没有,则不能做温备或者修改IP,需要重新修改xml的配置信息。 +解决办法:在做温备或者修改 IP 时,对比 xml 文件和当前集群配置是否有差异,如果没有,则不能做温备或者修改 IP ,需要重新修改 xml 的配置信息。 GAUSS-52710: "Replacement failed." @@ -92,9 +92,9 @@ GAUSS-52711: "Failed to set CMAgent start mode." SQLSTATE: 无 -错误原因:设置CM Agent启动模式失败。 +错误原因:设置 CM Agent 启动模式失败。 -解决办法:查看etcdctl日志分析处理。 +解决办法:查看 etcdctl 日志分析处理。 GAUSS-52712: "Failed to read step file with erro:\[%s\]." diff --git a/content/zh/docs/Developerguide/GAUSS-52800----GAUSS-52899.md b/content/zh/docs/Developerguide/GAUSS-52800----GAUSS-52899.md index c008945b3..a0dd3f077 100644 --- a/content/zh/docs/Developerguide/GAUSS-52800----GAUSS-52899.md +++ b/content/zh/docs/Developerguide/GAUSS-52800----GAUSS-52899.md @@ -4,7 +4,7 @@ GAUSS-52800: "Cluster is %s\(%s\) now." SQLSTATE: 无 -错误原因:集群状态不正常\(集群状态为Abnormal或者Degrade\)。 +错误原因:集群状态不正常\(集群状态为 Abnormal 或者Degrade\)。 解决办法:查看集群状态根据日志报错分析原因。 @@ -12,31 +12,31 @@ GAUSS-52801: "Only allow to %s one CN. The %s is not matched." SQLSTATE: 无 -错误原因:仅允许增加/删除一个CN,CN/DN/GTM/ETCD/CM Server数量不匹配 。 +错误原因:仅允许增加/删除一个 CN ,CN/DN/GTM/ETCD/CM Server数量不匹配 。 -解决办法:检查xml中配置是否对其它实例进行了增删操作。 +解决办法:检查 xml 中配置是否对其它实例进行了增删操作。 GAUSS-52802: "Only allow to add one CN at the end." SQLSTATE: 无 -错误原因:只允许在末尾增加一个CN 。 +错误原因:只允许在末尾增加一个 CN 。 -解决办法:请检查指定的XML配置,集群外增加CN只允许在集群中所有节点末尾增加一个CN。 +解决办法:请检查指定的 XML 配置,集群外增加 CN 只允许在集群中所有节点末尾增加一个 CN 。 GAUSS-52803: "There is at least one Normal CN after delete CN." SQLSTATE: 无 -错误原因:在删除CN后至少要保留一个正常的CN。 +错误原因:在删除 CN 后至少要保留一个正常的 CN 。 -解决办法:检查执行删除CN操作的XML文件配置是否正确,保证在做删除CN以后,集群中还有一个正常的CN。 +解决办法:检查执行删除 CN 操作的 XML 文件配置是否正确,保证在做删除 CN 以后,集群中还有一个正常的 CN 。 GAUSS-52804: "Failed to add the Abnormal CN." SQLSTATE: 无 -错误原因:增加不正常的CN失败。 +错误原因:增加不正常的 CN 失败。 解决办法:1.修改pgxc\_node文件失败,请结合具体日志分析失败原因;2.重新执行一遍命令。 @@ -54,37 +54,37 @@ SQLSTATE: 无 错误原因:无效的回滚步骤。 -解决办法:在GPHOST路径下,查看记录CN配置步骤的文件GaussManageCN.dat中的数据是否正确。 +解决办法:在 GPHOST 路径下,查看记录 CN 配置步骤的文件GaussManageCN.dat中的数据是否正确。 GAUSS-52807: "There is no IP changed." SQLSTATE: 无 -错误原因:没有需要修改的IP。 +错误原因:没有需要修改的 IP 。 -解决办法:检查IP是否已在集群中使用,如果在使用,则需要重新配置XML文件。 +解决办法:检查 IP 是否已在集群中使用,如果在使用,则需要重新配置 XML 文件。 GAUSS-52808: "Detected CN %s, but the action is %s." SQLSTATE: 无 -错误原因:命令中的增删CN操作和xml配置不一致。 +错误原因:命令中的增删 CN 操作和 xml 配置不一致。 -解决办法:修改命令中的增删CN动作\(add或者delete\)或者修改xml中增删CN的配置信息。 +解决办法:修改命令中的增删 CN 动作\(add或者delete\)或者修改 xml 中增删 CN 的配置信息。 GAUSS-52809: "Only allow to add or delete one CN." SQLSTATE: 无 -错误原因:增删CN数量不为1。 +错误原因:增删 CN 数量不为 1 。 -解决办法:一次只允许增加或者删除一个CN。 +解决办法:一次只允许增加或者删除一个 CN 。 GAUSS-52810: "There is Abnormal coodinator\(s\) in cluster, please delete it firstly." SQLSTATE:无 -错误原因:集群中存在异常CN实例,导致想要删除的CN无法删除。 +错误原因:集群中存在异常 CN 实例,导致想要删除的 CN 无法删除。 -解决办法:先删除异常的CN,再进行其他CN的删除操作。 +解决办法:先删除异常的 CN ,再进行其他 CN 的删除操作。 diff --git a/content/zh/docs/Developerguide/GAUSS-52900----GAUSS-52999.md b/content/zh/docs/Developerguide/GAUSS-52900----GAUSS-52999.md index a7be6d7bc..56deab820 100644 --- a/content/zh/docs/Developerguide/GAUSS-52900----GAUSS-52999.md +++ b/content/zh/docs/Developerguide/GAUSS-52900----GAUSS-52999.md @@ -62,7 +62,7 @@ SQLSTATE:无 错误原因:取消集群只读模式失败。 -解决办法:手动调用guc工具,命令为:gs\_guc reload -Z coordinator -N all -I all -c "default\_transaction\_read\_only=false";gs\_guc reload -Z datanode -N all -I all -c "default\_transaction\_read\_only=false",取消只读模式,重试。 +解决办法:手动调用 guc 工具,命令为:gs\_guc reload -Z coordinator -N all -I all -c "default\_transaction\_read\_only=false";gs\_guc reload -Z datanode -N all -I all -c "default\_transaction\_read\_only=false",取消只读模式,重试。 GAUSS-52908: "Failed to set cluster read-only mode." @@ -70,7 +70,7 @@ SQLSTATE:无 错误原因:设置只读模式失败。 -解决办法:查看guc日志,排除错误后,重新执行命令。 +解决办法:查看 guc 日志,排除错误后,重新执行命令。 GAUSS-52909: "Specified upgrade nodes with same step can do upgrade task." @@ -126,7 +126,7 @@ SQLSTATE:无 错误原因:不合法的升级步骤。 -解决办法:在GPHOST路径下,请确认升级备份的步骤记录文件是否被修改。 +解决办法:在 GPHOST 路径下,请确认升级备份的步骤记录文件是否被修改。 GAUSS-52916: "Current upgrade status is not pre commit." @@ -148,9 +148,9 @@ GAUSS-52918: "Failed to record node upgrade step in table %s.%s." SQLSTATE:无 -错误原因:没有找到GTM。 +错误原因:没有找到 GTM 。 -解决办法:调用gs\_om -t status --detail命令查询集群状态,确认GTM状态,如果集群中GTM状态异常,则需要重新安装集群或者调用温备方法修复该集群。 +解决办法:调用gs\_om -t status --detail命令查询集群状态,确认 GTM 状态,如果集群中 GTM 状态异常,则需要重新安装集群或者调用温备方法修复该集群。 GAUSS-52919: "Upgrade has already been committed but not finished commit." @@ -164,9 +164,9 @@ GAUSS-52920: "Can not use grey upgrade option --continue before upgrade grey nod SQLSTATE:无 -错误原因:全面升级后还原GUC参数失败。 +错误原因:全面升级后还原 GUC 参数失败。 -解决办法:请查看升级日志和GUC日志,排除原因,重新升级。 +解决办法:请查看升级日志和 GUC 日志,排除原因,重新升级。 GAUSS-52921: "Failed to query disk usage with gs\_check tool." @@ -228,7 +228,7 @@ GAUSS-52932: "There is no CN in the remaining old nodes." SQLSTATE:无 -错误原因:旧集群中没有可用的CN实例。 +错误原因:旧集群中没有可用的 CN 实例。 解决办法:请检查升级日志,确认各节点实例信息。 diff --git a/content/zh/docs/Developerguide/GAUSS-53000----GAUSS-53099.md b/content/zh/docs/Developerguide/GAUSS-53000----GAUSS-53099.md index 2192d6cbb..3047c261f 100644 --- a/content/zh/docs/Developerguide/GAUSS-53000----GAUSS-53099.md +++ b/content/zh/docs/Developerguide/GAUSS-53000----GAUSS-53099.md @@ -20,7 +20,7 @@ GAUSS-53002: Failed to obtain SSD device. SQLSTATE:无 -错误原因:检查SSD设备失败。 +错误原因:检查 SSD 设备失败。 解决办法:检查是否安装固态硬盘\(SSD\)。 @@ -44,7 +44,7 @@ GAUSS-53005: Unable to obtain SSD disk on current node. SQLSTATE:无 -错误原因:获取SSD失败。 +错误原因:获取 SSD 失败。 解决办法:检查固态硬盘是否安装。 @@ -52,9 +52,9 @@ GAUSS-53006: No DN instance uses data directory %s on %s. SQLSTATE:无 -错误原因:没有DN实例数据目录。 +错误原因:没有 DN 实例数据目录。 -解决办法:检查DN目录是否存在。 +解决办法:检查 DN 目录是否存在。 GAUSS-53007: Failed to switch %s. @@ -62,7 +62,7 @@ SQLSTATE:无 错误原因:主备实例切换失败。 -解决办法:根据CM日志分析处理。 +解决办法:根据 CM 日志分析处理。 GAUSS-53008: The current node do not install SSD. Can not check SSD performance. @@ -94,7 +94,7 @@ SQLSTATE:无 错误原因:检查失败。 -解决办法:根据check日志分析处理。 +解决办法:根据 check 日志分析处理。 GAUSS-53012: Failed to insert pmk data to database. diff --git a/content/zh/docs/Developerguide/GAUSS-53200----GAUSS-53299.md b/content/zh/docs/Developerguide/GAUSS-53200----GAUSS-53299.md index b5044fa84..29e904ec1 100644 --- a/content/zh/docs/Developerguide/GAUSS-53200----GAUSS-53299.md +++ b/content/zh/docs/Developerguide/GAUSS-53200----GAUSS-53299.md @@ -20,7 +20,7 @@ GAUSS-53202: "The AZ information is incorrect. Please set it." SQLSTATE:42P25 -错误原因:计划中无AGG算子。 +错误原因:计划中无 AGG 算子。 解决办法:请联系技术支持工程师提供技术支持。 @@ -52,7 +52,7 @@ GAUSS-53206: "The value of %s must be greater than 0 and less than 11. Please se SQLSTATE:01000 -错误原因:用户名不存在,无法从hashtable中找到sql count。 +错误原因:用户名不存在,无法从 hashtable 中找到 sql count 。 解决办法:修改用户名后,再次执行操作。 @@ -60,7 +60,7 @@ SQLSTATE:01000 SQLSTATE:0A000 -错误原因:无法将低精度abstime转换为timestamp。 +错误原因:无法将低精度 abstime 转换为 timestamp 。 解决办法:修改为有效输入后,再次执行操作。 @@ -68,7 +68,7 @@ SQLSTATE:0A000 SQLSTATE:0A000 -错误原因:无法将无限值转换为numeric类型。 +错误原因:无法将无限值转换为 numeric 类型。 解决办法:修改为有效输入后,再次执行操作。 @@ -76,7 +76,7 @@ SQLSTATE:0A000 SQLSTATE:0A000 -错误原因:无法将reltime转换为时间间隔。 +错误原因:无法将 reltime 转换为时间间隔。 解决办法:修改为有效输入后,再次执行操作。 @@ -84,7 +84,7 @@ SQLSTATE:0A000 SQLSTATE:XX002 -错误原因:索引无效,无法初始化bitmap索引扫描。 +错误原因:索引无效,无法初始化 bitmap 索引扫描。 解决办法:修改为有效索引后,再次执行操作。 @@ -92,7 +92,7 @@ SQLSTATE:XX002 SQLSTATE:XX002 -错误原因:本地索引无效,无法初始化bitmap索引扫描。 +错误原因:本地索引无效,无法初始化 bitmap 索引扫描。 解决办法:修改为有效索引后,再次执行操作。 @@ -132,7 +132,7 @@ SQLSTATE:XX002 SQLSTATE:42P26 -错误原因:cgroup无法初始化或groupname不合法。 +错误原因:cgroup无法初始化或 groupname 不合法。 解决办法:请联系技术支持工程师提供技术支持。 @@ -150,7 +150,7 @@ SQLSTATE:42704 错误原因:cgroup不存在。 -解决办法:创建cgroup后,再次执行操作。 +解决办法:创建 cgroup 后,再次执行操作。 \[GAUSS-53219\]: "component in parameter 'dynamic\_library\_path' is not an absolute path" @@ -206,7 +206,7 @@ SQLSTATE:XX005 错误原因:无法在函数查找表内找到函数定义。 -解决办法:检查SQL语句中的函数是否有效。 +解决办法:检查 SQL 语句中的函数是否有效。 \[GAUSS-53226\]: "invalid address family in external '%s' value" @@ -244,9 +244,9 @@ SQLSTATE:22P02 SQLSTATE:22P03 -错误原因:非法的Numeric输入。 +错误原因:非法的 Numeric 输入。 -解决办法:请检查数据中是否包含非法的Numeric输入。关于Numeric的合法格式请参考[zh-cn\_topic\_0274503547.md](zh-cn_topic_0274503547.md)。 +解决办法:请检查数据中是否包含非法的 Numeric 输入。关于 Numeric 的合法格式请参考[zh-cn\_topic\_0274503547.md](zh-cn_topic_0274503547.md)。 \[GAUSS-53231\]: "invalid external 'cidr' value" @@ -302,13 +302,13 @@ SQLSTATE:22003 错误原因:语法错误。 -解决办法:修改SQL。 +解决办法:修改 SQL 。 \[GAUSS-53238\]: "invalid regexp option: '%c'" SQLSTATE:22023 -错误原因:非法的regexp转换类型。 +错误原因:非法的 regexp 转换类型。 解决办法:检查输入参数。 @@ -316,15 +316,15 @@ SQLSTATE:22023 SQLSTATE:22P03 -错误原因:非法的Numeric输入。 +错误原因:非法的 Numeric 输入。 -解决办法:请检查数据中是否包含非法的Numeric输入。关于Numeric的合法格式请参考[zh-cn\_topic\_0274503547.md](zh-cn_topic_0274503547.md)。 +解决办法:请检查数据中是否包含非法的 Numeric 输入。关于 Numeric 的合法格式请参考[zh-cn\_topic\_0274503547.md](zh-cn_topic_0274503547.md)。 \[GAUSS-53240\]: "invalid status in external 'tinterval' value" SQLSTATE:22P03 -错误原因:输入的字符串中获得的internal错误状态与数据对应的状态不一致。 +错误原因:输入的字符串中获得的 internal 错误状态与数据对应的状态不一致。 解决办法:检查输入字符串。 @@ -340,7 +340,7 @@ SQLSTATE:22023 SQLSTATE:42501 -错误原因:禁止联机扩展时杀掉backend进程。 +错误原因:禁止联机扩展时杀掉 backend 进程。 解决办法:请联系技术支持工程师提供技术支持。 @@ -350,7 +350,7 @@ SQLSTATE:22P02 错误原因:语法错误。 -解决办法:检查SQL语句。 +解决办法:检查 SQL 语句。 \[GAUSS-53244\]: "malformed record literal: '%s'" @@ -420,9 +420,9 @@ SQLSTATE:22023 SQLSTATE:XX004 -错误原因:未知XML操作。 +错误原因:未知 XML 操作。 -解决办法:检查XML内容信息。 +解决办法:检查 XML 内容信息。 \[GAUSS-53253\]: "unsupported reference to system column %d in FieldSelect" @@ -470,7 +470,7 @@ SQLSTATE:42704 错误原因:cgroup控制信息未定义。 -解决办法:检查cgroup配置文件。 +解决办法:检查 cgroup 配置文件。 \[GAUSS-53259\]: "wrong pg\_constraint entry for trigger '%s' on table '%s'" diff --git a/content/zh/docs/Developerguide/GAUSS-53300----GAUSS-53399.md b/content/zh/docs/Developerguide/GAUSS-53300----GAUSS-53399.md index 0c0641318..4fbc742c3 100644 --- a/content/zh/docs/Developerguide/GAUSS-53300----GAUSS-53399.md +++ b/content/zh/docs/Developerguide/GAUSS-53300----GAUSS-53399.md @@ -4,33 +4,33 @@ GAUSS-53300: "The current product version '%s' does not support the license " SQLSTATE: 无 -错误原因:当前产品版本不支持License注册和反注册操作。 +错误原因:当前产品版本不支持 License 注册和反注册操作。 -解决办法:目前License注册和反注册操作只支持GaussDB200产品,在其它产品版本中不支持该操作。 +解决办法:目前 License 注册和反注册操作只支持 GaussDB200 产品,在其它产品版本中不支持该操作。 GAUSS-53301: "The license control files are not consistent on the cluster." SQLSTATE: 无 -错误原因:集群中的License文件不一致。 +错误原因:集群中的 License 文件不一致。 -解决办法:联系运维人员处理License不一致的问题。 +解决办法:联系运维人员处理 License 不一致的问题。 GAUSS-53302: "The current cluster does not apply the license control, please upgrade it" " first." SQLSTATE: 无 -错误原因:当前数据库版本不支持License管理或集群所有节点License文件丢失。 +错误原因:当前数据库版本不支持 License 管理或集群所有节点 License 文件丢失。 -解决办法:如果用户未从FusionInsight Manager中注册任何License,则代表用户必须升级数据库版本来支持License管理,否则需要联系运维人员处理License全部丢失的问题。 +解决办法:如果用户未从 FusionInsight Manager 中注册任何 License ,则代表用户必须升级数据库版本来支持 License 管理,否则需要联系运维人员处理 License 全部丢失的问题。 GAUSS-53303: "The DWS cluster does not support the license register/unregister operation." SQLSTATE: 无 -错误原因:云上DWS集群不支持License注册和反注册操作。 +错误原因:云上 DWS 集群不支持 License 注册和反注册操作。 -解决办法:目前License注册和反注册操作只支持GaussDB200产品,在其它产品版本中不支持该操作。 +解决办法:目前 License 注册和反注册操作只支持 GaussDB200 产品,在其它产品版本中不支持该操作。 GAUSS-53304: "Can not register the enabled features." diff --git a/content/zh/docs/Developerguide/GAUSS-53400----GAUSS-53499.md b/content/zh/docs/Developerguide/GAUSS-53400----GAUSS-53499.md index 81ca93cbc..dbc0d2b3a 100644 --- a/content/zh/docs/Developerguide/GAUSS-53400----GAUSS-53499.md +++ b/content/zh/docs/Developerguide/GAUSS-53400----GAUSS-53499.md @@ -30,7 +30,7 @@ SQLSTATE: 无 错误原因:系统内部错误。 -解决办法:首先定位是不是集群down,如果不是,请联系技术支持工程师提供技术支持。 +解决办法:首先定位是不是集群 down ,如果不是,请联系技术支持工程师提供技术支持。 GAUSS-53404: "backup key %s does not exist" diff --git a/content/zh/docs/Developerguide/GAUSS-53700----GAUSS-53799.md b/content/zh/docs/Developerguide/GAUSS-53700----GAUSS-53799.md index 3c0176a9f..5b82f88bf 100644 --- a/content/zh/docs/Developerguide/GAUSS-53700----GAUSS-53799.md +++ b/content/zh/docs/Developerguide/GAUSS-53700----GAUSS-53799.md @@ -1,98 +1,98 @@ -# GAUSS-53700 -- GAUSS-53799 - -GAUSS-53700: "This patch has been loaded before!." - -SQLSTATE: 无 - -错误原因:热补丁已经被加载。 - -解决办法:该报错一般出现重复加载热补丁的场景,说明该热补丁不需要再加载,不需要处理。 - -GAUSS-53701: "This patch has not been loaded!." - -SQLSTATE: 无 - -错误原因:热补丁还未被加载。 - -解决办法:该报错一般发生在激活未加载热补丁的场景,需要先加载热补丁,再重新执行当前操作。 - -GAUSS-53702: "Status check failed, can not XXX" - -SQLSTATE: 无 - -错误原因:需要执行的操作不符合热补丁的状态转换规则。 - -解决办法:热补丁状态转换规则为加载-\>激活-\>去激活-\>卸载,请按照状态转换规则执行命令。 - -GAUSS-53703: "Patch status file has been broken." - -SQLSTATE: 无 - -错误原因:补丁状态文件被损坏。 - -解决办法:从未被损坏的节点拷贝一份状态文件到受损的节点。 - -GAUSS-53704: "Unzip om patch failed" - -SQLSTATE: 无 - -错误原因:解压缩热补丁文件失败。 - -解决办法:检查使用的热补丁文件是否被损坏。 - -GAUSS-53705: "The XXX does not exist." - -SQLSTATE: 无 - -错误原因:补丁流程中所需要的XXX文件不存在或者被损坏。 - -解决办法:重新加载补丁。 - -GAUSS-53706: "Check patch SHA256SUM failed." - -SQLSTATE: 无 - -错误原因:sha256sum校验失败。 - -解决办法:确认补丁与版本是否匹配,该错误一般发生在补丁与版本不匹配的场景。 - -GAUSS-53707: "Recover om hotpatch failed." - -SQLSTATE: 无 - -错误原因:热补丁文件被损坏。 - -解决办法:重新加载激活被损坏的热补丁。 - -GAUSS-53708: "Check base version failed." - -SQLSTATE: 无 - -错误原因:热补丁基线版本与当前版本不匹配。 - -解决办法:确实是否取错了补丁,请使用与版本匹配的热补丁。 - -GAUSS-53709: "Create patch lock failed, other om process is running." - -SQLSTATE: 无 - -错误原因:执行热补丁操作时,存在与热补丁互斥的其他om操作。 - -解决办法:等待互斥的om操作执行完成后,再执行热补丁操作。 - -GAUSS-53710: "Unzip server package failed." - -SQLSTATE: 无 - -错误原因:解压缩集合热补丁失败。 - -解决办法:检查集合热补丁是否被损坏,是否可以单独解压。 - -GAUSS-53711: "Server package patch file is invalid." - -SQLSTATE: 无 - -错误原因:集合热补丁不可用。 - -解决办法:检查集合热补丁文件是否被损坏,是否可以单独解压。 - +# GAUSS-53700 -- GAUSS-53799 + +GAUSS-53700: "This patch has been loaded before!." + +SQLSTATE: 无 + +错误原因:热补丁已经被加载。 + +解决办法:该报错一般出现重复加载热补丁的场景,说明该热补丁不需要再加载,不需要处理。 + +GAUSS-53701: "This patch has not been loaded!." + +SQLSTATE: 无 + +错误原因:热补丁还未被加载。 + +解决办法:该报错一般发生在激活未加载热补丁的场景,需要先加载热补丁,再重新执行当前操作。 + +GAUSS-53702: "Status check failed, can not XXX" + +SQLSTATE: 无 + +错误原因:需要执行的操作不符合热补丁的状态转换规则。 + +解决办法:热补丁状态转换规则为加载-\>激活-\>去激活-\>卸载,请按照状态转换规则执行命令。 + +GAUSS-53703: "Patch status file has been broken." + +SQLSTATE: 无 + +错误原因:补丁状态文件被损坏。 + +解决办法:从未被损坏的节点拷贝一份状态文件到受损的节点。 + +GAUSS-53704: "Unzip om patch failed" + +SQLSTATE: 无 + +错误原因:解压缩热补丁文件失败。 + +解决办法:检查使用的热补丁文件是否被损坏。 + +GAUSS-53705: "The XXX does not exist." + +SQLSTATE: 无 + +错误原因:补丁流程中所需要的 XXX 文件不存在或者被损坏。 + +解决办法:重新加载补丁。 + +GAUSS-53706: "Check patch SHA256SUM failed." + +SQLSTATE: 无 + +错误原因:sha256sum校验失败。 + +解决办法:确认补丁与版本是否匹配,该错误一般发生在补丁与版本不匹配的场景。 + +GAUSS-53707: "Recover om hotpatch failed." + +SQLSTATE: 无 + +错误原因:热补丁文件被损坏。 + +解决办法:重新加载激活被损坏的热补丁。 + +GAUSS-53708: "Check base version failed." + +SQLSTATE: 无 + +错误原因:热补丁基线版本与当前版本不匹配。 + +解决办法:确实是否取错了补丁,请使用与版本匹配的热补丁。 + +GAUSS-53709: "Create patch lock failed, other om process is running." + +SQLSTATE: 无 + +错误原因:执行热补丁操作时,存在与热补丁互斥的其他 om 操作。 + +解决办法:等待互斥的 om 操作执行完成后,再执行热补丁操作。 + +GAUSS-53710: "Unzip server package failed." + +SQLSTATE: 无 + +错误原因:解压缩集合热补丁失败。 + +解决办法:检查集合热补丁是否被损坏,是否可以单独解压。 + +GAUSS-53711: "Server package patch file is invalid." + +SQLSTATE: 无 + +错误原因:集合热补丁不可用。 + +解决办法:检查集合热补丁文件是否被损坏,是否可以单独解压。 + diff --git "a/content/zh/docs/Developerguide/GET_GLOBAL_PREPARED_XACTS\357\274\210\345\272\237\345\274\203\357\274\211.md" "b/content/zh/docs/Developerguide/GET_GLOBAL_PREPARED_XACTS\357\274\210\345\272\237\345\274\203\357\274\211.md" index 284861dd5..388f8ef5a 100644 --- "a/content/zh/docs/Developerguide/GET_GLOBAL_PREPARED_XACTS\357\274\210\345\272\237\345\274\203\357\274\211.md" +++ "b/content/zh/docs/Developerguide/GET_GLOBAL_PREPARED_XACTS\357\274\210\345\272\237\345\274\203\357\274\211.md" @@ -1,4 +1,4 @@ -# GET\_GLOBAL\_PREPARED\_XACTS(废弃) - -集中式及openGauss不支持该视图。 - +# GET\_GLOBAL\_PREPARED\_XACTS(废弃) + +集中式及 openGauss 不支持该视图。 + diff --git a/content/zh/docs/Developerguide/GET_GTM_LITE_STATUS.md b/content/zh/docs/Developerguide/GET_GTM_LITE_STATUS.md index 646ea7dc5..7cd5f4512 100644 --- a/content/zh/docs/Developerguide/GET_GTM_LITE_STATUS.md +++ b/content/zh/docs/Developerguide/GET_GTM_LITE_STATUS.md @@ -1,32 +1,32 @@ -# GET\_GTM\_LITE\_STATUS - -GET\_GTM\_LITE\_STATUS视图是获取GTM上的backupXid和csn,用来支持问题定位。 - -**表 1** GET\_GTM\_LITE\_STATUS字段 - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

backup_xid

-

integer

-

GTM上的备份Xid值。

-

csn

-

integer

-

GTM当前csn值。

-
- +# GET\_GTM\_LITE\_STATUS + +GET\_GTM\_LITE\_STATUS视图是获取 GTM 上的 backupXid 和 csn ,用来支持问题定位。 + +**表 1** GET\_GTM\_LITE\_STATUS字段 + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

backup_xid

+

integer

+

GTM上的备份 Xid 值。

+

csn

+

integer

+

GTM当前 csn 值。

+
+ diff --git "a/content/zh/docs/Developerguide/GIN\346\217\220\347\244\272\344\270\216\346\212\200\345\267\247.md" "b/content/zh/docs/Developerguide/GIN\346\217\220\347\244\272\344\270\216\346\212\200\345\267\247.md" index 309d0d693..e67ce753b 100644 --- "a/content/zh/docs/Developerguide/GIN\346\217\220\347\244\272\344\270\216\346\212\200\345\267\247.md" +++ "b/content/zh/docs/Developerguide/GIN\346\217\220\347\244\272\344\270\216\346\212\200\345\267\247.md" @@ -1,19 +1,19 @@ -# GIN提示与技巧 - -创建vs插入 - -由于可能要为每个项目插入很多键,所以GIN索引的插入可能比较慢。对于向表中大量插入的操作,我们建议先删除GIN索引,在完成插入之后再重建索引。与GIN索引创建、查询性能相关的GUC参数如下: - -- maintenance\_work\_mem - - GIN索引的构建时间对maintenance\_work\_mem的设置非常敏感。 - -- work\_mem - - 在向启用了FASTUPDATE的GIN索引执行插入操作的期间,只要待处理实体列表的大小超过了work\_mem,系统就会清理这个列表。为了避免可观察到的响应时间的大起大落,让待处理实体列表在后台被清理是比较合适的(比如通过autovacuum)。前端清理操作可以通过增加work\_mem或者执行autovacuum来避免。然而,扩大work\_mem意味着如果发生了前端清理,那么他的执行时间将更长。 - -- gin\_fuzzy\_search\_limit - - 开发GIN索引的主要目的是为了让openGauss支持高度可伸缩的全文索引,并且常常会遇见全文索引返回海量结果的情形。而且,这经常发生在查询高频词的时候,因而这样的结果集没什么用处。因为从磁盘读取大量记录并对其进行排序会消耗大量资源,这在产品环境下是不能接受的。为了控制这种情况,GIN索引有一个可配置的返回结果行数的软上限的配置参数gin\_fuzzy\_search\_limit。缺省值0表示没有限制。如果设置了非零值,那么返回结果就是从完整结果集中随机选择的一部分。“软上限”的意思是返回结果的实际数量可能与指定的限制有偏差,这取决于查询和系统随机数生成器的质量。 - - +# GIN提示与技巧 + +创建 vs 插入 + +由于可能要为每个项目插入很多键,所以 GIN 索引的插入可能比较慢。对于向表中大量插入的操作,我们建议先删除 GIN 索引,在完成插入之后再重建索引。与 GIN 索引创建、查询性能相关的 GUC 参数如下: + +- maintenance\_work\_mem + +GIN 索引的构建时间对maintenance\_work\_mem的设置非常敏感。 + +- work\_mem + + 在向启用了 FASTUPDATE 的 GIN 索引执行插入操作的期间,只要待处理实体列表的大小超过了work\_mem,系统就会清理这个列表。为了避免可观察到的响应时间的大起大落,让待处理实体列表在后台被清理是比较合适的(比如通过autovacuum)。前端清理操作可以通过增加work\_mem或者执行 autovacuum 来避免。然而,扩大work\_mem意味着如果发生了前端清理,那么他的执行时间将更长。 + +- gin\_fuzzy\_search\_limit + + 开发 GIN 索引的主要目的是为了让 openGauss 支持高度可伸缩的全文索引,并且常常会遇见全文索引返回海量结果的情形。而且,这经常发生在查询高频词的时候,因而这样的结果集没什么用处。因为从磁盘读取大量记录并对其进行排序会消耗大量资源,这在产品环境下是不能接受的。为了控制这种情况, GIN 索引有一个可配置的返回结果行数的软上限的配置参数gin\_fuzzy\_search\_limit。缺省值 0 表示没有限制。如果设置了非零值,那么返回结果就是从完整结果集中随机选择的一部分。“软上限”的意思是返回结果的实际数量可能与指定的限制有偏差,这取决于查询和系统随机数生成器的质量。 + + diff --git "a/content/zh/docs/Developerguide/GIN\347\264\242\345\274\225.md" "b/content/zh/docs/Developerguide/GIN\347\264\242\345\274\225.md" index 82df0b875..ed9e40723 100644 --- "a/content/zh/docs/Developerguide/GIN\347\264\242\345\274\225.md" +++ "b/content/zh/docs/Developerguide/GIN\347\264\242\345\274\225.md" @@ -1,11 +1,11 @@ -# GIN索引 - -- **[介绍](介绍-10.md)** - -- **[扩展性](扩展性.md)** - -- **[实现](实现.md)** - -- **[GIN提示与技巧](GIN提示与技巧.md)** - - +# GIN索引 + +- **[介绍](介绍-10.md)** + +- **[扩展性](扩展性.md)** + +- **[实现](实现.md)** + +- **[GIN提示与技巧](GIN提示与技巧.md)** + + diff --git a/content/zh/docs/Developerguide/GLOBAL_BGWRITER_STAT.md b/content/zh/docs/Developerguide/GLOBAL_BGWRITER_STAT.md index ca2edc801..7b590ceba 100644 --- a/content/zh/docs/Developerguide/GLOBAL_BGWRITER_STAT.md +++ b/content/zh/docs/Developerguide/GLOBAL_BGWRITER_STAT.md @@ -1,102 +1,102 @@ -# GLOBAL\_BGWRITER\_STAT - -GLOBAL\_BGWRITER\_STAT视图显示各节点关于后端写进程活动的统计信息。 - -**表 1** GLOBAL\_BGWRITER\_STAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

checkpoints_timed

-

bigint

-

执行的定期检查点数。

-

checkpoints_req

-

bigint

-

执行的需求检查点数。

-

checkpoint_write_time

-

double precision

-

花费在检查点处理部分的时间总量,其中文件被写入到磁盘,以毫秒为单位。

-

checkpoint_sync_time

-

double precision

-

花费在检查点处理部分的时间总量,其中文件被同步到磁盘,以毫秒为单位。

-

buffers_checkpoint

-

bigint

-

检查点写缓冲区数量。

-

buffers_clean

-

bigint

-

后端写进程写缓冲区数量。

-

maxwritten_clean

-

bigint

-

后端写进程停止清理扫描时间数,因为它写了太多缓冲区。

-

buffers_backend

-

bigint

-

通过后端直接写缓冲区数。

-

buffers_backend_fsync

-

bigint

-

后端不得不执行自己的fsync调用的时间数(通常后端写进程处理这些即使后端确实自己写)。

-

buffers_alloc

-

bigint

-

分配的缓冲区数量。

-

stats_reset

-

timestamp with time zone

-

这些统计被重置的时间。

-
- +# GLOBAL\_BGWRITER\_STAT + +GLOBAL\_BGWRITER\_STAT视图显示各节点关于后端写进程活动的统计信息。 + +**表 1** GLOBAL\_BGWRITER\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

checkpoints_timed

+

bigint

+

执行的定期检查点数。

+

checkpoints_req

+

bigint

+

执行的需求检查点数。

+

checkpoint_write_time

+

double precision

+

花费在检查点处理部分的时间总量,其中文件被写入到磁盘,以毫秒为单位。

+

checkpoint_sync_time

+

double precision

+

花费在检查点处理部分的时间总量,其中文件被同步到磁盘,以毫秒为单位。

+

buffers_checkpoint

+

bigint

+

检查点写缓冲区数量。

+

buffers_clean

+

bigint

+

后端写进程写缓冲区数量。

+

maxwritten_clean

+

bigint

+

后端写进程停止清理扫描时间数,因为它写了太多缓冲区。

+

buffers_backend

+

bigint

+

通过后端直接写缓冲区数。

+

buffers_backend_fsync

+

bigint

+

后端不得不执行自己的 fsync 调用的时间数(通常后端写进程处理这些即使后端确实自己写)。

+

buffers_alloc

+

bigint

+

分配的缓冲区数量。

+

stats_reset

+

timestamp with time zone

+

这些统计被重置的时间。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_CANDIDATE_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_CANDIDATE_STATUS.md index 3bcbc1a40..c02fba2d4 100644 --- a/content/zh/docs/Developerguide/GLOBAL_CANDIDATE_STATUS.md +++ b/content/zh/docs/Developerguide/GLOBAL_CANDIDATE_STATUS.md @@ -1,67 +1,67 @@ -# GLOBAL\_CANDIDATE\_STATUS - -GLOBAL\_CANDIDATE\_STATUS视图显示整个数据库所有实例候选buffer个数,buffer淘汰信息。 - -**表 1** GLOBAL\_GET\_BGWRITER\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

节点名称。

-

candidate_slots

-

integer

-

当前Normal Buffer Pool候选buffer链中页面个数。

-

get_buf_from_list

-

bigint

-

Normal Buffer Pool,buffer淘汰从候选buffer链中获取页面的次数。

-

get_buf_clock_sweep

-

bigint

-

Normal Buffer Pool,buffer淘汰从原淘汰方案中获取页面的次数。

-

seg_candidate_slots

-

integer

-

当前Segment Buffer Pool候选buffer链中页面个数。

-

seg_get_buf_from_list

-

bigint

-

Segment Buffer Pool,buffer淘汰从候选buffer链中获取页面的次数。

-

seg_get_buf_clock_sweep

-

bigint

-

Segment Buffer Pool,buffer淘汰从原淘汰方案中获取页面的次数。

-
- +# GLOBAL\_CANDIDATE\_STATUS + +GLOBAL\_CANDIDATE\_STATUS视图显示整个数据库所有实例候选 buffer 个数, buffer 淘汰信息。 + +**表 1** GLOBAL\_GET\_BGWRITER\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

节点名称。

+

candidate_slots

+

integer

+

当前 Normal Buffer Pool 候选 buffer 链中页面个数。

+

get_buf_from_list

+

bigint

+

Normal Buffer Pool, buffer 淘汰从候选 buffer 链中获取页面的次数。

+

get_buf_clock_sweep

+

bigint

+

Normal Buffer Pool, buffer 淘汰从原淘汰方案中获取页面的次数。

+

seg_candidate_slots

+

integer

+

当前 Segment Buffer Pool 候选 buffer 链中页面个数。

+

seg_get_buf_from_list

+

bigint

+

Segment Buffer Pool, buffer 淘汰从候选 buffer 链中获取页面的次数。

+

seg_get_buf_clock_sweep

+

bigint

+

Segment Buffer Pool, buffer 淘汰从原淘汰方案中获取页面的次数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_CKPT_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_CKPT_STATUS.md index 75d4cdce1..61712dcc4 100644 --- a/content/zh/docs/Developerguide/GLOBAL_CKPT_STATUS.md +++ b/content/zh/docs/Developerguide/GLOBAL_CKPT_STATUS.md @@ -1,67 +1,67 @@ -# GLOBAL\_CKPT\_STATUS - -GLOBAL\_CKPT\_STATUS视图用于显示openGauss所有实例的检查点信息和各类日志刷页情况。 - -**表 1** GLOBAL\_CKPT\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

数据库进程名称。

-

ckpt_redo_point

-

test

-

当前实例的检查点。

-

ckpt_clog_flush_num

-

bigint

-

从启动到当前时间clog刷盘页面数。

-

ckpt_csnlog_flush_num

-

bigint

-

从启动到当前时间csnlog刷盘页面数。

-

ckpt_multixact_flush_num

-

bigint

-

从启动到当前时间multixact刷盘页面数。

-

ckpt_predicate_flush_num

-

bigint

-

从启动到当前时间predicate刷盘页面数。

-

ckpt_twophase_flush_num

-

bigint

-

从启动到当前时间twophase刷盘页面数。

-
- +# GLOBAL\_CKPT\_STATUS + +GLOBAL\_CKPT\_STATUS视图用于显示 openGauss 所有实例的检查点信息和各类日志刷页情况。 + +**表 1** GLOBAL\_CKPT\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

ckpt_redo_point

+

test

+

当前实例的检查点。

+

ckpt_clog_flush_num

+

bigint

+

从启动到当前时间 clog 刷盘页面数。

+

ckpt_csnlog_flush_num

+

bigint

+

从启动到当前时间 csnlog 刷盘页面数。

+

ckpt_multixact_flush_num

+

bigint

+

从启动到当前时间 multixact 刷盘页面数。

+

ckpt_predicate_flush_num

+

bigint

+

从启动到当前时间 predicate 刷盘页面数。

+

ckpt_twophase_flush_num

+

bigint

+

从启动到当前时间 twophase 刷盘页面数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_CONFIG_SETTINGS.md b/content/zh/docs/Developerguide/GLOBAL_CONFIG_SETTINGS.md index 86f93da91..8f09a1824 100644 --- a/content/zh/docs/Developerguide/GLOBAL_CONFIG_SETTINGS.md +++ b/content/zh/docs/Developerguide/GLOBAL_CONFIG_SETTINGS.md @@ -1,137 +1,137 @@ -# GLOBAL\_CONFIG\_SETTINGS - -GLOBAL\_CONFIG\_SETTINGS显示各节点数据库运行时参数的相关信息。 - -**表 1** GLOBAL\_CONFIG\_SETTINGS的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

数据库进程名称。

-

name

-

text

-

参数名称。

-

setting

-

text

-

参数当前值。

-

unit

-

text

-

参数的隐式结构。

-

category

-

text

-

参数的逻辑组。

-

short_desc

-

text

-

参数的简单描述。

-

extra_desc

-

text

-

参数的详细描述。

-

context

-

text

-

设置参数值的上下文,包括internal、postmaster、sighup、backend、superuser、user。

-

vartype

-

text

-

参数类型,包括bool、enum、integer、real、string。

-

source

-

text

-

参数的赋值方式。

-

min_val

-

text

-

参数最小值。如果参数类型不是数值型,那么该字段值为null。

-

max_val

-

text

-

参数最大值。如果参数类型不是数值型,那么该字段值为null。

-

enumvals

-

text[]

-

enum类型参数合法值。如果参数类型不是enum型,那么该字段值为null。

-

boot_val

-

text

-

数据库启动时参数默认值。

-

reset_val

-

text

-

数据库重置时参数默认值。

-

sourcefile

-

text

-

设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为null。

-

sourceline

-

integer

-

设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为null。

-
- +# GLOBAL\_CONFIG\_SETTINGS + +GLOBAL\_CONFIG\_SETTINGS显示各节点数据库运行时参数的相关信息。 + +**表 1** GLOBAL\_CONFIG\_SETTINGS的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

name

+

text

+

参数名称。

+

setting

+

text

+

参数当前值。

+

unit

+

text

+

参数的隐式结构。

+

category

+

text

+

参数的逻辑组。

+

short_desc

+

text

+

参数的简单描述。

+

extra_desc

+

text

+

参数的详细描述。

+

context

+

text

+

设置参数值的上下文,包括internal、postmaster、sighup、backend、superuser、user。

+

vartype

+

text

+

参数类型,包括bool、enum、integer、real、string。

+

source

+

text

+

参数的赋值方式。

+

min_val

+

text

+

参数最小值。如果参数类型不是数值型,那么该字段值为 null 。

+

max_val

+

text

+

参数最大值。如果参数类型不是数值型,那么该字段值为 null 。

+

enumvals

+

text[]

+

enum类型参数合法值。如果参数类型不是 enum 型,那么该字段值为 null 。

+

boot_val

+

text

+

数据库启动时参数默认值。

+

reset_val

+

text

+

数据库重置时参数默认值。

+

sourcefile

+

text

+

设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为 null 。

+

sourceline

+

integer

+

设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为 null 。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_DOUBLE_WRITE_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_DOUBLE_WRITE_STATUS.md index 36a35291d..d117238a2 100644 --- a/content/zh/docs/Developerguide/GLOBAL_DOUBLE_WRITE_STATUS.md +++ b/content/zh/docs/Developerguide/GLOBAL_DOUBLE_WRITE_STATUS.md @@ -1,95 +1,95 @@ -# GLOBAL\_DOUBLE\_WRITE\_STATUS - -GLOBAL\_DOUBLE\_WRITE\_STATUS视图显示openGauss所有实例的双写文件的情况。 - -**表 1** GLOBAL\_DOUBLEWRITE\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

数据库进程名称。

-

curr_dwn

-

bigint

-

当前双写文件的序列号。

-

curr_start_page

-

bigint

-

当前双写文件恢复起始页面。

-

file_trunc_num

-

bigint

-

当前双写文件复用的次数。

-

file_reset_num

-

bigint

-

当前双写文件写满后发生重置的次数。

-

total_writes

-

bigint

-

当前双写文件总的I/O次数。

-

low_threshold_writes

-

bigint

-

低效率写双写文件的I/O次数(一次I/O刷页数量少于16页面)。

-

high_threshold_writes

-

bigint

-

高效率写双写文件的I/O次数(一次I/O刷页数量多于一批,421个页面)。

-

total_pages

-

bigint

-

当前刷页到双写文件区的总的页面个数。

-

low_threshold_pages

-

bigint

-

低效率刷页的页面个数。

-

high_threshold_pages

-

bigint

-

高效率刷页的页面个数。

-
- +# GLOBAL\_DOUBLE\_WRITE\_STATUS + +GLOBAL\_DOUBLE\_WRITE\_STATUS视图显示 openGauss 所有实例的双写文件的情况。 + +**表 1** GLOBAL\_DOUBLEWRITE\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

curr_dwn

+

bigint

+

当前双写文件的序列号。

+

curr_start_page

+

bigint

+

当前双写文件恢复起始页面。

+

file_trunc_num

+

bigint

+

当前双写文件复用的次数。

+

file_reset_num

+

bigint

+

当前双写文件写满后发生重置的次数。

+

total_writes

+

bigint

+

当前双写文件总的I/O次数。

+

low_threshold_writes

+

bigint

+

低效率写双写文件的I/O次数(一次I/O刷页数量少于 16 页面)。

+

high_threshold_writes

+

bigint

+

高效率写双写文件的I/O次数(一次I/O刷页数量多于一批, 421 个页面)。

+

total_pages

+

bigint

+

当前刷页到双写文件区的总的页面个数。

+

low_threshold_pages

+

bigint

+

低效率刷页的页面个数。

+

high_threshold_pages

+

bigint

+

高效率刷页的页面个数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_FILE_IOSTAT.md b/content/zh/docs/Developerguide/GLOBAL_FILE_IOSTAT.md index 76eb0292a..45a7ba83c 100644 --- a/content/zh/docs/Developerguide/GLOBAL_FILE_IOSTAT.md +++ b/content/zh/docs/Developerguide/GLOBAL_FILE_IOSTAT.md @@ -1,116 +1,116 @@ -# GLOBAL\_FILE\_IOSTAT - -得到所有节点上的数据文件IO统计信息。 - -**表 1** GLOBAL\_FILE\_IOSTAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

filenum

-

oid

-

文件标识。

-

dbid

-

oid

-

数据库标识。

-

spcid

-

oid

-

表空间标识。

-

phyrds

-

bigint

-

读物理文件的数目。

-

phywrts

-

bigint

-

写物理文件的数目。

-

phyblkrd

-

bigint

-

读物理文件块的数目。

-

phyblkwrt

-

bigint

-

写物理文件块的数目。

-

readtim

-

bigint

-

读文件的总时长(单位:微秒)。

-

writetim

-

bigint

-

写文件的总时长(单位:微秒)。

-

avgiotim

-

bigint

-

读写文件的平均时长(单位:微秒)。

-

lstiotim

-

bigint

-

最后一次读文件时长(单位:微秒)。

-

miniotim

-

bigint

-

读写文件的最小时长(单位:微秒)。

-

maxiowtm

-

bigint

-

读写文件的最大时长(单位:微秒)。

-
- +# GLOBAL\_FILE\_IOSTAT + +得到所有节点上的数据文件 IO 统计信息。 + +**表 1** GLOBAL\_FILE\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

filenum

+

oid

+

文件标识。

+

dbid

+

oid

+

数据库标识。

+

spcid

+

oid

+

表空间标识。

+

phyrds

+

bigint

+

读物理文件的数目。

+

phywrts

+

bigint

+

写物理文件的数目。

+

phyblkrd

+

bigint

+

读物理文件块的数目。

+

phyblkwrt

+

bigint

+

写物理文件块的数目。

+

readtim

+

bigint

+

读文件的总时长(单位:微秒)。

+

writetim

+

bigint

+

写文件的总时长(单位:微秒)。

+

avgiotim

+

bigint

+

读写文件的平均时长(单位:微秒)。

+

lstiotim

+

bigint

+

最后一次读文件时长(单位:微秒)。

+

miniotim

+

bigint

+

读写文件的最小时长(单位:微秒)。

+

maxiowtm

+

bigint

+

读写文件的最大时长(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_FILE_REDO_IOSTAT.md b/content/zh/docs/Developerguide/GLOBAL_FILE_REDO_IOSTAT.md index b1fe0a5a7..4b0634241 100644 --- a/content/zh/docs/Developerguide/GLOBAL_FILE_REDO_IOSTAT.md +++ b/content/zh/docs/Developerguide/GLOBAL_FILE_REDO_IOSTAT.md @@ -1,74 +1,74 @@ -# GLOBAL\_FILE\_REDO\_IOSTAT - -得到openGauss内各节点的Redo(WAL)相关统计信息。 - -**表 1** GLOBALXC\_FILE\_REDO\_IOSTAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

phywrts

-

bigint

-

向wal buffer中写的次数。

-

phyblkwrt

-

bigint

-

向wal buffer中写的block的块数。

-

writetim

-

bigint

-

向xlog文件中写操作的时间(单位:微秒)。

-

avgiotim

-

bigint

-

平均写xlog的时间(writetim/phywrts)(单位:微秒)。

-

lstiotim

-

bigint

-

最后一次写xlog的时间(单位:微秒)。

-

miniotim

-

bigint

-

最小的写xlog时间(单位:微秒)。

-

maxiowtm

-

bigint

-

最大的写xlog时间(单位:微秒)。

-
- +# GLOBAL\_FILE\_REDO\_IOSTAT + +得到 openGauss 内各节点的Redo(WAL)相关统计信息。 + +**表 1** GLOBALXC\_FILE\_REDO\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

phywrts

+

bigint

+

向 wal buffer 中写的次数。

+

phyblkwrt

+

bigint

+

向 wal buffer 中写的 block 的块数。

+

writetim

+

bigint

+

向 xlog 文件中写操作的时间(单位:微秒)。

+

avgiotim

+

bigint

+

平均写 xlog 的时间(writetim/phywrts)(单位:微秒)。

+

lstiotim

+

bigint

+

最后一次写 xlog 的时间(单位:微秒)。

+

miniotim

+

bigint

+

最小的写 xlog 时间(单位:微秒)。

+

maxiowtm

+

bigint

+

最大的写 xlog 时间(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_GET_BGWRITER_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_GET_BGWRITER_STATUS.md index 1f011aa64..a78ea3e7a 100644 --- a/content/zh/docs/Developerguide/GLOBAL_GET_BGWRITER_STATUS.md +++ b/content/zh/docs/Developerguide/GLOBAL_GET_BGWRITER_STATUS.md @@ -1,6 +1,6 @@ # GLOBAL\_GET\_BGWRITER\_STATUS -GLOBAL\_GET\_BGWRITER\_STATUS视图显示所有实例bgwriter线程刷页信息,候选buffer链中页面个数,buffer淘汰信息。 +GLOBAL\_GET\_BGWRITER\_STATUS视图显示所有实例 bgwriter 线程刷页信息,候选 buffer 链中页面个数, buffer 淘汰信息。 **表 1** GLOBAL\_GET\_BGWRITER\_STATUS字段 @@ -24,7 +24,7 @@ GLOBAL\_GET\_BGWRITER\_STATUS视图显示所有实例bgwriter线程刷页信息

bigint

-

从启动到当前时间bgwriter线程总计刷脏页数量。

+

从启动到当前时间 bgwriter 线程总计刷脏页数量。

bgwr_last_flush_num

@@ -38,14 +38,14 @@ GLOBAL\_GET\_BGWRITER\_STATUS视图显示所有实例bgwriter线程刷页信息

integer

-

当前候选buffer链中页面个数。

+

当前候选 buffer 链中页面个数。

get_buffer_from_list

bigint

-

buffer淘汰从候选buffer链中获取页面的次数。

+

buffer淘汰从候选 buffer 链中获取页面的次数。

get_buffer_clock_sweep

diff --git a/content/zh/docs/Developerguide/GLOBAL_INSTANCE_TIME.md b/content/zh/docs/Developerguide/GLOBAL_INSTANCE_TIME.md index 7a86d7e1a..beb562b86 100644 --- a/content/zh/docs/Developerguide/GLOBAL_INSTANCE_TIME.md +++ b/content/zh/docs/Developerguide/GLOBAL_INSTANCE_TIME.md @@ -1,46 +1,46 @@ -# GLOBAL\_INSTANCE\_TIME - -提供openGauss中所有正常节点下的各种时间消耗信息(时间类型见instance\_time视图)。 - -**表 1** GLOBAL\_INSTANCE\_TIME字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程的名称。

-

stat_id

-

integer

-

统计编号。

-

stat_name

-

text

-

类型名称。

-

value

-

bigint

-

时间值(单位:微秒)。

-
- +# GLOBAL\_INSTANCE\_TIME + +提供 openGauss 中所有正常节点下的各种时间消耗信息(时间类型见instance\_time视图)。 + +**表 1** GLOBAL\_INSTANCE\_TIME字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程的名称。

+

stat_id

+

integer

+

统计编号。

+

stat_name

+

text

+

类型名称。

+

value

+

bigint

+

时间值(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_LOCKS.md b/content/zh/docs/Developerguide/GLOBAL_LOCKS.md index a41327c16..1978f9e10 100644 --- a/content/zh/docs/Developerguide/GLOBAL_LOCKS.md +++ b/content/zh/docs/Developerguide/GLOBAL_LOCKS.md @@ -1,129 +1,129 @@ -# GLOBAL\_LOCKS - -GLOBAL\_LOCKS视图用于查看各节点各打开事务所持有的锁信息。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

locktype

-

text

-

被锁定对象的类型:relation、extend、page、tuple、transactionid、virtualxid、object、userlock、advisory。

-

database

-

oid

-
被锁定对象所在数据库的OID:
  • 如果被锁定的对象是共享对象,则OID为0。
  • 如果是一个事务ID,则为NULL。
-
-

relation

-

oid

-

关系的OID,如果锁定的对象不是关系,也不是关系的一部分,则为NULL。

-

page

-

integer

-

关系内部的页面编号,如果对象不是关系页或者不是行页,则为NULL。

-

tuple

-

smallint

-

页面里边的行编号,如果对象不是行,则为NULL。

-

virtualxid

-

text

-

事务的虚拟ID,如果对象不是一个虚拟事务ID,则为NULL。

-

transactionid

-

xid

-

事务的ID,如果对象不是一个事务ID,则为NULL。

-

classid

-

oid

-

包含该对象的系统表的OID,如果对象不是普通的数据库对象,则为NULL。

-

objid

-

oid

-

对象在其系统表内的OID,如果对象不是普通数据库对象,则为NULL。

-

objsubid

-

smallint

-

对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是零;如果这个对象不是普通数据库对象,则为NULL。

-

virtualtransaction

-

text

-

持有此锁或者在等待此锁的事务的虚拟ID。

-

pid

-

bigint

-

持有或者等待这个锁的服务器线程的逻辑ID。如果锁是被一个预备事务持有的,则为NULL。

-

mode

-

text

-

这个线程持有的或者是期望的锁模式。

-

granted

-

boolean

-
  • 如果锁是持有锁,则为TRUE。
  • 如果锁是等待锁,则为FALSE。
-

fastpath

-

boolean

-

如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。

-
- +# GLOBAL\_LOCKS + +GLOBAL\_LOCKS视图用于查看各节点各打开事务所持有的锁信息。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

locktype

+

text

+

被锁定对象的类型:relation、extend、page、tuple、transactionid、virtualxid、object、userlock、advisory。

+

database

+

oid

+
被锁定对象所在数据库的OID:
  • 如果被锁定的对象是共享对象,则 OID 为 0 。
  • 如果是一个事务 ID ,则为 NULL 。
+
+

relation

+

oid

+

关系的 OID ,如果锁定的对象不是关系,也不是关系的一部分,则为 NULL 。

+

page

+

integer

+

关系内部的页面编号,如果对象不是关系页或者不是行页,则为 NULL 。

+

tuple

+

smallint

+

页面里边的行编号,如果对象不是行,则为 NULL 。

+

virtualxid

+

text

+

事务的虚拟 ID ,如果对象不是一个虚拟事务 ID ,则为 NULL 。

+

transactionid

+

xid

+

事务的 ID ,如果对象不是一个事务 ID ,则为 NULL 。

+

classid

+

oid

+

包含该对象的系统表的 OID ,如果对象不是普通的数据库对象,则为 NULL 。

+

objid

+

oid

+

对象在其系统表内的 OID ,如果对象不是普通数据库对象,则为 NULL 。

+

objsubid

+

smallint

+

对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是零;如果这个对象不是普通数据库对象,则为 NULL 。

+

virtualtransaction

+

text

+

持有此锁或者在等待此锁的事务的虚拟 ID 。

+

pid

+

bigint

+

持有或者等待这个锁的服务器线程的逻辑 ID 。如果锁是被一个预备事务持有的,则为 NULL 。

+

mode

+

text

+

这个线程持有的或者是期望的锁模式。

+

granted

+

boolean

+
  • 如果锁是持有锁,则为 TRUE 。
  • 如果锁是等待锁,则为 FALSE 。
+

fastpath

+

boolean

+

如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为 FALSE 。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_MEMORY_NODE_DETAIL.md b/content/zh/docs/Developerguide/GLOBAL_MEMORY_NODE_DETAIL.md index 9ef5ea939..34acac9cd 100644 --- a/content/zh/docs/Developerguide/GLOBAL_MEMORY_NODE_DETAIL.md +++ b/content/zh/docs/Developerguide/GLOBAL_MEMORY_NODE_DETAIL.md @@ -1,40 +1,40 @@ -# GLOBAL\_MEMORY\_NODE\_DETAIL - -显示当前openGauss中所有正常节点下的内存使用情况。 - -**表 1** GLOBAL\_MEMORY\_NODE\_DETAIL字段 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

nodename

-

text

-

数据库进程名称。

-

memorytype

-

text

-
内存使用的名称。
  • max_process_memory:openGauss实例所占用的内存大小。
  • process_used_memory:进程所使用的内存大小。
  • max_dynamic_memory:最大动态内存。
  • dynamic_used_memory:已使用的动态内存。
  • dynamic_peak_memory:内存的动态峰值。
  • dynamic_used_shrctx:最大动态共享内存上下文。
  • dynamic_peak_shrctx:共享内存上下文的动态峰值。
  • max_shared_memory:最大共享内存。
  • shared_used_memory:已使用的共享内存。
  • max_cstore_memory:列存所允许使用的最大内存。
  • cstore_used_memory:列存已使用的内存大小。
  • max_sctpcomm_memory:sctp通信所允许使用的最大内存。
  • sctpcomm_used_memory:sctp通信已使用的内存大小。
  • sctpcomm_peak_memory:sctp通信的内存峰值。
  • other_used_memory:其他已使用的内存大小。
  • gpu_max_dynamic_memory:GPU最大动态内存。
  • gpu_dynamic_used_memory:GPU已使用的动态内存。
  • gpu_dynamic_peak_memory:GPU内存的动态峰值。
  • pooler_conn_memory:链接池申请内存计数。
  • pooler_freeconn_memory:链接池空闲连接的内存计数。
  • storage_compress_memory:存储模块压缩使用的内存大小。
  • udf_reserved_memory:UDF预留的内存大小。
-
-

memorymbytes

-

integer

-

内存使用的大小,单位为MB。

-
- +# GLOBAL\_MEMORY\_NODE\_DETAIL + +显示当前 openGauss 中所有正常节点下的内存使用情况。 + +**表 1** GLOBAL\_MEMORY\_NODE\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

text

+

数据库进程名称。

+

memorytype

+

text

+
内存使用的名称。
  • max_process_memory:openGauss实例所占用的内存大小。
  • process_used_memory:进程所使用的内存大小。
  • max_dynamic_memory:最大动态内存。
  • dynamic_used_memory:已使用的动态内存。
  • dynamic_peak_memory:内存的动态峰值。
  • dynamic_used_shrctx:最大动态共享内存上下文。
  • dynamic_peak_shrctx:共享内存上下文的动态峰值。
  • max_shared_memory:最大共享内存。
  • shared_used_memory:已使用的共享内存。
  • max_cstore_memory:列存所允许使用的最大内存。
  • cstore_used_memory:列存已使用的内存大小。
  • max_sctpcomm_memory:sctp通信所允许使用的最大内存。
  • sctpcomm_used_memory:sctp通信已使用的内存大小。
  • sctpcomm_peak_memory:sctp通信的内存峰值。
  • other_used_memory:其他已使用的内存大小。
  • gpu_max_dynamic_memory:GPU最大动态内存。
  • gpu_dynamic_used_memory:GPU已使用的动态内存。
  • gpu_dynamic_peak_memory:GPU内存的动态峰值。
  • pooler_conn_memory:链接池申请内存计数。
  • pooler_freeconn_memory:链接池空闲连接的内存计数。
  • storage_compress_memory:存储模块压缩使用的内存大小。
  • udf_reserved_memory:UDF预留的内存大小。
+
+

memorymbytes

+

integer

+

内存使用的大小,单位为 MB 。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY.md b/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY.md index 9e8abc3e8..8a055fda1 100644 --- a/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY.md +++ b/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY.md @@ -1,173 +1,173 @@ -# GLOBAL\_OPERATOR\_HISTORY - -GLOBAL\_OPERATOR\_HISTORY系统视图显示的是当前用户在数据库主节点上执行作业结束后的算子的相关记录。 - -**表 1** GLOBAL\_OPERATOR\_HISTORY的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

queryid

-

bigint

-

语句执行使用的内部query_id。

-

pid

-

bigint

-

后端线程id。

-

plan_node_id

-

integer

-

查询对应的执行计划的plan node id。

-

plan_node_name

-

text

-

对应于plan_node_id的算子的名称。

-

start_time

-

timestamp with time zone

-

该算子处理第一条数据的开始时间。

-

duration

-

bigint

-

该算子到结束时候总的执行时间(ms)。

-

query_dop

-

integer

-

当前算子执行时的并行度。

-

estimated_rows

-

bigint

-

优化器估算的行数信息。

-

tuple_processed

-

bigint

-

当前算子返回的元素个数。

-

min_peak_memory

-

integer

-

当前算子在数据库节点上的最小内存峰值(MB)。

-

max_peak_memory

-

integer

-

当前算子在数据库节点上的最大内存峰值(MB)。

-

average_peak_memory

-

integer

-

当前算子在数据库节点上的平均内存峰值(MB)。

-

memory_skew_percent

-

integer

-

当前算子在数据库节点间的内存使用倾斜率。

-

min_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最小数据量(MB),默认为0。

-

max_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最大数据量(MB),默认为0。

-

average_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的平均数据量(MB),默认为0。

-

spill_skew_percent

-

integer

-

若发生下盘,数据库节点间下盘倾斜率。

-

min_cpu_time

-

bigint

-

该算子在数据库节点上的最小执行时间(ms)。

-

max_cpu_time

-

bigint

-

该算子在数据库节点上的最大执行时间(ms)。

-

total_cpu_time

-

bigint

-

该算子在数据库节点上的总执行时间(ms)。

-

cpu_skew_percent

-

integer

-

数据库节点间执行时间的倾斜率。

-

warning

-

text

-
主要显示如下几类告警信息:
  1. Sort/SetOp/HashAgg/HashJoin spill。
  2. Spill file size large than 256MB。
  3. Broadcast size large than 100MB。
  4. Early spill。
  5. Spill times is greater than 3。
  6. Spill on memory adaptive。
  7. Hash table conflict。
-
-
- +# GLOBAL\_OPERATOR\_HISTORY + +GLOBAL\_OPERATOR\_HISTORY系统视图显示的是当前用户在数据库主节点上执行作业结束后的算子的相关记录。 + +**表 1** GLOBAL\_OPERATOR\_HISTORY的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

queryid

+

bigint

+

语句执行使用的内部 query_id 。

+

pid

+

bigint

+

后端线程 id 。

+

plan_node_id

+

integer

+

查询对应的执行计划的 plan node id 。

+

plan_node_name

+

text

+

对应于 plan_node_id 的算子的名称。

+

start_time

+

timestamp with time zone

+

该算子处理第一条数据的开始时间。

+

duration

+

bigint

+

该算子到结束时候总的执行时间(ms)。

+

query_dop

+

integer

+

当前算子执行时的并行度。

+

estimated_rows

+

bigint

+

优化器估算的行数信息。

+

tuple_processed

+

bigint

+

当前算子返回的元素个数。

+

min_peak_memory

+

integer

+

当前算子在数据库节点上的最小内存峰值(MB)。

+

max_peak_memory

+

integer

+

当前算子在数据库节点上的最大内存峰值(MB)。

+

average_peak_memory

+

integer

+

当前算子在数据库节点上的平均内存峰值(MB)。

+

memory_skew_percent

+

integer

+

当前算子在数据库节点间的内存使用倾斜率。

+

min_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最小数据量(MB),默认为 0 。

+

max_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最大数据量(MB),默认为 0 。

+

average_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的平均数据量(MB),默认为 0 。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库节点间下盘倾斜率。

+

min_cpu_time

+

bigint

+

该算子在数据库节点上的最小执行时间(ms)。

+

max_cpu_time

+

bigint

+

该算子在数据库节点上的最大执行时间(ms)。

+

total_cpu_time

+

bigint

+

该算子在数据库节点上的总执行时间(ms)。

+

cpu_skew_percent

+

integer

+

数据库节点间执行时间的倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  1. Sort/SetOp/HashAgg/HashJoin spill。
  2. Spill file size large than 256MB。
  3. Broadcast size large than 100MB。
  4. Early spill。
  5. Spill times is greater than 3。
  6. Spill on memory adaptive。
  7. Hash table conflict。
+
+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY_TABLE.md b/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY_TABLE.md index f3845f455..df3fff29a 100644 --- a/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY_TABLE.md +++ b/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY_TABLE.md @@ -1,4 +1,4 @@ -# GLOBAL\_OPERATOR\_HISTORY\_TABLE - -GLOBAL\_OPERATOR\_HISTORY\_TABLE视图显示数据库主节点执行作业结束后的算子相关的记录。此数据是从内核中转储到系统表GS\_WLM\_OPERATOR\_INFO中的数据。该视图是查询数据库主节点系统表GS\_WLM\_OPERATOR\_INFO的汇聚视图。表字段同[表1](GLOBAL_OPERATOR_HISTORY.md#zh-cn_topic_0237122744_zh-cn_topic_0111176227_table85181143511)。 - +# GLOBAL\_OPERATOR\_HISTORY\_TABLE + +GLOBAL\_OPERATOR\_HISTORY\_TABLE视图显示数据库主节点执行作业结束后的算子相关的记录。此数据是从内核中转储到系统表GS\_WLM\_OPERATOR\_INFO中的数据。该视图是查询数据库主节点系统表GS\_WLM\_OPERATOR\_INFO的汇聚视图。表字段同[表1](GLOBAL_OPERATOR_HISTORY.md#zh-cn_topic_0237122744_zh-cn_topic_0111176227_table85181143511)。 + diff --git a/content/zh/docs/Developerguide/GLOBAL_OPERATOR_RUNTIME.md b/content/zh/docs/Developerguide/GLOBAL_OPERATOR_RUNTIME.md index 7492d6416..dbeef9586 100644 --- a/content/zh/docs/Developerguide/GLOBAL_OPERATOR_RUNTIME.md +++ b/content/zh/docs/Developerguide/GLOBAL_OPERATOR_RUNTIME.md @@ -1,180 +1,180 @@ -# GLOBAL\_OPERATOR\_RUNTIME - -GLOBAL\_OPERATOR\_RUNTIME视图显示当前用户在数据库主节点上正在执行的作业的算子相关信息。 - -**表 1** GLOBAL\_OPERATOR\_RUNTIME的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

queryid

-

bigint

-

语句执行使用的内部query_id。

-

pid

-

bigint

-

后端线程id。

-

plan_node_id

-

integer

-

查询对应的执行计划的plan node id。

-

plan_node_name

-

text

-

对应于plan_node_id的算子的名称。

-

start_time

-

timestamp with time zone

-

该算子处理第一条数据的开始时间。

-

duration

-

bigint

-

该算子到结束时候总的执行时间(ms)。

-

status

-

text

-

当前算子的执行状态,包括finished和running。

-

query_dop

-

integer

-

当前算子执行时的并行度。

-

estimated_rows

-

bigint

-

优化器估算的行数信息。

-

tuple_processed

-

bigint

-

当前算子返回的元素个数。

-

min_peak_memory

-

integer

-

当前算子在数据库节点上的最小内存峰值(MB)。

-

max_peak_memory

-

integer

-

当前算子在数据库节点上的最大内存峰值(MB)。

-

average_peak_memory

-

integer

-

当前算子在数据库节点上的平均内存峰值(MB)。

-

memory_skew_percent

-

integer

-

当前算子在数据库节点的内存使用倾斜率。

-

min_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最小数据量(MB),默认为0。

-

max_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最大数据量(MB),默认为0。

-

average_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的平均数据量(MB),默认为0。

-

spill_skew_percent

-

integer

-

若发生下盘,数据库节点间下盘倾斜率。

-

min_cpu_time

-

bigint

-

该算子在数据库节点上的最小执行时间(ms)。

-

max_cpu_time

-

bigint

-

该算子在数据库节点上的最大执行时间(ms)。

-

total_cpu_time

-

bigint

-

该算子在数据库节点上的总执行时间(ms)。

-

cpu_skew_percent

-

integer

-

数据库节点间执行时间的倾斜率。

-

warning

-

text

-
主要显示如下几类告警信息:
  • Sort/SetOp/HashAgg/HashJoin spill。
  • Spill file size large than 256MB。
  • Broadcast size large than 100MB。
  • Early spill。
  • Spill times is greater than 3。
  • Spill on memory adaptive。
  • Hash table conflict。
-
-
- +# GLOBAL\_OPERATOR\_RUNTIME + +GLOBAL\_OPERATOR\_RUNTIME视图显示当前用户在数据库主节点上正在执行的作业的算子相关信息。 + +**表 1** GLOBAL\_OPERATOR\_RUNTIME的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

queryid

+

bigint

+

语句执行使用的内部 query_id 。

+

pid

+

bigint

+

后端线程 id 。

+

plan_node_id

+

integer

+

查询对应的执行计划的 plan node id 。

+

plan_node_name

+

text

+

对应于 plan_node_id 的算子的名称。

+

start_time

+

timestamp with time zone

+

该算子处理第一条数据的开始时间。

+

duration

+

bigint

+

该算子到结束时候总的执行时间(ms)。

+

status

+

text

+

当前算子的执行状态,包括 finished 和 running 。

+

query_dop

+

integer

+

当前算子执行时的并行度。

+

estimated_rows

+

bigint

+

优化器估算的行数信息。

+

tuple_processed

+

bigint

+

当前算子返回的元素个数。

+

min_peak_memory

+

integer

+

当前算子在数据库节点上的最小内存峰值(MB)。

+

max_peak_memory

+

integer

+

当前算子在数据库节点上的最大内存峰值(MB)。

+

average_peak_memory

+

integer

+

当前算子在数据库节点上的平均内存峰值(MB)。

+

memory_skew_percent

+

integer

+

当前算子在数据库节点的内存使用倾斜率。

+

min_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最小数据量(MB),默认为 0 。

+

max_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最大数据量(MB),默认为 0 。

+

average_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的平均数据量(MB),默认为 0 。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库节点间下盘倾斜率。

+

min_cpu_time

+

bigint

+

该算子在数据库节点上的最小执行时间(ms)。

+

max_cpu_time

+

bigint

+

该算子在数据库节点上的最大执行时间(ms)。

+

total_cpu_time

+

bigint

+

该算子在数据库节点上的总执行时间(ms)。

+

cpu_skew_percent

+

integer

+

数据库节点间执行时间的倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  • Sort/SetOp/HashAgg/HashJoin spill。
  • Spill file size large than 256MB。
  • Broadcast size large than 100MB。
  • Early spill。
  • Spill times is greater than 3。
  • Spill on memory adaptive。
  • Hash table conflict。
+
+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_OS_RUNTIME.md b/content/zh/docs/Developerguide/GLOBAL_OS_RUNTIME.md index d46c7b510..930cb9ffe 100644 --- a/content/zh/docs/Developerguide/GLOBAL_OS_RUNTIME.md +++ b/content/zh/docs/Developerguide/GLOBAL_OS_RUNTIME.md @@ -1,60 +1,60 @@ -# GLOBAL\_OS\_RUNTIME - -提供openGauss中所有正常节点下的操作系统运行状态信息。 - -**表 1** GLOBAL\_OS\_RUNTIME字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

id

-

integer

-

编号。

-

name

-

text

-

操作系统运行状态名称。

-

value

-

numeric

-

操作系统运行状态值。

-

comments

-

text

-

操作系统运行状态注释。

-

cumulative

-

boolean

-

操作系统运行状态的值是否为累加值。

-
- +# GLOBAL\_OS\_RUNTIME + +提供 openGauss 中所有正常节点下的操作系统运行状态信息。 + +**表 1** GLOBAL\_OS\_RUNTIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

id

+

integer

+

编号。

+

name

+

text

+

操作系统运行状态名称。

+

value

+

numeric

+

操作系统运行状态值。

+

comments

+

text

+

操作系统运行状态注释。

+

cumulative

+

boolean

+

操作系统运行状态的值是否为累加值。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_OS_THREADS.md b/content/zh/docs/Developerguide/GLOBAL_OS_THREADS.md index a2757a153..11a67f619 100644 --- a/content/zh/docs/Developerguide/GLOBAL_OS_THREADS.md +++ b/content/zh/docs/Developerguide/GLOBAL_OS_THREADS.md @@ -1,53 +1,53 @@ -# GLOBAL\_OS\_THREADS - -提供openGauss中所有正常节点下的线程状态信息。 - -**表 1** GLOBAL\_OS\_THREADS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

数据库进程名称。

-

pid

-

bigint

-

当前节点进程中正在运行的线程号。

-

lwpid

-

integer

-

与pid对应的轻量级线程号。

-

thread_name

-

text

-

与pid对应的线程名称。

-

creation_time

-

timestamp with time zone

-

与pid对应的线程创建的时间。

-
- +# GLOBAL\_OS\_THREADS + +提供 openGauss 中所有正常节点下的线程状态信息。 + +**表 1** GLOBAL\_OS\_THREADS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

pid

+

bigint

+

当前节点进程中正在运行的线程号。

+

lwpid

+

integer

+

与 pid 对应的轻量级线程号。

+

thread_name

+

text

+

与 pid 对应的线程名称。

+

creation_time

+

timestamp with time zone

+

与 pid 对应的线程创建的时间。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_PAGEWRITER_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_PAGEWRITER_STATUS.md index aa92e7bcc..2f7d2558f 100644 --- a/content/zh/docs/Developerguide/GLOBAL_PAGEWRITER_STATUS.md +++ b/content/zh/docs/Developerguide/GLOBAL_PAGEWRITER_STATUS.md @@ -1,74 +1,74 @@ -# GLOBAL\_PAGEWRITER\_STATUS - -GLOBAL\_PAGEWRITER\_STATUS视图显示openGauss实例的刷页信息和检查点信息。 - -**表 1** GLOBAL\_PAGEWRITER\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

数据库进程名称。

-

pgwr_actual_flush_total_num

-

bigint

-

从启动到当前时间总计刷脏页数量。

-

pgwr_last_flush_num

-

integer

-

上一批刷脏页数量。

-

remain_dirty_page_num

-

bigint

-

当前预计还剩余多少脏页。

-

queue_head_page_rec_lsn

-

text

-

当前实例的脏页队列第一个脏页的recovery_lsn。

-

queue_rec_lsn

-

text

-

当前实例的脏页队列的recovery_lsn。

-

current_xlog_insert_lsn

-

text

-

当前实例XLog写入的位置。

-

ckpt_redo_point

-

text

-

当前实例的检查点。

-
- +# GLOBAL\_PAGEWRITER\_STATUS + +GLOBAL\_PAGEWRITER\_STATUS视图显示 openGauss 实例的刷页信息和检查点信息。 + +**表 1** GLOBAL\_PAGEWRITER\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

pgwr_actual_flush_total_num

+

bigint

+

从启动到当前时间总计刷脏页数量。

+

pgwr_last_flush_num

+

integer

+

上一批刷脏页数量。

+

remain_dirty_page_num

+

bigint

+

当前预计还剩余多少脏页。

+

queue_head_page_rec_lsn

+

text

+

当前实例的脏页队列第一个脏页的 recovery_lsn 。

+

queue_rec_lsn

+

text

+

当前实例的脏页队列的 recovery_lsn 。

+

current_xlog_insert_lsn

+

text

+

当前实例 XLog 写入的位置。

+

ckpt_redo_point

+

text

+

当前实例的检查点。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_PLANCACHE_CLEAN.md b/content/zh/docs/Developerguide/GLOBAL_PLANCACHE_CLEAN.md index 5dff5548a..7015dbcc8 100644 --- a/content/zh/docs/Developerguide/GLOBAL_PLANCACHE_CLEAN.md +++ b/content/zh/docs/Developerguide/GLOBAL_PLANCACHE_CLEAN.md @@ -1,4 +1,4 @@ # GLOBAL\_PLANCACHE\_CLEAN -GLOBAL\_PLANCACHE\_CLEAN视图用于清理所有节点上无人使用的全局计划缓存。返回值为Boolean类型。 +GLOBAL\_PLANCACHE\_CLEAN视图用于清理所有节点上无人使用的全局计划缓存。返回值为 Boolean 类型。 diff --git a/content/zh/docs/Developerguide/GLOBAL_PLANCACHE_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_PLANCACHE_STATUS.md index 62ce706db..e62f6c9e6 100644 --- a/content/zh/docs/Developerguide/GLOBAL_PLANCACHE_STATUS.md +++ b/content/zh/docs/Developerguide/GLOBAL_PLANCACHE_STATUS.md @@ -1,74 +1,74 @@ # GLOBAL\_PLANCACHE\_STATUS -GLOBAL\_PLANCACHE\_STATUS视图显示GPC全局计划缓存状态信息。 +GLOBAL\_PLANCACHE\_STATUS视图显示 GPC 全局计划缓存状态信息。 **表 1** GLOBAL\_PLANCACHE\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

名称

-

类型

-

描述

-

nodename

-

text

-

所属节点名称。

-

query

-

text

-

查询语句text。

-

refcount

-

integer

-

被引用次数。

-

valid

-

bool

-

是否合法。

-

databaseid

-

oid

-

所属数据库id。

-

schema_name

-

text

-

所属schema。

-

params_num

-

integer

-

参数数量。

-

func_id

-

oid

-

该plancache所在存储过程oid,如果不属于存储过程则为0。

-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

text

+

所属节点名称。

+

query

+

text

+

查询语句 text 。

+

refcount

+

integer

+

被引用次数。

+

valid

+

bool

+

是否合法。

+

databaseid

+

oid

+

所属数据库 id 。

+

schema_name

+

text

+

所属 schema 。

+

params_num

+

integer

+

参数数量。

+

func_id

+

oid

+

该 plancache 所在存储过程 oid ,如果不属于存储过程则为 0 。

+
diff --git a/content/zh/docs/Developerguide/GLOBAL_RECORD_RESET_TIME.md b/content/zh/docs/Developerguide/GLOBAL_RECORD_RESET_TIME.md index d5a90b372..37a5d272b 100644 --- a/content/zh/docs/Developerguide/GLOBAL_RECORD_RESET_TIME.md +++ b/content/zh/docs/Developerguide/GLOBAL_RECORD_RESET_TIME.md @@ -1,32 +1,32 @@ -# GLOBAL\_RECORD\_RESET\_TIME - -GLOBAL\_RECORD\_RESET\_TIME用于重置(重启、主备倒换、数据库删除)汇聚openGauss统计信息时间。 - -**表 1** GLOBAL\_RECORD\_RESET\_TIME字段 - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

数据库进程名称。

-

reset_time

-

timestamp with time zone

-

重置时间点。

-
- +# GLOBAL\_RECORD\_RESET\_TIME + +GLOBAL\_RECORD\_RESET\_TIME用于重置(重启、主备倒换、数据库删除)汇聚 openGauss 统计信息时间。 + +**表 1** GLOBAL\_RECORD\_RESET\_TIME字段 + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

reset_time

+

timestamp with time zone

+

重置时间点。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_RECOVERY_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_RECOVERY_STATUS.md index 13fd2b7ab..f054f864f 100644 --- a/content/zh/docs/Developerguide/GLOBAL_RECOVERY_STATUS.md +++ b/content/zh/docs/Developerguide/GLOBAL_RECOVERY_STATUS.md @@ -1,81 +1,81 @@ -# GLOBAL\_RECOVERY\_STATUS - -GLOBAL\_RECOVERY\_STATUS视图显示关于主机和备机的日志流控信息。 - -**表 1** GLOBAL\_RECOVERY\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

主机进程名称,包含主机和备机。

-

standby_node_name

-

text

-

备机进程名称。

-

source_ip

-

text

-

主机的IP地址。

-

source_port

-

integer

-

主机的端口号。

-

dest_ip

-

text

-

备机的IP地址。

-

dest_port

-

integer

-

备机的端口号。

-

current_rto

-

bigint

-

备机当前的日志流控时间,单位秒。

-

target_rto

-

bigint

-

备机通过GUC参数设置的预期流控时间,单位秒。

-

current_sleep_time

-

bigint

-

为了达到这个预期主机所需要的睡眠时间,单位微妙。

-
- +# GLOBAL\_RECOVERY\_STATUS + +GLOBAL\_RECOVERY\_STATUS视图显示关于主机和备机的日志流控信息。 + +**表 1** GLOBAL\_RECOVERY\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

主机进程名称,包含主机和备机。

+

standby_node_name

+

text

+

备机进程名称。

+

source_ip

+

text

+

主机的 IP 地址。

+

source_port

+

integer

+

主机的端口号。

+

dest_ip

+

text

+

备机的 IP 地址。

+

dest_port

+

integer

+

备机的端口号。

+

current_rto

+

bigint

+

备机当前的日志流控时间,单位秒。

+

target_rto

+

bigint

+

备机通过 GUC 参数设置的预期流控时间,单位秒。

+

current_sleep_time

+

bigint

+

为了达到这个预期主机所需要的睡眠时间,单位微妙。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_REDO_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_REDO_STATUS.md index 67d99cb65..feb6dca15 100644 --- a/content/zh/docs/Developerguide/GLOBAL_REDO_STATUS.md +++ b/content/zh/docs/Developerguide/GLOBAL_REDO_STATUS.md @@ -1,179 +1,179 @@ -# GLOBAL\_REDO\_STATUS - -GLOBAL\_REDO\_STATUS视图显示openGauss实例的日志回放情况。 - -**表 1** GLOBAL\_REDO\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

数据库进程名称。

-

redo_start_ptr

-

bigint

-

当前实例日志回放的起始点。

-

redo_start_time

-

bigint

-

当前实例日志回放的起始UTC时间。

-

redo_done_time

-

bigint

-

当前实例日志回放的结束UTC时间。

-

curr_time

-

bigint

-

当前实例的当前UTC时间。

-

min_recovery_point

-

bigint

-

当前实例日志的最小一致性点位置。

-

read_ptr

-

bigint

-

当前实例日志的读取位置。

-

last_replayed_read_ptr

-

bigint

-

当前实例的日志回放位置。

-

recovery_done_ptr

-

bigint

-

当前实例启动完成时的回放位置。

-

read_xlog_io_counter

-

bigint

-

当前实例读取回放日志的io次数计数。

-

read_xlog_io_total_dur

-

bigint

-

当前实例读取回放日志的io总时延。

-

read_data_io_counter

-

bigint

-

当前实例回放过程中读取数据页面的io次数计数。

-

read_data_io_total_dur

-

bigint

-

当前实例回放过程中读取数据页面的io总时延。

-

write_data_io_counter

-

bigint

-

当前实例回放过程中写数据页面的io次数计数。

-

write_data_io_total_dur

-

bigint

-

当前实例回放过程中写数据页面的io总时延。

-

process_pending_counter

-

bigint

-

当前实例回放过程中日志分发线程的同步次数计数。

-

process_pending_total_dur

-

bigint

-

当前实例回放过程中日志分发线程的同步总时延。

-

apply_counter

-

bigint

-

当前实例回放过程中回放线程的同步次数计数。

-

apply_total_dur

-

bigint

-

当前实例回放过程中回放线程的同步总时延。

-

speed

-

bigint

-

当前实例日志回放速率。

-

local_max_ptr

-

bigint

-

当前实例启动成功后本地收到的回放日志的最大值。

-

primary_flush_ptr

-

bigint

-

主机落盘日志的位置。

-

worker_info

-

text

-

当前实例回放线程信息,若没有开并行回放则该值为空。

-
- +# GLOBAL\_REDO\_STATUS + +GLOBAL\_REDO\_STATUS视图显示 openGauss 实例的日志回放情况。 + +**表 1** GLOBAL\_REDO\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

redo_start_ptr

+

bigint

+

当前实例日志回放的起始点。

+

redo_start_time

+

bigint

+

当前实例日志回放的起始 UTC 时间。

+

redo_done_time

+

bigint

+

当前实例日志回放的结束 UTC 时间。

+

curr_time

+

bigint

+

当前实例的当前 UTC 时间。

+

min_recovery_point

+

bigint

+

当前实例日志的最小一致性点位置。

+

read_ptr

+

bigint

+

当前实例日志的读取位置。

+

last_replayed_read_ptr

+

bigint

+

当前实例的日志回放位置。

+

recovery_done_ptr

+

bigint

+

当前实例启动完成时的回放位置。

+

read_xlog_io_counter

+

bigint

+

当前实例读取回放日志的 io 次数计数。

+

read_xlog_io_total_dur

+

bigint

+

当前实例读取回放日志的 io 总时延。

+

read_data_io_counter

+

bigint

+

当前实例回放过程中读取数据页面的 io 次数计数。

+

read_data_io_total_dur

+

bigint

+

当前实例回放过程中读取数据页面的 io 总时延。

+

write_data_io_counter

+

bigint

+

当前实例回放过程中写数据页面的 io 次数计数。

+

write_data_io_total_dur

+

bigint

+

当前实例回放过程中写数据页面的 io 总时延。

+

process_pending_counter

+

bigint

+

当前实例回放过程中日志分发线程的同步次数计数。

+

process_pending_total_dur

+

bigint

+

当前实例回放过程中日志分发线程的同步总时延。

+

apply_counter

+

bigint

+

当前实例回放过程中回放线程的同步次数计数。

+

apply_total_dur

+

bigint

+

当前实例回放过程中回放线程的同步总时延。

+

speed

+

bigint

+

当前实例日志回放速率。

+

local_max_ptr

+

bigint

+

当前实例启动成功后本地收到的回放日志的最大值。

+

primary_flush_ptr

+

bigint

+

主机落盘日志的位置。

+

worker_info

+

text

+

当前实例回放线程信息,若没有开并行回放则该值为空。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_REL_IOSTAT.md b/content/zh/docs/Developerguide/GLOBAL_REL_IOSTAT.md index 0f983ab53..21c000b11 100644 --- a/content/zh/docs/Developerguide/GLOBAL_REL_IOSTAT.md +++ b/content/zh/docs/Developerguide/GLOBAL_REL_IOSTAT.md @@ -1,53 +1,53 @@ -# GLOBAL\_REL\_IOSTAT - -获取所有节点上的数据文件IO统计信息。 - -**表 1** GLOBAL\_REL\_IOSTAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

phyrds

-

bigint

-

读物理文件的数目。

-

phywrts

-

bigint

-

写物理文件的数目。

-

phyblkrd

-

bigint

-

读物理文件块的数目。

-

phyblkwrt

-

bigint

-

写物理文件块的数目。

-
- +# GLOBAL\_REL\_IOSTAT + +获取所有节点上的数据文件 IO 统计信息。 + +**表 1** GLOBAL\_REL\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

phyrds

+

bigint

+

读物理文件的数目。

+

phywrts

+

bigint

+

写物理文件的数目。

+

phyblkrd

+

bigint

+

读物理文件块的数目。

+

phyblkwrt

+

bigint

+

写物理文件块的数目。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_REPLICATION_SLOTS.md b/content/zh/docs/Developerguide/GLOBAL_REPLICATION_SLOTS.md index dd93f7fed..1ecc34fce 100644 --- a/content/zh/docs/Developerguide/GLOBAL_REPLICATION_SLOTS.md +++ b/content/zh/docs/Developerguide/GLOBAL_REPLICATION_SLOTS.md @@ -1,95 +1,95 @@ -# GLOBAL\_REPLICATION\_SLOTS - -GLOBAL\_REPLICATION\_SLOTS视图用于查看openGauss各节点的复制节点的信息。 - -**表 1** GLOBAL\_REPLICATION\_SLOTS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

slot_name

-

text

-

复制节点的名称。

-

plugin

-

text

-

插件名称。

-

slot_type

-

text

-

复制节点的类型。

-

datoid

-

oid

-

复制节点的数据库OID。

-

database

-

name

-

复制节点的数据库名称。

-

active

-

boolean

-

复制节点是否为激活状态。

-

x_min

-

xid

-

复制节点事务标识。

-

catalog_xmin

-

xid

-

逻辑复制槽对应的最早解码事务标识.

-

restart_lsn

-

text

-

复制节点的Xlog文件信息。

-

dummy_standby

-

boolean

-

复制节点是否为假备。

-
- +# GLOBAL\_REPLICATION\_SLOTS + +GLOBAL\_REPLICATION\_SLOTS视图用于查看 openGauss 各节点的复制节点的信息。 + +**表 1** GLOBAL\_REPLICATION\_SLOTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

slot_name

+

text

+

复制节点的名称。

+

plugin

+

text

+

插件名称。

+

slot_type

+

text

+

复制节点的类型。

+

datoid

+

oid

+

复制节点的数据库 OID 。

+

database

+

name

+

复制节点的数据库名称。

+

active

+

boolean

+

复制节点是否为激活状态。

+

x_min

+

xid

+

复制节点事务标识。

+

catalog_xmin

+

xid

+

逻辑复制槽对应的最早解码事务标识.

+

restart_lsn

+

text

+

复制节点的 Xlog 文件信息。

+

dummy_standby

+

boolean

+

复制节点是否为假备。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_REPLICATION_STAT.md b/content/zh/docs/Developerguide/GLOBAL_REPLICATION_STAT.md index 31216817b..e336b0a67 100644 --- a/content/zh/docs/Developerguide/GLOBAL_REPLICATION_STAT.md +++ b/content/zh/docs/Developerguide/GLOBAL_REPLICATION_STAT.md @@ -1,132 +1,132 @@ -# GLOBAL\_REPLICATION\_STAT - -GLOBAL\_REPLICATION\_STAT视图用于获得各节点描述日志同步状态信息,如发起端发送日志位置、收端接收日志位置等。 - -**表 1** GLOBAL\_REPLICATION\_STAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

pid

-

bigint

-

线程的PID。

-

usesysid

-

oid

-

用户系统ID。

-

usename

-

name

-

用户名。

-

application_name

-

text

-

程序名称。

-

client_addr

-

inet

-

客户端地址。

-

client_hostname

-

text

-

客户端名。

-

client_port

-

integer

-

客户端端口。

-

backend_start

-

timestamp with time zone

-

程序启动时间。

-

state

-

text

-

日志复制的状态:

  • 追赶状态。
  • 一致的流状态。

-

sender_sent_location

-

text

-

发送端发送日志位置。

-

receiver_write_location

-

text

-

接收端write日志位置。

-

receiver_flush_location

-

text

-

接收端flush日志位置。

-

receiver_replay_location

-

text

-

接收端replay日志位置。

-

sync_priority

-

integer

-

同步复制的优先级(0表示异步)。

-

sync_state

-

text

-
同步状态:
  • 异步复制。
  • 同步复制。
  • 潜在同步者。
-
-
- - +# GLOBAL\_REPLICATION\_STAT + +GLOBAL\_REPLICATION\_STAT视图用于获得各节点描述日志同步状态信息,如发起端发送日志位置、收端接收日志位置等。 + +**表 1** GLOBAL\_REPLICATION\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

pid

+

bigint

+

线程的 PID 。

+

usesysid

+

oid

+

用户系统 ID 。

+

usename

+

name

+

用户名。

+

application_name

+

text

+

程序名称。

+

client_addr

+

inet

+

客户端地址。

+

client_hostname

+

text

+

客户端名。

+

client_port

+

integer

+

客户端端口。

+

backend_start

+

timestamp with time zone

+

程序启动时间。

+

state

+

text

+

日志复制的状态:

  • 追赶状态。
  • 一致的流状态。

+

sender_sent_location

+

text

+

发送端发送日志位置。

+

receiver_write_location

+

text

+

接收端 write 日志位置。

+

receiver_flush_location

+

text

+

接收端 flush 日志位置。

+

receiver_replay_location

+

text

+

接收端 replay 日志位置。

+

sync_priority

+

integer

+

同步复制的优先级(0表示异步)。

+

sync_state

+

text

+
同步状态:
  • 异步复制。
  • 同步复制。
  • 潜在同步者。
+
+
+ + diff --git a/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY.md b/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY.md index ecd3ff238..f20ad378e 100644 --- a/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY.md +++ b/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY.md @@ -1,53 +1,53 @@ -# GLOBAL\_SESSION\_MEMORY - -统计各节点的Session级别的内存使用情况,包含执行作业在数据节点上openGauss线程和Stream线程分配的所有内存,单位为MB。 - -**表 1** GLOBAL\_SESSION\_MEMORY字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

sessid

-

text

-

线程启动时间+线程标识。

-

init_mem

-

integer

-

当前正在执行作业进入执行器前已分配的内存。

-

used_mem

-

integer

-

当前正在执行作业已分配的内存。

-

peak_mem

-

integer

-

当前正在执行作业已分配的内存峰值。

-
- +# GLOBAL\_SESSION\_MEMORY + +统计各节点的 Session 级别的内存使用情况,包含执行作业在数据节点上 openGauss 线程和 Stream 线程分配的所有内存,单位为 MB 。 + +**表 1** GLOBAL\_SESSION\_MEMORY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

sessid

+

text

+

线程启动时间+线程标识。

+

init_mem

+

integer

+

当前正在执行作业进入执行器前已分配的内存。

+

used_mem

+

integer

+

当前正在执行作业已分配的内存。

+

peak_mem

+

integer

+

当前正在执行作业已分配的内存峰值。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY_DETAIL.md index 4254c7f48..be6b6d363 100644 --- a/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY_DETAIL.md +++ b/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY_DETAIL.md @@ -1,81 +1,81 @@ -# GLOBAL\_SESSION\_MEMORY\_DETAIL - -统计各节点的线程的内存使用情况,以MemoryContext节点来统计。 - -**表 1** GLOBAL\_SESSION\_MEMORY\_DETAIL字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

sessid

-

text

-

线程启动时间+线程标识。

-

sesstype

-

text

-

线程名称。

-

contextname

-

text

-

内存上下文名称。

-

level

-

smallint

-

内存上下文的重要级别。

-

parent

-

text

-

父级内存上下文名称。

-

totalsize

-

bigint

-

总申请内存大小(单位:字节)。

-

freesize

-

bigint

-

空闲内存大小(单位:字节)。

-

usedsize

-

bigint

-

使用内存大小(单位:字节)。

-
- +# GLOBAL\_SESSION\_MEMORY\_DETAIL + +统计各节点的线程的内存使用情况,以 MemoryContext 节点来统计。 + +**表 1** GLOBAL\_SESSION\_MEMORY\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

sessid

+

text

+

线程启动时间+线程标识。

+

sesstype

+

text

+

线程名称。

+

contextname

+

text

+

内存上下文名称。

+

level

+

smallint

+

内存上下文的重要级别。

+

parent

+

text

+

父级内存上下文名称。

+

totalsize

+

bigint

+

总申请内存大小(单位:字节)。

+

freesize

+

bigint

+

空闲内存大小(单位:字节)。

+

usedsize

+

bigint

+

使用内存大小(单位:字节)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT.md b/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT.md index 0a4b8713e..3fc51647d 100644 --- a/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT.md +++ b/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT.md @@ -1,60 +1,60 @@ -# GLOBAL\_SESSION\_STAT - -各节点上以会话线程或AutoVacuum线程为单位,统计会话状态信息。 - -**表 1** GLOBAL\_SESSION\_STAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

sessid

-

text

-

线程启动时间+线程标识。

-

statid

-

integer

-

统计编号。

-

statname

-

text

-

统计会话名称。

-

statunit

-

text

-

统计会话单位。

-

value

-

bigint

-

统计会话值。

-
- +# GLOBAL\_SESSION\_STAT + +各节点上以会话线程或 AutoVacuum 线程为单位,统计会话状态信息。 + +**表 1** GLOBAL\_SESSION\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

sessid

+

text

+

线程启动时间+线程标识。

+

statid

+

integer

+

统计编号。

+

statname

+

text

+

统计会话名称。

+

statunit

+

text

+

统计会话单位。

+

value

+

bigint

+

统计会话值。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT_ACTIVITY.md b/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT_ACTIVITY.md index ed9431a85..423d12f15 100644 --- a/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT_ACTIVITY.md +++ b/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT_ACTIVITY.md @@ -1,170 +1,170 @@ -# GLOBAL\_SESSION\_STAT\_ACTIVITY - -显示openGauss内各节点上正在运行的线程相关的信息。 - -**表 1** GLOBAL\_SESSION\_STAT\_ACTIVITY字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

coorname

-

text

-

数据库进程名称。

-

datid

-

oid

-

用户会话在后台连接到的数据库OID。

-

datname

-

text

-

用户会话在后台连接到的数据库名称。

-

pid

-

bigint

-

后台线程ID。

-

usesysid

-

oid

-

登录该后台的用户OID。

-

usename

-

text

-

登录该后台的用户名。

-

application_name

-

text

-

连接到该后台的应用名。

-

client_addr

-

inet

-

连接到该后台的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

-

client_hostname

-

text

-

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

-

client_port

-

integer

-

客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。

-

backend_start

-

timestampwith time zone

-

该过程开始的时间,即当客户端连接服务器时间。

-

xact_start

-

timestampwith time zone

-

启动当前事务的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。

-

query_start

-

timestampwith time zone

-

开始当前活跃查询的时间,如果state的值不是active,则这个值是上一个查询的开始时间。

-

state_change

-

timestampwith time zone

-

上次状态改变的时间。

-

waiting

-

boolean

-

如果后台当前正等待锁则为true。

-

enqueue

-

text

-

该字段不支持。

-

state

-

text

-
该后台当前总体状态。可能值是:
  • active:后台正在执行一个查询。
  • idle:后台正在等待一个新的客户端命令。
  • idle in transaction:后台在事务中,但是目前无法执行查询。
  • idle in transaction (aborted):这个状态除说明事务中有某个语句导致了错误外,类似于idle in transaction。
  • fastpath function call:后台正在执行一个fast-path函数。
  • disabled:如果后台禁用track_activities,则报告这个状态。
    说明:

    普通用户只能查看到自己帐户所对应的会话状态。即其他帐户的state信息为空。例如以judy用户连接数据库后,在pg_stat_activity中查看到的普通用户joe及初始用户omm的state信息为空。

    -
    openGauss=# SELECT datname, usename, usesysid,state,pid FROM pg_stat_activity;
    -datname    | usename | usesysid | state    |       pid
    -----------+---------+----------+--------+-----------------postgres  | omm       | 10       |        |139968752121616
    -postgres  | omm       | 10       |        |139968903116560
    -db_tpcds  | judy      | 16398    | active |139968391403280
    -postgres  | omm       | 10       |        |139968643069712
    -postgres  | omm       | 10       |        |139968680818448
    -postgres  | joe       | 16390    |        |139968563377936
    -(6 rows)
    -
    -
-
-

resource_pool

-

name

-

用户使用的资源池。

-

query_id

-

bigint

-

查询语句的ID。

-

query

-

text

-

该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

-
- +# GLOBAL\_SESSION\_STAT\_ACTIVITY + +显示 openGauss 内各节点上正在运行的线程相关的信息。 + +**表 1** GLOBAL\_SESSION\_STAT\_ACTIVITY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

coorname

+

text

+

数据库进程名称。

+

datid

+

oid

+

用户会话在后台连接到的数据库 OID 。

+

datname

+

text

+

用户会话在后台连接到的数据库名称。

+

pid

+

bigint

+

后台线程 ID 。

+

usesysid

+

oid

+

登录该后台的用户 OID 。

+

usename

+

text

+

登录该后台的用户名。

+

application_name

+

text

+

连接到该后台的应用名。

+

client_addr

+

inet

+

连接到该后台的客户端的 IP 地址。如果此字段是 null ,它表明通过服务器机器上 UNIX 套接字连接客户端或者这是内部进程,如 autovacuum 。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过 client_addr 的反向 DNS 查找得到。这个字段只有在启动 log_hostname 且使用 IP 连接时才非空。

+

client_port

+

integer

+

客户端用于与后台通讯的 TCP 端口号,如果使用 Unix 套接字,则为-1。

+

backend_start

+

timestampwith time zone

+

该过程开始的时间,即当客户端连接服务器时间。

+

xact_start

+

timestampwith time zone

+

启动当前事务的时间,如果没有事务是活跃的,则为 null 。如果当前查询是首个事务,则这列等同于 query_start 列。

+

query_start

+

timestampwith time zone

+

开始当前活跃查询的时间,如果 state 的值不是 active ,则这个值是上一个查询的开始时间。

+

state_change

+

timestampwith time zone

+

上次状态改变的时间。

+

waiting

+

boolean

+

如果后台当前正等待锁则为 true 。

+

enqueue

+

text

+

该字段不支持。

+

state

+

text

+
该后台当前总体状态。可能值是:
  • active:后台正在执行一个查询。
  • idle:后台正在等待一个新的客户端命令。
  • idle in transaction:后台在事务中,但是目前无法执行查询。
  • idle in transaction (aborted):这个状态除说明事务中有某个语句导致了错误外,类似于 idle in transaction 。
  • fastpath function call:后台正在执行一个fast-path函数。
  • disabled:如果后台禁用 track_activities ,则报告这个状态。
    说明:

    普通用户只能查看到自己帐户所对应的会话状态。即其他帐户的 state 信息为空。例如以 judy 用户连接数据库后,在 pg_stat_activity 中查看到的普通用户 joe 及初始用户 omm 的 state 信息为空。

    +
    openGauss=# SELECT datname, usename , usesysid , state ,pid FROM pg_stat_activity;
    +datname    | usename | usesysid | state    |       pid
    +----------+---------+----------+--------+-----------------postgres  | omm       | 10       |        |139968752121616
    +postgres  | omm       | 10       |        |139968903116560
    +db_tpcds  | judy      | 16398    | active |139968391403280
    +postgres  | omm       | 10       |        |139968643069712
    +postgres  | omm       | 10       |        |139968680818448
    +postgres  | joe       | 16390    |        |139968563377936
    +(6 rows)
    +
    +
+
+

resource_pool

+

name

+

用户使用的资源池。

+

query_id

+

bigint

+

查询语句的 ID 。

+

query

+

text

+

该后台的最新查询。如果 state 状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_SESSION_TIME.md b/content/zh/docs/Developerguide/GLOBAL_SESSION_TIME.md index 83c292ce0..5b4546efd 100644 --- a/content/zh/docs/Developerguide/GLOBAL_SESSION_TIME.md +++ b/content/zh/docs/Developerguide/GLOBAL_SESSION_TIME.md @@ -1,53 +1,53 @@ -# GLOBAL\_SESSION\_TIME - -用于统计各节点会话线程的运行时间信息,及各执行阶段所消耗时间。 - -**表 1** GLOBAL\_SESSION\_TIME字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

sessid

-

text

-

线程启动时间+线程标识。

-

stat_id

-

integer

-

统计编号。

-

stat_name

-

text

-

会话类型名称。

-

value

-

bigint

-

会话值。

-
- +# GLOBAL\_SESSION\_TIME + +用于统计各节点会话线程的运行时间信息,及各执行阶段所消耗时间。 + +**表 1** GLOBAL\_SESSION\_TIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

sessid

+

text

+

线程启动时间+线程标识。

+

stat_id

+

integer

+

统计编号。

+

stat_name

+

text

+

会话类型名称。

+

value

+

bigint

+

会话值。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_SHARED_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/GLOBAL_SHARED_MEMORY_DETAIL.md index 13cf9f9a7..59f68e875 100644 --- a/content/zh/docs/Developerguide/GLOBAL_SHARED_MEMORY_DETAIL.md +++ b/content/zh/docs/Developerguide/GLOBAL_SHARED_MEMORY_DETAIL.md @@ -1,67 +1,67 @@ -# GLOBAL\_SHARED\_MEMORY\_DETAIL - -查询openGauss中所有正常节点下的共享内存上下文的使用信息。 - -**表 1** GLOBAL\_SHARED\_MEMORY\_DETAIL字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

contextname

-

text

-

内存上下文的名称。

-

level

-

smallint

-

内存上下文的级别。

-

parent

-

text

-

上级内存上下文。

-

totalsize

-

bigint

-

共享内存总大小(单位:字节)。

-

freesize

-

bigint

-

共享内存剩余大小(单位:字节)。

-

usedsize

-

bigint

-

共享内存使用大小(单位:字节)。

-
- +# GLOBAL\_SHARED\_MEMORY\_DETAIL + +查询 openGauss 中所有正常节点下的共享内存上下文的使用信息。 + +**表 1** GLOBAL\_SHARED\_MEMORY\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

contextname

+

text

+

内存上下文的名称。

+

level

+

smallint

+

内存上下文的级别。

+

parent

+

text

+

上级内存上下文。

+

totalsize

+

bigint

+

共享内存总大小(单位:字节)。

+

freesize

+

bigint

+

共享内存剩余大小(单位:字节)。

+

usedsize

+

bigint

+

共享内存使用大小(单位:字节)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_SINGLE_FLUSH_DW_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_SINGLE_FLUSH_DW_STATUS.md index 1411dba54..ad171e39d 100644 --- a/content/zh/docs/Developerguide/GLOBAL_SINGLE_FLUSH_DW_STATUS.md +++ b/content/zh/docs/Developerguide/GLOBAL_SINGLE_FLUSH_DW_STATUS.md @@ -1,60 +1,60 @@ -# GLOBAL\_SINGLE\_FLUSH\_DW\_STATUS - -GLOBAL\_SINGLE\_FLUSH\_DW\_STATUS视图显示数据库所有实例单页面淘汰双写文件信息。展示内容中,/前是第一个版本双写文件刷页情况,/后是第二个版本双写文件刷页情况。 - -**表 1** GLOBAL\_SINGLE\_FLUSH\_DW\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

实例名称。

-

curr_dwn

-

text

-

当前双写文件的序列号。

-

curr_start_page

-

text

-

当前双写文件start位置。

-

total_writes

-

text

-

当前双写文件总计写数据页面个数。

-

file_trunc_num

-

text

-

当前双写文件复用的次数。

-

file_reset_num

-

text

-

当前双写文件写满后发生重置的次数。

-
- +# GLOBAL\_SINGLE\_FLUSH\_DW\_STATUS + +GLOBAL\_SINGLE\_FLUSH\_DW\_STATUS视图显示数据库所有实例单页面淘汰双写文件信息。展示内容中,/前是第一个版本双写文件刷页情况,/后是第二个版本双写文件刷页情况。 + +**表 1** GLOBAL\_SINGLE\_FLUSH\_DW\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

实例名称。

+

curr_dwn

+

text

+

当前双写文件的序列号。

+

curr_start_page

+

text

+

当前双写文件 start 位置。

+

total_writes

+

text

+

当前双写文件总计写数据页面个数。

+

file_trunc_num

+

text

+

当前双写文件复用的次数。

+

file_reset_num

+

text

+

当前双写文件写满后发生重置的次数。

+
+ diff --git "a/content/zh/docs/Developerguide/GLOBAL_SLOW_QUERY_HISTORY_\345\272\237\345\274\203.md" "b/content/zh/docs/Developerguide/GLOBAL_SLOW_QUERY_HISTORY_\345\272\237\345\274\203.md" index ae913daad..533f40f60 100644 --- "a/content/zh/docs/Developerguide/GLOBAL_SLOW_QUERY_HISTORY_\345\272\237\345\274\203.md" +++ "b/content/zh/docs/Developerguide/GLOBAL_SLOW_QUERY_HISTORY_\345\272\237\345\274\203.md" @@ -1,4 +1,4 @@ -# GLOBAL\_SLOW\_QUERY\_HISTORY(废弃) - -GS\_SLOW\_QUERY\_HISTORY显示所有节点上未转储的慢查询信息,本版本中已废弃。具体字段信息请参考GS\_SLOW\_QUERY\_INFO。 - +# GLOBAL\_SLOW\_QUERY\_HISTORY(废弃) + +GS\_SLOW\_QUERY\_HISTORY显示所有节点上未转储的慢查询信息,本版本中已废弃。具体字段信息请参考GS\_SLOW\_QUERY\_INFO。 + diff --git "a/content/zh/docs/Developerguide/GLOBAL_SLOW_QUERY_INFO_\345\272\237\345\274\203.md" "b/content/zh/docs/Developerguide/GLOBAL_SLOW_QUERY_INFO_\345\272\237\345\274\203.md" index eeb4813e1..e4487d16e 100644 --- "a/content/zh/docs/Developerguide/GLOBAL_SLOW_QUERY_INFO_\345\272\237\345\274\203.md" +++ "b/content/zh/docs/Developerguide/GLOBAL_SLOW_QUERY_INFO_\345\272\237\345\274\203.md" @@ -1,4 +1,4 @@ -# GLOBAL\_SLOW\_QUERY\_INFO(废弃) - -GS\_SLOW\_QUERY\_HISTORY显示所有节点上已经转储的慢查询信息,本版本中已废弃。具体字段信息请参考GS\_SLOW\_QUERY\_INFO。 - +# GLOBAL\_SLOW\_QUERY\_INFO(废弃) + +GS\_SLOW\_QUERY\_HISTORY显示所有节点上已经转储的慢查询信息,本版本中已废弃。具体字段信息请参考GS\_SLOW\_QUERY\_INFO。 + diff --git a/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY.md b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY.md index a6091f3de..d15b01259 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY.md @@ -1,495 +1,495 @@ -# GLOBAL\_STATEMENT\_COMPLEX\_HISTORY - -显示各个节点执行作业结束后的负载管理记录。 - -**表 1** GLOBAL\_STATEMENT\_COMPLEX\_HISTORY的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

连接后端的数据库OID。

-

dbname

-

text

-

连接后端的数据库名称。

-

schemaname

-

text

-

模式的名称。

-

nodename

-

text

-

数据库进程名称。

-

username

-

text

-

连接到后端的用户名。

-

application_name

-

text

-

连接到后端的应用名。

-

client_addr

-

inet

-

连接到后端的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

-

client_hostname

-

text

-

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

-

client_port

-

integer

-

客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。

-

query_band

-

text

-

用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。

-

block_time

-

bigint

-

语句执行前的阻塞时间,包含语句解析和优化时间,单位ms。

-

start_time

-

timestamp with time zone

-

语句执行的开始时间。

-

finish_time

-

timestamp with time zone

-

语句执行的结束时间。

-

duration

-

bigint

-

语句实际执行的时间,单位ms。

-

estimate_total_time

-

bigint

-

语句预估执行时间,单位ms。

-

status

-

text

-

语句执行结束状态:正常为finished,异常为aborted。

-

abort_info

-

text

-

语句执行结束状态为aborted时显示异常信息。

-

resource_pool

-

text

-

用户使用的资源池。

-

control_group

-

text

-

语句所使用的Cgroup。

-

estimate_memory

-

integer

-

语句预估使用内存。

-

min_peak_memory

-

integer

-

语句在数据库节点上的最小内存峰值,单位MB。

-

max_peak_memory

-

integer

-

语句在数据库节点上的最大内存峰值,单位MB。

-

average_peak_memory

-

integer

-

语句执行过程中的内存使用平均值,单位MB。

-

memory_skew_percent

-

integer

-

语句数据库节点间的内存使用倾斜率。

-

spill_info

-

text

-
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All:数据库节点均下盘。
  • [a:b]:数量为b个数据库节点中有a个数据库节点下盘。
-
-

min_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最小数据量,单位MB,默认为0。

-

max_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最大数据量,单位MB,默认为0。

-

average_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的平均数据量,单位MB,默认为0。

-

spill_skew_percent

-

integer

-

若发生下盘,数据库节点间下盘倾斜率。

-

min_dn_time

-

bigint

-

语句在数据库节点上的最小执行时间,单位ms。

-

max_dn_time

-

bigint

-

语句在数据库节点上的最大执行时间,单位ms。

-

average_dn_time

-

bigint

-

语句在数据库节点上的平均执行时间,单位ms。

-

dntime_skew_percent

-

integer

-

语句在数据库节点的执行时间倾斜率。

-

min_cpu_time

-

bigint

-

语句在数据库节点上的最小CPU时间,单位ms。

-

max_cpu_time

-

bigint

-

语句在数据库节点上的最大CPU时间,单位ms。

-

total_cpu_time

-

bigint

-

语句在数据库节点上的CPU总时间,单位ms。

-

cpu_skew_percent

-

integer

-

语句在数据库节点间的CPU时间倾斜率。

-

min_peak_iops

-

integer

-

语句在数据库节点上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

-

max_peak_iops

-

integer

-

语句在数据库节点上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

-

average_peak_iops

-

integer

-

语句在数据库节点上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

-

iops_skew_percent

-

integer

-

语句在数据库节点间的IO倾斜率。

-

warning

-

text

-
主要显示如下几类告警信息:
  • Spill file size large than 256MB。
  • Broadcast size large than 100MB。
  • Early spill。
  • Spill times is greater than 3。
  • Spill on memory adaptive。
  • Hash table conflict。
-
-

queryid

-

bigint

-

语句执行使用的内部query id。

-

query

-

text

-

执行的语句。

-

query_plan

-

text

-

语句的执行计划。

-

node_group

-

text

-

语句所属用户对应的逻辑openGauss。

-

cpu_top1_node_name

-

text

-

cpu使用率第1的节点名称。

-

cpu_top2_node_name

-

text

-

cpu使用率第2的节点名称。

-

cpu_top3_node_name

-

text

-

cpu使用率第3的节点名称。

-

cpu_top4_node_name

-

text

-

cpu使用率第4的节点名称。

-

cpu_top5_node_name

-

text

-

cpu使用率第5的节点名称。

-

mem_top1_node_name

-

text

-

内存使用量第1的节点名称。

-

mem_top2_node_name

-

text

-

内存使用量第2的节点名称。

-

mem_top3_node_name

-

text

-

内存使用量第3的节点名称。

-

mem_top4_node_name

-

text

-

内存使用量第4的节点名称。

-

mem_top5_node_name

-

text

-

内存使用量第5的节点名称。

-

cpu_top1_value

-

bigint

-

cpu使用率。

-

cpu_top2_value

-

bigint

-

cpu使用率。

-

cpu_top3_value

-

bigint

-

cpu使用率。

-

cpu_top4_value

-

bigint

-

cpu使用率。

-

cpu_top5_value

-

bigint

-

cpu使用率。

-

mem_top1_value

-

bigint

-

内存使用量。

-

mem_top2_value

-

bigint

-

内存使用量。

-

mem_top3_value

-

bigint

-

内存使用量。

-

mem_top4_value

-

bigint

-

内存使用量。

-

mem_top5_value

-

bigint

-

内存使用量。

-

top_mem_dn

-

text

-

内存使用量topN信息。

-

top_cpu_dn

-

text

-

cpu使用量topN信息。

-
+# GLOBAL\_STATEMENT\_COMPLEX\_HISTORY + +显示各个节点执行作业结束后的负载管理记录。 + +**表 1** GLOBAL\_STATEMENT\_COMPLEX\_HISTORY的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据库 OID 。

+

dbname

+

text

+

连接后端的数据库名称。

+

schemaname

+

text

+

模式的名称。

+

nodename

+

text

+

数据库进程名称。

+

username

+

text

+

连接到后端的用户名。

+

application_name

+

text

+

连接到后端的应用名。

+

client_addr

+

inet

+

连接到后端的客户端的 IP 地址。如果此字段是 null ,它表明通过服务器机器上 UNIX 套接字连接客户端或者这是内部进程,如 autovacuum 。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过 client_addr 的反向 DNS 查找得到。这个字段只有在启动 log_hostname 且使用 IP 连接时才非空。

+

client_port

+

integer

+

客户端用于与后端通讯的 TCP 端口号,如果使用 Unix 套接字,则为-1。

+

query_band

+

text

+

用于标示作业类型,可通过 GUC 参数 query_band 进行设置,默认为空字符串。

+

block_time

+

bigint

+

语句执行前的阻塞时间,包含语句解析和优化时间,单位 ms 。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

finish_time

+

timestamp with time zone

+

语句执行的结束时间。

+

duration

+

bigint

+

语句实际执行的时间,单位 ms 。

+

estimate_total_time

+

bigint

+

语句预估执行时间,单位 ms 。

+

status

+

text

+

语句执行结束状态:正常为 finished ,异常为 aborted 。

+

abort_info

+

text

+

语句执行结束状态为 aborted 时显示异常信息。

+

resource_pool

+

text

+

用户使用的资源池。

+

control_group

+

text

+

语句所使用的 Cgroup 。

+

estimate_memory

+

integer

+

语句预估使用内存。

+

min_peak_memory

+

integer

+

语句在数据库节点上的最小内存峰值,单位 MB 。

+

max_peak_memory

+

integer

+

语句在数据库节点上的最大内存峰值,单位 MB 。

+

average_peak_memory

+

integer

+

语句执行过程中的内存使用平均值,单位 MB 。

+

memory_skew_percent

+

integer

+

语句数据库节点间的内存使用倾斜率。

+

spill_info

+

text

+
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All:数据库节点均下盘。
  • [a:b]:数量为 b 个数据库节点中有 a 个数据库节点下盘。
+
+

min_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最小数据量,单位 MB ,默认为 0 。

+

max_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最大数据量,单位 MB ,默认为 0 。

+

average_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的平均数据量,单位 MB ,默认为 0 。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库节点间下盘倾斜率。

+

min_dn_time

+

bigint

+

语句在数据库节点上的最小执行时间,单位 ms 。

+

max_dn_time

+

bigint

+

语句在数据库节点上的最大执行时间,单位 ms 。

+

average_dn_time

+

bigint

+

语句在数据库节点上的平均执行时间,单位 ms 。

+

dntime_skew_percent

+

integer

+

语句在数据库节点的执行时间倾斜率。

+

min_cpu_time

+

bigint

+

语句在数据库节点上的最小 CPU 时间,单位 ms 。

+

max_cpu_time

+

bigint

+

语句在数据库节点上的最大 CPU 时间,单位 ms 。

+

total_cpu_time

+

bigint

+

语句在数据库节点上的 CPU 总时间,单位 ms 。

+

cpu_skew_percent

+

integer

+

语句在数据库节点间的 CPU 时间倾斜率。

+

min_peak_iops

+

integer

+

语句在数据库节点上的每秒最小 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

max_peak_iops

+

integer

+

语句在数据库节点上的每秒最大 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

average_peak_iops

+

integer

+

语句在数据库节点上的每秒平均 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

iops_skew_percent

+

integer

+

语句在数据库节点间的 IO 倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  • Spill file size large than 256MB。
  • Broadcast size large than 100MB。
  • Early spill。
  • Spill times is greater than 3。
  • Spill on memory adaptive。
  • Hash table conflict。
+
+

queryid

+

bigint

+

语句执行使用的内部 query id 。

+

query

+

text

+

执行的语句。

+

query_plan

+

text

+

语句的执行计划。

+

node_group

+

text

+

语句所属用户对应的逻辑 openGauss 。

+

cpu_top1_node_name

+

text

+

cpu使用率第 1 的节点名称。

+

cpu_top2_node_name

+

text

+

cpu使用率第 2 的节点名称。

+

cpu_top3_node_name

+

text

+

cpu使用率第 3 的节点名称。

+

cpu_top4_node_name

+

text

+

cpu使用率第 4 的节点名称。

+

cpu_top5_node_name

+

text

+

cpu使用率第 5 的节点名称。

+

mem_top1_node_name

+

text

+

内存使用量第 1 的节点名称。

+

mem_top2_node_name

+

text

+

内存使用量第 2 的节点名称。

+

mem_top3_node_name

+

text

+

内存使用量第 3 的节点名称。

+

mem_top4_node_name

+

text

+

内存使用量第 4 的节点名称。

+

mem_top5_node_name

+

text

+

内存使用量第 5 的节点名称。

+

cpu_top1_value

+

bigint

+

cpu使用率。

+

cpu_top2_value

+

bigint

+

cpu使用率。

+

cpu_top3_value

+

bigint

+

cpu使用率。

+

cpu_top4_value

+

bigint

+

cpu使用率。

+

cpu_top5_value

+

bigint

+

cpu使用率。

+

mem_top1_value

+

bigint

+

内存使用量。

+

mem_top2_value

+

bigint

+

内存使用量。

+

mem_top3_value

+

bigint

+

内存使用量。

+

mem_top4_value

+

bigint

+

内存使用量。

+

mem_top5_value

+

bigint

+

内存使用量。

+

top_mem_dn

+

text

+

内存使用量 topN 信息。

+

top_cpu_dn

+

text

+

cpu使用量 topN 信息。

+
diff --git a/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY_TABLE.md b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY_TABLE.md index 31d1e6828..0e7d8af12 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY_TABLE.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY_TABLE.md @@ -1,4 +1,4 @@ -# GLOBAL\_STATEMENT\_COMPLEX\_HISTORY\_TABLE - -显示各个节点执行作业结束后的负载管理记录。此数据是从内核中转储到系统表中的数据。具体的字段请参考[GLOBAL\_STATEMENT\_COMPLEX\_HISTORY](GLOBAL_STATEMENT_COMPLEX_HISTORY.md)中的字段。 - +# GLOBAL\_STATEMENT\_COMPLEX\_HISTORY\_TABLE + +显示各个节点执行作业结束后的负载管理记录。此数据是从内核中转储到系统表中的数据。具体的字段请参考[GLOBAL\_STATEMENT\_COMPLEX\_HISTORY](GLOBAL_STATEMENT_COMPLEX_HISTORY.md)中的字段。 + diff --git a/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_RUNTIME.md b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_RUNTIME.md index 942ce14c8..9cadef69a 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_RUNTIME.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_RUNTIME.md @@ -1,355 +1,355 @@ -# GLOBAL\_STATEMENT\_COMPLEX\_RUNTIME - -显示当前用户在各个节点上正在执行的作业的负载管理记录。 - -**表 1** GLOBAL\_STATEMENT\_COMPLEX\_RUNTIME的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

连接后端的数据OID。

-

dbname

-

name

-

连接后端的数据库名称。

-

schemaname

-

text

-

模式的名称。

-

nodename

-

text

-

数据库进程名称

-

username

-

name

-

连接到后端的用户名。

-

application_name

-

text

-

连接到后端的应用名。

-

client_addr

-

inet

-

连接到后端的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

-

client_hostname

-

text

-

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

-

client_port

-

integer

-

客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。

-

query_band

-

text

-

用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。

-

pid

-

bigint

-

后端线程ID。

-

block_time

-

bigint

-

语句执行前的阻塞时间,单位ms。

-

start_time

-

timestamp with time zone

-

语句执行的开始时间。

-

duration

-

bigint

-

语句已经执行的时间,单位ms。

-

estimate_total_time

-

bigint

-

语句执行预估总时间,单位ms。

-

estimate_left_time

-

bigint

-

语句执行预估剩余时间,单位ms。

-

enqueue

-

text

-

工作负载管理资源状态。

-

resource_pool

-

name

-

用户使用的资源池。

-

control_group

-

text

-

语句所使用的Cgroup。

-

estimate_memory

-

integer

-

语句预估使用内存,单位MB。

-

min_peak_memory

-

integer

-

语句在数据库节点上的最小内存峰值,单位MB。

-

max_peak_memory

-

integer

-

语句在数据库节点上的最大内存峰值,单位MB。

-

average_peak_memory

-

integer

-

语句执行过程中的内存使用平均值,单位MB。

-

memory_skew_percent

-

integer

-

语句在数据库节点间的内存使用倾斜率。

-

spill_info

-

text

-
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All:数据库节点均下盘。
  • [a:b]:数量为b个数据库节点中有a个数据库节点下盘。
-
-

min_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最小数据量,单位MB,默认为0。

-

max_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最大数据量,单位MB,默认为0。

-

average_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的平均数据量,单位MB,默认为0。

-

spill_skew_percent

-

integer

-

若发生下盘,数据库节点间下盘倾斜率。

-

min_dn_time

-

bigint

-

语句在数据库节点上的最小执行时间,单位ms。

-

max_dn_time

-

bigint

-

语句在数据库节点上的最大执行时间,单位ms。

-

average_dn_time

-

bigint

-

语句在数据库节点上的平均执行时间,单位ms。

-

dntime_skew_percent

-

integer

-

语句在数据库节点的执行时间倾斜率。

-

min_cpu_time

-

bigint

-

语句在数据库节点上的最小CPU时间,单位ms。

-

max_cpu_time

-

bigint

-

语句在数据库节点上的最大CPU时间,单位ms。

-

total_cpu_time

-

bigint

-

语句在数据库节点上的CPU总时间,单位ms。

-

cpu_skew_percent

-

integer

-

语句在数据库节点间的CPU时间倾斜率。

-

min_peak_iops

-

integer

-

语句在数据库节点上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

-

max_peak_iops

-

integer

-

语句在数据库节点上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

-

average_peak_iops

-

integer

-

语句在数据库节点上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

-

iops_skew_percent

-

integer

-

语句在数据库节点间的IO倾斜率。

-

warning

-

text

-
主要显示如下几类告警信息:
  • Spill file size large than 256MB。
  • Broadcast size large than 100MB。
  • Early spill。
  • Spill times is greater than 3。
  • Spill on memory adaptive。
  • Hash table conflict。
-
-

queryid

-

bigint

-

语句执行使用的内部query id。

-

query

-

text

-

正在执行的语句。

-

query_plan

-

text

-

语句的执行计划。

-

node_group

-

text

-

语句所属用户对应的逻辑openGauss。

-

top_cpu_dn

-

text

-

cpu使用量topN信息。

-

top_mem_dn

-

text

-

内存使用量topN信息。

-
+# GLOBAL\_STATEMENT\_COMPLEX\_RUNTIME + +显示当前用户在各个节点上正在执行的作业的负载管理记录。 + +**表 1** GLOBAL\_STATEMENT\_COMPLEX\_RUNTIME的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据 OID 。

+

dbname

+

name

+

连接后端的数据库名称。

+

schemaname

+

text

+

模式的名称。

+

nodename

+

text

+

数据库进程名称

+

username

+

name

+

连接到后端的用户名。

+

application_name

+

text

+

连接到后端的应用名。

+

client_addr

+

inet

+

连接到后端的客户端的 IP 地址。如果此字段是 null ,它表明通过服务器机器上 UNIX 套接字连接客户端或者这是内部进程,如 autovacuum 。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过 client_addr 的反向 DNS 查找得到。这个字段只有在启动 log_hostname 且使用 IP 连接时才非空。

+

client_port

+

integer

+

客户端用于与后端通讯的 TCP 端口号,如果使用 Unix 套接字,则为-1。

+

query_band

+

text

+

用于标示作业类型,可通过 GUC 参数 query_band 进行设置,默认为空字符串。

+

pid

+

bigint

+

后端线程 ID 。

+

block_time

+

bigint

+

语句执行前的阻塞时间,单位 ms 。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

duration

+

bigint

+

语句已经执行的时间,单位 ms 。

+

estimate_total_time

+

bigint

+

语句执行预估总时间,单位 ms 。

+

estimate_left_time

+

bigint

+

语句执行预估剩余时间,单位 ms 。

+

enqueue

+

text

+

工作负载管理资源状态。

+

resource_pool

+

name

+

用户使用的资源池。

+

control_group

+

text

+

语句所使用的 Cgroup 。

+

estimate_memory

+

integer

+

语句预估使用内存,单位 MB 。

+

min_peak_memory

+

integer

+

语句在数据库节点上的最小内存峰值,单位 MB 。

+

max_peak_memory

+

integer

+

语句在数据库节点上的最大内存峰值,单位 MB 。

+

average_peak_memory

+

integer

+

语句执行过程中的内存使用平均值,单位 MB 。

+

memory_skew_percent

+

integer

+

语句在数据库节点间的内存使用倾斜率。

+

spill_info

+

text

+
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All:数据库节点均下盘。
  • [a:b]:数量为 b 个数据库节点中有 a 个数据库节点下盘。
+
+

min_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最小数据量,单位 MB ,默认为 0 。

+

max_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最大数据量,单位 MB ,默认为 0 。

+

average_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的平均数据量,单位 MB ,默认为 0 。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库节点间下盘倾斜率。

+

min_dn_time

+

bigint

+

语句在数据库节点上的最小执行时间,单位 ms 。

+

max_dn_time

+

bigint

+

语句在数据库节点上的最大执行时间,单位 ms 。

+

average_dn_time

+

bigint

+

语句在数据库节点上的平均执行时间,单位 ms 。

+

dntime_skew_percent

+

integer

+

语句在数据库节点的执行时间倾斜率。

+

min_cpu_time

+

bigint

+

语句在数据库节点上的最小 CPU 时间,单位 ms 。

+

max_cpu_time

+

bigint

+

语句在数据库节点上的最大 CPU 时间,单位 ms 。

+

total_cpu_time

+

bigint

+

语句在数据库节点上的 CPU 总时间,单位 ms 。

+

cpu_skew_percent

+

integer

+

语句在数据库节点间的 CPU 时间倾斜率。

+

min_peak_iops

+

integer

+

语句在数据库节点上的每秒最小 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

max_peak_iops

+

integer

+

语句在数据库节点上的每秒最大 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

average_peak_iops

+

integer

+

语句在数据库节点上的每秒平均 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

iops_skew_percent

+

integer

+

语句在数据库节点间的 IO 倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  • Spill file size large than 256MB。
  • Broadcast size large than 100MB。
  • Early spill。
  • Spill times is greater than 3。
  • Spill on memory adaptive。
  • Hash table conflict。
+
+

queryid

+

bigint

+

语句执行使用的内部 query id 。

+

query

+

text

+

正在执行的语句。

+

query_plan

+

text

+

语句的执行计划。

+

node_group

+

text

+

语句所属用户对应的逻辑 openGauss 。

+

top_cpu_dn

+

text

+

cpu使用量 topN 信息。

+

top_mem_dn

+

text

+

内存使用量 topN 信息。

+
diff --git a/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COUNT.md b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COUNT.md index 866543eb5..32ada58b7 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COUNT.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COUNT.md @@ -1,199 +1,199 @@ -# GLOBAL\_STATEMENT\_COUNT - -显示数据库各节点当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)和(DDL、DML、DCL)统计信息。 - -**表 1** GLOBAL\_STATEMENT\_COUNT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

数据库进程名称。

-

user_name

-

text

-

用户名。

-

select_count

-

bigint

-

select语句统计结果。

-

update_count

-

bigint

-

update语句统计结果。

-

insert_count

-

bigint

-

insert语句统计结果。

-

delete_count

-

bigint

-

delete语句统计结果。

-

mergeinto_count

-

bigint

-

merge into语句统计结果。

-

ddl_count

-

bigint

-

DDL语句的数量。

-

dml_count

-

bigint

-

DML语句的数量。

-

dcl_count

-

bigint

-

DCL语句的数量。

-

total_select_elapse

-

bigint

-

总select的时间花费(单位:微秒)。

-

avg_select_elapse

-

bigint

-

平均select的时间花费(单位:微秒)。

-

max_select_elapse

-

bigint

-

最大select的时间花费(单位:微秒)。

-

min_select_elapse

-

bigint

-

最小select的时间花费(单位:微秒)。

-

total_update_elapse

-

bigint

-

总update的时间花费(单位:微秒)。

-

avg_update_elapse

-

bigint

-

平均update的时间花费(单位:微秒)。

-

max_update_elapse

-

bigint

-

最大update的时间花费(单位:微秒)。

-

min_update_elapse

-

bigint

-

最小update的时间花费(单位:微秒)。

-

total_insert_elapse

-

bigint

-

总insert的时间花费(单位:微秒)。

-

avg_insert_elapse

-

bigint

-

平均insert的时间花费(单位:微秒)。

-

max_insert_elapse

-

bigint

-

最大insert的时间花费(单位:微秒)。

-

min_insert_elapse

-

bigint

-

最小insert的时间花费(单位:微秒)。

-

total_delete_elapse

-

bigint

-

总delete的时间花费(单位:微秒)。

-

avg_delete_elapse

-

bigint

-

平均delete的时间花费(单位:微秒)。

-

max_delete_elapse

-

bigint

-

最大delete的时间花费(单位:微秒)。

-

min_delete_elapse

-

bigint

-

最小delete的时间花费(单位:微秒)。

-
+# GLOBAL\_STATEMENT\_COUNT + +显示数据库各节点当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)和(DDL、DML、DCL)统计信息。 + +**表 1** GLOBAL\_STATEMENT\_COUNT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

user_name

+

text

+

用户名。

+

select_count

+

bigint

+

select语句统计结果。

+

update_count

+

bigint

+

update语句统计结果。

+

insert_count

+

bigint

+

insert语句统计结果。

+

delete_count

+

bigint

+

delete语句统计结果。

+

mergeinto_count

+

bigint

+

merge into语句统计结果。

+

ddl_count

+

bigint

+

DDL语句的数量。

+

dml_count

+

bigint

+

DML语句的数量。

+

dcl_count

+

bigint

+

DCL语句的数量。

+

total_select_elapse

+

bigint

+

总 select 的时间花费(单位:微秒)。

+

avg_select_elapse

+

bigint

+

平均 select 的时间花费(单位:微秒)。

+

max_select_elapse

+

bigint

+

最大 select 的时间花费(单位:微秒)。

+

min_select_elapse

+

bigint

+

最小 select 的时间花费(单位:微秒)。

+

total_update_elapse

+

bigint

+

总 update 的时间花费(单位:微秒)。

+

avg_update_elapse

+

bigint

+

平均 update 的时间花费(单位:微秒)。

+

max_update_elapse

+

bigint

+

最大 update 的时间花费(单位:微秒)。

+

min_update_elapse

+

bigint

+

最小 update 的时间花费(单位:微秒)。

+

total_insert_elapse

+

bigint

+

总 insert 的时间花费(单位:微秒)。

+

avg_insert_elapse

+

bigint

+

平均 insert 的时间花费(单位:微秒)。

+

max_insert_elapse

+

bigint

+

最大 insert 的时间花费(单位:微秒)。

+

min_insert_elapse

+

bigint

+

最小 insert 的时间花费(单位:微秒)。

+

total_delete_elapse

+

bigint

+

总 delete 的时间花费(单位:微秒)。

+

avg_delete_elapse

+

bigint

+

平均 delete 的时间花费(单位:微秒)。

+

max_delete_elapse

+

bigint

+

最大 delete 的时间花费(单位:微秒)。

+

min_delete_elapse

+

bigint

+

最小 delete 的时间花费(单位:微秒)。

+
diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_INDEXES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_INDEXES.md index 21f780d37..798697cc3 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_INDEXES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_INDEXES.md @@ -1,74 +1,74 @@ -# GLOBAL\_STATIO\_ALL\_INDEXES - -GLOBAL\_STATIO\_ALL\_INDEXES视图包含各节点的数据库中的每个索引行,显示特定索引的I/O的统计。 - -**表 1** GLOBAL\_STATIO\_ALL\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

索引的表的OID。

-

indexrelid

-

oid

-

该索引的OID。

-

schemaname

-

name

-

该索引的模式名。

-

relname

-

name

-

该索引的表名。

-

indexrelname

-

name

-

索引名称。

-

idx_blks_read

-

numeric

-

从索引中读取的磁盘块数。

-

idx_blks_hit

-

numeric

-

索引命中缓存数。

-
- +# GLOBAL\_STATIO\_ALL\_INDEXES + +GLOBAL\_STATIO\_ALL\_INDEXES视图包含各节点的数据库中的每个索引行,显示特定索引的I/O的统计。 + +**表 1** GLOBAL\_STATIO\_ALL\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

索引的表的 OID 。

+

indexrelid

+

oid

+

该索引的 OID 。

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

numeric

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

numeric

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_SEQUENCES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_SEQUENCES.md index 363065d6c..bfcd82d90 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_SEQUENCES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_SEQUENCES.md @@ -1,60 +1,60 @@ -# GLOBAL\_STATIO\_ALL\_SEQUENCES - -GLOBAL\_STATIO\_ALL\_SEQUENCES包含各节点的数据库中每个序列的每一行,显示特定序列关于I/O的统计。 - -**表 1** GLOBAL\_STATIO\_ALL\_SEQUENCES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

序列OID。

-

schemaname

-

name

-

序列中模式名。

-

relname

-

name

-

序列名。

-

blks_read

-

bigint

-

从序列中读取的磁盘块数。

-

blks_hit

-

bigint

-

序列中缓存命中数。

-
- +# GLOBAL\_STATIO\_ALL\_SEQUENCES + +GLOBAL\_STATIO\_ALL\_SEQUENCES包含各节点的数据库中每个序列的每一行,显示特定序列关于I/O的统计。 + +**表 1** GLOBAL\_STATIO\_ALL\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

序列 OID 。

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

bigint

+

从序列中读取的磁盘块数。

+

blks_hit

+

bigint

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_TABLES.md index b665f3e20..876e530d7 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_TABLES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_TABLES.md @@ -1,102 +1,102 @@ -# GLOBAL\_STATIO\_ALL\_TABLES - -GLOBAL\_STATIO\_ALL\_TABLES视图将包含各节点的数据库中每个表(包括TOAST表)的I/O的统计。 - -**表 1** GLOBAL\_STATIO\_ALL\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

表OID。

-

schemaname

-

name

-

该表模式名。

-

relname

-

name

-

表名。

-

heap_blks_read

-

bigint

-

从该表中读取的磁盘块数。

-

heap_blks_hit

-

bigint

-

此表缓存命中数。

-

idx_blks_read

-

bigint

-

从表中所有索引读取的磁盘块数。

-

idx_blks_hit

-

bigint

-

表中所有索引命中缓存数。

-

toast_blks_read

-

bigint

-

此表的TOAST表读取的磁盘块数(如果存在)。

-

toast_blks_hit

-

bigint

-

此表的TOAST表命中缓冲区数(如果存在)。

-

tidx_blks_read

-

bigint

-

此表的TOAST表索引读取的磁盘块数(如果存在)。

-

tidx_blks_hit

-

bigint

-

此表的TOAST表索引命中缓冲区数(如果存在)。

-
- +# GLOBAL\_STATIO\_ALL\_TABLES + +GLOBAL\_STATIO\_ALL\_TABLES视图将包含各节点的数据库中每个表(包括 TOAST 表)的I/O的统计。 + +**表 1** GLOBAL\_STATIO\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

表 OID 。

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

bigint

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

bigint

+

此表缓存命中数。

+

idx_blks_read

+

bigint

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

表中所有索引命中缓存数。

+

toast_blks_read

+

bigint

+

此表的 TOAST 表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

bigint

+

此表的 TOAST 表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

bigint

+

此表的 TOAST 表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

bigint

+

此表的 TOAST 表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_INDEXES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_INDEXES.md index 163d3dc1f..e14669aaf 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_INDEXES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_INDEXES.md @@ -1,74 +1,74 @@ -# GLOBAL\_STATIO\_SYS\_INDEXES - -GLOBAL\_STATIO\_SYS\_INDEXES视图显示各节点的命名空间中所有系统表索引的IO状态信息。 - -**表 1** GLOBAL\_STATIO\_SYS\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

索引的表的OID。

-

indexrelid

-

oid

-

该索引的OID。

-

schemaname

-

name

-

该索引的模式名。

-

relname

-

name

-

该索引的表名。

-

indexrelname

-

name

-

索引名称。

-

idx_blks_read

-

numeric

-

从索引中读取的磁盘块数。

-

idx_blks_hit

-

numeric

-

索引命中缓存数。

-
- +# GLOBAL\_STATIO\_SYS\_INDEXES + +GLOBAL\_STATIO\_SYS\_INDEXES视图显示各节点的命名空间中所有系统表索引的 IO 状态信息。 + +**表 1** GLOBAL\_STATIO\_SYS\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

索引的表的 OID 。

+

indexrelid

+

oid

+

该索引的 OID 。

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

numeric

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

numeric

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_SEQUENCES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_SEQUENCES.md index 2ffc2c6ff..5759d9287 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_SEQUENCES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_SEQUENCES.md @@ -1,60 +1,60 @@ -# GLOBAL\_STATIO\_SYS\_SEQUENCES - -GLOBAL\_STATIO\_SYS\_SEQUENCES视图显示各节点的命名空间中所有系统表为序列的IO状态信息。 - -**表 1** GLOBAL\_STATIO\_SYS\_SEQUENCES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

序列OID。

-

schemaname

-

name

-

序列中模式名。

-

relname

-

name

-

序列名。

-

blks_read

-

bigint

-

从序列中读取的磁盘块数。

-

blks_hit

-

bigint

-

序列中缓存命中数。

-
- +# GLOBAL\_STATIO\_SYS\_SEQUENCES + +GLOBAL\_STATIO\_SYS\_SEQUENCES视图显示各节点的命名空间中所有系统表为序列的 IO 状态信息。 + +**表 1** GLOBAL\_STATIO\_SYS\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

序列 OID 。

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

bigint

+

从序列中读取的磁盘块数。

+

blks_hit

+

bigint

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_TABLES.md index 82c5568cc..32310ad99 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_TABLES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_TABLES.md @@ -1,102 +1,102 @@ -# GLOBAL\_STATIO\_SYS\_TABLES - -GLOBAL\_STATIO\_SYS\_TABLES视图显示各节点的命名空间中所有系统表的IO状态信息。 - -**表 1** GLOBAL\_STATIO\_SYS\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

表OID。

-

schemaname

-

name

-

该表模式名。

-

relname

-

name

-

表名。

-

heap_blks_read

-

bigint

-

从该表中读取的磁盘块数。

-

heap_blks_hit

-

bigint

-

此表缓存命中数。

-

idx_blks_read

-

bigint

-

从表中所有索引读取的磁盘块数。

-

idx_blks_hit

-

bigint

-

表中所有索引命中缓存数。

-

toast_blks_read

-

bigint

-

此表的TOAST表读取的磁盘块数(如果存在)。

-

toast_blks_hit

-

bigint

-

此表的TOAST表命中缓冲区数(如果存在)。

-

tidx_blks_read

-

bigint

-

此表的TOAST表索引读取的磁盘块数(如果存在)。

-

tidx_blks_hit

-

bigint

-

此表的TOAST表索引命中缓冲区数(如果存在)。

-
- +# GLOBAL\_STATIO\_SYS\_TABLES + +GLOBAL\_STATIO\_SYS\_TABLES视图显示各节点的命名空间中所有系统表的 IO 状态信息。 + +**表 1** GLOBAL\_STATIO\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

表 OID 。

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

bigint

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

bigint

+

此表缓存命中数。

+

idx_blks_read

+

bigint

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

表中所有索引命中缓存数。

+

toast_blks_read

+

bigint

+

此表的 TOAST 表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

bigint

+

此表的 TOAST 表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

bigint

+

此表的 TOAST 表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

bigint

+

此表的 TOAST 表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_INDEXES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_INDEXES.md index 194769019..eee33488d 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_INDEXES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_INDEXES.md @@ -1,74 +1,74 @@ -# GLOBAL\_STATIO\_USER\_INDEXES - -GLOBAL\_STATIO\_USER\_INDEXES视图显示各节点的命名空间中所有用户关系表索引的IO状态信息。 - -**表 1** GLOBAL\_STATIO\_USER\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

索引的表的OID。

-

indexrelid

-

oid

-

该索引的OID。

-

schemaname

-

name

-

该索引的模式名。

-

relname

-

name

-

该索引的表名。

-

indexrelname

-

name

-

索引名称。

-

idx_blks_read

-

numeric

-

从索引中读取的磁盘块数。

-

idx_blks_hit

-

numeric

-

索引命中缓存数。

-
- +# GLOBAL\_STATIO\_USER\_INDEXES + +GLOBAL\_STATIO\_USER\_INDEXES视图显示各节点的命名空间中所有用户关系表索引的 IO 状态信息。 + +**表 1** GLOBAL\_STATIO\_USER\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

索引的表的 OID 。

+

indexrelid

+

oid

+

该索引的 OID 。

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

numeric

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

numeric

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_SEQUENCES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_SEQUENCES.md index e0a767062..0b8addaf1 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_SEQUENCES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_SEQUENCES.md @@ -1,60 +1,60 @@ -# GLOBAL\_STATIO\_USER\_SEQUENCES - -GLOBAL\_STATIO\_USER\_SEQUENCES视图显示各节点的命名空间中所有用户关系表类型为序列的IO状态信息。 - -**表 1** GLOBAL\_STATIO\_USER\_SEQUENCES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

序列OID。

-

schemaname

-

name

-

序列中模式名。

-

relname

-

name

-

序列名。

-

blks_read

-

bigint

-

从序列中读取的磁盘块数。

-

blks_hit

-

bigint

-

序列中缓存命中数。

-
- +# GLOBAL\_STATIO\_USER\_SEQUENCES + +GLOBAL\_STATIO\_USER\_SEQUENCES视图显示各节点的命名空间中所有用户关系表类型为序列的 IO 状态信息。 + +**表 1** GLOBAL\_STATIO\_USER\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

序列 OID 。

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

bigint

+

从序列中读取的磁盘块数。

+

blks_hit

+

bigint

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_TABLES.md index 277fe9043..7905bb3e3 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_TABLES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_TABLES.md @@ -1,102 +1,102 @@ -# GLOBAL\_STATIO\_USER\_TABLES - -GLOBAL\_STATIO\_USER\_TABLES视图显示各节点的命名空间中所有用户关系表的IO状态信息。 - -**表 1** GLOBAL\_STATIO\_USER\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

节点名称。

-

relid

-

oid

-

表OID。

-

schemaname

-

name

-

该表模式名。

-

relname

-

name

-

表名。

-

heap_blks_read

-

bigint

-

从该表中读取的磁盘块数。

-

heap_blks_hit

-

bigint

-

此表缓存命中数。

-

idx_blks_read

-

bigint

-

从表中所有索引读取的磁盘块数。

-

idx_blks_hit

-

bigint

-

表中所有索引命中缓存数。

-

toast_blks_read

-

bigint

-

此表的TOAST表读取的磁盘块数(如果存在)。

-

toast_blks_hit

-

bigint

-

此表的TOAST表命中缓冲区数(如果存在)。

-

tidx_blks_read

-

bigint

-

此表的TOAST表索引读取的磁盘块数(如果存在)。

-

tidx_blks_hit

-

bigint

-

此表的TOAST表索引命中缓冲区数(如果存在)。

-
- +# GLOBAL\_STATIO\_USER\_TABLES + +GLOBAL\_STATIO\_USER\_TABLES视图显示各节点的命名空间中所有用户关系表的 IO 状态信息。 + +**表 1** GLOBAL\_STATIO\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

节点名称。

+

relid

+

oid

+

表 OID 。

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

bigint

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

bigint

+

此表缓存命中数。

+

idx_blks_read

+

bigint

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

表中所有索引命中缓存数。

+

toast_blks_read

+

bigint

+

此表的 TOAST 表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

bigint

+

此表的 TOAST 表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

bigint

+

此表的 TOAST 表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

bigint

+

此表的 TOAST 表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_INDEXES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_INDEXES.md index 4ebb17f10..c40af616f 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_INDEXES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_INDEXES.md @@ -1,81 +1,81 @@ -# GLOBAL\_STAT\_ALL\_INDEXES - -将包含各节点数据库中的每个索引行,显示访问特定索引的统计。 - -**表 1** GLOBAL\_STAT\_ALL\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

这个索引的表的OID。

-

indexrelid

-

oid

-

索引的OID。

-

schemaname

-

name

-

索引中模式名。

-

relname

-

name

-

索引的表名。

-

indexrelname

-

name

-

索引名。

-

idx_scan

-

bigint

-

索引上开始的索引扫描数。

-

idx_tup_read

-

bigint

-

通过索引上扫描返回的索引项数。

-

idx_tup_fetch

-

bigint

-

通过使用索引的简单索引扫描抓取的活表行数。

-
- +# GLOBAL\_STAT\_ALL\_INDEXES + +将包含各节点数据库中的每个索引行,显示访问特定索引的统计。 + +**表 1** GLOBAL\_STAT\_ALL\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

这个索引的表的 OID 。

+

indexrelid

+

oid

+

索引的 OID 。

+

schemaname

+

name

+

索引中模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

bigint

+

索引上开始的索引扫描数。

+

idx_tup_read

+

bigint

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

bigint

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_TABLES.md index 7995ce742..c32a6add3 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_TABLES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_TABLES.md @@ -1,172 +1,172 @@ -# GLOBAL\_STAT\_ALL\_TABLES - -得到各节点数据中每个表的一行(包括TOAST表)的统计信息。 - -**表 1** GLOBAL\_STAT\_ALL\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

表的OID。

-

schemaname

-

name

-

此表的模式名。

-

relname

-

name

-

表名。

-

seq_scan

-

bigint

-

此表发起的顺序扫描数。

-

seq_tup_read

-

bigint

-

顺序扫描抓取的活跃行数。

-

idx_scan

-

bigint

-

此表发起的索引扫描数。

-

idx_tup_fetch

-

bigint

-

索引扫描抓取的活跃行数。

-

n_tup_ins

-

bigint

-

插入行数。

-

n_tup_upd

-

bigint

-

更新行数。

-

n_tup_del

-

bigint

-

删除行数。

-

n_tup_hot_upd

-

bigint

-

HOT更新行数(比如没有更新所需的单独索引)。

-

n_live_tup

-

bigint

-

估计活跃行数。

-

n_dead_tup

-

bigint

-

估计死行数。

-

last_vacuum

-

timestamp with time zone

-

最后一次此表是手动清理的(不计算VACUUM FULL)的时间。

-

last_autovacuum

-

timestamp with time zone

-

上次被autovacuum守护进程清理的时间。

-

last_analyze

-

timestamp with time zone

-

上次手动分析这个表的时间。

-

last_autoanalyze

-

timestamp with time zone

-

上次被autovacuum守护进程分析时间。

-

vacuum_count

-

bigint

-

这个表被手动清理的次数(不计算VACUUM FULL)。

-

autovacuum_count

-

bigint

-

这个表被autovacuum清理的次数。

-

analyze_count

-

bigint

-

这个表被手动分析的次数。

-

autoanalyze_count

-

bigint

-

这个表被autovacuum守护进程分析的次数。

-
- +# GLOBAL\_STAT\_ALL\_TABLES + +得到各节点数据中每个表的一行(包括 TOAST 表)的统计信息。 + +**表 1** GLOBAL\_STAT\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

表的 OID 。

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

此表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+

n_live_tup

+

bigint

+

估计活跃行数。

+

n_dead_tup

+

bigint

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次此表是手动清理的(不计算VACUUM FULL)的时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被 autovacuum 守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析这个表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被 autovacuum 守护进程分析时间。

+

vacuum_count

+

bigint

+

这个表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

bigint

+

这个表被 autovacuum 清理的次数。

+

analyze_count

+

bigint

+

这个表被手动分析的次数。

+

autoanalyze_count

+

bigint

+

这个表被 autovacuum 守护进程分析的次数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_BAD_BLOCK.md b/content/zh/docs/Developerguide/GLOBAL_STAT_BAD_BLOCK.md index 44e29f6fa..093a7c979 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_BAD_BLOCK.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_BAD_BLOCK.md @@ -1,74 +1,74 @@ -# GLOBAL\_STAT\_BAD\_BLOCK - -获得各节点的表、索引等文件的读取失败信息。 - -**表 1** GLOBAL\_STAT\_BAD\_BLOCK字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

数据库进程名称。

-

databaseid

-

integer

-

database的oid。

-

tablespaceid

-

integer

-

tablespace的oid。

-

relfilenode

-

integer

-

relation的file node。

-

forknum

-

integer

-

fork编号。

-

error_count

-

integer

-

error的数量。

-

first_time

-

timestamp with time zone

-

坏块第一次出现的时间。

-

last_time

-

timestamp with time zone

-

坏块最后出现的时间。

-
- +# GLOBAL\_STAT\_BAD\_BLOCK + +获得各节点的表、索引等文件的读取失败信息。 + +**表 1** GLOBAL\_STAT\_BAD\_BLOCK字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

databaseid

+

integer

+

database的 oid 。

+

tablespaceid

+

integer

+

tablespace的 oid 。

+

relfilenode

+

integer

+

relation的 file node 。

+

forknum

+

integer

+

fork编号。

+

error_count

+

integer

+

error的数量。

+

first_time

+

timestamp with time zone

+

坏块第一次出现的时间。

+

last_time

+

timestamp with time zone

+

坏块最后出现的时间。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE.md b/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE.md index dc718dc1d..b8cc3f2a6 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE.md @@ -1,158 +1,158 @@ -# GLOBAL\_STAT\_DATABASE - -视图将包含openGauss中各节点的每个数据库的每一行,显示数据库统计。 - -**表 1** GLOBAL\_STAT\_DATABASE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

datid

-

oid

-

数据库的OID。

-

datname

-

name

-

这个数据库的名称。

-

numbackends

-

integer

-

当前连接到该数据库的后端数。这是在返回一个反映目前状态值的视图中唯一的列;自上次重置所有其他列返回累积值。

-

xact_commit

-

bigint

-

此数据库中已经提交的事务数。

-

xact_rollback

-

bigint

-

此数据库中已经回滚的事务数。

-

blks_read

-

bigint

-

在这个数据库中读取的磁盘块的数量。

-

blks_hit

-

bigint

-

高速缓存中已经发现的磁盘块的次数,这样读取是不必要的(这只包括数据库内核缓冲区高速缓存,没有操作系统的文件系统缓存)。

-

tup_returned

-

bigint

-

通过数据库查询返回的行数。

-

tup_fetched

-

bigint

-

通过数据库查询抓取的行数。

-

tup_inserted

-

bigint

-

通过数据库查询插入的行数。

-

tup_updated

-

bigint

-

通过数据库查询更新的行数。

-

tup_deleted

-

bigint

-

通过数据库查询删除的行数。

-

conflicts

-

bigint

-

由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见STAT_DATABASE_CONFLICTS获取更多信息。

-

temp_files

-

bigint

-

通过数据库查询创建的临时文件数量。计算所有临时文件,不论为什么创建临时文件(比如排序或者哈希),而且不管log_temp_files设置。

-

temp_bytes

-

bigint

-

通过数据库查询写入临时文件的数据总量。计算所有临时文件,不论为什么创建临时文件,而且不管log_temp_files设置。

-

deadlocks

-

bigint

-

在该数据库中检索的死锁数。

-

blk_read_time

-

double precision

-

通过数据库后端读取数据文件块花费的时间,以毫秒计算。

-

blk_write_time

-

double precision

-

通过数据库后端写入数据文件块花费的时间,以毫秒计算。

-

stats_reset

-

timestamp with time zone

-

重置当前状态统计的时间。

-
- +# GLOBAL\_STAT\_DATABASE + +视图将包含 openGauss 中各节点的每个数据库的每一行,显示数据库统计。 + +**表 1** GLOBAL\_STAT\_DATABASE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

datid

+

oid

+

数据库的 OID 。

+

datname

+

name

+

这个数据库的名称。

+

numbackends

+

integer

+

当前连接到该数据库的后端数。这是在返回一个反映目前状态值的视图中唯一的列;自上次重置所有其他列返回累积值。

+

xact_commit

+

bigint

+

此数据库中已经提交的事务数。

+

xact_rollback

+

bigint

+

此数据库中已经回滚的事务数。

+

blks_read

+

bigint

+

在这个数据库中读取的磁盘块的数量。

+

blks_hit

+

bigint

+

高速缓存中已经发现的磁盘块的次数,这样读取是不必要的(这只包括数据库内核缓冲区高速缓存,没有操作系统的文件系统缓存)。

+

tup_returned

+

bigint

+

通过数据库查询返回的行数。

+

tup_fetched

+

bigint

+

通过数据库查询抓取的行数。

+

tup_inserted

+

bigint

+

通过数据库查询插入的行数。

+

tup_updated

+

bigint

+

通过数据库查询更新的行数。

+

tup_deleted

+

bigint

+

通过数据库查询删除的行数。

+

conflicts

+

bigint

+

由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见STAT_DATABASE_CONFLICTS获取更多信息。

+

temp_files

+

bigint

+

通过数据库查询创建的临时文件数量。计算所有临时文件,不论为什么创建临时文件(比如排序或者哈希),而且不管 log_temp_files 设置。

+

temp_bytes

+

bigint

+

通过数据库查询写入临时文件的数据总量。计算所有临时文件,不论为什么创建临时文件,而且不管 log_temp_files 设置。

+

deadlocks

+

bigint

+

在该数据库中检索的死锁数。

+

blk_read_time

+

double precision

+

通过数据库后端读取数据文件块花费的时间,以毫秒计算。

+

blk_write_time

+

double precision

+

通过数据库后端写入数据文件块花费的时间,以毫秒计算。

+

stats_reset

+

timestamp with time zone

+

重置当前状态统计的时间。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE_CONFLICTS.md b/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE_CONFLICTS.md index f379195e3..72206c51e 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE_CONFLICTS.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE_CONFLICTS.md @@ -1,74 +1,74 @@ -# GLOBAL\_STAT\_DATABASE\_CONFLICTS - -显示每个节点的数据库冲突状态的统计信息。 - -**表 1** GLOBAL\_STAT\_DATABASE\_CONFLICTS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

datid

-

oid

-

数据库标识。

-

datname

-

name

-

数据库名称。

-

confl_tablespace

-

bigint

-

冲突的表空间的数目。

-

confl_lock

-

bigint

-

冲突的锁数目。

-

confl_snapshot

-

bigint

-

冲突的快照数目。

-

confl_bufferpin

-

bigint

-

冲突的缓冲区数目。

-

confl_deadlock

-

bigint

-

冲突的死锁数目。

-
- +# GLOBAL\_STAT\_DATABASE\_CONFLICTS + +显示每个节点的数据库冲突状态的统计信息。 + +**表 1** GLOBAL\_STAT\_DATABASE\_CONFLICTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

datid

+

oid

+

数据库标识。

+

datname

+

name

+

数据库名称。

+

confl_tablespace

+

bigint

+

冲突的表空间的数目。

+

confl_lock

+

bigint

+

冲突的锁数目。

+

confl_snapshot

+

bigint

+

冲突的快照数目。

+

confl_bufferpin

+

bigint

+

冲突的缓冲区数目。

+

confl_deadlock

+

bigint

+

冲突的死锁数目。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_DB_CU.md b/content/zh/docs/Developerguide/GLOBAL_STAT_DB_CU.md index 61bda34f4..2e8d69bca 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_DB_CU.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_DB_CU.md @@ -1,53 +1,53 @@ -# GLOBAL\_STAT\_DB\_CU - -GLOBAL\_STAT\_DB\_CU视图用于查询openGauss,每个数据库的CU命中情况。可以通过pg\_stat\_reset\(\)进行清零。 - -**表 1** GLOBAL\_STAT\_DB\_CU字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name1

-

text

-

数据库进程名称。

-

db_name

-

text

-

数据库名。

-

mem_hit

-

bigint

-

内存命中次数。

-

hdd_sync_read

-

bigint

-

硬盘同步读次数。

-

hdd_asyn_read

-

bigint

-

硬盘异步读次数。

-
- +# GLOBAL\_STAT\_DB\_CU + +GLOBAL\_STAT\_DB\_CU视图用于查询 openGauss ,每个数据库的 CU 命中情况。可以通过pg\_stat\_reset\(\)进行清零。 + +**表 1** GLOBAL\_STAT\_DB\_CU字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name1

+

text

+

数据库进程名称。

+

db_name

+

text

+

数据库名。

+

mem_hit

+

bigint

+

内存命中次数。

+

hdd_sync_read

+

bigint

+

硬盘同步读次数。

+

hdd_asyn_read

+

bigint

+

硬盘异步读次数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_SESSION_CU.md b/content/zh/docs/Developerguide/GLOBAL_STAT_SESSION_CU.md index 5966fe7ee..b557fbc4c 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_SESSION_CU.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_SESSION_CU.md @@ -1,39 +1,39 @@ -# GLOBAL\_STAT\_SESSION\_CU - -GLOBAL\_STAT\_SESSION\_CU用于查询openGauss各个节点,当前运行session的CU命中情况。session退出相应的统计数据会清零。openGauss重启后,统计数据也会清零。 - -**表 1** GLOBAL\_STAT\_SESSION\_CU字段 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

mem_hit

-

integer

-

内存命中次数。

-

hdd_sync_read

-

integer

-

硬盘同步读次数。

-

hdd_asyn_read

-

integer

-

硬盘异步读次数。

-
- +# GLOBAL\_STAT\_SESSION\_CU + +GLOBAL\_STAT\_SESSION\_CU用于查询 openGauss 各个节点,当前运行 session 的 CU 命中情况。 session 退出相应的统计数据会清零。 openGauss 重启后,统计数据也会清零。 + +**表 1** GLOBAL\_STAT\_SESSION\_CU字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

mem_hit

+

integer

+

内存命中次数。

+

hdd_sync_read

+

integer

+

硬盘同步读次数。

+

hdd_asyn_read

+

integer

+

硬盘异步读次数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_INDEXES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_INDEXES.md index 50c44f115..26ae1a0ac 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_INDEXES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_INDEXES.md @@ -1,81 +1,81 @@ -# GLOBAL\_STAT\_SYS\_INDEXES - -得到各节点pg\_catalog、information\_schema以及pg\_toast模式中所有系统表的索引状态信息。 - -**表 1** GLOBAL\_STAT\_SYS\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

这个索引的表的OID。

-

indexrelid

-

oid

-

索引的OID。

-

schemaname

-

name

-

索引中模式名。

-

relname

-

name

-

索引的表名。

-

indexrelname

-

name

-

索引名。

-

idx_scan

-

bigint

-

索引上开始的索引扫描数。

-

idx_tup_read

-

bigint

-

通过索引上扫描返回的索引项数。

-

idx_tup_fetch

-

bigint

-

通过使用索引的简单索引扫描抓取的活表行数。

-
- +# GLOBAL\_STAT\_SYS\_INDEXES + +得到各节点pg\_catalog、information\_schema以及pg\_toast模式中所有系统表的索引状态信息。 + +**表 1** GLOBAL\_STAT\_SYS\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

这个索引的表的 OID 。

+

indexrelid

+

oid

+

索引的 OID 。

+

schemaname

+

name

+

索引中模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

bigint

+

索引上开始的索引扫描数。

+

idx_tup_read

+

bigint

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

bigint

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_TABLES.md index 8cf137217..9889fa437 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_TABLES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_TABLES.md @@ -1,172 +1,172 @@ -# GLOBAL\_STAT\_SYS\_TABLES - -得到各节点pg\_catalog、information\_schema以及pg_toast模式下的所有系统表的统计信息。 - -**表 1** GLOBAL\_STAT\_SYS\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

节点名称。

-

relid

-

oid

-

表的OID。

-

schemaname

-

name

-

此表的模式名。

-

relname

-

name

-

表名。

-

seq_scan

-

bigint

-

此表发起的顺序扫描数。

-

seq_tup_read

-

bigint

-

顺序扫描抓取的活跃行数。

-

idx_scan

-

bigint

-

此表发起的索引扫描数。

-

idx_tup_fetch

-

bigint

-

索引扫描抓取的活跃行数。

-

n_tup_ins

-

bigint

-

插入行数。

-

n_tup_upd

-

bigint

-

更新行数。

-

n_tup_del

-

bigint

-

删除行数。

-

n_tup_hot_upd

-

bigint

-

HOT更新行数(比如没有更新所需的单独索引)。

-

n_live_tup

-

bigint

-

估计活跃行数。

-

n_dead_tup

-

bigint

-

估计死行数。

-

last_vacuum

-

timestamp with time zone

-

最后一次此表是手动清理的(不计算VACUUM FULL)时间。

-

last_autovacuum

-

timestamp with time zone

-

上次被autovacuum守护进程清理的时间。

-

last_analyze

-

timestamp with time zone

-

上次手动分析这个表的时间。

-

last_autoanalyze

-

timestamp with time zone

-

上次被autovacuum守护进程分析的时间。

-

vacuum_count

-

bigint

-

这个表被手动清理的次数(不计算VACUUM FULL)。

-

autovacuum_count

-

bigint

-

这个表被autovacuum清理的次数。

-

analyze_count

-

bigint

-

这个表被手动分析的次数。

-

autoanalyze_count

-

bigint

-

这个表被autovacuum守护进程分析的次数。

-
- +# GLOBAL\_STAT\_SYS\_TABLES + +得到各节点pg\_catalog、information\_schema以及 pg_toast 模式下的所有系统表的统计信息。 + +**表 1** GLOBAL\_STAT\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

节点名称。

+

relid

+

oid

+

表的 OID 。

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

此表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+

n_live_tup

+

bigint

+

估计活跃行数。

+

n_dead_tup

+

bigint

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次此表是手动清理的(不计算VACUUM FULL)时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被 autovacuum 守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析这个表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被 autovacuum 守护进程分析的时间。

+

vacuum_count

+

bigint

+

这个表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

bigint

+

这个表被 autovacuum 清理的次数。

+

analyze_count

+

bigint

+

这个表被手动分析的次数。

+

autoanalyze_count

+

bigint

+

这个表被 autovacuum 守护进程分析的次数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_USER_FUNCTIONS.md b/content/zh/docs/Developerguide/GLOBAL_STAT_USER_FUNCTIONS.md index f64be4c68..ff0052b19 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_USER_FUNCTIONS.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_USER_FUNCTIONS.md @@ -1,67 +1,67 @@ -# GLOBAL\_STAT\_USER\_FUNCTIONS - -提供openGauss中各个节点的用户所创建的函数的状态的统计信息。 - -**表 1** GLOBAL\_STAT\_USER\_FUNCTIONS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

funcid

-

oid

-

函数的id。

-

schemaname

-

name

-

此函数所在模式的名称。

-

funcname

-

name

-

函数名称。

-

calls

-

bigint

-

该函数被调用的次数。

-

total_time

-

double precision

-

此函数及其调用的所有其他函数所花费的总时间(以毫秒为单位)。

-

self_time

-

double precision

-

在此函数本身中花费的总时间(不包括它调用的其他函数),以毫秒为单位。

-
- +# GLOBAL\_STAT\_USER\_FUNCTIONS + +提供 openGauss 中各个节点的用户所创建的函数的状态的统计信息。 + +**表 1** GLOBAL\_STAT\_USER\_FUNCTIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

funcid

+

oid

+

函数的 id 。

+

schemaname

+

name

+

此函数所在模式的名称。

+

funcname

+

name

+

函数名称。

+

calls

+

bigint

+

该函数被调用的次数。

+

total_time

+

double precision

+

此函数及其调用的所有其他函数所花费的总时间(以毫秒为单位)。

+

self_time

+

double precision

+

在此函数本身中花费的总时间(不包括它调用的其他函数),以毫秒为单位。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_USER_INDEXES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_USER_INDEXES.md index 7173b2753..9500b8477 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_USER_INDEXES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_USER_INDEXES.md @@ -1,81 +1,81 @@ -# GLOBAL\_STAT\_USER\_INDEXES - -得到各节点数据库中用户自定义普通表的索引状态信息。 - -**表 1** GLOBAL\_STAT\_USER\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

这个索引的表的OID。

-

indexrelid

-

oid

-

索引的OID。

-

schemaname

-

name

-

索引中模式名。

-

relname

-

name

-

索引的表名。

-

indexrelname

-

name

-

索引名。

-

idx_scan

-

bigint

-

索引上开始的索引扫描数。

-

idx_tup_read

-

bigint

-

通过索引上扫描返回的索引项数。

-

idx_tup_fetch

-

bigint

-

通过使用索引的简单索引扫描抓取的活表行数。

-
- +# GLOBAL\_STAT\_USER\_INDEXES + +得到各节点数据库中用户自定义普通表的索引状态信息。 + +**表 1** GLOBAL\_STAT\_USER\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

这个索引的表的 OID 。

+

indexrelid

+

oid

+

索引的 OID 。

+

schemaname

+

name

+

索引中模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

bigint

+

索引上开始的索引扫描数。

+

idx_tup_read

+

bigint

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

bigint

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_USER_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_USER_TABLES.md index 81e57fc64..e9b41b9d3 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_USER_TABLES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_USER_TABLES.md @@ -1,172 +1,172 @@ -# GLOBAL\_STAT\_USER\_TABLES - -得到各节点所有命名空间中用户自定义普通表的状态信息。 - -**表 1** GLOBAL\_STAT\_USER\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

表的OID。

-

schemaname

-

name

-

此表的模式名。

-

relname

-

name

-

表名。

-

seq_scan

-

bigint

-

此表发起的顺序扫描数。

-

seq_tup_read

-

bigint

-

顺序扫描抓取的活跃行数。

-

idx_scan

-

bigint

-

此表发起的索引扫描数。

-

idx_tup_fetch

-

bigint

-

索引扫描抓取的活跃行数。

-

n_tup_ins

-

bigint

-

插入行数。

-

n_tup_upd

-

bigint

-

更新行数。

-

n_tup_del

-

bigint

-

删除行数。

-

n_tup_hot_upd

-

bigint

-

HOT更新行数(即没有更新所需的单独索引)。

-

n_live_tup

-

bigint

-

估计活跃行数。

-

n_dead_tup

-

bigint

-

估计死行数。

-

last_vacuum

-

timestamp with time zone

-

最后一次此表是手动清理的(不计算VACUUM FULL)时间。

-

last_autovacuum

-

timestamp with time zone

-

上次被autovacuum守护进程清理的时间。

-

last_analyze

-

timestamp with time zone

-

上次手动分析这个表的时间。

-

last_autoanalyze

-

timestamp with time zone

-

上次被autovacuum守护进程分析的时间。

-

vacuum_count

-

bigint

-

这个表被手动清理的次数(不计算VACUUM FULL)。

-

autovacuum_count

-

bigint

-

这个表被autovacuum清理的次数。

-

analyze_count

-

bigint

-

这个表被手动分析的次数。

-

autoanalyze_count

-

bigint

-

这个表被autovacuum守护进程分析的次数。

-
- +# GLOBAL\_STAT\_USER\_TABLES + +得到各节点所有命名空间中用户自定义普通表的状态信息。 + +**表 1** GLOBAL\_STAT\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

表的 OID 。

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

此表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(即没有更新所需的单独索引)。

+

n_live_tup

+

bigint

+

估计活跃行数。

+

n_dead_tup

+

bigint

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次此表是手动清理的(不计算VACUUM FULL)时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被 autovacuum 守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析这个表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被 autovacuum 守护进程分析的时间。

+

vacuum_count

+

bigint

+

这个表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

bigint

+

这个表被 autovacuum 清理的次数。

+

analyze_count

+

bigint

+

这个表被手动分析的次数。

+

autoanalyze_count

+

bigint

+

这个表被 autovacuum 守护进程分析的次数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_ALL_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_ALL_TABLES.md index d89ecd865..344528e4d 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_ALL_TABLES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_ALL_TABLES.md @@ -1,102 +1,102 @@ -# GLOBAL\_STAT\_XACT\_ALL\_TABLES - -显示各节点的命名空间中所有普通表和toast表的事务状态信息。 - -**表 1** GLOBAL\_STAT\_XACT\_ALL\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

表的OID。

-

schemaname

-

name

-

此表的模式名。

-

relname

-

name

-

表名。

-

seq_scan

-

bigint

-

此表发起的顺序扫描数。

-

seq_tup_read

-

bigint

-

顺序扫描抓取的活跃行数。

-

idx_scan

-

bigint

-

此表发起的索引扫描数。

-

idx_tup_fetch

-

bigint

-

索引扫描抓取的活跃行数。

-

n_tup_ins

-

bigint

-

插入行数。

-

n_tup_upd

-

bigint

-

更新行数。

-

n_tup_del

-

bigint

-

删除行数。

-

n_tup_hot_upd

-

bigint

-

HOT更新行数(比如没有更新所需的单独索引)。

-
- +# GLOBAL\_STAT\_XACT\_ALL\_TABLES + +显示各节点的命名空间中所有普通表和 toast 表的事务状态信息。 + +**表 1** GLOBAL\_STAT\_XACT\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

表的 OID 。

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

此表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_SYS_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_SYS_TABLES.md index f5f4f0135..ecd01463a 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_SYS_TABLES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_SYS_TABLES.md @@ -1,102 +1,102 @@ -# GLOBAL\_STAT\_XACT\_SYS\_TABLES - -显示各节点命名空间中系统表的事务状态信息。 - -**表 1** GLOBAL\_STAT\_XACT\_SYS\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

节点名称。

-

relid

-

oid

-

表的OID。

-

schemaname

-

name

-

此表的模式名。

-

relname

-

name

-

表名。

-

seq_scan

-

bigint

-

此表发起的顺序扫描数。

-

seq_tup_read

-

bigint

-

顺序扫描抓取的活跃行数。

-

idx_scan

-

bigint

-

此表发起的索引扫描数。

-

idx_tup_fetch

-

bigint

-

索引扫描抓取的活跃行数。

-

n_tup_ins

-

bigint

-

插入行数。

-

n_tup_upd

-

bigint

-

更新行数。

-

n_tup_del

-

bigint

-

删除行数。

-

n_tup_hot_upd

-

bigint

-

HOT更新行数(比如没有更新所需的单独索引)。

-
- +# GLOBAL\_STAT\_XACT\_SYS\_TABLES + +显示各节点命名空间中系统表的事务状态信息。 + +**表 1** GLOBAL\_STAT\_XACT\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

节点名称。

+

relid

+

oid

+

表的 OID 。

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

此表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_FUNCTIONS.md b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_FUNCTIONS.md index b242f3b1e..c96901dcf 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_FUNCTIONS.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_FUNCTIONS.md @@ -1,67 +1,67 @@ -# GLOBAL\_STAT\_XACT\_USER\_FUNCTIONS - -视图包含各节点本事务内函数执行的统计信息。 - -**表 1** GLOBAL\_STAT\_XACT\_USER\_FUNCTIONS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

节点名称。

-

funcid

-

oid

-

函数标识。

-

schemaname

-

name

-

模式的名称。

-

funcname

-

name

-

函数名称。

-

calls

-

bigint

-

函数被调用的次数。

-

total_time

-

double precision

-

此函数及其调用的所有其他函数所花费的总时间。

-

self_time

-

double precision

-

在此函数本身中花费的总时间(不包括它调用的其他函数)。

-
- +# GLOBAL\_STAT\_XACT\_USER\_FUNCTIONS + +视图包含各节点本事务内函数执行的统计信息。 + +**表 1** GLOBAL\_STAT\_XACT\_USER\_FUNCTIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

节点名称。

+

funcid

+

oid

+

函数标识。

+

schemaname

+

name

+

模式的名称。

+

funcname

+

name

+

函数名称。

+

calls

+

bigint

+

函数被调用的次数。

+

total_time

+

double precision

+

此函数及其调用的所有其他函数所花费的总时间。

+

self_time

+

double precision

+

在此函数本身中花费的总时间(不包括它调用的其他函数)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_TABLES.md index cb149a101..44a88ea24 100644 --- a/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_TABLES.md +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_TABLES.md @@ -1,102 +1,102 @@ -# GLOBAL\_STAT\_XACT\_USER\_TABLES - -显示各节点命名空间中用户表的事务状态信息。 - -**表 1** GLOBAL\_STAT\_XACT\_USER\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

relid

-

oid

-

表的OID。

-

schemaname

-

name

-

此表的模式名。

-

relname

-

name

-

表名。

-

seq_scan

-

bigint

-

此表发起的顺序扫描数。

-

seq_tup_read

-

bigint

-

顺序扫描抓取的活跃行数。

-

idx_scan

-

bigint

-

此表发起的索引扫描数。

-

idx_tup_fetch

-

bigint

-

索引扫描抓取的活跃行数。

-

n_tup_ins

-

bigint

-

插入行数。

-

n_tup_upd

-

bigint

-

更新行数。

-

n_tup_del

-

bigint

-

删除行数。

-

n_tup_hot_upd

-

bigint

-

HOT更新行数(比如没有更新所需的单独索引)。

-
- +# GLOBAL\_STAT\_XACT\_USER\_TABLES + +显示各节点命名空间中用户表的事务状态信息。 + +**表 1** GLOBAL\_STAT\_XACT\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

表的 OID 。

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

此表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_THREADPOOL_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_THREADPOOL_STATUS.md index 5a7cffd20..909fa7231 100644 --- a/content/zh/docs/Developerguide/GLOBAL_THREADPOOL_STATUS.md +++ b/content/zh/docs/Developerguide/GLOBAL_THREADPOOL_STATUS.md @@ -1,4 +1,4 @@ -# GLOBAL\_THREADPOOL\_STATUS - -GLOBAL\_THREADPOOL\_STATUS视图显示在所有节点上的线程池中工作线程及会话的状态信息。具体的字段[表1](LOCAL_THREADPOOL_STATUS.md#zh-cn_topic_0237122641_zh-cn_topic_0059778133_tc25f02433de2419f8da4d0a8c2c8e562)。 - +# GLOBAL\_THREADPOOL\_STATUS + +GLOBAL\_THREADPOOL\_STATUS视图显示在所有节点上的线程池中工作线程及会话的状态信息。具体的字段[表1](LOCAL_THREADPOOL_STATUS.md#zh-cn_topic_0237122641_zh-cn_topic_0059778133_tc25f02433de2419f8da4d0a8c2c8e562)。 + diff --git a/content/zh/docs/Developerguide/GLOBAL_THREAD_WAIT_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_THREAD_WAIT_STATUS.md index 8cf37fe50..260a280b3 100644 --- a/content/zh/docs/Developerguide/GLOBAL_THREAD_WAIT_STATUS.md +++ b/content/zh/docs/Developerguide/GLOBAL_THREAD_WAIT_STATUS.md @@ -1,105 +1,105 @@ -# GLOBAL\_THREAD\_WAIT\_STATUS - -通过该视图可以检测所有节点上工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况。具体事件信息请参见[15.3.67-表2 等待状态列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0283136724_zh-cn_topic_0237122466_zh-cn_topic_0059777957_t794f802302c24514a5db22d51eabacc4)、[15.3.67-表3 轻量级锁等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0283136724_zh-cn_topic_0237122466_table38811324183420)、[15.3.67-表4 IO等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0283136724_zh-cn_topic_0237122466_table124603113369)和[15.3.67-表5 事务锁等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0283136724_zh-cn_topic_0237122466_table11826123533718)。 - -通过GLOBAL\_THREAD\_WAIT\_STATUS视图,可以查看openGauss全局各个节点上所有SQL语句产生的线程之间的调用层次关系,以及各个线程的阻塞等待状态,从而更容易定位hang以及类似现象的原因。 - -GLOBAL\_THREAD\_WAIT\_STATUS视图和THREAD\_WAIT\_STATUS视图列定义完全相同,这是由于GLOBAL\_THREAD\_WAIT\_STATUS视图本质是到openGauss中各个节点上查询THREAD\_WAIT\_STATUS视图汇总的结果。 - -**表 1** GLOBAL\_THREAD\_WAIT\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

数据库进程名称。

-

db_name

-

text

-

数据库名称。

-

thread_name

-

text

-

线程名称。

-

query_id

-

bigint

-

查询ID,对应debug_query_id。

-

tid

-

bigint

-

当前线程的线程号。

-

sessionid

-

bigint

-

session的ID。

-

lwtid

-

integer

-

当前线程的轻量级线程号。

-

psessionid

-

bigint

-

streaming线程的父线程。

-

tlevel

-

integer

-

streaming线程的层级。

-

smpid

-

integer

-

并行线程的ID。

-

wait_status

-

text

-

当前线程的等待状态。等待状态的详细信息请参见15.3.67-表2 等待状态列表

-

wait_event

-

text

-

如果wait_status是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、IO的信息。否则是空。

-
+# GLOBAL\_THREAD\_WAIT\_STATUS + +通过该视图可以检测所有节点上工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况。具体事件信息请参见[15.3.67-表 2 等待状态列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0283136724_zh-cn_topic_0237122466_zh-cn_topic_0059777957_t794f802302c24514a5db22d51eabacc4)、[15.3.67-表 3 轻量级锁等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0283136724_zh-cn_topic_0237122466_table38811324183420)、[15.3.67-表 4 IO 等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0283136724_zh-cn_topic_0237122466_table124603113369)和[15.3.67-表 5 事务锁等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0283136724_zh-cn_topic_0237122466_table11826123533718)。 + +通过GLOBAL\_THREAD\_WAIT\_STATUS视图,可以查看 openGauss 全局各个节点上所有 SQL 语句产生的线程之间的调用层次关系,以及各个线程的阻塞等待状态,从而更容易定位 hang 以及类似现象的原因。 + +GLOBAL\_THREAD\_WAIT\_STATUS视图和THREAD\_WAIT\_STATUS视图列定义完全相同,这是由于GLOBAL\_THREAD\_WAIT\_STATUS视图本质是到 openGauss 中各个节点上查询THREAD\_WAIT\_STATUS视图汇总的结果。 + +**表 1** GLOBAL\_THREAD\_WAIT\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

db_name

+

text

+

数据库名称。

+

thread_name

+

text

+

线程名称。

+

query_id

+

bigint

+

查询 ID ,对应 debug_query_id 。

+

tid

+

bigint

+

当前线程的线程号。

+

sessionid

+

bigint

+

session的 ID 。

+

lwtid

+

integer

+

当前线程的轻量级线程号。

+

psessionid

+

bigint

+

streaming线程的父线程。

+

tlevel

+

integer

+

streaming线程的层级。

+

smpid

+

integer

+

并行线程的 ID 。

+

wait_status

+

text

+

当前线程的等待状态。等待状态的详细信息请参见15.3.67-表 2 等待状态列表

+

wait_event

+

text

+

如果 wait_status 是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、IO的信息。否则是空。

+
diff --git a/content/zh/docs/Developerguide/GLOBAL_TRANSACTIONS_PREPARED_XACTS.md b/content/zh/docs/Developerguide/GLOBAL_TRANSACTIONS_PREPARED_XACTS.md index b02ddae79..24d66d4fa 100644 --- a/content/zh/docs/Developerguide/GLOBAL_TRANSACTIONS_PREPARED_XACTS.md +++ b/content/zh/docs/Developerguide/GLOBAL_TRANSACTIONS_PREPARED_XACTS.md @@ -1,53 +1,53 @@ -# GLOBAL\_TRANSACTIONS\_PREPARED\_XACTS - -显示各节点当前准备好进行两阶段提交的事务的信息。 - -**表 1** GLOBAL\_TRANSACTIONS\_PREPARED\_XACTS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

transaction

-

xid

-

预备事务的数字事务标识。

-

gid

-

text

-

赋予该事务的全局事务标识。

-

prepared

-

timestamp with time zone

-

事务准备好提交的时间。

-

owner

-

name

-

执行该事务的用户的名称。

-

database

-

name

-

执行该事务所在的数据库名。

-
- +# GLOBAL\_TRANSACTIONS\_PREPARED\_XACTS + +显示各节点当前准备好进行两阶段提交的事务的信息。 + +**表 1** GLOBAL\_TRANSACTIONS\_PREPARED\_XACTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

transaction

+

xid

+

预备事务的数字事务标识。

+

gid

+

text

+

赋予该事务的全局事务标识。

+

prepared

+

timestamp with time zone

+

事务准备好提交的时间。

+

owner

+

name

+

执行该事务的用户的名称。

+

database

+

name

+

执行该事务所在的数据库名。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_TRANSACTIONS_RUNNING_XACTS.md b/content/zh/docs/Developerguide/GLOBAL_TRANSACTIONS_RUNNING_XACTS.md index 246fc5c2c..e98eabe32 100644 --- a/content/zh/docs/Developerguide/GLOBAL_TRANSACTIONS_RUNNING_XACTS.md +++ b/content/zh/docs/Developerguide/GLOBAL_TRANSACTIONS_RUNNING_XACTS.md @@ -1,88 +1,88 @@ -# GLOBAL\_TRANSACTIONS\_RUNNING\_XACTS - -显示集群中各个节点运行事务的信息。 - -**表 1** GLOBAL\_TRANSACTIONS\_RUNNING\_XACTS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

handle

-

integer

-

事务在GTM对应的句柄。

-

gxid

-

xid

-

事务id号。

-

state

-

tinyint

-

事务状态(3:prepared或者0:starting)。

-

node

-

text

-

节点名称。

-

xmin

-

xid

-

节点上当前数据涉及的最小事务号xmin。

-

vacuum

-

boolean

-

标志当前事务是否是lazy vacuum事务。

-

timeline

-

bigint

-

标志数据库重启次数。

-

prepare_xid

-

xid

-

处于prepared状态的事务的id号,若不在prepared状态,值为0。

-

pid

-

bigint

-

事务对应的线程id。

-

next_xid

-

xid

-

CN传给DN的事务id号。

-
- +# GLOBAL\_TRANSACTIONS\_RUNNING\_XACTS + +显示集群中各个节点运行事务的信息。 + +**表 1** GLOBAL\_TRANSACTIONS\_RUNNING\_XACTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

handle

+

integer

+

事务在 GTM 对应的句柄。

+

gxid

+

xid

+

事务 id 号。

+

state

+

tinyint

+

事务状态(3:prepared或者0:starting)。

+

node

+

text

+

节点名称。

+

xmin

+

xid

+

节点上当前数据涉及的最小事务号 xmin 。

+

vacuum

+

boolean

+

标志当前事务是否是 lazy vacuum 事务。

+

timeline

+

bigint

+

标志数据库重启次数。

+

prepare_xid

+

xid

+

处于 prepared 状态的事务的 id 号,若不在 prepared 状态,值为 0 。

+

pid

+

bigint

+

事务对应的线程 id 。

+

next_xid

+

xid

+

CN传给DN的事务 id 号。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_USER_TRANSACTION.md b/content/zh/docs/Developerguide/GLOBAL_USER_TRANSACTION.md index 943699845..418d04624 100644 --- a/content/zh/docs/Developerguide/GLOBAL_USER_TRANSACTION.md +++ b/content/zh/docs/Developerguide/GLOBAL_USER_TRANSACTION.md @@ -1,115 +1,115 @@ -# GLOBAL\_USER\_TRANSACTION - -GLOBAL\_USER\_TRANSACTION用来统计全局用户执行的事务信息。 - -**表 1** GLOBAL\_USER\_TRANSACTION字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

节点名称。

-

username

-

name

-

用户的名称。

-

commit_counter

-

bigint

-

用户事务commit数量。

-

rollback_counter

-

bigint

-

用户事务rollback数量。

-

resp_min

-

bigint

-

用户事务最小响应时间(单位:微秒)。

-

resp_max

-

bigint

-

用户事务最大响应时间(单位:微秒)。

-

resp_avg

-

bigint

-

用户事务平均响应时间(单位:微秒)。

-

resp_total

-

bigint

-

用户事务总响应时间(单位:微秒)。

-

bg_commit_counter

-

bigint

-

后台事务commit数量。

-

bg_rollback_counter

-

bigint

-

后台事务rollback数量。

-

bg_resp_min

-

bigint

-

后台事务最小响应时间(单位:微秒)。

-

bg_resp_max

-

bigint

-

后台事务最大响应时间(单位:微秒)。

-

bg_resp_avg

-

bigint

-

后台事务平均响应时间(单位:微秒)。

-

bg_resp_total

-

bigint

-

后台事务总响应时间(单位:微秒)。

-
+# GLOBAL\_USER\_TRANSACTION + +GLOBAL\_USER\_TRANSACTION用来统计全局用户执行的事务信息。 + +**表 1** GLOBAL\_USER\_TRANSACTION字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

节点名称。

+

username

+

name

+

用户的名称。

+

commit_counter

+

bigint

+

用户事务 commit 数量。

+

rollback_counter

+

bigint

+

用户事务 rollback 数量。

+

resp_min

+

bigint

+

用户事务最小响应时间(单位:微秒)。

+

resp_max

+

bigint

+

用户事务最大响应时间(单位:微秒)。

+

resp_avg

+

bigint

+

用户事务平均响应时间(单位:微秒)。

+

resp_total

+

bigint

+

用户事务总响应时间(单位:微秒)。

+

bg_commit_counter

+

bigint

+

后台事务 commit 数量。

+

bg_rollback_counter

+

bigint

+

后台事务 rollback 数量。

+

bg_resp_min

+

bigint

+

后台事务最小响应时间(单位:微秒)。

+

bg_resp_max

+

bigint

+

后台事务最大响应时间(单位:微秒)。

+

bg_resp_avg

+

bigint

+

后台事务平均响应时间(单位:微秒)。

+

bg_resp_total

+

bigint

+

后台事务总响应时间(单位:微秒)。

+
diff --git a/content/zh/docs/Developerguide/GLOBAL_WAIT_EVENTS.md b/content/zh/docs/Developerguide/GLOBAL_WAIT_EVENTS.md index 1994d76f7..3ec21c6f2 100644 --- a/content/zh/docs/Developerguide/GLOBAL_WAIT_EVENTS.md +++ b/content/zh/docs/Developerguide/GLOBAL_WAIT_EVENTS.md @@ -1,88 +1,88 @@ # GLOBAL\_WAIT\_EVENTS -GLOBAL\_WAIT\_EVENTS视图显示各节点的event的等待相关的统计信息。 +GLOBAL\_WAIT\_EVENTS视图显示各节点的 event 的等待相关的统计信息。 **表 1** GLOBAL\_WAIT\_EVENTS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

名称

-

类型

-

描述

-

nodename

-

text

-

数据库进程名称。

-

type

-

text

-

event类型。

-

event

-

text

-

event名称。

-

wait

-

bigint

-

等待次数。

-

failed_wait

-

bigint

-

失败的等待次数。

-

total_wait_time

-

bigint

-

总等待时间(单位:微秒)。

-

avg_wait_time

-

bigint

-

平均等待时间(单位:微秒)。

-

max_wait_time

-

bigint

-

最大等待时间(单位:微秒)。

-

min_wait_time

-

bigint

-

最小等待时间(单位:微秒)。

-

last_updated

-

timestamp with time zone

-

最后一次更新该事件的时间。

-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

text

+

数据库进程名称。

+

type

+

text

+

event类型。

+

event

+

text

+

event名称。

+

wait

+

bigint

+

等待次数。

+

failed_wait

+

bigint

+

失败的等待次数。

+

total_wait_time

+

bigint

+

总等待时间(单位:微秒)。

+

avg_wait_time

+

bigint

+

平均等待时间(单位:微秒)。

+

max_wait_time

+

bigint

+

最大等待时间(单位:微秒)。

+

min_wait_time

+

bigint

+

最小等待时间(单位:微秒)。

+

last_updated

+

timestamp with time zone

+

最后一次更新该事件的时间。

+
diff --git a/content/zh/docs/Developerguide/GLOBAL_WORKLOAD_TRANSACTION.md b/content/zh/docs/Developerguide/GLOBAL_WORKLOAD_TRANSACTION.md index 93d05ae5a..984aabf37 100644 --- a/content/zh/docs/Developerguide/GLOBAL_WORKLOAD_TRANSACTION.md +++ b/content/zh/docs/Developerguide/GLOBAL_WORKLOAD_TRANSACTION.md @@ -1,116 +1,116 @@ -# GLOBAL\_WORKLOAD\_TRANSACTION - -显示各节点上的workload的负载信息。 - -**表 1** GLOBAL\_WORKLOAD\_TRANSACTION字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

name

-

数据库进程名称。

-

workload

-

name

-

负载的名称。

-

commit_counter

-

bigint

-

用户事务commit数量。

-

rollback_counter

-

bigint

-

用户事务rollback数量。

-

resp_min

-

bigint

-

用户事务最小响应时间(单位:微秒)。

-

resp_max

-

bigint

-

用户事务最大响应时间(单位:微秒)。

-

resp_avg

-

bigint

-

用户事务平均响应时间(单位:微秒)。

-

resp_total

-

bigint

-

用户事务总响应时间(单位:微秒)。

-

bg_commit_counter

-

bigint

-

后台事务commit数量。

-

bg_rollback_counter

-

bigint

-

后台事务rollback数量。

-

bg_resp_min

-

bigint

-

后台事务最小响应时间(单位:微秒)。

-

bg_resp_max

-

bigint

-

后台事务最大响应时间(单位:微秒)。

-

bg_resp_avg

-

bigint

-

后台事务平均响应时间(单位:微秒)。

-

bg_resp_total

-

bigint

-

后台事务总响应时间(单位:微秒)。

-
- +# GLOBAL\_WORKLOAD\_TRANSACTION + +显示各节点上的 workload 的负载信息。 + +**表 1** GLOBAL\_WORKLOAD\_TRANSACTION字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

workload

+

name

+

负载的名称。

+

commit_counter

+

bigint

+

用户事务 commit 数量。

+

rollback_counter

+

bigint

+

用户事务 rollback 数量。

+

resp_min

+

bigint

+

用户事务最小响应时间(单位:微秒)。

+

resp_max

+

bigint

+

用户事务最大响应时间(单位:微秒)。

+

resp_avg

+

bigint

+

用户事务平均响应时间(单位:微秒)。

+

resp_total

+

bigint

+

用户事务总响应时间(单位:微秒)。

+

bg_commit_counter

+

bigint

+

后台事务 commit 数量。

+

bg_rollback_counter

+

bigint

+

后台事务 rollback 数量。

+

bg_resp_min

+

bigint

+

后台事务最小响应时间(单位:微秒)。

+

bg_resp_max

+

bigint

+

后台事务最大响应时间(单位:微秒)。

+

bg_resp_avg

+

bigint

+

后台事务平均响应时间(单位:微秒)。

+

bg_resp_total

+

bigint

+

后台事务总响应时间(单位:微秒)。

+
+ diff --git "a/content/zh/docs/Developerguide/GOTO\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/GOTO\350\257\255\345\217\245.md" index 87ba67f71..1a9bbcce2 100644 --- "a/content/zh/docs/Developerguide/GOTO\350\257\255\345\217\245.md" +++ "b/content/zh/docs/Developerguide/GOTO\350\257\255\345\217\245.md" @@ -1,128 +1,128 @@ -# GOTO语句 - -GOTO语句可以实现从GOTO位置到目标语句的无条件跳转。GOTO语句会改变原本的执行逻辑,因此应该慎重使用,或者也可以使用EXCEPTION处理特殊场景。当执行GOTO语句时,目标Label必须是唯一的。 - -## 语法 - -label declaration ::= - -![](figures/zh-cn_image_0253404022.png) - -goto statement ::= - -![](figures/zh-cn_image_0253404023.png) - -## 示例 - -``` -openGauss=# CREATE OR REPLACE PROCEDURE GOTO_test() -AS -DECLARE - v1 int; -BEGIN - v1 := 0; - LOOP - EXIT WHEN v1 > 100; - v1 := v1 + 2; - if v1 > 25 THEN - GOTO pos1; - END IF; - END LOOP; -<> -v1 := v1 + 10; -raise info 'v1 is %. ', v1; -END; -/ - -call GOTO_test(); -``` - -## 限制场景 - -GOTO使用有以下限制场景: - -- 不支持有多个相同的GOTO labels目标场景,无论是否在同一个block中。 - - ``` - BEGIN - GOTO pos1; - <> - SELECT * FROM ... - <> - UPDATE t1 SET ... - END; - ``` - - -- 不支持GOTO跳转到IF语句、CASE语句、LOOP语句中。 - - ``` - BEGIN - GOTO pos1; - IF valid THEN - <> - SELECT * FROM ... - END IF; - END; - ``` - - -- 不支持GOTO语句从一个IF子句跳转到另一个IF子句,或从一个CASE语句的WHEN子句跳转到另一个WHEN子句。 - - ``` - BEGIN - IF valid THEN - GOTO pos1; - SELECT * FROM ... - ELSE - <> - UPDATE t1 SET ... - END IF; - END; - ``` - - -- 不支持从外部块跳转到内部的BEGIN-END块。 - - ``` - BEGIN - GOTO pos1; - BEGIN - <> - UPDATE t1 SET ... - END; - END; - ``` - - -- 不支持从异常处理部分跳转到当前的BEGIN-END块。但可以跳转到上层BEGIN-END块。 - - ``` - BEGIN - <> - UPDATE t1 SET ... - EXCEPTION - WHEN condition THEN - GOTO pos1; - END; - ``` - - -- 如果从GOTO到一个不包含执行语句的位置,需要添加NULL语句。 - - ``` - DECLARE - done BOOLEAN; - BEGIN - FOR i IN 1..50 LOOP - IF done THEN - GOTO end_loop; - END IF; - <> -- not allowed unless an executable statement follows - NULL; -- add NULL statement to avoid error - END LOOP; -- raises an error without the previous NULL - END; - / - ``` - - +# GOTO语句 + +GOTO 语句可以实现从 GOTO 位置到目标语句的无条件跳转。 GOTO 语句会改变原本的执行逻辑,因此应该慎重使用,或者也可以使用 EXCEPTION 处理特殊场景。当执行 GOTO 语句时,目标 Label 必须是唯一的。 + +## 语法 + +label declaration ::= + +![](figures/zh-cn_image_0253404022.png) + +goto statement ::= + +![](figures/zh-cn_image_0253404023.png) + +## 示例 + +``` +openGauss=# CREATE OR REPLACE PROCEDURE GOTO_test() +AS +DECLARE + v1 int; +BEGIN + v1 := 0; + LOOP + EXIT WHEN v1 > 100; + v1 := v1 + 2; + if v1 > 25 THEN + GOTO pos1; + END IF; + END LOOP; +<> +v1 := v1 + 10; +raise info 'v1 is %. ', v1; +END; +/ + +call GOTO_test(); +``` + +## 限制场景 + +GOTO 使用有以下限制场景: + +- 不支持有多个相同的 GOTO labels 目标场景,无论是否在同一个 block 中。 + + ``` + BEGIN + GOTO pos1; + <> + SELECT * FROM ... + <> + UPDATE t1 SET ... + END; + ``` + + +- 不支持 GOTO 跳转到 IF 语句、CASE语句、LOOP语句中。 + + ``` + BEGIN + GOTO pos1; + IF valid THEN + <> + SELECT * FROM ... + END IF; + END; + ``` + + +- 不支持 GOTO 语句从一个 IF 子句跳转到另一个 IF 子句,或从一个 CASE 语句的 WHEN 子句跳转到另一个 WHEN 子句。 + + ``` + BEGIN + IF valid THEN + GOTO pos1; + SELECT * FROM ... + ELSE + <> + UPDATE t1 SET ... + END IF; + END; + ``` + + +- 不支持从外部块跳转到内部的BEGIN-END块。 + + ``` + BEGIN + GOTO pos1; + BEGIN + <> + UPDATE t1 SET ... + END; + END; + ``` + + +- 不支持从异常处理部分跳转到当前的BEGIN-END块。但可以跳转到上层BEGIN-END块。 + + ``` + BEGIN + <> + UPDATE t1 SET ... + EXCEPTION + WHEN condition THEN + GOTO pos1; + END; + ``` + + +- 如果从 GOTO 到一个不包含执行语句的位置,需要添加 NULL 语句。 + + ``` + DECLARE + done BOOLEAN; + BEGIN + FOR i IN 1..50 LOOP + IF done THEN + GOTO end_loop; + END IF; + <> -- not allowed unless an executable statement follows + NULL; -- add NULL statement to avoid error + END LOOP; -- raises an error without the previous NULL + END; + / + ``` + + diff --git a/content/zh/docs/Developerguide/GRANT.md b/content/zh/docs/Developerguide/GRANT.md index 826cc46c6..9255ce0cc 100644 --- a/content/zh/docs/Developerguide/GRANT.md +++ b/content/zh/docs/Developerguide/GRANT.md @@ -1,576 +1,576 @@ -# GRANT - -## 功能描述 - -对角色和用户进行授权操作。 - -使用GRANT命令进行用户授权包括以下三种场景: - -- **将系统权限授权给角色或用户** - - 系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN、MONADMIN、OPRADMIN、POLADMIN和LOGIN。 - - 系统权限一般通过CREATE/ALTER ROLE语法来指定。其中,SYSADMIN权限可以通过GRANT/REVOKE ALL PRIVILEGE授予或撤销。但系统权限无法通过ROLE和USER的权限被继承,也无法授予PUBLIC。 - -- **将数据库对象授权给角色或用户** - - 将数据库对象(表和视图、指定字段、数据库、函数、模式、表空间等)的相关权限授予特定角色或用户; - - GRANT命令将数据库对象的特定权限授予一个或多个角色。这些权限会追加到已有的权限上。 - - 关键字PUBLIC表示该权限要赋予所有角色,包括以后创建的用户。PUBLIC可以看做是一个隐含定义好的组,它总是包括所有角色。任何角色或用户都将拥有通过GRANT直接赋予的权限和所属的权限,再加上PUBLIC的权限。 - - 如果声明了WITH GRANT OPTION,则被授权的用户也可以将此权限赋予他人,否则就不能授权给他人。这个选项不能赋予PUBLIC,这是openGauss特有的属性。 - - openGauss会将某些类型的对象上的权限授予PUBLIC。默认情况下,对表、表字段、序列、外部数据源、外部服务器、模式或表空间对象的权限不会授予PUBLIC,而以下这些对象的权限会授予PUBLIC:数据库的CONNECT权限和CREATE TEMP TABLE权限、函数的EXECUTE特权、语言和数据类型(包括域)的USAGE特权。当然,对象拥有者可以撤销默认授予PUBLIC的权限并专门授予权限给其他用户。为了更安全,建议在同一个事务中创建对象并设置权限,这样其他用户就没有时间窗口使用该对象。另外可参考安全加固指南的权限控制章节,对PUBLIC用户组的权限进行限制。这些初始的默认权限可以使用ALTER DEFAULT PRIVILEGES命令修改。 - - 对象的所有者缺省具有该对象上的所有权限,出于安全考虑所有者可以舍弃部分权限,但ALTER、DROP、COMMENT、INDEX、VACUUM以及对象的可再授予权限属于所有者固有的权限,隐式拥有。 - -- **将角色或用户的权限授权给其他角色或用户** - - 将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下,每个角色或用户都可视为拥有一个或多个数据库权限的集合。 - - 当声明了WITH ADMIN OPTION,被授权的用户可以将该权限再次授予其他角色或用户,以及撤销所有由该角色或用户继承到的权限。当授权的角色或用户发生变更或被撤销时,所有继承该角色或用户权限的用户拥有的权限都会随之发生变更。 - - 数据库系统管理员可以给任何角色或用户授予/撤销任何权限。拥有CREATEROLE权限的角色可以赋予或者撤销任何非系统管理员角色的权限。 - - -## 注意事项 - -无。 - -## 语法格式 - -- 将表或视图的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] - | ALL [ PRIVILEGES ] } - ON { [ TABLE ] table_name [, ...] - | ALL TABLES IN SCHEMA schema_name [, ...] } - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - - ``` - -- 将表中字段的访问权限赋予指定的用户或角色。 - - ``` - GRANT { {{ SELECT | INSERT | UPDATE | REFERENCES | COMMENT } ( column_name [, ...] )} [, ...] - | ALL [ PRIVILEGES ] ( column_name [, ...] ) } - ON [ TABLE ] table_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将序列的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } [, ...] - | ALL [ PRIVILEGES ] } - ON { [ [ LARGE ] SEQUENCE ] sequence_name [, ...] - | ALL SEQUENCES IN SCHEMA schema_name [, ...] } - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将数据库的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...] - | ALL [ PRIVILEGES ] } - ON DATABASE database_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将域的访问权限赋予指定的用户或角色。 - - ``` - GRANT { USAGE | ALL [ PRIVILEGES ] } - ON DOMAIN domain_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >本版本暂时不支持赋予域的访问权限。 - -- 将客户端加密主密钥CMK的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } - ON CLIENT_MASTER_KEY client_master_key [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将列加密密钥CEK的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } - ON COLUMN_ENCRYPTION_KEY column_encryption_key [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将外部数据源的访问权限赋予给指定的用户或角色。 - - ``` - GRANT { USAGE | ALL [ PRIVILEGES ] } - ON FOREIGN DATA WRAPPER fdw_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将外部服务器的访问权限赋予给指定的用户或角色。 - - ``` - GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON FOREIGN SERVER server_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将函数的访问权限赋予给指定的用户或角色。 - - ``` - GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...] - | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将过程语言的访问权限赋予给指定的用户或角色。 - - ``` - GRANT { USAGE | ALL [ PRIVILEGES ] } - ON LANGUAGE lang_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将大对象的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] } - ON LARGE OBJECT loid [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >本版本暂时不支持大对象。 - -- 将模式的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { CREATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON SCHEMA schema_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >将模式中的表或者视图对象授权给其他用户时,需要将表或视图所属的模式的USAGE权限同时授予该用户,若没有该权限,则只能看到这些对象的名称,并不能实际进行对象访问。 同名模式下创建表的权限无法通过此语法赋予,可以通过将角色的权限赋予其他用户或角色的语法,赋予同名模式下创建表的权限。 - -- 将表空间的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { CREATE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON TABLESPACE tablespace_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将类型的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON TYPE type_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >本版本暂时不支持赋予类型的访问权限。 - -- 将Data Source对象的权限赋予指定的角色。 - - ``` - GRANT { USAGE | ALL [PRIVILEGES]} - ON DATA SOURCE src_name [, ...] - TO { [GROUP] role_name | PUBLIC } [, ...] - [WITH GRANT OPTION]; - ``` - -- 将directory对象的权限赋予指定的角色。 - - ``` - GRANT { { READ | WRITE | ALTER | DROP } [, ...] | ALL [PRIVILEGES] } - ON DIRECTORY directory_name [, ...] - TO { [GROUP] role_name | PUBLIC } [, ...] - [WITH GRANT OPTION]; - ``` - -- 将package对象的权限赋予指定的角色。 - - ``` - GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [PRIVILEGES] } - ON PACKAGE package_name [, ...] - TO { [GROUP] role_name | PUBLIC } [, ...] - [WITH GRANT OPTION]; - ``` - -- 将角色的权限赋予其他用户或角色的语法。 - - ``` - GRANT role_name [, ...] - TO role_name [, ...] - [ WITH ADMIN OPTION ]; - ``` - -- 将sysadmin权限赋予指定的角色。 - - ``` - GRANT ALL { PRIVILEGES | PRIVILEGE } - TO role_name; - ``` - - -## 参数说明 - -GRANT的权限分类如下所示。 - -- **SELECT** - - 允许对指定的表、视图、序列执行SELECT命令,update或delete时也需要对应字段上的select权限。 - -- **INSERT** - - 允许对指定的表执行INSERT命令。 - -- **UPDATE** - - 允许对声明的表中任意字段执行UPDATE命令。通常,update命令也需要select权限来查询出哪些行需要更新。SELECT… FOR UPDATE和SELECT… FOR SHARE除了需要SELECT权限外,还需要UPDATE权限。 - -- **DELETE** - - 允许执行DELETE命令删除指定表中的数据。通常,delete命令也需要select权限来查询出哪些行需要删除。 - -- **TRUNCATE** - - 允许执行TRUNCATE语句删除指定表中的所有记录。 - -- **REFERENCES** - - 创建一个外键约束,必须拥有参考表和被参考表的REFERENCES权限。 - -- **CREATE** - - 对于数据库,允许在数据库里创建新的模式。 - - 对于模式,允许在模式中创建新的对象。如果要重命名一个对象,用户除了必须是该对象的所有者外,还必须拥有该对象所在模式的CREATE权限。 - - 对于表空间,允许在表空间中创建表,允许在创建数据库和模式的时候把该表空间指定为缺省表空间。 - -- **CONNECT** - - 允许用户连接到指定的数据库。 - -- **EXECUTE** - - 允许使用指定的函数,以及利用这些函数实现的操作符。 - -- **USAGE** - - 对于过程语言,允许用户在创建函数的时候指定过程语言。 - - 对于模式,USAGE允许访问包含在指定模式中的对象,若没有该权限,则只能看到这些对象的名称。 - - 对于序列,USAGE允许使用nextval函数。 - - 对于Data Source对象,USAGE是指访问权限,也是可赋予的所有权限,即USAGE与ALL PRIVILEGES等价。 - -- **ALTER** - - 允许用户修改指定对象的属性,但不包括修改对象的所有者和修改对象所在的模式。 - -- **DROP** - - 允许用户删除指定的对象。 - -- **COMMENT** - - 允许用户定义或修改指定对象的注释。 - -- **INDEX** - - 允许用户在指定表上创建索引,并管理指定表上的索引,还允许用户对指定表执行REINDEX和CLUSTER操作。 - -- **VACUUM** - - 允许用户对指定的表执行ANALYZE和VACUUM操作。 - -- **ALL PRIVILEGES** - - 一次性给指定用户/角色赋予所有可赋予的权限。只有系统管理员有权执行GRANT ALL PRIVILEGES。 - - -GRANT的参数说明如下所示。 - -- **role\_name** - - 已存在用户名称。 - -- **table\_name** - - 已存在表名称。 - -- **column\_name** - - 已存在字段名称。 - -- **schema\_name** - - 已存在模式名称。 - -- **database\_name** - - 已存在数据库名称。 - -- **function\_name** - - 已存在函数名称。 - -- **sequence\_name** - - 已存在序列名称。 - -- **domain\_name** - - 已存在域类型名称。 - -- **fdw\_name** - - 已存在外部数据包名称。 - -- **lang\_name** - - 已存在语言名称。 - -- **type\_name** - - 已存在类型名称。 - -- **src\_name** - - 已存在的Data Source对象名称。 - -- **argmode** - - 参数模式。 - - 取值范围:字符串,要符合标识符命名规范。 - -- **arg\_name** - - 参数名称。 - - 取值范围:字符串,要符合标识符命名规范。 - -- **arg\_type** - - 参数类型。 - - 取值范围:字符串,要符合标识符命名规范。 - -- **loid** - - 包含本页的大对象的标识符。 - - 取值范围:字符串,要符合标识符命名规范。 - -- **tablespace\_name** - - 表空间名称。 - -- client\_master\_key - - 客户端加密主密钥的名称。 - - 取值范围:字符串,要符合标识符命名规范。 - -- column\_encryption\_key - - 列加密密钥的名称。 - - 取值范围:字符串,要符合标识符命名规范。 - -- **directory\_name** - - 目录名称。 - - 取值范围:字符串,要符合标识符命名规范。 - -- **WITH GRANT OPTION** - - 如果声明了WITH GRANT OPTION,则被授权的用户也可以将此权限赋予他人,否则就不能授权给他人。这个选项不能赋予PUBLIC。 - - -非对象所有者给其他用户授予对象权限时,命令按照以下规则执行: - -- 如果用户没有该对象上指定的权限,命令立即失败。 -- 如果用户有该对象上的部分权限,则GRANT命令只授予他有授权选项的权限。 -- 如果用户没有可用的授权选项,GRANT ALL PRIVILEGES形式将发出一个警告信息,其他命令形式将发出在命令中提到的且没有授权选项的相关警告信息。 - ->![](public_sys-resources/icon-note.gif) **说明:** ->数据库系统管理员可以访问所有对象,而不会受对象的权限设置影响。这个特点类似Unix系统的root的权限。和root一样,除了必要的情况外,建议不要总是以系统管理员身份进行操作。 ->不允许对表分区进行GRANT操作,对分区表进行GRANT操作会引起告警。 - -## 示例 - -**示例:将系统权限授权给用户或者角色。** - -创建名为joe的用户,并将sysadmin权限授权给他。 - -``` -openGauss=# CREATE USER joe PASSWORD 'xxxxxxxxx'; -openGauss=# GRANT ALL PRIVILEGES TO joe; -``` - -授权成功后,用户joe会拥有sysadmin的所有权限。 - -**示例:将对象权限授权给用户或者角色**。 - -1. 撤销joe用户的sysadmin权限,然后将模式tpcds的使用权限和表tpcds.reason的所有权限授权给用户joe。 - - ``` - openGauss=# REVOKE ALL PRIVILEGES FROM joe; - openGauss=# GRANT USAGE ON SCHEMA tpcds TO joe; - openGauss=# GRANT ALL PRIVILEGES ON tpcds.reason TO joe; - ``` - - 授权成功后,joe用户就拥有了tpcds.reason表的所有权限,包括增删改查等权限。 - -2. 将tpcds.reason表中r\_reason\_sk、r\_reason\_id、r\_reason\_desc列的查询权限,r\_reason\_desc的更新权限授权给joe。 - - ``` - openGauss=# GRANT select (r_reason_sk,r_reason_id,r_reason_desc),update (r_reason_desc) ON tpcds.reason TO joe; - ``` - - 授权成功后,用户joe对tpcds.reason表中r\_reason\_sk,r\_reason\_id的查询权限会立即生效。如果joe用户需要拥有将这些权限授权给其他用户的权限,可以通过以下语法对joe用户进行授权。 - - ``` - openGauss=# GRANT select (r_reason_sk, r_reason_id) ON tpcds.reason TO joe WITH GRANT OPTION; - ``` - - 将数据库openGauss的连接权限授权给用户joe,并给予其在openGauss中创建schema的权限,而且允许joe将此权限授权给其他用户。 - - ``` - openGauss=# GRANT create,connect on database openGauss TO joe WITH GRANT OPTION; - ``` - - 创建角色tpcds\_manager,将模式tpcds的访问权限授权给角色tpcds\_manager,并授予该角色在tpcds下创建对象的权限,不允许该角色中的用户将权限授权给其他人。 - - ``` - openGauss=# CREATE ROLE tpcds_manager PASSWORD 'xxxxxxxxx'; - openGauss=# GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager; - ``` - - 将表空间tpcds\_tbspc的所有权限授权给用户joe,但用户joe无法将权限继续授予其他用户。 - - ``` - openGauss=# CREATE TABLESPACE tpcds_tbspc RELATIVE LOCATION 'tablespace/tablespace_1'; - openGauss=# GRANT ALL ON TABLESPACE tpcds_tbspc TO joe; - ``` - - -**示例:将用户或者角色的权限授权给其他用户或角色。** - -1. 创建角色manager,将joe的权限授权给manager,并允许该角色将权限授权给其他人。 - - ``` - openGauss=# CREATE ROLE manager PASSWORD 'xxxxxxxxx'; - openGauss=# GRANT joe TO manager WITH ADMIN OPTION; - ``` - -2. 创建用户senior\_manager,将用户manager的权限授权给该用户。 - - ``` - openGauss=# CREATE ROLE senior_manager PASSWORD 'xxxxxxxxx'; - openGauss=# GRANT manager TO senior_manager; - ``` - -3. 撤销权限,并清理用户。 - - ``` - openGauss=# REVOKE manager FROM joe; - openGauss=# REVOKE senior_manager FROM manager; - openGauss=# DROP USER manager; - ``` - - -**示例:将CMK或者CEK的权限授权给其他用户或角色。** - -1. 连接密态数据库。 - - ``` - gsql -p 57101 openGauss -r -C - openGauss=# CREATE CLIENT MASTER KEY MyCMK1 WITH ( KEY_STORE = localkms , KEY_PATH = "key_path_value" , ALGORITHM = RSA_2048); - CREATE CLIENT MASTER KEY - openGauss=# CREATE COLUMN ENCRYPTION KEY MyCEK1 WITH VALUES (CLIENT_MASTER_KEY = MyCMK1, ALGORITHM = AEAD_AES_256_CBC_HMAC_SHA256); - CREATE COLUMN ENCRYPTION KEY - ``` - -2. 创建角色newuser,将密钥的权限授权给newuser。 - - ``` - openGauss=# CREATE USER newuser PASSWORD 'xxxxxxxxx'; - CREATE ROLE - openGauss=# GRANT ALL ON SCHEMA public TO newuser; - GRANT - openGauss=# GRANT USAGE ON COLUMN_ENCRYPTION_KEY MyCEK1 to newuser; - GRANT - openGauss=# GRANT USAGE ON CLIENT_MASTER_KEY MyCMK1 to newuser; - GRANT - ``` - -3. 设置该用户连接数据库,使用该CEK创建加密表。 - - ``` - openGauss=# SET SESSION AUTHORIZATION newuser PASSWORD 'xxxxxxxxx'; - openGauss=> CREATE TABLE acltest1 (x int, x2 varchar(50) ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = MyCEK1, ENCRYPTION_TYPE = DETERMINISTIC)); - CREATE TABLE - openGauss=> SELECT has_cek_privilege('newuser', 'MyCEK1', 'USAGE'); - has_cek_privilege - ------------------- - t - (1 row) - ``` - -4. 撤销权限,并清理用户。 - - ``` - openGauss=# REVOKE USAGE ON COLUMN_ENCRYPTION_KEY MyCEK1 FROM newuser; - openGauss=# REVOKE USAGE ON CLIENT_MASTER_KEY MyCMK1 FROM newuser; - openGauss=# DROP TABLE newuser.acltest1; - openGauss=# DROP COLUMN ENCRYPTION KEY MyCEK1; - openGauss=# DROP CLIENT MASTER KEY MyCMK1; - openGauss=# DROP SCHEMA IF EXISTS newuser CASCADE; - openGauss=# REVOKE ALL ON SCHEMA public FROM newuser; - openGauss=# DROP ROLE IF EXISTS newuser; - ``` - - -**示例:撤销上述授予的权限,并清理角色和用户。** - -``` -openGauss=# REVOKE ALL PRIVILEGES ON tpcds.reason FROM joe; -openGauss=# REVOKE ALL PRIVILEGES ON SCHEMA tpcds FROM joe; -openGauss=# REVOKE ALL ON TABLESPACE tpcds_tbspc FROM joe; -openGauss=# DROP TABLESPACE tpcds_tbspc; -openGauss=# REVOKE USAGE,CREATE ON SCHEMA tpcds FROM tpcds_manager; -openGauss=# DROP ROLE tpcds_manager; -openGauss=# DROP ROLE senior_manager; -openGauss=# DROP USER joe CASCADE; -``` - -## 相关链接 - -[REVOKE](REVOKE.md),[ALTER DEFAULT PRIVILEGES](ALTER-DEFAULT-PRIVILEGES.md) - +# GRANT + +## 功能描述 + +对角色和用户进行授权操作。 + +使用 GRANT 命令进行用户授权包括以下三种场景: + +- **将系统权限授权给角色或用户** + + 系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN、MONADMIN、OPRADMIN、POLADMIN和 LOGIN 。 + + 系统权限一般通过CREATE/ALTER ROLE语法来指定。其中, SYSADMIN 权限可以通过GRANT/REVOKE ALL PRIVILEGE授予或撤销。但系统权限无法通过 ROLE 和 USER 的权限被继承,也无法授予 PUBLIC 。 + +- **将数据库对象授权给角色或用户** + + 将数据库对象(表和视图、指定字段、数据库、函数、模式、表空间等)的相关权限授予特定角色或用户; + +GRANT 命令将数据库对象的特定权限授予一个或多个角色。这些权限会追加到已有的权限上。 + + 关键字 PUBLIC 表示该权限要赋予所有角色,包括以后创建的用户。 PUBLIC 可以看做是一个隐含定义好的组,它总是包括所有角色。任何角色或用户都将拥有通过 GRANT 直接赋予的权限和所属的权限,再加上 PUBLIC 的权限。 + + 如果声明了 WITH GRANT OPTION ,则被授权的用户也可以将此权限赋予他人,否则就不能授权给他人。这个选项不能赋予 PUBLIC ,这是 openGauss 特有的属性。 + +openGauss 会将某些类型的对象上的权限授予 PUBLIC 。默认情况下,对表、表字段、序列、外部数据源、外部服务器、模式或表空间对象的权限不会授予 PUBLIC ,而以下这些对象的权限会授予PUBLIC:数据库的 CONNECT 权限和 CREATE TEMP TABLE 权限、函数的 EXECUTE 特权、语言和数据类型(包括域)的 USAGE 特权。当然,对象拥有者可以撤销默认授予 PUBLIC 的权限并专门授予权限给其他用户。为了更安全,建议在同一个事务中创建对象并设置权限,这样其他用户就没有时间窗口使用该对象。另外可参考安全加固指南的权限控制章节,对 PUBLIC 用户组的权限进行限制。这些初始的默认权限可以使用 ALTER DEFAULT PRIVILEGES 命令修改。 + + 对象的所有者缺省具有该对象上的所有权限,出于安全考虑所有者可以舍弃部分权限,但ALTER、DROP、COMMENT、INDEX、VACUUM以及对象的可再授予权限属于所有者固有的权限,隐式拥有。 + +- **将角色或用户的权限授权给其他角色或用户** + + 将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下,每个角色或用户都可视为拥有一个或多个数据库权限的集合。 + + 当声明了 WITH ADMIN OPTION ,被授权的用户可以将该权限再次授予其他角色或用户,以及撤销所有由该角色或用户继承到的权限。当授权的角色或用户发生变更或被撤销时,所有继承该角色或用户权限的用户拥有的权限都会随之发生变更。 + + 数据库系统管理员可以给任何角色或用户授予/撤销任何权限。拥有 CREATEROLE 权限的角色可以赋予或者撤销任何非系统管理员角色的权限。 + + +## 注意事项 + +无。 + +## 语法格式 + +- 将表或视图的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] + | ALL [ PRIVILEGES ] } + ON { [ TABLE ] table_name [, ...] + | ALL TABLES IN SCHEMA schema_name [, ...] } + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + + ``` + +- 将表中字段的访问权限赋予指定的用户或角色。 + + ``` + GRANT { {{ SELECT | INSERT | UPDATE | REFERENCES | COMMENT } ( column_name [, ...] )} [, ...] + | ALL [ PRIVILEGES ] ( column_name [, ...] ) } + ON [ TABLE ] table_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将序列的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } [, ...] + | ALL [ PRIVILEGES ] } + ON { [ [ LARGE ] SEQUENCE ] sequence_name [, ...] + | ALL SEQUENCES IN SCHEMA schema_name [, ...] } + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将数据库的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...] + | ALL [ PRIVILEGES ] } + ON DATABASE database_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将域的访问权限赋予指定的用户或角色。 + + ``` + GRANT { USAGE | ALL [ PRIVILEGES ] } + ON DOMAIN domain_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >本版本暂时不支持赋予域的访问权限。 + +- 将客户端加密主密钥 CMK 的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } + ON CLIENT_MASTER_KEY client_master_key [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将列加密密钥 CEK 的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } + ON COLUMN_ENCRYPTION_KEY column_encryption_key [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将外部数据源的访问权限赋予给指定的用户或角色。 + + ``` + GRANT { USAGE | ALL [ PRIVILEGES ] } + ON FOREIGN DATA WRAPPER fdw_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将外部服务器的访问权限赋予给指定的用户或角色。 + + ``` + GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON FOREIGN SERVER server_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将函数的访问权限赋予给指定的用户或角色。 + + ``` + GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...] + | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将过程语言的访问权限赋予给指定的用户或角色。 + + ``` + GRANT { USAGE | ALL [ PRIVILEGES ] } + ON LANGUAGE lang_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将大对象的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] } + ON LARGE OBJECT loid [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >本版本暂时不支持大对象。 + +- 将模式的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { CREATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON SCHEMA schema_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >将模式中的表或者视图对象授权给其他用户时,需要将表或视图所属的模式的 USAGE 权限同时授予该用户,若没有该权限,则只能看到这些对象的名称,并不能实际进行对象访问。 同名模式下创建表的权限无法通过此语法赋予,可以通过将角色的权限赋予其他用户或角色的语法,赋予同名模式下创建表的权限。 + +- 将表空间的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { CREATE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON TABLESPACE tablespace_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将类型的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON TYPE type_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >本版本暂时不支持赋予类型的访问权限。 + +- 将 Data Source 对象的权限赋予指定的角色。 + + ``` + GRANT { USAGE | ALL [PRIVILEGES]} + ON DATA SOURCE src_name [, ...] + TO { [GROUP] role_name | PUBLIC } [, ...] + [WITH GRANT OPTION]; + ``` + +- 将 directory 对象的权限赋予指定的角色。 + + ``` + GRANT { { READ | WRITE | ALTER | DROP } [, ...] | ALL [PRIVILEGES] } + ON DIRECTORY directory_name [, ...] + TO { [GROUP] role_name | PUBLIC } [, ...] + [WITH GRANT OPTION]; + ``` + +- 将 package 对象的权限赋予指定的角色。 + + ``` + GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [PRIVILEGES] } + ON PACKAGE package_name [, ...] + TO { [GROUP] role_name | PUBLIC } [, ...] + [WITH GRANT OPTION]; + ``` + +- 将角色的权限赋予其他用户或角色的语法。 + + ``` + GRANT role_name [, ...] + TO role_name [, ...] + [ WITH ADMIN OPTION ]; + ``` + +- 将 sysadmin 权限赋予指定的角色。 + + ``` + GRANT ALL { PRIVILEGES | PRIVILEGE } + TO role_name; + ``` + + +## 参数说明 + +GRANT 的权限分类如下所示。 + +- **SELECT** + + 允许对指定的表、视图、序列执行 SELECT 命令, update 或 delete 时也需要对应字段上的 select 权限。 + +- **INSERT** + + 允许对指定的表执行 INSERT 命令。 + +- **UPDATE** + + 允许对声明的表中任意字段执行 UPDATE 命令。通常, update 命令也需要 select 权限来查询出哪些行需要更新。SELECT… FOR UPDATE和SELECT… FOR SHARE除了需要 SELECT 权限外,还需要 UPDATE 权限。 + +- **DELETE** + + 允许执行 DELETE 命令删除指定表中的数据。通常, delete 命令也需要 select 权限来查询出哪些行需要删除。 + +- **TRUNCATE** + + 允许执行 TRUNCATE 语句删除指定表中的所有记录。 + +- **REFERENCES** + + 创建一个外键约束,必须拥有参考表和被参考表的 REFERENCES 权限。 + +- **CREATE** + - 对于数据库,允许在数据库里创建新的模式。 + - 对于模式,允许在模式中创建新的对象。如果要重命名一个对象,用户除了必须是该对象的所有者外,还必须拥有该对象所在模式的 CREATE 权限。 + - 对于表空间,允许在表空间中创建表,允许在创建数据库和模式的时候把该表空间指定为缺省表空间。 + +- **CONNECT** + + 允许用户连接到指定的数据库。 + +- **EXECUTE** + + 允许使用指定的函数,以及利用这些函数实现的操作符。 + +- **USAGE** + - 对于过程语言,允许用户在创建函数的时候指定过程语言。 + - 对于模式, USAGE 允许访问包含在指定模式中的对象,若没有该权限,则只能看到这些对象的名称。 + - 对于序列, USAGE 允许使用 nextval 函数。 + - 对于 Data Source 对象, USAGE 是指访问权限,也是可赋予的所有权限,即 USAGE 与 ALL PRIVILEGES 等价。 + +- **ALTER** + + 允许用户修改指定对象的属性,但不包括修改对象的所有者和修改对象所在的模式。 + +- **DROP** + + 允许用户删除指定的对象。 + +- **COMMENT** + + 允许用户定义或修改指定对象的注释。 + +- **INDEX** + + 允许用户在指定表上创建索引,并管理指定表上的索引,还允许用户对指定表执行 REINDEX 和 CLUSTER 操作。 + +- **VACUUM** + + 允许用户对指定的表执行 ANALYZE 和 VACUUM 操作。 + +- **ALL PRIVILEGES** + + 一次性给指定用户/角色赋予所有可赋予的权限。只有系统管理员有权执行 GRANT ALL PRIVILEGES 。 + + +GRANT 的参数说明如下所示。 + +- **role\_name** + + 已存在用户名称。 + +- **table\_name** + + 已存在表名称。 + +- **column\_name** + + 已存在字段名称。 + +- **schema\_name** + + 已存在模式名称。 + +- **database\_name** + + 已存在数据库名称。 + +- **function\_name** + + 已存在函数名称。 + +- **sequence\_name** + + 已存在序列名称。 + +- **domain\_name** + + 已存在域类型名称。 + +- **fdw\_name** + + 已存在外部数据包名称。 + +- **lang\_name** + + 已存在语言名称。 + +- **type\_name** + + 已存在类型名称。 + +- **src\_name** + + 已存在的 Data Source 对象名称。 + +- **argmode** + + 参数模式。 + + 取值范围:字符串,要符合标识符命名规范。 + +- **arg\_name** + + 参数名称。 + + 取值范围:字符串,要符合标识符命名规范。 + +- **arg\_type** + + 参数类型。 + + 取值范围:字符串,要符合标识符命名规范。 + +- **loid** + + 包含本页的大对象的标识符。 + + 取值范围:字符串,要符合标识符命名规范。 + +- **tablespace\_name** + + 表空间名称。 + +- client\_master\_key + + 客户端加密主密钥的名称。 + + 取值范围:字符串,要符合标识符命名规范。 + +- column\_encryption\_key + + 列加密密钥的名称。 + + 取值范围:字符串,要符合标识符命名规范。 + +- **directory\_name** + + 目录名称。 + + 取值范围:字符串,要符合标识符命名规范。 + +- **WITH GRANT OPTION** + + 如果声明了 WITH GRANT OPTION ,则被授权的用户也可以将此权限赋予他人,否则就不能授权给他人。这个选项不能赋予 PUBLIC 。 + + +非对象所有者给其他用户授予对象权限时,命令按照以下规则执行: + +- 如果用户没有该对象上指定的权限,命令立即失败。 +- 如果用户有该对象上的部分权限,则 GRANT 命令只授予他有授权选项的权限。 +- 如果用户没有可用的授权选项, GRANT ALL PRIVILEGES 形式将发出一个警告信息,其他命令形式将发出在命令中提到的且没有授权选项的相关警告信息。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>数据库系统管理员可以访问所有对象,而不会受对象的权限设置影响。这个特点类似 Unix 系统的 root 的权限。和 root 一样,除了必要的情况外,建议不要总是以系统管理员身份进行操作。 +>不允许对表分区进行 GRANT 操作,对分区表进行 GRANT 操作会引起告警。 + +## 示例 + +**示例:将系统权限授权给用户或者角色。** + +创建名为 joe 的用户,并将 sysadmin 权限授权给他。 + +``` +openGauss=# CREATE USER joe PASSWORD 'xxxxxxxxx'; +openGauss=# GRANT ALL PRIVILEGES TO joe; +``` + +授权成功后,用户 joe 会拥有 sysadmin 的所有权限。 + +**示例:将对象权限授权给用户或者角色**。 + +1. 撤销 joe 用户的 sysadmin 权限,然后将模式 tpcds 的使用权限和表tpcds.reason的所有权限授权给用户 joe 。 + + ``` + openGauss=# REVOKE ALL PRIVILEGES FROM joe; + openGauss=# GRANT USAGE ON SCHEMA tpcds TO joe; + openGauss=# GRANT ALL PRIVILEGES ON tpcds.reason TO joe; + ``` + + 授权成功后, joe 用户就拥有了tpcds.reason表的所有权限,包括增删改查等权限。 + +2. 将tpcds.reason表中r\_reason\_sk、r\_reason\_id、r\_reason\_desc列的查询权限,r\_reason\_desc的更新权限授权给 joe 。 + + ``` + openGauss=# GRANT select (r_reason_sk, r_reason_id ,r_reason_desc),update (r_reason_desc) ON tpcds.reason TO joe; + ``` + + 授权成功后,用户 joe 对tpcds.reason表中r\_reason\_sk,r\_reason\_id的查询权限会立即生效。如果 joe 用户需要拥有将这些权限授权给其他用户的权限,可以通过以下语法对 joe 用户进行授权。 + + ``` + openGauss=# GRANT select (r_reason_sk, r_reason_id) ON tpcds.reason TO joe WITH GRANT OPTION; + ``` + + 将数据库 openGauss 的连接权限授权给用户 joe ,并给予其在 openGauss 中创建 schema 的权限,而且允许 joe 将此权限授权给其他用户。 + + ``` + openGauss=# GRANT create,connect on database openGauss TO joe WITH GRANT OPTION; + ``` + + 创建角色tpcds\_manager,将模式 tpcds 的访问权限授权给角色tpcds\_manager,并授予该角色在 tpcds 下创建对象的权限,不允许该角色中的用户将权限授权给其他人。 + + ``` + openGauss=# CREATE ROLE tpcds_manager PASSWORD 'xxxxxxxxx'; + openGauss=# GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager; + ``` + + 将表空间tpcds\_tbspc的所有权限授权给用户 joe ,但用户 joe 无法将权限继续授予其他用户。 + + ``` + openGauss=# CREATE TABLESPACE tpcds_tbspc RELATIVE LOCATION 'tablespace/tablespace_1'; + openGauss=# GRANT ALL ON TABLESPACE tpcds_tbspc TO joe; + ``` + + +**示例:将用户或者角色的权限授权给其他用户或角色。** + +1. 创建角色 manager ,将 joe 的权限授权给 manager ,并允许该角色将权限授权给其他人。 + + ``` + openGauss=# CREATE ROLE manager PASSWORD 'xxxxxxxxx'; + openGauss=# GRANT joe TO manager WITH ADMIN OPTION; + ``` + +2. 创建用户senior\_manager,将用户 manager 的权限授权给该用户。 + + ``` + openGauss=# CREATE ROLE senior_manager PASSWORD 'xxxxxxxxx'; + openGauss=# GRANT manager TO senior_manager; + ``` + +3. 撤销权限,并清理用户。 + + ``` + openGauss=# REVOKE manager FROM joe; + openGauss=# REVOKE senior_manager FROM manager; + openGauss=# DROP USER manager; + ``` + + +**示例:将 CMK 或者 CEK 的权限授权给其他用户或角色。** + +1. 连接密态数据库。 + + ``` + gsql -p 57101 openGauss -r -C + openGauss=# CREATE CLIENT MASTER KEY MyCMK1 WITH ( KEY_STORE = localkms , KEY_PATH = "key_path_value" , ALGORITHM = RSA_2048); + CREATE CLIENT MASTER KEY + openGauss=# CREATE COLUMN ENCRYPTION KEY MyCEK1 WITH VALUES (CLIENT_MASTER_KEY = MyCMK1, ALGORITHM = AEAD_AES_256_CBC_HMAC_SHA256); + CREATE COLUMN ENCRYPTION KEY + ``` + +2. 创建角色 newuser ,将密钥的权限授权给 newuser 。 + + ``` + openGauss=# CREATE USER newuser PASSWORD 'xxxxxxxxx'; + CREATE ROLE + openGauss=# GRANT ALL ON SCHEMA public TO newuser; + GRANT + openGauss=# GRANT USAGE ON COLUMN_ENCRYPTION_KEY MyCEK1 to newuser; + GRANT + openGauss=# GRANT USAGE ON CLIENT_MASTER_KEY MyCMK1 to newuser; + GRANT + ``` + +3. 设置该用户连接数据库,使用该 CEK 创建加密表。 + + ``` + openGauss=# SET SESSION AUTHORIZATION newuser PASSWORD 'xxxxxxxxx'; + openGauss=> CREATE TABLE acltest1 (x int, x2 varchar(50) ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = MyCEK1, ENCRYPTION_TYPE = DETERMINISTIC)); + CREATE TABLE + openGauss=> SELECT has_cek_privilege('newuser', 'MyCEK1', 'USAGE'); + has_cek_privilege + ------------------- + t + (1 row) + ``` + +4. 撤销权限,并清理用户。 + + ``` + openGauss=# REVOKE USAGE ON COLUMN_ENCRYPTION_KEY MyCEK1 FROM newuser; + openGauss=# REVOKE USAGE ON CLIENT_MASTER_KEY MyCMK1 FROM newuser; + openGauss=# DROP TABLE newuser.acltest1; + openGauss=# DROP COLUMN ENCRYPTION KEY MyCEK1; + openGauss=# DROP CLIENT MASTER KEY MyCMK1; + openGauss=# DROP SCHEMA IF EXISTS newuser CASCADE; + openGauss=# REVOKE ALL ON SCHEMA public FROM newuser; + openGauss=# DROP ROLE IF EXISTS newuser; + ``` + + +**示例:撤销上述授予的权限,并清理角色和用户。** + +``` +openGauss=# REVOKE ALL PRIVILEGES ON tpcds.reason FROM joe; +openGauss=# REVOKE ALL PRIVILEGES ON SCHEMA tpcds FROM joe; +openGauss=# REVOKE ALL ON TABLESPACE tpcds_tbspc FROM joe; +openGauss=# DROP TABLESPACE tpcds_tbspc; +openGauss=# REVOKE USAGE,CREATE ON SCHEMA tpcds FROM tpcds_manager; +openGauss=# DROP ROLE tpcds_manager; +openGauss=# DROP ROLE senior_manager; +openGauss=# DROP USER joe CASCADE; +``` + +## 相关链接 + +[REVOKE](REVOKE.md),[ALTER DEFAULT PRIVILEGES](ALTER-DEFAULT-PRIVILEGES.md) + diff --git a/content/zh/docs/Developerguide/GS_ASP.md b/content/zh/docs/Developerguide/GS_ASP.md index 8d4f887e8..13a439392 100644 --- a/content/zh/docs/Developerguide/GS_ASP.md +++ b/content/zh/docs/Developerguide/GS_ASP.md @@ -1,209 +1,209 @@ -# GS\_ASP - -GS\_ASP显示被持久化的ACTIVE SESSION PROFILE样本。 - -**表 1** GS\_ASP字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sampleid

-

bigint

-

采样ID。

-

sample_time

-

timestamp with time zone

-

采样的时间。

-

need_flush_sample

-

boolean

-

该样本是否需要刷新到磁盘。

-
  • t(true):表示需要。
  • f(false):表示不需要。
-

databaseid

-

oid

-

数据库ID。

-

thread_id

-

bigint

-

线程的ID。

-

sessionid

-

bigint

-

会话的ID。

-

start_time

-

timestamp with time zone

-

会话的启动时间。

-

event

-

text

-

具体的事件名称。

-

lwtid

-

integer

-

当前线程的轻量级线程号。

-

psessionid

-

bigint

-

streaming线程的父线程。

-

tlevel

-

integer

-

streaming线程的层级。与执行计划的层级(id)相对应。

-

smpid

-

integer

-

smp执行模式下并行线程的并行编号。

-

userid

-

oid

-

session用户的id。

-

application_name

-

text

-

应用的名字。

-

client_addr

-

inet

-

client端的地址。

-

client_hostname

-

text

-

client端的名字。

-

client_port

-

integer

-

客户端用于与后端通讯的TCP端口号。

-

query_id

-

bigint

-

debug query id。

-

unique_query_id

-

bigint

-

unique query id。

-

user_id

-

oid

-

unique query的key中的user_id。

-

cn_id

-

integer

-

表示下发该unique sql的节点id。unique query的key中的cn_id。

-

unique_query

-

text

-

-规范化后的Unique SQL文本串。

-

locktag

-

text

-

会话等待锁信息,可通过locktag_decode解析。

-

lockmode

-

text

-

会话等待锁模式:

-
  • LW_EXCLUSIVE:排他锁
  • LW_SHARED:共享锁
  • LW_WAIT_UNTIL_FREE:等待LW_EXCLUSIVE可用
-

block_sessionid

-

bigint

-

如果会话正在等待锁,阻塞该会话获取锁的会话标识。

-

wait_status

-

text

-

描述event列的更多详细信息。

-

global_sessionid

-

text

-

全局会话ID。

-
- +# GS\_ASP + +GS\_ASP显示被持久化的 ACTIVE SESSION PROFILE 样本。 + +**表 1** GS\_ASP字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sampleid

+

bigint

+

采样 ID 。

+

sample_time

+

timestamp with time zone

+

采样的时间。

+

need_flush_sample

+

boolean

+

该样本是否需要刷新到磁盘。

+
  • t(true):表示需要。
  • f(false):表示不需要。
+

databaseid

+

oid

+

数据库 ID 。

+

thread_id

+

bigint

+

线程的 ID 。

+

sessionid

+

bigint

+

会话的 ID 。

+

start_time

+

timestamp with time zone

+

会话的启动时间。

+

event

+

text

+

具体的事件名称。

+

lwtid

+

integer

+

当前线程的轻量级线程号。

+

psessionid

+

bigint

+

streaming线程的父线程。

+

tlevel

+

integer

+

streaming线程的层级。与执行计划的层级(id)相对应。

+

smpid

+

integer

+

smp执行模式下并行线程的并行编号。

+

userid

+

oid

+

session用户的 id 。

+

application_name

+

text

+

应用的名字。

+

client_addr

+

inet

+

client端的地址。

+

client_hostname

+

text

+

client端的名字。

+

client_port

+

integer

+

客户端用于与后端通讯的 TCP 端口号。

+

query_id

+

bigint

+

debug query id。

+

unique_query_id

+

bigint

+

unique query id。

+

user_id

+

oid

+

unique query的 key 中的 user_id 。

+

cn_id

+

integer

+

表示下发该 unique sql 的节点 id 。 unique query 的 key 中的 cn_id 。

+

unique_query

+

text

+

-规范化后的 Unique SQL 文本串。

+

locktag

+

text

+

会话等待锁信息,可通过 locktag_decode 解析。

+

lockmode

+

text

+

会话等待锁模式:

+
  • LW_EXCLUSIVE:排他锁
  • LW_SHARED:共享锁
  • LW_WAIT_UNTIL_FREE:等待 LW_EXCLUSIVE 可用
+

block_sessionid

+

bigint

+

如果会话正在等待锁,阻塞该会话获取锁的会话标识。

+

wait_status

+

text

+

描述 event 列的更多详细信息。

+

global_sessionid

+

text

+

全局会话 ID 。

+
+ diff --git a/content/zh/docs/Developerguide/GS_AUDITING.md b/content/zh/docs/Developerguide/GS_AUDITING.md index f9eeea42c..d5dfa47de 100644 --- a/content/zh/docs/Developerguide/GS_AUDITING.md +++ b/content/zh/docs/Developerguide/GS_AUDITING.md @@ -1,69 +1,69 @@ -# GS\_AUDITING - -GS\_AUDITING视图显示对数据库相关操作的所有审计信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 - -**表 1** GS\_AUDITING字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

polname

-

name

-

策略名称,需要唯一,不可重复。

-

pol_type

-

text

-

审计策略类型,值为‘access’或者‘privilege’。

-
  • access:表示审计DML操作。
  • privilege:表示审计DDL操作。
-

polenabled

-

boolean

-

用来表示策略启动开关。

-
  • t(true):表示启动。
  • f(false):表示不启动。
-

access_type

-

bigint

-

DML数据库操作相关类型。例如SELECT、INSERT、DELETE等。

-

label_name

-

name

-

资源标签名称。对应系统表gs_auditing_policy中的polname字段。

-

priv_object

-

name

-

用来描述数据库资产的路径。

-

filter_name

-

text

-

过滤条件的逻辑字符串。

-
- +# GS\_AUDITING + +GS\_AUDITING视图显示对数据库相关操作的所有审计信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 + +**表 1** GS\_AUDITING字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

polname

+

name

+

策略名称,需要唯一,不可重复。

+

pol_type

+

text

+

审计策略类型,值为‘access’或者‘privilege’。

+
  • access:表示审计 DML 操作。
  • privilege:表示审计 DDL 操作。
+

polenabled

+

boolean

+

用来表示策略启动开关。

+
  • t(true):表示启动。
  • f(false):表示不启动。
+

access_type

+

bigint

+

DML数据库操作相关类型。例如SELECT、INSERT、DELETE等。

+

label_name

+

name

+

资源标签名称。对应系统表 gs_auditing_policy 中的 polname 字段。

+

priv_object

+

name

+

用来描述数据库资产的路径。

+

filter_name

+

text

+

过滤条件的逻辑字符串。

+
+ diff --git a/content/zh/docs/Developerguide/GS_AUDITING_ACCESS.md b/content/zh/docs/Developerguide/GS_AUDITING_ACCESS.md index 6229e8e67..0a7841a8c 100644 --- a/content/zh/docs/Developerguide/GS_AUDITING_ACCESS.md +++ b/content/zh/docs/Developerguide/GS_AUDITING_ACCESS.md @@ -1,67 +1,67 @@ -# GS\_AUDITING\_ACCESS - -GS\_AUDITING\_ACCESS视图显示对数据库DML相关操作的所有审计信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 - -**表 1** GS\_AUDITING\_ACCESS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

polname

-

name

-

策略名称,需要唯一,不可重复。

-

pol_type

-

text

-

审计策略类型,值为‘access’,表示审计DML操作。

-

polenabled

-

boolean

-

用来表示策略启动开关。

-

access_type

-

name

-

DML数据库操作相关类型。例如SELECT、INSERT、DELETE等。

-

label_name

-

name

-

资源标签名称。对应系统表gs_auditing_policy中的polname字段。

-

access_object

-

text

-

用来描述数据库资产的路径。

-

filter_name

-

text

-

过滤条件的逻辑字符串。

-
- +# GS\_AUDITING\_ACCESS + +GS\_AUDITING\_ACCESS视图显示对数据库 DML 相关操作的所有审计信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 + +**表 1** GS\_AUDITING\_ACCESS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

polname

+

name

+

策略名称,需要唯一,不可重复。

+

pol_type

+

text

+

审计策略类型,值为‘access’,表示审计 DML 操作。

+

polenabled

+

boolean

+

用来表示策略启动开关。

+

access_type

+

name

+

DML数据库操作相关类型。例如SELECT、INSERT、DELETE等。

+

label_name

+

name

+

资源标签名称。对应系统表 gs_auditing_policy 中的 polname 字段。

+

access_object

+

text

+

用来描述数据库资产的路径。

+

filter_name

+

text

+

过滤条件的逻辑字符串。

+
+ diff --git a/content/zh/docs/Developerguide/GS_AUDITING_POLICY.md b/content/zh/docs/Developerguide/GS_AUDITING_POLICY.md index c76f4f87d..85411c897 100644 --- a/content/zh/docs/Developerguide/GS_AUDITING_POLICY.md +++ b/content/zh/docs/Developerguide/GS_AUDITING_POLICY.md @@ -1,53 +1,53 @@ -# GS\_AUDITING\_POLICY - -GS\_AUDITING\_POLICY系统表记录统一审计的主体信息,每条记录对应一个设计策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 - -**表 1** GS\_AUDITING\_POLICY字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

polname

-

name

-

策略名称,需要唯一,不可重复。

-

polcomments

-

name

-

策略描述字段,记录策略相关的描述信息,通过COMMENTS关键字体现。

-

modifydate

-

timestamp without time zone

-

策略创建或修改的最新时间戳。

-

polenabled

-

boolean

-

用来表示策略启动开关。

-
- +# GS\_AUDITING\_POLICY + +GS\_AUDITING\_POLICY系统表记录统一审计的主体信息,每条记录对应一个设计策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 + +**表 1** GS\_AUDITING\_POLICY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

polname

+

name

+

策略名称,需要唯一,不可重复。

+

polcomments

+

name

+

策略描述字段,记录策略相关的描述信息,通过 COMMENTS 关键字体现。

+

modifydate

+

timestamp without time zone

+

策略创建或修改的最新时间戳。

+

polenabled

+

boolean

+

用来表示策略启动开关。

+
+ diff --git a/content/zh/docs/Developerguide/GS_AUDITING_POLICY_ACCESS.md b/content/zh/docs/Developerguide/GS_AUDITING_POLICY_ACCESS.md index 7ad2d9105..f7d7cadd2 100644 --- a/content/zh/docs/Developerguide/GS_AUDITING_POLICY_ACCESS.md +++ b/content/zh/docs/Developerguide/GS_AUDITING_POLICY_ACCESS.md @@ -1,53 +1,53 @@ -# GS\_AUDITING\_POLICY\_ACCESS - -GS\_AUDITING\_POLICY\_ACCESS系统表记录与DML数据库相关操作的统一审计信息。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 - -**表 1** GS\_AUDITING\_POLICY\_ACCESS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

accesstype

-

name

-

DML数据库操作相关类型。例如SELECT、INSERT、DELETE等。

-

labelname

-

name

-

资源标签名称。对应系统表gs_auditing_policy中的polname字段。

-

policyoid

-

oid

-

所属审计策略的oid,对应系统表GS_AUDITING_POLICY中的oid。

-

modifydate

-

timestamp without time zone

-

创建或修改的最新时间戳。

-
- +# GS\_AUDITING\_POLICY\_ACCESS + +GS\_AUDITING\_POLICY\_ACCESS系统表记录与 DML 数据库相关操作的统一审计信息。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 + +**表 1** GS\_AUDITING\_POLICY\_ACCESS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

accesstype

+

name

+

DML数据库操作相关类型。例如SELECT、INSERT、DELETE等。

+

labelname

+

name

+

资源标签名称。对应系统表 gs_auditing_policy 中的 polname 字段。

+

policyoid

+

oid

+

所属审计策略的 oid ,对应系统表 GS_AUDITING_POLICY 中的 oid 。

+

modifydate

+

timestamp without time zone

+

创建或修改的最新时间戳。

+
+ diff --git a/content/zh/docs/Developerguide/GS_AUDITING_POLICY_FILTERS.md b/content/zh/docs/Developerguide/GS_AUDITING_POLICY_FILTERS.md index fc6d35687..5e59f81c3 100644 --- a/content/zh/docs/Developerguide/GS_AUDITING_POLICY_FILTERS.md +++ b/content/zh/docs/Developerguide/GS_AUDITING_POLICY_FILTERS.md @@ -1,60 +1,60 @@ -# GS\_AUDITING\_POLICY\_FILTERS - -GS\_AUDITING\_POLICY\_FILTERS系统表记录统一审计相关的过滤策略相关信息,每条记录对应一个设计策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 - -**表 1** GS\_AUDITING\_POLICY\_FILTERS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

filtertype

-

name

-

过滤类型。目前值仅为logical_expr。

-

labelname

-

name

-

名称。目前值仅为logical_expr。

-

policyoid

-

oid

-

所属审计策略的oid,对应系统表GS_AUDITING_POLICY中的oid。

-

modifydate

-

timestamp

-

创建或修改的最新时间戳。

-

logicaloperator

-

text

-

过滤条件的逻辑字符串。

-
- +# GS\_AUDITING\_POLICY\_FILTERS + +GS\_AUDITING\_POLICY\_FILTERS系统表记录统一审计相关的过滤策略相关信息,每条记录对应一个设计策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 + +**表 1** GS\_AUDITING\_POLICY\_FILTERS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

filtertype

+

name

+

过滤类型。目前值仅为 logical_expr 。

+

labelname

+

name

+

名称。目前值仅为 logical_expr 。

+

policyoid

+

oid

+

所属审计策略的 oid ,对应系统表 GS_AUDITING_POLICY 中的 oid 。

+

modifydate

+

timestamp

+

创建或修改的最新时间戳。

+

logicaloperator

+

text

+

过滤条件的逻辑字符串。

+
+ diff --git a/content/zh/docs/Developerguide/GS_AUDITING_POLICY_PRIVILEGES.md b/content/zh/docs/Developerguide/GS_AUDITING_POLICY_PRIVILEGES.md index 3859c7c94..9742c4a76 100644 --- a/content/zh/docs/Developerguide/GS_AUDITING_POLICY_PRIVILEGES.md +++ b/content/zh/docs/Developerguide/GS_AUDITING_POLICY_PRIVILEGES.md @@ -1,53 +1,53 @@ -# GS\_AUDITING\_POLICY\_PRIVILEGES - -GS\_AUDITING\_POLICY\_PRIVILEGES系统表记录统一审计DDL数据库相关操作信息,每条记录对应一个设计策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 - -**表 1** GS\_AUDITING\_POLICY\_PRIVI字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

privilegetype

-

name

-

DDL数据库操作相关类型。例如CREATE、ALTER、DROP等。

-

labelname

-

name

-

资源标签名称。对应系统表gs_auditing_policy中的polname字段。

-

policyoid

-

oid

-

对应审计策略系统表GS_AUDITING_POLICY中的oid。

-

modifydate

-

timestamp

-

创建或修改的最新时间戳。

-
- +# GS\_AUDITING\_POLICY\_PRIVILEGES + +GS\_AUDITING\_POLICY\_PRIVILEGES系统表记录统一审计 DDL 数据库相关操作信息,每条记录对应一个设计策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 + +**表 1** GS\_AUDITING\_POLICY\_PRIVI字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

privilegetype

+

name

+

DDL数据库操作相关类型。例如CREATE、ALTER、DROP等。

+

labelname

+

name

+

资源标签名称。对应系统表 gs_auditing_policy 中的 polname 字段。

+

policyoid

+

oid

+

对应审计策略系统表 GS_AUDITING_POLICY 中的 oid 。

+

modifydate

+

timestamp

+

创建或修改的最新时间戳。

+
+ diff --git a/content/zh/docs/Developerguide/GS_AUDITING_PRIVILEGE.md b/content/zh/docs/Developerguide/GS_AUDITING_PRIVILEGE.md index 5ad1c186e..6b787c9f0 100644 --- a/content/zh/docs/Developerguide/GS_AUDITING_PRIVILEGE.md +++ b/content/zh/docs/Developerguide/GS_AUDITING_PRIVILEGE.md @@ -1,65 +1,65 @@ -# GS\_AUDITING\_PRIVILEGE - -GS\_AUDITING\_PRIVILEGE视图显示对数据库DDL相关操作的所有审计信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

polname

-

name

-

策略名称,需要唯一,不可重复。

-

pol_type

-

text

-

审计策略类型,值为‘privilege’,表示审计DDL 操作。

-

polenabled

-

boolean

-

用来表示策略启动开关。

-

access_type

-

name

-

DDL数据库操作相关类型。例如CREATE、ALTER、DROP等。

-

label_name

-

name

-

资源标签名称。对应系统表gs_auditing_policy中的polname字段。

-

priv_object

-

text

-

带有数据库对象的全称域名。

-

filter_name

-

text

-

过滤条件的逻辑字符串。

-
- +# GS\_AUDITING\_PRIVILEGE + +GS\_AUDITING\_PRIVILEGE视图显示对数据库 DDL 相关操作的所有审计信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

polname

+

name

+

策略名称,需要唯一,不可重复。

+

pol_type

+

text

+

审计策略类型,值为‘privilege’,表示审计 DDL 操作。

+

polenabled

+

boolean

+

用来表示策略启动开关。

+

access_type

+

name

+

DDL数据库操作相关类型。例如CREATE、ALTER、DROP等。

+

label_name

+

name

+

资源标签名称。对应系统表 gs_auditing_policy 中的 polname 字段。

+

priv_object

+

text

+

带有数据库对象的全称域名。

+

filter_name

+

text

+

过滤条件的逻辑字符串。

+
+ diff --git a/content/zh/docs/Developerguide/GS_CLIENT_GLOBAL_KEYS.md b/content/zh/docs/Developerguide/GS_CLIENT_GLOBAL_KEYS.md index f6e4efe20..87863087f 100644 --- a/content/zh/docs/Developerguide/GS_CLIENT_GLOBAL_KEYS.md +++ b/content/zh/docs/Developerguide/GS_CLIENT_GLOBAL_KEYS.md @@ -1,60 +1,60 @@ -# GS\_CLIENT\_GLOBAL\_KEYS - -GS\_CLIENT\_GLOBAL\_KEYS系统表记录密态等值特性中客户端加密主密钥相关信息,每条记录对应一个客户端加密主密钥。 - -**表 1** GS\_CLIENT\_GLOBAL\_KEYS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐含字段)。

-

global_key_name

-

name

-

客户端加密主密钥(cmk)名称。

-

key_namespace

-

oid

-

包含此客户端加密主密钥(cmk)的命名空间oid。

-

key_owner

-

oid

-

客户端加密主密钥(cmk)的所有者。

-

key_acl

-

aclitem[]

-

创建该密钥时所拥有的访问权限。

-

create_date

-

timestamp

-

创建密钥的时间。

-
- +# GS\_CLIENT\_GLOBAL\_KEYS + +GS\_CLIENT\_GLOBAL\_KEYS系统表记录密态等值特性中客户端加密主密钥相关信息,每条记录对应一个客户端加密主密钥。 + +**表 1** GS\_CLIENT\_GLOBAL\_KEYS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐含字段)。

+

global_key_name

+

name

+

客户端加密主密钥(cmk)名称。

+

key_namespace

+

oid

+

包含此客户端加密主密钥(cmk)的命名空间 oid 。

+

key_owner

+

oid

+

客户端加密主密钥(cmk)的所有者。

+

key_acl

+

aclitem[]

+

创建该密钥时所拥有的访问权限。

+

create_date

+

timestamp

+

创建密钥的时间。

+
+ diff --git a/content/zh/docs/Developerguide/GS_CLIENT_GLOBAL_KEYS_ARGS.md b/content/zh/docs/Developerguide/GS_CLIENT_GLOBAL_KEYS_ARGS.md index e57bdaa87..8ecf3ac44 100644 --- a/content/zh/docs/Developerguide/GS_CLIENT_GLOBAL_KEYS_ARGS.md +++ b/content/zh/docs/Developerguide/GS_CLIENT_GLOBAL_KEYS_ARGS.md @@ -1,53 +1,53 @@ -# GS\_CLIENT\_GLOBAL\_KEYS\_ARGS - -GS\_CLIENT\_GLOBAL\_KEYS\_ARGS系统表记录密态等值特性中客户端加密主密钥相关元数据信息,每条记录对应客户端加密主密钥的一个键值对信息。 - -**表 1** GS\_CLIENT\_GLOBAL\_KEYS\_ARGS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐含字段)。

-

global_key_id

-

oid

-

客户端加密主密钥(cmk)oid。

-

function_name

-

name

-

值为encryption。

-

key

-

name

-

客户端加密主密钥(cmk)的元数据信息对应的名称。

-

value

-

bytea

-

客户端加密主密钥(cmk)的元数据信息名称的值。

-
- +# GS\_CLIENT\_GLOBAL\_KEYS\_ARGS + +GS\_CLIENT\_GLOBAL\_KEYS\_ARGS系统表记录密态等值特性中客户端加密主密钥相关元数据信息,每条记录对应客户端加密主密钥的一个键值对信息。 + +**表 1** GS\_CLIENT\_GLOBAL\_KEYS\_ARGS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐含字段)。

+

global_key_id

+

oid

+

客户端加密主密钥(cmk)oid。

+

function_name

+

name

+

值为 encryption 。

+

key

+

name

+

客户端加密主密钥(cmk)的元数据信息对应的名称。

+

value

+

bytea

+

客户端加密主密钥(cmk)的元数据信息名称的值。

+
+ diff --git a/content/zh/docs/Developerguide/GS_CLUSTER_RESOURCE_INFO.md b/content/zh/docs/Developerguide/GS_CLUSTER_RESOURCE_INFO.md index 776115ddc..ca5c4d673 100644 --- a/content/zh/docs/Developerguide/GS_CLUSTER_RESOURCE_INFO.md +++ b/content/zh/docs/Developerguide/GS_CLUSTER_RESOURCE_INFO.md @@ -1,67 +1,67 @@ -# GS\_CLUSTER\_RESOURCE\_INFO - -GS\_CLUSTER\_RESOURCE\_INFO视图显示的是所有DN资源的汇总信息。该视图需要设置enable\_dynamic\_workload=on才能查询,并且该视图不支持在DN执行。查询该视图需要sysadmin权限。 - -**表 1** GS\_CLUSTER\_RESOURCE\_INFO字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

min_mem_util

-

integer

-

DN最小内存使用率。

-

max_mem_util

-

integer

-

DN最大内存使用率。

-

min_cpu_util

-

integer

-

DN最小CPU使用率。

-

max_cpu_util

-

integer

-

DN最大CPU使用率。

-

min_io_util

-

integer

-

DN最小IO使用率。

-

max_io_util

-

integer

-

DN最大IO使用率。

-

used_mem_rate

-

integer

-

物理节点最大内存使用率。

-
- +# GS\_CLUSTER\_RESOURCE\_INFO + +GS\_CLUSTER\_RESOURCE\_INFO视图显示的是所有 DN 资源的汇总信息。该视图需要设置enable\_dynamic\_workload=on才能查询,并且该视图不支持在 DN 执行。查询该视图需要 sysadmin 权限。 + +**表 1** GS\_CLUSTER\_RESOURCE\_INFO字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

min_mem_util

+

integer

+

DN最小内存使用率。

+

max_mem_util

+

integer

+

DN最大内存使用率。

+

min_cpu_util

+

integer

+

DN最小 CPU 使用率。

+

max_cpu_util

+

integer

+

DN最大 CPU 使用率。

+

min_io_util

+

integer

+

DN最小 IO 使用率。

+

max_io_util

+

integer

+

DN最大 IO 使用率。

+

used_mem_rate

+

integer

+

物理节点最大内存使用率。

+
+ diff --git a/content/zh/docs/Developerguide/GS_COLUMN_KEYS.md b/content/zh/docs/Developerguide/GS_COLUMN_KEYS.md index ae3132919..e4eed8eb9 100644 --- a/content/zh/docs/Developerguide/GS_COLUMN_KEYS.md +++ b/content/zh/docs/Developerguide/GS_COLUMN_KEYS.md @@ -1,74 +1,74 @@ -# GS\_COLUMN\_KEYS - -GS\_COLUMN\_KEYS系统表记录密态等值特性中列加密密钥相关信息,每条记录对应一个列加密密钥。 - -**表 1** GS\_COLUMN\_KEYS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐含字段)。

-

column_key_name

-

name

-

列加密密钥(cek)名称。

-

column_key_distributed_id

-

oid

-

根据加密密钥(cek)全称域名hash值得到的id。

-

global_key_id

-

oid

-

外键。客户端加密主密钥(cmk)的oid。

-

key_namespace

-

oid

-

包含此列加密密钥(cek)的命名空间oid。

-

key_owner

-

oid

-

列加密密钥(cek)的所有者。

-

create_date

-

timestamp

-

创建列加密密钥的时间。

-

key_acl

-

aclitem[]

-

创建该列加密密钥时所拥有的访问权限。

-
- +# GS\_COLUMN\_KEYS + +GS\_COLUMN\_KEYS系统表记录密态等值特性中列加密密钥相关信息,每条记录对应一个列加密密钥。 + +**表 1** GS\_COLUMN\_KEYS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐含字段)。

+

column_key_name

+

name

+

列加密密钥(cek)名称。

+

column_key_distributed_id

+

oid

+

根据加密密钥(cek)全称域名 hash 值得到的 id 。

+

global_key_id

+

oid

+

外键。客户端加密主密钥(cmk)的 oid 。

+

key_namespace

+

oid

+

包含此列加密密钥(cek)的命名空间 oid 。

+

key_owner

+

oid

+

列加密密钥(cek)的所有者。

+

create_date

+

timestamp

+

创建列加密密钥的时间。

+

key_acl

+

aclitem[]

+

创建该列加密密钥时所拥有的访问权限。

+
+ diff --git a/content/zh/docs/Developerguide/GS_COLUMN_KEYS_ARGS.md b/content/zh/docs/Developerguide/GS_COLUMN_KEYS_ARGS.md index 1161b3eeb..f20c11502 100644 --- a/content/zh/docs/Developerguide/GS_COLUMN_KEYS_ARGS.md +++ b/content/zh/docs/Developerguide/GS_COLUMN_KEYS_ARGS.md @@ -1,53 +1,53 @@ -# GS\_COLUMN\_KEYS\_ARGS - -GS\_COLUMN\_KEYS\_ARGS系统表记录密态等值特性中客户端加密主密钥相关元数据信息,每条记录对应客户端加密主密钥的一个键值对信息。 - -**表 1** GS\_COLUMN\_KEYS\_ARGS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐含字段)。

-

column_key_id

-

oid

-

列加密密钥(cek)oid。

-

function_name

-

name

-

值为encryption。

-

key

-

name

-

列加密密钥(cek)的元数据信息对应的名称。

-

value

-

bytea

-

列加密密钥(cek)的元数据信息名称的值。

-
- +# GS\_COLUMN\_KEYS\_ARGS + +GS\_COLUMN\_KEYS\_ARGS系统表记录密态等值特性中客户端加密主密钥相关元数据信息,每条记录对应客户端加密主密钥的一个键值对信息。 + +**表 1** GS\_COLUMN\_KEYS\_ARGS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐含字段)。

+

column_key_id

+

oid

+

列加密密钥(cek)oid。

+

function_name

+

name

+

值为 encryption 。

+

key

+

name

+

列加密密钥(cek)的元数据信息对应的名称。

+

value

+

bytea

+

列加密密钥(cek)的元数据信息名称的值。

+
+ diff --git a/content/zh/docs/Developerguide/GS_ENCRYPTED_COLUMNS.md b/content/zh/docs/Developerguide/GS_ENCRYPTED_COLUMNS.md index a883da0b7..e7c6df2ba 100644 --- a/content/zh/docs/Developerguide/GS_ENCRYPTED_COLUMNS.md +++ b/content/zh/docs/Developerguide/GS_ENCRYPTED_COLUMNS.md @@ -1,74 +1,74 @@ -# GS\_ENCRYPTED\_COLUMNS - -GS\_ENCRYPTED\_COLUMNS系统表记录密态等值特性中表的加密列相关信息,每条记录对应一条加密列信息。 - -**表 1** GS\_ENCRYPTED\_COLUMNS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐含字段)。

-

rel_id

-

oid

-

表的OID。

-

column_name

-

name

-

加密列的名称。

-

column_key_id

-

oid

-

外键,列加密密钥的OID。

-

encryption_type

-

int1

-

加密类型,取值为2(DETERMINISTIC)或者1(RANDOMIZED)。

-

data_type_original_oid

-

oid

-

加密列的原始数据类型id,参考系统表PG_TYPE中的oid。

-

data_type_original_mod

-

int4

-

加密列的原始数据类型修饰符,参考系统表PG_ATTRIBUTE中的atttypmod。其值对那些不需要的类型data_type_original_mod通常为-1。

-

create_date

-

timestamp

-

创建加密列的时间。

-
- +# GS\_ENCRYPTED\_COLUMNS + +GS\_ENCRYPTED\_COLUMNS系统表记录密态等值特性中表的加密列相关信息,每条记录对应一条加密列信息。 + +**表 1** GS\_ENCRYPTED\_COLUMNS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐含字段)。

+

rel_id

+

oid

+

表的 OID 。

+

column_name

+

name

+

加密列的名称。

+

column_key_id

+

oid

+

外键,列加密密钥的 OID 。

+

encryption_type

+

int1

+

加密类型,取值为2(DETERMINISTIC)或者1(RANDOMIZED)。

+

data_type_original_oid

+

oid

+

加密列的原始数据类型 id ,参考系统表PG_TYPE中的 oid 。

+

data_type_original_mod

+

int4

+

加密列的原始数据类型修饰符,参考系统表PG_ATTRIBUTE中的 atttypmod 。其值对那些不需要的类型 data_type_original_mod 通常为-1。

+

create_date

+

timestamp

+

创建加密列的时间。

+
+ diff --git a/content/zh/docs/Developerguide/GS_ENCRYPTED_PROC.md b/content/zh/docs/Developerguide/GS_ENCRYPTED_PROC.md index 77d33e3aa..5a72454a1 100644 --- a/content/zh/docs/Developerguide/GS_ENCRYPTED_PROC.md +++ b/content/zh/docs/Developerguide/GS_ENCRYPTED_PROC.md @@ -1,52 +1,52 @@ -# GS\_ENCRYPTED\_PROC - -GS\_ENCRYPTED\_PROC系统表提供了密态函数/存储过程函数参数、返回值的原始数据类型,加密列等信息。 - -**表 1** GS\_ENCRYPTED\_PROC字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐含字段)。

-

func_id

-

oid

-

function的oid,对应pg_proc系统表中的oid行标识符。

-

prorettype_orig

-

int4

-

返回值的原始数据类型。

-

proargcachedcol

-

oidvector

-

函数INPUT参数对应的加密列的oid,对应gs_encrypted_columns系统表中的oid行标识符。

-

proallargtypes_orig

-

oid[]

-

所有函数参数的原始数据类型。

-
+# GS\_ENCRYPTED\_PROC + +GS\_ENCRYPTED\_PROC系统表提供了密态函数/存储过程函数参数、返回值的原始数据类型,加密列等信息。 + +**表 1** GS\_ENCRYPTED\_PROC字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐含字段)。

+

func_id

+

oid

+

function的 oid ,对应 pg_proc 系统表中的 oid 行标识符。

+

prorettype_orig

+

int4

+

返回值的原始数据类型。

+

proargcachedcol

+

oidvector

+

函数 INPUT 参数对应的加密列的 oid ,对应 gs_encrypted_columns 系统表中的 oid 行标识符。

+

proallargtypes_orig

+

oid[]

+

所有函数参数的原始数据类型。

+
diff --git a/content/zh/docs/Developerguide/GS_FILE_STAT.md b/content/zh/docs/Developerguide/GS_FILE_STAT.md index 53a691415..fe23ed9ea 100644 --- a/content/zh/docs/Developerguide/GS_FILE_STAT.md +++ b/content/zh/docs/Developerguide/GS_FILE_STAT.md @@ -1,109 +1,109 @@ -# GS\_FILE\_STAT - -GS\_FILE\_STAT视图通过对数据文件IO的统计,反映数据的IO性能,用以发现IO操作异常等性能问题。 - -**表 1** GS\_FILE\_STAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

filenum

-

oid

-

文件标识。

-

dbid

-

oid

-

数据库标识。

-

spcid

-

oid

-

表空间标识。

-

phyrds

-

bigint

-

读物理文件的数目。

-

phywrts

-

bigint

-

写物理文件的数目。

-

phyblkrd

-

bigint

-

读物理文件块的数目。

-

phyblkwrt

-

bigint

-

写物理文件块的数目。

-

readtim

-

bigint

-

读文件的总时长,单位微秒。

-

writetim

-

bigint

-

写文件的总时长,单位微秒。

-

avgiotim

-

bigint

-

读写文件的平均时长,单位微秒。

-

lstiotim

-

bigint

-

最后一次读文件时长,单位微秒。

-

miniotim

-

bigint

-

读写文件的最小时长,单位微秒。

-

maxiowtm

-

bigint

-

读写文件的最大时长,单位微秒。

-
- +# GS\_FILE\_STAT + +GS\_FILE\_STAT视图通过对数据文件 IO 的统计,反映数据的 IO 性能,用以发现 IO 操作异常等性能问题。 + +**表 1** GS\_FILE\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

filenum

+

oid

+

文件标识。

+

dbid

+

oid

+

数据库标识。

+

spcid

+

oid

+

表空间标识。

+

phyrds

+

bigint

+

读物理文件的数目。

+

phywrts

+

bigint

+

写物理文件的数目。

+

phyblkrd

+

bigint

+

读物理文件块的数目。

+

phyblkwrt

+

bigint

+

写物理文件块的数目。

+

readtim

+

bigint

+

读文件的总时长,单位微秒。

+

writetim

+

bigint

+

写文件的总时长,单位微秒。

+

avgiotim

+

bigint

+

读写文件的平均时长,单位微秒。

+

lstiotim

+

bigint

+

最后一次读文件时长,单位微秒。

+

miniotim

+

bigint

+

读写文件的最小时长,单位微秒。

+

maxiowtm

+

bigint

+

读写文件的最大时长,单位微秒。

+
+ diff --git a/content/zh/docs/Developerguide/GS_GLOBAL_CHAIN.md b/content/zh/docs/Developerguide/GS_GLOBAL_CHAIN.md index 7e5e718b5..896aa60eb 100644 --- a/content/zh/docs/Developerguide/GS_GLOBAL_CHAIN.md +++ b/content/zh/docs/Developerguide/GS_GLOBAL_CHAIN.md @@ -1,95 +1,95 @@ -# GS\_GLOBAL\_CHAIN - -GS\_GLOBAL\_CHAIN系统表记录用户对防篡改用户表的修改操作信息,每条记录对应一次表级修改操作。具有审计管理员权限的用户可以查询此系统表,所有用户均不允许修改此系统表。 - -**表 1** GS\_GLOBAL\_CHAIN字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

blocknum

-

bigint

-

区块号,当前用户操作在账本中记录的序号。

-

dbname

-

name

-

数据库名称。被修改的防篡改用户表所属的database。

-

username

-

name

-

用户名,执行用户表修改操作的用户名。

-

starttime

-

timestamp with time zone

-

用户操作执行的最新时间戳。

-

relid

-

oid

-

用户表Oid,被修改的防篡改用户表Oid。

-

relnsp

-

name

-

模式Oid,被修改的防篡改用户表所属的namesapce oid。

-

relname

-

name

-

用户表名,被修改的防篡改用户表名。

-

relhash

-

hash16

-

当前操作产生的表级别hash变化量。

-

globalhash

-

hash32

-

全局摘要,由当前行信息与前一行globalhash计算而来,将整个表串联起来,用于验证GS_GLOBAL_CHAIN数据完整性。

-

txcommand

-

text

-

被记录操作的SQL语句。

-
- +# GS\_GLOBAL\_CHAIN + +GS\_GLOBAL\_CHAIN系统表记录用户对防篡改用户表的修改操作信息,每条记录对应一次表级修改操作。具有审计管理员权限的用户可以查询此系统表,所有用户均不允许修改此系统表。 + +**表 1** GS\_GLOBAL\_CHAIN字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

blocknum

+

bigint

+

区块号,当前用户操作在账本中记录的序号。

+

dbname

+

name

+

数据库名称。被修改的防篡改用户表所属的 database 。

+

username

+

name

+

用户名,执行用户表修改操作的用户名。

+

starttime

+

timestamp with time zone

+

用户操作执行的最新时间戳。

+

relid

+

oid

+

用户表 Oid ,被修改的防篡改用户表 Oid 。

+

relnsp

+

name

+

模式 Oid ,被修改的防篡改用户表所属的 namesapce oid 。

+

relname

+

name

+

用户表名,被修改的防篡改用户表名。

+

relhash

+

hash16

+

当前操作产生的表级别 hash 变化量。

+

globalhash

+

hash32

+

全局摘要,由当前行信息与前一行 globalhash 计算而来,将整个表串联起来,用于验证 GS_GLOBAL_CHAIN 数据完整性。

+

txcommand

+

text

+

被记录操作的 SQL 语句。

+
+ diff --git a/content/zh/docs/Developerguide/GS_GLOBAL_CONFIG.md b/content/zh/docs/Developerguide/GS_GLOBAL_CONFIG.md index f619f5091..abd60b70b 100644 --- a/content/zh/docs/Developerguide/GS_GLOBAL_CONFIG.md +++ b/content/zh/docs/Developerguide/GS_GLOBAL_CONFIG.md @@ -1,32 +1,32 @@ -# GS\_GLOBAL\_CONFIG - -GS\_GLOBAL\_CONFIG记录了数据库实例初始化时,用户指定的参数值。除此之外,还存放了用户设置的弱口令。 - -**表 1** GS\_GLOBAL\_CONFIG字段 - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

name

-

name

-

数据库实例初始化时系统内置的指定参数名称。当前版本第一行默认为buckets_len,第二行起存放弱口令名称。

-

value

-

text

-

数据库实例初始化时系统内置的指定参数值。当前版本第一行默认为bucketmap长度;第二行起存放弱口令。

-
- +# GS\_GLOBAL\_CONFIG + +GS\_GLOBAL\_CONFIG记录了数据库实例初始化时,用户指定的参数值。除此之外,还存放了用户设置的弱口令。 + +**表 1** GS\_GLOBAL\_CONFIG字段 + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

name

+

name

+

数据库实例初始化时系统内置的指定参数名称。当前版本第一行默认为 buckets_len ,第二行起存放弱口令名称。

+

value

+

text

+

数据库实例初始化时系统内置的指定参数值。当前版本第一行默认为 bucketmap 长度;第二行起存放弱口令。

+
+ diff --git a/content/zh/docs/Developerguide/GS_INSTANCE_TIME.md b/content/zh/docs/Developerguide/GS_INSTANCE_TIME.md index 6d221075f..125f33b41 100644 --- a/content/zh/docs/Developerguide/GS_INSTANCE_TIME.md +++ b/content/zh/docs/Developerguide/GS_INSTANCE_TIME.md @@ -1,49 +1,49 @@ -# GS\_INSTANCE\_TIME - -提供当前集节点下的各种时间消耗信息,主要分为以下类型: - -- DB\_TIME:作业在多核下的有效时间花销。 -- CPU\_TIME:CPU的时间花销。 -- EXECUTION\_TIME:执行器内的时间花销。 -- PARSE\_TIME:SQL解析的时间花销。 -- PLAN\_TIME:生成Plan的时间花销。 -- REWRITE\_TIME:SQL重写的时间花销。 -- PL\_EXECUTION\_TIME:plpgsql(存储过程)执行的时间花销。 -- PL\_COMPILATION\_TIME:plpgsql(存储过程)编译的时间花销。 -- NET\_SEND\_TIME:网络上的时间花销。 -- DATA\_IO\_TIME:IO的时间花销。 - -**表 1** GS\_INSTANCE\_TIME字段 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

stat_id

-

integer

-

统计编号。

-

stat_name

-

text

-

类型名称。

-

value

-

bigint

-

时间值(单位:微秒)。

-
+# GS\_INSTANCE\_TIME + +提供当前集节点下的各种时间消耗信息,主要分为以下类型: + +- DB\_TIME:作业在多核下的有效时间花销。 +- CPU\_TIME:CPU的时间花销。 +- EXECUTION\_TIME:执行器内的时间花销。 +- PARSE\_TIME:SQL解析的时间花销。 +- PLAN\_TIME:生成 Plan 的时间花销。 +- REWRITE\_TIME:SQL重写的时间花销。 +- PL\_EXECUTION\_TIME:plpgsql(存储过程)执行的时间花销。 +- PL\_COMPILATION\_TIME:plpgsql(存储过程)编译的时间花销。 +- NET\_SEND\_TIME:网络上的时间花销。 +- DATA\_IO\_TIME:IO的时间花销。 + +**表 1** GS\_INSTANCE\_TIME字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

stat_id

+

integer

+

统计编号。

+

stat_name

+

text

+

类型名称。

+

value

+

bigint

+

时间值(单位:微秒)。

+
diff --git a/content/zh/docs/Developerguide/GS_LABELS.md b/content/zh/docs/Developerguide/GS_LABELS.md index 527493c30..e7c9023a7 100644 --- a/content/zh/docs/Developerguide/GS_LABELS.md +++ b/content/zh/docs/Developerguide/GS_LABELS.md @@ -1,58 +1,58 @@ -# GS\_LABELS - -GS\_LABELS视图显示所有已配置的资源标签信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

labelname

-

name

-

资源标签的名称。

-

labeltype

-

name

-

资源标签的类型。对应系统表GS_POLICY_LABEL中的labeltype字段。

-

fqdntype

-

name

-

数据库资源的类型。如table、schema、index等。

-

schemaname

-

name

-

数据库资源所属的schema名称。

-

fqdnname

-

name

-

数据库资源名称。

-

columnname

-

name

-

数据库资源列名称,若标记的数据库资源不为表的列则该项为空。

-
- +# GS\_LABELS + +GS\_LABELS视图显示所有已配置的资源标签信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

labelname

+

name

+

资源标签的名称。

+

labeltype

+

name

+

资源标签的类型。对应系统表GS_POLICY_LABEL中的 labeltype 字段。

+

fqdntype

+

name

+

数据库资源的类型。如table、schema、index等。

+

schemaname

+

name

+

数据库资源所属的 schema 名称。

+

fqdnname

+

name

+

数据库资源名称。

+

columnname

+

name

+

数据库资源列名称,若标记的数据库资源不为表的列则该项为空。

+
+ diff --git a/content/zh/docs/Developerguide/GS_MASKING.md b/content/zh/docs/Developerguide/GS_MASKING.md index 5922f9670..44ab2c911 100644 --- a/content/zh/docs/Developerguide/GS_MASKING.md +++ b/content/zh/docs/Developerguide/GS_MASKING.md @@ -1,58 +1,58 @@ -# GS\_MASKING - -GS\_MASKING视图显示所有已配置的动态脱敏策略信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

polname

-

name

-

脱敏策略名称。

-

polenabled

-

boolean

-

脱敏策略开关。

-

maskaction

-

name

-

脱敏函数。

-

labelname

-

name

-

脱敏函数作用的标签名称。

-

masking_object

-

text

-

脱敏数据库资源对象。

-

filter_name

-

text

-

过滤条件的逻辑表达式。

-
- +# GS\_MASKING + +GS\_MASKING视图显示所有已配置的动态脱敏策略信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

polname

+

name

+

脱敏策略名称。

+

polenabled

+

boolean

+

脱敏策略开关。

+

maskaction

+

name

+

脱敏函数。

+

labelname

+

name

+

脱敏函数作用的标签名称。

+

masking_object

+

text

+

脱敏数据库资源对象。

+

filter_name

+

text

+

过滤条件的逻辑表达式。

+
+ diff --git a/content/zh/docs/Developerguide/GS_MASKING_POLICY.md b/content/zh/docs/Developerguide/GS_MASKING_POLICY.md index 903c0bd8d..9a3c0c7e9 100644 --- a/content/zh/docs/Developerguide/GS_MASKING_POLICY.md +++ b/content/zh/docs/Developerguide/GS_MASKING_POLICY.md @@ -1,53 +1,53 @@ -# GS\_MASKING\_POLICY - -GS\_MASKING\_POLICY系统表记录动态数据脱敏策略的主体信息,每条记录对应一个脱敏策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 - -**表 1** GS\_MASKING\_POLICY表字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

polname

-

name

-

策略名称,唯一不可重复。

-

polcomments

-

name

-

策略描述字段,记录策略相关的描述信息,通过COMMENTS关键字体现。

-

modifydate

-

timestamp

-

策略创建或修改的最新时间戳。

-

polenabled

-

Boolean

-

策略启动开关。

-
- +# GS\_MASKING\_POLICY + +GS\_MASKING\_POLICY系统表记录动态数据脱敏策略的主体信息,每条记录对应一个脱敏策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 + +**表 1** GS\_MASKING\_POLICY表字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

polname

+

name

+

策略名称,唯一不可重复。

+

polcomments

+

name

+

策略描述字段,记录策略相关的描述信息,通过 COMMENTS 关键字体现。

+

modifydate

+

timestamp

+

策略创建或修改的最新时间戳。

+

polenabled

+

Boolean

+

策略启动开关。

+
+ diff --git a/content/zh/docs/Developerguide/GS_MASKING_POLICY_ACTIONS.md b/content/zh/docs/Developerguide/GS_MASKING_POLICY_ACTIONS.md index 318fbf33c..28bcb7bc3 100644 --- a/content/zh/docs/Developerguide/GS_MASKING_POLICY_ACTIONS.md +++ b/content/zh/docs/Developerguide/GS_MASKING_POLICY_ACTIONS.md @@ -1,60 +1,60 @@ -# GS\_MASKING\_POLICY\_ACTIONS - -GS\_MASKING\_POLICY\_ACTIONS系统表记录动态数据脱敏策略中相应的脱敏策略包含的脱敏行为,一个脱敏策略对应着该表的一行或多行记录。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 - -**表 1** GS\_MASKING\_POLICY\_ACTIONS表字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

actiontype

-

name

-

脱敏函数,标识脱敏策略使用的脱敏函数。

-

actparams

-

name

-

向脱敏函数中传递的参数信息。

-

actlabelname

-

name

-

被脱敏的label名称。

-

policyoid

-

oid

-

该条记录所属的脱敏策略oid,对应GS_MASKING_POLICY中的oid。

-

modifydate

-

timestamp

-

该条记录创建或修改的最新时间戳。

-
- +# GS\_MASKING\_POLICY\_ACTIONS + +GS\_MASKING\_POLICY\_ACTIONS系统表记录动态数据脱敏策略中相应的脱敏策略包含的脱敏行为,一个脱敏策略对应着该表的一行或多行记录。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 + +**表 1** GS\_MASKING\_POLICY\_ACTIONS表字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

actiontype

+

name

+

脱敏函数,标识脱敏策略使用的脱敏函数。

+

actparams

+

name

+

向脱敏函数中传递的参数信息。

+

actlabelname

+

name

+

被脱敏的 label 名称。

+

policyoid

+

oid

+

该条记录所属的脱敏策略 oid ,对应GS_MASKING_POLICY中的 oid 。

+

modifydate

+

timestamp

+

该条记录创建或修改的最新时间戳。

+
+ diff --git a/content/zh/docs/Developerguide/GS_MASKING_POLICY_FILTERS.md b/content/zh/docs/Developerguide/GS_MASKING_POLICY_FILTERS.md index 234e3393f..44d1a9000 100644 --- a/content/zh/docs/Developerguide/GS_MASKING_POLICY_FILTERS.md +++ b/content/zh/docs/Developerguide/GS_MASKING_POLICY_FILTERS.md @@ -1,60 +1,60 @@ -# GS\_MASKING\_POLICY\_FILTERS - -GS\_MASKING\_POLICY\_FILTERS系统表记录动态数据脱敏策略对应的用户过滤条件,当用户条件满足FILTER条件时,对应的脱敏策略才会生效。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 - -**表 1** GS\_MASKING\_POLICY\_FILTERS表字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

filtertype

-

name

-

过滤类型。目前值仅为logical_expr。

-

filterlabelname

-

name

-

过滤范围。目前值仅为logical_expr。

-

policyoid

-

oid

-

该条用户过滤条件所属的脱敏策略oid,对应GS_MASKING_POLICY中的oid。

-

modifydate

-

timestamp

-

该条用户过滤条件创建或修改的最新时间戳。

-

logicaloperator

-

text

-

过滤条件的波兰表达式。

-
- +# GS\_MASKING\_POLICY\_FILTERS + +GS\_MASKING\_POLICY\_FILTERS系统表记录动态数据脱敏策略对应的用户过滤条件,当用户条件满足 FILTER 条件时,对应的脱敏策略才会生效。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 + +**表 1** GS\_MASKING\_POLICY\_FILTERS表字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

filtertype

+

name

+

过滤类型。目前值仅为 logical_expr 。

+

filterlabelname

+

name

+

过滤范围。目前值仅为 logical_expr 。

+

policyoid

+

oid

+

该条用户过滤条件所属的脱敏策略 oid ,对应GS_MASKING_POLICY中的 oid 。

+

modifydate

+

timestamp

+

该条用户过滤条件创建或修改的最新时间戳。

+

logicaloperator

+

text

+

过滤条件的波兰表达式。

+
+ diff --git a/content/zh/docs/Developerguide/GS_MATVIEW.md b/content/zh/docs/Developerguide/GS_MATVIEW.md index 3371444f3..53e25f78d 100644 --- a/content/zh/docs/Developerguide/GS_MATVIEW.md +++ b/content/zh/docs/Developerguide/GS_MATVIEW.md @@ -1,60 +1,60 @@ -# GS\_MATVIEW - -GS\_MATVIEW系统表提供了关于数据库中每一个物化视图的信息。 - -**表 1** GS\_MATVIEW字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

matviewid

-

oid

-

物化视图的oid。

-

mapid

-

oid

-

物化视图map表的oid,map表为物化视图关联表,与物化视图一一对应。全量物化视图不存在对应的map表,该字段为0。

-

ivm

-

boolean

-

物化视图的类型,t为增量物化视图,f为全量物化视图。

-

needrefresh

-

boolean

-

保留字段。

-

refreshtime

-

timestamp

-

物化视图上一次刷新时间,若未刷新则为null。仅对增量物化视图维护该字段,全量物化视图为null。

-
- +# GS\_MATVIEW + +GS\_MATVIEW系统表提供了关于数据库中每一个物化视图的信息。 + +**表 1** GS\_MATVIEW字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

matviewid

+

oid

+

物化视图的 oid 。

+

mapid

+

oid

+

物化视图 map 表的 oid , map 表为物化视图关联表,与物化视图一一对应。全量物化视图不存在对应的 map 表,该字段为 0 。

+

ivm

+

boolean

+

物化视图的类型, t 为增量物化视图, f 为全量物化视图。

+

needrefresh

+

boolean

+

保留字段。

+

refreshtime

+

timestamp

+

物化视图上一次刷新时间,若未刷新则为 null 。仅对增量物化视图维护该字段,全量物化视图为 null 。

+
+ diff --git a/content/zh/docs/Developerguide/GS_MATVIEWS.md b/content/zh/docs/Developerguide/GS_MATVIEWS.md index 02f845a70..05e2b8353 100644 --- a/content/zh/docs/Developerguide/GS_MATVIEWS.md +++ b/content/zh/docs/Developerguide/GS_MATVIEWS.md @@ -1,74 +1,74 @@ -# GS\_MATVIEWS - -GS\_MATVIEWS视图提供了关于数据库中每一个物化视图的信息。 - -**表 1** GS\_MATVIEWS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

schemaname

-

name

-

PG_NAMESPACE.nspname

-

物化视图的模式名。

-

matviewname

-

name

-

PG_CLASS.relname

-

物化视图名。

-

matviewowner

-

name

-

PG_AUTHID.Erolname

-

物化视图的所有者。

-

tablespace

-

name

-

PG_TABLESPACE.spcname

-

物化视图的表空间名(如果使用数据库默认表空间则为空)。

-

hasindexes

-

boolean

-

-

-

如果物化视图有(或者最近有过)任何索引,则此列为真。

-

definition

-

text

-

-

-

物化视图的定义(一个重构的SELECT查询)。

-
- +# GS\_MATVIEWS + +GS\_MATVIEWS视图提供了关于数据库中每一个物化视图的信息。 + +**表 1** GS\_MATVIEWS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

schemaname

+

name

+

PG_NAMESPACE.nspname

+

物化视图的模式名。

+

matviewname

+

name

+

PG_CLASS.relname

+

物化视图名。

+

matviewowner

+

name

+

PG_AUTHID.Erolname

+

物化视图的所有者。

+

tablespace

+

name

+

PG_TABLESPACE.spcname

+

物化视图的表空间名(如果使用数据库默认表空间则为空)。

+

hasindexes

+

boolean

+

-

+

如果物化视图有(或者最近有过)任何索引,则此列为真。

+

definition

+

text

+

-

+

物化视图的定义(一个重构的 SELECT 查询)。

+
+ diff --git a/content/zh/docs/Developerguide/GS_MATVIEW_DEPENDENCY.md b/content/zh/docs/Developerguide/GS_MATVIEW_DEPENDENCY.md index 72d875f6c..c4da279d8 100644 --- a/content/zh/docs/Developerguide/GS_MATVIEW_DEPENDENCY.md +++ b/content/zh/docs/Developerguide/GS_MATVIEW_DEPENDENCY.md @@ -1,53 +1,53 @@ -# GS\_MATVIEW\_DEPENDENCY - -GS\_MATVIEW\_DEPENDENCY系统表提供了关于数据库中每一个增量物化视图、基表和mlog表的关联信息。全量物化视图不存在与基表对应的mlog表,不会写入记录。 - -**表 1** GS\_MATVIEW\_DEPENDENCY字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

matviewid

-

oid

-

物化视图的oid。

-

relid

-

oid

-

物化视图基表的oid。

-

mlogid

-

oid

-

物化视图mlog表的oid,mlog表为物化视图日志表,与基表一一对应。

-

mxmin

-

int4

-

保留字段。

-
- +# GS\_MATVIEW\_DEPENDENCY + +GS\_MATVIEW\_DEPENDENCY系统表提供了关于数据库中每一个增量物化视图、基表和 mlog 表的关联信息。全量物化视图不存在与基表对应的 mlog 表,不会写入记录。 + +**表 1** GS\_MATVIEW\_DEPENDENCY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

matviewid

+

oid

+

物化视图的 oid 。

+

relid

+

oid

+

物化视图基表的 oid 。

+

mlogid

+

oid

+

物化视图 mlog 表的 oid , mlog 表为物化视图日志表,与基表一一对应。

+

mxmin

+

int4

+

保留字段。

+
+ diff --git a/content/zh/docs/Developerguide/GS_MODEL_WAREHOUSE.md b/content/zh/docs/Developerguide/GS_MODEL_WAREHOUSE.md index 66c15378c..b6fe2c08e 100644 --- a/content/zh/docs/Developerguide/GS_MODEL_WAREHOUSE.md +++ b/content/zh/docs/Developerguide/GS_MODEL_WAREHOUSE.md @@ -1,179 +1,179 @@ -# GS\_MODEL\_WAREHOUSE - -GS\_MODEL\_WAREHOUSE系统表用于存储AI引擎训练模型,其中包含模型,训练过程的详细描述。 - -**表 1** GS\_MODEL\_WAREHOUSE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

数据类型

-

描述

-

oid

-

oid

-

隐藏列。

-

modelname

-

name

-

唯一约束。

-

modelowner

-

oid

-

模型拥有者的OID。

-

createtime

-

timestamp

-

模型创建的时间。

-

processedtuples

-

int

-

训练涉及的元组数。

-

discardedtuples

-

int

-

未参加训练的不合格元组数。

-

preprocesstime

-

real

-

数据预处理时长。

-

exectime

-

real

-

训练时长。

-

iterations

-

int

-

迭代轮次。

-

outputtype

-

oid

-

模型输出的数据类型OID。

-

modeltype

-

text

-

AI算子的类型名称。

-

query

-

text

-

创建模型所执行的query语句。

-

modeldata

-

bytea

-

保存的二进制模型信息。

-

weight

-

real[]

-

目前只适用于GD算子模型。

-

hyperparametersnames

-

text[]

-

涉及的超参名称。

-

hyperparametersvalues

-

text[]

-

超参所对应的取值。

-

hyperparametersoids

-

oid[]

-

超参对应的数据类型OID。

-

coefnames

-

text[]

-

模型参数名称。

-

coefvalues

-

text[]

-

模型参数对应的取值。

-

coefoids

-

oid[]

-

模型参数对应的数据类型OID。

-

trainingscoresname

-

text[]

-

度量模型性能方法的名称。

-

trainingscoresvalue

-

real[]

-

度量模型性能方法的数值。

-

modeldescribe

-

text[]

-

模型的描述信息。

-
- +# GS\_MODEL\_WAREHOUSE + +GS\_MODEL\_WAREHOUSE系统表用于存储 AI 引擎训练模型,其中包含模型,训练过程的详细描述。 + +**表 1** GS\_MODEL\_WAREHOUSE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

数据类型

+

描述

+

oid

+

oid

+

隐藏列。

+

modelname

+

name

+

唯一约束。

+

modelowner

+

oid

+

模型拥有者的 OID 。

+

createtime

+

timestamp

+

模型创建的时间。

+

processedtuples

+

int

+

训练涉及的元组数。

+

discardedtuples

+

int

+

未参加训练的不合格元组数。

+

preprocesstime

+

real

+

数据预处理时长。

+

exectime

+

real

+

训练时长。

+

iterations

+

int

+

迭代轮次。

+

outputtype

+

oid

+

模型输出的数据类型 OID 。

+

modeltype

+

text

+

AI算子的类型名称。

+

query

+

text

+

创建模型所执行的 query 语句。

+

modeldata

+

bytea

+

保存的二进制模型信息。

+

weight

+

real[]

+

目前只适用于 GD 算子模型。

+

hyperparametersnames

+

text[]

+

涉及的超参名称。

+

hyperparametersvalues

+

text[]

+

超参所对应的取值。

+

hyperparametersoids

+

oid[]

+

超参对应的数据类型 OID 。

+

coefnames

+

text[]

+

模型参数名称。

+

coefvalues

+

text[]

+

模型参数对应的取值。

+

coefoids

+

oid[]

+

模型参数对应的数据类型 OID 。

+

trainingscoresname

+

text[]

+

度量模型性能方法的名称。

+

trainingscoresvalue

+

real[]

+

度量模型性能方法的数值。

+

modeldescribe

+

text[]

+

模型的描述信息。

+
+ diff --git a/content/zh/docs/Developerguide/GS_OPT_MODEL.md b/content/zh/docs/Developerguide/GS_OPT_MODEL.md index b91f8fd67..3b2a07f5e 100644 --- a/content/zh/docs/Developerguide/GS_OPT_MODEL.md +++ b/content/zh/docs/Developerguide/GS_OPT_MODEL.md @@ -1,145 +1,145 @@ -# GS\_OPT\_MODEL - -GS\_OPT\_MODEL是启用AiEngine执行计划时间预测功能时的数据表,记录机器学习模型的配置、训练结果、功能、对应系统函数、训练历史等相关信息。 - -**表 1** GS\_OPT\_MODEL字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

数据库对象id。

-

template_name

-

name

-

机器学习模型的模板名,决定训练和预测调用的函数接口,目前只实现了rlstm,方便后续扩展。

-

model_name

-

name

-

模型的实例名,每个模型对应aiEngine在线学习进程中的一套参数、训练日志、模型系数。此列需为unique。

-

datname

-

name

-

该模型所服务的database名,每个模型只针对单个database。此参数决定训练时所使用的数据。

-

ip

-

name

-

AiEngine端所部署的host ip地址。

-

port

-

integer

-

AiEngine端所侦听的端口号。

-

max_epoch

-

integer

-

模型每次训练的迭代次数上限。

-

learning_rate

-

real

-

模型训练的学习速率,推荐缺省值1。

-

dim_red

-

real

-

模型特征维度降维系数。

-

hidden_units

-

integer

-

模型隐藏层神经元个数。如果训练发现模型长期无法收敛,可以适量提升本参数。

-

batch_size

-

integer

-

模型每次迭代时一个batch的大小,尽量设为大于等于训练数据总量的值,加快模型的收敛速度。

-

feature_size

-

integer

-

[不需设置] 模型特征的长度,用于触发重新训练,模型训练后该参数自动更新。

-

available

-

boolean

-

[不需设置]标识模型是否收敛。

-

Is_training

-

boolean

-

[不需设置]标识模型是否正在训练。

-

label

-

"char"[]

-

模型的目标任务:

-
  • S:startup time。
  • T:total time。
  • R:rows。
  • M:peak memory。
-

目前受模型性能限制,推荐{S, T}或{R}。

-

max

-

bigint[]

-

[不需设置]标识模型各任务标签的最大值,用于触发重新训练。

-

acc

-

real[]

-

[不需设置]标识模型各任务的准确率。

-

description

-

text

-

模型注释。

-
+# GS\_OPT\_MODEL + +GS\_OPT\_MODEL是启用 AiEngine 执行计划时间预测功能时的数据表,记录机器学习模型的配置、训练结果、功能、对应系统函数、训练历史等相关信息。 + +**表 1** GS\_OPT\_MODEL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

数据库对象 id 。

+

template_name

+

name

+

机器学习模型的模板名,决定训练和预测调用的函数接口,目前只实现了 rlstm ,方便后续扩展。

+

model_name

+

name

+

模型的实例名,每个模型对应 aiEngine 在线学习进程中的一套参数、训练日志、模型系数。此列需为 unique 。

+

datname

+

name

+

该模型所服务的 database 名,每个模型只针对单个 database 。此参数决定训练时所使用的数据。

+

ip

+

name

+

AiEngine端所部署的 host ip 地址。

+

port

+

integer

+

AiEngine端所侦听的端口号。

+

max_epoch

+

integer

+

模型每次训练的迭代次数上限。

+

learning_rate

+

real

+

模型训练的学习速率,推荐缺省值 1 。

+

dim_red

+

real

+

模型特征维度降维系数。

+

hidden_units

+

integer

+

模型隐藏层神经元个数。如果训练发现模型长期无法收敛,可以适量提升本参数。

+

batch_size

+

integer

+

模型每次迭代时一个 batch 的大小,尽量设为大于等于训练数据总量的值,加快模型的收敛速度。

+

feature_size

+

integer

+

[不需设置] 模型特征的长度,用于触发重新训练,模型训练后该参数自动更新。

+

available

+

boolean

+

[不需设置]标识模型是否收敛。

+

Is_training

+

boolean

+

[不需设置]标识模型是否正在训练。

+

label

+

"char"[]

+

模型的目标任务:

+
  • S:startup time。
  • T:total time。
  • R:rows。
  • M:peak memory。
+

目前受模型性能限制,推荐{S, T}或{R}。

+

max

+

bigint[]

+

[不需设置]标识模型各任务标签的最大值,用于触发重新训练。

+

acc

+

real[]

+

[不需设置]标识模型各任务的准确率。

+

description

+

text

+

模型注释。

+
diff --git a/content/zh/docs/Developerguide/GS_OS_RUN_INFO.md b/content/zh/docs/Developerguide/GS_OS_RUN_INFO.md index 28933a9b1..873d78ff3 100644 --- a/content/zh/docs/Developerguide/GS_OS_RUN_INFO.md +++ b/content/zh/docs/Developerguide/GS_OS_RUN_INFO.md @@ -1,53 +1,53 @@ -# GS\_OS\_RUN\_INFO - -GS\_OS\_RUN\_INFO视图显示当前操作系统运行的状态信息。 - -**表 1** GS\_OS\_RUN\_INFO字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

id

-

integer

-

编号。

-

name

-

text

-

操作系统运行状态名称。

-

value

-

numeric

-

操作系统运行状态值。

-

comments

-

text

-

操作系统运行状态注释。

-

cumulative

-

Boolean

-

操作系统运行状态的值是否为累加值。

-
- +# GS\_OS\_RUN\_INFO + +GS\_OS\_RUN\_INFO视图显示当前操作系统运行的状态信息。 + +**表 1** GS\_OS\_RUN\_INFO字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

id

+

integer

+

编号。

+

name

+

text

+

操作系统运行状态名称。

+

value

+

numeric

+

操作系统运行状态值。

+

comments

+

text

+

操作系统运行状态注释。

+

cumulative

+

Boolean

+

操作系统运行状态的值是否为累加值。

+
+ diff --git a/content/zh/docs/Developerguide/GS_PACKAGE.md b/content/zh/docs/Developerguide/GS_PACKAGE.md index 1db32c584..7ef7ac867 100644 --- a/content/zh/docs/Developerguide/GS_PACKAGE.md +++ b/content/zh/docs/Developerguide/GS_PACKAGE.md @@ -1,74 +1,74 @@ -# GS\_PACKAGE - -GS\_PACKAGE系统表记录PACKAGE内的信息。 - -**表 1** GS\_PACKAGE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

pkgnamespace

-

oid

-

package所属schema。

-

pkgowner

-

oid

-

package的所属者。

-

pkgname

-

name

-

package的名字。

-

pkgspecsrc

-

text

-

package specification的内容。

-

pkgbodydeclsrc

-

text

-

package body的内容。

-

pkgbodyinitsrc

-

text

-

package init的内容。

-

pkgacl

-

aclitem

-

访问权限。

-
- +# GS\_PACKAGE + +GS\_PACKAGE系统表记录 PACKAGE 内的信息。 + +**表 1** GS\_PACKAGE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

pkgnamespace

+

oid

+

package所属 schema 。

+

pkgowner

+

oid

+

package的所属者。

+

pkgname

+

name

+

package的名字。

+

pkgspecsrc

+

text

+

package specification的内容。

+

pkgbodydeclsrc

+

text

+

package body的内容。

+

pkgbodyinitsrc

+

text

+

package init的内容。

+

pkgacl

+

aclitem

+

访问权限。

+
+ diff --git a/content/zh/docs/Developerguide/GS_POLICY_LABEL.md b/content/zh/docs/Developerguide/GS_POLICY_LABEL.md index 6bbd5d19b..e628f5233 100644 --- a/content/zh/docs/Developerguide/GS_POLICY_LABEL.md +++ b/content/zh/docs/Developerguide/GS_POLICY_LABEL.md @@ -1,68 +1,68 @@ -# GS\_POLICY\_LABEL - -GS\_POLICY\_LABEL系统表记录资源标签配置信息,一个资源标签对应着一条或多条记录,每条记录标记了数据库资源所属的资源标签。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 - -FQDN(Fully Qualified Domain Name)标识了数据库资源所属的绝对路径。 - -**表 1** GS\_POLICY\_LABEL表字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

labelname

-

name

-

资源标签名称。

-

labeltype

-

name

-

资源标签类型,目前仅为RESOURCE。

-

fqdnnamespace

-

oid

-

被标识的数据库资源所属的namespace oid。

-

fqdnid

-

oid

-

被标识的数据库资源的oid,若数据库资源为列,则该列为所属表的oid。

-

relcolumn

-

name

-

列名,若被标识的数据库资源为列,该列指出列名,否则该列为空。

-

fqdntype

-

name

-

被标识的数据库资源的类型名称,例如:schema、table、column、view等。

-
+# GS\_POLICY\_LABEL + +GS\_POLICY\_LABEL系统表记录资源标签配置信息,一个资源标签对应着一条或多条记录,每条记录标记了数据库资源所属的资源标签。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 + +FQDN(Fully Qualified Domain Name)标识了数据库资源所属的绝对路径。 + +**表 1** GS\_POLICY\_LABEL表字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

labelname

+

name

+

资源标签名称。

+

labeltype

+

name

+

资源标签类型,目前仅为 RESOURCE 。

+

fqdnnamespace

+

oid

+

被标识的数据库资源所属的 namespace oid 。

+

fqdnid

+

oid

+

被标识的数据库资源的 oid ,若数据库资源为列,则该列为所属表的 oid 。

+

relcolumn

+

name

+

列名,若被标识的数据库资源为列,该列指出列名,否则该列为空。

+

fqdntype

+

name

+

被标识的数据库资源的类型名称,例如:schema、table、column、view等。

+
diff --git a/content/zh/docs/Developerguide/GS_RECYCLEBIN.md b/content/zh/docs/Developerguide/GS_RECYCLEBIN.md index 6c2b6b76f..1d96e28b2 100644 --- a/content/zh/docs/Developerguide/GS_RECYCLEBIN.md +++ b/content/zh/docs/Developerguide/GS_RECYCLEBIN.md @@ -1,160 +1,160 @@ -# GS\_RECYCLEBIN - -gs\_recyclebin描述了回收站对象的详细信息。 - -**表 1** gs\_recyclebin字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

系统列。

-

rcybaseid

-

oid

-

基表对象id,引用gs_recyclebin.oid。

-

rcydbid

-

oid

-

当前对象所属数据库oid。

-

rcyrelid

-

oid

-

当前对象oid。

-

rcyname

-

name

-

回收站对象名称,格式“BIN$unique_id$oid$0”,其中unique_id为最多16字符唯一标识,oid为对象标识符。

-

rcyoriginname

-

name

-

原始对象名称。

-

rcyoperation

-

"char"

-

操作类型。

-
  • d表示drop。
  • t表示truncate。
-

rcytype

-

int

-

对象类型。

-
  • 0表示table。
  • 1表示index。
  • 2表示toast table。
  • 3表示toast index。
  • 4表示sequence,指serial、bigserial类型自动关联的序列对象。
-

rcyrecyclecsn

-

bigint

-

对象drop、truncate时csn。

-

rcyrecycletime

-

timestamptz

-

对象drop、truncate时间。

-

rcycreatecsn

-

bigint

-

对象创建时csn。

-

rcychangecsn

-

bigint

-

对象定义改变的csn。

-

rcynamespace

-

oid

-

包含这个关系的名字空间的OID。

-

rcyowner

-

oid

-

关系所有者。

-

rcytablespace

-

oid

-

这个关系存储所在的表空间。如果为0,则意味着使用该数据库的缺省表空间。如果关系在磁盘上没有文件,则这个字段没有什么意义。

-

rcyrelfilenode

-

oid

-

回收站对象在磁盘上的文件的名称,如果没有则为0,用于TRUNCATE对象恢复时纹理文件还原。

-

rcycanrestore

-

bool

-

是否可以被单独闪回。

-

rcycanpurge

-

bool

-

是否可以被单独purge。

-

rcyfrozenxid

-

xid32

-

该表中所有在这个之前的事务ID已经被一个固定的(“frozen”)事务ID替换。

-

rcyfrozenxid64

-

xid

-

该表中所有在这个之前的事务ID已经被一个固定的(“frozen”)事务ID替换。

-
- +# GS\_RECYCLEBIN + +gs\_recyclebin描述了回收站对象的详细信息。 + +**表 1** gs\_recyclebin字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

系统列。

+

rcybaseid

+

oid

+

基表对象 id ,引用gs_recyclebin.oid。

+

rcydbid

+

oid

+

当前对象所属数据库 oid 。

+

rcyrelid

+

oid

+

当前对象 oid 。

+

rcyname

+

name

+

回收站对象名称,格式“BIN$unique_id$oid$0”,其中 unique_id 为最多 16 字符唯一标识, oid 为对象标识符。

+

rcyoriginname

+

name

+

原始对象名称。

+

rcyoperation

+

"char"

+

操作类型。

+
  • d表示 drop 。
  • t表示 truncate 。
+

rcytype

+

int

+

对象类型。

+
  • 0表示 table 。
  • 1表示 index 。
  • 2表示 toast table 。
  • 3表示 toast index 。
  • 4表示 sequence ,指serial、bigserial类型自动关联的序列对象。
+

rcyrecyclecsn

+

bigint

+

对象drop、truncate时 csn 。

+

rcyrecycletime

+

timestamptz

+

对象drop、truncate时间。

+

rcycreatecsn

+

bigint

+

对象创建时 csn 。

+

rcychangecsn

+

bigint

+

对象定义改变的 csn 。

+

rcynamespace

+

oid

+

包含这个关系的名字空间的 OID 。

+

rcyowner

+

oid

+

关系所有者。

+

rcytablespace

+

oid

+

这个关系存储所在的表空间。如果为 0 ,则意味着使用该数据库的缺省表空间。如果关系在磁盘上没有文件,则这个字段没有什么意义。

+

rcyrelfilenode

+

oid

+

回收站对象在磁盘上的文件的名称,如果没有则为 0 ,用于 TRUNCATE 对象恢复时纹理文件还原。

+

rcycanrestore

+

bool

+

是否可以被单独闪回。

+

rcycanpurge

+

bool

+

是否可以被单独 purge 。

+

rcyfrozenxid

+

xid32

+

该表中所有在这个之前的事务 ID 已经被一个固定的(“frozen”)事务 ID 替换。

+

rcyfrozenxid64

+

xid

+

该表中所有在这个之前的事务 ID 已经被一个固定的(“frozen”)事务 ID 替换。

+
+ diff --git a/content/zh/docs/Developerguide/GS_REDO_STAT.md b/content/zh/docs/Developerguide/GS_REDO_STAT.md index 0f0e20478..bda6bf9e4 100644 --- a/content/zh/docs/Developerguide/GS_REDO_STAT.md +++ b/content/zh/docs/Developerguide/GS_REDO_STAT.md @@ -1,67 +1,67 @@ -# GS\_REDO\_STAT - -GS\_REDO\_STAT视图用于统计回话线程日志回放情况。 - -**表 1** GS\_REDO\_STAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

phywrts

-

bigint

-

日志回放过程中写数据的次数。

-

phyblkwrt

-

bigint

-

日志回放过程中写数据的块数。

-

writetim

-

bigint

-

日志回放过程中写数据所耗的总时间。

-

avgiotim

-

bigint

-

日志回放过程中写一次数据的平均消耗时间。

-

lstiotim

-

bigint

-

日志回放过程中最后一次写数据消耗的时间。

-

miniotim

-

bigint

-

日志回放过程中单次写数据消耗的最短时间。

-

maxiowtm

-

bigint

-

日志回放过程中单次写数据消耗的最长时间。

-
- +# GS\_REDO\_STAT + +GS\_REDO\_STAT视图用于统计回话线程日志回放情况。 + +**表 1** GS\_REDO\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

phywrts

+

bigint

+

日志回放过程中写数据的次数。

+

phyblkwrt

+

bigint

+

日志回放过程中写数据的块数。

+

writetim

+

bigint

+

日志回放过程中写数据所耗的总时间。

+

avgiotim

+

bigint

+

日志回放过程中写一次数据的平均消耗时间。

+

lstiotim

+

bigint

+

日志回放过程中最后一次写数据消耗的时间。

+

miniotim

+

bigint

+

日志回放过程中单次写数据消耗的最短时间。

+

maxiowtm

+

bigint

+

日志回放过程中单次写数据消耗的最长时间。

+
+ diff --git a/content/zh/docs/Developerguide/GS_SESSION_CPU_STATISTICS.md b/content/zh/docs/Developerguide/GS_SESSION_CPU_STATISTICS.md index 7584921f3..bcb8727ce 100644 --- a/content/zh/docs/Developerguide/GS_SESSION_CPU_STATISTICS.md +++ b/content/zh/docs/Developerguide/GS_SESSION_CPU_STATISTICS.md @@ -1,87 +1,87 @@ -# GS\_SESSION\_CPU\_STATISTICS - -GS\_SESSION\_CPU\_STATISTICS视图显示当前用户执行的正在运行的复杂作业的CPU使用的负载管理信息。 - -**表 1** GS\_SESSION\_CPU\_STATISTICS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

连接后端的数据库OID。

-

usename

-

name

-

登录到该后端的用户名。

-

pid

-

bigint

-

后端线程ID。

-

start_time

-

timestamp with time zone

-

语句执行的开始时间。

-

min_cpu_time

-

bigint

-

语句在数据库节点上的最小CPU时间,单位为ms。

-

max_cpu_time

-

bigint

-

语句在数据库节点上的最大CPU时间,单位为ms。

-

total_cpu_time

-

bigint

-

语句在数据库节点上的CPU总时间,单位为ms。

-

query

-

text

-

正在执行的语句。

-

node_group

-

text

-

该字段不支持。

-

top_cpu_dn

-

text

-

cpu使用量信息。

-
+# GS\_SESSION\_CPU\_STATISTICS + +GS\_SESSION\_CPU\_STATISTICS视图显示当前用户执行的正在运行的复杂作业的 CPU 使用的负载管理信息。 + +**表 1** GS\_SESSION\_CPU\_STATISTICS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据库 OID 。

+

usename

+

name

+

登录到该后端的用户名。

+

pid

+

bigint

+

后端线程 ID 。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

min_cpu_time

+

bigint

+

语句在数据库节点上的最小 CPU 时间,单位为 ms 。

+

max_cpu_time

+

bigint

+

语句在数据库节点上的最大 CPU 时间,单位为 ms 。

+

total_cpu_time

+

bigint

+

语句在数据库节点上的 CPU 总时间,单位为 ms 。

+

query

+

text

+

正在执行的语句。

+

node_group

+

text

+

该字段不支持。

+

top_cpu_dn

+

text

+

cpu使用量信息。

+
diff --git a/content/zh/docs/Developerguide/GS_SESSION_MEMORY.md b/content/zh/docs/Developerguide/GS_SESSION_MEMORY.md index 5b8cb1376..a6d108c4f 100644 --- a/content/zh/docs/Developerguide/GS_SESSION_MEMORY.md +++ b/content/zh/docs/Developerguide/GS_SESSION_MEMORY.md @@ -1,46 +1,46 @@ -# GS\_SESSION\_MEMORY - -GS\_SESSION\_MEMORY视图统计Session级别的内存使用情况,包含执行作业在数据节点上gaussdb线程和Stream线程分配的所有内存。当GUC参数enable\_memory\_limit的值为off时,本视图不可用。 - -**表 1** GS\_SESSION\_MEMORY字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sessid

-

text

-

线程启动时间+线程标识。

-

init_mem

-

integer

-

当前正在执行作业进入执行器前已分配的内存,单位MB。

-

used_mem

-

integer

-

当前正在执行作业已分配的内存,单位MB。

-

peak_mem

-

integer

-

当前正在执行作业已分配的内存峰值,单位MB。

-
- +# GS\_SESSION\_MEMORY + +GS\_SESSION\_MEMORY视图统计 Session 级别的内存使用情况,包含执行作业在数据节点上 gaussdb 线程和 Stream 线程分配的所有内存。当 GUC 参数enable\_memory\_limit的值为 off 时,本视图不可用。 + +**表 1** GS\_SESSION\_MEMORY字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

线程启动时间+线程标识。

+

init_mem

+

integer

+

当前正在执行作业进入执行器前已分配的内存,单位 MB 。

+

used_mem

+

integer

+

当前正在执行作业已分配的内存,单位 MB 。

+

peak_mem

+

integer

+

当前正在执行作业已分配的内存峰值,单位 MB 。

+
+ diff --git a/content/zh/docs/Developerguide/GS_SESSION_MEMORY_CONTEXT.md b/content/zh/docs/Developerguide/GS_SESSION_MEMORY_CONTEXT.md index ee7c27c2d..0498ad6a0 100644 --- a/content/zh/docs/Developerguide/GS_SESSION_MEMORY_CONTEXT.md +++ b/content/zh/docs/Developerguide/GS_SESSION_MEMORY_CONTEXT.md @@ -1,76 +1,76 @@ -# GS\_SESSION\_MEMORY\_CONTEXT - -GS\_SESSION\_MEMORY\_CONTEXT视图统计所有的会话的内存使用情况,以MemoryContext节点来统计。该视图仅在开启线程池(enable\_thread\_pool = on)时生效。当GUC参数enable\_memory\_limit的值为off时,本视图不可用。 - -其中内存上下文“TempSmallContextGroup”,记录当前线程中所有内存上下文字段“totalsize”小于8192字节的信息汇总,并且内存上下文统计计数记录到“usedsize”字段中。所以在视图中,“TempSmallContextGroup”内存上下文中的“totalsize”和“freesize”是该线程中所有内存上下文“totalsize”小于8192字节的汇总总和,usedsize字段表示统计的内存上下文个数。 - -**表 1** GS\_SESSION\_MEMORY\_CONTEXT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sessid

-

text

-

会话启动时间+会话标识(字符串信息为timestamp.sessionid)。

-

threadid

-

bigint

-

会话绑定的线程标识,如果未绑定线程,该值为-1。

-

contextname

-

text

-

内存上下文名称。

-

level

-

smallint

-

当前上下文在整体内存上下文中的层级。

-

parent

-

text

-

父内存上下文名称。

-

totalsize

-

bigint

-

当前内存上下文的内存总数,单位Byte。

-

freesize

-

bigint

-

当前内存上下文中已释放的内存总数,单位Byte。

-

usedsize

-

bigint

-

当前内存上下文中已使用的内存总数,单位Byte;“TempSmallContextGroup”内存上下文中该字段含义为统计计数。

-
- +# GS\_SESSION\_MEMORY\_CONTEXT + +GS\_SESSION\_MEMORY\_CONTEXT视图统计所有的会话的内存使用情况,以 MemoryContext 节点来统计。该视图仅在开启线程池(enable\_thread\_pool = on)时生效。当 GUC 参数enable\_memory\_limit的值为 off 时,本视图不可用。 + +其中内存上下文“TempSmallContextGroup”,记录当前线程中所有内存上下文字段“totalsize”小于 8192 字节的信息汇总,并且内存上下文统计计数记录到“usedsize”字段中。所以在视图中,“TempSmallContextGroup”内存上下文中的“totalsize”和“freesize”是该线程中所有内存上下文“totalsize”小于 8192 字节的汇总总和, usedsize 字段表示统计的内存上下文个数。 + +**表 1** GS\_SESSION\_MEMORY\_CONTEXT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

会话启动时间+会话标识(字符串信息为timestamp.sessionid)。

+

threadid

+

bigint

+

会话绑定的线程标识,如果未绑定线程,该值为-1。

+

contextname

+

text

+

内存上下文名称。

+

level

+

smallint

+

当前上下文在整体内存上下文中的层级。

+

parent

+

text

+

父内存上下文名称。

+

totalsize

+

bigint

+

当前内存上下文的内存总数,单位 Byte 。

+

freesize

+

bigint

+

当前内存上下文中已释放的内存总数,单位 Byte 。

+

usedsize

+

bigint

+

当前内存上下文中已使用的内存总数,单位Byte;“TempSmallContextGroup”内存上下文中该字段含义为统计计数。

+
+ diff --git a/content/zh/docs/Developerguide/GS_SESSION_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/GS_SESSION_MEMORY_DETAIL.md index 0fba253f0..4d77eb69b 100644 --- a/content/zh/docs/Developerguide/GS_SESSION_MEMORY_DETAIL.md +++ b/content/zh/docs/Developerguide/GS_SESSION_MEMORY_DETAIL.md @@ -1,78 +1,78 @@ -# GS\_SESSION\_MEMORY\_DETAIL - -GS\_SESSION\_MEMORY\_DETAIL统计会话的内存使用情况,以MemoryContext节点来统计。当开启线程池(enable\_thread\_pool = on)时,该视图包含所有的线程和会话的内存使用情况。当GUC参数enable\_memory\_limit的值为off时,本视图不可用。 - -其中内存上下文“TempSmallContextGroup”,记录当前线程中所有内存上下文字段“totalsize”小于8192字节的信息汇总,并且内存上下文统计计数记录到“usedsize”字段中。所以在视图中,“TempSmallContextGroup”内存上下文中的“totalsize”和“freesize”是该线程中所有内存上下文“totalsize”小于8192字节的汇总总和,usedsize字段表示统计的内存上下文个数。 - -可通过“select \* from gs\_session\_memctx\_detail\(threadid, ‘’\);”将某个线程所有内存上下文信息记录到“$GAUSSLOG/pg\_log/$\{node\_name\}/dumpmem”目录下的“threadid\_timestamp.log”文件中。其中threadid可通过下表sessid中获得。 - -**表 1** GS\_SESSION\_MEMORY\_DETAIL字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sessid

-

text

-

线程启动时间+线程标识(字符串信息为timestamp.threadid)。

-

sesstype

-

text

-

线程名称。

-

contextname

-

text

-

内存上下文名称。

-

level

-

smallint

-

当前上下文在整体内存上下文中的层级。

-

parent

-

text

-

父内存上下文名称。

-

totalsize

-

bigint

-

当前内存上下文的内存总数,单位Byte。

-

freesize

-

bigint

-

当前内存上下文中已释放的内存总数,单位Byte。

-

usedsize

-

bigint

-

当前内存上下文中已使用的内存总数,单位Byte;“TempSmallContextGroup”内存上下文中该字段含义为统计计数。

-
- +# GS\_SESSION\_MEMORY\_DETAIL + +GS\_SESSION\_MEMORY\_DETAIL统计会话的内存使用情况,以 MemoryContext 节点来统计。当开启线程池(enable\_thread\_pool = on)时,该视图包含所有的线程和会话的内存使用情况。当 GUC 参数enable\_memory\_limit的值为 off 时,本视图不可用。 + +其中内存上下文“TempSmallContextGroup”,记录当前线程中所有内存上下文字段“totalsize”小于 8192 字节的信息汇总,并且内存上下文统计计数记录到“usedsize”字段中。所以在视图中,“TempSmallContextGroup”内存上下文中的“totalsize”和“freesize”是该线程中所有内存上下文“totalsize”小于 8192 字节的汇总总和, usedsize 字段表示统计的内存上下文个数。 + +可通过“select \* from gs\_session\_memctx\_detail\(threadid, ‘’\);”将某个线程所有内存上下文信息记录到“$GAUSSLOG/pg\_log/$\{node\_name\}/dumpmem”目录下的“threadid\_timestamp.log”文件中。其中 threadid 可通过下表 sessid 中获得。 + +**表 1** GS\_SESSION\_MEMORY\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

线程启动时间+线程标识(字符串信息为timestamp.threadid)。

+

sesstype

+

text

+

线程名称。

+

contextname

+

text

+

内存上下文名称。

+

level

+

smallint

+

当前上下文在整体内存上下文中的层级。

+

parent

+

text

+

父内存上下文名称。

+

totalsize

+

bigint

+

当前内存上下文的内存总数,单位 Byte 。

+

freesize

+

bigint

+

当前内存上下文中已释放的内存总数,单位 Byte 。

+

usedsize

+

bigint

+

当前内存上下文中已使用的内存总数,单位Byte;“TempSmallContextGroup”内存上下文中该字段含义为统计计数。

+
+ diff --git a/content/zh/docs/Developerguide/GS_SESSION_MEMORY_STATISTICS.md b/content/zh/docs/Developerguide/GS_SESSION_MEMORY_STATISTICS.md index d90b5117d..d37bf292e 100644 --- a/content/zh/docs/Developerguide/GS_SESSION_MEMORY_STATISTICS.md +++ b/content/zh/docs/Developerguide/GS_SESSION_MEMORY_STATISTICS.md @@ -1,91 +1,91 @@ -# GS\_SESSION\_MEMORY\_STATISTICS - -GS\_SESSION\_MEMORY\_STATISTICS视图显示和当前用户执行复杂作业正在运行时的负载管理内存使用的信息。 - -**表 1** GS\_SESSION\_MEMORY\_STATISTICS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

连接后端的数据库OID。

-

usename

-

name

-

登录到该后端的用户名。

-

pid

-

bigint

-

后端线程ID。

-

start_time

-

timestamp with time zone

-

语句执行的开始时间。

-

min_peak_memory

-

integer

-

语句在数据库节点上的最小内存峰值大小,单位MB。

-

max_peak_memory

-

integer

-

语句在数据库节点上的最大内存峰值大小,单位MB。

-

spill_info

-

text

-

语句在数据库节点上的下盘信息:

-

None:数据库节点均未下盘。

-

All:数据库节点均下盘。

-

[a:b]:数量为b个数据库节点中有a个数据库节点下盘。

-

query

-

text

-

正在执行的语句。

-

node_group

-

text

-

该字段不支持。

-

top_mem_dn

-

text

-

mem使用量信息。

-
- +# GS\_SESSION\_MEMORY\_STATISTICS + +GS\_SESSION\_MEMORY\_STATISTICS视图显示和当前用户执行复杂作业正在运行时的负载管理内存使用的信息。 + +**表 1** GS\_SESSION\_MEMORY\_STATISTICS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据库 OID 。

+

usename

+

name

+

登录到该后端的用户名。

+

pid

+

bigint

+

后端线程 ID 。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

min_peak_memory

+

integer

+

语句在数据库节点上的最小内存峰值大小,单位 MB 。

+

max_peak_memory

+

integer

+

语句在数据库节点上的最大内存峰值大小,单位 MB 。

+

spill_info

+

text

+

语句在数据库节点上的下盘信息:

+

None:数据库节点均未下盘。

+

All:数据库节点均下盘。

+

[a:b]:数量为 b 个数据库节点中有 a 个数据库节点下盘。

+

query

+

text

+

正在执行的语句。

+

node_group

+

text

+

该字段不支持。

+

top_mem_dn

+

text

+

mem使用量信息。

+
+ diff --git a/content/zh/docs/Developerguide/GS_SESSION_STAT.md b/content/zh/docs/Developerguide/GS_SESSION_STAT.md index 61ed6245a..417560990 100644 --- a/content/zh/docs/Developerguide/GS_SESSION_STAT.md +++ b/content/zh/docs/Developerguide/GS_SESSION_STAT.md @@ -1,53 +1,53 @@ -# GS\_SESSION\_STAT - -GS\_SESSION\_STAT视图以会话线程或AutoVacuum线程为单位,统计会话状态信息。 - -**表 1** GS\_SESSION\_STAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sessid

-

text

-

线程标识+线程启动时间。

-

statid

-

integer

-

统计编号。

-

statname

-

text

-

统计会话名称。

-

statunit

-

text

-

统计会话单位。

-

value

-

bigint

-

统计会话值。

-
- +# GS\_SESSION\_STAT + +GS\_SESSION\_STAT视图以会话线程或 AutoVacuum 线程为单位,统计会话状态信息。 + +**表 1** GS\_SESSION\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

线程标识+线程启动时间。

+

statid

+

integer

+

统计编号。

+

statname

+

text

+

统计会话名称。

+

statunit

+

text

+

统计会话单位。

+

value

+

bigint

+

统计会话值。

+
+ diff --git a/content/zh/docs/Developerguide/GS_SESSION_TIME.md b/content/zh/docs/Developerguide/GS_SESSION_TIME.md index 9c03f57da..c7a525b19 100644 --- a/content/zh/docs/Developerguide/GS_SESSION_TIME.md +++ b/content/zh/docs/Developerguide/GS_SESSION_TIME.md @@ -1,46 +1,46 @@ -# GS\_SESSION\_TIME - -GS\_SESSION\_TIME视图用于统计会话线程的运行时间信息,及各执行阶段所消耗时间。 - -**表 1** GS\_SESSION\_TIME字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sessid

-

text

-

线程标识+线程启动时间。

-

stat_id

-

integer

-

统计编号。

-

stat_name

-

text

-

会话类型名称。

-

value

-

bigint

-

会话值。

-
- +# GS\_SESSION\_TIME + +GS\_SESSION\_TIME视图用于统计会话线程的运行时间信息,及各执行阶段所消耗时间。 + +**表 1** GS\_SESSION\_TIME字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

线程标识+线程启动时间。

+

stat_id

+

integer

+

统计编号。

+

stat_name

+

text

+

会话类型名称。

+

value

+

bigint

+

会话值。

+
+ diff --git a/content/zh/docs/Developerguide/GS_SHARED_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/GS_SHARED_MEMORY_DETAIL.md index d4a333e12..e6193f12c 100644 --- a/content/zh/docs/Developerguide/GS_SHARED_MEMORY_DETAIL.md +++ b/content/zh/docs/Developerguide/GS_SHARED_MEMORY_DETAIL.md @@ -1,60 +1,60 @@ -# GS_SHARED\_MEMORY\_DETAIL - -查询当前节点所有已产生的共享内存上下文的使用信息。 - -**表 1** GS_SHARED\_MEMORY\_DETAIL字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

contextname

-

text

-

内存上下文的名称。

-

level

-

smallint

-

内存上下文的级别。

-

parent

-

text

-

上级内存上下文。

-

totalsize

-

bigint

-

共享内存总大小(单位:字节)。

-

freesize

-

bigint

-

共享内存剩余大小(单位:字节)。

-

usedsize

-

bigint

-

共享内存使用大小(单位:字节)。

-
- +# GS_SHARED\_MEMORY\_DETAIL + +查询当前节点所有已产生的共享内存上下文的使用信息。 + +**表 1** GS_SHARED\_MEMORY\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

contextname

+

text

+

内存上下文的名称。

+

level

+

smallint

+

内存上下文的级别。

+

parent

+

text

+

上级内存上下文。

+

totalsize

+

bigint

+

共享内存总大小(单位:字节)。

+

freesize

+

bigint

+

共享内存剩余大小(单位:字节)。

+

usedsize

+

bigint

+

共享内存使用大小(单位:字节)。

+
+ diff --git "a/content/zh/docs/Developerguide/GS_SLOW_QUERY_HISTORY_\345\272\237\345\274\203.md" "b/content/zh/docs/Developerguide/GS_SLOW_QUERY_HISTORY_\345\272\237\345\274\203.md" index c32a46663..3dca51c2d 100644 --- "a/content/zh/docs/Developerguide/GS_SLOW_QUERY_HISTORY_\345\272\237\345\274\203.md" +++ "b/content/zh/docs/Developerguide/GS_SLOW_QUERY_HISTORY_\345\272\237\345\274\203.md" @@ -1,4 +1,4 @@ -# GS\_SLOW\_QUERY\_HISTORY(废弃) - -GS\_SLOW\_QUERY\_HISTORY显示当前节点上未转储的慢查询信息。具体字段信息请参考GS\_SLOW\_QUERY\_INFO。该视图只有system admin和monitor admin用户有权限查询,本版本中已废弃。 - +# GS\_SLOW\_QUERY\_HISTORY(废弃) + +GS\_SLOW\_QUERY\_HISTORY显示当前节点上未转储的慢查询信息。具体字段信息请参考GS\_SLOW\_QUERY\_INFO。该视图只有 system admin 和 monitor admin 用户有权限查询,本版本中已废弃。 + diff --git "a/content/zh/docs/Developerguide/GS_SLOW_QUERY_INFO_\345\272\237\345\274\203.md" "b/content/zh/docs/Developerguide/GS_SLOW_QUERY_INFO_\345\272\237\345\274\203.md" index 95ae8fea8..a0b6066de 100644 --- "a/content/zh/docs/Developerguide/GS_SLOW_QUERY_INFO_\345\272\237\345\274\203.md" +++ "b/content/zh/docs/Developerguide/GS_SLOW_QUERY_INFO_\345\272\237\345\274\203.md" @@ -1,214 +1,214 @@ -# GS\_SLOW\_QUERY\_INFO(废弃) - -GS\_SLOW\_QUERY\_INFO视图显示当前节点上已经转储的慢查询信息。此数据是从内核中转储到系统表中的数据。当设置GUC参数[enable\_resource\_record](zh-cn_topic_0289900033.md#zh-cn_topic_0283137479_zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为on时,系统会定时(周期为3分钟)将内核中query信息导入GS\_WLM\_SESSION\_QUERY\_INFO\_ALL系统表,开启此功能会占用系统存储空间并对性能有一定影响。用户通过查询GS\_SLOW\_QUERY\_INFO视图,可以查看已经转储的慢查询信息,本版本中已废弃。 - -**表 1** GS\_SLOW\_QUERY\_INFO字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

dbname

-

text

-

数据库名称。

-

schemaname

-

text

-

schema名称。

-

nodename

-

text

-

节点名称。

-

username

-

text

-

用户名。

-

queryid

-

bigint

-

归一化ID。

-

query

-

text

-

query语句。

-

start_time

-

timestamp with time zone

-

开始执行时间。

-

finish_time

-

timestamp with time zone

-

结束执行时间。

-

duration

-

bigint

-

执行持续时间(毫秒)。

-

query_plan

-

text

-

计划信息。

-

n_returned_rows

-

bigint

-

Select返回的结果集行数。

-

n_tuples_fetched

-

bigint

-

随机扫描行数。

-

n_tuples_returned

-

bigint

-

顺序扫描行数。

-

n_tuples_inserted

-

bigint

-

插入行数。

-

n_tuples_updated

-

bigint

-

更新行数。

-

n_tuples_deleted

-

bigint

-

删除行数。

-

n_blocks_fetched

-

bigint

-

Cache加载次数。

-

n_blocks_hit

-

bigint

-

Cache命中数。

-

db_time

-

bigint

-

有效的DB时间花费,多线程将累加(单位:微秒)。

-

cpu_time

-

bigint

-

CPU时间(单位:微秒)。

-

execution_time

-

bigint

-

执行器内执行时间(单位:微秒)。

-

parse_time

-

bigint

-

SQL解析时间(单位:微秒)。

-

plan_time

-

bigint

-

SQL生成计划时间(单位:微秒)。

-

rewrite_time

-

bigint

-

SQL重写时间(单位:微秒)。

-

pl_execution_time

-

bigint

-

plpgsql上的执行时间(单位:微秒)。

-

pl_compilation_time

-

bigint

-

plpgsql上的编译时间(单位:微秒)。

-

net_send_time

-

bigint

-

网络上的时间花费(单位:微秒)。

-

data_io_time

-

bigint

-

IO上的时间花费(单位:微秒)。

-
- +# GS\_SLOW\_QUERY\_INFO(废弃) + +GS\_SLOW\_QUERY\_INFO视图显示当前节点上已经转储的慢查询信息。此数据是从内核中转储到系统表中的数据。当设置 GUC 参数[enable\_resource\_record](zh-cn_topic_0289900033.md#zh-cn_topic_0283137479_zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为 on 时,系统会定时(周期为 3 分钟)将内核中 query 信息导入GS\_WLM\_SESSION\_QUERY\_INFO\_ALL系统表,开启此功能会占用系统存储空间并对性能有一定影响。用户通过查询GS\_SLOW\_QUERY\_INFO视图,可以查看已经转储的慢查询信息,本版本中已废弃。 + +**表 1** GS\_SLOW\_QUERY\_INFO字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

dbname

+

text

+

数据库名称。

+

schemaname

+

text

+

schema名称。

+

nodename

+

text

+

节点名称。

+

username

+

text

+

用户名。

+

queryid

+

bigint

+

归一化 ID 。

+

query

+

text

+

query语句。

+

start_time

+

timestamp with time zone

+

开始执行时间。

+

finish_time

+

timestamp with time zone

+

结束执行时间。

+

duration

+

bigint

+

执行持续时间(毫秒)。

+

query_plan

+

text

+

计划信息。

+

n_returned_rows

+

bigint

+

Select返回的结果集行数。

+

n_tuples_fetched

+

bigint

+

随机扫描行数。

+

n_tuples_returned

+

bigint

+

顺序扫描行数。

+

n_tuples_inserted

+

bigint

+

插入行数。

+

n_tuples_updated

+

bigint

+

更新行数。

+

n_tuples_deleted

+

bigint

+

删除行数。

+

n_blocks_fetched

+

bigint

+

Cache加载次数。

+

n_blocks_hit

+

bigint

+

Cache命中数。

+

db_time

+

bigint

+

有效的 DB 时间花费,多线程将累加(单位:微秒)。

+

cpu_time

+

bigint

+

CPU时间(单位:微秒)。

+

execution_time

+

bigint

+

执行器内执行时间(单位:微秒)。

+

parse_time

+

bigint

+

SQL解析时间(单位:微秒)。

+

plan_time

+

bigint

+

SQL生成计划时间(单位:微秒)。

+

rewrite_time

+

bigint

+

SQL重写时间(单位:微秒)。

+

pl_execution_time

+

bigint

+

plpgsql上的执行时间(单位:微秒)。

+

pl_compilation_time

+

bigint

+

plpgsql上的编译时间(单位:微秒)。

+

net_send_time

+

bigint

+

网络上的时间花费(单位:微秒)。

+

data_io_time

+

bigint

+

IO上的时间花费(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/GS_SQL_COUNT.md b/content/zh/docs/Developerguide/GS_SQL_COUNT.md index 340735d3e..895f34f8e 100644 --- a/content/zh/docs/Developerguide/GS_SQL_COUNT.md +++ b/content/zh/docs/Developerguide/GS_SQL_COUNT.md @@ -1,204 +1,204 @@ -# GS\_SQL\_COUNT - -GS\_SQL\_COUNT视图显示数据库当前节点当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)统计信息。 - -- 普通用户查询GS\_SQL\_COUNT视图仅能看到该用户当前节点的统计信息;管理员权限用户查询GS\_SQL\_COUNT视图则能看到所有用户当前节点的统计信息。 -- 当openGauss或该节点重启时,计数将清零,并重新开始计数 。 -- 计数以节点收到的查询数为准,包括openGauss内部进行的查询。 - -**表 1** GS\_SQL\_COUNT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

节点名称。

-

user_name

-

text

-

用户名。

-

select_count

-

bigint

-

select语句统计结果。

-

update_count

-

bigint

-

update语句统计结果。

-

insert_count

-

bigint

-

insert语句统计结果。

-

delete_count

-

bigint

-

delete语句统计结果。

-

mergeinto_count

-

bigint

-

MERGE INTO语句统计结果。

-

ddl_count

-

bigint

-

DDL语句的数量。

-

dml_count

-

bigint

-

DML语句的数量。

-

dcl_count

-

bigint

-

DML语句的数量。

-

total_select_elapse

-

bigint

-

总select的时间花费(单位:微秒)。

-

avg_select_elapse

-

bigint

-

平均select的时间花费(单位:微秒)。

-

max_select_elapse

-

bigint

-

最大select的时间花费(单位:微秒)。

-

min_select_elapse

-

bigint

-

最小select的时间花费(单位:微秒)。

-

total_update_elapse

-

bigint

-

总update的时间花费(单位:微秒)。

-

avg_update_elapse

-

bigint

-

平均update的时间花费(单位:微秒)。

-

max_update_elapse

-

bigint

-

最大update的时间花费(单位:微秒)。

-

min_update_elapse

-

bigint

-

最小update的时间花费(单位:微秒)。

-

total_insert_elapse

-

bigint

-

总insert的时间花费(单位:微秒)。

-

avg_insert_elapse

-

bigint

-

平均insert的时间花费(单位:微秒)。

-

max_insert_elapse

-

bigint

-

最大insert的时间花费(单位:微秒)。

-

min_insert_elapse

-

bigint

-

最小insert的时间花费(单位:微秒)。

-

total_delete_elapse

-

bigint

-

总delete的时间花费(单位:微秒)。

-

avg_delete_elapse

-

bigint

-

平均delete的时间花费(单位:微秒)。

-

max_delete_elapse

-

bigint

-

最大delete的时间花费(单位:微秒)。

-

min_delete_elapse

-

bigint

-

最小delete的时间花费(单位:微秒)。

-
- +# GS\_SQL\_COUNT + +GS\_SQL\_COUNT视图显示数据库当前节点当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)统计信息。 + +- 普通用户查询GS\_SQL\_COUNT视图仅能看到该用户当前节点的统计信息;管理员权限用户查询GS\_SQL\_COUNT视图则能看到所有用户当前节点的统计信息。 +- 当 openGauss 或该节点重启时,计数将清零,并重新开始计数 。 +- 计数以节点收到的查询数为准,包括 openGauss 内部进行的查询。 + +**表 1** GS\_SQL\_COUNT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

节点名称。

+

user_name

+

text

+

用户名。

+

select_count

+

bigint

+

select语句统计结果。

+

update_count

+

bigint

+

update语句统计结果。

+

insert_count

+

bigint

+

insert语句统计结果。

+

delete_count

+

bigint

+

delete语句统计结果。

+

mergeinto_count

+

bigint

+

MERGE INTO语句统计结果。

+

ddl_count

+

bigint

+

DDL语句的数量。

+

dml_count

+

bigint

+

DML语句的数量。

+

dcl_count

+

bigint

+

DML语句的数量。

+

total_select_elapse

+

bigint

+

总 select 的时间花费(单位:微秒)。

+

avg_select_elapse

+

bigint

+

平均 select 的时间花费(单位:微秒)。

+

max_select_elapse

+

bigint

+

最大 select 的时间花费(单位:微秒)。

+

min_select_elapse

+

bigint

+

最小 select 的时间花费(单位:微秒)。

+

total_update_elapse

+

bigint

+

总 update 的时间花费(单位:微秒)。

+

avg_update_elapse

+

bigint

+

平均 update 的时间花费(单位:微秒)。

+

max_update_elapse

+

bigint

+

最大 update 的时间花费(单位:微秒)。

+

min_update_elapse

+

bigint

+

最小 update 的时间花费(单位:微秒)。

+

total_insert_elapse

+

bigint

+

总 insert 的时间花费(单位:微秒)。

+

avg_insert_elapse

+

bigint

+

平均 insert 的时间花费(单位:微秒)。

+

max_insert_elapse

+

bigint

+

最大 insert 的时间花费(单位:微秒)。

+

min_insert_elapse

+

bigint

+

最小 insert 的时间花费(单位:微秒)。

+

total_delete_elapse

+

bigint

+

总 delete 的时间花费(单位:微秒)。

+

avg_delete_elapse

+

bigint

+

平均 delete 的时间花费(单位:微秒)。

+

max_delete_elapse

+

bigint

+

最大 delete 的时间花费(单位:微秒)。

+

min_delete_elapse

+

bigint

+

最小 delete 的时间花费(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/GS_STAT_SESSION_CU.md b/content/zh/docs/Developerguide/GS_STAT_SESSION_CU.md index 11ad047ce..805cd040c 100644 --- a/content/zh/docs/Developerguide/GS_STAT_SESSION_CU.md +++ b/content/zh/docs/Developerguide/GS_STAT_SESSION_CU.md @@ -1,39 +1,39 @@ -# GS\_STAT\_SESSION\_CU - -GS\_STAT\_SESSION\_CU视图查询openGauss各个节点,当前运行session的CU命中情况。session退出相应的统计数据会清零。openGauss重启后,统计数据也会清零。 - -**表 1** GS\_STAT\_SESSION\_CU字段 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

mem_hit

-

integer

-

内存命中次数。

-

hdd_sync_read

-

integer

-

硬盘同步读次数。

-

hdd_asyn_read

-

integer

-

硬盘异步读次数。

-
- +# GS\_STAT\_SESSION\_CU + +GS\_STAT\_SESSION\_CU视图查询 openGauss 各个节点,当前运行 session 的 CU 命中情况。 session 退出相应的统计数据会清零。 openGauss 重启后,统计数据也会清零。 + +**表 1** GS\_STAT\_SESSION\_CU字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

mem_hit

+

integer

+

内存命中次数。

+

hdd_sync_read

+

integer

+

硬盘同步读次数。

+

hdd_asyn_read

+

integer

+

硬盘异步读次数。

+
+ diff --git a/content/zh/docs/Developerguide/GS_THREAD_MEMORY_CONTEXT.md b/content/zh/docs/Developerguide/GS_THREAD_MEMORY_CONTEXT.md index 9f185a7e7..1a653ca4b 100644 --- a/content/zh/docs/Developerguide/GS_THREAD_MEMORY_CONTEXT.md +++ b/content/zh/docs/Developerguide/GS_THREAD_MEMORY_CONTEXT.md @@ -1,83 +1,83 @@ -# GS\_THREAD\_MEMORY\_CONTEXT - -GS\_THREAD\_MEMORY\_CONTEXT视图统计所有的线程的内存使用情况,以MemoryContext节点来统计。该视图在关闭线程池(enable\_thread\_pool = off)时等价于GS\_SESSION\_MEMORY\_DETAIL视图。当GUC参数enable\_memory\_limit的值为off时,本视图不可用。 - -其中内存上下文“TempSmallContextGroup”,记录当前线程中所有内存上下文字段“totalsize”小于8192字节的信息汇总,并且内存上下文统计计数记录到“usedsize”字段中。所以在视图中,“TempSmallContextGroup”内存上下文中的“totalsize”和“freesize”是该线程中所有内存上下文“totalsize”小于8192字节的汇总总和,usedsize字段表示统计的内存上下文个数。 - -**表 1** GS\_THREAD\_MEMORY\_CONTEXT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

threadid

-

text

-

线程启动时间+线程标识(字符串信息为timestamp.sessionid)。

-

tid

-

bigint

-

线程标识。

-

thrdtype

-

text

-

线程类型。

-

contextname

-

text

-

内存上下文名称。

-

level

-

smallint

-

当前上下文在整体内存上下文中的层级。

-

parent

-

text

-

父内存上下文名称。

-

totalsize

-

bigint

-

当前内存上下文的内存总数,单位Byte。

-

freesize

-

bigint

-

当前内存上下文中已释放的内存总数,单位Byte。

-

usedsize

-

bigint

-

当前内存上下文中已使用的内存总数,单位Byte;“TempSmallContextGroup”内存上下文中该字段含义为统计计数。

-
- +# GS\_THREAD\_MEMORY\_CONTEXT + +GS\_THREAD\_MEMORY\_CONTEXT视图统计所有的线程的内存使用情况,以 MemoryContext 节点来统计。该视图在关闭线程池(enable\_thread\_pool = off)时等价于GS\_SESSION\_MEMORY\_DETAIL视图。当 GUC 参数enable\_memory\_limit的值为 off 时,本视图不可用。 + +其中内存上下文“TempSmallContextGroup”,记录当前线程中所有内存上下文字段“totalsize”小于 8192 字节的信息汇总,并且内存上下文统计计数记录到“usedsize”字段中。所以在视图中,“TempSmallContextGroup”内存上下文中的“totalsize”和“freesize”是该线程中所有内存上下文“totalsize”小于 8192 字节的汇总总和, usedsize 字段表示统计的内存上下文个数。 + +**表 1** GS\_THREAD\_MEMORY\_CONTEXT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

threadid

+

text

+

线程启动时间+线程标识(字符串信息为timestamp.sessionid)。

+

tid

+

bigint

+

线程标识。

+

thrdtype

+

text

+

线程类型。

+

contextname

+

text

+

内存上下文名称。

+

level

+

smallint

+

当前上下文在整体内存上下文中的层级。

+

parent

+

text

+

父内存上下文名称。

+

totalsize

+

bigint

+

当前内存上下文的内存总数,单位 Byte 。

+

freesize

+

bigint

+

当前内存上下文中已释放的内存总数,单位 Byte 。

+

usedsize

+

bigint

+

当前内存上下文中已使用的内存总数,单位Byte;“TempSmallContextGroup”内存上下文中该字段含义为统计计数。

+
+ diff --git a/content/zh/docs/Developerguide/GS_TOTAL_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/GS_TOTAL_MEMORY_DETAIL.md index 27e085732..0d00eb510 100644 --- a/content/zh/docs/Developerguide/GS_TOTAL_MEMORY_DETAIL.md +++ b/content/zh/docs/Developerguide/GS_TOTAL_MEMORY_DETAIL.md @@ -1,40 +1,40 @@ -# GS\_TOTAL\_MEMORY\_DETAIL - -GS\_TOTAL\_MEMORY\_DETAIL视图统计当前数据库节点使用内存的信息,单位为MB。当GUC参数enable\_memory\_limit的值为off时,本视图不可用。 - -**表 1** GS\_TOTAL\_MEMORY\_DETAIL字段 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

nodename

-

text

-

节点名称。

-

memorytype

-

text

-
内存类型,包括以下几种:
  • max_process_memory:openGauss实例所占用的内存大小。
  • process_used_memory:openGauss进程所使用的内存大小。
  • max_dynamic_memory:最大动态内存。
  • dynamic_used_memory:已使用的动态内存。
  • dynamic_peak_memory:内存的动态峰值。
  • dynamic_used_shrctx:最大动态共享内存上下文。
  • dynamic_peak_shrctx:共享内存上下文的动态峰值。
  • max_shared_memory:最大共享内存。
  • shared_used_memory:已使用的共享内存。
  • max_cstore_memory:列存所允许使用的最大内存。
  • cstore_used_memory:列存已使用的内存大小。
  • max_sctpcomm_memory:通信库所允许使用的最大内存。
  • sctpcomm_used_memory:通信库已使用的内存大小。
  • sctpcomm_peak_memory:通信库的内存峰值。
  • other_used_memory:其他已使用的内存大小。
-
-

memorymbytes

-

integer

-

内存类型分配内存的大小。

-
- +# GS\_TOTAL\_MEMORY\_DETAIL + +GS\_TOTAL\_MEMORY\_DETAIL视图统计当前数据库节点使用内存的信息,单位为 MB 。当 GUC 参数enable\_memory\_limit的值为 off 时,本视图不可用。 + +**表 1** GS\_TOTAL\_MEMORY\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

text

+

节点名称。

+

memorytype

+

text

+
内存类型,包括以下几种:
  • max_process_memory:openGauss实例所占用的内存大小。
  • process_used_memory:openGauss进程所使用的内存大小。
  • max_dynamic_memory:最大动态内存。
  • dynamic_used_memory:已使用的动态内存。
  • dynamic_peak_memory:内存的动态峰值。
  • dynamic_used_shrctx:最大动态共享内存上下文。
  • dynamic_peak_shrctx:共享内存上下文的动态峰值。
  • max_shared_memory:最大共享内存。
  • shared_used_memory:已使用的共享内存。
  • max_cstore_memory:列存所允许使用的最大内存。
  • cstore_used_memory:列存已使用的内存大小。
  • max_sctpcomm_memory:通信库所允许使用的最大内存。
  • sctpcomm_used_memory:通信库已使用的内存大小。
  • sctpcomm_peak_memory:通信库的内存峰值。
  • other_used_memory:其他已使用的内存大小。
+
+

memorymbytes

+

integer

+

内存类型分配内存的大小。

+
+ diff --git a/content/zh/docs/Developerguide/GS_TXN_SNAPSHOT.md b/content/zh/docs/Developerguide/GS_TXN_SNAPSHOT.md index 1dc883bc0..7dff86462 100644 --- a/content/zh/docs/Developerguide/GS_TXN_SNAPSHOT.md +++ b/content/zh/docs/Developerguide/GS_TXN_SNAPSHOT.md @@ -1,46 +1,46 @@ -# GS\_TXN\_SNAPSHOT - -GS\_TXN\_SNAPSHOT是“时间戳-CSN”映射表,周期性采样,并维护适当的时间范围,用于估算范围内的时间戳对应的CSN值。 - -**表 1** GS\_TXN\_SNAPSHOT字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

snptime

-

timestamptz

-

快照捕获时间。

-

snpxmin

-

bigint

-

快照xmin。

-

snpcsn

-

bigint

-

快照csn。

-

snpsnapshot

-

TEXT

-

快照序列化文本。

-
- +# GS\_TXN\_SNAPSHOT + +GS\_TXN\_SNAPSHOT是“时间戳-CSN”映射表,周期性采样,并维护适当的时间范围,用于估算范围内的时间戳对应的 CSN 值。 + +**表 1** GS\_TXN\_SNAPSHOT字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

snptime

+

timestamptz

+

快照捕获时间。

+

snpxmin

+

bigint

+

快照 xmin 。

+

snpcsn

+

bigint

+

快照 csn 。

+

snpsnapshot

+

TEXT

+

快照序列化文本。

+
+ diff --git a/content/zh/docs/Developerguide/GS_WLM_CGROUP_INFO.md b/content/zh/docs/Developerguide/GS_WLM_CGROUP_INFO.md index f93fb71a2..a5ce2d21e 100644 --- a/content/zh/docs/Developerguide/GS_WLM_CGROUP_INFO.md +++ b/content/zh/docs/Developerguide/GS_WLM_CGROUP_INFO.md @@ -1,81 +1,81 @@ -# GS\_WLM\_CGROUP\_INFO - -GS\_WLM\_CGROUP\_INFO视图显示当前执行作业的控制组的信息。 - -**表 1** GS\_WLM\_CGROUP\_INFO字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

cgoup_name

-

text

-

控制组的名称。

-

priority

-

interger

-

作业的优先级。

-

usage_pecent

-

interger

-

控制组占用的百分比。

-

shares

-

bigint

-

控制组分配的CPU资源配额。

-

cpuacct

-

bigint

-

CPU配额分配。

-

cpuset

-

text

-

CPU限额分配。

-

relpath

-

text

-

控制组的相对路径。

-

valid

-

text

-

该控制组是否有效。

-

node_group

-

text

-

逻辑数据库实例名称。

-
- +# GS\_WLM\_CGROUP\_INFO + +GS\_WLM\_CGROUP\_INFO视图显示当前执行作业的控制组的信息。 + +**表 1** GS\_WLM\_CGROUP\_INFO字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

cgoup_name

+

text

+

控制组的名称。

+

priority

+

interger

+

作业的优先级。

+

usage_pecent

+

interger

+

控制组占用的百分比。

+

shares

+

bigint

+

控制组分配的 CPU 资源配额。

+

cpuacct

+

bigint

+

CPU配额分配。

+

cpuset

+

text

+

CPU限额分配。

+

relpath

+

text

+

控制组的相对路径。

+

valid

+

text

+

该控制组是否有效。

+

node_group

+

text

+

逻辑数据库实例名称。

+
+ diff --git a/content/zh/docs/Developerguide/GS_WLM_EC_OPERATOR_INFO.md b/content/zh/docs/Developerguide/GS_WLM_EC_OPERATOR_INFO.md index 763da734a..732793771 100644 --- a/content/zh/docs/Developerguide/GS_WLM_EC_OPERATOR_INFO.md +++ b/content/zh/docs/Developerguide/GS_WLM_EC_OPERATOR_INFO.md @@ -1,116 +1,116 @@ -# GS\_WLM\_EC\_OPERATOR\_INFO - -GS\_WLM\_EC\_OPERATOR\_INFO系统表存储执行EC(Extension Connector)作业结束后的算子相关的记录。当设置GUC参数[enable\_resource\_record](负载管理.md#zh-cn_topic_0283137479_zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为on时,系统会每3分钟将GS\_WLM\_EC\_OPERATOR\_HISTORY中的记录导入此系统表,开启此功能会占用系统存储空间并对性能有一定影响。查询该系统表需要sysadmin权限。 - -**表 1** GS\_WLM\_EC\_OPERATOR\_INFO的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

queryid

-

bigint

-

EC语句执行使用的内部query_id。

-

plan_node_id

-

integer

-

EC算子对应的执行计划的plan node id。

-

start_time

-

timestamp with time zone

-

EC算子处理第一条数据的开始时间。

-

duration

-

bigint

-

EC算子到结束时候总的执行时间(ms)。

-

tuple_processed

-

bigint

-

EC算子返回的元素个数。

-

min_peak_memory

-

integer

-

EC算子在所有DN上的最小内存峰值(MB)。

-

max_peak_memory

-

integer

-

EC算子在所有DN上的最大内存峰值(MB)。

-

average_peak_memory

-

integer

-

EC算子在所有DN上的平均内存峰值(MB)。

-

ec_status

-

text

-

EC作业的执行状态。

-

ec_execute_datanode

-

text

-

执行EC作业的DN名称。

-

ec_dsn

-

text

-

EC作业所使用的DSN。

-

ec_username

-

text

-

EC作业访问远端数据库实例的USERNAME(远端数据库实例为SPARK类型时该值为空)。

-

ec_query

-

text

-

EC作业发送给远端数据库实例执行的语句。

-

ec_libodbc_type

-

text

-

EC作业使用的unixODBC驱动类型。

-
+# GS\_WLM\_EC\_OPERATOR\_INFO + +GS\_WLM\_EC\_OPERATOR\_INFO系统表存储执行EC(Extension Connector)作业结束后的算子相关的记录。当设置 GUC 参数[enable\_resource\_record](负载管理.md#zh-cn_topic_0283137479_zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为 on 时,系统会每 3 分钟将GS\_WLM\_EC\_OPERATOR\_HISTORY中的记录导入此系统表,开启此功能会占用系统存储空间并对性能有一定影响。查询该系统表需要 sysadmin 权限。 + +**表 1** GS\_WLM\_EC\_OPERATOR\_INFO的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

queryid

+

bigint

+

EC语句执行使用的内部 query_id 。

+

plan_node_id

+

integer

+

EC算子对应的执行计划的 plan node id 。

+

start_time

+

timestamp with time zone

+

EC算子处理第一条数据的开始时间。

+

duration

+

bigint

+

EC算子到结束时候总的执行时间(ms)。

+

tuple_processed

+

bigint

+

EC算子返回的元素个数。

+

min_peak_memory

+

integer

+

EC算子在所有 DN 上的最小内存峰值(MB)。

+

max_peak_memory

+

integer

+

EC算子在所有 DN 上的最大内存峰值(MB)。

+

average_peak_memory

+

integer

+

EC算子在所有 DN 上的平均内存峰值(MB)。

+

ec_status

+

text

+

EC作业的执行状态。

+

ec_execute_datanode

+

text

+

执行 EC 作业的 DN 名称。

+

ec_dsn

+

text

+

EC作业所使用的 DSN 。

+

ec_username

+

text

+

EC作业访问远端数据库实例的USERNAME(远端数据库实例为 SPARK 类型时该值为空)。

+

ec_query

+

text

+

EC作业发送给远端数据库实例执行的语句。

+

ec_libodbc_type

+

text

+

EC作业使用的 unixODBC 驱动类型。

+
diff --git a/content/zh/docs/Developerguide/GS_WLM_EC_OPERATOR_STATISTICS.md b/content/zh/docs/Developerguide/GS_WLM_EC_OPERATOR_STATISTICS.md index e86644581..e7ea38f82 100644 --- a/content/zh/docs/Developerguide/GS_WLM_EC_OPERATOR_STATISTICS.md +++ b/content/zh/docs/Developerguide/GS_WLM_EC_OPERATOR_STATISTICS.md @@ -1,90 +1,90 @@ -# GS\_WLM\_EC\_OPERATOR\_STATISTICS - -GS\_WLM\_EC\_OPERATOR\_STATISTICS视图显示当前用户正在执行的EC(Extension Connector)作业的算子相关信息。查询该视图需要sysadmin权限。 - -**表 1** **表1 **GS\_WLM\_EC\_OPERATOR\_STATISTICS的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

queryid

-

bigint

-

EC语句执行使用的内部query_id。

-

plan_node_id

-

integer

-

EC算子对应的执行计划的plan node id。

-

start_time

-

timestamp with time zone

-

EC算子处理第一条数据的开始时间。

-

ec_status

-

text

-

EC作业的执行状态。

-
  • EC_STATUS_INIT:初始化。
  • EC_STATUS_CONNECTED:已连接。
  • EC_STATUS_EXECUTED:已执行。
  • EC_STATUS_FETCHING:获取中。
  • EC_STATUS_END:已结束。
-

ec_execute_datanode

-

text

-

执行EC作业的DN名称。

-

ec_dsn

-

text

-

EC作业所使用的DSN。

-

ec_username

-

text

-

EC作业访问远端数据库实例的USERNAME(远端集群为SPARK类型时该值为空)。

-

ec_query

-

text

-

EC作业发送给远端数据库实例执行的语句。

-

ec_libodbc_type

-

text

-

EC作业使用的unixODBC驱动类型。

-
  • 类型1:对应 libodbc.so.1。
  • 类型2:对应 libodbc.so.2。
-

ec_fetch_count

-

bigint

-

EC作业当前处理的数据条数。

-
- +# GS\_WLM\_EC\_OPERATOR\_STATISTICS + +GS\_WLM\_EC\_OPERATOR\_STATISTICS视图显示当前用户正在执行的EC(Extension Connector)作业的算子相关信息。查询该视图需要 sysadmin 权限。 + +**表 1** **表1 **GS\_WLM\_EC\_OPERATOR\_STATISTICS的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

queryid

+

bigint

+

EC语句执行使用的内部 query_id 。

+

plan_node_id

+

integer

+

EC算子对应的执行计划的 plan node id 。

+

start_time

+

timestamp with time zone

+

EC算子处理第一条数据的开始时间。

+

ec_status

+

text

+

EC作业的执行状态。

+
  • EC_STATUS_INIT:初始化。
  • EC_STATUS_CONNECTED:已连接。
  • EC_STATUS_EXECUTED:已执行。
  • EC_STATUS_FETCHING:获取中。
  • EC_STATUS_END:已结束。
+

ec_execute_datanode

+

text

+

执行 EC 作业的 DN 名称。

+

ec_dsn

+

text

+

EC作业所使用的 DSN 。

+

ec_username

+

text

+

EC作业访问远端数据库实例的USERNAME(远端集群为 SPARK 类型时该值为空)。

+

ec_query

+

text

+

EC作业发送给远端数据库实例执行的语句。

+

ec_libodbc_type

+

text

+

EC作业使用的 unixODBC 驱动类型。

+
  • 类型1:对应 libodbc.so.1。
  • 类型2:对应 libodbc.so.2。
+

ec_fetch_count

+

bigint

+

EC作业当前处理的数据条数。

+
+ diff --git a/content/zh/docs/Developerguide/GS_WLM_INSTANCE_HISTORY.md b/content/zh/docs/Developerguide/GS_WLM_INSTANCE_HISTORY.md index ae311d92d..e23f736b2 100644 --- a/content/zh/docs/Developerguide/GS_WLM_INSTANCE_HISTORY.md +++ b/content/zh/docs/Developerguide/GS_WLM_INSTANCE_HISTORY.md @@ -1,127 +1,127 @@ -# GS\_WLM\_INSTANCE\_HISTORY - -GS\_WLM\_INSTANCE\_HISTORY系统表存储与实例(数据库主节点或数据库节点)相关的资源使用相关信息。该系统表里每条记录都是对应时间点某实例资源使用情况,包括:内存、CPU核数、磁盘IO、进程物理IO和进程逻辑IO信息。查询该系统表需要sysadmin权限,且仅在数据库postgres下面查询时有数据。 - -**表 1** GS\_WLM\_INSTANCE\_HISTORY字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

instancename

-

text

-

实例名称。

-

timestamp

-

timestamp with time zone

-

时间戳。

-

used_cpu

-

int

-

实例使用CPU所占用的百分比。

-

free_mem

-

int

-

实例未使用的内存大小,单位MB。

-

used_mem

-

int

-

实例已使用的内存大小,单位MB。

-

io_await

-

real

-

实例所使用磁盘的io_wait值(10秒均值)。

-

io_util

-

real

-

实例所使用磁盘的io_util值(10秒均值)。

-

disk_read

-

real

-

实例所使用磁盘的读速率(10秒均值),单位KB/s。

-

disk_write

-

real

-

实例所使用磁盘的写速率(10秒均值),单位KB/s。

-

process_read

-

bigint

-

实例对应进程从磁盘读数据的读速率(不包括从磁盘pagecache中读取的字节数,10秒均值),单位KB/s。

-

process_write

-

bigint

-

实例对应进程向磁盘写数据的写速率(不包括向磁盘pagecache中写入的字节数,10秒均值),单位KB/s。

-

logical_read

-

bigint

-

数据库主节点实例:不统计。

-

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑读字节速率,单位KB/s。

-

logical_write

-

bigint

-

数据库主节点实例:不统计。

-

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑写字节速率,单位KB/s。

-

read_counts

-

bigint

-

数据库主节点实例:不统计。

-

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑读操作次数之和,单位次。

-

write_counts

-

bigint

-

数据库主节点实例:不统计。

-

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑写操作次数之和,单位次。

-
- +# GS\_WLM\_INSTANCE\_HISTORY + +GS\_WLM\_INSTANCE\_HISTORY系统表存储与实例(数据库主节点或数据库节点)相关的资源使用相关信息。该系统表里每条记录都是对应时间点某实例资源使用情况,包括:内存、CPU核数、磁盘IO、进程物理 IO 和进程逻辑 IO 信息。查询该系统表需要 sysadmin 权限,且仅在数据库 postgres 下面查询时有数据。 + +**表 1** GS\_WLM\_INSTANCE\_HISTORY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

instancename

+

text

+

实例名称。

+

timestamp

+

timestamp with time zone

+

时间戳。

+

used_cpu

+

int

+

实例使用 CPU 所占用的百分比。

+

free_mem

+

int

+

实例未使用的内存大小,单位 MB 。

+

used_mem

+

int

+

实例已使用的内存大小,单位 MB 。

+

io_await

+

real

+

实例所使用磁盘的 io_wait 值(10秒均值)。

+

io_util

+

real

+

实例所使用磁盘的 io_util 值(10秒均值)。

+

disk_read

+

real

+

实例所使用磁盘的读速率(10秒均值),单位KB/s。

+

disk_write

+

real

+

实例所使用磁盘的写速率(10秒均值),单位KB/s。

+

process_read

+

bigint

+

实例对应进程从磁盘读数据的读速率(不包括从磁盘 pagecache 中读取的字节数, 10 秒均值),单位KB/s。

+

process_write

+

bigint

+

实例对应进程向磁盘写数据的写速率(不包括向磁盘 pagecache 中写入的字节数, 10 秒均值),单位KB/s。

+

logical_read

+

bigint

+

数据库主节点实例:不统计。

+

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑读字节速率,单位KB/s。

+

logical_write

+

bigint

+

数据库主节点实例:不统计。

+

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑写字节速率,单位KB/s。

+

read_counts

+

bigint

+

数据库主节点实例:不统计。

+

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑读操作次数之和,单位次。

+

write_counts

+

bigint

+

数据库主节点实例:不统计。

+

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑写操作次数之和,单位次。

+
+ diff --git a/content/zh/docs/Developerguide/GS_WLM_OPERATOR_HISTORY.md b/content/zh/docs/Developerguide/GS_WLM_OPERATOR_HISTORY.md index 93e613408..a9d9a3a11 100644 --- a/content/zh/docs/Developerguide/GS_WLM_OPERATOR_HISTORY.md +++ b/content/zh/docs/Developerguide/GS_WLM_OPERATOR_HISTORY.md @@ -1,6 +1,6 @@ -# GS\_WLM\_OPERATOR\_HISTORY - -GS\_WLM\_OPERATOR\_HISTORY视图显示的是当前用户当前数据库主节点上执行作业结束后的算子的相关记录。查询该视图需要sysadmin权限。 - -记录的数据同表[表1](GS_WLM_OPERATOR_INFO.md#zh-cn_topic_0283136785_zh-cn_topic_0237122263_zh-cn_topic_0111176227_table85181143511)。 - +# GS\_WLM\_OPERATOR\_HISTORY + +GS\_WLM\_OPERATOR\_HISTORY视图显示的是当前用户当前数据库主节点上执行作业结束后的算子的相关记录。查询该视图需要 sysadmin 权限。 + +记录的数据同表[表1](GS_WLM_OPERATOR_INFO.md#zh-cn_topic_0283136785_zh-cn_topic_0237122263_zh-cn_topic_0111176227_table85181143511)。 + diff --git a/content/zh/docs/Developerguide/GS_WLM_OPERATOR_INFO.md b/content/zh/docs/Developerguide/GS_WLM_OPERATOR_INFO.md index 255524e16..39d52d24b 100644 --- a/content/zh/docs/Developerguide/GS_WLM_OPERATOR_INFO.md +++ b/content/zh/docs/Developerguide/GS_WLM_OPERATOR_INFO.md @@ -1,173 +1,173 @@ -# GS\_WLM\_OPERATOR\_INFO - -GS\_WLM\_OPERATOR\_INFO系统表显示执行作业结束后的算子相关的记录。此数据是从内核中转储到系统表中的数据。查询该系统表需要sysadmin权限,且仅在数据库postgres下面查询时有数据。 - -**表 1** GS\_WLM\_OPERATOR\_INFO的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

queryid

-

bigint

-

语句执行使用的内部query_id。

-

pid

-

bigint

-

后端线程id。

-

plan_node_id

-

integer

-

查询对应的执行计划的plan node id。

-

plan_node_name

-

text

-

对应于plan_node_id的算子的名称。

-

start_time

-

timestamp with time zone

-

该算子处理第一条数据的开始时间。

-

duration

-

bigint

-

该算子到结束时候总的执行时间(ms)。

-

query_dop

-

integer

-

当前算子执行时的并行度。

-

estimated_rows

-

bigint

-

优化器估算的行数信息。

-

tuple_processed

-

bigint

-

当前算子返回的元素个数。

-

min_peak_memory

-

integer

-

当前算子在数据库节点上的最小内存峰值(MB)。

-

max_peak_memory

-

integer

-

当前算子在数据库节点上的最大内存峰值(MB)。

-

average_peak_memory

-

integer

-

当前算子在数据库节点平均内存峰值(MB)。

-

memory_skew_percent

-

integer

-

当前算子在数据库节点间的内存使用倾斜率。

-

min_spill_size

-

integer

-

若发生下盘,数据库节点盘的最小数据量(MB),默认为0。

-

max_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最大数据量(MB),默认为0。

-

average_spill_size

-

integer

-

若发生下盘,数据库节点盘的平均数据量(MB),默认为0。

-

spill_skew_percent

-

integer

-

若发生下盘,数据库节点间下盘倾斜率。

-

min_cpu_time

-

bigint

-

该算子在数据库节点最小执行时间(ms)。

-

max_cpu_time

-

bigint

-

该算子在数据库节点上的最大执行时间(ms)。

-

total_cpu_time

-

bigint

-

该算子在数据库节点上的总执行时间(ms)。

-

cpu_skew_percent

-

integer

-

数据库节点间执行时间的倾斜率。

-

warning

-

text

-

主要显示如下几类告警信息:

-
  • Sort/SetOp/HashAgg/HashJoin spill。
  • Spill file size large than 256MB。
  • Broadcast size large than 100MB。
  • Early spill。
  • Spill times is greater than 3。
  • Spill on memory adaptive。
  • Hash table conflict。
-
- +# GS\_WLM\_OPERATOR\_INFO + +GS\_WLM\_OPERATOR\_INFO系统表显示执行作业结束后的算子相关的记录。此数据是从内核中转储到系统表中的数据。查询该系统表需要 sysadmin 权限,且仅在数据库 postgres 下面查询时有数据。 + +**表 1** GS\_WLM\_OPERATOR\_INFO的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

queryid

+

bigint

+

语句执行使用的内部 query_id 。

+

pid

+

bigint

+

后端线程 id 。

+

plan_node_id

+

integer

+

查询对应的执行计划的 plan node id 。

+

plan_node_name

+

text

+

对应于 plan_node_id 的算子的名称。

+

start_time

+

timestamp with time zone

+

该算子处理第一条数据的开始时间。

+

duration

+

bigint

+

该算子到结束时候总的执行时间(ms)。

+

query_dop

+

integer

+

当前算子执行时的并行度。

+

estimated_rows

+

bigint

+

优化器估算的行数信息。

+

tuple_processed

+

bigint

+

当前算子返回的元素个数。

+

min_peak_memory

+

integer

+

当前算子在数据库节点上的最小内存峰值(MB)。

+

max_peak_memory

+

integer

+

当前算子在数据库节点上的最大内存峰值(MB)。

+

average_peak_memory

+

integer

+

当前算子在数据库节点平均内存峰值(MB)。

+

memory_skew_percent

+

integer

+

当前算子在数据库节点间的内存使用倾斜率。

+

min_spill_size

+

integer

+

若发生下盘,数据库节点盘的最小数据量(MB),默认为 0 。

+

max_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最大数据量(MB),默认为 0 。

+

average_spill_size

+

integer

+

若发生下盘,数据库节点盘的平均数据量(MB),默认为 0 。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库节点间下盘倾斜率。

+

min_cpu_time

+

bigint

+

该算子在数据库节点最小执行时间(ms)。

+

max_cpu_time

+

bigint

+

该算子在数据库节点上的最大执行时间(ms)。

+

total_cpu_time

+

bigint

+

该算子在数据库节点上的总执行时间(ms)。

+

cpu_skew_percent

+

integer

+

数据库节点间执行时间的倾斜率。

+

warning

+

text

+

主要显示如下几类告警信息:

+
  • Sort/SetOp/HashAgg/HashJoin spill。
  • Spill file size large than 256MB。
  • Broadcast size large than 100MB。
  • Early spill。
  • Spill times is greater than 3。
  • Spill on memory adaptive。
  • Hash table conflict。
+
+ diff --git a/content/zh/docs/Developerguide/GS_WLM_OPERATOR_STATISTICS.md b/content/zh/docs/Developerguide/GS_WLM_OPERATOR_STATISTICS.md index 51b7489c0..a5c8f1c8f 100644 --- a/content/zh/docs/Developerguide/GS_WLM_OPERATOR_STATISTICS.md +++ b/content/zh/docs/Developerguide/GS_WLM_OPERATOR_STATISTICS.md @@ -1,179 +1,179 @@ -# GS\_WLM\_OPERATOR\_STATISTICS - -GS\_WLM\_OPERATOR\_STATISTICS视图显示当前用户正在执行的作业的算子相关信息。查询该视图需要sysadmin权限。 - -**表 1** GS\_WLM\_OPERATOR\_STATISTICS的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

queryid

-

bigint

-

语句执行使用的内部query_id。

-

pid

-

bigint

-

后端线程id。

-

plan_node_id

-

integer

-

查询对应的执行计划的plan node id。

-

plan_node_name

-

text

-

对应于plan_node_id的算子的名称。

-

start_time

-

timestamp with time zone

-

该算子处理第一条数据的开始时间。

-

duration

-

bigint

-

该算子到结束时候总的执行时间(ms)。

-

status

-

text

-

当前算子的执行状态,包括finished和running。

-

query_dop

-

integer

-

当前算子执行时的并行度。

-

estimated_rows

-

bigint

-

优化器估算的行数信息。

-

tuple_processed

-

bigint

-

当前算子返回的元素个数。

-

min_peak_memory

-

integer

-

当前算子在数据库实例上的最小内存峰值(MB)。

-

max_peak_memory

-

integer

-

当前算子在数据库实例上的最大内存峰值(MB)。

-

average_peak_memory

-

integer

-

当前算子在数据库实例上的平均内存峰值(MB)。

-

memory_skew_percent

-

integer

-

当前算子在数据库实例间的内存使用倾斜率。

-

min_spill_size

-

integer

-

若发生下盘,数据库实例上下盘的最小数据量(MB),默认为0。

-

max_spill_size

-

integer

-

若发生下盘,数据库实例上下盘的最大数据量(MB),默认为0。

-

average_spill_size

-

integer

-

若发生下盘,数据库实例上下盘的平均数据量(MB),默认为0。

-

spill_skew_percent

-

integer

-

若发生下盘,数据库实例间下盘倾斜率。

-

min_cpu_time

-

bigint

-

该算子在数据库实例上的最小执行时间(ms)。

-

max_cpu_time

-

bigint

-

该算子在数据库实例上的最大执行时间(ms)。

-

total_cpu_time

-

bigint

-

该算子在数据库实例上的总执行时间(ms)。

-

cpu_skew_percent

-

integer

-

数据库实例间执行时间的倾斜率。

-

warning

-

text

-
主要显示如下几类告警信息:
  • Sort/SetOp/HashAgg/HashJoin spill
  • Spill file size large than 256MB
  • Broadcast size large than 100MB
  • Early spill
  • Spill times is greater than 3
  • Spill on memory adaptive
  • Hash table conflict
-
-
+# GS\_WLM\_OPERATOR\_STATISTICS + +GS\_WLM\_OPERATOR\_STATISTICS视图显示当前用户正在执行的作业的算子相关信息。查询该视图需要 sysadmin 权限。 + +**表 1** GS\_WLM\_OPERATOR\_STATISTICS的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

queryid

+

bigint

+

语句执行使用的内部 query_id 。

+

pid

+

bigint

+

后端线程 id 。

+

plan_node_id

+

integer

+

查询对应的执行计划的 plan node id 。

+

plan_node_name

+

text

+

对应于 plan_node_id 的算子的名称。

+

start_time

+

timestamp with time zone

+

该算子处理第一条数据的开始时间。

+

duration

+

bigint

+

该算子到结束时候总的执行时间(ms)。

+

status

+

text

+

当前算子的执行状态,包括 finished 和 running 。

+

query_dop

+

integer

+

当前算子执行时的并行度。

+

estimated_rows

+

bigint

+

优化器估算的行数信息。

+

tuple_processed

+

bigint

+

当前算子返回的元素个数。

+

min_peak_memory

+

integer

+

当前算子在数据库实例上的最小内存峰值(MB)。

+

max_peak_memory

+

integer

+

当前算子在数据库实例上的最大内存峰值(MB)。

+

average_peak_memory

+

integer

+

当前算子在数据库实例上的平均内存峰值(MB)。

+

memory_skew_percent

+

integer

+

当前算子在数据库实例间的内存使用倾斜率。

+

min_spill_size

+

integer

+

若发生下盘,数据库实例上下盘的最小数据量(MB),默认为 0 。

+

max_spill_size

+

integer

+

若发生下盘,数据库实例上下盘的最大数据量(MB),默认为 0 。

+

average_spill_size

+

integer

+

若发生下盘,数据库实例上下盘的平均数据量(MB),默认为 0 。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库实例间下盘倾斜率。

+

min_cpu_time

+

bigint

+

该算子在数据库实例上的最小执行时间(ms)。

+

max_cpu_time

+

bigint

+

该算子在数据库实例上的最大执行时间(ms)。

+

total_cpu_time

+

bigint

+

该算子在数据库实例上的总执行时间(ms)。

+

cpu_skew_percent

+

integer

+

数据库实例间执行时间的倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  • Sort/SetOp/HashAgg/HashJoin spill
  • Spill file size large than 256MB
  • Broadcast size large than 100MB
  • Early spill
  • Spill times is greater than 3
  • Spill on memory adaptive
  • Hash table conflict
+
+
diff --git a/content/zh/docs/Developerguide/GS_WLM_PLAN_ENCODING_TABLE.md b/content/zh/docs/Developerguide/GS_WLM_PLAN_ENCODING_TABLE.md index 9db34f5ef..e48aa0dd6 100644 --- a/content/zh/docs/Developerguide/GS_WLM_PLAN_ENCODING_TABLE.md +++ b/content/zh/docs/Developerguide/GS_WLM_PLAN_ENCODING_TABLE.md @@ -1,73 +1,73 @@ -# GS\_WLM\_PLAN\_ENCODING\_TABLE - -GS\_WLM\_PLAN\_ENCODING\_TABLE系统表显示计划算子级的编码信息,为机器学习模型的提供包括startup time、total time、peak memory、rows等标签值的训练、预测集。 - -**表 1** GS\_WLM\_PLAN\_ENCODING\_TABLE的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

queryid

-

bigint

-

语句执行使用的内部query_id。

-

plan_node_id

-

integer

-

查询对应的执行计划的plan node id。

-

parent_node_id

-

integer

-

当前算子的父节点node id。

-

startup_time

-

bignit

-

该算子处理第一条数据的开始时间。

-

total_time

-

bigint

-

该算子到结束时候总的执行时间(ms)。

-

rows

-

bigint

-

当前算子执行的行数信息。

-

peak_memory

-

integer

-

当前算子在数据库节点上的最大内存峰值(MB)。

-

encode

-

text

-

当前计划算子的编码信息。

-
+# GS\_WLM\_PLAN\_ENCODING\_TABLE + +GS\_WLM\_PLAN\_ENCODING\_TABLE系统表显示计划算子级的编码信息,为机器学习模型的提供包括startup time、total time、peak memory、rows等标签值的训练、预测集。 + +**表 1** GS\_WLM\_PLAN\_ENCODING\_TABLE的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

queryid

+

bigint

+

语句执行使用的内部 query_id 。

+

plan_node_id

+

integer

+

查询对应的执行计划的 plan node id 。

+

parent_node_id

+

integer

+

当前算子的父节点 node id 。

+

startup_time

+

bignit

+

该算子处理第一条数据的开始时间。

+

total_time

+

bigint

+

该算子到结束时候总的执行时间(ms)。

+

rows

+

bigint

+

当前算子执行的行数信息。

+

peak_memory

+

integer

+

当前算子在数据库节点上的最大内存峰值(MB)。

+

encode

+

text

+

当前计划算子的编码信息。

+
diff --git a/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_HISTORY.md b/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_HISTORY.md index 607c50e2a..22a970dda 100644 --- a/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_HISTORY.md +++ b/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_HISTORY.md @@ -1,6 +1,6 @@ -# GS\_WLM\_PLAN\_OPERATOR\_HISTORY - -GS\_WLM\_PLAN\_OPERATOR\_HISTORY视图显示的是当前用户数据库主节点上执行作业结束后的执行计划算子级的相关记录。 - -记录的数据同[表1](GS_WLM_PLAN_OPERATOR_INFO.md#zh-cn_topic_0283136905_zh-cn_topic_0111176227_table85181143511)。 - +# GS\_WLM\_PLAN\_OPERATOR\_HISTORY + +GS\_WLM\_PLAN\_OPERATOR\_HISTORY视图显示的是当前用户数据库主节点上执行作业结束后的执行计划算子级的相关记录。 + +记录的数据同[表1](GS_WLM_PLAN_OPERATOR_INFO.md#zh-cn_topic_0283136905_zh-cn_topic_0111176227_table85181143511)。 + diff --git a/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_INFO.md b/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_INFO.md index 106f7634a..896cc103d 100644 --- a/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_INFO.md +++ b/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_INFO.md @@ -1,137 +1,137 @@ -# GS\_WLM\_PLAN\_OPERATOR\_INFO - -GS\_WLM\_PLAN\_OPERATOR\_INFO系统表显示执行作业结束后计划算子级的相关的记录。此数据是从内核中转储到系统表中的数据。 - -**表 1** GS\_WLM\_PLAN\_OPERATOR\_INFO的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datname

-

name

-

收集计划信息所在的database名。

-

queryid

-

bigint

-

语句执行使用的内部query_id。

-

plan_node_id

-

integer

-

查询对应的执行计划的plan node id。

-

startup_time

-

bigint

-

该算子处理第一条数据的开始时间。

-

total_time

-

bigint

-

该算子到结束时候总的执行时间(ms)。

-

actual_rows

-

bigint

-

实际执行的行数信息。

-

max_peak_memory

-

integer

-

当前算子在数据库节点上的最大内存峰值(MB)。

-

query_dop

-

integer

-

当前算子执行时的并行度。

-

parent_node_id

-

integer

-

当前算子的父节点node id。

-

left_child_id

-

integer

-

当前算子的左孩子节点node id。

-

right_child_id

-

integer

-

当前算子的右孩子节点node id。

-

operation

-

text

-

当前算子进行的操作名称。

-

orientation

-

text

-

当前算子的对齐方式。

-

strategy

-

text

-

当前算子操作的实现方法。

-

options

-

text

-

当前算子操作的选择方式。

-

condition

-

text

-

当前算子操作的过滤条件。

-

projection

-

text

-

当前算子的映射关系。

-
- +# GS\_WLM\_PLAN\_OPERATOR\_INFO + +GS\_WLM\_PLAN\_OPERATOR\_INFO系统表显示执行作业结束后计划算子级的相关的记录。此数据是从内核中转储到系统表中的数据。 + +**表 1** GS\_WLM\_PLAN\_OPERATOR\_INFO的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datname

+

name

+

收集计划信息所在的 database 名。

+

queryid

+

bigint

+

语句执行使用的内部 query_id 。

+

plan_node_id

+

integer

+

查询对应的执行计划的 plan node id 。

+

startup_time

+

bigint

+

该算子处理第一条数据的开始时间。

+

total_time

+

bigint

+

该算子到结束时候总的执行时间(ms)。

+

actual_rows

+

bigint

+

实际执行的行数信息。

+

max_peak_memory

+

integer

+

当前算子在数据库节点上的最大内存峰值(MB)。

+

query_dop

+

integer

+

当前算子执行时的并行度。

+

parent_node_id

+

integer

+

当前算子的父节点 node id 。

+

left_child_id

+

integer

+

当前算子的左孩子节点 node id 。

+

right_child_id

+

integer

+

当前算子的右孩子节点 node id 。

+

operation

+

text

+

当前算子进行的操作名称。

+

orientation

+

text

+

当前算子的对齐方式。

+

strategy

+

text

+

当前算子操作的实现方法。

+

options

+

text

+

当前算子操作的选择方式。

+

condition

+

text

+

当前算子操作的过滤条件。

+

projection

+

text

+

当前算子的映射关系。

+
+ diff --git a/content/zh/docs/Developerguide/GS_WLM_REBUILD_USER_RESOURCE_POOL.md b/content/zh/docs/Developerguide/GS_WLM_REBUILD_USER_RESOURCE_POOL.md index 758020e67..77f70d876 100644 --- a/content/zh/docs/Developerguide/GS_WLM_REBUILD_USER_RESOURCE_POOL.md +++ b/content/zh/docs/Developerguide/GS_WLM_REBUILD_USER_RESOURCE_POOL.md @@ -1,25 +1,25 @@ -# GS\_WLM\_REBUILD\_USER\_RESOURCE\_POOL - -该视图用于在当前连接节点上重建内存中用户的资源池信息,无输出。只是用于资源池信息缺失或者错乱时用作补救措施。查询该视图需要sysadmin权限。 - -**表 1** GS\_WLM\_REBUILD\_USER\_RESOURCE\_POOL的字段 - - - - - - - - - - - - -

名称

-

类型

-

描述

-

gs_wlm_rebuild_user_resource_pool

-

boolean

-

重建内存中用户资源池信息结果。t为成功,f为失败。

-
- +# GS\_WLM\_REBUILD\_USER\_RESOURCE\_POOL + +该视图用于在当前连接节点上重建内存中用户的资源池信息,无输出。只是用于资源池信息缺失或者错乱时用作补救措施。查询该视图需要 sysadmin 权限。 + +**表 1** GS\_WLM\_REBUILD\_USER\_RESOURCE\_POOL的字段 + + + + + + + + + + + + +

名称

+

类型

+

描述

+

gs_wlm_rebuild_user_resource_pool

+

boolean

+

重建内存中用户资源池信息结果。 t 为成功, f 为失败。

+
+ diff --git a/content/zh/docs/Developerguide/GS_WLM_RESOURCE_POOL.md b/content/zh/docs/Developerguide/GS_WLM_RESOURCE_POOL.md index 785d070b3..303bef928 100644 --- a/content/zh/docs/Developerguide/GS_WLM_RESOURCE_POOL.md +++ b/content/zh/docs/Developerguide/GS_WLM_RESOURCE_POOL.md @@ -1,88 +1,88 @@ -# GS\_WLM\_RESOURCE\_POOL - -这是资源池上的一些统计信息。 - -**表 1** GS\_WLM\_RESOURCE\_POOL的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

rpoid

-

oid

-

资源池的OID。

-

respool

-

name

-

资源池的名称。

-

control_group

-

name

-

该字段不支持。

-

parentid

-

oid

-

父资源池的OID。

-

ref_count

-

integer

-

关联到该资源池上的作业数量。

-

active_points

-

integer

-

资源池上已经使用的点数。

-

running_count

-

integer

-

正在资源池上运行的作业数量。

-

waiting_count

-

integer

-

正在资源池上排队的作业数量。

-

io_limits

-

integer

-

资源池的iops上限。

-

io_priority

-

integer

-

资源池的io优先级。

-
- +# GS\_WLM\_RESOURCE\_POOL + +这是资源池上的一些统计信息。 + +**表 1** GS\_WLM\_RESOURCE\_POOL的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

rpoid

+

oid

+

资源池的 OID 。

+

respool

+

name

+

资源池的名称。

+

control_group

+

name

+

该字段不支持。

+

parentid

+

oid

+

父资源池的 OID 。

+

ref_count

+

integer

+

关联到该资源池上的作业数量。

+

active_points

+

integer

+

资源池上已经使用的点数。

+

running_count

+

integer

+

正在资源池上运行的作业数量。

+

waiting_count

+

integer

+

正在资源池上排队的作业数量。

+

io_limits

+

integer

+

资源池的 iops 上限。

+

io_priority

+

integer

+

资源池的 io 优先级。

+
+ diff --git a/content/zh/docs/Developerguide/GS_WLM_SESSION_HISTORY.md b/content/zh/docs/Developerguide/GS_WLM_SESSION_HISTORY.md index e797298bb..053ff2338 100644 --- a/content/zh/docs/Developerguide/GS_WLM_SESSION_HISTORY.md +++ b/content/zh/docs/Developerguide/GS_WLM_SESSION_HISTORY.md @@ -1,495 +1,495 @@ -# GS\_WLM\_SESSION\_HISTORY - -GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库实例上执行作业结束后的负载管理记录。查询该视图需要sysadmin或者monitor admin权限。 - -**表 1** GS\_WLM\_SESSION\_HISTORY的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

连接后端的数据库OID。

-

dbname

-

text

-

连接后端的数据库名称。

-

schemaname

-

text

-

模式的名称。

-

nodename

-

text

-

语句执行的数据库实例名称。

-

username

-

text

-

连接到后端的用户名。

-

application_name

-

text

-

连接到后端的应用名。

-

client_addr

-

inet

-

连接到后端的客户端的IP地址。 如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

-

client_hostname

-

text

-

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

-

client_port

-

integer

-

客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。

-

query_band

-

text

-

用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。

-

block_time

-

bigint

-

语句执行前的阻塞时间,包含语句解析和优化时间,单位ms。

-

start_time

-

timestamp with time zone

-

语句执行的开始时间。

-

finish_time

-

timestamp with time zone

-

语句执行的结束时间。

-

duration

-

bigint

-

语句实际执行的时间,单位ms。

-

estimate_total_time

-

bigint

-

语句预估执行时间,单位ms。

-

status

-

text

-

语句执行结束状态:正常为finished,异常为aborted。

-

abort_info

-

text

-

语句执行结束状态为aborted时显示异常信息。

-

resource_pool

-

text

-

用户使用的资源池。

-

control_group

-

text

-

语句所使用的Cgroup。

-

estimate_memory

-

integer

-

语句估算内存大小。

-

min_peak_memory

-

integer

-

语句在数据库实例上的最小内存峰值,单位MB。

-

max_peak_memory

-

integer

-

语句在数据库实例上的最大内存峰值,单位MB。

-

average_peak_memory

-

integer

-

语句执行过程中的内存使用平均值,单位MB。

-

memory_skew_percent

-

integer

-

语句数据库实例间的内存使用倾斜率。

-

spill_info

-

text

-
语句在数据库实例上的下盘信息:
  • None:数据库实例均未下盘。
  • All:数据库实例均下盘。
  • [a:b]:数量为b个数据库实例中有a个数据库实例下盘。
-
-

min_spill_size

-

integer

-

若发生下盘,数据库实例上下盘的最小数据量,单位MB,默认为0。

-

max_spill_size

-

integer

-

若发生下盘,数据库实例上下盘的最大数据量,单位MB,默认为0。

-

average_spill_size

-

integer

-

若发生下盘,数据库实例上下盘的平均数据量,单位MB,默认为0。

-

spill_skew_percent

-

integer

-

若发生下盘,数据库实例间下盘倾斜率。

-

min_dn_time

-

bigint

-

语句在数据库实例上的最小执行时间,单位ms。

-

max_dn_time

-

bigint

-

语句在数据库实例上的最大执行时间,单位ms。

-

average_dn_time

-

bigint

-

语句在数据库实例上的平均执行时间,单位ms。

-

dntime_skew_percent

-

integer

-

语句在数据库实例间的执行时间倾斜率。

-

min_cpu_time

-

bigint

-

语句在数据库实例上的最小CPU时间,单位ms。

-

max_cpu_time

-

bigint

-

语句在数据库实例上的最大CPU时间,单位ms。

-

total_cpu_time

-

bigint

-

语句在数据库实例上的CPU总时间,单位ms。

-

cpu_skew_percent

-

integer

-

语句在数据库实例间的CPU时间倾斜率。

-

min_peak_iops

-

integer

-

语句在数据库实例上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

-

max_peak_iops

-

integer

-

语句在数据库实例上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

-

average_peak_iops

-

integer

-

语句在数据库实例上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

-

iops_skew_percent

-

integer

-

语句在数据库实例间的IO倾斜率。

-

warning

-

text

-
主要显示如下几类告警信息:
  • Spill file size large than 256MB
  • Broadcast size large than 100MB
  • Early spill
  • Spill times is greater than 3
  • Spill on memory adaptive
  • Hash table conflict
-
-

queryid

-

bigint

-

语句执行使用的内部query id。

-

query

-

text

-

执行的语句。

-

query_plan

-

text

-

语句的执行计划。

-

node_group

-

text

-

语句所属用户对应的逻辑数据库实例。

-

cpu_top1_node_name

-

text

-

cpu使用率第1的节点名称。

-

cpu_top2_node_name

-

text

-

cpu使用率第2的节点名称。

-

cpu_top3_node_name

-

text

-

cpu使用率第3的节点名称。

-

cpu_top4_node_name

-

text

-

cpu使用率第4的节点名称。

-

cpu_top5_node_name

-

text

-

cpu使用率第5的节点名称。

-

mem_top1_node_name

-

text

-

内存使用量第1的节点名称。

-

mem_top2_node_name

-

text

-

内存使用量第2的节点名称。

-

mem_top3_node_name

-

text

-

内存使用量第3的节点名称。

-

mem_top4_node_name

-

text

-

内存使用量第4的节点名称。

-

mem_top5_node_name

-

text

-

内存使用量第5的节点名称。

-

cpu_top1_value

-

bigint

-

cpu使用率。

-

cpu_top2_value

-

bigint

-

cpu使用率。

-

cpu_top3_value

-

bigint

-

cpu使用率。

-

cpu_top4_value

-

bigint

-

cpu使用率。

-

cpu_top5_value

-

bigint

-

cpu使用率。

-

mem_top1_value

-

bigint

-

内存使用量。

-

mem_top2_value

-

bigint

-

内存使用量。

-

mem_top3_value

-

bigint

-

内存使用量。

-

mem_top4_value

-

bigint

-

内存使用量。

-

mem_top5_value

-

bigint

-

内存使用量。

-

top_mem_dn

-

text

-

内存使用量topN信息。

-

top_cpu_dn

-

text

-

cpu使用量topN信息。

-
+# GS\_WLM\_SESSION\_HISTORY + +GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库实例上执行作业结束后的负载管理记录。查询该视图需要 sysadmin 或者 monitor admin 权限。 + +**表 1** GS\_WLM\_SESSION\_HISTORY的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据库 OID 。

+

dbname

+

text

+

连接后端的数据库名称。

+

schemaname

+

text

+

模式的名称。

+

nodename

+

text

+

语句执行的数据库实例名称。

+

username

+

text

+

连接到后端的用户名。

+

application_name

+

text

+

连接到后端的应用名。

+

client_addr

+

inet

+

连接到后端的客户端的 IP 地址。 如果此字段是 null ,它表明通过服务器机器上 UNIX 套接字连接客户端或者这是内部进程,如 autovacuum 。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过 client_addr 的反向 DNS 查找得到。这个字段只有在启动 log_hostname 且使用 IP 连接时才非空。

+

client_port

+

integer

+

客户端用于与后端通讯的 TCP 端口号,如果使用 Unix 套接字,则为-1。

+

query_band

+

text

+

用于标示作业类型,可通过 GUC 参数 query_band 进行设置,默认为空字符串。

+

block_time

+

bigint

+

语句执行前的阻塞时间,包含语句解析和优化时间,单位 ms 。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

finish_time

+

timestamp with time zone

+

语句执行的结束时间。

+

duration

+

bigint

+

语句实际执行的时间,单位 ms 。

+

estimate_total_time

+

bigint

+

语句预估执行时间,单位 ms 。

+

status

+

text

+

语句执行结束状态:正常为 finished ,异常为 aborted 。

+

abort_info

+

text

+

语句执行结束状态为 aborted 时显示异常信息。

+

resource_pool

+

text

+

用户使用的资源池。

+

control_group

+

text

+

语句所使用的 Cgroup 。

+

estimate_memory

+

integer

+

语句估算内存大小。

+

min_peak_memory

+

integer

+

语句在数据库实例上的最小内存峰值,单位 MB 。

+

max_peak_memory

+

integer

+

语句在数据库实例上的最大内存峰值,单位 MB 。

+

average_peak_memory

+

integer

+

语句执行过程中的内存使用平均值,单位 MB 。

+

memory_skew_percent

+

integer

+

语句数据库实例间的内存使用倾斜率。

+

spill_info

+

text

+
语句在数据库实例上的下盘信息:
  • None:数据库实例均未下盘。
  • All:数据库实例均下盘。
  • [a:b]:数量为 b 个数据库实例中有 a 个数据库实例下盘。
+
+

min_spill_size

+

integer

+

若发生下盘,数据库实例上下盘的最小数据量,单位 MB ,默认为 0 。

+

max_spill_size

+

integer

+

若发生下盘,数据库实例上下盘的最大数据量,单位 MB ,默认为 0 。

+

average_spill_size

+

integer

+

若发生下盘,数据库实例上下盘的平均数据量,单位 MB ,默认为 0 。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库实例间下盘倾斜率。

+

min_dn_time

+

bigint

+

语句在数据库实例上的最小执行时间,单位 ms 。

+

max_dn_time

+

bigint

+

语句在数据库实例上的最大执行时间,单位 ms 。

+

average_dn_time

+

bigint

+

语句在数据库实例上的平均执行时间,单位 ms 。

+

dntime_skew_percent

+

integer

+

语句在数据库实例间的执行时间倾斜率。

+

min_cpu_time

+

bigint

+

语句在数据库实例上的最小 CPU 时间,单位 ms 。

+

max_cpu_time

+

bigint

+

语句在数据库实例上的最大 CPU 时间,单位 ms 。

+

total_cpu_time

+

bigint

+

语句在数据库实例上的 CPU 总时间,单位 ms 。

+

cpu_skew_percent

+

integer

+

语句在数据库实例间的 CPU 时间倾斜率。

+

min_peak_iops

+

integer

+

语句在数据库实例上的每秒最小 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

max_peak_iops

+

integer

+

语句在数据库实例上的每秒最大 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

average_peak_iops

+

integer

+

语句在数据库实例上的每秒平均 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

iops_skew_percent

+

integer

+

语句在数据库实例间的 IO 倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  • Spill file size large than 256MB
  • Broadcast size large than 100MB
  • Early spill
  • Spill times is greater than 3
  • Spill on memory adaptive
  • Hash table conflict
+
+

queryid

+

bigint

+

语句执行使用的内部 query id 。

+

query

+

text

+

执行的语句。

+

query_plan

+

text

+

语句的执行计划。

+

node_group

+

text

+

语句所属用户对应的逻辑数据库实例。

+

cpu_top1_node_name

+

text

+

cpu使用率第 1 的节点名称。

+

cpu_top2_node_name

+

text

+

cpu使用率第 2 的节点名称。

+

cpu_top3_node_name

+

text

+

cpu使用率第 3 的节点名称。

+

cpu_top4_node_name

+

text

+

cpu使用率第 4 的节点名称。

+

cpu_top5_node_name

+

text

+

cpu使用率第 5 的节点名称。

+

mem_top1_node_name

+

text

+

内存使用量第 1 的节点名称。

+

mem_top2_node_name

+

text

+

内存使用量第 2 的节点名称。

+

mem_top3_node_name

+

text

+

内存使用量第 3 的节点名称。

+

mem_top4_node_name

+

text

+

内存使用量第 4 的节点名称。

+

mem_top5_node_name

+

text

+

内存使用量第 5 的节点名称。

+

cpu_top1_value

+

bigint

+

cpu使用率。

+

cpu_top2_value

+

bigint

+

cpu使用率。

+

cpu_top3_value

+

bigint

+

cpu使用率。

+

cpu_top4_value

+

bigint

+

cpu使用率。

+

cpu_top5_value

+

bigint

+

cpu使用率。

+

mem_top1_value

+

bigint

+

内存使用量。

+

mem_top2_value

+

bigint

+

内存使用量。

+

mem_top3_value

+

bigint

+

内存使用量。

+

mem_top4_value

+

bigint

+

内存使用量。

+

mem_top5_value

+

bigint

+

内存使用量。

+

top_mem_dn

+

text

+

内存使用量 topN 信息。

+

top_cpu_dn

+

text

+

cpu使用量 topN 信息。

+
diff --git a/content/zh/docs/Developerguide/GS_WLM_SESSION_INFO.md b/content/zh/docs/Developerguide/GS_WLM_SESSION_INFO.md index 1c7a47988..cea45c4b4 100644 --- a/content/zh/docs/Developerguide/GS_WLM_SESSION_INFO.md +++ b/content/zh/docs/Developerguide/GS_WLM_SESSION_INFO.md @@ -1,6 +1,6 @@ -# GS\_WLM\_SESSION\_INFO - -GS\_WLM\_SESSION\_INFO视图显示数据库实例执行作业结束后的负载管理记录。查询该视图需要sysadmin权限。 - -具体的字段请参考[表1](GS_WLM_SESSION_HISTORY.md#zh-cn_topic_0112535431_table75981925115018)字段中的信息。 - +# GS\_WLM\_SESSION\_INFO + +GS\_WLM\_SESSION\_INFO视图显示数据库实例执行作业结束后的负载管理记录。查询该视图需要 sysadmin 权限。 + +具体的字段请参考[表1](GS_WLM_SESSION_HISTORY.md#zh-cn_topic_0112535431_table75981925115018)字段中的信息。 + diff --git a/content/zh/docs/Developerguide/GS_WLM_SESSION_INFO_ALL.md b/content/zh/docs/Developerguide/GS_WLM_SESSION_INFO_ALL.md index afaf603ce..aeb7afc77 100644 --- a/content/zh/docs/Developerguide/GS_WLM_SESSION_INFO_ALL.md +++ b/content/zh/docs/Developerguide/GS_WLM_SESSION_INFO_ALL.md @@ -1,221 +1,221 @@ -# GS\_WLM\_SESSION\_INFO\_ALL - -GS\_WLM\_SESSION\_INFO\_ALL视图显示在数据库实例上执行作业结束后的负载管理记录。查询该视图需要sysadmin或者monitor admin权限。 - -**表 1** GS\_WLM\_SESSION\_INFO\_ALL的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

userid

-

oid

-

用户OID。

-

username

-

name

-

用户名。

-

sysadmin

-

boolean

-

是否是管理员用户。

-

rpoid

-

oid

-

关联的资源池的OID。

-

respool

-

name

-

关联的资源池的名称。

-

parentid

-

oid

-

用户组的OID。

-

totalspace

-

bigint

-

用户的可用空间上限。

-

spacelimit

-

bigint

-

用户表空间限制。

-

childcount

-

interger

-

子用户的个数。

-

childlist

-

text

-

子用户列表。

-

n_returned_rows

-

bigint

-

SELECT返回的结果集行数。

-

n_tuples_fetched

-

bigint

-

随机扫描行。

-

n_tuples_returned

-

bigint

-

顺序扫描行。

-

n_tuples_inserted

-

bigint

-

插入行。

-

n_tuples_updated

-

bigint

-

更新行。

-

n_tuples_deleted

-

bigint

-

删除行。

-

n_blocks_fetched

-

bigint

-

buffer的块访问次数。

-

n_blocks_hit

-

bigint

-

buffer的块命中次数。

-

db_time

-

bigint

-

有效的DB时间花费,多线程将累加(单位:微秒)。

-

cpu_time

-

bigint

-

CPU时间(单位:微秒)。

-

execution_time

-

bigint

-

执行器内执行时间(单位:微秒)。

-

parse_time

-

bigint

-

SQL解析时间(单位:微秒)。

-

plan_time

-

bigint

-

SQL生成计划时间(单位:微秒)。

-

rewrite_time

-

bigint

-

SQL重写时间(单位:微秒)。

-

pl_execution_time

-

bigint

-

plpgsql上的执行时间(单位:微秒)。

-

pl_compilation_time

-

bigint

-

plpgsql上的编译时间(单位:微秒)。

-

net_send_time

-

bigint

-

网络上的时间花费(单位:微秒)。

-

data_io_time

-

bigint

-

IO上的时间花费(单位:微秒)。

-

is_slow_query

-

bigint

-

是否是慢SQL记录。

-
- +# GS\_WLM\_SESSION\_INFO\_ALL + +GS\_WLM\_SESSION\_INFO\_ALL视图显示在数据库实例上执行作业结束后的负载管理记录。查询该视图需要 sysadmin 或者 monitor admin 权限。 + +**表 1** GS\_WLM\_SESSION\_INFO\_ALL的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

userid

+

oid

+

用户 OID 。

+

username

+

name

+

用户名。

+

sysadmin

+

boolean

+

是否是管理员用户。

+

rpoid

+

oid

+

关联的资源池的 OID 。

+

respool

+

name

+

关联的资源池的名称。

+

parentid

+

oid

+

用户组的 OID 。

+

totalspace

+

bigint

+

用户的可用空间上限。

+

spacelimit

+

bigint

+

用户表空间限制。

+

childcount

+

interger

+

子用户的个数。

+

childlist

+

text

+

子用户列表。

+

n_returned_rows

+

bigint

+

SELECT返回的结果集行数。

+

n_tuples_fetched

+

bigint

+

随机扫描行。

+

n_tuples_returned

+

bigint

+

顺序扫描行。

+

n_tuples_inserted

+

bigint

+

插入行。

+

n_tuples_updated

+

bigint

+

更新行。

+

n_tuples_deleted

+

bigint

+

删除行。

+

n_blocks_fetched

+

bigint

+

buffer的块访问次数。

+

n_blocks_hit

+

bigint

+

buffer的块命中次数。

+

db_time

+

bigint

+

有效的 DB 时间花费,多线程将累加(单位:微秒)。

+

cpu_time

+

bigint

+

CPU时间(单位:微秒)。

+

execution_time

+

bigint

+

执行器内执行时间(单位:微秒)。

+

parse_time

+

bigint

+

SQL解析时间(单位:微秒)。

+

plan_time

+

bigint

+

SQL生成计划时间(单位:微秒)。

+

rewrite_time

+

bigint

+

SQL重写时间(单位:微秒)。

+

pl_execution_time

+

bigint

+

plpgsql上的执行时间(单位:微秒)。

+

pl_compilation_time

+

bigint

+

plpgsql上的编译时间(单位:微秒)。

+

net_send_time

+

bigint

+

网络上的时间花费(单位:微秒)。

+

data_io_time

+

bigint

+

IO上的时间花费(单位:微秒)。

+

is_slow_query

+

bigint

+

是否是慢 SQL 记录。

+
+ diff --git a/content/zh/docs/Developerguide/GS_WLM_SESSION_QUERY_INFO_ALL.md b/content/zh/docs/Developerguide/GS_WLM_SESSION_QUERY_INFO_ALL.md index ce3ffd947..21bb70b40 100644 --- a/content/zh/docs/Developerguide/GS_WLM_SESSION_QUERY_INFO_ALL.md +++ b/content/zh/docs/Developerguide/GS_WLM_SESSION_QUERY_INFO_ALL.md @@ -1,629 +1,629 @@ -# GS\_WLM\_SESSION\_QUERY\_INFO\_ALL - -GS\_WLM\_SESSION\_QUERY\_INFO\_ALL系统表显示当前数据库实例执行作业结束后的负载管理记录。此数据是从内核中转储到系统表中的数据。当设置GUC参数[enable\_resource\_record](负载管理.MD)为on时,系统会定时(周期为3分钟)将内核中query信息导入GS\_WLM\_SESSION\_QUERY\_INFO\_ALL系统表。查询该系统表需要sysadmin权限,且仅在数据库postgres下面查询时有数据。 - -**表 1** GS\_WLM\_SESSION\_QUERY\_INFO\_ALL字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

连接后端的数据库OID。

-

dbname

-

text

-

连接后端的数据库名称。

-

schemaname

-

text

-

模式的名称。

-

nodename

-

text

-

语句执行的数据库实例名称。

-

username

-

text

-

连接到后端的用户名。

-

application_name

-

text

-

连接到后端的应用名。

-

client_addr

-

inet

-

连接到后端的客户端的IP地址。 如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

-

client_hostname

-

text

-

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

-

client_port

-

integer

-

客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。

-

query_band

-

text

-

用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。

-

block_time

-

bigint

-

语句执行前的阻塞时间,包含语句解析和优化时间,单位ms。

-

start_time

-

timestamp with time zone

-

语句执行的开始时间。

-

finish_time

-

timestamp with time zone

-

语句执行的结束时间。

-

duration

-

bigint

-

语句实际执行的时间,单位ms。

-

estimate_total_time

-

bigint

-

语句预估执行时间,单位ms。

-

status

-

text

-

语句执行结束状态:正常为finished,异常为aborted。

-

abort_info

-

text

-

语句执行结束状态为aborted时显示异常信息。

-

resource_pool

-

text

-

用户使用的资源池。

-

control_group

-

text

-

语句所使用的Cgroup。

-

estimate_memory

-

integer

-

语句估算内存大小。

-

min_peak_memory

-

integer

-

语句在数据库实例上的最小内存峰值,单位MB。

-

max_peak_memory

-

integer

-

语句在数据库实例上的最大内存峰值,单位MB。

-

average_peak_memory

-

integer

-

语句执行过程中的内存使用平均值,单位MB。

-

memory_skew_percent

-

integer

-

语句数据库实例间的内存使用倾斜率。

-

spill_info

-

text

-
语句在数据库实例上的下盘信息:
  • None:数据库实例均未下盘。
  • All:数据库实例均下盘。
  • [a:b]:数量为b个数据库实例中有a个数据库实例下盘。
-
-

min_spill_size

-

integer

-

若发生下盘,数据库实例上下盘的最小数据量,单位MB,默认为0。

-

max_spill_size

-

integer

-

若发生下盘,数据库实例上下盘的最大数据量,单位MB,默认为0。

-

average_spill_size

-

integer

-

若发生下盘,数据库实例上下盘的平均数据量,单位MB,默认为0。

-

spill_skew_percent

-

integer

-

若发生下盘,数据库实例间下盘倾斜率。

-

min_dn_time

-

bigint

-

语句在数据库实例上的最小执行时间,单位ms。

-

max_dn_time

-

bigint

-

语句在数据库实例上的最大执行时间,单位ms。

-

average_dn_time

-

bigint

-

语句在数据库实例上的平均执行时间,单位ms。

-

dntime_skew_percent

-

integer

-

语句在数据库实例间的执行时间倾斜率。

-

min_cpu_time

-

bigint

-

语句在数据库实例上的最小CPU时间,单位ms。

-

max_cpu_time

-

bigint

-

语句在数据库实例上的最大CPU时间,单位ms。

-

total_cpu_time

-

bigint

-

语句在数据库实例上的CPU总时间,单位ms。

-

cpu_skew_percent

-

integer

-

语句在数据库实例间的CPU时间倾斜率。

-

min_peak_iops

-

integer

-

语句在数据库实例上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

-

max_peak_iops

-

integer

-

语句在数据库实例上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

-

average_peak_iops

-

integer

-

语句在数据库实例上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

-

iops_skew_percent

-

integer

-

语句在数据库实例间的IO倾斜率。

-

warning

-

text

-
主要显示如下几类告警信息:
  • Spill file size large than 256MB
  • Broadcast size large than 100MB
  • Early spill
  • Spill times is greater than 3
  • Spill on memory adaptive
  • Hash table conflict
-
-

queryid

-

bigint

-

语句执行使用的内部query id。

-

query

-

text

-

执行的语句。

-

query_plan

-

text

-

语句的执行计划。

-

node_group

-

text

-

语句所属用户对应的逻辑数据库实例。

-

cpu_top1_node_name

-

text

-

cpu使用率第1的节点名称。

-

cpu_top2_node_name

-

text

-

cpu使用率第2的节点名称。

-

cpu_top3_node_name

-

text

-

cpu使用率第3的节点名称。

-

cpu_top4_node_name

-

text

-

cpu使用率第4的节点名称。

-

cpu_top5_node_name

-

text

-

cpu使用率第5的节点名称。

-

mem_top1_node_name

-

text

-

内存使用量第1的节点名称。

-

mem_top2_node_name

-

text

-

内存使用量第5的节点名称。

-

mem_top3_node_name

-

text

-

内存使用量第5的节点名称。

-

mem_top4_node_name

-

text

-

内存使用量第5的节点名称。

-

mem_top5_node_name

-

text

-

内存使用量第5的节点名称。

-

cpu_top1_value

-

bigint

-

cpu使用率。

-

cpu_top2_value

-

bigint

-

cpu使用率。

-

cpu_top3_value

-

bigint

-

cpu使用率。

-

cpu_top4_value

-

bigint

-

cpu使用率。

-

cpu_top5_value

-

bigint

-

cpu使用率。

-

mem_top1_value

-

bigint

-

内存使用量。

-

mem_top2_value

-

bigint

-

内存使用量。

-

mem_top3_value

-

bigint

-

内存使用量。

-

mem_top4_value

-

bigint

-

内存使用量。

-

mem_top5_value

-

bigint

-

内存使用量。

-

top_mem_dn

-

text

-

内存使用量topN信息。

-

top_cpu_dn

-

text

-

cpu使用量topN信息。

-

n_returned_rows

-

bigint

-

Select返回的结果集行数。

-

n_tuples_fetched

-

bigint

-

随机扫描行数。

-

n_tuples_returned

-

bigint

-

顺序扫描行数。

-

n_tuples_inserted

-

bigint

-

插入行数。

-

n_tuples_updated

-

bigint

-

更新行数。

-

n_tuples_deleted

-

bigint

-

删除行数。

-

n_blocks_fetched

-

bigint

-

Cache加载次数。

-

n_blocks_hit

-

bigint

-

Cache命中数。

-

db_time

-

bigint

-

有效的DB时间花费,多线程将累加(单位:微秒)。

-

cpu_time

-

bigint

-

CPU时间(单位:微秒)。

-

execution_time

-

bigint

-

执行器内执行时间(单位:微秒)。

-

parse_time

-

bigint

-

SQL解析时间(单位:微秒)。

-

plan_time

-

bigint

-

SQL生成计划时间(单位:微秒)。

-

rewrite_time

-

bigint

-

SQL重写时间(单位:微秒)。

-

pl_execution_time

-

bigint

-

plpgsql上的执行时间(单位:微秒)。

-

pl_compilation_time

-

bigint

-

plpgsql上的编译时间(单位:微秒)。

-

net_send_time

-

bigint

-

网络上的时间花费(单位:微秒)。

-

data_io_time

-

bigint

-

IO上的时间花费(单位:微秒)。

-

is_slow_query

-

bigint

-

标记是否为慢查询。

-

取值为1时表示其为慢查询。

-
+# GS\_WLM\_SESSION\_QUERY\_INFO\_ALL + +GS\_WLM\_SESSION\_QUERY\_INFO\_ALL系统表显示当前数据库实例执行作业结束后的负载管理记录。此数据是从内核中转储到系统表中的数据。当设置 GUC 参数[enable\_resource\_record](负载管理.MD)为 on 时,系统会定时(周期为 3 分钟)将内核中 query 信息导入GS\_WLM\_SESSION\_QUERY\_INFO\_ALL系统表。查询该系统表需要 sysadmin 权限,且仅在数据库 postgres 下面查询时有数据。 + +**表 1** GS\_WLM\_SESSION\_QUERY\_INFO\_ALL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据库 OID 。

+

dbname

+

text

+

连接后端的数据库名称。

+

schemaname

+

text

+

模式的名称。

+

nodename

+

text

+

语句执行的数据库实例名称。

+

username

+

text

+

连接到后端的用户名。

+

application_name

+

text

+

连接到后端的应用名。

+

client_addr

+

inet

+

连接到后端的客户端的 IP 地址。 如果此字段是 null ,它表明通过服务器机器上 UNIX 套接字连接客户端或者这是内部进程,如 autovacuum 。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过 client_addr 的反向 DNS 查找得到。这个字段只有在启动 log_hostname 且使用 IP 连接时才非空。

+

client_port

+

integer

+

客户端用于与后端通讯的 TCP 端口号,如果使用 Unix 套接字,则为-1。

+

query_band

+

text

+

用于标示作业类型,可通过 GUC 参数 query_band 进行设置,默认为空字符串。

+

block_time

+

bigint

+

语句执行前的阻塞时间,包含语句解析和优化时间,单位 ms 。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

finish_time

+

timestamp with time zone

+

语句执行的结束时间。

+

duration

+

bigint

+

语句实际执行的时间,单位 ms 。

+

estimate_total_time

+

bigint

+

语句预估执行时间,单位 ms 。

+

status

+

text

+

语句执行结束状态:正常为 finished ,异常为 aborted 。

+

abort_info

+

text

+

语句执行结束状态为 aborted 时显示异常信息。

+

resource_pool

+

text

+

用户使用的资源池。

+

control_group

+

text

+

语句所使用的 Cgroup 。

+

estimate_memory

+

integer

+

语句估算内存大小。

+

min_peak_memory

+

integer

+

语句在数据库实例上的最小内存峰值,单位 MB 。

+

max_peak_memory

+

integer

+

语句在数据库实例上的最大内存峰值,单位 MB 。

+

average_peak_memory

+

integer

+

语句执行过程中的内存使用平均值,单位 MB 。

+

memory_skew_percent

+

integer

+

语句数据库实例间的内存使用倾斜率。

+

spill_info

+

text

+
语句在数据库实例上的下盘信息:
  • None:数据库实例均未下盘。
  • All:数据库实例均下盘。
  • [a:b]:数量为 b 个数据库实例中有 a 个数据库实例下盘。
+
+

min_spill_size

+

integer

+

若发生下盘,数据库实例上下盘的最小数据量,单位 MB ,默认为 0 。

+

max_spill_size

+

integer

+

若发生下盘,数据库实例上下盘的最大数据量,单位 MB ,默认为 0 。

+

average_spill_size

+

integer

+

若发生下盘,数据库实例上下盘的平均数据量,单位 MB ,默认为 0 。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库实例间下盘倾斜率。

+

min_dn_time

+

bigint

+

语句在数据库实例上的最小执行时间,单位 ms 。

+

max_dn_time

+

bigint

+

语句在数据库实例上的最大执行时间,单位 ms 。

+

average_dn_time

+

bigint

+

语句在数据库实例上的平均执行时间,单位 ms 。

+

dntime_skew_percent

+

integer

+

语句在数据库实例间的执行时间倾斜率。

+

min_cpu_time

+

bigint

+

语句在数据库实例上的最小 CPU 时间,单位 ms 。

+

max_cpu_time

+

bigint

+

语句在数据库实例上的最大 CPU 时间,单位 ms 。

+

total_cpu_time

+

bigint

+

语句在数据库实例上的 CPU 总时间,单位 ms 。

+

cpu_skew_percent

+

integer

+

语句在数据库实例间的 CPU 时间倾斜率。

+

min_peak_iops

+

integer

+

语句在数据库实例上的每秒最小 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

max_peak_iops

+

integer

+

语句在数据库实例上的每秒最大 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

average_peak_iops

+

integer

+

语句在数据库实例上的每秒平均 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

iops_skew_percent

+

integer

+

语句在数据库实例间的 IO 倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  • Spill file size large than 256MB
  • Broadcast size large than 100MB
  • Early spill
  • Spill times is greater than 3
  • Spill on memory adaptive
  • Hash table conflict
+
+

queryid

+

bigint

+

语句执行使用的内部 query id 。

+

query

+

text

+

执行的语句。

+

query_plan

+

text

+

语句的执行计划。

+

node_group

+

text

+

语句所属用户对应的逻辑数据库实例。

+

cpu_top1_node_name

+

text

+

cpu使用率第 1 的节点名称。

+

cpu_top2_node_name

+

text

+

cpu使用率第 2 的节点名称。

+

cpu_top3_node_name

+

text

+

cpu使用率第 3 的节点名称。

+

cpu_top4_node_name

+

text

+

cpu使用率第 4 的节点名称。

+

cpu_top5_node_name

+

text

+

cpu使用率第 5 的节点名称。

+

mem_top1_node_name

+

text

+

内存使用量第 1 的节点名称。

+

mem_top2_node_name

+

text

+

内存使用量第 5 的节点名称。

+

mem_top3_node_name

+

text

+

内存使用量第 5 的节点名称。

+

mem_top4_node_name

+

text

+

内存使用量第 5 的节点名称。

+

mem_top5_node_name

+

text

+

内存使用量第 5 的节点名称。

+

cpu_top1_value

+

bigint

+

cpu使用率。

+

cpu_top2_value

+

bigint

+

cpu使用率。

+

cpu_top3_value

+

bigint

+

cpu使用率。

+

cpu_top4_value

+

bigint

+

cpu使用率。

+

cpu_top5_value

+

bigint

+

cpu使用率。

+

mem_top1_value

+

bigint

+

内存使用量。

+

mem_top2_value

+

bigint

+

内存使用量。

+

mem_top3_value

+

bigint

+

内存使用量。

+

mem_top4_value

+

bigint

+

内存使用量。

+

mem_top5_value

+

bigint

+

内存使用量。

+

top_mem_dn

+

text

+

内存使用量 topN 信息。

+

top_cpu_dn

+

text

+

cpu使用量 topN 信息。

+

n_returned_rows

+

bigint

+

Select返回的结果集行数。

+

n_tuples_fetched

+

bigint

+

随机扫描行数。

+

n_tuples_returned

+

bigint

+

顺序扫描行数。

+

n_tuples_inserted

+

bigint

+

插入行数。

+

n_tuples_updated

+

bigint

+

更新行数。

+

n_tuples_deleted

+

bigint

+

删除行数。

+

n_blocks_fetched

+

bigint

+

Cache加载次数。

+

n_blocks_hit

+

bigint

+

Cache命中数。

+

db_time

+

bigint

+

有效的 DB 时间花费,多线程将累加(单位:微秒)。

+

cpu_time

+

bigint

+

CPU时间(单位:微秒)。

+

execution_time

+

bigint

+

执行器内执行时间(单位:微秒)。

+

parse_time

+

bigint

+

SQL解析时间(单位:微秒)。

+

plan_time

+

bigint

+

SQL生成计划时间(单位:微秒)。

+

rewrite_time

+

bigint

+

SQL重写时间(单位:微秒)。

+

pl_execution_time

+

bigint

+

plpgsql上的执行时间(单位:微秒)。

+

pl_compilation_time

+

bigint

+

plpgsql上的编译时间(单位:微秒)。

+

net_send_time

+

bigint

+

网络上的时间花费(单位:微秒)。

+

data_io_time

+

bigint

+

IO上的时间花费(单位:微秒)。

+

is_slow_query

+

bigint

+

标记是否为慢查询。

+

取值为 1 时表示其为慢查询。

+
diff --git a/content/zh/docs/Developerguide/GS_WLM_SESSION_STATISTICS.md b/content/zh/docs/Developerguide/GS_WLM_SESSION_STATISTICS.md index ad45b8009..8db3a35d4 100644 --- a/content/zh/docs/Developerguide/GS_WLM_SESSION_STATISTICS.md +++ b/content/zh/docs/Developerguide/GS_WLM_SESSION_STATISTICS.md @@ -1,363 +1,363 @@ -# GS\_WLM\_SESSION\_STATISTICS - -GS\_WLM\_SESSION\_STATISTICS视图显示当前用户在数据库实例上正在执行的作业的负载管理记录。查询该视图需要sysadmin权限。 - -**表 1** GS\_WLM\_SESSION\_STATISTICS的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

连接后端的数据OID。

-

dbname

-

name

-

连接后端的数据库名称。

-

schemaname

-

text

-

模式的名称。

-

nodename

-

text

-

语句执行的数据库实例名称。

-

username

-

name

-

连接到后端的用户名。

-

application_name

-

text

-

连接到后端的应用名。

-

client_addr

-

inet

-

连接到后端的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

-

client_hostname

-

text

-

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

-

client_port

-

integer

-

客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。

-

query_band

-

text

-

用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。

-

pid

-

bigint

-

后端线程ID。

-

sessionid

-

bigint

-

会话ID。

-

block_time

-

bigint

-

语句执行前的阻塞时间,单位ms。

-

start_time

-

timestamp with time zone

-

语句执行的开始时间。

-

duration

-

bigint

-

语句已经执行的时间,单位ms。

-

estimate_total_time

-

bigint

-

语句执行预估总时间,单位ms。

-

estimate_left_time

-

bigint

-

语句执行预估剩余时间,单位ms。

-

enqueue

-

text

-

工作负载管理资源状态。

-

resource_pool

-

name

-

用户使用的资源池。

-

control_group

-

text

-

语句所使用的Cgroup。

-

estimate_memory

-

integer

-

语句预估使用内存,单位MB。

-

min_peak_memory

-

integer

-

语句在数据库实例上的最小内存峰值,单位MB。

-

max_peak_memory

-

integer

-

语句在数据库实例上的最大内存峰值,单位MB。

-

average_peak_memory

-

integer

-

语句执行过程中的内存使用平均值,单位MB。

-

memory_skew_percent

-

integer

-

语句在数据库实例间的内存使用倾斜率。

-

spill_info

-

text

-
语句在数据库实例上的下盘信息:
  • None:数据库实例均未下盘。
  • All:数据库实例均下盘。
  • [a:b]:数量为b个数据库实例中有a个数据库实例下盘。
-
-

min_spill_size

-

integer

-

若发生下盘,数据库实例上下盘的最小数据量,单位MB,默认为0。

-

max_spill_size

-

integer

-

若发生下盘,数据库实例上下盘的最大数据量,单位MB,默认为0。

-

average_spill_size

-

integer

-

若发生下盘,数据库实例上下盘的平均数据量,单位MB,默认为0。

-

spill_skew_percent

-

integer

-

若发生下盘,数据库实例间下盘倾斜率。

-

min_dn_time

-

bigint

-

语句在数据库实例上的最小执行时间,单位ms。

-

max_dn_time

-

bigint

-

语句在数据库实例上的最大执行时间,单位ms。

-

average_dn_time

-

bigint

-

语句在数据库实例上的平均执行时间,单位ms。

-

dntime_skew_percent

-

integer

-

语句在数据库实例间的执行时间倾斜率。

-

min_cpu_time

-

bigint

-

语句在数据库实例上的最小CPU时间,单位ms。

-

max_cpu_time

-

bigint

-

语句在数据库实例上的最大CPU时间,单位ms。

-

total_cpu_time

-

bigint

-

语句在数据库实例上的CPU总时间,单位ms。

-

cpu_skew_percent

-

integer

-

语句在数据库实例间的CPU时间倾斜率。

-

min_peak_iops

-

integer

-

语句在数据库实例上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

-

max_peak_iops

-

integer

-

语句在数据库实例上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

-

average_peak_iops

-

integer

-

语句在数据库实例上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

-

iops_skew_percent

-

integer

-

语句在数据库实例间的IO倾斜率。

-

warning

-

text

-
主要显示如下几类告警信息:
  • Spill file size large than 256MB
  • Broadcast size large than 100MB
  • Early spill
  • Spill times is greater than 3
  • Spill on memory adaptive
  • Hash table conflict
-
-

queryid

-

bigint

-

语句执行使用的内部query id。

-

query

-

text

-

正在执行的语句。

-

query_plan

-

text

-

语句的执行计划。

-

node_group

-

text

-

语句所属用户对应的逻辑数据库实例。

-

top_cpu_dn

-

text

-

cpu使用量topN信息。

-

top_mem_dn

-

text

-

内存使用量topN信息。

-
- +# GS\_WLM\_SESSION\_STATISTICS + +GS\_WLM\_SESSION\_STATISTICS视图显示当前用户在数据库实例上正在执行的作业的负载管理记录。查询该视图需要 sysadmin 权限。 + +**表 1** GS\_WLM\_SESSION\_STATISTICS的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据 OID 。

+

dbname

+

name

+

连接后端的数据库名称。

+

schemaname

+

text

+

模式的名称。

+

nodename

+

text

+

语句执行的数据库实例名称。

+

username

+

name

+

连接到后端的用户名。

+

application_name

+

text

+

连接到后端的应用名。

+

client_addr

+

inet

+

连接到后端的客户端的 IP 地址。如果此字段是 null ,它表明通过服务器机器上 UNIX 套接字连接客户端或者这是内部进程,如 autovacuum 。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过 client_addr 的反向 DNS 查找得到。这个字段只有在启动 log_hostname 且使用 IP 连接时才非空。

+

client_port

+

integer

+

客户端用于与后端通讯的 TCP 端口号,如果使用 Unix 套接字,则为-1。

+

query_band

+

text

+

用于标示作业类型,可通过 GUC 参数 query_band 进行设置,默认为空字符串。

+

pid

+

bigint

+

后端线程 ID 。

+

sessionid

+

bigint

+

会话 ID 。

+

block_time

+

bigint

+

语句执行前的阻塞时间,单位 ms 。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

duration

+

bigint

+

语句已经执行的时间,单位 ms 。

+

estimate_total_time

+

bigint

+

语句执行预估总时间,单位 ms 。

+

estimate_left_time

+

bigint

+

语句执行预估剩余时间,单位 ms 。

+

enqueue

+

text

+

工作负载管理资源状态。

+

resource_pool

+

name

+

用户使用的资源池。

+

control_group

+

text

+

语句所使用的 Cgroup 。

+

estimate_memory

+

integer

+

语句预估使用内存,单位 MB 。

+

min_peak_memory

+

integer

+

语句在数据库实例上的最小内存峰值,单位 MB 。

+

max_peak_memory

+

integer

+

语句在数据库实例上的最大内存峰值,单位 MB 。

+

average_peak_memory

+

integer

+

语句执行过程中的内存使用平均值,单位 MB 。

+

memory_skew_percent

+

integer

+

语句在数据库实例间的内存使用倾斜率。

+

spill_info

+

text

+
语句在数据库实例上的下盘信息:
  • None:数据库实例均未下盘。
  • All:数据库实例均下盘。
  • [a:b]:数量为 b 个数据库实例中有 a 个数据库实例下盘。
+
+

min_spill_size

+

integer

+

若发生下盘,数据库实例上下盘的最小数据量,单位 MB ,默认为 0 。

+

max_spill_size

+

integer

+

若发生下盘,数据库实例上下盘的最大数据量,单位 MB ,默认为 0 。

+

average_spill_size

+

integer

+

若发生下盘,数据库实例上下盘的平均数据量,单位 MB ,默认为 0 。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库实例间下盘倾斜率。

+

min_dn_time

+

bigint

+

语句在数据库实例上的最小执行时间,单位 ms 。

+

max_dn_time

+

bigint

+

语句在数据库实例上的最大执行时间,单位 ms 。

+

average_dn_time

+

bigint

+

语句在数据库实例上的平均执行时间,单位 ms 。

+

dntime_skew_percent

+

integer

+

语句在数据库实例间的执行时间倾斜率。

+

min_cpu_time

+

bigint

+

语句在数据库实例上的最小 CPU 时间,单位 ms 。

+

max_cpu_time

+

bigint

+

语句在数据库实例上的最大 CPU 时间,单位 ms 。

+

total_cpu_time

+

bigint

+

语句在数据库实例上的 CPU 总时间,单位 ms 。

+

cpu_skew_percent

+

integer

+

语句在数据库实例间的 CPU 时间倾斜率。

+

min_peak_iops

+

integer

+

语句在数据库实例上的每秒最小 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

max_peak_iops

+

integer

+

语句在数据库实例上的每秒最大 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

average_peak_iops

+

integer

+

语句在数据库实例上的每秒平均 IO 峰值(列存单位是次/s,行存单位是万次/s)。

+

iops_skew_percent

+

integer

+

语句在数据库实例间的 IO 倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  • Spill file size large than 256MB
  • Broadcast size large than 100MB
  • Early spill
  • Spill times is greater than 3
  • Spill on memory adaptive
  • Hash table conflict
+
+

queryid

+

bigint

+

语句执行使用的内部 query id 。

+

query

+

text

+

正在执行的语句。

+

query_plan

+

text

+

语句的执行计划。

+

node_group

+

text

+

语句所属用户对应的逻辑数据库实例。

+

top_cpu_dn

+

text

+

cpu使用量 topN 信息。

+

top_mem_dn

+

text

+

内存使用量 topN 信息。

+
+ diff --git a/content/zh/docs/Developerguide/GS_WLM_USER_INFO.md b/content/zh/docs/Developerguide/GS_WLM_USER_INFO.md index 4338358fb..199e4a9d0 100644 --- a/content/zh/docs/Developerguide/GS_WLM_USER_INFO.md +++ b/content/zh/docs/Developerguide/GS_WLM_USER_INFO.md @@ -1,88 +1,88 @@ -# GS\_WLM\_USER\_INFO - -用户统计信息视图。 - -**表 1** GS\_WLM\_USER\_INFO字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

userid

-

oid

-

用户OID。

-

username

-

name

-

用户名。

-

sysadmin

-

boolean

-

是否是管理员用户。

-

rpoid

-

oid

-

关联的资源池的OID。

-

respool

-

name

-

关联的资源池的名称。

-

parentid

-

oid

-

用户组的OID。

-

totalspace

-

bigint

-

用户的可用空间上限。

-

spacelimit

-

bigint

-

用户表空间限制。

-

childcount

-

interger

-

子用户的个数。

-

childlist

-

text

-

子用户列表。

-
- +# GS\_WLM\_USER\_INFO + +用户统计信息视图。 + +**表 1** GS\_WLM\_USER\_INFO字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

userid

+

oid

+

用户 OID 。

+

username

+

name

+

用户名。

+

sysadmin

+

boolean

+

是否是管理员用户。

+

rpoid

+

oid

+

关联的资源池的 OID 。

+

respool

+

name

+

关联的资源池的名称。

+

parentid

+

oid

+

用户组的 OID 。

+

totalspace

+

bigint

+

用户的可用空间上限。

+

spacelimit

+

bigint

+

用户表空间限制。

+

childcount

+

interger

+

子用户的个数。

+

childlist

+

text

+

子用户列表。

+
+ diff --git a/content/zh/docs/Developerguide/GS_WLM_USER_RESOURCE_HISTORY.md b/content/zh/docs/Developerguide/GS_WLM_USER_RESOURCE_HISTORY.md index fcae9ffe9..634d70224 100644 --- a/content/zh/docs/Developerguide/GS_WLM_USER_RESOURCE_HISTORY.md +++ b/content/zh/docs/Developerguide/GS_WLM_USER_RESOURCE_HISTORY.md @@ -1,144 +1,144 @@ -# GS\_WLM\_USER\_RESOURCE\_HISTORY - -GS\_WLM\_USER\_RESOURCE\_HISTORY系统表存储与用户使用资源相关的信息。该系统表的每条记录都是对应时间点某用户的资源使用情况,包括:内存、CPU核数、存储空间、临时空间、算子落盘空间、逻辑IO流量、逻辑IO次数和逻辑IO速率信息。其中,内存、CPU、IO相关监控项仅记录用户复杂作业的资源使用情况。对于IO相关监控项,当参数enable\_logical\_io\_statistics为on时才有效;当参数enable\_user\_metric\_persistent为on时,才会开启用户监控数据保存功能。GS\_WLM\_USER\_RESOURCE\_HISTORY系统表的数据来源于PG\_TOTAL\_USER\_RESOURCE\_INFO视图。查询该系统表需要sysadmin权限,且仅在数据库postgres下面查询时有数据。 - -**表 1** GS\_WLM\_USER\_RESOURCE\_HISTORY - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

username

-

text

-

用户名

-

timestamp

-

timestamp with time zone

-

时间戳

-

used_memory

-

integer

-

正在使用的内存大小,单位MB。

-

total_memory

-

integer

-

可以使用的内存大小,单位为MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。

-

used_cpu

-

real

-

正在使用的CPU核数。

-

total_cpu

-

integer

-

该机器节点上,用户关联控制组的CPU核数总和。

-

used_space

-

bigint

-

已使用的存储空间大小,单位KB。

-

total_space

-

bigint

-

可使用的存储空间大小,单位KB,值为-1表示未限制最大存储空间。

-

used_temp_space

-

bigint

-

已使用的临时存储空间大小,单位KB。

-

total_temp_space

-

bigint

-

可使用的临存储空间大小,单位KB,值为-1表示未限制最大临时存储空间。

-

used_spill_space

-

bigint

-

已使用的算子落盘存储空间大小,单位KB。

-

total_spill_space

-

bigint

-

可使用的算子落盘存储空间大小,单位KB,值为-1表示未限制最大算子落盘存储空间。

-

read_kbytes

-

bigint

-

监控周期内,读操作的字节流量,单位KB。

-

write_kbytes

-

bigint

-

监控周期内,写操作的字节流量,单位KB。

-

read_counts

-

bigint

-

监控周期内,读操作的次数,单位次。

-

write_counts

-

bigint

-

监控周期内,写操作的次数,单位次。

-

read_speed

-

real

-

监控周期内,读操作的字节速率,单位KB/s。

-

write_speed

-

real

-

监控周期内,写操作的字节速率,单位KB/s。

-
- +# GS\_WLM\_USER\_RESOURCE\_HISTORY + +GS\_WLM\_USER\_RESOURCE\_HISTORY系统表存储与用户使用资源相关的信息。该系统表的每条记录都是对应时间点某用户的资源使用情况,包括:内存、CPU核数、存储空间、临时空间、算子落盘空间、逻辑 IO 流量、逻辑 IO 次数和逻辑 IO 速率信息。其中,内存、CPU、IO相关监控项仅记录用户复杂作业的资源使用情况。对于 IO 相关监控项,当参数enable\_logical\_io\_statistics为 on 时才有效;当参数enable\_user\_metric\_persistent为 on 时,才会开启用户监控数据保存功能。GS\_WLM\_USER\_RESOURCE\_HISTORY系统表的数据来源于PG\_TOTAL\_USER\_RESOURCE\_INFO视图。查询该系统表需要 sysadmin 权限,且仅在数据库 postgres 下面查询时有数据。 + +**表 1** GS\_WLM\_USER\_RESOURCE\_HISTORY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

username

+

text

+

用户名

+

timestamp

+

timestamp with time zone

+

时间戳

+

used_memory

+

integer

+

正在使用的内存大小,单位 MB 。

+

total_memory

+

integer

+

可以使用的内存大小,单位为 MB 。值为 0 表示未限制最大可用内存,其限制取决于数据库最大可用内存。

+

used_cpu

+

real

+

正在使用的 CPU 核数。

+

total_cpu

+

integer

+

该机器节点上,用户关联控制组的 CPU 核数总和。

+

used_space

+

bigint

+

已使用的存储空间大小,单位 KB 。

+

total_space

+

bigint

+

可使用的存储空间大小,单位 KB ,值为-1表示未限制最大存储空间。

+

used_temp_space

+

bigint

+

已使用的临时存储空间大小,单位 KB 。

+

total_temp_space

+

bigint

+

可使用的临存储空间大小,单位 KB ,值为-1表示未限制最大临时存储空间。

+

used_spill_space

+

bigint

+

已使用的算子落盘存储空间大小,单位 KB 。

+

total_spill_space

+

bigint

+

可使用的算子落盘存储空间大小,单位 KB ,值为-1表示未限制最大算子落盘存储空间。

+

read_kbytes

+

bigint

+

监控周期内,读操作的字节流量,单位 KB 。

+

write_kbytes

+

bigint

+

监控周期内,写操作的字节流量,单位 KB 。

+

read_counts

+

bigint

+

监控周期内,读操作的次数,单位次。

+

write_counts

+

bigint

+

监控周期内,写操作的次数,单位次。

+

read_speed

+

real

+

监控周期内,读操作的字节速率,单位KB/s。

+

write_speed

+

real

+

监控周期内,写操作的字节速率,单位KB/s。

+
+ diff --git "a/content/zh/docs/Developerguide/GUC\344\275\277\347\224\250\350\257\264\346\230\216.md" "b/content/zh/docs/Developerguide/GUC\344\275\277\347\224\250\350\257\264\346\230\216.md" index 3e59be772..2595d8bfc 100644 --- "a/content/zh/docs/Developerguide/GUC\344\275\277\347\224\250\350\257\264\346\230\216.md" +++ "b/content/zh/docs/Developerguide/GUC\344\275\277\347\224\250\350\257\264\346\230\216.md" @@ -1,10 +1,10 @@ -# GUC使用说明 - -数据库提供了许多运行参数,配置这些参数可以影响数据库系统的行为。在修改这些参数时请确保用户理解了这些参数对数据库的影响,否则可能会导致无法预料的结果。 - -## 注意事项 - -- 参数中如果取值范围为字符串,此字符串应遵循操作系统的路径和文件名命名规则。 -- 取值范围最大值为INT\_MAX的参数,此选项最大值跟所在的操作系统有关。 -- 取值范围最大值为DBL\_MAX的参数,此选项最大值跟所在的操作系统有关。 - +# GUC使用说明 + +数据库提供了许多运行参数,配置这些参数可以影响数据库系统的行为。在修改这些参数时请确保用户理解了这些参数对数据库的影响,否则可能会导致无法预料的结果。 + +## 注意事项 + +- 参数中如果取值范围为字符串,此字符串应遵循操作系统的路径和文件名命名规则。 +- 取值范围最大值为INT\_MAX的参数,此选项最大值跟所在的操作系统有关。 +- 取值范围最大值为DBL\_MAX的参数,此选项最大值跟所在的操作系统有关。 + diff --git "a/content/zh/docs/Developerguide/GUC\345\217\202\346\225\260log_directory\350\256\276\347\275\256\344\270\215\346\255\243\347\241\256\345\274\225\350\265\267\347\232\204core\351\227\256\351\242\230.md" "b/content/zh/docs/Developerguide/GUC\345\217\202\346\225\260log_directory\350\256\276\347\275\256\344\270\215\346\255\243\347\241\256\345\274\225\350\265\267\347\232\204core\351\227\256\351\242\230.md" index d7db50749..98a07719f 100644 --- "a/content/zh/docs/Developerguide/GUC\345\217\202\346\225\260log_directory\350\256\276\347\275\256\344\270\215\346\255\243\347\241\256\345\274\225\350\265\267\347\232\204core\351\227\256\351\242\230.md" +++ "b/content/zh/docs/Developerguide/GUC\345\217\202\346\225\260log_directory\350\256\276\347\275\256\344\270\215\346\255\243\347\241\256\345\274\225\350\265\267\347\232\204core\351\227\256\351\242\230.md" @@ -1,14 +1,14 @@ -# GUC参数log\_directory设置不正确引起的core问题 +# GUC参数log\_directory设置不正确引起的 core 问题 ## 问题现象 -数据库进程拉起后出现coredump,日志无内容。 +数据库进程拉起后出现 coredump ,日志无内容。 ## 原因分析 -GUC参数log\_directory设置的路径不可读取或无访问权限,数据库在启动过程中进行校验失败,通过panic日志退出程序。 +GUC 参数log\_directory设置的路径不可读取或无访问权限,数据库在启动过程中进行校验失败,通过 panic 日志退出程序。 ## 处理办法 -GUC参数log\_directory设置为合法路径,具体请参考[log\_directory](记录日志的位置.md#zh-cn_topic_0283136719_zh-cn_topic_0237124721_zh-cn_topic_0059778787_sfbedf09fcf1a4223a4538679f80f12a9)。 +GUC 参数log\_directory设置为合法路径,具体请参考[log\_directory](记录日志的位置.md#zh-cn_topic_0283136719_zh-cn_topic_0237124721_zh-cn_topic_0059778787_sfbedf09fcf1a4223a4538679f80f12a9)。 diff --git "a/content/zh/docs/Developerguide/GUC\345\217\202\346\225\260\350\257\264\346\230\216.md" "b/content/zh/docs/Developerguide/GUC\345\217\202\346\225\260\350\257\264\346\230\216.md" index 015fb8dd6..61ab0a9c7 100644 --- "a/content/zh/docs/Developerguide/GUC\345\217\202\346\225\260\350\257\264\346\230\216.md" +++ "b/content/zh/docs/Developerguide/GUC\345\217\202\346\225\260\350\257\264\346\230\216.md" @@ -1,83 +1,83 @@ -# GUC参数说明 - -- **[GUC使用说明](GUC使用说明.md)** - -- **[文件位置](文件位置.md)** - -- **[连接和认证](连接和认证.md)** - -- **[资源消耗](资源消耗.md)** - -- **[预写式日志](预写式日志.md)** - -- **[双机复制](双机复制.md)** - -- **[内存表](内存表.md)** - -- **[查询规划](查询规划.md)** - -- **[错误报告和日志](错误报告和日志.md)** - -- **[告警检测](告警检测.md)** - -- **[运行时统计](运行时统计.md)** - -- **[负载管理](负载管理.md)** - -- **[自动清理](自动清理.md)** - -- **[客户端连接缺省设置](客户端连接缺省设置.md)** - -- **[锁管理](锁管理.md)** - -- **[版本和平台兼容性](版本和平台兼容性.md)** - -- **[容错性](容错性.md)** - -- **[连接池参数](连接池参数.md)** - -- **[openGauss事务](openGauss事务.md)** - -- **[双数据库实例复制参数](双数据库实例复制参数.md)** - -- **[开发人员选项](开发人员选项.md)** - -- **[审计](审计.md)** - -- **[升级参数](升级参数.md)** - -- **[其它选项](其它选项.md)** - -- **[等待事件](等待事件.md)** - -- **[Query](Query.md)** - -- **[系统性能快照](系统性能快照.md)** - -- **[安全配置](安全配置.md)** - -- **[全局临时表](全局临时表.md)** - -- **[HyperLogLog](HyperLogLog.md)** - -- **[用户自定义函数](用户自定义函数.md)** - -- **[定时任务](定时任务.md)** - -- **[线程池](线程池.md)** - -- **[备份恢复](备份恢复.md)** - -- **[Undo](Undo.md)** - -- **[DCF参数设置](DCF参数设置.md)** - -- **[闪回相关参数](闪回相关参数.md)** - -- **[回滚相关参数](回滚相关参数.md)** - -- **[预留参数](预留参数.md)** - -- **[AI特性](AI特性.md)** - - +# GUC参数说明 + +- **[GUC使用说明](GUC使用说明.md)** + +- **[文件位置](文件位置.md)** + +- **[连接和认证](连接和认证.md)** + +- **[资源消耗](资源消耗.md)** + +- **[预写式日志](预写式日志.md)** + +- **[双机复制](双机复制.md)** + +- **[内存表](内存表.md)** + +- **[查询规划](查询规划.md)** + +- **[错误报告和日志](错误报告和日志.md)** + +- **[告警检测](告警检测.md)** + +- **[运行时统计](运行时统计.md)** + +- **[负载管理](负载管理.md)** + +- **[自动清理](自动清理.md)** + +- **[客户端连接缺省设置](客户端连接缺省设置.md)** + +- **[锁管理](锁管理.md)** + +- **[版本和平台兼容性](版本和平台兼容性.md)** + +- **[容错性](容错性.md)** + +- **[连接池参数](连接池参数.md)** + +- **[openGauss事务](openGauss事务.md)** + +- **[双数据库实例复制参数](双数据库实例复制参数.md)** + +- **[开发人员选项](开发人员选项.md)** + +- **[审计](审计.md)** + +- **[升级参数](升级参数.md)** + +- **[其它选项](其它选项.md)** + +- **[等待事件](等待事件.md)** + +- **[Query](Query.md)** + +- **[系统性能快照](系统性能快照.md)** + +- **[安全配置](安全配置.md)** + +- **[全局临时表](全局临时表.md)** + +- **[HyperLogLog](HyperLogLog.md)** + +- **[用户自定义函数](用户自定义函数.md)** + +- **[定时任务](定时任务.md)** + +- **[线程池](线程池.md)** + +- **[备份恢复](备份恢复.md)** + +- **[Undo](Undo.md)** + +- **[DCF参数设置](DCF参数设置.md)** + +- **[闪回相关参数](闪回相关参数.md)** + +- **[回滚相关参数](回滚相关参数.md)** + +- **[预留参数](预留参数.md)** + +- **[AI特性](AI特性.md)** + + diff --git a/content/zh/docs/Developerguide/Global-Plancache.md b/content/zh/docs/Developerguide/Global-Plancache.md index 927220547..63a1b1ca6 100644 --- a/content/zh/docs/Developerguide/Global-Plancache.md +++ b/content/zh/docs/Developerguide/Global-Plancache.md @@ -1,6 +1,6 @@ # Global Plancache -GPC相关视图在enable\_global\_plancache打开且线程池打开的状态下才有效。 +GPC 相关视图在enable\_global\_plancache打开且线程池打开的状态下才有效。 - **[GLOBAL\_PLANCACHE\_STATUS](GLOBAL_PLANCACHE_STATUS.md)** diff --git "a/content/zh/docs/Developerguide/HLL\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" "b/content/zh/docs/Developerguide/HLL\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" index addd5372b..48b2c1ba2 100644 --- "a/content/zh/docs/Developerguide/HLL\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" +++ "b/content/zh/docs/Developerguide/HLL\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" @@ -1,984 +1,984 @@ -# HLL函数和操作符 - -## 哈希函数 - -- hll\_hash\_boolean\(bool\) - - 描述:对bool类型数据计算哈希值。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# SELECT hll_hash_boolean(FALSE); - hll_hash_boolean - --------------------- - -5451962507482445012 - (1 row) - ``` - - -- hll\_hash\_boolean\(bool, int32\) - - 描述:设置hash seed(即改变哈希策略)并对bool类型数据计算哈希值。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# SELECT hll_hash_boolean(FALSE, 10); - hll_hash_boolean - -------------------- - -1169037589280886076 - (1 row) - ``` - -- hll\_hash\_smallint\(smallint\) - - 描述:对smallint类型数据计算哈希值。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# SELECT hll_hash_smallint(100::smallint); - hll_hash_smallint - --------------------- - 962727970174027904 - (1 row) - ``` - - ->![](public_sys-resources/icon-note.gif) **说明:** -> ->数值大小相同的参数使用不同数据类型的哈希函数计算,最后结果会不一样,因为不同类型哈希函数会选取不同的哈希计算策略。 - -- hll\_hash\_smallint\(smallint, int32\) - - 描述:设置hash seed(即改变哈希策略)同时对smallint类型数据计算哈希值。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# SELECT hll_hash_smallint(100::smallint, 10); - hll_hash_smallint - --------------------- - -9056177146160443041 - (1 row) - ``` - -- hll\_hash\_integer\(integer\) - - 描述:对integer类型数据计算哈希值。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# SELECT hll_hash_integer(0); - hll_hash_integer - ---------------------- - 5156626420896634997 - (1 row) - ``` - -- hll\_hash\_integer\(integer, int32\) - - 描述:对integer类型数据计算哈希值,并设置hashseed(即改变哈希策略)。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# SELECT hll_hash_integer(0, 10); - hll_hash_integer - -------------------- - -5035020264353794276 - (1 row) - ``` - -- hll\_hash\_bigint\(bigint\) - - 描述:对bigint类型数据计算哈希值。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# SELECT hll_hash_bigint(100::bigint); - hll_hash_bigint - --------------------- - -2401963681423227794 - (1 row) - ``` - -- hll\_hash\_bigint\(bigint, int32\) - - 描述:对bigint类型数据计算哈希值,并设置hashseed(即改变哈希策略)。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# SELECT hll_hash_bigint(100::bigint, 10); - hll_hash_bigint - --------------------- - -2305749404374433531 - (1 row) - ``` - -- hll\_hash\_bytea\(bytea\) - - 描述:对bytea类型数据计算哈希值。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# SELECT hll_hash_bytea(E'\\x'); - hll_hash_bytea - ---------------- - 0 - (1 row) - ``` - -- hll\_hash\_bytea\(bytea, int32\) - - 描述:对bytea类型数据计算哈希值,并设置hashseed(即改变哈希策略)。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# SELECT hll_hash_bytea(E'\\x', 10); - hll_hash_bytea - --------------------- - 7233188113542599437 - (1 row) - ``` - -- hll\_hash\_text\(text\) - - 描述:对text类型数据计算哈希值。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# SELECT hll_hash_text('AB'); - hll_hash_text - --------------------- - -5666002586880275174 - (1 row) - ``` - -- hll\_hash\_text\(text, int32\) - - 描述:对text类型数据计算哈希值,并设置hashseed(即改变哈希策略)。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# SELECT hll_hash_text('AB', 10); - hll_hash_text - --------------------- - -2215507121143724132 - (1 row) - ``` - -- hll\_hash\_any\(anytype\) - - 描述:对任意类型数据计算哈希值。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# select hll_hash_any(1); - hll_hash_any - ---------------------- - -1316670585935156930 - (1 row) - - openGauss=# select hll_hash_any('08:00:2b:01:02:03'::macaddr); - hll_hash_any - ---------------------- - -3719950434455589360 - (1 row) - ``` - -- hll\_hash\_any\(anytype, int32\) - - 描述:对任意类型数据计算哈希值,并设置hashseed(即改变哈希策略)。 - - 返回值类型:hll\_hashval - - 示例: - - ``` - openGauss=# select hll_hash_any(1, 10); - hll_hash_any - ---------------------- - 7048553517657992351 - (1 row) - ``` - -- hll\_hashval\_eq\(hll\_hashval, hll\_hashval\) - - 描述:比较两个hll\_hashval类型数据是否相等。 - - 返回值类型:bool - - 示例: - - ``` - openGauss=# select hll_hashval_eq(hll_hash_integer(1), hll_hash_integer(1)); - hll_hashval_eq - ---------------- - t - (1 row) - ``` - -- hll\_hashval\_ne\(hll\_hashval, hll\_hashval\) - - 描述:比较两个hll\_hashval类型数据是否不相等。 - - 返回值类型:bool - - 示例: - - ``` - openGauss=# select hll_hashval_ne(hll_hash_integer(1), hll_hash_integer(1)); - hll_hashval_ne - ---------------- - f - (1 row) - ``` - - -## 日志函数 - -hll主要存在三种模式Explicit、Sparse、Full。当数据规模比较小的时候会使用Explicit模式,这种模式下distinct值的计算是没有误差的;随着distinct值越来越多,hll会先后转换为Sparse模式和Full模式,这两种模式在计算结果上没有任何区别,只影响hll函数的计算效率和hll对象的存储空间。下面的函数可以用于查看hll的一些参数。 - -- hll\_print\(hll\) - - 描述:打印hll的一些debug参数信息。 - - 示例: - - ``` - openGauss=# select hll_print(hll_empty()); - hll_print - ------------------------------------------------------------------------------- - type=1(HLL_EMPTY), log2m=14, log2explicit=10, log2sparse=12, duplicatecheck=0 - (1 row) - ``` - - -- hll\_type\(hll\) - - 描述:查看当前hll的类型。返回值具体含义如下:返回值0,表示HLL\_UNINIT,未初始化的hll对象;返回值1,表示HLL\_EMPTY,hll空对象;返回值2,表示HLL\_EXPLICIT,Explicit模式的hll对象;返回值3,表示HLL\_SPARSE,Sparse模式的hll对象;返回值4,表示HLL\_FULL,Full模式的hll对象;返回值5,表示HLL\_UNDEFINED,不合法的hll对象。 - - 示例: - - ``` - openGauss=# select hll_type(hll_empty()); - hll_type - ---------- - 1 - (1 row) - ``` - -- hll\_log2m\(hll\) - - 描述:查看当前hll数据结构中的log2m数值,log2m是分桶数的对数值,此值会影响最后hll计算distinct误差率,误差率计算公式为±1.04/√\(2 ^ log2m\)。当显式指定log2m的取值为10-16之间时,hll会设置分桶数为2log2m。当显示指定log2explicit为-1时,会采用内置默认值。 - - 示例: - - ``` - openGauss=# select hll_log2m(hll_empty()); - hll_log2m - ----------- - 14 - (1 row) - - openGauss=# select hll_log2m(hll_empty(10)); - hll_log2m - ----------- - 10 - (1 row) - - openGauss=# select hll_log2m(hll_empty(-1)); - hll_log2m - ----------- - 14 - (1 row) - ``` - -- hll\_log2explicit\(hll\) - - 描述:查看当前hll数据结构中的log2explicit数值。hll通常会由Explicit模式到Sparse模式再到Full模式,这个过程称为promotion hierarchy策略。可以通过调整log2explicit值的大小改变策略,比如log2explicit为0的时候就会跳过Explicit模式而直接进入Sparse模式。当显式指定log2explicit的取值为1-12之间时,hll会在数据段长度超过2log2explicit时转为Sparse模式。当显示指定log2explicit为-1时,会采用内置默认值。 - - 示例: - - ``` - openGauss=# select hll_log2explicit(hll_empty()); - hll_log2explicit - ------------------ - 10 - (1 row) - - openGauss=# select hll_log2explicit(hll_empty(12, 8)); - hll_log2explicit - ------------------ - 8 - (1 row) - - openGauss=# select hll_log2explicit(hll_empty(12, -1)); - hll_log2explicit - ------------------ - 10 - (1 row) - ``` - -- hll\_log2sparse\(hll\) - - 描述:查看当前hll数据结构中的log2sparse数值。hll通常会由Explicit模式到Sparse模式再到Full模式,这个过程称为promotion hierarchy策略。可以通过调整log2sparse值的大小改变策略,比如log2sparse为0的时候就会跳过Sparse模式而直接进入Full模式。当显式指定Sparse的取值为1-14之间时,hll会在数据段长度超过2log2sparse时转为Full模式。当显示指定log2sparse为-1时,会采用内置默认值。 - - 示例: - - ``` - openGauss=# select hll_log2sparse(hll_empty()); - hll_log2sparse - ---------------- - 12 - (1 row) - - openGauss=# select hll_log2sparse(hll_empty(12, 8, 10)); - hll_log2sparse - ---------------- - 10 - (1 row) - - openGauss=# select hll_log2sparse(hll_empty(12, 8, -1)); - hll_log2sparse - ---------------- - 12 - (1 row) - ``` - - -- hll\_duplicatecheck\(hll\) - - 描述:是否启用duplicatecheck,0是关闭,1是开启。默认关闭,对于有较多重复值出现的情况,可以开启以提高效率。当显示指定duplicatecheck为-1时,会采用内置默认值。 - - 示例: - - ``` - openGauss=# select hll_duplicatecheck(hll_empty()); - hll_duplicatecheck - -------------------- - 0 - (1 row) - - openGauss=# select hll_duplicatecheck(hll_empty(12, 8, 10, 1)); - hll_duplicatecheck - -------------------- - 1 - (1 row) - - openGauss=# select hll_duplicatecheck(hll_empty(12, 8, 10, -1)); - hll_duplicatecheck - -------------------- - 0 - (1 row) - ``` - - -## 功能函数 - -- hll\_empty\(\) - - 描述:创建一个空的hll。 - - 返回值类型:hll - - 示例: - - ``` - openGauss=# select hll_empty(); - hll_empty - ------------------------------------------------------------ - \x484c4c00000000002b05000000000000000000000000000000000000 - (1 row) - ``` - -- hll\_empty\(int32 log2m\) - - 描述:创建空的hll并指定参数log2m,取值范围是10到16。若输入-1,则采用内置默认值。 - - 返回值类型:hll - - 示例: - - ``` - openGauss=# select hll_empty(10); - hll_empty - ------------------------------------------------------------ - \x484c4c00000000002b04000000000000000000000000000000000000 - (1 row) - - openGauss=# select hll_empty(-1); - hll_empty - ------------------------------------------------------------ - \x484c4c00000000002b05000000000000000000000000000000000000 - (1 row) - ``` - -- hll\_empty\(int32 log2m, int32 log2explicit\) - - 描述:创建空的hll并依次指定参数log2m、log2explicit。log2explicit取值范围是0到12,0表示直接跳过Explicit模式。该参数可以用来设置Explicit模式的阈值大小,在数据段长度达到2log2explicit后切换为Sparse模式或者Full模式。若输入-1,则log2explicit采用内置默认值。 - - 返回值类型: hll - - 示例: - - ``` - openGauss=# select hll_empty(10, 4); - hll_empty - ------------------------------------------------------------ - \x484c4c00000000001304000000000000000000000000000000000000 - (1 row) - - openGauss=# select hll_empty(10, -1); - hll_empty - ------------------------------------------------------------ - \x484c4c00000000002b04000000000000000000000000000000000000 - (1 row) - ``` - -- hll\_empty\(int32 log2m, int32 log2explicit, int64 log2sparse\) - - 描述:创建空的hll并依次指定参数log2m、log2explicit、log2sparse。log2sparse取值范围是0到14,0表示直接跳过Sparse模式。该参数可以用来设置Sparse模式的阈值大小,在数据段长度达到2log2sparse后切换为Full模式。若输入-1,则log2sparse采用内置默认值。 - - 返回值类型:hll - - 示例: - - ``` - openGauss=# select hll_empty(10, 4, 8); - hll_empty - ------------------------------------------------------------ - \x484c4c00000000001204000000000000000000000000000000000000 - (1 row) - - openGauss=# select hll_empty(10, 4, -1); - hll_empty - ------------------------------------------------------------ - \x484c4c00000000001304000000000000000000000000000000000000 - (1 row) - ``` - -- hll\_empty\(int32 log2m, int32 log2explicit, int64 log2sparse, int32 duplicatecheck\) - - 描述:创建空的hll并依次指定参数log2m、log2explicit、log2sparse、duplicatecheck。duplicatecheck取0或者1,表示是否开启该模式,默认情况下该模式会关闭。若输入-1,则duplicatecheck采用内置默认值。 - - 返回值类型:hll - - 示例: - - ``` - openGauss=# select hll_empty(10, 4, 8, 0); - hll_empty - ------------------------------------------------------------ - \x484c4c00000000001204000000000000000000000000000000000000 - (1 row) - - openGauss=# select hll_empty(10, 4, 8, -1); - hll_empty - ------------------------------------------------------------ - \x484c4c00000000001204000000000000000000000000000000000000 - (1 row) - ``` - -- hll\_add\(hll, hll\_hashval\) - - 描述:把hll\_hashval加入到hll中。 - - 返回值类型:hll - - 示例: - - ``` - openGauss=# select hll_add(hll_empty(), hll_hash_integer(1)); - hll_add - ---------------------------------------------------------------------------- - \x484c4c08000002002b0900000000000000f03f3e2921ff133fbaed3e2921ff133fbaed00 - (1 row) - ``` - -- hll\_add\_rev\(hll\_hashval, hll\) - - 描述:把hll\_hashval加入到hll中,和hll\_add功能一样,只是参数位置进行了交换。 - - 返回值类型:hll - - 示例: - - ``` - openGauss=# select hll_add_rev(hll_hash_integer(1), hll_empty()); - hll_add_rev - ---------------------------------------------------------------------------- - \x484c4c08000002002b0900000000000000f03f3e2921ff133fbaed3e2921ff133fbaed00 - (1 row) - ``` - -- hll\_eq\(hll, hll\) - - 描述:比较两个hll是否相等。 - - 返回值类型:bool - - 示例: - - ``` - openGauss=# select hll_eq(hll_add(hll_empty(), hll_hash_integer(1)), hll_add(hll_empty(), hll_hash_integer(2))); - hll_eq - -------- - f - (1 row) - ``` - -- hll\_ne\(hll, hll\) - - 描述:比较两个hll是否不相等。 - - 返回值类型:bool - - 示例: - - ``` - openGauss=# select hll_ne(hll_add(hll_empty(), hll_hash_integer(1)), hll_add(hll_empty(), hll_hash_integer(2))); - hll_ne - -------- - t - (1 row) - ``` - -- hll\_cardinality\(hll\) - - 描述:计算hll的distinct值。 - - 返回值类型:int - - 示例: - - ``` - openGauss=# select hll_cardinality(hll_empty() || hll_hash_integer(1)); - hll_cardinality - ----------------- - 1 - (1 row) - ``` - -- hll\_union\(hll, hll\) - - 描述:把两个hll数据结构union成一个。 - - 返回值类型:hll - - 示例: - - ``` - openGauss=# select hll_union(hll_add(hll_empty(), hll_hash_integer(1)), hll_add(hll_empty(), hll_hash_integer(2))); - hll_union - -------------------------------------------------------------------------------------------- - \x484c4c10002000002b090000000000000000400000000000000000b3ccc49320cca1ae3e2921ff133fbaed00 - (1 row) - ``` - - -## 聚合函数 - -- hll\_add\_agg\(hll\_hashval\) - - 描述:把哈希后的数据按照分组放到hll中。 - - 返回值类型:hll - - 示例: - - ``` - --准备数据 - openGauss=# create table t_id(id int); - openGauss=# insert into t_id values(generate_series(1,500)); - openGauss=# create table t_data(a int, c text); - openGauss=# insert into t_data select mod(id,2), id from t_id; - - --创建表并指定列为hll - openGauss=# create table t_a_c_hll(a int, c hll); - - --根据a列group by对数据分组,把各组数据加到hll中 - openGauss=# insert into t_a_c_hll select a, hll_add_agg(hll_hash_text(c)) from t_data group by a; - - --得到每组数据中hll的Distinct值 - openGauss=# select a, #c as cardinality from t_a_c_hll order by a; - a | cardinality - ---+------------------ - 0 | 247.862354346299 - 1 | 250.908710610377 - (2 rows) - ``` - - -- hll\_add\_agg\(hll\_hashval, int32 log2m\) - - 描述:把哈希后的数据按照分组放到hll中,并指定参数log2m,取值范围是10到16。若输入-1或者NULL,则采用内置默认值。 - - 返回值类型:hll - - 示例: - - ``` - openGauss=# select hll_cardinality(hll_add_agg(hll_hash_text(c), 12)) from t_data; - hll_cardinality - ------------------ - 497.965240179228 - (1 row) - ``` - -- hll\_add\_agg\(hll\_hashval, int32 log2m, int32 log2explicit\) - - 描述:把哈希后的数据按照分组放到hll中,依次指定参数log2m、log2explicit。log2explicit取值范围是0到12,0表示直接跳过Explicit模式。该参数可以用来设置Explicit模式的阈值大小,在数据段长度达到2log2explicit后切换为Sparse模式或者Full模式。若输入-1或者NULL,则log2explicit采用内置默认值。 - - 返回值类型:hll - - 示例: - - ``` - openGauss=# select hll_cardinality(hll_add_agg(hll_hash_text(c), NULL, 1)) from t_data; - hll_cardinality - ------------------ - 498.496062953313 - (1 row) - ``` - -- hll\_add\_agg\(hll\_hashval, int32 log2m, int32 log2explicit, int64 log2sparse\) - - 描述:把哈希后的数据按照分组放到hll中,依次指定参数log2m、log2explicit、log2sparse。log2sparse取值范围是0到14,0表示直接跳过Sparse模式。该参数可以用来设置Sparse模式的阈值大小,在数据段长度达到2log2sparse后切换为Full模式。若输入-1或者NULL,则log2sparse采用内置默认值。 - - 返回值类型:hll - - 示例: - - ``` - openGauss=# select hll_cardinality(hll_add_agg(hll_hash_text(c), NULL, 6, 10)) from t_data; - hll_cardinality - ------------------ - 498.496062953313 - (1 row) - ``` - -- hll\_add\_agg\(hll\_hashval, int32 log2m, int32 log2explicit, int64 log2sparse, int32 duplicatecheck\) - - 描述:把哈希后的数据按照分组放到hll中, 依次制定参数log2m、log2explicit、log2sparse、duplicatecheck,duplicatecheck取值范围是0或者1,表示是否开启该模式,默认情况下该模式会关闭。若输入-1或者NULL,则duplicatecheck采用内置默认值。 - - 返回值类型:hll - - 示例: - - ``` - openGauss=# select hll_cardinality(hll_add_agg(hll_hash_text(c), NULL, 6, 10, -1)) from t_data; - hll_cardinality - ------------------ - 498.496062953313 - (1 row) - ``` - -- hll\_union\_agg\(hll\) - - 描述:将多个hll类型数据union成一个hll。 - - 返回值类型:hll - - 示例: - - ``` - --将各组中的hll数据union成一个hll,并计算distinct值。 - openGauss=# select #hll_union_agg(c) as cardinality from t_a_c_hll; - cardinality - ------------------ - 498.496062953313 - (1 row) - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >注意:当两个或者多个hll数据结构做union的时候,必须要保证其中每一个hll里面的精度参数一样,否则将不可以进行union。同样的约束也适用于函数hll\_union\(hll,hll\)。 - - -## 废弃函数 - -由于版本升级,HLL(HyperLogLog)有一些旧的函数废弃,用户可以用类似的函数进行替代。 - -- hll\_schema\_version\(hll\) - - 描述:查看当前hll中的schema version。旧版本schema version是常值1,用来进行hll字段的头部校验,重构后的hll在头部增加字段“HLL”进行校验,schema version不再使用。 - -- hll\_regwidth\(hll\) - - 描述:查看hll数据结构中桶的位数大小。旧版本桶的位数regwidth取值1\~5,会存在较大的误差,也限制了基数估计上限。 重构后regwidth为固定值6,不再使用regwidth变量。 - -- hll\_expthresh\(hll\) - - 描述:得到当前hll中expthresh大小。采用hll\_log2explicit\(hll\)替代类似功能。 - -- hll\_sparseon\(hll\) - - 描述:是否启用Sparse模式。采用hll\_log2sparse\(hll\)替代类似功能,0表示关闭Sparse模式。 - - -## 内置函数 - -HLL(HyperLogLog)有一系列内置函数用于内部对数据进行处理,一般情况下用户不需要熟知这些函数的使用。详情见[表1](#table763375795510)。 - -**表 1** 内置函数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

函数名称

-

功能描述

-

hll_in

-

以string格式接收hll数据。

-

hll_out

-

以string格式发送hll数据。

-

hll_recv

-

以bytea格式接收hll数据。

-

hll_send

-

以bytea格式发送hll数据。

-

hll_trans_in

-

以string格式接收hll_trans_type数据。

-

hll_trans_out

-

以string格式发送hll_trans_type数据。

-

hll_trans_recv

-

以bytea形式接收hll_trans_type数据。

-

hll_trans_send

-

以bytea形式发送hll_trans_type数据。

-

hll_typmod_in

-

接收typmod类型数据。

-

hll_typmod_out

-

发送typmod类型数据。

-

hll_hashval_in

-

接收hll_hashval类型数据。

-

hll_hashval_out

-

发送hll_hashval类型数据。

-

hll_add_trans0

-

类似于hll_add所提供的功能,初始化时无指定入参,通常在聚合运算的第一阶段DN上使用。

-

hll_add_trans1

-

类似于hll_add所提供的功能,初始化时指定一个入参,通常在聚合运算的第一阶段DN上使用。

-

hll_add_trans2

-

类似于hll_add所提供的功能,初始化时指定两个入参,通常在聚合运算的第一阶段DN上使用。

-

hll_add_trans3

-

类似于hll_add所提供的功能,初始化时指定三个入参,通常在聚合运算的第一阶段DN上使用。

-

hll_add_trans4

-

类似于hll_add所提供的功能,初始化时指定四个入参,通常在聚合运算的第一阶段DN上使用。

-

hll_union_trans

-

类似hll_union所提供的功能,在聚合运算的第一阶段DN上使用。

-

hll_union_collect

-

类似于hll_union所提供的功能,在聚合运算第二阶段DN上使用,汇总各个DN上的结果。

-

hll_pack

-

在聚合运算第三阶段DN上使用,把自定义hll_trans_type类型最后转换成hll类型。

-

hll

-

用于hll类型转换成hll类型,根据输入参数会设定指定参数。

-

hll_hashval

-

用于bigint类型转换成hll_hashval类型。

-

hll_hashval_int4

-

用于int4类型转换成hll_hashval类型。

-
- -## 操作符 - -- = - - 描述:比较hll或hll\_hashval的值是否相等。 - - 返回值类型:bool - - 示例: - - ``` - --hll - openGauss=# select (hll_empty() || hll_hash_integer(1)) = (hll_empty() || hll_hash_integer(1)); - column - ---------- - t - (1 row) - - --hll_hashval - openGauss=# select hll_hash_integer(1) = hll_hash_integer(1); - ?column? - ---------- - t - (1 row) - ``` - - -- <\> or != - - 描述:比较hll或hll\_hashval是否不相等。 - - 返回值类型:bool - - 示例: - - ``` - --hll - openGauss=# select (hll_empty() || hll_hash_integer(1)) <> (hll_empty() || hll_hash_integer(2)); - ?column? - ---------- - t - (1 row) - - --hll_hashval - openGauss=# select hll_hash_integer(1) <> hll_hash_integer(2); - ?column? - ---------- - t - (1 row) - ``` - -- || - - 描述:可代表hll\_add、hll\_union、hll\_add\_rev三个函数的功能。 - - 返回值类型:hll - - 示例: - - ``` - --hll_add - openGauss=# select hll_empty() || hll_hash_integer(1); - ?column? - ---------------------------------------------------------------------------- - \x484c4c08000002002b0900000000000000f03f3e2921ff133fbaed3e2921ff133fbaed00 - (1 row) - - --hll_add_rev - openGauss=# select hll_hash_integer(1) || hll_empty(); - ?column? - ---------------------------------------------------------------------------- - \x484c4c08000002002b0900000000000000f03f3e2921ff133fbaed3e2921ff133fbaed00 - (1 row) - - --hll_union - openGauss=# select (hll_empty() || hll_hash_integer(1)) || (hll_empty() || hll_hash_integer(2)); - ?column? - -------------------------------------------------------------------------------------------- - \x484c4c10002000002b090000000000000000400000000000000000b3ccc49320cca1ae3e2921ff133fbaed00 - (1 row) - ``` - -- \# - - 描述:计算出hll的Dintinct值, 同hll\_cardinality函数。 - - 返回值类型:int - - 示例: - - ``` - openGauss=# select #(hll_empty() || hll_hash_integer(1)); - ?column? - ---------- - 1 - (1 row) - ``` - +# HLL函数和操作符 + +## 哈希函数 + +- hll\_hash\_boolean\(bool\) + + 描述:对 bool 类型数据计算哈希值。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# SELECT hll_hash_boolean(FALSE); + hll_hash_boolean + --------------------- + -5451962507482445012 + (1 row) + ``` + + +- hll\_hash\_boolean\(bool, int32\) + + 描述:设置hash seed(即改变哈希策略)并对 bool 类型数据计算哈希值。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# SELECT hll_hash_boolean(FALSE, 10); + hll_hash_boolean + -------------------- + -1169037589280886076 + (1 row) + ``` + +- hll\_hash\_smallint\(smallint\) + + 描述:对 smallint 类型数据计算哈希值。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# SELECT hll_hash_smallint(100::smallint); + hll_hash_smallint + --------------------- + 962727970174027904 + (1 row) + ``` + + +>![](public_sys-resources/icon-note.gif) **说明:** +> +>数值大小相同的参数使用不同数据类型的哈希函数计算,最后结果会不一样,因为不同类型哈希函数会选取不同的哈希计算策略。 + +- hll\_hash\_smallint\(smallint, int32\) + + 描述:设置hash seed(即改变哈希策略)同时对 smallint 类型数据计算哈希值。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# SELECT hll_hash_smallint(100::smallint, 10); + hll_hash_smallint + --------------------- + -9056177146160443041 + (1 row) + ``` + +- hll\_hash\_integer\(integer\) + + 描述:对 integer 类型数据计算哈希值。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# SELECT hll_hash_integer(0); + hll_hash_integer + ---------------------- + 5156626420896634997 + (1 row) + ``` + +- hll\_hash\_integer\(integer, int32\) + + 描述:对 integer 类型数据计算哈希值,并设置hashseed(即改变哈希策略)。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# SELECT hll_hash_integer(0, 10); + hll_hash_integer + -------------------- + -5035020264353794276 + (1 row) + ``` + +- hll\_hash\_bigint\(bigint\) + + 描述:对 bigint 类型数据计算哈希值。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# SELECT hll_hash_bigint(100::bigint); + hll_hash_bigint + --------------------- + -2401963681423227794 + (1 row) + ``` + +- hll\_hash\_bigint\(bigint, int32\) + + 描述:对 bigint 类型数据计算哈希值,并设置hashseed(即改变哈希策略)。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# SELECT hll_hash_bigint(100::bigint, 10); + hll_hash_bigint + --------------------- + -2305749404374433531 + (1 row) + ``` + +- hll\_hash\_bytea\(bytea\) + + 描述:对 bytea 类型数据计算哈希值。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# SELECT hll_hash_bytea(E'\\x'); + hll_hash_bytea + ---------------- + 0 + (1 row) + ``` + +- hll\_hash\_bytea\(bytea, int32\) + + 描述:对 bytea 类型数据计算哈希值,并设置hashseed(即改变哈希策略)。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# SELECT hll_hash_bytea(E'\\x', 10); + hll_hash_bytea + --------------------- + 7233188113542599437 + (1 row) + ``` + +- hll\_hash\_text\(text\) + + 描述:对 text 类型数据计算哈希值。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# SELECT hll_hash_text('AB'); + hll_hash_text + --------------------- + -5666002586880275174 + (1 row) + ``` + +- hll\_hash\_text\(text, int32\) + + 描述:对 text 类型数据计算哈希值,并设置hashseed(即改变哈希策略)。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# SELECT hll_hash_text('AB', 10); + hll_hash_text + --------------------- + -2215507121143724132 + (1 row) + ``` + +- hll\_hash\_any\(anytype\) + + 描述:对任意类型数据计算哈希值。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# select hll_hash_any(1); + hll_hash_any + ---------------------- + -1316670585935156930 + (1 row) + + openGauss=# select hll_hash_any('08:00:2b:01:02:03'::macaddr); + hll_hash_any + ---------------------- + -3719950434455589360 + (1 row) + ``` + +- hll\_hash\_any\(anytype, int32\) + + 描述:对任意类型数据计算哈希值,并设置hashseed(即改变哈希策略)。 + + 返回值类型:hll\_hashval + + 示例: + + ``` + openGauss=# select hll_hash_any(1, 10); + hll_hash_any + ---------------------- + 7048553517657992351 + (1 row) + ``` + +- hll\_hashval\_eq\(hll\_hashval, hll\_hashval\) + + 描述:比较两个hll\_hashval类型数据是否相等。 + + 返回值类型:bool + + 示例: + + ``` + openGauss=# select hll_hashval_eq(hll_hash_integer(1), hll_hash_integer(1)); + hll_hashval_eq + ---------------- + t + (1 row) + ``` + +- hll\_hashval\_ne\(hll\_hashval, hll\_hashval\) + + 描述:比较两个hll\_hashval类型数据是否不相等。 + + 返回值类型:bool + + 示例: + + ``` + openGauss=# select hll_hashval_ne(hll_hash_integer(1), hll_hash_integer(1)); + hll_hashval_ne + ---------------- + f + (1 row) + ``` + + +## 日志函数 + +hll 主要存在三种模式Explicit、Sparse、Full。当数据规模比较小的时候会使用 Explicit 模式,这种模式下 distinct 值的计算是没有误差的;随着 distinct 值越来越多, hll 会先后转换为 Sparse 模式和 Full 模式,这两种模式在计算结果上没有任何区别,只影响 hll 函数的计算效率和 hll 对象的存储空间。下面的函数可以用于查看 hll 的一些参数。 + +- hll\_print\(hll\) + + 描述:打印 hll 的一些 debug 参数信息。 + + 示例: + + ``` + openGauss=# select hll_print(hll_empty()); + hll_print + ------------------------------------------------------------------------------- + type=1(HLL_EMPTY), log2m=14, log2explicit=10, log2sparse=12, duplicatecheck=0 + (1 row) + ``` + + +- hll\_type\(hll\) + + 描述:查看当前 hll 的类型。返回值具体含义如下:返回值 0 ,表示HLL\_UNINIT,未初始化的 hll 对象;返回值 1 ,表示HLL\_EMPTY, hll 空对象;返回值 2 ,表示HLL\_EXPLICIT, Explicit 模式的 hll 对象;返回值 3 ,表示HLL\_SPARSE, Sparse 模式的 hll 对象;返回值 4 ,表示HLL\_FULL, Full 模式的 hll 对象;返回值 5 ,表示HLL\_UNDEFINED,不合法的 hll 对象。 + + 示例: + + ``` + openGauss=# select hll_type(hll_empty()); + hll_type + ---------- + 1 + (1 row) + ``` + +- hll\_log2m\(hll\) + + 描述:查看当前 hll 数据结构中的 log2m 数值, log2m 是分桶数的对数值,此值会影响最后 hll 计算 distinct 误差率,误差率计算公式为±1.04/√\(2 ^ log2m\)。当显式指定 log2m 的取值为10-16之间时, hll 会设置分桶数为2log2m。当显示指定 log2explicit 为-1时,会采用内置默认值。 + + 示例: + + ``` + openGauss=# select hll_log2m(hll_empty()); + hll_log2m + ----------- + 14 + (1 row) + + openGauss=# select hll_log2m(hll_empty(10)); + hll_log2m + ----------- + 10 + (1 row) + + openGauss=# select hll_log2m(hll_empty(-1)); + hll_log2m + ----------- + 14 + (1 row) + ``` + +- hll\_log2explicit\(hll\) + + 描述:查看当前 hll 数据结构中的 log2explicit 数值。 hll 通常会由 Explicit 模式到 Sparse 模式再到 Full 模式,这个过程称为 promotion hierarchy 策略。可以通过调整 log2explicit 值的大小改变策略,比如 log2explicit 为 0 的时候就会跳过 Explicit 模式而直接进入 Sparse 模式。当显式指定 log2explicit 的取值为1-12之间时, hll 会在数据段长度超过2log2explicit时转为 Sparse 模式。当显示指定 log2explicit 为-1时,会采用内置默认值。 + + 示例: + + ``` + openGauss=# select hll_log2explicit(hll_empty()); + hll_log2explicit + ------------------ + 10 + (1 row) + + openGauss=# select hll_log2explicit(hll_empty(12, 8)); + hll_log2explicit + ------------------ + 8 + (1 row) + + openGauss=# select hll_log2explicit(hll_empty(12, -1)); + hll_log2explicit + ------------------ + 10 + (1 row) + ``` + +- hll\_log2sparse\(hll\) + + 描述:查看当前 hll 数据结构中的 log2sparse 数值。 hll 通常会由 Explicit 模式到 Sparse 模式再到 Full 模式,这个过程称为 promotion hierarchy 策略。可以通过调整 log2sparse 值的大小改变策略,比如 log2sparse 为 0 的时候就会跳过 Sparse 模式而直接进入 Full 模式。当显式指定 Sparse 的取值为1-14之间时, hll 会在数据段长度超过2log2sparse时转为 Full 模式。当显示指定 log2sparse 为-1时,会采用内置默认值。 + + 示例: + + ``` + openGauss=# select hll_log2sparse(hll_empty()); + hll_log2sparse + ---------------- + 12 + (1 row) + + openGauss=# select hll_log2sparse(hll_empty(12, 8 , 10)); + hll_log2sparse + ---------------- + 10 + (1 row) + + openGauss=# select hll_log2sparse(hll_empty(12, 8 , -1)); + hll_log2sparse + ---------------- + 12 + (1 row) + ``` + + +- hll\_duplicatecheck\(hll\) + + 描述:是否启用 duplicatecheck , 0 是关闭, 1 是开启。默认关闭,对于有较多重复值出现的情况,可以开启以提高效率。当显示指定 duplicatecheck 为-1时,会采用内置默认值。 + + 示例: + + ``` + openGauss=# select hll_duplicatecheck(hll_empty()); + hll_duplicatecheck + -------------------- + 0 + (1 row) + + openGauss=# select hll_duplicatecheck(hll_empty(12, 8 , 10 , 1)); + hll_duplicatecheck + -------------------- + 1 + (1 row) + + openGauss=# select hll_duplicatecheck(hll_empty(12, 8 , 10 , -1)); + hll_duplicatecheck + -------------------- + 0 + (1 row) + ``` + + +## 功能函数 + +- hll\_empty\(\) + + 描述:创建一个空的 hll 。 + + 返回值类型:hll + + 示例: + + ``` + openGauss=# select hll_empty(); + hll_empty + ------------------------------------------------------------ + \x484c4c00000000002b05000000000000000000000000000000000000 + (1 row) + ``` + +- hll\_empty\(int32 log2m\) + + 描述:创建空的 hll 并指定参数 log2m ,取值范围是 10 到 16 。若输入-1,则采用内置默认值。 + + 返回值类型:hll + + 示例: + + ``` + openGauss=# select hll_empty(10); + hll_empty + ------------------------------------------------------------ + \x484c4c00000000002b04000000000000000000000000000000000000 + (1 row) + + openGauss=# select hll_empty(-1); + hll_empty + ------------------------------------------------------------ + \x484c4c00000000002b05000000000000000000000000000000000000 + (1 row) + ``` + +- hll\_empty\(int32 log2m, int32 log2explicit\) + + 描述:创建空的 hll 并依次指定参数log2m、log2explicit。 log2explicit 取值范围是 0 到 12 , 0 表示直接跳过 Explicit 模式。该参数可以用来设置 Explicit 模式的阈值大小,在数据段长度达到2log2explicit后切换为 Sparse 模式或者 Full 模式。若输入-1,则 log2explicit 采用内置默认值。 + + 返回值类型: hll + + 示例: + + ``` + openGauss=# select hll_empty(10, 4); + hll_empty + ------------------------------------------------------------ + \x484c4c00000000001304000000000000000000000000000000000000 + (1 row) + + openGauss=# select hll_empty(10, -1); + hll_empty + ------------------------------------------------------------ + \x484c4c00000000002b04000000000000000000000000000000000000 + (1 row) + ``` + +- hll\_empty\(int32 log2m, int32 log2explicit , int64 log2sparse\) + + 描述:创建空的 hll 并依次指定参数log2m、log2explicit、log2sparse。 log2sparse 取值范围是 0 到 14 , 0 表示直接跳过 Sparse 模式。该参数可以用来设置 Sparse 模式的阈值大小,在数据段长度达到2log2sparse后切换为 Full 模式。若输入-1,则 log2sparse 采用内置默认值。 + + 返回值类型:hll + + 示例: + + ``` + openGauss=# select hll_empty(10, 4 , 8); + hll_empty + ------------------------------------------------------------ + \x484c4c00000000001204000000000000000000000000000000000000 + (1 row) + + openGauss=# select hll_empty(10, 4 , -1); + hll_empty + ------------------------------------------------------------ + \x484c4c00000000001304000000000000000000000000000000000000 + (1 row) + ``` + +- hll\_empty\(int32 log2m, int32 log2explicit , int64 log2sparse , int32 duplicatecheck\) + + 描述:创建空的 hll 并依次指定参数log2m、log2explicit、log2sparse、duplicatecheck。 duplicatecheck 取 0 或者 1 ,表示是否开启该模式,默认情况下该模式会关闭。若输入-1,则 duplicatecheck 采用内置默认值。 + + 返回值类型:hll + + 示例: + + ``` + openGauss=# select hll_empty(10, 4 , 8 , 0); + hll_empty + ------------------------------------------------------------ + \x484c4c00000000001204000000000000000000000000000000000000 + (1 row) + + openGauss=# select hll_empty(10, 4 , 8 , -1); + hll_empty + ------------------------------------------------------------ + \x484c4c00000000001204000000000000000000000000000000000000 + (1 row) + ``` + +- hll\_add\(hll, hll\_hashval\) + + 描述:把hll\_hashval加入到 hll 中。 + + 返回值类型:hll + + 示例: + + ``` + openGauss=# select hll_add(hll_empty(), hll_hash_integer(1)); + hll_add + ---------------------------------------------------------------------------- + \x484c4c08000002002b0900000000000000f03f3e2921ff133fbaed3e2921ff133fbaed00 + (1 row) + ``` + +- hll\_add\_rev\(hll\_hashval, hll\) + + 描述:把hll\_hashval加入到 hll 中,和hll\_add功能一样,只是参数位置进行了交换。 + + 返回值类型:hll + + 示例: + + ``` + openGauss=# select hll_add_rev(hll_hash_integer(1), hll_empty()); + hll_add_rev + ---------------------------------------------------------------------------- + \x484c4c08000002002b0900000000000000f03f3e2921ff133fbaed3e2921ff133fbaed00 + (1 row) + ``` + +- hll\_eq\(hll, hll\) + + 描述:比较两个 hll 是否相等。 + + 返回值类型:bool + + 示例: + + ``` + openGauss=# select hll_eq(hll_add(hll_empty(), hll_hash_integer(1)), hll_add(hll_empty(), hll_hash_integer(2))); + hll_eq + -------- + f + (1 row) + ``` + +- hll\_ne\(hll, hll\) + + 描述:比较两个 hll 是否不相等。 + + 返回值类型:bool + + 示例: + + ``` + openGauss=# select hll_ne(hll_add(hll_empty(), hll_hash_integer(1)), hll_add(hll_empty(), hll_hash_integer(2))); + hll_ne + -------- + t + (1 row) + ``` + +- hll\_cardinality\(hll\) + + 描述:计算 hll 的 distinct 值。 + + 返回值类型:int + + 示例: + + ``` + openGauss=# select hll_cardinality(hll_empty() || hll_hash_integer(1)); + hll_cardinality + ----------------- + 1 + (1 row) + ``` + +- hll\_union\(hll, hll\) + + 描述:把两个 hll 数据结构 union 成一个。 + + 返回值类型:hll + + 示例: + + ``` + openGauss=# select hll_union(hll_add(hll_empty(), hll_hash_integer(1)), hll_add(hll_empty(), hll_hash_integer(2))); + hll_union + -------------------------------------------------------------------------------------------- + \x484c4c10002000002b090000000000000000400000000000000000b3ccc49320cca1ae3e2921ff133fbaed00 + (1 row) + ``` + + +## 聚合函数 + +- hll\_add\_agg\(hll\_hashval\) + + 描述:把哈希后的数据按照分组放到 hll 中。 + + 返回值类型:hll + + 示例: + + ``` + --准备数据 + openGauss=# create table t_id(id int); + openGauss=# insert into t_id values(generate_series(1,500)); + openGauss=# create table t_data(a int, c text); + openGauss=# insert into t_data select mod(id,2), id from t_id; + + --创建表并指定列为hll + openGauss=# create table t_a_c_hll(a int, c hll); + + --根据 a 列 group by 对数据分组,把各组数据加到 hll 中 + openGauss=# insert into t_a_c_hll select a, hll_add_agg(hll_hash_text(c)) from t_data group by a; + + --得到每组数据中 hll 的 Distinct 值 + openGauss=# select a, #c as cardinality from t_a_c_hll order by a; + a | cardinality + ---+------------------ + 0 | 247.862354346299 + 1 | 250.908710610377 + (2 rows) + ``` + + +- hll\_add\_agg\(hll\_hashval, int32 log2m\) + + 描述:把哈希后的数据按照分组放到 hll 中,并指定参数 log2m ,取值范围是 10 到 16 。若输入-1或者 NULL ,则采用内置默认值。 + + 返回值类型:hll + + 示例: + + ``` + openGauss=# select hll_cardinality(hll_add_agg(hll_hash_text(c), 12)) from t_data; + hll_cardinality + ------------------ + 497.965240179228 + (1 row) + ``` + +- hll\_add\_agg\(hll\_hashval, int32 log2m , int32 log2explicit\) + + 描述:把哈希后的数据按照分组放到 hll 中,依次指定参数log2m、log2explicit。 log2explicit 取值范围是 0 到 12 , 0 表示直接跳过 Explicit 模式。该参数可以用来设置 Explicit 模式的阈值大小,在数据段长度达到2log2explicit后切换为 Sparse 模式或者 Full 模式。若输入-1或者 NULL ,则 log2explicit 采用内置默认值。 + + 返回值类型:hll + + 示例: + + ``` + openGauss=# select hll_cardinality(hll_add_agg(hll_hash_text(c), NULL , 1)) from t_data; + hll_cardinality + ------------------ + 498.496062953313 + (1 row) + ``` + +- hll\_add\_agg\(hll\_hashval, int32 log2m , int32 log2explicit , int64 log2sparse\) + + 描述:把哈希后的数据按照分组放到 hll 中,依次指定参数log2m、log2explicit、log2sparse。 log2sparse 取值范围是 0 到 14 , 0 表示直接跳过 Sparse 模式。该参数可以用来设置 Sparse 模式的阈值大小,在数据段长度达到2log2sparse后切换为 Full 模式。若输入-1或者 NULL ,则 log2sparse 采用内置默认值。 + + 返回值类型:hll + + 示例: + + ``` + openGauss=# select hll_cardinality(hll_add_agg(hll_hash_text(c), NULL , 6 , 10)) from t_data; + hll_cardinality + ------------------ + 498.496062953313 + (1 row) + ``` + +- hll\_add\_agg\(hll\_hashval, int32 log2m , int32 log2explicit , int64 log2sparse , int32 duplicatecheck\) + + 描述:把哈希后的数据按照分组放到 hll 中, 依次制定参数log2m、log2explicit、log2sparse、duplicatecheck, duplicatecheck 取值范围是 0 或者 1 ,表示是否开启该模式,默认情况下该模式会关闭。若输入-1或者 NULL ,则 duplicatecheck 采用内置默认值。 + + 返回值类型:hll + + 示例: + + ``` + openGauss=# select hll_cardinality(hll_add_agg(hll_hash_text(c), NULL , 6 , 10 , -1)) from t_data; + hll_cardinality + ------------------ + 498.496062953313 + (1 row) + ``` + +- hll\_union\_agg\(hll\) + + 描述:将多个 hll 类型数据 union 成一个 hll 。 + + 返回值类型:hll + + 示例: + + ``` + --将各组中的 hll 数据 union 成一个 hll ,并计算 distinct 值。 + openGauss=# select #hll_union_agg(c) as cardinality from t_a_c_hll; + cardinality + ------------------ + 498.496062953313 + (1 row) + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >注意:当两个或者多个 hll 数据结构做 union 的时候,必须要保证其中每一个 hll 里面的精度参数一样,否则将不可以进行 union 。同样的约束也适用于函数hll\_union\(hll,hll\)。 + + +## 废弃函数 + +由于版本升级,HLL(HyperLogLog)有一些旧的函数废弃,用户可以用类似的函数进行替代。 + +- hll\_schema\_version\(hll\) + + 描述:查看当前 hll 中的 schema version 。旧版本 schema version 是常值 1 ,用来进行 hll 字段的头部校验,重构后的 hll 在头部增加字段“HLL”进行校验, schema version 不再使用。 + +- hll\_regwidth\(hll\) + + 描述:查看 hll 数据结构中桶的位数大小。旧版本桶的位数 regwidth 取值1\~5,会存在较大的误差,也限制了基数估计上限。 重构后 regwidth 为固定值 6 ,不再使用 regwidth 变量。 + +- hll\_expthresh\(hll\) + + 描述:得到当前 hll 中 expthresh 大小。采用hll\_log2explicit\(hll\)替代类似功能。 + +- hll\_sparseon\(hll\) + + 描述:是否启用 Sparse 模式。采用hll\_log2sparse\(hll\)替代类似功能, 0 表示关闭 Sparse 模式。 + + +## 内置函数 + +HLL(HyperLogLog)有一系列内置函数用于内部对数据进行处理,一般情况下用户不需要熟知这些函数的使用。详情见[表1](#table763375795510)。 + +**表 1** 内置函数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

函数名称

+

功能描述

+

hll_in

+

以 string 格式接收 hll 数据。

+

hll_out

+

以 string 格式发送 hll 数据。

+

hll_recv

+

以 bytea 格式接收 hll 数据。

+

hll_send

+

以 bytea 格式发送 hll 数据。

+

hll_trans_in

+

以 string 格式接收 hll_trans_type 数据。

+

hll_trans_out

+

以 string 格式发送 hll_trans_type 数据。

+

hll_trans_recv

+

以 bytea 形式接收 hll_trans_type 数据。

+

hll_trans_send

+

以 bytea 形式发送 hll_trans_type 数据。

+

hll_typmod_in

+

接收 typmod 类型数据。

+

hll_typmod_out

+

发送 typmod 类型数据。

+

hll_hashval_in

+

接收 hll_hashval 类型数据。

+

hll_hashval_out

+

发送 hll_hashval 类型数据。

+

hll_add_trans0

+

类似于 hll_add 所提供的功能,初始化时无指定入参,通常在聚合运算的第一阶段 DN 上使用。

+

hll_add_trans1

+

类似于 hll_add 所提供的功能,初始化时指定一个入参,通常在聚合运算的第一阶段 DN 上使用。

+

hll_add_trans2

+

类似于 hll_add 所提供的功能,初始化时指定两个入参,通常在聚合运算的第一阶段 DN 上使用。

+

hll_add_trans3

+

类似于 hll_add 所提供的功能,初始化时指定三个入参,通常在聚合运算的第一阶段 DN 上使用。

+

hll_add_trans4

+

类似于 hll_add 所提供的功能,初始化时指定四个入参,通常在聚合运算的第一阶段 DN 上使用。

+

hll_union_trans

+

类似 hll_union 所提供的功能,在聚合运算的第一阶段 DN 上使用。

+

hll_union_collect

+

类似于 hll_union 所提供的功能,在聚合运算第二阶段 DN 上使用,汇总各个 DN 上的结果。

+

hll_pack

+

在聚合运算第三阶段 DN 上使用,把自定义 hll_trans_type 类型最后转换成 hll 类型。

+

hll

+

用于 hll 类型转换成 hll 类型,根据输入参数会设定指定参数。

+

hll_hashval

+

用于 bigint 类型转换成 hll_hashval 类型。

+

hll_hashval_int4

+

用于 int4 类型转换成 hll_hashval 类型。

+
+ +## 操作符 + +- = + + 描述:比较 hll 或hll\_hashval的值是否相等。 + + 返回值类型:bool + + 示例: + + ``` + --hll + openGauss=# select (hll_empty() || hll_hash_integer(1)) = (hll_empty() || hll_hash_integer(1)); + column + ---------- + t + (1 row) + + --hll_hashval + openGauss=# select hll_hash_integer(1) = hll_hash_integer(1); + ?column? + ---------- + t + (1 row) + ``` + + +- <\> or != + + 描述:比较 hll 或hll\_hashval是否不相等。 + + 返回值类型:bool + + 示例: + + ``` + --hll + openGauss=# select (hll_empty() || hll_hash_integer(1)) <> (hll_empty() || hll_hash_integer(2)); + ?column? + ---------- + t + (1 row) + + --hll_hashval + openGauss=# select hll_hash_integer(1) <> hll_hash_integer(2); + ?column? + ---------- + t + (1 row) + ``` + +- || + + 描述:可代表hll\_add、hll\_union、hll\_add\_rev三个函数的功能。 + + 返回值类型:hll + + 示例: + + ``` + --hll_add + openGauss=# select hll_empty() || hll_hash_integer(1); + ?column? + ---------------------------------------------------------------------------- + \x484c4c08000002002b0900000000000000f03f3e2921ff133fbaed3e2921ff133fbaed00 + (1 row) + + --hll_add_rev + openGauss=# select hll_hash_integer(1) || hll_empty(); + ?column? + ---------------------------------------------------------------------------- + \x484c4c08000002002b0900000000000000f03f3e2921ff133fbaed3e2921ff133fbaed00 + (1 row) + + --hll_union + openGauss=# select (hll_empty() || hll_hash_integer(1)) || (hll_empty() || hll_hash_integer(2)); + ?column? + -------------------------------------------------------------------------------------------- + \x484c4c10002000002b090000000000000000400000000000000000b3ccc49320cca1ae3e2921ff133fbaed00 + (1 row) + ``` + +- \# + + 描述:计算出 hll 的 Dintinct 值, 同hll\_cardinality函数。 + + 返回值类型:int + + 示例: + + ``` + openGauss=# select #(hll_empty() || hll_hash_integer(1)); + ?column? + ---------- + 1 + (1 row) + ``` + diff --git "a/content/zh/docs/Developerguide/HLL\346\225\260\346\215\256\347\261\273\345\236\213.md" "b/content/zh/docs/Developerguide/HLL\346\225\260\346\215\256\347\261\273\345\236\213.md" index 7c18bccf1..6b931ab5f 100644 --- "a/content/zh/docs/Developerguide/HLL\346\225\260\346\215\256\347\261\273\345\236\213.md" +++ "b/content/zh/docs/Developerguide/HLL\346\225\260\346\215\256\347\261\273\345\236\213.md" @@ -1,264 +1,264 @@ -# HLL数据类型 - -HLL(HyperLoglog)是统计数据集中唯一值个数的高效近似算法。它有着计算速度快、节省空间的特点,不需要直接存储集合本身,而是存储一种名为HLL的数据结构。每当有新数据加入进行统计时,只需要把数据经过哈希计算并插入到HLL中,最后根据HLL就可以得到结果。 - -HLL与其他算法的比较请参见[表1](#table55621821164213)。 - -**表 1** HLL与其他算法比较 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

项目

-

Sort算法

-

Hash算法

-

HLL

-

时间复杂度

-

O(nlogn)

-

O(n)

-

O(n)

-

空间复杂度

-

O(n)

-

O(n)

-

log(logn)

-

误差率

-

0

-

0

-

≈0.8%

-

所需存储空间

-

原始数据大小

-

原始数据大小

-

默认规格下最大16KB

-
- -HLL在计算速度和所占存储空间上都占优势。在时间复杂度上,Sort算法需要排序至少O\(nlogn\)的时间,虽说Hash算法和HLL一样扫描一次全表O\(n\)的时间就可以得出结果,但是存储空间上,Sort算法和Hash算法都需要先把原始数据存起来再进行统计,会导致存储空间消耗巨大,而对HLL来说不需要存原始数据,只需要维护HLL数据结构,故占用空间有很大的压缩,默认规格下HLL数据结构的最大空间约为16KB。 - ->![](public_sys-resources/icon-notice.gif) **须知:** -> ->- 当前默认规格下可计算最大distinct值的数量约为1.1e+15个,误差率为0.8%。用户应注意如果计算结果超过当前规格下distinct最大值会导致计算结果误差率变大,或导致计算结果失败并报错。 -> ->- 用户在首次使用该特性时,应该对业务的distinct value做评估,选取适当的配置参数并做验证,以确保精度符合要求: -> -> - 当前默认参数下,可以计算的distinct值为1.1e+15,如果计算得到的distinct值为NaN,需要调整log2m,或者采用其他算法计算distinct值。 -> -> - 虽然hash算法存在极低的hash collision概率,但是建议用户在首次使用时,选取2-3个hash seed验证,如果得到的distinct value相差不大,则可以从该组seed中任选一个作为hash seed。 - -HLL中主要的数据结构,请参见[表2](#table18186113885012)。 - -**表 2** HyperLogLog中主要数据结构 - - - - - - - - - - -

数据类型

-

功能描述

-

hll

-

hll头部为27字节长度字段,默认规格下数据段长度0~16KB,可直接计算得到distinct值。

-
- -创建HLL数据类型时,可以支持0\~4个参数入参,具体的参数含义与参数规格同函数hll\_empty一致。第一个参数为log2m,表示分桶数的对数值,取值范围10\~16;第二个参数为log2explicit,表示Explicit模式的阈值大小,取值范围0\~12;第三个参数为log2sparse,表示Sparse模式的阈值大小,取值范围0\~14;第四个参数为duplicatecheck,表示是否启用duplicatecheck,取值范围为0\~1。当入参输入值为-1时,会采用默认值设定HLL的参数。可以通过\\d或\\d+查看HLL类型的参数。 - ->![](public_sys-resources/icon-note.gif) **说明:** -> ->创建HLL数据类型时,根据入参的行为不同,结果不同: -> ->- 创建HLL类型时对应入参不输入或输入-1,采用默认值设定对应的HLL参数。 -> ->- 输入合法范围的入参,对应HLL参数采用输入值。 -> ->- 输入不合法范围的入参,创建HLL类型报错。 - -``` --- 创建hll类型的表,不指定入参 -openGauss=# create table t1 (id integer, set hll); -openGauss=# \d t1 - Table "public.t1" - Column | Type | Modifiers ---------+---------+----------- - c1 | integer | - c2 | hll | - --- 创建hll类型的表,指定前两个入参,后两个采用默认值 -openGauss=# create table t2 (id integer, set hll(12,4)); - Table "public.t2" - Column | Type | Modifiers ---------+----------------+----------- - c1 | integer | - c2 | hll(12,4,12,0) | - ---创建hll类型的表,指定第三个入参,其余采用默认值 -openGauss=# create table t3(id int, set hll(-1,-1,8,-1)); -openGauss=# \d t3 - Table "public.t3" - Column | Type | Modifiers ---------+----------------+----------- - c1 | integer | - c2 | hll(14,10,8,0) | - ---创建hll类型的表,指定入参不合法报错 -openGauss=# create table t4(id int, set hll(5,-1)); -ERROR: log2m = 5 is out of range, it should be in range 10 to 16, or set -1 as default -``` - ->![](public_sys-resources/icon-note.gif) **说明:** -> ->对含有HLL类型的表插入HLL对象时,HLL类型的设定参数须同插入对象的设定参数一致,否则报错。 - -``` --- 创建带有hll类型的表 -openGauss=# create table t1(id integer, set hll(14)); - --- 向表中插入hll对象,参数一致,成功 -openGauss=# insert into t1 values (1, hll_empty(14,-1)); - --- 向表中插入hll对象,参数不一致,失败 -openGauss=# insert into t1(id, set) values (1, hll_empty(14,5)); -ERROR: log2explicit does not match: source is 5 and dest is 10 -``` - -HLL的应用场景。 - -- 场景1:“Hello World” - - 通过下面的示例说明如何使用hll数据类型: - - ``` - -- 创建带有hll类型的表 - openGauss=# create table helloworld (id integer, set hll); - - -- 向表中插入空的hll - openGauss=# insert into helloworld(id, set) values (1, hll_empty()); - - -- 把整数经过哈希计算加入到hll中 - openGauss=# update helloworld set set = hll_add(set, hll_hash_integer(12345)) where id = 1; - - -- 把字符串经过哈希计算加入到hll中 - openGauss=# update helloworld set set = hll_add(set, hll_hash_text('hello world')) where id = 1; - - -- 得到hll中的distinct值 - openGauss=# select hll_cardinality(set) from helloworld where id = 1; - hll_cardinality - ----------------- - 2 - (1 row) - - -- 删除表 - openGauss=# drop table helloworld; - ``` - -- 场景2:“网站访客数量统计” - - 通过下面的示例说明hll如何统计在一段时间内访问网站的不同用户数量: - - ``` - -- 创建原始数据表,表示某个用户在某个时间访问过网站。 - openGauss=# create table facts ( - date date, - user_id integer - ); - - -- 构造数据,表示一天中有哪些用户访问过网站。 - openGauss=# insert into facts values ('2019-02-20', generate_series(1,100)); - openGauss=# insert into facts values ('2019-02-21', generate_series(1,200)); - openGauss=# insert into facts values ('2019-02-22', generate_series(1,300)); - openGauss=# insert into facts values ('2019-02-23', generate_series(1,400)); - openGauss=# insert into facts values ('2019-02-24', generate_series(1,500)); - openGauss=# insert into facts values ('2019-02-25', generate_series(1,600)); - openGauss=# insert into facts values ('2019-02-26', generate_series(1,700)); - openGauss=# insert into facts values ('2019-02-27', generate_series(1,800)); - - -- 创建表并指定列为hll。 - openGauss=# create table daily_uniques ( - date date UNIQUE, - users hll - ); - - -- 根据日期把数据分组,并把数据插入到hll中。 - openGauss=# insert into daily_uniques(date, users) - select date, hll_add_agg(hll_hash_integer(user_id)) - from facts - group by 1; - - -- 计算每一天访问网站不同用户数量 - openGauss=# select date, hll_cardinality(users) from daily_uniques order by date; - date | hll_cardinality - ------------+------------------ - 2019-02-20 | 100 - 2019-02-21 | 200.217913059312 - 2019-02-22 | 301.76494508014 - 2019-02-23 | 400.862858326446 - 2019-02-24 | 502.626933349694 - 2019-02-25 | 601.922606454213 - 2019-02-26 | 696.602316769498 - 2019-02-27 | 798.111731634412 - (8 rows) - - -- 计算在2019.02.20到2019.02.26一周中有多少不同用户访问过网站 - openGauss=# select hll_cardinality(hll_union_agg(users)) from daily_uniques where date >= '2019-02-20'::date and date <= '2019-02-26'::date; - hll_cardinality - ------------------ - 702.941844662509 - (1 row) - - -- 计算昨天访问过网站而今天没访问网站的用户数量。 - openGauss=# SELECT date, (#hll_union_agg(users) OVER two_days) - #users AS lost_uniques FROM daily_uniques WINDOW two_days AS (ORDER BY date ASC ROWS 1 PRECEDING); - date | lost_uniques - ------------+-------------- - 2019-02-20 | 0 - 2019-02-21 | 0 - 2019-02-22 | 0 - 2019-02-23 | 0 - 2019-02-24 | 0 - 2019-02-25 | 0 - 2019-02-26 | 0 - 2019-02-27 | 0 - (8 rows) - - -- 删除表 - openGauss=# drop table facts; - openGauss=# drop table daily_uniques; - ``` - -- 场景3:“插入数据不满足hll数据结构要求” - - 当用户给hll类型的字段插入数据的时候,必须保证插入的数据满足hll数据结构要求,如果解析后不满足就会报错。如下示例中: 插入数据'E\\\\1234'时,该数据不满足hll数据结构,不能解析成功因此失败报错。 - - ``` - openGauss=# create table test(id integer, set hll); - openGauss=# insert into test values(1, 'E\\1234'); - ERROR: not a hll type, size=6 is not enough - openGauss=# drop table test; - ``` - - +# HLL数据类型 + +HLL(HyperLoglog)是统计数据集中唯一值个数的高效近似算法。它有着计算速度快、节省空间的特点,不需要直接存储集合本身,而是存储一种名为 HLL 的数据结构。每当有新数据加入进行统计时,只需要把数据经过哈希计算并插入到 HLL 中,最后根据 HLL 就可以得到结果。 + +HLL 与其他算法的比较请参见[表1](#table55621821164213)。 + +**表 1** HLL与其他算法比较 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

项目

+

Sort算法

+

Hash算法

+

HLL

+

时间复杂度

+

O(nlogn)

+

O(n)

+

O(n)

+

空间复杂度

+

O(n)

+

O(n)

+

log(logn)

+

误差率

+

0

+

0

+

≈0.8%

+

所需存储空间

+

原始数据大小

+

原始数据大小

+

默认规格下最大16KB

+
+ +HLL 在计算速度和所占存储空间上都占优势。在时间复杂度上, Sort 算法需要排序至少O\(nlogn\)的时间,虽说 Hash 算法和 HLL 一样扫描一次全表O\(n\)的时间就可以得出结果,但是存储空间上, Sort 算法和 Hash 算法都需要先把原始数据存起来再进行统计,会导致存储空间消耗巨大,而对 HLL 来说不需要存原始数据,只需要维护 HLL 数据结构,故占用空间有很大的压缩,默认规格下 HLL 数据结构的最大空间约为 16KB 。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +> +>- 当前默认规格下可计算最大 distinct 值的数量约为1.1e+15个,误差率为0.8%。用户应注意如果计算结果超过当前规格下 distinct 最大值会导致计算结果误差率变大,或导致计算结果失败并报错。 +> +>- 用户在首次使用该特性时,应该对业务的 distinct value 做评估,选取适当的配置参数并做验证,以确保精度符合要求: +> +> - 当前默认参数下,可以计算的 distinct 值为1.1e+15,如果计算得到的 distinct 值为 NaN ,需要调整 log2m ,或者采用其他算法计算 distinct 值。 +> +> - 虽然 hash 算法存在极低的 hash collision 概率,但是建议用户在首次使用时,选取2-3个 hash seed 验证,如果得到的 distinct value 相差不大,则可以从该组 seed 中任选一个作为 hash seed 。 + +HLL 中主要的数据结构,请参见[表2](#table18186113885012)。 + +**表 2** HyperLogLog中主要数据结构 + + + + + + + + + + +

数据类型

+

功能描述

+

hll

+

hll头部为 27 字节长度字段,默认规格下数据段长度0~16KB,可直接计算得到 distinct 值。

+
+ +创建 HLL 数据类型时,可以支持0\~4个参数入参,具体的参数含义与参数规格同函数hll\_empty一致。第一个参数为 log2m ,表示分桶数的对数值,取值范围10\~16;第二个参数为 log2explicit ,表示 Explicit 模式的阈值大小,取值范围0\~12;第三个参数为 log2sparse ,表示 Sparse 模式的阈值大小,取值范围0\~14;第四个参数为 duplicatecheck ,表示是否启用 duplicatecheck ,取值范围为0\~1。当入参输入值为-1时,会采用默认值设定 HLL 的参数。可以通过\\d或\\d+查看 HLL 类型的参数。 + +>![](public_sys-resources/icon-note.gif) **说明:** +> +>创建 HLL 数据类型时,根据入参的行为不同,结果不同: +> +>- 创建 HLL 类型时对应入参不输入或输入-1,采用默认值设定对应的 HLL 参数。 +> +>- 输入合法范围的入参,对应 HLL 参数采用输入值。 +> +>- 输入不合法范围的入参,创建 HLL 类型报错。 + +``` +-- 创建 hll 类型的表,不指定入参 +openGauss=# create table t1 (id integer, set hll); +openGauss=# \d t1 + Table "public.t1" + Column | Type | Modifiers +--------+---------+----------- + c1 | integer | + c2 | hll | + +-- 创建 hll 类型的表,指定前两个入参,后两个采用默认值 +openGauss=# create table t2 (id integer, set hll(12,4)); + Table "public.t2" + Column | Type | Modifiers +--------+----------------+----------- + c1 | integer | + c2 | hll(12, 4 , 12 ,0) | + +--创建 hll 类型的表,指定第三个入参,其余采用默认值 +openGauss=# create table t3(id int, set hll(-1,-1, 8 ,-1)); +openGauss=# \d t3 + Table "public.t3" + Column | Type | Modifiers +--------+----------------+----------- + c1 | integer | + c2 | hll(14, 10 , 8 ,0) | + +--创建 hll 类型的表,指定入参不合法报错 +openGauss=# create table t4(id int, set hll(5,-1)); +ERROR: log2m = 5 is out of range, it should be in range 10 to 16 , or set -1 as default +``` + +>![](public_sys-resources/icon-note.gif) **说明:** +> +>对含有 HLL 类型的表插入 HLL 对象时, HLL 类型的设定参数须同插入对象的设定参数一致,否则报错。 + +``` +-- 创建带有 hll 类型的表 +openGauss=# create table t1(id integer, set hll(14)); + +-- 向表中插入 hll 对象,参数一致,成功 +openGauss=# insert into t1 values (1, hll_empty(14,-1)); + +-- 向表中插入 hll 对象,参数不一致,失败 +openGauss=# insert into t1(id, set) values (1, hll_empty(14,5)); +ERROR: log2explicit does not match: source is 5 and dest is 10 +``` + +HLL 的应用场景。 + +- 场景1:“Hello World” + + 通过下面的示例说明如何使用 hll 数据类型: + + ``` + -- 创建带有 hll 类型的表 + openGauss=# create table helloworld (id integer, set hll); + + -- 向表中插入空的hll + openGauss=# insert into helloworld(id, set) values (1, hll_empty()); + + -- 把整数经过哈希计算加入到 hll 中 + openGauss=# update helloworld set set = hll_add(set, hll_hash_integer(12345)) where id = 1; + + -- 把字符串经过哈希计算加入到 hll 中 + openGauss=# update helloworld set set = hll_add(set, hll_hash_text('hello world')) where id = 1; + + -- 得到 hll 中的 distinct 值 + openGauss=# select hll_cardinality(set) from helloworld where id = 1; + hll_cardinality + ----------------- + 2 + (1 row) + + -- 删除表 + openGauss=# drop table helloworld; + ``` + +- 场景2:“网站访客数量统计” + + 通过下面的示例说明 hll 如何统计在一段时间内访问网站的不同用户数量: + + ``` + -- 创建原始数据表,表示某个用户在某个时间访问过网站。 + openGauss=# create table facts ( + date date , + user_id integer + ); + + -- 构造数据,表示一天中有哪些用户访问过网站。 + openGauss=# insert into facts values ('2019-02-20', generate_series(1,100)); + openGauss=# insert into facts values ('2019-02-21', generate_series(1,200)); + openGauss=# insert into facts values ('2019-02-22', generate_series(1,300)); + openGauss=# insert into facts values ('2019-02-23', generate_series(1,400)); + openGauss=# insert into facts values ('2019-02-24', generate_series(1,500)); + openGauss=# insert into facts values ('2019-02-25', generate_series(1,600)); + openGauss=# insert into facts values ('2019-02-26', generate_series(1,700)); + openGauss=# insert into facts values ('2019-02-27', generate_series(1,800)); + + -- 创建表并指定列为 hll 。 + openGauss=# create table daily_uniques ( + date date UNIQUE , + users hll + ); + + -- 根据日期把数据分组,并把数据插入到 hll 中。 + openGauss=# insert into daily_uniques(date, users) + select date , hll_add_agg(hll_hash_integer(user_id)) + from facts + group by 1; + + -- 计算每一天访问网站不同用户数量 + openGauss=# select date, hll_cardinality(users) from daily_uniques order by date; + date | hll_cardinality + ------------+------------------ + 2019-02-20 | 100 + 2019-02-21 | 200.217913059312 + 2019-02-22 | 301.76494508014 + 2019-02-23 | 400.862858326446 + 2019-02-24 | 502.626933349694 + 2019-02-25 | 601.922606454213 + 2019-02-26 | 696.602316769498 + 2019-02-27 | 798.111731634412 + (8 rows) + + -- 计算在2019.02.20到2019.02.26一周中有多少不同用户访问过网站 + openGauss=# select hll_cardinality(hll_union_agg(users)) from daily_uniques where date >= '2019-02-20'::date and date <= '2019-02-26'::date; + hll_cardinality + ------------------ + 702.941844662509 + (1 row) + + -- 计算昨天访问过网站而今天没访问网站的用户数量。 + openGauss=# SELECT date, (#hll_union_agg(users) OVER two_days) - #users AS lost_uniques FROM daily_uniques WINDOW two_days AS (ORDER BY date ASC ROWS 1 PRECEDING); + date | lost_uniques + ------------+-------------- + 2019-02-20 | 0 + 2019-02-21 | 0 + 2019-02-22 | 0 + 2019-02-23 | 0 + 2019-02-24 | 0 + 2019-02-25 | 0 + 2019-02-26 | 0 + 2019-02-27 | 0 + (8 rows) + + -- 删除表 + openGauss=# drop table facts; + openGauss=# drop table daily_uniques; + ``` + +- 场景3:“插入数据不满足 hll 数据结构要求” + + 当用户给 hll 类型的字段插入数据的时候,必须保证插入的数据满足 hll 数据结构要求,如果解析后不满足就会报错。如下示例中: 插入数据'E\\\\1234'时,该数据不满足 hll 数据结构,不能解析成功因此失败报错。 + + ``` + openGauss=# create table test(id integer, set hll); + openGauss=# insert into test values(1, 'E\\1234'); + ERROR: not a hll type, size=6 is not enough + openGauss=# drop table test; + ``` + + diff --git "a/content/zh/docs/Developerguide/HashFunc\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/HashFunc\345\207\275\346\225\260.md" index 53aab6818..6a2deb51a 100644 --- "a/content/zh/docs/Developerguide/HashFunc\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/HashFunc\345\207\275\346\225\260.md" @@ -1,592 +1,592 @@ -# HashFunc函数 - -- bucketabstime\(value,flag\) - - 描述:对abstime格式的数值value计算hash值并找到对应的hashbucket桶。 - - 参数:value为需要转换的数值,类型为abstime,flag为int类型表示数据分布方式,0表示hash分布。 - - 返回值类型:int32 - - 示例: - - ``` - openGauss=# select bucketabstime('2011-10-01 10:10:10.112',1); - bucketabstime - --------------- - 13954 - (1 row) - ``` - -- bucketbool\(value,flag\) - - 描述:对bool格式的数值value计算hash值并找到对应的hashbucket桶。 - - 参数:value为需要转换的数值,类型为bool,flag为int类型表示数据分布方式,0表示hash分布。 - - 返回值类型:int32 - - 示例: - - ``` - openGauss=# select bucketbool(true,1); - bucketbool - ------------ - 1 - (1 row) - openGauss=# select bucketbool(false,1); - bucketbool - ------------ - 0 - (1 row) - ``` - -- bucketbpchar\(value, flag\) - - 描述:对bpchar格式的数值value计算hash值并找到对应的hashbucket桶。 - - 参数:value为需要转换的数值,类型为bpchar,flag为int类型表示数据分布方式,0表示hash分布。 - - 返回值类型:int32 - - 示例: - - ``` - openGauss=# select bucketbpchar('test',1); - bucketbpchar - -------------- - 9761 - (1 row) - ``` - - -- bucketbytea\(value,flag\) - - 描述:对bytea格式的数值value计算hash值并找到对应的hashbucket桶。 - - 参数:value为需要转换的数值,类型为bytea,flag为int类型表示数据分布方式,0表示hash分布。 - - 返回值类型:int32 - - 示例: - - ``` - openGauss=# select bucketbytea('test',1); - bucketbytea - ------------- - 9761 - (1 row) - ``` - - -- bucketcash\(value,flag\) - - 描述:对money格式的数值value计算hash值并找到对应的hashbucket桶。 - - 参数:value为需要转换的数值,类型为money,flag为int类型表示数据分布方式,0表示hash分布。 - - 返回值类型:int32 - - 示例: - - ``` - openGauss=# select bucketcash(10::money,1); - bucketcash - ------------ - 8468 - (1 row) - ``` - -- getbucket\(value,flag\) - - 描述:从分布列获取hashbucket桶。 - - value为需要输入的数值,类型: - - “char”、abstime、bigint、boolean、bytea、character varying、character、date、double precision、int2vector、integer、interval、money、name、numeric、nvarchar2、oid、oidvector、raw、real、record、reltime、smalldatetime、smallint、text、time with time zone、time without time zone、timestamp with time zone、timestamp without time zone、tinyint、uuid - - flag表示数据分布方式,类型:integer - - 返回值类型:integer - - 示例: - - ``` - openGauss=# select getbucket(10,'H'); - getbucket - ----------- - 14535 - (1 row) - - openGauss=# select getbucket(11,'H'); - getbucket - ----------- - 13449 - (1 row) - - openGauss=# select getbucket(11,'R'); - getbucket - ----------- - 13449 - (1 row) - - openGauss=# select getbucket(12,'R'); - getbucket - ----------- - 9412 - (1 row) - - ``` - -- hash\_array\(anyarray\) - - 描述:数组哈希,将数组的元素通过哈希函数得到结果,并返回合并结果。 - - 参数:数据类型为anyarray。 - - 返回值类型:integer - - 示例: - - ``` - openGauss=# select hash_array(ARRAY[[1,2,3],[1,2,3]]); - hash_array - ------------ - -382888479 - (1 row) - ``` - -- hash\_group\(key\) - - 描述:流引擎中,该函数可将Group Clause中的各列计算为一个hash值。 - - 参数:key为Group Clause中各列的值。 - - 返回值类型:32位hash值 - - 示例: - - ``` - 按照步骤依次执行。 - openGauss=# CREATE TABLE tt(a int, b int,c int,d int); - NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. - HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. - CREATE TABLE - openGauss=# select * from tt; - a | b | c | d - ---+---+---+--- - (0 rows) - - openGauss=# insert into tt values(1,2,3,4); - INSERT 0 1 - openGauss=# select * from tt; - a | b | c | d - ---+---+---+--- - 1 | 2 | 3 | 4 - (1 row) - - openGauss=# insert into tt values(5,6,7,8); - INSERT 0 1 - openGauss=# select * from tt; - a | b | c | d - ---+---+---+--- - 1 | 2 | 3 | 4 - 5 | 6 | 7 | 8 - (2 rows) - - openGauss=# select hash_group(a,b) from tt where a=1 and b=2; - hash_group - ------------ - 990882385 - (1 row) - ``` - -- hash\_numeric\(numeric\) - - 描述:计算Numeric类型的数据的hash值。 - - 参数:Numeric类型的数据。 - - 返回值类型:integer - - 示例: - - ``` - openGauss=# select hash_numeric(30); - hash_numeric - -------------- - -282860963 - (1 row) - ``` - -- hash\_range\(anyrange\) - - 描述:计算range的哈希值。 - - 参数:anyrange类型的数据。 - - 返回值类型:integer - - 示例: - - ``` - openGauss=# select hash_range(numrange(1.1,2.2)); - hash_range - ------------ - 683508754 - (1 row) - ``` - -- hashbpchar\(character\) - - 描述:计算bpchar的哈希值。 - - 参数:character类型的数据。 - - 返回值类型:integer - - 示例: - - ``` - openGauss=# select hashbpchar('hello'); - hashbpchar - ------------- - -1870292951 - (1 row) - ``` - -- hashchar\(char\) - - 描述:char和布尔数据转换为哈希值。 - - 参数:char类型的数据或者bool类型的数据。 - - 返回值类型:integer - - 示例: - - ``` - openGauss=# select hashbpchar('hello'); - hashbpchar - ------------- - -1870292951 - (1 row) - - openGauss=# select hashchar('true'); - hashchar - ------------ - 1686226652 - (1 row) - ``` - -- hashenum\(anyenum\) - - 描述:枚举类型转哈希值。 - - 参数:anyenum类型的数据。 - - 返回值类型:integer - - 示例: - - ``` - openGauss=# CREATE TYPE b1 AS ENUM('good', 'bad', 'ugly'); - CREATE TYPE - openGauss=# call hashenum('good'::b1); - hashenum - ------------ - 1821213359 - (1 row) - ``` - -- hashfloat4\(real\) - - 描述:float4转哈希值。 - - 参数:real类型的数据。 - - 返回值类型:integer - - 示例: - - ``` - openGauss=# select hashfloat4(12.1234); - hashfloat4 - ------------ - 1398514061 - (1 row) - ``` - -- hashfloat8\(double precision\) - - 描述:float8转哈希值。 - - 参数:double precision类型的数据。 - - 返回值类型:integer - - 示例: - - ``` - openGauss=# select hashfloat8(123456.1234); - hashfloat8 - ------------ - 1673665593 - (1 row) - ``` - -- hashinet\(inet\) - - 描述:支持inet / cidr上的哈希索引的功能。返回传入inet的hash值。 - - 参数:inet类型的数据。 - - 返回值类型:integer - - 示例: - - ``` - openGauss=# select hashinet('127.0.0.1'::inet); - hashinet - ------------- - -1435793109 - (1 row) - ``` - -- hashint1\(tinyint\) - - 描述:INT1转哈希值。 - - 参数:tinyint类型的数据。 - - 返回值类型:uint32 - - 示例: - - ``` - openGauss=# select hashint1(20); - hashint1 - ------------- - -2014641093 - (1 row) - ``` - -- hashint2\(smallint\) - - 描述:INT2转哈希值。 - - 参数:smallint类型的数据。 - - 返回值类型:uint32 - - 示例: - - ``` - openGauss=# select hashint2(20000); - hashint2 - ------------ - -863179081 - (1 row) - ``` - -- bucketchar - - 描述:计算入参的哈希值。 - - 参数:char, integer - - 返回值类型:integer - -- bucketdate - - 描述:计算入参的哈希值。 - - 参数:date, integer - - 返回值类型:integer - -- bucketfloat4 - - 描述:计算入参的哈希值。 - - 参数:real, integer - - 返回值类型:integer - -- bucketfloat8 - - 描述:计算入参的哈希值。 - - 参数:double precision, integer - - 返回值类型:integer - -- bucketint1 - - 描述:计算入参的哈希值。 - - 参数:tinyint, integer - - 返回值类型:integer - -- bucketint2 - - 描述:计算入参的哈希值。 - - 参数:smallint, integer - - 返回值类型:integer - -- bucketint2vector - - 描述:计算入参的哈希值。 - - 参数:int2vector, integer - - 返回值类型:integer - -- bucketint4 - - 描述:计算入参的哈希值。 - - 参数:integer, integer - - 返回值类型:integer - -- bucketint8 - - 描述:计算入参的哈希值。 - - 参数:bigint, integer - - 返回值类型:integer - -- bucketinterval - - 描述:计算入参的哈希值。 - - 参数:interval, integer - - 返回值类型:integer - -- bucketname - - 描述:计算入参的哈希值。 - - 参数:name, integer - - 返回值类型:integer - -- bucketnumeric - - 描述:计算入参的哈希值。 - - 参数:numeric, integer - - 返回值类型:integer - -- bucketnvarchar2 - - 描述:计算入参的哈希值。 - - 参数:nvarchar2, integer - - 返回值类型:integer - -- bucketoid - - 描述:计算入参的哈希值。 - - 参数:oid, integer - - 返回值类型:integer - -- bucketoidvector - - 描述:计算入参的哈希值。 - - 参数:oidvector, integer - - 返回值类型:integer - -- bucketraw - - 描述:计算入参的哈希值。 - - 参数:raw, integer - - 返回值类型:integer - -- bucketreltime - - 描述:计算入参的哈希值。 - - 参数:reltime, integer - - 返回值类型:integer - -- bucketsmalldatetime - - 描述:计算入参的哈希值。 - - 参数:smalldatetime, integer - - 返回值类型:integer - -- buckettext - - 描述:计算入参的哈希值。 - - 参数:text, integer - - 返回值类型:integer - -- buckettime - - 描述:计算入参的哈希值。 - - 参数:time without time zone, integer - - 返回值类型:integer - -- buckettimestamp - - 描述:计算入参的哈希值。 - - 参数:timestamp without time zone, integer - - 返回值类型:integer - -- buckettimestamptz - - 描述:计算入参的哈希值。 - - 参数:timestamp with time zone, integer - - 返回值类型:integer - -- buckettimetz - - 描述:计算入参的哈希值。 - - 参数:time with time zone, integer - - 返回值类型:integer - -- bucketuuid - - 描述:计算入参的哈希值。 - - 参数:uuid, integer - - 返回值类型:integer - -- bucketvarchar - - 描述:计算入参的哈希值。 - - 参数:character varying, integer - - 返回值类型:integer - - +# HashFunc函数 + +- bucketabstime\(value,flag\) + + 描述:对 abstime 格式的数值 value 计算 hash 值并找到对应的 hashbucket 桶。 + + 参数:value为需要转换的数值,类型为 abstime , flag 为 int 类型表示数据分布方式, 0 表示 hash 分布。 + + 返回值类型:int32 + + 示例: + + ``` + openGauss=# select bucketabstime('2011-10-01 10:10:10.112',1); + bucketabstime + --------------- + 13954 + (1 row) + ``` + +- bucketbool\(value,flag\) + + 描述:对 bool 格式的数值 value 计算 hash 值并找到对应的 hashbucket 桶。 + + 参数:value为需要转换的数值,类型为 bool , flag 为 int 类型表示数据分布方式, 0 表示 hash 分布。 + + 返回值类型:int32 + + 示例: + + ``` + openGauss=# select bucketbool(true,1); + bucketbool + ------------ + 1 + (1 row) + openGauss=# select bucketbool(false,1); + bucketbool + ------------ + 0 + (1 row) + ``` + +- bucketbpchar\(value, flag\) + + 描述:对 bpchar 格式的数值 value 计算 hash 值并找到对应的 hashbucket 桶。 + + 参数:value为需要转换的数值,类型为 bpchar , flag 为 int 类型表示数据分布方式, 0 表示 hash 分布。 + + 返回值类型:int32 + + 示例: + + ``` + openGauss=# select bucketbpchar('test',1); + bucketbpchar + -------------- + 9761 + (1 row) + ``` + + +- bucketbytea\(value,flag\) + + 描述:对 bytea 格式的数值 value 计算 hash 值并找到对应的 hashbucket 桶。 + + 参数:value为需要转换的数值,类型为 bytea , flag 为 int 类型表示数据分布方式, 0 表示 hash 分布。 + + 返回值类型:int32 + + 示例: + + ``` + openGauss=# select bucketbytea('test',1); + bucketbytea + ------------- + 9761 + (1 row) + ``` + + +- bucketcash\(value,flag\) + + 描述:对 money 格式的数值 value 计算 hash 值并找到对应的 hashbucket 桶。 + + 参数:value为需要转换的数值,类型为 money , flag 为 int 类型表示数据分布方式, 0 表示 hash 分布。 + + 返回值类型:int32 + + 示例: + + ``` + openGauss=# select bucketcash(10::money,1); + bucketcash + ------------ + 8468 + (1 row) + ``` + +- getbucket\(value,flag\) + + 描述:从分布列获取 hashbucket 桶。 + +value 为需要输入的数值,类型: + + “char”、abstime、bigint、boolean、bytea、character varying、character、date、double precision、int2vector、integer、interval、money、name、numeric、nvarchar2、oid、oidvector、raw、real、record、reltime、smalldatetime、smallint、text、time with time zone、time without time zone、timestamp with time zone、timestamp without time zone、tinyint、uuid + +flag 表示数据分布方式,类型:integer + + 返回值类型:integer + + 示例: + + ``` + openGauss=# select getbucket(10,'H'); + getbucket + ----------- + 14535 + (1 row) + + openGauss=# select getbucket(11,'H'); + getbucket + ----------- + 13449 + (1 row) + + openGauss=# select getbucket(11,'R'); + getbucket + ----------- + 13449 + (1 row) + + openGauss=# select getbucket(12,'R'); + getbucket + ----------- + 9412 + (1 row) + + ``` + +- hash\_array\(anyarray\) + + 描述:数组哈希,将数组的元素通过哈希函数得到结果,并返回合并结果。 + + 参数:数据类型为 anyarray 。 + + 返回值类型:integer + + 示例: + + ``` + openGauss=# select hash_array(ARRAY[[1, 2 ,3],[1, 2 ,3]]); + hash_array + ------------ + -382888479 + (1 row) + ``` + +- hash\_group\(key\) + + 描述:流引擎中,该函数可将 Group Clause 中的各列计算为一个 hash 值。 + + 参数:key为 Group Clause 中各列的值。 + + 返回值类型:32位 hash 值 + + 示例: + + ``` + 按照步骤依次执行。 + openGauss=# CREATE TABLE tt(a int, b int , c int ,d int); + NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. + HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. + CREATE TABLE + openGauss=# select * from tt; + a | b | c | d + ---+---+---+--- + (0 rows) + + openGauss=# insert into tt values(1, 2 , 3 ,4); + INSERT 0 1 + openGauss=# select * from tt; + a | b | c | d + ---+---+---+--- + 1 | 2 | 3 | 4 + (1 row) + + openGauss=# insert into tt values(5, 6 , 7 ,8); + INSERT 0 1 + openGauss=# select * from tt; + a | b | c | d + ---+---+---+--- + 1 | 2 | 3 | 4 + 5 | 6 | 7 | 8 + (2 rows) + + openGauss=# select hash_group(a,b) from tt where a=1 and b=2; + hash_group + ------------ + 990882385 + (1 row) + ``` + +- hash\_numeric\(numeric\) + + 描述:计算 Numeric 类型的数据的 hash 值。 + + 参数:Numeric类型的数据。 + + 返回值类型:integer + + 示例: + + ``` + openGauss=# select hash_numeric(30); + hash_numeric + -------------- + -282860963 + (1 row) + ``` + +- hash\_range\(anyrange\) + + 描述:计算 range 的哈希值。 + + 参数:anyrange类型的数据。 + + 返回值类型:integer + + 示例: + + ``` + openGauss=# select hash_range(numrange(1.1,2.2)); + hash_range + ------------ + 683508754 + (1 row) + ``` + +- hashbpchar\(character\) + + 描述:计算 bpchar 的哈希值。 + + 参数:character类型的数据。 + + 返回值类型:integer + + 示例: + + ``` + openGauss=# select hashbpchar('hello'); + hashbpchar + ------------- + -1870292951 + (1 row) + ``` + +- hashchar\(char\) + + 描述:char和布尔数据转换为哈希值。 + + 参数:char类型的数据或者 bool 类型的数据。 + + 返回值类型:integer + + 示例: + + ``` + openGauss=# select hashbpchar('hello'); + hashbpchar + ------------- + -1870292951 + (1 row) + + openGauss=# select hashchar('true'); + hashchar + ------------ + 1686226652 + (1 row) + ``` + +- hashenum\(anyenum\) + + 描述:枚举类型转哈希值。 + + 参数:anyenum类型的数据。 + + 返回值类型:integer + + 示例: + + ``` + openGauss=# CREATE TYPE b1 AS ENUM('good', 'bad', 'ugly'); + CREATE TYPE + openGauss=# call hashenum('good'::b1); + hashenum + ------------ + 1821213359 + (1 row) + ``` + +- hashfloat4\(real\) + + 描述:float4转哈希值。 + + 参数:real类型的数据。 + + 返回值类型:integer + + 示例: + + ``` + openGauss=# select hashfloat4(12.1234); + hashfloat4 + ------------ + 1398514061 + (1 row) + ``` + +- hashfloat8\(double precision\) + + 描述:float8转哈希值。 + + 参数:double precision类型的数据。 + + 返回值类型:integer + + 示例: + + ``` + openGauss=# select hashfloat8(123456.1234); + hashfloat8 + ------------ + 1673665593 + (1 row) + ``` + +- hashinet\(inet\) + + 描述:支持inet / cidr上的哈希索引的功能。返回传入 inet 的 hash 值。 + + 参数:inet类型的数据。 + + 返回值类型:integer + + 示例: + + ``` + openGauss=# select hashinet('127.0.0.1'::inet); + hashinet + ------------- + -1435793109 + (1 row) + ``` + +- hashint1\(tinyint\) + + 描述:INT1转哈希值。 + + 参数:tinyint类型的数据。 + + 返回值类型:uint32 + + 示例: + + ``` + openGauss=# select hashint1(20); + hashint1 + ------------- + -2014641093 + (1 row) + ``` + +- hashint2\(smallint\) + + 描述:INT2转哈希值。 + + 参数:smallint类型的数据。 + + 返回值类型:uint32 + + 示例: + + ``` + openGauss=# select hashint2(20000); + hashint2 + ------------ + -863179081 + (1 row) + ``` + +- bucketchar + + 描述:计算入参的哈希值。 + + 参数:char, integer + + 返回值类型:integer + +- bucketdate + + 描述:计算入参的哈希值。 + + 参数:date, integer + + 返回值类型:integer + +- bucketfloat4 + + 描述:计算入参的哈希值。 + + 参数:real, integer + + 返回值类型:integer + +- bucketfloat8 + + 描述:计算入参的哈希值。 + + 参数:double precision, integer + + 返回值类型:integer + +- bucketint1 + + 描述:计算入参的哈希值。 + + 参数:tinyint, integer + + 返回值类型:integer + +- bucketint2 + + 描述:计算入参的哈希值。 + + 参数:smallint, integer + + 返回值类型:integer + +- bucketint2vector + + 描述:计算入参的哈希值。 + + 参数:int2vector, integer + + 返回值类型:integer + +- bucketint4 + + 描述:计算入参的哈希值。 + + 参数:integer, integer + + 返回值类型:integer + +- bucketint8 + + 描述:计算入参的哈希值。 + + 参数:bigint, integer + + 返回值类型:integer + +- bucketinterval + + 描述:计算入参的哈希值。 + + 参数:interval, integer + + 返回值类型:integer + +- bucketname + + 描述:计算入参的哈希值。 + + 参数:name, integer + + 返回值类型:integer + +- bucketnumeric + + 描述:计算入参的哈希值。 + + 参数:numeric, integer + + 返回值类型:integer + +- bucketnvarchar2 + + 描述:计算入参的哈希值。 + + 参数:nvarchar2, integer + + 返回值类型:integer + +- bucketoid + + 描述:计算入参的哈希值。 + + 参数:oid, integer + + 返回值类型:integer + +- bucketoidvector + + 描述:计算入参的哈希值。 + + 参数:oidvector, integer + + 返回值类型:integer + +- bucketraw + + 描述:计算入参的哈希值。 + + 参数:raw, integer + + 返回值类型:integer + +- bucketreltime + + 描述:计算入参的哈希值。 + + 参数:reltime, integer + + 返回值类型:integer + +- bucketsmalldatetime + + 描述:计算入参的哈希值。 + + 参数:smalldatetime, integer + + 返回值类型:integer + +- buckettext + + 描述:计算入参的哈希值。 + + 参数:text, integer + + 返回值类型:integer + +- buckettime + + 描述:计算入参的哈希值。 + + 参数:time without time zone, integer + + 返回值类型:integer + +- buckettimestamp + + 描述:计算入参的哈希值。 + + 参数:timestamp without time zone, integer + + 返回值类型:integer + +- buckettimestamptz + + 描述:计算入参的哈希值。 + + 参数:timestamp with time zone, integer + + 返回值类型:integer + +- buckettimetz + + 描述:计算入参的哈希值。 + + 参数:time with time zone, integer + + 返回值类型:integer + +- bucketuuid + + 描述:计算入参的哈希值。 + + 参数:uuid, integer + + 返回值类型:integer + +- bucketvarchar + + 描述:计算入参的哈希值。 + + 参数:character varying, integer + + 返回值类型:integer + + diff --git "a/content/zh/docs/Developerguide/Hint\347\232\204\351\224\231\350\257\257-\345\206\262\347\252\201\345\217\212\345\221\212\350\255\246.md" "b/content/zh/docs/Developerguide/Hint\347\232\204\351\224\231\350\257\257-\345\206\262\347\252\201\345\217\212\345\221\212\350\255\246.md" index 4382a547a..a013ad7fc 100644 --- "a/content/zh/docs/Developerguide/Hint\347\232\204\351\224\231\350\257\257-\345\206\262\347\252\201\345\217\212\345\221\212\350\255\246.md" +++ "b/content/zh/docs/Developerguide/Hint\347\232\204\351\224\231\350\257\257-\345\206\262\347\252\201\345\217\212\345\221\212\350\255\246.md" @@ -1,63 +1,63 @@ -# Hint的错误、冲突及告警 - -Plan Hint的结果会体现在计划的变化上,可以通过explain来查看变化。 - -Hint中的错误不会影响语句的执行,只是不能生效,该错误会根据语句类型以不同方式提示用户。对于explain语句,hint的错误会以warning形式显示在界面上,对于非explain语句,会以debug1级别日志显示在日志中,关键字为PLANHINT。 - -hint的错误分为以下类型: - -- 语法错误 - - 语法规则树归约失败,会报错,指出出错的位置。 - - 例如:hint关键字错误,leading hint或join hint指定2个表以下,其它hint未指定表等。一旦发现语法错误,则立即终止hint的解析,所以此时只有错误前面的解析完的hint有效。 - - 例如: - - ``` - leading((t1 t2)) nestloop(t1) rows(t1 t2 #10) - ``` - - nestloop\(t1\)存在语法错误,则终止解析,可用hint只有之前解析的leading\(\(t1 t2\)\)。 - -- 语义错误 - - 表不存在,存在多个,或在leading或join中出现多次,均会报语义错误。 - - scanhint中的index不存在,会报语义错误。 - - 另外,如果子查询提升后,同一层出现多个名称相同的表,且其中某个表需要被hint,hint会存在歧义,无法使用,需要为相同表增加别名规避。 - -- hint重复或冲突 - - 如果存在hint重复或冲突,只有第一个hint生效,其它hint均会失效,会给出提示。 - - - hint重复是指,hint的方法及表名均相同。例如:nestloop\(t1 t2\) nestloop\(t1 t2\)。 - - hint冲突是指,table list一样的hint,存在不一样的hint,hint的冲突仅对于每一类hint方法检测冲突。 - - 例如:nestloop \(t1 t2\) hashjoin \(t1 t2\),则后面与前面冲突,此时hashjoin的hint失效。注意:nestloop\(t1 t2\)和no mergejoin\(t1 t2\)不冲突。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >leading hint中的多个表会进行拆解。例如:leading \(\(t1 t2 t3\)\)会拆解成:leading\(\(t1 t2\)\) leading\(\(\(t1 t2\) t3\)\),此时如果存在leading\(\(t2 t1\)\),则两者冲突,后面的会被丢弃。(例外:指定内外表的hint若与不指定内外表的hint重复,则始终丢弃不指定内外表的hint。) - - -- 子链接提升后hint失效 - - 子链接提升后的hint失效,会给出提示。通常出现在子链接中存在多个表连接的场景。提升后,子链接中的多个表不再作为一个整体出现在join中。 - -- 列类型不支持重分布 - - 对于skew hint来说,目的是为了进行重分布时的调优,所以当hint列的类型不支持重分布时,hint将无效。 - -- hint未被使用 - - 非等值join使用hashjoin hint或mergejoin hint。 - - 不包含索引的表使用indexscan hint或indexonlyscan hint。 - - 通常只有在索引列上使用过滤条件才会生成相应的索引路径,全表扫描将不会使用索引,因此使用indexscan hint或indexonlyscan hint将不会使用。 - - indexonlyscan只有输出列仅包含索引列才会使用,否则指定时hint不会被使用。 - - 多个表存在等值连接时,仅尝试有等值连接条件的表的连接,此时没有关联条件的表之间的路径将不会生成,所以指定相应的leading、join、rows hint将不使用,例如:t1 t2 t3表join,t1和t2,t2和t3有等值连接条件,则t1和t3不会优先连接,leading\(t1 t3\)不会被使用。 - - 生成stream计划时,如果表的分布列与join列相同,则不会生成redistribute的计划;如果不同,且另一表分布列与join列相同,只能生成redistribute的计划,不会生成broadcast的计划,指定相应的hint则不会被使用。 - - 如果子链接未被提升,则blockname hint不会被使用。 - - 对于skew hint,hint未被使用可能由于: - - 计划中不需要进行重分布。 - - hint指定的列为包含分布键。 - - hint指定倾斜信息有误或不完整,如对于join优化未指定值。 - - 倾斜优化的GUC参数处于关闭状态。 - - - +# Hint的错误、冲突及告警 + +Plan Hint 的结果会体现在计划的变化上,可以通过 explain 来查看变化。 + +Hint 中的错误不会影响语句的执行,只是不能生效,该错误会根据语句类型以不同方式提示用户。对于 explain 语句, hint 的错误会以 warning 形式显示在界面上,对于非 explain 语句,会以 debug1 级别日志显示在日志中,关键字为 PLANHINT 。 + +hint 的错误分为以下类型: + +- 语法错误 + + 语法规则树归约失败,会报错,指出出错的位置。 + + 例如:hint关键字错误, leading hint 或 join hint 指定 2 个表以下,其它 hint 未指定表等。一旦发现语法错误,则立即终止 hint 的解析,所以此时只有错误前面的解析完的 hint 有效。 + + 例如: + + ``` + leading((t1 t2)) nestloop(t1) rows(t1 t2 #10) + ``` + + nestloop\(t1\)存在语法错误,则终止解析,可用 hint 只有之前解析的leading\(\(t1 t2\)\)。 + +- 语义错误 + - 表不存在,存在多个,或在 leading 或 join 中出现多次,均会报语义错误。 + - scanhint中的 index 不存在,会报语义错误。 + - 另外,如果子查询提升后,同一层出现多个名称相同的表,且其中某个表需要被 hint , hint 会存在歧义,无法使用,需要为相同表增加别名规避。 + +- hint重复或冲突 + + 如果存在 hint 重复或冲突,只有第一个 hint 生效,其它 hint 均会失效,会给出提示。 + + - hint重复是指, hint 的方法及表名均相同。例如:nestloop\(t1 t2\) nestloop\(t1 t2\)。 + - hint冲突是指, table list 一样的 hint ,存在不一样的 hint , hint 的冲突仅对于每一类 hint 方法检测冲突。 + + 例如:nestloop \(t1 t2\) hashjoin \(t1 t2\),则后面与前面冲突,此时 hashjoin 的 hint 失效。注意:nestloop\(t1 t2\)和no mergejoin\(t1 t2\)不冲突。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >leading hint中的多个表会进行拆解。例如:leading \(\(t1 t2 t3\)\)会拆解成:leading\(\(t1 t2\)\) leading\(\(\(t1 t2\) t3\)\),此时如果存在leading\(\(t2 t1\)\),则两者冲突,后面的会被丢弃。(例外:指定内外表的 hint 若与不指定内外表的 hint 重复,则始终丢弃不指定内外表的 hint 。) + + +- 子链接提升后 hint 失效 + + 子链接提升后的 hint 失效,会给出提示。通常出现在子链接中存在多个表连接的场景。提升后,子链接中的多个表不再作为一个整体出现在 join 中。 + +- 列类型不支持重分布 + - 对于 skew hint 来说,目的是为了进行重分布时的调优,所以当 hint 列的类型不支持重分布时, hint 将无效。 + +- hint未被使用 + - 非等值 join 使用 hashjoin hint 或 mergejoin hint 。 + - 不包含索引的表使用 indexscan hint 或 indexonlyscan hint 。 + - 通常只有在索引列上使用过滤条件才会生成相应的索引路径,全表扫描将不会使用索引,因此使用 indexscan hint 或 indexonlyscan hint 将不会使用。 + - indexonlyscan只有输出列仅包含索引列才会使用,否则指定时 hint 不会被使用。 + - 多个表存在等值连接时,仅尝试有等值连接条件的表的连接,此时没有关联条件的表之间的路径将不会生成,所以指定相应的leading、join、rows hint将不使用,例如:t1 t2 t3表 join , t1 和 t2 , t2 和 t3 有等值连接条件,则 t1 和 t3 不会优先连接,leading\(t1 t3\)不会被使用。 + - 生成 stream 计划时,如果表的分布列与 join 列相同,则不会生成 redistribute 的计划;如果不同,且另一表分布列与 join 列相同,只能生成 redistribute 的计划,不会生成 broadcast 的计划,指定相应的 hint 则不会被使用。 + - 如果子链接未被提升,则 blockname hint 不会被使用。 + - 对于 skew hint , hint 未被使用可能由于: + - 计划中不需要进行重分布。 + - hint指定的列为包含分布键。 + - hint指定倾斜信息有误或不完整,如对于 join 优化未指定值。 + - 倾斜优化的 GUC 参数处于关闭状态。 + + + diff --git a/content/zh/docs/Developerguide/HyperLogLog.md b/content/zh/docs/Developerguide/HyperLogLog.md index 3dcc55e12..d9ec5a38b 100644 --- a/content/zh/docs/Developerguide/HyperLogLog.md +++ b/content/zh/docs/Developerguide/HyperLogLog.md @@ -1,99 +1,99 @@ -# HyperLogLog - -## hll\_default\_log2m - -**参数说明:**该参数可以指定hll数据结构桶的个数。桶的个数会影响hll计算distinct值的精度,桶的个数越多,误差越小。误差范围为:\[-1.04/2log2m\*1/2,+1.04/2log2m\*1/2\]。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,10\~16。 - -**默认值:**14 - -## hll\_default\_log2explicit - -**参数说明:**该参数可以用来设置从Explicit模式到Sparse模式的默认阈值大小。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,0\~12。0表示跳过Explicit模式,取1-12表示在基数到达2hll\_default\_log2explicit时切换模式。 - -**默认值:**10 - -## hll\_default\_log2sparse - -**参数说明:**该参数可以用来设置从Sparse模式到Full模式的默认阈值大小。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,0\~14。0表示跳过Explicit模式,取1-14表示在基数到达2hll\_default\_log2sparse时切换模式。 - -**默认值:**12 - -## hll\_duplicate\_check - -**参数说明:**该参数可以用来指定是否默认开启duplicatecheck。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**0,1。 -- 0表示默认关闭。 -- 1表示默认开启。 - -**默认值:**0 - -## hll\_default\_regwidth(废弃) - -**参数说明:**该参数可以指定hll数据结构每个桶的位数,该值越大,hll所占内存越高。hll\_default\_regwidth和hll\_default\_log2m可以决定当前hll能够计算的最大distinct value。当前regwidth设为固定值,该参数不再使用。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,1\~5。 - -**默认值:**5 - -## hll\_default\_expthresh(废弃) - -**参数说明:**该参数可以用来设置从Explicit模式到Sparse模式的默认阈值大小。当前已经使用参数hll\_default\_log2explicit替代类似功能。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,-1\~7。-1表示自动模式,0表示跳过Explicit模式,取1-7表示在基数到达2hll\_default\_expthresh时切换模式。 - -**默认值:**-1 - -## hll\_default\_sparseon(废弃) - -**参数说明:**该参数可用来指定是否默认开启Sparse模式。当前已经使用参数hll\_default\_log2sparse替代类似功能,hll\_default\_log2sparse设置为0时关闭Sparse模式。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**0,1。 -- 0表示默认关闭。 -- 1表示默认开启。 - -**默认值:**1 - -## hll\_max\_sparse(废弃) - -**参数说明:**该参数可以用来指定max\_sparse的大小。当前已经使用参数hll\_default\_log2sparse替代类似功能。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,-1\~2147483647‬ - -**默认值:**-1 - -## enable\_compress\_hll(废弃) - -**参数说明:**该参数可以用来指定是否对hll开启内存优化模式。目前hll内存已经进行了优化设计,该参数不再使用。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型 - -- on/true表示对hll开启内存优化模式。 -- off/false表示不开启内存优化模式。 - -**默认值:**off - +# HyperLogLog + +## hll\_default\_log2m + +**参数说明:**该参数可以指定 hll 数据结构桶的个数。桶的个数会影响 hll 计算 distinct 值的精度,桶的个数越多,误差越小。误差范围为:\[-1.04/2log2m\*1/2,+1.04/2log2m\*1/2\]。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,10\~16。 + +**默认值:**14 + +## hll\_default\_log2explicit + +**参数说明:**该参数可以用来设置从 Explicit 模式到 Sparse 模式的默认阈值大小。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,0\~12。 0 表示跳过 Explicit 模式,取1-12表示在基数到达2hll\_default\_log2explicit时切换模式。 + +**默认值:**10 + +## hll\_default\_log2sparse + +**参数说明:**该参数可以用来设置从 Sparse 模式到 Full 模式的默认阈值大小。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,0\~14。 0 表示跳过 Explicit 模式,取1-14表示在基数到达2hll\_default\_log2sparse时切换模式。 + +**默认值:**12 + +## hll\_duplicate\_check + +**参数说明:**该参数可以用来指定是否默认开启 duplicatecheck 。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**0, 1 。 +- 0表示默认关闭。 +- 1表示默认开启。 + +**默认值:**0 + +## hll\_default\_regwidth(废弃) + +**参数说明:**该参数可以指定 hll 数据结构每个桶的位数,该值越大, hll 所占内存越高。hll\_default\_regwidth和hll\_default\_log2m可以决定当前 hll 能够计算的最大 distinct value 。当前 regwidth 设为固定值,该参数不再使用。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,1\~5。 + +**默认值:**5 + +## hll\_default\_expthresh(废弃) + +**参数说明:**该参数可以用来设置从 Explicit 模式到 Sparse 模式的默认阈值大小。当前已经使用参数hll\_default\_log2explicit替代类似功能。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,-1\~7。-1表示自动模式, 0 表示跳过 Explicit 模式,取1-7表示在基数到达2hll\_default\_expthresh时切换模式。 + +**默认值:**-1 + +## hll\_default\_sparseon(废弃) + +**参数说明:**该参数可用来指定是否默认开启 Sparse 模式。当前已经使用参数hll\_default\_log2sparse替代类似功能,hll\_default\_log2sparse设置为 0 时关闭 Sparse 模式。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**0, 1 。 +- 0表示默认关闭。 +- 1表示默认开启。 + +**默认值:**1 + +## hll\_max\_sparse(废弃) + +**参数说明:**该参数可以用来指定max\_sparse的大小。当前已经使用参数hll\_default\_log2sparse替代类似功能。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,-1\~2147483647‬ + +**默认值:**-1 + +## enable\_compress\_hll(废弃) + +**参数说明:**该参数可以用来指定是否对 hll 开启内存优化模式。目前 hll 内存已经进行了优化设计,该参数不再使用。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**布尔型 + +- on/true表示对 hll 开启内存优化模式。 +- off/false表示不开启内存优化模式。 + +**默认值:**off + diff --git a/content/zh/docs/Developerguide/I-O.md b/content/zh/docs/Developerguide/I-O.md index 40365e4b0..8164bd67f 100644 --- a/content/zh/docs/Developerguide/I-O.md +++ b/content/zh/docs/Developerguide/I-O.md @@ -1,76 +1,76 @@ -# I/O - -通过iostat、pidstat命令或openGauss健康检查工具查看openGauss内节点I/O繁忙度和吞吐量,分析是否存在由于I/O导致的性能瓶颈。 - -## 查看I/O状况 - -查询服务器I/O的方法主要有以下三种方式: - -- 使用iostat命令查看I/O情况。此命令主要关注单个硬盘的I/O使用率和每秒读取、写入的数量。 - - ``` - iostat -xm 1 //1为间隔时间 - Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util - sdc 0.01 519.62 2.35 44.10 0.31 2.17 109.66 0.68 14.62 2.80 15.25 0.31 1.42 - sdb 0.01 515.95 5.84 44.78 0.89 2.16 123.51 0.72 14.19 1.55 15.84 0.31 1.55 - sdd 0.02 519.93 2.36 43.91 0.32 2.17 110.16 0.65 14.12 2.58 14.74 0.30 1.38 - sde 0.02 520.26 2.34 45.17 0.31 2.18 107.46 0.80 16.86 2.92 17.58 0.34 1.63 - sda 12.07 15.72 3.97 5.01 0.07 0.08 34.11 0.28 30.64 10.11 46.92 0.98 0.88 - ``` - - “rMB/s”为每秒读取的MB数,“wMB/s”为每秒写入的MB数,“%util”为硬盘使用率。 - -- 使用pidstat命令查看I/O情况。此命令主要关注单个进程每秒读取、写入的数量。 - - ``` - pidstat -d 1 10 //1为采样间隔时间,10为采样次数 - 03:17:12 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command - 03:17:13 PM 1006 36134 0.00 59436.00 0.00 gaussdb - - ``` - - “kB\_rd/s”为每秒读取的kB数,“kB\_wr/s”为每秒写入的kB数。 - -- 使用gs\_checkperf工具对openGauss进行性能检查,需要以omm用户登录。 - - ``` - gs_checkperf - Cluster statistics information: - Host CPU busy time ratio : .69 % - MPPDB CPU time % in busy time : .35 % - Shared Buffer Hit ratio : 99.92 % - In-memory sort ratio : 100.00 % - Physical Reads : 8581 - Physical Writes : 2603 - DB size : 281 MB - Total Physical writes : 1944 - Active SQL count : 3 - Session count : 11 - ``` - - 显示结果包括每个节点的I/O使用情况,物理读写次数。 - - 也可以使用gs\_checkperf --detail命令查询每个节点的详细性能信息。 - - -## 性能参数分析 - -1. 检查磁盘空间使用率,建议不要超过60%。 - - ``` - df -T - ``` - -2. 若I/O持续过高,建议尝试以下方式降低I/O。 - - 降低并发数。 - - 对查询相关表做VACUUM FULL。 - - ``` - vacuum full tablename; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >建议用户在系统空闲时进行VACUUM FULL操作,VACUUM FULL操作会造成短时间内I/O负载重,反而不利于降低I/O。 - - - +# I/O + +通过iostat、pidstat命令或 openGauss 健康检查工具查看 openGauss 内节点I/O繁忙度和吞吐量,分析是否存在由于I/O导致的性能瓶颈。 + +## 查看I/O状况 + +查询服务器I/O的方法主要有以下三种方式: + +- 使用 iostat 命令查看I/O情况。此命令主要关注单个硬盘的I/O使用率和每秒读取、写入的数量。 + + ``` + iostat -xm 1 //1为间隔时间 + Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util + sdc 0.01 519.62 2.35 44.10 0.31 2.17 109.66 0.68 14.62 2.80 15.25 0.31 1.42 + sdb 0.01 515.95 5.84 44.78 0.89 2.16 123.51 0.72 14.19 1.55 15.84 0.31 1.55 + sdd 0.02 519.93 2.36 43.91 0.32 2.17 110.16 0.65 14.12 2.58 14.74 0.30 1.38 + sde 0.02 520.26 2.34 45.17 0.31 2.18 107.46 0.80 16.86 2.92 17.58 0.34 1.63 + sda 12.07 15.72 3.97 5.01 0.07 0.08 34.11 0.28 30.64 10.11 46.92 0.98 0.88 + ``` + + “rMB/s”为每秒读取的 MB 数,“wMB/s”为每秒写入的 MB 数,“%util”为硬盘使用率。 + +- 使用 pidstat 命令查看I/O情况。此命令主要关注单个进程每秒读取、写入的数量。 + + ``` + pidstat -d 1 10 //1为采样间隔时间, 10 为采样次数 + 03:17:12 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command + 03:17:13 PM 1006 36134 0.00 59436.00 0.00 gaussdb + + ``` + + “kB\_rd/s”为每秒读取的 kB 数,“kB\_wr/s”为每秒写入的 kB 数。 + +- 使用gs\_checkperf工具对 openGauss 进行性能检查,需要以 omm 用户登录。 + + ``` + gs_checkperf + Cluster statistics information: + Host CPU busy time ratio : .69 % + MPPDB CPU time % in busy time : .35 % + Shared Buffer Hit ratio : 99.92 % + In-memory sort ratio : 100.00 % + Physical Reads : 8581 + Physical Writes : 2603 + DB size : 281 MB + Total Physical writes : 1944 + Active SQL count : 3 + Session count : 11 + ``` + + 显示结果包括每个节点的I/O使用情况,物理读写次数。 + + 也可以使用gs\_checkperf --detail命令查询每个节点的详细性能信息。 + + +## 性能参数分析 + +1. 检查磁盘空间使用率,建议不要超过60%。 + + ``` + df -T + ``` + +2. 若I/O持续过高,建议尝试以下方式降低I/O。 + - 降低并发数。 + - 对查询相关表做 VACUUM FULL 。 + + ``` + vacuum full tablename; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >建议用户在系统空闲时进行 VACUUM FULL 操作, VACUUM FULL 操作会造成短时间内I/O负载重,反而不利于降低I/O。 + + + diff --git a/content/zh/docs/Developerguide/INFORMATION_SCHEMA_CATALOG_NAME.md b/content/zh/docs/Developerguide/INFORMATION_SCHEMA_CATALOG_NAME.md index 357aed4fc..8822d71d2 100644 --- a/content/zh/docs/Developerguide/INFORMATION_SCHEMA_CATALOG_NAME.md +++ b/content/zh/docs/Developerguide/INFORMATION_SCHEMA_CATALOG_NAME.md @@ -1,25 +1,25 @@ -# INFORMATION\_SCHEMA\_CATALOG\_NAME - -用来显示当前所在的database的名称。 - -**表 1** INFORMATION\_SCHEMA\_CATALOG\_NAME字段 - - - - - - - - - - - - -

名称

-

类型

-

描述

-

catalog_name

-

information_schema.sql_identifier

-

当前database的名称。

-
- +# INFORMATION\_SCHEMA\_CATALOG\_NAME + +用来显示当前所在的 database 的名称。 + +**表 1** INFORMATION\_SCHEMA\_CATALOG\_NAME字段 + + + + + + + + + + + + +

名称

+

类型

+

描述

+

catalog_name

+

information_schema.sql_identifier

+

当前 database 的名称。

+
+ diff --git a/content/zh/docs/Developerguide/INSERT.md b/content/zh/docs/Developerguide/INSERT.md index 1d6e3c718..b9d58bbd9 100644 --- a/content/zh/docs/Developerguide/INSERT.md +++ b/content/zh/docs/Developerguide/INSERT.md @@ -1,162 +1,162 @@ -# INSERT - -## 功能描述 - -向表中添加一行或多行数据。 - -## 注意事项 - -- 只有拥有表INSERT权限的用户,才可以向表中插入数据。 -- 如果使用RETURNING子句,用户必须要有该表的SELECT权限。 -- 如果使用ON DUPLICATE KEY UPDATE,用户必须要有该表的SELECT、UPDATE权限,唯一约束(主键或唯一索引)的SELECT权限。 -- 如果使用query子句插入来自查询里的数据行,用户还需要拥有在查询里使用的表的SELECT权限。 -- 当连接到TD兼容的数据库时,td\_compatible\_truncation参数设置为on时,将启用超长字符串自动截断功能,在后续的insert语句中(不包含外表的场景下),对目标表中char和varchar类型的列上插入超长字符串时,系统会自动按照目标表中相应列定义的最大长度对超长字符串进行截断。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >如果向字符集为字节类型编码(SQL\_ASCII,LATIN1等)的数据库中插入多字节字符数据(如汉字等),且字符数据跨越截断位置,这种情况下,按照字节长度自动截断,自动截断后会在尾部产生非预期结果。如果用户有对于截断结果正确性的要求,建议用户采用UTF8等能够按照字符截断的输入字符集作为数据库的编码集。 - - -## 语法格式 - -``` -[ WITH [ RECURSIVE ] with_query [, ...] ] -INSERT INTO table_name [ ( column_name [, ...] ) ] - { DEFAULT VALUES - | VALUES {( { expression | DEFAULT } [, ...] ) }[, ...] - | query } - [ ON DUPLICATE KEY UPDATE {{ column_name = { expression | DEFAULT } } [, ...] | NOTHING }] - [ RETURNING {* | {output_expression [ [ AS ] output_name ] }[, ...]} ]; -``` - -## 参数说明 - -- **WITH \[ RECURSIVE \] with\_query \[, ...\]** - - 用于声明一个或多个可以在主查询中通过名称引用的子查询,相当于临时表。 - - 如果声明了RECURSIVE,那么允许SELECT子查询通过名称引用它自己。 - - 其中with\_query的详细格式为:with\_query\_name \[ \( column\_name \[, ...\] \) \] AS - - \( \{select | values | insert | update | delete\} \) - - – with\_query\_name指定子查询生成的结果集名称,在查询中可使用该名称访问 - - 子查询的结果集。 - - – column\_name指定子查询结果集中显示的列名。 - - – 每个子查询可以是SELECT、VALUES、INSERT、UPDATE或DELETE语句。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >INSERT ON DUPLICATE KEY UPDATE不支持WITH及WITH RECURSIVE子句。 - -- **table\_name** - - 要插入数据的目标表名。 - - 取值范围:已存在的表名。 - -- **column\_name** - - 目标表中的字段名: - - - 字段名可以有子字段名或者数组下标修饰。 - - 没有在字段列表中出现的每个字段,将由系统默认值,或者声明时的默认值填充,若都没有则用NULL填充。例如,向一个复合类型中的某些字段插入数据的话,其他字段将是NULL。 - - 目标字段(column\_name)可以按顺序排列。如果没有列出任何字段,则默认全部字段,且顺序为表声明时的顺序。 - - 如果value子句和query中只提供了N个字段,则目标字段为前N个字段。 - - value子句和query提供的值在表中从左到右关联到对应列。 - - 取值范围:已存在的字段名。 - -- **expression** - - 赋予对应column的一个有效表达式或值: - - - 如果是INSERT ON DUPLICATE KEY UPDATE语句下,expression可以为VALUES\(column\_name\)或EXCLUDED.column\_name用来表示引用冲突行对应的column\_name字段的值。需注意,其中VALUES\(column\_name\)不支持嵌套在表达式中(例如VALUES\(column\_name\)+1),但EXCLUDED不受此限制。 - - - 向表中字段插入单引号 “ ' ”时需要使用单引号自身进行转义。 - - 如果插入行的表达式不是正确的数据类型,系统试图进行类型转换,若转换不成功,则插入数据失败,系统返回错误信息。 - -- **DEFAULT** - - 对应字段名的缺省值。如果没有缺省值,则为NULL。 - -- **query** - - 一个查询语句(SELECT语句),将查询结果作为插入的数据。 - -- **RETURNING** - - 返回实际插入的行,RETURNING列表的语法与SELECT的输出列表一致。注意:INSERT ON DUPLICATE KEY UPDATE不支持RETURNING子句。 - -- **output\_expression** - - INSERT命令在每一行都被插入之后用于计算输出结果的表达式。 - - 取值范围:该表达式可以使用table的任意字段。可以使用\*返回被插入行的所有字段。 - -- **output\_name** - - 字段的输出名称。 - - 取值范围:字符串,符合标识符命名规范。 - -- **ON DUPLICATE KEY UPDATE** - - 对于带有唯一约束(UNIQUE INDEX或PRIMARY KEY)的表,如果插入数据违反唯一约束,则对冲突行执行UPDATE子句完成更新,对于不带唯一约束的表,则仅执行插入。UPDATE时,若指定NOTHING则忽略此条插入,可通过“EXCLUDE.” 或者 "VALUES\(\)" 来选择源数据相应的列。 - - - 支持触发器,触发器执行顺序由实际执行流程决定: - - 执行insert:触发 before insert、after insert触发器。 - - 执行update:触发before insert、before update、after update触发器。 - - 执行update nothing:触发before insert触发器。 - - - 不支持延迟生效(DEFERRABLE)的唯一约束或主键。 - - - 如果表中存在多个唯一约束,如果所插入数据违反多个唯一约束,对于检测到冲突的第一行进行更新,其他冲突行不更新(检查顺序与索引维护具有强相关性,一般先创建的索引先进行冲突检查)。 - - 如果插入多行,这些行均与表中同一行数据存在唯一约束冲突,则按照顺序,第一条执行插入或更新,之后依次执行更新。 - - - 主键、唯一索引列不允许UPDATE。 - - 不支持列存,不支持外表、内存表。 - - expression支持使用子查询表达式,其语法与功能同UPDATE。子查询表达式中支持使用“EXCLUDED.”来选择源数据相应的列。 - - -## 示例 - -``` ---创建表tpcds.reason_t2。 -openGauss=# CREATE TABLE tpcds.reason_t2 -( - r_reason_sk integer, - r_reason_id character(16), - r_reason_desc character(100) -); - ---向表中插入一条记录。 -openGauss=# INSERT INTO tpcds.reason_t2(r_reason_sk, r_reason_id, r_reason_desc) VALUES (1, 'AAAAAAAABAAAAAAA', 'reason1'); - ---向表中插入一条记录,和上一条语法等效。 -openGauss=# INSERT INTO tpcds.reason_t2 VALUES (2, 'AAAAAAAABAAAAAAA', 'reason2'); - ---向表中插入多条记录。 -openGauss=# INSERT INTO tpcds.reason_t2 VALUES (3, 'AAAAAAAACAAAAAAA','reason3'),(4, 'AAAAAAAADAAAAAAA', 'reason4'),(5, 'AAAAAAAAEAAAAAAA','reason5'); - ---向表中插入tpcds.reason中r_reason_sk小于5的记录。 -openGauss=# INSERT INTO tpcds.reason_t2 SELECT * FROM tpcds.reason WHERE r_reason_sk <5; - ---对表创建唯一索引 -openGauss=# CREATE UNIQUE INDEX reason_t2_u_index ON tpcds.reason_t2(r_reason_sk); - ---向表中插入多条记录,如果冲突则更新冲突数据行中r_reason_id字段为'BBBBBBBBCAAAAAAA'。 -openGauss=# INSERT INTO tpcds.reason_t2 VALUES (5, 'BBBBBBBBCAAAAAAA','reason5'),(6, 'AAAAAAAADAAAAAAA', 'reason6') ON DUPLICATE KEY UPDATE r_reason_id = 'BBBBBBBBCAAAAAAA'; - ---删除表tpcds.reason_t2。 -openGauss=# DROP TABLE tpcds.reason_t2; -``` - -## 优化建议 - -- VALUES - - 通过insert语句批量插入数据时,建议将多条记录合并入一条语句中执行插入,以提高数据加载性能。例如,INSERT INTO sections VALUES \(30, 'Administration', 31, 1900\)、\(40, 'Development', 35, 2000\)、 \(50, 'Development' , 60 , 2001\)。 - +# INSERT + +## 功能描述 + +向表中添加一行或多行数据。 + +## 注意事项 + +- 只有拥有表 INSERT 权限的用户,才可以向表中插入数据。 +- 如果使用 RETURNING 子句,用户必须要有该表的 SELECT 权限。 +- 如果使用 ON DUPLICATE KEY UPDATE ,用户必须要有该表的SELECT、UPDATE权限,唯一约束(主键或唯一索引)的 SELECT 权限。 +- 如果使用 query 子句插入来自查询里的数据行,用户还需要拥有在查询里使用的表的 SELECT 权限。 +- 当连接到 TD 兼容的数据库时,td\_compatible\_truncation参数设置为 on 时,将启用超长字符串自动截断功能,在后续的 insert 语句中(不包含外表的场景下),对目标表中 char 和 varchar 类型的列上插入超长字符串时,系统会自动按照目标表中相应列定义的最大长度对超长字符串进行截断。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >如果向字符集为字节类型编码(SQL\_ASCII, LATIN1 等)的数据库中插入多字节字符数据(如汉字等),且字符数据跨越截断位置,这种情况下,按照字节长度自动截断,自动截断后会在尾部产生非预期结果。如果用户有对于截断结果正确性的要求,建议用户采用 UTF8 等能够按照字符截断的输入字符集作为数据库的编码集。 + + +## 语法格式 + +``` +[ WITH [ RECURSIVE ] with_query [, ...] ] +INSERT INTO table_name [ ( column_name [, ...] ) ] + { DEFAULT VALUES + | VALUES {( { expression | DEFAULT } [, ...] ) }[, ...] + | query } + [ ON DUPLICATE KEY UPDATE {{ column_name = { expression | DEFAULT } } [, ...] | NOTHING }] + [ RETURNING {* | {output_expression [ [ AS ] output_name ] }[, ...]} ]; +``` + +## 参数说明 + +- **WITH \[ RECURSIVE \] with\_query \[, ...\]** + + 用于声明一个或多个可以在主查询中通过名称引用的子查询,相当于临时表。 + + 如果声明了 RECURSIVE ,那么允许 SELECT 子查询通过名称引用它自己。 + + 其中with\_query的详细格式为:with\_query\_name \[ \( column\_name \[, ...\] \) \] AS + + \( \{select | values | insert | update | delete\} \) + + – with\_query\_name指定子查询生成的结果集名称,在查询中可使用该名称访问 + + 子查询的结果集。 + + – column\_name指定子查询结果集中显示的列名。 + + – 每个子查询可以是SELECT、VALUES、INSERT、UPDATE或 DELETE 语句。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >INSERT ON DUPLICATE KEY UPDATE不支持 WITH 及 WITH RECURSIVE 子句。 + +- **table\_name** + + 要插入数据的目标表名。 + + 取值范围:已存在的表名。 + +- **column\_name** + + 目标表中的字段名: + + - 字段名可以有子字段名或者数组下标修饰。 + - 没有在字段列表中出现的每个字段,将由系统默认值,或者声明时的默认值填充,若都没有则用 NULL 填充。例如,向一个复合类型中的某些字段插入数据的话,其他字段将是 NULL 。 + - 目标字段(column\_name)可以按顺序排列。如果没有列出任何字段,则默认全部字段,且顺序为表声明时的顺序。 + - 如果 value 子句和 query 中只提供了 N 个字段,则目标字段为前 N 个字段。 + - value子句和 query 提供的值在表中从左到右关联到对应列。 + + 取值范围:已存在的字段名。 + +- **expression** + + 赋予对应 column 的一个有效表达式或值: + + - 如果是 INSERT ON DUPLICATE KEY UPDATE 语句下, expression 可以为VALUES\(column\_name\)或EXCLUDED.column\_name用来表示引用冲突行对应的column\_name字段的值。需注意,其中VALUES\(column\_name\)不支持嵌套在表达式中(例如VALUES\(column\_name\)+1),但 EXCLUDED 不受此限制。 + + - 向表中字段插入单引号 “ ' ”时需要使用单引号自身进行转义。 + - 如果插入行的表达式不是正确的数据类型,系统试图进行类型转换,若转换不成功,则插入数据失败,系统返回错误信息。 + +- **DEFAULT** + + 对应字段名的缺省值。如果没有缺省值,则为 NULL 。 + +- **query** + + 一个查询语句(SELECT语句),将查询结果作为插入的数据。 + +- **RETURNING** + + 返回实际插入的行, RETURNING 列表的语法与 SELECT 的输出列表一致。注意:INSERT ON DUPLICATE KEY UPDATE不支持 RETURNING 子句。 + +- **output\_expression** + +INSERT 命令在每一行都被插入之后用于计算输出结果的表达式。 + + 取值范围:该表达式可以使用 table 的任意字段。可以使用\*返回被插入行的所有字段。 + +- **output\_name** + + 字段的输出名称。 + + 取值范围:字符串,符合标识符命名规范。 + +- **ON DUPLICATE KEY UPDATE** + + 对于带有唯一约束(UNIQUE INDEX或PRIMARY KEY)的表,如果插入数据违反唯一约束,则对冲突行执行 UPDATE 子句完成更新,对于不带唯一约束的表,则仅执行插入。 UPDATE 时,若指定 NOTHING 则忽略此条插入,可通过“EXCLUDE.” 或者 "VALUES\(\)" 来选择源数据相应的列。 + + - 支持触发器,触发器执行顺序由实际执行流程决定: + - 执行insert:触发 before insert、after insert触发器。 + - 执行update:触发before insert、before update、after update触发器。 + - 执行update nothing:触发 before insert 触发器。 + + - 不支持延迟生效(DEFERRABLE)的唯一约束或主键。 + + - 如果表中存在多个唯一约束,如果所插入数据违反多个唯一约束,对于检测到冲突的第一行进行更新,其他冲突行不更新(检查顺序与索引维护具有强相关性,一般先创建的索引先进行冲突检查)。 + - 如果插入多行,这些行均与表中同一行数据存在唯一约束冲突,则按照顺序,第一条执行插入或更新,之后依次执行更新。 + + - 主键、唯一索引列不允许 UPDATE 。 + - 不支持列存,不支持外表、内存表。 + - expression支持使用子查询表达式,其语法与功能同 UPDATE 。子查询表达式中支持使用“EXCLUDED.”来选择源数据相应的列。 + + +## 示例 + +``` +--创建表tpcds.reason_t2。 +openGauss=# CREATE TABLE tpcds.reason_t2 +( + r_reason_sk integer , + r_reason_id character(16), + r_reason_desc character(100) +); + +--向表中插入一条记录。 +openGauss=# INSERT INTO tpcds.reason_t2(r_reason_sk, r_reason_id , r_reason_desc) VALUES (1, 'AAAAAAAABAAAAAAA', 'reason1'); + +--向表中插入一条记录,和上一条语法等效。 +openGauss=# INSERT INTO tpcds.reason_t2 VALUES (2, 'AAAAAAAABAAAAAAA', 'reason2'); + +--向表中插入多条记录。 +openGauss=# INSERT INTO tpcds.reason_t2 VALUES (3, 'AAAAAAAACAAAAAAA','reason3'),(4, 'AAAAAAAADAAAAAAA', 'reason4'),(5, 'AAAAAAAAEAAAAAAA','reason5'); + +--向表中插入tpcds.reason中 r_reason_sk 小于 5 的记录。 +openGauss=# INSERT INTO tpcds.reason_t2 SELECT * FROM tpcds.reason WHERE r_reason_sk <5; + +--对表创建唯一索引 +openGauss=# CREATE UNIQUE INDEX reason_t2_u_index ON tpcds.reason_t2(r_reason_sk); + +--向表中插入多条记录,如果冲突则更新冲突数据行中 r_reason_id 字段为'BBBBBBBBCAAAAAAA'。 +openGauss=# INSERT INTO tpcds.reason_t2 VALUES (5, 'BBBBBBBBCAAAAAAA','reason5'),(6, 'AAAAAAAADAAAAAAA', 'reason6') ON DUPLICATE KEY UPDATE r_reason_id = 'BBBBBBBBCAAAAAAA'; + +--删除表tpcds.reason_t2。 +openGauss=# DROP TABLE tpcds.reason_t2; +``` + +## 优化建议 + +- VALUES + + 通过 insert 语句批量插入数据时,建议将多条记录合并入一条语句中执行插入,以提高数据加载性能。例如,INSERT INTO sections VALUES \(30, 'Administration', 31 , 1900\)、\(40, 'Development', 35 , 2000\)、 \(50, 'Development' , 60 , 2001\)。 + diff --git a/content/zh/docs/Developerguide/INSTANCE_TIME.md b/content/zh/docs/Developerguide/INSTANCE_TIME.md index adb94ea67..9a5c3a4e8 100644 --- a/content/zh/docs/Developerguide/INSTANCE_TIME.md +++ b/content/zh/docs/Developerguide/INSTANCE_TIME.md @@ -1,50 +1,50 @@ -# INSTANCE\_TIME - -提供当前节点下的各种时间消耗信息,主要分为以下类型: - -- DB\_TIME:作业在多核下的有效时间花销。 -- CPU\_TIME:CPU的时间花销。 -- EXECUTION\_TIME:执行器内的时间花销。 -- PARSE\_TIME:SQL解析的时间花销。 -- PLAN\_TIME:生成Plan的时间花销。 -- REWRITE\_TIME:SQL重写的时间花销。 -- PL\_EXECUTION\_TIME:plpgsql(存储过程)执行的时间花销。 -- PL\_COMPILATION\_TIME:plpgsql(存储过程)编译的时间花销。 -- NET\_SEND\_TIME:网络上的时间花销。 -- DATA\_IO\_TIME:IO上的时间花销。 - -**表 1** INSTANCE\_TIME字段 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

stat_id

-

integer

-

统计编号。

-

stat_name

-

text

-

类型名称。

-

value

-

bigint

-

时间值(单位:微秒)。

-
- +# INSTANCE\_TIME + +提供当前节点下的各种时间消耗信息,主要分为以下类型: + +- DB\_TIME:作业在多核下的有效时间花销。 +- CPU\_TIME:CPU的时间花销。 +- EXECUTION\_TIME:执行器内的时间花销。 +- PARSE\_TIME:SQL解析的时间花销。 +- PLAN\_TIME:生成 Plan 的时间花销。 +- REWRITE\_TIME:SQL重写的时间花销。 +- PL\_EXECUTION\_TIME:plpgsql(存储过程)执行的时间花销。 +- PL\_COMPILATION\_TIME:plpgsql(存储过程)编译的时间花销。 +- NET\_SEND\_TIME:网络上的时间花销。 +- DATA\_IO\_TIME:IO上的时间花销。 + +**表 1** INSTANCE\_TIME字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

stat_id

+

integer

+

统计编号。

+

stat_name

+

text

+

类型名称。

+

value

+

bigint

+

时间值(单位:微秒)。

+
+ diff --git "a/content/zh/docs/Developerguide/Index-advisor-\347\264\242\345\274\225\346\216\250\350\215\220.md" "b/content/zh/docs/Developerguide/Index-advisor-\347\264\242\345\274\225\346\216\250\350\215\220.md" index 8970551d6..e807ef0e9 100644 --- "a/content/zh/docs/Developerguide/Index-advisor-\347\264\242\345\274\225\346\216\250\350\215\220.md" +++ "b/content/zh/docs/Developerguide/Index-advisor-\347\264\242\345\274\225\346\216\250\350\215\220.md" @@ -1,8 +1,8 @@ # Index-advisor:索引推荐 -本节介绍索引推荐的功能,共包含三个子功能:单query索引推荐、虚拟索引和workload级别索引推荐。 +本节介绍索引推荐的功能,共包含三个子功能:单 query 索引推荐、虚拟索引和 workload 级别索引推荐。 -- **[单query索引推荐](单query索引推荐.md)** +- **[单 query 索引推荐](单 query 索引推荐.md)** - **[虚拟索引](虚拟索引.md)** diff --git a/content/zh/docs/Developerguide/Information-Schema.md b/content/zh/docs/Developerguide/Information-Schema.md index b3d52260f..91a605102 100644 --- a/content/zh/docs/Developerguide/Information-Schema.md +++ b/content/zh/docs/Developerguide/Information-Schema.md @@ -1,25 +1,25 @@ -# Information Schema - -信息模式本身是一个名为information\_schema的模式。这个模式自动存在于所有数据库中。信息模式由一组视图构成,它们包含定义在当前数据库中对象的信息。这个模式的拥有者是初始数据库用户,并且该用户自然地拥有这个模式上的所有特权,包括删除它的能力。 - -信息模式继承自开源PGXC/PG,相关细节描述请参见PGXC/PG官方文档,链接如下: - -http://postgres-xc.sourceforge.net/docs/1\_1/information-schema.html - -https://www.postgresql.org/docs/9.2/information-schema.html - -下面章节只显示未在上述链接内的视图信息。 - -- **[\_PG\_FOREIGN\_DATA\_WRAPPERS](_PG_FOREIGN_DATA_WRAPPERS.md)** - -- **[\_PG\_FOREIGN\_SERVERS](_PG_FOREIGN_SERVERS.md)** - -- **[\_PG\_FOREIGN\_TABLE\_COLUMNS](_PG_FOREIGN_TABLE_COLUMNS.md)** - -- **[\_PG\_FOREIGN\_TABLES](_PG_FOREIGN_TABLES.md)** - -- **[\_PG\_USER\_MAPPINGS](_PG_USER_MAPPINGS.md)** - -- **[INFORMATION\_SCHEMA\_CATALOG\_NAME](INFORMATION_SCHEMA_CATALOG_NAME.md)** - - +# Information Schema + +信息模式本身是一个名为information\_schema的模式。这个模式自动存在于所有数据库中。信息模式由一组视图构成,它们包含定义在当前数据库中对象的信息。这个模式的拥有者是初始数据库用户,并且该用户自然地拥有这个模式上的所有特权,包括删除它的能力。 + +信息模式继承自开源PGXC/PG,相关细节描述请参见PGXC/PG官方文档,链接如下: + +http://postgres-xc.sourceforge.net/docs/1\_1/information-schema.html + +https://www.postgresql.org/docs/9.2/information-schema.html + +下面章节只显示未在上述链接内的视图信息。 + +- **[\_PG\_FOREIGN\_DATA\_WRAPPERS](_PG_FOREIGN_DATA_WRAPPERS.md)** + +- **[\_PG\_FOREIGN\_SERVERS](_PG_FOREIGN_SERVERS.md)** + +- **[\_PG\_FOREIGN\_TABLE\_COLUMNS](_PG_FOREIGN_TABLE_COLUMNS.md)** + +- **[\_PG\_FOREIGN\_TABLES](_PG_FOREIGN_TABLES.md)** + +- **[\_PG\_USER\_MAPPINGS](_PG_USER_MAPPINGS.md)** + +- **[INFORMATION\_SCHEMA\_CATALOG\_NAME](INFORMATION_SCHEMA_CATALOG_NAME.md)** + + diff --git a/content/zh/docs/Developerguide/Instance.md b/content/zh/docs/Developerguide/Instance.md index c200bb30e..2fc53dbf3 100644 --- a/content/zh/docs/Developerguide/Instance.md +++ b/content/zh/docs/Developerguide/Instance.md @@ -1,7 +1,7 @@ -# Instance - -- **[INSTANCE\_TIME](INSTANCE_TIME.md)** - -- **[GLOBAL\_INSTANCE\_TIME](GLOBAL_INSTANCE_TIME.md)** - - +# Instance + +- **[INSTANCE\_TIME](INSTANCE_TIME.md)** + +- **[GLOBAL\_INSTANCE\_TIME](GLOBAL_INSTANCE_TIME.md)** + + diff --git "a/content/zh/docs/Developerguide/Ispell\350\257\215\345\205\270.md" "b/content/zh/docs/Developerguide/Ispell\350\257\215\345\205\270.md" index 2d7319f99..48f3e0a8e 100644 --- "a/content/zh/docs/Developerguide/Ispell\350\257\215\345\205\270.md" +++ "b/content/zh/docs/Developerguide/Ispell\350\257\215\345\205\270.md" @@ -1,43 +1,43 @@ -# Ispell词典 - -Ispell词典模板支持词法词典,它可以把一个词的各种语言学形式规范化成相同的词位。比如,一个Ispell英语词典可以匹配搜索词bank的词尾变化和词形变化,如banking、banked、banks、banks'和bank's等。 - -openGauss不提供任何预定义的Ispell类型词典或词典文件。dict文件和affix文件支持多种开源词典格式,包括Ispell、MySpell和Hunspell等。 - -## 操作步骤 - -1. 获取词典定义文件和词缀文件。 - - 用户可以使用开源词典,直接获取的开源词典后缀名可能为.aff和.dic,此时需要将扩展名改为.affix和.dict。此外,对于某些词典文件,还需要使用下面的命令把字符转换成UTF-8编码,比如挪威语词典: - - ``` - iconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff - iconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic - ``` - -2. 创建Ispell词典。 - - ``` - openGauss=# CREATE TEXT SEARCH DICTIONARY norwegian_ispell ( - TEMPLATE = ispell, - DictFile = nn_no, - AffFile = nn_no, - FilePath = 'file:///home/dicts' - ); - ``` - - 其中,词典文件全名为nn\_no.dict和nn\_no.affix,所在目录为当前连接数据库主节点的/home/dicts/下 。关于创建词典的语法和更多参数,请参见[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md)。 - -3. 使用Ispell词典进行复合词拆分。 - - ``` - openGauss=# SELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk'); - ts_lexize - --------------------- - {sjokolade,fabrikk} - (1 row) - - ``` - - MySpell不支持复合词,Hunspell对复合词有较好的支持。openGauss仅支持Hunspell中基本的复合词操作。通常情况下,Ispell词典能够识别的词是一个有限集合,其后应该配置一个更广义的词典,例如一个可以识别所有词的Snowball词典。 - +# Ispell词典 + +Ispell 词典模板支持词法词典,它可以把一个词的各种语言学形式规范化成相同的词位。比如,一个 Ispell 英语词典可以匹配搜索词 bank 的词尾变化和词形变化,如banking、banked、banks、banks'和bank's等。 + +openGauss 不提供任何预定义的 Ispell 类型词典或词典文件。 dict 文件和 affix 文件支持多种开源词典格式,包括Ispell、MySpell和 Hunspell 等。 + +## 操作步骤 + +1. 获取词典定义文件和词缀文件。 + + 用户可以使用开源词典,直接获取的开源词典后缀名可能为.aff和.dic,此时需要将扩展名改为.affix和.dict。此外,对于某些词典文件,还需要使用下面的命令把字符转换成UTF-8编码,比如挪威语词典: + + ``` + iconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff + iconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic + ``` + +2. 创建 Ispell 词典。 + + ``` + openGauss=# CREATE TEXT SEARCH DICTIONARY norwegian_ispell ( + TEMPLATE = ispell, + DictFile = nn_no, + AffFile = nn_no, + FilePath = 'file:///home/dicts' + ); + ``` + + 其中,词典文件全名为nn\_no.dict和nn\_no.affix,所在目录为当前连接数据库主节点的/home/dicts/下 。关于创建词典的语法和更多参数,请参见[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md)。 + +3. 使用 Ispell 词典进行复合词拆分。 + + ``` + openGauss=# SELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk'); + ts_lexize + --------------------- + {sjokolade,fabrikk} + (1 row) + + ``` + +MySpell 不支持复合词, Hunspell 对复合词有较好的支持。 openGauss 仅支持 Hunspell 中基本的复合词操作。通常情况下, Ispell 词典能够识别的词是一个有限集合,其后应该配置一个更广义的词典,例如一个可以识别所有词的 Snowball 词典。 + diff --git a/content/zh/docs/Developerguide/JDBC.md b/content/zh/docs/Developerguide/JDBC.md index 648e09f23..6048b4233 100644 --- a/content/zh/docs/Developerguide/JDBC.md +++ b/content/zh/docs/Developerguide/JDBC.md @@ -1,33 +1,33 @@ -# JDBC - -JDBC接口是一套提供给用户的API方法,本节将对部分常用接口做具体描述,若涉及其他接口可参考JDK1.8(软件包)/JDBC4.0中相关内容。 - -- **[java.sql.Connection](java-sql-Connection.md)** - -- **[java.sql.CallableStatement](java-sql-CallableStatement.md)** - -- **[java.sql.DatabaseMetaData](java-sql-DatabaseMetaData.md)** - -- **[java.sql.Driver](java-sql-Driver.md)** - -- **[java.sql.PreparedStatement](java-sql-PreparedStatement.md)** - -- **[java.sql.ResultSet](java-sql-ResultSet.md)** - -- **[java.sql.ResultSetMetaData](java-sql-ResultSetMetaData.md)** - -- **[java.sql.Statement](java-sql-Statement.md)** - -- **[javax.sql.ConnectionPoolDataSource](javax-sql-ConnectionPoolDataSource.md)** - -- **[javax.sql.DataSource](javax-sql-DataSource.md)** - -- **[javax.sql.PooledConnection](javax-sql-PooledConnection.md)** - -- **[javax.naming.Context](javax-naming-Context.md)** - -- **[javax.naming.spi.InitialContextFactory](javax-naming-spi-InitialContextFactory.md)** - -- **[CopyManager](CopyManager.md)** - - +# JDBC + +JDBC 接口是一套提供给用户的 API 方法,本节将对部分常用接口做具体描述,若涉及其他接口可参考JDK1.8(软件包)/JDBC4.0中相关内容。 + +- **[java.sql.Connection](java-sql-Connection.md)** + +- **[java.sql.CallableStatement](java-sql-CallableStatement.md)** + +- **[java.sql.DatabaseMetaData](java-sql-DatabaseMetaData.md)** + +- **[java.sql.Driver](java-sql-Driver.md)** + +- **[java.sql.PreparedStatement](java-sql-PreparedStatement.md)** + +- **[java.sql.ResultSet](java-sql-ResultSet.md)** + +- **[java.sql.ResultSetMetaData](java-sql-ResultSetMetaData.md)** + +- **[java.sql.Statement](java-sql-Statement.md)** + +- **[javax.sql.ConnectionPoolDataSource](javax-sql-ConnectionPoolDataSource.md)** + +- **[javax.sql.DataSource](javax-sql-DataSource.md)** + +- **[javax.sql.PooledConnection](javax-sql-PooledConnection.md)** + +- **[javax.naming.Context](javax-naming-Context.md)** + +- **[javax.naming.spi.InitialContextFactory](javax-naming-spi-InitialContextFactory.md)** + +- **[CopyManager](CopyManager.md)** + + diff --git "a/content/zh/docs/Developerguide/JDBC\345\214\205-\351\251\261\345\212\250\347\261\273\345\222\214\347\216\257\345\242\203\347\261\273.md" "b/content/zh/docs/Developerguide/JDBC\345\214\205-\351\251\261\345\212\250\347\261\273\345\222\214\347\216\257\345\242\203\347\261\273.md" index 184251055..091c29c46 100644 --- "a/content/zh/docs/Developerguide/JDBC\345\214\205-\351\251\261\345\212\250\347\261\273\345\222\214\347\216\257\345\242\203\347\261\273.md" +++ "b/content/zh/docs/Developerguide/JDBC\345\214\205-\351\251\261\345\212\250\347\261\273\345\222\214\347\216\257\345\242\203\347\261\273.md" @@ -1,80 +1,80 @@ -# JDBC包、驱动类和环境类 - -## JDBC包 - -在Linux服务器端源代码目录下执行build.sh,获得驱动jar包postgresql.jar,包位置在源代码目录下。从发布包中获取,包名为openGauss-x.x.x-操作系统版本号-64bit-Jdbc.tar.gz。 - -驱动包与PostgreSQL保持兼容,其中类名、类结构与PostgreSQL驱动完全一致,曾经运行于PostgreSQL的应用程序可以直接移植到当前系统使用。 - -## 驱动类 - -在创建数据库连接之前,需要加载数据库驱动类“org.postgresql.Driver”。 - ->![](public_sys-resources/icon-note.gif) **说明:** -> ->+ 由于openGauss在JDBC的使用上与PG的使用方法保持兼容,所以同时在同一进程内使用两个JDBC驱动的时候,可能会类名冲突。 -> ->+ 相比于PG驱动,openGauss JDBC驱动主要做了以下特性的增强: -> -> + 支持SHA256加密方式登录。 -> -> + 支持对接实现sf4j接口的第三方日志框架。 -> -> + 支持容灾切换。 - -## 环境类 - -客户端需配置JDK1.8,配置方法如下: - -1. DOS窗口输入“java -version”,查看JDK版本,确认为JDK1.8版本。如果未安装JDK,请从官方网站下载安装包并安装。 - -2. 根据如下步骤配置系统环境变量。 - - a. 右键单击“我的电脑”,选择“属性”。 - - b. 在“系统”页面左侧导航栏单击“高级系统设置”。 - - c. 在“系统属性”页面,“高级”页签上单击“环境变量”。 - - d. 在“环境变量”页面上,“系统变量”区域单击“新建”或“编辑”配置系统变量。变量说明请参见[表1](#zh-cn_topic_0237120378_zh-cn_topic_0213179123_table1625616152473)。 - - **表 1** 变量说明 - - - - - - - - - - - - - - - - - - - - - -

变量名

-

操作

-

变量值

-

JAVA_HOME

-
  • 若存在,则单击“编辑”。
  • 若不存在,则单击“新建”。
-

JAVA的安装目录。

-

例如:C:\Program Files\Java\jdk1.8.0_131

-

Path

-

编辑

-
  • 若配置了JAVA_HOME,则在变量值的最前面加上:“%JAVA_HOME%\bin;”
  • 若未配置JAVA_HOME,则在变量值的最前面加上JAVA安装的全路径:

    “C:\Program Files\Java\jdk1.8.0_131\bin;”

    -
-

CLASSPATH

-

新建

-

“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;”

-
- - - +# JDBC包、驱动类和环境类 + +## JDBC包 + +在 Linux 服务器端源代码目录下执行build.sh,获得驱动 jar 包postgresql.jar,包位置在源代码目录下。从发布包中获取,包名为openGauss-x.x.x-操作系统版本号-64bit-Jdbc.tar.gz。 + +驱动包与 PostgreSQL 保持兼容,其中类名、类结构与 PostgreSQL 驱动完全一致,曾经运行于 PostgreSQL 的应用程序可以直接移植到当前系统使用。 + +## 驱动类 + +在创建数据库连接之前,需要加载数据库驱动类“org.postgresql.Driver”。 + +>![](public_sys-resources/icon-note.gif) **说明:** +> +>+ 由于 openGauss 在 JDBC 的使用上与 PG 的使用方法保持兼容,所以同时在同一进程内使用两个 JDBC 驱动的时候,可能会类名冲突。 +> +>+ 相比于 PG 驱动, openGauss JDBC 驱动主要做了以下特性的增强: +> +> + 支持 SHA256 加密方式登录。 +> +> + 支持对接实现 sf4j 接口的第三方日志框架。 +> +> + 支持容灾切换。 + +## 环境类 + +客户端需配置JDK1.8,配置方法如下: + +1. DOS窗口输入“java -version”,查看 JDK 版本,确认为JDK1.8版本。如果未安装 JDK ,请从官方网站下载安装包并安装。 + +2. 根据如下步骤配置系统环境变量。 + + a. 右键单击“我的电脑”,选择“属性”。 + + b. 在“系统”页面左侧导航栏单击“高级系统设置”。 + + c. 在“系统属性”页面,“高级”页签上单击“环境变量”。 + + d. 在“环境变量”页面上,“系统变量”区域单击“新建”或“编辑”配置系统变量。变量说明请参见[表1](#zh-cn_topic_0237120378_zh-cn_topic_0213179123_table1625616152473)。 + + **表 1** 变量说明 + + + + + + + + + + + + + + + + + + + + + +

变量名

+

操作

+

变量值

+

JAVA_HOME

+
  • 若存在,则单击“编辑”。
  • 若不存在,则单击“新建”。
+

JAVA的安装目录。

+

例如:C:\Program Files\Java\jdk1.8.0_131

+

Path

+

编辑

+
  • 若配置了 JAVA_HOME ,则在变量值的最前面加上:“%JAVA_HOME%\bin;”
  • 若未配置 JAVA_HOME ,则在变量值的最前面加上 JAVA 安装的全路径:

    “C:\Program Files\Java\jdk1.8.0_131\bin;”

    +
+

CLASSPATH

+

新建

+

“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;”

+
+ + + diff --git "a/content/zh/docs/Developerguide/JDBC\346\216\245\345\217\243\345\217\202\350\200\203.md" "b/content/zh/docs/Developerguide/JDBC\346\216\245\345\217\243\345\217\202\350\200\203.md" index f867d97a7..c64972586 100644 --- "a/content/zh/docs/Developerguide/JDBC\346\216\245\345\217\243\345\217\202\350\200\203.md" +++ "b/content/zh/docs/Developerguide/JDBC\346\216\245\345\217\243\345\217\202\350\200\203.md" @@ -1,4 +1,4 @@ -# JDBC接口参考 - -请参见[JDBC](JDBC.md)。 - +# JDBC接口参考 + +请参见[JDBC](JDBC.md)。 + diff --git "a/content/zh/docs/Developerguide/JDBC\351\205\215\347\275\256.md" "b/content/zh/docs/Developerguide/JDBC\351\205\215\347\275\256.md" index 0fb6bb771..85e9f4d63 100644 --- "a/content/zh/docs/Developerguide/JDBC\351\205\215\347\275\256.md" +++ "b/content/zh/docs/Developerguide/JDBC\351\205\215\347\275\256.md" @@ -1,56 +1,56 @@ -# JDBC配置 - -目前,openGauss相关的第三方工具都是通过JDBC进行连接的,此部分将介绍工具配置时的注意事项。 - -## 连接参数 - -- 【关注】第三方工具通过JDBC连接openGauss时,JDBC向openGauss发起连接请求,会默认添加以下配置参数,详见JDBC代码ConnectionFactoryImpl类的实现。 - - ``` - params = { - { "user", user }, - { "database", database }, - { "client_encoding", "UTF8" }, - { "DateStyle", "ISO" }, - { "extra_float_digits", "2" }, - { "TimeZone", createPostgresTimeZone() }, - }; - ``` - - 这些参数可能会导致JDBC客户端的行为与gsql客户端的行为不一致,例如,Date数据显示方式、浮点数精度表示、timezone显示。 - - 如果实际期望和这些配置不符,建议在java连接设置代码中显式设定这些参数。 - -- 【建议】通过JDBC连接数据库时,应该保证下面三个时区设置一致: - - JDBC客户端所在主机的时区。 - - openGauss数据库实例所在主机的时区。 - - openGauss数据库实例配置过程中时区。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >时区设置相关的操作,请参考《安装指南》中“企业版安装>安装准备>准备软硬件安装环境> 同步系统时间”章节内容。 - - - -## fetchsize - -【关注】在应用程序中,如果需要使用fetchsize,必须关闭autocommit。开启autocommit,会令fetchsize配置失效。 - -## autocommit - -【建议】在JDBC向openGauss申请连接的代码中,建议显式打开autocommit开关。如果基于性能或者其它方面考虑,需要关闭autocommit时,需要应用程序自己来保证事务的提交。例如,在指定的业务SQL执行完之后做显式提交,特别是客户端退出之前务必保证所有的事务已经提交。 - -## 释放连接 - -【建议】推荐使用连接池限制应用程序的连接数。每执行一条SQL就连接一次数据库,是一种不好的SQL编写习惯。 - -【建议】在应用程序完成作业任务之后,应当及时断开和openGauss的连接,释放资源。建议在任务中设置session超时时间参数。 - -【建议】使用JDBC连接池,在将连接释放给连接池前,需要执行以下操作,重置会话环境。否则,可能会产生因为历史会话信息导致的对象冲突。 - -- 如果在连接中设置了GUC参数,那么在将连接归还连接池之前,必须使用“SET SESSION AUTHORIZATION DEFAULT;RESET ALL;”将连接的状态清空。 -- 如果使用了临时表,那么在将连接归还连接池之前,必须将临时表删除。 - -## CopyManager - -【建议】在不使用ETL工具,数据入库实时性要求又比较高的情况下,建议在开发应用程序时,使用openGauss JDBC驱动的copyManger接口进行微批导入。 - +# JDBC配置 + +目前, openGauss 相关的第三方工具都是通过 JDBC 进行连接的,此部分将介绍工具配置时的注意事项。 + +## 连接参数 + +- 【关注】第三方工具通过 JDBC 连接 openGauss 时, JDBC 向 openGauss 发起连接请求,会默认添加以下配置参数,详见 JDBC 代码 ConnectionFactoryImpl 类的实现。 + + ``` + params = { + { "user", user }, + { "database", database }, + { "client_encoding", "UTF8" }, + { "DateStyle", "ISO" }, + { "extra_float_digits", "2" }, + { "TimeZone", createPostgresTimeZone() }, + }; + ``` + + 这些参数可能会导致 JDBC 客户端的行为与 gsql 客户端的行为不一致,例如, Date 数据显示方式、浮点数精度表示、timezone显示。 + + 如果实际期望和这些配置不符,建议在 java 连接设置代码中显式设定这些参数。 + +- 【建议】通过 JDBC 连接数据库时,应该保证下面三个时区设置一致: + - JDBC客户端所在主机的时区。 + - openGauss数据库实例所在主机的时区。 + - openGauss数据库实例配置过程中时区。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >时区设置相关的操作,请参考《安装指南》中“企业版安装>安装准备>准备软硬件安装环境> 同步系统时间”章节内容。 + + + +## fetchsize + +【关注】在应用程序中,如果需要使用 fetchsize ,必须关闭 autocommit 。开启 autocommit ,会令 fetchsize 配置失效。 + +## autocommit + +【建议】在 JDBC 向 openGauss 申请连接的代码中,建议显式打开 autocommit 开关。如果基于性能或者其它方面考虑,需要关闭 autocommit 时,需要应用程序自己来保证事务的提交。例如,在指定的业务 SQL 执行完之后做显式提交,特别是客户端退出之前务必保证所有的事务已经提交。 + +## 释放连接 + +【建议】推荐使用连接池限制应用程序的连接数。每执行一条 SQL 就连接一次数据库,是一种不好的 SQL 编写习惯。 + +【建议】在应用程序完成作业任务之后,应当及时断开和 openGauss 的连接,释放资源。建议在任务中设置 session 超时时间参数。 + +【建议】使用 JDBC 连接池,在将连接释放给连接池前,需要执行以下操作,重置会话环境。否则,可能会产生因为历史会话信息导致的对象冲突。 + +- 如果在连接中设置了 GUC 参数,那么在将连接归还连接池之前,必须使用“SET SESSION AUTHORIZATION DEFAULT;RESET ALL;”将连接的状态清空。 +- 如果使用了临时表,那么在将连接归还连接池之前,必须将临时表删除。 + +## CopyManager + +【建议】在不使用 ETL 工具,数据入库实时性要求又比较高的情况下,建议在开发应用程序时,使用 openGauss JDBC 驱动的 copyManger 接口进行微批导入。 + diff --git "a/content/zh/docs/Developerguide/JSON-JSONB\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" "b/content/zh/docs/Developerguide/JSON-JSONB\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" index f8b627563..72ab71408 100644 --- "a/content/zh/docs/Developerguide/JSON-JSONB\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" +++ "b/content/zh/docs/Developerguide/JSON-JSONB\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" @@ -1,981 +1,981 @@ -# JSON/JSONB函数和操作符 - -JSON/JSONB数据类型参考[JSON/JSONB类型](JSON-JSONB类型.md)。 - -**表 1** JSON/JSONB通用操作符 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

操作符

-

左操作数类型

-

右操作数类型

-

返回类型

-

描述

-

例子

-

例子结果

-

->

-

Array-json(b)

-

int

-

json(b)

-

获得array-json元素。下标不存在返回空。

-

'[{"a":"foo"},{"b":"bar"},{"c":"baz"}]'::json->2

-

{"c":"baz"}

-

->

-

object-json(b)

-

text

-

json(b)

-

通过键获得值。不存在则返回空。

-

'{"a": {"b":"foo"}}'::json->'a'

-

{"b":"foo"}

-

->>

-

Array-json(b)

-

int

-

text

-

获得JSON数组元素。下标不存在返回空。

-

'[1,2,3]'::json->>2

-

3

-

->>

-

object-json(b)

-

text

-

text

-

通过键获得值。不存在则返回空。

-

'{"a":1,"b":2}'::json->>'b'

-

2

-

#>

-

container-json (b)

-

text[]

-

json(b)

-

获取在指定路径的JSON对象,路径不存在则返回空。

-

'{"a": {"b":{"c": "foo"}}}'::json #>'{a,b}'

-

{"c": "foo"}

-

#>>

-

container-json (b)

-

text[]

-

text

-

获取在指定路径的JSON对象,路径不存在则返回空。

-

'{"a":[1,2,3],"b":[4,5,6]}'::json #>>'{a,2}'

-

3

-
- - ->![](public_sys-resources/icon-caution.gif) **注意:** -> ->对于 \#\> 和 \#\>\> 操作符,当给出的路径无法查找到数据时,不会报错,会返回空。 - -**表 2** **jsonb额外支持操作符** - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

操作符

-

右操作数类型

-

描述

-

例子

-

@>

-

jsonb

-

左边的JSON的顶层是否包含右边JSON的顶层所有项。

-

'{"a":1, "b":2}'::jsonb @> '{"b":2}'::jsonb

-

<@

-

jsonb

-

左边的JSON的所有项是否全部存在于右边JSON的顶层。

-

'{"b":2}'::jsonb <@ '{"a":1, "b":2}'::jsonb

-

?

-

text

-

键/元素的字符串是否存在于JSON值的顶层。

-

'{"a":1, "b":2}'::jsonb ? 'b'

-

?|

-

text[]

-

这些数组字符串中的任何一个是否做为顶层键存在。

-

'{"a":1, "b":2, "c":3}'::jsonb ?| array['b', 'c']

-

?&

-

text[]

-

是否所有这些数组字符串都作为顶层键存在。

-

'["a", "b"]'::jsonb ?& array['a', 'b']

-

=

-

jsonb

-

判断两个jsonb的大小关系,同函数jsonb_eq。

-

/

-

<>

-

jsonb

-

判断两个jsonb的大小关系,同函数jsonb_ne。

-

/

-

<

-

jsonb

-

判断两个jsonb的大小关系,同函数jsonb_lt。

-

/

-

>

-

jsonb

-

判断两个jsonb的大小关系,同函数jsonb_gt。

-

/

-

<=

-

jsonb

-

判断两个jsonb的大小关系,同函数jsonb_le。

-

/

-

>=

-

jsonb

-

判断两个jsonb的大小关系,同函数jsonb_ge。

-

/

-
- - -## **JSON/JSONB**支持的函数 - -- array\\\_to\\\_json\\\(anyarray \\\[, pretty\\\_bool\\\]\\\) - - 描述:返回JSON类型的数组。一个多维数组成为一个JSON数组的数组。如果pretty\\\_bool为true,将在一维元素之间添加换行符。 - - 返回类型:json - - 示例: - - ``` - openGauss=# SELECT array_to_json('{{1,5},{99,100}}'::int[]); - array_to_json - ------------------ - [[1,5],[99,100]] - (1 row) - ``` - -- row\\\_to\\\_json\\\(record \\\[, pretty\\\_bool\\\]\\\) - - 描述:返回JSON类型的行。如果pretty\\\_bool为true,将在第一级元素之间添加换行符。 - - 返回类型:json - - 示例: - - ``` - openGauss=# SELECT row_to_json(row(1,'foo')); - row_to_json - --------------------- - {"f1":1,"f2":"foo"} (1 row) - ``` - - -- json\_array\_element\(array-json, integer\)、jsonb\_array\_element\(array-jsonb, integer\) - - 描述:同操作符\`-\>\`,返回数组中指定下标的元素。 - - 返回类型:json、jsonb - - 示例: - - ``` - openGauss=# select json_array_element('[1,true,[1,[2,3 - ]],null]',2); - json_array_element - -------------------- - [1,[2,3]] - (1 row) - ``` - - -- json\_array\_element\_text\(array-json, integer\)、jsonb\_array\_element\_text\(array-jsonb, integer\) - - 描述:同操作符\`-\>\>\`,返回数组中指定下标的元素。 - - 返回类型:text、text - - 示例: - - ``` - openGauss=# select json_array_element_text('[1,true,[1,[2,3]],null]',2); - json_array_element_text - ----------------------- - [1,[2,3]] - (1 row) - ``` - - -- json\_object\_field\(object-json, text\)、jsonb\_object\_field\(object-jsonb, text\) - - 描述:同操作符\`-\>\`,返回对象中指定键对应的值。 - - 返回类型:json、json - - 示例: - - ``` - openGauss=# select json_object_field('{"a": {"b":"foo"}}','a'); - json_object_field - ------------------- - {"b":"foo"} - (1 row) - ``` - -- json\_object\_field\_text\(object-json, text\)、jsonb\_object\_field\_text\(object-jsonb, text\) - - 描述:同操作符\`-\>\>\`,返回对象中指定键对应的值。 - - 返回类型:text、text - - 示例: - - ``` - openGauss=# select json_object_field_text('{"a": {"b":"foo"}}','a'); - json_object_field_text - ---------------------- - {"b":"foo"} - (1 row) - ``` - - -- json\_extract\_path\(json, VARIADIC text\[\]\)、jsonb\_extract\_path\(\(jsonb, VARIADIC text\[\]\) - - 描述:等价于操作符\`\#\>\`。根据$2所指的路径,查找json,并返回。 - - 返回类型:json、jsonb - - 示例: - - ``` - openGauss=# select json_extract_path('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}', 'f4','f6'); - json_extract_path - ------------------- - "stringy" - (1 row) - ``` - - -- json\_extract\_path\_op\(json, text\[\]\)、jsonb\_extract\_path\_op\(jsonb, text\[\]\) - - 描述:同操作符\`\#\>\`。根据$2所指的路径,查找json,并返回。 - - 返回类型:json、jsonb - - 示例: - - ``` - openGauss=# select json_extract_path_op('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}', 'f4','f6'); - json_extract_path_op - --------------------- - "stringy" - (1 row) - ``` - - -- json\_extract\_path\_text\(json, VARIADIC text\[\]\)、jsonb\_extract\_path\_text\(\(jsonb, VARIADIC text\[\]\) - - 描述:等价于操作符\`\#\>\>\`。根据$2所指的路径,查找json,并返回。 - - 返回类型:text、text - - 示例: - - ``` - openGauss=# select json_extract_path_text('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}', 'f4','f6'); - json_extract_path_text - ----------------------- - "stringy" - (1 row) - ``` - - -- json\_extract\_path\_text\_op\(json, text\[\]\)、jsonb\_extract\_path\_text\_op\(jsonb, text\[\]\) - - 描述:同操作符\`\#\>\>\`。根据$2所指的路径,查找json,并返回。 - - 返回类型:text、text - - 示例: - - ``` - openGauss=# select json_extract_path_text_op('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}', 'f4','f6'); - json_extract_path_text_op - -------------------------- - "stringy" - (1 row) - ``` - - -- json\_array\_elements\(array-json\)、jsonb\_array\_elements\(array-jsonb\) - - 描述:拆分数组,每一个元素返回一行。 - - 返回类型:json、jsonb - - 示例: - - ``` - openGauss=# select json_array_elements('[1,true,[1,[2,3]],null]'); - json_array_elements - --------------------- - 1 - true - [1,[2,3]] - null - (4 rows) - ``` - - -- json\_array\_elements\_text\(array-json\)、jsonb\_array\_elements\_text\(array-jsonb\) - - 描述:拆分数组,每一个元素返回一行。 - - 返回类型:text、text - - 示例: - - ``` - openGauss=# select * from json_array_elements_text('[1,true,[1,[2,3]],null]'); - value - ----------- - 1 - true - [1,[2,3]] - - (4 rows) - ``` - - -- json\_array\_length\(array-json\)、jsonb\_array\_length\(array-jsonb\) - - 描述:返回数组长度。 - - 返回类型:integer - - 示例: - - ``` - openGauss=# SELECT json_array_length('[1,2,3,{"f1":1,"f2":[5,6]},4,null]'); - json_array_length - ------------------- - 6 - (1 row) - ``` - - -- json\_each\(object-json\)、jsonb\_each\(object-jsonb\) - - 描述:将对象的每个键值对拆分转换成一行两列。 - - 返回类型:setof\(key text, value json\)、setof\(key text, value jsonb\) - - 示例: - - ``` - openGauss=# select * from json_each('{"f1":[1,2,3],"f2":{"f3":1},"f4":null}'); - key | value - -----+---------- - f1 | [1,2,3] - f2 | {"f3":1} - f4 | null - (3 rows) - ``` - - -- json\_each\_text\(object-json\)、jsonb\_each\_text\(object-jsonb\) - - 描述:将对象的每个键值对拆分转换成一行两列。 - - 返回类型:setof\(key text, value text\)、setof\(key text, value text\) - - 示例: - - ``` - openGauss=# select * from json_each_text('{"f1":[1,2,3],"f2":{"f3":1},"f4":null}'); - key | value - -----+---------- - f1 | [1,2,3] - f2 | {"f3":1} - f4 | - (3 rows) - ``` - - -- json\_object\_keys\(object-json\)、jsonb\_object\_keys\(object-jsonb\) - - 描述:返回对象中顶层的所有键。 - - 返回类型:SETOF text - - 示例: - - ``` - openGauss=# select json_object_keys('{"f1":"abc","f2":{"f3":"a", "f4":"b"}, "f1":"abcd"}'); - json_object_keys - ------------------ - f1 - f2 - f1 - (3 rows) - ``` - - -- jsonb中会有去重操作 - - ``` - openGauss=# select jsonb_object_keys('{"f1":"abc","f2":{"f3":"a", "f4":"b"}, "f1":"abcd"}'); - jsonb_object_keys - ------------------- - f1 - f2 - (2 rows) - ``` - - -- json\_populate\_record\(anyelement, object-json \[, bool\]\)、jsonb\_populate\_record\(anyelement, object-jsonb \[, bool\]\) - - 描述:$1必须是一个复合类型的参数。将会把object-json里的每个对键值进行拆分,以键当做列名,与$1中的列名进行匹配查找,并填充到$1的格式中。 - - 返回类型:anyelement、anyelement - - 示例: - - ``` - openGauss=# create type jpop as (a text, b int, c bool); - CREATE TYPE - postgres=# select * from json_populate_record(null::jpop,'{"a":"blurfl","x":43.2}'); - a | b | c - --------+---+--- - blurfl | | - (1 row) - ``` - - ``` - openGauss=# select * from json_populate_record((1,1,null)::jpop,'{"a":"blurfl","x":43.2}'); - a | b | c - --------+---+--- - blurfl | 1 | - (1 row) - ``` - - -- json\_populate\_record\_set\(anyelement, array-json \[, bool\]\)、jsonb\_populate\_record\_set\(anyelement, array-jsonb \[, bool\]\) - - 描述:参考上述函数json\_populate\_record、jsonb\_populate\_record,对$2数组的每一个元素进行上述参数函数的操作,因此这也要求$2数组的每个元素都是object-json类型的。 - - 返回类型:setof anyelement、setof anyelement - - 示例: - - ``` - openGauss=# create type jpop as (a text, b int, c bool); - CREATE TYPE - postgres=# select * from json_populate_recordset(null::jpop, '[{"a":1,"b":2},{"a":3,"b":4}]'); - a | b | c - ---+---+--- - 1 | 2 | - 3 | 4 | - (2 rows) - ``` - - -- json\_typeof\(json\)、jsonb\_typeof\(jsonb\) - - 描述:检测json类型。 - - 返回类型:text、text - - 示例: - - ``` - openGauss=# select value, json_typeof(value) - postgres-# from (values (json '123.4'), (json '"foo"'), (json 'true'), (json 'null'), (json '[1, 2, 3]'), (json '{"x":"foo", "y":123}'), (NULL::json)) as data(value); - value | json_typeof - ----------------------+------------- - 123.4 | number - "foo" | string - true | boolean - null | null - [1, 2, 3] | array - {"x":"foo", "y":123} | object - | - (7 rows) - ``` - - -- json\_build\_array\( \[VARIADIC "any"\] \) - - 描述:从一个可变参数列表构造出一个JSON数组。 - - 返回类型:array-json - - 示例: - - ``` - openGauss=# select json_build_array('a',1,'b',1.2,'c',true,'d',null,'e',json '{"x": 3, "y": [1,2,3]}',''); - json_build_array - --------------------------------------------------------------------------- - ["a", 1, "b", 1.2, "c", true, "d", null, "e", {"x": 3, "y": [1,2,3]}, ""] - (1 row) - ``` - - -- json\_build\_object\( \[VARIADIC "any"\] \) - - 描述:从一个可变参数列表构造出一个JSON对象,其入参必须为偶数个,两两一组组成键值对。注意键不可为null。 - - 返回类型:object-json - - 示例: - - ``` - openGauss=# select json_build_object(1,2); - json_build_object - ------------------- - {"1" : 2} - (1 row) - ``` - - -- json\_to\_record\(object-json, bool\) - - 描述:正如所有返回record 的函数一样,调用者必须用一个AS子句显式地定义记录的结构。会将object-json的键值对进行拆分重组,把键当做列名,去匹配填充as显示指定的记录的结构。 - - 返回类型:record - - 示例: - - ``` - openGauss=# select * from json_to_record('{"a":1,"b":"foo","c":"bar"}',true) as x(a int, b text, d text); - a | b | d - ---+-----+--- - 1 | foo | - (1 row) - ``` - - -- json\_to\_recordset\(array-json, bool\) - - 描述:参考函数json\_to\_record,对数组内个每个元素,执行上述函数的操作,因此这要求数组内的每个元素都得是object-json。 - - 返回类型:setof record - - 示例: - - ``` - openGauss=# select * from json_to_recordset( - openGauss(# '[{"a":1,"b":"foo","d":false},{"a":2,"b":"bar","c":true}]', - openGauss(# false - openGauss(# ) as x(a int, b text, c boolean); - a | b | c - ---+-----+--- - 1 | foo | - 2 | bar | t - (2 rows) - ``` - - -- json\_object\(text\[\]\)、json\_object\(text\[\], text\[\]\) - - 描述:从一个文本数组构造一个object-json。这是个重载函数,当入参为一个文本数组的时候,其数组长度必须为偶数,成员被当做交替出现的键/值对。两个文本数组的时候,第一个数组认为是键,第二个认为是值,两个数组长度必须相等。键不可为null。 - - 返回类型:object-json - - 示例: - - ``` - openGauss=# select json_object('{a,1,b,2,3,NULL,"d e f","a b c"}'); - json_object - ------------------------------------------------------- - {"a" : "1", "b" : "2", "3" : null, "d e f" : "a b c"} - (1 row) - ``` - - ``` - postgres=# select json_object('{a,b,"a b c"}', '{a,1,1}'); - json_object - --------------------------------------- - {"a" : "a", "b" : "1", "a b c" : "1"} - (1 row) - ``` - - -- json\_agg\(any\) - - 描述:将值聚集为json数组。 - - 返回类型:array-json - - 示例: - - ``` - openGauss=# select * from classes; - name | score - -----+------- - A | 2 - A | 3 - D | 5 - D | - (4 rows) - ``` - - ``` - openGauss=# select name, json_agg(score) score from classes group by name order by name; - name | score - -----+----------------- - A | [2, 3] - D | [5, null] - | [null] - (3 rows) - ``` - - -- json\_object\_agg\(any, any\) - - 描述:将值聚集为json对象。 - - 返回类型:object-json - - 示例: - - ``` - openGauss=# select * from classes; - name | score - -----+------- - A | 2 - A | 3 - D | 5 - D | - (4 rows) - ``` - - ``` - openGauss=# select json_object_agg(name, score) from classes group by name order by name; - json_object_agg - ------------------------- - { "A" : 2, "A" : 3 } - { "D" : 5, "D" : null } - (2 rows) - ``` - - -- - jsonb\_contained\(jsonb, jsonb\) - - 描述:同操作符 \`<@\`,判断$1中的所有元素是否在$2的顶层存在。 - - 返回类型:bool - - 示例: - - ``` - openGauss=# select jsonb_contained('[1,2,3]', '[1,2,3,4]'); - jsonb_contained - ----------------- - t - (1 row) - ``` - - -- - jsonb\_contains\(jsonb, jsonb\) - - 描述:同操作符 \`@\>\`,判断$1中的顶层所有元素是否包含在$2的所有元素。 - - 返回类型:bool - - 示例: - - ``` - openGauss=# select jsonb_contains('[1,2,3,4]', '[1,2,3]'); - jsonb_contains - ---------------- - t - (1 row) - ``` - - -- - jsonb\_exists\(jsonb, text\) - - 描述:同操作符 \`?\`,字符串$2是否存在$1的顶层以key\\elem\\scalar的形式存在。 - - 返回类型:bool - - 示例: - - ``` - openGauss=# select jsonb_exists('["1",2,3]', '1'); - jsonb_exists - -------------- - t - (1 row) - ``` - - -- - jsonb\_exists\_all\(jsonb, text\[\]\) - - 描述:同操作符 \`?&\`,字符串数组$2里面,是否所有的元素,都在$1的顶层以key\\elem\\scalar的形式存在。 - - 返回类型:bool - - 示例: - - ``` - openGauss=# select jsonb_exists_all('["1","2",3]', '{1, 2}'); - jsonb_exists_all - ------------------ - t - (1 row) - ``` - - -- - jsonb\_exists\_any\(jsonb, text\[\]\) - - 描述:同操作符 \`?|\`,字符串数组$2里面,是否存在的元素,在$1的顶层以key\\elem\\scalar的形式存在。 - - 返回类型:bool - - 示例: - - ``` - openGauss=# select jsonb_exists_any('["1","2",3]', '{1, 2, 4}'); - jsonb_exists_any - ------------------ - t - (1 row) - ``` - - -- - jsonb\_cmp\(jsonb, jsonb\) - - 描述:比较大小,正数代表大于,负数代表小于,0表示相等。 - - 返回类型:integer - - 示例: - - ``` - openGauss=# select jsonb_cmp('["a", "b"]', '{"a":1, "b":2}'); - jsonb_cmp - ----------- - -1 - (1 row) - ``` - - -- - jsonb\_eq\(jsonb, jsonb\) - - 描述:同操作符 \`=\`,比较两个值的大小。 - - 返回类型:bool - - 示例: - - ``` - openGauss=# select jsonb_eq('["a", "b"]', '{"a":1, "b":2}'); - jsonb_eq - ---------- - f - (1 row) - ``` - - -- - jsonb\_ne\(jsonb, jsonb\) - - 描述:同操作符 \`<\>\`,比较两个值的大小。 - - 返回类型:bool - - 示例: - - ``` - openGauss=# select jsonb_ne('["a", "b"]', '{"a":1, "b":2}'); - jsonb_ne - ---------- - t - (1 row) - ``` - - -- - jsonb\_gt\(jsonb, jsonb\) - - 描述:同操作符 \`\>\`,比较两个值的大小。 - - 返回类型:bool - - 示例: - - ``` - openGauss=# select jsonb_gt('["a", "b"]', '{"a":1, "b":2}'); - jsonb_gt - ---------- - f - (1 row) - ``` - - -- - jsonb\_ge\(jsonb, jsonb\) - - 描述:同操作符 \`\>=\`,比较两个值的大小。 - - 返回类型:bool - - 示例: - - ``` - openGauss=# select jsonb_ge('["a", "b"]', '{"a":1, "b":2}'); - jsonb_ge - ---------- - f - (1 row) - ``` - - -- - jsonb\_lt\(jsonb, jsonb\) - - 描述:同操作符 \`<\`,比较两个值的大小。 - - 返回类型:bool - - 示例: - - ``` - openGauss=# select jsonb_lt('["a", "b"]', '{"a":1, "b":2}'); - jsonb_lt - ---------- - t - (1 row) - ``` - - -- - jsonb\_le\(jsonb, jsonb\) - - 描述:同操作符 \`<=\`,比较两个值的大小。 - - 返回类型:bool - - 示例: - - ``` - openGauss=# select jsonb_le('["a", "b"]', '{"a":1, "b":2}'); - jsonb_le - ---------- - t - (1 row) - ``` - - -- - to\_json\(anyelement\) - - 描述:把参数转换为\`json\`。 - - 返回类型:json - - 示例: - - ``` - openGauss=# select to_json('{1,5}'::text[]); - to_json - ----------- - ["1","5"] - (1 row) - ``` - +# JSON/JSONB函数和操作符 + +JSON/JSONB数据类型参考[JSON/JSONB类型](JSON-JSONB类型.md)。 + +**表 1** JSON/JSONB通用操作符 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

操作符

+

左操作数类型

+

右操作数类型

+

返回类型

+

描述

+

例子

+

例子结果

+

->

+

Array-json(b)

+

int

+

json(b)

+

获得array-json元素。下标不存在返回空。

+

'[{"a":"foo"},{"b":"bar"},{"c":"baz"}]'::json->2

+

{"c":"baz"}

+

->

+

object-json(b)

+

text

+

json(b)

+

通过键获得值。不存在则返回空。

+

'{"a": {"b":"foo"}}'::json->'a'

+

{"b":"foo"}

+

->>

+

Array-json(b)

+

int

+

text

+

获得 JSON 数组元素。下标不存在返回空。

+

'[1, 2 ,3]'::json->>2

+

3

+

->>

+

object-json(b)

+

text

+

text

+

通过键获得值。不存在则返回空。

+

'{"a":1,"b":2}'::json->>'b'

+

2

+

#>

+

container-json (b)

+

text[]

+

json(b)

+

获取在指定路径的 JSON 对象,路径不存在则返回空。

+

'{"a": {"b":{"c": "foo"}}}'::json #>'{a,b}'

+

{"c": "foo"}

+

#>>

+

container-json (b)

+

text[]

+

text

+

获取在指定路径的 JSON 对象,路径不存在则返回空。

+

'{"a":[1, 2 ,3],"b":[4, 5 ,6]}'::json #>>'{a,2}'

+

3

+
+ + +>![](public_sys-resources/icon-caution.gif) **注意:** +> +>对于 \#\> 和 \#\>\> 操作符,当给出的路径无法查找到数据时,不会报错,会返回空。 + +**表 2** **jsonb额外支持操作符** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

操作符

+

右操作数类型

+

描述

+

例子

+

@>

+

jsonb

+

左边的 JSON 的顶层是否包含右边 JSON 的顶层所有项。

+

'{"a":1, "b":2}'::jsonb @> '{"b":2}'::jsonb

+

<@

+

jsonb

+

左边的 JSON 的所有项是否全部存在于右边 JSON 的顶层。

+

'{"b":2}'::jsonb <@ '{"a":1, "b":2}'::jsonb

+

?

+

text

+

键/元素的字符串是否存在于 JSON 值的顶层。

+

'{"a":1, "b":2}'::jsonb ? 'b'

+

?|

+

text[]

+

这些数组字符串中的任何一个是否做为顶层键存在。

+

'{"a":1, "b":2, "c":3}'::jsonb ?| array['b', 'c']

+

?&

+

text[]

+

是否所有这些数组字符串都作为顶层键存在。

+

'["a", "b"]'::jsonb ?& array['a', 'b']

+

=

+

jsonb

+

判断两个 jsonb 的大小关系,同函数 jsonb_eq 。

+

/

+

<>

+

jsonb

+

判断两个 jsonb 的大小关系,同函数 jsonb_ne 。

+

/

+

<

+

jsonb

+

判断两个 jsonb 的大小关系,同函数 jsonb_lt 。

+

/

+

>

+

jsonb

+

判断两个 jsonb 的大小关系,同函数 jsonb_gt 。

+

/

+

<=

+

jsonb

+

判断两个 jsonb 的大小关系,同函数 jsonb_le 。

+

/

+

>=

+

jsonb

+

判断两个 jsonb 的大小关系,同函数 jsonb_ge 。

+

/

+
+ + +## **JSON/JSONB**支持的函数 + +- array\\\_to\\\_json\\\(anyarray \\\[, pretty\\\_bool\\\]\\\) + + 描述:返回 JSON 类型的数组。一个多维数组成为一个 JSON 数组的数组。如果pretty\\\_bool为 true ,将在一维元素之间添加换行符。 + + 返回类型:json + + 示例: + + ``` + openGauss=# SELECT array_to_json('{{1,5},{99,100}}'::int[]); + array_to_json + ------------------ + [[1,5],[99,100]] + (1 row) + ``` + +- row\\\_to\\\_json\\\(record \\\[, pretty\\\_bool\\\]\\\) + + 描述:返回 JSON 类型的行。如果pretty\\\_bool为 true ,将在第一级元素之间添加换行符。 + + 返回类型:json + + 示例: + + ``` + openGauss=# SELECT row_to_json(row(1,'foo')); + row_to_json + --------------------- + {"f1":1,"f2":"foo"} (1 row) + ``` + + +- json\_array\_element\(array-json, integer\)、jsonb\_array\_element\(array-jsonb, integer\) + + 描述:同操作符\`-\>\`,返回数组中指定下标的元素。 + + 返回类型:json、jsonb + + 示例: + + ``` + openGauss=# select json_array_element('[1, true ,[1,[2,3 + ]],null]',2); + json_array_element + -------------------- + [1,[2,3]] + (1 row) + ``` + + +- json\_array\_element\_text\(array-json, integer\)、jsonb\_array\_element\_text\(array-jsonb, integer\) + + 描述:同操作符\`-\>\>\`,返回数组中指定下标的元素。 + + 返回类型:text、text + + 示例: + + ``` + openGauss=# select json_array_element_text('[1, true ,[1,[2,3]],null]',2); + json_array_element_text + ----------------------- + [1,[2,3]] + (1 row) + ``` + + +- json\_object\_field\(object-json, text\)、jsonb\_object\_field\(object-jsonb, text\) + + 描述:同操作符\`-\>\`,返回对象中指定键对应的值。 + + 返回类型:json、json + + 示例: + + ``` + openGauss=# select json_object_field('{"a": {"b":"foo"}}','a'); + json_object_field + ------------------- + {"b":"foo"} + (1 row) + ``` + +- json\_object\_field\_text\(object-json, text\)、jsonb\_object\_field\_text\(object-jsonb, text\) + + 描述:同操作符\`-\>\>\`,返回对象中指定键对应的值。 + + 返回类型:text、text + + 示例: + + ``` + openGauss=# select json_object_field_text('{"a": {"b":"foo"}}','a'); + json_object_field_text + ---------------------- + {"b":"foo"} + (1 row) + ``` + + +- json\_extract\_path\(json, VARIADIC text\[\]\)、jsonb\_extract\_path\(\(jsonb, VARIADIC text\[\]\) + + 描述:等价于操作符\`\#\>\`。根据$2所指的路径,查找 json ,并返回。 + + 返回类型:json、jsonb + + 示例: + + ``` + openGauss=# select json_extract_path('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}', 'f4','f6'); + json_extract_path + ------------------- + "stringy" + (1 row) + ``` + + +- json\_extract\_path\_op\(json, text\[\]\)、jsonb\_extract\_path\_op\(jsonb, text\[\]\) + + 描述:同操作符\`\#\>\`。根据$2所指的路径,查找 json ,并返回。 + + 返回类型:json、jsonb + + 示例: + + ``` + openGauss=# select json_extract_path_op('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}', 'f4','f6'); + json_extract_path_op + --------------------- + "stringy" + (1 row) + ``` + + +- json\_extract\_path\_text\(json, VARIADIC text\[\]\)、jsonb\_extract\_path\_text\(\(jsonb, VARIADIC text\[\]\) + + 描述:等价于操作符\`\#\>\>\`。根据$2所指的路径,查找 json ,并返回。 + + 返回类型:text、text + + 示例: + + ``` + openGauss=# select json_extract_path_text('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}', 'f4','f6'); + json_extract_path_text + ----------------------- + "stringy" + (1 row) + ``` + + +- json\_extract\_path\_text\_op\(json, text\[\]\)、jsonb\_extract\_path\_text\_op\(jsonb, text\[\]\) + + 描述:同操作符\`\#\>\>\`。根据$2所指的路径,查找 json ,并返回。 + + 返回类型:text、text + + 示例: + + ``` + openGauss=# select json_extract_path_text_op('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}', 'f4','f6'); + json_extract_path_text_op + -------------------------- + "stringy" + (1 row) + ``` + + +- json\_array\_elements\(array-json\)、jsonb\_array\_elements\(array-jsonb\) + + 描述:拆分数组,每一个元素返回一行。 + + 返回类型:json、jsonb + + 示例: + + ``` + openGauss=# select json_array_elements('[1, true ,[1,[2,3]],null]'); + json_array_elements + --------------------- + 1 + true + [1,[2,3]] + null + (4 rows) + ``` + + +- json\_array\_elements\_text\(array-json\)、jsonb\_array\_elements\_text\(array-jsonb\) + + 描述:拆分数组,每一个元素返回一行。 + + 返回类型:text、text + + 示例: + + ``` + openGauss=# select * from json_array_elements_text('[1, true ,[1,[2,3]],null]'); + value + ----------- + 1 + true + [1,[2,3]] + + (4 rows) + ``` + + +- json\_array\_length\(array-json\)、jsonb\_array\_length\(array-jsonb\) + + 描述:返回数组长度。 + + 返回类型:integer + + 示例: + + ``` + openGauss=# SELECT json_array_length('[1, 2 , 3 ,{"f1":1,"f2":[5,6]}, 4 ,null]'); + json_array_length + ------------------- + 6 + (1 row) + ``` + + +- json\_each\(object-json\)、jsonb\_each\(object-jsonb\) + + 描述:将对象的每个键值对拆分转换成一行两列。 + + 返回类型:setof\(key text, value json\)、setof\(key text, value jsonb\) + + 示例: + + ``` + openGauss=# select * from json_each('{"f1":[1, 2 ,3],"f2":{"f3":1},"f4":null}'); + key | value + -----+---------- + f1 | [1, 2 ,3] + f2 | {"f3":1} + f4 | null + (3 rows) + ``` + + +- json\_each\_text\(object-json\)、jsonb\_each\_text\(object-jsonb\) + + 描述:将对象的每个键值对拆分转换成一行两列。 + + 返回类型:setof\(key text, value text\)、setof\(key text, value text\) + + 示例: + + ``` + openGauss=# select * from json_each_text('{"f1":[1, 2 ,3],"f2":{"f3":1},"f4":null}'); + key | value + -----+---------- + f1 | [1, 2 ,3] + f2 | {"f3":1} + f4 | + (3 rows) + ``` + + +- json\_object\_keys\(object-json\)、jsonb\_object\_keys\(object-jsonb\) + + 描述:返回对象中顶层的所有键。 + + 返回类型:SETOF text + + 示例: + + ``` + openGauss=# select json_object_keys('{"f1":"abc","f2":{"f3":"a", "f4":"b"}, "f1":"abcd"}'); + json_object_keys + ------------------ + f1 + f2 + f1 + (3 rows) + ``` + + +- jsonb中会有去重操作 + + ``` + openGauss=# select jsonb_object_keys('{"f1":"abc","f2":{"f3":"a", "f4":"b"}, "f1":"abcd"}'); + jsonb_object_keys + ------------------- + f1 + f2 + (2 rows) + ``` + + +- json\_populate\_record\(anyelement, object-json \[, bool\]\)、jsonb\_populate\_record\(anyelement, object-jsonb \[, bool\]\) + + 描述:$1必须是一个复合类型的参数。将会把object-json里的每个对键值进行拆分,以键当做列名,与$1中的列名进行匹配查找,并填充到$1的格式中。 + + 返回类型:anyelement、anyelement + + 示例: + + ``` + openGauss=# create type jpop as (a text, b int , c bool); + CREATE TYPE + postgres=# select * from json_populate_record(null::jpop,'{"a":"blurfl","x":43.2}'); + a | b | c + --------+---+--- + blurfl | | + (1 row) + ``` + + ``` + openGauss=# select * from json_populate_record((1, 1 ,null)::jpop,'{"a":"blurfl","x":43.2}'); + a | b | c + --------+---+--- + blurfl | 1 | + (1 row) + ``` + + +- json\_populate\_record\_set\(anyelement, array-json \[, bool\]\)、jsonb\_populate\_record\_set\(anyelement, array-jsonb \[, bool\]\) + + 描述:参考上述函数json\_populate\_record、jsonb\_populate\_record,对$2数组的每一个元素进行上述参数函数的操作,因此这也要求$2数组的每个元素都是object-json类型的。 + + 返回类型:setof anyelement、setof anyelement + + 示例: + + ``` + openGauss=# create type jpop as (a text, b int , c bool); + CREATE TYPE + postgres=# select * from json_populate_recordset(null::jpop, '[{"a":1,"b":2},{"a":3,"b":4}]'); + a | b | c + ---+---+--- + 1 | 2 | + 3 | 4 | + (2 rows) + ``` + + +- json\_typeof\(json\)、jsonb\_typeof\(jsonb\) + + 描述:检测 json 类型。 + + 返回类型:text、text + + 示例: + + ``` + openGauss=# select value, json_typeof(value) + postgres-# from (values (json '123.4'), (json '"foo"'), (json 'true'), (json 'null'), (json '[1, 2 , 3]'), (json '{"x":"foo", "y":123}'), (NULL::json)) as data(value); + value | json_typeof + ----------------------+------------- + 123.4 | number + "foo" | string + true | boolean + null | null + [1, 2 , 3] | array + {"x":"foo", "y":123} | object + | + (7 rows) + ``` + + +- json\_build\_array\( \[VARIADIC "any"\] \) + + 描述:从一个可变参数列表构造出一个 JSON 数组。 + + 返回类型:array-json + + 示例: + + ``` + openGauss=# select json_build_array('a', 1 ,'b',1.2,'c', true ,'d', null ,'e',json '{"x": 3, "y": [1, 2 ,3]}',''); + json_build_array + --------------------------------------------------------------------------- + ["a", 1 , "b", 1.2, "c", true , "d", null , "e", {"x": 3, "y": [1, 2 ,3]}, ""] + (1 row) + ``` + + +- json\_build\_object\( \[VARIADIC "any"\] \) + + 描述:从一个可变参数列表构造出一个 JSON 对象,其入参必须为偶数个,两两一组组成键值对。注意键不可为 null 。 + + 返回类型:object-json + + 示例: + + ``` + openGauss=# select json_build_object(1,2); + json_build_object + ------------------- + {"1" : 2} + (1 row) + ``` + + +- json\_to\_record\(object-json, bool\) + + 描述:正如所有返回 record 的函数一样,调用者必须用一个 AS 子句显式地定义记录的结构。会将object-json的键值对进行拆分重组,把键当做列名,去匹配填充 as 显示指定的记录的结构。 + + 返回类型:record + + 示例: + + ``` + openGauss=# select * from json_to_record('{"a":1,"b":"foo","c":"bar"}',true) as x(a int, b text , d text); + a | b | d + ---+-----+--- + 1 | foo | + (1 row) + ``` + + +- json\_to\_recordset\(array-json, bool\) + + 描述:参考函数json\_to\_record,对数组内个每个元素,执行上述函数的操作,因此这要求数组内的每个元素都得是object-json。 + + 返回类型:setof record + + 示例: + + ``` + openGauss=# select * from json_to_recordset( + openGauss(# '[{"a":1,"b":"foo","d":false},{"a":2,"b":"bar","c":true}]', + openGauss(# false + openGauss(# ) as x(a int, b text , c boolean); + a | b | c + ---+-----+--- + 1 | foo | + 2 | bar | t + (2 rows) + ``` + + +- json\_object\(text\[\]\)、json\_object\(text\[\], text\[\]\) + + 描述:从一个文本数组构造一个object-json。这是个重载函数,当入参为一个文本数组的时候,其数组长度必须为偶数,成员被当做交替出现的键/值对。两个文本数组的时候,第一个数组认为是键,第二个认为是值,两个数组长度必须相等。键不可为 null 。 + + 返回类型:object-json + + 示例: + + ``` + openGauss=# select json_object('{a, 1 , b , 2 , 3 , NULL ,"d e f","a b c"}'); + json_object + ------------------------------------------------------- + {"a" : "1", "b" : "2", "3" : null, "d e f" : "a b c"} + (1 row) + ``` + + ``` + postgres=# select json_object('{a, b ,"a b c"}', '{a, 1 ,1}'); + json_object + --------------------------------------- + {"a" : "a", "b" : "1", "a b c" : "1"} + (1 row) + ``` + + +- json\_agg\(any\) + + 描述:将值聚集为 json 数组。 + + 返回类型:array-json + + 示例: + + ``` + openGauss=# select * from classes; + name | score + -----+------- + A | 2 + A | 3 + D | 5 + D | + (4 rows) + ``` + + ``` + openGauss=# select name, json_agg(score) score from classes group by name order by name; + name | score + -----+----------------- + A | [2, 3] + D | [5, null] + | [null] + (3 rows) + ``` + + +- json\_object\_agg\(any, any\) + + 描述:将值聚集为 json 对象。 + + 返回类型:object-json + + 示例: + + ``` + openGauss=# select * from classes; + name | score + -----+------- + A | 2 + A | 3 + D | 5 + D | + (4 rows) + ``` + + ``` + openGauss=# select json_object_agg(name, score) from classes group by name order by name; + json_object_agg + ------------------------- + { "A" : 2, "A" : 3 } + { "D" : 5, "D" : null } + (2 rows) + ``` + + +- - jsonb\_contained\(jsonb, jsonb\) + + 描述:同操作符 \`<@\`,判断$1中的所有元素是否在$2的顶层存在。 + + 返回类型:bool + + 示例: + + ``` + openGauss=# select jsonb_contained('[1, 2 ,3]', '[1, 2 , 3 ,4]'); + jsonb_contained + ----------------- + t + (1 row) + ``` + + +- - jsonb\_contains\(jsonb, jsonb\) + + 描述:同操作符 \`@\>\`,判断$1中的顶层所有元素是否包含在$2的所有元素。 + + 返回类型:bool + + 示例: + + ``` + openGauss=# select jsonb_contains('[1, 2 , 3 ,4]', '[1, 2 ,3]'); + jsonb_contains + ---------------- + t + (1 row) + ``` + + +- - jsonb\_exists\(jsonb, text\) + + 描述:同操作符 \`?\`,字符串$2是否存在$1的顶层以key\\elem\\scalar的形式存在。 + + 返回类型:bool + + 示例: + + ``` + openGauss=# select jsonb_exists('["1", 2 ,3]', '1'); + jsonb_exists + -------------- + t + (1 row) + ``` + + +- - jsonb\_exists\_all\(jsonb, text\[\]\) + + 描述:同操作符 \`?&\`,字符串数组$2里面,是否所有的元素,都在$1的顶层以key\\elem\\scalar的形式存在。 + + 返回类型:bool + + 示例: + + ``` + openGauss=# select jsonb_exists_all('["1","2",3]', '{1, 2}'); + jsonb_exists_all + ------------------ + t + (1 row) + ``` + + +- - jsonb\_exists\_any\(jsonb, text\[\]\) + + 描述:同操作符 \`?|\`,字符串数组$2里面,是否存在的元素,在$1的顶层以key\\elem\\scalar的形式存在。 + + 返回类型:bool + + 示例: + + ``` + openGauss=# select jsonb_exists_any('["1","2",3]', '{1, 2 , 4}'); + jsonb_exists_any + ------------------ + t + (1 row) + ``` + + +- - jsonb\_cmp\(jsonb, jsonb\) + + 描述:比较大小,正数代表大于,负数代表小于, 0 表示相等。 + + 返回类型:integer + + 示例: + + ``` + openGauss=# select jsonb_cmp('["a", "b"]', '{"a":1, "b":2}'); + jsonb_cmp + ----------- + -1 + (1 row) + ``` + + +- - jsonb\_eq\(jsonb, jsonb\) + + 描述:同操作符 \`=\`,比较两个值的大小。 + + 返回类型:bool + + 示例: + + ``` + openGauss=# select jsonb_eq('["a", "b"]', '{"a":1, "b":2}'); + jsonb_eq + ---------- + f + (1 row) + ``` + + +- - jsonb\_ne\(jsonb, jsonb\) + + 描述:同操作符 \`<\>\`,比较两个值的大小。 + + 返回类型:bool + + 示例: + + ``` + openGauss=# select jsonb_ne('["a", "b"]', '{"a":1, "b":2}'); + jsonb_ne + ---------- + t + (1 row) + ``` + + +- - jsonb\_gt\(jsonb, jsonb\) + + 描述:同操作符 \`\>\`,比较两个值的大小。 + + 返回类型:bool + + 示例: + + ``` + openGauss=# select jsonb_gt('["a", "b"]', '{"a":1, "b":2}'); + jsonb_gt + ---------- + f + (1 row) + ``` + + +- - jsonb\_ge\(jsonb, jsonb\) + + 描述:同操作符 \`\>=\`,比较两个值的大小。 + + 返回类型:bool + + 示例: + + ``` + openGauss=# select jsonb_ge('["a", "b"]', '{"a":1, "b":2}'); + jsonb_ge + ---------- + f + (1 row) + ``` + + +- - jsonb\_lt\(jsonb, jsonb\) + + 描述:同操作符 \`<\`,比较两个值的大小。 + + 返回类型:bool + + 示例: + + ``` + openGauss=# select jsonb_lt('["a", "b"]', '{"a":1, "b":2}'); + jsonb_lt + ---------- + t + (1 row) + ``` + + +- - jsonb\_le\(jsonb, jsonb\) + + 描述:同操作符 \`<=\`,比较两个值的大小。 + + 返回类型:bool + + 示例: + + ``` + openGauss=# select jsonb_le('["a", "b"]', '{"a":1, "b":2}'); + jsonb_le + ---------- + t + (1 row) + ``` + + +- - to\_json\(anyelement\) + + 描述:把参数转换为\`json\`。 + + 返回类型:json + + 示例: + + ``` + openGauss=# select to_json('{1,5}'::text[]); + to_json + ----------- + ["1","5"] + (1 row) + ``` + diff --git "a/content/zh/docs/Developerguide/JSON-JSONB\347\261\273\345\236\213.md" "b/content/zh/docs/Developerguide/JSON-JSONB\347\261\273\345\236\213.md" index 50ac3956c..131d33d0c 100644 --- "a/content/zh/docs/Developerguide/JSON-JSONB\347\261\273\345\236\213.md" +++ "b/content/zh/docs/Developerguide/JSON-JSONB\347\261\273\345\236\213.md" @@ -1,143 +1,143 @@ -# JSON/JSONB类型 - -JSON(JavaScript Object Notation)数据,可以是单独的一个标量,也可以是一个数组,也可以是一个键值对象,其中数组和对象可以统称容器(container): - -- 标量(scalar):单一的数字、bool、string、null都可以叫做标量。 -- 数组(array):\[\]结构,里面存放的元素可以是任意类型的JSON,并且不要求数组内所有元素都是同一类型。 -- 对象(object):\{\}结构,存储key:value的键值对,其键只能是用“”包裹起来的字符串,值可以是任意类型的JSON,对于重复的键,按最后一个键值对为准。 - -openGauss内存在两种数据类型JSON和JSONB,可以用来存储JSON数据。其中JSON是对输入的字符串的完整拷贝,使用时再去解析,所以它会保留输入的空格、重复键以及顺序等;JSONB解析输入后保存的二进制,它在解析时会删除语义无关的细节和重复的键,对键值也会进行排序,使用时不用再次解析。 - -因此可以发现,两者其实都是JSON,它们接受相同的字符串作为输入。它们实际的主要差别是效率。JSON数据类型存储输入文本的精确拷贝,处理函数必须在每个执行上重新解析; 而JSONB数据以分解的二进制格式存储,这使得它由于添加了转换机制而在输入上稍微慢些,但是在处理上明显更快,因为不需要重新解析。同时由于JSONB类型存在解析后的格式归一化等操作,同等的语义下只会有一种格式,因此可以更好更强大的支持很多其他额外的操作,比如按照一定的规则进行大小比较等。JSONB也支持索引,这也是一个明显的优势。 - -## 输入格式 - -输入必须是一个符合JSON数据格式的字符串,此字符串用单引号''声明。 - -null(null-json):仅null,全小写。 - -``` -select 'null'::json; -- sucselect 'NULL'::jsonb; -- err -``` - -数字(num-json):正负整数、小数、0,支持科学计数法。 - -``` -select '1'::json;select '-1.5'::json;select '-1.5e-5'::jsonb, '-1.5e+2'::jsonb;select '001'::json, '+15'::json, 'NaN'::json; --- 不支持多余的前导0,正数的+号,以及NaN和infinity。 -``` - -布尔(bool-json):仅true、false,全小写。 - -``` -select 'true'::json;select 'false'::jsonb; -``` - -字符串(str-json):必须是加双引号的字符串。 - -``` -select '"a"'::json;select '"abc"'::jsonb; -``` - -数组(array-json):使用中括号\[\]包裹,满足数组书写条件。数组内元素类型可以是任意合法的JSON,且不要求类型一致。 - -``` -select '[1, 2, "foo", null]'::json;select '[]'::json;select '[1, 2, "foo", null, [[]], {}]'::jsonb; -``` - -对象(object-json):使用大括号\{\}包裹,键必须是满足JSON字符串规则的字符串,值可以是任意合法的JSON。 - -``` -select '{}'::json;select '{"a": 1, "b": {"a": 2, "b": null}}'::json;select '{"foo": [true, "bar"], "tags": {"a": 1, "b": null}}'::jsonb; -``` - ->![](public_sys-resources/icon-caution.gif) **注意:** -> ->- 区分 'null'::json 和 null::json 是两个不同的概念,类似于字符串 str="" 和 str=null。 -> ->- 对于数字,当使用科学计数法的时候,jsonb类型会将其展开,而json会精准拷贝输入。 - -## JSONB高级特性 - -- 注意事项 - - 不支持列存。 - - 不支持作为分区键。 - - 不支持外表、mot。 - - -JSON和JSONB的主要差异在于存储方式上的不同,JSONB存储的是解析后的二进制,能够体现JSON的层次结构,更方便直接访问等,因此JSONB会有很多JSON所不具有的高级特性。 - -- 格式归一化 - - - 对于输入的object-json字符串,解析成jsonb二进制后,会天然的丢弃语义上无关紧要的细节,比如空格: - - ``` - postgres=# select ' [1, " a ", {"a" :1 }] '::jsonb; jsonb - ---------------------- - [1, " a ", {"a": 1}](1 row) - ``` - - - 对于object-json,会删除重复的键值,只保留最后一个出现的,如: - - ``` - postgres=# select '{"a" : 1, "a" : 2}'::jsonb; jsonb---------- {"a": 2}(1 row) - ``` - - - 对于object-json,键值会重新进行排序,排序规则:长度长的在后、长度相等则ascii码大的在后,如: - - ``` - postgres=# select '{"aa" : 1, "b" : 2, "a" : 3}'::jsonb; jsonb - --------------------------- - {"a": 3, "b": 2, "aa": 1}(1 row) - ``` - - -- 大小比较 - - 由于经过了格式归一化,保证了同一种语义下的jsonb只会有一种存在形式,因此按照制定的规则,可以比较大小。 - - - 首先比较类型:object-jsonb \> array-jsonb \> bool-jsonb \> num-jsonb \> str-jsonb \> null-jsonb - - 同类型则比较内容: - - - str-json类型:依据text比较的方法,使用数据库默认排序规则进行比较,返回值正数代表大于,负数代表小于,0表示相等。 - - num-json类型:数值比较。 - - bool-json类型:true \> false。 - - array-jsonb类型:长度长的 \> 长度短的,长度相等则依次比较每个元素。 - - object-jsonb类型:长度长的 \> 长度短的,长度相等则依次比较每个键值对,先比较键,在比较值。 - - >![](public_sys-resources/icon-caution.gif) **注意:** - > - >object-jsonb类型内比较时,比较时使用的是格式整理后的最终结果进行比较,因此相对于我们直接的输入未必会很直观。 - - -- 创建索引、主外键 - - BTREE索引 - - jsonb类型支持创建btree索引,支持创建主键、外键。 - - - GIN索引 - - GIN索引可以用来有效的搜索出现在大量jsonb文档(datums)中的键或者键/值对。提供了两个GIN操作符类(jsonb\_ops、jsonb\_hash\_ops),提供了不同的性能和灵活性取舍。缺省的GIN操作符类支持使用@\>、<@、?、 ?&和?|操作符查询,非缺省的GIN操作符类jsonb\_path\_ops只支持索引@\>、<@操作符。 - - 相关的操作符请参见[JSON/JSONB函数和操作符](JSON-JSONB函数和操作符.md)。 - - -- 包含存在 - - 查询一个JSON之中是否包含某些元素,或者某些元素是否存在于某个JSON中是jsonb的一个重要能力。 - - ``` - -- 简单的标量/原始值只包含相同的值:SELECT '"foo"'::jsonb @> '"foo"'::jsonb; - -- 左侧数组包含了右侧字符串:SELECT '[1, “aa”, 3]'::jsonb ? 'aa'; - -- 左侧数组包含了右侧的数组所有元素,顺序、重复不重要:SELECT '[1, 2, 3]'::jsonb @> '[1, 3, 1]'::jsonb; - -- 左侧object-json包含了右侧object-json的所有键值对:SELECT '{"product": "PostgreSQL", "version": 9.4, "jsonb":true}'::jsonb @> '{"version":9.4}'::jsonb; - -- 左侧数组并没有包含右侧的数组所有元素,因为左侧数组的三个元素为1、2、[1,3],右侧的为1、3:SELECT '[1, 2, [1, 3]]'::jsonb @> '[1, 3]'::jsonb; - -- 产生假-- 相似的,这样也不对:SELECT '{"foo": {"bar": "baz"}}'::jsonb @> '{"bar": "baz"}'::jsonb; -- false - ``` - - 相关的操作符请参见[JSON/JSONB函数和操作符](JSON-JSONB函数和操作符.md)。 - -- 函数和操作符 - - json/jsonb类型相关支持的函数和操作符请参见[JSON/JSONB函数和操作符](JSON-JSONB函数和操作符.md)。 - +# JSON/JSONB类型 + +JSON(JavaScript Object Notation)数据,可以是单独的一个标量,也可以是一个数组,也可以是一个键值对象,其中数组和对象可以统称容器(container): + +- 标量(scalar):单一的数字、bool、string、null都可以叫做标量。 +- 数组(array):\[\]结构,里面存放的元素可以是任意类型的 JSON ,并且不要求数组内所有元素都是同一类型。 +- 对象(object):\{\}结构,存储key:value的键值对,其键只能是用“”包裹起来的字符串,值可以是任意类型的 JSON ,对于重复的键,按最后一个键值对为准。 + +openGauss 内存在两种数据类型 JSON 和 JSONB ,可以用来存储 JSON 数据。其中 JSON 是对输入的字符串的完整拷贝,使用时再去解析,所以它会保留输入的空格、重复键以及顺序等;JSONB解析输入后保存的二进制,它在解析时会删除语义无关的细节和重复的键,对键值也会进行排序,使用时不用再次解析。 + +因此可以发现,两者其实都是 JSON ,它们接受相同的字符串作为输入。它们实际的主要差别是效率。 JSON 数据类型存储输入文本的精确拷贝,处理函数必须在每个执行上重新解析; 而 JSONB 数据以分解的二进制格式存储,这使得它由于添加了转换机制而在输入上稍微慢些,但是在处理上明显更快,因为不需要重新解析。同时由于 JSONB 类型存在解析后的格式归一化等操作,同等的语义下只会有一种格式,因此可以更好更强大的支持很多其他额外的操作,比如按照一定的规则进行大小比较等。 JSONB 也支持索引,这也是一个明显的优势。 + +## 输入格式 + +输入必须是一个符合 JSON 数据格式的字符串,此字符串用单引号''声明。 + +null(null-json):仅 null ,全小写。 + +``` +select 'null'::json; -- sucselect 'NULL'::jsonb; -- err +``` + +数字(num-json):正负整数、小数、0,支持科学计数法。 + +``` +select '1'::json;select '-1.5'::json;select '-1.5e-5'::jsonb, '-1.5e+2'::jsonb;select '001'::json, '+15'::json, 'NaN'::json; +-- 不支持多余的前导 0 ,正数的+号,以及 NaN 和 infinity 。 +``` + +布尔(bool-json):仅true、false,全小写。 + +``` +select 'true'::json;select 'false'::jsonb; +``` + +字符串(str-json):必须是加双引号的字符串。 + +``` +select '"a"'::json;select '"abc"'::jsonb; +``` + +数组(array-json):使用中括号\[\]包裹,满足数组书写条件。数组内元素类型可以是任意合法的 JSON ,且不要求类型一致。 + +``` +select '[1, 2 , "foo", null]'::json;select '[]'::json;select '[1, 2 , "foo", null , [[]], {}]'::jsonb; +``` + +对象(object-json):使用大括号\{\}包裹,键必须是满足 JSON 字符串规则的字符串,值可以是任意合法的 JSON 。 + +``` +select '{}'::json;select '{"a": 1, "b": {"a": 2, "b": null}}'::json;select '{"foo": [true, "bar"], "tags": {"a": 1, "b": null}}'::jsonb; +``` + +>![](public_sys-resources/icon-caution.gif) **注意:** +> +>- 区分 'null'::json 和 null::json 是两个不同的概念,类似于字符串 str="" 和 str=null。 +> +>- 对于数字,当使用科学计数法的时候, jsonb 类型会将其展开,而 json 会精准拷贝输入。 + +## JSONB高级特性 + +- 注意事项 + - 不支持列存。 + - 不支持作为分区键。 + - 不支持外表、mot。 + + +JSON 和 JSONB 的主要差异在于存储方式上的不同, JSONB 存储的是解析后的二进制,能够体现 JSON 的层次结构,更方便直接访问等,因此 JSONB 会有很多 JSON 所不具有的高级特性。 + +- 格式归一化 + + - 对于输入的object-json字符串,解析成 jsonb 二进制后,会天然的丢弃语义上无关紧要的细节,比如空格: + + ``` + postgres=# select ' [1, " a ", {"a" :1 }] '::jsonb; jsonb + ---------------------- + [1, " a ", {"a": 1}](1 row) + ``` + + - 对于object-json,会删除重复的键值,只保留最后一个出现的,如: + + ``` + postgres=# select '{"a" : 1, "a" : 2}'::jsonb; jsonb---------- {"a": 2}(1 row) + ``` + + - 对于object-json,键值会重新进行排序,排序规则:长度长的在后、长度相等则 ascii 码大的在后,如: + + ``` + postgres=# select '{"aa" : 1, "b" : 2, "a" : 3}'::jsonb; jsonb + --------------------------- + {"a": 3, "b": 2, "aa": 1}(1 row) + ``` + + +- 大小比较 + + 由于经过了格式归一化,保证了同一种语义下的 jsonb 只会有一种存在形式,因此按照制定的规则,可以比较大小。 + + - 首先比较类型:object-jsonb \> array-jsonb \> bool-jsonb \> num-jsonb \> str-jsonb \> null-jsonb + - 同类型则比较内容: + + - str-json类型:依据 text 比较的方法,使用数据库默认排序规则进行比较,返回值正数代表大于,负数代表小于, 0 表示相等。 + - num-json类型:数值比较。 + - bool-json类型:true \> false。 + - array-jsonb类型:长度长的 \> 长度短的,长度相等则依次比较每个元素。 + - object-jsonb类型:长度长的 \> 长度短的,长度相等则依次比较每个键值对,先比较键,在比较值。 + + >![](public_sys-resources/icon-caution.gif) **注意:** + > + >object-jsonb类型内比较时,比较时使用的是格式整理后的最终结果进行比较,因此相对于我们直接的输入未必会很直观。 + + +- 创建索引、主外键 + - BTREE索引 + +jsonb 类型支持创建 btree 索引,支持创建主键、外键。 + + - GIN索引 + +GIN 索引可以用来有效的搜索出现在大量 jsonb 文档(datums)中的键或者键/值对。提供了两个 GIN 操作符类(jsonb\_ops、jsonb\_hash\_ops),提供了不同的性能和灵活性取舍。缺省的 GIN 操作符类支持使用@\>、<@、?、 ?&和?|操作符查询,非缺省的 GIN 操作符类jsonb\_path\_ops只支持索引@\>、<@操作符。 + + 相关的操作符请参见[JSON/JSONB函数和操作符](JSON-JSONB函数和操作符.md)。 + + +- 包含存在 + + 查询一个 JSON 之中是否包含某些元素,或者某些元素是否存在于某个 JSON 中是 jsonb 的一个重要能力。 + + ``` + -- 简单的标量/原始值只包含相同的值:SELECT '"foo"'::jsonb @> '"foo"'::jsonb; + -- 左侧数组包含了右侧字符串:SELECT '[1, “aa”, 3]'::jsonb ? 'aa'; + -- 左侧数组包含了右侧的数组所有元素,顺序、重复不重要:SELECT '[1, 2 , 3]'::jsonb @> '[1, 3 , 1]'::jsonb; + -- 左侧object-json包含了右侧object-json的所有键值对:SELECT '{"product": "PostgreSQL", "version": 9.4, "jsonb":true}'::jsonb @> '{"version":9.4}'::jsonb; + -- 左侧数组并没有包含右侧的数组所有元素,因为左侧数组的三个元素为1、2、[1,3],右侧的为1、3:SELECT '[1, 2 , [1, 3]]'::jsonb @> '[1, 3]'::jsonb; + -- 产生假-- 相似的,这样也不对:SELECT '{"foo": {"bar": "baz"}}'::jsonb @> '{"bar": "baz"}'::jsonb; -- false + ``` + + 相关的操作符请参见[JSON/JSONB函数和操作符](JSON-JSONB函数和操作符.md)。 + +- 函数和操作符 + + json/jsonb类型相关支持的函数和操作符请参见[JSON/JSONB函数和操作符](JSON-JSONB函数和操作符.md)。 + diff --git "a/content/zh/docs/Developerguide/Join\346\226\271\345\274\217\347\232\204Hint.md" "b/content/zh/docs/Developerguide/Join\346\226\271\345\274\217\347\232\204Hint.md" index 769e8004e..3f260129f 100644 --- "a/content/zh/docs/Developerguide/Join\346\226\271\345\274\217\347\232\204Hint.md" +++ "b/content/zh/docs/Developerguide/Join\346\226\271\345\274\217\347\232\204Hint.md" @@ -1,35 +1,35 @@ -# Join方式的Hint - -## 功能描述 - -指明Join使用的方法,可以为Nested Loop、Hash Join和Merge Join。 - -## 语法格式 - -``` -[no] nestloop|hashjoin|mergejoin(table_list) -``` - -## 参数说明 - -- **no**表示hint的join方式不使用。 - -- **table\_list**为表示hint表集合的字符串,该字符串中的表与[join\_table\_list](Join顺序的Hint.md#zh-cn_topic_0237121533_section1280444714345)相同,只是中间不允许出现括号指定join的优先级。 - -例如: - -no nestloop\(t1 t2 t3\)表示:生成t1、t2、t3三表连接计划时,不使用nestloop。三表连接计划可能是t2 t3先join,再跟t1 join,或t1 t2先join,再跟t3 join。此hint只hint最后一次join的join方式,对于两表连接的方法不hint。如果需要,可以单独指定,例如:任意表均不允许nestloop连接,且希望t2 t3先join,则增加hint:no nestloop\(t2 t3\)。 - -## 示例 - -对[示例](Plan-Hint调优概述.md#zh-cn_topic_0237121532_section671421102912)中原语句使用如下hint: - -``` -explain -select /*+ nestloop(store_sales store_returns item) */ i_product_name product_name ... -``` - -该hint表示:生成store\_sales、store\_returns和item三表的结果集时,最后的两表关联使用nestloop。生成计划如下所示: - -![](figures/zh-cn_image_0253032870.png) - +# Join方式的Hint + +## 功能描述 + +指明 Join 使用的方法,可以为Nested Loop、Hash Join和 Merge Join 。 + +## 语法格式 + +``` +[no] nestloop|hashjoin|mergejoin(table_list) +``` + +## 参数说明 + +- **no**表示 hint 的 join 方式不使用。 + +- **table\_list**为表示 hint 表集合的字符串,该字符串中的表与[join\_table\_list](Join顺序的Hint.md#zh-cn_topic_0237121533_section1280444714345)相同,只是中间不允许出现括号指定 join 的优先级。 + +例如: + +no nestloop\(t1 t2 t3\)表示:生成t1、t2、t3三表连接计划时,不使用 nestloop 。三表连接计划可能是 t2 t3 先 join ,再跟 t1 join ,或 t1 t2 先 join ,再跟 t3 join 。此 hint 只 hint 最后一次 join 的 join 方式,对于两表连接的方法不 hint 。如果需要,可以单独指定,例如:任意表均不允许 nestloop 连接,且希望 t2 t3 先 join ,则增加hint:no nestloop\(t2 t3\)。 + +## 示例 + +对[示例](Plan-Hint调优概述.md#zh-cn_topic_0237121532_section671421102912)中原语句使用如下hint: + +``` +explain +select /*+ nestloop(store_sales store_returns item) */ i_product_name product_name ... +``` + +该 hint 表示:生成store\_sales、store\_returns和 item 三表的结果集时,最后的两表关联使用 nestloop 。生成计划如下所示: + +![](figures/zh-cn_image_0253032870.png) + diff --git "a/content/zh/docs/Developerguide/Join\351\241\272\345\272\217\347\232\204Hint.md" "b/content/zh/docs/Developerguide/Join\351\241\272\345\272\217\347\232\204Hint.md" index dcf946774..617bda9c2 100644 --- "a/content/zh/docs/Developerguide/Join\351\241\272\345\272\217\347\232\204Hint.md" +++ "b/content/zh/docs/Developerguide/Join\351\241\272\345\272\217\347\232\204Hint.md" @@ -1,62 +1,62 @@ -# Join顺序的Hint - -## 功能描述 - -指明join的顺序,包括内外表顺序。 - -## 语法格式 - -- 仅指定join顺序,不指定内外表顺序。 - -``` -leading(join_table_list) -``` - -- 同时指定join顺序和内外表顺序,内外表顺序仅在最外层生效。 - -``` -leading((join_table_list)) -``` - -## 参数说明 - -**join\_table\_list**为表示表join顺序的hint字符串,可以包含当前层的任意个表(别名),或对于子查询提升的场景,也可以包含子查询的hint别名,同时任意表可以使用括号指定优先级,表之间使用空格分隔。 - ->![](public_sys-resources/icon-notice.gif) **须知:** ->表只能用单个字符串表示,不能带schema。 ->表如果存在别名,需要优先使用别名来表示该表。 - -join table list中指定的表需要满足以下要求,否则会报语义错误。 - -- list中的表必须在当前层或提升的子查询中存在。 -- list中的表在当前层或提升的子查询中必须是唯一的。如果不唯一,需要使用不同的别名进行区分。 -- 同一个表只能在list里出现一次。 -- 如果表存在别名,则list中的表需要使用别名。 - -例如: - -leading\(t1 t2 t3 t4 t5\)表示:t1、t2、t3、t4、t5先join,五表join顺序及内外表不限。 - -leading\(\(t1 t2 t3 t4 t5\)\)表示:t1和t2先join,t2做内表;再和t3 join,t3做内表;再和t4 join,t4做内表;再和t5 join,t5做内表。 - -leading\(t1 \(t2 t3 t4\) t5\)表示:t2、t3、t4先join,内外表不限;再和t1、t5 join,内外表不限。 - -leading\(\(t1 \(t2 t3 t4\) t5\)\)表示:t2、t3、t4先join,内外表不限;在最外层,t1再和t2、t3、t4的join表join,t1为外表,再和t5 join,t5为内表。 - -leading\(\(t1 \(t2 t3\) t4 t5\)\) leading\(\(t3 t2\)\)表示:t2、t3先join,t2做内表;然后再和t1 join,t2、t3的join表做内表;然后再依次跟t4、t5做join,t4、t5做内表。 - -## 示例 - -对[示例](Plan-Hint调优概述.md#zh-cn_topic_0237121532_section671421102912)中原语句使用如下hint: - -``` -explain -select /*+ leading((((((store_sales store) promotion) item) customer) ad2) store_returns) leading((store store_sales))*/ i_product_name product_name ... -``` - -该hint表示:表之间的join关系是:store\_sales和store先join,store\_sales做内表,然后依次跟promotion, item, customer, ad2, store\_returns做join。生成计划如下所示: - -![](figures/zh-cn_image_0253030479.png) - -图中计划顶端warning的提示详见[Hint的错误、冲突及告警](Hint的错误-冲突及告警.md)的说明。 - +# Join顺序的Hint + +## 功能描述 + +指明 join 的顺序,包括内外表顺序。 + +## 语法格式 + +- 仅指定 join 顺序,不指定内外表顺序。 + +``` +leading(join_table_list) +``` + +- 同时指定 join 顺序和内外表顺序,内外表顺序仅在最外层生效。 + +``` +leading((join_table_list)) +``` + +## 参数说明 + +**join\_table\_list**为表示表 join 顺序的 hint 字符串,可以包含当前层的任意个表(别名),或对于子查询提升的场景,也可以包含子查询的 hint 别名,同时任意表可以使用括号指定优先级,表之间使用空格分隔。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>表只能用单个字符串表示,不能带 schema 。 +>表如果存在别名,需要优先使用别名来表示该表。 + +join table list 中指定的表需要满足以下要求,否则会报语义错误。 + +- list中的表必须在当前层或提升的子查询中存在。 +- list中的表在当前层或提升的子查询中必须是唯一的。如果不唯一,需要使用不同的别名进行区分。 +- 同一个表只能在 list 里出现一次。 +- 如果表存在别名,则 list 中的表需要使用别名。 + +例如: + +leading\(t1 t2 t3 t4 t5\)表示:t1、t2、t3、t4、t5先 join ,五表 join 顺序及内外表不限。 + +leading\(\(t1 t2 t3 t4 t5\)\)表示:t1和 t2 先 join , t2 做内表;再和 t3 join , t3 做内表;再和 t4 join , t4 做内表;再和 t5 join , t5 做内表。 + +leading\(t1 \(t2 t3 t4\) t5\)表示:t2、t3、t4先 join ,内外表不限;再和t1、t5 join,内外表不限。 + +leading\(\(t1 \(t2 t3 t4\) t5\)\)表示:t2、t3、t4先 join ,内外表不限;在最外层, t1 再和t2、t3、t4的 join 表 join , t1 为外表,再和 t5 join , t5 为内表。 + +leading\(\(t1 \(t2 t3\) t4 t5\)\) leading\(\(t3 t2\)\)表示:t2、t3先 join , t2 做内表;然后再和 t1 join ,t2、t3的 join 表做内表;然后再依次跟t4、t5做 join ,t4、t5做内表。 + +## 示例 + +对[示例](Plan-Hint调优概述.md#zh-cn_topic_0237121532_section671421102912)中原语句使用如下hint: + +``` +explain +select /*+ leading((((((store_sales store) promotion) item) customer) ad2) store_returns) leading((store store_sales))*/ i_product_name product_name ... +``` + +该 hint 表示:表之间的 join 关系是:store\_sales和 store 先 join ,store\_sales做内表,然后依次跟 promotion , item , customer , ad2 , store\_returns做 join 。生成计划如下所示: + +![](figures/zh-cn_image_0253030479.png) + +图中计划顶端 warning 的提示详见[Hint的错误、冲突及告警](Hint的错误-冲突及告警.md)的说明。 + diff --git "a/content/zh/docs/Developerguide/LLVM\344\275\277\347\224\250\345\273\272\350\256\256.md" "b/content/zh/docs/Developerguide/LLVM\344\275\277\347\224\250\345\273\272\350\256\256.md" index d3c53f7de..9a9355821 100644 --- "a/content/zh/docs/Developerguide/LLVM\344\275\277\347\224\250\345\273\272\350\256\256.md" +++ "b/content/zh/docs/Developerguide/LLVM\344\275\277\347\224\250\345\273\272\350\256\256.md" @@ -1,11 +1,11 @@ -# LLVM使用建议 - -目前LLVM在数据库内核侧已默认打开,用户可结合上述的分析进行配置,总体建议如下: - -1. 设置合理的work\_mem,在允许的条件下尽可能设置较大的work\_mem,如果出现大量数据落盘,则建议关闭LLVM动态编译优化(通过设置enable\_codegen=off实现)。 -2. 设置合理的codegen\_cost\_threshold(默认值为10000),确保小数据量场景下避免使用LLVM动态编译优化。当codegen\_cost\_threshold的值设定后,因使用LLVM动态编译优化引入性能劣化,则建议增加codegen\_cost\_threshold的取值。 -3. 对于表达式计算使用LLVM动态编译优化,如果存在大量的调用C-函数的场景,建议关闭LLVM动态编译优化。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >在资源许可的情况下,数据量越大,可获得的性能提升效果越好。 - +# LLVM使用建议 + +目前 LLVM 在数据库内核侧已默认打开,用户可结合上述的分析进行配置,总体建议如下: + +1. 设置合理的work\_mem,在允许的条件下尽可能设置较大的work\_mem,如果出现大量数据落盘,则建议关闭 LLVM 动态编译优化(通过设置enable\_codegen=off实现)。 +2. 设置合理的codegen\_cost\_threshold(默认值为10000),确保小数据量场景下避免使用 LLVM 动态编译优化。当codegen\_cost\_threshold的值设定后,因使用 LLVM 动态编译优化引入性能劣化,则建议增加codegen\_cost\_threshold的取值。 +3. 对于表达式计算使用 LLVM 动态编译优化,如果存在大量的调用C-函数的场景,建议关闭 LLVM 动态编译优化。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >在资源许可的情况下,数据量越大,可获得的性能提升效果越好。 + diff --git "a/content/zh/docs/Developerguide/LLVM\351\200\202\347\224\250\345\234\272\346\231\257\344\270\216\351\231\220\345\210\266.md" "b/content/zh/docs/Developerguide/LLVM\351\200\202\347\224\250\345\234\272\346\231\257\344\270\216\351\231\220\345\210\266.md" index d0f816486..293c7c411 100644 --- "a/content/zh/docs/Developerguide/LLVM\351\200\202\347\224\250\345\234\272\346\231\257\344\270\216\351\231\220\345\210\266.md" +++ "b/content/zh/docs/Developerguide/LLVM\351\200\202\347\224\250\345\234\272\346\231\257\344\270\216\351\231\220\345\210\266.md" @@ -1,35 +1,35 @@ -# LLVM适用场景与限制 - -## 适用场景 - -- 支持LLVM的表达式 - - 查询语句中存在以下的表达式支持LLVM优化: - - 1. Case…when… 表达式 - 2. In表达式 - 3. Bool表达式(And/Or/Not) - 4. BooleanTest表达式(IS\_NOT\_KNOWN/IS\_UNKNOWN/IS\_TRUE/IS\_NOT\_TRUE/IS\_FALSE/IS\_NOT\_FALSE) - 5. NullTest表达式(IS\_NOT\_NULL/IS\_NULL) - 6. Operator表达式 - 7. Function表达式(lpad、substring、btrim、rtrim、length) - 8. Nullif表达式 - - 表达式计算支持的数据类型包括bool、tinyint、smallint、int、bigint、float4、float8、numeric、date、time、timetz、timestamp、timestamptz、interval、bpchar、varchar、text、oid。 - - 仅当表达式出现在向量化执行引擎中Scan节点的filter,Hash Join节点中的complicate hash condition、hash join filter、hash join target,Nested Loop节点中的filter、join filter,Merge Join节点的merge join filter、merge join target,Group节点中的filter表达式时,才会考虑是否使用LLVM动态编译优化。 - -- 支持LLVM的算子: - - 1. Join:HashJoin - 2. Agg:HashAgg - 3. Sort - - 其中HashJoin算子仅支持Hash Inner Join,对应的hash cond仅支持int4、bigint、bpchar类型的比较;HashAgg算子仅支持针对bigint、numeric类型的sum及avg操作,且group by语句仅支持int4、bigint、bpchar、text、varchar、timestamp类型操作,同时支持count\(\*\)聚集操作。Sort算子仅支持对int4、bigint、numeric、bpchar、text、varchar数据类型的比较操作。除此之外,无法使用LLVM动态编译优化,具体可通过explain performance工具进行显示。 - - -## 非适用场景 - -- 不支持小数据量表使用LLVM动态编译优化。 -- 不支持生成非向量化执行路径的查询作业。 - +# LLVM适用场景与限制 + +## 适用场景 + +- 支持 LLVM 的表达式 + + 查询语句中存在以下的表达式支持 LLVM 优化: + + 1. Case…when… 表达式 + 2. In表达式 + 3. Bool表达式(And/Or/Not) + 4. BooleanTest表达式(IS\_NOT\_KNOWN/IS\_UNKNOWN/IS\_TRUE/IS\_NOT\_TRUE/IS\_FALSE/IS\_NOT\_FALSE) + 5. NullTest表达式(IS\_NOT\_NULL/IS\_NULL) + 6. Operator表达式 + 7. Function表达式(lpad、substring、btrim、rtrim、length) + 8. Nullif表达式 + + 表达式计算支持的数据类型包括bool、tinyint、smallint、int、bigint、float4、float8、numeric、date、time、timetz、timestamp、timestamptz、interval、bpchar、varchar、text、oid。 + + 仅当表达式出现在向量化执行引擎中 Scan 节点的 filter , Hash Join 节点中的complicate hash condition、hash join filter、hash join target, Nested Loop 节点中的filter、join filter, Merge Join 节点的merge join filter、merge join target, Group 节点中的 filter 表达式时,才会考虑是否使用 LLVM 动态编译优化。 + +- 支持 LLVM 的算子: + + 1. Join:HashJoin + 2. Agg:HashAgg + 3. Sort + + 其中 HashJoin 算子仅支持 Hash Inner Join ,对应的 hash cond 仅支持int4、bigint、bpchar类型的比较;HashAgg算子仅支持针对bigint、numeric类型的 sum 及 avg 操作,且 group by 语句仅支持int4、bigint、bpchar、text、varchar、timestamp类型操作,同时支持count\(\*\)聚集操作。 Sort 算子仅支持对int4、bigint、numeric、bpchar、text、varchar数据类型的比较操作。除此之外,无法使用 LLVM 动态编译优化,具体可通过 explain performance 工具进行显示。 + + +## 非适用场景 + +- 不支持小数据量表使用 LLVM 动态编译优化。 +- 不支持生成非向量化执行路径的查询作业。 + diff --git a/content/zh/docs/Developerguide/LOCAL_ACTIVE_SESSION.md b/content/zh/docs/Developerguide/LOCAL_ACTIVE_SESSION.md index a5b0c0129..f1a90545b 100644 --- a/content/zh/docs/Developerguide/LOCAL_ACTIVE_SESSION.md +++ b/content/zh/docs/Developerguide/LOCAL_ACTIVE_SESSION.md @@ -1,214 +1,214 @@ -# LOCAL\_ACTIVE\_SESSION - -LOCAL\_ACTIVE\_SESSION视图显示本节点上的ACTIVE SESSION PROFILE内存中的样本。 - -**表 1** LOCAL\_ACTIVE\_SESSION字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sampleid

-

bigint

-

采样ID。

-

sample_time

-

timestamp with time zone

-

采样的时间。

-

need_flush_sample

-

boolean

-

该样本是否需要刷新的磁盘。

-

databaseid

-

oid

-

数据库ID。

-

thread_id

-

bigint

-

线程的ID。

-

sessionid

-

bigint

-

会话的ID。

-

start_time

-

timestamp with time zone

-

会话的启动时间。

-

event

-

text

-

具体的事件名称。

-

lwtid

-

integer

-

当前线程的轻量级线程号。

-

psessionid

-

bigint

-

streaming线程的父线程。

-

tlevel

-

integer

-

streaming线程的层级。与执行计划的层级(ID)相对应。

-

smpid

-

integer

-

smp执行模式下并行线程的并行编号。

-

userid

-

oid

-

session用户的ID。

-

application_name

-

text

-

应用的名称。

-

client_addr

-

inet

-

client端的地址。

-

client_hostname

-

text

-

client端的名称。

-

client_port

-

integer

-

客户端用于与后端通讯的TCP端口号。

-

query_id

-

bigint

-

debug query id。

-

unique_query_id

-

bigint

-

unique query id。

-

user_id

-

oid

-

unique query的key中的user_id。

-

cn_id

-

integer

-

cn id,在DN上表示下发该unique sql的节点id,unique query的key中的cn_id。

-

unique_query

-

text

-

规范化后的UniqueSQL文本串。

-

locktag

-

text

-

会话等待锁信息,可通过locktag_decode解析。

-

lockmode

-

text

-

会话等待锁模式。

-

block_sessionid

-

bigint

-

如果会话正在等待锁,阻塞该会话获取锁的会话标识。

-

final_block_sessionid

-

bigint

-

表示源头阻塞会话ID。

-

wait_status

-

text

-

描述event列的更多详细信息。

-

global_sessionid

-

text

-

全局会话ID。

-
- +# LOCAL\_ACTIVE\_SESSION + +LOCAL\_ACTIVE\_SESSION视图显示本节点上的 ACTIVE SESSION PROFILE 内存中的样本。 + +**表 1** LOCAL\_ACTIVE\_SESSION字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sampleid

+

bigint

+

采样 ID 。

+

sample_time

+

timestamp with time zone

+

采样的时间。

+

need_flush_sample

+

boolean

+

该样本是否需要刷新的磁盘。

+

databaseid

+

oid

+

数据库 ID 。

+

thread_id

+

bigint

+

线程的 ID 。

+

sessionid

+

bigint

+

会话的 ID 。

+

start_time

+

timestamp with time zone

+

会话的启动时间。

+

event

+

text

+

具体的事件名称。

+

lwtid

+

integer

+

当前线程的轻量级线程号。

+

psessionid

+

bigint

+

streaming线程的父线程。

+

tlevel

+

integer

+

streaming线程的层级。与执行计划的层级(ID)相对应。

+

smpid

+

integer

+

smp执行模式下并行线程的并行编号。

+

userid

+

oid

+

session用户的 ID 。

+

application_name

+

text

+

应用的名称。

+

client_addr

+

inet

+

client端的地址。

+

client_hostname

+

text

+

client端的名称。

+

client_port

+

integer

+

客户端用于与后端通讯的 TCP 端口号。

+

query_id

+

bigint

+

debug query id。

+

unique_query_id

+

bigint

+

unique query id。

+

user_id

+

oid

+

unique query的 key 中的 user_id 。

+

cn_id

+

integer

+

cn id,在 DN 上表示下发该 unique sql 的节点 id , unique query 的 key 中的 cn_id 。

+

unique_query

+

text

+

规范化后的 UniqueSQL 文本串。

+

locktag

+

text

+

会话等待锁信息,可通过 locktag_decode 解析。

+

lockmode

+

text

+

会话等待锁模式。

+

block_sessionid

+

bigint

+

如果会话正在等待锁,阻塞该会话获取锁的会话标识。

+

final_block_sessionid

+

bigint

+

表示源头阻塞会话 ID 。

+

wait_status

+

text

+

描述 event 列的更多详细信息。

+

global_sessionid

+

text

+

全局会话 ID 。

+
+ diff --git a/content/zh/docs/Developerguide/LOCAL_REL_IOSTAT.md b/content/zh/docs/Developerguide/LOCAL_REL_IOSTAT.md index 2b5d560e9..33d377cb3 100644 --- a/content/zh/docs/Developerguide/LOCAL_REL_IOSTAT.md +++ b/content/zh/docs/Developerguide/LOCAL_REL_IOSTAT.md @@ -1,46 +1,46 @@ -# LOCAL\_REL\_IOSTAT - -获取当前节点中数据文件IO状态的累计值,显示为所有数据文件IO状态的总和。 - -**表 1** LOCAL\_REL\_IOSTAT字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

phyrds

-

bigint

-

读物理文件的数目。

-

phywrts

-

bigint

-

写物理文件的数目。

-

phyblkrd

-

bigint

-

读物理文件的块的数目。

-

phyblkwrt

-

bigint

-

写物理文件的块的数目。

-
- +# LOCAL\_REL\_IOSTAT + +获取当前节点中数据文件 IO 状态的累计值,显示为所有数据文件 IO 状态的总和。 + +**表 1** LOCAL\_REL\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

phyrds

+

bigint

+

读物理文件的数目。

+

phywrts

+

bigint

+

写物理文件的数目。

+

phyblkrd

+

bigint

+

读物理文件的块的数目。

+

phyblkwrt

+

bigint

+

写物理文件的块的数目。

+
+ diff --git a/content/zh/docs/Developerguide/LOCAL_THREADPOOL_STATUS.md b/content/zh/docs/Developerguide/LOCAL_THREADPOOL_STATUS.md index 95b7baf0b..0a1be6df5 100644 --- a/content/zh/docs/Developerguide/LOCAL_THREADPOOL_STATUS.md +++ b/content/zh/docs/Developerguide/LOCAL_THREADPOOL_STATUS.md @@ -1,69 +1,69 @@ -# LOCAL\_THREADPOOL\_STATUS - -LOCAL\_THREADPOOL\_STATUS视图显示线程池下工作线程及会话的状态信息。该视图仅在线程池开启(enable\_thread\_pool = on)时生效。 - -**表 1** LOCAL\_THREADPOOL\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

数据库进程名称。

-

group_id

-

integer

-

线程池组ID。

-

bind_numa_id

-

integer

-

该线程池组绑定的NUMA ID。

-

bind_cpu_number

-

integer

-

该线程池组绑定的CPU信息。如果未绑定CPU,该值为NULL。

-

listener

-

integer

-

该线程池组的Listener线程数量。

-

worker_info

-

text

-

线程池中线程相关信息,包括以下信息:

-
  • default:该线程池组中的初始线程数量。
  • new:该线程池组中新增线程的数量。
  • expect:该线程池组中预期线程的数量。
  • actual:该线程池组中实际线程的数量。
  • idle:该线程池组中空闲线程的数量。
  • pending:该线程池组中等待线程的数量。
-

session_info

-

text

-

线程池中会话相关信息,包括以下信息:

-
  • total:该线程池组中所有的会话数量。
  • waiting:该线程池组中等待调度的会话数量。
  • running:该线程池中正在执行的会话数量。
  • idle:该线程池组中空闲的会话数量。
-
- +# LOCAL\_THREADPOOL\_STATUS + +LOCAL\_THREADPOOL\_STATUS视图显示线程池下工作线程及会话的状态信息。该视图仅在线程池开启(enable\_thread\_pool = on)时生效。 + +**表 1** LOCAL\_THREADPOOL\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

group_id

+

integer

+

线程池组 ID 。

+

bind_numa_id

+

integer

+

该线程池组绑定的 NUMA ID 。

+

bind_cpu_number

+

integer

+

该线程池组绑定的 CPU 信息。如果未绑定 CPU ,该值为 NULL 。

+

listener

+

integer

+

该线程池组的 Listener 线程数量。

+

worker_info

+

text

+

线程池中线程相关信息,包括以下信息:

+
  • default:该线程池组中的初始线程数量。
  • new:该线程池组中新增线程的数量。
  • expect:该线程池组中预期线程的数量。
  • actual:该线程池组中实际线程的数量。
  • idle:该线程池组中空闲线程的数量。
  • pending:该线程池组中等待线程的数量。
+

session_info

+

text

+

线程池中会话相关信息,包括以下信息:

+
  • total:该线程池组中所有的会话数量。
  • waiting:该线程池组中等待调度的会话数量。
  • running:该线程池中正在执行的会话数量。
  • idle:该线程池组中空闲的会话数量。
+
+ diff --git a/content/zh/docs/Developerguide/LOCK-1.md b/content/zh/docs/Developerguide/LOCK-1.md index f4efd8ce1..507cb7eec 100644 --- a/content/zh/docs/Developerguide/LOCK-1.md +++ b/content/zh/docs/Developerguide/LOCK-1.md @@ -2,18 +2,18 @@ ## 功能描述 -LOCK TABLE获取表级锁。 +LOCK TABLE 获取表级锁。 -openGauss在为一个引用了表的命令自动请求锁时,尽可能选择最小限制的锁模式。如果用户需要一种更为严格的锁模式,可以使用LOCK命令。例如,一个应用是在Read Committed隔离级别上运行事务,并且它需要保证表中的数据在事务的运行过程中不被修改。为实现这个目的,则可以在查询之前对表使用SHARE锁模式进行锁定。这样将防止数据不被并发修改,从而保证后续的查询可以读到已提交的持久化的数据。因为SHARE锁模式与任何写操作需要的ROW EXCLUSIVE模式冲突,并且LOCK TABLE name IN SHARE MODE语句将等到所有当前持有ROW EXCLUSIVE模式锁的事务提交或回滚后才能执行。因此,一旦获得该锁,就不会存在未提交的写操作,并且其他操作也只能等到该锁释放之后才能开始。 +openGauss 在为一个引用了表的命令自动请求锁时,尽可能选择最小限制的锁模式。如果用户需要一种更为严格的锁模式,可以使用 LOCK 命令。例如,一个应用是在 Read Committed 隔离级别上运行事务,并且它需要保证表中的数据在事务的运行过程中不被修改。为实现这个目的,则可以在查询之前对表使用 SHARE 锁模式进行锁定。这样将防止数据不被并发修改,从而保证后续的查询可以读到已提交的持久化的数据。因为 SHARE 锁模式与任何写操作需要的 ROW EXCLUSIVE 模式冲突,并且 LOCK TABLE name IN SHARE MODE 语句将等到所有当前持有 ROW EXCLUSIVE 模式锁的事务提交或回滚后才能执行。因此,一旦获得该锁,就不会存在未提交的写操作,并且其他操作也只能等到该锁释放之后才能开始。 ## 注意事项 -- LOCK TABLE只能在一个事务块的内部有用,因为锁在事务结束时就会被释放。出现在任意事务块外面的LOCK TABLE都会报错。 -- 如果没有声明锁模式,缺省为最严格的模式ACCESS EXCLUSIVE。 -- LOCK TABLE ... IN ACCESS SHARE MODE需要在目标表上有SELECT权限。所有其他形式的LOCK需要UPDATE和/或DELETE权限。 -- 没有UNLOCK TABLE命令,锁总是在事务结束时释放。 -- LOCK TABLE只处理表级的锁,因此那些带“ROW”字样的锁模式都是有歧义的。这些模式名称通常可理解为用户试图在一个被锁定的表中获取行级的锁。同样,ROW EXCLUSIVE模式也是一个可共享的表级锁。注意,只要是涉及到LOCK TABLE ,所有锁模式都有相同的语意,区别仅在于规则中锁与锁之间是否冲突,规则请参见[表1](#zh-cn_topic_0237122168_zh-cn_topic_0059778442_ta3d4fbc3c92c4f2994f7a9f5583a6ba5)。 -- 如果没有打开xc\_maintenance\_mode参数,那么对系统表申请ACCESS EXCLUSIVE级别锁将报错。 +- LOCK TABLE只能在一个事务块的内部有用,因为锁在事务结束时就会被释放。出现在任意事务块外面的 LOCK TABLE 都会报错。 +- 如果没有声明锁模式,缺省为最严格的模式 ACCESS EXCLUSIVE 。 +- LOCK TABLE ... IN ACCESS SHARE MODE需要在目标表上有 SELECT 权限。所有其他形式的 LOCK 需要 UPDATE 和/或 DELETE 权限。 +- 没有 UNLOCK TABLE 命令,锁总是在事务结束时释放。 +- LOCK TABLE只处理表级的锁,因此那些带“ROW”字样的锁模式都是有歧义的。这些模式名称通常可理解为用户试图在一个被锁定的表中获取行级的锁。同样, ROW EXCLUSIVE 模式也是一个可共享的表级锁。注意,只要是涉及到 LOCK TABLE ,所有锁模式都有相同的语意,区别仅在于规则中锁与锁之间是否冲突,规则请参见[表1](#zh-cn_topic_0237122168_zh-cn_topic_0059778442_ta3d4fbc3c92c4f2994f7a9f5583a6ba5)。 +- 如果没有打开xc\_maintenance\_mode参数,那么对系统表申请 ACCESS EXCLUSIVE 级别锁将报错。 ## 语法格式 @@ -203,73 +203,73 @@ LOCK [ TABLE ] {[ ONLY ] name [, ...]| {name [ * ]} [, ...]} -LOCK的参数说明如下所示: +LOCK 的参数说明如下所示: - **name** 要锁定的表的名称,可以有模式修饰。 - LOCK TABLE命令中声明的表的顺序就是上锁的顺序。 +LOCK TABLE 命令中声明的表的顺序就是上锁的顺序。 取值范围:已存在的表名。 - **ONLY** - 如果指定ONLY,只有该表被锁定。如果没有声明,该表和他的所有子表将都被锁定。 + 如果指定 ONLY ,只有该表被锁定。如果没有声明,该表和他的所有子表将都被锁定。 - **ACCESS SHARE** - ACCESS锁只允许对表进行读取,而禁止对表进行修改。所有对表进行读取而不修改的SQL语句都会自动请求这种锁。例如,SELECT命令会自动在被引用的表上请求一个这种锁。 +ACCESS 锁只允许对表进行读取,而禁止对表进行修改。所有对表进行读取而不修改的 SQL 语句都会自动请求这种锁。例如, SELECT 命令会自动在被引用的表上请求一个这种锁。 - **ROW SHARE** - 与EXCLUSIVE和ACCESS EXCLUSIVE锁模式冲突。 + 与 EXCLUSIVE 和 ACCESS EXCLUSIVE 锁模式冲突。 - SELECT FOR UPDATE和SELECT FOR SHARE命令会自动在目标表上请求ROW SHARE锁(且所有被引用但不是FOR SHARE/FOR UPDATE的其他表上,还会自动加上ACCESS SHARE锁)。 +SELECT FOR UPDATE 和 SELECT FOR SHARE 命令会自动在目标表上请求 ROW SHARE 锁(且所有被引用但不是FOR SHARE/FOR UPDATE的其他表上,还会自动加上 ACCESS SHARE 锁)。 - **ROW EXCLUSIVE** - 与ROW SHARE锁相同,ROW EXCLUSIVE允许并发读取表,但是禁止修改表中数据。UPDATE,DELETE,INSERT命令会自动在目标表上请求这个锁(且所有被引用的其他表上还会自动加上的ACCESS SHARE锁)。通常情况下,所有会修改表数据的命令都会请求表的ROW EXCLUSIVE锁。 + 与 ROW SHARE 锁相同, ROW EXCLUSIVE 允许并发读取表,但是禁止修改表中数据。 UPDATE , DELETE , INSERT 命令会自动在目标表上请求这个锁(且所有被引用的其他表上还会自动加上的 ACCESS SHARE 锁)。通常情况下,所有会修改表数据的命令都会请求表的 ROW EXCLUSIVE 锁。 - **SHARE UPDATE EXCLUSIVE** 这个模式保护一个表的模式不被并发修改,以及禁止在目标表上执行垃圾回收命令(VACUUM )。 - VACUUM(不带FULL选项),ANALYZE,CREATE INDEX CONCURRENTLY命令会自动请求这样的锁。 + VACUUM(不带 FULL 选项), ANALYZE , CREATE INDEX CONCURRENTLY 命令会自动请求这样的锁。 - **SHARE** - SHARE锁允许并发的查询,但是禁止对表进行修改。 +SHARE 锁允许并发的查询,但是禁止对表进行修改。 - CREATE INDEX(不带CONCURRENTLY选项)语句会自动请求这种锁。 + CREATE INDEX(不带 CONCURRENTLY 选项)语句会自动请求这种锁。 - **SHARE ROW EXCLUSIVE** - SHARE ROW EXCLUSIVE锁禁止对表进行任何的并发修改,而且是独占锁,因此一个会话中只能获取一次。 +SHARE ROW EXCLUSIVE 锁禁止对表进行任何的并发修改,而且是独占锁,因此一个会话中只能获取一次。 - 任何SQL语句都不会自动请求这个锁模式。 + 任何 SQL 语句都不会自动请求这个锁模式。 - **EXCLUSIVE** - EXCLUSIVE锁允许对目标表进行并发查询,但是禁止任何其他操作。 +EXCLUSIVE 锁允许对目标表进行并发查询,但是禁止任何其他操作。 - 这个模式只允许并发加ACCESS SHARE锁,也就是说,只有对表的读动作可以和持有这个锁模式的事务并发执行。 + 这个模式只允许并发加 ACCESS SHARE 锁,也就是说,只有对表的读动作可以和持有这个锁模式的事务并发执行。 - 任何SQL语句都不会在用户表上自动请求这个锁模式。然而在某些操作的时候,会在某些系统表上请求它。 + 任何 SQL 语句都不会在用户表上自动请求这个锁模式。然而在某些操作的时候,会在某些系统表上请求它。 - **ACCESS EXCLUSIVE** 这个模式保证其所有者(事务)是可以访问该表的唯一事务。 - ALTER TABLE,DROP TABLE,TRUNCATE,REINDEX命令会自动请求这种锁。 + ALTER TABLE , DROP TABLE , TRUNCATE , REINDEX 命令会自动请求这种锁。 - 在LOCK TABLE命令没有明确声明需要的锁模式时,它是缺省锁模式。 + 在 LOCK TABLE 命令没有明确声明需要的锁模式时,它是缺省锁模式。 - **NOWAIT** - 声明LOCK TABLE不去等待任何冲突的锁释放,如果无法立即获取该锁,该命令退出并且发出一个错误信息。 + 声明 LOCK TABLE 不去等待任何冲突的锁释放,如果无法立即获取该锁,该命令退出并且发出一个错误信息。 - 在不指定NOWAIT的情况下获取表级锁时,如果有其他互斥锁存在的话,则等待其他锁的释放。 + 在不指定 NOWAIT 的情况下获取表级锁时,如果有其他互斥锁存在的话,则等待其他锁的释放。 ## 示例 diff --git a/content/zh/docs/Developerguide/LOCK.md b/content/zh/docs/Developerguide/LOCK.md index 4747abfbc..a1e0749a6 100644 --- a/content/zh/docs/Developerguide/LOCK.md +++ b/content/zh/docs/Developerguide/LOCK.md @@ -1,7 +1,7 @@ -# Lock - -- **[LOCKS](LOCKS.md)** - -- **[GLOBAL\_LOCKS](GLOBAL_LOCKS.md)** - - +# Lock + +- **[LOCKS](LOCKS.md)** + +- **[GLOBAL\_LOCKS](GLOBAL_LOCKS.md)** + + diff --git a/content/zh/docs/Developerguide/LOCKS.md b/content/zh/docs/Developerguide/LOCKS.md index 239bc07f2..ff908b31d 100644 --- a/content/zh/docs/Developerguide/LOCKS.md +++ b/content/zh/docs/Developerguide/LOCKS.md @@ -1,152 +1,152 @@ -# LOCKS - -LOCKS视图用于查看各打开事务所持有的锁信息。 - -**表 1** LOCKS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

locktype

-

text

-

被锁定对象的类型:relation、extend、page、tuple、transactionid、virtualxid、object、userlock、advisory。

-

database

-

oid

-
被锁定对象所在数据库的OID:
  • 如果被锁定的对象是共享对象,则OID为0。
  • 如果是一个事务ID,则为NULL。
-
-

relation

-

oid

-

关系的OID,如果锁定的对象不是关系,也不是关系的一部分,则为NULL。

-

page

-

integer

-

关系内部的页面编号,如果对象不是关系页或者不是行页,则为NULL。

-

tuple

-

smallint

-

页面里边的行编号,如果对象不是行,则为NULL。

-

bucket

-

integer

-

哈希桶号。

-

virtualxid

-

text

-

事务的虚拟ID,如果对象不是一个虚拟事务ID,则为NULL。

-

transactionid

-

xid

-

事务的ID,如果对象不是一个事务ID,则为NULL。

-

classid

-

oid

-

包含该对象的系统表的OID,如果对象不是普通的数据库对象,则为NULL。

-

objid

-

oid

-

对象在其系统表内的OID,如果对象不是普通数据库对象,则为NULL。

-

objsubid

-

smallint

-

对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是0;如果这个对象不是普通数据库对象,则为NULL。

-

virtualtransaction

-

text

-

持有此锁或者在等待此锁的事务的虚拟ID。

-

pid

-

bigint

-

持有或者等待这个锁的服务器线程的逻辑ID。如果锁是被一个预备事务持有的,则为NULL。

-

sessionid

-

bigint

-

持有或者等待这个锁的会话ID。如果锁是被一个预备事务持有的,则为NULL。

-

mode

-

text

-

这个线程持有的或者是期望的锁模式。

-

granted

-

boolean

-
  • 如果锁是持有锁,则为TRUE。
  • 如果锁是等待锁,则为FALSE。
-

fastpath

-

boolean

-

如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。

-

locktag

-

text

-

会话等待锁信息,可通过locktag_decode()函数解析。

-

global_sessionid

-

text

-

全局会话ID。

-
- +# LOCKS + +LOCKS 视图用于查看各打开事务所持有的锁信息。 + +**表 1** LOCKS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

locktype

+

text

+

被锁定对象的类型:relation、extend、page、tuple、transactionid、virtualxid、object、userlock、advisory。

+

database

+

oid

+
被锁定对象所在数据库的OID:
  • 如果被锁定的对象是共享对象,则 OID 为 0 。
  • 如果是一个事务 ID ,则为 NULL 。
+
+

relation

+

oid

+

关系的 OID ,如果锁定的对象不是关系,也不是关系的一部分,则为 NULL 。

+

page

+

integer

+

关系内部的页面编号,如果对象不是关系页或者不是行页,则为 NULL 。

+

tuple

+

smallint

+

页面里边的行编号,如果对象不是行,则为 NULL 。

+

bucket

+

integer

+

哈希桶号。

+

virtualxid

+

text

+

事务的虚拟 ID ,如果对象不是一个虚拟事务 ID ,则为 NULL 。

+

transactionid

+

xid

+

事务的 ID ,如果对象不是一个事务 ID ,则为 NULL 。

+

classid

+

oid

+

包含该对象的系统表的 OID ,如果对象不是普通的数据库对象,则为 NULL 。

+

objid

+

oid

+

对象在其系统表内的 OID ,如果对象不是普通数据库对象,则为 NULL 。

+

objsubid

+

smallint

+

对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是0;如果这个对象不是普通数据库对象,则为 NULL 。

+

virtualtransaction

+

text

+

持有此锁或者在等待此锁的事务的虚拟 ID 。

+

pid

+

bigint

+

持有或者等待这个锁的服务器线程的逻辑 ID 。如果锁是被一个预备事务持有的,则为 NULL 。

+

sessionid

+

bigint

+

持有或者等待这个锁的会话 ID 。如果锁是被一个预备事务持有的,则为 NULL 。

+

mode

+

text

+

这个线程持有的或者是期望的锁模式。

+

granted

+

boolean

+
  • 如果锁是持有锁,则为 TRUE 。
  • 如果锁是等待锁,则为 FALSE 。
+

fastpath

+

boolean

+

如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为 FALSE 。

+

locktag

+

text

+

会话等待锁信息,可通过 locktag_decode() 函数解析。

+

global_sessionid

+

text

+

全局会话 ID 。

+
+ diff --git "a/content/zh/docs/Developerguide/Linux\344\270\213\351\205\215\347\275\256\346\225\260\346\215\256\346\272\220.md" "b/content/zh/docs/Developerguide/Linux\344\270\213\351\205\215\347\275\256\346\225\260\346\215\256\346\272\220.md" index 6ce7997bf..782271b0f 100644 --- "a/content/zh/docs/Developerguide/Linux\344\270\213\351\205\215\347\275\256\346\225\260\346\215\256\346\272\220.md" +++ "b/content/zh/docs/Developerguide/Linux\344\270\213\351\205\215\347\275\256\346\225\260\346\215\256\346\272\220.md" @@ -1,516 +1,516 @@ -# Linux下配置数据源 - -将openGauss提供的ODBC DRIVER(psqlodbcw.so)配置到数据源中便可使用。配置数据源需要配置“odbc.ini”和“odbcinst.ini”两个文件(在编译安装unixODBC过程中生成且默认放在“/usr/local/etc”目录下),并在服务器端进行配置。 - -## 操作步骤 - -1. 获取unixODBC源码包。 - - 获取参考地址:https://sourceforge.net/projects/unixodbc/files/unixODBC/2.3.7/unixODBC-2.3.7pre.tar.gz/download - - 下载后请先按照社区提供的完整性校验算法进行完整性校验。 - -2. 安装unixODBC。如果机器上已经安装了其他版本的unixODBC,可以直接覆盖安装。 - - 目前不支持unixODBC-2.2.1版本。以unixODBC-2.3.0版本为例,在客户端执行如下命令安装unixODBC。默认安装到“/usr/local”目录下,生成数据源文件到 “/usr/local/etc”目录下,库文件生成在“/usr/local/lib”目录。 - - ``` - tar zxvf unixODBC-2.3.0.tar.gz - cd unixODBC-2.3.0 - #修改configure文件(如果不存在,那么请修改configure.ac),找到LIB_VERSION - #将它的值修改为"1:0:0",这样将编译出*.so.1的动态库,与psqlodbcw.so的依赖关系相同。 - vim configure - - ./configure --enable-gui=no #如果要在鲲鹏服务器上编译,请追加一个configure参数: --build=aarch64-unknown-linux-gnu - make - #安装可能需要root权限 - make install - ``` - -3. 替换客户端openGauss驱动程序。 - a. 将openGauss-1.1.0-ODBC.tar.gz解压到“/usr/local/lib”目录下。解压会得到“psqlodbcw.la”和“psqlodbcw.so”两个文件。 - b. 将openGauss-1.1.0-ODBC.tar.gz解压后lib目录中的库拷贝到“/usr/local/lib”目录下。 - -4. 配置数据源。 - a. 配置ODBC驱动文件。 - - 在“/xxx/odbc/etc/odbcinst.ini”文件中追加以下内容。 - - ``` - [GaussMPP] - Driver64=/xxx/odbc/lib/psqlodbcw.so - setup=/xxx/odbc/lib/psqlodbcw.so - ``` - - odbcinst.ini文件中的配置参数说明如[表1](#zh-cn_topic_0283136654_zh-cn_topic_0237120407_zh-cn_topic_0059778464_td564f21e7c8e458bbd741b09896f5d91)所示。 - - **表 1** odbcinst.ini文件配置参数 - - - - - - - - - - - - - - - - - - - - -

参数

-

描述

-

示例

-

[DriverName]

-

驱动器名称,对应数据源DSN中的驱动名。

-

[DRIVER_N]

-

Driver64

-

驱动动态库的路径。

-

Driver64=/xxx/odbc/lib/psqlodbcw.so

-

setup

-

驱动安装路径,与Driver64中动态库的路径一致。

-

setup=/xxx/odbc/lib/psqlodbcw.so

-
- - b. 配置数据源文件。 - - 在“/usr/local/etc/odbc.ini”文件中追加以下内容。 - - ``` - [MPPODBC] - Driver=GaussMPP - Servername=10.145.130.26 #(数据库Server IP) - Database=postgres #(数据库名) - Username=omm #(数据库用户名) - Password= #(数据库用户密码) - Port=8000 #(数据库侦听端口) - Sslmode=allow - ``` - - odbc.ini文件配置参数说明如[表2](#zh-cn_topic_0283136654_zh-cn_topic_0237120407_zh-cn_topic_0059778464_t55845a6555f2454297b64ce47ad3d648)所示。 - - **表 2** odbc.ini文件配置参数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

参数

-

描述

-

示例

-

[DSN]

-

数据源的名称。

-

[MPPODBC]

-

Driver

-

驱动名,对应odbcinst.ini中的DriverName。

-

Driver=DRIVER_N

-

Servername

-

服务器的IP地址。

-

Servername=10.145.130.26

-

Database

-

要连接的数据库的名称。

-

Database=postgres

-

Username

-

数据库用户名称。

-

Username=omm

-

Password

-

数据库用户密码。

-

Password=

-
说明:

ODBC驱动本身已经对内存密码进行过清理,以保证用户密码在连接后不会再在内存中保留。

-

但是如果配置了此参数,由于unixODBC对数据源文件等进行缓存,可能导致密码长期保留在内存中。

-

推荐在应用程序连接时,将密码传递给相应API,而非写在数据源配置文件中。同时连接成功后,应当及时清理保存密码的内存段。

-
-

Port

-

服务器的端口号。

-

Port=8000

-

Sslmode

-

开启SSL模式。

-

Sslmode=allow

-

Debug

-

设置为1时,将会打印psqlodbc驱动的mylog,日志生成目录为/tmp/。设置为0时则不会生成。

-

Debug=1

-

UseServerSidePrepare

-

是否开启数据库端扩展查询协议。

-

可选值0或1,默认为1,表示打开扩展查询协议。

-

UseServerSidePrepare=1

-

UseBatchProtocol

-

是否开启批量查询协议(打开可提高DML性能);可选值0或者1,默认为1。

-

当此值为0时,不使用批量查询协议(主要用于与早期数据库版本通信兼容)。

-

当此值为1,并且数据库support_batch_bind参数存在且为on时,将打开批量查询协议。

-

UseBatchProtocol=1

-

ForExtensionConnector

-

这个开关控制着savepoint是否发送,savepoint相关问题可以注意这个开关。

-

ForExtensionConnector=1

-

UnamedPrepStmtThreshold

-

每次调用SQLFreeHandle释放Stmt时,ODBC都会向server端发送一个Deallocate plan_name语句,业务中存在大量这类语句。为了减少这类语句的发送,我们将 stmt->plan_name置空,从而使得数据库识别这个为unamed stmt。增加这个参数对unamed stmt的阈值进行控制。

-

UnamedPrepStmtThreshold=100

-

ConnectionExtraInfo

-

GUC参数connection_info(参见connection_info)中显示驱动部署路径和进程属主用户的开关。

-

ConnectionExtraInfo=1

-
说明:

默认值为0。当设置为1时,ODBC驱动会将当前驱动的部署路径、进程属主用户上报到数据库中,记录在connection_info参数(参见connection_info)里;同时可以在PG_STAT_ACTIVITY中查询到。

-
-

BoolAsChar

-

设置为Yes是,Bools值将会映射为SQL_CHAR。如不设置将会映射为SQL_BIT。

-

BoolsAsChar = Yes

-

RowVersioning

-

当尝试更新一行数据时,设置为Yes会允许应用检测数据有没有被其他用户进行修改。

-

RowVersioning=Yes

-

ShowSystemTables

-

驱动将会默认系统表格为普通SQL表格。

-

ShowSystemTables=Yes

-
- - 其中关于Sslmode的选项的允许值,具体信息见下表: - - **表 3** Sslmode的可选项及其描述 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Sslmode

-

是否会启用SSL加密

-

描述

-

disable

-

-

不使用SSL安全连接。

-

allow

-

可能

-

如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。

-

prefer

-

可能

-

如果数据库支持,那么建议使用SSL安全加密连接,但不验证数据库服务器的真实性。

-

require

-

-

必须使用SSL安全连接,但是只做了数据加密,而并不验证数据库服务器的真实性。

-

verify-ca

-

-

必须使用SSL安全连接,并且验证数据库是否具有可信证书机构签发的证书。

-

verify-full

-

-

必须使用SSL安全连接,在verify-ca的验证范围之外,同时验证数据库所在主机的主机名是否与证书内容一致。openGauss不支持此模式。

-
- -5. (可选)生成SSL证书,具体请参见[证书生成](证书生成.md)。此步骤和[6](#zh-cn_topic_0283136654_li1724551081815)在服务端与客户端通过ssl方式连接的情况下需要执行。非ssl方式连接情况下可以跳过。 -6. (可选)替换SSL证书,具体请参见[证书替换](证书替换.md)。 -7. SSL模式: - - ``` - 退回根目录,创建.postgresql目录,并将root.crt,client.crt,client.key,client.key.cipher,client.key.rand,client.req,server.crt,server.key,server.key.cipher,server.key.rand,server.req放在此路径下。 - 将root.crt以及server开头的证书相关文件全部拷贝进数据库install/data目录下(与postgresql.conf文件在同一路径)。 - 修改postgresql.conf文件: - ssl = on - ssl_cert_file = 'server.crt' - ssl_key_file = 'server.key' - ssl_ca_file = 'root.crt' - 修改完参数后需重启数据库。 - 修改配置文件odbc.ini中的sslmode参数(require或verify-ca)。 - ``` - -8. 配置数据库服务器。 - a. 以操作系统用户omm登录数据库主节点。 - b. 执行如下命令增加对外提供服务的网卡IP或者主机名(英文逗号分隔),其中NodeName为当前节点名称: - - ``` - gs_guc reload -N NodeName -I all -c "listen_addresses='localhost,192.168.0.100,10.11.12.13'" - ``` - - 在DR(Direct Routing,LVS的直接路由DR模式)模式中需要将虚拟IP地址(10.11.12.13)加入到服务器的侦听地址列表中。 - - listen\_addresses也可以配置为“\*”或“0.0.0.0”,此配置下将侦听所有网卡,但存在安全风险,不推荐用户使用,推荐用户按照需要配置IP或者主机名,打开侦听。 - - c. 执行如下命令在数据库主节点配置文件中增加一条认证规则。(这里假设客户端IP地址为10.11.12.13,即远程连接的机器的IP地址) - - ``` - gs_guc reload -N all -I all -h "host all jack 10.11.12.13/32 sha256" - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- -N all表示openGauss中的所有主机。 - > - >- -I all表示主机中的所有实例。 - > - >- -h表示指定需要在“pg\_hba.conf”增加的语句。 - > - >- all表示允许客户端连接到任意的数据库。 - > - >- jack表示连接数据库的用户。 - > - >- 10.11.12.13/32表示只允许IP地址为10.11.12.13的主机连接。在使用过程中,请根据用户的网络进行配置修改。32表示子网掩码为1的位数,即255.255.255.255 - > - >- sha256表示连接时jack用户的密码使用sha256算法加密。 - - 如果将ODBC客户端配置在和要连接的数据库主节点在同一台机器上,则可使用local trust认证方式,如下: - - ``` - local all all trust - ``` - - 如果将ODBC客户端配置在和要连接的数据库主节点在不同机器上,则需要使用sha256认证方式,如下: - - ``` - host all all xxx.xxx.xxx.xxx/32 sha256 - ``` - - d. 重启openGauss。 - - ``` - gs_om -t stop - gs_om -t start - ``` - -9. 在客户端配置环境变量。 - - ``` - vim ~/.bashrc - ``` - - 在配置文件中追加以下内容。 - - ``` - export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH - export ODBCSYSINI=/usr/local/etc - export ODBCINI=/usr/local/etc/odbc.ini - ``` - -10. 执行如下命令使设置生效。 - - ``` - source ~/.bashrc - ``` - - -## 测试数据源配置 - -执行./isql -v MPPODBC(数据源名称)命令。 - -- 如果显示如下信息,表明配置正确,连接成功。 - - ``` - +---------------------------------------+ - | Connected! | - | | - | sql-statement | - | help [tablename] | - | quit | - | | - +---------------------------------------+ - SQL> - ``` - -- 若显示ERROR信息,则表明配置错误。请检查上述配置是否正确。 - -## 常见问题处理 - -- \[unixODBC\]\[Driver Manager\]Can't open lib 'xxx/xxx/psqlodbcw.so' : file not found. - - 此问题的可能原因: - - - odbcinst.ini文件中配置的路径不正确 - - 确认的方法:'ls'一下错误信息中的路径,以确保该psqlodbcw.so文件存在,同时具有执行权限。 - - - psqlodbcw.so的依赖库不存在,或者不在系统环境变量中 - - 确认的办法:ldd一下错误信息中的路径,如果是缺少libodbc.so.1等unixODBC的库,那么按照“操作步骤”中的方法重新配置unixODBC,并确保它的安装路径下的lib目录添加到了LD\_LIBRARY\_PATH中;如果是缺少其他库,请将ODBC驱动包中的lib目录添加到LD\_LIBRARY\_PATH中。 - - -- \[unixODBC\]connect to server failed: no such file or directory - - 此问题可能的原因: - - - 配置了错误的/不可达的数据库地址,或者端口 - - 请检查数据源配置中的Servername及Port配置项。 - - - 服务器侦听不正确 - - 如果确认Servername及Port配置正确,请根据“操作步骤”中数据库服务器的相关配置,确保数据库侦听了合适的网卡及端口。 - - - 防火墙及网闸设备 - - 请确认防火墙设置,将数据库的通信端口添加到可信端口中。 - - 如果有网闸设备,请确认一下相关的设置。 - - -- \[unixODBC\]The password-stored method is not supported. - - 此问题可能原因: - - 数据源中未配置sslmode配置项。 - - 解决办法: - - 请配置该选项至allow或以上选项。此配置的更多信息,见[表3](#zh-cn_topic_0283136654_zh-cn_topic_0237120407_zh-cn_topic_0059778464_table22136585143846)。 - -- Server common name "xxxx" does not match host name "xxxxx" - - 此问题的原因: - - 使用了SSL加密的“verify-full”选项,驱动程序会验证证书中的主机名与实际部署数据库的主机名是否一致。 - - 解决办法: - - 碰到此问题可以使用“verify-ca”选项,不再校验主机名;或者重新生成一套与数据库所在主机名相同的CA证书。 - -- Driver's SQLAllocHandle on SQL\_HANDLE\_DBC failed - - 此问题的可能原因: - - 可执行文件(比如unixODBC的isql,以下都以isql为例)与数据库驱动(psqlodbcw.so)依赖于不同的ODBC的库版本:libodbc.so.1或者libodbc.so.2。此问题可以通过如下方式确认: - - ``` - ldd `which isql` | grep odbc - ldd psqlodbcw.so | grep odbc - ``` - - 这时,如果输出的libodbc.so最后的后缀数字不同或者指向不同的磁盘物理文件,那么基本就可以断定是此问题。isql与psqlodbcw.so都会要求加载libodbc.so,这时如果它们加载的是不同的物理文件,便会导致两套完全同名的函数列表,同时出现在同一个可见域里(unixODBC的libodbc.so.\*的函数导出列表完全一致),产生冲突,无法加载数据库驱动。 - - 解决办法: - - 确定一个要使用的unixODBC,然后卸载另外一个(比如卸载库版本号为.so.2的unixODBC),然后将剩下的.so.1的库,新建一个同名但是后缀为.so.2的软链接,便可解决此问题。 - -- FATAL: Forbid remote connection with trust method! - - 由于安全原因,数据库主节点禁止openGauss内部其他节点无认证接入。 - - 如果要在openGauss内部访问数据库主节点,请将ODBC程序部署在数据库主节点所在机器,服务器地址使用“127.0.0.1”。建议业务系统单独部署在openGauss外部,否则可能会影响数据库运行性能。 - -- \[unixODBC\]\[Driver Manager\]Invalid attribute value - - 有可能是unixODBC的版本并非推荐版本,建议通过“odbcinst --version”命令排查环境中的unixODBC版本。 - -- authentication method 10 not supported. - - 使用开源客户端碰到此问题,可能原因: - - 数据库中存储的口令校验只存储了sha256格式哈希,而开源客户端只识别MD5校验,双方校验方法不匹配报错。 - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >- 数据库并不存储用户口令,只存储用户口令的哈希码。 - > - >- 数据库当用户更新用户口令或者新建用户时,会同时存储两种格式的哈希码,这时将兼容开源的认证协议。 - > - >- 但是当老版本升级到新版本时,由于哈希的不可逆性,所以数据库无法还原用户口令,进而生成新格式的哈希,所以仍然只保留了sha256格式的哈希,导致仍然无法使用MD5做口令认证。 - > - >- MD5加密算法安全性低,存在安全风险,建议使用更安全的加密算法。 - - 要解决该问题,可以更新用户口令(参见[ALTER USER](ALTER-USER.md));或者新建一个用户(参见[CREATE USER](CREATE-USER.md)),赋于同等权限,使用新用户连接数据库。 - -- unsupported frontend protocol 3.51: server supports 1.0 to 3.0 - - 目标数据库版本过低,或者目标数据库为开源数据库。请使用对应版本的数据库驱动连接目标数据库。 - -- FATAL: GSS authentication method is not allowed because XXXX user password is not disabled. - - 目标数据库主节点的pg\_hba.conf里配置了当前客户端IP使用“gss”方式来做认证,该认证算法不支持用作客户端的身份认证,请修改到“sha256”后再试。配置方法见[8](#zh-cn_topic_0283136654_zh-cn_topic_0237120407_zh-cn_topic_0059778464_l4c0173b8af93447e91aba24005e368e5)。 - - +# Linux下配置数据源 + +将 openGauss 提供的ODBC DRIVER(psqlodbcw.so)配置到数据源中便可使用。配置数据源需要配置“odbc.ini”和“odbcinst.ini”两个文件(在编译安装 unixODBC 过程中生成且默认放在“/usr/local/etc”目录下),并在服务器端进行配置。 + +## 操作步骤 + +1. 获取 unixODBC 源码包。 + + 获取参考地址:https://sourceforge.net/projects/unixodbc/files/unixODBC/2.3.7/unixODBC-2.3.7pre.tar.gz/download + + 下载后请先按照社区提供的完整性校验算法进行完整性校验。 + +2. 安装 unixODBC 。如果机器上已经安装了其他版本的 unixODBC ,可以直接覆盖安装。 + + 目前不支持unixODBC-2.2.1版本。以unixODBC-2.3.0版本为例,在客户端执行如下命令安装 unixODBC 。默认安装到“/usr/local”目录下,生成数据源文件到 “/usr/local/etc”目录下,库文件生成在“/usr/local/lib”目录。 + + ``` + tar zxvf unixODBC-2.3.0.tar.gz + cd unixODBC-2.3.0 + #修改 configure 文件(如果不存在,那么请修改configure.ac),找到LIB_VERSION + #将它的值修改为"1:0:0",这样将编译出*.so.1的动态库,与psqlodbcw.so的依赖关系相同。 + vim configure + + ./configure --enable-gui=no #如果要在鲲鹏服务器上编译,请追加一个 configure 参数: --build=aarch64-unknown-linux-gnu + make + #安装可能需要 root 权限 + make install + ``` + +3. 替换客户端 openGauss 驱动程序。 + a. 将openGauss-1.1.0-ODBC.tar.gz解压到“/usr/local/lib”目录下。解压会得到“psqlodbcw.la”和“psqlodbcw.so”两个文件。 + b. 将openGauss-1.1.0-ODBC.tar.gz解压后 lib 目录中的库拷贝到“/usr/local/lib”目录下。 + +4. 配置数据源。 + a. 配置 ODBC 驱动文件。 + + 在“/xxx/odbc/etc/odbcinst.ini”文件中追加以下内容。 + + ``` + [GaussMPP] + Driver64=/xxx/odbc/lib/psqlodbcw.so + setup=/xxx/odbc/lib/psqlodbcw.so + ``` + + odbcinst.ini文件中的配置参数说明如[表1](#zh-cn_topic_0283136654_zh-cn_topic_0237120407_zh-cn_topic_0059778464_td564f21e7c8e458bbd741b09896f5d91)所示。 + + **表 1** odbcinst.ini文件配置参数 + + + + + + + + + + + + + + + + + + + + +

参数

+

描述

+

示例

+

[DriverName]

+

驱动器名称,对应数据源 DSN 中的驱动名。

+

[DRIVER_N]

+

Driver64

+

驱动动态库的路径。

+

Driver64=/xxx/odbc/lib/psqlodbcw.so

+

setup

+

驱动安装路径,与 Driver64 中动态库的路径一致。

+

setup=/xxx/odbc/lib/psqlodbcw.so

+
+ + b. 配置数据源文件。 + + 在“/usr/local/etc/odbc.ini”文件中追加以下内容。 + + ``` + [MPPODBC] + Driver=GaussMPP + Servername=10.145.130.26 #(数据库Server IP) + Database=postgres #(数据库名) + Username=omm #(数据库用户名) + Password= #(数据库用户密码) + Port=8000 #(数据库侦听端口) + Sslmode=allow + ``` + + odbc.ini文件配置参数说明如[表2](#zh-cn_topic_0283136654_zh-cn_topic_0237120407_zh-cn_topic_0059778464_t55845a6555f2454297b64ce47ad3d648)所示。 + + **表 2** odbc.ini文件配置参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

描述

+

示例

+

[DSN]

+

数据源的名称。

+

[MPPODBC]

+

Driver

+

驱动名,对应odbcinst.ini中的 DriverName 。

+

Driver=DRIVER_N

+

Servername

+

服务器的 IP 地址。

+

Servername=10.145.130.26

+

Database

+

要连接的数据库的名称。

+

Database=postgres

+

Username

+

数据库用户名称。

+

Username=omm

+

Password

+

数据库用户密码。

+

Password=

+
说明:

ODBC驱动本身已经对内存密码进行过清理,以保证用户密码在连接后不会再在内存中保留。

+

但是如果配置了此参数,由于 unixODBC 对数据源文件等进行缓存,可能导致密码长期保留在内存中。

+

推荐在应用程序连接时,将密码传递给相应 API ,而非写在数据源配置文件中。同时连接成功后,应当及时清理保存密码的内存段。

+
+

Port

+

服务器的端口号。

+

Port=8000

+

Sslmode

+

开启 SSL 模式。

+

Sslmode=allow

+

Debug

+

设置为 1 时,将会打印 psqlodbc 驱动的 mylog ,日志生成目录为/tmp/。设置为 0 时则不会生成。

+

Debug=1

+

UseServerSidePrepare

+

是否开启数据库端扩展查询协议。

+

可选值 0 或 1 ,默认为 1 ,表示打开扩展查询协议。

+

UseServerSidePrepare=1

+

UseBatchProtocol

+

是否开启批量查询协议(打开可提高 DML 性能);可选值 0 或者 1 ,默认为 1 。

+

当此值为 0 时,不使用批量查询协议(主要用于与早期数据库版本通信兼容)。

+

当此值为 1 ,并且数据库 support_batch_bind 参数存在且为 on 时,将打开批量查询协议。

+

UseBatchProtocol=1

+

ForExtensionConnector

+

这个开关控制着 savepoint 是否发送, savepoint 相关问题可以注意这个开关。

+

ForExtensionConnector=1

+

UnamedPrepStmtThreshold

+

每次调用 SQLFreeHandle 释放 Stmt 时, ODBC 都会向 server 端发送一个 Deallocate plan_name 语句,业务中存在大量这类语句。为了减少这类语句的发送,我们将 stmt->plan_name置空,从而使得数据库识别这个为 unamed stmt 。增加这个参数对 unamed stmt 的阈值进行控制。

+

UnamedPrepStmtThreshold=100

+

ConnectionExtraInfo

+

GUC参数connection_info(参见connection_info)中显示驱动部署路径和进程属主用户的开关。

+

ConnectionExtraInfo=1

+
说明:

默认值为 0 。当设置为 1 时, ODBC 驱动会将当前驱动的部署路径、进程属主用户上报到数据库中,记录在 connection_info 参数(参见connection_info)里;同时可以在PG_STAT_ACTIVITY中查询到。

+
+

BoolAsChar

+

设置为 Yes 是, Bools 值将会映射为 SQL_CHAR 。如不设置将会映射为 SQL_BIT 。

+

BoolsAsChar = Yes

+

RowVersioning

+

当尝试更新一行数据时,设置为 Yes 会允许应用检测数据有没有被其他用户进行修改。

+

RowVersioning=Yes

+

ShowSystemTables

+

驱动将会默认系统表格为普通 SQL 表格。

+

ShowSystemTables=Yes

+
+ + 其中关于 Sslmode 的选项的允许值,具体信息见下表: + + **表 3** Sslmode的可选项及其描述 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Sslmode

+

是否会启用 SSL 加密

+

描述

+

disable

+

+

不使用 SSL 安全连接。

+

allow

+

可能

+

如果数据库服务器要求使用,则可以使用 SSL 安全加密连接,但不验证数据库服务器的真实性。

+

prefer

+

可能

+

如果数据库支持,那么建议使用 SSL 安全加密连接,但不验证数据库服务器的真实性。

+

require

+

+

必须使用 SSL 安全连接,但是只做了数据加密,而并不验证数据库服务器的真实性。

+

verify-ca

+

+

必须使用 SSL 安全连接,并且验证数据库是否具有可信证书机构签发的证书。

+

verify-full

+

+

必须使用 SSL 安全连接,在verify-ca的验证范围之外,同时验证数据库所在主机的主机名是否与证书内容一致。openGauss不支持此模式。

+
+ +5. (可选)生成 SSL 证书,具体请参见[证书生成](证书生成.md)。此步骤和[6](#zh-cn_topic_0283136654_li1724551081815)在服务端与客户端通过 ssl 方式连接的情况下需要执行。非 ssl 方式连接情况下可以跳过。 +6. (可选)替换 SSL 证书,具体请参见[证书替换](证书替换.md)。 +7. SSL模式: + + ``` + 退回根目录,创建.postgresql目录,并将root.crt,client.crt,client.key,client.key.cipher,client.key.rand,client.req,server.crt,server.key,server.key.cipher,server.key.rand,server.req放在此路径下。 + 将root.crt以及 server 开头的证书相关文件全部拷贝进数据库install/data目录下(与postgresql.conf文件在同一路径)。 + 修改postgresql.conf文件: + ssl = on + ssl_cert_file = 'server.crt' + ssl_key_file = 'server.key' + ssl_ca_file = 'root.crt' + 修改完参数后需重启数据库。 + 修改配置文件odbc.ini中的 sslmode 参数(require或verify-ca)。 + ``` + +8. 配置数据库服务器。 + a. 以操作系统用户 omm 登录数据库主节点。 + b. 执行如下命令增加对外提供服务的网卡 IP 或者主机名(英文逗号分隔),其中 NodeName 为当前节点名称: + + ``` + gs_guc reload -N NodeName -I all -c "listen_addresses='localhost,192.168.0.100,10.11.12.13'" + ``` + + 在DR(Direct Routing, LVS 的直接路由 DR 模式)模式中需要将虚拟 IP 地址(10.11.12.13)加入到服务器的侦听地址列表中。 + + listen\_addresses也可以配置为“\*”或“0.0.0.0”,此配置下将侦听所有网卡,但存在安全风险,不推荐用户使用,推荐用户按照需要配置 IP 或者主机名,打开侦听。 + + c. 执行如下命令在数据库主节点配置文件中增加一条认证规则。(这里假设客户端 IP 地址为10.11.12.13,即远程连接的机器的 IP 地址) + + ``` + gs_guc reload -N all -I all -h "host all jack 10.11.12.13/32 sha256" + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- -N all表示 openGauss 中的所有主机。 + > + >- -I all表示主机中的所有实例。 + > + >- -h表示指定需要在“pg\_hba.conf”增加的语句。 + > + >- all表示允许客户端连接到任意的数据库。 + > + >- jack表示连接数据库的用户。 + > + >- 10.11.12.13/32表示只允许 IP 地址为10.11.12.13的主机连接。在使用过程中,请根据用户的网络进行配置修改。 32 表示子网掩码为 1 的位数,即255.255.255.255 + > + >- sha256表示连接时 jack 用户的密码使用 sha256 算法加密。 + + 如果将 ODBC 客户端配置在和要连接的数据库主节点在同一台机器上,则可使用 local trust 认证方式,如下: + + ``` + local all all trust + ``` + + 如果将 ODBC 客户端配置在和要连接的数据库主节点在不同机器上,则需要使用 sha256 认证方式,如下: + + ``` + host all all xxx.xxx.xxx.xxx/32 sha256 + ``` + + d. 重启 openGauss 。 + + ``` + gs_om -t stop + gs_om -t start + ``` + +9. 在客户端配置环境变量。 + + ``` + vim ~/.bashrc + ``` + + 在配置文件中追加以下内容。 + + ``` + export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH + export ODBCSYSINI=/usr/local/etc + export ODBCINI=/usr/local/etc/odbc.ini + ``` + +10. 执行如下命令使设置生效。 + + ``` + source ~/.bashrc + ``` + + +## 测试数据源配置 + +执行./isql -v MPPODBC(数据源名称)命令。 + +- 如果显示如下信息,表明配置正确,连接成功。 + + ``` + +---------------------------------------+ + | Connected! | + | | + | sql-statement | + | help [tablename] | + | quit | + | | + +---------------------------------------+ + SQL> + ``` + +- 若显示 ERROR 信息,则表明配置错误。请检查上述配置是否正确。 + +## 常见问题处理 + +- \[unixODBC\]\[Driver Manager\]Can't open lib 'xxx/xxx/psqlodbcw.so' : file not found. + + 此问题的可能原因: + + - odbcinst.ini文件中配置的路径不正确 + + 确认的方法:'ls'一下错误信息中的路径,以确保该psqlodbcw.so文件存在,同时具有执行权限。 + + - psqlodbcw.so的依赖库不存在,或者不在系统环境变量中 + + 确认的办法:ldd一下错误信息中的路径,如果是缺少libodbc.so.1等 unixODBC 的库,那么按照“操作步骤”中的方法重新配置 unixODBC ,并确保它的安装路径下的 lib 目录添加到了LD\_LIBRARY\_PATH中;如果是缺少其他库,请将 ODBC 驱动包中的 lib 目录添加到LD\_LIBRARY\_PATH中。 + + +- \[unixODBC\]connect to server failed: no such file or directory + + 此问题可能的原因: + + - 配置了错误的/不可达的数据库地址,或者端口 + + 请检查数据源配置中的 Servername 及 Port 配置项。 + + - 服务器侦听不正确 + + 如果确认 Servername 及 Port 配置正确,请根据“操作步骤”中数据库服务器的相关配置,确保数据库侦听了合适的网卡及端口。 + + - 防火墙及网闸设备 + + 请确认防火墙设置,将数据库的通信端口添加到可信端口中。 + + 如果有网闸设备,请确认一下相关的设置。 + + +- \[unixODBC\]The password-stored method is not supported. + + 此问题可能原因: + + 数据源中未配置 sslmode 配置项。 + + 解决办法: + + 请配置该选项至 allow 或以上选项。此配置的更多信息,见[表3](#zh-cn_topic_0283136654_zh-cn_topic_0237120407_zh-cn_topic_0059778464_table22136585143846)。 + +- Server common name "xxxx" does not match host name "xxxxx" + + 此问题的原因: + + 使用了 SSL 加密的“verify-full”选项,驱动程序会验证证书中的主机名与实际部署数据库的主机名是否一致。 + + 解决办法: + + 碰到此问题可以使用“verify-ca”选项,不再校验主机名;或者重新生成一套与数据库所在主机名相同的 CA 证书。 + +- Driver's SQLAllocHandle on SQL\_HANDLE\_DBC failed + + 此问题的可能原因: + + 可执行文件(比如 unixODBC 的 isql ,以下都以 isql 为例)与数据库驱动(psqlodbcw.so)依赖于不同的 ODBC 的库版本:libodbc.so.1或者libodbc.so.2。此问题可以通过如下方式确认: + + ``` + ldd `which isql` | grep odbc + ldd psqlodbcw.so | grep odbc + ``` + + 这时,如果输出的libodbc.so最后的后缀数字不同或者指向不同的磁盘物理文件,那么基本就可以断定是此问题。 isql 与psqlodbcw.so都会要求加载libodbc.so,这时如果它们加载的是不同的物理文件,便会导致两套完全同名的函数列表,同时出现在同一个可见域里(unixODBC的libodbc.so.\*的函数导出列表完全一致),产生冲突,无法加载数据库驱动。 + + 解决办法: + + 确定一个要使用的 unixODBC ,然后卸载另外一个(比如卸载库版本号为.so.2的unixODBC),然后将剩下的.so.1的库,新建一个同名但是后缀为.so.2的软链接,便可解决此问题。 + +- FATAL: Forbid remote connection with trust method! + + 由于安全原因,数据库主节点禁止 openGauss 内部其他节点无认证接入。 + + 如果要在 openGauss 内部访问数据库主节点,请将 ODBC 程序部署在数据库主节点所在机器,服务器地址使用“127.0.0.1”。建议业务系统单独部署在 openGauss 外部,否则可能会影响数据库运行性能。 + +- \[unixODBC\]\[Driver Manager\]Invalid attribute value + + 有可能是 unixODBC 的版本并非推荐版本,建议通过“odbcinst --version”命令排查环境中的 unixODBC 版本。 + +- authentication method 10 not supported. + + 使用开源客户端碰到此问题,可能原因: + + 数据库中存储的口令校验只存储了 sha256 格式哈希,而开源客户端只识别 MD5 校验,双方校验方法不匹配报错。 + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- 数据库并不存储用户口令,只存储用户口令的哈希码。 + > + >- 数据库当用户更新用户口令或者新建用户时,会同时存储两种格式的哈希码,这时将兼容开源的认证协议。 + > + >- 但是当老版本升级到新版本时,由于哈希的不可逆性,所以数据库无法还原用户口令,进而生成新格式的哈希,所以仍然只保留了 sha256 格式的哈希,导致仍然无法使用 MD5 做口令认证。 + > + >- MD5加密算法安全性低,存在安全风险,建议使用更安全的加密算法。 + + 要解决该问题,可以更新用户口令(参见[ALTER USER](ALTER-USER.md));或者新建一个用户(参见[CREATE USER](CREATE-USER.md)),赋于同等权限,使用新用户连接数据库。 + +- unsupported frontend protocol 3.51: server supports 1.0 to 3.0 + + 目标数据库版本过低,或者目标数据库为开源数据库。请使用对应版本的数据库驱动连接目标数据库。 + +- FATAL: GSS authentication method is not allowed because XXXX user password is not disabled. + + 目标数据库主节点的pg\_hba.conf里配置了当前客户端 IP 使用“gss”方式来做认证,该认证算法不支持用作客户端的身份认证,请修改到“sha256”后再试。配置方法见[8](#zh-cn_topic_0283136654_zh-cn_topic_0237120407_zh-cn_topic_0059778464_l4c0173b8af93447e91aba24005e368e5)。 + + diff --git a/content/zh/docs/Developerguide/MEMORY_NODE_DETAIL.md b/content/zh/docs/Developerguide/MEMORY_NODE_DETAIL.md index 37a1d7a8f..819ad2c51 100644 --- a/content/zh/docs/Developerguide/MEMORY_NODE_DETAIL.md +++ b/content/zh/docs/Developerguide/MEMORY_NODE_DETAIL.md @@ -1,40 +1,40 @@ -# MEMORY\_NODE\_DETAIL - -显示某个数据库节点内存使用情况。 - -**表 1** MEMORY\_NODE\_DETAIL字段 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

nodename

-

text

-

节点名称。

-

memorytype

-

text

-
内存的名称。
  • max_process_memory:openGauss实例所占用的内存大小。
  • process_used_memory:进程所使用的内存大小。
  • max_dynamic_memory:最大动态内存。
  • dynamic_used_memory:已使用的动态内存。
  • dynamic_peak_memory:内存的动态峰值。
  • dynamic_used_shrctx:最大动态共享内存上下文。
  • dynamic_peak_shrctx:共享内存上下文的动态峰值。
  • max_shared_memory:最大共享内存。
  • shared_used_memory:已使用的共享内存。
  • max_cstore_memory:列存所允许使用的最大内存。
  • cstore_used_memory:列存已使用的内存大小。
  • max_sctpcomm_memory:sctp通信所允许使用的最大内存。
  • sctpcomm_used_memory:sctp通信已使用的内存大小。
  • sctpcomm_peak_memory:sctp通信的内存峰值。
  • other_used_memory:其他已使用的内存大小。
  • gpu_max_dynamic_memory:GPU最大动态内存。
  • gpu_dynamic_used_memory:GPU已使用的动态内存。
  • gpu_dynamic_peak_memory:GPU内存的动态峰值。
  • pooler_conn_memory:链接池申请内存计数。
  • pooler_freeconn_memory:链接池空闲连接的内存计数。
  • storage_compress_memory:存储模块压缩使用的内存大小。
  • udf_reserved_memory:UDF预留的内存大小。
-
-

memorymbytes

-

integer

-

内存使用的大小,单位为MB。

-
- +# MEMORY\_NODE\_DETAIL + +显示某个数据库节点内存使用情况。 + +**表 1** MEMORY\_NODE\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

text

+

节点名称。

+

memorytype

+

text

+
内存的名称。
  • max_process_memory:openGauss实例所占用的内存大小。
  • process_used_memory:进程所使用的内存大小。
  • max_dynamic_memory:最大动态内存。
  • dynamic_used_memory:已使用的动态内存。
  • dynamic_peak_memory:内存的动态峰值。
  • dynamic_used_shrctx:最大动态共享内存上下文。
  • dynamic_peak_shrctx:共享内存上下文的动态峰值。
  • max_shared_memory:最大共享内存。
  • shared_used_memory:已使用的共享内存。
  • max_cstore_memory:列存所允许使用的最大内存。
  • cstore_used_memory:列存已使用的内存大小。
  • max_sctpcomm_memory:sctp通信所允许使用的最大内存。
  • sctpcomm_used_memory:sctp通信已使用的内存大小。
  • sctpcomm_peak_memory:sctp通信的内存峰值。
  • other_used_memory:其他已使用的内存大小。
  • gpu_max_dynamic_memory:GPU最大动态内存。
  • gpu_dynamic_used_memory:GPU已使用的动态内存。
  • gpu_dynamic_peak_memory:GPU内存的动态峰值。
  • pooler_conn_memory:链接池申请内存计数。
  • pooler_freeconn_memory:链接池空闲连接的内存计数。
  • storage_compress_memory:存储模块压缩使用的内存大小。
  • udf_reserved_memory:UDF预留的内存大小。
+
+

memorymbytes

+

integer

+

内存使用的大小,单位为 MB 。

+
+ diff --git a/content/zh/docs/Developerguide/MERGE-INTO.md b/content/zh/docs/Developerguide/MERGE-INTO.md index 29dd38377..b3ca288f0 100644 --- a/content/zh/docs/Developerguide/MERGE-INTO.md +++ b/content/zh/docs/Developerguide/MERGE-INTO.md @@ -1,139 +1,139 @@ -# MERGE INTO - -## 功能描述 - -通过MERGE INTO语句,将目标表和源表中数据针对关联条件进行匹配,若关联条件匹配时对目标表进行UPDATE,无法匹配时对目标表执行INSERT。此语法可以很方便地用来合并执行UPDATE和INSERT,避免多次执行。 - -## 注意事项 - -进行MERGE INTO操作的用户需要同时拥有目标表的UPDATE和INSERT权限,以及源表的SELECT权限。 - -## 语法格式 - -``` -MERGE [/*+ plan_hint */] INTO table_name [ [ AS ] alias ] -USING { { table_name | view_name } | subquery } [ [ AS ] alias ] -ON ( condition ) -[ - WHEN MATCHED THEN - UPDATE SET { column_name = { expression | DEFAULT } | - ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] - [ WHERE condition ] -] -[ - WHEN NOT MATCHED THEN - INSERT { DEFAULT VALUES | - [ ( column_name [, ...] ) ] VALUES ( { expression | DEFAULT } [, ...] ) [, ...] [ WHERE condition ] } -]; -``` - -## 参数说明 - -- **plan\_hint子句** - - 以/\*+ \*/的形式在MERGE关键字后,用于对MERGE对应的语句块生成的计划进行hint调优,详细用法请参见章节[使用Plan Hint进行调优](使用Plan-Hint进行调优.md)。每条语句中只有第一个/\*+ plan\_hint \*/注释块会作为hint生效,里面可以写多条hint。 - -- **INTO子句** - - 指定正在更新或插入的目标表。 - - - **talbe\_name** - - 目标表的表名。 - - - **alias** - - 目标表的别名。 - - 取值范围:字符串,符合标识符命名规范。 - - -- **USING子句** - - 指定源表,源表可以为表、视图或子查询。 - -- **ON子句** - - 关联条件,用于指定目标表和源表的关联条件。不支持更新关联条件中的字段。 - -- **WHEN MATCHED子句** - - 当源表和目标表中数据针对关联条件可以匹配上时,选择WHEN MATCHED子句进行UPDATE操作。 - - 不支持更新系统表、系统列。 - -- **WHEN NOT MATCHED子句** - - 当源表和目标表中数据针对关联条件无法匹配时,选择WHEN NOT MATCHED子句进行INSERT操作。 - - 不支持INSERT子句中包含多个VALUES。 - - WHEN MATCHED和WHEN NOT MATCHED子句顺序可以交换,可以缺省其中一个,但不能同时缺省,不支持同时指定两个WHEN MATCHED或WHEN NOT MATCHED子句。 - -- **DEFAULT** - - 用对应字段的缺省值填充该字段。 - - 如果没有缺省值,则为NULL。 - -- **WHERE condition** - - UPDATE子句和INSERT子句的条件,只有在条件满足时才进行更新操作,可缺省。不支持WHERE条件中引用系统列。 - - -## 示例 - -``` --- 创建目标表products和源表newproducts,并插入数据 -openGauss=# CREATE TABLE products -( -product_id INTEGER, -product_name VARCHAR2(60), -category VARCHAR2(60) -); - -openGauss=# INSERT INTO products VALUES (1501, 'vivitar 35mm', 'electrncs'); -openGauss=# INSERT INTO products VALUES (1502, 'olympus is50', 'electrncs'); -openGauss=# INSERT INTO products VALUES (1600, 'play gym', 'toys'); -openGauss=# INSERT INTO products VALUES (1601, 'lamaze', 'toys'); -openGauss=# INSERT INTO products VALUES (1666, 'harry potter', 'dvd'); - -openGauss=# CREATE TABLE newproducts -( -product_id INTEGER, -product_name VARCHAR2(60), -category VARCHAR2(60) -); - -openGauss=# INSERT INTO newproducts VALUES (1502, 'olympus camera', 'electrncs'); -openGauss=# INSERT INTO newproducts VALUES (1601, 'lamaze', 'toys'); -openGauss=# INSERT INTO newproducts VALUES (1666, 'harry potter', 'toys'); -openGauss=# INSERT INTO newproducts VALUES (1700, 'wait interface', 'books'); - --- 进行MERGE INTO操作 -openGauss=# MERGE INTO products p -USING newproducts np -ON (p.product_id = np.product_id) -WHEN MATCHED THEN - UPDATE SET p.product_name = np.product_name, p.category = np.category WHERE p.product_name != 'play gym' -WHEN NOT MATCHED THEN - INSERT VALUES (np.product_id, np.product_name, np.category) WHERE np.category = 'books'; -MERGE 4 - --- 查询更新后的结果 -openGauss=# SELECT * FROM products ORDER BY product_id; - product_id | product_name | category -------------+----------------+----------- - 1501 | vivitar 35mm | electrncs - 1502 | olympus camera | electrncs - 1600 | play gym | toys - 1601 | lamaze | toys - 1666 | harry potter | toys - 1700 | wait interface | books -(6 rows) - --- 删除表 -openGauss=# DROP TABLE products; -openGauss=# DROP TABLE newproducts; -``` - +# MERGE INTO + +## 功能描述 + +通过 MERGE INTO 语句,将目标表和源表中数据针对关联条件进行匹配,若关联条件匹配时对目标表进行 UPDATE ,无法匹配时对目标表执行 INSERT 。此语法可以很方便地用来合并执行 UPDATE 和 INSERT ,避免多次执行。 + +## 注意事项 + +进行 MERGE INTO 操作的用户需要同时拥有目标表的 UPDATE 和 INSERT 权限,以及源表的 SELECT 权限。 + +## 语法格式 + +``` +MERGE [/*+ plan_hint */] INTO table_name [ [ AS ] alias ] +USING { { table_name | view_name } | subquery } [ [ AS ] alias ] +ON ( condition ) +[ + WHEN MATCHED THEN + UPDATE SET { column_name = { expression | DEFAULT } | + ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] + [ WHERE condition ] +] +[ + WHEN NOT MATCHED THEN + INSERT { DEFAULT VALUES | + [ ( column_name [, ...] ) ] VALUES ( { expression | DEFAULT } [, ...] ) [, ...] [ WHERE condition ] } +]; +``` + +## 参数说明 + +- **plan\_hint子句** + + 以/\*+ \*/的形式在 MERGE 关键字后,用于对 MERGE 对应的语句块生成的计划进行 hint 调优,详细用法请参见章节[使用 Plan Hint 进行调优](使用Plan-Hint进行调优.md)。每条语句中只有第一个/\*+ plan\_hint \*/注释块会作为 hint 生效,里面可以写多条 hint 。 + +- **INTO子句** + + 指定正在更新或插入的目标表。 + + - **talbe\_name** + + 目标表的表名。 + + - **alias** + + 目标表的别名。 + + 取值范围:字符串,符合标识符命名规范。 + + +- **USING子句** + + 指定源表,源表可以为表、视图或子查询。 + +- **ON子句** + + 关联条件,用于指定目标表和源表的关联条件。不支持更新关联条件中的字段。 + +- **WHEN MATCHED子句** + + 当源表和目标表中数据针对关联条件可以匹配上时,选择 WHEN MATCHED 子句进行 UPDATE 操作。 + + 不支持更新系统表、系统列。 + +- **WHEN NOT MATCHED子句** + + 当源表和目标表中数据针对关联条件无法匹配时,选择 WHEN NOT MATCHED 子句进行 INSERT 操作。 + + 不支持 INSERT 子句中包含多个 VALUES 。 + +WHEN MATCHED 和 WHEN NOT MATCHED 子句顺序可以交换,可以缺省其中一个,但不能同时缺省,不支持同时指定两个 WHEN MATCHED 或 WHEN NOT MATCHED 子句。 + +- **DEFAULT** + + 用对应字段的缺省值填充该字段。 + + 如果没有缺省值,则为 NULL 。 + +- **WHERE condition** + +UPDATE 子句和 INSERT 子句的条件,只有在条件满足时才进行更新操作,可缺省。不支持 WHERE 条件中引用系统列。 + + +## 示例 + +``` +-- 创建目标表 products 和源表 newproducts ,并插入数据 +openGauss=# CREATE TABLE products +( + product_id INTEGER , +product_name VARCHAR2(60), +category VARCHAR2(60) +); + +openGauss=# INSERT INTO products VALUES (1501, 'vivitar 35mm', 'electrncs'); +openGauss=# INSERT INTO products VALUES (1502, 'olympus is50', 'electrncs'); +openGauss=# INSERT INTO products VALUES (1600, 'play gym', 'toys'); +openGauss=# INSERT INTO products VALUES (1601, 'lamaze', 'toys'); +openGauss=# INSERT INTO products VALUES (1666, 'harry potter', 'dvd'); + +openGauss=# CREATE TABLE newproducts +( + product_id INTEGER , +product_name VARCHAR2(60), +category VARCHAR2(60) +); + +openGauss=# INSERT INTO newproducts VALUES (1502, 'olympus camera', 'electrncs'); +openGauss=# INSERT INTO newproducts VALUES (1601, 'lamaze', 'toys'); +openGauss=# INSERT INTO newproducts VALUES (1666, 'harry potter', 'toys'); +openGauss=# INSERT INTO newproducts VALUES (1700, 'wait interface', 'books'); + +-- 进行 MERGE INTO 操作 +openGauss=# MERGE INTO products p +USING newproducts np +ON (p.product_id = np.product_id) +WHEN MATCHED THEN + UPDATE SET p.product_name = np.product_name, p.category = np.category WHERE p.product_name != 'play gym' +WHEN NOT MATCHED THEN + INSERT VALUES (np.product_id, np.product_name, np.category) WHERE np.category = 'books'; +MERGE 4 + +-- 查询更新后的结果 +openGauss=# SELECT * FROM products ORDER BY product_id; + product_id | product_name | category +------------+----------------+----------- + 1501 | vivitar 35mm | electrncs + 1502 | olympus camera | electrncs + 1600 | play gym | toys + 1601 | lamaze | toys + 1666 | harry potter | toys + 1700 | wait interface | books +(6 rows) + +-- 删除表 +openGauss=# DROP TABLE products; +openGauss=# DROP TABLE newproducts; +``` + diff --git "a/content/zh/docs/Developerguide/MOT-SILO\345\242\236\345\274\272\347\211\271\346\200\247.md" "b/content/zh/docs/Developerguide/MOT-SILO\345\242\236\345\274\272\347\211\271\346\200\247.md" index d216b52f8..515aff2cf 100644 --- "a/content/zh/docs/Developerguide/MOT-SILO\345\242\236\345\274\272\347\211\271\346\200\247.md" +++ "b/content/zh/docs/Developerguide/MOT-SILO\345\242\236\345\274\272\347\211\271\346\200\247.md" @@ -1,8 +1,8 @@ # MOT SILO增强特性 -SILO凭借其基本算法流程,优于我们在研究实验中测试的许多其他符合ACID的OCC算法。然而,为了使SILO成为产品级机制,我们必须用许多在最初设计中缺失的基本功能来增强它,例如: +SILO 凭借其基本算法流程,优于我们在研究实验中测试的许多其他符合 ACID 的 OCC 算法。然而,为了使 SILO 成为产品级机制,我们必须用许多在最初设计中缺失的基本功能来增强它,例如: -- 新增对交互式事务的支持,其中事务的SQL运行在客户端实现,而不是作为服务器端的单个步骤运行。 +- 新增对交互式事务的支持,其中事务的 SQL 运行在客户端实现,而不是作为服务器端的单个步骤运行。 - 新增乐观插入。 - 新增对非唯一索引的支持。 - 新增对事务中写后读校验(RAW)的支持,使用户能够在提交之前查看更改。 @@ -11,5 +11,5 @@ SILO凭借其基本算法流程,优于我们在研究实验中测试的许多 - 新增对快速恢复的支持。 - 新增对分布式部署两阶段提交的支持。 -在不破坏原始SILO的可扩展特性的前提下添加这些增强是非常具有挑战性的。 +在不破坏原始 SILO 的可扩展特性的前提下添加这些增强是非常具有挑战性的。 diff --git "a/content/zh/docs/Developerguide/MOT-SQL\350\246\206\347\233\226\345\222\214\351\231\220\345\210\266.md" "b/content/zh/docs/Developerguide/MOT-SQL\350\246\206\347\233\226\345\222\214\351\231\220\345\210\266.md" index 0d4a9c3fd..e4b254601 100644 --- "a/content/zh/docs/Developerguide/MOT-SQL\350\246\206\347\233\226\345\222\214\351\231\220\345\210\266.md" +++ "b/content/zh/docs/Developerguide/MOT-SQL\350\246\206\347\233\226\345\222\214\351\231\220\345\210\266.md" @@ -1,26 +1,26 @@ # MOT SQL覆盖和限制 -MOT设计几乎能够覆盖SQL和未来特性集。例如,大多数支持标准的Postgres SQL,也支持常见的数据库特性,如存储过程、自定义函数等。 +MOT 设计几乎能够覆盖 SQL 和未来特性集。例如,大多数支持标准的 Postgres SQL ,也支持常见的数据库特性,如存储过程、自定义函数等。 -下面介绍各种SQL覆盖和限制。 +下面介绍各种 SQL 覆盖和限制。 ## 不支持的特性 -MOT不支持以下特性: +MOT 不支持以下特性: -- 跨引擎操作:不支持跨引擎(磁盘+MOT)的查询、视图或事务。计划于2021年实现该特性。 -- MVCC、隔离:不支持没有快照/可序列化隔离。计划于2021年实现该特性。 -- 原生编译(JIT):SQL覆盖有限。此外,不支持存储过程的JIT编译。 -- 本地内存限制为1GB。一个事务只能更改小于1GB的数据。 +- 跨引擎操作:不支持跨引擎(磁盘+MOT)的查询、视图或事务。计划于 2021 年实现该特性。 +- MVCC、隔离:不支持没有快照/可序列化隔离。计划于 2021 年实现该特性。 +- 原生编译(JIT):SQL覆盖有限。此外,不支持存储过程的 JIT 编译。 +- 本地内存限制为 1GB 。一个事务只能更改小于 1GB 的数据。 - 容量(数据+索引)受限于可用内存。未来将提供Anti-caching和数据分层功能。 - 不支持全文检索索引。 - 不支持逻辑复制特性。 -此外,下面详细列出了MOT、MOT索引、查询和DML语法的各种通用限制,以及查询原生编译的特点和限制。 +此外,下面详细列出了MOT、MOT索引、查询和 DML 语法的各种通用限制,以及查询原生编译的特点和限制。 ## MOT限制 -MOT功能限制: +MOT 功能限制: - 按范围分区 - AES加密 @@ -31,11 +31,11 @@ MOT功能限制: - DDL触发器 - “C”或“POSIX”以外的排序规则 -## 不支持的DDL操作 +## 不支持的 DDL 操作 - 修改表结构 -- 创建including表 -- 创建as select表 +- 创建 including 表 +- 创建 as select 表 - 按范围分区 - 创建无日志记录子句(no-logging clause)的表 - 创建可延迟约束主键(DEFERRABLE) @@ -79,7 +79,7 @@ MOT功能限制: - 无限制的varchar/character varying - HSTORE -## 不支持的索引DDL和索引 +## 不支持的索引 DDL 和索引 - 在小数和数值类型上创建索引 @@ -91,7 +91,7 @@ MOT功能限制: 键大小包括以字节为单位的列大小+列附加大小,这是维护索引所需的开销。下表列出了不同列类型的列附加大小。 - 此外,如果索引不是唯一的,额外需要8字节。 + 此外,如果索引不是唯一的,额外需要 8 字节。 下面是伪代码计算键大小: diff --git "a/content/zh/docs/Developerguide/MOT-VACUUM\346\270\205\347\220\206.md" "b/content/zh/docs/Developerguide/MOT-VACUUM\346\270\205\347\220\206.md" index 29b0668d7..9cac82242 100644 --- "a/content/zh/docs/Developerguide/MOT-VACUUM\346\270\205\347\220\206.md" +++ "b/content/zh/docs/Developerguide/MOT-VACUUM\346\270\205\347\220\206.md" @@ -1,30 +1,30 @@ # MOT VACUUM清理 -使用VACUUM进行垃圾收集,并有选择地分析数据库,如下所示。 +使用 VACUUM 进行垃圾收集,并有选择地分析数据库,如下所示。 - 【Postgres】 - 在Postgres中,VACUUM用于回收死元组占用的存储空间。在正常的Postgres操作中,删除的元组或因更新而作废的元组不会从表中物理删除。只能由VACUUM清理。因此,需要定期执行VACUUM,特别是在频繁更新的表上。 + 在 Postgres 中, VACUUM 用于回收死元组占用的存储空间。在正常的 Postgres 操作中,删除的元组或因更新而作废的元组不会从表中物理删除。只能由 VACUUM 清理。因此,需要定期执行 VACUUM ,特别是在频繁更新的表上。 - 【MOT扩展】 - MOT不需要周期性的VACUUM操作,因为新元组会重用失效元组和空元组。只有当MOT的大小急剧减少,并且不计划恢复到原来大小时,才需要VACUUM操作。 +MOT 不需要周期性的 VACUUM 操作,因为新元组会重用失效元组和空元组。只有当 MOT 的大小急剧减少,并且不计划恢复到原来大小时,才需要 VACUUM 操作。 - 例如,应用程序定期(如每周一次)大量删除表数据的同时插入新数据,这需要几天时间,并且不一定是相同数量的行。在这种情况下,可以使用VACUUM。 + 例如,应用程序定期(如每周一次)大量删除表数据的同时插入新数据,这需要几天时间,并且不一定是相同数量的行。在这种情况下,可以使用 VACUUM 。 - 对MOT的VACUUM操作总是被转换为带有排他表锁的VACUUM FULL。 + 对 MOT 的 VACUUM 操作总是被转换为带有排他表锁的 VACUUM FULL 。 - 支持的语法和限制 - 按规范激活VACUUM操作。 + 按规范激活 VACUUM 操作。 ``` VACUUM [FULL | ANALYZE] [ table ]; ``` - 只支持FULL和ANALYZE VACUUM两种类型。VACUUM操作只能对整个MOT进行。 + 只支持 FULL 和 ANALYZE VACUUM 两种类型。 VACUUM 操作只能对整个 MOT 进行。 - 不支持以下Postgres VACUUM选项: + 不支持以下 Postgres VACUUM 选项: - FREEZE - VERBOSE diff --git "a/content/zh/docs/Developerguide/MOT\344\271\220\350\247\202\345\271\266\345\217\221\346\216\247\345\210\266.md" "b/content/zh/docs/Developerguide/MOT\344\271\220\350\247\202\345\271\266\345\217\221\346\216\247\345\210\266.md" index 636406d3a..c4235e15d 100644 --- "a/content/zh/docs/Developerguide/MOT\344\271\220\350\247\202\345\271\266\345\217\221\346\216\247\345\210\266.md" +++ "b/content/zh/docs/Developerguide/MOT\344\271\220\350\247\202\345\271\266\345\217\221\346\216\247\345\210\266.md" @@ -1,12 +1,12 @@ # MOT乐观并发控制 -并发控制模块(简称CC模块)提供了主内存引擎的所有事务性需求。CC模块的主要目标是为主内存引擎提供各种隔离级别的支持。 +并发控制模块(简称 CC 模块)提供了主内存引擎的所有事务性需求。 CC 模块的主要目标是为主内存引擎提供各种隔离级别的支持。 -## 乐观OCC与悲观2PL +## 乐观 OCC 与悲观2PL 悲观2PL(2阶段锁定)和乐观并发控制(OCC)的功能差异在于对事务完整性分别采用悲观和乐观方法。 -基于磁盘的表使用悲观方法,这是最常用的数据库方法。MOT引擎使用的是乐观方法。 +基于磁盘的表使用悲观方法,这是最常用的数据库方法。 MOT 引擎使用的是乐观方法。 悲观方法和乐观方法的主要功能区别在于,如果冲突发生, @@ -19,37 +19,37 @@ 乐观方法开销较小,而且通常效率更高,原因之一是事务冲突在大多数应用程序中并不常见。 -当强制执行REPEATABLE READ隔离级别时,乐观方法与悲观方法之间的函数差异更大,而当强制执行SERIALIZABLE隔离级别时,函数差异最大。 +当强制执行 REPEATABLE READ 隔离级别时,乐观方法与悲观方法之间的函数差异更大,而当强制执行 SERIALIZABLE 隔离级别时,函数差异最大。 **悲观方法(MOT未使用)** -悲观并发控制(2PL,或称2阶段锁定)方法使用锁阻止在潜在冲突的发生。执行语句时应用锁,提交事务时释放锁。基于磁盘的行存储使用这种方法,并且添加了多版本并发控制(Multi-version Concurrency Control,MVCC)。 +悲观并发控制(2PL,或称 2 阶段锁定)方法使用锁阻止在潜在冲突的发生。执行语句时应用锁,提交事务时释放锁。基于磁盘的行存储使用这种方法,并且添加了多版本并发控制(Multi-version Concurrency Control,MVCC)。 -在2PL算法中,当一个事务正在写入行时,其他事务不能访问该行;当一个行正在读取时,其他事务不能覆盖该行。在访问时锁定每个行,以进行读写;在提交时释放锁。这些算法需要一个处理和避免死锁的方案。死锁可以通过计算等待图中的周期来检测。死锁可以通过使用TSO保持时序或使用某种回退方案来避免。 +在 2PL 算法中,当一个事务正在写入行时,其他事务不能访问该行;当一个行正在读取时,其他事务不能覆盖该行。在访问时锁定每个行,以进行读写;在提交时释放锁。这些算法需要一个处理和避免死锁的方案。死锁可以通过计算等待图中的周期来检测。死锁可以通过使用 TSO 保持时序或使用某种回退方案来避免。 **遇时锁定(ETL)** -另一种方法是遇时锁定(ETL),它以乐观的方式处理读取,但写入操作锁定它们访问的数据。因此,来自不同ETL事务的写入操作相互感知,并可以决定中止。实验证明,ETL通过两种方式提高OCC的性能: +另一种方法是遇时锁定(ETL),它以乐观的方式处理读取,但写入操作锁定它们访问的数据。因此,来自不同 ETL 事务的写入操作相互感知,并可以决定中止。实验证明, ETL 通过两种方式提高 OCC 的性能: -- 首先,ETL会在早期检测冲突,并通常能增加事务吞吐量。这是因为事务不会执行无用的操作。(通常)在提交时发现的冲突无法在不中止至少一个事务的情况下解决。 -- 其次,ETL写后读校验(RAW)运行高效,无需昂贵或复杂的机制。 +- 首先, ETL 会在早期检测冲突,并通常能增加事务吞吐量。这是因为事务不会执行无用的操作。(通常)在提交时发现的冲突无法在不中止至少一个事务的情况下解决。 +- 其次, ETL 写后读校验(RAW)运行高效,无需昂贵或复杂的机制。 **结论:** -OCC是大多数工作负载最快的选项。这一点我们在初步研究阶段已经发现。 +OCC 是大多数工作负载最快的选项。这一点我们在初步研究阶段已经发现。 其中一个原因是,当每个核执行多个线程时,锁很可能被交换线程持有,特别是在交互模式下。另一个原因是悲观算法涉及死锁检测(产生开销),并通常使用读写锁(比标准自旋锁效率低)。 -我们选择Silo是因为它比其他现有选项(如TicToc)简单,同时对大多数工作负载保持相同的性能。ETL有时比OCC更快,但它引入了假中止,可能会使用户混淆,而OCC则只在提交时中止。 +我们选择 Silo 是因为它比其他现有选项(如TicToc)简单,同时对大多数工作负载保持相同的性能。 ETL 有时比 OCC 更快,但它引入了假中止,可能会使用户混淆,而 OCC 则只在提交时中止。 -## OCC与2PL的区别举例 +## OCC与 2PL 的区别举例 -下面是会话同时更新同一个表时,两种用户体验的区别:悲观(针对基于磁盘的表)和乐观(针对MOT表)。 +下面是会话同时更新同一个表时,两种用户体验的区别:悲观(针对基于磁盘的表)和乐观(针对 MOT 表)。 本例中,使用如下表测试命令: ``` -table “TEST” – create table test (x int, y int, z int, primary key(x)); +table “TEST” – create table test (x int, y int , z int , primary key(x)); ``` 本示例描述同一测试的两个方面:用户体验(本示例中的操作)和重试要求。 @@ -60,9 +60,9 @@ table “TEST” – create table test (x int, y int, z int, primary key(x)); 以下两个会话执行尝试更新单个表的事务。 -WAIT LOCK操作发生,客户端体验是:会话2卡住,直到会话1完成COMMIT,会话2才能进行。 +WAIT LOCK 操作发生,客户端体验是:会话 2 卡住,直到会话 1 完成 COMMIT ,会话 2 才能进行。 -但是,使用这种方法时,两个会话都成功,并且不会发生异常中止(除非应用了SERIALIZABLE或REPEATABLE-READ隔离级别),这会导致整个事务需要重试。 +但是,使用这种方法时,两个会话都成功,并且不会发生异常中止(除非应用了 SERIALIZABLE 或REPEATABLE-READ隔离级别),这会导致整个事务需要重试。 **表 1** 悲观方法代码示例 @@ -123,16 +123,16 @@ WAIT LOCK操作发生,客户端体验是:会话2卡住,直到会话1完成 下面是一个乐观方法的例子。 -它描述了创建一个MOT表,然后有两个并发会话同时更新同一个MOT表的情况。 +它描述了创建一个 MOT 表,然后有两个并发会话同时更新同一个 MOT 表的情况。 ``` -create foreign table test (x int, y int, z int, primary key(x)); +create foreign table test (x int, y int , z int , primary key(x)); ``` -- OCC的优点是,在COMMIT之前没有锁。 +- OCC的优点是,在 COMMIT 之前没有锁。 - OCC的缺点是,如果另一个会话更新了相同的记录,则更新可能会失败。如果更新失败(在所有支持的隔离级别中),则必须重试整个会话\#2事务。 - 更新冲突由内核在提交时通过版本检查机制检测。 -- 会话2将不会等待其更新操作,并且由于在提交阶段检测到冲突而中止。 +- 会话 2 将不会等待其更新操作,并且由于在提交阶段检测到冲突而中止。 **表 2** 乐观方法代码示例——用于MOT diff --git "a/content/zh/docs/Developerguide/MOT\344\273\213\347\273\215.md" "b/content/zh/docs/Developerguide/MOT\344\273\213\347\273\215.md" index 314ee517a..43418c925 100644 --- "a/content/zh/docs/Developerguide/MOT\344\273\213\347\273\215.md" +++ "b/content/zh/docs/Developerguide/MOT\344\273\213\347\273\215.md" @@ -1,6 +1,6 @@ # MOT介绍 -本章介绍了openGauss内存优化表(Memory-Optimized Table,MOT)的特性及价值、关键技术、应用场景、性能基准和竞争优势。 +本章介绍了 openGauss 内存优化表(Memory-Optimized Table,MOT)的特性及价值、关键技术、应用场景、性能基准和竞争优势。 - **[MOT简介](MOT简介.md)** diff --git "a/content/zh/docs/Developerguide/MOT\344\275\216\345\273\266\350\277\237.md" "b/content/zh/docs/Developerguide/MOT\344\275\216\345\273\266\350\277\237.md" index 1f5ac0d22..c1e5c3701 100644 --- "a/content/zh/docs/Developerguide/MOT\344\275\216\345\273\266\350\277\237.md" +++ "b/content/zh/docs/Developerguide/MOT\344\275\216\345\273\266\350\277\237.md" @@ -5,10 +5,10 @@ **图 1** 低延迟(90th%)性能基准 ![](figures/低延迟(90th-)性能基准.png "低延迟(90th-)性能基准") -MOT的平均事务速度为2.5倍,MOT延迟为10.5ms,而基于磁盘的表延迟为23至25ms。 +MOT 的平均事务速度为2.5倍, MOT 延迟为10.5ms,而基于磁盘的表延迟为 23 至 25ms 。 >![](public_sys-resources/icon-note.gif) **说明:** ->计算平均数时,已考虑TPC-C的5个事务分布占比。有关更多信息,请参阅[MOT样例TPC-C基准](MOT样例TPC-C基准.md)中关于TPC-C事务的说明。 +>计算平均数时,已考虑TPC-C的 5 个事务分布占比。有关更多信息,请参阅[MOT样例TPC-C基准](MOT样例TPC-C基准.md)中关于TPC-C事务的说明。 **图 2** 低延迟(90th%,事务平均)性能基准 ![](figures/低延迟(90th-事务平均)性能基准.png "低延迟(90th-事务平均)性能基准") diff --git "a/content/zh/docs/Developerguide/MOT\344\275\277\347\224\250.md" "b/content/zh/docs/Developerguide/MOT\344\275\277\347\224\250.md" index 8d1178c5f..9f80ffd5d 100644 --- "a/content/zh/docs/Developerguide/MOT\344\275\277\347\224\250.md" +++ "b/content/zh/docs/Developerguide/MOT\344\275\277\347\224\250.md" @@ -1,28 +1,28 @@ # MOT使用 -使用MOT非常简单,以下几个小节将会进行描述。 +使用 MOT 非常简单,以下几个小节将会进行描述。 -openGauss允许应用程序使用MOT和基于标准磁盘的表。MOT适用于最活跃、高竞争和对吞吐量敏感的应用程序表,也可用于所有应用程序的表。 +openGauss 允许应用程序使用 MOT 和基于标准磁盘的表。 MOT 适用于最活跃、高竞争和对吞吐量敏感的应用程序表,也可用于所有应用程序的表。 -以下命令介绍如何创建MOT,以及如何将现有的基于磁盘的表转换为MOT,以加速应用程序的数据库相关性能。MOT尤其有利于已证明是瓶颈的表。 +以下命令介绍如何创建 MOT ,以及如何将现有的基于磁盘的表转换为 MOT ,以加速应用程序的数据库相关性能。 MOT 尤其有利于已证明是瓶颈的表。 工作流程概述 -以下是与使用MOT相关的任务的简单概述: +以下是与使用 MOT 相关的任务的简单概述: ![](figures/zh-cn_image_0280525209.png) - [授予用户权限](授予用户权限.md) - [创建/删除MOT](创建-删除MOT.md) -- [为MOT创建索引](为MOT创建索引.md) +- [为 MOT 创建索引](为 MOT 创建索引.md) -本小节还介绍了如何执行各种与MOT相关的附加任务,以及[MOT SQL覆盖和限制](MOT-SQL覆盖和限制.md)。 +本小节还介绍了如何执行各种与 MOT 相关的附加任务,以及[MOT SQL覆盖和限制](MOT-SQL覆盖和限制.md)。 - **[授予用户权限](授予用户权限.md)** - **[创建/删除MOT](创建-删除MOT.md)** -- **[为MOT创建索引](为MOT创建索引.md)** +- **[为 MOT 创建索引](为 MOT 创建索引.md)** - **[将磁盘表转换为MOT](将磁盘表转换为MOT.md)** diff --git "a/content/zh/docs/Developerguide/MOT\344\275\277\347\224\250\346\246\202\350\277\260.md" "b/content/zh/docs/Developerguide/MOT\344\275\277\347\224\250\346\246\202\350\277\260.md" index ec741fe10..ef11d1c86 100644 --- "a/content/zh/docs/Developerguide/MOT\344\275\277\347\224\250\346\246\202\350\277\260.md" +++ "b/content/zh/docs/Developerguide/MOT\344\275\277\347\224\250\346\246\202\350\277\260.md" @@ -1,18 +1,18 @@ # MOT使用概述 -MOT作为openGauss的一部分自动部署。有关如何计算和规划所需的内存和存储资源以维持工作负载的说明,请参阅[MOT准备](MOT准备.md)。参考[MOT部署](MOT部署.md)了解MOT中所有的配置,以及服务器优化的非必须选项。 +MOT 作为 openGauss 的一部分自动部署。有关如何计算和规划所需的内存和存储资源以维持工作负载的说明,请参阅[MOT准备](MOT准备.md)。参考[MOT部署](MOT部署.md)了解 MOT 中所有的配置,以及服务器优化的非必须选项。 -使用MOT的方法非常简单。MOT命令的语法与基于磁盘的表的语法相同,并支持大多数标准,如PostgreSQL SQL、DDL和DML命令和功能,如存储过程。只有MOT中的创建和删除表语句与openGauss中基于磁盘的表的语句不同。您可以参考[MOT使用](MOT使用.md)了解这两个简单命令的说明,如何将基于磁盘的表转换为MOT,如何使用查询原生编译和PREPARE语句获得更高的性能,以及了解外部工具支持和MOT引擎的限制。 +使用 MOT 的方法非常简单。 MOT 命令的语法与基于磁盘的表的语法相同,并支持大多数标准,如PostgreSQL SQL、DDL和 DML 命令和功能,如存储过程。只有 MOT 中的创建和删除表语句与 openGauss 中基于磁盘的表的语句不同。您可以参考[MOT使用](MOT使用.md)了解这两个简单命令的说明,如何将基于磁盘的表转换为 MOT ,如何使用查询原生编译和 PREPARE 语句获得更高的性能,以及了解外部工具支持和 MOT 引擎的限制。 [MOT管理](MOT管理.md)介绍了如何进行数据库维护,以及监控和分析日志和错误报告。最后,[MOT样例TPC-C基准](MOT样例TPC-C基准.md)介绍了如何执行标准TPC-C基准测试。 - 阅读以下内容了解如何使用MOT: - - - +

-
+ +

+
diff --git "a/content/zh/docs/Developerguide/MOT\345\205\263\351\224\256\346\212\200\346\234\257.md" "b/content/zh/docs/Developerguide/MOT\345\205\263\351\224\256\346\212\200\346\234\257.md" index 8d9514d98..f1a6a4bac 100644 --- "a/content/zh/docs/Developerguide/MOT\345\205\263\351\224\256\346\212\200\346\234\257.md" +++ "b/content/zh/docs/Developerguide/MOT\345\205\263\351\224\256\346\212\200\346\234\257.md" @@ -1,19 +1,19 @@ # MOT关键技术 -MOT的关键技术如下: +MOT 的关键技术如下: - 内存优化数据结构:以实现高并发吞吐量和可预测的低延迟为目标,所有数据和索引都在内存中,不使用中间页缓冲区,并使用持续时间最短的锁。数据结构和所有算法都是专门为内存设计而优化的。 -- 免锁事务管理:MOT在保证严格一致性和数据完整性的前提下,采用乐观的策略实现高并发和高吞吐。在事务过程中,MOT不会对正在更新的数据行的任何版本加锁,从而大大降低了一些大内存系统中的争用。事务中的乐观并发控制(Optimistic Concurrency Control,OCC)语句是在没有锁的情况下实现的,所有的数据修改都是在内存中专门用于私有事务的部分(也称为私有事务内存)中进行的。这就意味着在事务过程中,相关数据在私有事务内存中更新,从而实现了无锁读写;而且只有在提交阶段才会短时间加锁。更多详细信息,请参见[MOT并发控制机制](MOT并发控制机制.md)。 -- 免锁索引:由于内存表的数据和索引完全存储在内存中,因此拥有一个高效的索引数据结构和算法非常重要。MOT索引机制基于最先进的Masstree,这是一种用于多核系统的快速和可扩展的键值(Key Value,KV)存储索引,以B+树的Trie实现。通过这种方式,高并发工作负载在多核服务器上可以获得卓越的性能。同时MOT应用了各种先进的技术以优化性能,如优化锁方法、高速缓存感知和内存预取。 -- NUMA-aware的内存管理:MOT内存访问的设计支持非统一内存访问(NUMA)感知。NUMA-aware算法增强了内存中数据布局的性能,使线程访问物理上连接到线程运行的核心的内存。这是由内存控制器处理的,不需要通过使用互连(如英特尔QPI)进行额外的跳转。MOT的智能内存控制模块,为各种内存对象预先分配了内存池,提高了性能,减少了锁,保证了稳定性。事务的内存对象的分配始终是NUMA本地的。本地处理的对象会返回到池中。同时在事务中尽量减少系统内存分配(OS malloc)的使用,避免不必要的锁。 -- 高效持久性:日志和检查点是实现磁盘持久化的关键能力,也是ACID的关键要求之一(D代表持久性)。目前所有的磁盘(包括SSD和NVMe)都明显慢于内存,因此持久化是基于内存数据库引擎的瓶颈。作为一个基于内存的存储引擎,MOT的持久化设计必须实现各种各样的算法优化,以确保持久化的同时还能达到设计时的速度和吞吐量目标。这些优化包括: - - 并行日志,所有openGauss磁盘表都支持。 +- 免锁事务管理:MOT在保证严格一致性和数据完整性的前提下,采用乐观的策略实现高并发和高吞吐。在事务过程中, MOT 不会对正在更新的数据行的任何版本加锁,从而大大降低了一些大内存系统中的争用。事务中的乐观并发控制(Optimistic Concurrency Control,OCC)语句是在没有锁的情况下实现的,所有的数据修改都是在内存中专门用于私有事务的部分(也称为私有事务内存)中进行的。这就意味着在事务过程中,相关数据在私有事务内存中更新,从而实现了无锁读写;而且只有在提交阶段才会短时间加锁。更多详细信息,请参见[MOT并发控制机制](MOT并发控制机制.md)。 +- 免锁索引:由于内存表的数据和索引完全存储在内存中,因此拥有一个高效的索引数据结构和算法非常重要。 MOT 索引机制基于最先进的 Masstree ,这是一种用于多核系统的快速和可扩展的键值(Key Value,KV)存储索引,以B+树的 Trie 实现。通过这种方式,高并发工作负载在多核服务器上可以获得卓越的性能。同时 MOT 应用了各种先进的技术以优化性能,如优化锁方法、高速缓存感知和内存预取。 +- NUMA-aware的内存管理:MOT内存访问的设计支持非统一内存访问(NUMA)感知。NUMA-aware算法增强了内存中数据布局的性能,使线程访问物理上连接到线程运行的核心的内存。这是由内存控制器处理的,不需要通过使用互连(如英特尔QPI)进行额外的跳转。 MOT 的智能内存控制模块,为各种内存对象预先分配了内存池,提高了性能,减少了锁,保证了稳定性。事务的内存对象的分配始终是 NUMA 本地的。本地处理的对象会返回到池中。同时在事务中尽量减少系统内存分配(OS malloc)的使用,避免不必要的锁。 +- 高效持久性:日志和检查点是实现磁盘持久化的关键能力,也是 ACID 的关键要求之一(D代表持久性)。目前所有的磁盘(包括 SSD 和NVMe)都明显慢于内存,因此持久化是基于内存数据库引擎的瓶颈。作为一个基于内存的存储引擎, MOT 的持久化设计必须实现各种各样的算法优化,以确保持久化的同时还能达到设计时的速度和吞吐量目标。这些优化包括: + - 并行日志,所有 openGauss 磁盘表都支持。 - 每个事务的日志缓冲和无锁事务准备。 - 增量更新记录,即只记录变化。 - - 除了同步和异步之外,创新的NUMA感知组提交日志记录。 + - 除了同步和异步之外,创新的 NUMA 感知组提交日志记录。 - 最先进的数据库检查点(CALC)使内存和计算开销降到最低。 -- 高SQL覆盖率和功能集:MOT通过扩展的PostgreSQL外部数据封装(FDW)以及索引,几乎支持完整的SQL范围,包括存储过程、用户定义函数和系统函数调用。有关不支持的功能的列表,请参阅[MOT SQL覆盖和限制](MOT-SQL覆盖和限制.md)。 -- 使用PREPARE语句的查询原生编译:通过使用PREPARE客户端命令,可以以交互方式执行查询和事务语句。这些命令已被预编译成原生执行格式,也称为Code-Gen或即时(Just-in-Time,JIT)编译。这样可以实现平均30%的性能提升。在可能的情况下,应用编译和轻量级执行;否则,使用标准执行路径处理适用的查询。Cache Plan模块已针对OLTP进行了优化,在整个会话中甚至使用不同的绑定设置以及在不同的会话中重用编译结果。 -- MOT和openGauss数据库的无缝集成:MOT是一个高性能的面向内存优化的存储引擎,已集成在openGauss包中。MOT的主内存引擎和基于磁盘的存储引擎并存,以支持多种应用场景,同时在内部重用数据库辅助服务,如WAL重做日志、复制、检查点和恢复高可用性等。用户可以从基于磁盘的表和MOT的统一部署、配置和访问中受益。根据特定需求,灵活且低成本地选择使用哪种存储引擎。例如,把会导致瓶颈的高度性能敏感数据放入内存中。 +- 高 SQL 覆盖率和功能集:MOT通过扩展的 PostgreSQL 外部数据封装(FDW)以及索引,几乎支持完整的 SQL 范围,包括存储过程、用户定义函数和系统函数调用。有关不支持的功能的列表,请参阅[MOT SQL覆盖和限制](MOT-SQL覆盖和限制.md)。 +- 使用 PREPARE 语句的查询原生编译:通过使用 PREPARE 客户端命令,可以以交互方式执行查询和事务语句。这些命令已被预编译成原生执行格式,也称为Code-Gen或即时(Just-in-Time,JIT)编译。这样可以实现平均30%的性能提升。在可能的情况下,应用编译和轻量级执行;否则,使用标准执行路径处理适用的查询。 Cache Plan 模块已针对 OLTP 进行了优化,在整个会话中甚至使用不同的绑定设置以及在不同的会话中重用编译结果。 +- MOT和 openGauss 数据库的无缝集成:MOT是一个高性能的面向内存优化的存储引擎,已集成在 openGauss 包中。 MOT 的主内存引擎和基于磁盘的存储引擎并存,以支持多种应用场景,同时在内部重用数据库辅助服务,如 WAL 重做日志、复制、检查点和恢复高可用性等。用户可以从基于磁盘的表和 MOT 的统一部署、配置和访问中受益。根据特定需求,灵活且低成本地选择使用哪种存储引擎。例如,把会导致瓶颈的高度性能敏感数据放入内存中。 diff --git "a/content/zh/docs/Developerguide/MOT\345\206\205\345\255\230\345\222\214\345\255\230\345\202\250\350\247\204\345\210\222.md" "b/content/zh/docs/Developerguide/MOT\345\206\205\345\255\230\345\222\214\345\255\230\345\202\250\350\247\204\345\210\222.md" index 2ae27128f..aeaa10ce3 100644 --- "a/content/zh/docs/Developerguide/MOT\345\206\205\345\255\230\345\222\214\345\255\230\345\202\250\350\247\204\345\210\222.md" +++ "b/content/zh/docs/Developerguide/MOT\345\206\205\345\255\230\345\222\214\345\255\230\345\202\250\350\247\204\345\210\222.md" @@ -4,10 +4,10 @@ ## MOT内存规划 -MOT是一种内存数据库存储引擎(IMDB),其中所有表和索引完全驻留在内存中。 +MOT 是一种内存数据库存储引擎(IMDB),其中所有表和索引完全驻留在内存中。 >![](public_sys-resources/icon-note.gif) **说明:** ->内存存储是易失的,需要电力来维护所存储的信息。磁盘存储是持久的,写入磁盘是非易失性存储。MOT使用两种存储,既把所有数据保存在内存中,也把事务性更改同步(通过WAL日志记录)到磁盘上以保持严格一致性(使用同步日志记录模式)。 +>内存存储是易失的,需要电力来维护所存储的信息。磁盘存储是持久的,写入磁盘是非易失性存储。 MOT 使用两种存储,既把所有数据保存在内存中,也把事务性更改同步(通过 WAL 日志记录)到磁盘上以保持严格一致性(使用同步日志记录模式)。 服务器上必须有足够的物理内存以维持内存表的状态,并满足工作负载和数据的增长。所有这些都是在传统的基于磁盘的引擎、表和会话所需的内存之外的要求。因此,提前规划好足够的内存来容纳这些内容是非常有必要的。 @@ -15,17 +15,17 @@ MOT是一种内存数据库存储引擎(IMDB),其中所有表和索引完 - **内存配置** - openGauss数据库和标准Postgres类似,其内存上限是由max\_process\_memory设置的,该上限在postgresql.conf文件中定义。MOT及其所有组件和线程,都驻留在openGauss进程中。因此,分配给MOT的内存也是在整个openGauss数据库进程的max\_process\_memory定义的上限内分配。 +openGauss 数据库和标准 Postgres 类似,其内存上限是由max\_process\_memory设置的,该上限在postgresql.conf文件中定义。 MOT 及其所有组件和线程,都驻留在 openGauss 进程中。因此,分配给 MOT 的内存也是在整个 openGauss 数据库进程的max\_process\_memory定义的上限内分配。 - MOT为自己保留的内存是max\_process\_memory的一部分。可以通过百分比或通过小于max\_process\_memory的绝对值定义。这个部分在mot.conf配置文件中由\_mot\_\_memory配置项定义。 +MOT 为自己保留的内存是max\_process\_memory的一部分。可以通过百分比或通过小于max\_process\_memory的绝对值定义。这个部分在mot.conf配置文件中由\_mot\_\_memory配置项定义。 - max\_process\_memory中可以除了被MOT使用的部分之外,必须为Postgres(openGauss)封装留下至少2GB的可用空间。为了确保这一点,MOT在数据库启动过程中会进行如下校验: + max\_process\_memory中可以除了被 MOT 使用的部分之外,必须为Postgres(openGauss)封装留下至少 2GB 的可用空间。为了确保这一点, MOT 在数据库启动过程中会进行如下校验: ``` (max_mot_global_memory + max_mot_local_memory) + 2GB < max_process_memory ``` - 如果违反此限制,则调整MOT内存内部限制,最大可能地满足上述限制范围。该调整在启动时进行,并据此计算MOT最大内存值。 + 如果违反此限制,则调整 MOT 内存内部限制,最大可能地满足上述限制范围。该调整在启动时进行,并据此计算 MOT 最大内存值。 >![](public_sys-resources/icon-note.gif) **说明:** >MOT最大内存值是配置或调整值(max\_mot\_global\_memory + max\_mot\_local\_memory)的逻辑计算值。 @@ -38,7 +38,7 @@ MOT是一种内存数据库存储引擎(IMDB),其中所有表和索引完 [WARNING] MOT engine maximum memory definitions (global: 9830 MB, local: 1843 MB, session large store: 0 MB, total: 11673 MB) breach GaussDB maximum process memory restriction (12288 MB) and/or total system memory (64243 MB). MOT values shall be adjusted accordingly to preserve required gap (2048 MB). ``` - 以下警告消息示例提示MOT正在自动调整内存限制: + 以下警告消息示例提示 MOT 正在自动调整内存限制: ``` [WARNING] Adjusting MOT memory limits: global = 8623 MB, local = 1617 MB, session large store = 0 MB, total = 10240 MB @@ -46,34 +46,34 @@ MOT是一种内存数据库存储引擎(IMDB),其中所有表和索引完 新内存限制仅在此处显示。 - 此外,当总内存使用量接近所选内存限制时,MOT不再允许插入额外数据。不再允许额外数据插入的阈值即是MOT最大内存百分比(如上所述,这是一个计算值)。MOT最大内存百分比默认值为90,即90%。尝试添加超过此阈值的额外数据时,会向用户返回错误,并且也会注册到数据库日志文件中。 + 此外,当总内存使用量接近所选内存限制时, MOT 不再允许插入额外数据。不再允许额外数据插入的阈值即是 MOT 最大内存百分比(如上所述,这是一个计算值)。 MOT 最大内存百分比默认值为 90 ,即90%。尝试添加超过此阈值的额外数据时,会向用户返回错误,并且也会注册到数据库日志文件中。 - **最小值和最大值** - 为了确保内存安全,MOT根据最小的全局和本地设置预先分配内存。数据库管理员应指定MOT和会话维持工作负载所需的最小内存量。这样可以确保即使另一个消耗内存的应用程序与数据库在同一台服务器上运行,并且与数据库竞争内存资源,也能够将这个最小的内存分配给MOT。最大值用于限制内存增长。 + 为了确保内存安全, MOT 根据最小的全局和本地设置预先分配内存。数据库管理员应指定 MOT 和会话维持工作负载所需的最小内存量。这样可以确保即使另一个消耗内存的应用程序与数据库在同一台服务器上运行,并且与数据库竞争内存资源,也能够将这个最小的内存分配给 MOT 。最大值用于限制内存增长。 - **全局和本地** - MOT使用的内存由两部分组成: +MOT 使用的内存由两部分组成: - - 全局内存:全局内存是一个长期内存池,包含MOT的数据和索引。它平均分布在NUMA节点,由所有CPU核共享。 + - 全局内存:全局内存是一个长期内存池,包含 MOT 的数据和索引。它平均分布在 NUMA 节点,由所有 CPU 核共享。 - 本地内存:本地内存是用于短期对象的内存池。它的主要使用者是处理事务的会话。这些会话将数据更改存储在专门用于相关特定事务的内存部分(称为事务专用内存)。在提交阶段,数据更改将被移动到全局内存中。内存对象分配以NUMA-local方式执行,以实现尽可能低的延迟。 被释放的对象被放回相关的内存池中。在事务期间尽量少使用操作系统内存分配(malloc)函数,避免不必要的锁和锁存。 - 这两个内存的分配由专用的min/max\_mot\_global\_memory和min/max\_mot\_local\_memory设置控制。如果MOT全局内存使用量太接近最大值,则MOT会保护自身,不接受新数据。超出此限制的内存分配尝试将被拒绝,并向用户报告错误。 + 这两个内存的分配由专用的min/max\_mot\_global\_memory和min/max\_mot\_local\_memory设置控制。如果 MOT 全局内存使用量太接近最大值,则 MOT 会保护自身,不接受新数据。超出此限制的内存分配尝试将被拒绝,并向用户报告错误。 - **最低内存要求** - 在开始执行对MOT性能的最小评估前,请确保: + 在开始执行对 MOT 性能的最小评估前,请确保: - 除了磁盘表缓冲区和额外的内存,max\_process\_memory(在postgresql.conf中定义)还有足够的容量用于MOT和会话(由mix/max\_mot\_global\_memory和mix/max\_mot\_local\_memory配置)。对于简单的测试,可以使用mot.conf的默认设置。 + 除了磁盘表缓冲区和额外的内存,max\_process\_memory(在postgresql.conf中定义)还有足够的容量用于 MOT 和会话(由mix/max\_mot\_global\_memory和mix/max\_mot\_local\_memory配置)。对于简单的测试,可以使用mot.conf的默认设置。 - **生产过程中实际内存需求** - 在典型的OLTP工作负载中,平均读写比例为80:20,每个表的MOT内存使用率比基于磁盘的表高60%(包括数据和索引)。这是因为使用了更优化的数据结构和算法,使得访问速度更快,并具有CPU缓存感知和内存预取功能。 + 在典型的 OLTP 工作负载中,平均读写比例为80:20,每个表的 MOT 内存使用率比基于磁盘的表高60%(包括数据和索引)。这是因为使用了更优化的数据结构和算法,使得访问速度更快,并具有 CPU 缓存感知和内存预取功能。 特定应用程序的实际内存需求取决于数据量、预期工作负载,特别是数据增长。 @@ -81,11 +81,11 @@ MOT是一种内存数据库存储引擎(IMDB),其中所有表和索引完 要规划最大全局内存,需满足: - 1. 确定特定磁盘表(包括其数据和所有索引)的大小。如下统计查询可以确定customer表的数据大小和customer\_pkey索引大小: + 1. 确定特定磁盘表(包括其数据和所有索引)的大小。如下统计查询可以确定 customer 表的数据大小和customer\_pkey索引大小: - 数据大小:选择pg\_relation\_size('customer'); - 索引:选择pg\_relation\_size('customer\_pkey'); - 2. 额外增加60%的内存,相对于基于磁盘的数据和索引的当前大小,这是MOT中的常见要求。 + 2. 额外增加60%的内存,相对于基于磁盘的数据和索引的当前大小,这是 MOT 中的常见要求。 3. 额外增加数据预期增长百分比。例如: 5%月增长率 = 80%年增长率(1.05^12)。因此,为了维持年增长,需分配比表当前使用的还多80%的内存。 @@ -95,7 +95,7 @@ MOT是一种内存数据库存储引擎(IMDB),其中所有表和索引完 - **最大本地内存规划:并发会话支持** - 本地内存需求主要是并发会话数量的函数。平均会话的典型OLTP工作负载最大占用8MB。此值乘以会话的数量,再加一点额外的值。 + 本地内存需求主要是并发会话数量的函数。平均会话的典型 OLTP 工作负载最大占用 8MB 。此值乘以会话的数量,再加一点额外的值。 可以通过这种方式进行内存计算,然后进行微调: @@ -103,11 +103,11 @@ MOT是一种内存数据库存储引擎(IMDB),其中所有表和索引完 SESSION_COUNT * SESSION_SIZE (8 MB) + SOME_EXTRA (100MB should be enough) ``` - 默认指定Postgres最大进程内存(默认为12GB)的15%。相当于1.8GB可满足230个会话,即max\_mot\_local内存需求。实际设置可以用绝对值或Postgres max\_process\_memory的百分比来定义。具体的值通常在部署期间进行微调。 + 默认指定 Postgres 最大进程内存(默认为12GB)的15%。相当于1.8GB可满足 230 个会话,即max\_mot\_local内存需求。实际设置可以用绝对值或Postgres max\_process\_memory的百分比来定义。具体的值通常在部署期间进行微调。 - **异常大事务** - 某些事务非常大,因为它们将更改应用于大量行。这可能导致单个会话的本地内存增加到允许的最大限制,即1GB。例如: + 某些事务非常大,因为它们将更改应用于大量行。这可能导致单个会话的本地内存增加到允许的最大限制,即 1GB 。例如: ``` delete from SOME_VERY_LARGE_TABLE; @@ -121,11 +121,11 @@ MOT是一种内存数据库存储引擎(IMDB),其中所有表和索引完 ## 存储IO -MOT是一个内存优化的持久化数据库存储引擎。需要磁盘驱动器来存储WAL重做日志和定期检查点。 +MOT 是一个内存优化的持久化数据库存储引擎。需要磁盘驱动器来存储 WAL 重做日志和定期检查点。 -推荐采用低延迟的存储设备,如配置RAID-1的SSD、NVMe或者任何企业级存储系统。当使用适当的硬件时,数据库事务处理和竞争将成为瓶颈,而非IO。 +推荐采用低延迟的存储设备,如配置RAID-1的SSD、NVMe或者任何企业级存储系统。当使用适当的硬件时,数据库事务处理和竞争将成为瓶颈,而非 IO 。 -由于持久性存储比RAM内存慢得多,因此IO操作(日志和检查点)可能成为内存中数据库和内存优化数据库的瓶颈。但是,MOT具有针对现代硬件(如SSD、NVMe)进行优化的高效持久性设计和实现。此外,MOT最小化和优化了写入点(例如,使用并行日志记录、每个事务的单日志记录和NUMA-aware事务组写入),并且最小化了写入磁盘的数据(例如,只把更改记录的增量或更新列记录到日志,并且只记录提交阶段的事务)。 +由于持久性存储比 RAM 内存慢得多,因此 IO 操作(日志和检查点)可能成为内存中数据库和内存优化数据库的瓶颈。但是, MOT 具有针对现代硬件(如SSD、NVMe)进行优化的高效持久性设计和实现。此外, MOT 最小化和优化了写入点(例如,使用并行日志记录、每个事务的单日志记录和NUMA-aware事务组写入),并且最小化了写入磁盘的数据(例如,只把更改记录的增量或更新列记录到日志,并且只记录提交阶段的事务)。 ## 容量需求 @@ -143,19 +143,19 @@ MOT是一个内存优化的持久化数据库存储引擎。需要磁盘驱动 >![](public_sys-resources/icon-note.gif) **说明:** ->在下一个openGauss版本中,MOT将有一个增量检查点特性,这将大大降低存储容量需求。 +>在下一个 openGauss 版本中, MOT 将有一个增量检查点特性,这将大大降低存储容量需求。 - **日志记录** - MOT日志记录与基于磁盘的表的其它记录写入同一个数据库事务日志。 +MOT 日志记录与基于磁盘的表的其它记录写入同一个数据库事务日志。 日志的大小取决于事务吞吐量、数据更改的大小和检查点之间的时间(每次检查点,重做日志被截断并重新开始扩展)。 - 与基于磁盘的表相比,MOT使用较少的日志带宽和较低的IO争用。这由多种机制实现。 + 与基于磁盘的表相比, MOT 使用较少的日志带宽和较低的 IO 争用。这由多种机制实现。 - 例如,MOT不会在事务完成之前记录每个操作。它只在提交阶段记录,并且只记录更新的增量记录(不像基于磁盘的表那样的完整记录)。 + 例如, MOT 不会在事务完成之前记录每个操作。它只在提交阶段记录,并且只记录更新的增量记录(不像基于磁盘的表那样的完整记录)。 - 为了确保日志IO设备不会成为瓶颈,日志文件必须放在具有低延迟的驱动器上。 + 为了确保日志 IO 设备不会成为瓶颈,日志文件必须放在具有低延迟的驱动器上。 >![](public_sys-resources/icon-note.gif) **说明:** diff --git "a/content/zh/docs/Developerguide/MOT\345\207\206\345\244\207.md" "b/content/zh/docs/Developerguide/MOT\345\207\206\345\244\207.md" index d5e25064d..7c45d89e7 100644 --- "a/content/zh/docs/Developerguide/MOT\345\207\206\345\244\207.md" +++ "b/content/zh/docs/Developerguide/MOT\345\207\206\345\244\207.md" @@ -1,6 +1,6 @@ # MOT准备 -下文介绍了使用MOT的前提条件以及内存和存储规划。 +下文介绍了使用 MOT 的前提条件以及内存和存储规划。 - **[前提条件](前提条件.md)** diff --git "a/content/zh/docs/Developerguide/MOT\345\244\215\345\210\266\345\222\214\351\253\230\345\217\257\347\224\250.md" "b/content/zh/docs/Developerguide/MOT\345\244\215\345\210\266\345\222\214\351\253\230\345\217\257\347\224\250.md" index 90c142435..079b2ff91 100644 --- "a/content/zh/docs/Developerguide/MOT\345\244\215\345\210\266\345\222\214\351\253\230\345\217\257\347\224\250.md" +++ "b/content/zh/docs/Developerguide/MOT\345\244\215\345\210\266\345\222\214\351\253\230\345\217\257\347\224\250.md" @@ -1,11 +1,11 @@ # MOT复制和高可用 -由于MOT集成到openGauss中,并且使用或支持其复制和高可用,因此,MOT原厂功能即支持同步复制和异步复制。 +由于 MOT 集成到 openGauss 中,并且使用或支持其复制和高可用,因此, MOT 原厂功能即支持同步复制和异步复制。 openGauss gs\_ctl工具用于可用性控制和数据库操作。这包括gs\_ctl切换、gs\_ctl故障切换、gs\_ctl构建等。 -有关更多信息,请参见openGauss工具参考。 +有关更多信息,请参见 openGauss 工具参考。 - 配置复制和高可用性。 -- 请参考openGauss相关文档。 +- 请参考 openGauss 相关文档。 diff --git "a/content/zh/docs/Developerguide/MOT\345\244\226\351\203\250\346\224\257\346\214\201\345\267\245\345\205\267.md" "b/content/zh/docs/Developerguide/MOT\345\244\226\351\203\250\346\224\257\346\214\201\345\267\245\345\205\267.md" index d7f2ec242..72c92dc2a 100644 --- "a/content/zh/docs/Developerguide/MOT\345\244\226\351\203\250\346\224\257\346\214\201\345\267\245\345\205\267.md" +++ "b/content/zh/docs/Developerguide/MOT\345\244\226\351\203\250\346\224\257\346\214\201\345\267\245\345\205\267.md" @@ -1,28 +1,28 @@ # MOT外部支持工具 -为了支持MOT,修改了以下外部openGauss工具。请确保使用的工具是最新版本。下面将介绍与MOT相关的用法。有关这些工具及其使用方法的完整说明,请参阅openGauss工具参考。 +为了支持 MOT ,修改了以下外部 openGauss 工具。请确保使用的工具是最新版本。下面将介绍与 MOT 相关的用法。有关这些工具及其使用方法的完整说明,请参阅 openGauss 工具参考。 ## gs\_ctl(全量和增量) 此工具用于从主服务器创建备服务器,以及当服务器的时间线偏离后,将服务器与其副本进行同步。 -在操作结束时,工具将获取最新的MOT检查点,同时考虑checkpoint\_dir配置值。 +在操作结束时,工具将获取最新的 MOT 检查点,同时考虑checkpoint\_dir配置值。 检查点从源服务器的checkpoint\_dir读取到目标服务器的checkpoint\_dir。 -目前MOT不支持增量检查点。因此,gs\_ctl增量构建对于MOT来说不是以增量方式工作,而是以全量方式工作。Postgres磁盘表仍然可以增量构建。 +目前 MOT 不支持增量检查点。因此,gs\_ctl增量构建对于 MOT 来说不是以增量方式工作,而是以全量方式工作。 Postgres 磁盘表仍然可以增量构建。 ## gs\_basebackup gs\_basebackup用于准备运行中服务器的基础备份,不影响其他数据库客户端。 -MOT检查点也会在操作结束时获取。但是,检查点的位置是从源服务器中的checkpoint\_dir获取的,并传输到源数据目录中,以便正确备份。 +MOT 检查点也会在操作结束时获取。但是,检查点的位置是从源服务器中的checkpoint\_dir获取的,并传输到源数据目录中,以便正确备份。 ## gs\_dump -gs\_dump用于将数据库模式和数据导出到文件中。支持MOT。 +gs\_dump用于将数据库模式和数据导出到文件中。支持 MOT 。 ## gs\_restore -gs\_restore用于从文件中导入数据库模式和数据。支持MOT。 +gs\_restore用于从文件中导入数据库模式和数据。支持 MOT 。 diff --git "a/content/zh/docs/Developerguide/MOT\345\271\266\345\217\221\346\216\247\345\210\266\346\234\272\345\210\266.md" "b/content/zh/docs/Developerguide/MOT\345\271\266\345\217\221\346\216\247\345\210\266\346\234\272\345\210\266.md" index c935e9f3a..deb84c0b2 100644 --- "a/content/zh/docs/Developerguide/MOT\345\271\266\345\217\221\346\216\247\345\210\266\346\234\272\345\210\266.md" +++ "b/content/zh/docs/Developerguide/MOT\345\271\266\345\217\221\346\216\247\345\210\266\346\234\272\345\210\266.md" @@ -1,11 +1,11 @@ # MOT并发控制机制 -通过大量研究,我们找到了最佳的并发控制机制,结论为:基于SILO的OCC算法是MOT中最符合ACID特性的OCC算法。SILO为满足MOT的挑战性需求提供了最好的基础。 +通过大量研究,我们找到了最佳的并发控制机制,结论为:基于 SILO 的 OCC 算法是 MOT 中最符合 ACID 特性的 OCC 算法。 SILO 为满足 MOT 的挑战性需求提供了最好的基础。 >![](public_sys-resources/icon-note.gif) **说明:** >MOT完全符合原子性、一致性、隔离性、持久性(ACID)特性,如[MOT简介](MOT简介.md)所述。 -下面介绍MOT的并发控制机制。 +下面介绍 MOT 的并发控制机制。 - **[MOT本地内存和全局内存](MOT本地内存和全局内存.md)** diff --git "a/content/zh/docs/Developerguide/MOT\345\272\224\347\224\250\345\234\272\346\231\257.md" "b/content/zh/docs/Developerguide/MOT\345\272\224\347\224\250\345\234\272\346\231\257.md" index cdfb36cbe..85ee0115e 100644 --- "a/content/zh/docs/Developerguide/MOT\345\272\224\347\224\250\345\234\272\346\231\257.md" +++ "b/content/zh/docs/Developerguide/MOT\345\272\224\347\224\250\345\234\272\346\231\257.md" @@ -1,16 +1,16 @@ # MOT应用场景 -MOT可以根据负载的特点,显著加快应用程序的整体性能。MOT通过提高数据访问和事务执行的效率,并通过消除并发执行事务之间的锁和锁存争用,最大程度地减少重定向,从而提高了事务处理的性能。 +MOT 可以根据负载的特点,显著加快应用程序的整体性能。 MOT 通过提高数据访问和事务执行的效率,并通过消除并发执行事务之间的锁和锁存争用,最大程度地减少重定向,从而提高了事务处理的性能。 -MOT的极速不仅因为它在内存中,还因为它围绕并发内存使用管理进行了优化。数据存储、访问和处理算法从头开始设计,以利用内存和高并发计算的最新先进技术。 +MOT 的极速不仅因为它在内存中,还因为它围绕并发内存使用管理进行了优化。数据存储、访问和处理算法从头开始设计,以利用内存和高并发计算的最新先进技术。 -openGauss允许应用程序随意组合MOT和基于标准磁盘的表。对于启用已证明是瓶颈的最活跃、高争用和对性能敏感的应用程序表,以及需要可预测的低延迟访问和高吞吐量的表来说,MOT特别有用。 +openGauss 允许应用程序随意组合 MOT 和基于标准磁盘的表。对于启用已证明是瓶颈的最活跃、高争用和对性能敏感的应用程序表,以及需要可预测的低延迟访问和高吞吐量的表来说, MOT 特别有用。 -MOT可用于各种应用,例如: +MOT 可用于各种应用,例如: -- 高吞吐事务处理:这是使用MOT的主要场景,因为它支持海量事务,同时要求单个事务的延迟较低。这类应用的例子有实时决策系统、支付系统、金融工具交易、体育博彩、移动游戏、广告投放等。 -- 性能瓶颈加速:存在高争用现象的表可以通过使用MOT受益,即使该表是磁盘表。由于延迟更低、竞争和锁更少以及服务器吞吐量能力增加,此类表(除了相关表和在查询和事务中一起引用的表之外)的转换使得性能显著提升。 -- 消除中间层缓存:云计算和移动应用往往会有周期性或峰值的高工作负载。此外,许多应用都有80%以上负载是读负载,并伴有频繁的重复查询。为了满足峰值负载单独要求,以及降低响应延迟提供最佳的用户体验,应用程序通常会部署中间缓存层。这样的附加层增加了开发的复杂性和时间,也增加了运营成本。MOT提供了一个很好的替代方案,通过一致的高性能数据存储来简化应用架构,缩短开发周期,降低CAPEX和OPEX成本。 -- 大规模流数据提取:MOT可以满足云端(针对移动、M2M和物联网)、事务处理(Transactional Processing,TP)、分析处理(Analytical Processing,AP)和机器学习(Machine Learning,ML)的大规模流数据的提取要求。MOT尤其擅长持续快速地同时提取来自许多不同来源的大量数据。这些数据可以在以后进行处理、转换,并在速度较慢的基于磁盘的表中进行移动。另外,MOT还可以查询到一致的、最新的数据,从而得出实时结果。在有许多实时数据流的物联网和云计算应用中,通常会有专门的数据摄取和处理。例如,一个Apache Kafka集群可以用来提取10万个事件/秒的数据,延迟为10ms。一个周期性的批处理任务会将收集到的数据收集起来,并将转换格式,放入关系型数据库中进行进一步分析。MOT可以通过将数据流直接存储在MOT关系表中,为分析和决策做好准备,从而支持这样的场景(同时消除单独的数据处理层)。这样可以更快地收集和处理数据,MOT避免了代价高昂的分层和缓慢的批处理,提高了一致性,增加了分析数据的实时性,同时降低了总拥有成本(Total Cost of Ownership,TCO)。 -- 降低TCO:提高资源利用率和消除中间层可以节省30%到90%的TCO。友商案例:[MemSQL](https://www.memsql.com/blog/epigen-powers-facial-recognition-in-the-cloud-with-memsql-case-study/)、[Azure](https://azure.microsoft.com/es-es/blog/azure-sql-database-in-memory-performance/)。 +- 高吞吐事务处理:这是使用 MOT 的主要场景,因为它支持海量事务,同时要求单个事务的延迟较低。这类应用的例子有实时决策系统、支付系统、金融工具交易、体育博彩、移动游戏、广告投放等。 +- 性能瓶颈加速:存在高争用现象的表可以通过使用 MOT 受益,即使该表是磁盘表。由于延迟更低、竞争和锁更少以及服务器吞吐量能力增加,此类表(除了相关表和在查询和事务中一起引用的表之外)的转换使得性能显著提升。 +- 消除中间层缓存:云计算和移动应用往往会有周期性或峰值的高工作负载。此外,许多应用都有80%以上负载是读负载,并伴有频繁的重复查询。为了满足峰值负载单独要求,以及降低响应延迟提供最佳的用户体验,应用程序通常会部署中间缓存层。这样的附加层增加了开发的复杂性和时间,也增加了运营成本。 MOT 提供了一个很好的替代方案,通过一致的高性能数据存储来简化应用架构,缩短开发周期,降低 CAPEX 和 OPEX 成本。 +- 大规模流数据提取:MOT可以满足云端(针对移动、M2M和物联网)、事务处理(Transactional Processing,TP)、分析处理(Analytical Processing,AP)和机器学习(Machine Learning,ML)的大规模流数据的提取要求。 MOT 尤其擅长持续快速地同时提取来自许多不同来源的大量数据。这些数据可以在以后进行处理、转换,并在速度较慢的基于磁盘的表中进行移动。另外, MOT 还可以查询到一致的、最新的数据,从而得出实时结果。在有许多实时数据流的物联网和云计算应用中,通常会有专门的数据摄取和处理。例如,一个 Apache Kafka 集群可以用来提取 10 万个事件/秒的数据,延迟为 10ms 。一个周期性的批处理任务会将收集到的数据收集起来,并将转换格式,放入关系型数据库中进行进一步分析。 MOT 可以通过将数据流直接存储在 MOT 关系表中,为分析和决策做好准备,从而支持这样的场景(同时消除单独的数据处理层)。这样可以更快地收集和处理数据, MOT 避免了代价高昂的分层和缓慢的批处理,提高了一致性,增加了分析数据的实时性,同时降低了总拥有成本(Total Cost of Ownership,TCO)。 +- 降低TCO:提高资源利用率和消除中间层可以节省30%到90%的 TCO 。友商案例:[MemSQL](https://www.memsql.com/blog/epigen-powers-facial-recognition-in-the-cloud-with-memsql-case-study/)、[Azure](https://azure.microsoft.com/es-es/blog/azure-sql-database-in-memory-performance/)。 diff --git "a/content/zh/docs/Developerguide/MOT\346\200\247\350\203\275\345\237\272\345\207\206.md" "b/content/zh/docs/Developerguide/MOT\346\200\247\350\203\275\345\237\272\345\207\206.md" index 966a4e64f..0b19a531c 100644 --- "a/content/zh/docs/Developerguide/MOT\346\200\247\350\203\275\345\237\272\345\207\206.md" +++ "b/content/zh/docs/Developerguide/MOT\346\200\247\350\203\275\345\237\272\345\207\206.md" @@ -2,18 +2,18 @@ 我们的性能测试是基于业界和学术界通用的TPC-C基准。 -测试使用了BenchmarkSQL(请参见[MOT样例TPC-C基准](MOT样例TPC-C基准.md)),并且使用交互式SQL命令而不是存储过程来生成工作负载。 +测试使用了BenchmarkSQL(请参见[MOT样例TPC-C基准](MOT样例TPC-C基准.md)),并且使用交互式 SQL 命令而不是存储过程来生成工作负载。 >![](public_sys-resources/icon-note.gif) **说明:** ->使用存储过程方法可能会产生更高的性能结果,因为它需要大大减少网络往返和数据库封装SQL处理周期。 +>使用存储过程方法可能会产生更高的性能结果,因为它需要大大减少网络往返和数据库封装 SQL 处理周期。 -评估openGauss MOT性能和磁盘性能的所有测试都使用了同步日志记录和在MOT中优化的group-commit=on版本。 +评估 openGauss MOT 性能和磁盘性能的所有测试都使用了同步日志记录和在 MOT 中优化的group-commit=on版本。 -最后我们进行了额外测试,评估MOT快速采集大量数据的能力,并将其作为中间层数据采集解决方案的替代方案。 +最后我们进行了额外测试,评估 MOT 快速采集大量数据的能力,并将其作为中间层数据采集解决方案的替代方案。 -2020年6月完成全部测试。 +2020 年 6 月完成全部测试。 -下面是各种类型的MOT性能基准: +下面是各种类型的 MOT 性能基准: - **[MOT硬件](MOT硬件.md)** @@ -23,7 +23,7 @@ - **[MOT低延迟](MOT低延迟.md)** -- **[MOT恢复时间目标(RTO)和冷启动时间](MOT恢复时间目标_RTO和冷启动时间.md)** +- **[MOT恢复时间目标(RTO)和冷启动时间](MOT恢复时间目标 _RTO 和冷启动时间.md)** - **[MOT资源利用率](MOT资源利用率.md)** diff --git "a/content/zh/docs/Developerguide/MOT\346\201\242\345\244\215.md" "b/content/zh/docs/Developerguide/MOT\346\201\242\345\244\215.md" index 3ee82dfda..2554d54f2 100644 --- "a/content/zh/docs/Developerguide/MOT\346\201\242\345\244\215.md" +++ "b/content/zh/docs/Developerguide/MOT\346\201\242\345\244\215.md" @@ -1,18 +1,18 @@ # MOT恢复 -MOT恢复的主要目标是在有计划停机(例如维护)或计划外崩溃(例如电源故障后)后,将数据和MOT引擎恢复到一致状态。 +MOT 恢复的主要目标是在有计划停机(例如维护)或计划外崩溃(例如电源故障后)后,将数据和 MOT 引擎恢复到一致状态。 -MOT恢复是随着openGauss数据库其余部分的恢复而自动执行的,并且完全集成到openGauss恢复过程(也称为冷启动)。 +MOT 恢复是随着 openGauss 数据库其余部分的恢复而自动执行的,并且完全集成到 openGauss 恢复过程(也称为冷启动)。 -MOT恢复包括两个阶段: +MOT 恢复包括两个阶段: 检查点恢复:必须通过将数据加载到内存行并创建索引,从磁盘上的最新检查点文件恢复数据。 -WAL重做日志恢复:从检查点恢复中使用检查点后,必须通过重放之后添加到日志中的记录,从WAL重做日志中恢复最近的数据(在检查点中未捕获)。 +WAL 重做日志恢复:从检查点恢复中使用检查点后,必须通过重放之后添加到日志中的记录,从 WAL 重做日志中恢复最近的数据(在检查点中未捕获)。 -openGauss管理和触发WAL重做日志恢复。 +openGauss 管理和触发 WAL 重做日志恢复。 - 配置恢复。 -- 虽然WAL恢复以串行方式执行,但可以将检查点恢复配置为以多线程方式运行(即由多个工作线程并行运行)。 +- 虽然 WAL 恢复以串行方式执行,但可以将检查点恢复配置为以多线程方式运行(即由多个工作线程并行运行)。 - 在mot.conf文件中配置checkpoint\_recovery\_workers参数,见[恢复(MOT)](MOT配置.md#section7442447103115)中的描述。 diff --git "a/content/zh/docs/Developerguide/MOT\346\201\242\345\244\215\346\227\266\351\227\264\347\233\256\346\240\207_RTO\345\222\214\345\206\267\345\220\257\345\212\250\346\227\266\351\227\264.md" "b/content/zh/docs/Developerguide/MOT\346\201\242\345\244\215\346\227\266\351\227\264\347\233\256\346\240\207_RTO\345\222\214\345\206\267\345\220\257\345\212\250\346\227\266\351\227\264.md" index a95670a04..665f85356 100644 --- "a/content/zh/docs/Developerguide/MOT\346\201\242\345\244\215\346\227\266\351\227\264\347\233\256\346\240\207_RTO\345\222\214\345\206\267\345\220\257\345\212\250\346\227\266\351\227\264.md" +++ "b/content/zh/docs/Developerguide/MOT\346\201\242\345\244\215\346\227\266\351\227\264\347\233\256\346\240\207_RTO\345\222\214\345\206\267\345\220\257\345\212\250\346\227\266\351\227\264.md" @@ -2,32 +2,32 @@ ## 高可用RTO -MOT完全集成到openGauss中,包括支持主备部署的高可用场景。WAL重做日志的复制机制将把复制更改到数据库备节点并使用备节点进行重放。 +MOT 完全集成到 openGauss 中,包括支持主备部署的高可用场景。 WAL 重做日志的复制机制将把复制更改到数据库备节点并使用备节点进行重放。 -如果故障转移事件发生,无论是由于计划外的主节点故障还是由于计划内的维护事件,备节点都会迅速活跃。恢复和重放WAL重做日志以及启用连接所需的时间也称为恢复时间目标(RTO)。 +如果故障转移事件发生,无论是由于计划外的主节点故障还是由于计划内的维护事件,备节点都会迅速活跃。恢复和重放 WAL 重做日志以及启用连接所需的时间也称为恢复时间目标(RTO)。 -**openGauss(包括MOT)的RTO小于10秒。** +**openGauss(包括MOT)的 RTO 小于 10 秒。** >![](public_sys-resources/icon-note.gif) **说明:** ->灾难发生后必须恢复业务流程,避免导致连续性中断相关的不可接受的后果,而RTO表示的就是这段流程的持续时间和业务级别。换句话说,RTO就是在回答这个问题:在通知业务流程中断后,需要多长时间才能恢复? +>灾难发生后必须恢复业务流程,避免导致连续性中断相关的不可接受的后果,而 RTO 表示的就是这段流程的持续时间和业务级别。换句话说, RTO 就是在回答这个问题:在通知业务流程中断后,需要多长时间才能恢复? -另外,从[MOT高吞吐量](MOT高吞吐量.md)的MOT中可以看出,在Arm/鲲鹏架构下,主从高可用场景复制开销仅为7%,在x86架构下仅为2%,而基于磁盘的表复制开销为2%。Arm/鲲鹏机型为20%,x86机型为15%。 +另外,从[MOT高吞吐量](MOT高吞吐量.md)的 MOT 中可以看出,在Arm/鲲鹏架构下,主从高可用场景复制开销仅为7%,在 x86 架构下仅为2%,而基于磁盘的表复制开销为2%。Arm/鲲鹏机型为20%, x86 机型为15%。 ## 冷启动恢复时间 冷启动恢复时间是指系统从停止模式到能够完全运行所需的时间。在内存数据库中,这包括将所有数据和索引加载到内存中的时间,因此它取决于数据大小、硬件带宽和软件算法能否高效地处理这些数据。 -MOT测试使用40 GB/s的ARM磁盘测试,可以在100 GB/s的时间内加载数据库。MOT的索引非持久化,因此它们是在冷启动时创建的。实际加载的数据加索引大小约多50%。因此,可以转换为MOT冷启动时间的数据和索引容量为40秒内150GB,或225 GB/分钟(3.75 GB/秒)。 +MOT 测试使用40 GB/s的 ARM 磁盘测试,可以在100 GB/s的时间内加载数据库。 MOT 的索引非持久化,因此它们是在冷启动时创建的。实际加载的数据加索引大小约多50%。因此,可以转换为 MOT 冷启动时间的数据和索引容量为 40 秒内 150GB ,或225 GB/分钟(3.75 GB/秒)。 -冷启动过程和从磁盘加载数据到MOT所需时间如下图所示。 +冷启动过程和从磁盘加载数据到 MOT 所需时间如下图所示。 **图 1** 冷启动时间性能基准 ![](figures/cold-start-time-performance-benchmarks2 (1).png "冷启动时间性能基准") -- 数据库大小:加载整个数据库(每数据库GB)的总时间由蓝色线条和左侧的Y轴**时间(秒)**表示。 -- 吞吐量:数据库每秒GB吞吐量由橙色线和右侧的Y轴**吞吐量GB/秒**表示。 +- 数据库大小:加载整个数据库(每数据库GB)的总时间由蓝色线条和左侧的 Y 轴**时间(秒)**表示。 +- 吞吐量:数据库每秒 GB 吞吐量由橙色线和右侧的 Y 轴**吞吐量GB/秒**表示。 >![](public_sys-resources/icon-note.gif) **说明:** ->测试过程中表现的性能与SSD硬件的带宽非常接近。因此,可以在不同的平台上实现更高(或更低)的性能。 +>测试过程中表现的性能与 SSD 硬件的带宽非常接近。因此,可以在不同的平台上实现更高(或更低)的性能。 diff --git "a/content/zh/docs/Developerguide/MOT\346\201\242\345\244\215\346\246\202\345\277\265.md" "b/content/zh/docs/Developerguide/MOT\346\201\242\345\244\215\346\246\202\345\277\265.md" index c7a8302ea..bac6e44b8 100644 --- "a/content/zh/docs/Developerguide/MOT\346\201\242\345\244\215\346\246\202\345\277\265.md" +++ "b/content/zh/docs/Developerguide/MOT\346\201\242\345\244\215\346\246\202\345\277\265.md" @@ -1,18 +1,18 @@ # MOT恢复概念 -MOT恢复模块提供了恢复MOT表数据所需的所有功能。恢复模块的主要目标是在计划(例如维护)关闭或计划外(例如电源故障)崩溃后,将数据和MOT引擎恢复到一致的状态。 +MOT 恢复模块提供了恢复 MOT 表数据所需的所有功能。恢复模块的主要目标是在计划(例如维护)关闭或计划外(例如电源故障)崩溃后,将数据和 MOT 引擎恢复到一致的状态。 -openGauss数据库恢复(有时也称为冷启动)包括MOT表,并且随着数据库其余部分的恢复而自动执行。MOT恢复模块无缝、全面地集成到openGauss恢复过程中。 +openGauss 数据库恢复(有时也称为冷启动)包括 MOT 表,并且随着数据库其余部分的恢复而自动执行。 MOT 恢复模块无缝、全面地集成到 openGauss 恢复过程中。 -MOT恢复有两个主要阶段:检查点恢复和WAL恢复(重做日志)。 +MOT 恢复有两个主要阶段:检查点恢复和 WAL 恢复(重做日志)。 -MOT检查点恢复在封装的恢复发生之前执行。仅在冷启动事件(PG进程的启动)中执行此操作。它首先恢复元数据,然后插入当前有效检查点的所有行,这由checkpoint\_recovery\_workers并行完成,每个行都在不同的表中工作。索引在插入过程中创建。 +MOT 检查点恢复在封装的恢复发生之前执行。仅在冷启动事件(PG进程的启动)中执行此操作。它首先恢复元数据,然后插入当前有效检查点的所有行,这由checkpoint\_recovery\_workers并行完成,每个行都在不同的表中工作。索引在插入过程中创建。 -在检查点时,表被分成多个16MB的块,以便多个恢复工作进程可以并行地恢复表。这样做是为了加快检查点恢复速度,它被实现为一个多线程过程,其中每个线程负责恢复不同的段。不同段之间没有依赖关系,因此线程之间没有争用,在更新表或插入新行时也不需要使用锁。 +在检查点时,表被分成多个 16MB 的块,以便多个恢复工作进程可以并行地恢复表。这样做是为了加快检查点恢复速度,它被实现为一个多线程过程,其中每个线程负责恢复不同的段。不同段之间没有依赖关系,因此线程之间没有争用,在更新表或插入新行时也不需要使用锁。 -WAL记录作为封装的WAL恢复的一部分进行恢复。openGauss封装会迭代XLOG,根据xlog记录类型执行必要的操作。如果是记录类型为MOT的条目,封装将它转发给MOT 恢复管理器进行处理。如果XLOG条目太旧(即XLOG条目的LSN比检查点的LSN旧),MOT恢复将忽略该条目。 +WAL 记录作为封装的 WAL 恢复的一部分进行恢复。 openGauss 封装会迭代 XLOG ,根据 xlog 记录类型执行必要的操作。如果是记录类型为 MOT 的条目,封装将它转发给 MOT 恢复管理器进行处理。如果 XLOG 条目太旧(即 XLOG 条目的 LSN 比检查点的 LSN 旧), MOT 恢复将忽略该条目。 -在主备部署中,备用服务器始终处于Recovery状态,以便自动WAL恢复过程。 +在主备部署中,备用服务器始终处于 Recovery 状态,以便自动 WAL 恢复过程。 -MOT恢复参数在mot.conf文件中配置,参见[MOT恢复](MOT恢复.md)。 +MOT 恢复参数在mot.conf文件中配置,参见[MOT恢复](MOT恢复.md)。 diff --git "a/content/zh/docs/Developerguide/MOT\346\214\201\344\271\205\346\200\247.md" "b/content/zh/docs/Developerguide/MOT\346\214\201\344\271\205\346\200\247.md" index 338a49b77..2bbe7ca9f 100644 --- "a/content/zh/docs/Developerguide/MOT\346\214\201\344\271\205\346\200\247.md" +++ "b/content/zh/docs/Developerguide/MOT\346\214\201\344\271\205\346\200\247.md" @@ -1,81 +1,81 @@ # MOT持久性 -持久性是指长期的数据保护(也称为磁盘持久化)。持久性意味着存储的数据不会遭受任何形式的退化或损坏,因此数据不会丢失或损坏。持久性可确保在有计划停机(例如维护)或计划外崩溃(例如电源故障)后数据和MOT引擎恢复到一致状态。 +持久性是指长期的数据保护(也称为磁盘持久化)。持久性意味着存储的数据不会遭受任何形式的退化或损坏,因此数据不会丢失或损坏。持久性可确保在有计划停机(例如维护)或计划外崩溃(例如电源故障)后数据和 MOT 引擎恢复到一致状态。 -内存存储是易失的、需要电力来维护所存储的信息。另一方面,磁盘存储是非易失性的,这意味着它不需要电源来维护存储的信息,因此不用担心停电。MOT同时使用这两种类型的存储。内存中存储了所有数据,同时将事务性更改持久化到磁盘,并保持频繁的定期[MOT检查点](#section182761535131617),以确保在关机时恢复数据。 +内存存储是易失的、需要电力来维护所存储的信息。另一方面,磁盘存储是非易失性的,这意味着它不需要电源来维护存储的信息,因此不用担心停电。 MOT 同时使用这两种类型的存储。内存中存储了所有数据,同时将事务性更改持久化到磁盘,并保持频繁的定期[MOT检查点](#section182761535131617),以确保在关机时恢复数据。 用户必须保证有足够的磁盘空间用于日志记录和检查点操作。检查点使用单独的驱动器,通过减少磁盘I/O负载来提高性能。 -参考[MOT关键技术](MOT关键技术.md)了解如何在MOT引擎中实现持久化。 +参考[MOT关键技术](MOT关键技术.md)了解如何在 MOT 引擎中实现持久化。 若要设置持久性: -为保证严格一致性,请在postgresql.conf配置文件中将参数sync\_commit配置为on。 +为保证严格一致性,请在postgresql.conf配置文件中将参数sync\_commit配置为 on 。 -MOT的WAL重做日志和检查点开启持久性,下面将详细介绍。 +MOT 的 WAL 重做日志和检查点开启持久性,下面将详细介绍。 ## MOT日志记录:WAL重做日志 -为保证持久性,MOT全面集成openGauss的WAL机制,通过openGauss的XLOG接口持久化WAL记录。这意味着,每次MOT记录的添加、更新和删除都记录在WAL中。确保了可以从这个非易失性日志重新生成和恢复最新的数据状态。例如,如果向表中添加了3行,删除了2行,更新了1行,那么日志中将记录6个条目。 +为保证持久性, MOT 全面集成 openGauss 的 WAL 机制,通过 openGauss 的 XLOG 接口持久化 WAL 记录。这意味着,每次 MOT 记录的添加、更新和删除都记录在 WAL 中。确保了可以从这个非易失性日志重新生成和恢复最新的数据状态。例如,如果向表中添加了 3 行,删除了 2 行,更新了 1 行,那么日志中将记录 6 个条目。 -MOT日志记录和openGauss磁盘表的其他记录写入同一个WAL中。 +MOT 日志记录和 openGauss 磁盘表的其他记录写入同一个 WAL 中。 -MOT只记录事务提交阶段的操作。 +MOT 只记录事务提交阶段的操作。 -MOT只记录更新的增量记录,以便最小化写入磁盘的数据量。 +MOT 只记录更新的增量记录,以便最小化写入磁盘的数据量。 -在恢复期间,从最后一个已知或特定检查点加载数据;然后使用WAL重做日志完成从该点开始发生的数据更改。 +在恢复期间,从最后一个已知或特定检查点加载数据;然后使用 WAL 重做日志完成从该点开始发生的数据更改。 -WAL重做日志将保留所有表行修改,直到执行检查点(如上所述)。然后可以截断日志,以减少恢复时间和节省磁盘空间。 +WAL 重做日志将保留所有表行修改,直到执行检查点(如上所述)。然后可以截断日志,以减少恢复时间和节省磁盘空间。 -注意:为确保日志IO设备不会成为瓶颈,日志文件必须放在具有低延迟的驱动器上。 +注意:为确保日志 IO 设备不会成为瓶颈,日志文件必须放在具有低延迟的驱动器上。 ## MOT日志类型 -支持两个同步事务日志选项和一个异步事务日志选项(标准openGauss磁盘引擎也支持这些选项)。MOT还支持同步的组提交日志记录与NUMA-aware优化,如下所述。 +支持两个同步事务日志选项和一个异步事务日志选项(标准 openGauss 磁盘引擎也支持这些选项)。 MOT 还支持同步的组提交日志记录与NUMA-aware优化,如下所述。 根据您的配置,实现以下类型的日志记录: - **同步重做日志记录** - 同步重做日志记录选项是最简单、最严格的重做日志记录器。当客户端应用程序提交事务时,事务重做条目记录在WAL重做日志中,如下所示: + 同步重做日志记录选项是最简单、最严格的重做日志记录器。当客户端应用程序提交事务时,事务重做条目记录在 WAL 重做日志中,如下所示: - 1. 当事务正在进行时,它存储在MOT内存中。 - 2. 事务完成后,客户端应用程序发送Commit命令,该事务被锁定,然后写入磁盘上的WAL重做日志。当事务日志条目写入日志时,客户端应用程序仍在等待响应。 + 1. 当事务正在进行时,它存储在 MOT 内存中。 + 2. 事务完成后,客户端应用程序发送 Commit 命令,该事务被锁定,然后写入磁盘上的 WAL 重做日志。当事务日志条目写入日志时,客户端应用程序仍在等待响应。 3. 一旦事务的整个缓冲区被写入日志,就更改内存中的数据,然后提交事务。事务提交后,通知客户端应用程序事务完成。 **总结** - 同步重做日志记录选项是最安全、最严格的,因为它确保了客户端应用程序和每个事务提交时的WAL重做日志条目的完全同步,从而确保了总的持久性和一致性,并且绝对不会丢失数据。此日志记录选项可防止客户端应用程序在事务尚未持久化到磁盘时将事务标记为成功的情况。 + 同步重做日志记录选项是最安全、最严格的,因为它确保了客户端应用程序和每个事务提交时的 WAL 重做日志条目的完全同步,从而确保了总的持久性和一致性,并且绝对不会丢失数据。此日志记录选项可防止客户端应用程序在事务尚未持久化到磁盘时将事务标记为成功的情况。 同步重做日志记录选项的缺点是,它是三个选项中最慢的日志机制。因为客户端应用程序必须等待所有数据都写入磁盘,并且磁盘写入过于频繁导致数据库变慢。 - **组同步重做日志记录** - 组同步重做日志记录选项与同步重做日志记录选项非常相似,它确保完全持久性,绝对不会丢失数据,并保证客户端应用程序和WAL重做日志条目的完全同步。不同的是,组同步重做日志记录选项将事务重做条目组同时写入磁盘上的WAL重做日志,而不是在提交时写入每个事务。使用组同步重做日志记录可以减少磁盘I/O数量,从而提高性能,特别是在运行繁重的工作负载时。 + 组同步重做日志记录选项与同步重做日志记录选项非常相似,它确保完全持久性,绝对不会丢失数据,并保证客户端应用程序和 WAL 重做日志条目的完全同步。不同的是,组同步重做日志记录选项将事务重做条目组同时写入磁盘上的 WAL 重做日志,而不是在提交时写入每个事务。使用组同步重做日志记录可以减少磁盘I/O数量,从而提高性能,特别是在运行繁重的工作负载时。 - MOT引擎通过根据运行事务的核的NUMA槽位自动对事务进行分组,使用NUMA感知优化来执行同步的组提交记录。 +MOT 引擎通过根据运行事务的核的 NUMA 槽位自动对事务进行分组,使用 NUMA 感知优化来执行同步的组提交记录。 有关NUMA-aware内存访问的更多信息,请参阅[NUMA-aware分配和亲和性](NUMA-aware分配和亲和性.md)。 - 当一个事务提交时,一组条目记录在WAL重做日志中,如下所示: + 当一个事务提交时,一组条目记录在 WAL 重做日志中,如下所示: - 1. 当事务正在进行时,它存储在内存中。MOT引擎根据运行事务的核的NUMA槽位对桶中的事务进行分组。在同一槽位上运行的所有事务都被分组在一起,并且多个组将根据事务运行的核并行填充。 + 1. 当事务正在进行时,它存储在内存中。 MOT 引擎根据运行事务的核的 NUMA 槽位对桶中的事务进行分组。在同一槽位上运行的所有事务都被分组在一起,并且多个组将根据事务运行的核并行填充。 - 这样,将事务写入WAL更为有效,因为来自同一个槽位的所有缓冲区都一起写入磁盘。 + 这样,将事务写入 WAL 更为有效,因为来自同一个槽位的所有缓冲区都一起写入磁盘。 注意:每个线程在属于单槽位的单核/CPU上运行,每个线程只写在各自运行的核的槽位上。 - 2. 在事务完成并且客户端应用程序发送Commit命令之后,事务重做日志条目将与同组的其他事务一起序列化。 - 3. 当特定一组事务满足配置条件后,如[重做日志(MOT)](MOT配置.md#section361563811235)小节中描述的已提交的事务数或超时时间,该组中的事务将被写入磁盘的WAL中。当这些日志条目被写入日志时,发出提交请求的客户端应用程序正在等待响应。 + 2. 在事务完成并且客户端应用程序发送 Commit 命令之后,事务重做日志条目将与同组的其他事务一起序列化。 + 3. 当特定一组事务满足配置条件后,如[重做日志(MOT)](MOT配置.md#section361563811235)小节中描述的已提交的事务数或超时时间,该组中的事务将被写入磁盘的 WAL 中。当这些日志条目被写入日志时,发出提交请求的客户端应用程序正在等待响应。 4. 一旦NUMA-aware组中的所有事务缓冲区都写入日志,该组中的所有事务都将对内存存储执行必要的更改,并且通知客户端这些事务已完成。 **总结** - 组同步重做日志记录选项是一个极其安全和严格的日志记录选项,因为它确保了客户端应用程序和WAL重做日志条目的完全同步,从而确保了总的持久性和一致性,而且绝对不会丢失数据。此日志记录选项可防止客户端应用程序在事务尚未持久化到磁盘时将事务标记为成功的情况。 + 组同步重做日志记录选项是一个极其安全和严格的日志记录选项,因为它确保了客户端应用程序和 WAL 重做日志条目的完全同步,从而确保了总的持久性和一致性,而且绝对不会丢失数据。此日志记录选项可防止客户端应用程序在事务尚未持久化到磁盘时将事务标记为成功的情况。 - 该选项的磁盘写入次数比同步重做日志记录选项少,这可能意味着它更快。缺点是事务被锁定的时间更长。在同一NUMA内存中的所有事务都写入磁盘的WAL重做日志之前,它们一直处于锁定状态。 + 该选项的磁盘写入次数比同步重做日志记录选项少,这可能意味着它更快。缺点是事务被锁定的时间更长。在同一 NUMA 内存中的所有事务都写入磁盘的 WAL 重做日志之前,它们一直处于锁定状态。 是否使用此选项取决于事务工作负载的类型。例如,此选项有利于事务较多的系统。而对于事务少的系统而言,磁盘写入量也很少,因此不建议使用。 @@ -84,15 +84,15 @@ WAL重做日志将保留所有表行修改,直到执行检查点(如上所 异步重做日志记录选项是最快的日志记录方法,但是它不能确保数据不会丢失,某些仍位于缓冲区中且尚未写入磁盘的数据在电源故障或数据库崩溃时可能会丢失。当客户端应用程序提交事务时,事务重做条目将记录在内部缓冲区中,并按预先配置的时间间隔写入磁盘。客户端应用程序不会等待数据写入磁盘。它将继续进行下一个事务。这就是异步重做日志记录最快的原因。 - 当客户端应用程序提交事务时,事务重做条目记录在WAL重做日志中,如下所示: + 当客户端应用程序提交事务时,事务重做条目记录在 WAL 重做日志中,如下所示: - 1. 当事务正在进行时,它存储在MOT内存中。 - 2. 在事务完成并且客户端应用程序发送Commit命令后,事务重做条目将被写入内部缓冲区,但尚未写入磁盘。然后更改MOT数据内存,并通知客户端应用程序事务已提交。 + 1. 当事务正在进行时,它存储在 MOT 内存中。 + 2. 在事务完成并且客户端应用程序发送 Commit 命令后,事务重做条目将被写入内部缓冲区,但尚未写入磁盘。然后更改 MOT 数据内存,并通知客户端应用程序事务已提交。 3. 后台运行的重做日志线程按预先配置的时间间隔收集所有缓存的重做日志条目,并将它们写入磁盘。 **总结** - 异步重做日志记录选项是最快的日志记录选项,因为它不需要客户端应用程序等待数据写入磁盘。此外,它将许多事务重做条目分组并把它们写入一起,从而减少降低MOT引擎速度的磁盘I/O数量。 + 异步重做日志记录选项是最快的日志记录选项,因为它不需要客户端应用程序等待数据写入磁盘。此外,它将许多事务重做条目分组并把它们写入一起,从而减少降低 MOT 引擎速度的磁盘I/O数量。 异步重做日志记录选项的缺点是它不能确保在崩溃或失败时数据不会丢失。已提交但尚未写入磁盘的数据在提交时是不持久的,因此在出现故障时无法恢复。异步重做日志记录选项对于愿意牺牲数据恢复(一致性)而不是性能的应用程序来说最为适用。 @@ -100,17 +100,17 @@ WAL重做日志将保留所有表行修改,直到执行检查点(如上所 ## 配置日志 -标准openGauss磁盘引擎支持两个同步事务日志选项和一个异步事务日志选项。 +标准 openGauss 磁盘引擎支持两个同步事务日志选项和一个异步事务日志选项。 配置日志记录 1. 在postgresql.conf配置文件中的sync\_commit \(On = Synchronous\)参数中指定是否执行同步或异步事务日志记录。 -2. 在重做日志章节中的mot.conf配置文件里,将enable\_redo\_log参数设置为True。 +2. 在重做日志章节中的mot.conf配置文件里,将enable\_redo\_log参数设置为 True 。 -如果已选择事务日志记录的同步模式(如上文所述,synchronous\_commit = on),则在mot.conf配置文件中的enable\_group\_commit参数中指定Group Synchronous Redo Logging选项或Synchronous Redo Logging选项。如果选择Group Synchronous Redo Logging,必须在mot.conf文件中定义以下阈值,决定何时将一组事务记录在WAL中。 +如果已选择事务日志记录的同步模式(如上文所述,synchronous\_commit = on),则在mot.conf配置文件中的enable\_group\_commit参数中指定 Group Synchronous Redo Logging 选项或 Synchronous Redo Logging 选项。如果选择 Group Synchronous Redo Logging ,必须在mot.conf文件中定义以下阈值,决定何时将一组事务记录在 WAL 中。 -- group\_commit\_size:一组已提交的事务数。例如,16表示当同一组中的16个事务已由它们的客户端应用程序提交时,则针对16个事务中的每个事务,在磁盘的WAL重做日志中写入一个条目。 -- group\_commit\_timeout:超时时间,单位为毫秒。例如,10表示在10毫秒之后,为同一组由客户端应用程序在最近10毫秒内提交的每个事务,在磁盘的WAL重做日志中写入一个条目。 +- group\_commit\_size:一组已提交的事务数。例如, 16 表示当同一组中的 16 个事务已由它们的客户端应用程序提交时,则针对 16 个事务中的每个事务,在磁盘的 WAL 重做日志中写入一个条目。 +- group\_commit\_timeout:超时时间,单位为毫秒。例如, 10 表示在 10 毫秒之后,为同一组由客户端应用程序在最近 10 毫秒内提交的每个事务,在磁盘的 WAL 重做日志中写入一个条目。 >![](public_sys-resources/icon-note.gif) **说明:** >有关配置的详细信息,请参阅[重做日志(MOT)](MOT配置.md#section361563811235)。 @@ -119,18 +119,18 @@ WAL重做日志将保留所有表行修改,直到执行检查点(如上所 检查点是一个时间点。在这个时间点,表行的所有数据都保存在持久存储上的文件中,以便创建完整持久的数据库镜像。这是一个数据在某个时间点的快照。 -检查点减少了为确保持久性而必须重放的WAL重做日志条目的数量,以此缩短数据库的恢复时间。检查点还减少了保存所有日志条目所需的存储空间。 +检查点减少了为确保持久性而必须重放的 WAL 重做日志条目的数量,以此缩短数据库的恢复时间。检查点还减少了保存所有日志条目所需的存储空间。 -如果没有检查点,那么为了恢复数据库,所有WAL重做条目必须从开始时间进行重放,可能需要几天或几周的时间,这取决于数据库中的记录数量。检查点记录数据库的当前状态,并允许丢弃旧的重做条目。 +如果没有检查点,那么为了恢复数据库,所有 WAL 重做条目必须从开始时间进行重放,可能需要几天或几周的时间,这取决于数据库中的记录数量。检查点记录数据库的当前状态,并允许丢弃旧的重做条目。 -检查点在恢复方案(特别是冷启动)中是必不可少的。首先,从最后一个已知或特定检查点加载数据;然后使用WAL完成此后发生的数据更改。 +检查点在恢复方案(特别是冷启动)中是必不可少的。首先,从最后一个已知或特定检查点加载数据;然后使用 WAL 完成此后发生的数据更改。 -例如,如果同一表行被修改100次,则日志中将记录100个条目。当使用检查点后,即使表行被修改了100次,检查点也可以一次性记录。在记录检查点之后,可以基于该检查点执行恢复,并且只需要播放自该检查点之后发生的WAL重做日志条目。 +例如,如果同一表行被修改 100 次,则日志中将记录 100 个条目。当使用检查点后,即使表行被修改了 100 次,检查点也可以一次性记录。在记录检查点之后,可以基于该检查点执行恢复,并且只需要播放自该检查点之后发生的 WAL 重做日志条目。 **配置检查点** -检查点在mot.conf文件中的CHECKPOINT配置。有关这些配置参数的说明,请参阅[MOT检查点](#section182761535131617)。 +检查点在mot.conf文件中的 CHECKPOINT 配置。有关这些配置参数的说明,请参阅[MOT检查点](#section182761535131617)。 >![](public_sys-resources/icon-caution.gif) **注意:** ->生产部署时,该值必须为TRUE \#enable\_Checkpoint = true。FALSE值只能用于测试。 +>生产部署时,该值必须为TRUE \#enable\_Checkpoint = true。 FALSE 值只能用于测试。 diff --git "a/content/zh/docs/Developerguide/MOT\346\214\201\344\271\205\346\200\247\346\246\202\345\277\265.md" "b/content/zh/docs/Developerguide/MOT\346\214\201\344\271\205\346\200\247\346\246\202\345\277\265.md" index bd54fdee3..5e619c55a 100644 --- "a/content/zh/docs/Developerguide/MOT\346\214\201\344\271\205\346\200\247\346\246\202\345\277\265.md" +++ "b/content/zh/docs/Developerguide/MOT\346\214\201\344\271\205\346\200\247\346\246\202\345\277\265.md" @@ -1,14 +1,14 @@ # MOT持久性概念 -持久性是指长期的数据保护(也称为磁盘持久性)。持久性意味着存储的数据不会遭受任何形式的退化或破坏,因此数据不会丢失或损坏。持久性可确保在有计划停机(例如维护)或计划外崩溃(例如电源故障)后数据和MOT引擎恢复到一致状态。 +持久性是指长期的数据保护(也称为磁盘持久性)。持久性意味着存储的数据不会遭受任何形式的退化或破坏,因此数据不会丢失或损坏。持久性可确保在有计划停机(例如维护)或计划外崩溃(例如电源故障)后数据和 MOT 引擎恢复到一致状态。 -内存存储是易失的,需要电源来维护所存储的信息。另一方面,磁盘存储是非易失性的,这意味着它不需要电源来维护存储的信息,因此它不用担心停电。MOT使用这两种类型的存储,它拥有内存中的所有数据,同时将事务性更改持久化到磁盘,并保持频繁的定期[MOT检查点](MOT持久性.md#section182761535131617),以确保在关机时恢复数据。 +内存存储是易失的,需要电源来维护所存储的信息。另一方面,磁盘存储是非易失性的,这意味着它不需要电源来维护存储的信息,因此它不用担心停电。 MOT 使用这两种类型的存储,它拥有内存中的所有数据,同时将事务性更改持久化到磁盘,并保持频繁的定期[MOT检查点](MOT持久性.md#section182761535131617),以确保在关机时恢复数据。 用户必须保证有足够的磁盘空间用于日志记录和检查点操作。检查点使用单独的驱动器,通过减少磁盘I/O负载来提高性能。 -有关如何在MOT引擎中实现持久性的概述,请参见[MOT关键技术](MOT关键技术.md)。 +有关如何在 MOT 引擎中实现持久性的概述,请参见[MOT关键技术](MOT关键技术.md)。 -MOT的WAL重做日志和检查点启用了持久性,如下所述。 +MOT 的 WAL 重做日志和检查点启用了持久性,如下所述。 - **[MOT日志记录:WAL重做日志概念](MOT日志记录-WAL重做日志概念.md)** diff --git "a/content/zh/docs/Developerguide/MOT\346\225\260\346\215\256\351\207\207\351\233\206\351\200\237\345\272\246.md" "b/content/zh/docs/Developerguide/MOT\346\225\260\346\215\256\351\207\207\351\233\206\351\200\237\345\272\246.md" index 5d19ea277..ed5f5e005 100644 --- "a/content/zh/docs/Developerguide/MOT\346\225\260\346\215\256\351\207\207\351\233\206\351\200\237\345\272\246.md" +++ "b/content/zh/docs/Developerguide/MOT\346\225\260\346\215\256\351\207\207\351\233\206\351\200\237\345\272\246.md" @@ -3,14 +3,14 @@ 该测试模拟海量物联网、云端或移动端接入的实时数据流,快速持续地把海量数据注入到数据库。 - 本次测试涉及大量数据采集,具体如下: - - 1000万行数据由500个线程发送,2000轮,每个insert命令有10条记录(行),每条记录占200字节。 - - 客户端和数据库位于不同的机器上。数据库服务器为2路72核x86服务器。 + - 1000万行数据由 500 个线程发送, 2000 轮,每个 insert 命令有 10 条记录(行),每条记录占 200 字节。 + - 客户端和数据库位于不同的机器上。数据库服务器为 2 路 72 核 x86 服务器。 - 性能结果 - 吞吐量:10000个记录/核,或2MB/核。 - - 延迟:2.8ms每10条记录批量插入(包括客户端-服务器组网)。 + - 延迟:2.8ms每 10 条记录批量插入(包括客户端-服务器组网)。 >![](public_sys-resources/icon-caution.gif) **注意:** ->预计MOT将针对这一场景进行多项额外的甚至重大的性能改进。更多关于大规模数据流和数据采集的信息,请参阅[MOT应用场景](MOT应用场景.md)。 +>预计 MOT 将针对这一场景进行多项额外的甚至重大的性能改进。更多关于大规模数据流和数据采集的信息,请参阅[MOT应用场景](MOT应用场景.md)。 diff --git "a/content/zh/docs/Developerguide/MOT\346\227\245\345\277\227\350\256\260\345\275\225-WAL\351\207\215\345\201\232\346\227\245\345\277\227\346\246\202\345\277\265.md" "b/content/zh/docs/Developerguide/MOT\346\227\245\345\277\227\350\256\260\345\275\225-WAL\351\207\215\345\201\232\346\227\245\345\277\227\346\246\202\345\277\265.md" index 37f64e81f..52f704c61 100644 --- "a/content/zh/docs/Developerguide/MOT\346\227\245\345\277\227\350\256\260\345\275\225-WAL\351\207\215\345\201\232\346\227\245\345\277\227\346\246\202\345\277\265.md" +++ "b/content/zh/docs/Developerguide/MOT\346\227\245\345\277\227\350\256\260\345\275\225-WAL\351\207\215\345\201\232\346\227\245\345\277\227\346\246\202\345\277\265.md" @@ -2,84 +2,84 @@ ## 概述 -预写日志记录(WAL)是确保数据持久性的标准方法。WAL的主要概念是,数据文件(表和索引所在的位置)的更改只有在记录这些更改之后才会写入,即只有在描述这些更改的日志记录被刷新到永久存储之后才会写入。 +预写日志记录(WAL)是确保数据持久性的标准方法。 WAL 的主要概念是,数据文件(表和索引所在的位置)的更改只有在记录这些更改之后才会写入,即只有在描述这些更改的日志记录被刷新到永久存储之后才会写入。 -MOT全面集成openGauss的封装日志记录设施。除持久性外,这种方法的另一个好处是能够将WAL用于复制目的。 +MOT 全面集成 openGauss 的封装日志记录设施。除持久性外,这种方法的另一个好处是能够将 WAL 用于复制目的。 -支持三种日志记录方式:两种标准同步和一种异步方式。标准openGauss磁盘引擎也支持这三种日志记录方式。此外,在MOT中,组提交(Group-Commit)选项还提供了特殊的NUMA感知优化。Group-Commit在维护ACID属性的同时提供最高性能。 +支持三种日志记录方式:两种标准同步和一种异步方式。标准 openGauss 磁盘引擎也支持这三种日志记录方式。此外,在 MOT 中,组提交(Group-Commit)选项还提供了特殊的 NUMA 感知优化。Group-Commit在维护 ACID 属性的同时提供最高性能。 -为保证持久性,MOT全面集成openGauss的WAL机制,通过openGauss的XLOG接口持久化WAL记录。这意味着,每次MOT记录的添加、更新和删除都记录在WAL中。这确保了可以从这个非易失性日志中重新生成和恢复最新的数据状态。例如,如果向表中添加了3个新行,删除了2个,更新了1个,那么日志中将记录6个条目。 +为保证持久性, MOT 全面集成 openGauss 的 WAL 机制,通过 openGauss 的 XLOG 接口持久化 WAL 记录。这意味着,每次 MOT 记录的添加、更新和删除都记录在 WAL 中。这确保了可以从这个非易失性日志中重新生成和恢复最新的数据状态。例如,如果向表中添加了 3 个新行,删除了 2 个,更新了 1 个,那么日志中将记录 6 个条目。 -- MOT日志记录和openGauss磁盘表的其他记录写入同一个WAL中。 +- MOT日志记录和 openGauss 磁盘表的其他记录写入同一个 WAL 中。 - MOT只记录事务提交阶段的操作。 - MOT只记录更新的增量记录,以便最小化写入磁盘的数据量。 -- 在恢复期间,从最后一个已知或特定检查点加载数据;然后使用WAL重做日志完成从该点开始发生的数据更改。 +- 在恢复期间,从最后一个已知或特定检查点加载数据;然后使用 WAL 重做日志完成从该点开始发生的数据更改。 - WAL重做日志将保留所有表行修改,直到执行一个检查点为止(如上所述)。然后可以截断日志,以减少恢复时间和节省磁盘空间。 >![](public_sys-resources/icon-note.gif) **说明:** ->为了确保日志IO设备不会成为瓶颈,日志文件必须放在具有低时延的驱动器上。 +>为了确保日志 IO 设备不会成为瓶颈,日志文件必须放在具有低时延的驱动器上。 ## 日志类型 -支持两个同步事务日志选项和一个异步事务日志选项(标准openGauss磁盘引擎也支持这些选项)。MOT还支持同步的组提交日志记录与NUMA感知优化,如下所述。 +支持两个同步事务日志选项和一个异步事务日志选项(标准 openGauss 磁盘引擎也支持这些选项)。 MOT 还支持同步的组提交日志记录与 NUMA 感知优化,如下所述。 根据您的配置,实现以下类型的日志记录: - **同步重做日志记录** - 同步重做日志记录选项是最简单、最严格的重做日志记录器。当客户端应用程序提交事务时,事务重做条目记录在WAL重做日志中,如下所示: + 同步重做日志记录选项是最简单、最严格的重做日志记录器。当客户端应用程序提交事务时,事务重做条目记录在 WAL 重做日志中,如下所示: - 1. 当事务正在进行时,它存储在MOT内存中。 - 2. 事务完成后,客户端应用程序发送提交命令,该事务被锁定,然后写入磁盘上的WAL重做日志。这意味着,当事务日志条目写入日志时,客户端应用程序仍在等待响应。 + 1. 当事务正在进行时,它存储在 MOT 内存中。 + 2. 事务完成后,客户端应用程序发送提交命令,该事务被锁定,然后写入磁盘上的 WAL 重做日志。这意味着,当事务日志条目写入日志时,客户端应用程序仍在等待响应。 3. 一旦事务的整个缓冲区被写入日志,就更改内存中的数据,然后提交事务。事务提交后,客户端应用程序收到事务完成通知。 **技术说明** - 当事务结束时,同步重做日志处理程序(SynchronousRedoLogHandler)序列化事务缓冲区,并写入XLOG iLogger实现。 + 当事务结束时,同步重做日志处理程序(SynchronousRedoLogHandler)序列化事务缓冲区,并写入 XLOG iLogger 实现。 **图 1** 同步日志记录 ![](figures/同步日志记录.png "同步日志记录") **总结** - 同步重做日志记录选项是最安全、最严格的,因为它确保了客户端应用程序和每个事务提交时的WAL重做日志条目的完全同步,从而确保了总的持久性和一致性,并且绝对不会丢失数据。此日志记录选项可防止客户端应用程序在事务尚未持久化到磁盘时将事务标记为成功的情况。 + 同步重做日志记录选项是最安全、最严格的,因为它确保了客户端应用程序和每个事务提交时的 WAL 重做日志条目的完全同步,从而确保了总的持久性和一致性,并且绝对不会丢失数据。此日志记录选项可防止客户端应用程序在事务尚未持久化到磁盘时将事务标记为成功的情况。 同步重做日志记录选项的缺点是,它是三个选项中最慢的日志机制。这是因为客户端应用程序必须等到所有数据都写入磁盘,并且磁盘频繁写入(这通常使数据库变慢)。 - **组同步重做日志记录** - **组同步重做日志记录**选项与**同步重做日志记录**选项非常相似,因为它还确保完全持久性,绝对不会丢失数据,并保证客户端应用程序和WAL重做日志条目的完全同步。不同的是,**组同步重做日志记录**选项将事务重做条目组同时写入磁盘上的WAL重做日志,而不是在提交时写入每个事务。使用组同步重做日志记录可以减少磁盘I/O数量,从而提高性能,特别是在运行繁重的工作负载时。 + **组同步重做日志记录**选项与**同步重做日志记录**选项非常相似,因为它还确保完全持久性,绝对不会丢失数据,并保证客户端应用程序和 WAL 重做日志条目的完全同步。不同的是,**组同步重做日志记录**选项将事务重做条目组同时写入磁盘上的 WAL 重做日志,而不是在提交时写入每个事务。使用组同步重做日志记录可以减少磁盘I/O数量,从而提高性能,特别是在运行繁重的工作负载时。 - MOT引擎通过根据运行事务的核的NUMA槽位自动对事务进行分组,使用非统一内存访问(NUMA)感知优化来执行同步的组提交记录。 +MOT 引擎通过根据运行事务的核的 NUMA 槽位自动对事务进行分组,使用非统一内存访问(NUMA)感知优化来执行同步的组提交记录。 - 有关NUMA感知内存访问的更多信息,请参见[NUMA-aware分配和亲和性](NUMA-aware分配和亲和性.md)。 + 有关 NUMA 感知内存访问的更多信息,请参见[NUMA-aware分配和亲和性](NUMA-aware分配和亲和性.md)。 - 当一个事务提交时,一组条目记录在WAL重做日志中,如下所示: + 当一个事务提交时,一组条目记录在 WAL 重做日志中,如下所示: - 1. 当事务正在进行时,它存储在内存中。MOT引擎根据运行事务的核的NUMA槽位对桶中的事务进行分组。这意味着在同一槽位上运行的所有事务都被分在一组,并且多个组将根据事务运行的核心并行填充。 + 1. 当事务正在进行时,它存储在内存中。 MOT 引擎根据运行事务的核的 NUMA 槽位对桶中的事务进行分组。这意味着在同一槽位上运行的所有事务都被分在一组,并且多个组将根据事务运行的核心并行填充。 - 这样,将事务写入WAL更为有效,因为来自同一个槽位的所有缓冲区都一起写入磁盘。 + 这样,将事务写入 WAL 更为有效,因为来自同一个槽位的所有缓冲区都一起写入磁盘。 >![](public_sys-resources/icon-note.gif) **说明:** >- 每个线程在属于单个槽位的单核/CPU上运行,每个线程只写运行于其上的核的槽位。 - 2. 在事务完成并且客户端应用程序发送Commit命令之后,事务重做日志条目将与属于同一组的其他事务一起序列化。 - 3. 当特定一组事务满足配置条件后,如[重做日志(MOT)](MOT配置.md#section361563811235)小节中描述的已提交的事务数或超时时间,该组中的事务将被写入磁盘的WAL中。这意味着,当这些日志条目被写入日志时,发出提交请求的客户端应用程序正在等待响应。 + 2. 在事务完成并且客户端应用程序发送 Commit 命令之后,事务重做日志条目将与属于同一组的其他事务一起序列化。 + 3. 当特定一组事务满足配置条件后,如[重做日志(MOT)](MOT配置.md#section361563811235)小节中描述的已提交的事务数或超时时间,该组中的事务将被写入磁盘的 WAL 中。这意味着,当这些日志条目被写入日志时,发出提交请求的客户端应用程序正在等待响应。 4. 一旦NUMA-aware组中的所有事务缓冲区都写入日志,该组中的所有事务都将对内存存储执行必要的更改,并且通知客户端这些事务已完成。 **技术说明** - 4种颜色分别代表4个NUMA节点。因此,每个NUMA节点都有自己的内存日志,允许多个连接的组提交。 +4 种颜色分别代表 4 个 NUMA 节点。因此,每个 NUMA 节点都有自己的内存日志,允许多个连接的组提交。 - **图 2** 组提交——具有NUMA感知 - ![](figures/组提交-具有NUMA感知.png "组提交-具有NUMA感知") + **图 2** 组提交——具有 NUMA 感知 + ![](figures/组提交-具有 NUMA 感知.png "组提交-具有 NUMA 感知") **总结** - 组同步重做日志记录选项是一个极其安全和严格的日志记录选项,因为它保证了客户端应用程序和WAL重做日志条目的完全同步,从而确保总的持久性和一致性,并且绝不会丢失数据。此日志记录选项可防止客户端应用程序在事务尚未持久化到磁盘时将事务标记为成功的情况。 + 组同步重做日志记录选项是一个极其安全和严格的日志记录选项,因为它保证了客户端应用程序和 WAL 重做日志条目的完全同步,从而确保总的持久性和一致性,并且绝不会丢失数据。此日志记录选项可防止客户端应用程序在事务尚未持久化到磁盘时将事务标记为成功的情况。 - 一方面,该选项的磁盘写入次数比同步重做日志记录选项少,这可能意味着它更快。缺点是事务被锁定的时间更长,这意味着它们被锁定,直到同一NUMA内存中的所有事务都写入磁盘上的WAL重做日志为止。 + 一方面,该选项的磁盘写入次数比同步重做日志记录选项少,这可能意味着它更快。缺点是事务被锁定的时间更长,这意味着它们被锁定,直到同一 NUMA 内存中的所有事务都写入磁盘上的 WAL 重做日志为止。 使用此选项的好处取决于事务工作负载的类型。例如,此选项有利于事务多的系统(而对于事务少的系统而言,则较少使用,因为磁盘写入量也很少)。 @@ -88,22 +88,22 @@ MOT全面集成openGauss的封装日志记录设施。除持久性外,这种 **异步重做日志记录**选项是最快的日志记录方法,但是,它不能确保数据不会丢失。也就是说,某些仍位于缓冲区且尚未写入磁盘的数据在电源故障或数据库崩溃时可能会丢失。当客户端应用程序提交事务时,事务重做条目将记录在内部缓冲区中,并按预先配置的时间间隔写入磁盘。客户端应用程序不会等待数据写入磁盘,而是继续到下一个事务。因此异步重做日志记录的速度最快。 - 当客户端应用程序提交事务时,事务重做条目记录在WAL重做日志中,如下所示: + 当客户端应用程序提交事务时,事务重做条目记录在 WAL 重做日志中,如下所示: - 1. 当事务正在进行时,它存储在MOT内存中。 - 2. 在事务完成并且客户端应用程序发送Commit命令后,事务重做条目将被写入内部缓冲区,但尚未写入磁盘。然后更改MOT数据内存,并通知客户端应用程序事务已提交。 + 1. 当事务正在进行时,它存储在 MOT 内存中。 + 2. 在事务完成并且客户端应用程序发送 Commit 命令后,事务重做条目将被写入内部缓冲区,但尚未写入磁盘。然后更改 MOT 数据内存,并通知客户端应用程序事务已提交。 3. 后台运行的重做日志线程按预先配置的时间间隔收集所有缓存的重做日志条目,并将它们写入磁盘。 **技术说明** - 在事务提交时,事务缓冲区被移到集中缓冲区(指针分配,而不是数据副本),并为事务分配一个新的事务缓冲区。一旦事务缓冲区移动到集中缓冲区,且事务线程不被阻塞,事务就会被释放。实际写入日志使用Postgres WALWRITER线程。当WALWRITER计时器到期时,它首先调用异步重做日志处理程序(通过注册的回调)来写缓冲区,然后继续其逻辑,并将数据刷新到XLOG中。 + 在事务提交时,事务缓冲区被移到集中缓冲区(指针分配,而不是数据副本),并为事务分配一个新的事务缓冲区。一旦事务缓冲区移动到集中缓冲区,且事务线程不被阻塞,事务就会被释放。实际写入日志使用 Postgres WALWRITER 线程。当 WALWRITER 计时器到期时,它首先调用异步重做日志处理程序(通过注册的回调)来写缓冲区,然后继续其逻辑,并将数据刷新到 XLOG 中。 **图 3** 异步日志记录 ![](figures/异步日志记录.png "异步日志记录") **总结** - 异步重做日志记录选项是最快的日志记录选项,因为它不需要客户端应用程序等待数据写入磁盘。此外,它将许多事务重做条目分组并把它们写入一起,从而减少降低MOT引擎速度的磁盘I/O数量。 + 异步重做日志记录选项是最快的日志记录选项,因为它不需要客户端应用程序等待数据写入磁盘。此外,它将许多事务重做条目分组并把它们写入一起,从而减少降低 MOT 引擎速度的磁盘I/O数量。 异步重做日志记录选项的缺点是它不能确保在崩溃或失败时数据不会丢失。已提交但尚未写入磁盘的数据在提交时是不持久的,因此在出现故障时无法恢复。异步重做日志记录选项对于愿意牺牲数据恢复(一致性)而不是性能的应用程序来说最为相关。 @@ -115,13 +115,13 @@ MOT全面集成openGauss的封装日志记录设施。除持久性外,这种 ![](figures/三种日志记录选项.png "三种日志记录选项") -重做日志组件由使用内储存引擎的后端线程和WAL编写器使用,以便持久化其数据。检查点通过Checkpoint管理器执行,由Postgres的Checkpointer触发。 +重做日志组件由使用内储存引擎的后端线程和 WAL 编写器使用,以便持久化其数据。检查点通过 Checkpoint 管理器执行,由 Postgres 的 Checkpointer 触发。 - **日志记录设计概述** - 预写日志记录(WAL)是确保数据持久性的标准方法。WAL的核心概念是,数据文件(表和索引所在的位置)的更改只有在记录了这些更改之后才会写入,这意味着在描述这些更改的日志记录被刷新到永久存储之后。 + 预写日志记录(WAL)是确保数据持久性的标准方法。 WAL 的核心概念是,数据文件(表和索引所在的位置)的更改只有在记录了这些更改之后才会写入,这意味着在描述这些更改的日志记录被刷新到永久存储之后。 - 在内储存引擎中,我们使用现有的openGauss日志设施,并没有从头开始开发低级别的日志API,以减少开发时间并使其可用于复制目的。 + 在内储存引擎中,我们使用现有的 openGauss 日志设施,并没有从头开始开发低级别的日志 API ,以减少开发时间并使其可用于复制目的。 - **单事务日志记录** @@ -131,11 +131,11 @@ MOT全面集成openGauss的封装日志记录设施。除持久性外,这种 **图 5** 单事务日志记录 ![](figures/单事务日志记录.png "单事务日志记录") -并行日志记录由MOT和磁盘引擎执行。但是,MOT引擎通过每个事务的日志缓冲区、无锁准备和单个日志记录增强了这种设计。 +并行日志记录由 MOT 和磁盘引擎执行。但是, MOT 引擎通过每个事务的日志缓冲区、无锁准备和单个日志记录增强了这种设计。 - **异常处理** - 持久化模块通过Postgres错误报告基础设施(ereport)处理异常。系统日志中会记录每个错误情况的错误信息。此外,使用Postgres内置的错误报告基础设施将错误报告到封装。 + 持久化模块通过 Postgres 错误报告基础设施(ereport)处理异常。系统日志中会记录每个错误情况的错误信息。此外,使用 Postgres 内置的错误报告基础设施将错误报告到封装。 该模块上报有如下异常: @@ -157,12 +157,12 @@ MOT全面集成openGauss的封装日志记录设施。除持久性外,这种

ERRCODE_FDW_ERROR

-

在任何情况下,WAL写入失败

+

在任何情况下, WAL 写入失败

事务终止

-

文件IO错误:写入、打开等

+

文件 IO 错误:写入、打开等

ERRCODE_IO_ERROR

diff --git "a/content/zh/docs/Developerguide/MOT\346\234\215\345\212\241\345\231\250\344\274\230\345\214\226-x86.md" "b/content/zh/docs/Developerguide/MOT\346\234\215\345\212\241\345\231\250\344\274\230\345\214\226-x86.md" index 5dd3e5ffc..8a048bcc5 100644 --- "a/content/zh/docs/Developerguide/MOT\346\234\215\345\212\241\345\231\250\344\274\230\345\214\226-x86.md" +++ "b/content/zh/docs/Developerguide/MOT\346\234\215\345\212\241\345\231\250\344\274\230\345\214\226-x86.md" @@ -2,30 +2,30 @@ 通常情况下,数据库由以下组件绑定: -- CPU:更快的CPU可以加速任何CPU绑定的数据库。 +- CPU:更快的 CPU 可以加速任何 CPU 绑定的数据库。 - 磁盘:高速SSD/NVME可加速任何I/O绑定数据库。 - 网络:更快的网络可以加速任何SQL\*Net绑定数据库。 除以上内容外,以下通用服务器设置默认使用,可能会明显影响数据库的性能。 -MOT性能调优是确保快速的应用程序功能和数据检索的关键步骤。MOT支持最新的硬件,因此调整每个系统以达到最大吞吐量是极为重要的。 +MOT 性能调优是确保快速的应用程序功能和数据检索的关键步骤。 MOT 支持最新的硬件,因此调整每个系统以达到最大吞吐量是极为重要的。 -以下是用于优化在英特尔x86服务器上运行MOT时的建议配置。这些设置是高吞吐量工作负载的最佳选择。 +以下是用于优化在英特尔 x86 服务器上运行 MOT 时的建议配置。这些设置是高吞吐量工作负载的最佳选择。 ## BIOS -- Hyper Threading设置为ON。 +- Hyper Threading设置为 ON 。 强烈建议打开超线程(HT=ON)。 - 建议在MOT上运行OLTP工作负载时打开超线程。当使用超线程时,某些OLTP工作负载显示高达40%的性能增益。 + 建议在 MOT 上运行 OLTP 工作负载时打开超线程。当使用超线程时,某些 OLTP 工作负载显示高达40%的性能增益。 ## 操作系统环境设置 - NUMA - 禁用NUMA平衡,如下所示。MOT以极其高效的NUMA-aware方式进行内存管理,远远超过操作系统使用的默认方法。 + 禁用 NUMA 平衡,如下所示。 MOT 以极其高效的NUMA-aware方式进行内存管理,远远超过操作系统使用的默认方法。 ``` echo 0 > /proc/sys/kernel/numa_balancing @@ -53,7 +53,7 @@ MOT性能调优是确保快速的应用程序功能和数据检索的关键步 throughput-performance配置文件是广泛适用的调优,它为各种常见服务器工作负载提供卓越的性能。 - 其他不太适合openGauss和MOT服务器的配置可能会影响MOT的整体性能,包括:平衡配置、桌面配置、延迟性能配置、网络延迟配置、网络吞吐量配置和节能配置。 + 其他不太适合 openGauss 和 MOT 服务器的配置可能会影响 MOT 的整体性能,包括:平衡配置、桌面配置、延迟性能配置、网络延迟配置、网络吞吐量配置和节能配置。 - 系统命令 @@ -127,14 +127,14 @@ MOT性能调优是确保快速的应用程序功能和数据检索的关键步 1073741824 bytes (1.1 GB) copied, 1.36034 s, 789 MB/s ``` - 当磁盘带宽明显低于789MB/s时,可能会造成openGauss性能瓶颈,尤其是造成MOT性能瓶颈。 + 当磁盘带宽明显低于789MB/s时,可能会造成 openGauss 性能瓶颈,尤其是造成 MOT 性能瓶颈。 ## 网络 -需要使用10Gbps以上网络。 +需要使用 10Gbps 以上网络。 -运行iperf命令进行验证: +运行 iperf 命令进行验证: ``` Server side: iperf -s @@ -146,7 +146,7 @@ rc.local:网卡调优 以下可选设置对性能有显著影响: 1. 将[https://gist.github.com/SaveTheRbtz/8875474](https://gist.github.com/SaveTheRbtz/8875474)下的set\_irq\_privacy.sh文件拷贝到/var/scripts/目录下。 -2. 进入/etc/rc.d/rc.local,执行chmod命令,确保在boot时执行以下脚本: +2. 进入/etc/rc.d/rc.local,执行 chmod 命令,确保在 boot 时执行以下脚本: ``` 'chmod +x /etc/rc.d/rc.local' diff --git "a/content/zh/docs/Developerguide/MOT\346\234\215\345\212\241\345\231\250\344\274\230\345\214\226-\345\237\272\344\272\216Arm\347\232\204\345\215\216\344\270\272TaiShan2P-4P\346\234\215\345\212\241\345\231\250.md" "b/content/zh/docs/Developerguide/MOT\346\234\215\345\212\241\345\231\250\344\274\230\345\214\226-\345\237\272\344\272\216Arm\347\232\204\345\215\216\344\270\272TaiShan2P-4P\346\234\215\345\212\241\345\231\250.md" index 2521d4e46..880f5d1b9 100644 --- "a/content/zh/docs/Developerguide/MOT\346\234\215\345\212\241\345\231\250\344\274\230\345\214\226-\345\237\272\344\272\216Arm\347\232\204\345\215\216\344\270\272TaiShan2P-4P\346\234\215\345\212\241\345\231\250.md" +++ "b/content/zh/docs/Developerguide/MOT\346\234\215\345\212\241\345\231\250\344\274\230\345\214\226-\345\237\272\344\272\216Arm\347\232\204\345\215\216\344\270\272TaiShan2P-4P\346\234\215\345\212\241\345\231\250.md" @@ -1,12 +1,12 @@ -# MOT服务器优化:基于Arm的华为TaiShan2P/4P服务器 +# MOT服务器优化:基于 Arm 的华为TaiShan2P/4P服务器 -以下是基于Arm/鲲鹏架构的华为TaiShan 2280 v2服务器(2路128核)和TaiShan 2480 v2服务器(4路256核)上运行MOT时的建议配置。 +以下是基于Arm/鲲鹏架构的华为 TaiShan 2280 v2 服务器(2路 128 核)和 TaiShan 2480 v2 服务器(4路 256 核)上运行 MOT 时的建议配置。 除非另有说明,以下设置适用于客户端和服务器的机器。 ## BIOS -修改BIOS相关设置: +修改 BIOS 相关设置: 1. 选择 **BIOS** \> **Advanced** \> **MISC Config**。设置 **Support Smmu** 为 **Disabled**。 2. 选择 **BIOS** \> **Advanced** \> **MISC Config**。设置 **CPU Prefetching Configuration** 为 **Disabled**。 @@ -24,7 +24,7 @@ ## 操作系统:内核和启动 -- 以下操作系统内核和启动参数通常由sysadmin配置。 +- 以下操作系统内核和启动参数通常由 sysadmin 配置。 配置内核参数,如下所示。 @@ -96,12 +96,12 @@ throughput-performance配置文件是广泛适用的调优,它为各种常见服务器工作负载提供卓越的性能。 - 其他不太适合openGauss和MOT服务器的配置可能会影响MOT的整体性能,包括:平衡配置、桌面配置、延迟性能配置、网络延迟配置、网络吞吐量配置和节能配置。 + 其他不太适合 openGauss 和 MOT 服务器的配置可能会影响 MOT 的整体性能,包括:平衡配置、桌面配置、延迟性能配置、网络延迟配置、网络吞吐量配置和节能配置。 - 启动调优 在内核启动参数中添加iommu.passthrough=1。 - 在pass-through模式下运行时,适配器需要DMA转换到内存,从而提高性能。 + 在pass-through模式下运行时,适配器需要 DMA 转换到内存,从而提高性能。 diff --git "a/content/zh/docs/Developerguide/MOT\346\234\254\345\234\260\345\206\205\345\255\230\345\222\214\345\205\250\345\261\200\345\206\205\345\255\230.md" "b/content/zh/docs/Developerguide/MOT\346\234\254\345\234\260\345\206\205\345\255\230\345\222\214\345\205\250\345\261\200\345\206\205\345\255\230.md" index 24324e763..99f850875 100644 --- "a/content/zh/docs/Developerguide/MOT\346\234\254\345\234\260\345\206\205\345\255\230\345\222\214\345\205\250\345\261\200\345\206\205\345\255\230.md" +++ "b/content/zh/docs/Developerguide/MOT\346\234\254\345\234\260\345\206\205\345\255\230\345\222\214\345\205\250\345\261\200\345\206\205\345\255\230.md" @@ -1,13 +1,13 @@ # MOT本地内存和全局内存 -SILO管理本地内存和全局内存,如图1所示。 +SILO 管理本地内存和全局内存,如图 1 所示。 - 全局内存是所有核共享的长期内存,主要用于存储所有的表数据和索引。 - 本地内存是短期内存,主要由会话使用,用于处理事务及将数据更改存储到事务内存中,直到提交阶段。 -当事务需要更改时,SILO将该事务的所有数据从全局内存复制到本地内存。使用OCC方法,全局内存中放置的是最小的锁,因此争用时间极短。事务更改完成后,该数据从本地内存回推到全局内存中。 +当事务需要更改时, SILO 将该事务的所有数据从全局内存复制到本地内存。使用 OCC 方法,全局内存中放置的是最小的锁,因此争用时间极短。事务更改完成后,该数据从本地内存回推到全局内存中。 -本地内存与SILO增强并发控制的基本交互式事务流如下所示: +本地内存与 SILO 增强并发控制的基本交互式事务流如下所示: **图 1** 私有(本地)内存(每个事务)和全局内存(所有核的所有事务) ![](figures/私有(本地)内存(每个事务)和全局内存(所有核的所有事务).png "私有(本地)内存(每个事务)和全局内存(所有核的所有事务)") diff --git "a/content/zh/docs/Developerguide/MOT\346\237\245\350\257\242\345\216\237\347\224\237\347\274\226\350\257\221_JIT.md" "b/content/zh/docs/Developerguide/MOT\346\237\245\350\257\242\345\216\237\347\224\237\347\274\226\350\257\221_JIT.md" index 1baa6ead7..2bcdefeba 100644 --- "a/content/zh/docs/Developerguide/MOT\346\237\245\350\257\242\345\216\237\347\224\237\347\274\226\350\257\221_JIT.md" +++ "b/content/zh/docs/Developerguide/MOT\346\237\245\350\257\242\345\216\237\347\224\237\347\274\226\350\257\221_JIT.md" @@ -1,19 +1,19 @@ # MOT查询原生编译(JIT) -MOT使您可以在执行之前以原生格式(使用PREPARE语句)准备并分析预编译的完整查询。 +MOT 使您可以在执行之前以原生格式(使用 PREPARE 语句)准备并分析预编译的完整查询。 -这种本机格式以后可以更有效地执行(使用EXECUTE命令)。这种类型的执行效率要高得多,因为在执行期间,本机格式绕过了多个数据库处理层。这种分工避免了重复的解析分析操作。Lite Executor模块负责执行预准备查询,其执行路径比封装执行的常规通用计划要快得多。这是通过LLVM使用实时(JIT)编译来实现的。此外,以伪LLVM的形式提供具有潜在相似性能的类似解决方案。 +这种本机格式以后可以更有效地执行(使用 EXECUTE 命令)。这种类型的执行效率要高得多,因为在执行期间,本机格式绕过了多个数据库处理层。这种分工避免了重复的解析分析操作。 Lite Executor 模块负责执行预准备查询,其执行路径比封装执行的常规通用计划要快得多。这是通过 LLVM 使用实时(JIT)编译来实现的。此外,以伪 LLVM 的形式提供具有潜在相似性能的类似解决方案。 -下面是SQL中的PREPARE语法示例: +下面是 SQL 中的 PREPARE 语法示例: ``` PREPARE name [ ( data_type [, ...] ) ] AS statement ``` -下面是一个如何在Java应用程序中调用PREPARE和EXECUTE语句的示例: +下面是一个如何在 Java 应用程序中调用 PREPARE 和 EXECUTE 语句的示例: ``` -conn = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword); +conn = DriverManager.getConnection(connectionUrl, connectionUser , connectionPassword); // Example 1: PREPARE without bind settings String query = "SELECT * FROM getusers"; @@ -32,36 +32,36 @@ while (rs2.next()) {…} ## Prepare -**Prepare**创建一个预处理语句。预处理语句是服务器端对象,可用于优化性能。执行PREPARE语句时,将解析、分析和重写指定的语句。 +**Prepare**创建一个预处理语句。预处理语句是服务器端对象,可用于优化性能。执行 PREPARE 语句时,将解析、分析和重写指定的语句。 -如果查询语句中提到的表是MOT表,则MOT编译负责对象准备,并基于LLVM将查询编译成IR字节码进行特殊优化。 +如果查询语句中提到的表是 MOT 表,则 MOT 编译负责对象准备,并基于 LLVM 将查询编译成 IR 字节码进行特殊优化。 -每当需要新的查询编译时,都会分析查询,并使用实用程序GsCodeGen对象和标准LLVM JIT API(IRBuilder)为查询生成合适的IR字节代码。完成字节代码生成后,代码将被JIT编译到单独的LLVM模块中。编译的代码生成一个C函数指针,以后可以调用该指针直接执行。请注意,这个C函数可以被许多线程并发调用,只要每个线程提供不同的执行上下文(详细信息如下)。每个这样的执行上下文称为“JIT上下文”。 +每当需要新的查询编译时,都会分析查询,并使用实用程序 GsCodeGen 对象和标准LLVM JIT API(IRBuilder)为查询生成合适的 IR 字节代码。完成字节代码生成后,代码将被 JIT 编译到单独的 LLVM 模块中。编译的代码生成一个 C 函数指针,以后可以调用该指针直接执行。请注意,这个 C 函数可以被许多线程并发调用,只要每个线程提供不同的执行上下文(详细信息如下)。每个这样的执行上下文称为“JIT上下文”。 -为了进一步提高性能,MOT JIT对其LLVM代码结果应用缓存策略,使它们能够被在不同会话中的相同查询重用。 +为了进一步提高性能, MOT JIT 对其 LLVM 代码结果应用缓存策略,使它们能够被在不同会话中的相同查询重用。 ## 执行 -当发出EXECUTE命令时,会计划并执行预准备语句(上文所述)。这种分工避免了重复的解析分析工作,同时使执行计划依赖于提供的特定设置值。 +当发出 EXECUTE 命令时,会计划并执行预准备语句(上文所述)。这种分工避免了重复的解析分析工作,同时使执行计划依赖于提供的特定设置值。 -当生成的执行查询命令到达数据库时,它使用相应的IR字节代码,在MOT引擎中直接执行该代码,并且执行效率更高。这称为“轻量级执行”。 +当生成的执行查询命令到达数据库时,它使用相应的 IR 字节代码,在 MOT 引擎中直接执行该代码,并且执行效率更高。这称为“轻量级执行”。 -此外,为了可用性,Lite Executor维护了一个预先分配的JIT源池。每个会话预分配自己的会话本地JIT上下文对象池(用于重复执行预编译查询)。 +此外,为了可用性, Lite Executor 维护了一个预先分配的 JIT 源池。每个会话预分配自己的会话本地 JIT 上下文对象池(用于重复执行预编译查询)。 -有关更多详细信息,请参阅“支持Lite执行的查询”和“不支持Lite执行的查询”部分。 +有关更多详细信息,请参阅“支持 Lite 执行的查询”和“不支持 Lite 执行的查询”部分。 -## JIT编译对比-openGauss盘表与MOT表 +## JIT编译对比-openGauss盘表与 MOT 表 -目前,openGauss包含针对其基于磁盘的表的JIT/CodeGen查询优化的两种主要形式: +目前, openGauss 包含针对其基于磁盘的表的JIT/CodeGen查询优化的两种主要形式: -- 加速表达式计算,例如在WHERE子句、目标列表、聚合和投影中。 +- 加速表达式计算,例如在 WHERE 子句、目标列表、聚合和投影中。 - 内联小函数调用。 -这些优化是局部的(从某种意义上说,它们不优化整个解释的运算符树或完全替换它),并且主要针对CPU绑定的复杂查询,通常在OLAP用例中可见。查询的执行是在使用解释运算符树的拉模型(Volcano样式处理)中执行的。激活后,每次执行查询时都会执行编译。目前,尚未提供生成的LLVM代码的缓存及其跨会话和查询的重用。 +这些优化是局部的(从某种意义上说,它们不优化整个解释的运算符树或完全替换它),并且主要针对 CPU 绑定的复杂查询,通常在 OLAP 用例中可见。查询的执行是在使用解释运算符树的拉模型(Volcano样式处理)中执行的。激活后,每次执行查询时都会执行编译。目前,尚未提供生成的 LLVM 代码的缓存及其跨会话和查询的重用。 -相反,MOT JIT优化为符合MOT JIT优化条件的整个查询提供了LLVM代码。结果代码用于直接执行MOT表,而解释的运算符模型则完全放弃。结果实际上是为整个特定查询执行生成的手写LLVM代码。 +相反, MOT JIT 优化为符合 MOT JIT 优化条件的整个查询提供了 LLVM 代码。结果代码用于直接执行 MOT 表,而解释的运算符模型则完全放弃。结果实际上是为整个特定查询执行生成的手写 LLVM 代码。 -另一个显着的概念差异是MOT LLVM代码只在查询的PREPARE阶段为准备查询生成,而不是在查询执行时生成。由于OLTP查询的运行时间相当短,因此这对于OLTP场景尤其重要,这无法在每次查询执行期间生成代码和执行较长的查询编译时间。 +另一个显着的概念差异是 MOT LLVM 代码只在查询的 PREPARE 阶段为准备查询生成,而不是在查询执行时生成。由于 OLTP 查询的运行时间相当短,因此这对于 OLTP 场景尤其重要,这无法在每次查询执行期间生成代码和执行较长的查询编译时间。 -最后,在openGauss中,激活PREPARE意味着于同一个会话中具有不同参数的执行之间重用生成的计划。同样,MOT JIT对其LLVM代码结果应用了缓存策略,并扩展了缓存策略,以便在不同会话之间重用。因此,单个查询可以只编译一次,其LLVM代码可以在多个会话中重用,这同样有利于OLTP场景。 +最后,在 openGauss 中,激活 PREPARE 意味着于同一个会话中具有不同参数的执行之间重用生成的计划。同样, MOT JIT 对其 LLVM 代码结果应用了缓存策略,并扩展了缓存策略,以便在不同会话之间重用。因此,单个查询可以只编译一次,其 LLVM 代码可以在多个会话中重用,这同样有利于 OLTP 场景。 diff --git "a/content/zh/docs/Developerguide/MOT\346\237\245\350\257\242\345\216\237\347\224\237\347\274\226\350\257\221\357\274\210JIT\357\274\211.md" "b/content/zh/docs/Developerguide/MOT\346\237\245\350\257\242\345\216\237\347\224\237\347\274\226\350\257\221\357\274\210JIT\357\274\211.md" index c7dcacf10..173aa6763 100644 --- "a/content/zh/docs/Developerguide/MOT\346\237\245\350\257\242\345\216\237\347\224\237\347\274\226\350\257\221\357\274\210JIT\357\274\211.md" +++ "b/content/zh/docs/Developerguide/MOT\346\237\245\350\257\242\345\216\237\347\224\237\347\274\226\350\257\221\357\274\210JIT\357\274\211.md" @@ -1,19 +1,19 @@ # MOT查询原生编译(JIT) -MOT使您可以在执行之前以原生格式(使用PREPARE语句)准备并分析预编译的完整查询。 +MOT 使您可以在执行之前以原生格式(使用 PREPARE 语句)准备并分析预编译的完整查询。 -这种本机格式以后可以更有效地执行(使用EXECUTE命令)。这种类型的执行效率要高得多,因为在执行期间,本机格式绕过了多个数据库处理层。这种分工避免了重复的解析分析操作。Lite Executor模块负责执行预准备查询,其执行路径比封装执行的常规通用计划要快得多。这是通过LLVM使用实时(JIT)编译来实现的。此外,以伪LLVM的形式提供具有潜在相似性能的类似解决方案。 +这种本机格式以后可以更有效地执行(使用 EXECUTE 命令)。这种类型的执行效率要高得多,因为在执行期间,本机格式绕过了多个数据库处理层。这种分工避免了重复的解析分析操作。 Lite Executor 模块负责执行预准备查询,其执行路径比封装执行的常规通用计划要快得多。这是通过 LLVM 使用实时(JIT)编译来实现的。此外,以伪 LLVM 的形式提供具有潜在相似性能的类似解决方案。 -下面是SQL中的PREPARE语法示例– +下面是 SQL 中的 PREPARE 语法示例– ``` PREPARE name [ ( data_type [, ...] ) ] AS statement ``` -下面是一个如何在Java应用程序中调用PREPARE和EXECUTE语句的示例: +下面是一个如何在 Java 应用程序中调用 PREPARE 和 EXECUTE 语句的示例: ``` -conn = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword); +conn = DriverManager.getConnection(connectionUrl, connectionUser , connectionPassword); // Example 1: PREPARE without bind settings String query = "SELECT * FROM getusers"; @@ -32,36 +32,36 @@ while (rs2.next()) {…} ## Prepare -**Prepare**创建一个预处理语句。预处理语句是服务器端对象,可用于优化性能。执行PREPARE语句时,将解析、分析和重写指定的语句。 +**Prepare**创建一个预处理语句。预处理语句是服务器端对象,可用于优化性能。执行 PREPARE 语句时,将解析、分析和重写指定的语句。 -如果查询语句中提到的表是MOT表,则MOT编译负责对象准备,并基于LLVM将查询编译成IR字节码进行特殊优化。 +如果查询语句中提到的表是 MOT 表,则 MOT 编译负责对象准备,并基于 LLVM 将查询编译成 IR 字节码进行特殊优化。 -每当需要新的查询编译时,都会分析查询,并使用实用程序GsCodeGen对象和标准LLVM JIT API(IRBuilder)为查询生成合适的IR字节代码。完成字节代码生成后,代码将被JIT编译到单独的LLVM模块中。编译的代码生成一个C函数指针,以后可以调用该指针直接执行。请注意,这个C函数可以被许多线程并发调用,只要每个线程提供不同的执行上下文(详细信息如下)。每个这样的执行上下文称为“JIT上下文”。 +每当需要新的查询编译时,都会分析查询,并使用实用程序 GsCodeGen 对象和标准LLVM JIT API(IRBuilder)为查询生成合适的 IR 字节代码。完成字节代码生成后,代码将被 JIT 编译到单独的 LLVM 模块中。编译的代码生成一个 C 函数指针,以后可以调用该指针直接执行。请注意,这个 C 函数可以被许多线程并发调用,只要每个线程提供不同的执行上下文(详细信息如下)。每个这样的执行上下文称为“JIT上下文”。 -为了进一步提高性能,MOT JIT对其LLVM代码结果应用缓存策略,使它们能够被在不同会话中的相同查询重用。 +为了进一步提高性能, MOT JIT 对其 LLVM 代码结果应用缓存策略,使它们能够被在不同会话中的相同查询重用。 ## 执行 -当发出EXECUTE命令时,会计划并执行预准备语句(上文所述)。这种分工避免了重复的解析分析工作,同时使执行计划依赖于提供的特定设置值。 +当发出 EXECUTE 命令时,会计划并执行预准备语句(上文所述)。这种分工避免了重复的解析分析工作,同时使执行计划依赖于提供的特定设置值。 -当生成的执行查询命令到达数据库时,它使用相应的IR字节代码,在MOT引擎中直接执行该代码,并且执行效率更高。这称为“轻量级执行”。 +当生成的执行查询命令到达数据库时,它使用相应的 IR 字节代码,在 MOT 引擎中直接执行该代码,并且执行效率更高。这称为“轻量级执行”。 -此外,为了可用性,Lite Executor维护了一个预先分配的JIT源池。每个会话预分配自己的会话本地JIT上下文对象池(用于重复执行预编译查询)。 +此外,为了可用性, Lite Executor 维护了一个预先分配的 JIT 源池。每个会话预分配自己的会话本地 JIT 上下文对象池(用于重复执行预编译查询)。 -有关更多详细信息,请参阅“支持Lite执行的查询”和“不支持Lite执行的查询”部分。 +有关更多详细信息,请参阅“支持 Lite 执行的查询”和“不支持 Lite 执行的查询”部分。 -## JIT编译对比-openGauss盘表与MOT表 +## JIT编译对比-openGauss盘表与 MOT 表 -目前,openGauss包含针对其基于磁盘的表的JIT/CodeGen查询优化的两种主要形式: +目前, openGauss 包含针对其基于磁盘的表的JIT/CodeGen查询优化的两种主要形式: -- 加速表达式计算,例如在WHERE子句、目标列表、聚合和投影中。 +- 加速表达式计算,例如在 WHERE 子句、目标列表、聚合和投影中。 - 内联小函数调用。 -这些优化是局部的(从某种意义上说,它们不优化整个解释的运算符树或完全替换它),并且主要针对CPU绑定的复杂查询,通常在OLAP用例中可见。查询的执行是在使用解释运算符树的拉模型(Volcano样式处理)中执行的。激活后,每次执行查询时都会执行编译。目前,尚未提供生成的LLVM代码的缓存及其跨会话和查询的重用。 +这些优化是局部的(从某种意义上说,它们不优化整个解释的运算符树或完全替换它),并且主要针对 CPU 绑定的复杂查询,通常在 OLAP 用例中可见。查询的执行是在使用解释运算符树的拉模型(Volcano样式处理)中执行的。激活后,每次执行查询时都会执行编译。目前,尚未提供生成的 LLVM 代码的缓存及其跨会话和查询的重用。 -相反,MOT JIT优化为符合MOT JIT优化条件的整个查询提供了LLVM代码。结果代码用于直接执行MOT表,而解释的运算符模型则完全放弃。结果实际上是为整个特定查询执行生成的手写LLVM代码。 +相反, MOT JIT 优化为符合 MOT JIT 优化条件的整个查询提供了 LLVM 代码。结果代码用于直接执行 MOT 表,而解释的运算符模型则完全放弃。结果实际上是为整个特定查询执行生成的手写 LLVM 代码。 -另一个显着的概念差异是MOT LLVM代码只在查询的PREPARE阶段为准备查询生成,而不是在查询执行时生成。由于OLTP查询的运行时间相当短,因此这对于OLTP场景尤其重要,这无法在每次查询执行期间生成代码和执行较长的查询编译时间。 +另一个显着的概念差异是 MOT LLVM 代码只在查询的 PREPARE 阶段为准备查询生成,而不是在查询执行时生成。由于 OLTP 查询的运行时间相当短,因此这对于 OLTP 场景尤其重要,这无法在每次查询执行期间生成代码和执行较长的查询编译时间。 -最后,在openGauss中,激活PREPARE意味着于同一个会话中具有不同参数的执行之间重用生成的计划。同样,MOT JIT对其LLVM代码结果应用了缓存策略,并扩展了缓存策略,以便在不同会话之间重用。因此,单个查询可以只编译一次,其LLVM代码可以在多个会话中重用,这同样有利于OLTP场景。 +最后,在 openGauss 中,激活 PREPARE 意味着于同一个会话中具有不同参数的执行之间重用生成的计划。同样, MOT JIT 对其 LLVM 代码结果应用了缓存策略,并扩展了缓存策略,以便在不同会话之间重用。因此,单个查询可以只编译一次,其 LLVM 代码可以在多个会话中重用,这同样有利于 OLTP 场景。 diff --git "a/content/zh/docs/Developerguide/MOT\346\240\267\344\276\213TPC-C\345\237\272\345\207\206.md" "b/content/zh/docs/Developerguide/MOT\346\240\267\344\276\213TPC-C\345\237\272\345\207\206.md" index 61bfd02ad..a25be3d62 100644 --- "a/content/zh/docs/Developerguide/MOT\346\240\267\344\276\213TPC-C\345\237\272\345\207\206.md" +++ "b/content/zh/docs/Developerguide/MOT\346\240\267\344\276\213TPC-C\345\237\272\345\207\206.md" @@ -4,7 +4,7 @@ TPC-C基准是衡量联机事务处理(OLTP)系统性能的行业标准基准。它基于一个复杂的数据库和许多不同的事务类型。这些事务类型在此基准上执行。TPC-C基准测试既不依赖硬件,也不依赖软件,因此可以在每个测试平台上运行。基准模型的官方概述,见tpc.org网站([http://www.tpc.org/default5.asp](http://www.tpc.org/default5.asp))。 -该数据库由9个不同结构的表组成,因此也包括9种类型的数据。每个表的数据大小和数量不同。在数据库上混合执行五种不同类型和复杂性的并发事务。这些大部分是在线事务或者部分排队等待延迟批处理。由于这些表竞争有限的系统资源,许多系统组件都有压力,数据更改以各种方式执行。 +该数据库由 9 个不同结构的表组成,因此也包括 9 种类型的数据。每个表的数据大小和数量不同。在数据库上混合执行五种不同类型和复杂性的并发事务。这些大部分是在线事务或者部分排队等待延迟批处理。由于这些表竞争有限的系统资源,许多系统组件都有压力,数据更改以各种方式执行。 **表 1** TPC-C数据库结构 @@ -37,7 +37,7 @@ TPC-C基准是衡量联机事务处理(OLTP)系统性能的行业标准基

客户

-

3000/区,30,000/仓库

+

3000/区, 30 ,000/仓库

订单

@@ -102,44 +102,44 @@ TPC-C基准是衡量联机事务处理(OLTP)系统性能的行业标准基 -有两种方法来执行事务:作为存储过程(允许更高的吞吐量)和以标准交互式SQL模式执行。 +有两种方法来执行事务:作为存储过程(允许更高的吞吐量)和以标准交互式 SQL 模式执行。 **性能指标:tpm-C** tpm-C指标是每分钟执行的新订单事务数。考虑到事务中所需的组合以及广泛的复杂性和类型,此指标最接近地模拟一个全面的业务活动,而不仅仅是一个或两个事务或计算机操作。因此,tpm-C指标被认为是业务吞吐量的指标。 -tpm-C指标单位表示为每分钟事务数-C,而C表示TPC-C特定基准。 +tpm-C指标单位表示为每分钟事务数-C,而 C 表示TPC-C特定基准。 >![](public_sys-resources/icon-note.gif) **说明:** ->官方TPC-C基准规范可访问:[http://www.tpc.org/tpc\_documents\_current\_versions/pdf/tpc-c\_v5.11.0.pdf](http://www.tpc.org/tpc_documents_current_versions/pdf/tpc-c_v5.11.0.pdf)。本规范中的一些规则在行业中难以实现,因为对行业现状来说这些规则太严格了。例如:扩容规则(a) tpm-C/Warehouse必须大于9且小于12.86(要达到较高的tpm-C率,需要很高的仓库费率。这就意味着需要非常大的数据库和内存容量)以及规则(b)10倍终端\*仓库(意味着大量的模拟客户端)。 +>官方TPC-C基准规范可访问:[http://www.tpc.org/tpc\_documents\_current\_versions/pdf/tpc-c\_v5.11.0.pdf](http://www.tpc.org/tpc_documents_current_versions/pdf/tpc-c_v5.11.0.pdf)。本规范中的一些规则在行业中难以实现,因为对行业现状来说这些规则太严格了。例如:扩容规则(a) tpm-C/Warehouse必须大于 9 且小于12.86(要达到较高的tpm-C率,需要很高的仓库费率。这就意味着需要非常大的数据库和内存容量)以及规则(b)10倍终端\*仓库(意味着大量的模拟客户端)。 ## 系统级优化 -请按照[MOT部署](MOT部署.md)中的说明进行操作。下面介绍openGauss数据库在华为TaiShan服务器和Euler 2.8操作系统上部署时系统级的关键优化点,以达到极致性能。 +请按照[MOT部署](MOT部署.md)中的说明进行操作。下面介绍 openGauss 数据库在华为 TaiShan 服务器和Euler 2.8操作系统上部署时系统级的关键优化点,以达到极致性能。 ## BenchmarkSQL:开源TPC-C工具 -可以使用BenchmarkSQL测试TPCC,如下所示: +可以使用 BenchmarkSQL 测试 TPCC ,如下所示: - 下载benchmarksql:[https://osdn.net/frs/g\_redir.php?m=kent&f=benchmarksql%2Fbenchmarksql-5.0.zip](https://osdn.net/frs/g_redir.php?m=kent&f=benchmarksql/benchmarksql-5.0.zip) -- benchmarksql工具中的模式创建脚本需要调整为MOT语法,避免使用不支持的DDL。下载调整后的脚本:[https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.0.0/MOT-TPCC-Benchmark.tar.gz](https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.0.0/MOT-TPCC-Benchmark.tar.gz)。该tar文件的内容包括sql.common.opengauss.mot文件夹和jTPCCTData.java文件,以及一个示例配置文件postgresql.conf和TPCC属性文件props.mot供参考。 -- 将sql.common.opengauss.mot文件夹放在run文件夹下与sql.common同级的文件夹,用下载的Java文件替换src/client/jTPCCTData.java文件。 -- 编辑run文件夹下的runDatabaseBuild.sh文件,将extraHistID从AFTER\_LOAD列表中删除,以避免不支持的ALTER表DDL。 -- 将lib/postgres文件夹下的JDBC驱动替换为openGauss JDBC。驱动下载链接:[https://opengauss.org/en/download.html](https://opengauss.org/en/download.html)。 +- benchmarksql工具中的模式创建脚本需要调整为 MOT 语法,避免使用不支持的 DDL 。下载调整后的脚本:[https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.0.0/MOT-TPCC-Benchmark.tar.gz](https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.0.0/MOT-TPCC-Benchmark.tar.gz)。该 tar 文件的内容包括sql.common.opengauss.mot文件夹和jTPCCTData.java文件,以及一个示例配置文件postgresql.conf和 TPCC 属性文件props.mot供参考。 +- 将sql.common.opengauss.mot文件夹放在 run 文件夹下与sql.common同级的文件夹,用下载的 Java 文件替换src/client/jTPCCTData.java文件。 +- 编辑 run 文件夹下的runDatabaseBuild.sh文件,将 extraHistID 从AFTER\_LOAD列表中删除,以避免不支持的 ALTER 表 DDL 。 +- 将lib/postgres文件夹下的 JDBC 驱动替换为 openGauss JDBC 。驱动下载链接:[https://opengauss.org/en/download.html](https://opengauss.org/en/download.html)。 -在下载的Java文件(与原始文件相比)中所做的唯一更改是注释错误日志打印,以进行序列化和重复键错误。这些错误在MOT中是正常的,因为MOT使用的是乐观并发控制(OCC)机制。 +在下载的 Java 文件(与原始文件相比)中所做的唯一更改是注释错误日志打印,以进行序列化和重复键错误。这些错误在 MOT 中是正常的,因为 MOT 使用的是乐观并发控制(OCC)机制。 >![](public_sys-resources/icon-note.gif) **说明:** ->基准测试使用标准交互式SQL模式执行,没有存储过程。 +>基准测试使用标准交互式 SQL 模式执行,没有存储过程。 ## 运行基准 -任何人都可以启动服务器,运行benchmarksql脚本。 +任何人都可以启动服务器,运行 benchmarksql 脚本。 运行基准测试: -1. 进入benchmarksql运行文件夹,将sql.common重命名为sql.common.orig。 -2. 创建sql.common到sql.common.opengauss.mot的链接,用于测试MOT。 +1. 进入 benchmarksql 运行文件夹,将sql.common重命名为sql.common.orig。 +2. 创建sql.common到sql.common.opengauss.mot的链接,用于测试 MOT 。 3. 启动数据库服务器。 4. 配置客户端props.pg文件。 5. 运行基准测试。 @@ -148,13 +148,13 @@ tpm-C指标单位表示为每分钟事务数-C,而C表示TPC-C特定基准。 - CLI结果 - BenchmarkSQL结果应如下所示: +BenchmarkSQL 结果应如下所示: ![](figures/zh-cn_image_0280525213.jpg) 随着时间的推移,基准测量并平均已提交的事务。上面的例子是两分钟的基准测试。 - 得分为271万tmp-C(每分钟新增订单数),占总承诺事务数的45%,即tpmTOTAL。 + 得分为 271 万tmp-C(每分钟新增订单数),占总承诺事务数的45%,即 tpmTOTAL 。 - 详细结果报告 @@ -166,13 +166,13 @@ tpm-C指标单位表示为每分钟事务数-C,而C表示TPC-C特定基准。 ![](figures/zh-cn_image_0280525217.png) -BenchmarkSQL收集详细的性能统计数据和操作系统性能数据(如果配置了的话)。 +BenchmarkSQL 收集详细的性能统计数据和操作系统性能数据(如果配置了的话)。 这些信息可以显示查询的延迟,从而暴露与存储/网络/CPU相关的瓶颈。 华为TaiShan 2480 MOT TPC-C测试结果 -2020年5月1日TPC-C基准测试,TaiShan 2480服务器(Arm/鲲鹏4路服务器)安装openGauss数据库,吞吐量达到479万tpmC。 +2020 年 5 月 1 日TPC-C基准测试, TaiShan 2480 服务器(Arm/鲲鹏 4 路服务器)安装 openGauss 数据库,吞吐量达到 479 万 tpmC 。 下图展示了近乎线性的可扩展性: diff --git "a/content/zh/docs/Developerguide/MOT\346\243\200\346\237\245\347\202\271\346\246\202\345\277\265.md" "b/content/zh/docs/Developerguide/MOT\346\243\200\346\237\245\347\202\271\346\246\202\345\277\265.md" index d73885790..e1b5771d0 100644 --- "a/content/zh/docs/Developerguide/MOT\346\243\200\346\237\245\347\202\271\346\246\202\345\277\265.md" +++ "b/content/zh/docs/Developerguide/MOT\346\243\200\346\237\245\347\202\271\346\246\202\345\277\265.md" @@ -1,12 +1,12 @@ # MOT检查点概念 -在openGauss中,检查点是事务序列中一个点的快照,在该点上,可以保证堆和索引数据文件已经同步了检查点之前写入的所有信息。 +在 openGauss 中,检查点是事务序列中一个点的快照,在该点上,可以保证堆和索引数据文件已经同步了检查点之前写入的所有信息。 在执行检查点时,所有脏数据页都会刷新到磁盘,并将一个特殊的检查点记录写入日志文件。 -数据直接存储在内存中。MOT没有像openGauss那样存储数据,因此不存在脏页的概念。 +数据直接存储在内存中。 MOT 没有像 openGauss 那样存储数据,因此不存在脏页的概念。 -为此,我们研究并实现了CALC算法,该算法在耶鲁大学发布的Low-Overhead Asynchronous Checkpointing in Main-Memory Database Systems, SIGMOND 2016中得到了描述。 +为此,我们研究并实现了 CALC 算法,该算法在耶鲁大学发布的Low-Overhead Asynchronous Checkpointing in Main-Memory Database Systems, SIGMOND 2016 中得到了描述。 主内存数据库系统中的低开销异步检查点。 @@ -20,7 +20,7 @@ ## 检查点激活 -MOT检查点被集成到openGauss的封装的检查点机制中。检查点流程可以通过执行**CHECKPOINT**;命令手动触发,也可以根据封装的检查点触发设置(时间/大小)自动触发。 +MOT 检查点被集成到 openGauss 的封装的检查点机制中。检查点流程可以通过执行**CHECKPOINT**;命令手动触发,也可以根据封装的检查点触发设置(时间/大小)自动触发。 检查点配置在mot.conf文件中执行,请参见[检查点(MOT)](MOT配置.md#section8719101152712)部分。 diff --git "a/content/zh/docs/Developerguide/MOT\346\265\213\350\257\225\346\200\273\347\273\223.md" "b/content/zh/docs/Developerguide/MOT\346\265\213\350\257\225\346\200\273\347\273\223.md" index 52de3dd2a..b4be1e7aa 100644 --- "a/content/zh/docs/Developerguide/MOT\346\265\213\350\257\225\346\200\273\347\273\223.md" +++ "b/content/zh/docs/Developerguide/MOT\346\265\213\350\257\225\346\200\273\347\273\223.md" @@ -1,10 +1,10 @@ # MOT测试总结 -MOT比磁盘表性能提升2.5至4.1倍,在Arm/鲲鹏256核服务器上达到480万tpmC。测试结果清楚表明MOT在扩展和利用所有硬件资源方面的卓越能力。随着CPU槽位和服务器核数增加,性能会随之跃升。 +MOT 比磁盘表性能提升2.5至4.1倍,在Arm/鲲鹏 256 核服务器上达到 480 万 tpmC 。测试结果清楚表明 MOT 在扩展和利用所有硬件资源方面的卓越能力。随着 CPU 槽位和服务器核数增加,性能会随之跃升。 -MOT在Arm/鲲鹏架构下最高可达3万tpmC/核,在x86架构下最高可达4万tpmC/核。 +MOT 在Arm/鲲鹏架构下最高可达 3 万tpmC/核,在 x86 架构下最高可达 4 万tpmC/核。 -由于持久性机制更高效,MOT中的复制开销在Arm/鲲鹏主备高可用场景下为7%,在x86服务器中为2%。而磁盘表的开销在Arm/鲲鹏中为20%,在x86中为15%。 +由于持久性机制更高效, MOT 中的复制开销在Arm/鲲鹏主备高可用场景下为7%,在 x86 服务器中为2%。而磁盘表的开销在Arm/鲲鹏中为20%,在 x86 中为15%。 -最终,MOT延迟降低2.5倍,TPC-C事务响应速度提升2至7倍。 +最终, MOT 延迟降低2.5倍,TPC-C事务响应速度提升 2 至 7 倍。 diff --git "a/content/zh/docs/Developerguide/MOT\347\211\271\346\200\247\345\217\212\344\273\267\345\200\274.md" "b/content/zh/docs/Developerguide/MOT\347\211\271\346\200\247\345\217\212\344\273\267\345\200\274.md" index ab0db4c75..467e85fa9 100644 --- "a/content/zh/docs/Developerguide/MOT\347\211\271\346\200\247\345\217\212\344\273\267\345\200\274.md" +++ "b/content/zh/docs/Developerguide/MOT\347\211\271\346\200\247\345\217\212\344\273\267\345\200\274.md" @@ -1,16 +1,16 @@ # MOT特性及价值 -MOT在高性能(查询和事务延迟)、高可扩展性(吞吐量和并发量)以及高资源利用率(某些程度上节约成本)方面拥有显著优势。 +MOT 在高性能(查询和事务延迟)、高可扩展性(吞吐量和并发量)以及高资源利用率(某些程度上节约成本)方面拥有显著优势。 - 低延迟(Low Latency):提供快速的查询和事务响应时间。 - 高吞吐量(High Throughput):支持峰值和持续高用户并发。 - 高资源利用率(High Resource Utilization):充分利用硬件。 -使用了MOT的应用程序可以达到普通表2.5到4倍的吞吐量。例如,在基于Arm/鲲鹏的华为TaiShan服务器和基于英特尔至强的戴尔x86服务器上,执行TPC-C基准测试(交互事务和同步日志),MOT提供的吞吐率增益在2路服务器上达到2.5倍,4路服务器上达到3.7倍,在4路256核Arm服务器上达到480万tpmC。 +使用了 MOT 的应用程序可以达到普通表2.5到 4 倍的吞吐量。例如,在基于Arm/鲲鹏的华为 TaiShan 服务器和基于英特尔至强的戴尔 x86 服务器上,执行TPC-C基准测试(交互事务和同步日志), MOT 提供的吞吐率增益在 2 路服务器上达到2.5倍, 4 路服务器上达到3.7倍,在 4 路 256 核 Arm 服务器上达到 480 万 tpmC 。 -在TPC-C基准测试中可观察到,MOT提供更低的延迟,将事务处理速度提升了3至5.5倍。 +在TPC-C基准测试中可观察到, MOT 提供更低的延迟,将事务处理速度提升了 3 至5.5倍。 -此外,高负载和高争用的场景是所有领先的行业数据库都会遇到的公认问题,而MOT能够在这种情况下极高地利用服务器资源。使用MOT后,4路服务器的资源利用率达到99%,远远领先其他行业数据库。 +此外,高负载和高争用的场景是所有领先的行业数据库都会遇到的公认问题,而 MOT 能够在这种情况下极高地利用服务器资源。使用 MOT 后, 4 路服务器的资源利用率达到99%,远远领先其他行业数据库。 这种能力在现代的多核服务器上尤为明显和重要。 diff --git "a/content/zh/docs/Developerguide/MOT\347\232\204\346\246\202\345\277\265.md" "b/content/zh/docs/Developerguide/MOT\347\232\204\346\246\202\345\277\265.md" index b4ad659e4..e3d2abe41 100644 --- "a/content/zh/docs/Developerguide/MOT\347\232\204\346\246\202\345\277\265.md" +++ "b/content/zh/docs/Developerguide/MOT\347\232\204\346\246\202\345\277\265.md" @@ -1,12 +1,12 @@ # MOT的概念 -本章介绍openGauss MOT的设计和工作原理,阐明其高级特性、功能及使用方法,旨在让读者了解MOT操作上的技术细节、重要特性细节和创新点。本章内容有助于决策MOT是否适合于特定的应用需求,以及进行最有效的使用和管理。 +本章介绍 openGauss MOT 的设计和工作原理,阐明其高级特性、功能及使用方法,旨在让读者了解 MOT 操作上的技术细节、重要特性细节和创新点。本章内容有助于决策 MOT 是否适合于特定的应用需求,以及进行最有效的使用和管理。 - **[MOT纵向扩容架构](MOT纵向扩容架构.md)** - **[MOT并发控制机制](MOT并发控制机制.md)** -- **[扩展FDW与其他openGauss特性](扩展FDW与其他openGauss特性.md)** +- **[扩展 FDW 与其他 openGauss 特性](扩展 FDW 与其他 openGauss 特性.md)** - **[NUMA-aware分配和亲和性](NUMA-aware分配和亲和性.md)** diff --git "a/content/zh/docs/Developerguide/MOT\347\233\221\346\216\247.md" "b/content/zh/docs/Developerguide/MOT\347\233\221\346\216\247.md" index 840b9f7eb..a3b9fe942 100644 --- "a/content/zh/docs/Developerguide/MOT\347\233\221\346\216\247.md" +++ "b/content/zh/docs/Developerguide/MOT\347\233\221\346\216\247.md" @@ -1,6 +1,6 @@ # MOT监控 -监控的所有语法支持基于Postgres的FDW表,包括下面的表或索引大小。此外,还存在用于监控MOT内存消耗的特殊函数,包括MOT全局内存、MOT本地内存和单个客户端会话。 +监控的所有语法支持基于 Postgres 的 FDW 表,包括下面的表或索引大小。此外,还存在用于监控 MOT 内存消耗的特殊函数,包括 MOT 全局内存、MOT本地内存和单个客户端会话。 ## 表和索引大小 @@ -22,7 +22,7 @@ select pg_relation_size('customer_pkey'); ## MOT全局内存详情 -检查MOT全局内存大小,主要是数据和索引。 +检查 MOT 全局内存大小,主要是数据和索引。 ``` select * from mot_global_memory_detail(); @@ -47,11 +47,11 @@ numa_node | reserved_size | used_size 其中, - -1为总内存。 -- 0–7为NUMA内存节点。 +- 0–7为 NUMA 内存节点。 ## MOT本地内存详情 -检查MOT本地内存大小,包括会话内存。 +检查 MOT 本地内存大小,包括会话内存。 ``` select * from mot_local_memory_detail(); @@ -76,11 +76,11 @@ numa_node | reserved_size | used_size 其中, - -1为总内存。 -- 0–7为NUMA内存节点。 +- 0–7为 NUMA 内存节点。 ## 会话内存 -会话管理的内存从MOT本地内存中获取。 +会话管理的内存从 MOT 本地内存中获取。 所有活动会话(连接)的内存使用量可以通过以下查询。 @@ -102,7 +102,7 @@ sessid | total_size | free_size | used_size - free\_size:未使用的内存。 - used\_size:使用中的内存。 -DBA可以通过以下查询确定当前会话使用的本地内存状态。 +DBA 可以通过以下查询确定当前会话使用的本地内存状态。 ``` select * from mot_session_memory_detail() diff --git "a/content/zh/docs/Developerguide/MOT\347\241\254\344\273\266.md" "b/content/zh/docs/Developerguide/MOT\347\241\254\344\273\266.md" index cabf87c8b..abcf5822b 100644 --- "a/content/zh/docs/Developerguide/MOT\347\241\254\344\273\266.md" +++ "b/content/zh/docs/Developerguide/MOT\347\241\254\344\273\266.md" @@ -1,10 +1,10 @@ # MOT硬件 -本次测试使用的服务器满足10GbE组网和以下配置: +本次测试使用的服务器满足 10GbE 组网和以下配置: -- 基于Arm64/鲲鹏920的2路服务器,型号为TaiShan 2280 v2(128核),800GB RAM,1TB NVMe盘。服务器详细规格参见[https://e.huawei.com/zh/products/servers/taishan-server/taishan-2480-v2](https://e.huawei.com/zh/products/servers/taishan-server/taishan-2480-v2)。操作系统为openEuler。 -- 基于Arm64/鲲鹏960的4路服务器,型号为TaiShan 2480 v2(256核),512GB RAM,1TB NVMe盘。服务器详细规格参见[https://e.huawei.com/zh/products/servers/taishan-server/taishan-2480-v2](https://e.huawei.com/zh/products/servers/taishan-server/taishan-2480-v2)。操作系统为openEuler。 -- 戴尔x86服务器,2路英特尔至强金牌6154 CPU @ 3Ghz,18核(超线程开启时共72核),1TB RAM,1TB SSD。操作系统为CentOS 7.6。 -- x86超微服务器,8路英特尔(R)至强(R) CPU E7-8890 v4 @ 2.20GHz,24核(超线程开启共384核),1TB RAM,1.2 TB SSD(希捷1200 SSD 200GB,SAS 12Gb/s)。操作系统为Ubuntu 16.04.2 LTS。 -- 华为x86服务器,4路英特尔(R)至强(R) CPU E7-8890 v4 @ 2.2Ghz(超线程开启共96核),512GB RAM,SSD 2TB。操作系统为CentOS 7.6。 +- 基于Arm64/鲲鹏 920 的 2 路服务器,型号为TaiShan 2280 v2(128核), 800GB RAM , 1TB NVMe 盘。服务器详细规格参见[https://e.huawei.com/zh/products/servers/taishan-server/taishan-2480-v2](https://e.huawei.com/zh/products/servers/taishan-server/taishan-2480-v2)。操作系统为 openEuler 。 +- 基于Arm64/鲲鹏 960 的 4 路服务器,型号为TaiShan 2480 v2(256核), 512GB RAM , 1TB NVMe 盘。服务器详细规格参见[https://e.huawei.com/zh/products/servers/taishan-server/taishan-2480-v2](https://e.huawei.com/zh/products/servers/taishan-server/taishan-2480-v2)。操作系统为 openEuler 。 +- 戴尔 x86 服务器, 2 路英特尔至强金牌6154 CPU @ 3Ghz, 18 核(超线程开启时共 72 核), 1TB RAM , 1TB SSD 。操作系统为CentOS 7.6。 +- x86超微服务器, 8 路英特尔(R)至强(R) CPU E7-8890 v4 @ 2.20GHz, 24 核(超线程开启共 384 核), 1TB RAM ,1.2 TB SSD(希捷 1200 SSD 200GB ,SAS 12Gb/s)。操作系统为Ubuntu 16.04.2 LTS。 +- 华为 x86 服务器, 4 路英特尔(R)至强(R) CPU E7-8890 v4 @ 2.2Ghz(超线程开启共 96 核), 512GB RAM , SSD 2TB 。操作系统为CentOS 7.6。 diff --git "a/content/zh/docs/Developerguide/MOT\347\256\200\344\273\213.md" "b/content/zh/docs/Developerguide/MOT\347\256\200\344\273\213.md" index 3c978f1ab..269150670 100644 --- "a/content/zh/docs/Developerguide/MOT\347\256\200\344\273\213.md" +++ "b/content/zh/docs/Developerguide/MOT\347\256\200\344\273\213.md" @@ -1,22 +1,22 @@ # MOT简介 -openGauss引入了MOT存储引擎,它是一种事务性行存储,针对多核和大内存服务器进行了优化。MOT是openGauss数据库最先进的生产级特性(Beta版本),它为事务性工作负载提供更高的性能。MOT完全支持ACID特性,并包括严格的持久性和高可用性支持。企业可以在关键任务、性能敏感的在线事务处理(OLTP)中使用MOT,以实现高性能、高吞吐、可预测低延迟以及多核服务器的高利用率。MOT尤其适合在多路和多核处理器的现代服务器上运行,例如基于Arm/鲲鹏处理器的华为TaiShan服务器,以及基于x86的戴尔或类似服务器。 +openGauss 引入了 MOT 存储引擎,它是一种事务性行存储,针对多核和大内存服务器进行了优化。 MOT 是 openGauss 数据库最先进的生产级特性(Beta版本),它为事务性工作负载提供更高的性能。 MOT 完全支持 ACID 特性,并包括严格的持久性和高可用性支持。企业可以在关键任务、性能敏感的在线事务处理(OLTP)中使用 MOT ,以实现高性能、高吞吐、可预测低延迟以及多核服务器的高利用率。 MOT 尤其适合在多路和多核处理器的现代服务器上运行,例如基于Arm/鲲鹏处理器的华为 TaiShan 服务器,以及基于 x86 的戴尔或类似服务器。 **图 1** openGauss内存优化存储引擎 ![](figures/openGauss内存优化存储引擎.png "openGauss内存优化存储引擎") -如[图1](#fig16939193016363)所示,openGauss数据库内存优化存储引擎组件(绿色部分)负责管理MOT和事务。 +如[图1](#fig16939193016363)所示, openGauss 数据库内存优化存储引擎组件(绿色部分)负责管理 MOT 和事务。 -MOT与基于磁盘的普通表并排创建。MOT的有效设计实现了几乎完全的SQL覆盖,并且支持完整的数据库功能集,如存储过程和自定义函数(限制参见[MOT SQL覆盖和限制](MOT-SQL覆盖和限制.md))。 +MOT 与基于磁盘的普通表并排创建。 MOT 的有效设计实现了几乎完全的 SQL 覆盖,并且支持完整的数据库功能集,如存储过程和自定义函数(限制参见[MOT SQL覆盖和限制](MOT-SQL覆盖和限制.md))。 -通过完全存储在内存中的数据和索引、非统一内存访问感知(NUMA-aware)设计、消除锁和锁存争用的算法以及查询原生编译,MOT可提供更快的数据访问和更高效的事务执行。 +通过完全存储在内存中的数据和索引、非统一内存访问感知(NUMA-aware)设计、消除锁和锁存争用的算法以及查询原生编译, MOT 可提供更快的数据访问和更高效的事务执行。 -MOT有效的几乎无锁的设计和高度调优的实现,使其在多核服务器上实现了卓越的近线性吞吐量扩展,这可能是业界最好的。 +MOT 有效的几乎无锁的设计和高度调优的实现,使其在多核服务器上实现了卓越的近线性吞吐量扩展,这可能是业界最好的。 -MOT完全支持ACID特性: +MOT 完全支持 ACID 特性: - 原子性(Atomicity):原子事务是一系列不可分割的数据库操作。在事务完成(分别提交或中止)之后,这些操作要么全部发生,要么全部不发生。 - 一致性(Consistency):事务结束后,数据库处于一致状态,保留数据完整性。 -- 隔离性(Isolation):事务之间不能相互干扰。MOT支持不同的重复读和读提交隔离级别。在下一个版本中,MOT还将支持可序列化隔离。更多信息,请参见[MOT隔离级别](MOT隔离级别.md)。 -- 持久性(Durability):即使发生崩溃和失败,成功完成(提交)的事务效果持久保存。MOT完全集成了openGauss的基于WAL的日志记录。同时支持同步和异步日志记录选项。MOT还支持同步+面向NUMA优化的组提交。更多信息,请参见[MOT持久性概念](MOT持久性概念.md)。 +- 隔离性(Isolation):事务之间不能相互干扰。 MOT 支持不同的重复读和读提交隔离级别。在下一个版本中, MOT 还将支持可序列化隔离。更多信息,请参见[MOT隔离级别](MOT隔离级别.md)。 +- 持久性(Durability):即使发生崩溃和失败,成功完成(提交)的事务效果持久保存。 MOT 完全集成了 openGauss 的基于 WAL 的日志记录。同时支持同步和异步日志记录选项。 MOT 还支持同步+面向 NUMA 优化的组提交。更多信息,请参见[MOT持久性概念](MOT持久性概念.md)。 diff --git "a/content/zh/docs/Developerguide/MOT\347\256\241\347\220\206.md" "b/content/zh/docs/Developerguide/MOT\347\256\241\347\220\206.md" index 0470b2a99..a1e3d927d 100644 --- "a/content/zh/docs/Developerguide/MOT\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Developerguide/MOT\347\256\241\347\220\206.md" @@ -1,6 +1,6 @@ # MOT管理 -下面介绍MOT管理。 +下面介绍 MOT 管理。 - **[MOT持久性](MOT持久性.md)** diff --git "a/content/zh/docs/Developerguide/MOT\347\264\242\345\274\225.md" "b/content/zh/docs/Developerguide/MOT\347\264\242\345\274\225.md" index 5b057c484..aeb13c60a 100644 --- "a/content/zh/docs/Developerguide/MOT\347\264\242\345\274\225.md" +++ "b/content/zh/docs/Developerguide/MOT\347\264\242\345\274\225.md" @@ -1,34 +1,34 @@ # MOT索引 -MOT索引基于最先进的Masstree的免锁索引,用于多核系统的快速和可扩展的键值(KV)存储,通过B+树的Trie实现。在多核服务器和高并发工作负载上,性能优异。它使用各种先进的技术,如乐观锁方法、缓存感知和内存预取。 +MOT 索引基于最先进的 Masstree 的免锁索引,用于多核系统的快速和可扩展的键值(KV)存储,通过B+树的 Trie 实现。在多核服务器和高并发工作负载上,性能优异。它使用各种先进的技术,如乐观锁方法、缓存感知和内存预取。 -在比较了各种最先进的解决方案之后,我们选择了Masstree作为索引,因为它显示了点查询、迭代和修改的最佳总体性能。Masstree是Trie和B+树的组合,用以谨慎利用缓存、预取、乐观导航和细粒度锁定。它针对高争用进行了优化,并对其前代产品增加了许多优化,如OLFIT。然而,Masstree索引的缺点是它的内存消耗更高。虽然行数据占用相同的内存大小,但每个索引(主索引或辅助索引)的每行内存平均高了16字节——基于磁盘的表使用基于锁的B树,大小为29字节,而MOT的Masstree大小为45字节。 +在比较了各种最先进的解决方案之后,我们选择了 Masstree 作为索引,因为它显示了点查询、迭代和修改的最佳总体性能。 Masstree 是 Trie 和B+树的组合,用以谨慎利用缓存、预取、乐观导航和细粒度锁定。它针对高争用进行了优化,并对其前代产品增加了许多优化,如 OLFIT 。然而, Masstree 索引的缺点是它的内存消耗更高。虽然行数据占用相同的内存大小,但每个索引(主索引或辅助索引)的每行内存平均高了 16 字节——基于磁盘的表使用基于锁的 B 树,大小为 29 字节,而 MOT 的 Masstree 大小为 45 字节。 -我们的实证研究表明,成熟的免锁Masstree实现与我们对Silo的强大改进相结合,恰能为我们解决这一方面的问题。 +我们的实证研究表明,成熟的免锁 Masstree 实现与我们对 Silo 的强大改进相结合,恰能为我们解决这一方面的问题。 另一个挑战是对具有多个索引的表使用乐观插入。 -Masstree索引是用于数据和索引管理的MOT内存布局的核心。我们的团队增强并显著改进了Masstree,同时提交了一些关键贡献给Masstree开源。这些改进包括: +Masstree 索引是用于数据和索引管理的 MOT 内存布局的核心。我们的团队增强并显著改进了 Masstree ,同时提交了一些关键贡献给 Masstree 开源。这些改进包括: - 每个索引都有专用内存池:高效分配和快速索引下移 - Masstree全球GC:快速按需内存回收 - 具有插入键访问的大众树迭代器实现 - ARM架构支持 -我们为Masstree开放源码实现贡献了我们的Masstree索引改进,可以[https://github.com/kohler/masstree-beta](https://github.com/kohler/masstree-beta)找到。 +我们为 Masstree 开放源码实现贡献了我们的 Masstree 索引改进,可以[https://github.com/kohler/masstree-beta](https://github.com/kohler/masstree-beta)找到。 -MOT的主要创新是增强了原有的Masstree数据结构和算法,它不支持非唯一索引(作为二级索引)。设计细节请参见[非唯一索引](#section12297174320129)。 +MOT 的主要创新是增强了原有的 Masstree 数据结构和算法,它不支持非唯一索引(作为二级索引)。设计细节请参见[非唯一索引](#section12297174320129)。 -MOT支持主索引、辅助索引和无键索引(受**不支持的索引DDL和索引**中提到的限制)。 +MOT 支持主索引、辅助索引和无键索引(受**不支持的索引 DDL 和索引**中提到的限制)。 ## 非唯一索引 -一个非唯一索引可以包含多个具有相同键的行。非唯一索引仅用于通过维护频繁使用的数据值的排序来提高查询性能。例如,数据库可能使用非唯一索引对来自同一家庭的所有人员进行分组。但是,Masstree数据结构实现不允许将多个对象映射到同一个键。我们用于创建非唯一索引的解决方案(如下图所示)是为映射行的键添加一个打破对称的后缀。这个添加的后缀是指向行本身的指针,该行具有8个字节的常量大小,并且值对该行是唯一的。当插入到非唯一索引时,哨兵的插入总是成功的,这使执行事务分配的行能够被使用。这种方法还使MOT能够为非唯一索引提供一个快速、可靠、基于顺序的迭代器。 +一个非唯一索引可以包含多个具有相同键的行。非唯一索引仅用于通过维护频繁使用的数据值的排序来提高查询性能。例如,数据库可能使用非唯一索引对来自同一家庭的所有人员进行分组。但是, Masstree 数据结构实现不允许将多个对象映射到同一个键。我们用于创建非唯一索引的解决方案(如下图所示)是为映射行的键添加一个打破对称的后缀。这个添加的后缀是指向行本身的指针,该行具有 8 个字节的常量大小,并且值对该行是唯一的。当插入到非唯一索引时,哨兵的插入总是成功的,这使执行事务分配的行能够被使用。这种方法还使 MOT 能够为非唯一索引提供一个快速、可靠、基于顺序的迭代器。 **图 1** 非唯一索引 ![](figures/非唯一索引.png "非唯一索引") -上图描述了一个MOT的T表的结构,它有三个行和两个索引。矩形表示数据行,索引指向指向行的哨兵(椭圆形)。哨兵用键插入唯一索引,用键+后缀插入非唯一索引。哨兵可以方便维护操作,无需接触索引数据结构就可替换行。此外,在哨兵中嵌入了各种标志和参考计数,以便于乐观插入。 +上图描述了一个 MOT 的 T 表的结构,它有三个行和两个索引。矩形表示数据行,索引指向指向行的哨兵(椭圆形)。哨兵用键插入唯一索引,用键+后缀插入非唯一索引。哨兵可以方便维护操作,无需接触索引数据结构就可替换行。此外,在哨兵中嵌入了各种标志和参考计数,以便于乐观插入。 查找非唯一辅助索引时,会使用所需的键(如姓氏)。全串联键只用于插入和删除操作。插入和删除操作总是将行作为参数获取,从而可以创建整个键,并在执行删除或插入索引的特定行时使用它。 diff --git "a/content/zh/docs/Developerguide/MOT\347\272\265\345\220\221\346\211\251\345\256\271\346\236\266\346\236\204.md" "b/content/zh/docs/Developerguide/MOT\347\272\265\345\220\221\346\211\251\345\256\271\346\236\266\346\236\204.md" index 61f0c55c0..63798c93d 100644 --- "a/content/zh/docs/Developerguide/MOT\347\272\265\345\220\221\346\211\251\345\256\271\346\236\266\346\236\204.md" +++ "b/content/zh/docs/Developerguide/MOT\347\272\265\345\220\221\346\211\251\345\256\271\346\236\266\346\236\204.md" @@ -4,17 +4,17 @@ ## 技术要求 -MOT旨在实现以下目标: +MOT 旨在实现以下目标: -- **线性扩容**:MOT提供事务性存储引擎,利用单个NUMA架构服务器的所有核,以提供近线性的扩容性能。这意味着MOT的目标是在机器的核数和性能提升倍数之间实现直接的、近线性的关系。 +- **线性扩容**:MOT提供事务性存储引擎,利用单个 NUMA 架构服务器的所有核,以提供近线性的扩容性能。这意味着 MOT 的目标是在机器的核数和性能提升倍数之间实现直接的、近线性的关系。 >![](public_sys-resources/icon-note.gif) **说明:** >MOT的近线性扩容效果明显优于所有现有方案,并且尽可能接近于获得最佳效果,因现有方案皆受限于硬件(如电线)的物理限制和局限性。 -- **无最大核数限制**:MOT对最大核数不做任何限制。这意味着MOT可从单核扩展到高达1000秒的多核,并且新增的核退化速度最小,即便是在跨NUMA槽位边界的情况下。 -- **极高的事务性吞吐量**:MOT提供了一个事务性存储引擎,与市场上任何其他OLTP供应商相比,它能够实现极高的事务性吞吐量。 -- **极低的事务性时延:**与市场上任何其他OLTP供应商相比,MOT提供事务性存储引擎,可以达到极低的事务时延。 -- **无缝集成和利用openGauss产品**:MOT事务引擎与openGauss产品标准无缝集成。通过这种方式,MOT最大限度地重用了位于其事务性存储引擎顶部的openGauss层功能。 +- **无最大核数限制**:MOT对最大核数不做任何限制。这意味着 MOT 可从单核扩展到高达 1000 秒的多核,并且新增的核退化速度最小,即便是在跨 NUMA 槽位边界的情况下。 +- **极高的事务性吞吐量**:MOT提供了一个事务性存储引擎,与市场上任何其他 OLTP 供应商相比,它能够实现极高的事务性吞吐量。 +- **极低的事务性时延:**与市场上任何其他 OLTP 供应商相比, MOT 提供事务性存储引擎,可以达到极低的事务时延。 +- **无缝集成和利用 openGauss 产品**:MOT事务引擎与 openGauss 产品标准无缝集成。通过这种方式, MOT 最大限度地重用了位于其事务性存储引擎顶部的 openGauss 层功能。 ## 设计原则 @@ -22,58 +22,58 @@ MOT旨在实现以下目标: - 数据和索引只存在于内存中。 - 数据和索引不用物理分区来布局(因为对于某些类型的应用程序,这些分区的性能可能会降低)。 -- 事务并发控制基于乐观并发控制(OCC),没有集中的争用点。有关OCC的详细信息,请参见[MOT并发控制机制](MOT并发控制机制.md)。 +- 事务并发控制基于乐观并发控制(OCC),没有集中的争用点。有关 OCC 的详细信息,请参见[MOT并发控制机制](MOT并发控制机制.md)。 - 使用平行重做日志(最后单位为核)来有效避免中央锁定点。 - 使用免锁索引。有关免锁索引的详细信息,请参见[MOT索引](MOT索引.md)。 -- 使用NUMA感知内存分配,避免跨槽位访问,特别是会话生命周期对象。有关NUMA感知的更多信息,请参见[NUMA-aware分配和亲和性](NUMA-aware分配和亲和性.md)。 -- 使用带有预缓存对象池的自定义MOT内存管理分配器,避免昂贵的运行时间分配和额外的争用点。这种专用的MOT内存分配器按需预先访问操作系统中较大的内存块,然后按需将内存分配给MOT,使内存分配更加高效。 +- 使用 NUMA 感知内存分配,避免跨槽位访问,特别是会话生命周期对象。有关 NUMA 感知的更多信息,请参见[NUMA-aware分配和亲和性](NUMA-aware分配和亲和性.md)。 +- 使用带有预缓存对象池的自定义 MOT 内存管理分配器,避免昂贵的运行时间分配和额外的争用点。这种专用的 MOT 内存分配器按需预先访问操作系统中较大的内存块,然后按需将内存分配给 MOT ,使内存分配更加高效。 ## 使用外部数据封装(FDW)进行集成 -MOT遵循并利用了openGauss的标准扩展机制——外部数据封装(FDW),如下图所示。 +MOT 遵循并利用了 openGauss 的标准扩展机制——外部数据封装(FDW),如下图所示。 -在PostgreSQL外部数据封装特性的支持下,作为其他数据源的代理的MOT数据库可以创建外表,如MySQL、Oracle、PostgreSQL等。当对外表执行查询时,FDW将查询外部数据源并返回结果,就像查询内表一样。 +在 PostgreSQL 外部数据封装特性的支持下,作为其他数据源的代理的 MOT 数据库可以创建外表,如MySQL、Oracle、PostgreSQL等。当对外表执行查询时, FDW 将查询外部数据源并返回结果,就像查询内表一样。 -openGauss依赖PostgreSQL外部数据封装和索引支持,因此SQL完全覆盖,包括存储过程、用户定义函数、系统函数调用。 +openGauss 依赖 PostgreSQL 外部数据封装和索引支持,因此 SQL 完全覆盖,包括存储过程、用户定义函数、系统函数调用。 **图 1** MOT架构 ![](figures/MOT架构.png "MOT架构") -上图中绿色表示MOT引擎,蓝色表示现有的openGauss(基于Postgres)组件。由此可见,FDW在MOT引擎和openGauss组件之间进行中介。 +上图中绿色表示 MOT 引擎,蓝色表示现有的openGauss(基于Postgres)组件。由此可见, FDW 在 MOT 引擎和 openGauss 组件之间进行中介。 -**与MOT相关的FDW定制** +**与 MOT 相关的 FDW 定制** -通过FDW集成MOT可以重用最上层的openGauss功能,从而显著缩短MOT的上市时间,同时不影响SQL的覆盖范围。 +通过 FDW 集成 MOT 可以重用最上层的 openGauss 功能,从而显著缩短 MOT 的上市时间,同时不影响 SQL 的覆盖范围。 -但是,openGauss中原有的FDW机制并不是为存储引擎扩展而设计的,因此缺少以下基本功能: +但是, openGauss 中原有的 FDW 机制并不是为存储引擎扩展而设计的,因此缺少以下基本功能: - 查询规划阶段待计算的外表的索引感知 -- 完整的DDL接口 +- 完整的 DDL 接口 - 完整的事务生命周期接口 - 检查点接口 - 重做日志接口 - 恢复接口 - 真空接口 -为了支持所有缺失的功能,SQL层和FDW接口层已扩展,从而为插入MOT事务存储引擎提供必要的基础设施。 +为了支持所有缺失的功能, SQL 层和 FDW 接口层已扩展,从而为插入 MOT 事务存储引擎提供必要的基础设施。 ## 结果:线性扩容 -以下是上述MOT设计原则和实现的结果: +以下是上述 MOT 设计原则和实现的结果: -MOT在符合ACID工作负载的事务吞吐量方面优于所有现有的工业级OLTP数据库。 +MOT 在符合 ACID 工作负载的事务吞吐量方面优于所有现有的工业级 OLTP 数据库。 -openGauss和MOT在以下多核系统上进行了测试,性能可扩展性良好。在x86架构Intel和ARM/鲲鹏架构的多核服务器上进行了测试。详细的性能评估请参见[MOT性能基准](MOT性能基准.md)。 +openGauss 和 MOT 在以下多核系统上进行了测试,性能可扩展性良好。在 x86 架构 Intel 和ARM/鲲鹏架构的多核服务器上进行了测试。详细的性能评估请参见[MOT性能基准](MOT性能基准.md)。 -以2020年6月的TPC-C基准测试了一台泰山2480服务器上的openGauss MOT数据库(4路ARM/鲲鹏服务器,吞吐量:480万tpmC)。下图显示了MOT数据库的近线性性质,即MOT数据库通过增加核数显著提高性能。 +以 2020 年 6 月的TPC-C基准测试了一台泰山 2480 服务器上的 openGauss MOT 数据库(4路ARM/鲲鹏服务器,吞吐量:480万tpmC)。下图显示了 MOT 数据库的近线性性质,即 MOT 数据库通过增加核数显著提高性能。 **图 2** ARM上的TPC-C(256核) ![](figures/ARM上的TPC-C(256核).png "ARM上的TPC-C(256核)") -下面是另一个测试示例,一台基于x86的服务器上也显示了CPU使用率。 +下面是另一个测试示例,一台基于 x86 的服务器上也显示了 CPU 使用率。 -**图 3** tpmC 对比CPU使用率 -![](figures/tpmC-对比CPU使用率.png "tpmC-对比CPU使用率") +**图 3** tpmC 对比 CPU 使用率 +![](figures/tpmC-对比 CPU 使用率.png "tpmC-对比 CPU 使用率") -图表显示,MOT性能提高与核数增加有显著的相关性。随着核数的增加,MOT对CPU的消耗也越来越大。其他行业解决方案不能提高MOT性能,有时性能甚至略有下降,影响客户的CAPEX和OPEX支出以及运营效率。这是数据库行业的公认问题。 +图表显示, MOT 性能提高与核数增加有显著的相关性。随着核数的增加, MOT 对 CPU 的消耗也越来越大。其他行业解决方案不能提高 MOT 性能,有时性能甚至略有下降,影响客户的 CAPEX 和 OPEX 支出以及运营效率。这是数据库行业的公认问题。 diff --git "a/content/zh/docs/Developerguide/MOT\347\273\237\350\256\241.md" "b/content/zh/docs/Developerguide/MOT\347\273\237\350\256\241.md" index 2b1d95aba..0aef46282 100644 --- "a/content/zh/docs/Developerguide/MOT\347\273\237\350\256\241.md" +++ "b/content/zh/docs/Developerguide/MOT\347\273\237\350\256\241.md" @@ -4,7 +4,7 @@ 对性能有一定影响,特别是对服务器。对用户的影响可以忽略不计。 -统计信息保存在数据库服务器日志中。该日志位于data文件夹中,命名为postgresql-DATE-TIME.log。 +统计信息保存在数据库服务器日志中。该日志位于 data 文件夹中,命名为postgresql-DATE-TIME.log。 有关详细的配置选项,请参阅[统计(MOT)](MOT配置.md#section659861612477)。 diff --git "a/content/zh/docs/Developerguide/MOT\350\265\204\346\272\220\345\210\251\347\224\250\347\216\207.md" "b/content/zh/docs/Developerguide/MOT\350\265\204\346\272\220\345\210\251\347\224\250\347\216\207.md" index ebd020c0b..47c3a1ad5 100644 --- "a/content/zh/docs/Developerguide/MOT\350\265\204\346\272\220\345\210\251\347\224\250\347\216\207.md" +++ "b/content/zh/docs/Developerguide/MOT\350\265\204\346\272\220\345\210\251\347\224\250\347\216\207.md" @@ -1,9 +1,9 @@ # MOT资源利用率 -在4路96核512GB RAM的x86服务器上测试的资源利用率如下所示。MOT能够高效持续消耗几乎所有可用的CPU资源。例如,192核390万tpmC的CPU利用率几乎达到100%。 +在 4 路 96 核 512GB RAM 的 x86 服务器上测试的资源利用率如下所示。 MOT 能够高效持续消耗几乎所有可用的 CPU 资源。例如, 192 核 390 万 tpmC 的 CPU 利用率几乎达到100%。 -- tmpC:每分钟完成的TPC-C事务数以橙色条柱和左侧的Y轴**tpmC**表示。 -- CPU利用率(%):CPU利用率由蓝色线条和右侧的Y轴**CPU%**表示。 +- tmpC:每分钟完成的TPC-C事务数以橙色条柱和左侧的 Y 轴**tpmC**表示。 +- CPU利用率(%):CPU利用率由蓝色线条和右侧的 Y 轴**CPU%**表示。 **图 1** 资源利用率性能基准 ![](figures/资源利用率性能基准.png "资源利用率性能基准") diff --git "a/content/zh/docs/Developerguide/MOT\351\203\250\347\275\262.md" "b/content/zh/docs/Developerguide/MOT\351\203\250\347\275\262.md" index 18bb5b913..6dac7995e 100644 --- "a/content/zh/docs/Developerguide/MOT\351\203\250\347\275\262.md" +++ "b/content/zh/docs/Developerguide/MOT\351\203\250\347\275\262.md" @@ -4,7 +4,7 @@ - **[MOT服务器优化:x86](MOT服务器优化-x86.md)** -- **[MOT服务器优化:基于Arm的华为TaiShan2P/4P服务器](MOT服务器优化-基于Arm的华为TaiShan2P-4P服务器.md)** +- **[MOT服务器优化:基于 Arm 的华为TaiShan2P/4P服务器](MOT服务器优化-基于 Arm 的华为TaiShan2P-4P服务器.md)** - **[MOT配置](MOT配置.md)** diff --git "a/content/zh/docs/Developerguide/MOT\351\205\215\347\275\256.md" "b/content/zh/docs/Developerguide/MOT\351\205\215\347\275\256.md" index b4b1b9c41..10ea2492b 100644 --- "a/content/zh/docs/Developerguide/MOT\351\205\215\347\275\256.md" +++ "b/content/zh/docs/Developerguide/MOT\351\205\215\347\275\256.md" @@ -1,6 +1,6 @@ # MOT配置 -预置MOT用于创建工作MOT。为了获得最佳效果,建议根据应用程序的特定要求和偏好自定义MOT配置(在mot.conf文件中定义)。 +预置 MOT 用于创建工作 MOT 。为了获得最佳效果,建议根据应用程序的特定要求和偏好自定义 MOT 配置(在mot.conf文件中定义)。 该文件在服务器启动时只读。如果在系统运行中编辑此文件,则必须重新加载服务器才能使修改内容生效。 @@ -11,7 +11,7 @@ mot.conf文件与postgresql.conf配置文件在同一文件夹下。 阅读[总体原则](#section14452102715206),根据需要查看和配置mot.conf文件。 >![](public_sys-resources/icon-note.gif) **说明:** ->以上描述了mot.conf文件中的各个设置。除上述内容外,要了解特定MOT功能(如恢复),可参考本用户手册的相关章节。例如,[MOT恢复](MOT恢复.md)说明了mot.conf文件的恢复,包含影响MOT恢复的设置。此外,有关恢复的完整说明,请参阅“MOT管理”章节的[MOT恢复](MOT恢复.md)。下文各相关章节中还提供了参考链接。 +>以上描述了mot.conf文件中的各个设置。除上述内容外,要了解特定 MOT 功能(如恢复),可参考本用户手册的相关章节。例如,[MOT恢复](MOT恢复.md)说明了mot.conf文件的恢复,包含影响 MOT 恢复的设置。此外,有关恢复的完整说明,请参阅“MOT管理”章节的[MOT恢复](MOT恢复.md)。下文各相关章节中还提供了参考链接。 以下介绍了mot.conf文件中的各个部分,其包含的设置以及默认值。 @@ -59,20 +59,20 @@ mot.conf文件与postgresql.conf配置文件在同一文件夹下。 是否使用组提交。 - 该选项仅在openGauss配置为使用同步提交时相关,即仅当postgresql.conf中的synchronization\_commit设置为除off以外的任何值时相关。 + 该选项仅在 openGauss 配置为使用同步提交时相关,即仅当postgresql.conf中的synchronization\_commit设置为除 off 以外的任何值时相关。 - 有关WAL重做日志的详细信息,请参阅[MOT日志记录:WAL重做日志](MOT持久性.md#section129831140121218)。 + 有关 WAL 重做日志的详细信息,请参阅[MOT日志记录:WAL重做日志](MOT持久性.md#section129831140121218)。 - **group\_commit\_size = 16** - **group\_commit\_timeout = 10 ms** - 只有当MOT引擎配置为同步组提交日志记录时,此选项才相关。即postgresql.conf中的synchronization\_commit配置为true,mot.conf配置文件中的enable\_group\_commit配置为true。 + 只有当 MOT 引擎配置为同步组提交日志记录时,此选项才相关。即postgresql.conf中的synchronization\_commit配置为 true ,mot.conf配置文件中的enable\_group\_commit配置为 true 。 - 当一组事务记录在WAL重做日志中时,需确定以下设置项取值: + 当一组事务记录在 WAL 重做日志中时,需确定以下设置项取值: - group\_commit\_size:一组已提交的事务数。例如,16表示当同一组中的16个事务已由它们的客户端应用程序提交时,则针对16个事务中的每个事务,在磁盘的WAL重做日志中写入一个条目。 + group\_commit\_size:一组已提交的事务数。例如, 16 表示当同一组中的 16 个事务已由它们的客户端应用程序提交时,则针对 16 个事务中的每个事务,在磁盘的 WAL 重做日志中写入一个条目。 - group\_commit\_timeout:超时时间,单位为毫秒。例如,10表示在10毫秒之后,为同一组由客户端应用程序在最近10毫秒内提交的每个事务,在磁盘的WAL重做日志中写入一个条目。 + group\_commit\_timeout:超时时间,单位为毫秒。例如, 10 表示在 10 毫秒之后,为同一组由客户端应用程序在最近 10 毫秒内提交的每个事务,在磁盘的 WAL 重做日志中写入一个条目。 提交组在到达配置的事务数后或者在超时后关闭。组关闭后,组中的所有事务等待一个组落盘完成执行,然后通知客户端每个事务都已经结束。 @@ -83,7 +83,7 @@ mot.conf文件与postgresql.conf配置文件在同一文件夹下。 - **checkpoint\_dir =** - 指定检查点数据存放目录。默认位置在每个数据节点的data文件夹中。 + 指定检查点数据存放目录。默认位置在每个数据节点的 data 文件夹中。 - **checkpoint\_segsize = 16 MB** @@ -93,7 +93,7 @@ mot.conf文件与postgresql.conf配置文件在同一文件夹下。 指定在检查点期间要使用的工作线程数。 - 检查点由多个MOT引擎工作线程并行执行。工作线程的数量可能会大大影响整个检查点操作的整体性能,以及其它正在运行的事务的操作。为了实现较短的检查点持续时间,应使用更多线程,直至达到最佳数量(根据硬件和工作负载的不同而不同)。但请注意,如果这个数目太大,可能会对其他正在运行的事务的执行时间产生负面影响。尽可能低这个数字,以最小化对其他运行事务的运行时的影响。当此数目过高时,检查点持续时间会较长。 + 检查点由多个 MOT 引擎工作线程并行执行。工作线程的数量可能会大大影响整个检查点操作的整体性能,以及其它正在运行的事务的操作。为了实现较短的检查点持续时间,应使用更多线程,直至达到最佳数量(根据硬件和工作负载的不同而不同)。但请注意,如果这个数目太大,可能会对其他正在运行的事务的执行时间产生负面影响。尽可能低这个数字,以最小化对其他运行事务的运行时的影响。当此数目过高时,检查点持续时间会较长。 >![](public_sys-resources/icon-note.gif) **说明:** @@ -103,7 +103,7 @@ mot.conf文件与postgresql.conf配置文件在同一文件夹下。 - **checkpoint\_recovery\_workers = 3** - 指定在检查点数据恢复期间要使用的工作线程数。每个MOT引擎工作线程在自己的核上运行,通过将不同的表读入内存,可以并行处理不同的表。缺省值为3,可将此参数设置为可处理的核数。恢复后,将停止并杀死这些线程。 + 指定在检查点数据恢复期间要使用的工作线程数。每个 MOT 引擎工作线程在自己的核上运行,通过将不同的表读入内存,可以并行处理不同的表。缺省值为 3 ,可将此参数设置为可处理的核数。恢复后,将停止并杀死这些线程。 >![](public_sys-resources/icon-note.gif) **说明:** @@ -147,28 +147,28 @@ mot.conf文件与postgresql.conf配置文件在同一文件夹下。 - **enable\_process\_stats = false** - 进程统计信息包含当前进程的内存和CPU消耗总量。 + 进程统计信息包含当前进程的内存和 CPU 消耗总量。 - **enable\_system\_stats = false** - 系统统计信息包含整个系统的内存和CPU消耗总量。 + 系统统计信息包含整个系统的内存和 CPU 消耗总量。 - **enable\_jit\_stats = false** - JIT统计信息包含有关JIT查询编译和执行的信息。 +JIT 统计信息包含有关 JIT 查询编译和执行的信息。 ## 错误日志(MOT) - **log\_level = INFO** - 设置MOT引擎下发的消息在数据库服务器的错误日志中记录的日志级别。有效值为PANIC、ERROR、WARN、INFO、TRACE、DEBUG、DIAG1、DIAG2。 + 设置 MOT 引擎下发的消息在数据库服务器的错误日志中记录的日志级别。有效值为PANIC、ERROR、WARN、INFO、TRACE、DEBUG、DIAG1、DIAG2。 - **Log/COMPONENT/LOGGER=LOG\_LEVEL** 使用以下语法设置特定的日志记录器。 - 例如,要为系统组件中的ThreadIdPool日志记录器配置TRACE日志级别,请使用以下语法: + 例如,要为系统组件中的 ThreadIdPool 日志记录器配置 TRACE 日志级别,请使用以下语法: ``` Log.System.ThreadIdPool.log_level=TRACE @@ -191,13 +191,13 @@ mot.conf文件与postgresql.conf配置文件在同一文件夹下。 - **enable\_numa = true** - 指定是否使用可识别NUMA的内存。禁用时,所有亲和性配置也将被禁用。MOT引擎假定所有可用的NUMA节点都有内存。如果计算机具有某些特殊配置,其中某些NUMA节点没有内存,则MOT引擎初始化将因此失败,因此数据库服务器启动将失败。在此类计算机中,建议将此配置值设置为false,以防止启动失败并让MOT引擎在不使用可识别NUMA的内存分配的情况下正常运行。 + 指定是否使用可识别 NUMA 的内存。禁用时,所有亲和性配置也将被禁用。 MOT 引擎假定所有可用的 NUMA 节点都有内存。如果计算机具有某些特殊配置,其中某些 NUMA 节点没有内存,则 MOT 引擎初始化将因此失败,因此数据库服务器启动将失败。在此类计算机中,建议将此配置值设置为 false ,以防止启动失败并让 MOT 引擎在不使用可识别 NUMA 的内存分配的情况下正常运行。 - **affinity\_mode = fill-physical-first** - 设置用户会话和内部MOT任务的线程亲和模式。 + 设置用户会话和内部 MOT 任务的线程亲和模式。 - 使用线程池时,用户会话将忽略此值,因为它们的亲和性由线程池控制。但内部MOT任务仍然使用。 + 使用线程池时,用户会话将忽略此值,因为它们的亲和性由线程池控制。但内部 MOT 任务仍然使用。 有效值为fill-socket-first、equal-per-socket、fill-physical-first、none。 @@ -210,89 +210,89 @@ mot.conf文件与postgresql.conf配置文件在同一文件夹下。 设置块目录模式,用于内存块查找。 - Lazy模式将块目录设置为按需加载部分目录,从而减少初始内存占用(大约从1GB减少到1MB)。然而,这可能会导致轻微的性能损失和极端情况下的内存损坏。相反,使用non-lazy块目录会额外分配1GB的初始内存,产生略高的性能,并确保在内存损坏期间避免块目录错误。 +Lazy 模式将块目录设置为按需加载部分目录,从而减少初始内存占用(大约从 1GB 减少到1MB)。然而,这可能会导致轻微的性能损失和极端情况下的内存损坏。相反,使用non-lazy块目录会额外分配 1GB 的初始内存,产生略高的性能,并确保在内存损坏期间避免块目录错误。 - **reserve\_memory\_mode = virtual** - 设置内存预留模式(取值为physical或virtual)。 + 设置内存预留模式(取值为 physical 或virtual)。 - 每当从内核分配内存时,都会参考此配置值来确定所分配的内存是常驻(physical)还是非常驻(virtual)。这主要与预分配有关,但也可能影响运行时分配。对于physical保留模式,通过强制内存区域所跨越的所有页出现页错误,使整个分配的内存区域常驻。配置virtual内存预留可加速内存分配(特别是在预分配期间),但可能在初始访问期间出现页错误(因此导致轻微的性能影响),并在物理内存不可用时出现更多服务器错误。相反,物理内存分配速度较慢,但后续访问速度更快且有保障。 + 每当从内核分配内存时,都会参考此配置值来确定所分配的内存是常驻(physical)还是非常驻(virtual)。这主要与预分配有关,但也可能影响运行时分配。对于 physical 保留模式,通过强制内存区域所跨越的所有页出现页错误,使整个分配的内存区域常驻。配置 virtual 内存预留可加速内存分配(特别是在预分配期间),但可能在初始访问期间出现页错误(因此导致轻微的性能影响),并在物理内存不可用时出现更多服务器错误。相反,物理内存分配速度较慢,但后续访问速度更快且有保障。 - **store\_memory\_policy = compact** - 设置内存存储策略(取值为compact或expanding)。 + 设置内存存储策略(取值为 compact 或expanding)。 - 当定义了compact策略时,未使用的内存会释放回内核,直到达到内存下限(请参见下面的min\_mot\_memory)。在expanding策略中,未使用的内存存储在MOT引擎中,以便后续再使用。compact存储策略可以减少MOT引擎的内存占用,但偶尔会导致性能轻微下降。此外,在内存损坏时,它还可能导致内存不可用。相反,expanding模式会占用更多的内存,但是会更快地分配内存,并且能够更好地保证在解分配后能够重新分配内存。 + 当定义了 compact 策略时,未使用的内存会释放回内核,直到达到内存下限(请参见下面的min\_mot\_memory)。在 expanding 策略中,未使用的内存存储在 MOT 引擎中,以便后续再使用。 compact 存储策略可以减少 MOT 引擎的内存占用,但偶尔会导致性能轻微下降。此外,在内存损坏时,它还可能导致内存不可用。相反, expanding 模式会占用更多的内存,但是会更快地分配内存,并且能够更好地保证在解分配后能够重新分配内存。 - **chunk\_alloc\_policy = auto** 设置全局内存的块分配策略。 - MOT内存以2MB的块为单位组织。源NUMA节点和每个块的内存布局会影响表数据在NUMA节点间的分布,因此对数据访问时间有很大影响。在特定NUMA节点上分配块时,会参考分配策略。 +MOT 内存以 2MB 的块为单位组织。源 NUMA 节点和每个块的内存布局会影响表数据在 NUMA 节点间的分布,因此对数据访问时间有很大影响。在特定 NUMA 节点上分配块时,会参考分配策略。 可用值包括auto、local、page-interleaved、chunk-interleaved、native。 - Auto策略根据当前硬件情况选择块分配策略。 - - Local策略在各自的NUMA节点上分配每个数据块。 - - Page-interleaved策略从所有NUMA节点分配由交插内存4千字节页组成的数据块。 - - Chunk-interleaved策略以轮循调度方式从所有NUMA节点分配数据块。 + - Local策略在各自的 NUMA 节点上分配每个数据块。 + - Page-interleaved策略从所有 NUMA 节点分配由交插内存 4 千字节页组成的数据块。 + - Chunk-interleaved策略以轮循调度方式从所有 NUMA 节点分配数据块。 - Native策略通过调用原生系统内存分配器来分配块。 - **chunk\_prealloc\_worker\_count = 8** - 设置每个NUMA节点参与内存预分配的工作线程数。 + 设置每个 NUMA 节点参与内存预分配的工作线程数。 - **max\_mot\_global\_memory = 80%** - 设置MOT引擎全局内存的最大限制。 + 设置 MOT 引擎全局内存的最大限制。 指定百分比值与postgresql.conf中max\_process\_memory定义的总量有关。 - MOT引擎内存分为全局(长期)内存,主要用于存储用户数据,以及本地(短期)内存,主要用于用户会话,以满足本地需求。 +MOT 引擎内存分为全局(长期)内存,主要用于存储用户数据,以及本地(短期)内存,主要用于用户会话,以满足本地需求。 任何试图分配超出此限制的内存的尝试将被拒绝,并向用户报告错误。请确保max\_mot\_global\_memory与max\_mot\_local\_memory之和不超过postgresql.conf中配置的max\_process\_memory。 - **min\_mot\_global\_memory = 0 MB** - 设置MOT引擎全局内存的最小限制。 + 设置 MOT 引擎全局内存的最小限制。 指定百分比值与postgresql.conf中max\_process\_memory定义的总量有关。 - 此值用于启动期间的内存预分配,以及确保MOT引擎在正常运行期间有最小的内存可用量。当使用compact存储策略时(参阅上文store\_memory\_policy),该值指定了下限,超过下限的内存不会释放回内核,而是保留在MOT引擎中以便后续重用。 + 此值用于启动期间的内存预分配,以及确保 MOT 引擎在正常运行期间有最小的内存可用量。当使用 compact 存储策略时(参阅上文store\_memory\_policy),该值指定了下限,超过下限的内存不会释放回内核,而是保留在 MOT 引擎中以便后续重用。 - **max\_mot\_local\_memory = 15%** - 设置MOT引擎本地内存的最大限制。 + 设置 MOT 引擎本地内存的最大限制。 指定百分比值与postgresql.conf中max\_process\_memory定义的总量有关。 - MOT引擎内存分为全局(长期)内存,主要用于存储用户数据,以及本地(短期)内存,主要用于用户会话,以满足本地需求。 +MOT 引擎内存分为全局(长期)内存,主要用于存储用户数据,以及本地(短期)内存,主要用于用户会话,以满足本地需求。 任何试图分配超出此限制的内存的尝试将被拒绝,并向用户报告错误。请确保max\_mot\_global\_memory与max\_mot\_local\_memory之和不超过postgresql.conf中配置的max\_process\_memory。 - **min\_mot\_local\_memory = 0 MB** - 设置MOT引擎本地内存的最小限制。 + 设置 MOT 引擎本地内存的最小限制。 指定百分比值与postgresql.conf中max\_process\_memory定义的总量有关。 - 此值用于在启动期间预分配内存,以及确保MOT引擎在正常运行期间有最小的可用内存。当使用compact存储策略时(参阅上文store\_memory\_policy),该值指定了下限,超过下限的内存不会释放回内核,而是保留在MOT引擎中以便后续重用。 + 此值用于在启动期间预分配内存,以及确保 MOT 引擎在正常运行期间有最小的可用内存。当使用 compact 存储策略时(参阅上文store\_memory\_policy),该值指定了下限,超过下限的内存不会释放回内核,而是保留在 MOT 引擎中以便后续重用。 - **max\_mot\_session\_memory = 0 MB** - 设置MOT引擎中单个会话的最大内存限制。 + 设置 MOT 引擎中单个会话的最大内存限制。 指定百分比值与postgresql.conf中max\_process\_memory定义的总量有关。 - 通常,MOT引擎中的会话可以根据需要分配尽可能多的本地内存,只要没有超出本地内存限制即可。为了避免单个会话占用过多的内存,从而拒绝其他会话的内存,通过该配置项限制小会话的本地内存分配(最大1022KB)。 + 通常, MOT 引擎中的会话可以根据需要分配尽可能多的本地内存,只要没有超出本地内存限制即可。为了避免单个会话占用过多的内存,从而拒绝其他会话的内存,通过该配置项限制小会话的本地内存分配(最大1022KB)。 请确保该配置项不影响大会话的本地内存分配。 - 0表示不会限制每个小会话的本地分配,除非是由max\_mot\_local\_memory配置的本地内存分配限制引起的。 +0 表示不会限制每个小会话的本地分配,除非是由max\_mot\_local\_memory配置的本地内存分配限制引起的。 - **min\_mot\_session\_memory = 0 MB** - 设置MOT引擎中单个会话的最小内存预留。 + 设置 MOT 引擎中单个会话的最小内存预留。 指定百分比值与postgresql.conf中max\_process\_memory定义的总量有关。 @@ -302,7 +302,7 @@ mot.conf文件与postgresql.conf配置文件在同一文件夹下。 设置会话的大缓冲区存储。 - 当用户会话执行需要大量内存的查询时(例如,使用许多行),大缓冲区存储用于增加此类内存可用的确定级别,并更快地为这个内存请求提供服务。对于超过1022KB的会话,任何内存分配都是大内存分配。如果未使用或耗尽了大缓冲区存储,则这些分配将被视为直接从内核提供的巨大分配。 + 当用户会话执行需要大量内存的查询时(例如,使用许多行),大缓冲区存储用于增加此类内存可用的确定级别,并更快地为这个内存请求提供服务。对于超过 1022KB 的会话,任何内存分配都是大内存分配。如果未使用或耗尽了大缓冲区存储,则这些分配将被视为直接从内核提供的巨大分配。 - **session\_large\_buffer\_store\_max\_object\_size = 0 MB** @@ -352,25 +352,25 @@ mot.conf文件与postgresql.conf配置文件在同一文件夹下。 - **enable\_mot\_codegen = true** - 指定是否对计划查询使用JIT查询编译和执行。 + 指定是否对计划查询使用 JIT 查询编译和执行。 - JIT查询执行为在计划阶段准备好的查询准备了JIT编译的代码。每当调用准备好的查询时,都会执行生成的JIT编译函数。JIT编译通常以LLVM的形式进行。在原生不支持LLVM的平台上,MOT提供了基于软件的回退(Tiny Virtual Machine,TVM)。 +JIT 查询执行为在计划阶段准备好的查询准备了 JIT 编译的代码。每当调用准备好的查询时,都会执行生成的 JIT 编译函数。 JIT 编译通常以 LLVM 的形式进行。在原生不支持 LLVM 的平台上, MOT 提供了基于软件的回退(Tiny Virtual Machine,TVM)。 - **force\_mot\_pseudo\_codegen = false** - 当前平台支持LLVM时,是否使用TVM(伪LLVM)。 + 当前平台支持 LLVM 时,是否使用TVM(伪LLVM)。 - 在原生不支持LLVM的平台上,MOT自动默认为TVM。 + 在原生不支持 LLVM 的平台上, MOT 自动默认为 TVM 。 - 在原生支持LLVM的平台上,默认使用LLVM。该配置项允许在支持LLVM的平台上使用TVM进行JIT编译和执行。 + 在原生支持 LLVM 的平台上,默认使用 LLVM 。该配置项允许在支持 LLVM 的平台上使用 TVM 进行 JIT 编译和执行。 - **enable\_mot\_codegen\_print = false** - 指定是否为JIT编译的查询打印发出的LLVM/TVM IR代码。 + 指定是否为 JIT 编译的查询打印发出的LLVM/TVM IR代码。 - **mot\_codegen\_limit = 100** - 限制每个用户会话允许的JIT查询数。 + 限制每个用户会话允许的 JIT 查询数。 ## 默认MOT.conf文件 @@ -381,7 +381,7 @@ postgresql.conf mot_config_file = '/tmp/gauss/ MOT.conf' ``` -确保max\_process\_memory设置的值足够包含MOT的全局(数据和索引)和本地(会话)内存。 +确保max\_process\_memory设置的值足够包含 MOT 的全局(数据和索引)和本地(会话)内存。 MOT.conf的默认内容满足开始使用的需求。设置内容后续可以优化。 diff --git "a/content/zh/docs/Developerguide/MOT\351\224\231\350\257\257\346\266\210\346\201\257.md" "b/content/zh/docs/Developerguide/MOT\351\224\231\350\257\257\346\266\210\346\201\257.md" index 82b9eeb99..d5da9c63f 100644 --- "a/content/zh/docs/Developerguide/MOT\351\224\231\350\257\257\346\266\210\346\201\257.md" +++ "b/content/zh/docs/Developerguide/MOT\351\224\231\350\257\257\346\266\210\346\201\257.md" @@ -1,420 +1,420 @@ -# MOT错误消息 - -错误可能由多种场景引起。所有错误都记录在数据库服务器日志文件中。此外,与用户相关的错误作为对查询、事务或存储过程执行或数据库管理操作的响应的一部分返回给用户。 - -- 服务器日志中报告的错误包括函数、实体、上下文、错误消息、错误描述和严重性。 -- 向用户报告的错误被翻译成标准PostgreSQL错误码,可能由MOT特定的消息和描述组成。 - -错误提示、错误描述和错误码见下文。该错误码实际上是内部代码,不记录也不返回给用户。 - -## 写入日志文件的错误 - -所有错误都记录在数据库服务器日志文件中。以下列出了写入数据库服务器日志文件但未返回给用户的错误。该日志位于data文件夹中,命名为postgresql-DATE-TIME.log。 - -**表 1** 只写入日志文件的错误 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

日志消息

-

内部错误代码

-

Error code denoting success

-

MOT_NO_ERROR 0

-

Out of memory

-

MOT_ERROR_OOM 1

-

Invalid configuration

-

MOT_ERROR_INVALID_CFG 2

-

Invalid argument passed to function

-

MOT_ERROR_INVALID_ARG 3

-

System call failed

-

MOT_ERROR_SYSTEM_FAILURE 4

-

Resource limit reached

-

MOT_ERROR_RESOURCE_LIMIT 5

-

Internal logic error

-

MOT_ERROR_INTERNAL 6

-

Resource unavailable

-

MOT_ERROR_RESOURCE_UNAVAILABLE 7

-

Unique violation

-

MOT_ERROR_UNIQUE_VIOLATION 8

-

Invalid memory allocation size

-

MOT_ERROR_INVALID_MEMORY_SIZE 9

-

Index out of range

-

MOT_ERROR_INDEX_OUT_OF_RANGE 10

-

Error code unknown

-

MOT_ERROR_INVALID_STATE 11

-
- -## 返回给用户的错误 - -下面列出了写入数据库服务器日志文件并返回给用户的错误。 - -MOT使用返回码(Return Code,RC)返回Postgres标准错误代码至封装。某些RC会导致向正在与数据库交互的用户生成错误消息。 - -MOT从内部返回Postgres代码(见下文)到数据库包,数据库封装根据标准的Postgres行为对其做出反应。 - ->![](public_sys-resources/icon-note.gif) **说明:** ->提示信息中的%s、%u、%lu指代相应的错误信息(如查询、表名或其他信息)。 -> ->- %s:字符串 -> ->- %u:数字 -> ->- %lu:数字 - -**表 2** 返回给用户并记录到日志文件的错误 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

返回给用户的短/长描述

-

Postgres代码

-

内部错误码

-

Success.

-

Denotes success

-

ERRCODE_SUCCESSFUL_

-

COMPLETION

-

RC_OK = 0

-

Failure

-

Unknown error has occurred.

-

ERRCODE_FDW_ERROR

-

RC_ERROR = 1

-

Unknown error has occurred.

-

Denotes aborted operation.

-

ERRCODE_FDW_ERROR

-

RC_ABORT

-

Column definition of %s is not supported.

-

Column type %s is not supported yet.

-

ERRCODE_INVALID_COLUMN_DEFINITION

-

RC_UNSUPPORTED_COL_TYPE

-

Column definition of %s is not supported.

-

Column type Array of %s is not supported yet.

-

ERRCODE_INVALID_COLUMN_DEFINITION

-

RC_UNSUPPORTED_COL_TYPE_ARR

-

Column size %d exceeds max tuple size %u.

-

Column definition of %s is not supported.

-

ERRCODE_FEATURE_NOT_SUPPORTED

-

RC_EXCEEDS_MAX_ROW_SIZE

-

Column name %s exceeds max name size %u.

-

Column definition of %s is not supported.

-

ERRCODE_INVALID_COLUMN_DEFINITION

-

RC_COL_NAME_EXCEEDS_MAX_SIZE

-

Column size %d exceeds max size %u.

-

Column definition of %s is not supported.

-

ERRCODE_INVALID_COLUMN_DEFINITION

-

RC_COL_SIZE_INVLALID

-

Cannot create table.

-

Cannot add column %s; as the number of declared columns exceeds the maximum declared columns.

-

ERRCODE_FEATURE_NOT_

-

SUPPORTED

-

RC_TABLE_EXCEEDS_MAX_

-

DECLARED_COLS

-

Cannot create index.

-

Total column size is greater than maximum index size %u.

-

ERRCODE_FDW_KEY_SIZE_

-

EXCEEDS_MAX_ALLOWED

-

RC_INDEX_EXCEEDS_MAX_SIZE

-

Cannot create index.

-

Total number of indexes for table %s is greater than the maximum number of indexes allowed %u.

-

ERRCODE_FDW_TOO_MANY_

-

INDEXES

-

RC_TABLE_EXCEEDS_MAX_INDEXES

-

Cannot execute statement.

-

Maximum number of DDLs per transaction reached the maximum %u.

-

ERRCODE_FDW_TOO_MANY_

-

DDL_CHANGES_IN_

-

TRANSACTION_NOT_

-

ALLOWED

-

RC_TXN_EXCEEDS_MAX_DDLS

-

Unique constraint violation

-

Duplicate key value violates unique constraint \"%s\"".

-

Key %s already exists.

-

ERRCODE_UNIQUE_

-

VIOLATION

-

RC_UNIQUE_VIOLATION

-

Table \"%s\" does not exist.

-

ERRCODE_UNDEFINED_TABLE

-

RC_TABLE_NOT_FOUND

-

Index \"%s\" does not exist.

-

ERRCODE_UNDEFINED_TABLE

-

RC_INDEX_NOT_FOUND

-

Unknown error has occurred.

-

ERRCODE_FDW_ERROR

-

RC_LOCAL_ROW_FOUND

-

Unknown error has occurred.

-

ERRCODE_FDW_ERROR

-

RC_LOCAL_ROW_NOT_FOUND

-

Unknown error has occurred.

-

ERRCODE_FDW_ERROR

-

RC_LOCAL_ROW_DELETED

-

Unknown error has occurred.

-

ERRCODE_FDW_ERROR

-

RC_INSERT_ON_EXIST

-

Unknown error has occurred.

-

ERRCODE_FDW_ERROR

-

RC_INDEX_RETRY_INSERT

-

Unknown error has occurred.

-

ERRCODE_FDW_ERROR

-

RC_INDEX_DELETE

-

Unknown error has occurred.

-

ERRCODE_FDW_ERROR

-

RC_LOCAL_ROW_NOT_VISIBLE

-

Memory is temporarily unavailable.

-

ERRCODE_OUT_OF_LOGICAL_MEMORY

-

RC_MEMORY_ALLOCATION_ERROR

-

Unknown error has occurred.

-

ERRCODE_FDW_ERROR

-

RC_ILLEGAL_ROW_STATE

-

Null constraint violated.

-

NULL value cannot be inserted into non-null column %s at table %s.

-

ERRCODE_FDW_ERROR

-

RC_NULL_VIOLATION

-

Critical error.

-

Critical error: %s.

-

ERRCODE_FDW_ERROR

-

RC_PANIC

-

A checkpoint is in progress – cannot truncate table.

-

ERRCODE_FDW_OPERATION_NOT_SUPPORTED

-

RC_NA

-

Unknown error has occurred.

-

ERRCODE_FDW_ERROR

-

RC_MAX_VALUE

-

<recovery message>

-
-

ERRCODE_CONFIG_FILE_ERROR

-

<recovery message>

-
-

ERRCODE_INVALID_TABLE_

-

DEFINITION

-

Memory engine – Failed to perform commit prepared.

-
-

ERRCODE_INVALID_TRANSACTION_

-

STATE

-

Invalid option <option name>

-
-

ERRCODE_FDW_INVALID_OPTION_

-

NAME

-

Invalid memory allocation request size.

-
-

ERRCODE_INVALID_PARAMETER_

-

VALUE

-

Memory is temporarily unavailable.

-
-

ERRCODE_OUT_OF_LOGICAL_

-

MEMORY

-

Could not serialize access due to concurrent update.

-
-

ERRCODE_T_R_SERIALIZATION_

-

FAILURE

-

Alter table operation is not supported for memory table.

-

Cannot create MOT tables while incremental checkpoint is enabled.

-

Re-index is not supported for memory tables.

-
-

ERRCODE_FDW_OPERATION_NOT_

-

SUPPORTED

-

Allocation of table metadata failed.

-
-

ERRCODE_OUT_OF_MEMORY

-

Database with OID %u does not exist.

-
-

ERRCODE_UNDEFINED_DATABASE

-

Value exceeds maximum precision: %d.

-
-

ERRCODE_NUMERIC_VALUE_OUT_

-

OF_RANGE

-

You have reached a maximum logical capacity %lu of allowed %lu.

-
-

ERRCODE_OUT_OF_LOGICAL_

-

MEMORY

-
- +# MOT错误消息 + +错误可能由多种场景引起。所有错误都记录在数据库服务器日志文件中。此外,与用户相关的错误作为对查询、事务或存储过程执行或数据库管理操作的响应的一部分返回给用户。 + +- 服务器日志中报告的错误包括函数、实体、上下文、错误消息、错误描述和严重性。 +- 向用户报告的错误被翻译成标准 PostgreSQL 错误码,可能由 MOT 特定的消息和描述组成。 + +错误提示、错误描述和错误码见下文。该错误码实际上是内部代码,不记录也不返回给用户。 + +## 写入日志文件的错误 + +所有错误都记录在数据库服务器日志文件中。以下列出了写入数据库服务器日志文件但未返回给用户的错误。该日志位于 data 文件夹中,命名为postgresql-DATE-TIME.log。 + +**表 1** 只写入日志文件的错误 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

日志消息

+

内部错误代码

+

Error code denoting success

+

MOT_NO_ERROR 0

+

Out of memory

+

MOT_ERROR_OOM 1

+

Invalid configuration

+

MOT_ERROR_INVALID_CFG 2

+

Invalid argument passed to function

+

MOT_ERROR_INVALID_ARG 3

+

System call failed

+

MOT_ERROR_SYSTEM_FAILURE 4

+

Resource limit reached

+

MOT_ERROR_RESOURCE_LIMIT 5

+

Internal logic error

+

MOT_ERROR_INTERNAL 6

+

Resource unavailable

+

MOT_ERROR_RESOURCE_UNAVAILABLE 7

+

Unique violation

+

MOT_ERROR_UNIQUE_VIOLATION 8

+

Invalid memory allocation size

+

MOT_ERROR_INVALID_MEMORY_SIZE 9

+

Index out of range

+

MOT_ERROR_INDEX_OUT_OF_RANGE 10

+

Error code unknown

+

MOT_ERROR_INVALID_STATE 11

+
+ +## 返回给用户的错误 + +下面列出了写入数据库服务器日志文件并返回给用户的错误。 + +MOT 使用返回码(Return Code,RC)返回 Postgres 标准错误代码至封装。某些 RC 会导致向正在与数据库交互的用户生成错误消息。 + +MOT 从内部返回 Postgres 代码(见下文)到数据库包,数据库封装根据标准的 Postgres 行为对其做出反应。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>提示信息中的%s、%u、%lu指代相应的错误信息(如查询、表名或其他信息)。 +> +>- %s:字符串 +> +>- %u:数字 +> +>- %lu:数字 + +**表 2** 返回给用户并记录到日志文件的错误 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

返回给用户的短/长描述

+

Postgres代码

+

内部错误码

+

Success.

+

Denotes success

+

ERRCODE_SUCCESSFUL_

+

COMPLETION

+

RC_OK = 0

+

Failure

+

Unknown error has occurred.

+

ERRCODE_FDW_ERROR

+

RC_ERROR = 1

+

Unknown error has occurred.

+

Denotes aborted operation.

+

ERRCODE_FDW_ERROR

+

RC_ABORT

+

Column definition of %s is not supported.

+

Column type %s is not supported yet.

+

ERRCODE_INVALID_COLUMN_DEFINITION

+

RC_UNSUPPORTED_COL_TYPE

+

Column definition of %s is not supported.

+

Column type Array of %s is not supported yet.

+

ERRCODE_INVALID_COLUMN_DEFINITION

+

RC_UNSUPPORTED_COL_TYPE_ARR

+

Column size %d exceeds max tuple size %u.

+

Column definition of %s is not supported.

+

ERRCODE_FEATURE_NOT_SUPPORTED

+

RC_EXCEEDS_MAX_ROW_SIZE

+

Column name %s exceeds max name size %u.

+

Column definition of %s is not supported.

+

ERRCODE_INVALID_COLUMN_DEFINITION

+

RC_COL_NAME_EXCEEDS_MAX_SIZE

+

Column size %d exceeds max size %u.

+

Column definition of %s is not supported.

+

ERRCODE_INVALID_COLUMN_DEFINITION

+

RC_COL_SIZE_INVLALID

+

Cannot create table.

+

Cannot add column %s; as the number of declared columns exceeds the maximum declared columns.

+

ERRCODE_FEATURE_NOT_

+

SUPPORTED

+

RC_TABLE_EXCEEDS_MAX_

+

DECLARED_COLS

+

Cannot create index.

+

Total column size is greater than maximum index size %u.

+

ERRCODE_FDW_KEY_SIZE_

+

EXCEEDS_MAX_ALLOWED

+

RC_INDEX_EXCEEDS_MAX_SIZE

+

Cannot create index.

+

Total number of indexes for table %s is greater than the maximum number of indexes allowed %u.

+

ERRCODE_FDW_TOO_MANY_

+

INDEXES

+

RC_TABLE_EXCEEDS_MAX_INDEXES

+

Cannot execute statement.

+

Maximum number of DDLs per transaction reached the maximum %u.

+

ERRCODE_FDW_TOO_MANY_

+

DDL_CHANGES_IN_

+

TRANSACTION_NOT_

+

ALLOWED

+

RC_TXN_EXCEEDS_MAX_DDLS

+

Unique constraint violation

+

Duplicate key value violates unique constraint \"%s\"".

+

Key %s already exists.

+

ERRCODE_UNIQUE_

+

VIOLATION

+

RC_UNIQUE_VIOLATION

+

Table \"%s\" does not exist.

+

ERRCODE_UNDEFINED_TABLE

+

RC_TABLE_NOT_FOUND

+

Index \"%s\" does not exist.

+

ERRCODE_UNDEFINED_TABLE

+

RC_INDEX_NOT_FOUND

+

Unknown error has occurred.

+

ERRCODE_FDW_ERROR

+

RC_LOCAL_ROW_FOUND

+

Unknown error has occurred.

+

ERRCODE_FDW_ERROR

+

RC_LOCAL_ROW_NOT_FOUND

+

Unknown error has occurred.

+

ERRCODE_FDW_ERROR

+

RC_LOCAL_ROW_DELETED

+

Unknown error has occurred.

+

ERRCODE_FDW_ERROR

+

RC_INSERT_ON_EXIST

+

Unknown error has occurred.

+

ERRCODE_FDW_ERROR

+

RC_INDEX_RETRY_INSERT

+

Unknown error has occurred.

+

ERRCODE_FDW_ERROR

+

RC_INDEX_DELETE

+

Unknown error has occurred.

+

ERRCODE_FDW_ERROR

+

RC_LOCAL_ROW_NOT_VISIBLE

+

Memory is temporarily unavailable.

+

ERRCODE_OUT_OF_LOGICAL_MEMORY

+

RC_MEMORY_ALLOCATION_ERROR

+

Unknown error has occurred.

+

ERRCODE_FDW_ERROR

+

RC_ILLEGAL_ROW_STATE

+

Null constraint violated.

+

NULL value cannot be inserted into non-null column %s at table %s.

+

ERRCODE_FDW_ERROR

+

RC_NULL_VIOLATION

+

Critical error.

+

Critical error: %s.

+

ERRCODE_FDW_ERROR

+

RC_PANIC

+

A checkpoint is in progress – cannot truncate table.

+

ERRCODE_FDW_OPERATION_NOT_SUPPORTED

+

RC_NA

+

Unknown error has occurred.

+

ERRCODE_FDW_ERROR

+

RC_MAX_VALUE

+

<recovery message>

+
-

ERRCODE_CONFIG_FILE_ERROR

+

<recovery message>

+
-

ERRCODE_INVALID_TABLE_

+

DEFINITION

+

Memory engine – Failed to perform commit prepared.

+
-

ERRCODE_INVALID_TRANSACTION_

+

STATE

+

Invalid option <option name>

+
-

ERRCODE_FDW_INVALID_OPTION_

+

NAME

+

Invalid memory allocation request size.

+
-

ERRCODE_INVALID_PARAMETER_

+

VALUE

+

Memory is temporarily unavailable.

+
-

ERRCODE_OUT_OF_LOGICAL_

+

MEMORY

+

Could not serialize access due to concurrent update.

+
-

ERRCODE_T_R_SERIALIZATION_

+

FAILURE

+

Alter table operation is not supported for memory table.

+

Cannot create MOT tables while incremental checkpoint is enabled.

+

Re-index is not supported for memory tables.

+
-

ERRCODE_FDW_OPERATION_NOT_

+

SUPPORTED

+

Allocation of table metadata failed.

+
-

ERRCODE_OUT_OF_MEMORY

+

Database with OID %u does not exist.

+
-

ERRCODE_UNDEFINED_DATABASE

+

Value exceeds maximum precision: %d.

+
-

ERRCODE_NUMERIC_VALUE_OUT_

+

OF_RANGE

+

You have reached a maximum logical capacity %lu of allowed %lu.

+
-

ERRCODE_OUT_OF_LOGICAL_

+

MEMORY

+
+ diff --git "a/content/zh/docs/Developerguide/MOT\351\232\224\347\246\273\347\272\247\345\210\253.md" "b/content/zh/docs/Developerguide/MOT\351\232\224\347\246\273\347\272\247\345\210\253.md" index 6ed01f05c..282886716 100644 --- "a/content/zh/docs/Developerguide/MOT\351\232\224\347\246\273\347\272\247\345\210\253.md" +++ "b/content/zh/docs/Developerguide/MOT\351\232\224\347\246\273\347\272\247\345\210\253.md" @@ -1,112 +1,112 @@ -# MOT隔离级别 - -即使MOT完全兼容ACID,openGauss 1.0并非支持所有的隔离级别。下表介绍了各隔离级别,以及MOT支持和不支持的内容。 - -**表 1** 隔离级别 - - - - - - - - - - - - - - - - - - - - - - -

隔离级别

-

说明

-

READ UNCOMMITTED

-

MOT不支持

-

READ COMMITTED

-

MOT支持

-

READ COMMITTED(读已提交)隔离级别保证任何正在读取的数据在上一次读取时都已提交。它只是限制读者看到任何中间数据、未提交数据或脏读。数据被读取后可以自由更改,因此,读已提交隔离级别并不保证事务再次读取时能找到相同的数据。

-

SNAPSHOT

-

MOT不支持

-

SNAPSHOT(快照)隔离级别提供与SERIALIZABLE(可序列化)相同的保证,同时支持并发事务修改数据。相反,它迫使每个读者看到自己的世界版本(自己的快照)。不阻止并发更新使得编程非常容易,且可扩展性很强。然而,在许多实现中,这种隔离级别需要更高的服务器资源。

-

REPEATABLE READ

-

MOT支持

-

REPEATABLE READ(可重复读)是一个更高的隔离级别,除了READ COMMITTED隔离级别的保证之外,它还保证任何读取的数据都不能更改。如果一个事务再次读取相同的数据,它将找出该数据,不做更改,并且保证它可读取。

-

乐观模型使得并发事务能更新该事务读取的行。在提交时,该事务将验证REPEATABLE READ隔离级别是否被违反。若违反,则回滚该事务,必须重试。

-

SERIALIZABLE

-

MOT不支持

-

SERIALIZABLE(可序列化)隔离提供了更强的保证。除了REPEATABLE READ隔离级别保证的所有内容外,它还保证后续读取不会看到新数据。

-

它之所以被命名为SERIALIZABLE,是因为隔离非常严格,几乎有点像事务串行运行,而不是并行运行。

-
- -下表显示了不同隔离级别启用的并发副作用。 - -**表 2** 隔离级别启用的并发副作用 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

隔离级别

-

说明

-

不可重复读

-

幻影

-

READ UNCOMMITTED

-

-

-

-

READ COMMITTED

-

-

-

-

REPEATABLE READ

-

-

-

-

SNAPSHOT

-

-

-

-

SERIALIZABLE

-

-

-

-
- -在不久后将发布的版本中,openGauss MOT还将支持SNAPSHOT和SERIALIZABLE隔离级别。 - +# MOT隔离级别 + +即使 MOT 完全兼容 ACID ,openGauss 1.0并非支持所有的隔离级别。下表介绍了各隔离级别,以及 MOT 支持和不支持的内容。 + +**表 1** 隔离级别 + + + + + + + + + + + + + + + + + + + + + + +

隔离级别

+

说明

+

READ UNCOMMITTED

+

MOT不支持

+

READ COMMITTED

+

MOT支持

+

READ COMMITTED(读已提交)隔离级别保证任何正在读取的数据在上一次读取时都已提交。它只是限制读者看到任何中间数据、未提交数据或脏读。数据被读取后可以自由更改,因此,读已提交隔离级别并不保证事务再次读取时能找到相同的数据。

+

SNAPSHOT

+

MOT不支持

+

SNAPSHOT(快照)隔离级别提供与SERIALIZABLE(可序列化)相同的保证,同时支持并发事务修改数据。相反,它迫使每个读者看到自己的世界版本(自己的快照)。不阻止并发更新使得编程非常容易,且可扩展性很强。然而,在许多实现中,这种隔离级别需要更高的服务器资源。

+

REPEATABLE READ

+

MOT支持

+

REPEATABLE READ(可重复读)是一个更高的隔离级别,除了 READ COMMITTED 隔离级别的保证之外,它还保证任何读取的数据都不能更改。如果一个事务再次读取相同的数据,它将找出该数据,不做更改,并且保证它可读取。

+

乐观模型使得并发事务能更新该事务读取的行。在提交时,该事务将验证 REPEATABLE READ 隔离级别是否被违反。若违反,则回滚该事务,必须重试。

+

SERIALIZABLE

+

MOT不支持

+

SERIALIZABLE(可序列化)隔离提供了更强的保证。除了 REPEATABLE READ 隔离级别保证的所有内容外,它还保证后续读取不会看到新数据。

+

它之所以被命名为 SERIALIZABLE ,是因为隔离非常严格,几乎有点像事务串行运行,而不是并行运行。

+
+ +下表显示了不同隔离级别启用的并发副作用。 + +**表 2** 隔离级别启用的并发副作用 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

隔离级别

+

说明

+

不可重复读

+

幻影

+

READ UNCOMMITTED

+

+

+

+

READ COMMITTED

+

+

+

+

REPEATABLE READ

+

+

+

+

SNAPSHOT

+

+

+

+

SERIALIZABLE

+

+

+

+
+ +在不久后将发布的版本中, openGauss MOT 还将支持 SNAPSHOT 和 SERIALIZABLE 隔离级别。 + diff --git "a/content/zh/docs/Developerguide/MOT\351\253\230\345\220\236\345\220\220\351\207\217.md" "b/content/zh/docs/Developerguide/MOT\351\253\230\345\220\236\345\220\220\351\207\217.md" index 349867172..2938bf97c 100644 --- "a/content/zh/docs/Developerguide/MOT\351\253\230\345\220\236\345\220\220\351\207\217.md" +++ "b/content/zh/docs/Developerguide/MOT\351\253\230\345\220\236\345\220\220\351\207\217.md" @@ -1,65 +1,65 @@ # MOT高吞吐量 -MOT高吞吐量测试结果如下。 +MOT 高吞吐量测试结果如下。 -## Arm/鲲鹏2路128核 +## Arm/鲲鹏 2 路 128 核 - **性能** - 下图是华为Arm/鲲鹏2路128核服务器TPC-C基准测试的结果。 + 下图是华为Arm/鲲鹏 2 路 128 核服务器TPC-C基准测试的结果。 一共进行了四类测试: - - MOT和openGauss基于磁盘的表各进行了2次测试。 + - MOT和 openGauss 基于磁盘的表各进行了 2 次测试。 - 其中两项测试是在单节点(无高可用性)上执行,这意味着没有向备节点执行复制。其余两个测试在主备节点(有高可用性)上执行,即写入主节点的数据被复制到备节点。 - MOT用橙色表示,基于磁盘的表用蓝色表示。 +MOT 用橙色表示,基于磁盘的表用蓝色表示。 - **图 1** Arm/鲲鹏2路128核性能基准 - ![](figures/Arm-鲲鹏2路128核性能基准.png "Arm-鲲鹏2路128核性能基准") + **图 1** Arm/鲲鹏 2 路 128 核性能基准 + ![](figures/Arm-鲲鹏 2 路 128 核性能基准.png "Arm-鲲鹏 2 路 128 核性能基准") 结果表明: - - 正如预期的那样,在所有情况下,MOT的性能明显高于基于磁盘的表。 - - 单节点:MOT性能为380万tpmC,而基于磁盘的表为150万tpmC。 - - 主备节点:MOT性能为350万tpmC,而基于磁盘的表为120万tpmC。 - - 相比单节点(无高可用性、无复制),在有复制需求的生产级(高可用性)服务器(主备节点)上,使用MOT的好处更显著。 - - 同在主备高可用场景下,MOT复制开销:Arm/鲲鹏为7%,x86为2%;而基于磁盘的表复制开销:Arm/鲲鹏为20%;x86为15%。 + - 正如预期的那样,在所有情况下, MOT 的性能明显高于基于磁盘的表。 + - 单节点:MOT性能为 380 万 tpmC ,而基于磁盘的表为 150 万 tpmC 。 + - 主备节点:MOT性能为 350 万 tpmC ,而基于磁盘的表为 120 万 tpmC 。 + - 相比单节点(无高可用性、无复制),在有复制需求的生产级(高可用性)服务器(主备节点)上,使用 MOT 的好处更显著。 + - 同在主备高可用场景下, MOT 复制开销:Arm/鲲鹏为7%, x86 为2%;而基于磁盘的表复制开销:Arm/鲲鹏为20%;x86为15%。 -- **单CPU核性能** +- **单 CPU 核性能** - 下图是华为Arm/鲲鹏服务器2路128核的单核TPC-C基准性能/吞吐量测试结果。同样地,一共进行了四类测试: + 下图是华为Arm/鲲鹏服务器 2 路 128 核的单核TPC-C基准性能/吞吐量测试结果。同样地,一共进行了四类测试: - **图 2** Arm/鲲鹏2路128核的单核性能标杆 - ![](figures/Arm-鲲鹏2路128核的单核性能标杆.png "Arm-鲲鹏2路128核的单核性能标杆") + **图 2** Arm/鲲鹏 2 路 128 核的单核性能标杆 + ![](figures/Arm-鲲鹏 2 路 128 核的单核性能标杆.png "Arm-鲲鹏 2 路 128 核的单核性能标杆") - 结果表明,正如预期的那样,在所有情况下,MOT的单核性能明显高于基于磁盘的表。相比单节点(无高可用性、无复制),在有复制需求的生产级(高可用性)服务器(主备节点)上,使用MOT的好处更显著。 + 结果表明,正如预期的那样,在所有情况下, MOT 的单核性能明显高于基于磁盘的表。相比单节点(无高可用性、无复制),在有复制需求的生产级(高可用性)服务器(主备节点)上,使用 MOT 的好处更显著。 -## Arm/鲲鹏4路256核 +## Arm/鲲鹏 4 路 256 核 -下面通过单连接数的tpmC来展示MOT出色的并发控制性能。 +下面通过单连接数的 tpmC 来展示 MOT 出色的并发控制性能。 -**图 3** Arm/鲲鹏4路256核性能基准 -![](figures/Arm-鲲鹏4路256核性能基准.png "Arm-鲲鹏4路256核性能基准") +**图 3** Arm/鲲鹏 4 路 256 核性能基准 +![](figures/Arm-鲲鹏 4 路 256 核性能基准.png "Arm-鲲鹏 4 路 256 核性能基准") -结果表明,随着核数增多,性能也显著提高,在768核时性能达到480万tpmC的峰值。 +结果表明,随着核数增多,性能也显著提高,在 768 核时性能达到 480 万 tpmC 的峰值。 ## x86服务器 -- **8路384核** +- **8路 384 核** -下面通过比较基于磁盘的表和MOT之间单连接数的tpmC,来展示MOT出色的并发控制性能。本次测试以8路384核x86服务器为例。橙色表示MOT的结果。 +下面通过比较基于磁盘的表和 MOT 之间单连接数的 tpmC ,来展示 MOT 出色的并发控制性能。本次测试以 8 路 384 核 x86 服务器为例。橙色表示 MOT 的结果。 -**图 4** 8路384核x86服务器性能基准 -![](figures/8路384核x86服务器性能基准.png "8路384核x86服务器性能基准") +**图 4** 8路 384 核 x86 服务器性能基准 +![](figures/8路 384 核 x86 服务器性能基准.png "8路 384 核 x86 服务器性能基准") -结果表明,在386核服务器上,MOT的性能明显优于基于磁盘的表,并且单核性能非常高,达到300万tpmC/核。 +结果表明,在 386 核服务器上, MOT 的性能明显优于基于磁盘的表,并且单核性能非常高,达到 300 万tpmC/核。 -- **4路96核** +- **4路 96 核** -在4路96核服务器上,MOT实现了390万tpmC。下图展示了高效MOT的单核性能达到4万tpmC/核。 +在 4 路 96 核服务器上, MOT 实现了 390 万 tpmC 。下图展示了高效 MOT 的单核性能达到 4 万tpmC/核。 -**图 5** 4路96核服务器性能基准 -![](figures/4路96核服务器性能基准.png "4路96核服务器性能基准") +**图 5** 4路 96 核服务器性能基准 +![](figures/4路 96 核服务器性能基准.png "4路 96 核服务器性能基准") diff --git a/content/zh/docs/Developerguide/MOVE.md b/content/zh/docs/Developerguide/MOVE.md index 45ef419ad..7cf7dcf2e 100644 --- a/content/zh/docs/Developerguide/MOVE.md +++ b/content/zh/docs/Developerguide/MOVE.md @@ -1,75 +1,75 @@ -# MOVE - -## 功能描述 - -MOVE在不检索数据的情况下重新定位一个游标。MOVE的作用类似于[FETCH](FETCH.md)命令,但只是重定位游标而不返回行。 - -## 注意事项 - -无。 - -## 语法格式 - -``` -MOVE [ direction [ FROM | IN ] ] cursor_name; -``` - -其中direction子句为可选参数。 - -``` -NEXT - | PRIOR - | FIRST - | LAST - | ABSOLUTE count - | RELATIVE count - | count - | ALL - | FORWARD - | FORWARD count - | FORWARD ALL - | BACKWARD - | BACKWARD count - | BACKWARD ALL -``` - -## 参数说明 - -MOVE命令的参数与FETCH的相同,详细请参见FETCH的[参数说明](FETCH.md#zh-cn_topic_0283137321_zh-cn_topic_0237122165_zh-cn_topic_0059778422_sceb763c430654064b8f61e9aa0792af9)。 - ->![](public_sys-resources/icon-note.gif) **说明:** ->成功完成时,MOVE命令将返回一个“MOVE count”的标签,count是一个使用相同参数的FETCH命令会返回的行数(可能为零)。 - -## 示例 - -``` ---开始一个事务。 -openGauss=# START TRANSACTION; - ---定义一个名为cursor1的游标。 -openGauss=# CURSOR cursor1 FOR SELECT * FROM tpcds.reason; - ---忽略游标cursor1的前3行。 -openGauss=# MOVE FORWARD 3 FROM cursor1; - ---抓取游标cursor1的前4行。 -openGauss=# FETCH 4 FROM cursor1; - r_reason_sk | r_reason_id | r_reason_desc --------------+------------------+------------------------------------------------------------------------------------------------------ - 4 | AAAAAAAAEAAAAAAA | Not the product that was ordred - 5 | AAAAAAAAFAAAAAAA | Parts missing - 6 | AAAAAAAAGAAAAAAA | Does not work with a product that I have - 7 | AAAAAAAAHAAAAAAA | Gift exchange -(4 rows) - ---关闭游标。 -openGauss=# CLOSE cursor1; - ---结束一个事务。 -openGauss=# END; -``` - -## 相关链接 - -[CLOSE](CLOSE.md),[FETCH](FETCH.md) - +# MOVE + +## 功能描述 + +MOVE 在不检索数据的情况下重新定位一个游标。 MOVE 的作用类似于[FETCH](FETCH.md)命令,但只是重定位游标而不返回行。 + +## 注意事项 + +无。 + +## 语法格式 + +``` +MOVE [ direction [ FROM | IN ] ] cursor_name; +``` + +其中 direction 子句为可选参数。 + +``` +NEXT + | PRIOR + | FIRST + | LAST + | ABSOLUTE count + | RELATIVE count + | count + | ALL + | FORWARD + | FORWARD count + | FORWARD ALL + | BACKWARD + | BACKWARD count + | BACKWARD ALL +``` + +## 参数说明 + +MOVE 命令的参数与 FETCH 的相同,详细请参见 FETCH 的[参数说明](FETCH.md#zh-cn_topic_0283137321_zh-cn_topic_0237122165_zh-cn_topic_0059778422_sceb763c430654064b8f61e9aa0792af9)。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>成功完成时, MOVE 命令将返回一个“MOVE count”的标签, count 是一个使用相同参数的 FETCH 命令会返回的行数(可能为零)。 + +## 示例 + +``` +--开始一个事务。 +openGauss=# START TRANSACTION; + +--定义一个名为 cursor1 的游标。 +openGauss=# CURSOR cursor1 FOR SELECT * FROM tpcds.reason; + +--忽略游标 cursor1 的前 3 行。 +openGauss=# MOVE FORWARD 3 FROM cursor1; + +--抓取游标 cursor1 的前 4 行。 +openGauss=# FETCH 4 FROM cursor1; + r_reason_sk | r_reason_id | r_reason_desc +-------------+------------------+------------------------------------------------------------------------------------------------------ + 4 | AAAAAAAAEAAAAAAA | Not the product that was ordred + 5 | AAAAAAAAFAAAAAAA | Parts missing + 6 | AAAAAAAAGAAAAAAA | Does not work with a product that I have + 7 | AAAAAAAAHAAAAAAA | Gift exchange +(4 rows) + +--关闭游标。 +openGauss=# CLOSE cursor1; + +--结束一个事务。 +openGauss=# END; +``` + +## 相关链接 + +[CLOSE](CLOSE.md),[FETCH](FETCH.md) + diff --git a/content/zh/docs/Developerguide/MPP_TABLES.md b/content/zh/docs/Developerguide/MPP_TABLES.md index 943aebb88..dcb90369d 100644 --- a/content/zh/docs/Developerguide/MPP_TABLES.md +++ b/content/zh/docs/Developerguide/MPP_TABLES.md @@ -1,60 +1,60 @@ -# MPP\_TABLES - -MPP\_TABLES视图显示信息如下。 - -**表 1** MPP\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

schemaname

-

name

-

包含表的模式名。

-

tablename

-

name

-

表名。

-

tableowner

-

name

-

表的所有者。

-

tablespace

-

name

-

表所在的表空间。

-

pgroup

-

name

-

节点群的名称。

-

nodeoids

-

oidvector_extend

-

表分布的节点OID列表。

-
- +# MPP\_TABLES + +MPP\_TABLES视图显示信息如下。 + +**表 1** MPP\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

包含表的模式名。

+

tablename

+

name

+

表名。

+

tableowner

+

name

+

表的所有者。

+

tablespace

+

name

+

表所在的表空间。

+

pgroup

+

name

+

节点群的名称。

+

nodeoids

+

oidvector_extend

+

表分布的节点 OID 列表。

+
+ diff --git a/content/zh/docs/Developerguide/Memory.md b/content/zh/docs/Developerguide/Memory.md index 364a39f44..b5ae22147 100644 --- a/content/zh/docs/Developerguide/Memory.md +++ b/content/zh/docs/Developerguide/Memory.md @@ -1,11 +1,11 @@ -# Memory - -- **[MEMORY\_NODE\_DETAIL](MEMORY_NODE_DETAIL.md)** - -- **[GLOBAL\_MEMORY\_NODE\_DETAIL](GLOBAL_MEMORY_NODE_DETAIL.md)** - -- **[SHARED\_MEMORY\_DETAIL](SHARED_MEMORY_DETAIL.md)** - -- **[GLOBAL\_SHARED\_MEMORY\_DETAIL](GLOBAL_SHARED_MEMORY_DETAIL.md)** - - +# Memory + +- **[MEMORY\_NODE\_DETAIL](MEMORY_NODE_DETAIL.md)** + +- **[GLOBAL\_MEMORY\_NODE\_DETAIL](GLOBAL_MEMORY_NODE_DETAIL.md)** + +- **[SHARED\_MEMORY\_DETAIL](SHARED_MEMORY_DETAIL.md)** + +- **[GLOBAL\_SHARED\_MEMORY\_DETAIL](GLOBAL_SHARED_MEMORY_DETAIL.md)** + + diff --git "a/content/zh/docs/Developerguide/NUMA-aware\345\210\206\351\205\215\345\222\214\344\272\262\345\222\214\346\200\247.md" "b/content/zh/docs/Developerguide/NUMA-aware\345\210\206\351\205\215\345\222\214\344\272\262\345\222\214\346\200\247.md" index b0332f581..f25ae93a0 100644 --- "a/content/zh/docs/Developerguide/NUMA-aware\345\210\206\351\205\215\345\222\214\344\272\262\345\222\214\346\200\247.md" +++ "b/content/zh/docs/Developerguide/NUMA-aware\345\210\206\351\205\215\345\222\214\344\272\262\345\222\214\346\200\247.md" @@ -1,16 +1,16 @@ # NUMA-aware分配和亲和性 -非统一内存访问(NUMA)是一种计算机内存设计,用于多重处理,其中内存访问时间取决于内存相对于处理器的位置。处理器可以利用NUMA的优势,优先访问本地内存(速度更快),而不是访问非本地内存(这意味着它不会访问另一个处理器的本地内存或处理器之间共享的内存)。 +非统一内存访问(NUMA)是一种计算机内存设计,用于多重处理,其中内存访问时间取决于内存相对于处理器的位置。处理器可以利用 NUMA 的优势,优先访问本地内存(速度更快),而不是访问非本地内存(这意味着它不会访问另一个处理器的本地内存或处理器之间共享的内存)。 -MOT内存访问设计时采用了NUMA感知。即MOT意识到内存不是统一的,而是通过访问最快和最本地的内存来获得最佳性能。 +MOT 内存访问设计时采用了 NUMA 感知。即 MOT 意识到内存不是统一的,而是通过访问最快和最本地的内存来获得最佳性能。 -NUMA的优点仅限于某些类型的工作负载,特别是数据通常与某些任务或用户强相关的服务器上的工作负载。 +NUMA 的优点仅限于某些类型的工作负载,特别是数据通常与某些任务或用户强相关的服务器上的工作负载。 -在NUMA平台上运行的内储存数据库系统面临一些问题,例如访问远程主内存时,时延增加和带宽降低。为了应对这些NUMA相关问题,NUMA感知必须被看作是数据库系统基本架构的主要设计原则。 +在 NUMA 平台上运行的内储存数据库系统面临一些问题,例如访问远程主内存时,时延增加和带宽降低。为了应对这些 NUMA 相关问题, NUMA 感知必须被看作是数据库系统基本架构的主要设计原则。 -为了便于快速操作和高效利用NUMA节点,MOT为每个表的行分配一个指定的内存池,同时为索引的节点分配一个指定的内存池。每个内存池由多个2MB的块组成。指定API从本地NUMA节点、来自所有节点的页面或通过轮询分配这些块,每个块在下一个节点上分配。默认情况下,共享数据池以轮询方式分配,以保持访问均衡,同时避免在不同NUMA节点之间拆分行。但是,线程专用内存是从一个本地节点分配的,必须验证线程始终运行在同一个NUMA节点中。 +为了便于快速操作和高效利用 NUMA 节点, MOT 为每个表的行分配一个指定的内存池,同时为索引的节点分配一个指定的内存池。每个内存池由多个 2MB 的块组成。指定 API 从本地 NUMA 节点、来自所有节点的页面或通过轮询分配这些块,每个块在下一个节点上分配。默认情况下,共享数据池以轮询方式分配,以保持访问均衡,同时避免在不同 NUMA 节点之间拆分行。但是,线程专用内存是从一个本地节点分配的,必须验证线程始终运行在同一个 NUMA 节点中。 **总结** -MOT有一个智能内存控制模块,它预先为各种类型的内存对象分配了内存池。这种智能内存控制可以提高性能,减少锁并保证稳定性。事务的内存对象分配始终是NUMA-local,从而保证了CPU内存访问的最佳性能,降低时延和争用。被释放的对象返回到内存池中。在事务期间最小化使用操作系统的malloc函数可以避免不必要的锁。 +MOT 有一个智能内存控制模块,它预先为各种类型的内存对象分配了内存池。这种智能内存控制可以提高性能,减少锁并保证稳定性。事务的内存对象分配始终是NUMA-local,从而保证了 CPU 内存访问的最佳性能,降低时延和争用。被释放的对象返回到内存池中。在事务期间最小化使用操作系统的 malloc 函数可以避免不必要的锁。 diff --git a/content/zh/docs/Developerguide/ODBC.md b/content/zh/docs/Developerguide/ODBC.md index 2cd8c6114..e4059ab13 100644 --- a/content/zh/docs/Developerguide/ODBC.md +++ b/content/zh/docs/Developerguide/ODBC.md @@ -1,51 +1,51 @@ -# ODBC - -ODBC接口是一套提供给用户的API函数,本节将对部分常用接口做具体描述,若涉及其他接口可参考[msdn](https://docs.microsoft.com/zh-cn/sql/odbc/reference/odbc-programmer-s-reference?view=sql-server-ver15)中ODBC Programmer's Reference项的相关内容。 - -- **[SQLAllocEnv](SQLAllocEnv.md)** - -- **[SQLAllocConnect](SQLAllocConnect.md)** - -- **[SQLAllocHandle](SQLAllocHandle.md)** - -- **[SQLAllocStmt](SQLAllocStmt.md)** - -- **[SQLBindCol](SQLBindCol.md)** - -- **[SQLBindParameter](SQLBindParameter.md)** - -- **[SQLColAttribute](SQLColAttribute.md)** - -- **[SQLConnect](SQLConnect.md)** - -- **[SQLDisconnect](SQLDisconnect.md)** - -- **[SQLExecDirect](SQLExecDirect.md)** - -- **[SQLExecute](SQLExecute.md)** - -- **[SQLFetch](SQLFetch.md)** - -- **[SQLFreeStmt](SQLFreeStmt.md)** - -- **[SQLFreeConnect](SQLFreeConnect.md)** - -- **[SQLFreeHandle](SQLFreeHandle.md)** - -- **[SQLFreeEnv](SQLFreeEnv.md)** - -- **[SQLPrepare](SQLPrepare.md)** - -- **[SQLGetData](SQLGetData.md)** - -- **[SQLGetDiagRec](SQLGetDiagRec.md)** - -- **[SQLSetConnectAttr](SQLSetConnectAttr.md)** - -- **[SQLSetEnvAttr](SQLSetEnvAttr.md)** - -- **[SQLSetStmtAttr](SQLSetStmtAttr.md)** - -- **[示例](示例-2.md)** - - +# ODBC + +ODBC 接口是一套提供给用户的 API 函数,本节将对部分常用接口做具体描述,若涉及其他接口可参考[msdn](https://docs.microsoft.com/zh-cn/sql/odbc/reference/odbc-programmer-s-reference?view=sql-server-ver15)中ODBC Programmer's Reference项的相关内容。 + +- **[SQLAllocEnv](SQLAllocEnv.md)** + +- **[SQLAllocConnect](SQLAllocConnect.md)** + +- **[SQLAllocHandle](SQLAllocHandle.md)** + +- **[SQLAllocStmt](SQLAllocStmt.md)** + +- **[SQLBindCol](SQLBindCol.md)** + +- **[SQLBindParameter](SQLBindParameter.md)** + +- **[SQLColAttribute](SQLColAttribute.md)** + +- **[SQLConnect](SQLConnect.md)** + +- **[SQLDisconnect](SQLDisconnect.md)** + +- **[SQLExecDirect](SQLExecDirect.md)** + +- **[SQLExecute](SQLExecute.md)** + +- **[SQLFetch](SQLFetch.md)** + +- **[SQLFreeStmt](SQLFreeStmt.md)** + +- **[SQLFreeConnect](SQLFreeConnect.md)** + +- **[SQLFreeHandle](SQLFreeHandle.md)** + +- **[SQLFreeEnv](SQLFreeEnv.md)** + +- **[SQLPrepare](SQLPrepare.md)** + +- **[SQLGetData](SQLGetData.md)** + +- **[SQLGetDiagRec](SQLGetDiagRec.md)** + +- **[SQLSetConnectAttr](SQLSetConnectAttr.md)** + +- **[SQLSetEnvAttr](SQLSetEnvAttr.md)** + +- **[SQLSetStmtAttr](SQLSetStmtAttr.md)** + +- **[示例](示例-2.md)** + + diff --git "a/content/zh/docs/Developerguide/ODBC\345\214\205\345\217\212\344\276\235\350\265\226\347\232\204\345\272\223\345\222\214\345\244\264\346\226\207\344\273\266.md" "b/content/zh/docs/Developerguide/ODBC\345\214\205\345\217\212\344\276\235\350\265\226\347\232\204\345\272\223\345\222\214\345\244\264\346\226\207\344\273\266.md" index 0498715f1..d5ba3149d 100644 --- "a/content/zh/docs/Developerguide/ODBC\345\214\205\345\217\212\344\276\235\350\265\226\347\232\204\345\272\223\345\222\214\345\244\264\346\226\207\344\273\266.md" +++ "b/content/zh/docs/Developerguide/ODBC\345\214\205\345\217\212\344\276\235\350\265\226\347\232\204\345\272\223\345\222\214\345\244\264\346\226\207\344\273\266.md" @@ -1,6 +1,6 @@ -# ODBC包及依赖的库和头文件 - -## Linux下的ODBC包 - -从发布包中获取,包名为openGauss-x.x.x-ODBC.tar.gz。Linux环境下,开发应用程序要用到unixODBC提供的头文件(sql.h、sqlext.h等)和库libodbc.so。这些头文件和库可从unixODBC-2.3.0的安装包中获得。 - +# ODBC包及依赖的库和头文件 + +## Linux下的 ODBC 包 + +从发布包中获取,包名为openGauss-x.x.x-ODBC.tar.gz。 Linux 环境下,开发应用程序要用到 unixODBC 提供的头文件(sql.h、sqlext.h等)和库libodbc.so。这些头文件和库可从unixODBC-2.3.0的安装包中获得。 + diff --git "a/content/zh/docs/Developerguide/ODBC\346\216\245\345\217\243\345\217\202\350\200\203.md" "b/content/zh/docs/Developerguide/ODBC\346\216\245\345\217\243\345\217\202\350\200\203.md" index 14d6a96e8..d3943f532 100644 --- "a/content/zh/docs/Developerguide/ODBC\346\216\245\345\217\243\345\217\202\350\200\203.md" +++ "b/content/zh/docs/Developerguide/ODBC\346\216\245\345\217\243\345\217\202\350\200\203.md" @@ -1,4 +1,4 @@ -# ODBC接口参考 - -请参见[ODBC](ODBC.md)。 - +# ODBC接口参考 + +请参见[ODBC](ODBC.md)。 + diff --git a/content/zh/docs/Developerguide/OPERATOR_HISTORY.md b/content/zh/docs/Developerguide/OPERATOR_HISTORY.md index be0969516..30740f604 100644 --- a/content/zh/docs/Developerguide/OPERATOR_HISTORY.md +++ b/content/zh/docs/Developerguide/OPERATOR_HISTORY.md @@ -1,4 +1,4 @@ -# OPERATOR\_HISTORY - -OPERATOR\_HISTORY视图显示的是当前用户数据库主节点上执行作业结束后的算子的相关记录。记录的数据同[表1](GS_WLM_OPERATOR_INFO.md#zh-cn_topic_0283136785_zh-cn_topic_0237122263_zh-cn_topic_0111176227_table85181143511)。 - +# OPERATOR\_HISTORY + +OPERATOR\_HISTORY视图显示的是当前用户数据库主节点上执行作业结束后的算子的相关记录。记录的数据同[表1](GS_WLM_OPERATOR_INFO.md#zh-cn_topic_0283136785_zh-cn_topic_0237122263_zh-cn_topic_0111176227_table85181143511)。 + diff --git a/content/zh/docs/Developerguide/OPERATOR_HISTORY_TABLE.md b/content/zh/docs/Developerguide/OPERATOR_HISTORY_TABLE.md index 5e966246e..46ab69b4a 100644 --- a/content/zh/docs/Developerguide/OPERATOR_HISTORY_TABLE.md +++ b/content/zh/docs/Developerguide/OPERATOR_HISTORY_TABLE.md @@ -1,173 +1,173 @@ -# OPERATOR\_HISTORY\_TABLE - -OPERATOR\_HISTORY\_TABLE系统表显示执行作业结束后的算子相关的记录。此数据是从内核中转储到系统表中的数据。 - -**表 1** OPERATOR\_HISTORY\_TABLE的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

queryid

-

bigint

-

语句执行使用的内部query_id。

-

pid

-

bigint

-

后端线程id。

-

plan_node_id

-

integer

-

查询对应的执行计划的plan node id。

-

plan_node_name

-

text

-

对应于plan_node_id的算子的名称。

-

start_time

-

timestamp with time zone

-

该算子处理第一条数据的开始时间。

-

duration

-

bigint

-

该算子到结束时候总的执行时间(ms)。

-

query_dop

-

integer

-

当前算子执行时的并行度。

-

estimated_rows

-

bigint

-

优化器估算的行数信息。

-

tuple_processed

-

bigint

-

当前算子返回的元素个数。

-

min_peak_memory

-

integer

-

当前算子在数据库节点上的最小内存峰值(MB)。

-

max_peak_memory

-

integer

-

当前算子在数据库节点上的最大内存峰值(MB)。

-

average_peak_memory

-

integer

-

当前算子在数据库节点上的平均内存峰值(MB)。

-

memory_skew_percent

-

integer

-

当前算子在数据库节点间的内存使用倾斜率。

-

min_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最小数据量(MB),默认为0。

-

max_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最大数据量(MB),默认为0。

-

average_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的平均数据量(MB),默认为0。

-

spill_skew_percent

-

integer

-

若发生下盘,数据库节点间下盘倾斜率。

-

min_cpu_time

-

bigint

-

该算子在数据库节点上的最小执行时间(ms)。

-

max_cpu_time

-

bigint

-

该算子在数据库节点上的最大执行时间(ms)。

-

total_cpu_time

-

bigint

-

该算子在数据库节点上的总执行时间(ms)。

-

cpu_skew_percent

-

integer

-

数据库节点间执行时间的倾斜率。

-

warning

-

text

-
主要显示如下几类告警信息:
  • Sort/SetOp/HashAgg/HashJoin spill。
  • Spill file size large than 256MB。
  • Broadcast size large than 100MB。
  • Early spill。
  • Spill times is greater than 3。
  • Spill on memory adaptive。
  • Hash table conflict。
-
-
- +# OPERATOR\_HISTORY\_TABLE + +OPERATOR\_HISTORY\_TABLE系统表显示执行作业结束后的算子相关的记录。此数据是从内核中转储到系统表中的数据。 + +**表 1** OPERATOR\_HISTORY\_TABLE的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

queryid

+

bigint

+

语句执行使用的内部 query_id 。

+

pid

+

bigint

+

后端线程 id 。

+

plan_node_id

+

integer

+

查询对应的执行计划的 plan node id 。

+

plan_node_name

+

text

+

对应于 plan_node_id 的算子的名称。

+

start_time

+

timestamp with time zone

+

该算子处理第一条数据的开始时间。

+

duration

+

bigint

+

该算子到结束时候总的执行时间(ms)。

+

query_dop

+

integer

+

当前算子执行时的并行度。

+

estimated_rows

+

bigint

+

优化器估算的行数信息。

+

tuple_processed

+

bigint

+

当前算子返回的元素个数。

+

min_peak_memory

+

integer

+

当前算子在数据库节点上的最小内存峰值(MB)。

+

max_peak_memory

+

integer

+

当前算子在数据库节点上的最大内存峰值(MB)。

+

average_peak_memory

+

integer

+

当前算子在数据库节点上的平均内存峰值(MB)。

+

memory_skew_percent

+

integer

+

当前算子在数据库节点间的内存使用倾斜率。

+

min_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最小数据量(MB),默认为 0 。

+

max_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最大数据量(MB),默认为 0 。

+

average_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的平均数据量(MB),默认为 0 。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库节点间下盘倾斜率。

+

min_cpu_time

+

bigint

+

该算子在数据库节点上的最小执行时间(ms)。

+

max_cpu_time

+

bigint

+

该算子在数据库节点上的最大执行时间(ms)。

+

total_cpu_time

+

bigint

+

该算子在数据库节点上的总执行时间(ms)。

+

cpu_skew_percent

+

integer

+

数据库节点间执行时间的倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  • Sort/SetOp/HashAgg/HashJoin spill。
  • Spill file size large than 256MB。
  • Broadcast size large than 100MB。
  • Early spill。
  • Spill times is greater than 3。
  • Spill on memory adaptive。
  • Hash table conflict。
+
+
+ diff --git a/content/zh/docs/Developerguide/OPERATOR_RUNTIME.md b/content/zh/docs/Developerguide/OPERATOR_RUNTIME.md index 53a44435d..6f34c3a09 100644 --- a/content/zh/docs/Developerguide/OPERATOR_RUNTIME.md +++ b/content/zh/docs/Developerguide/OPERATOR_RUNTIME.md @@ -1,179 +1,179 @@ -# OPERATOR\_RUNTIME - -OPERATOR\_RUNTIME视图显示当前用户正在执行的作业的算子相关信息。 - -**表 1** OPERATOR\_RUNTIME的字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

queryid

-

bigint

-

语句执行使用的内部query_id。

-

pid

-

bigint

-

后端线程id。

-

plan_node_id

-

integer

-

查询对应的执行计划的plan node id。

-

plan_node_name

-

text

-

对应于plan_node_id的算子的名称。

-

start_time

-

timestamp with time zone

-

该算子处理第一条数据的开始时间。

-

duration

-

bigint

-

该算子到结束时候总的执行时间(ms)。

-

status

-

text

-

当前算子的执行状态,包括finished和running。

-

query_dop

-

integer

-

当前算子执行时的并行度。

-

estimated_rows

-

bigint

-

优化器估算的行数信息。

-

tuple_processed

-

bigint

-

当前算子返回的元素个数。

-

min_peak_memory

-

integer

-

当前算子在数据库节点上的最小内存峰值(MB)。

-

max_peak_memory

-

integer

-

当前算子在数据库节点上的最大内存峰值(MB)。

-

average_peak_memory

-

integer

-

当前算子在数据库节点上的平均内存峰值(MB)。

-

memory_skew_percent

-

integer

-

当前算子在数据库节点的内存使用倾斜率。

-

min_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最小数据量(MB),默认为0。

-

max_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的最大数据量(MB),默认为0。

-

average_spill_size

-

integer

-

若发生下盘,数据库节点上下盘的平均数据量(MB),默认为0。

-

spill_skew_percent

-

integer

-

若发生下盘,数据库节点间下盘倾斜率。

-

min_cpu_time

-

bigint

-

该算子在数据库节点上的最小执行时间(ms)。

-

max_cpu_time

-

bigint

-

该算子在数据库节点上的最大执行时间(ms)。

-

total_cpu_time

-

bigint

-

该算子在数据库节点上的总执行时间(ms)。

-

cpu_skew_percent

-

integer

-

数据库节点间执行时间的倾斜率。

-

warning

-

text

-
主要显示如下几类告警信息:
  • Sort/SetOp/HashAgg/HashJoin spill。
  • Spill file size large than 256MB。
  • Broadcast size large than 100MB。
  • Early spill。
  • Spill times is greater than 3。
  • Spill on memory adaptive。
  • Hash table conflict。
-
-
+# OPERATOR\_RUNTIME + +OPERATOR\_RUNTIME视图显示当前用户正在执行的作业的算子相关信息。 + +**表 1** OPERATOR\_RUNTIME的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

queryid

+

bigint

+

语句执行使用的内部 query_id 。

+

pid

+

bigint

+

后端线程 id 。

+

plan_node_id

+

integer

+

查询对应的执行计划的 plan node id 。

+

plan_node_name

+

text

+

对应于 plan_node_id 的算子的名称。

+

start_time

+

timestamp with time zone

+

该算子处理第一条数据的开始时间。

+

duration

+

bigint

+

该算子到结束时候总的执行时间(ms)。

+

status

+

text

+

当前算子的执行状态,包括 finished 和 running 。

+

query_dop

+

integer

+

当前算子执行时的并行度。

+

estimated_rows

+

bigint

+

优化器估算的行数信息。

+

tuple_processed

+

bigint

+

当前算子返回的元素个数。

+

min_peak_memory

+

integer

+

当前算子在数据库节点上的最小内存峰值(MB)。

+

max_peak_memory

+

integer

+

当前算子在数据库节点上的最大内存峰值(MB)。

+

average_peak_memory

+

integer

+

当前算子在数据库节点上的平均内存峰值(MB)。

+

memory_skew_percent

+

integer

+

当前算子在数据库节点的内存使用倾斜率。

+

min_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最小数据量(MB),默认为 0 。

+

max_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最大数据量(MB),默认为 0 。

+

average_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的平均数据量(MB),默认为 0 。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库节点间下盘倾斜率。

+

min_cpu_time

+

bigint

+

该算子在数据库节点上的最小执行时间(ms)。

+

max_cpu_time

+

bigint

+

该算子在数据库节点上的最大执行时间(ms)。

+

total_cpu_time

+

bigint

+

该算子在数据库节点上的总执行时间(ms)。

+

cpu_skew_percent

+

integer

+

数据库节点间执行时间的倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  • Sort/SetOp/HashAgg/HashJoin spill。
  • Spill file size large than 256MB。
  • Broadcast size large than 100MB。
  • Early spill。
  • Spill times is greater than 3。
  • Spill on memory adaptive。
  • Hash table conflict。
+
+
diff --git a/content/zh/docs/Developerguide/OS.md b/content/zh/docs/Developerguide/OS.md index 4cf29ed06..131b7bb3b 100644 --- a/content/zh/docs/Developerguide/OS.md +++ b/content/zh/docs/Developerguide/OS.md @@ -1,11 +1,11 @@ -# OS - -- **[OS\_RUNTIME](OS_RUNTIME.md)** - -- **[GLOBAL\_OS\_RUNTIME](GLOBAL_OS_RUNTIME.md)** - -- **[OS\_THREADS](OS_THREADS.md)** - -- **[GLOBAL\_OS\_THREADS](GLOBAL_OS_THREADS.md)** - - +# OS + +- **[OS\_RUNTIME](OS_RUNTIME.md)** + +- **[GLOBAL\_OS\_RUNTIME](GLOBAL_OS_RUNTIME.md)** + +- **[OS\_THREADS](OS_THREADS.md)** + +- **[GLOBAL\_OS\_THREADS](GLOBAL_OS_THREADS.md)** + + diff --git a/content/zh/docs/Developerguide/OS_RUNTIME.md b/content/zh/docs/Developerguide/OS_RUNTIME.md index 92957e18b..d1f9edc20 100644 --- a/content/zh/docs/Developerguide/OS_RUNTIME.md +++ b/content/zh/docs/Developerguide/OS_RUNTIME.md @@ -1,53 +1,53 @@ -# OS\_RUNTIME - -显示当前操作系统运行的状态信息。 - -**表 1** OS\_RUNTIME字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

id

-

integer

-

编号。

-

name

-

text

-

操作系统运行状态名称。

-

value

-

numeric

-

操作系统运行状态值。

-

comments

-

text

-

操作系统运行状态注释。

-

cumulative

-

boolean

-

操作系统运行状态的值是否为累加值。

-
- +# OS\_RUNTIME + +显示当前操作系统运行的状态信息。 + +**表 1** OS\_RUNTIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

id

+

integer

+

编号。

+

name

+

text

+

操作系统运行状态名称。

+

value

+

numeric

+

操作系统运行状态值。

+

comments

+

text

+

操作系统运行状态注释。

+

cumulative

+

boolean

+

操作系统运行状态的值是否为累加值。

+
+ diff --git a/content/zh/docs/Developerguide/OS_THREADS.md b/content/zh/docs/Developerguide/OS_THREADS.md index 2b456dba1..7af395f96 100644 --- a/content/zh/docs/Developerguide/OS_THREADS.md +++ b/content/zh/docs/Developerguide/OS_THREADS.md @@ -1,53 +1,53 @@ -# OS\_THREADS - -提供当前节点下所有线程的状态信息。 - -**表 1** OS\_THREADS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

数据库进程名称。

-

pid

-

bigint

-

数据库进程中正在运行的线程号。

-

lwpid

-

integer

-

与pid对应的轻量级线程号。

-

thread_name

-

text

-

与pid对应的线程名称。

-

creation_time

-

timestamp with time zone

-

与pid对应的线程创建的时间。

-
- +# OS\_THREADS + +提供当前节点下所有线程的状态信息。 + +**表 1** OS\_THREADS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

pid

+

bigint

+

数据库进程中正在运行的线程号。

+

lwpid

+

integer

+

与 pid 对应的轻量级线程号。

+

thread_name

+

text

+

与 pid 对应的线程名称。

+

creation_time

+

timestamp with time zone

+

与 pid 对应的线程创建的时间。

+
+ diff --git a/content/zh/docs/Developerguide/Object.md b/content/zh/docs/Developerguide/Object.md index feb0719ee..d9c7f8d61 100644 --- a/content/zh/docs/Developerguide/Object.md +++ b/content/zh/docs/Developerguide/Object.md @@ -1,87 +1,87 @@ -# Object - -- **[STAT\_USER\_TABLES](STAT_USER_TABLES.md)** - -- **[SUMMARY\_STAT\_USER\_TABLES](SUMMARY_STAT_USER_TABLES.md)** - -- **[GLOBAL\_STAT\_USER\_TABLES](GLOBAL_STAT_USER_TABLES.md)** - -- **[STAT\_USER\_INDEXES](STAT_USER_INDEXES.md)** - -- **[SUMMARY\_STAT\_USER\_INDEXES](SUMMARY_STAT_USER_INDEXES.md)** - -- **[GLOBAL\_STAT\_USER\_INDEXES](GLOBAL_STAT_USER_INDEXES.md)** - -- **[STAT\_SYS\_TABLES](STAT_SYS_TABLES.md)** - -- **[SUMMARY\_STAT\_SYS\_TABLES](SUMMARY_STAT_SYS_TABLES.md)** - -- **[GLOBAL\_STAT\_SYS\_TABLES](GLOBAL_STAT_SYS_TABLES.md)** - -- **[STAT\_SYS\_INDEXES](STAT_SYS_INDEXES.md)** - -- **[SUMMARY\_STAT\_SYS\_INDEXES](SUMMARY_STAT_SYS_INDEXES.md)** - -- **[GLOBAL\_STAT\_SYS\_INDEXES](GLOBAL_STAT_SYS_INDEXES.md)** - -- **[STAT\_ALL\_TABLES](STAT_ALL_TABLES.md)** - -- **[SUMMARY\_STAT\_ALL\_TABLES](SUMMARY_STAT_ALL_TABLES.md)** - -- **[GLOBAL\_STAT\_ALL\_TABLES](GLOBAL_STAT_ALL_TABLES.md)** - -- **[STAT\_ALL\_INDEXES](STAT_ALL_INDEXES.md)** - -- **[SUMMARY\_STAT\_ALL\_INDEXES](SUMMARY_STAT_ALL_INDEXES.md)** - -- **[GLOBAL\_STAT\_ALL\_INDEXES](GLOBAL_STAT_ALL_INDEXES.md)** - -- **[STAT\_DATABASE](STAT_DATABASE.md)** - -- **[SUMMARY\_STAT\_DATABASE](SUMMARY_STAT_DATABASE.md)** - -- **[GLOBAL\_STAT\_DATABASE](GLOBAL_STAT_DATABASE.md)** - -- **[STAT\_DATABASE\_CONFLICTS](STAT_DATABASE_CONFLICTS.md)** - -- **[SUMMARY\_STAT\_DATABASE\_CONFLICTS](SUMMARY_STAT_DATABASE_CONFLICTS.md)** - -- **[GLOBAL\_STAT\_DATABASE\_CONFLICTS](GLOBAL_STAT_DATABASE_CONFLICTS.md)** - -- **[STAT\_XACT\_ALL\_TABLES](STAT_XACT_ALL_TABLES.md)** - -- **[SUMMARY\_STAT\_XACT\_ALL\_TABLES](SUMMARY_STAT_XACT_ALL_TABLES.md)** - -- **[GLOBAL\_STAT\_XACT\_ALL\_TABLES](GLOBAL_STAT_XACT_ALL_TABLES.md)** - -- **[STAT\_XACT\_SYS\_TABLES](STAT_XACT_SYS_TABLES.md)** - -- **[SUMMARY\_STAT\_XACT\_SYS\_TABLES](SUMMARY_STAT_XACT_SYS_TABLES.md)** - -- **[GLOBAL\_STAT\_XACT\_SYS\_TABLES](GLOBAL_STAT_XACT_SYS_TABLES.md)** - -- **[STAT\_XACT\_USER\_TABLES](STAT_XACT_USER_TABLES.md)** - -- **[SUMMARY\_STAT\_XACT\_USER\_TABLES](SUMMARY_STAT_XACT_USER_TABLES.md)** - -- **[GLOBAL\_STAT\_XACT\_USER\_TABLES](GLOBAL_STAT_XACT_USER_TABLES.md)** - -- **[STAT\_XACT\_USER\_FUNCTIONS](STAT_XACT_USER_FUNCTIONS.md)** - -- **[SUMMARY\_STAT\_XACT\_USER\_FUNCTIONS](SUMMARY_STAT_XACT_USER_FUNCTIONS.md)** - -- **[GLOBAL\_STAT\_XACT\_USER\_FUNCTIONS](GLOBAL_STAT_XACT_USER_FUNCTIONS.md)** - -- **[STAT\_BAD\_BLOCK](STAT_BAD_BLOCK.md)** - -- **[SUMMARY\_STAT\_BAD\_BLOCK](SUMMARY_STAT_BAD_BLOCK.md)** - -- **[GLOBAL\_STAT\_BAD\_BLOCK](GLOBAL_STAT_BAD_BLOCK.md)** - -- **[STAT\_USER\_FUNCTIONS](STAT_USER_FUNCTIONS.md)** - -- **[SUMMARY\_STAT\_USER\_FUNCTIONS](SUMMARY_STAT_USER_FUNCTIONS.md)** - -- **[GLOBAL\_STAT\_USER\_FUNCTIONS](GLOBAL_STAT_USER_FUNCTIONS.md)** - - +# Object + +- **[STAT\_USER\_TABLES](STAT_USER_TABLES.md)** + +- **[SUMMARY\_STAT\_USER\_TABLES](SUMMARY_STAT_USER_TABLES.md)** + +- **[GLOBAL\_STAT\_USER\_TABLES](GLOBAL_STAT_USER_TABLES.md)** + +- **[STAT\_USER\_INDEXES](STAT_USER_INDEXES.md)** + +- **[SUMMARY\_STAT\_USER\_INDEXES](SUMMARY_STAT_USER_INDEXES.md)** + +- **[GLOBAL\_STAT\_USER\_INDEXES](GLOBAL_STAT_USER_INDEXES.md)** + +- **[STAT\_SYS\_TABLES](STAT_SYS_TABLES.md)** + +- **[SUMMARY\_STAT\_SYS\_TABLES](SUMMARY_STAT_SYS_TABLES.md)** + +- **[GLOBAL\_STAT\_SYS\_TABLES](GLOBAL_STAT_SYS_TABLES.md)** + +- **[STAT\_SYS\_INDEXES](STAT_SYS_INDEXES.md)** + +- **[SUMMARY\_STAT\_SYS\_INDEXES](SUMMARY_STAT_SYS_INDEXES.md)** + +- **[GLOBAL\_STAT\_SYS\_INDEXES](GLOBAL_STAT_SYS_INDEXES.md)** + +- **[STAT\_ALL\_TABLES](STAT_ALL_TABLES.md)** + +- **[SUMMARY\_STAT\_ALL\_TABLES](SUMMARY_STAT_ALL_TABLES.md)** + +- **[GLOBAL\_STAT\_ALL\_TABLES](GLOBAL_STAT_ALL_TABLES.md)** + +- **[STAT\_ALL\_INDEXES](STAT_ALL_INDEXES.md)** + +- **[SUMMARY\_STAT\_ALL\_INDEXES](SUMMARY_STAT_ALL_INDEXES.md)** + +- **[GLOBAL\_STAT\_ALL\_INDEXES](GLOBAL_STAT_ALL_INDEXES.md)** + +- **[STAT\_DATABASE](STAT_DATABASE.md)** + +- **[SUMMARY\_STAT\_DATABASE](SUMMARY_STAT_DATABASE.md)** + +- **[GLOBAL\_STAT\_DATABASE](GLOBAL_STAT_DATABASE.md)** + +- **[STAT\_DATABASE\_CONFLICTS](STAT_DATABASE_CONFLICTS.md)** + +- **[SUMMARY\_STAT\_DATABASE\_CONFLICTS](SUMMARY_STAT_DATABASE_CONFLICTS.md)** + +- **[GLOBAL\_STAT\_DATABASE\_CONFLICTS](GLOBAL_STAT_DATABASE_CONFLICTS.md)** + +- **[STAT\_XACT\_ALL\_TABLES](STAT_XACT_ALL_TABLES.md)** + +- **[SUMMARY\_STAT\_XACT\_ALL\_TABLES](SUMMARY_STAT_XACT_ALL_TABLES.md)** + +- **[GLOBAL\_STAT\_XACT\_ALL\_TABLES](GLOBAL_STAT_XACT_ALL_TABLES.md)** + +- **[STAT\_XACT\_SYS\_TABLES](STAT_XACT_SYS_TABLES.md)** + +- **[SUMMARY\_STAT\_XACT\_SYS\_TABLES](SUMMARY_STAT_XACT_SYS_TABLES.md)** + +- **[GLOBAL\_STAT\_XACT\_SYS\_TABLES](GLOBAL_STAT_XACT_SYS_TABLES.md)** + +- **[STAT\_XACT\_USER\_TABLES](STAT_XACT_USER_TABLES.md)** + +- **[SUMMARY\_STAT\_XACT\_USER\_TABLES](SUMMARY_STAT_XACT_USER_TABLES.md)** + +- **[GLOBAL\_STAT\_XACT\_USER\_TABLES](GLOBAL_STAT_XACT_USER_TABLES.md)** + +- **[STAT\_XACT\_USER\_FUNCTIONS](STAT_XACT_USER_FUNCTIONS.md)** + +- **[SUMMARY\_STAT\_XACT\_USER\_FUNCTIONS](SUMMARY_STAT_XACT_USER_FUNCTIONS.md)** + +- **[GLOBAL\_STAT\_XACT\_USER\_FUNCTIONS](GLOBAL_STAT_XACT_USER_FUNCTIONS.md)** + +- **[STAT\_BAD\_BLOCK](STAT_BAD_BLOCK.md)** + +- **[SUMMARY\_STAT\_BAD\_BLOCK](SUMMARY_STAT_BAD_BLOCK.md)** + +- **[GLOBAL\_STAT\_BAD\_BLOCK](GLOBAL_STAT_BAD_BLOCK.md)** + +- **[STAT\_USER\_FUNCTIONS](STAT_USER_FUNCTIONS.md)** + +- **[SUMMARY\_STAT\_USER\_FUNCTIONS](SUMMARY_STAT_USER_FUNCTIONS.md)** + +- **[GLOBAL\_STAT\_USER\_FUNCTIONS](GLOBAL_STAT_USER_FUNCTIONS.md)** + + diff --git a/content/zh/docs/Developerguide/Operator.md b/content/zh/docs/Developerguide/Operator.md index 4ee33c1c8..6de736cd6 100644 --- a/content/zh/docs/Developerguide/Operator.md +++ b/content/zh/docs/Developerguide/Operator.md @@ -1,15 +1,15 @@ -# Operator - -- **[OPERATOR\_HISTORY\_TABLE](OPERATOR_HISTORY_TABLE.md)** - -- **[OPERATOR\_HISTORY](OPERATOR_HISTORY.md)** - -- **[OPERATOR\_RUNTIME](OPERATOR_RUNTIME.md)** - -- **[GLOBAL\_OPERATOR\_HISTORY](GLOBAL_OPERATOR_HISTORY.md)** - -- **[GLOBAL\_OPERATOR\_HISTORY\_TABLE](GLOBAL_OPERATOR_HISTORY_TABLE.md)** - -- **[GLOBAL\_OPERATOR\_RUNTIME](GLOBAL_OPERATOR_RUNTIME.md)** - - +# Operator + +- **[OPERATOR\_HISTORY\_TABLE](OPERATOR_HISTORY_TABLE.md)** + +- **[OPERATOR\_HISTORY](OPERATOR_HISTORY.md)** + +- **[OPERATOR\_RUNTIME](OPERATOR_RUNTIME.md)** + +- **[GLOBAL\_OPERATOR\_HISTORY](GLOBAL_OPERATOR_HISTORY.md)** + +- **[GLOBAL\_OPERATOR\_HISTORY\_TABLE](GLOBAL_OPERATOR_HISTORY_TABLE.md)** + +- **[GLOBAL\_OPERATOR\_RUNTIME](GLOBAL_OPERATOR_RUNTIME.md)** + + diff --git a/content/zh/docs/Developerguide/PGXC_CLASS.md b/content/zh/docs/Developerguide/PGXC_CLASS.md index 8417363ca..a452bc1e5 100644 --- a/content/zh/docs/Developerguide/PGXC_CLASS.md +++ b/content/zh/docs/Developerguide/PGXC_CLASS.md @@ -1,89 +1,89 @@ -# PGXC\_CLASS - -PGXC\_CLASS系统表存储每张表的复制或分布信息。PGXC\_CLASS系统表仅在分布式场景下有具体含义,openGauss只能查询表定义。 - -**表 1** PGXC\_CLASS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

pcrelid

-

oid

-

表的OID。

-

pclocatortype

-

"char"

-
定位器类型。
  • H:hash
  • G:Range
  • L:List
  • M:Modulo
  • N:Round Robin
  • R:Replication
-
-

pchashalgorithm

-

smallint

-

使用哈希算法分布元组。

-

pchashbuckets

-

smallint

-

哈希容器的值。

-

pgroup

-

name

-

节点群的名称。

-

redistributed

-

"char"

-

表已经完成重分布。

-

redis_order

-

integer

-

重分布的顺序。该值等于0的表在本轮重分布过程中不进行重分布。

-

pcattnum

-

int2vector

-

用作分布键的列标号。

-

nodeoids

-

oidvector_extend

-

表分布的节点OID列表。

-

options

-

text

-

系统内部保留字段,存储扩展状态信息。

-
- +# PGXC\_CLASS + +PGXC\_CLASS系统表存储每张表的复制或分布信息。PGXC\_CLASS系统表仅在分布式场景下有具体含义, openGauss 只能查询表定义。 + +**表 1** PGXC\_CLASS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

pcrelid

+

oid

+

表的 OID 。

+

pclocatortype

+

"char"

+
定位器类型。
  • H:hash
  • G:Range
  • L:List
  • M:Modulo
  • N:Round Robin
  • R:Replication
+
+

pchashalgorithm

+

smallint

+

使用哈希算法分布元组。

+

pchashbuckets

+

smallint

+

哈希容器的值。

+

pgroup

+

name

+

节点群的名称。

+

redistributed

+

"char"

+

表已经完成重分布。

+

redis_order

+

integer

+

重分布的顺序。该值等于 0 的表在本轮重分布过程中不进行重分布。

+

pcattnum

+

int2vector

+

用作分布键的列标号。

+

nodeoids

+

oidvector_extend

+

表分布的节点 OID 列表。

+

options

+

text

+

系统内部保留字段,存储扩展状态信息。

+
+ diff --git a/content/zh/docs/Developerguide/PGXC_GROUP.md b/content/zh/docs/Developerguide/PGXC_GROUP.md index bf6b2cda9..06f464fe2 100644 --- a/content/zh/docs/Developerguide/PGXC_GROUP.md +++ b/content/zh/docs/Developerguide/PGXC_GROUP.md @@ -1,83 +1,83 @@ -# PGXC\_GROUP - -PGXC\_GROUP系统表存储节点组信息。PGXC\_GROUP系统表仅在分布式场景下有具体含义,openGauss只能查询表定义。 - -**表 1** PGXC\_GROUP字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐含字段,必须明确选择)。

-

group_name

-

name

-

节点组名称。

-

in_redistribution

-

"char"

-
是否需要重分布。取值包括n,y,t。
  • n:表示NodeGroup没有再进行重分布。
  • y:表示NodeGroup是重分布过程中的源节点组。
  • t:表示NodeGroup是重分布过程中的目的节点组。
-
-

group_members

-

oidvector_extend

-

节点组的节点OID列表。

-

group_buckets

-

text

-

分布数据桶的集合。

-

is_installation

-

Boolean

-

是否安装子集群。

-
  • t(true):表示安装。
  • f(false):表示不安装。
-

group_acl

-

aclitem[]

-

访问权限。

-

group_kind

-

"char"

-
node group类型,取值包括i, n, v, e。
  • i:表示installation node group。
  • n:表示普通非逻辑集群node group。
  • v:表示逻辑集群node group。
  • e:表示弹性集群。
-
-

group_parent

-

oid

-

如果是子node group,该字段表示父node group的OID,如果是父node group,该字段值为空。

-
+# PGXC\_GROUP + +PGXC\_GROUP系统表存储节点组信息。PGXC\_GROUP系统表仅在分布式场景下有具体含义, openGauss 只能查询表定义。 + +**表 1** PGXC\_GROUP字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐含字段,必须明确选择)。

+

group_name

+

name

+

节点组名称。

+

in_redistribution

+

"char"

+
是否需要重分布。取值包括 n , y , t 。
  • n:表示 NodeGroup 没有再进行重分布。
  • y:表示 NodeGroup 是重分布过程中的源节点组。
  • t:表示 NodeGroup 是重分布过程中的目的节点组。
+
+

group_members

+

oidvector_extend

+

节点组的节点 OID 列表。

+

group_buckets

+

text

+

分布数据桶的集合。

+

is_installation

+

Boolean

+

是否安装子集群。

+
  • t(true):表示安装。
  • f(false):表示不安装。
+

group_acl

+

aclitem[]

+

访问权限。

+

group_kind

+

"char"

+
node group类型,取值包括 i , n , v , e 。
  • i:表示 installation node group 。
  • n:表示普通非逻辑集群 node group 。
  • v:表示逻辑集群 node group 。
  • e:表示弹性集群。
+
+

group_parent

+

oid

+

如果是子 node group ,该字段表示父 node group 的 OID ,如果是父 node group ,该字段值为空。

+
diff --git a/content/zh/docs/Developerguide/PGXC_NODE.md b/content/zh/docs/Developerguide/PGXC_NODE.md index 0c5e99b74..a6376ef7f 100644 --- a/content/zh/docs/Developerguide/PGXC_NODE.md +++ b/content/zh/docs/Developerguide/PGXC_NODE.md @@ -1,143 +1,143 @@ -# PGXC\_NODE - -PGXC\_NODE系统表存储集群节点信息。PGXC\_NODE系统表仅在分布式场景下有具体含义,openGauss只能查询表定义。 - -**表 1** PGXC\_NODE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐含字段,必须明确选择)。

-

node_name

-

name

-

节点名称。

-

node_type

-

"char"

-
节点类型。
  • C:协调节点。
  • D:数据节点。
  • S:数据节点的备节点。
-
-

node_port

-

integer

-

节点的端口号。

-

node_host

-

name

-

节点的主机名称或者IP(如配置为虚拟IP,则为虚拟IP)。

-

node_port1

-

integer

-

复制节点的端口号。

-

node_host1

-

name

-

复制节点的主机名称或者IP(如配置为虚拟IP,则为虚拟IP)。

-

hostis_primary

-

Boolean

-

表明当前节点是否发生主备切换。

-
  • t(true):表示发生。
  • f(false):表示不发生。
-

nodeis_primary

-

Boolean

-

在replication表下,是否优选当前节点作为优先执行的节点进行非查询操作。

-
  • t(true):表示优选。
  • f(false):表示不优选。
-

nodeis_preferred

-

Boolean

-

在replication表下,是否优选当前节点作为首选的节点进行查询。

-
  • t(true):表示优选。
  • f(false):表示不优选。
-

node_id

-

integer

-

节点标志符。由node_name经过hash函数计算后得到。

-

sctp_port

-

integer

-

主节点使用TCP代理通信库或SCTP通信库的数据通道侦听端口。

-

control_port

-

integer

-

主节点使用TCP代理通信库或SCTP通信库的控制通道侦听端口。

-

sctp_port1

-

integer

-

备节点使用TCP代理通信库或SCTP通信库的数据通道侦听端口。

-

control_port1

-

integer

-

备节点使用TCP代理通信库或SCTP通信库的控制通道侦听端口。

-

nodeis_central

-

Boolean

-

表明当前节点是否为中心控制节点,只用于CN,对DN无效。

-
  • t(true):表示是。
  • f(false):表示不是。
-

nodeis_active

-

Boolean

-

表明当前节点是否是正常状态,用于标记CN是否被剔除,对DN无效。

-
  • t(true):表示是。
  • f(false):表示不是。
-
- +# PGXC\_NODE + +PGXC\_NODE系统表存储集群节点信息。PGXC\_NODE系统表仅在分布式场景下有具体含义, openGauss 只能查询表定义。 + +**表 1** PGXC\_NODE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐含字段,必须明确选择)。

+

node_name

+

name

+

节点名称。

+

node_type

+

"char"

+
节点类型。
  • C:协调节点。
  • D:数据节点。
  • S:数据节点的备节点。
+
+

node_port

+

integer

+

节点的端口号。

+

node_host

+

name

+

节点的主机名称或者IP(如配置为虚拟 IP ,则为虚拟IP)。

+

node_port1

+

integer

+

复制节点的端口号。

+

node_host1

+

name

+

复制节点的主机名称或者IP(如配置为虚拟 IP ,则为虚拟IP)。

+

hostis_primary

+

Boolean

+

表明当前节点是否发生主备切换。

+
  • t(true):表示发生。
  • f(false):表示不发生。
+

nodeis_primary

+

Boolean

+

在 replication 表下,是否优选当前节点作为优先执行的节点进行非查询操作。

+
  • t(true):表示优选。
  • f(false):表示不优选。
+

nodeis_preferred

+

Boolean

+

在 replication 表下,是否优选当前节点作为首选的节点进行查询。

+
  • t(true):表示优选。
  • f(false):表示不优选。
+

node_id

+

integer

+

节点标志符。由 node_name 经过 hash 函数计算后得到。

+

sctp_port

+

integer

+

主节点使用 TCP 代理通信库或 SCTP 通信库的数据通道侦听端口。

+

control_port

+

integer

+

主节点使用 TCP 代理通信库或 SCTP 通信库的控制通道侦听端口。

+

sctp_port1

+

integer

+

备节点使用 TCP 代理通信库或 SCTP 通信库的数据通道侦听端口。

+

control_port1

+

integer

+

备节点使用 TCP 代理通信库或 SCTP 通信库的控制通道侦听端口。

+

nodeis_central

+

Boolean

+

表明当前节点是否为中心控制节点,只用于 CN ,对 DN 无效。

+
  • t(true):表示是。
  • f(false):表示不是。
+

nodeis_active

+

Boolean

+

表明当前节点是否是正常状态,用于标记 CN 是否被剔除,对 DN 无效。

+
  • t(true):表示是。
  • f(false):表示不是。
+
+ diff --git a/content/zh/docs/Developerguide/PGXC_PREPARED_XACTS.md b/content/zh/docs/Developerguide/PGXC_PREPARED_XACTS.md index 39f4d97a2..da404d849 100644 --- a/content/zh/docs/Developerguide/PGXC_PREPARED_XACTS.md +++ b/content/zh/docs/Developerguide/PGXC_PREPARED_XACTS.md @@ -1,25 +1,25 @@ -# PGXC\_PREPARED\_XACTS - -PGXC\_PREPARED\_XACTS视图显示当前处于prepared阶段的两阶段事务。只有system admin和monitor admin用户有权限查看。 - -**表 1** PGXC\_PREPARED\_XACTS字段 - - - - - - - - - - - - -

名称

-

类型

-

描述

-

pgxc_prepared_xact

-

text

-

查看当前处于prepared阶段的两阶段事务。

-
- +# PGXC\_PREPARED\_XACTS + +PGXC\_PREPARED\_XACTS视图显示当前处于 prepared 阶段的两阶段事务。只有 system admin 和 monitor admin 用户有权限查看。 + +**表 1** PGXC\_PREPARED\_XACTS字段 + + + + + + + + + + + + +

名称

+

类型

+

描述

+

pgxc_prepared_xact

+

text

+

查看当前处于 prepared 阶段的两阶段事务。

+
+ diff --git a/content/zh/docs/Developerguide/PGXC_SLICE.md b/content/zh/docs/Developerguide/PGXC_SLICE.md index 711ad5291..8530bf8bc 100644 --- a/content/zh/docs/Developerguide/PGXC_SLICE.md +++ b/content/zh/docs/Developerguide/PGXC_SLICE.md @@ -1,112 +1,112 @@ -# PGXC\_SLICE - -PGXC\_SLICE表是针对range范围分布和list分布创建的系统表,用来记录分布具体信息,当前不支持range interval自动扩展分片,不过在系统表中预留。 - -PGXC\_SLICE系统表仅在分布式场景下有具体含义,openGauss只能查询表定义。 - -**表 1** PGXC\_SLICE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relname

-

name

-

表名或者分片名,通过type区分

-

type

-

char

-

当为’t’时relname是表名,当为’s’时relname是分片的名字

-

strategy

-

char

-

‘r’:为range分布表

-

‘l’:为list分布表

-

后续interval分片会扩展该值

-

relid

-

oid

-

该tuple隶属的分布表oid

-

referenceoid

-

oid

-

所参考分布表的oid,用于slice reference建表语法

-

sindex

-

int

-

当为list分布表时,表示当前boundary在某个分片内的位置

-

interval

-

text[]

-

预留字段

-

transitboundary

-

text[]

-

预留字段

-

transitno

-

int

-

预留字段

-

nodeoid

-

oid

-

当relname为分片名时,表示该分片的数据存放在哪个DN上,nodeoid表示这个DN的oid

-

boundaries

-

text[]

-

当relname为分片名时,对应该分片的边界值

-

specified

-

boolean

-

当前分片对应的DN是否是用户在DDL中显示指定的

-

sliceorder

-

int

-

用户定义分片的顺序

-
+# PGXC\_SLICE + +PGXC\_SLICE表是针对 range 范围分布和 list 分布创建的系统表,用来记录分布具体信息,当前不支持 range interval 自动扩展分片,不过在系统表中预留。 + +PGXC\_SLICE系统表仅在分布式场景下有具体含义, openGauss 只能查询表定义。 + +**表 1** PGXC\_SLICE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relname

+

name

+

表名或者分片名,通过 type 区分

+

type

+

char

+

当为’t’时 relname 是表名,当为’s’时 relname 是分片的名字

+

strategy

+

char

+

‘r’:为 range 分布表

+

‘l’:为 list 分布表

+

后续 interval 分片会扩展该值

+

relid

+

oid

+

该 tuple 隶属的分布表oid

+

referenceoid

+

oid

+

所参考分布表的 oid ,用于 slice reference 建表语法

+

sindex

+

int

+

当为 list 分布表时,表示当前 boundary 在某个分片内的位置

+

interval

+

text[]

+

预留字段

+

transitboundary

+

text[]

+

预留字段

+

transitno

+

int

+

预留字段

+

nodeoid

+

oid

+

当 relname 为分片名时,表示该分片的数据存放在哪个 DN 上, nodeoid 表示这个 DN 的oid

+

boundaries

+

text[]

+

当 relname 为分片名时,对应该分片的边界值

+

specified

+

boolean

+

当前分片对应的 DN 是否是用户在 DDL 中显示指定的

+

sliceorder

+

int

+

用户定义分片的顺序

+
diff --git a/content/zh/docs/Developerguide/PG_AGGREGATE.md b/content/zh/docs/Developerguide/PG_AGGREGATE.md index a413afdab..429ed4482 100644 --- a/content/zh/docs/Developerguide/PG_AGGREGATE.md +++ b/content/zh/docs/Developerguide/PG_AGGREGATE.md @@ -1,112 +1,112 @@ -# PG\_AGGREGATE - -PG\_AGGREGATE系统表存储与聚集函数有关的信息。PG\_AGGREGATE里的每条记录都是一条pg\_proc里面的记录的扩展。PG\_PROC记录承载该聚集的名称、输入和输出数据类型,以及其它一些和普通函数类似的信息。 - -**表 1** PG\_AGGREGATE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

aggfnoid

-

regproc

-

PG_PROC.proname

-

此聚集函数的PG_PROC proname。

-

aggtransfn

-

regproc

-

PG_PROC.proname

-

转换函数。

-

aggcollectfn

-

regproc

-

PG_PROC.proname

-

收集函数。

-

aggfinalfn

-

regproc

-

PG_PROC.proname

-

最终处理函数(如果没有则为零)。

-

aggsortop

-

oid

-

PG_OPERATOR.oid

-

关联排序操作符(如果没有则为零)。

-

aggtranstype

-

oid

-

PG_TYPE.oid

-

此聚集函数的内部转换(状态)数据的数据类型。

-

可能取值及其含义见于pg_type.h中诸type定义,主要分为多态(isPolymorphicType)和非多态两类。

-

agginitval

-

text

-

-

-

转换状态的初始值。这是一个文本数据域,它包含初始值的外部字符串表现形式。如果数据域是null,则转换状态值从null开始。

-

agginitcollect

-

text

-

-

-

收集状态的初始值。这是一个文本数据域,它包含初始值的外部字符串表现形式。如果数据域是null,则收集状态值从null开始。

-

aggkind

-

"char"

-

-

-
此聚集函数类型:
  • 'n' :表示Normal Agg。
  • 'o' :表示Ordered Set Agg。
-
-

aggnumdirectargs

-

smallint

-

-

-

Ordered Set Agg类型聚集函数的直接参数(非聚集相关参数)数量。对Normal Agg类型聚集函数,该值为0。

-
- +# PG\_AGGREGATE + +PG\_AGGREGATE系统表存储与聚集函数有关的信息。PG\_AGGREGATE里的每条记录都是一条pg\_proc里面的记录的扩展。PG\_PROC记录承载该聚集的名称、输入和输出数据类型,以及其它一些和普通函数类似的信息。 + +**表 1** PG\_AGGREGATE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

aggfnoid

+

regproc

+

PG_PROC.proname

+

此聚集函数的PG_PROC proname。

+

aggtransfn

+

regproc

+

PG_PROC.proname

+

转换函数。

+

aggcollectfn

+

regproc

+

PG_PROC.proname

+

收集函数。

+

aggfinalfn

+

regproc

+

PG_PROC.proname

+

最终处理函数(如果没有则为零)。

+

aggsortop

+

oid

+

PG_OPERATOR.oid

+

关联排序操作符(如果没有则为零)。

+

aggtranstype

+

oid

+

PG_TYPE.oid

+

此聚集函数的内部转换(状态)数据的数据类型。

+

可能取值及其含义见于pg_type.h中诸 type 定义,主要分为多态(isPolymorphicType)和非多态两类。

+

agginitval

+

text

+

-

+

转换状态的初始值。这是一个文本数据域,它包含初始值的外部字符串表现形式。如果数据域是 null ,则转换状态值从 null 开始。

+

agginitcollect

+

text

+

-

+

收集状态的初始值。这是一个文本数据域,它包含初始值的外部字符串表现形式。如果数据域是 null ,则收集状态值从 null 开始。

+

aggkind

+

"char"

+

-

+
此聚集函数类型:
  • 'n' :表示 Normal Agg 。
  • 'o' :表示 Ordered Set Agg 。
+
+

aggnumdirectargs

+

smallint

+

-

+

Ordered Set Agg类型聚集函数的直接参数(非聚集相关参数)数量。对 Normal Agg 类型聚集函数,该值为 0 。

+
+ diff --git a/content/zh/docs/Developerguide/PG_AM.md b/content/zh/docs/Developerguide/PG_AM.md index e0c33425e..1e22ded15 100644 --- a/content/zh/docs/Developerguide/PG_AM.md +++ b/content/zh/docs/Developerguide/PG_AM.md @@ -1,308 +1,308 @@ -# PG\_AM - -PG\_AM系统表存储有关索引访问方法的信息。系统支持的每种索引访问方法都有一行。 - -**表 1** PG\_AM字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

amname

-

name

-

-

-

访问方法的名称。

-

amstrategies

-

smallint

-

-

-

访问方法的操作符策略个数,或者如果访问方法没有一个固定的操作符策略集则为0。

-

amsupport

-

smallint

-

-

-

访问方法的支持过程个数。

-

amcanorder

-

Boolean

-

-

-

这种访问方式是否支持通过索引字段值的命令扫描排序。

-

amcanorderbyop

-

Boolean

-

-

-

这种访问方式是否支持通过索引字段上操作符的结果的命令扫描排序。

-

amcanbackward

-

Boolean

-

-

-

访问方式是否支持向后扫描。

-

amcanunique

-

Boolean

-

-

-

访问方式是否支持唯一索引。

-

amcanmulticol

-

Boolean

-

-

-

访问方式是否支持多字段索引。

-

amoptionalkey

-

Boolean

-

-

-

访问方式是否支持第一个索引字段上没有任何约束的扫描。

-

amsearcharray

-

Boolean

-

-

-

访问方式是否支持ScalarArrayOpExpr搜索。

-

amsearchnulls

-

Boolean

-

-

-

访问方式是否支持IS NULL/NOT NULL搜索。

-

amstorage

-

Boolean

-

-

-

允许索引存储的数据类型与列的数据类型是否不同。

-

amclusterable

-

Boolean

-

-

-

是否允许在一个这种类型的索引上聚簇。

-

ampredlocks

-

Boolean

-

-

-

是否允许这种类型的一个索引管理细粒度的谓词锁定。

-

amkeytype

-

oid

-

PG_TYPE.oid

-

存储在索引里数据的类型,如果不是一个固定的类型则为0。

-

aminsert

-

regproc

-

PG_PROC.proname

-

“插入这个行”函数。

-

ambeginscan

-

regproc

-

PG_PROC.proname

-

“准备索引扫描”函数。

-

amgettuple

-

regproc

-

PG_PROC.proname

-

“下一个有效行”函数,如果没有则为0。

-

amgetbitmap

-

regproc

-

PG_PROC.proname

-

“抓取所有的有效行” 函数,如果没有则为0。

-

amrescan

-

regproc

-

PG_PROC.proname

-

“(重新)开始索引扫描”函数。

-

amendscan

-

regproc

-

PG_PROC.proname

-

“索引扫描后清理” 函数。

-

ammarkpos

-

regproc

-

PG_PROC.proname

-

“标记当前扫描位置”函数。

-

amrestrpos

-

regproc

-

PG_PROC.proname

-

“恢复已标记的扫描位置”函数。

-

ammerge

-

regproc

-

PG_PROC.proname

-

“归并多个索引对象”函数。

-

ambuild

-

regproc

-

PG_PROC.proname

-

“建立新索引”函数。

-

ambuildempty

-

regproc

-

PG_PROC.proname

-

“建立空索引”函数。

-

ambulkdelete

-

regproc

-

PG_PROC.proname

-

批量删除函数。

-

amvacuumcleanup

-

regproc

-

PG_PROC.proname

-

VACUUM后的清理函数。

-

amcanreturn

-

regproc

-

PG_PROC.proname

-

检查是否索引支持唯一索引扫描的函数,如果没有则为0。

-

amcostestimate

-

regproc

-

PG_PROC.proname

-

估计一个索引扫描开销的函数。

-

amoptions

-

regproc

-

PG_PROC.proname

-

为一个索引分析和确认reloptions的函数。

-
- +# PG\_AM + +PG\_AM系统表存储有关索引访问方法的信息。系统支持的每种索引访问方法都有一行。 + +**表 1** PG\_AM字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

amname

+

name

+

-

+

访问方法的名称。

+

amstrategies

+

smallint

+

-

+

访问方法的操作符策略个数,或者如果访问方法没有一个固定的操作符策略集则为 0 。

+

amsupport

+

smallint

+

-

+

访问方法的支持过程个数。

+

amcanorder

+

Boolean

+

-

+

这种访问方式是否支持通过索引字段值的命令扫描排序。

+

amcanorderbyop

+

Boolean

+

-

+

这种访问方式是否支持通过索引字段上操作符的结果的命令扫描排序。

+

amcanbackward

+

Boolean

+

-

+

访问方式是否支持向后扫描。

+

amcanunique

+

Boolean

+

-

+

访问方式是否支持唯一索引。

+

amcanmulticol

+

Boolean

+

-

+

访问方式是否支持多字段索引。

+

amoptionalkey

+

Boolean

+

-

+

访问方式是否支持第一个索引字段上没有任何约束的扫描。

+

amsearcharray

+

Boolean

+

-

+

访问方式是否支持 ScalarArrayOpExpr 搜索。

+

amsearchnulls

+

Boolean

+

-

+

访问方式是否支持IS NULL/NOT NULL搜索。

+

amstorage

+

Boolean

+

-

+

允许索引存储的数据类型与列的数据类型是否不同。

+

amclusterable

+

Boolean

+

-

+

是否允许在一个这种类型的索引上聚簇。

+

ampredlocks

+

Boolean

+

-

+

是否允许这种类型的一个索引管理细粒度的谓词锁定。

+

amkeytype

+

oid

+

PG_TYPE.oid

+

存储在索引里数据的类型,如果不是一个固定的类型则为 0 。

+

aminsert

+

regproc

+

PG_PROC.proname

+

“插入这个行”函数。

+

ambeginscan

+

regproc

+

PG_PROC.proname

+

“准备索引扫描”函数。

+

amgettuple

+

regproc

+

PG_PROC.proname

+

“下一个有效行”函数,如果没有则为 0 。

+

amgetbitmap

+

regproc

+

PG_PROC.proname

+

“抓取所有的有效行” 函数,如果没有则为 0 。

+

amrescan

+

regproc

+

PG_PROC.proname

+

“(重新)开始索引扫描”函数。

+

amendscan

+

regproc

+

PG_PROC.proname

+

“索引扫描后清理” 函数。

+

ammarkpos

+

regproc

+

PG_PROC.proname

+

“标记当前扫描位置”函数。

+

amrestrpos

+

regproc

+

PG_PROC.proname

+

“恢复已标记的扫描位置”函数。

+

ammerge

+

regproc

+

PG_PROC.proname

+

“归并多个索引对象”函数。

+

ambuild

+

regproc

+

PG_PROC.proname

+

“建立新索引”函数。

+

ambuildempty

+

regproc

+

PG_PROC.proname

+

“建立空索引”函数。

+

ambulkdelete

+

regproc

+

PG_PROC.proname

+

批量删除函数。

+

amvacuumcleanup

+

regproc

+

PG_PROC.proname

+

VACUUM后的清理函数。

+

amcanreturn

+

regproc

+

PG_PROC.proname

+

检查是否索引支持唯一索引扫描的函数,如果没有则为 0 。

+

amcostestimate

+

regproc

+

PG_PROC.proname

+

估计一个索引扫描开销的函数。

+

amoptions

+

regproc

+

PG_PROC.proname

+

为一个索引分析和确认 reloptions 的函数。

+
+ diff --git a/content/zh/docs/Developerguide/PG_AMOP.md b/content/zh/docs/Developerguide/PG_AMOP.md index 55ade9e28..ce496c468 100644 --- a/content/zh/docs/Developerguide/PG_AMOP.md +++ b/content/zh/docs/Developerguide/PG_AMOP.md @@ -1,105 +1,105 @@ -# PG\_AMOP - -PG\_AMOP系统表存储有关和访问方法操作符族关联的信息。如果一个操作符是一个操作符族中的成员,则在这个表中会占据一行。一个族成员是一个search操作符或一个ordering操作符。一个操作符可以在多个族中出现,但是不能在一个族中的多个搜索位置或多个排序位置中出现。 - -**表 1** PG\_AMOP字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

amopfamily

-

oid

-

PG_OPFAMILY.oid

-

这个项的操作符族。

-

amoplefttype

-

oid

-

PG_TYPE.oid

-

操作符的左输入类型。可能取值及其描述见于pg_type.h。

-

amoprighttype

-

oid

-

PG_TYPE.oid

-

操作符的右输入类型。可能取值及其描述见于pg_type.h。

-

amopstrategy

-

smallint

-

-

-

操作符策略数。

-

amoppurpose

-

"char"

-

-

-

操作符目的,s为搜索或o为排序。

-

amopopr

-

oid

-

PG_OPERATOR.oid

-

该操作符的OID。

-

amopmethod

-

oid

-

PG_AM.oid

-

索引访问方式操作符族。

-

amopsortfamily

-

oid

-

PG_OPFAMILY.oid

-

如果是一个排序操作符,则为这个项排序所依据的btree操作符族;如果是一个搜索操作符,则为0。

-
- -search操作符表明这个操作符族的一个索引可以被搜索,找到所有满足WHERE indexed\_column operator constant的行。显然,这样的操作符必须返回布尔值,并且它的左输入类型必须匹配索引的字段数据类型。 - -ordering操作符表明这个操作符族的一个索引可以被扫描,返回以ORDER BY indexed\_column operator constant顺序表示的行。这样的操作符可以返回任意可排序的数据类型,它的左输入类型也必须匹配索引的字段数据类型。ORDER BY的确切的语义是由amopsortfamily字段指定的,该字段必须为操作符的返回类型引用一个btree操作符族。 - +# PG\_AMOP + +PG\_AMOP系统表存储有关和访问方法操作符族关联的信息。如果一个操作符是一个操作符族中的成员,则在这个表中会占据一行。一个族成员是一个 search 操作符或一个 ordering 操作符。一个操作符可以在多个族中出现,但是不能在一个族中的多个搜索位置或多个排序位置中出现。 + +**表 1** PG\_AMOP字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

amopfamily

+

oid

+

PG_OPFAMILY.oid

+

这个项的操作符族。

+

amoplefttype

+

oid

+

PG_TYPE.oid

+

操作符的左输入类型。可能取值及其描述见于pg_type.h。

+

amoprighttype

+

oid

+

PG_TYPE.oid

+

操作符的右输入类型。可能取值及其描述见于pg_type.h。

+

amopstrategy

+

smallint

+

-

+

操作符策略数。

+

amoppurpose

+

"char"

+

-

+

操作符目的, s 为搜索或 o 为排序。

+

amopopr

+

oid

+

PG_OPERATOR.oid

+

该操作符的 OID 。

+

amopmethod

+

oid

+

PG_AM.oid

+

索引访问方式操作符族。

+

amopsortfamily

+

oid

+

PG_OPFAMILY.oid

+

如果是一个排序操作符,则为这个项排序所依据的 btree 操作符族;如果是一个搜索操作符,则为 0 。

+
+ +search 操作符表明这个操作符族的一个索引可以被搜索,找到所有满足WHERE indexed\_column operator constant的行。显然,这样的操作符必须返回布尔值,并且它的左输入类型必须匹配索引的字段数据类型。 + +ordering 操作符表明这个操作符族的一个索引可以被扫描,返回以ORDER BY indexed\_column operator constant顺序表示的行。这样的操作符可以返回任意可排序的数据类型,它的左输入类型也必须匹配索引的字段数据类型。 ORDER BY 的确切的语义是由 amopsortfamily 字段指定的,该字段必须为操作符的返回类型引用一个 btree 操作符族。 + diff --git a/content/zh/docs/Developerguide/PG_AMPROC.md b/content/zh/docs/Developerguide/PG_AMPROC.md index 92c429cbc..aa9e6084b 100644 --- a/content/zh/docs/Developerguide/PG_AMPROC.md +++ b/content/zh/docs/Developerguide/PG_AMPROC.md @@ -1,77 +1,77 @@ -# PG\_AMPROC - -PG\_AMPROC系统表存储有关与访问方法操作符族相关联的支持过程的信息。每个属于某个操作符族的支持过程都占有一行。 - -**表 1** PG\_AMPROC字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

amprocfamily

-

oid

-

PG_OPFAMILY.oid

-

该项的操作符族。

-

amproclefttype

-

oid

-

PG_TYPE.oid

-

相关操作符的左输入数据类型。可能取值及其描述见于pg_type.h。

-

amprocrighttype

-

oid

-

PG_TYPE.oid

-

相关操作符的右输入数据类型。可能取值及其描述见于pg_type.h。

-

amprocnum

-

smallint

-

-

-

支持过程编号。

-

amproc

-

regproc

-

PG_PROC

-

.proname

-

过程的OID。

-
- -amproclefttype和amprocrighttype字段的习惯解释,标识一个特定支持过程支持的操作符的左和右输入类型。对于某些访问方式,匹配支持过程本身的输入数据类型,对其他的则不这样。有一个对索引的“缺省”支持过程的概念,amproclefttype和amprocrighttype都等于索引操作符类的opcintype。 - +# PG\_AMPROC + +PG\_AMPROC系统表存储有关与访问方法操作符族相关联的支持过程的信息。每个属于某个操作符族的支持过程都占有一行。 + +**表 1** PG\_AMPROC字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

amprocfamily

+

oid

+

PG_OPFAMILY.oid

+

该项的操作符族。

+

amproclefttype

+

oid

+

PG_TYPE.oid

+

相关操作符的左输入数据类型。可能取值及其描述见于pg_type.h。

+

amprocrighttype

+

oid

+

PG_TYPE.oid

+

相关操作符的右输入数据类型。可能取值及其描述见于pg_type.h。

+

amprocnum

+

smallint

+

-

+

支持过程编号。

+

amproc

+

regproc

+

PG_PROC

+

.proname

+

过程的 OID 。

+
+ +amproclefttype 和 amprocrighttype 字段的习惯解释,标识一个特定支持过程支持的操作符的左和右输入类型。对于某些访问方式,匹配支持过程本身的输入数据类型,对其他的则不这样。有一个对索引的“缺省”支持过程的概念, amproclefttype 和 amprocrighttype 都等于索引操作符类的 opcintype 。 + diff --git a/content/zh/docs/Developerguide/PG_APP_WORKLOADGROUP_MAPPING.md b/content/zh/docs/Developerguide/PG_APP_WORKLOADGROUP_MAPPING.md index 6ecd0c411..3c2bbe68b 100644 --- a/content/zh/docs/Developerguide/PG_APP_WORKLOADGROUP_MAPPING.md +++ b/content/zh/docs/Developerguide/PG_APP_WORKLOADGROUP_MAPPING.md @@ -1,39 +1,39 @@ -# PG\_APP\_WORKLOADGROUP\_MAPPING - -PG\_APP\_WORKLOADGROUP\_MAPPING系统表提供了数据库负载映射组的信息。 - -**表 1** PG\_APP\_WORKLOADGROUP\_MAPPING字段 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

appname

-

name

-

应用名称。

-

workload_gpname

-

name

-

映射到的负载组名称。

-
- +# PG\_APP\_WORKLOADGROUP\_MAPPING + +PG\_APP\_WORKLOADGROUP\_MAPPING系统表提供了数据库负载映射组的信息。 + +**表 1** PG\_APP\_WORKLOADGROUP\_MAPPING字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

appname

+

name

+

应用名称。

+

workload_gpname

+

name

+

映射到的负载组名称。

+
+ diff --git a/content/zh/docs/Developerguide/PG_ATTRDEF.md b/content/zh/docs/Developerguide/PG_ATTRDEF.md index 57ab81559..c8e54286a 100644 --- a/content/zh/docs/Developerguide/PG_ATTRDEF.md +++ b/content/zh/docs/Developerguide/PG_ATTRDEF.md @@ -1,60 +1,60 @@ -# PG\_ATTRDEF - -PG\_ATTRDEF系统表存储列的默认值。 - -**表 1** PG\_ATTRDEF字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

adrelid

-

oid

-

该列的所属表。

-

adnum

-

smallint

-

该列的数目。

-

adbin

-

pg_node_tree

-

字段缺省值或生成表达式的内部表现形式。

-

adsrc

-

text

-

可读缺省值或生成表达式的内部表现形式。

-

adgencol

-

char

-

标识该列是否为生成列。取值为's'表示该列为生成列,取值为'\0'表示该列为普通列,默认值为'\0'。

-
- +# PG\_ATTRDEF + +PG\_ATTRDEF系统表存储列的默认值。 + +**表 1** PG\_ATTRDEF字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

adrelid

+

oid

+

该列的所属表。

+

adnum

+

smallint

+

该列的数目。

+

adbin

+

pg_node_tree

+

字段缺省值或生成表达式的内部表现形式。

+

adsrc

+

text

+

可读缺省值或生成表达式的内部表现形式。

+

adgencol

+

char

+

标识该列是否为生成列。取值为's'表示该列为生成列,取值为'\0'表示该列为普通列,默认值为'\0'。

+
+ diff --git a/content/zh/docs/Developerguide/PG_ATTRIBUTE.md b/content/zh/docs/Developerguide/PG_ATTRIBUTE.md index fc1d5dcaf..c7dd056a9 100644 --- a/content/zh/docs/Developerguide/PG_ATTRIBUTE.md +++ b/content/zh/docs/Developerguide/PG_ATTRIBUTE.md @@ -1,194 +1,194 @@ -# PG\_ATTRIBUTE - -PG\_ATTRIBUTE系统表存储关于表字段的信息。 - -**表 1** PG\_ATTRIBUTE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

attrelid

-

oid

-

此字段所属表。

-

attname

-

name

-

字段名。

-

atttypid

-

oid

-

字段类型。

-

attstattarget

-

integer

-

控制ANALYZE为这个字段积累的统计细节的级别。

-
  • 零值表示不收集统计信息。
  • 负数表示使用系统缺省的统计对象。
  • 正数值的确切信息是和数据类型相关的。
-

对于标量数据类型,ATTSTATTARGET既是要收集的“最常用数值”的目标数目,也是要创建的柱状图的目标数量。

-

attlen

-

smallint

-

是本字段类型的pg_type.typlen的拷贝。

-

attnum

-

smallint

-

字段编号。

-

attndims

-

integer

-

如果该字段是数组,则是维数,否则是0 。

-

attcacheoff

-

integer

-

在磁盘上的时候总是-1,但是如果加载入内存中的行描述器中,它可能会被更新以缓冲在行中字段的偏移量。

-

atttypmod

-

integer

-

记录创建新表时支持的类型特定的数据(比如一个varchar字段的最大长度)。它传递给类型相关的输入和长度转换函数当做第三个参数。其值对那些不需要ATTTYPMOD的类型通常为-1。

-

attbyval

-

Boolean

-

这个字段类型的pg_type.typbyval的拷贝。

-

attstorage

-

"char"

-

这个字段类型的pg_type.typstorage的拷贝。

-

attalign

-

"char"

-

这个字段类型的pg_type.typalign的拷贝。

-

attnotnull

-

Boolean

-

这代表一个非空约束。可以改变这个字段以打开或者关闭这个约束。

-

atthasdef

-

Boolean

-

这个字段有一个缺省值,此时它对应pg_attrdef表里实际定义此值的记录。

-

attisdropped

-

Boolean

-

这个字段已经被删除了,不再有效。一个已经删除的字段物理上仍然存在表中,但会被分析器忽略,因此不能再通过SQL访问。

-

attislocal

-

Boolean

-

这个字段是局部定义在关系中的。请注意一个字段可以同时是局部定义和继承的。

-

attcmprmode

-

tinyint

-
对某一列指定压缩方式。压缩方式包括:
  • ATT_CMPR_NOCOMPRESS。
  • ATT_CMPR_DELTA。
  • ATT_CMPR_DICTIONARY。
  • ATT_CMPR_PREFIX。
  • ATT_CMPR_NUMSTR。
-
-

attinhcount

-

integer

-

这个字段所拥有的直接父表的个数。如果一个字段的父表个数非零,则它就不能被删除或重命名。

-

attcollation

-

oid

-

对此列定义的校对列。

-

attacl

-

aclitem[]

-

列级访问权限控制。

-

attoptions

-

text[]

-

字段属性。目前支持以下两种属性:

-

n_distinct,表示该字段的distinct值数量(不包含字表)

-

n_distinct_inherited,表示该字段的distinct值数量(包含字表)

-

attfdwoptions

-

text[]

-

外表字段属性。当前支持的dist_fdw、file_fdw、log_fdw未使用外表字段属性。

-

attinitdefval

-

bytea

-

存储了此列默认的值表达式。行存表的ADD COLUMN需要使用此字段。

-

attkvtype

-

tinyint

-

对某一列指定key value类型。类型包括:

-

0. ATT_KV_UNDEFINED:默认。

-

1. ATT_KV_TAG:维度。

-

2. ATT_KV_FIELD:指标。

-

3. ATT_KV_TIMETAG:时间列。

-
+# PG\_ATTRIBUTE + +PG\_ATTRIBUTE系统表存储关于表字段的信息。 + +**表 1** PG\_ATTRIBUTE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

attrelid

+

oid

+

此字段所属表。

+

attname

+

name

+

字段名。

+

atttypid

+

oid

+

字段类型。

+

attstattarget

+

integer

+

控制 ANALYZE 为这个字段积累的统计细节的级别。

+
  • 零值表示不收集统计信息。
  • 负数表示使用系统缺省的统计对象。
  • 正数值的确切信息是和数据类型相关的。
+

对于标量数据类型, ATTSTATTARGET 既是要收集的“最常用数值”的目标数目,也是要创建的柱状图的目标数量。

+

attlen

+

smallint

+

是本字段类型的pg_type.typlen的拷贝。

+

attnum

+

smallint

+

字段编号。

+

attndims

+

integer

+

如果该字段是数组,则是维数,否则是 0 。

+

attcacheoff

+

integer

+

在磁盘上的时候总是-1,但是如果加载入内存中的行描述器中,它可能会被更新以缓冲在行中字段的偏移量。

+

atttypmod

+

integer

+

记录创建新表时支持的类型特定的数据(比如一个 varchar 字段的最大长度)。它传递给类型相关的输入和长度转换函数当做第三个参数。其值对那些不需要 ATTTYPMOD 的类型通常为-1。

+

attbyval

+

Boolean

+

这个字段类型的pg_type.typbyval的拷贝。

+

attstorage

+

"char"

+

这个字段类型的pg_type.typstorage的拷贝。

+

attalign

+

"char"

+

这个字段类型的pg_type.typalign的拷贝。

+

attnotnull

+

Boolean

+

这代表一个非空约束。可以改变这个字段以打开或者关闭这个约束。

+

atthasdef

+

Boolean

+

这个字段有一个缺省值,此时它对应 pg_attrdef 表里实际定义此值的记录。

+

attisdropped

+

Boolean

+

这个字段已经被删除了,不再有效。一个已经删除的字段物理上仍然存在表中,但会被分析器忽略,因此不能再通过 SQL 访问。

+

attislocal

+

Boolean

+

这个字段是局部定义在关系中的。请注意一个字段可以同时是局部定义和继承的。

+

attcmprmode

+

tinyint

+
对某一列指定压缩方式。压缩方式包括:
  • ATT_CMPR_NOCOMPRESS。
  • ATT_CMPR_DELTA。
  • ATT_CMPR_DICTIONARY。
  • ATT_CMPR_PREFIX。
  • ATT_CMPR_NUMSTR。
+
+

attinhcount

+

integer

+

这个字段所拥有的直接父表的个数。如果一个字段的父表个数非零,则它就不能被删除或重命名。

+

attcollation

+

oid

+

对此列定义的校对列。

+

attacl

+

aclitem[]

+

列级访问权限控制。

+

attoptions

+

text[]

+

字段属性。目前支持以下两种属性:

+

n_distinct,表示该字段的 distinct 值数量(不包含字表)

+

n_distinct_inherited,表示该字段的 distinct 值数量(包含字表)

+

attfdwoptions

+

text[]

+

外表字段属性。当前支持的dist_fdw、file_fdw、log_fdw未使用外表字段属性。

+

attinitdefval

+

bytea

+

存储了此列默认的值表达式。行存表的 ADD COLUMN 需要使用此字段。

+

attkvtype

+

tinyint

+

对某一列指定 key value 类型。类型包括:

+

0. ATT_KV_UNDEFINED:默认。

+

1. ATT_KV_TAG:维度。

+

2. ATT_KV_FIELD:指标。

+

3. ATT_KV_TIMETAG:时间列。

+
diff --git a/content/zh/docs/Developerguide/PG_AUTHID.md b/content/zh/docs/Developerguide/PG_AUTHID.md index 445861447..9727cc2b5 100644 --- a/content/zh/docs/Developerguide/PG_AUTHID.md +++ b/content/zh/docs/Developerguide/PG_AUTHID.md @@ -1,223 +1,223 @@ -# PG\_AUTHID - -PG\_AUTHID系统表存储有关数据库认证标识符(角色)的信息。角色把“用户”的概念包含在内。一个用户实际上就是一个rolcanlogin标志被设置的角色。任何角色(不管rolcanlogin设置与否)都能够把其他角色作为成员。 - -openGauss中只有一份pg\_authid,不是每个数据库有一份。需要有系统管理员权限才可以访问此系统表。 - -**表 1** PG\_AUTHID字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

rolname

-

name

-

角色名称。

-

rolsuper

-

Boolean

-

角色是否是拥有最高权限的初始系统管理员。

-
  • t(true):表示是。
  • f(false):表示不是。
-

rolinherit

-

Boolean

-

角色是否自动继承其所属角色的权限。

-
  • t(true):表示自动继承。
  • f(false):表示不自动继承。
-

rolcreaterole

-

Boolean

-

角色是否可以创建更多角色。

-
  • t(true):表示可以。
  • f(false):表示不可以。
-

rolcreatedb

-

Boolean

-

角色是否可以创建数据库。

-
  • t(true):表示可以。
  • f(false):表示不可以。
-

rolcatupdate

-

Boolean

-

角色是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。

-
  • t(true):表示可以。
  • f(false):表示不可以。
-

rolcanlogin

-

Boolean

-

角色是否可以登录,也就是说,这个角色可以给予会话认证标识符。

-
  • t(true):表示可以。
  • f(false):表示不可以。
-

rolreplication

-

Boolean

-

角色是否具有复制权限:

-
  • t(true):表示有。
  • f(false):表示没有。
-

rolauditadmin

-

Boolean

-

角色是否具有审计管理员权限:

-
  • t(true):表示有。
  • f(false):表示没有。
-

rolsystemadmin

-

Boolean

-

角色是否具有系统管理员权限:

-
  • t(true):表示有。
  • f(false):表示没有。
-

rolconnlimit

-

integer

-

对于可以登录的角色,限制其最大并发连接数量。

-

-1 表示没有限制。

-

rolpassword

-

text

-

口令(可能是加密的),如果没有口令,则为NULL。

-

rolvalidbegin

-

timestamp with time zone

-

帐户的有效开始时间,如果没有开始时间,则为NULL。

-

rolvaliduntil

-

timestamp with time zone

-

帐户的有效结束时间,如果没有结束时间,则为NULL。

-

rolrespool

-

name

-

用户所能够使用的resource pool。

-

roluseft

-

Boolean

-

角色是否可以操作外表。

-
  • t(true):表示可以。
  • f(false):表示不可以。
-

rolparentid

-

oid

-

用户所在组用户的OID。

-

roltabspace

-

text

-

用户数据表的最大空间限额。

-

rolkind

-

char

-

特殊用户种类,包括私有用户、普通用户。

-

rolnodegroup

-

oid

-

该字段不支持。

-

roltempspace

-

text

-

用户临时表的最大空间限额,单位为K。

-

rolspillspace

-

text

-

用户执行作业时下盘数据的最大空间限额,单位为K。

-

rolexcpdata

-

text

-

用户可以设置的查询规则(当前未使用)。

-

rolmonitoradmin

-

Boolean

-

角色是否具有监控管理员权限:

-
  • t(true):表示有。
  • f(false):表示没有。
-

roloperatoradmin

-

Boolean

-

角色是否具有运维管理员权限:

-
  • t(true):表示有。
  • f(false):表示没有。
-

rolpolicyadmin

-

Boolean

-

角色是否具有安全策略管理员权限:

-
  • t(true):表示有。
  • f(false):表示没有。
-
- +# PG\_AUTHID + +PG\_AUTHID系统表存储有关数据库认证标识符(角色)的信息。角色把“用户”的概念包含在内。一个用户实际上就是一个 rolcanlogin 标志被设置的角色。任何角色(不管 rolcanlogin 设置与否)都能够把其他角色作为成员。 + +openGauss 中只有一份pg\_authid,不是每个数据库有一份。需要有系统管理员权限才可以访问此系统表。 + +**表 1** PG\_AUTHID字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

rolname

+

name

+

角色名称。

+

rolsuper

+

Boolean

+

角色是否是拥有最高权限的初始系统管理员。

+
  • t(true):表示是。
  • f(false):表示不是。
+

rolinherit

+

Boolean

+

角色是否自动继承其所属角色的权限。

+
  • t(true):表示自动继承。
  • f(false):表示不自动继承。
+

rolcreaterole

+

Boolean

+

角色是否可以创建更多角色。

+
  • t(true):表示可以。
  • f(false):表示不可以。
+

rolcreatedb

+

Boolean

+

角色是否可以创建数据库。

+
  • t(true):表示可以。
  • f(false):表示不可以。
+

rolcatupdate

+

Boolean

+

角色是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。

+
  • t(true):表示可以。
  • f(false):表示不可以。
+

rolcanlogin

+

Boolean

+

角色是否可以登录,也就是说,这个角色可以给予会话认证标识符。

+
  • t(true):表示可以。
  • f(false):表示不可以。
+

rolreplication

+

Boolean

+

角色是否具有复制权限:

+
  • t(true):表示有。
  • f(false):表示没有。
+

rolauditadmin

+

Boolean

+

角色是否具有审计管理员权限:

+
  • t(true):表示有。
  • f(false):表示没有。
+

rolsystemadmin

+

Boolean

+

角色是否具有系统管理员权限:

+
  • t(true):表示有。
  • f(false):表示没有。
+

rolconnlimit

+

integer

+

对于可以登录的角色,限制其最大并发连接数量。

+

-1 表示没有限制。

+

rolpassword

+

text

+

口令(可能是加密的),如果没有口令,则为 NULL 。

+

rolvalidbegin

+

timestamp with time zone

+

帐户的有效开始时间,如果没有开始时间,则为 NULL 。

+

rolvaliduntil

+

timestamp with time zone

+

帐户的有效结束时间,如果没有结束时间,则为 NULL 。

+

rolrespool

+

name

+

用户所能够使用的 resource pool 。

+

roluseft

+

Boolean

+

角色是否可以操作外表。

+
  • t(true):表示可以。
  • f(false):表示不可以。
+

rolparentid

+

oid

+

用户所在组用户的 OID 。

+

roltabspace

+

text

+

用户数据表的最大空间限额。

+

rolkind

+

char

+

特殊用户种类,包括私有用户、普通用户。

+

rolnodegroup

+

oid

+

该字段不支持。

+

roltempspace

+

text

+

用户临时表的最大空间限额,单位为 K 。

+

rolspillspace

+

text

+

用户执行作业时下盘数据的最大空间限额,单位为 K 。

+

rolexcpdata

+

text

+

用户可以设置的查询规则(当前未使用)。

+

rolmonitoradmin

+

Boolean

+

角色是否具有监控管理员权限:

+
  • t(true):表示有。
  • f(false):表示没有。
+

roloperatoradmin

+

Boolean

+

角色是否具有运维管理员权限:

+
  • t(true):表示有。
  • f(false):表示没有。
+

rolpolicyadmin

+

Boolean

+

角色是否具有安全策略管理员权限:

+
  • t(true):表示有。
  • f(false):表示没有。
+
+ diff --git a/content/zh/docs/Developerguide/PG_AUTH_HISTORY.md b/content/zh/docs/Developerguide/PG_AUTH_HISTORY.md index ed98612dd..04dc0dff9 100644 --- a/content/zh/docs/Developerguide/PG_AUTH_HISTORY.md +++ b/content/zh/docs/Developerguide/PG_AUTH_HISTORY.md @@ -1,47 +1,47 @@ -# PG\_AUTH\_HISTORY - -PG\_AUTH\_HISTORY系统表记录了角色的认证历史。需要有系统管理员权限才可以访问此系统表。 - -**表 1** PG\_AUTH\_HISTORY字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

roloid

-

oid

-

角色标识。

-

passwordtime

-

timestamp with time zone

-

创建和修改密码的时间。

-

rolpassword

-

text

-

角色密码密文,加密方式由GUC参数password_encryption_type确定。

-
- - +# PG\_AUTH\_HISTORY + +PG\_AUTH\_HISTORY系统表记录了角色的认证历史。需要有系统管理员权限才可以访问此系统表。 + +**表 1** PG\_AUTH\_HISTORY字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

roloid

+

oid

+

角色标识。

+

passwordtime

+

timestamp with time zone

+

创建和修改密码的时间。

+

rolpassword

+

text

+

角色密码密文,加密方式由 GUC 参数password_encryption_type确定。

+
+ + diff --git a/content/zh/docs/Developerguide/PG_AUTH_MEMBERS.md b/content/zh/docs/Developerguide/PG_AUTH_MEMBERS.md index 305037e35..5c0743419 100644 --- a/content/zh/docs/Developerguide/PG_AUTH_MEMBERS.md +++ b/content/zh/docs/Developerguide/PG_AUTH_MEMBERS.md @@ -1,46 +1,46 @@ -# PG\_AUTH\_MEMBERS - -PG\_AUTH\_MEMBERS系统表存储显示角色之间的成员关系。 - -**表 1** PG\_AUTH\_MEMBERS字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

roleid

-

oid

-

拥有成员的角色ID。

-

member

-

oid

-

属于ROLEID角色的一个成员的角色ID。

-

grantor

-

oid

-

赋予此成员关系的角色ID。

-

admin_option

-

Boolean

-

如果MEMBER可以把ROLEID角色的成员关系赋予其他角色,则为真。

-
- +# PG\_AUTH\_MEMBERS + +PG\_AUTH\_MEMBERS系统表存储显示角色之间的成员关系。 + +**表 1** PG\_AUTH\_MEMBERS字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

roleid

+

oid

+

拥有成员的角色 ID 。

+

member

+

oid

+

属于 ROLEID 角色的一个成员的角色 ID 。

+

grantor

+

oid

+

赋予此成员关系的角色 ID 。

+

admin_option

+

Boolean

+

如果 MEMBER 可以把 ROLEID 角色的成员关系赋予其他角色,则为真。

+
+ diff --git a/content/zh/docs/Developerguide/PG_AVAILABLE_EXTENSIONS.md b/content/zh/docs/Developerguide/PG_AVAILABLE_EXTENSIONS.md index 4812c9991..378e04b63 100644 --- a/content/zh/docs/Developerguide/PG_AVAILABLE_EXTENSIONS.md +++ b/content/zh/docs/Developerguide/PG_AVAILABLE_EXTENSIONS.md @@ -1,46 +1,46 @@ -# PG\_AVAILABLE\_EXTENSIONS - -PG\_AVAILABLE\_EXTENSIONS视图显示数据库中某些特性的扩展信息。 - -**表 1** PG\_AVAILABLE\_EXTENSIONS字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

name

-

name

-

扩展名。

-

default_version

-

text

-

缺省版本的名称,如果没有指定则为NULL。

-

installed_version

-

text

-

扩展当前安装版本,如果没有安装任何版本则为NULL。

-

comment

-

text

-

扩展的控制文件中的评论字符串。

-
- +# PG\_AVAILABLE\_EXTENSIONS + +PG\_AVAILABLE\_EXTENSIONS视图显示数据库中某些特性的扩展信息。 + +**表 1** PG\_AVAILABLE\_EXTENSIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

name

+

name

+

扩展名。

+

default_version

+

text

+

缺省版本的名称,如果没有指定则为 NULL 。

+

installed_version

+

text

+

扩展当前安装版本,如果没有安装任何版本则为 NULL 。

+

comment

+

text

+

扩展的控制文件中的评论字符串。

+
+ diff --git a/content/zh/docs/Developerguide/PG_AVAILABLE_EXTENSION_VERSIONS.md b/content/zh/docs/Developerguide/PG_AVAILABLE_EXTENSION_VERSIONS.md index 47e939e8d..dd81d6e95 100644 --- a/content/zh/docs/Developerguide/PG_AVAILABLE_EXTENSION_VERSIONS.md +++ b/content/zh/docs/Developerguide/PG_AVAILABLE_EXTENSION_VERSIONS.md @@ -1,74 +1,74 @@ -# PG\_AVAILABLE\_EXTENSION\_VERSIONS - -PG\_AVAILABLE\_EXTENSION\_VERSIONS视图显示数据库中某些特性的扩展版本信息。 - -**表 1** PG\_AVAILABLE\_EXTENSION\_VERSIONS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

name

-

name

-

扩展名。

-

version

-

text

-

版本名。

-

installed

-

Boolean

-

如果这个扩展的版本是当前已经安装了的则为真。

-

superuser

-

Boolean

-

如果只允许系统管理员安装这个扩展则为真。

-

relocatable

-

Boolean

-

如果扩展可以重新加载到另一个模式则为真。

-

schema

-

name

-

扩展必须安装到的模式名,如果部分或全部可重新定位则为NULL。

-

requires

-

name[]

-

先决条件扩展的名称,如果没有则为NULL。

-

comment

-

text

-

扩展的控制文件中的评论字符串。

-
- +# PG\_AVAILABLE\_EXTENSION\_VERSIONS + +PG\_AVAILABLE\_EXTENSION\_VERSIONS视图显示数据库中某些特性的扩展版本信息。 + +**表 1** PG\_AVAILABLE\_EXTENSION\_VERSIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

name

+

name

+

扩展名。

+

version

+

text

+

版本名。

+

installed

+

Boolean

+

如果这个扩展的版本是当前已经安装了的则为真。

+

superuser

+

Boolean

+

如果只允许系统管理员安装这个扩展则为真。

+

relocatable

+

Boolean

+

如果扩展可以重新加载到另一个模式则为真。

+

schema

+

name

+

扩展必须安装到的模式名,如果部分或全部可重新定位则为 NULL 。

+

requires

+

name[]

+

先决条件扩展的名称,如果没有则为 NULL 。

+

comment

+

text

+

扩展的控制文件中的评论字符串。

+
+ diff --git a/content/zh/docs/Developerguide/PG_CAST.md b/content/zh/docs/Developerguide/PG_CAST.md index 999fc7ca0..e6762baec 100644 --- a/content/zh/docs/Developerguide/PG_CAST.md +++ b/content/zh/docs/Developerguide/PG_CAST.md @@ -1,62 +1,62 @@ -# PG\_CAST - -PG\_CAST系统表存储数据类型之间的转化关系。 - -**表 1** PG\_CAST字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

castsource

-

oid

-

源数据类型的OID。

-

casttarget

-

oid

-

目标数据类型的OID。

-

castfunc

-

oid

-

转化函数的OID。如果为零表明不需要转化函数。

-

castcontext

-

"char"

-
源数据类型和目标数据类型间的转化方式:
  • 'e':表示只能进行显式转化(使用CAST或::语法)。
  • 'i':表示只能进行隐式转化。
  • 'a':表示类型间同时支持隐式和显式转化。
-
-

castmethod

-

"char"

-
转化方法:
  • 'f':使用castfunc字段中指定的函数进行转化。
  • 'b':类型间是二进制强制转化,不使用castfunc。
-
-
- +# PG\_CAST + +PG\_CAST系统表存储数据类型之间的转化关系。 + +**表 1** PG\_CAST字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

castsource

+

oid

+

源数据类型的 OID 。

+

casttarget

+

oid

+

目标数据类型的 OID 。

+

castfunc

+

oid

+

转化函数的 OID 。如果为零表明不需要转化函数。

+

castcontext

+

"char"

+
源数据类型和目标数据类型间的转化方式:
  • 'e':表示只能进行显式转化(使用 CAST 或::语法)。
  • 'i':表示只能进行隐式转化。
  • 'a':表示类型间同时支持隐式和显式转化。
+
+

castmethod

+

"char"

+
转化方法:
  • 'f':使用 castfunc 字段中指定的函数进行转化。
  • 'b':类型间是二进制强制转化,不使用 castfunc 。
+
+
+ diff --git a/content/zh/docs/Developerguide/PG_CLASS.md b/content/zh/docs/Developerguide/PG_CLASS.md index 7858543f4..985f0fc4d 100644 --- a/content/zh/docs/Developerguide/PG_CLASS.md +++ b/content/zh/docs/Developerguide/PG_CLASS.md @@ -1,406 +1,406 @@ -# PG\_CLASS - -PG\_CLASS系统表存储数据库对象信息及其之间的关系。 - -**表 1** PG\_CLASS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

relname

-

name

-

表、索引、视图等对象的名称。

-

relnamespace

-

oid

-

包含这个关系的名称空间的OID。

-

reltype

-

oid

-

对应这个表的行类型的数据类型(索引为零,因为索引没有pg_type记录)。

-

reloftype

-

oid

-

复合类型的OID,0表示其他类型。

-

relowner

-

oid

-

关系所有者。

-

relam

-

oid

-

如果行是索引,则就是所用的访问模式(B-tree、hash等)。

-

relfilenode

-

oid

-

这个关系在磁盘上的文件的名称,如果没有则为0。

-

reltablespace

-

oid

-

这个关系存储所在的表空间。如果为零,则意味着使用该数据库的缺省表空间。如果关系在磁盘上没有文件,则这个字段没有什么意义。

-

relpages

-

double precision

-

以页(大小为BLCKSZ)为单位的此表在磁盘上的大小,它只是优化器用的一个近似值。

-

reltuples

-

double precision

-

表中行的数目,只是优化器使用的一个估计值。

-

relallvisible

-

integer

-

被标识为全可见的表中的页的数量。此字段是优化器用来做SQL执行优化使用的。VACUUM、ANALYZE和一些DDL语句(例如,CREATE INDEX)会引起此字段更新。

-

reltoastrelid

-

oid

-

与此表关联的TOAST表的OID,如果没有则为0。

-

TOAST表在一个从属表里“离线”存储大字段。

-

reltoastidxid

-

oid

-

对于TOAST表是它的索引的OID,如果不是TOAST表则为0。

-

reldeltarelid

-

oid

-

Delta表的OID。

-

Delta表附属于列存表。用于存储数据导入过程中的甩尾数据。

-

reldeltaidx

-

oid

-

Delta表的索引表OID。

-

relcudescrelid

-

oid

-

CU描述表的OID。

-

CU描述表(Desc表)附属于列存表。用于控制表目录中存储数据的可见性。

-

relcudescidx

-

oid

-

CU描述表的索引表OID。

-

relhasindex

-

Boolean

-

如果它是一个表而且至少有(或者最近有过)一个索引,则为真。

-

它是由CREATE INDEX设置的,但DROP INDEX不会立即将它清除。如果VACUUM进程检测一个表没有索引,将会把它将清理relhasindex字段,将值设置为假。

-

relisshared

-

Boolean

-

如果该表在openGauss中由所有数据库共享则为真。只有某些系统表(比如pg_database)是共享的。

-

relpersistence

-

"char"

-
  • p:表示永久表。
  • u:表示非日志表。
  • t:表示临时表。
-

relkind

-

"char"

-
  • r:表示普通表。
  • i:表示索引。
  • I:表示分区表GLOBAL索引。
  • S:表示序列。
  • v:表示视图。
  • c:表示复合类型。
  • t:表示TOAST表。
  • f:表示外表。
  • m:表示物化视图。
-

relnatts

-

smallint

-

关系中用户字段数目(除了系统字段以外)。在pg_attribute里肯定有相同数目对应行。

-

relchecks

-

smallint

-

表里的检查约束的数目;参阅pg_constraint表。

-

relhasoids

-

Boolean

-

如果为关系中每行都生成一个OID则为真。

-

relhaspkey

-

Boolean

-

如果这个表有一个(或者曾经有一个)主键,则为真。

-

relhasrules

-

Boolean

-

如表有规则就为真。是否有规则可参考系统表PG_REWRITE。

-

relhastriggers

-

Boolean

-

True表示表中有触发器,或者曾经有过触发器。系统表pg_trigger中记录了表和视图的触发器。

-

relhassubclass

-

Boolean

-

如果有(或者曾经有)任何继承的子表,为真。

-

relcmprs

-

tinyint

-
表示是否启用表的启用压缩特性。需要特别注意,当且仅当批量插入才会触发压缩,普通的CRUD并不能够触发压缩。
  • 0表示其他不支持压缩的表(主要是指系统表,不支持压缩属性的修改操作)。
  • 1表示表数据的压缩特性为NOCOMPRESS或者无指定关键字。
  • 2表示表数据的压缩特性为COMPRESS。
-
-

relhasclusterkey

-

Boolean

-

是否有局部聚簇存储。

-

relrowmovement

-

Boolean

-
针对分区表进行update操作时,是否允许行迁移。
  • true:表示允许行迁移。
  • false:表示不允许行迁移。
-
-

parttype

-

"char"

-
表或者索引是否具有分区表的性质。
  • p:表示带有分区表性质。
  • n:表示没有分区表特性。
  • v:表示该表为HDFS的Value分区表。
-
-

relfrozenxid

-

xid32

-

该表中所有在这个之前的事务ID已经被一个固定的(“frozen”)事务ID替换。该字段用于跟踪此表是否需要为了防止事务ID重叠(或者允许收缩pg_clog)而进行清理。如果该关系不是表则为零(InvalidTransactionId)。

-

为保持前向兼容,保留此字段,新增relfrozenxid64用于记录此信息。

-

relacl

-

aclitem[]

-

访问权限。

-

查询的回显结果为以下形式:

-
rolename=xxxx/yyyy  --赋予一个角色的权限
-
=xxxx/yyyy  --赋予public的权限
-

xxxx表示赋予的权限,yyyy表示授予这个权限的角色。权限的参数说明请参见表2

-

relreplident

-

"char"

-
逻辑解码中解码列的标识:
  • d = 默认 (主键,如果存在)。
  • n = 无。
  • f = 所有列。
  • i = 索引的indisreplident被设置或者为默认。
-
-

relfrozenxid64

-

xid

-

该表中所有在这个之前的事务ID已经被一个固定的("frozen")事务ID替换。该字段用于跟踪此表是否需要为了防止事务ID重叠(或者允许收缩pg_clog)而进行清理。如果该关系不是表则为零(InvalidTransactionId)。

-

relbucket

-

oid

-

pg_hashbucket中的桶信息。

-

relbucketkey

-

int2vector

-

哈希分区列号。

-
- - -**表 2** 权限的参数说明 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

参数

-

参数说明

-

r

-

SELECT(读)

-

w

-

UPDATE(写)

-

a

-

INSERT(插入)

-

d

-

DELETE

-

D

-

TRUNCATE

-

x

-

REFERENCES

-

t

-

TRIGGER

-

X

-

EXECUTE

-

U

-

USAGE

-

C

-

CREATE

-

c

-

CONNECT

-

T

-

TEMPORARY

-

A

-

ALTER

-

P

-

DROP

-

m

-

COMMENT

-

i

-

INDEX

-

v

-

VACUUM

-

*

-

给前面权限的授权选项

-
+# PG\_CLASS + +PG\_CLASS系统表存储数据库对象信息及其之间的关系。 + +**表 1** PG\_CLASS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

relname

+

name

+

表、索引、视图等对象的名称。

+

relnamespace

+

oid

+

包含这个关系的名称空间的 OID 。

+

reltype

+

oid

+

对应这个表的行类型的数据类型(索引为零,因为索引没有 pg_type 记录)。

+

reloftype

+

oid

+

复合类型的 OID , 0 表示其他类型。

+

relowner

+

oid

+

关系所有者。

+

relam

+

oid

+

如果行是索引,则就是所用的访问模式(B-tree、hash等)。

+

relfilenode

+

oid

+

这个关系在磁盘上的文件的名称,如果没有则为 0 。

+

reltablespace

+

oid

+

这个关系存储所在的表空间。如果为零,则意味着使用该数据库的缺省表空间。如果关系在磁盘上没有文件,则这个字段没有什么意义。

+

relpages

+

double precision

+

以页(大小为BLCKSZ)为单位的此表在磁盘上的大小,它只是优化器用的一个近似值。

+

reltuples

+

double precision

+

表中行的数目,只是优化器使用的一个估计值。

+

relallvisible

+

integer

+

被标识为全可见的表中的页的数量。此字段是优化器用来做 SQL 执行优化使用的。VACUUM、ANALYZE和一些 DDL 语句(例如,CREATE INDEX)会引起此字段更新。

+

reltoastrelid

+

oid

+

与此表关联的 TOAST 表的 OID ,如果没有则为 0 。

+

TOAST表在一个从属表里“离线”存储大字段。

+

reltoastidxid

+

oid

+

对于 TOAST 表是它的索引的 OID ,如果不是 TOAST 表则为 0 。

+

reldeltarelid

+

oid

+

Delta表的 OID 。

+

Delta表附属于列存表。用于存储数据导入过程中的甩尾数据。

+

reldeltaidx

+

oid

+

Delta表的索引表 OID 。

+

relcudescrelid

+

oid

+

CU描述表的 OID 。

+

CU描述表(Desc表)附属于列存表。用于控制表目录中存储数据的可见性。

+

relcudescidx

+

oid

+

CU描述表的索引表 OID 。

+

relhasindex

+

Boolean

+

如果它是一个表而且至少有(或者最近有过)一个索引,则为真。

+

它是由 CREATE INDEX 设置的,但 DROP INDEX 不会立即将它清除。如果 VACUUM 进程检测一个表没有索引,将会把它将清理 relhasindex 字段,将值设置为假。

+

relisshared

+

Boolean

+

如果该表在openGauss中由所有数据库共享则为真。只有某些系统表(比如pg_database)是共享的。

+

relpersistence

+

"char"

+
  • p:表示永久表。
  • u:表示非日志表。
  • t:表示临时表。
+

relkind

+

"char"

+
  • r:表示普通表。
  • i:表示索引。
  • I:表示分区表 GLOBAL 索引。
  • S:表示序列。
  • v:表示视图。
  • c:表示复合类型。
  • t:表示 TOAST 表。
  • f:表示外表。
  • m:表示物化视图。
+

relnatts

+

smallint

+

关系中用户字段数目(除了系统字段以外)。在 pg_attribute 里肯定有相同数目对应行。

+

relchecks

+

smallint

+

表里的检查约束的数目;参阅 pg_constraint 表。

+

relhasoids

+

Boolean

+

如果为关系中每行都生成一个 OID 则为真。

+

relhaspkey

+

Boolean

+

如果这个表有一个(或者曾经有一个)主键,则为真。

+

relhasrules

+

Boolean

+

如表有规则就为真。是否有规则可参考系统表 PG_REWRITE 。

+

relhastriggers

+

Boolean

+

True表示表中有触发器,或者曾经有过触发器。系统表 pg_trigger 中记录了表和视图的触发器。

+

relhassubclass

+

Boolean

+

如果有(或者曾经有)任何继承的子表,为真。

+

relcmprs

+

tinyint

+
表示是否启用表的启用压缩特性。需要特别注意,当且仅当批量插入才会触发压缩,普通的 CRUD 并不能够触发压缩。
  • 0表示其他不支持压缩的表(主要是指系统表,不支持压缩属性的修改操作)。
  • 1表示表数据的压缩特性为 NOCOMPRESS 或者无指定关键字。
  • 2表示表数据的压缩特性为 COMPRESS 。
+
+

relhasclusterkey

+

Boolean

+

是否有局部聚簇存储。

+

relrowmovement

+

Boolean

+
针对分区表进行 update 操作时,是否允许行迁移。
  • true:表示允许行迁移。
  • false:表示不允许行迁移。
+
+

parttype

+

"char"

+
表或者索引是否具有分区表的性质。
  • p:表示带有分区表性质。
  • n:表示没有分区表特性。
  • v:表示该表为 HDFS 的 Value 分区表。
+
+

relfrozenxid

+

xid32

+

该表中所有在这个之前的事务 ID 已经被一个固定的(“frozen”)事务 ID 替换。该字段用于跟踪此表是否需要为了防止事务 ID 重叠(或者允许收缩pg_clog)而进行清理。如果该关系不是表则为零(InvalidTransactionId)。

+

为保持前向兼容,保留此字段,新增 relfrozenxid64 用于记录此信息。

+

relacl

+

aclitem[]

+

访问权限。

+

查询的回显结果为以下形式:

+
rolename=xxxx/yyyy  --赋予一个角色的权限
+
=xxxx/yyyy  --赋予 public 的权限
+

xxxx表示赋予的权限, yyyy 表示授予这个权限的角色。权限的参数说明请参见表2

+

relreplident

+

"char"

+
逻辑解码中解码列的标识:
  • d = 默认 (主键,如果存在)。
  • n = 无。
  • f = 所有列。
  • i = 索引的 indisreplident 被设置或者为默认。
+
+

relfrozenxid64

+

xid

+

该表中所有在这个之前的事务 ID 已经被一个固定的("frozen")事务 ID 替换。该字段用于跟踪此表是否需要为了防止事务 ID 重叠(或者允许收缩pg_clog)而进行清理。如果该关系不是表则为零(InvalidTransactionId)。

+

relbucket

+

oid

+

pg_hashbucket中的桶信息。

+

relbucketkey

+

int2vector

+

哈希分区列号。

+
+ + +**表 2** 权限的参数说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

参数说明

+

r

+

SELECT(读)

+

w

+

UPDATE(写)

+

a

+

INSERT(插入)

+

d

+

DELETE

+

D

+

TRUNCATE

+

x

+

REFERENCES

+

t

+

TRIGGER

+

X

+

EXECUTE

+

U

+

USAGE

+

C

+

CREATE

+

c

+

CONNECT

+

T

+

TEMPORARY

+

A

+

ALTER

+

P

+

DROP

+

m

+

COMMENT

+

i

+

INDEX

+

v

+

VACUUM

+

*

+

给前面权限的授权选项

+
diff --git a/content/zh/docs/Developerguide/PG_COLLATION.md b/content/zh/docs/Developerguide/PG_COLLATION.md index 89ea711ff..c0fc979c1 100644 --- a/content/zh/docs/Developerguide/PG_COLLATION.md +++ b/content/zh/docs/Developerguide/PG_COLLATION.md @@ -1,83 +1,83 @@ -# PG\_COLLATION - -PG\_COLLATION系统表描述可用的排序规则,本质上从一个SQL名称映射到操作系统本地类别。 - -**表 1** PG\_COLLATION字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

collname

-

name

-

-

-

排序规则名(每个名称空间和编码唯一)。

-

collnamespace

-

oid

-

PG_NAMESPACE.oid

-

包含这个排序规则的名称空间的OID。

-

collowner

-

oid

-

PG_AUTHID.oid

-

排序规则的所有者。

-

collencoding

-

integer

-

-

-

排序规则可用的编码,兼容PostgreSQL所有的字符编码类型,如果适用于任意编码为-1。

-

collcollate

-

name

-

-

-

这个排序规则对象的LC_COLLATE。

-

collctype

-

name

-

-

-

这个排序规则对象的LC_CTYPE。

-
- +# PG\_COLLATION + +PG\_COLLATION系统表描述可用的排序规则,本质上从一个 SQL 名称映射到操作系统本地类别。 + +**表 1** PG\_COLLATION字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

collname

+

name

+

-

+

排序规则名(每个名称空间和编码唯一)。

+

collnamespace

+

oid

+

PG_NAMESPACE.oid

+

包含这个排序规则的名称空间的 OID 。

+

collowner

+

oid

+

PG_AUTHID.oid

+

排序规则的所有者。

+

collencoding

+

integer

+

-

+

排序规则可用的编码,兼容 PostgreSQL 所有的字符编码类型,如果适用于任意编码为-1。

+

collcollate

+

name

+

-

+

这个排序规则对象的 LC_COLLATE 。

+

collctype

+

name

+

-

+

这个排序规则对象的 LC_CTYPE 。

+
+ diff --git a/content/zh/docs/Developerguide/PG_COMM_DELAY.md b/content/zh/docs/Developerguide/PG_COMM_DELAY.md index e84d7ed61..842a87b04 100644 --- a/content/zh/docs/Developerguide/PG_COMM_DELAY.md +++ b/content/zh/docs/Developerguide/PG_COMM_DELAY.md @@ -1,69 +1,69 @@ -# PG\_COMM\_DELAY - -PG\_COMM\_DELAY视图展示单个节点的通信库时延状态。 - -**表 1** PG\_COMM\_DELAY字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

节点名称。

-

remote_name

-

text

-

连接对端节点名称。

-

remote_host

-

text

-

连接对端IP地址。

-

stream_num

-

integer

-

当前物理连接使用的stream逻辑连接数量。

-

min_delay

-

integer

-

当前物理连接一分钟内探测到的最小时延,单位微秒。

-
说明:

负数结果无效,请重新等待时延状态更新后再执行。

-
-

average

-

integer

-

当前物理连接一分钟内探测时延的平均值,单位微秒。

-

max_delay

-

integer

-

当前物理连接一分钟内探测到的最大时延,单位微秒。

-
- +# PG\_COMM\_DELAY + +PG\_COMM\_DELAY视图展示单个节点的通信库时延状态。 + +**表 1** PG\_COMM\_DELAY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

节点名称。

+

remote_name

+

text

+

连接对端节点名称。

+

remote_host

+

text

+

连接对端 IP 地址。

+

stream_num

+

integer

+

当前物理连接使用的 stream 逻辑连接数量。

+

min_delay

+

integer

+

当前物理连接一分钟内探测到的最小时延,单位微秒。

+
说明:

负数结果无效,请重新等待时延状态更新后再执行。

+
+

average

+

integer

+

当前物理连接一分钟内探测时延的平均值,单位微秒。

+

max_delay

+

integer

+

当前物理连接一分钟内探测到的最大时延,单位微秒。

+
+ diff --git a/content/zh/docs/Developerguide/PG_COMM_RECV_STREAM.md b/content/zh/docs/Developerguide/PG_COMM_RECV_STREAM.md index 18261b13b..62e17d675 100644 --- a/content/zh/docs/Developerguide/PG_COMM_RECV_STREAM.md +++ b/content/zh/docs/Developerguide/PG_COMM_RECV_STREAM.md @@ -1,138 +1,138 @@ -# PG\_COMM\_RECV\_STREAM - -PG\_COMM\_RECV\_STREAM视图展示节点上所有的通信库接收流状态。 - -**表 1** PG\_COMM\_RECV\_STREAM字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

节点名称。

-

local_tid

-

bigint

-

使用此通信流的线程ID。

-

remote_name

-

text

-

连接对端节点名称。

-

remote_tid

-

bigint

-

连接对端线程ID。

-

idx

-

integer

-

通信对端DN在本DN内的标识编号。

-

sid

-

integer

-

通信流在物理连接中的标识编号。

-

tcp_sock

-

integer

-

通信流所使用的tcp通信socket。

-

state

-

text

-

通信流当前的状态。

-
  • UNKNOWN:表示当前逻辑连接状态未知。
  • READY:表示逻辑连接已就绪。
  • RUN:表示逻辑连接发送报文正常。
  • HOLD:表示逻辑连接发送报文等待中。
  • CLOSED:表示关闭逻辑连接。
  • TO_CLOSED:表示将会关闭逻辑连接。
-

query_id

-

bigint

-

通信流对应的debug_query_id编号。

-

pn_id

-

integer

-

通信流所执行查询的plan_node_id编号。

-

send_smp

-

integer

-

通信流所执行查询send端的smpid编号。

-

recv_smp

-

integer

-

通信流所执行查询recv端的smpid编号。

-

recv_bytes

-

bigint

-

通信流接收的数据总量,单位Byte。

-

time

-

bigint

-

通信流当前生命周期使用时长,单位ms。

-

speed

-

bigint

-

通信流的平均接收速率,单位Byte/s。

-

quota

-

bigint

-

通信流当前的通信配额值,单位Byte。

-

buff_usize

-

bigint

-

通信流当前缓存的数据大小,单位Byte。

-
- +# PG\_COMM\_RECV\_STREAM + +PG\_COMM\_RECV\_STREAM视图展示节点上所有的通信库接收流状态。 + +**表 1** PG\_COMM\_RECV\_STREAM字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

节点名称。

+

local_tid

+

bigint

+

使用此通信流的线程 ID 。

+

remote_name

+

text

+

连接对端节点名称。

+

remote_tid

+

bigint

+

连接对端线程 ID 。

+

idx

+

integer

+

通信对端 DN 在本 DN 内的标识编号。

+

sid

+

integer

+

通信流在物理连接中的标识编号。

+

tcp_sock

+

integer

+

通信流所使用的 tcp 通信 socket 。

+

state

+

text

+

通信流当前的状态。

+
  • UNKNOWN:表示当前逻辑连接状态未知。
  • READY:表示逻辑连接已就绪。
  • RUN:表示逻辑连接发送报文正常。
  • HOLD:表示逻辑连接发送报文等待中。
  • CLOSED:表示关闭逻辑连接。
  • TO_CLOSED:表示将会关闭逻辑连接。
+

query_id

+

bigint

+

通信流对应的 debug_query_id 编号。

+

pn_id

+

integer

+

通信流所执行查询的 plan_node_id 编号。

+

send_smp

+

integer

+

通信流所执行查询 send 端的 smpid 编号。

+

recv_smp

+

integer

+

通信流所执行查询 recv 端的 smpid 编号。

+

recv_bytes

+

bigint

+

通信流接收的数据总量,单位 Byte 。

+

time

+

bigint

+

通信流当前生命周期使用时长,单位 ms 。

+

speed

+

bigint

+

通信流的平均接收速率,单位Byte/s。

+

quota

+

bigint

+

通信流当前的通信配额值,单位 Byte 。

+

buff_usize

+

bigint

+

通信流当前缓存的数据大小,单位 Byte 。

+
+ diff --git a/content/zh/docs/Developerguide/PG_COMM_SEND_STREAM.md b/content/zh/docs/Developerguide/PG_COMM_SEND_STREAM.md index c4449677f..3ee94941f 100644 --- a/content/zh/docs/Developerguide/PG_COMM_SEND_STREAM.md +++ b/content/zh/docs/Developerguide/PG_COMM_SEND_STREAM.md @@ -1,138 +1,138 @@ -# PG\_COMM\_SEND\_STREAM - -PG\_COMM\_SEND\_STREAM视图展示节点上所有的通信库发送流状态。 - -**表 1** PG\_COMM\_SEND\_STREAM字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

节点名称。

-

local_tid

-

bigint

-

使用此通信流的线程ID。

-

remote_name

-

text

-

连接对端节点名称。

-

remote_tid

-

bigint

-

连接对端线程ID。

-

idx

-

integer

-

通信对端DN在本DN内的标识编号。

-

sid

-

integer

-

通信流在物理连接中的标识编号。

-

tcp_sock

-

integer

-

通信流所使用的tcp通信socket。

-

state

-

text

-

通信流当前的状态。

-
  • UNKNOWN:表示当前逻辑连接状态未知。
  • READY:表示逻辑连接已就绪。
  • RUN:表示逻辑连接发送报文正常。
  • HOLD:表示逻辑连接发送报文等待中。
  • CLOSED:表示关闭逻辑连接。
  • TO_CLOSED:表示将会关闭逻辑连接。
-

query_id

-

bigint

-

通信流对应的debug_query_id编号。

-

pn_id

-

integer

-

通信流所执行查询的plan_node_id编号。

-

send_smp

-

integer

-

通信流所执行查询send端的smpid编号。

-

recv_smp

-

integer

-

通信流所执行查询recv端的smpid编号。

-

send_bytes

-

bigint

-

通信流发送的数据总量,单位Byte。

-

time

-

bigint

-

通信流当前生命周期使用时长,单位ms。

-

speed

-

bigint

-

通信流的平均发送速率,单位Byte/s。

-

quota

-

bigint

-

通信流当前的通信配额值,单位Byte。

-

wait_quota

-

bigint

-

通信流等待quota值产生的额外时间开销,单位ms。

-
- +# PG\_COMM\_SEND\_STREAM + +PG\_COMM\_SEND\_STREAM视图展示节点上所有的通信库发送流状态。 + +**表 1** PG\_COMM\_SEND\_STREAM字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

节点名称。

+

local_tid

+

bigint

+

使用此通信流的线程 ID 。

+

remote_name

+

text

+

连接对端节点名称。

+

remote_tid

+

bigint

+

连接对端线程 ID 。

+

idx

+

integer

+

通信对端 DN 在本 DN 内的标识编号。

+

sid

+

integer

+

通信流在物理连接中的标识编号。

+

tcp_sock

+

integer

+

通信流所使用的 tcp 通信 socket 。

+

state

+

text

+

通信流当前的状态。

+
  • UNKNOWN:表示当前逻辑连接状态未知。
  • READY:表示逻辑连接已就绪。
  • RUN:表示逻辑连接发送报文正常。
  • HOLD:表示逻辑连接发送报文等待中。
  • CLOSED:表示关闭逻辑连接。
  • TO_CLOSED:表示将会关闭逻辑连接。
+

query_id

+

bigint

+

通信流对应的 debug_query_id 编号。

+

pn_id

+

integer

+

通信流所执行查询的 plan_node_id 编号。

+

send_smp

+

integer

+

通信流所执行查询 send 端的 smpid 编号。

+

recv_smp

+

integer

+

通信流所执行查询 recv 端的 smpid 编号。

+

send_bytes

+

bigint

+

通信流发送的数据总量,单位 Byte 。

+

time

+

bigint

+

通信流当前生命周期使用时长,单位 ms 。

+

speed

+

bigint

+

通信流的平均发送速率,单位Byte/s。

+

quota

+

bigint

+

通信流当前的通信配额值,单位 Byte 。

+

wait_quota

+

bigint

+

通信流等待 quota 值产生的额外时间开销,单位 ms 。

+
+ diff --git a/content/zh/docs/Developerguide/PG_COMM_STATUS.md b/content/zh/docs/Developerguide/PG_COMM_STATUS.md index 2ff0178f6..e482a4914 100644 --- a/content/zh/docs/Developerguide/PG_COMM_STATUS.md +++ b/content/zh/docs/Developerguide/PG_COMM_STATUS.md @@ -1,109 +1,109 @@ -# PG\_COMM\_STATUS - -PG\_COMM\_STATUS视图展示节点的通信库状态。 - -**表 1** PG\_COMM\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

节点名称。

-

rxpck_rate

-

integer

-

节点通信库接收速率,单位Byte/s。

-

txpck_rate

-

integer

-

节点通信库发送速率,单位Byte/s。

-

rxkB_rate

-

bigint

-

bigint节点通信库接收速率,单位KByte/s。

-

txkB_rate

-

bigint

-

bigint节点通信库发送速率,单位KByte/s。

-

buffer

-

bigint

-

cmailbox的buffer大小。

-

memKB_libcomm

-

bigint

-

libcomm进程通信内存大小,单位Byte。

-

memKB_libpq

-

bigint

-

libpq进程通信内存大小,单位Byte。

-

used_PM

-

integer

-

postmaster线程实时使用率。

-

used_sflow

-

integer

-

gs_sender_flow_controller线程实时使用率。

-

used_rflow

-

integer

-

gs_receiver_flow_controller线程实时使用率。

-

used_rloop

-

integer

-

多个gs_receivers_loop线程中高的实时使用率。

-

stream

-

integer

-

当前使用的逻辑连接总数。

-
- +# PG\_COMM\_STATUS + +PG\_COMM\_STATUS视图展示节点的通信库状态。 + +**表 1** PG\_COMM\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

节点名称。

+

rxpck_rate

+

integer

+

节点通信库接收速率,单位Byte/s。

+

txpck_rate

+

integer

+

节点通信库发送速率,单位Byte/s。

+

rxkB_rate

+

bigint

+

bigint节点通信库接收速率,单位KByte/s。

+

txkB_rate

+

bigint

+

bigint节点通信库发送速率,单位KByte/s。

+

buffer

+

bigint

+

cmailbox的 buffer 大小。

+

memKB_libcomm

+

bigint

+

libcomm进程通信内存大小,单位 Byte 。

+

memKB_libpq

+

bigint

+

libpq进程通信内存大小,单位 Byte 。

+

used_PM

+

integer

+

postmaster线程实时使用率。

+

used_sflow

+

integer

+

gs_sender_flow_controller线程实时使用率。

+

used_rflow

+

integer

+

gs_receiver_flow_controller线程实时使用率。

+

used_rloop

+

integer

+

多个 gs_receivers_loop 线程中高的实时使用率。

+

stream

+

integer

+

当前使用的逻辑连接总数。

+
+ diff --git a/content/zh/docs/Developerguide/PG_CONSTRAINT.md b/content/zh/docs/Developerguide/PG_CONSTRAINT.md index 4ec2a9dfc..5ba40199a 100644 --- a/content/zh/docs/Developerguide/PG_CONSTRAINT.md +++ b/content/zh/docs/Developerguide/PG_CONSTRAINT.md @@ -1,223 +1,223 @@ -# PG\_CONSTRAINT - -PG\_CONSTRAINT系统表存储表上的检查约束、主键和唯一约束。 - -**表 1** PG\_CONSTRAINT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

conname

-

name

-

约束名称(不一定是唯一的)。

-

connamespace

-

oid

-

包含这个约束的名称空间的OID。

-

contype

-

"char"

-
  • c = 检查约束。
  • p = 主键约束。
  • u = 唯一约束。
  • t = 触发器约束。
-

condeferrable

-

Boolean

-

这个约束是否可以推迟。

-

condeferred

-

Boolean

-

缺省时这个约束是否可以推迟。

-

convalidated

-

Boolean

-

约束是否有效。目前,只有外键和CHECK约束可将其设置为FALSE。

-

conrelid

-

oid

-

这个约束所在的表;如果不是表约束则为0。

-

contypid

-

oid

-

这个约束所在的域;如果不是一个域约束则为0。

-

conindid

-

oid

-

与约束关联的索引ID。

-

confrelid

-

oid

-

如果是外键,则为参考的表;否则为0。

-

confupdtype

-

"char"

-
外键更新动作代码。
  • a = 没动作。
  • r = 限制。
  • c = 级联。
  • n = 设置为null。
  • d = 设置为缺省。
-
-

confdeltype

-

"char"

-
外键删除动作代码。
  • a = 没动作。
  • r = 限制。
  • c = 级联。
  • n = 设置为null。
  • d = 设置为缺省。
-
-

confmatchtype

-

"char"

-
外键匹配类型。
  • f = 全部。
  • p = 部分。
  • u = 未指定(在f的基础上允许匹配NULL值)。
-
-

conislocal

-

Boolean

-

是否是为关系创建的本地约束。

-

coninhcount

-

integer

-

约束直接继承父表的数目。继承父表数非零时,不能删除或重命名该约束。

-

connoinherit

-

Boolean

-

是否可以被继承。

-

consoft

-

Boolean

-

是否为信息约束(Informational Constraint)。

-

conopt

-

Boolean

-

是否使用信息约束优化执行计划。

-

conkey

-

smallint[]

-

如果是表约束,则是约束控制的字段列表。

-

confkey

-

smallint[]

-

如果是一个外键,是参考的字段的列表。

-

conpfeqop

-

oid[]

-

如果是一个外键,是做PK=FK比较的相等操作符ID的列表。

-

conppeqop

-

oid[]

-

如果是一个外键,是做PK=PK比较的相等操作符ID的列表。

-

conffeqop

-

oid[]

-

如果是一个外键,是做FK=FK比较的相等操作符ID的列表。由于当前不支持外键,所以值为空。

-

conexclop

-

oid[]

-

如果是一个排他约束,是列的排他操作符ID列表。

-

conbin

-

pg_node_tree

-

如果是检查约束,那就是其表达式的内部形式。

-

consrc

-

text

-

如果是检查约束,则是表达式的人类可读形式。

-

conincluding

-

smallint[]

-

不用做约束,但是会包含在INDEX中的属性列。

-
- - ->![](public_sys-resources/icon-notice.gif) **须知:** -> ->- consrc在被引用的对象改变之后不会被更新,它不会跟踪字段的名称修改。与其依赖这个字段,最好还是使用pg\_get\_constraintdef\(\)来抽取一个检查约束的定义。 ->- pg\_class.relchecks需要和在此表上为给定关系找到的检查约束的数目一致。 - +# PG\_CONSTRAINT + +PG\_CONSTRAINT系统表存储表上的检查约束、主键和唯一约束。 + +**表 1** PG\_CONSTRAINT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

conname

+

name

+

约束名称(不一定是唯一的)。

+

connamespace

+

oid

+

包含这个约束的名称空间的 OID 。

+

contype

+

"char"

+
  • c = 检查约束。
  • p = 主键约束。
  • u = 唯一约束。
  • t = 触发器约束。
+

condeferrable

+

Boolean

+

这个约束是否可以推迟。

+

condeferred

+

Boolean

+

缺省时这个约束是否可以推迟。

+

convalidated

+

Boolean

+

约束是否有效。目前,只有外键和 CHECK 约束可将其设置为 FALSE 。

+

conrelid

+

oid

+

这个约束所在的表;如果不是表约束则为 0 。

+

contypid

+

oid

+

这个约束所在的域;如果不是一个域约束则为 0 。

+

conindid

+

oid

+

与约束关联的索引 ID 。

+

confrelid

+

oid

+

如果是外键,则为参考的表;否则为 0 。

+

confupdtype

+

"char"

+
外键更新动作代码。
  • a = 没动作。
  • r = 限制。
  • c = 级联。
  • n = 设置为 null 。
  • d = 设置为缺省。
+
+

confdeltype

+

"char"

+
外键删除动作代码。
  • a = 没动作。
  • r = 限制。
  • c = 级联。
  • n = 设置为 null 。
  • d = 设置为缺省。
+
+

confmatchtype

+

"char"

+
外键匹配类型。
  • f = 全部。
  • p = 部分。
  • u = 未指定(在 f 的基础上允许匹配 NULL 值)。
+
+

conislocal

+

Boolean

+

是否是为关系创建的本地约束。

+

coninhcount

+

integer

+

约束直接继承父表的数目。继承父表数非零时,不能删除或重命名该约束。

+

connoinherit

+

Boolean

+

是否可以被继承。

+

consoft

+

Boolean

+

是否为信息约束(Informational Constraint)。

+

conopt

+

Boolean

+

是否使用信息约束优化执行计划。

+

conkey

+

smallint[]

+

如果是表约束,则是约束控制的字段列表。

+

confkey

+

smallint[]

+

如果是一个外键,是参考的字段的列表。

+

conpfeqop

+

oid[]

+

如果是一个外键,是做PK=FK比较的相等操作符 ID 的列表。

+

conppeqop

+

oid[]

+

如果是一个外键,是做PK=PK比较的相等操作符 ID 的列表。

+

conffeqop

+

oid[]

+

如果是一个外键,是做FK=FK比较的相等操作符 ID 的列表。由于当前不支持外键,所以值为空。

+

conexclop

+

oid[]

+

如果是一个排他约束,是列的排他操作符 ID 列表。

+

conbin

+

pg_node_tree

+

如果是检查约束,那就是其表达式的内部形式。

+

consrc

+

text

+

如果是检查约束,则是表达式的人类可读形式。

+

conincluding

+

smallint[]

+

不用做约束,但是会包含在 INDEX 中的属性列。

+
+ + +>![](public_sys-resources/icon-notice.gif) **须知:** +> +>- consrc在被引用的对象改变之后不会被更新,它不会跟踪字段的名称修改。与其依赖这个字段,最好还是使用pg\_get\_constraintdef\(\)来抽取一个检查约束的定义。 +>- pg\_class.relchecks需要和在此表上为给定关系找到的检查约束的数目一致。 + diff --git a/content/zh/docs/Developerguide/PG_CONTROL_GROUP_CONFIG.md b/content/zh/docs/Developerguide/PG_CONTROL_GROUP_CONFIG.md index 99c2b2601..9756ae542 100644 --- a/content/zh/docs/Developerguide/PG_CONTROL_GROUP_CONFIG.md +++ b/content/zh/docs/Developerguide/PG_CONTROL_GROUP_CONFIG.md @@ -1,25 +1,25 @@ -# PG\_CONTROL\_GROUP\_CONFIG - -PG\_CONTROL\_GROUP\_CONFIG视图存储系统的控制组配置信息。查询该视图需要sysadmin权限。 - -**表 1** PG\_CONTROL\_GROUP\_CONFIG字段 - - - - - - - - - - - - -

名称

-

类型

-

描述

-

pg_control_group_config

-

text

-

控制组的配置信息。

-
- +# PG\_CONTROL\_GROUP\_CONFIG + +PG\_CONTROL\_GROUP\_CONFIG视图存储系统的控制组配置信息。查询该视图需要 sysadmin 权限。 + +**表 1** PG\_CONTROL\_GROUP\_CONFIG字段 + + + + + + + + + + + + +

名称

+

类型

+

描述

+

pg_control_group_config

+

text

+

控制组的配置信息。

+
+ diff --git a/content/zh/docs/Developerguide/PG_CONVERSION.md b/content/zh/docs/Developerguide/PG_CONVERSION.md index 282fa6138..67b0235cb 100644 --- a/content/zh/docs/Developerguide/PG_CONVERSION.md +++ b/content/zh/docs/Developerguide/PG_CONVERSION.md @@ -1,92 +1,92 @@ -# PG\_CONVERSION - -PG\_CONVERSION系统表描述编码转换信息。 - -**表 1** PG\_CONVERSION字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

conname

-

name

-

-

-

转换名称(在一个名称空间里是唯一的)。

-

connamespace

-

oid

-

PG_NAMESPACE.oid

-

包含这个转换的名称空间的OID。

-

conowner

-

oid

-

PG_AUTHID.oid

-

编码转换的属主。

-

conforencoding

-

integer

-

-

-

源编码ID。

-

contoencoding

-

integer

-

-

-

目的编码ID。

-

conproc

-

regproc

-

PG_PROC.proname

-

转换过程。

-

condefault

-

Boolean

-

-

-

如果这是缺省转换则为真。

-
- +# PG\_CONVERSION + +PG\_CONVERSION系统表描述编码转换信息。 + +**表 1** PG\_CONVERSION字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

conname

+

name

+

-

+

转换名称(在一个名称空间里是唯一的)。

+

connamespace

+

oid

+

PG_NAMESPACE.oid

+

包含这个转换的名称空间的 OID 。

+

conowner

+

oid

+

PG_AUTHID.oid

+

编码转换的属主。

+

conforencoding

+

integer

+

-

+

源编码 ID 。

+

contoencoding

+

integer

+

-

+

目的编码 ID 。

+

conproc

+

regproc

+

PG_PROC.proname

+

转换过程。

+

condefault

+

Boolean

+

-

+

如果这是缺省转换则为真。

+
+ diff --git a/content/zh/docs/Developerguide/PG_CURSORS.md b/content/zh/docs/Developerguide/PG_CURSORS.md index 89e6932bb..8799c0281 100644 --- a/content/zh/docs/Developerguide/PG_CURSORS.md +++ b/content/zh/docs/Developerguide/PG_CURSORS.md @@ -1,60 +1,60 @@ -# PG\_CURSORS - -PG\_CURSORS视图列出了当前可用的游标。 - -**表 1** PG\_CURSORS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

name

-

text

-

游标名。

-

statement

-

text

-

声明改游标时的查询语句。

-

is_holdable

-

Boolean

-

如果该游标是持久的(就是在声明该游标的事务结束后仍然可以访问该游标)则为TRUE,否则为FALSE。

-

is_binary

-

Boolean

-

如果该游标被声明为BINARY则为TRUE,否则为FALSE。

-

is_scrollable

-

Boolean

-

如果该游标可以滚动(就是允许以不连续的方式检索)则为TRUE,否则为FALSE。

-

creation_time

-

timestamp with time zone

-

声明该游标的时间戳。

-
- +# PG\_CURSORS + +PG\_CURSORS视图列出了当前可用的游标。 + +**表 1** PG\_CURSORS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

name

+

text

+

游标名。

+

statement

+

text

+

声明改游标时的查询语句。

+

is_holdable

+

Boolean

+

如果该游标是持久的(就是在声明该游标的事务结束后仍然可以访问该游标)则为 TRUE ,否则为 FALSE 。

+

is_binary

+

Boolean

+

如果该游标被声明为 BINARY 则为 TRUE ,否则为 FALSE 。

+

is_scrollable

+

Boolean

+

如果该游标可以滚动(就是允许以不连续的方式检索)则为 TRUE ,否则为 FALSE 。

+

creation_time

+

timestamp with time zone

+

声明该游标的时间戳。

+
+ diff --git a/content/zh/docs/Developerguide/PG_DATABASE.md b/content/zh/docs/Developerguide/PG_DATABASE.md index 4f034bf2f..71b7e5a42 100644 --- a/content/zh/docs/Developerguide/PG_DATABASE.md +++ b/content/zh/docs/Developerguide/PG_DATABASE.md @@ -1,123 +1,123 @@ -# PG\_DATABASE - -PG\_DATABASE系统表存储关于可用数据库的信息。 - -**表 1** PG\_DATABASE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

datname

-

name

-

数据库名称。

-

datdba

-

oid

-

数据库所有人,通常为其创建者。

-

encoding

-

integer

-

数据库的字符编码方式。

-

datcollate

-

name

-

数据库使用的排序顺序。

-

datctype

-

name

-

数据库使用的字符分类。

-

datistemplate

-

Boolean

-

是否允许作为模板数据库。

-

datallowconn

-

Boolean

-

如果为假,则没有用户可以连接到这个数据库。这个字段用于保护template0数据库不被更改。

-

datconnlimit

-

integer

-

该数据库上允许的最大并发连接数,-1表示无限制。

-

datlastsysoid

-

oid

-

数据库里最后一个系统OID 。

-

datfrozenxid

-

xid32

-

用于跟踪该数据库是否需要为了防止事务ID重叠而进行清理。当前版本该字段已经废弃使用,为保持前向兼容,保留此字段,新增datfrozenxid64用于记录此信息。

-

dattablespace

-

oid

-

数据库的缺省表空间。

-

datcompatibility

-

name

-

数据库兼容模式,当前支持四种兼容模式:A、B、C、PG,分别表示兼容O、MY、TD和POSTGRES。

-

datacl

-

aclitem[]

-

访问权限。

-

datfrozenxid64

-

xid

-

用于跟踪该数据库是否需要为了防止事务ID重叠而进行清理。

-
- +# PG\_DATABASE + +PG\_DATABASE系统表存储关于可用数据库的信息。 + +**表 1** PG\_DATABASE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

datname

+

name

+

数据库名称。

+

datdba

+

oid

+

数据库所有人,通常为其创建者。

+

encoding

+

integer

+

数据库的字符编码方式。

+

datcollate

+

name

+

数据库使用的排序顺序。

+

datctype

+

name

+

数据库使用的字符分类。

+

datistemplate

+

Boolean

+

是否允许作为模板数据库。

+

datallowconn

+

Boolean

+

如果为假,则没有用户可以连接到这个数据库。这个字段用于保护 template0 数据库不被更改。

+

datconnlimit

+

integer

+

该数据库上允许的最大并发连接数,-1表示无限制。

+

datlastsysoid

+

oid

+

数据库里最后一个系统 OID 。

+

datfrozenxid

+

xid32

+

用于跟踪该数据库是否需要为了防止事务 ID 重叠而进行清理。当前版本该字段已经废弃使用,为保持前向兼容,保留此字段,新增 datfrozenxid64 用于记录此信息。

+

dattablespace

+

oid

+

数据库的缺省表空间。

+

datcompatibility

+

name

+

数据库兼容模式,当前支持四种兼容模式:A、B、C、PG,分别表示兼容O、MY、TD和 POSTGRES 。

+

datacl

+

aclitem[]

+

访问权限。

+

datfrozenxid64

+

xid

+

用于跟踪该数据库是否需要为了防止事务 ID 重叠而进行清理。

+
+ diff --git a/content/zh/docs/Developerguide/PG_DB_ROLE_SETTING.md b/content/zh/docs/Developerguide/PG_DB_ROLE_SETTING.md index 1c4a04f98..e6a1a5295 100644 --- a/content/zh/docs/Developerguide/PG_DB_ROLE_SETTING.md +++ b/content/zh/docs/Developerguide/PG_DB_ROLE_SETTING.md @@ -1,41 +1,41 @@ -# PG\_DB\_ROLE\_SETTING - -PG\_DB\_ROLE\_SETTING系统表存储数据库运行时每个角色与数据绑定的配置项的默认值。 - -**表 1** PG\_DB\_ROLE\_SETTING字段 - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

setdatabase

-

oid

-

配置项所对应的数据库,如果未指定数据库,则为0。

-

setrole

-

oid

-

配置项所对应的角色,如果未指定角色,则为0。

-

setconfig

-

text[]

-

运行时配置项的默认值,配置方法参考表2

-
- - +# PG\_DB\_ROLE\_SETTING + +PG\_DB\_ROLE\_SETTING系统表存储数据库运行时每个角色与数据绑定的配置项的默认值。 + +**表 1** PG\_DB\_ROLE\_SETTING字段 + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

setdatabase

+

oid

+

配置项所对应的数据库,如果未指定数据库,则为 0 。

+

setrole

+

oid

+

配置项所对应的角色,如果未指定角色,则为 0 。

+

setconfig

+

text[]

+

运行时配置项的默认值,配置方法参考表2

+
+ + diff --git a/content/zh/docs/Developerguide/PG_DEFAULT_ACL.md b/content/zh/docs/Developerguide/PG_DEFAULT_ACL.md index 073f44e2b..894ae4972 100644 --- a/content/zh/docs/Developerguide/PG_DEFAULT_ACL.md +++ b/content/zh/docs/Developerguide/PG_DEFAULT_ACL.md @@ -1,54 +1,54 @@ -# PG\_DEFAULT\_ACL - -PG\_DEFAULT\_ACL系统表存储为新建对象设置的初始权限。 - -**表 1** PG\_DEFAULT\_ACL字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

defaclrole

-

oid

-

与此权限相关的角色ID。

-

defaclnamespace

-

oid

-

与此权限相关的名称空间,如果没有,则为0。

-

defaclobjtype

-

"char"

-

此权限的对象类型。

-
  • r表示表或视图。
  • S表示序列。
  • f表示函数。
  • T表示类型。
  • K表示客户端主密钥。
  • k表示列加密密钥。
-

defaclacl

-

aclitem[]

-

创建该类型时所拥有的访问权限。

-
- +# PG\_DEFAULT\_ACL + +PG\_DEFAULT\_ACL系统表存储为新建对象设置的初始权限。 + +**表 1** PG\_DEFAULT\_ACL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

defaclrole

+

oid

+

与此权限相关的角色 ID 。

+

defaclnamespace

+

oid

+

与此权限相关的名称空间,如果没有,则为 0 。

+

defaclobjtype

+

"char"

+

此权限的对象类型。

+
  • r表示表或视图。
  • S表示序列。
  • f表示函数。
  • T表示类型。
  • K表示客户端主密钥。
  • k表示列加密密钥。
+

defaclacl

+

aclitem[]

+

创建该类型时所拥有的访问权限。

+
+ diff --git a/content/zh/docs/Developerguide/PG_DEPEND.md b/content/zh/docs/Developerguide/PG_DEPEND.md index ef4742c5a..a01af26c1 100644 --- a/content/zh/docs/Developerguide/PG_DEPEND.md +++ b/content/zh/docs/Developerguide/PG_DEPEND.md @@ -1,93 +1,93 @@ -# PG\_DEPEND - -PG\_DEPEND系统表记录数据库对象之间的依赖关系。这个信息允许DROP命令找出哪些其它对象必须由DROP CASCADE删除,或者是在DROP RESTRICT的情况下避免删除。 - -这个表的功能类似[PG\_SHDEPEND](PG_SHDEPEND.md),用于记录那些在openGauss之间共享的对象之间的依赖性关系。 - -**表 1** PG\_DEPEND字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

classid

-

oid

-

PG_CLASS.oid

-

有依赖对象所在系统表的OID。

-

objid

-

oid

-

任意OID属性

-

指定的依赖对象的OID。

-

objsubid

-

integer

-

-

-

对于表字段,这个是该属性的字段数(objid和classid引用表本身)。对于所有其它对象类型,目前这个字段是0。

-

refclassid

-

oid

-

PG_CLASS.oid

-

被引用对象所在的系统表的OID。

-

refobjid

-

oid

-

任意OID属性

-

指定的被引用对象的OID。

-

refobjsubid

-

integer

-

-

-

对于表字段,这个是该字段的字段号(refobjid和refclassid引用表本身)。对于所有其它对象类型,目前这个字段是0。

-

deptype

-

"char"

-

-

-

一个定义这个依赖关系特定语义的代码。

-
- -在所有情况下,一个PG\_DEPEND记录表示被引用的对象不能在有依赖的对象被删除前删除。不过,这里还有几种由deptype定义的情况: - -- DEPENDENCY\_NORMAL \(n\):独立创建的对象之间的一般关系。有依赖的对象可以在不影响被引用对象的情况下删除。被引用对象只有在声明了CASCADE的情况下删除,这时有依赖的对象也被删除。例子:一个表字段对其数据类型有一般依赖关系。 -- DEPENDENCY\_AUTO \(a\):有依赖对象可以和被引用对象分别删除,并且如果删除了被引用对象则应该被自动删除(不管是RESTRICT或CASCADE模式)。例子:一个表上面的命名约束是在该表上的自动依赖关系,因此如果删除了表,它也会被删除。 -- DEPENDENCY\_INTERNAL \(i\):有依赖的对象是作为被引用对象的一部分创建的,实际上只是它的内部实现的一部分。DROP有依赖对象是不能直接允许的(将告诉用户发出一条删除被引用对象的DROP)。一个对被引用对象的DROP将传播到有依赖对象,不管是否声明了CASCADE。 -- DEPENDENCY\_EXTENSION \(e\):依赖对象是被依赖对象extension的一个成员(请参见[PG\_EXTENSION](PG_EXTENSION.md))。依赖对象只可以通过在被依赖对象上DROP EXTENSION删除。函数上这个依赖类型和内部依赖一样动作,但是它为了清晰和简化gs\_dump保持分开。 -- DEPENDENCY\_PIN \(p\):没有依赖对象;这种类型的记录标志着系统本身依赖于被引用对象,因此这个对象决不能被删除。这种类型的记录只有在initdb的时候创建。有依赖对象的字段里是零。 - +# PG\_DEPEND + +PG\_DEPEND系统表记录数据库对象之间的依赖关系。这个信息允许 DROP 命令找出哪些其它对象必须由 DROP CASCADE 删除,或者是在 DROP RESTRICT 的情况下避免删除。 + +这个表的功能类似[PG\_SHDEPEND](PG_SHDEPEND.md),用于记录那些在 openGauss 之间共享的对象之间的依赖性关系。 + +**表 1** PG\_DEPEND字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

classid

+

oid

+

PG_CLASS.oid

+

有依赖对象所在系统表的 OID 。

+

objid

+

oid

+

任意 OID 属性

+

指定的依赖对象的 OID 。

+

objsubid

+

integer

+

-

+

对于表字段,这个是该属性的字段数(objid和 classid 引用表本身)。对于所有其它对象类型,目前这个字段是 0 。

+

refclassid

+

oid

+

PG_CLASS.oid

+

被引用对象所在的系统表的 OID 。

+

refobjid

+

oid

+

任意 OID 属性

+

指定的被引用对象的 OID 。

+

refobjsubid

+

integer

+

-

+

对于表字段,这个是该字段的字段号(refobjid和 refclassid 引用表本身)。对于所有其它对象类型,目前这个字段是 0 。

+

deptype

+

"char"

+

-

+

一个定义这个依赖关系特定语义的代码。

+
+ +在所有情况下,一个PG\_DEPEND记录表示被引用的对象不能在有依赖的对象被删除前删除。不过,这里还有几种由 deptype 定义的情况: + +- DEPENDENCY\_NORMAL \(n\):独立创建的对象之间的一般关系。有依赖的对象可以在不影响被引用对象的情况下删除。被引用对象只有在声明了 CASCADE 的情况下删除,这时有依赖的对象也被删除。例子:一个表字段对其数据类型有一般依赖关系。 +- DEPENDENCY\_AUTO \(a\):有依赖对象可以和被引用对象分别删除,并且如果删除了被引用对象则应该被自动删除(不管是 RESTRICT 或 CASCADE 模式)。例子:一个表上面的命名约束是在该表上的自动依赖关系,因此如果删除了表,它也会被删除。 +- DEPENDENCY\_INTERNAL \(i\):有依赖的对象是作为被引用对象的一部分创建的,实际上只是它的内部实现的一部分。 DROP 有依赖对象是不能直接允许的(将告诉用户发出一条删除被引用对象的DROP)。一个对被引用对象的 DROP 将传播到有依赖对象,不管是否声明了 CASCADE 。 +- DEPENDENCY\_EXTENSION \(e\):依赖对象是被依赖对象 extension 的一个成员(请参见[PG\_EXTENSION](PG_EXTENSION.md))。依赖对象只可以通过在被依赖对象上 DROP EXTENSION 删除。函数上这个依赖类型和内部依赖一样动作,但是它为了清晰和简化gs\_dump保持分开。 +- DEPENDENCY\_PIN \(p\):没有依赖对象;这种类型的记录标志着系统本身依赖于被引用对象,因此这个对象决不能被删除。这种类型的记录只有在 initdb 的时候创建。有依赖对象的字段里是零。 + diff --git a/content/zh/docs/Developerguide/PG_DESCRIPTION.md b/content/zh/docs/Developerguide/PG_DESCRIPTION.md index d2155d8c7..6ef30cb60 100644 --- a/content/zh/docs/Developerguide/PG_DESCRIPTION.md +++ b/content/zh/docs/Developerguide/PG_DESCRIPTION.md @@ -1,58 +1,58 @@ -# PG\_DESCRIPTION - -PG\_DESCRIPTION系统表可以给每个数据库对象存储一个可选的描述(注释)。许多内置的系统对象的描述提供了PG\_DESCRIPTION的初始内容。 - -这个表的功能类似[PG\_SHDESCRIPTION](PG_SHDESCRIPTION.md),用于记录openGauss范围内共享对象的注释。 - -**表 1** PG\_DESCRIPTION字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

objoid

-

oid

-

任意OID属性

-

这条描述所描述的对象的OID。

-

classoid

-

oid

-

PG_CLASS.oid

-

这个对象出现的系统表的OID。

-

objsubid

-

integer

-

-

-

对于一个表字段的注释,它是字段号(objoid和classoid指向表自身)。对于其它对象类型,它是零。

-

description

-

text

-

-

-

对该对象描述的任意文本。

-
- +# PG\_DESCRIPTION + +PG\_DESCRIPTION系统表可以给每个数据库对象存储一个可选的描述(注释)。许多内置的系统对象的描述提供了PG\_DESCRIPTION的初始内容。 + +这个表的功能类似[PG\_SHDESCRIPTION](PG_SHDESCRIPTION.md),用于记录 openGauss 范围内共享对象的注释。 + +**表 1** PG\_DESCRIPTION字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

objoid

+

oid

+

任意 OID 属性

+

这条描述所描述的对象的 OID 。

+

classoid

+

oid

+

PG_CLASS.oid

+

这个对象出现的系统表的 OID 。

+

objsubid

+

integer

+

-

+

对于一个表字段的注释,它是字段号(objoid和 classoid 指向表自身)。对于其它对象类型,它是零。

+

description

+

text

+

-

+

对该对象描述的任意文本。

+
+ diff --git a/content/zh/docs/Developerguide/PG_DIRECTORY.md b/content/zh/docs/Developerguide/PG_DIRECTORY.md index 2c7949826..bfffe66cb 100644 --- a/content/zh/docs/Developerguide/PG_DIRECTORY.md +++ b/content/zh/docs/Developerguide/PG_DIRECTORY.md @@ -1,53 +1,53 @@ -# PG\_DIRECTORY - -PG\_DIRECTORY系统表用于保存用户添加的directory对象可以通过CREATE DIRECTORY语句向该表中添加记录,目前只有系统管理员用户可以向该表中添加记录。 - -**表 1** PG\_DIRECTORY字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

dirname

-

name

-

目录对象的名称。

-

owner

-

oid

-

目录对象的所有者。

-

dirpath

-

text

-

目录路径。

-

diracl

-

aclitem[]

-

访问权限。

-
- +# PG\_DIRECTORY + +PG\_DIRECTORY系统表用于保存用户添加的 directory 对象可以通过 CREATE DIRECTORY 语句向该表中添加记录,目前只有系统管理员用户可以向该表中添加记录。 + +**表 1** PG\_DIRECTORY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

dirname

+

name

+

目录对象的名称。

+

owner

+

oid

+

目录对象的所有者。

+

dirpath

+

text

+

目录路径。

+

diracl

+

aclitem[]

+

访问权限。

+
+ diff --git a/content/zh/docs/Developerguide/PG_ENUM.md b/content/zh/docs/Developerguide/PG_ENUM.md index ca1918065..8fbba4fbf 100644 --- a/content/zh/docs/Developerguide/PG_ENUM.md +++ b/content/zh/docs/Developerguide/PG_ENUM.md @@ -1,60 +1,60 @@ -# PG\_ENUM - -PG\_ENUM系统表包含显示每个枚举类型值和标签的记录。给定枚举类型的内部表示实际上是PG\_ENUM里面相关行的OID。 - -**表 1** PG\_ENUM字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

enumtypid

-

oid

-

PG_TYPE.oid

-

拥有这个枚举值的pg_type记录的OID。

-

enumsortorder

-

real

-

-

-

这个枚举值在它的枚举类型中的排序位置。

-

enumlabel

-

name

-

-

-

这个枚举值的文本标签。

-
- -PG\_ENUM行的OID跟着一个特殊规则:偶数的OID保证用和它们的枚举类型一样的排序顺序排序。也就是,如果两个偶数OID属于相同的枚举类型,那么较小的OID必须有较小enumsortorder值。奇数OID需要毫无关系的排序顺序。这个规则允许枚举比较例程在许多常见情况下避开目录查找。创建和修改枚举类型的例程只要可能就尝试分配偶数OID给枚举值。 - -当创建了一个枚举类型时,它的成员赋予了排序顺序位置1到n。但是随后添加的成员可能会分配enumsortorder的负值或分数值。对这些值的唯一要求是它们要正确的排序和在每个枚举类型中唯一。 - +# PG\_ENUM + +PG\_ENUM系统表包含显示每个枚举类型值和标签的记录。给定枚举类型的内部表示实际上是PG\_ENUM里面相关行的 OID 。 + +**表 1** PG\_ENUM字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

enumtypid

+

oid

+

PG_TYPE.oid

+

拥有这个枚举值的 pg_type 记录的 OID 。

+

enumsortorder

+

real

+

-

+

这个枚举值在它的枚举类型中的排序位置。

+

enumlabel

+

name

+

-

+

这个枚举值的文本标签。

+
+ +PG\_ENUM行的 OID 跟着一个特殊规则:偶数的 OID 保证用和它们的枚举类型一样的排序顺序排序。也就是,如果两个偶数 OID 属于相同的枚举类型,那么较小的 OID 必须有较小 enumsortorder 值。奇数 OID 需要毫无关系的排序顺序。这个规则允许枚举比较例程在许多常见情况下避开目录查找。创建和修改枚举类型的例程只要可能就尝试分配偶数 OID 给枚举值。 + +当创建了一个枚举类型时,它的成员赋予了排序顺序位置 1 到 n 。但是随后添加的成员可能会分配 enumsortorder 的负值或分数值。对这些值的唯一要求是它们要正确的排序和在每个枚举类型中唯一。 + diff --git a/content/zh/docs/Developerguide/PG_EXTENSION.md b/content/zh/docs/Developerguide/PG_EXTENSION.md index 7febb77ae..6e2b00e73 100644 --- a/content/zh/docs/Developerguide/PG_EXTENSION.md +++ b/content/zh/docs/Developerguide/PG_EXTENSION.md @@ -1,74 +1,74 @@ -# PG\_EXTENSION - -PG\_EXTENSION系统表存储关于所安装扩展的信息。openGauss默认扩展是PLPGSQL和MOT\_FDW。 - -**表 1** PG\_EXTENSION - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

数据库对象id。

-

extname

-

name

-

扩展名。

-

extowner

-

oid

-

扩展的所有者。

-

extnamespace

-

oid

-

扩展导出对象的名称空间。

-

extrelocatable

-

Boolean

-

标识此扩展是否可迁移到其他名称空间,true表示允许。

-

extversion

-

text

-

扩展的版本号。

-

extconfig

-

oid[]

-

扩展的配置信息。

-

extcondition

-

text[]

-

扩展配置信息的过滤条件。

-
- +# PG\_EXTENSION + +PG\_EXTENSION系统表存储关于所安装扩展的信息。 openGauss 默认扩展是 PLPGSQL 和MOT\_FDW。 + +**表 1** PG\_EXTENSION + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

数据库对象 id 。

+

extname

+

name

+

扩展名。

+

extowner

+

oid

+

扩展的所有者。

+

extnamespace

+

oid

+

扩展导出对象的名称空间。

+

extrelocatable

+

Boolean

+

标识此扩展是否可迁移到其他名称空间, true 表示允许。

+

extversion

+

text

+

扩展的版本号。

+

extconfig

+

oid[]

+

扩展的配置信息。

+

extcondition

+

text[]

+

扩展配置信息的过滤条件。

+
+ diff --git a/content/zh/docs/Developerguide/PG_EXTENSION_DATA_SOURCE.md b/content/zh/docs/Developerguide/PG_EXTENSION_DATA_SOURCE.md index 1d19bb73f..46b68c3db 100644 --- a/content/zh/docs/Developerguide/PG_EXTENSION_DATA_SOURCE.md +++ b/content/zh/docs/Developerguide/PG_EXTENSION_DATA_SOURCE.md @@ -1,83 +1,83 @@ -# PG\_EXTENSION\_DATA\_SOURCE - -PG\_EXTENSION\_DATA\_SOURCE系统表存储外部数据源对象的信息。一个外部数据源对象(Data Source)包含了外部数据库的一些口令编码等信息,主要配合Extension Connector使用。 - -**表 1** PG\_EXTENSION\_DATA\_SOURCE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

srcname

-

name

-

-

-

外部数据源对象的名称。

-

srcowner

-

oid

-

PG_AUTHID.oid

-

外部数据源对象的所有者。

-

srctype

-

text

-

-

-

外部数据源对象的类型,缺省为空。

-

srcversion

-

text

-

-

-

外部数据源对象的版本,缺省为空。

-

srcacl

-

aclitem[]

-

-

-

访问权限。

-

srcoptions

-

text[]

-

-

-

外部数据源对象的指定选项,使用“keyword=value”格式的字符串。

-
- +# PG\_EXTENSION\_DATA\_SOURCE + +PG\_EXTENSION\_DATA\_SOURCE系统表存储外部数据源对象的信息。一个外部数据源对象(Data Source)包含了外部数据库的一些口令编码等信息,主要配合 Extension Connector 使用。 + +**表 1** PG\_EXTENSION\_DATA\_SOURCE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

srcname

+

name

+

-

+

外部数据源对象的名称。

+

srcowner

+

oid

+

PG_AUTHID.oid

+

外部数据源对象的所有者。

+

srctype

+

text

+

-

+

外部数据源对象的类型,缺省为空。

+

srcversion

+

text

+

-

+

外部数据源对象的版本,缺省为空。

+

srcacl

+

aclitem[]

+

-

+

访问权限。

+

srcoptions

+

text[]

+

-

+

外部数据源对象的指定选项,使用“keyword=value”格式的字符串。

+
+ diff --git a/content/zh/docs/Developerguide/PG_EXT_STATS.md b/content/zh/docs/Developerguide/PG_EXT_STATS.md index 7f979b3da..7d2a14b99 100644 --- a/content/zh/docs/Developerguide/PG_EXT_STATS.md +++ b/content/zh/docs/Developerguide/PG_EXT_STATS.md @@ -1,140 +1,140 @@ -# PG\_EXT\_STATS - -PG\_EXT\_STATS视图提供对存储在[PG\_STATISTIC\_EXT](PG_STATISTIC_EXT.md)表里面的扩展统计信息的访问。扩展统计信息目前包括多列统计信息。 - -**表 1** PG\_EXT\_STATS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

schemaname

-

name

-

PG_NAMESPACE.nspname

-

包含表的模式名。

-

tablename

-

name

-

PG_CLASS.relname

-

表名。

-

attname

-

int2vector

-

PG_STATISTIC_EXT.stakey

-

统计信息扩展的多列信息。

-

inherited

-

Boolean

-

-

-

如果为真,则包含继承的子列,否则只是指定表的字段。

-

null_frac

-

real

-

-

-

记录中字段组合为空的百分比。

-

avg_width

-

integer

-

-

-

字段组合记录以字节记的平均宽度。

-

n_distinct

-

real

-

-

-
  • 如果大于零,表示字段组合中独立数值的估计数目。
  • 如果小于零,表示独立数值的数目被行数除的负数。
    1. 用负数形式是因为ANALYZE认为独立数值的数目是随着表增长而增长;
    2. 正数的形式用于在字段看上去好像有固定的可能值数目的情况下。比如,-1表示一个字段组合中独立数值的个数和行数相同。
    -
-
  • 如果等于零,表示独立数值的数目未知。
-

n_dndistinct

-

real

-

-

-
标识dn1上字段组合中非NULL数据的唯一值的数目。
  • 如果大于零,表示独立数值的实际数目。
  • 如果小于零,表示独立数值的数目被行数除的负数。(比如,一个字段组合的数值平均出现概率为两次,则可以表示为n_dndistinct=-0.5)。
  • 如果等于零,表示独立数值的数目未知。
-
-

most_common_vals

-

anyarray

-

-

-

一个字段组合里最常用数值的列表。如果该字段组合不存在最常用数值,则为NULL。本列保存的多列常用数值均不为NULL。

-

most_common_freqs

-

real[]

-

-

-

一个最常用数值组合的频率的列表,也就是说,每个出现的次数除以行数。如果most_common_vals是NULL,则为NULL。

-

most_common_vals_null

-

anyarray

-

-

-

一个字段组合里最常用数值的列表。如果该字段组合不存在最常用数值,则为NULL。本列保存的多列常用数值中至少有一个值为NULL。

-

most_common_freqs_null

-

real[]

-

-

-

一个最常用数值组合的频率的列表,也就是说,每个出现的次数除以行数。如果most_common_vals_null是NULL,则为NULL。

-

histogram_bounds

-

anyarray

-

-

-

直方图的边界值列表。

-
- +# PG\_EXT\_STATS + +PG\_EXT\_STATS视图提供对存储在[PG\_STATISTIC\_EXT](PG_STATISTIC_EXT.md)表里面的扩展统计信息的访问。扩展统计信息目前包括多列统计信息。 + +**表 1** PG\_EXT\_STATS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

schemaname

+

name

+

PG_NAMESPACE.nspname

+

包含表的模式名。

+

tablename

+

name

+

PG_CLASS.relname

+

表名。

+

attname

+

int2vector

+

PG_STATISTIC_EXT.stakey

+

统计信息扩展的多列信息。

+

inherited

+

Boolean

+

-

+

如果为真,则包含继承的子列,否则只是指定表的字段。

+

null_frac

+

real

+

-

+

记录中字段组合为空的百分比。

+

avg_width

+

integer

+

-

+

字段组合记录以字节记的平均宽度。

+

n_distinct

+

real

+

-

+
  • 如果大于零,表示字段组合中独立数值的估计数目。
  • 如果小于零,表示独立数值的数目被行数除的负数。
    1. 用负数形式是因为 ANALYZE 认为独立数值的数目是随着表增长而增长;
    2. 正数的形式用于在字段看上去好像有固定的可能值数目的情况下。比如,-1表示一个字段组合中独立数值的个数和行数相同。
    +
+
  • 如果等于零,表示独立数值的数目未知。
+

n_dndistinct

+

real

+

-

+
标识 dn1 上字段组合中非 NULL 数据的唯一值的数目。
  • 如果大于零,表示独立数值的实际数目。
  • 如果小于零,表示独立数值的数目被行数除的负数。(比如,一个字段组合的数值平均出现概率为两次,则可以表示为n_dndistinct=-0.5)。
  • 如果等于零,表示独立数值的数目未知。
+
+

most_common_vals

+

anyarray

+

-

+

一个字段组合里最常用数值的列表。如果该字段组合不存在最常用数值,则为 NULL 。本列保存的多列常用数值均不为 NULL 。

+

most_common_freqs

+

real[]

+

-

+

一个最常用数值组合的频率的列表,也就是说,每个出现的次数除以行数。如果 most_common_vals 是 NULL ,则为 NULL 。

+

most_common_vals_null

+

anyarray

+

-

+

一个字段组合里最常用数值的列表。如果该字段组合不存在最常用数值,则为 NULL 。本列保存的多列常用数值中至少有一个值为 NULL 。

+

most_common_freqs_null

+

real[]

+

-

+

一个最常用数值组合的频率的列表,也就是说,每个出现的次数除以行数。如果 most_common_vals_null 是 NULL ,则为 NULL 。

+

histogram_bounds

+

anyarray

+

-

+

直方图的边界值列表。

+
+ diff --git a/content/zh/docs/Developerguide/PG_FOREIGN_DATA_WRAPPER.md b/content/zh/docs/Developerguide/PG_FOREIGN_DATA_WRAPPER.md index cdbff2a73..4e0cd4b3d 100644 --- a/content/zh/docs/Developerguide/PG_FOREIGN_DATA_WRAPPER.md +++ b/content/zh/docs/Developerguide/PG_FOREIGN_DATA_WRAPPER.md @@ -1,82 +1,82 @@ -# PG\_FOREIGN\_DATA\_WRAPPER - -PG\_FOREIGN\_DATA\_WRAPPER系统表存储外部数据封装器定义。一个外部数据封装器是在外部服务器上驻留外部数据的机制,是可以访问的。 - -**表 1** PG\_FOREIGN\_DATA\_WRAPPER字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

fdwname

-

name

-

-

-

外部数据封装器名。

-

fdwowner

-

oid

-

PG_AUTHID.oid

-

外部数据封装器的所有者。

-

fdwhandler

-

oid

-

PG_PROC.oid

-

引用一个负责为外部数据封装器提供扩展例程的处理函数。如果没有提供处理函数则为零。

-

fdwvalidator

-

oid

-

PG_PROC.oid

-

引用一个验证器函数,这个验证器函数负责验证给予外部数据封装器的选项、外部服务器选项和使用外部数据封装器的用户映射的有效性。如果没有提供验证器函数则为零。

-

fdwacl

-

aclitem[]

-

-

-

访问权限。

-

fdwoptions

-

text[]

-

-

-

外部数据封装器指定选项,使用“keyword=value”格式的字符串。

-
+# PG\_FOREIGN\_DATA\_WRAPPER + +PG\_FOREIGN\_DATA\_WRAPPER系统表存储外部数据封装器定义。一个外部数据封装器是在外部服务器上驻留外部数据的机制,是可以访问的。 + +**表 1** PG\_FOREIGN\_DATA\_WRAPPER字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

fdwname

+

name

+

-

+

外部数据封装器名。

+

fdwowner

+

oid

+

PG_AUTHID.oid

+

外部数据封装器的所有者。

+

fdwhandler

+

oid

+

PG_PROC.oid

+

引用一个负责为外部数据封装器提供扩展例程的处理函数。如果没有提供处理函数则为零。

+

fdwvalidator

+

oid

+

PG_PROC.oid

+

引用一个验证器函数,这个验证器函数负责验证给予外部数据封装器的选项、外部服务器选项和使用外部数据封装器的用户映射的有效性。如果没有提供验证器函数则为零。

+

fdwacl

+

aclitem[]

+

-

+

访问权限。

+

fdwoptions

+

text[]

+

-

+

外部数据封装器指定选项,使用“keyword=value”格式的字符串。

+
diff --git a/content/zh/docs/Developerguide/PG_FOREIGN_SERVER.md b/content/zh/docs/Developerguide/PG_FOREIGN_SERVER.md index 7eccfc791..03f9badf6 100644 --- a/content/zh/docs/Developerguide/PG_FOREIGN_SERVER.md +++ b/content/zh/docs/Developerguide/PG_FOREIGN_SERVER.md @@ -1,92 +1,92 @@ -# PG\_FOREIGN\_SERVER - -PG\_FOREIGN\_SERVER系统表存储外部服务器定义。一个外部服务器描述了一个外部数据源,例如一个远程服务器。外部服务器通过外部数据封装器访问。 - -**表 1** PG\_FOREIGN\_SERVER字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

srvname

-

name

-

-

-

外部服务器名。

-

srvowner

-

oid

-

PG_AUTHID.oid

-

外部服务器的所有者。

-

srvfdw

-

oid

-

PG_FOREIGN_DATA_WRAPPER.oid

-

这个外部服务器的外部数据封装器的OID。

-

srvtype

-

text

-

-

-

服务器的类型(可选)。

-

srvversion

-

text

-

-

-

服务器的版本(可选)。

-

srvacl

-

aclitem[]

-

-

-

访问权限。

-

srvoptions

-

text[]

-

-

-

外部服务器指定选项,使用“keyword=value”格式的字符串。

-
- +# PG\_FOREIGN\_SERVER + +PG\_FOREIGN\_SERVER系统表存储外部服务器定义。一个外部服务器描述了一个外部数据源,例如一个远程服务器。外部服务器通过外部数据封装器访问。 + +**表 1** PG\_FOREIGN\_SERVER字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

srvname

+

name

+

-

+

外部服务器名。

+

srvowner

+

oid

+

PG_AUTHID.oid

+

外部服务器的所有者。

+

srvfdw

+

oid

+

PG_FOREIGN_DATA_WRAPPER.oid

+

这个外部服务器的外部数据封装器的 OID 。

+

srvtype

+

text

+

-

+

服务器的类型(可选)。

+

srvversion

+

text

+

-

+

服务器的版本(可选)。

+

srvacl

+

aclitem[]

+

-

+

访问权限。

+

srvoptions

+

text[]

+

-

+

外部服务器指定选项,使用“keyword=value”格式的字符串。

+
+ diff --git a/content/zh/docs/Developerguide/PG_FOREIGN_TABLE.md b/content/zh/docs/Developerguide/PG_FOREIGN_TABLE.md index 1b9959b20..36d0a8145 100644 --- a/content/zh/docs/Developerguide/PG_FOREIGN_TABLE.md +++ b/content/zh/docs/Developerguide/PG_FOREIGN_TABLE.md @@ -1,47 +1,47 @@ -# PG\_FOREIGN\_TABLE - -PG\_FOREIGN\_TABLE系统表存储外部表的辅助信息。 - -**表 1** PG\_FOREIGN\_TABLE字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

ftrelid

-

oid

-

外部表的ID。

-

ftserver

-

oid

-

外部表的所在服务器。

-

ftwriteonly

-

Boolean

-

外部表是否可写。取值如下:

-
  • t(true):表示可写。
  • f(false):表示不可写。
-

ftoptions

-

text[]

-

外部表的可选项,具体参考CREATE FOREIGN TABLE语法说明。

-
- +# PG\_FOREIGN\_TABLE + +PG\_FOREIGN\_TABLE系统表存储外部表的辅助信息。 + +**表 1** PG\_FOREIGN\_TABLE字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

ftrelid

+

oid

+

外部表的 ID 。

+

ftserver

+

oid

+

外部表的所在服务器。

+

ftwriteonly

+

Boolean

+

外部表是否可写。取值如下:

+
  • t(true):表示可写。
  • f(false):表示不可写。
+

ftoptions

+

text[]

+

外部表的可选项,具体参考 CREATE FOREIGN TABLE 语法说明。

+
+ diff --git a/content/zh/docs/Developerguide/PG_GET_INVALID_BACKENDS.md b/content/zh/docs/Developerguide/PG_GET_INVALID_BACKENDS.md index 2a82c474b..f6431ba27 100644 --- a/content/zh/docs/Developerguide/PG_GET_INVALID_BACKENDS.md +++ b/content/zh/docs/Developerguide/PG_GET_INVALID_BACKENDS.md @@ -1,53 +1,53 @@ -# PG\_GET\_INVALID\_BACKENDS - -PG\_GET\_INVALID\_BACKENDS视图提供显示数据库主节点上连接到当前备机的后台线程信息。 - -**表 1** PG\_GET\_INVALID\_BACKENDS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

pid

-

bigint

-

线程ID。

-

node_name

-

text

-

后台线程中连接的节点信息。

-

dbname

-

name

-

当前连接的数据库。

-

backend_start

-

timestamp with time zone

-

后台线程启动的时间。

-

query

-

text

-

后台线程正在执行的查询语句。

-
- +# PG\_GET\_INVALID\_BACKENDS + +PG\_GET\_INVALID\_BACKENDS视图提供显示数据库主节点上连接到当前备机的后台线程信息。 + +**表 1** PG\_GET\_INVALID\_BACKENDS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

pid

+

bigint

+

线程 ID 。

+

node_name

+

text

+

后台线程中连接的节点信息。

+

dbname

+

name

+

当前连接的数据库。

+

backend_start

+

timestamp with time zone

+

后台线程启动的时间。

+

query

+

text

+

后台线程正在执行的查询语句。

+
+ diff --git a/content/zh/docs/Developerguide/PG_GET_SENDERS_CATCHUP_TIME.md b/content/zh/docs/Developerguide/PG_GET_SENDERS_CATCHUP_TIME.md index 03dd5452d..cf74baeb8 100644 --- a/content/zh/docs/Developerguide/PG_GET_SENDERS_CATCHUP_TIME.md +++ b/content/zh/docs/Developerguide/PG_GET_SENDERS_CATCHUP_TIME.md @@ -1,74 +1,74 @@ -# PG\_GET\_SENDERS\_CATCHUP\_TIME - -PG\_GET\_SENDERS\_CATCHUP\_TIME视图显示数据库节点上当前活跃的主备发送线程的追赶信息。 - -**表 1** PG\_GET\_SENDERS\_CATCHUP\_TIME字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

pid

-

bigint

-

当前sender的线程ID。

-

lwpid

-

integer

-

当前sender的lwpid。

-

local_role

-

text

-

本地的角色。

-

peer_role

-

text

-

对端的角色。

-

state

-

text

-

当前sender的复制状态。

-

type

-

text

-

当前sender的类型。

-

catchup_start

-

timestamp with time zone

-

catchup启动的时间。

-

catchup_end

-

timestamp with time zone

-

catchup结束的时间。

-
- +# PG\_GET\_SENDERS\_CATCHUP\_TIME + +PG\_GET\_SENDERS\_CATCHUP\_TIME视图显示数据库节点上当前活跃的主备发送线程的追赶信息。 + +**表 1** PG\_GET\_SENDERS\_CATCHUP\_TIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

pid

+

bigint

+

当前 sender 的线程 ID 。

+

lwpid

+

integer

+

当前 sender 的 lwpid 。

+

local_role

+

text

+

本地的角色。

+

peer_role

+

text

+

对端的角色。

+

state

+

text

+

当前 sender 的复制状态。

+

type

+

text

+

当前 sender 的类型。

+

catchup_start

+

timestamp with time zone

+

catchup启动的时间。

+

catchup_end

+

timestamp with time zone

+

catchup结束的时间。

+
+ diff --git a/content/zh/docs/Developerguide/PG_GROUP.md b/content/zh/docs/Developerguide/PG_GROUP.md index 652fed32d..e405572ab 100644 --- a/content/zh/docs/Developerguide/PG_GROUP.md +++ b/content/zh/docs/Developerguide/PG_GROUP.md @@ -1,39 +1,39 @@ -# PG\_GROUP - -PG\_GROUP视图查看数据库认证角色及角色之间的成员关系。 - -**表 1** PG\_GROUP字段 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

groname

-

name

-

组的名称。

-

grosysid

-

oid

-

组的ID。

-

grolist

-

oid[]

-

一个数组,包含这个组里面所有角色的ID。

-
- +# PG\_GROUP + +PG\_GROUP视图查看数据库认证角色及角色之间的成员关系。 + +**表 1** PG\_GROUP字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

groname

+

name

+

组的名称。

+

grosysid

+

oid

+

组的 ID 。

+

grolist

+

oid[]

+

一个数组,包含这个组里面所有角色的 ID 。

+
+ diff --git a/content/zh/docs/Developerguide/PG_GTT_ATTACHED_PIDS.md b/content/zh/docs/Developerguide/PG_GTT_ATTACHED_PIDS.md index 87285bf73..9921bd865 100644 --- a/content/zh/docs/Developerguide/PG_GTT_ATTACHED_PIDS.md +++ b/content/zh/docs/Developerguide/PG_GTT_ATTACHED_PIDS.md @@ -1,46 +1,46 @@ -# PG\_GTT\_ATTACHED\_PIDS - -PG\_GTT\_ATTACHED\_PIDS视图查看哪些会话正在使用全局临时表,调用pg\_get\_attached\_pid函数。 - -**表 1** PG\_GTT\_ATTACHED\_PIDS字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

schemaname

-

name

-

schema名称。

-

tablename

-

name

-

全局临时表名称。

-

relid

-

oid

-

全局临时表的oid。

-

pids

-

bigint[]

-

线程pid列表。

-
- +# PG\_GTT\_ATTACHED\_PIDS + +PG\_GTT\_ATTACHED\_PIDS视图查看哪些会话正在使用全局临时表,调用pg\_get\_attached\_pid函数。 + +**表 1** PG\_GTT\_ATTACHED\_PIDS字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

schema名称。

+

tablename

+

name

+

全局临时表名称。

+

relid

+

oid

+

全局临时表的 oid 。

+

pids

+

bigint[]

+

线程 pid 列表。

+
+ diff --git a/content/zh/docs/Developerguide/PG_GTT_RELSTATS.md b/content/zh/docs/Developerguide/PG_GTT_RELSTATS.md index dee9cd6ae..f447d0c7f 100644 --- a/content/zh/docs/Developerguide/PG_GTT_RELSTATS.md +++ b/content/zh/docs/Developerguide/PG_GTT_RELSTATS.md @@ -1,74 +1,74 @@ -# PG\_GTT\_RELSTATS - -PG\_GTT\_RELSTATS视图查看当前会话所有全局临时表基本信息,调用pg\_get\_gtt\_relstats函数。 - -**表 1** PG\_GTT\_RELSTATS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

schemaname

-

name

-

schema名称。

-

tablename

-

name

-

全局临时表名称。

-

relfilenode

-

oid

-

文件对象的ID。

-

relpages

-

integer

-

全局临时表的磁盘页面数。

-

reltuples

-

real

-

全局临时表的记录数。

-

relallvisible

-

integer

-

被标识为全可见的页面数。

-

relfrozenxid

-

xid

-

该表中所有在这个之前的事务ID已经被一个固定的(frozen)事务ID替换。

-

relminmxid

-

xid

-

预留接口,暂未启用。

-
- +# PG\_GTT\_RELSTATS + +PG\_GTT\_RELSTATS视图查看当前会话所有全局临时表基本信息,调用pg\_get\_gtt\_relstats函数。 + +**表 1** PG\_GTT\_RELSTATS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

schema名称。

+

tablename

+

name

+

全局临时表名称。

+

relfilenode

+

oid

+

文件对象的 ID 。

+

relpages

+

integer

+

全局临时表的磁盘页面数。

+

reltuples

+

real

+

全局临时表的记录数。

+

relallvisible

+

integer

+

被标识为全可见的页面数。

+

relfrozenxid

+

xid

+

该表中所有在这个之前的事务 ID 已经被一个固定的(frozen)事务 ID 替换。

+

relminmxid

+

xid

+

预留接口,暂未启用。

+
+ diff --git a/content/zh/docs/Developerguide/PG_GTT_STATS.md b/content/zh/docs/Developerguide/PG_GTT_STATS.md index 7d4cd6453..150a915c3 100644 --- a/content/zh/docs/Developerguide/PG_GTT_STATS.md +++ b/content/zh/docs/Developerguide/PG_GTT_STATS.md @@ -1,116 +1,116 @@ -# PG\_GTT\_STATS - -PG\_GTT\_STATS视图查看当前会话所有全局临时表单列统计信息,调用pg\_get\_gtt\_statistics函数。 - -**表 1** PG\_GTT\_STATS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

schemaname

-

name

-

schema名称。

-

tablename

-

name

-

全局临时表名称。

-

attname

-

name

-

属性名称。

-

inherited

-

boolean

-

是否统计有继承关系的对象。

-

null_frac

-

real

-

该字段中为NULL的记录的比率。

-

avg_width

-

integer

-

非NULL记录的平均存储宽度,以字节计算。

-

n_distinct

-

real

-

标识全局统计信息中字段里唯一的非NULL数据值的数目。

-

most_common_vals

-

text[]

-

高频值列表,按照出现的频率排序。

-

most_common_freqs

-

real[]

-

高频值的频率。

-

histogram_bounds

-

text[]

-

等频直方图描述列中的数据分布(不包含高频值)。

-

correlation

-

real

-

相关系数。

-

most_common_elems

-

text[]

-

类型高频值列表,用于数组类型或一些其他类型。

-

most_common_elem_freqs

-

real[]

-

类型高频值的频率。

-

elem_count_histogram

-

real[]

-

数组类型直方图。

-
- +# PG\_GTT\_STATS + +PG\_GTT\_STATS视图查看当前会话所有全局临时表单列统计信息,调用pg\_get\_gtt\_statistics函数。 + +**表 1** PG\_GTT\_STATS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

schema名称。

+

tablename

+

name

+

全局临时表名称。

+

attname

+

name

+

属性名称。

+

inherited

+

boolean

+

是否统计有继承关系的对象。

+

null_frac

+

real

+

该字段中为 NULL 的记录的比率。

+

avg_width

+

integer

+

非 NULL 记录的平均存储宽度,以字节计算。

+

n_distinct

+

real

+

标识全局统计信息中字段里唯一的非 NULL 数据值的数目。

+

most_common_vals

+

text[]

+

高频值列表,按照出现的频率排序。

+

most_common_freqs

+

real[]

+

高频值的频率。

+

histogram_bounds

+

text[]

+

等频直方图描述列中的数据分布(不包含高频值)。

+

correlation

+

real

+

相关系数。

+

most_common_elems

+

text[]

+

类型高频值列表,用于数组类型或一些其他类型。

+

most_common_elem_freqs

+

real[]

+

类型高频值的频率。

+

elem_count_histogram

+

real[]

+

数组类型直方图。

+
+ diff --git a/content/zh/docs/Developerguide/PG_HASHBUCKET.md b/content/zh/docs/Developerguide/PG_HASHBUCKET.md index 59907f857..9e907c03b 100644 --- a/content/zh/docs/Developerguide/PG_HASHBUCKET.md +++ b/content/zh/docs/Developerguide/PG_HASHBUCKET.md @@ -1,60 +1,60 @@ -# PG\_HASHBUCKET - -PG\_HASHBUCKET系统表存储hash bucket信息。 - -**表 1** PG\_HASHBUCKET字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐含字段,必须明确选择)。

-

bucketid

-

oid

-

对bucketvector计算的hash值,通过hash值可以加速对bucketvector的查找。

-

bucketcnt

-

integer

-

包含分片的个数。

-

bucketmapsize

-

integer

-

所有DN上包含的分片总数。

-

bucketref

-

integer

-

预留字段,默认值为1。

-

bucketvector

-

oidvector_extend

-

记录此行bucket信息包含的所有bucket的id,在此列上建立唯一索引,具有相同bucketid信息的表共享同一行pg_hashbucket数据。

-
- +# PG\_HASHBUCKET + +PG\_HASHBUCKET系统表存储 hash bucket 信息。 + +**表 1** PG\_HASHBUCKET字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐含字段,必须明确选择)。

+

bucketid

+

oid

+

对 bucketvector 计算的 hash 值,通过 hash 值可以加速对 bucketvector 的查找。

+

bucketcnt

+

integer

+

包含分片的个数。

+

bucketmapsize

+

integer

+

所有 DN 上包含的分片总数。

+

bucketref

+

integer

+

预留字段,默认值为 1 。

+

bucketvector

+

oidvector_extend

+

记录此行 bucket 信息包含的所有 bucket 的 id ,在此列上建立唯一索引,具有相同 bucketid 信息的表共享同一行 pg_hashbucket 数据。

+
+ diff --git a/content/zh/docs/Developerguide/PG_INDEX.md b/content/zh/docs/Developerguide/PG_INDEX.md index cba7962e9..d92399b98 100644 --- a/content/zh/docs/Developerguide/PG_INDEX.md +++ b/content/zh/docs/Developerguide/PG_INDEX.md @@ -1,166 +1,166 @@ -# PG\_INDEX - -PG\_INDEX系统表存储索引的一部分信息,其他的信息大多数在PG\_CLASS中。 - -**表 1** PG\_INDEX字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

indexrelid

-

oid

-

这个索引在pg_class里的记录的OID。

-

indrelid

-

oid

-

使用这个索引的表在pg_class里的记录的OID。

-

indnatts

-

smallint

-

索引中的字段数目。

-

indisunique

-

Boolean

-

如果为真,这是个唯一索引。

-

如果为假,这不是唯一索引。

-

indisprimary

-

Boolean

-

如果为真,该索引代表该表的主键。这个字段为真的时候indisunique总是为真。

-

如果为假,该索引不是该表的主键。

-

indisexclusion

-

Boolean

-

如果为真,该索引支持排他约束。

-

如果为假,该索引不支持排他约束。

-

indimmediate

-

Boolean

-

如果为真,在插入数据时会立即进行唯一性检查。

-

如果为假,在插入数据时不会进行唯一性检查。

-

indisclustered

-

Boolean

-

如果为真,则该表最后在这个索引上建了簇。

-

如果为假,则该表没有再这个索引上建簇。

-

indisusable

-

Boolean

-

如果为真,该索引对insert/select可用。

-

如果为假,该索引对insert/select不可用。

-

indisvalid

-

Boolean

-

如果为真,则该索引可以用于查询。如果为假,则该索引可能不完整,仍然必须在INSERT/UPDATE操作时进行更新,不过不能安全的用于查询。如果是唯一索引,则唯一属性也将不为真。

-

indcheckxmin

-

Boolean

-

如果为true,查询不能使用索引,直到pg_index此行的xmin低于其快照的TransactionXmin,因为该表可能包含它们能看到的不兼容行断开的HOT链。

-

如果为false,查询可以用于索引。

-

indisready

-

Boolean

-

如果为真,表示此索引对插入数据是可用的,否则,在插入或修改数据时忽略此索引。

-

indkey

-

int2vector

-

这是一个包含indnatts值的数组,这些数组值表示这个索引所建立的表字段。比如一个值为1 3的意思是第一个字段和第三个字段组成这个索引键字。这个数组里的零表明对应的索引属性是在这个表字段上的一个表达式,而不是一个简单的字段引用。

-

indcollation

-

oidvector

-

-

索引用到的各列的ID。

-

indclass

-

oidvector

-

对于索引键字里面的每个字段,这个字段都包含一个指向所使用的操作符类的OID,参阅pg_opclass获取细节。

-

indoption

-

int2vector

-

存储列前标识位,该标识位是由索引的访问方法定义。

-

indexprs

-

pg_node_tree

-

表达式树(以nodeToString()形式表现)用于那些非简单字段引用的索引属性。它是一个列表,个数与INDKEY中的零值个数相同。如果所有索引属性都是简单的引用,则为空。

-

indpred

-

pg_node_tree

-

部分索引断言的表达式树(以nodeToString()的形式表现)。如果不是部分索引,则是空字符串。

-

indisreplident

-

Boolean

-

如果为真,则此索引的列成为逻辑解码的解码列。

-

如果为假,则此索引的列不是逻辑解码的解码列。

-

indnkeyatts

-

smallint

-

索引中的总字段数,超出indnatts的部分不参与索引查询。

-
+# PG\_INDEX + +PG\_INDEX系统表存储索引的一部分信息,其他的信息大多数在PG\_CLASS中。 + +**表 1** PG\_INDEX字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

indexrelid

+

oid

+

这个索引在 pg_class 里的记录的 OID 。

+

indrelid

+

oid

+

使用这个索引的表在 pg_class 里的记录的 OID 。

+

indnatts

+

smallint

+

索引中的字段数目。

+

indisunique

+

Boolean

+

如果为真,这是个唯一索引。

+

如果为假,这不是唯一索引。

+

indisprimary

+

Boolean

+

如果为真,该索引代表该表的主键。这个字段为真的时候 indisunique 总是为真。

+

如果为假,该索引不是该表的主键。

+

indisexclusion

+

Boolean

+

如果为真,该索引支持排他约束。

+

如果为假,该索引不支持排他约束。

+

indimmediate

+

Boolean

+

如果为真,在插入数据时会立即进行唯一性检查。

+

如果为假,在插入数据时不会进行唯一性检查。

+

indisclustered

+

Boolean

+

如果为真,则该表最后在这个索引上建了簇。

+

如果为假,则该表没有再这个索引上建簇。

+

indisusable

+

Boolean

+

如果为真,该索引对insert/select可用。

+

如果为假,该索引对insert/select不可用。

+

indisvalid

+

Boolean

+

如果为真,则该索引可以用于查询。如果为假,则该索引可能不完整,仍然必须在INSERT/UPDATE操作时进行更新,不过不能安全的用于查询。如果是唯一索引,则唯一属性也将不为真。

+

indcheckxmin

+

Boolean

+

如果为 true ,查询不能使用索引,直到 pg_index 此行的 xmin 低于其快照的 TransactionXmin ,因为该表可能包含它们能看到的不兼容行断开的 HOT 链。

+

如果为 false ,查询可以用于索引。

+

indisready

+

Boolean

+

如果为真,表示此索引对插入数据是可用的,否则,在插入或修改数据时忽略此索引。

+

indkey

+

int2vector

+

这是一个包含 indnatts 值的数组,这些数组值表示这个索引所建立的表字段。比如一个值为 1 3 的意思是第一个字段和第三个字段组成这个索引键字。这个数组里的零表明对应的索引属性是在这个表字段上的一个表达式,而不是一个简单的字段引用。

+

indcollation

+

oidvector

+

+

索引用到的各列的 ID 。

+

indclass

+

oidvector

+

对于索引键字里面的每个字段,这个字段都包含一个指向所使用的操作符类的 OID ,参阅 pg_opclass 获取细节。

+

indoption

+

int2vector

+

存储列前标识位,该标识位是由索引的访问方法定义。

+

indexprs

+

pg_node_tree

+

表达式树(以 nodeToString() 形式表现)用于那些非简单字段引用的索引属性。它是一个列表,个数与 INDKEY 中的零值个数相同。如果所有索引属性都是简单的引用,则为空。

+

indpred

+

pg_node_tree

+

部分索引断言的表达式树(以 nodeToString() 的形式表现)。如果不是部分索引,则是空字符串。

+

indisreplident

+

Boolean

+

如果为真,则此索引的列成为逻辑解码的解码列。

+

如果为假,则此索引的列不是逻辑解码的解码列。

+

indnkeyatts

+

smallint

+

索引中的总字段数,超出 indnatts 的部分不参与索引查询。

+
diff --git a/content/zh/docs/Developerguide/PG_INDEXES.md b/content/zh/docs/Developerguide/PG_INDEXES.md index 879b6fa94..637b2a533 100644 --- a/content/zh/docs/Developerguide/PG_INDEXES.md +++ b/content/zh/docs/Developerguide/PG_INDEXES.md @@ -1,65 +1,65 @@ -# PG\_INDEXES - -PG\_INDEXES视图提供对数据库中每个索引的有用信息的访问。 - -**表 1** PG\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

schemaname

-

name

-

PG_NAMESPACE.nspname

-

包含表和索引的模式名称。

-

tablename

-

name

-

PG_CLASS.relname

-

此索引所服务的表的名称。

-

indexname

-

name

-

PG_CLASS.relname

-

索引的名称。

-

tablespace

-

name

-

PG_TABLESPACE.nspname

-

包含索引的表空间名称。

-

indexdef

-

text

-

-

-

索引定义(一个重建的CREATE INDEX命令)。

-
- +# PG\_INDEXES + +PG\_INDEXES视图提供对数据库中每个索引的有用信息的访问。 + +**表 1** PG\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

schemaname

+

name

+

PG_NAMESPACE.nspname

+

包含表和索引的模式名称。

+

tablename

+

name

+

PG_CLASS.relname

+

此索引所服务的表的名称。

+

indexname

+

name

+

PG_CLASS.relname

+

索引的名称。

+

tablespace

+

name

+

PG_TABLESPACE.nspname

+

包含索引的表空间名称。

+

indexdef

+

text

+

-

+

索引定义(一个重建的 CREATE INDEX 命令)。

+
+ diff --git a/content/zh/docs/Developerguide/PG_INHERITS.md b/content/zh/docs/Developerguide/PG_INHERITS.md index db458a978..82c160310 100644 --- a/content/zh/docs/Developerguide/PG_INHERITS.md +++ b/content/zh/docs/Developerguide/PG_INHERITS.md @@ -1,47 +1,47 @@ -# PG\_INHERITS - -PG\_INHERITS系统表记录关于表继承层次的信息。数据库里每个直接的子系表都有一条记录。间接的继承可以通过追溯记录链来判断。 - -**表 1** PG\_INHERITS字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

inhrelid

-

oid

-

PG_CLASS.oid

-

子表的OID。

-

inhparent

-

oid

-

PG_CLASS.oid

-

父表的OID。

-

inhseqno

-

integer

-

-

-

如果一个子表存在多个直系父表(多重继承),这个数字表明此继承字段的排列顺序。计数从1开始。

-
- +# PG\_INHERITS + +PG\_INHERITS系统表记录关于表继承层次的信息。数据库里每个直接的子系表都有一条记录。间接的继承可以通过追溯记录链来判断。 + +**表 1** PG\_INHERITS字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

inhrelid

+

oid

+

PG_CLASS.oid

+

子表的 OID 。

+

inhparent

+

oid

+

PG_CLASS.oid

+

父表的 OID 。

+

inhseqno

+

integer

+

-

+

如果一个子表存在多个直系父表(多重继承),这个数字表明此继承字段的排列顺序。计数从 1 开始。

+
+ diff --git a/content/zh/docs/Developerguide/PG_JOB.md b/content/zh/docs/Developerguide/PG_JOB.md index c3e74db64..0fb6ed654 100644 --- a/content/zh/docs/Developerguide/PG_JOB.md +++ b/content/zh/docs/Developerguide/PG_JOB.md @@ -1,139 +1,139 @@ -# PG\_JOB - -PG\_JOB系统表存储用户创建的定时任务的任务详细信息,定时任务线程定时轮询pg\_job系统表中的时间,当任务到期会触发任务的执行,并更新pg\_job表中的任务状态。该系统表属于Shared Relation,所有创建的job记录对所有数据库可见。 - -**表 1** PG\_JOB字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

job_id

-

bigint

-

作业ID,主键,是唯一的(有唯一索引)。

-

current_postgres_pid

-

bigint

-

如果当前任务已被执行,那么此处记录运行此任务的gaussdb线程ID。默认为 -1,表示此任务未被执行过。

-

log_user

-

name

-

创建者的UserName。

-

priv_user

-

name

-

作业执行者的UserName。

-

dbname

-

name

-

标识作业要在哪个数据库执行的数据库名称。

-

node_name

-

name

-

标识当前作业是在哪个数据库主节点上创建和执行。

-

job_status

-

"char"

-

当前任务的执行状态,取值范围:('r', 's', 'f', 'd'),默认为's',取值含义:

-

Status of job step: r=running, s=successfully finished, f=job failed, d=disable

-

当job连续执行失败16次,会将job_status自动设置为失效状态'd',后续不再执行该job。

-

注:当用户将定时任务关闭(即:guc参数job_queue_processes为0时),由于监控job执行的线程不会启动,所以该状态不会根据job的实时状态进行设置,用户不需要关注此状态。只有当开启定时任务功能(即:guc参数job_queue_processes为非0时),系统才会根据当前job的实时状态刷新该字段值。

-

start_date

-

timestamp without time zone

-

作业第一次开始执行时间,时间精确到毫秒。

-

next_run_date

-

timestamp without time zone

-

下次定时执行任务的时间,时间精确到毫秒。

-

failure_count

-

smallint

-

失败计数,作业连续执行失败16次,不再继续执行。

-

interval

-

text

-

作业执行的重复时间间隔。

-

last_start_date

-

timestamp without time zone

-

上次运行开始时间,时间精确到毫秒。

-

last_end_date

-

timestamp without time zone

-

上次运行的结束时间,时间精确到毫秒。

-

last_suc_date

-

timestamp without time zone

-

上次成功运行的开始时间,时间精确到毫秒。

-

this_run_date

-

timestamp without time zone

-

正在运行任务的开始时间,时间精确到毫秒。

-

nspname

-

name

-

标识作业执行时的schema的名称。

-
+# PG\_JOB + +PG\_JOB系统表存储用户创建的定时任务的任务详细信息,定时任务线程定时轮询pg\_job系统表中的时间,当任务到期会触发任务的执行,并更新pg\_job表中的任务状态。该系统表属于 Shared Relation ,所有创建的 job 记录对所有数据库可见。 + +**表 1** PG\_JOB字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

job_id

+

bigint

+

作业 ID ,主键,是唯一的(有唯一索引)。

+

current_postgres_pid

+

bigint

+

如果当前任务已被执行,那么此处记录运行此任务的 gaussdb 线程 ID 。默认为 -1,表示此任务未被执行过。

+

log_user

+

name

+

创建者的 UserName 。

+

priv_user

+

name

+

作业执行者的 UserName 。

+

dbname

+

name

+

标识作业要在哪个数据库执行的数据库名称。

+

node_name

+

name

+

标识当前作业是在哪个数据库主节点上创建和执行。

+

job_status

+

"char"

+

当前任务的执行状态,取值范围:('r', 's', 'f', 'd'),默认为's',取值含义:

+

Status of job step: r=running, s=successfully finished, f=job failed, d=disable

+

当 job 连续执行失败 16 次,会将 job_status 自动设置为失效状态'd',后续不再执行该 job 。

+

注:当用户将定时任务关闭(即:guc参数 job_queue_processes 为 0 时),由于监控 job 执行的线程不会启动,所以该状态不会根据 job 的实时状态进行设置,用户不需要关注此状态。只有当开启定时任务功能(即:guc参数 job_queue_processes 为非 0 时),系统才会根据当前 job 的实时状态刷新该字段值。

+

start_date

+

timestamp without time zone

+

作业第一次开始执行时间,时间精确到毫秒。

+

next_run_date

+

timestamp without time zone

+

下次定时执行任务的时间,时间精确到毫秒。

+

failure_count

+

smallint

+

失败计数,作业连续执行失败 16 次,不再继续执行。

+

interval

+

text

+

作业执行的重复时间间隔。

+

last_start_date

+

timestamp without time zone

+

上次运行开始时间,时间精确到毫秒。

+

last_end_date

+

timestamp without time zone

+

上次运行的结束时间,时间精确到毫秒。

+

last_suc_date

+

timestamp without time zone

+

上次成功运行的开始时间,时间精确到毫秒。

+

this_run_date

+

timestamp without time zone

+

正在运行任务的开始时间,时间精确到毫秒。

+

nspname

+

name

+

标识作业执行时的 schema 的名称。

+
diff --git a/content/zh/docs/Developerguide/PG_JOB_PROC.md b/content/zh/docs/Developerguide/PG_JOB_PROC.md index 70892545d..efdc9da9d 100644 --- a/content/zh/docs/Developerguide/PG_JOB_PROC.md +++ b/content/zh/docs/Developerguide/PG_JOB_PROC.md @@ -1,46 +1,46 @@ -# PG\_JOB\_PROC - -PG\_JOB\_PROC系统表对应PG\_JOB表中每个任务的作业内容(包括:PL/SQL代码块、匿名块)。将存储过程信息独立出来,如果放到PG\_JOB中,被加载到共享内存的时候,会占用不必要的空间,所以在使用的时候再进行查询获取。 - -**表 1** PG\_JOB\_PROC字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

job_oid

-

integer

-

外键,关联pg_job表中的job_id。

-

what

-

text

-

作业内容。

-

job_name

-

text

-

作业名称。

-
- +# PG\_JOB\_PROC + +PG\_JOB\_PROC系统表对应PG\_JOB表中每个任务的作业内容(包括:PL/SQL代码块、匿名块)。将存储过程信息独立出来,如果放到PG\_JOB中,被加载到共享内存的时候,会占用不必要的空间,所以在使用的时候再进行查询获取。 + +**表 1** PG\_JOB\_PROC字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

job_oid

+

integer

+

外键,关联 pg_job 表中的 job_id 。

+

what

+

text

+

作业内容。

+

job_name

+

text

+

作业名称。

+
+ diff --git a/content/zh/docs/Developerguide/PG_LANGUAGE.md b/content/zh/docs/Developerguide/PG_LANGUAGE.md index fad379200..b332463bf 100644 --- a/content/zh/docs/Developerguide/PG_LANGUAGE.md +++ b/content/zh/docs/Developerguide/PG_LANGUAGE.md @@ -1,100 +1,100 @@ -# PG\_LANGUAGE - -PG\_LANGUAGE系统表登记编程语言,用户可以用这些语言或接口写函数或者存储过程。 - -**表 1** PG\_LANGUAGE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

lanname

-

name

-

-

-

语言的名称。

-

lanowner

-

oid

-

PG_AUTHID.oid

-

语言的所有者。

-

lanispl

-

Boolean

-

-

-

对于内部语言而言是假(比如SQL),对于用户定义的语言则是真。目前,gs_dump仍然使用这个东西判断哪种语言需要转储,但是这些可能在将来被其它机制取代。

-

lanpltrusted

-

Boolean

-

-

-

如果这是可信语言则为真,意味着系统相信它不会被授予任何正常SQL执行环境之外的权限。只有初始用户可以用不可信的语言创建函数。

-

lanplcallfoid

-

oid

-

PG_PROC.oid

-

对于非内部语言,这是指向该语言处理器的引用,语言处理器是一个特殊函数,负责执行以某种语言写的所有函数。

-

laninline

-

oid

-

PG_PROC.oid

-

这个字段引用一个负责执行“inline”匿名代码块的函数(DO块)。如果不支持内联块则为零。

-

lanvalidator

-

oid

-

PG_PROC.oid

-

这个字段引用一个语言校验器函数,它负责检查新创建的函数的语法和有效性。如果没有提供校验器,则为零。

-

lanacl

-

aclitem[]

-

-

-

访问权限。

-
+# PG\_LANGUAGE + +PG\_LANGUAGE系统表登记编程语言,用户可以用这些语言或接口写函数或者存储过程。 + +**表 1** PG\_LANGUAGE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

lanname

+

name

+

-

+

语言的名称。

+

lanowner

+

oid

+

PG_AUTHID.oid

+

语言的所有者。

+

lanispl

+

Boolean

+

-

+

对于内部语言而言是假(比如SQL),对于用户定义的语言则是真。目前, gs_dump 仍然使用这个东西判断哪种语言需要转储,但是这些可能在将来被其它机制取代。

+

lanpltrusted

+

Boolean

+

-

+

如果这是可信语言则为真,意味着系统相信它不会被授予任何正常 SQL 执行环境之外的权限。只有初始用户可以用不可信的语言创建函数。

+

lanplcallfoid

+

oid

+

PG_PROC.oid

+

对于非内部语言,这是指向该语言处理器的引用,语言处理器是一个特殊函数,负责执行以某种语言写的所有函数。

+

laninline

+

oid

+

PG_PROC.oid

+

这个字段引用一个负责执行“inline”匿名代码块的函数(DO块)。如果不支持内联块则为零。

+

lanvalidator

+

oid

+

PG_PROC.oid

+

这个字段引用一个语言校验器函数,它负责检查新创建的函数的语法和有效性。如果没有提供校验器,则为零。

+

lanacl

+

aclitem[]

+

-

+

访问权限。

+
diff --git a/content/zh/docs/Developerguide/PG_LARGEOBJECT.md b/content/zh/docs/Developerguide/PG_LARGEOBJECT.md index 6bbf100d9..d9f7e3602 100644 --- a/content/zh/docs/Developerguide/PG_LARGEOBJECT.md +++ b/content/zh/docs/Developerguide/PG_LARGEOBJECT.md @@ -1,51 +1,51 @@ -# PG\_LARGEOBJECT - -PG\_LARGEOBJECT系统表保存那些标记着“大对象”的数据。一个大对象是使用其创建时分配的OID标识的。每个大对象都分解成足够小的小段或者“页面”以便以行的形式存储在PG\_LARGEOBJECT里。每页的数据定义为LOBLKSIZE。 - -需要有系统管理员权限才可以访问此系统表。 - -**表 1** PG\_LARGEOBJECT字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

loid

-

oid

-

PG_LARGEOBJECT_METADATA.oid

-

包含本页的大对象的标识符。

-

pageno

-

integer

-

-

-

本页在其大对象数据中的页码从零开始计算。

-

data

-

bytea

-

-

-

存储在大对象中的实际数据。这些数据绝不会超过LOBLKSIZE字节,而且可能更少。

-
- -PG\_LARGEOBJECT的每一行保存一个大对象的一个页面,从该对象内部的字节偏移(pageno \* LOBLKSIZE)开始。这种实现允许松散的存储:页面可以丢失,而且可以比LOBLKSIZE字节少(即使它们不是对象的最后一页)。大对象内丢失的部分读做零。 - +# PG\_LARGEOBJECT + +PG\_LARGEOBJECT系统表保存那些标记着“大对象”的数据。一个大对象是使用其创建时分配的 OID 标识的。每个大对象都分解成足够小的小段或者“页面”以便以行的形式存储在PG\_LARGEOBJECT里。每页的数据定义为 LOBLKSIZE 。 + +需要有系统管理员权限才可以访问此系统表。 + +**表 1** PG\_LARGEOBJECT字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

loid

+

oid

+

PG_LARGEOBJECT_METADATA.oid

+

包含本页的大对象的标识符。

+

pageno

+

integer

+

-

+

本页在其大对象数据中的页码从零开始计算。

+

data

+

bytea

+

-

+

存储在大对象中的实际数据。这些数据绝不会超过 LOBLKSIZE 字节,而且可能更少。

+
+ +PG\_LARGEOBJECT的每一行保存一个大对象的一个页面,从该对象内部的字节偏移(pageno \* LOBLKSIZE)开始。这种实现允许松散的存储:页面可以丢失,而且可以比 LOBLKSIZE 字节少(即使它们不是对象的最后一页)。大对象内丢失的部分读做零。 + diff --git a/content/zh/docs/Developerguide/PG_LARGEOBJECT_METADATA.md b/content/zh/docs/Developerguide/PG_LARGEOBJECT_METADATA.md index 5a158d365..a9891627f 100644 --- a/content/zh/docs/Developerguide/PG_LARGEOBJECT_METADATA.md +++ b/content/zh/docs/Developerguide/PG_LARGEOBJECT_METADATA.md @@ -1,47 +1,47 @@ -# PG\_LARGEOBJECT\_METADATA - -PG\_LARGEOBJECT\_METADATA系统表存储与大数据相关的元数据。实际的大对象数据存储在PG\_LARGEOBJECT里。 - -**表 1** PG\_LARGEOBJECT\_METADATA字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

lomowner

-

oid

-

PG_AUTHID.oid

-

大对象的所有者。

-

lomacl

-

aclitem[]

-

-

-

访问权限。

-
- +# PG\_LARGEOBJECT\_METADATA + +PG\_LARGEOBJECT\_METADATA系统表存储与大数据相关的元数据。实际的大对象数据存储在PG\_LARGEOBJECT里。 + +**表 1** PG\_LARGEOBJECT\_METADATA字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

lomowner

+

oid

+

PG_AUTHID.oid

+

大对象的所有者。

+

lomacl

+

aclitem[]

+

-

+

访问权限。

+
+ diff --git a/content/zh/docs/Developerguide/PG_LOCKS.md b/content/zh/docs/Developerguide/PG_LOCKS.md index 1254ed4d0..ebf661653 100644 --- a/content/zh/docs/Developerguide/PG_LOCKS.md +++ b/content/zh/docs/Developerguide/PG_LOCKS.md @@ -1,191 +1,191 @@ -# PG\_LOCKS - -PG\_LOCKS视图存储各打开事务所持有的锁信息。 - -**表 1** PG\_LOCKS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

locktype

-

text

-

-

-

被锁定对象的类型:relation、extend、page、tuple、transactionid、virtualxid、object、userlock、advisory。

-

database

-

oid

-

PG_DATABASE.oid

-

被锁定对象所在数据库的OID。

-
  • 如果被锁定的对象是共享对象,则OID为0。
  • 如果是一个事务ID,则为NULL。
-

relation

-

oid

-

PG_CLASS.oid

-

关系的OID,如果锁定的对象不是关系,也不是关系的一部分,则为NULL。

-

page

-

integer

-

-

-

关系内部的页面编号,如果对象不是关系页或者不是行页,则为NULL。

-

tuple

-

smallint

-

-

-

页面里边的行编号,如果对象不是行,则为NULL。

-

bucket

-

integer

-

-

-

子表对应的bucket number。如果目标不是表的话,则为NULL。

-

virtualxid

-

text

-

-

-

事务的虚拟ID,如果对象不是一个虚拟事务ID,则为NULL。

-

transactionid

-

xid

-

-

-

事务的ID,如果对象不是一个事务ID,则为NULL。

-

classid

-

oid

-

PG_CLASS.oid

-

包含该对象的系统表的OID,如果对象不是普通的数据库对象,则为NULL。

-

objid

-

oid

-

-

-

对象在其系统表内的OID,如果对象不是普通数据库对象,则为NULL。

-

objsubid

-

smallint

-

-

-

对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是0;如果这个对象不是普通数据库对象,则为NULL。

-

virtualtransaction

-

text

-

-

-

持有此锁或者在等待此锁的事务的虚拟ID。

-

pid

-

bigint

-

-

-

持有或者等待这个锁的服务器线程的逻辑ID。如果锁是被一个预备事务持有的,则为NULL。

-

sessionid

-

bigint

-

-

-

持有或者等待这个锁的会话ID。

-

mode

-

text

-

-

-

这个线程持有的或者是期望的锁模式。

-

granted

-

Boolean

-

-

-
  • 如果锁是持有锁,则为TRUE。
  • 如果锁是等待锁,则为FALSE。
-

fastpath

-

Boolean

-

-

-

如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。

-

locktag

-

text

-

-

-

会话等待锁信息,可通过locktag_decode()函数解析。

-

global_sessionid

-

text

-
  

全局会话ID。

-
- +# PG\_LOCKS + +PG\_LOCKS视图存储各打开事务所持有的锁信息。 + +**表 1** PG\_LOCKS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

locktype

+

text

+

-

+

被锁定对象的类型:relation、extend、page、tuple、transactionid、virtualxid、object、userlock、advisory。

+

database

+

oid

+

PG_DATABASE.oid

+

被锁定对象所在数据库的 OID 。

+
  • 如果被锁定的对象是共享对象,则 OID 为 0 。
  • 如果是一个事务 ID ,则为 NULL 。
+

relation

+

oid

+

PG_CLASS.oid

+

关系的 OID ,如果锁定的对象不是关系,也不是关系的一部分,则为 NULL 。

+

page

+

integer

+

-

+

关系内部的页面编号,如果对象不是关系页或者不是行页,则为 NULL 。

+

tuple

+

smallint

+

-

+

页面里边的行编号,如果对象不是行,则为 NULL 。

+

bucket

+

integer

+

-

+

子表对应的 bucket number 。如果目标不是表的话,则为 NULL 。

+

virtualxid

+

text

+

-

+

事务的虚拟 ID ,如果对象不是一个虚拟事务 ID ,则为 NULL 。

+

transactionid

+

xid

+

-

+

事务的 ID ,如果对象不是一个事务 ID ,则为 NULL 。

+

classid

+

oid

+

PG_CLASS.oid

+

包含该对象的系统表的 OID ,如果对象不是普通的数据库对象,则为 NULL 。

+

objid

+

oid

+

-

+

对象在其系统表内的 OID ,如果对象不是普通数据库对象,则为 NULL 。

+

objsubid

+

smallint

+

-

+

对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是0;如果这个对象不是普通数据库对象,则为 NULL 。

+

virtualtransaction

+

text

+

-

+

持有此锁或者在等待此锁的事务的虚拟 ID 。

+

pid

+

bigint

+

-

+

持有或者等待这个锁的服务器线程的逻辑 ID 。如果锁是被一个预备事务持有的,则为 NULL 。

+

sessionid

+

bigint

+

-

+

持有或者等待这个锁的会话 ID 。

+

mode

+

text

+

-

+

这个线程持有的或者是期望的锁模式。

+

granted

+

Boolean

+

-

+
  • 如果锁是持有锁,则为 TRUE 。
  • 如果锁是等待锁,则为 FALSE 。
+

fastpath

+

Boolean

+

-

+

如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为 FALSE 。

+

locktag

+

text

+

-

+

会话等待锁信息,可通过 locktag_decode() 函数解析。

+

global_sessionid

+

text

+
  

全局会话 ID 。

+
+ diff --git a/content/zh/docs/Developerguide/PG_NAMESPACE.md b/content/zh/docs/Developerguide/PG_NAMESPACE.md index 678f151c1..8a329f1b4 100644 --- a/content/zh/docs/Developerguide/PG_NAMESPACE.md +++ b/content/zh/docs/Developerguide/PG_NAMESPACE.md @@ -1,67 +1,67 @@ -# PG\_NAMESPACE - -PG\_NAMESPACE系统表存储名称空间,即存储schema相关的信息。 - -**表 1** PG\_NAMESPACE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

nspname

-

name

-

名称空间的名称。

-

nspowner

-

oid

-

名称空间的所有者。

-

nsptimeline

-

bigint

-

在数据库节点上创建此命名空间时的时间线。此字段为内部使用,仅在数据库节点上有效。

-

nspacl

-

aclitem[]

-

访问权限。

-

in_redistribution

-

“char”

-

是否处于重发布状态。

-

nspblockchain

-

Boolean

-
  • 如果为真,则该模式为防篡改模式。
  • 如果为假,则此模式为非防篡改模式。
-
- +# PG\_NAMESPACE + +PG\_NAMESPACE系统表存储名称空间,即存储 schema 相关的信息。 + +**表 1** PG\_NAMESPACE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

nspname

+

name

+

名称空间的名称。

+

nspowner

+

oid

+

名称空间的所有者。

+

nsptimeline

+

bigint

+

在数据库节点上创建此命名空间时的时间线。此字段为内部使用,仅在数据库节点上有效。

+

nspacl

+

aclitem[]

+

访问权限。

+

in_redistribution

+

“char”

+

是否处于重发布状态。

+

nspblockchain

+

Boolean

+
  • 如果为真,则该模式为防篡改模式。
  • 如果为假,则此模式为非防篡改模式。
+
+ diff --git a/content/zh/docs/Developerguide/PG_NODE_ENV.md b/content/zh/docs/Developerguide/PG_NODE_ENV.md index 42a632be4..a0876d61d 100644 --- a/content/zh/docs/Developerguide/PG_NODE_ENV.md +++ b/content/zh/docs/Developerguide/PG_NODE_ENV.md @@ -1,67 +1,67 @@ -# PG\_NODE\_ENV - -PG\_NODE\_ENV视图提供获取当前节点的环境变量信息。 - -**表 1** PG\_NODE\_ENV字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

当前节点的名称。

-

host

-

text

-

当前节点的主机名称。

-

process

-

integer

-

当前节点的进程号。

-

port

-

integer

-

当前节点的端口号。

-

installpath

-

text

-

当前节点的安装目录。

-

datapath

-

text

-

当前节点的数据目录。

-

log_directory

-

text

-

当前节点的日志目录。

-
- +# PG\_NODE\_ENV + +PG\_NODE\_ENV视图提供获取当前节点的环境变量信息。 + +**表 1** PG\_NODE\_ENV字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

当前节点的名称。

+

host

+

text

+

当前节点的主机名称。

+

process

+

integer

+

当前节点的进程号。

+

port

+

integer

+

当前节点的端口号。

+

installpath

+

text

+

当前节点的安装目录。

+

datapath

+

text

+

当前节点的数据目录。

+

log_directory

+

text

+

当前节点的日志目录。

+
+ diff --git a/content/zh/docs/Developerguide/PG_OBJECT.md b/content/zh/docs/Developerguide/PG_OBJECT.md index 0e6c280c7..33e929e8a 100644 --- a/content/zh/docs/Developerguide/PG_OBJECT.md +++ b/content/zh/docs/Developerguide/PG_OBJECT.md @@ -1,76 +1,76 @@ -# PG\_OBJECT - -PG\_OBJECT系统表存储限定类型对象(普通表、索引、序列、视图、存储过程和函数)的创建用户、创建时间和最后修改时间。 - -**表 1** PG\_OBJECT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

object_oid

-

oid

-

对象标识符。

-

object_type

-

"char"

-

对象类型:

-
  • r 表示普通表。
  • i 表示索引。
  • s 表示序列。
  • v 表示视图。
  • p 表示存储过程和函数。
-

creator

-

oid

-

创建用户的标识符。

-

ctime

-

timestamp with time zone

-

对象的创建时间。

-

mtime

-

timestamp with time zone

-

对象的最后修改时间,修改行为包括ALTER操作和GRANT、REVOKE操作。

-

createcsn

-

int8

-

对象创建时的CSN。

-

changecsn

-

int8

-

对表或索引执行DDL操作时的CSN。

-
- ->![](public_sys-resources/icon-notice.gif) **须知:** -> ->- 无法记录初始化数据库(initdb)过程中所创建或修改的对象,即PG\_OBJECT无法查询到该对象记录。 ->- 对于升级前创建的对象,再次修改时会记录其修改时间(mtime),对表或索引执行DDL操作时会记录其所属事务的事务提交序列号(changecsn)。由于无法得知该对象创建时间,因此ctime和createcsn为空。 ->- ctime和mtime所记录的时间为用户当次操作所属事务的起始时间。 ->- 由扩容引起的对象修改时间也会被记录。 ->- createcsn和changecsn记录的是用户当次操作所属事务的事务提交序列号。 - +# PG\_OBJECT + +PG\_OBJECT系统表存储限定类型对象(普通表、索引、序列、视图、存储过程和函数)的创建用户、创建时间和最后修改时间。 + +**表 1** PG\_OBJECT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

object_oid

+

oid

+

对象标识符。

+

object_type

+

"char"

+

对象类型:

+
  • r 表示普通表。
  • i 表示索引。
  • s 表示序列。
  • v 表示视图。
  • p 表示存储过程和函数。
+

creator

+

oid

+

创建用户的标识符。

+

ctime

+

timestamp with time zone

+

对象的创建时间。

+

mtime

+

timestamp with time zone

+

对象的最后修改时间,修改行为包括 ALTER 操作和GRANT、REVOKE操作。

+

createcsn

+

int8

+

对象创建时的 CSN 。

+

changecsn

+

int8

+

对表或索引执行 DDL 操作时的 CSN 。

+
+ +>![](public_sys-resources/icon-notice.gif) **须知:** +> +>- 无法记录初始化数据库(initdb)过程中所创建或修改的对象,即PG\_OBJECT无法查询到该对象记录。 +>- 对于升级前创建的对象,再次修改时会记录其修改时间(mtime),对表或索引执行 DDL 操作时会记录其所属事务的事务提交序列号(changecsn)。由于无法得知该对象创建时间,因此 ctime 和 createcsn 为空。 +>- ctime和 mtime 所记录的时间为用户当次操作所属事务的起始时间。 +>- 由扩容引起的对象修改时间也会被记录。 +>- createcsn和 changecsn 记录的是用户当次操作所属事务的事务提交序列号。 + diff --git a/content/zh/docs/Developerguide/PG_OPCLASS.md b/content/zh/docs/Developerguide/PG_OPCLASS.md index a0932404f..67f2139bd 100644 --- a/content/zh/docs/Developerguide/PG_OPCLASS.md +++ b/content/zh/docs/Developerguide/PG_OPCLASS.md @@ -1,105 +1,105 @@ -# PG\_OPCLASS - -PG\_OPCLASS系统表定义索引访问方法操作符类。 - -每个操作符类为一种特定数据类型和一种特定索引访问方法定义索引字段的语义。一个操作符类本质上指定一个特定的操作符族适用于一个特定的可索引的字段数据类型。索引的字段实际可用的族中的操作符集是接受字段的数据类型作为它们的左边的输入的那个。 - -**表 1** PG\_OPCLASS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

opcmethod

-

oid

-

PG_AM.oid

-

操作符类所服务的索引访问方法。

-

opcname

-

name

-

-

-

这个操作符类的名称。

-

opcnamespace

-

oid

-

PG_NAMESPACE.oid

-

这个操作符类的名称空间。

-

opcowner

-

oid

-

PG_AUTHID.oid

-

操作符类属主。

-

opcfamily

-

oid

-

PG_OPFAMILY.oid

-

包含该操作符类的操作符族。

-

opcintype

-

oid

-

PG_TYPE.oid

-

操作符类索引的数据类型。

-

opcdefault

-

Boolean

-

-

-

如果操作符类是opcintype的缺省,则为真。

-

opckeytype

-

oid

-

PG_TYPE.oid

-

索引数据的类型,如果和opcintype相同则为零。

-
- -一个操作符类的opcmethod必须匹配包含它的操作符族的opfmethod。 - +# PG\_OPCLASS + +PG\_OPCLASS系统表定义索引访问方法操作符类。 + +每个操作符类为一种特定数据类型和一种特定索引访问方法定义索引字段的语义。一个操作符类本质上指定一个特定的操作符族适用于一个特定的可索引的字段数据类型。索引的字段实际可用的族中的操作符集是接受字段的数据类型作为它们的左边的输入的那个。 + +**表 1** PG\_OPCLASS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

opcmethod

+

oid

+

PG_AM.oid

+

操作符类所服务的索引访问方法。

+

opcname

+

name

+

-

+

这个操作符类的名称。

+

opcnamespace

+

oid

+

PG_NAMESPACE.oid

+

这个操作符类的名称空间。

+

opcowner

+

oid

+

PG_AUTHID.oid

+

操作符类属主。

+

opcfamily

+

oid

+

PG_OPFAMILY.oid

+

包含该操作符类的操作符族。

+

opcintype

+

oid

+

PG_TYPE.oid

+

操作符类索引的数据类型。

+

opcdefault

+

Boolean

+

-

+

如果操作符类是 opcintype 的缺省,则为真。

+

opckeytype

+

oid

+

PG_TYPE.oid

+

索引数据的类型,如果和 opcintype 相同则为零。

+
+ +一个操作符类的 opcmethod 必须匹配包含它的操作符族的 opfmethod 。 + diff --git a/content/zh/docs/Developerguide/PG_OPERATOR.md b/content/zh/docs/Developerguide/PG_OPERATOR.md index 5443228be..891c7a574 100644 --- a/content/zh/docs/Developerguide/PG_OPERATOR.md +++ b/content/zh/docs/Developerguide/PG_OPERATOR.md @@ -1,156 +1,156 @@ -# PG\_OPERATOR - -PG\_OPERATOR系统表存储有关操作符的信息。 - -**表 1** PG\_OPERATOR字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

oprname

-

name

-

-

-

操作符的名称。

-

oprnamespace

-

oid

-

PG_NAMESPACE.oid

-

包含此操作符的名称空间的OID。

-

oprowner

-

oid

-

PG_AUTHID.oid

-

操作符所有者。

-

oprkind

-

"char"

-

-

-
  • b=infix =中缀(“两边”)。
  • l=前缀(“左边”)。
  • r=后缀(“右边”)。
-

oprcanmerge

-

Boolean

-

-

-

这个操作符是否支持合并连接。

-
  • t(true):表示支持合并连接。
  • f(false):表示不支持合并连接。
-

oprcanhash

-

Boolean

-

-

-

这个操作符是否支持Hash连接。

-
  • t(true):表示支持Hash连接。
  • f(false):表示不支持Hash连接。
-

oprleft

-

oid

-

PG_TYPE.oid

-

左操作数的类型。

-

oprright

-

oid

-

PG_TYPE.oid

-

右操作数的类型。

-

oprresult

-

oid

-

PG_TYPE.oid

-

结果类型。

-

oprcom

-

oid

-

PG_OPERATOR.oid

-

此操作符的交换符,如果存在的话。

-

oprnegate

-

oid

-

PG_OPERATOR.oid

-

此操作符的反转器,如果存在的话。

-

oprcode

-

regproc

-

PG_PROC.proname

-

实现这个操作符的函数。

-

oprrest

-

regproc

-

PG_PROC.proname

-

此操作符的约束选择性计算函数。

-

oprjoin

-

regproc

-

PG_PROC.proname

-

此操作符的连接选择性计算函数。

-
+# PG\_OPERATOR + +PG\_OPERATOR系统表存储有关操作符的信息。 + +**表 1** PG\_OPERATOR字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

oprname

+

name

+

-

+

操作符的名称。

+

oprnamespace

+

oid

+

PG_NAMESPACE.oid

+

包含此操作符的名称空间的 OID 。

+

oprowner

+

oid

+

PG_AUTHID.oid

+

操作符所有者。

+

oprkind

+

"char"

+

-

+
  • b=infix =中缀(“两边”)。
  • l=前缀(“左边”)。
  • r=后缀(“右边”)。
+

oprcanmerge

+

Boolean

+

-

+

这个操作符是否支持合并连接。

+
  • t(true):表示支持合并连接。
  • f(false):表示不支持合并连接。
+

oprcanhash

+

Boolean

+

-

+

这个操作符是否支持 Hash 连接。

+
  • t(true):表示支持 Hash 连接。
  • f(false):表示不支持 Hash 连接。
+

oprleft

+

oid

+

PG_TYPE.oid

+

左操作数的类型。

+

oprright

+

oid

+

PG_TYPE.oid

+

右操作数的类型。

+

oprresult

+

oid

+

PG_TYPE.oid

+

结果类型。

+

oprcom

+

oid

+

PG_OPERATOR.oid

+

此操作符的交换符,如果存在的话。

+

oprnegate

+

oid

+

PG_OPERATOR.oid

+

此操作符的反转器,如果存在的话。

+

oprcode

+

regproc

+

PG_PROC.proname

+

实现这个操作符的函数。

+

oprrest

+

regproc

+

PG_PROC.proname

+

此操作符的约束选择性计算函数。

+

oprjoin

+

regproc

+

PG_PROC.proname

+

此操作符的连接选择性计算函数。

+
diff --git a/content/zh/docs/Developerguide/PG_OPFAMILY.md b/content/zh/docs/Developerguide/PG_OPFAMILY.md index 814862ef1..6e1e77a86 100644 --- a/content/zh/docs/Developerguide/PG_OPFAMILY.md +++ b/content/zh/docs/Developerguide/PG_OPFAMILY.md @@ -1,69 +1,69 @@ -# PG\_OPFAMILY - -PG\_OPFAMILY系统表定义操作符族。 - -每个操作符族是一个操作符和相关支持例程的集合,其中的例程实现为一个特定的索引访问方式指定的语义。另外,族中的操作符都是“兼容的”,通过由访问方式指定的方法。操作符族的概念允许交叉数据类型操作符和索引一起使用,并且合理的使用访问方式的语义的知识。 - -**表 1** PG\_OPFAMILY字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

opfmethod

-

oid

-

PG_AM.oid

-

操作符族使用的索引方法。

-

opfname

-

name

-

-

-

这个操作符族的名称。

-

opfnamespace

-

oid

-

PG_NAMESPACE.oid

-

这个操作符的名称空间。

-

opfowner

-

oid

-

PG_AUTHID.oid

-

操作符族的所有者。

-
- -定义一个操作符族的大多数信息不在它的PG\_OPFAMILY行里面,而是在相关的行[PG\_AMOP](PG_AMOP.md),[PG\_AMPROC](PG_AMPROC.md)和[PG\_OPCLASS](PG_OPCLASS.md)里。 - +# PG\_OPFAMILY + +PG\_OPFAMILY系统表定义操作符族。 + +每个操作符族是一个操作符和相关支持例程的集合,其中的例程实现为一个特定的索引访问方式指定的语义。另外,族中的操作符都是“兼容的”,通过由访问方式指定的方法。操作符族的概念允许交叉数据类型操作符和索引一起使用,并且合理的使用访问方式的语义的知识。 + +**表 1** PG\_OPFAMILY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

opfmethod

+

oid

+

PG_AM.oid

+

操作符族使用的索引方法。

+

opfname

+

name

+

-

+

这个操作符族的名称。

+

opfnamespace

+

oid

+

PG_NAMESPACE.oid

+

这个操作符的名称空间。

+

opfowner

+

oid

+

PG_AUTHID.oid

+

操作符族的所有者。

+
+ +定义一个操作符族的大多数信息不在它的PG\_OPFAMILY行里面,而是在相关的行[PG\_AMOP](PG_AMOP.md),[PG\_AMPROC](PG_AMPROC.md)和[PG\_OPCLASS](PG_OPCLASS.md)里。 + diff --git a/content/zh/docs/Developerguide/PG_OS_THREADS.md b/content/zh/docs/Developerguide/PG_OS_THREADS.md index 3ade516e4..42c077a07 100644 --- a/content/zh/docs/Developerguide/PG_OS_THREADS.md +++ b/content/zh/docs/Developerguide/PG_OS_THREADS.md @@ -1,53 +1,53 @@ -# PG\_OS\_THREADS - -PG\_OS\_THREADS视图提供当前节点下所有线程的状态信息。 - -**表 1** PG\_OS\_THREADS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

当前节点的名称。

-

pid

-

bigint

-

当前节点进程中正在运行的线程号。

-

lwpid

-

integer

-

与pid对应的轻量级线程号。

-

thread_name

-

text

-

与pid对应的线程名称。

-

creation_time

-

timestamp with time zone

-

与pid对应的线程创建的时间。

-
- +# PG\_OS\_THREADS + +PG\_OS\_THREADS视图提供当前节点下所有线程的状态信息。 + +**表 1** PG\_OS\_THREADS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

当前节点的名称。

+

pid

+

bigint

+

当前节点进程中正在运行的线程号。

+

lwpid

+

integer

+

与 pid 对应的轻量级线程号。

+

thread_name

+

text

+

与 pid 对应的线程名称。

+

creation_time

+

timestamp with time zone

+

与 pid 对应的线程创建的时间。

+
+ diff --git a/content/zh/docs/Developerguide/PG_PARTITION.md b/content/zh/docs/Developerguide/PG_PARTITION.md index ac75f5a1c..e0923303a 100644 --- a/content/zh/docs/Developerguide/PG_PARTITION.md +++ b/content/zh/docs/Developerguide/PG_PARTITION.md @@ -1,225 +1,225 @@ -# PG\_PARTITION - -PG\_PARTITION系统表存储数据库内所有分区表(partitioned table)、分区(table partition)、分区上toast表和分区索引(index partition)四类对象的信息。分区表索引(partitioned index)的信息不在PG\_PARTITION系统表中保存。 - -**表 1** PG\_PARTITION字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

relname

-

name

-

分区表、分区、分区上toast表和分区索引的名称。

-

parttype

-

"char"

-
对象类型:
  • 'r':partitioned table。
  • 'p':table partition。
  • 'x':index partition。
  • 't':toast table。
-
-

parentid

-

oid

-

当对象为分区表或分区时,此字段表示分区表在PG_CLASS中的OID。

-

当对象为index partition时,此字段表示所属分区表索引(partitioned index)的OID。

-

rangenum

-

integer

-

保留字段。

-

intervalnum

-

integer

-

保留字段。

-

partstrategy

-

"char"

-
分区表分区策略,现在仅支持:
  • 'r':范围分区。
  • 'v':数值分区。
  • 'i':间隔分区。
  • 'l':list分区。
  • 'h':hash分区。
  • 'n':无效分区。
-
-

relfilenode

-

oid

-

table partition、index partition、分区上toast表的物理存储位置。

-

reltablespace

-

oid

-

table partition、index partition、分区上toast表所属表空间的OID。

-

relpages

-

double precision

-

统计信息:table partition、index partition的数据页数量。

-

reltuples

-

double precision

-

统计信息:table partition、index partition的元组数。

-

relallvisible

-

integer

-

统计信息:table partition、index partition的可见数据页数。

-

reltoastrelid

-

oid

-

table partition所对应toast表的OID。

-

reltoastidxid

-

oid

-

table partition所对应toast表的索引的OID。

-

indextblid

-

oid

-

index partition对应table partition的OID。

-

indisusable

-

Boolean

-

分区索引是否可用。

-

reldeltarelid

-

oid

-

Delta表的OID。

-

reldeltaidx

-

oid

-

Delta表的索引表的OID。

-

relcudescrelid

-

oid

-

CU描述表的OID。

-

relcudescidx

-

oid

-

CU描述表的索引表的OID。

-

relfrozenxid

-

xid32

-

冻结事务ID号。

-

为保持前向兼容,保留此字段,新增relfrozenxid64用于记录此信息。

-

intspnum

-

integer

-

间隔分区所属表空间的个数。

-

partkey

-

int2vector

-

分区键的列号。

-

intervaltablespace

-

oidvector

-

间隔分区所属的表空间,间隔分区以round-robin方式落在这些表空间内。

-

interval

-

text[]

-

间隔分区的间隔值。

-

boundaries

-

text[]

-

范围分区和间隔分区的上边界。

-

transit

-

text[]

-

间隔分区的跳转点。

-

reloptions

-

text[]

-

设置partition的存储属性,与pg_class.reloptions的形态一样,用“keyword=value”格式的字符串来表示,目前用于在线扩容的信息搜集。

-

relfrozenxid64

-

xid

-

冻结事务ID号。

-
- +# PG\_PARTITION + +PG\_PARTITION系统表存储数据库内所有分区表(partitioned table)、分区(table partition)、分区上 toast 表和分区索引(index partition)四类对象的信息。分区表索引(partitioned index)的信息不在PG\_PARTITION系统表中保存。 + +**表 1** PG\_PARTITION字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

relname

+

name

+

分区表、分区、分区上 toast 表和分区索引的名称。

+

parttype

+

"char"

+
对象类型:
  • 'r':partitioned table。
  • 'p':table partition。
  • 'x':index partition。
  • 't':toast table。
+
+

parentid

+

oid

+

当对象为分区表或分区时,此字段表示分区表在 PG_CLASS 中的 OID 。

+

当对象为 index partition 时,此字段表示所属分区表索引(partitioned index)的 OID 。

+

rangenum

+

integer

+

保留字段。

+

intervalnum

+

integer

+

保留字段。

+

partstrategy

+

"char"

+
分区表分区策略,现在仅支持:
  • 'r':范围分区。
  • 'v':数值分区。
  • 'i':间隔分区。
  • 'l':list分区。
  • 'h':hash分区。
  • 'n':无效分区。
+
+

relfilenode

+

oid

+

table partition、index partition、分区上 toast 表的物理存储位置。

+

reltablespace

+

oid

+

table partition、index partition、分区上 toast 表所属表空间的 OID 。

+

relpages

+

double precision

+

统计信息:table partition、index partition的数据页数量。

+

reltuples

+

double precision

+

统计信息:table partition、index partition的元组数。

+

relallvisible

+

integer

+

统计信息:table partition、index partition的可见数据页数。

+

reltoastrelid

+

oid

+

table partition所对应 toast 表的 OID 。

+

reltoastidxid

+

oid

+

table partition所对应 toast 表的索引的 OID 。

+

indextblid

+

oid

+

index partition对应 table partition 的 OID 。

+

indisusable

+

Boolean

+

分区索引是否可用。

+

reldeltarelid

+

oid

+

Delta表的 OID 。

+

reldeltaidx

+

oid

+

Delta表的索引表的 OID 。

+

relcudescrelid

+

oid

+

CU描述表的 OID 。

+

relcudescidx

+

oid

+

CU描述表的索引表的 OID 。

+

relfrozenxid

+

xid32

+

冻结事务 ID 号。

+

为保持前向兼容,保留此字段,新增 relfrozenxid64 用于记录此信息。

+

intspnum

+

integer

+

间隔分区所属表空间的个数。

+

partkey

+

int2vector

+

分区键的列号。

+

intervaltablespace

+

oidvector

+

间隔分区所属的表空间,间隔分区以round-robin方式落在这些表空间内。

+

interval

+

text[]

+

间隔分区的间隔值。

+

boundaries

+

text[]

+

范围分区和间隔分区的上边界。

+

transit

+

text[]

+

间隔分区的跳转点。

+

reloptions

+

text[]

+

设置 partition 的存储属性,与pg_class.reloptions的形态一样,用“keyword=value”格式的字符串来表示,目前用于在线扩容的信息搜集。

+

relfrozenxid64

+

xid

+

冻结事务 ID 号。

+
+ diff --git a/content/zh/docs/Developerguide/PG_PLTEMPLATE.md b/content/zh/docs/Developerguide/PG_PLTEMPLATE.md index 87807a9df..69bacd1b8 100644 --- a/content/zh/docs/Developerguide/PG_PLTEMPLATE.md +++ b/content/zh/docs/Developerguide/PG_PLTEMPLATE.md @@ -1,74 +1,74 @@ -# PG\_PLTEMPLATE - -PG\_PLTEMPLATE系统表存储过程语言的“模板”信息。 - -**表 1** PG\_PLTEMPLATE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

tmplname

-

name

-

这个模板所应用的语言的名称。

-

tmpltrusted

-

Boolean

-

如果语言被认为是可信的,则为真。

-

tmpldbacreate

-

Boolean

-

如果语言是由数据库所有者创建的,则为真。

-

tmplhandler

-

text

-

调用处理器函数的名称。

-

tmplinline

-

text

-

匿名块处理器的名称,若没有则为NULL。

-

tmplvalidator

-

text

-

校验函数的名称,如果没有则为NULL。

-

tmpllibrary

-

text

-

实现语言的共享库的路径。

-

tmplacl

-

aclitem[]

-

模板的访问权限(未使用)。

-
- +# PG\_PLTEMPLATE + +PG\_PLTEMPLATE系统表存储过程语言的“模板”信息。 + +**表 1** PG\_PLTEMPLATE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

tmplname

+

name

+

这个模板所应用的语言的名称。

+

tmpltrusted

+

Boolean

+

如果语言被认为是可信的,则为真。

+

tmpldbacreate

+

Boolean

+

如果语言是由数据库所有者创建的,则为真。

+

tmplhandler

+

text

+

调用处理器函数的名称。

+

tmplinline

+

text

+

匿名块处理器的名称,若没有则为 NULL 。

+

tmplvalidator

+

text

+

校验函数的名称,如果没有则为 NULL 。

+

tmpllibrary

+

text

+

实现语言的共享库的路径。

+

tmplacl

+

aclitem[]

+

模板的访问权限(未使用)。

+
+ diff --git a/content/zh/docs/Developerguide/PG_PREPARED_STATEMENTS.md b/content/zh/docs/Developerguide/PG_PREPARED_STATEMENTS.md index 7bfb188b2..ee9343953 100644 --- a/content/zh/docs/Developerguide/PG_PREPARED_STATEMENTS.md +++ b/content/zh/docs/Developerguide/PG_PREPARED_STATEMENTS.md @@ -1,53 +1,53 @@ -# PG\_PREPARED\_STATEMENTS - -PG\_PREPARED\_STATEMENTS视图显示当前会话所有可用的预备语句。 - -**表 1** PG\_PREPARED\_STATEMENTS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

name

-

text

-

预备语句的标识符。

-

statement

-

text

-

创建该预备语句的查询字符串。对于从SQL创建的预备语句而言是客户端提交的PREPARE语句;对于通过前/后端协议创建的预备语句而言是预备语句自身的文本。

-

prepare_time

-

timestamp with time zone

-

创建该预备语句的时间戳。

-

parameter_types

-

regtype[]

-

该预备语句期望的参数类型,以regtype类型的数组格式出现。与该数组元素相对应的OID可以通过把regtype转换为oid值得到。

-

from_sql

-

Boolean

-
  • 如果该预备语句是通过PREPARE语句创建的则为true。
  • 如果是通过前/后端协议创建的则为false。
-
- +# PG\_PREPARED\_STATEMENTS + +PG\_PREPARED\_STATEMENTS视图显示当前会话所有可用的预备语句。 + +**表 1** PG\_PREPARED\_STATEMENTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

name

+

text

+

预备语句的标识符。

+

statement

+

text

+

创建该预备语句的查询字符串。对于从 SQL 创建的预备语句而言是客户端提交的 PREPARE 语句;对于通过前/后端协议创建的预备语句而言是预备语句自身的文本。

+

prepare_time

+

timestamp with time zone

+

创建该预备语句的时间戳。

+

parameter_types

+

regtype[]

+

该预备语句期望的参数类型,以 regtype 类型的数组格式出现。与该数组元素相对应的 OID 可以通过把 regtype 转换为 oid 值得到。

+

from_sql

+

Boolean

+
  • 如果该预备语句是通过 PREPARE 语句创建的则为 true 。
  • 如果是通过前/后端协议创建的则为 false 。
+
+ diff --git a/content/zh/docs/Developerguide/PG_PREPARED_XACTS.md b/content/zh/docs/Developerguide/PG_PREPARED_XACTS.md index 30cda4f79..c44bd6e1e 100644 --- a/content/zh/docs/Developerguide/PG_PREPARED_XACTS.md +++ b/content/zh/docs/Developerguide/PG_PREPARED_XACTS.md @@ -1,65 +1,65 @@ -# PG\_PREPARED\_XACTS - -PG\_PREPARED\_XACTS视图显示当前准备好进行两阶段提交的事务的信息。 - -**表 1** PG\_PREPARED\_XACTS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

transaction

-

xid

-

-

-

预备事务的数字事务标识。

-

gid

-

text

-

-

-

赋予该事务的全局事务标识。

-

prepared

-

timestamp with time zone

-

-

-

事务准备好提交的时间。

-

owner

-

name

-

PG_AUTHID.rolname

-

执行该事务的用户的名称。

-

database

-

name

-

PG_DATABASE.datname

-

执行该事务所在的数据库名。

-
- +# PG\_PREPARED\_XACTS + +PG\_PREPARED\_XACTS视图显示当前准备好进行两阶段提交的事务的信息。 + +**表 1** PG\_PREPARED\_XACTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

transaction

+

xid

+

-

+

预备事务的数字事务标识。

+

gid

+

text

+

-

+

赋予该事务的全局事务标识。

+

prepared

+

timestamp with time zone

+

-

+

事务准备好提交的时间。

+

owner

+

name

+

PG_AUTHID.rolname

+

执行该事务的用户的名称。

+

database

+

name

+

PG_DATABASE.datname

+

执行该事务所在的数据库名。

+
+ diff --git a/content/zh/docs/Developerguide/PG_PROC.md b/content/zh/docs/Developerguide/PG_PROC.md index 8f22e3342..6fd1d919b 100644 --- a/content/zh/docs/Developerguide/PG_PROC.md +++ b/content/zh/docs/Developerguide/PG_PROC.md @@ -1,296 +1,296 @@ -# PG\_PROC - -PG\_PROC系统表存储函数或过程的信息。 - -**表 1** PG\_PROC字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

proname

-

name

-

函数名称。

-

pronamespace

-

oid

-

包含该函数名称空间的OID。

-

proowner

-

oid

-

函数的所有者。

-

prolang

-

oid

-

这个函数的实现语言或调用接口。

-

procost

-

real

-

估算的执行成本。

-

prorows

-

real

-

估算的影响行的数目。

-

provariadic

-

oid

-

参数元素的数据类型。

-

protransform

-

regproc

-

此函数的简化调用方式。

-

proisagg

-

Boolean

-

函数是聚集函数。

-
  • t(true):表示是。
  • f(false):表示不是。
-

proiswindow

-

Boolean

-

函数是窗口函数。

-
  • t(true):表示是。
  • f(false):表示不是。
-

prosecdef

-

Boolean

-

函数是一个安全定义器(也就是一个“setuid”函数)。

-
  • t(true):表示是。
  • f(false):表示不是。
-

proleakproof

-

Boolean

-

函数没副作用。如果函数没有对参数进行防泄露处理,则会抛出错误。

-
  • t(true):表示没副作用。
  • f(false):表示有副作用。
-

proisstrict

-

Boolean

-

如果任何调用参数是空,则函数返回空。这时函数实际上连调用都不调用。不是“strict”的函数必须准备处理空输入。

-

proretset

-

Boolean

-

函数返回一个集合(也就是说,指定数据类型的多个数值)。

-

provolatile

-

"char"

-
告诉该函数的结果是否只依赖于它的输入参数,或者还会被外界因素影响。
  • i:“不可变的”(immutable)函数,这样的函数对于相同的输入总是产生相同的结果。
  • s:“稳定的”(stable)函数它是s,(对于固定输入)其结果在一次扫描里不变。
  • v:“易变”(volatile)函数它是v,其结果可能在任何时候变化v也用于那些有副作用的函数,因此调用它们无法得到优化。
-
-

pronargs

-

smallint

-

参数数目。

-

pronargdefaults

-

smallint

-

有默认值的参数数目。

-

prorettype

-

oid

-

返回值的数据类型。

-

proargtypes

-

oidvector

-

一个存放函数参数的数据类型的数组。数组里只包括输入参数(包括INOUT参数)此代表该函数的调用签名(接口)。

-

proallargtypes

-

oid[]

-

一个包含函数参数的数据类型的数组。数组里包括所有参数的类型(包括OUT和INOUT参数),如果所有参数都是IN参数,则这个字段就会是空。请注意数组下标是以1为起点的,而因为历史原因,proargtypes的下标起点为0。

-

proargmodes

-

"char"[]

-

一个保存函数参数模式的数组,编码如下:

-
  • i表示IN参数。
  • o表示OUT参数。
  • b表示INOUT参数。
  • v表示VARIADIC参数。
-

如果所有参数都是IN参数,则这个字段为空。请注意,下标对应的是proallargtypes的位置,而不是proargtypes。

-

proargnames

-

text[]

-

一个保存函数参数的名称的数组。没有名称的参数在数组里设置为空字符串。如果没有一个参数有名称,这个字段将是空。请注意,此数组的下标对应proallargtypes而不是proargtypes。

-

proargdefaults

-

pg_node_tree

-

默认值的表达式树。是PRONARGDEFAULTS元素的列表。

-

prosrc

-

text

-

描述函数或存储过程的定义。例如,对于解释型语言来说就是函数的源程序,或者一个链接符号,一个文件名,或者函数和存储过程创建时指定的其他任何函数体内容,具体取决于语言/调用习惯的实现。

-

probin

-

text

-

关于如何调用该函数的附加信息。同样,其含义也是和语言相关的。

-

proconfig

-

text[]

-

函数针对运行时配置变量的本地设置。

-

proacl

-

aclitem[]

-

访问权限。具体请参见GRANTREVOKE

-

prodefaultargpos

-

int2vector

-

函数具有默认值的入参的位置。

-

fencedmode

-

Boolean

-

函数的执行模式,表示函数是在fence还是not fence模式下执行。如果是fence执行模式,函数的执行会在重新fork的进程中执行。

-

用户创建的C函数,fencedmode字段默认值均为true,即fence模式;系统内建函数,fencedmode字段均为false,即not fence模式。

-

proshippable

-

Boolean

-
表示该函数是否可以下推到数据库节点上执行,默认值是false。
  • 对于IMMUTABLE类型的函数,函数始终可以下推到数据库节点上执行。
  • 对于STABLE/VOLATILE类型的函数,仅当函数的属性是SHIPPABLE的时候,函数可以下推到数据库节点执行。
-
-

propackage

-

Boolean

-

表示该函数是否支持重载,默认值是false。

-
  • t(true):表示支持。
  • f(false):表示不支持。
-

prokind

-

"char"

-

表示该对象为函数还是存储过程:

-
  • 值为'f'表示该对象为函数。
  • 值为'p'表示该对象为存储过程。
-

proargsrc

-

text

-

描述兼容oracle语法定义的函数或存储过程的参数输入字符串,包括参数注释。默认值为NULL。

-

proisprivate

-

Boolean

-

描述函数是否是PACKAGE内的私有函数,默认为false。

-

propackageid

-

oid

-

函数所属的package oid,如果不在package内,则为0。

-

proargtypesext

-

oidvector_extend

-

当函数参数较多时,用来存放函数参数的数据类型的数组。数组里只包括输入参数(包括INOUT参数)此代表该函数的调用签名(接口)。

-

prodefaultargposext

-

int2vector_extend

-

当函数参数较多时,函数具有默认值的入参的位置。

-
- - +# PG\_PROC + +PG\_PROC系统表存储函数或过程的信息。 + +**表 1** PG\_PROC字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

proname

+

name

+

函数名称。

+

pronamespace

+

oid

+

包含该函数名称空间的 OID 。

+

proowner

+

oid

+

函数的所有者。

+

prolang

+

oid

+

这个函数的实现语言或调用接口。

+

procost

+

real

+

估算的执行成本。

+

prorows

+

real

+

估算的影响行的数目。

+

provariadic

+

oid

+

参数元素的数据类型。

+

protransform

+

regproc

+

此函数的简化调用方式。

+

proisagg

+

Boolean

+

函数是聚集函数。

+
  • t(true):表示是。
  • f(false):表示不是。
+

proiswindow

+

Boolean

+

函数是窗口函数。

+
  • t(true):表示是。
  • f(false):表示不是。
+

prosecdef

+

Boolean

+

函数是一个安全定义器(也就是一个“setuid”函数)。

+
  • t(true):表示是。
  • f(false):表示不是。
+

proleakproof

+

Boolean

+

函数没副作用。如果函数没有对参数进行防泄露处理,则会抛出错误。

+
  • t(true):表示没副作用。
  • f(false):表示有副作用。
+

proisstrict

+

Boolean

+

如果任何调用参数是空,则函数返回空。这时函数实际上连调用都不调用。不是“strict”的函数必须准备处理空输入。

+

proretset

+

Boolean

+

函数返回一个集合(也就是说,指定数据类型的多个数值)。

+

provolatile

+

"char"

+
告诉该函数的结果是否只依赖于它的输入参数,或者还会被外界因素影响。
  • i:“不可变的”(immutable)函数,这样的函数对于相同的输入总是产生相同的结果。
  • s:“稳定的”(stable)函数它是 s ,(对于固定输入)其结果在一次扫描里不变。
  • v:“易变”(volatile)函数它是 v ,其结果可能在任何时候变化 v 也用于那些有副作用的函数,因此调用它们无法得到优化。
+
+

pronargs

+

smallint

+

参数数目。

+

pronargdefaults

+

smallint

+

有默认值的参数数目。

+

prorettype

+

oid

+

返回值的数据类型。

+

proargtypes

+

oidvector

+

一个存放函数参数的数据类型的数组。数组里只包括输入参数(包括 INOUT 参数)此代表该函数的调用签名(接口)。

+

proallargtypes

+

oid[]

+

一个包含函数参数的数据类型的数组。数组里包括所有参数的类型(包括 OUT 和 INOUT 参数),如果所有参数都是 IN 参数,则这个字段就会是空。请注意数组下标是以 1 为起点的,而因为历史原因, proargtypes 的下标起点为 0 。

+

proargmodes

+

"char"[]

+

一个保存函数参数模式的数组,编码如下:

+
  • i表示 IN 参数。
  • o表示 OUT 参数。
  • b表示 INOUT 参数。
  • v表示 VARIADIC 参数。
+

如果所有参数都是 IN 参数,则这个字段为空。请注意,下标对应的是 proallargtypes 的位置,而不是 proargtypes 。

+

proargnames

+

text[]

+

一个保存函数参数的名称的数组。没有名称的参数在数组里设置为空字符串。如果没有一个参数有名称,这个字段将是空。请注意,此数组的下标对应 proallargtypes 而不是 proargtypes 。

+

proargdefaults

+

pg_node_tree

+

默认值的表达式树。是 PRONARGDEFAULTS 元素的列表。

+

prosrc

+

text

+

描述函数或存储过程的定义。例如,对于解释型语言来说就是函数的源程序,或者一个链接符号,一个文件名,或者函数和存储过程创建时指定的其他任何函数体内容,具体取决于语言/调用习惯的实现。

+

probin

+

text

+

关于如何调用该函数的附加信息。同样,其含义也是和语言相关的。

+

proconfig

+

text[]

+

函数针对运行时配置变量的本地设置。

+

proacl

+

aclitem[]

+

访问权限。具体请参见GRANTREVOKE

+

prodefaultargpos

+

int2vector

+

函数具有默认值的入参的位置。

+

fencedmode

+

Boolean

+

函数的执行模式,表示函数是在 fence 还是 not fence 模式下执行。如果是 fence 执行模式,函数的执行会在重新 fork 的进程中执行。

+

用户创建的 C 函数, fencedmode 字段默认值均为 true ,即 fence 模式;系统内建函数, fencedmode 字段均为 false ,即 not fence 模式。

+

proshippable

+

Boolean

+
表示该函数是否可以下推到数据库节点上执行,默认值是 false 。
  • 对于 IMMUTABLE 类型的函数,函数始终可以下推到数据库节点上执行。
  • 对于STABLE/VOLATILE类型的函数,仅当函数的属性是 SHIPPABLE 的时候,函数可以下推到数据库节点执行。
+
+

propackage

+

Boolean

+

表示该函数是否支持重载,默认值是 false 。

+
  • t(true):表示支持。
  • f(false):表示不支持。
+

prokind

+

"char"

+

表示该对象为函数还是存储过程:

+
  • 值为'f'表示该对象为函数。
  • 值为'p'表示该对象为存储过程。
+

proargsrc

+

text

+

描述兼容 oracle 语法定义的函数或存储过程的参数输入字符串,包括参数注释。默认值为 NULL 。

+

proisprivate

+

Boolean

+

描述函数是否是 PACKAGE 内的私有函数,默认为 false 。

+

propackageid

+

oid

+

函数所属的 package oid ,如果不在 package 内,则为 0 。

+

proargtypesext

+

oidvector_extend

+

当函数参数较多时,用来存放函数参数的数据类型的数组。数组里只包括输入参数(包括 INOUT 参数)此代表该函数的调用签名(接口)。

+

prodefaultargposext

+

int2vector_extend

+

当函数参数较多时,函数具有默认值的入参的位置。

+
+ + diff --git a/content/zh/docs/Developerguide/PG_RANGE.md b/content/zh/docs/Developerguide/PG_RANGE.md index e421ebfbf..08b8e21a2 100644 --- a/content/zh/docs/Developerguide/PG_RANGE.md +++ b/content/zh/docs/Developerguide/PG_RANGE.md @@ -1,76 +1,76 @@ -# PG\_RANGE - -PG\_RANGE系统表存储关于范围类型的信息。除了[PG\_TYPE](PG_TYPE.md)里类型的记录。 - -**表 1** PG\_RANGE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

rngtypid

-

oid

-

PG_TYPE.oid

-

范围类型的OID。

-

rngsubtype

-

oid

-

PG_TYPE.oid

-

这个范围类型的元素类型(子类型)的OID。

-

rngcollation

-

oid

-

PG_COLLATION.oid

-

用于范围比较的排序规则的OID,如果没有则为零。

-

rngsubopc

-

oid

-

PG_OPCLASS.oid

-

用于范围比较的子类型的操作符类的OID。

-

rngcanonical

-

regproc

-

PG_PROC.proname

-

转换范围类型为规范格式的函数名,如果没有则为0。

-

rngsubdiff

-

regproc

-

PG_PROC.proname

-

返回两个double precision元素值的不同的函数名,如果没有则为0。

-
- -rngsubopc(如果元素类型是可排序的,则加上rngcollation)决定用于范围类型的排序顺序。当元素类型是离散的时使用rngcanonical。 - +# PG\_RANGE + +PG\_RANGE系统表存储关于范围类型的信息。除了[PG\_TYPE](PG_TYPE.md)里类型的记录。 + +**表 1** PG\_RANGE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

rngtypid

+

oid

+

PG_TYPE.oid

+

范围类型的 OID 。

+

rngsubtype

+

oid

+

PG_TYPE.oid

+

这个范围类型的元素类型(子类型)的 OID 。

+

rngcollation

+

oid

+

PG_COLLATION.oid

+

用于范围比较的排序规则的 OID ,如果没有则为零。

+

rngsubopc

+

oid

+

PG_OPCLASS.oid

+

用于范围比较的子类型的操作符类的 OID 。

+

rngcanonical

+

regproc

+

PG_PROC.proname

+

转换范围类型为规范格式的函数名,如果没有则为 0 。

+

rngsubdiff

+

regproc

+

PG_PROC.proname

+

返回两个 double precision 元素值的不同的函数名,如果没有则为 0 。

+
+ +rngsubopc(如果元素类型是可排序的,则加上rngcollation)决定用于范围类型的排序顺序。当元素类型是离散的时使用 rngcanonical 。 + diff --git a/content/zh/docs/Developerguide/PG_REPLICATION_SLOTS.md b/content/zh/docs/Developerguide/PG_REPLICATION_SLOTS.md index e05c955ff..cc4ba38bd 100644 --- a/content/zh/docs/Developerguide/PG_REPLICATION_SLOTS.md +++ b/content/zh/docs/Developerguide/PG_REPLICATION_SLOTS.md @@ -1,88 +1,88 @@ -# PG\_REPLICATION\_SLOTS - -PG\_REPLICATION\_SLOTS视图查看复制节点的信息。 - -**表 1** PG\_REPLICATION\_SLOTS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

slot_name

-

text

-

复制节点的名称。

-

plugin

-

text

-

逻辑复制槽对应的输出插件名。

-

slot_type

-

text

-

复制节点的类型。

-

datoid

-

oid

-

复制节点的数据库OID。

-

database

-

name

-

复制节点的数据库名称。

-

active

-

Boolean

-

复制节点是否为激活状态。

-

xmin

-

xid

-

复制节点事务标识。

-

catalog_xmin

-

xid

-

逻辑复制槽对应的最早解码事务标识。

-

restart_lsn

-

text

-

复制节点的Xlog文件信息。

-

dummy_standby

-

Boolean

-

复制节点是否为假备。

-
- +# PG\_REPLICATION\_SLOTS + +PG\_REPLICATION\_SLOTS视图查看复制节点的信息。 + +**表 1** PG\_REPLICATION\_SLOTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

slot_name

+

text

+

复制节点的名称。

+

plugin

+

text

+

逻辑复制槽对应的输出插件名。

+

slot_type

+

text

+

复制节点的类型。

+

datoid

+

oid

+

复制节点的数据库 OID 。

+

database

+

name

+

复制节点的数据库名称。

+

active

+

Boolean

+

复制节点是否为激活状态。

+

xmin

+

xid

+

复制节点事务标识。

+

catalog_xmin

+

xid

+

逻辑复制槽对应的最早解码事务标识。

+

restart_lsn

+

text

+

复制节点的 Xlog 文件信息。

+

dummy_standby

+

Boolean

+

复制节点是否为假备。

+
+ diff --git a/content/zh/docs/Developerguide/PG_RESOURCE_POOL.md b/content/zh/docs/Developerguide/PG_RESOURCE_POOL.md index e23b83236..ae55e8a21 100644 --- a/content/zh/docs/Developerguide/PG_RESOURCE_POOL.md +++ b/content/zh/docs/Developerguide/PG_RESOURCE_POOL.md @@ -1,116 +1,116 @@ -# PG\_RESOURCE\_POOL - -PG\_RESOURCE\_POOL系统表提供了数据库资源池的信息。 - -**表 1** PG\_RESOURCE\_POOL字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

respool_name

-

name

-

资源池名称。

-

mem_percent

-

integer

-

内存配置的百分比。

-

cpu_affinity

-

bigint

-

CPU绑定core的数值。

-

control_group

-

name

-

资源池所在的control group名称。

-

active_statements

-

integer

-

资源池上最大的并发数。

-

max_dop

-

integer

-

最大并发度。用作扩容的接口,表示数据重分布时,扫描并发度。

-

memory_limit

-

name

-

资源池最大的内存。

-

parentid

-

oid

-

父资源池OID。

-

io_limits

-

integer

-

每秒触发IO的次数上限。行存单位是万次/s,列存是次/s。

-

io_priority

-

name

-

IO利用率高达90%时,重消耗IO作业进行IO资源管控时关联的优先级等级。

-

nodegroup

-

name

-

表示资源池所在的逻辑openGauss的名称。

-

is_foreign

-

boolean

-

表示资源池是否用于逻辑openGauss之外的用户。如果为true,表示资源池用来控制不属于当前资源池的普通用户的资源。

-

max_worker

-

integer

-

只用于扩容的接口,表示扩容数据重分布时,表内并发度。

-
-注:max_dop和max_worker用户扩容,不适用于openGauss。 +# PG\_RESOURCE\_POOL + +PG\_RESOURCE\_POOL系统表提供了数据库资源池的信息。 + +**表 1** PG\_RESOURCE\_POOL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

respool_name

+

name

+

资源池名称。

+

mem_percent

+

integer

+

内存配置的百分比。

+

cpu_affinity

+

bigint

+

CPU绑定 core 的数值。

+

control_group

+

name

+

资源池所在的 control group 名称。

+

active_statements

+

integer

+

资源池上最大的并发数。

+

max_dop

+

integer

+

最大并发度。用作扩容的接口,表示数据重分布时,扫描并发度。

+

memory_limit

+

name

+

资源池最大的内存。

+

parentid

+

oid

+

父资源池 OID 。

+

io_limits

+

integer

+

每秒触发 IO 的次数上限。行存单位是万次/s,列存是次/s。

+

io_priority

+

name

+

IO利用率高达90%时,重消耗 IO 作业进行 IO 资源管控时关联的优先级等级。

+

nodegroup

+

name

+

表示资源池所在的逻辑openGauss的名称。

+

is_foreign

+

boolean

+

表示资源池是否用于逻辑openGauss之外的用户。如果为 true ,表示资源池用来控制不属于当前资源池的普通用户的资源。

+

max_worker

+

integer

+

只用于扩容的接口,表示扩容数据重分布时,表内并发度。

+
+注:max_dop和 max_worker 用户扩容,不适用于 openGauss 。 diff --git a/content/zh/docs/Developerguide/PG_REWRITE.md b/content/zh/docs/Developerguide/PG_REWRITE.md index 65d62adbd..f325486bf 100644 --- a/content/zh/docs/Developerguide/PG_REWRITE.md +++ b/content/zh/docs/Developerguide/PG_REWRITE.md @@ -1,83 +1,83 @@ -# PG\_REWRITE - -PG\_REWRITE系统表存储为表和视图定义的重写规则。 - -**表 1** PG\_REWRITE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

rulename

-

name

-

规则名称。

-

ev_class

-

oid

-

使用这条规则的表名称。

-

ev_attr

-

smallint

-

这条规则适用的字段(目前总是为零,表示整个表)。

-

ev_type

-

"char"

-
规则适用的事件类型:
  • 1 = SELECT。
  • 2 = UPDATE。
  • 3 = INSERT。
  • 4 = DELETE。
-
-

ev_enabled

-

"char"

-
用于控制复制的触发。
  • O =“origin”和“local”模式时触发。
  • D =禁用触发。
  • R =“replica”时触发。
  • A =任何模式是都会触发。
-
-

is_instead

-

Boolean

-

如果该规则是INSTEAD规则,则为真。

-

ev_qual

-

pg_node_tree

-

规则的资格条件的表达式树(以nodeToString()形式存在)。

-

ev_action

-

pg_node_tree

-

规则动作的查询树(以nodeToString()形式存在)。

-
- +# PG\_REWRITE + +PG\_REWRITE系统表存储为表和视图定义的重写规则。 + +**表 1** PG\_REWRITE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

rulename

+

name

+

规则名称。

+

ev_class

+

oid

+

使用这条规则的表名称。

+

ev_attr

+

smallint

+

这条规则适用的字段(目前总是为零,表示整个表)。

+

ev_type

+

"char"

+
规则适用的事件类型:
  • 1 = SELECT。
  • 2 = UPDATE。
  • 3 = INSERT。
  • 4 = DELETE。
+
+

ev_enabled

+

"char"

+
用于控制复制的触发。
  • O =“origin”和“local”模式时触发。
  • D =禁用触发。
  • R =“replica”时触发。
  • A =任何模式是都会触发。
+
+

is_instead

+

Boolean

+

如果该规则是 INSTEAD 规则,则为真。

+

ev_qual

+

pg_node_tree

+

规则的资格条件的表达式树(以 nodeToString() 形式存在)。

+

ev_action

+

pg_node_tree

+

规则动作的查询树(以 nodeToString() 形式存在)。

+
+ diff --git a/content/zh/docs/Developerguide/PG_RLSPOLICIES.md b/content/zh/docs/Developerguide/PG_RLSPOLICIES.md index 3b1aeb173..bdfe0bfb0 100644 --- a/content/zh/docs/Developerguide/PG_RLSPOLICIES.md +++ b/content/zh/docs/Developerguide/PG_RLSPOLICIES.md @@ -1,67 +1,67 @@ -# PG\_RLSPOLICIES - -PG\_RLSPOLICIES视图提供查询行级访问控制策略。 - -**表 1** PG\_RLSPOLICIES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

schemaname

-

name

-

行级访问控制策略作用的表对象所属模式名称。

-

tablename

-

name

-

行级访问控制策略作用的表对象名称。

-

policyname

-

name

-

行级访问控制策略名称。

-

policypermissive

-

text

-

行级访问控制策略属性。

-

policyroles

-

name[]

-

行级访问控制策略影响的用户列表,不指定表示影响所有的用户。

-

policycmd

-

text

-

行级访问控制策略影响的SQL操作。

-

policyqual

-

text

-

行级访问控制策略的表达式。

-
- +# PG\_RLSPOLICIES + +PG\_RLSPOLICIES视图提供查询行级访问控制策略。 + +**表 1** PG\_RLSPOLICIES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

行级访问控制策略作用的表对象所属模式名称。

+

tablename

+

name

+

行级访问控制策略作用的表对象名称。

+

policyname

+

name

+

行级访问控制策略名称。

+

policypermissive

+

text

+

行级访问控制策略属性。

+

policyroles

+

name[]

+

行级访问控制策略影响的用户列表,不指定表示影响所有的用户。

+

policycmd

+

text

+

行级访问控制策略影响的 SQL 操作。

+

policyqual

+

text

+

行级访问控制策略的表达式。

+
+ diff --git a/content/zh/docs/Developerguide/PG_RLSPOLICY.md b/content/zh/docs/Developerguide/PG_RLSPOLICY.md index f49685bb9..db2e66471 100644 --- a/content/zh/docs/Developerguide/PG_RLSPOLICY.md +++ b/content/zh/docs/Developerguide/PG_RLSPOLICY.md @@ -1,67 +1,67 @@ -# PG\_RLSPOLICY - -PG\_RLSPOLICY系统表存储行级访问控制策略。 - -**表 1** PG\_RLSPOLICY字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

polname

-

name

-

行级访问控制策略的名称。

-

polrelid

-

oid

-

行级访问控制策略作用的表对象oid。

-

polcmd

-

"char"

-

行级访问控制策略影响的SQL操作。

-

polpermissive

-

boolean

-

行级访问控制策略的属性,t为表达式OR条件拼接,f为表达式AND条件拼接。

-

polroles

-

oid[]

-

行级访问控制策略影响的用户oid列表,不指定表示影响所有的用户。

-

polqual

-

pg_node_tree

-

行级访问控制策略的表达式。

-
- +# PG\_RLSPOLICY + +PG\_RLSPOLICY系统表存储行级访问控制策略。 + +**表 1** PG\_RLSPOLICY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

polname

+

name

+

行级访问控制策略的名称。

+

polrelid

+

oid

+

行级访问控制策略作用的表对象 oid 。

+

polcmd

+

"char"

+

行级访问控制策略影响的 SQL 操作。

+

polpermissive

+

boolean

+

行级访问控制策略的属性, t 为表达式 OR 条件拼接, f 为表达式 AND 条件拼接。

+

polroles

+

oid[]

+

行级访问控制策略影响的用户 oid 列表,不指定表示影响所有的用户。

+

polqual

+

pg_node_tree

+

行级访问控制策略的表达式。

+
+ diff --git a/content/zh/docs/Developerguide/PG_ROLES.md b/content/zh/docs/Developerguide/PG_ROLES.md index 392e19f1c..1a9939aa9 100644 --- a/content/zh/docs/Developerguide/PG_ROLES.md +++ b/content/zh/docs/Developerguide/PG_ROLES.md @@ -1,262 +1,262 @@ -# PG\_ROLES - -PG\_ROLES视图提供访问数据库角色的相关信息,初始化用户和具有sysadmin属性或createrole属性的用户可以查看全部角色的信息,其他用户只能查看自己的信息。 - -**表 1** PG\_ROLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

rolname

-

name

-

-

-

角色名称。

-

rolsuper

-

Boolean

-

-

-

该角色是否是拥有最高权限的初始系统管理员。

-

rolinherit

-

Boolean

-

-

-

该角色是否继承角色的权限。

-

rolcreaterole

-

Boolean

-

-

-

该角色是否可以创建其他的角色。

-

rolcreatedb

-

Boolean

-

-

-

该角色是否可以创建数据库。

-

rolcatupdate

-

Boolean

-

-

-

该角色是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。

-

rolcanlogin

-

Boolean

-

-

-

该角色是否可以登录数据库。

-

rolreplication

-

Boolean

-

-

-

该角色是否可以复制。

-

rolauditadmin

-

Boolean

-

-

-

该角色是否为审计管理员。

-

rolsystemadmin

-

Boolean

-

-

-

该角色是否为系统管理员。

-

rolconnlimit

-

integer

-

-

-

对于可以登录的角色,这里限制了该角色允许发起的最大并发连接数。-1表示无限制。

-

rolpassword

-

text

-

-

-

不是口令,总是********。

-

rolvalidbegin

-

timestamp with time zone

-

-

-

帐户的有效开始时间;如果没有设置有效开始时间,则为NULL。

-

rolvaliduntil

-

timestamp with time zone

-

-

-

帐户的有效结束时间;如果没有设置有效结束时间,则为NULL。

-

rolrespool

-

name

-

-

-

用户所能够使用的resource pool。

-

rolparentid

-

oid

-

PG_AUTHID.rolparentid

-

用户所在组用户的OID。

-

roltabspace

-

text

-

-

-

用户永久表存储空间限额。

-

roltempspace

-

text

-

-

-

用户临时表存储空间限额。

-

rolspillspace

-

text

-

-

-

用户算子落盘空间限额。

-

rolconfig

-

text[]

-

-

-

运行时配置变量的会话缺省。

-

oid

-

oid

-

PG_AUTHID.oid

-

角色的ID。

-

roluseft

-

Boolean

-

PG_AUTHID.roluseft

-

角色是否可以操作外表。

-

rolkind

-

"char"

-

-

-

角色类型。

-

nodegroup

-

name

-

-

-

该字段不支持。

-

rolmonitoradmin

-

Boolean

-

-

-

该角色是否为监控管理员。

-

roloperatoradmin

-

Boolean

-

-

-

该角色是否为运维管理员。

-

rolpolicyadmin

-

Boolean

-

-

-

该角色是否为安全策略管理员。

-
+# PG\_ROLES + +PG\_ROLES视图提供访问数据库角色的相关信息,初始化用户和具有 sysadmin 属性或 createrole 属性的用户可以查看全部角色的信息,其他用户只能查看自己的信息。 + +**表 1** PG\_ROLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

rolname

+

name

+

-

+

角色名称。

+

rolsuper

+

Boolean

+

-

+

该角色是否是拥有最高权限的初始系统管理员。

+

rolinherit

+

Boolean

+

-

+

该角色是否继承角色的权限。

+

rolcreaterole

+

Boolean

+

-

+

该角色是否可以创建其他的角色。

+

rolcreatedb

+

Boolean

+

-

+

该角色是否可以创建数据库。

+

rolcatupdate

+

Boolean

+

-

+

该角色是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。

+

rolcanlogin

+

Boolean

+

-

+

该角色是否可以登录数据库。

+

rolreplication

+

Boolean

+

-

+

该角色是否可以复制。

+

rolauditadmin

+

Boolean

+

-

+

该角色是否为审计管理员。

+

rolsystemadmin

+

Boolean

+

-

+

该角色是否为系统管理员。

+

rolconnlimit

+

integer

+

-

+

对于可以登录的角色,这里限制了该角色允许发起的最大并发连接数。-1表示无限制。

+

rolpassword

+

text

+

-

+

不是口令,总是********。

+

rolvalidbegin

+

timestamp with time zone

+

-

+

帐户的有效开始时间;如果没有设置有效开始时间,则为 NULL 。

+

rolvaliduntil

+

timestamp with time zone

+

-

+

帐户的有效结束时间;如果没有设置有效结束时间,则为 NULL 。

+

rolrespool

+

name

+

-

+

用户所能够使用的 resource pool 。

+

rolparentid

+

oid

+

PG_AUTHID.rolparentid

+

用户所在组用户的 OID 。

+

roltabspace

+

text

+

-

+

用户永久表存储空间限额。

+

roltempspace

+

text

+

-

+

用户临时表存储空间限额。

+

rolspillspace

+

text

+

-

+

用户算子落盘空间限额。

+

rolconfig

+

text[]

+

-

+

运行时配置变量的会话缺省。

+

oid

+

oid

+

PG_AUTHID.oid

+

角色的 ID 。

+

roluseft

+

Boolean

+

PG_AUTHID.roluseft

+

角色是否可以操作外表。

+

rolkind

+

"char"

+

-

+

角色类型。

+

nodegroup

+

name

+

-

+

该字段不支持。

+

rolmonitoradmin

+

Boolean

+

-

+

该角色是否为监控管理员。

+

roloperatoradmin

+

Boolean

+

-

+

该角色是否为运维管理员。

+

rolpolicyadmin

+

Boolean

+

-

+

该角色是否为安全策略管理员。

+
diff --git a/content/zh/docs/Developerguide/PG_RULES.md b/content/zh/docs/Developerguide/PG_RULES.md index ec34e7522..6e6e8179f 100644 --- a/content/zh/docs/Developerguide/PG_RULES.md +++ b/content/zh/docs/Developerguide/PG_RULES.md @@ -1,46 +1,46 @@ -# PG\_RULES - -PG\_RULES视图提供对查询重写规则的有用信息访问的接口。 - -**表 1** PG\_RULES字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

schemaname

-

name

-

包含表的模式的名称。

-

tablename

-

name

-

规则作用的表的名称。

-

rulename

-

name

-

规则的名称。

-

definition

-

text

-

规则定义(一个重新构造的创建命令)。

-
- +# PG\_RULES + +PG\_RULES视图提供对查询重写规则的有用信息访问的接口。 + +**表 1** PG\_RULES字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

包含表的模式的名称。

+

tablename

+

name

+

规则作用的表的名称。

+

rulename

+

name

+

规则的名称。

+

definition

+

text

+

规则定义(一个重新构造的创建命令)。

+
+ diff --git a/content/zh/docs/Developerguide/PG_RUNNING_XACTS.md b/content/zh/docs/Developerguide/PG_RUNNING_XACTS.md index f20356ead..c8b224826 100644 --- a/content/zh/docs/Developerguide/PG_RUNNING_XACTS.md +++ b/content/zh/docs/Developerguide/PG_RUNNING_XACTS.md @@ -1,89 +1,89 @@ -# PG\_RUNNING\_XACTS - -PG\_RUNNING\_XACTS视图主要功能是显示当前节点运行事务的信息。 - -**表 1** PG\_RUNNING\_XACTS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

handle

-

integer

-

事务在GTM对应的句柄。

-

gxid

-

xid

-

事务id号。

-

state

-

tinyint

-

事务状态(3:prepared或者0:starting)。

-

node

-

text

-

节点名称。

-

xmin

-

xid

-

节点上当前数据涉及的最小事务号xmin。

-

vacuum

-

Boolean

-

标志当前事务是否是lazy vacuum事务。

-
  • t(true):表示是。
  • f(false):表示否。
-

timeline

-

bigint

-

标志数据库重启次数。

-

prepare_xid

-

xid

-

处于prepared状态的事务的id号,若不在prepared状态,值为0。

-

pid

-

bigint

-

事务对应的线程id。

-

next_xid

-

xid

-

CN传给DN的事务id号。

-
- +# PG\_RUNNING\_XACTS + +PG\_RUNNING\_XACTS视图主要功能是显示当前节点运行事务的信息。 + +**表 1** PG\_RUNNING\_XACTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

handle

+

integer

+

事务在 GTM 对应的句柄。

+

gxid

+

xid

+

事务 id 号。

+

state

+

tinyint

+

事务状态(3:prepared或者0:starting)。

+

node

+

text

+

节点名称。

+

xmin

+

xid

+

节点上当前数据涉及的最小事务号 xmin 。

+

vacuum

+

Boolean

+

标志当前事务是否是 lazy vacuum 事务。

+
  • t(true):表示是。
  • f(false):表示否。
+

timeline

+

bigint

+

标志数据库重启次数。

+

prepare_xid

+

xid

+

处于 prepared 状态的事务的 id 号,若不在 prepared 状态,值为 0 。

+

pid

+

bigint

+

事务对应的线程 id 。

+

next_xid

+

xid

+

CN传给DN的事务 id 号。

+
+ diff --git a/content/zh/docs/Developerguide/PG_SECLABEL.md b/content/zh/docs/Developerguide/PG_SECLABEL.md index 7467dd5ea..18486cadf 100644 --- a/content/zh/docs/Developerguide/PG_SECLABEL.md +++ b/content/zh/docs/Developerguide/PG_SECLABEL.md @@ -1,67 +1,67 @@ -# PG\_SECLABEL - -PG\_SECLABEL系统表存储数据对象上的安全标签。 - -[PG\_SHSECLABEL](PG_SHSECLABEL.md)的作用类似,只是它是用于在一个openGauss内共享的数据库对象的安全标签上的。 - -**表 1** PG\_SECLABEL字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

objoid

-

oid

-

任意OID属性

-

这个安全标签所属的对象的OID。

-

classoid

-

oid

-

PG_CLASS.oid

-

出现这个对象的系统目录的OID。

-

objsubid

-

integer

-

-

-

出现在这个对象中的列的序号。

-

provider

-

text

-

-

-

与这个标签相关的标签提供程序。

-

label

-

text

-

-

-

应用于这个对象的安全标签。

-
- +# PG\_SECLABEL + +PG\_SECLABEL系统表存储数据对象上的安全标签。 + +[PG\_SHSECLABEL](PG_SHSECLABEL.md)的作用类似,只是它是用于在一个 openGauss 内共享的数据库对象的安全标签上的。 + +**表 1** PG\_SECLABEL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

objoid

+

oid

+

任意 OID 属性

+

这个安全标签所属的对象的 OID 。

+

classoid

+

oid

+

PG_CLASS.oid

+

出现这个对象的系统目录的 OID 。

+

objsubid

+

integer

+

-

+

出现在这个对象中的列的序号。

+

provider

+

text

+

-

+

与这个标签相关的标签提供程序。

+

label

+

text

+

-

+

应用于这个对象的安全标签。

+
+ diff --git a/content/zh/docs/Developerguide/PG_SECLABELS.md b/content/zh/docs/Developerguide/PG_SECLABELS.md index 887231ff5..aaf8ceefd 100644 --- a/content/zh/docs/Developerguide/PG_SECLABELS.md +++ b/content/zh/docs/Developerguide/PG_SECLABELS.md @@ -1,92 +1,92 @@ -# PG\_SECLABELS - -PG\_SECLABELS视图提供关于安全标签的信息。 - -**表 1** PG\_SECLABELS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

objoid

-

oid

-

任意OID属性

-

这个安全标签指向的对象的OID。

-

classoid

-

oid

-

PG_CLASS.oid

-

这个对象出现的系统表的OID。

-

objsubid

-

integer

-

-

-

对于一个在表字段上的安全标签,是字段编号(引用表本身的objoid和classoid)。对于所有其他对象类型,这个字段为0。

-

objtype

-

text

-

-

-

这个标签出现的对象的类型,文本格式。

-

objnamespace

-

oid

-

PG_NAMESPACE.oid

-

这个对象的名称空间的OID,如果适用;否则为NULL。

-

objname

-

text

-

-

-

这个标签适用的对象的名称,文本格式。

-

provider

-

text

-

PG_SECLABEL.provider

-

与这个标签相关的标签提供者。

-

label

-

text

-

PG_SECLABEL.label

-

适用于这个对象的安全标签。

-
- +# PG\_SECLABELS + +PG\_SECLABELS视图提供关于安全标签的信息。 + +**表 1** PG\_SECLABELS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

objoid

+

oid

+

任意 OID 属性

+

这个安全标签指向的对象的 OID 。

+

classoid

+

oid

+

PG_CLASS.oid

+

这个对象出现的系统表的 OID 。

+

objsubid

+

integer

+

-

+

对于一个在表字段上的安全标签,是字段编号(引用表本身的 objoid 和classoid)。对于所有其他对象类型,这个字段为 0 。

+

objtype

+

text

+

-

+

这个标签出现的对象的类型,文本格式。

+

objnamespace

+

oid

+

PG_NAMESPACE.oid

+

这个对象的名称空间的 OID ,如果适用;否则为 NULL 。

+

objname

+

text

+

-

+

这个标签适用的对象的名称,文本格式。

+

provider

+

text

+

PG_SECLABEL.provider

+

与这个标签相关的标签提供者。

+

label

+

text

+

PG_SECLABEL.label

+

适用于这个对象的安全标签。

+
+ diff --git a/content/zh/docs/Developerguide/PG_SESSION_IOSTAT.md b/content/zh/docs/Developerguide/PG_SESSION_IOSTAT.md index 53ef441ee..c474d8057 100644 --- a/content/zh/docs/Developerguide/PG_SESSION_IOSTAT.md +++ b/content/zh/docs/Developerguide/PG_SESSION_IOSTAT.md @@ -1,90 +1,90 @@ -# PG\_SESSION\_IOSTAT - -PG\_SESSION\_IOSTAT视图显示当前用户执行作业正在运行时的IO负载管理相关信息。查询该视图需要sysadmin权限或者monitor admin权限。 - -以下涉及到iops,对于行存,均以万次/s为单位,对于列存,均以次/s为单位。 - -**表 1** PG\_SESSION\_IOSTAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

query_id

-

bigint

-

作业id。

-

mincurriops

-

integer

-

该作业当前io在数据库实例中的最小值。

-

maxcurriops

-

integer

-

该作业当前io在数据库实例中的最大值。

-

minpeakiops

-

integer

-

在作业运行时,作业io峰值中,数据库实例的最小值。

-

maxpeakiops

-

integer

-

在作业运行时,作业io峰值中,数据库实例的最大值。

-

io_limits

-

integer

-

该作业所设GUC参数io_limits。

-

io_priority

-

text

-

该作业所设GUC参数io_priority。

-

query

-

text

-

作业。

-

node_group

-

text

-

该字段不支持。

-

curr_io_limits

-

integer

-

使用io_priority管控io时的实时io_limits值。

-
- +# PG\_SESSION\_IOSTAT + +PG\_SESSION\_IOSTAT视图显示当前用户执行作业正在运行时的 IO 负载管理相关信息。查询该视图需要 sysadmin 权限或者 monitor admin 权限。 + +以下涉及到 iops ,对于行存,均以万次/s为单位,对于列存,均以次/s为单位。 + +**表 1** PG\_SESSION\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

query_id

+

bigint

+

作业 id 。

+

mincurriops

+

integer

+

该作业当前 io 在数据库实例中的最小值。

+

maxcurriops

+

integer

+

该作业当前 io 在数据库实例中的最大值。

+

minpeakiops

+

integer

+

在作业运行时,作业 io 峰值中,数据库实例的最小值。

+

maxpeakiops

+

integer

+

在作业运行时,作业 io 峰值中,数据库实例的最大值。

+

io_limits

+

integer

+

该作业所设 GUC 参数 io_limits 。

+

io_priority

+

text

+

该作业所设 GUC 参数 io_priority 。

+

query

+

text

+

作业。

+

node_group

+

text

+

该字段不支持。

+

curr_io_limits

+

integer

+

使用 io_priority 管控 io 时的实时 io_limits 值。

+
+ diff --git a/content/zh/docs/Developerguide/PG_SESSION_WLMSTAT.md b/content/zh/docs/Developerguide/PG_SESSION_WLMSTAT.md index f9f9ccac3..1f5ea9b30 100644 --- a/content/zh/docs/Developerguide/PG_SESSION_WLMSTAT.md +++ b/content/zh/docs/Developerguide/PG_SESSION_WLMSTAT.md @@ -1,187 +1,187 @@ -# PG\_SESSION\_WLMSTAT - -PG\_SESSION\_WLMSTAT视图显示当前用户执行作业正在运行时的负载管理相关信息。查询该视图需要sysadmin权限。 - -**表 1** PG\_SESSION\_WLMSTAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

连接后端的数据库OID。

-

datname

-

name

-

连接后端的数据库名称。

-

threadid

-

bigint

-

后端线程ID。

-

sessionid

-

bigint

-

会话ID。

-

processid

-

integer

-

后端线程的pid。

-

usesysid

-

oid

-

登录后端的用户OID。

-

appname

-

text

-

连接到后端的应用名。

-

usename

-

name

-

登录到该后端的用户名。

-

priority

-

bigint

-

语句所在Cgroups的优先级。

-

attribute

-

text

-
语句的属性:
  • Ordinary:语句发送到数据库后被解析前的默认属性。
  • Simple:简单语句。
  • Complicated:复杂语句。
  • Internal:数据库内部语句。
  • Unknown:未知。
-
-

block_time

-

bigint

-

语句当前为止的pending的时间,单位s。

-

elapsed_time

-

bigint

-

语句当前为止的实际执行时间,单位s。

-

total_cpu_time

-

bigint

-

语句在上一时间周期内的数据库实例上CPU使用的总时间,单位s。

-

cpu_skew_percent

-

integer

-

语句在上一时间周期内的数据库实例上CPU使用的倾斜率。

-

statement_mem

-

integer

-

语句执行使用的statement_mem,预留字段。

-

active_points

-

integer

-

语句占用的资源池并发点数。

-

dop_value

-

integer

-

语句的从资源池中获取的dop值。

-

control_group

-

text

-

该字段不支持。

-

status

-

text

-
语句当前的状态,包括:
  • pending:执行前状态。
  • running:执行进行状态。
  • finished:执行正常结束。(当enqueue字段为StoredProc或Transaction时,仅代表语句中的部分作业已经执行完毕,该状态会持续到该语句完全执行完毕。)
  • aborted:执行异常终止。
  • active:非以上四种状态外的正常状态。
  • unknown:未知状态。
-
-

enqueue

-

text

-

该字段不支持。

-

resource_pool

-

name

-

语句当前所在的资源池。

-

query

-

text

-

该后端的最新查询。如果state状态是active(活的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

-

is_plana

-

boolean

-

该字段不支持。

-

node_group

-

text

-

该字段不支持。

-
+# PG\_SESSION\_WLMSTAT + +PG\_SESSION\_WLMSTAT视图显示当前用户执行作业正在运行时的负载管理相关信息。查询该视图需要 sysadmin 权限。 + +**表 1** PG\_SESSION\_WLMSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据库 OID 。

+

datname

+

name

+

连接后端的数据库名称。

+

threadid

+

bigint

+

后端线程 ID 。

+

sessionid

+

bigint

+

会话 ID 。

+

processid

+

integer

+

后端线程的 pid 。

+

usesysid

+

oid

+

登录后端的用户 OID 。

+

appname

+

text

+

连接到后端的应用名。

+

usename

+

name

+

登录到该后端的用户名。

+

priority

+

bigint

+

语句所在 Cgroups 的优先级。

+

attribute

+

text

+
语句的属性:
  • Ordinary:语句发送到数据库后被解析前的默认属性。
  • Simple:简单语句。
  • Complicated:复杂语句。
  • Internal:数据库内部语句。
  • Unknown:未知。
+
+

block_time

+

bigint

+

语句当前为止的 pending 的时间,单位 s 。

+

elapsed_time

+

bigint

+

语句当前为止的实际执行时间,单位 s 。

+

total_cpu_time

+

bigint

+

语句在上一时间周期内的数据库实例上 CPU 使用的总时间,单位 s 。

+

cpu_skew_percent

+

integer

+

语句在上一时间周期内的数据库实例上 CPU 使用的倾斜率。

+

statement_mem

+

integer

+

语句执行使用的 statement_mem ,预留字段。

+

active_points

+

integer

+

语句占用的资源池并发点数。

+

dop_value

+

integer

+

语句的从资源池中获取的 dop 值。

+

control_group

+

text

+

该字段不支持。

+

status

+

text

+
语句当前的状态,包括:
  • pending:执行前状态。
  • running:执行进行状态。
  • finished:执行正常结束。(当 enqueue 字段为 StoredProc 或 Transaction 时,仅代表语句中的部分作业已经执行完毕,该状态会持续到该语句完全执行完毕。)
  • aborted:执行异常终止。
  • active:非以上四种状态外的正常状态。
  • unknown:未知状态。
+
+

enqueue

+

text

+

该字段不支持。

+

resource_pool

+

name

+

语句当前所在的资源池。

+

query

+

text

+

该后端的最新查询。如果 state 状态是active(活的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

+

is_plana

+

boolean

+

该字段不支持。

+

node_group

+

text

+

该字段不支持。

+
diff --git a/content/zh/docs/Developerguide/PG_SETTINGS.md b/content/zh/docs/Developerguide/PG_SETTINGS.md index f9d337916..7b6afe665 100644 --- a/content/zh/docs/Developerguide/PG_SETTINGS.md +++ b/content/zh/docs/Developerguide/PG_SETTINGS.md @@ -1,130 +1,130 @@ -# PG\_SETTINGS - -PG\_SETTINGS视图显示数据库运行时参数的相关信息。 - -**表 1** PG\_SETTINGS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

name

-

text

-

参数名称。

-

setting

-

text

-

参数当前值。

-

unit

-

text

-

参数的隐式结构。

-

category

-

text

-

参数的逻辑组。

-

short_desc

-

text

-

参数的简单描述。

-

extra_desc

-

text

-

参数的详细描述。

-

context

-

text

-

设置参数值的上下文,包括internal、postmaster、sighup、backend、superuser、user。

-

vartype

-

text

-

参数类型,包括bool、enum、integer、real、string。

-

source

-

text

-

参数的赋值方式。

-

min_val

-

text

-

参数最小值。如果参数类型不是数值型,那么该字段值为null。

-

max_val

-

text

-

参数最大值。如果参数类型不是数值型,那么该字段值为null。

-

enumvals

-

text[]

-

enum类型参数合法值。如果参数类型不是enum型,那么该字段值为null。

-

boot_val

-

text

-

数据库启动时参数默认值。

-

reset_val

-

text

-

数据库重置时参数默认值。

-

sourcefile

-

text

-

设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为null。

-

sourceline

-

integer

-

设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为null。

-
- +# PG\_SETTINGS + +PG\_SETTINGS视图显示数据库运行时参数的相关信息。 + +**表 1** PG\_SETTINGS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

name

+

text

+

参数名称。

+

setting

+

text

+

参数当前值。

+

unit

+

text

+

参数的隐式结构。

+

category

+

text

+

参数的逻辑组。

+

short_desc

+

text

+

参数的简单描述。

+

extra_desc

+

text

+

参数的详细描述。

+

context

+

text

+

设置参数值的上下文,包括internal、postmaster、sighup、backend、superuser、user。

+

vartype

+

text

+

参数类型,包括bool、enum、integer、real、string。

+

source

+

text

+

参数的赋值方式。

+

min_val

+

text

+

参数最小值。如果参数类型不是数值型,那么该字段值为 null 。

+

max_val

+

text

+

参数最大值。如果参数类型不是数值型,那么该字段值为 null 。

+

enumvals

+

text[]

+

enum类型参数合法值。如果参数类型不是 enum 型,那么该字段值为 null 。

+

boot_val

+

text

+

数据库启动时参数默认值。

+

reset_val

+

text

+

数据库重置时参数默认值。

+

sourcefile

+

text

+

设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为 null 。

+

sourceline

+

integer

+

设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为 null 。

+
+ diff --git a/content/zh/docs/Developerguide/PG_SHADOW.md b/content/zh/docs/Developerguide/PG_SHADOW.md index c456d4c48..90b680f3c 100644 --- a/content/zh/docs/Developerguide/PG_SHADOW.md +++ b/content/zh/docs/Developerguide/PG_SHADOW.md @@ -1,148 +1,148 @@ -# PG\_SHADOW - -PG\_SHADOW视图显示了所有在PG\_AUTHID中标记了rolcanlogin的角色的属性。 - -这个视图的名称来自于该视图是不可读的,因为它包含口令。[PG\_USER](PG_USER.md)是一个在PG\_SHADOW上公开可读的视图,只是把口令域填成了空白。 - -**表 1** PG\_SHADOW字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

usename

-

name

-

PG_AUTHID.rolname

-

用户名。

-

usesysid

-

oid

-

PG_AUTHID.oid

-

用户的ID。

-

usecreatedb

-

Boolean

-

-

-

用户可以创建数据库。

-

usesuper

-

Boolean

-

-

-

用户是系统管理员。

-

usecatupd

-

Boolean

-

-

-

用户可以更新视图。即使是系统管理员,如果这个字段不是真,也不能更新视图。

-

userepl

-

Boolean

-

-

-

用户可以初始化流复制和使系统处于或不处于备份模式。

-

passwd

-

text

-

-

-

口令(可能是加密的);如果没有则为null。参阅PG_AUTHID获取加密的口令是如何存储的信息。

-

valbegin

-

timestamp with time zone

-

-

-

帐户的有效开始时间;如果没有设置有效开始时间,则为NULL。

-

valuntil

-

timestamp with time zone

-

-

-

帐户的有效结束时间;如果没有设置有效结束时间,则为NULL。

-

respool

-

name

-

-

-

用户使用的资源池。

-

parent

-

oid

-

-

-

父资源池。

-

spacelimit

-

text

-

-

-

永久表存储空间限额。

-

tempspacelimit

-

text

-

-

-

临时表存储空间限额。

-

spillspacelimit

-

text

-

-

-

算子落盘空间限额。

-
- +# PG\_SHADOW + +PG\_SHADOW视图显示了所有在PG\_AUTHID中标记了 rolcanlogin 的角色的属性。 + +这个视图的名称来自于该视图是不可读的,因为它包含口令。[PG\_USER](PG_USER.md)是一个在PG\_SHADOW上公开可读的视图,只是把口令域填成了空白。 + +**表 1** PG\_SHADOW字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

usename

+

name

+

PG_AUTHID.rolname

+

用户名。

+

usesysid

+

oid

+

PG_AUTHID.oid

+

用户的 ID 。

+

usecreatedb

+

Boolean

+

-

+

用户可以创建数据库。

+

usesuper

+

Boolean

+

-

+

用户是系统管理员。

+

usecatupd

+

Boolean

+

-

+

用户可以更新视图。即使是系统管理员,如果这个字段不是真,也不能更新视图。

+

userepl

+

Boolean

+

-

+

用户可以初始化流复制和使系统处于或不处于备份模式。

+

passwd

+

text

+

-

+

口令(可能是加密的);如果没有则为 null 。参阅PG_AUTHID获取加密的口令是如何存储的信息。

+

valbegin

+

timestamp with time zone

+

-

+

帐户的有效开始时间;如果没有设置有效开始时间,则为 NULL 。

+

valuntil

+

timestamp with time zone

+

-

+

帐户的有效结束时间;如果没有设置有效结束时间,则为 NULL 。

+

respool

+

name

+

-

+

用户使用的资源池。

+

parent

+

oid

+

-

+

父资源池。

+

spacelimit

+

text

+

-

+

永久表存储空间限额。

+

tempspacelimit

+

text

+

-

+

临时表存储空间限额。

+

spillspacelimit

+

text

+

-

+

算子落盘空间限额。

+
+ diff --git a/content/zh/docs/Developerguide/PG_SHDEPEND.md b/content/zh/docs/Developerguide/PG_SHDEPEND.md index 4edba59a6..362b6803f 100644 --- a/content/zh/docs/Developerguide/PG_SHDEPEND.md +++ b/content/zh/docs/Developerguide/PG_SHDEPEND.md @@ -1,111 +1,111 @@ -# PG\_SHDEPEND - -PG\_SHDEPEND系统表记录数据库对象和共享对象(比如角色)之间的依赖性关系。这些信息允许openGauss保证在企图删除这些对象之前,这些对象是没有被引用的。 - -[PG\_DEPEND](PG_DEPEND.md)的作用类似,只是它是用于在一个数据库内部的对象的依赖性关系的。 - -和其它大多数系统表不同,PG\_SHDEPEND是在openGauss里面所有的数据库之间共享的:每个openGauss只有一个PG\_SHDEPEND,而不是每个数据库一个。 - -**表 1** PG\_SHDEPEND字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

dbid

-

oid

-

PG_DATABASE.oid

-

依赖对象所在的数据库的OID,如果是共享对象,则为零。

-

classid

-

oid

-

PG_CLASS.oid

-

依赖对象所在的系统表的OID。

-

objid

-

oid

-

任意OID属性

-

指定的依赖对象的OID。

-

objsubid

-

integer

-

-

-

对于一个表字段,这是字段号(objid和classid参考表本身)。对于所有其他对象类型,这个字段为零。

-

refclassid

-

oid

-

PG_CLASS.oid

-

被引用对象所在的系统表的OID(必须是一个共享表)。

-

refobjid

-

oid

-

任意OID属性

-

指定的被引用对象的OID。

-

deptype

-

"char"

-

-

-

一段代码,定义了这个依赖性关系的特定语义;参阅下文。

-

objfile

-

text

-

-

-

用户定义函数库文件路径。

-
- -在任何情况下,一条PG\_SHDEPEND记录就表明这个被引用的对象不能在未删除依赖对象的前提下删除。不过,deptype同时还标出了几种不同的子风格: - -- SHARED\_DEPENDENCY\_OWNER \(o\) - - 被引用的对象(必须是一个角色)是依赖对象的所有者。 - -- SHARED\_DEPENDENCY\_ACL \(a\) - - 被引用的对象(必须是一个角色)在依赖对象的ACL(访问控制列表,也就是权限列表)里提到。SHARED\_DEPENDENCY\_ACL不会在对象的所有者头上添加的,因为所有者会有一个SHARED\_DEPENDENCY\_OWNER记录。 - -- SHARED\_DEPENDENCY\_PIN \(p\) - - 没有依赖对象;这类记录标识系统自身依赖于该被依赖对象,因此这样的对象绝对不能被删除。这种类型的记录只是由initdb创建。这样的依赖对象的字段都是零。 - - +# PG\_SHDEPEND + +PG\_SHDEPEND系统表记录数据库对象和共享对象(比如角色)之间的依赖性关系。这些信息允许 openGauss 保证在企图删除这些对象之前,这些对象是没有被引用的。 + +[PG\_DEPEND](PG_DEPEND.md)的作用类似,只是它是用于在一个数据库内部的对象的依赖性关系的。 + +和其它大多数系统表不同,PG\_SHDEPEND是在 openGauss 里面所有的数据库之间共享的:每个 openGauss 只有一个PG\_SHDEPEND,而不是每个数据库一个。 + +**表 1** PG\_SHDEPEND字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

dbid

+

oid

+

PG_DATABASE.oid

+

依赖对象所在的数据库的 OID ,如果是共享对象,则为零。

+

classid

+

oid

+

PG_CLASS.oid

+

依赖对象所在的系统表的 OID 。

+

objid

+

oid

+

任意 OID 属性

+

指定的依赖对象的 OID 。

+

objsubid

+

integer

+

-

+

对于一个表字段,这是字段号(objid和 classid 参考表本身)。对于所有其他对象类型,这个字段为零。

+

refclassid

+

oid

+

PG_CLASS.oid

+

被引用对象所在的系统表的OID(必须是一个共享表)。

+

refobjid

+

oid

+

任意 OID 属性

+

指定的被引用对象的 OID 。

+

deptype

+

"char"

+

-

+

一段代码,定义了这个依赖性关系的特定语义;参阅下文。

+

objfile

+

text

+

-

+

用户定义函数库文件路径。

+
+ +在任何情况下,一条PG\_SHDEPEND记录就表明这个被引用的对象不能在未删除依赖对象的前提下删除。不过, deptype 同时还标出了几种不同的子风格: + +- SHARED\_DEPENDENCY\_OWNER \(o\) + + 被引用的对象(必须是一个角色)是依赖对象的所有者。 + +- SHARED\_DEPENDENCY\_ACL \(a\) + + 被引用的对象(必须是一个角色)在依赖对象的ACL(访问控制列表,也就是权限列表)里提到。SHARED\_DEPENDENCY\_ACL不会在对象的所有者头上添加的,因为所有者会有一个SHARED\_DEPENDENCY\_OWNER记录。 + +- SHARED\_DEPENDENCY\_PIN \(p\) + + 没有依赖对象;这类记录标识系统自身依赖于该被依赖对象,因此这样的对象绝对不能被删除。这种类型的记录只是由 initdb 创建。这样的依赖对象的字段都是零。 + + diff --git a/content/zh/docs/Developerguide/PG_SHDESCRIPTION.md b/content/zh/docs/Developerguide/PG_SHDESCRIPTION.md index f2ce865ca..3335ac768 100644 --- a/content/zh/docs/Developerguide/PG_SHDESCRIPTION.md +++ b/content/zh/docs/Developerguide/PG_SHDESCRIPTION.md @@ -1,51 +1,51 @@ -# PG\_SHDESCRIPTION - -PG\_SHDESCRIPTION系统表为共享数据库对象存储可选的注释。可以使用COMMENT命令操作注释的内容,使用psql的\\d命令查看注释内容。 - -PG\_DESCRIPTION提供了类似的功能,它记录了单个数据库中对象的注释。 - -不同于大多数系统表,PG\_SHDESCRIPTION是在openGauss里面所有的数据库之间共享的:每个openGauss只有一个PG\_SHDESCRIPTION,而不是每个数据库一个。 - -**表 1** PG\_SHDESCRIPTION字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

objoid

-

oid

-

任意OID属性

-

这条描述所描述的对象的OID。

-

classoid

-

oid

-

PG_CLASS.oid

-

这个对象出现的系统表的OID。

-

description

-

text

-

-

-

作为对该对象的描述的任意文本。

-
- +# PG\_SHDESCRIPTION + +PG\_SHDESCRIPTION系统表为共享数据库对象存储可选的注释。可以使用 COMMENT 命令操作注释的内容,使用 psql 的\\d命令查看注释内容。 + +PG\_DESCRIPTION提供了类似的功能,它记录了单个数据库中对象的注释。 + +不同于大多数系统表,PG\_SHDESCRIPTION是在 openGauss 里面所有的数据库之间共享的:每个 openGauss 只有一个PG\_SHDESCRIPTION,而不是每个数据库一个。 + +**表 1** PG\_SHDESCRIPTION字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

objoid

+

oid

+

任意 OID 属性

+

这条描述所描述的对象的 OID 。

+

classoid

+

oid

+

PG_CLASS.oid

+

这个对象出现的系统表的 OID 。

+

description

+

text

+

-

+

作为对该对象的描述的任意文本。

+
+ diff --git a/content/zh/docs/Developerguide/PG_SHSECLABEL.md b/content/zh/docs/Developerguide/PG_SHSECLABEL.md index 471c95904..5f58040cc 100644 --- a/content/zh/docs/Developerguide/PG_SHSECLABEL.md +++ b/content/zh/docs/Developerguide/PG_SHSECLABEL.md @@ -1,62 +1,62 @@ -# PG\_SHSECLABEL - -PG\_SHSECLABEL系统表存储在共享数据库对象上的安全标签。安全标签可以用SECURITY LABEL命令操作。 - -查看安全标签的简单点的方法,请参阅[PG\_SECLABELS](PG_SECLABELS.md)。 - -[PG\_SECLABEL](PG_SECLABEL.md)的作用类似,只是它是用于在单个数据库内部的对象的安全标签的。 - -不同于大多数的系统表,PG\_SHSECLABEL在openGauss中的所有数据库中共享:每个openGauss只有一个PG\_SHSECLABEL,而不是每个数据库一个。 - -**表 1** PG\_SHSECLABEL字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

objoid

-

oid

-

任意OID属性

-

这个安全标签所属的对象的OID。

-

classoid

-

oid

-

PG_CLASS.oid

-

出现这个对象的系统目录的OID。

-

provider

-

text

-

-

-

与这个标签相关的标签提供程序。

-

label

-

text

-

-

-

应用于这个对象的安全标签。

-
- +# PG\_SHSECLABEL + +PG\_SHSECLABEL系统表存储在共享数据库对象上的安全标签。安全标签可以用 SECURITY LABEL 命令操作。 + +查看安全标签的简单点的方法,请参阅[PG\_SECLABELS](PG_SECLABELS.md)。 + +[PG\_SECLABEL](PG_SECLABEL.md)的作用类似,只是它是用于在单个数据库内部的对象的安全标签的。 + +不同于大多数的系统表,PG\_SHSECLABEL在 openGauss 中的所有数据库中共享:每个 openGauss 只有一个PG\_SHSECLABEL,而不是每个数据库一个。 + +**表 1** PG\_SHSECLABEL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

objoid

+

oid

+

任意 OID 属性

+

这个安全标签所属的对象的 OID 。

+

classoid

+

oid

+

PG_CLASS.oid

+

出现这个对象的系统目录的 OID 。

+

provider

+

text

+

-

+

与这个标签相关的标签提供程序。

+

label

+

text

+

-

+

应用于这个对象的安全标签。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STATIO_ALL_INDEXES.md b/content/zh/docs/Developerguide/PG_STATIO_ALL_INDEXES.md index e754534a4..c1dfe168c 100644 --- a/content/zh/docs/Developerguide/PG_STATIO_ALL_INDEXES.md +++ b/content/zh/docs/Developerguide/PG_STATIO_ALL_INDEXES.md @@ -1,66 +1,66 @@ -# PG\_STATIO\_ALL\_INDEXES - -PG\_STATIO\_ALL\_INDEXES视图将包含当前数据库中的每个索引行,显示特定索引的I/O的统计。 - -**表 1** PG\_STATIO\_ALL\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

索引的表的OID。

-

indexrelid

-

oid

-

该索引的OID。

-

schemaname

-

name

-

该索引的模式名。

-

relname

-

name

-

该索引的表名。

-

indexrelname

-

name

-

索引名称。

-

idx_blks_read

-

bigint

-

从索引中读取的磁盘块数。

-

idx_blks_hit

-

bigint

-

索引命中缓存数。

-
+# PG\_STATIO\_ALL\_INDEXES + +PG\_STATIO\_ALL\_INDEXES视图将包含当前数据库中的每个索引行,显示特定索引的I/O的统计。 + +**表 1** PG\_STATIO\_ALL\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

索引的表的 OID 。

+

indexrelid

+

oid

+

该索引的 OID 。

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

bigint

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

索引命中缓存数。

+
diff --git a/content/zh/docs/Developerguide/PG_STATIO_ALL_SEQUENCES.md b/content/zh/docs/Developerguide/PG_STATIO_ALL_SEQUENCES.md index 48c76672f..58c06edd5 100644 --- a/content/zh/docs/Developerguide/PG_STATIO_ALL_SEQUENCES.md +++ b/content/zh/docs/Developerguide/PG_STATIO_ALL_SEQUENCES.md @@ -1,53 +1,53 @@ -# PG\_STATIO\_ALL\_SEQUENCES - -PG\_STATIO\_ALL\_SEQUENCES视图包含当前数据库中每个序列的I/O的统计信息。 - -**表 1** PG\_STATIO\_ALL\_SEQUENCES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

序列OID。

-

schemaname

-

name

-

序列中模式名。

-

relname

-

name

-

序列名。

-

blks_read

-

bigint

-

从序列中读取的磁盘块数。

-

blks_hit

-

bigint

-

序列中缓存命中数。

-
- +# PG\_STATIO\_ALL\_SEQUENCES + +PG\_STATIO\_ALL\_SEQUENCES视图包含当前数据库中每个序列的I/O的统计信息。 + +**表 1** PG\_STATIO\_ALL\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

序列 OID 。

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

bigint

+

从序列中读取的磁盘块数。

+

blks_hit

+

bigint

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STATIO_ALL_TABLES.md b/content/zh/docs/Developerguide/PG_STATIO_ALL_TABLES.md index b9043fb0d..11b9423a8 100644 --- a/content/zh/docs/Developerguide/PG_STATIO_ALL_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STATIO_ALL_TABLES.md @@ -1,95 +1,95 @@ -# PG\_STATIO\_ALL\_TABLES - -PG\_STATIO\_ALL\_TABLES视图将包含当前数据库中每个表(包括TOAST表)的I/O统计信息。 - -**表 1** PG\_STATIO\_ALL\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

表OID。

-

schemaname

-

name

-

该表模式名。

-

relname

-

name

-

表名。

-

heap_blks_read

-

bigint

-

从该表中读取的磁盘块数。

-

heap_blks_hit

-

bigint

-

该表缓存命中数。

-

idx_blks_read

-

bigint

-

从表中所有索引读取的磁盘块数。

-

idx_blks_hit

-

bigint

-

表中所有索引命中缓存数。

-

toast_blks_read

-

bigint

-

该表的TOAST表读取的磁盘块数(如果存在)。

-

toast_blks_hit

-

bigint

-

该表的TOAST表命中缓冲区数(如果存在)。

-

tidx_blks_read

-

bigint

-

该表的TOAST表索引读取的磁盘块数(如果存在)。

-

tidx_blks_hit

-

bigint

-

该表的TOAST表索引命中缓冲区数(如果存在)。

-
- +# PG\_STATIO\_ALL\_TABLES + +PG\_STATIO\_ALL\_TABLES视图将包含当前数据库中每个表(包括 TOAST 表)的I/O统计信息。 + +**表 1** PG\_STATIO\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表 OID 。

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

bigint

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

bigint

+

该表缓存命中数。

+

idx_blks_read

+

bigint

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

表中所有索引命中缓存数。

+

toast_blks_read

+

bigint

+

该表的 TOAST 表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

bigint

+

该表的 TOAST 表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

bigint

+

该表的 TOAST 表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

bigint

+

该表的 TOAST 表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STATIO_SYS_INDEXES.md b/content/zh/docs/Developerguide/PG_STATIO_SYS_INDEXES.md index 945670656..29ff01e4f 100644 --- a/content/zh/docs/Developerguide/PG_STATIO_SYS_INDEXES.md +++ b/content/zh/docs/Developerguide/PG_STATIO_SYS_INDEXES.md @@ -1,67 +1,67 @@ -# PG\_STATIO\_SYS\_INDEXES - -PG\_STATIO\_SYS\_INDEXES视图显示命名空间中所有系统表索引的IO状态信息。 - -**表 1** PG\_STATIO\_SYS\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

索引的表的OID。

-

indexrelid

-

oid

-

该索引的OID。

-

schemaname

-

name

-

该索引的模式名。

-

relname

-

name

-

该索引的表名。

-

indexrelname

-

name

-

索引名称。

-

idx_blks_read

-

bigint

-

从索引中读取的磁盘块数。

-

idx_blks_hit

-

bigint

-

索引命中缓存数。

-
- +# PG\_STATIO\_SYS\_INDEXES + +PG\_STATIO\_SYS\_INDEXES视图显示命名空间中所有系统表索引的 IO 状态信息。 + +**表 1** PG\_STATIO\_SYS\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

索引的表的 OID 。

+

indexrelid

+

oid

+

该索引的 OID 。

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

bigint

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STATIO_SYS_SEQUENCES.md b/content/zh/docs/Developerguide/PG_STATIO_SYS_SEQUENCES.md index b5f65e125..1360f84e1 100644 --- a/content/zh/docs/Developerguide/PG_STATIO_SYS_SEQUENCES.md +++ b/content/zh/docs/Developerguide/PG_STATIO_SYS_SEQUENCES.md @@ -1,53 +1,53 @@ -# PG\_STATIO\_SYS\_SEQUENCES - -PG\_STATIO\_SYS\_SEQUENCES视图显示命名空间中所有序列的IO状态信息。 - -**表 1** PG\_STATIO\_SYS\_SEQUENCES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

序列OID。

-

schemaname

-

name

-

序列中模式名。

-

relname

-

name

-

序列名。

-

blks_read

-

bigint

-

从序列中读取的磁盘块数。

-

blks_hit

-

bigint

-

序列中缓存命中数。

-
- +# PG\_STATIO\_SYS\_SEQUENCES + +PG\_STATIO\_SYS\_SEQUENCES视图显示命名空间中所有序列的 IO 状态信息。 + +**表 1** PG\_STATIO\_SYS\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

序列 OID 。

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

bigint

+

从序列中读取的磁盘块数。

+

blks_hit

+

bigint

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STATIO_SYS_TABLES.md b/content/zh/docs/Developerguide/PG_STATIO_SYS_TABLES.md index 83256b431..4752f6b98 100644 --- a/content/zh/docs/Developerguide/PG_STATIO_SYS_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STATIO_SYS_TABLES.md @@ -1,95 +1,95 @@ -# PG\_STATIO\_SYS\_TABLES - -PG\_STATIO\_SYS\_TABLES视图显示命名空间中所有系统表的IO状态信息。 - -**表 1** PG\_STATIO\_SYS\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

表OID。

-

schemaname

-

name

-

该表模式名。

-

relname

-

name

-

表名。

-

heap_blks_read

-

bigint

-

从该表中读取的磁盘块数。

-

heap_blks_hit

-

bigint

-

该表缓存命中数。

-

idx_blks_read

-

bigint

-

从表中所有索引读取的磁盘块数。

-

idx_blks_hit

-

bigint

-

表中所有索引命中缓存数。

-

toast_blks_read

-

bigint

-

该表的TOAST表读取的磁盘块数(如果存在)。

-

toast_blks_hit

-

bigint

-

该表的TOAST表命中缓冲区数(如果存在)。

-

tidx_blks_read

-

bigint

-

该表的TOAST表索引读取的磁盘块数(如果存在)。

-

tidx_blks_hit

-

bigint

-

该表的TOAST表索引命中缓冲区数(如果存在)。

-
- +# PG\_STATIO\_SYS\_TABLES + +PG\_STATIO\_SYS\_TABLES视图显示命名空间中所有系统表的 IO 状态信息。 + +**表 1** PG\_STATIO\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表 OID 。

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

bigint

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

bigint

+

该表缓存命中数。

+

idx_blks_read

+

bigint

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

表中所有索引命中缓存数。

+

toast_blks_read

+

bigint

+

该表的 TOAST 表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

bigint

+

该表的 TOAST 表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

bigint

+

该表的 TOAST 表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

bigint

+

该表的 TOAST 表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STATIO_USER_INDEXES.md b/content/zh/docs/Developerguide/PG_STATIO_USER_INDEXES.md index 524ac8840..2a336d567 100644 --- a/content/zh/docs/Developerguide/PG_STATIO_USER_INDEXES.md +++ b/content/zh/docs/Developerguide/PG_STATIO_USER_INDEXES.md @@ -1,66 +1,66 @@ -# PG\_STATIO\_USER\_INDEXES - -PG\_STATIO\_USER\_INDEXES视图显示命名空间中所有用户关系表索引的IO状态信息。 - -**表 1** PG\_STATIO\_USER\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

索引的表的OID。

-

indexrelid

-

oid

-

该索引的OID。

-

schemaname

-

name

-

该索引的模式名。

-

relname

-

name

-

该索引的表名。

-

indexrelname

-

name

-

索引名称。

-

idx_blks_read

-

bigint

-

从索引中读取的磁盘块数。

-

idx_blks_hit

-

bigint

-

索引命中缓存数。

-
+# PG\_STATIO\_USER\_INDEXES + +PG\_STATIO\_USER\_INDEXES视图显示命名空间中所有用户关系表索引的 IO 状态信息。 + +**表 1** PG\_STATIO\_USER\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

索引的表的 OID 。

+

indexrelid

+

oid

+

该索引的 OID 。

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

bigint

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

索引命中缓存数。

+
diff --git a/content/zh/docs/Developerguide/PG_STATIO_USER_SEQUENCES.md b/content/zh/docs/Developerguide/PG_STATIO_USER_SEQUENCES.md index adfa11dad..4a8f473ac 100644 --- a/content/zh/docs/Developerguide/PG_STATIO_USER_SEQUENCES.md +++ b/content/zh/docs/Developerguide/PG_STATIO_USER_SEQUENCES.md @@ -1,53 +1,53 @@ -# PG\_STATIO\_USER\_SEQUENCES - -PG\_STATIO\_USER\_SEQUENCES视图显示命名空间中所有用户关系表类型为序列的IO状态信息。 - -**表 1** PG\_STATIO\_USER\_SEQUENCES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

序列OID。

-

schemaname

-

name

-

序列中模式名。

-

relname

-

name

-

序列名。

-

blks_read

-

bigint

-

从序列中读取的磁盘块数。

-

blks_hit

-

bigint

-

序列中缓存命中数。

-
- +# PG\_STATIO\_USER\_SEQUENCES + +PG\_STATIO\_USER\_SEQUENCES视图显示命名空间中所有用户关系表类型为序列的 IO 状态信息。 + +**表 1** PG\_STATIO\_USER\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

序列 OID 。

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

bigint

+

从序列中读取的磁盘块数。

+

blks_hit

+

bigint

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STATIO_USER_TABLES.md b/content/zh/docs/Developerguide/PG_STATIO_USER_TABLES.md index c35ca6d89..25f608128 100644 --- a/content/zh/docs/Developerguide/PG_STATIO_USER_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STATIO_USER_TABLES.md @@ -1,95 +1,95 @@ -# PG\_STATIO\_USER\_TABLES - -PG\_STATIO\_USER\_TABLES视图显示命名空间中所有用户关系表的IO状态信息。 - -**表 1** PG\_STATIO\_USER\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

表OID。

-

schemaname

-

name

-

该表模式名。

-

relname

-

name

-

表名。

-

heap_blks_read

-

bigint

-

从该表中读取的磁盘块数。

-

heap_blks_hit

-

bigint

-

该表缓存命中数。

-

idx_blks_read

-

bigint

-

从表中所有索引读取的磁盘块数。

-

idx_blks_hit

-

bigint

-

表中所有索引命中缓存数。

-

toast_blks_read

-

bigint

-

该表的TOAST表读取的磁盘块数(如果存在)。

-

toast_blks_hit

-

bigint

-

该表的TOAST表命中缓冲区数(如果存在)。

-

tidx_blks_read

-

bigint

-

该表的TOAST表索引读取的磁盘块数(如果存在)。

-

tidx_blks_hit

-

bigint

-

该表的TOAST表索引命中缓冲区数(如果存在)。

-
- +# PG\_STATIO\_USER\_TABLES + +PG\_STATIO\_USER\_TABLES视图显示命名空间中所有用户关系表的 IO 状态信息。 + +**表 1** PG\_STATIO\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表 OID 。

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

bigint

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

bigint

+

该表缓存命中数。

+

idx_blks_read

+

bigint

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

表中所有索引命中缓存数。

+

toast_blks_read

+

bigint

+

该表的 TOAST 表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

bigint

+

该表的 TOAST 表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

bigint

+

该表的 TOAST 表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

bigint

+

该表的 TOAST 表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STATISTIC.md b/content/zh/docs/Developerguide/PG_STATISTIC.md index a012049e1..0d7d88266 100644 --- a/content/zh/docs/Developerguide/PG_STATISTIC.md +++ b/content/zh/docs/Developerguide/PG_STATISTIC.md @@ -1,115 +1,115 @@ -# PG\_STATISTIC - -PG\_STATISTIC系统表存储有关该数据库中表和索引列的统计数据。默认只有系统管理员权限才可以访问此系统表,普通用户需要授权才可以访问。 - -**表 1** PG\_STATISTIC字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

starelid

-

oid

-

所描述的字段所属的表或者索引。

-

starelkind

-

"char"

-

所属对象的类型。

-

staattnum

-

smallint

-

所描述的字段在表中的编号,从1开始。

-

stainherit

-

Boolean

-

是否统计有继承关系的对象。

-

stanullfrac

-

real

-

该字段中为NULL的记录的比率。

-

stawidth

-

integer

-

非NULL记录的平均存储宽度,以字节计。

-

stadistinct

-

real

-

标识全局统计信息中数据库节点上字段里唯一的非NULL数据值的数目。

-
  • 一个大于零的数值是独立数值的实际数目。
  • 一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。
  • 零值表示独立数值的数目未知。
-

stakindN

-

smallint

-

一个编码,表示这种类型的统计存储在pg_statistic行的第n个“槽位”。

-

n的取值范围:1~5

-

staopN

-

oid

-

一个用于生成这些存储在第n个“槽位”的统计信息的操作符。比如,一个柱面图槽位会显示<操作符,该操作符定义了该数据的排序顺序。

-

n的取值范围:1~5

-

stanumbersN

-

real[]

-

第n个“槽位”的相关类型的数值类型统计,如果该槽位和数值类型没有关系,则就是NULL。

-

n的取值范围:1~5

-

stavaluesN

-

anyarray

-

第n个“槽位”类型的字段数据值,如果该槽位类型不存储任何数据值,则就是NULL。每个数组的元素值实际上都是指定字段的数据类型,因此,除了把这些字段的类型定义成anyarray之外,没有更好地办法。

-

n的取值范围:1~5

-

stadndistinct

-

real

-

标识dn1上字段里唯一的非NULL数据值的数目。

-
  • 一个大于零的数值是独立数值的实际数目。
  • 一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。
  • 零值表示独立数值的数目未知。
-

staextinfo

-

text

-

统计信息的扩展信息。预留字段。

-
- +# PG\_STATISTIC + +PG\_STATISTIC系统表存储有关该数据库中表和索引列的统计数据。默认只有系统管理员权限才可以访问此系统表,普通用户需要授权才可以访问。 + +**表 1** PG\_STATISTIC字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

starelid

+

oid

+

所描述的字段所属的表或者索引。

+

starelkind

+

"char"

+

所属对象的类型。

+

staattnum

+

smallint

+

所描述的字段在表中的编号,从 1 开始。

+

stainherit

+

Boolean

+

是否统计有继承关系的对象。

+

stanullfrac

+

real

+

该字段中为 NULL 的记录的比率。

+

stawidth

+

integer

+

非 NULL 记录的平均存储宽度,以字节计。

+

stadistinct

+

real

+

标识全局统计信息中数据库节点上字段里唯一的非 NULL 数据值的数目。

+
  • 一个大于零的数值是独立数值的实际数目。
  • 一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。
  • 零值表示独立数值的数目未知。
+

stakindN

+

smallint

+

一个编码,表示这种类型的统计存储在 pg_statistic 行的第 n 个“槽位”。

+

n的取值范围:1~5

+

staopN

+

oid

+

一个用于生成这些存储在第 n 个“槽位”的统计信息的操作符。比如,一个柱面图槽位会显示<操作符,该操作符定义了该数据的排序顺序。

+

n的取值范围:1~5

+

stanumbersN

+

real[]

+

第 n 个“槽位”的相关类型的数值类型统计,如果该槽位和数值类型没有关系,则就是 NULL 。

+

n的取值范围:1~5

+

stavaluesN

+

anyarray

+

第 n 个“槽位”类型的字段数据值,如果该槽位类型不存储任何数据值,则就是 NULL 。每个数组的元素值实际上都是指定字段的数据类型,因此,除了把这些字段的类型定义成 anyarray 之外,没有更好地办法。

+

n的取值范围:1~5

+

stadndistinct

+

real

+

标识 dn1 上字段里唯一的非 NULL 数据值的数目。

+
  • 一个大于零的数值是独立数值的实际数目。
  • 一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。
  • 零值表示独立数值的数目未知。
+

staextinfo

+

text

+

统计信息的扩展信息。预留字段。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STATISTIC_EXT.md b/content/zh/docs/Developerguide/PG_STATISTIC_EXT.md index 8acca71f2..f14f12487 100644 --- a/content/zh/docs/Developerguide/PG_STATISTIC_EXT.md +++ b/content/zh/docs/Developerguide/PG_STATISTIC_EXT.md @@ -1,115 +1,115 @@ -# PG\_STATISTIC\_EXT - -PG\_STATISTIC\_EXT系统表存储有关该数据库中表的扩展统计数据,包括多列统计数据和表达式统计数据(后续支持)。收集哪些扩展统计数据是由用户指定的。需要有系统管理员权限才可以访问此系统表。 - -**表 1** PG\_STATISTIC\_EXT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

starelid

-

oid

-

所描述的字段所属的表或者索引。

-

starelkind

-

"char"

-

所属对象的类型,'c'表示普通表,'p'表示分区表。

-

stainherit

-

Boolean

-

是否统计有继承关系的对象。

-

stanullfrac

-

real

-

该字段中为NULL的记录的比率。

-

stawidth

-

integer

-

非NULL记录的平均存储宽度,以字节计。

-

stadistinct

-

real

-
标识全局统计信息中数据库节点上字段里唯一的非NULL数据值的数目。
  • 一个大于零的数值是独立数值的实际数目。
  • 一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。
  • 零值表示独立数值的数目未知。
-
-

stadndistinct

-

real

-
标识dn1上字段里唯一的非NULL数据值的数目。
  • 一个大于零的数值是独立数值的实际数目。
  • 一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。
  • 零值表示独立数值的数目未知。
-
-

stakindN

-

smallint

-

一个编码,表示这种类型的统计存储在pg_statistic行的第n个“槽位”。

-

n的取值范围:1~5

-

staopN

-

oid

-

一个用于生成这些存储在第n个“槽位”的统计信息的操作符。比如,一个柱面图槽位会显示<操作符,该操作符定义了该数据的排序顺序。

-

n的取值范围:1~5

-

stakey

-

int2vector

-

所描述的字段编号的数组。

-

stanumbersN

-

real[]

-

第n个“槽位”的相关类型的数值类型统计,如果该槽位和数值类型没有关系,则就是NULL。

-

n的取值范围:1~5

-

stavaluesN

-

anyarray

-

第n个“槽位”类型的字段数据值,如果该槽位类型不存储任何数据值,则就是NULL。每个数组的元素值实际上都是指定字段的数据类型,因此,除了把这些字段的类型定义成anyarray之外,没有更好地办法。

-

n的取值范围:1~5

-

staexprs

-

pg_node_tree

-

扩展统计信息对应的表达式。

-
- +# PG\_STATISTIC\_EXT + +PG\_STATISTIC\_EXT系统表存储有关该数据库中表的扩展统计数据,包括多列统计数据和表达式统计数据(后续支持)。收集哪些扩展统计数据是由用户指定的。需要有系统管理员权限才可以访问此系统表。 + +**表 1** PG\_STATISTIC\_EXT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

starelid

+

oid

+

所描述的字段所属的表或者索引。

+

starelkind

+

"char"

+

所属对象的类型,'c'表示普通表,'p'表示分区表。

+

stainherit

+

Boolean

+

是否统计有继承关系的对象。

+

stanullfrac

+

real

+

该字段中为 NULL 的记录的比率。

+

stawidth

+

integer

+

非 NULL 记录的平均存储宽度,以字节计。

+

stadistinct

+

real

+
标识全局统计信息中数据库节点上字段里唯一的非 NULL 数据值的数目。
  • 一个大于零的数值是独立数值的实际数目。
  • 一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。
  • 零值表示独立数值的数目未知。
+
+

stadndistinct

+

real

+
标识 dn1 上字段里唯一的非 NULL 数据值的数目。
  • 一个大于零的数值是独立数值的实际数目。
  • 一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。
  • 零值表示独立数值的数目未知。
+
+

stakindN

+

smallint

+

一个编码,表示这种类型的统计存储在 pg_statistic 行的第 n 个“槽位”。

+

n的取值范围:1~5

+

staopN

+

oid

+

一个用于生成这些存储在第 n 个“槽位”的统计信息的操作符。比如,一个柱面图槽位会显示<操作符,该操作符定义了该数据的排序顺序。

+

n的取值范围:1~5

+

stakey

+

int2vector

+

所描述的字段编号的数组。

+

stanumbersN

+

real[]

+

第 n 个“槽位”的相关类型的数值类型统计,如果该槽位和数值类型没有关系,则就是 NULL 。

+

n的取值范围:1~5

+

stavaluesN

+

anyarray

+

第 n 个“槽位”类型的字段数据值,如果该槽位类型不存储任何数据值,则就是 NULL 。每个数组的元素值实际上都是指定字段的数据类型,因此,除了把这些字段的类型定义成 anyarray 之外,没有更好地办法。

+

n的取值范围:1~5

+

staexprs

+

pg_node_tree

+

扩展统计信息对应的表达式。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STATS.md b/content/zh/docs/Developerguide/PG_STATS.md index 3f417f2a5..8d9e84079 100644 --- a/content/zh/docs/Developerguide/PG_STATS.md +++ b/content/zh/docs/Developerguide/PG_STATS.md @@ -1,157 +1,157 @@ -# PG\_STATS - -PG\_STATS视图提供对存储在pg\_statistic表里面的单列统计信息的访问。该视图记录的统计信息更新时间间隔由参数autovacuum\_naptime设置。 - -**表 1** PG\_STATS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

schemaname

-

name

-

PG_NAMESPACE.nspname

-

包含表的模式名。

-

tablename

-

name

-

PG_CLASS.relname

-

表名。

-

attname

-

name

-

PG_ATTRIBUTE.attname

-

字段的名称。

-

inherited

-

Boolean

-

-

-

如果为真,则包含继承的子列,否则只是指定表的字段。

-

null_frac

-

real

-

-

-

记录中字段为空的百分比。

-

avg_width

-

integer

-

-

-

字段记录以字节记的平均宽度。

-

n_distinct

-

real

-

-

-
  • 如果大于零,表示字段中独立数值的估计数目。
  • 如果小于零,表示独立数值的数目被行数除的负数。
    1. 用负数形式是因为ANALYZE认为独立数值的数目是随着表增长而增长;
    2. 正数的形式用于在字段看上去好像有固定的可能值数目的情况下。比如,-1表示一个唯一字段,独立数值的个数和行数相同。
    -
-

n_dndistinct

-

real

-

-

-
标识dn1上字段中非NULL数据的唯一值的数目。
  • 如果大于零,表示独立数值的实际数目。
  • 如果小于零,表示独立数值的数目被行数除的负数。(比如,一个字段的数值平均出现概率为两次,则可以表示为n_dndistinct=-0.5)。
  • 如果等于零,表示独立数值的数目未知。
-
-

most_common_vals

-

anyarray

-

-

-

一个字段里最常用数值的列表。如果里面的字段数值是最常见的,则为NULL。

-

most_common_freqs

-

real[]

-

-

-

一个最常用数值的频率的列表,也就是说,每个出现的次数除以行数。如果most_common_vals是NULL,则为NULL。

-

histogram_bounds

-

anyarray

-

-

-

一个数值的列表,它把字段的数值分成几组大致相同热门的组。如果在most_common_vals里有数值,则在这个饼图的计算中省略。如果字段数据类型没有<操作符或者most_common_vals列表代表了整个分布性,则这个字段为NULL。

-

correlation

-

real

-

-

-

统计与字段值的物理行序和逻辑行序有关。它的范围从-1到+1。在数值接近-1或者+1的时候,在字段上的索引扫描将被认为比它接近零的时候开销更少,因为减少了对磁盘的随机访问。如果字段数据类型没有<操作符,则这个字段为NULL。

-

most_common_elems

-

anyarray

-

-

-

一个最常用的非空元素的列表。

-

most_common_elem_freqs

-

real[]

-

-

-

一个最常用元素的频率的列表。

-

elem_count_histogram

-

real[]

-

-

-

对于独立的非空元素的统计直方图。

-
- +# PG\_STATS + +PG\_STATS视图提供对存储在pg\_statistic表里面的单列统计信息的访问。该视图记录的统计信息更新时间间隔由参数autovacuum\_naptime设置。 + +**表 1** PG\_STATS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

schemaname

+

name

+

PG_NAMESPACE.nspname

+

包含表的模式名。

+

tablename

+

name

+

PG_CLASS.relname

+

表名。

+

attname

+

name

+

PG_ATTRIBUTE.attname

+

字段的名称。

+

inherited

+

Boolean

+

-

+

如果为真,则包含继承的子列,否则只是指定表的字段。

+

null_frac

+

real

+

-

+

记录中字段为空的百分比。

+

avg_width

+

integer

+

-

+

字段记录以字节记的平均宽度。

+

n_distinct

+

real

+

-

+
  • 如果大于零,表示字段中独立数值的估计数目。
  • 如果小于零,表示独立数值的数目被行数除的负数。
    1. 用负数形式是因为 ANALYZE 认为独立数值的数目是随着表增长而增长;
    2. 正数的形式用于在字段看上去好像有固定的可能值数目的情况下。比如,-1表示一个唯一字段,独立数值的个数和行数相同。
    +
+

n_dndistinct

+

real

+

-

+
标识 dn1 上字段中非 NULL 数据的唯一值的数目。
  • 如果大于零,表示独立数值的实际数目。
  • 如果小于零,表示独立数值的数目被行数除的负数。(比如,一个字段的数值平均出现概率为两次,则可以表示为n_dndistinct=-0.5)。
  • 如果等于零,表示独立数值的数目未知。
+
+

most_common_vals

+

anyarray

+

-

+

一个字段里最常用数值的列表。如果里面的字段数值是最常见的,则为 NULL 。

+

most_common_freqs

+

real[]

+

-

+

一个最常用数值的频率的列表,也就是说,每个出现的次数除以行数。如果 most_common_vals 是 NULL ,则为 NULL 。

+

histogram_bounds

+

anyarray

+

-

+

一个数值的列表,它把字段的数值分成几组大致相同热门的组。如果在 most_common_vals 里有数值,则在这个饼图的计算中省略。如果字段数据类型没有<操作符或者 most_common_vals 列表代表了整个分布性,则这个字段为 NULL 。

+

correlation

+

real

+

-

+

统计与字段值的物理行序和逻辑行序有关。它的范围从-1到+1。在数值接近-1或者+1的时候,在字段上的索引扫描将被认为比它接近零的时候开销更少,因为减少了对磁盘的随机访问。如果字段数据类型没有<操作符,则这个字段为 NULL 。

+

most_common_elems

+

anyarray

+

-

+

一个最常用的非空元素的列表。

+

most_common_elem_freqs

+

real[]

+

-

+

一个最常用元素的频率的列表。

+

elem_count_histogram

+

real[]

+

-

+

对于独立的非空元素的统计直方图。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STAT_ACTIVITY.md b/content/zh/docs/Developerguide/PG_STAT_ACTIVITY.md index 51c16fea2..533222e6b 100644 --- a/content/zh/docs/Developerguide/PG_STAT_ACTIVITY.md +++ b/content/zh/docs/Developerguide/PG_STAT_ACTIVITY.md @@ -1,179 +1,179 @@ -# PG\_STAT\_ACTIVITY - -PG\_STAT\_ACTIVITY视图显示和当前用户查询相关的信息,字段保存的是上一次执行的信息。 - -**表 1** PG\_STAT\_ACTIVITY字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

用户会话在后台连接到的数据库OID。

-

datname

-

name

-

用户会话在后台连接到的数据库名称。

-

pid

-

bigint

-

后台线程ID。

-

sessionid

-

bigint

-

会话ID。

-

usesysid

-

oid

-

登录该后台的用户OID。

-

usename

-

name

-

登录该后台的用户名。

-

application_name

-

text

-

连接到该后台的应用名。

-

client_addr

-

inet

-

连接到该后台的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

-

client_hostname

-

text

-

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

-

client_port

-

integer

-

客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。

-

backend_start

-

timestamp with time zone

-

该过程开始的时间,即当客户端连接服务器时。

-

xact_start

-

timestamp with time zone

-

启动当前事务的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。

-

query_start

-

timestamp with time zone

-

开始当前活跃查询的时间,如果state的值不是active,则这个值是上一个查询的开始时间。

-

state_change

-

timestamp with time zone

-

上次状态改变的时间。

-

waiting

-

Boolean

-

如果后台当前正等待锁则为true。

-

enqueue

-

text

-

该字段不支持。

-

state

-

text

-
该后台当前总体状态。可能值是:
  • active:后台正在执行一个查询。
  • idle:后台正在等待一个新的客户端命令。
  • idle in transaction:后台在事务中,但事务中没有语句在执行。
  • idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。
  • fastpath function call:后台正在执行一个fast-path函数。
  • disabled:如果后台禁用track_activities,则报告这个状态。
-
-
说明:

普通用户只能查看到自己帐户所对应的会话状态。即其他帐户的state信息为空。例如以judy用户连接数据库后,在pg_stat_activity中查看到的普通用户joe及初始用户omm的state信息为空:

-
SELECT datname, usename, usesysid, state,pid FROM pg_stat_activity;
-
 datname  | usename | usesysid | state  |       pid
-----------+---------+----------+--------+-----------------
- postgres | omm     |       10 |        | 139968752121616
- postgres | omm     |       10 |        | 139968903116560
- db_tpcc | judy    |    16398 | active | 139968391403280
- postgres | omm     |       10 |        | 139968643069712
- postgres | omm     |       10 |        | 139968680818448
- postgres | joe     |    16390 |        | 139968563377936
-(6 rows)
-
-

resource_pool

-

name

-

用户使用的资源池。

-

query_id

-

bigint

-

查询语句的ID。

-

query

-

text

-

该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

-

connection_info

-

text

-

json格式字符串,记录当前连接数据库的驱动类型、驱动版本号、当前驱动的部署路径、进程属主用户等信息(参见connection_info)。

-
- - +# PG\_STAT\_ACTIVITY + +PG\_STAT\_ACTIVITY视图显示和当前用户查询相关的信息,字段保存的是上一次执行的信息。 + +**表 1** PG\_STAT\_ACTIVITY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

用户会话在后台连接到的数据库 OID 。

+

datname

+

name

+

用户会话在后台连接到的数据库名称。

+

pid

+

bigint

+

后台线程 ID 。

+

sessionid

+

bigint

+

会话 ID 。

+

usesysid

+

oid

+

登录该后台的用户 OID 。

+

usename

+

name

+

登录该后台的用户名。

+

application_name

+

text

+

连接到该后台的应用名。

+

client_addr

+

inet

+

连接到该后台的客户端的 IP 地址。如果此字段是 null ,它表明通过服务器机器上 UNIX 套接字连接客户端或者这是内部进程,如 autovacuum 。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过 client_addr 的反向 DNS 查找得到。这个字段只有在启动 log_hostname 且使用 IP 连接时才非空。

+

client_port

+

integer

+

客户端用于与后台通讯的 TCP 端口号,如果使用 Unix 套接字,则为-1。

+

backend_start

+

timestamp with time zone

+

该过程开始的时间,即当客户端连接服务器时。

+

xact_start

+

timestamp with time zone

+

启动当前事务的时间,如果没有事务是活跃的,则为 null 。如果当前查询是首个事务,则这列等同于 query_start 列。

+

query_start

+

timestamp with time zone

+

开始当前活跃查询的时间,如果 state 的值不是 active ,则这个值是上一个查询的开始时间。

+

state_change

+

timestamp with time zone

+

上次状态改变的时间。

+

waiting

+

Boolean

+

如果后台当前正等待锁则为 true 。

+

enqueue

+

text

+

该字段不支持。

+

state

+

text

+
该后台当前总体状态。可能值是:
  • active:后台正在执行一个查询。
  • idle:后台正在等待一个新的客户端命令。
  • idle in transaction:后台在事务中,但事务中没有语句在执行。
  • idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。
  • fastpath function call:后台正在执行一个fast-path函数。
  • disabled:如果后台禁用 track_activities ,则报告这个状态。
+
+
说明:

普通用户只能查看到自己帐户所对应的会话状态。即其他帐户的 state 信息为空。例如以 judy 用户连接数据库后,在 pg_stat_activity 中查看到的普通用户 joe 及初始用户omm的 state 信息为空:

+
SELECT datname, usename , usesysid , state ,pid FROM pg_stat_activity;
+
 datname  | usename | usesysid | state  |       pid
+----------+---------+----------+--------+-----------------
+ postgres | omm     |       10 |        | 139968752121616
+ postgres | omm     |       10 |        | 139968903116560
+ db_tpcc | judy    |    16398 | active | 139968391403280
+ postgres | omm     |       10 |        | 139968643069712
+ postgres | omm     |       10 |        | 139968680818448
+ postgres | joe     |    16390 |        | 139968563377936
+(6 rows)
+
+

resource_pool

+

name

+

用户使用的资源池。

+

query_id

+

bigint

+

查询语句的 ID 。

+

query

+

text

+

该后台的最新查询。如果 state 状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

+

connection_info

+

text

+

json格式字符串,记录当前连接数据库的驱动类型、驱动版本号、当前驱动的部署路径、进程属主用户等信息(参见connection_info)。

+
+ + diff --git a/content/zh/docs/Developerguide/PG_STAT_ACTIVITY_NG.md b/content/zh/docs/Developerguide/PG_STAT_ACTIVITY_NG.md index eda59bb11..7cb34bbe0 100644 --- a/content/zh/docs/Developerguide/PG_STAT_ACTIVITY_NG.md +++ b/content/zh/docs/Developerguide/PG_STAT_ACTIVITY_NG.md @@ -1,185 +1,185 @@ -# PG\_STAT\_ACTIVITY\_NG - -PG\_STAT\_ACTIVITY\_NG视图显示在当前用户所属的逻辑集群下,所有查询的相关信息。 - -**表 1** PG\_STAT\_ACTIVITY\_NG字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

用户会话在后台连接到的数据库OID。

-

datname

-

name

-

用户会话在后台连接到的数据库名称。

-

pid

-

bigint

-

后台线程ID。

-

sessionid

-

bigint

-

会话ID。

-

global_sessionid

-

text

-

全局会话ID。

-

usesysid

-

oid

-

登录该后台的用户OID。

-

usename

-

name

-

登录该后台的用户名。

-

application_name

-

text

-

连接到该后台的应用名。

-

client_addr

-

inet

-

连接到该后台的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

-

client_hostname

-

text

-

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

-

client_port

-

integer

-

客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。

-

backend_start

-

timestamp with time zone

-

该过程开始的时间,即当客户端连接服务器时。

-

xact_start

-

timestamp with time zone

-

启动当前事务的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。

-

query_start

-

timestamp with time zone

-

开始当前活跃查询的时间,如果state的值不是active,则这个值是上一个查询的开始时间。

-

state_change

-

timestamp with time zone

-

上次状态改变的时间。

-

waiting

-

Boolean

-

如果后台当前正等待锁则为true。否则为false。

-

enqueue

-

text

-
语句当前排队状态。可能值是:
  • waiting in queue:表示语句在排队中。
  • 空:表示语句正在运行。
-
-

state

-

text

-
该后台当前总体状态。可能值是:
  • active:后台正在执行一个查询。
  • idle:后台正在等待一个新的客户端命令。
  • idle in transaction:后台在事务中,但事务中没有语句在执行。
  • idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。
  • fastpath function call:后台正在执行一个fast-path函数。
  • disabled:如果后台禁用track_activities,则报告这个状态。
-
-
说明:

普通用户只能查看到自己帐户所对应的会话状态。即其他帐户的state信息为空。例如以judy用户连接数据库后,在pg_stat_activity中查看到的普通用户joe及初始用户omm的state信息为空:

-
SELECT datname, usename, usesysid, state,pid FROM pg_stat_activity_ng;
-
 datname  | usename | usesysid | state  |       pid
-----------+---------+----------+--------+-----------------
- postgres | omm     |       10 |        | 139968752121616
- postgres | omm     |       10 |        | 139968903116560
- db_tpcds | judy    |    16398 | active | 139968391403280
- postgres | omm     |       10 |        | 139968643069712
- postgres | omm     |       10 |        | 139968680818448
- postgres | joe     |    16390 |        | 139968563377936
-(6 rows)
-
-

resource_pool

-

name

-

用户使用的资源池。

-

query_id

-

bigint

-

查询语句的ID。

-

query

-

text

-

该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

-

node_group

-

text

-

语句所属用户对应的逻辑集群。

-
+# PG\_STAT\_ACTIVITY\_NG + +PG\_STAT\_ACTIVITY\_NG视图显示在当前用户所属的逻辑集群下,所有查询的相关信息。 + +**表 1** PG\_STAT\_ACTIVITY\_NG字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

用户会话在后台连接到的数据库 OID 。

+

datname

+

name

+

用户会话在后台连接到的数据库名称。

+

pid

+

bigint

+

后台线程 ID 。

+

sessionid

+

bigint

+

会话 ID 。

+

global_sessionid

+

text

+

全局会话 ID 。

+

usesysid

+

oid

+

登录该后台的用户 OID 。

+

usename

+

name

+

登录该后台的用户名。

+

application_name

+

text

+

连接到该后台的应用名。

+

client_addr

+

inet

+

连接到该后台的客户端的 IP 地址。如果此字段是 null ,它表明通过服务器机器上 UNIX 套接字连接客户端或者这是内部进程,如 autovacuum 。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过 client_addr 的反向 DNS 查找得到。这个字段只有在启动 log_hostname 且使用 IP 连接时才非空。

+

client_port

+

integer

+

客户端用于与后台通讯的 TCP 端口号,如果使用 Unix 套接字,则为-1。

+

backend_start

+

timestamp with time zone

+

该过程开始的时间,即当客户端连接服务器时。

+

xact_start

+

timestamp with time zone

+

启动当前事务的时间,如果没有事务是活跃的,则为 null 。如果当前查询是首个事务,则这列等同于 query_start 列。

+

query_start

+

timestamp with time zone

+

开始当前活跃查询的时间,如果 state 的值不是 active ,则这个值是上一个查询的开始时间。

+

state_change

+

timestamp with time zone

+

上次状态改变的时间。

+

waiting

+

Boolean

+

如果后台当前正等待锁则为 true 。否则为 false 。

+

enqueue

+

text

+
语句当前排队状态。可能值是:
  • waiting in queue:表示语句在排队中。
  • 空:表示语句正在运行。
+
+

state

+

text

+
该后台当前总体状态。可能值是:
  • active:后台正在执行一个查询。
  • idle:后台正在等待一个新的客户端命令。
  • idle in transaction:后台在事务中,但事务中没有语句在执行。
  • idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。
  • fastpath function call:后台正在执行一个fast-path函数。
  • disabled:如果后台禁用 track_activities ,则报告这个状态。
+
+
说明:

普通用户只能查看到自己帐户所对应的会话状态。即其他帐户的 state 信息为空。例如以 judy 用户连接数据库后,在 pg_stat_activity 中查看到的普通用户 joe 及初始用户omm的 state 信息为空:

+
SELECT datname, usename , usesysid , state ,pid FROM pg_stat_activity_ng;
+
 datname  | usename | usesysid | state  |       pid
+----------+---------+----------+--------+-----------------
+ postgres | omm     |       10 |        | 139968752121616
+ postgres | omm     |       10 |        | 139968903116560
+ db_tpcds | judy    |    16398 | active | 139968391403280
+ postgres | omm     |       10 |        | 139968643069712
+ postgres | omm     |       10 |        | 139968680818448
+ postgres | joe     |    16390 |        | 139968563377936
+(6 rows)
+
+

resource_pool

+

name

+

用户使用的资源池。

+

query_id

+

bigint

+

查询语句的 ID 。

+

query

+

text

+

该后台的最新查询。如果 state 状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

+

node_group

+

text

+

语句所属用户对应的逻辑集群。

+
diff --git a/content/zh/docs/Developerguide/PG_STAT_ALL_INDEXES.md b/content/zh/docs/Developerguide/PG_STAT_ALL_INDEXES.md index 7e453a08d..0d73e8a8f 100644 --- a/content/zh/docs/Developerguide/PG_STAT_ALL_INDEXES.md +++ b/content/zh/docs/Developerguide/PG_STAT_ALL_INDEXES.md @@ -1,75 +1,75 @@ -# PG\_STAT\_ALL\_INDEXES - -PG\_STAT\_ALL\_INDEXES视图将包含当前数据库中的每个索引行,显示访问特定索引的统计。 - -索引可以通过简单的索引扫描或“位图”索引扫描进行使用。位图扫描中几个索引的输出可以通过AND或者OR规则进行组合, 因此当使用位图扫描的时候,很难将独立堆行抓取与特定索引进行组合,因此,一个位图扫描增加pg\_stat\_all\_indexes.idx\_tup\_read使用索引计数,并且增加pg\_stat\_all\_tables.idx\_tup\_fetch表计数,但不影响pg\_stat\_all\_indexes.idx\_tup\_fetch。 - -**表 1** PG\_STAT\_ALL\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

这个索引的表的OID。

-

indexrelid

-

oid

-

索引的OID。

-

schemaname

-

name

-

索引的模式名。

-

relname

-

name

-

索引的表名。

-

indexrelname

-

name

-

索引名。

-

idx_scan

-

bigint

-

索引上开始的索引扫描数。

-

idx_tup_read

-

bigint

-

通过索引上扫描返回的索引项数。

-

idx_tup_fetch

-

bigint

-

通过使用索引的简单索引扫描抓取的活表行数。

-
+# PG\_STAT\_ALL\_INDEXES + +PG\_STAT\_ALL\_INDEXES视图将包含当前数据库中的每个索引行,显示访问特定索引的统计。 + +索引可以通过简单的索引扫描或“位图”索引扫描进行使用。位图扫描中几个索引的输出可以通过 AND 或者 OR 规则进行组合, 因此当使用位图扫描的时候,很难将独立堆行抓取与特定索引进行组合,因此,一个位图扫描增加pg\_stat\_all\_indexes.idx\_tup\_read使用索引计数,并且增加pg\_stat\_all\_tables.idx\_tup\_fetch表计数,但不影响pg\_stat\_all\_indexes.idx\_tup\_fetch。 + +**表 1** PG\_STAT\_ALL\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

这个索引的表的 OID 。

+

indexrelid

+

oid

+

索引的 OID 。

+

schemaname

+

name

+

索引的模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

bigint

+

索引上开始的索引扫描数。

+

idx_tup_read

+

bigint

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

bigint

+

通过使用索引的简单索引扫描抓取的活表行数。

+
diff --git a/content/zh/docs/Developerguide/PG_STAT_ALL_TABLES.md b/content/zh/docs/Developerguide/PG_STAT_ALL_TABLES.md index b8d973186..0884f4a42 100644 --- a/content/zh/docs/Developerguide/PG_STAT_ALL_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STAT_ALL_TABLES.md @@ -1,172 +1,172 @@ -# PG\_STAT\_ALL\_TABLES - -PG\_STAT\_ALL\_TABLES视图将包含当前数据库中每个表的一行(包括TOAST表),显示访问特定表的统计信息。 - -**表 1** PG\_STAT\_ALL\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

表的OID。

-

schemaname

-

name

-

该表的模式名。

-

relname

-

name

-

表名。

-

seq_scan

-

bigint

-

该表发起的顺序扫描数。

-

seq_tup_read

-

bigint

-

顺序扫描抓取的活跃行数。

-

idx_scan

-

bigint

-

该表发起的索引扫描数。

-

idx_tup_fetch

-

bigint

-

索引扫描抓取的活跃行数。

-

n_tup_ins

-

bigint

-

插入行数。

-

n_tup_upd

-

bigint

-

更新行数。

-

n_tup_del

-

bigint

-

删除行数。

-

n_tup_hot_upd

-

bigint

-

HOT更新行数(比如没有更新所需的单独索引)。

-

n_live_tup

-

bigint

-

估计活跃行数。

-

n_dead_tup

-

bigint

-

估计死行数。

-

last_vacuum

-

timestamp with time zone

-

最后一次清理该表的时间。

-

last_autovacuum

-

timestamp with time zone

-

上次被autovacuum守护进程清理该表的时间。

-

last_analyze

-

timestamp with time zone

-

上次分析该表的时间。

-

last_autoanalyze

-

timestamp with time zone

-

上次被autovacuum守护进程分析该表的时间。

-

vacuum_count

-

bigint

-

这个表被清理的次数。

-

autovacuum_count

-

bigint

-

这个表被autovacuum清理的次数。

-

analyze_count

-

bigint

-

这个表被分析的次数。

-

autoanalyze_count

-

bigint

-

这个表被autovacuum守护进程分析的次数。

-

last_data_changed

-

timestamp with time zone

-

记录这个表上一次数据发生变化的时间(引起数据变化的操作包括INSERT/UPDATE/DELETE、EXCHANGE/TRUNCATE/DROP partition),该列数据仅在本地数据库主节点记录。

-
- +# PG\_STAT\_ALL\_TABLES + +PG\_STAT\_ALL\_TABLES视图将包含当前数据库中每个表的一行(包括 TOAST 表),显示访问特定表的统计信息。 + +**表 1** PG\_STAT\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的 OID 。

+

schemaname

+

name

+

该表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

该表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

该表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+

n_live_tup

+

bigint

+

估计活跃行数。

+

n_dead_tup

+

bigint

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次清理该表的时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被 autovacuum 守护进程清理该表的时间。

+

last_analyze

+

timestamp with time zone

+

上次分析该表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被 autovacuum 守护进程分析该表的时间。

+

vacuum_count

+

bigint

+

这个表被清理的次数。

+

autovacuum_count

+

bigint

+

这个表被 autovacuum 清理的次数。

+

analyze_count

+

bigint

+

这个表被分析的次数。

+

autoanalyze_count

+

bigint

+

这个表被 autovacuum 守护进程分析的次数。

+

last_data_changed

+

timestamp with time zone

+

记录这个表上一次数据发生变化的时间(引起数据变化的操作包括INSERT/UPDATE/DELETE、EXCHANGE/TRUNCATE/DROP partition),该列数据仅在本地数据库主节点记录。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STAT_BAD_BLOCK.md b/content/zh/docs/Developerguide/PG_STAT_BAD_BLOCK.md index 67ffdb0a9..4deeedf35 100644 --- a/content/zh/docs/Developerguide/PG_STAT_BAD_BLOCK.md +++ b/content/zh/docs/Developerguide/PG_STAT_BAD_BLOCK.md @@ -1,86 +1,86 @@ -# PG\_STAT\_BAD\_BLOCK - -PG\_STAT\_BAD\_BLOCK视图显示自节点启动后,读取数据时出现Page/CU校验失败的统计信息。 - -**表 1** PG\_STAT\_BAD\_BLOCK字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

nodename

-

text

-

节点名。

-

databaseid

-

integer

-

数据库OID。

-

tablespaceid

-

integer

-

表空间OID。

-

relfilenode

-

integer

-

文件对象ID。

-

bucketid

-

smallint

-

一致性hash bucket ID。

-

forknum

-

integer

-

文件类型。取值如下:

-

0,数据主文件。

-

1,FSM文件。

-

2,VM文件。

-

3,BCM文件。

-

大于4,列存表每个字段的数据文件。

-

error_count

-

integer

-

出现校验失败的次数。

-

first_time

-

timestamp with time zone

-

第一次出现时间。

-

last_time

-

timestamp with time zone

-

最近一次出现时间。

-
- +# PG\_STAT\_BAD\_BLOCK + +PG\_STAT\_BAD\_BLOCK视图显示自节点启动后,读取数据时出现Page/CU校验失败的统计信息。 + +**表 1** PG\_STAT\_BAD\_BLOCK字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

text

+

节点名。

+

databaseid

+

integer

+

数据库 OID 。

+

tablespaceid

+

integer

+

表空间 OID 。

+

relfilenode

+

integer

+

文件对象 ID 。

+

bucketid

+

smallint

+

一致性 hash bucket ID 。

+

forknum

+

integer

+

文件类型。取值如下:

+

0,数据主文件。

+

1, FSM 文件。

+

2, VM 文件。

+

3, BCM 文件。

+

大于 4 ,列存表每个字段的数据文件。

+

error_count

+

integer

+

出现校验失败的次数。

+

first_time

+

timestamp with time zone

+

第一次出现时间。

+

last_time

+

timestamp with time zone

+

最近一次出现时间。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STAT_BGWRITER.md b/content/zh/docs/Developerguide/PG_STAT_BGWRITER.md index 321946f03..684221e04 100644 --- a/content/zh/docs/Developerguide/PG_STAT_BGWRITER.md +++ b/content/zh/docs/Developerguide/PG_STAT_BGWRITER.md @@ -1,94 +1,94 @@ -# PG\_STAT\_BGWRITER - -PG\_STAT\_BGWRITER视图显示关于后端写进程活动的统计信息。 - -**表 1** PG\_STAT\_BGWRITER字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

checkpoints_timed

-

bigint

-

执行的定期检查点数。

-

checkpoints_req

-

bigint

-

执行的需求检查点数。

-

checkpoint_write_time

-

double precision

-

花费在检查点处理部分的时间总量,其中文件被写入到磁盘,以毫秒为单位。

-

checkpoint_sync_time

-

double precision

-

花费在检查点处理部分的时间总量,其中文件被同步到磁盘,以毫秒为单位。

-

buffers_checkpoint

-

bigint

-

检查点写缓冲区数量。

-

buffers_clean

-

bigint

-

后端写进程写缓冲区数量。

-

maxwritten_clean

-

bigint

-

后端写进程停止清理扫描时间数,因为它写了太多缓冲区。

-

buffers_backend

-

bigint

-

通过后端直接写缓冲区数。

-

buffers_backend_fsync

-

bigint

-

后端不得不执行自己的fsync调用的时间数(通常后端写进程处理这些即使后端确实自己写)。

-

buffers_alloc

-

bigint

-

分配的缓冲区数量。

-

stats_reset

-

timestamp with time zone

-

这些统计被重置的时间。

-
+# PG\_STAT\_BGWRITER + +PG\_STAT\_BGWRITER视图显示关于后端写进程活动的统计信息。 + +**表 1** PG\_STAT\_BGWRITER字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

checkpoints_timed

+

bigint

+

执行的定期检查点数。

+

checkpoints_req

+

bigint

+

执行的需求检查点数。

+

checkpoint_write_time

+

double precision

+

花费在检查点处理部分的时间总量,其中文件被写入到磁盘,以毫秒为单位。

+

checkpoint_sync_time

+

double precision

+

花费在检查点处理部分的时间总量,其中文件被同步到磁盘,以毫秒为单位。

+

buffers_checkpoint

+

bigint

+

检查点写缓冲区数量。

+

buffers_clean

+

bigint

+

后端写进程写缓冲区数量。

+

maxwritten_clean

+

bigint

+

后端写进程停止清理扫描时间数,因为它写了太多缓冲区。

+

buffers_backend

+

bigint

+

通过后端直接写缓冲区数。

+

buffers_backend_fsync

+

bigint

+

后端不得不执行自己的 fsync 调用的时间数(通常后端写进程处理这些即使后端确实自己写)。

+

buffers_alloc

+

bigint

+

分配的缓冲区数量。

+

stats_reset

+

timestamp with time zone

+

这些统计被重置的时间。

+
diff --git a/content/zh/docs/Developerguide/PG_STAT_DATABASE.md b/content/zh/docs/Developerguide/PG_STAT_DATABASE.md index 3c644a629..09622abd0 100644 --- a/content/zh/docs/Developerguide/PG_STAT_DATABASE.md +++ b/content/zh/docs/Developerguide/PG_STAT_DATABASE.md @@ -1,150 +1,150 @@ -# PG\_STAT\_DATABASE - -PG\_STAT\_DATABASE视图将包含openGauss中每个数据库的数据库统计信息。 - -**表 1** PG\_STAT\_DATABASE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

数据库的OID。

-

datname

-

name

-

这个数据库的名称。

-

numbackends

-

integer

-

当前连接到该数据库的后端数。这是在返回一个反映目前状态值的视图中唯一的列;自上次重置所有其他列返回累积值。

-

xact_commit

-

bigint

-

此数据库中已经提交的事务数。

-

xact_rollback

-

bigint

-

此数据库中已经回滚的事务数。

-

blks_read

-

bigint

-

在这个数据库中读取的磁盘块的数量。

-

blks_hit

-

bigint

-

高速缓存中已经发现的磁盘块的次数, 这样读取是不必要的(这只包括openGauss缓冲区高速缓存,没有操作系统的文件系统缓存)。

-

tup_returned

-

bigint

-

通过数据库查询返回的行数。

-

tup_fetched

-

bigint

-

通过数据库查询抓取的行数。

-

tup_inserted

-

bigint

-

通过数据库查询插入的行数。

-

tup_updated

-

bigint

-

通过数据库查询更新的行数。

-

tup_deleted

-

bigint

-

通过数据库查询删除的行数。

-

conflicts

-

bigint

-

由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见PG_STAT_DATABASE_CONFLICTS获取更多信息。

-

temp_files

-

bigint

-

通过数据库查询创建的临时文件数量。计算所有临时文件, 不论为什么创建临时文件(比如排序或者哈希), 而且不管log_temp_files设置。

-

temp_bytes

-

bigint

-

通过数据库查询写入临时文件的数据总量。计算所有临时文件,不论为什么创建临时文件,而且不管log_temp_files设置。

-

deadlocks

-

bigint

-

在该数据库中检索的死锁数。

-

blk_read_time

-

double precision

-

通过数据库后端读取数据文件块花费的时间,以毫秒计算。

-

blk_write_time

-

double precision

-

通过数据库后端写入数据文件块花费的时间,以毫秒计算。

-

stats_reset

-

timestamp with time zone

-

重置当前状态统计的时间。

-
+# PG\_STAT\_DATABASE + +PG\_STAT\_DATABASE视图将包含 openGauss 中每个数据库的数据库统计信息。 + +**表 1** PG\_STAT\_DATABASE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

数据库的 OID 。

+

datname

+

name

+

这个数据库的名称。

+

numbackends

+

integer

+

当前连接到该数据库的后端数。这是在返回一个反映目前状态值的视图中唯一的列;自上次重置所有其他列返回累积值。

+

xact_commit

+

bigint

+

此数据库中已经提交的事务数。

+

xact_rollback

+

bigint

+

此数据库中已经回滚的事务数。

+

blks_read

+

bigint

+

在这个数据库中读取的磁盘块的数量。

+

blks_hit

+

bigint

+

高速缓存中已经发现的磁盘块的次数, 这样读取是不必要的(这只包括 openGauss 缓冲区高速缓存,没有操作系统的文件系统缓存)。

+

tup_returned

+

bigint

+

通过数据库查询返回的行数。

+

tup_fetched

+

bigint

+

通过数据库查询抓取的行数。

+

tup_inserted

+

bigint

+

通过数据库查询插入的行数。

+

tup_updated

+

bigint

+

通过数据库查询更新的行数。

+

tup_deleted

+

bigint

+

通过数据库查询删除的行数。

+

conflicts

+

bigint

+

由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见PG_STAT_DATABASE_CONFLICTS获取更多信息。

+

temp_files

+

bigint

+

通过数据库查询创建的临时文件数量。计算所有临时文件, 不论为什么创建临时文件(比如排序或者哈希), 而且不管 log_temp_files 设置。

+

temp_bytes

+

bigint

+

通过数据库查询写入临时文件的数据总量。计算所有临时文件,不论为什么创建临时文件,而且不管 log_temp_files 设置。

+

deadlocks

+

bigint

+

在该数据库中检索的死锁数。

+

blk_read_time

+

double precision

+

通过数据库后端读取数据文件块花费的时间,以毫秒计算。

+

blk_write_time

+

double precision

+

通过数据库后端写入数据文件块花费的时间,以毫秒计算。

+

stats_reset

+

timestamp with time zone

+

重置当前状态统计的时间。

+
diff --git a/content/zh/docs/Developerguide/PG_STAT_DATABASE_CONFLICTS.md b/content/zh/docs/Developerguide/PG_STAT_DATABASE_CONFLICTS.md index 9151bf05f..dc5660838 100644 --- a/content/zh/docs/Developerguide/PG_STAT_DATABASE_CONFLICTS.md +++ b/content/zh/docs/Developerguide/PG_STAT_DATABASE_CONFLICTS.md @@ -1,67 +1,67 @@ -# PG\_STAT\_DATABASE\_CONFLICTS - -PG\_STAT\_DATABASE\_CONFLICTS视图显示数据库冲突状态的统计信息。 - -**表 1** PG\_STAT\_DATABASE\_CONFLICTS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

数据库标识。

-

datname

-

name

-

数据库名称。

-

confl_tablespace

-

bigint

-

冲突的表空间的数目。

-

confl_lock

-

bigint

-

冲突的锁数目。

-

confl_snapshot

-

bigint

-

冲突的快照数目。

-

confl_bufferpin

-

bigint

-

冲突的缓冲区数目。

-

confl_deadlock

-

bigint

-

冲突的死锁数目。

-
- +# PG\_STAT\_DATABASE\_CONFLICTS + +PG\_STAT\_DATABASE\_CONFLICTS视图显示数据库冲突状态的统计信息。 + +**表 1** PG\_STAT\_DATABASE\_CONFLICTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

数据库标识。

+

datname

+

name

+

数据库名称。

+

confl_tablespace

+

bigint

+

冲突的表空间的数目。

+

confl_lock

+

bigint

+

冲突的锁数目。

+

confl_snapshot

+

bigint

+

冲突的快照数目。

+

confl_bufferpin

+

bigint

+

冲突的缓冲区数目。

+

confl_deadlock

+

bigint

+

冲突的死锁数目。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STAT_REPLICATION.md b/content/zh/docs/Developerguide/PG_STAT_REPLICATION.md index bedf2ffa8..29514dfee 100644 --- a/content/zh/docs/Developerguide/PG_STAT_REPLICATION.md +++ b/content/zh/docs/Developerguide/PG_STAT_REPLICATION.md @@ -1,125 +1,125 @@ -# PG\_STAT\_REPLICATION - -PG\_STAT\_REPLICATION视图用于描述日志同步状态信息,例如发起端发送日志位置,接收端接收日志位置等。 - -**表 1** PG\_STAT\_REPLICATION字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

pid

-

bigint

-

线程的PID。

-

usesysid

-

oid

-

用户系统ID。

-

usename

-

name

-

用户名。

-

application_name

-

text

-

程序名称。

-

client_addr

-

inet

-

客户端地址。

-

client_hostname

-

text

-

客户端名。

-

client_port

-

integer

-

客户端端口。

-

backend_start

-

timestamp with time zone

-

程序启动时间。

-

state

-

text

-

日志复制的状态:

-
  • 追赶状态。
  • 一致的流状态。
-

sender_sent_location

-

text

-

发送端发送日志位置。

-

receiver_write_location

-

text

-

接收端write日志位置。

-

receiver_flush_location

-

text

-

接收端flush日志位置。

-

receiver_replay_location

-

text

-

接收端replay日志位置。

-

sync_priority

-

integer

-

同步复制的优先级(0表示异步)。

-

sync_state

-

text

-

同步状态:

-
  • 异步复制。
  • 同步复制。
  • 潜在同步者。
-
- +# PG\_STAT\_REPLICATION + +PG\_STAT\_REPLICATION视图用于描述日志同步状态信息,例如发起端发送日志位置,接收端接收日志位置等。 + +**表 1** PG\_STAT\_REPLICATION字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

pid

+

bigint

+

线程的 PID 。

+

usesysid

+

oid

+

用户系统 ID 。

+

usename

+

name

+

用户名。

+

application_name

+

text

+

程序名称。

+

client_addr

+

inet

+

客户端地址。

+

client_hostname

+

text

+

客户端名。

+

client_port

+

integer

+

客户端端口。

+

backend_start

+

timestamp with time zone

+

程序启动时间。

+

state

+

text

+

日志复制的状态:

+
  • 追赶状态。
  • 一致的流状态。
+

sender_sent_location

+

text

+

发送端发送日志位置。

+

receiver_write_location

+

text

+

接收端 write 日志位置。

+

receiver_flush_location

+

text

+

接收端 flush 日志位置。

+

receiver_replay_location

+

text

+

接收端 replay 日志位置。

+

sync_priority

+

integer

+

同步复制的优先级(0表示异步)。

+

sync_state

+

text

+

同步状态:

+
  • 异步复制。
  • 同步复制。
  • 潜在同步者。
+
+ diff --git a/content/zh/docs/Developerguide/PG_STAT_SYS_INDEXES.md b/content/zh/docs/Developerguide/PG_STAT_SYS_INDEXES.md index 06b06e5e9..70ec512b2 100644 --- a/content/zh/docs/Developerguide/PG_STAT_SYS_INDEXES.md +++ b/content/zh/docs/Developerguide/PG_STAT_SYS_INDEXES.md @@ -1,74 +1,74 @@ -# PG\_STAT\_SYS\_INDEXES - -PG\_STAT\_SYS\_INDEXES视图显示pg\_catalog、information\_schema模式中所有系统表的索引状态信息。 - -**表 1** PG\_STAT\_SYS\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

这个索引的表的OID。

-

indexrelid

-

oid

-

索引的OID。

-

schemaname

-

name

-

索引的模式名。

-

relname

-

name

-

索引的表名。

-

indexrelname

-

name

-

索引名。

-

idx_scan

-

bigint

-

索引上开始的索引扫描数。

-

idx_tup_read

-

bigint

-

通过索引上扫描返回的索引项数。

-

idx_tup_fetch

-

bigint

-

通过使用索引的简单索引扫描抓取的活表行数。

-
- +# PG\_STAT\_SYS\_INDEXES + +PG\_STAT\_SYS\_INDEXES视图显示pg\_catalog、information\_schema模式中所有系统表的索引状态信息。 + +**表 1** PG\_STAT\_SYS\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

这个索引的表的 OID 。

+

indexrelid

+

oid

+

索引的 OID 。

+

schemaname

+

name

+

索引的模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

bigint

+

索引上开始的索引扫描数。

+

idx_tup_read

+

bigint

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

bigint

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STAT_SYS_TABLES.md b/content/zh/docs/Developerguide/PG_STAT_SYS_TABLES.md index 13d035157..1aa650774 100644 --- a/content/zh/docs/Developerguide/PG_STAT_SYS_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STAT_SYS_TABLES.md @@ -1,172 +1,172 @@ -# PG\_STAT\_SYS\_TABLES - -PG\_STAT\_SYS\_TABLES视图显示pg\_catalog、information\_schema模式的所有命名空间中系统表的统计信息。 - -**表 1** PG\_STAT\_SYS\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

表的OID。

-

schemaname

-

name

-

该表的模式名。

-

relname

-

name

-

表名。

-

seq_scan

-

bigint

-

该表发起的顺序扫描数。

-

seq_tup_read

-

bigint

-

顺序扫描抓取的活跃行数。

-

idx_scan

-

bigint

-

该表发起的索引扫描数。

-

idx_tup_fetch

-

bigint

-

索引扫描抓取的活跃行数。

-

n_tup_ins

-

bigint

-

插入行数。

-

n_tup_upd

-

bigint

-

更新行数。

-

n_tup_del

-

bigint

-

删除行数。

-

n_tup_hot_upd

-

bigint

-

HOT更新行数(比如没有更新所需的单独索引)。

-

n_live_tup

-

bigint

-

估计活跃行数。

-

n_dead_tup

-

bigint

-

估计死行数。

-

last_vacuum

-

timestamp with time zone

-

最后一次该表是手动清理的时间(不计算VACUUM FULL)。

-

last_autovacuum

-

timestamp with time zone

-

上次被autovacuum守护进程清理的时间。

-

last_analyze

-

timestamp with time zone

-

上次手动分析这个表的时间。

-

last_autoanalyze

-

timestamp with time zone

-

上次被autovacuum守护进程分析的时间。

-

vacuum_count

-

bigint

-

这个表被手动清理的次数(不计算VACUUM FULL)。

-

autovacuum_count

-

bigint

-

这个表被autovacuum清理的次数。

-

analyze_count

-

bigint

-

这个表被手动分析的次数。

-

autoanalyze_count

-

bigint

-

这个表被autovacuum守护进程分析的次数。

-

last_data_changed

-

timestamp with time zone

-

这个表数据最近修改时间。

-
- +# PG\_STAT\_SYS\_TABLES + +PG\_STAT\_SYS\_TABLES视图显示pg\_catalog、information\_schema模式的所有命名空间中系统表的统计信息。 + +**表 1** PG\_STAT\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的 OID 。

+

schemaname

+

name

+

该表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

该表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

该表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+

n_live_tup

+

bigint

+

估计活跃行数。

+

n_dead_tup

+

bigint

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次该表是手动清理的时间(不计算VACUUM FULL)。

+

last_autovacuum

+

timestamp with time zone

+

上次被 autovacuum 守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析这个表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被 autovacuum 守护进程分析的时间。

+

vacuum_count

+

bigint

+

这个表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

bigint

+

这个表被 autovacuum 清理的次数。

+

analyze_count

+

bigint

+

这个表被手动分析的次数。

+

autoanalyze_count

+

bigint

+

这个表被 autovacuum 守护进程分析的次数。

+

last_data_changed

+

timestamp with time zone

+

这个表数据最近修改时间。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STAT_USER_FUNCTIONS.md b/content/zh/docs/Developerguide/PG_STAT_USER_FUNCTIONS.md index c57a5c7a4..aba61d3c4 100644 --- a/content/zh/docs/Developerguide/PG_STAT_USER_FUNCTIONS.md +++ b/content/zh/docs/Developerguide/PG_STAT_USER_FUNCTIONS.md @@ -1,60 +1,60 @@ -# PG\_STAT\_USER\_FUNCTIONS - -PG\_STAT\_USER\_FUNCTIONS视图显示命名空间中用户自定义函数(函数语言为非内部语言)的状态信息。 - -**表 1** PG\_STAT\_USER\_FUNCTIONS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

funcid

-

oid

-

函数标识。

-

schemaname

-

name

-

模式的名称。

-

funcname

-

name

-

函数名称。

-

calls

-

bigint

-

函数被调用的次数。

-

total_time

-

double precision

-

函数的总执行时长。

-

self_time

-

double precision

-

当前线程调用函数的总的时长。

-
- +# PG\_STAT\_USER\_FUNCTIONS + +PG\_STAT\_USER\_FUNCTIONS视图显示命名空间中用户自定义函数(函数语言为非内部语言)的状态信息。 + +**表 1** PG\_STAT\_USER\_FUNCTIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

funcid

+

oid

+

函数标识。

+

schemaname

+

name

+

模式的名称。

+

funcname

+

name

+

函数名称。

+

calls

+

bigint

+

函数被调用的次数。

+

total_time

+

double precision

+

函数的总执行时长。

+

self_time

+

double precision

+

当前线程调用函数的总的时长。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STAT_USER_INDEXES.md b/content/zh/docs/Developerguide/PG_STAT_USER_INDEXES.md index c4b4781d5..b273af888 100644 --- a/content/zh/docs/Developerguide/PG_STAT_USER_INDEXES.md +++ b/content/zh/docs/Developerguide/PG_STAT_USER_INDEXES.md @@ -1,74 +1,74 @@ -# PG\_STAT\_USER\_INDEXES - -PG\_STAT\_USER\_INDEXES视图显示数据库中用户自定义普通表和toast表的索引状态信息。 - -**表 1** PG\_STAT\_USER\_INDEXES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

这个索引的表的OID。

-

indexrelid

-

oid

-

索引的OID。

-

schemaname

-

name

-

索引的模式名。

-

relname

-

name

-

索引的表名。

-

indexrelname

-

name

-

索引名。

-

idx_scan

-

bigint

-

索引上开始的索引扫描数。

-

idx_tup_read

-

bigint

-

通过索引上扫描返回的索引项数。

-

idx_tup_fetch

-

bigint

-

通过使用索引的简单索引扫描抓取的活表行数。

-
- +# PG\_STAT\_USER\_INDEXES + +PG\_STAT\_USER\_INDEXES视图显示数据库中用户自定义普通表和 toast 表的索引状态信息。 + +**表 1** PG\_STAT\_USER\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

这个索引的表的 OID 。

+

indexrelid

+

oid

+

索引的 OID 。

+

schemaname

+

name

+

索引的模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

bigint

+

索引上开始的索引扫描数。

+

idx_tup_read

+

bigint

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

bigint

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STAT_USER_TABLES.md b/content/zh/docs/Developerguide/PG_STAT_USER_TABLES.md index e2cb95bc9..c607a214d 100644 --- a/content/zh/docs/Developerguide/PG_STAT_USER_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STAT_USER_TABLES.md @@ -1,173 +1,173 @@ -# PG\_STAT\_USER\_TABLES - -PG\_STAT\_USER\_TABLES视图显示所有命名空间中用户自定义普通表和toast表的状态信息。 - -**表 1** PG\_STAT\_USER\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

表的OID。

-

schemaname

-

name

-

该表的模式名。

-

relname

-

name

-

表名。

-

seq_scan

-

bigint

-

该表发起的顺序扫描数。

-

seq_tup_read

-

bigint

-

顺序扫描抓取的活跃行数。

-

idx_scan

-

bigint

-

该表发起的索引扫描数。

-

idx_tup_fetch

-

bigint

-

索引扫描抓取的活跃行数。

-

n_tup_ins

-

bigint

-

插入行数。

-

n_tup_upd

-

bigint

-

更新行数。

-

n_tup_del

-

bigint

-

删除行数。

-

n_tup_hot_upd

-

bigint

-

HOT更新行数(即没有更新所需的单独索引)。

-

n_live_tup

-

bigint

-

估计活跃行数。

-

n_dead_tup

-

bigint

-

估计死行数。

-

last_vacuum

-

timestamp with time zone

-

最后一次该表是手动清理的(不计算VACUUM FULL)。

-

last_autovacuum

-

timestamp with time zone

-

上次被autovacuum守护进程清理的表。

-

last_analyze

-

timestamp with time zone

-

上次手动分析这个表。

-

last_autoanalyze

-

timestamp with time zone

-

上次被autovacuum守护进程分析的表。

-

vacuum_count

-

bigint

-

这个表被手动清理的次数(不计算VACUUM FULL)。

-

autovacuum_count

-

bigint

-

这个表被autovacuum清理的次数。

-

analyze_count

-

bigint

-

这个表被手动分析的次数。

-

autoanalyze_count

-

bigint

-

这个表被autovacuum守护进程分析的次数。

-

last_data_changed

-

timestamp with time zone

-

这个表数据最近修改时间。

-
- - +# PG\_STAT\_USER\_TABLES + +PG\_STAT\_USER\_TABLES视图显示所有命名空间中用户自定义普通表和 toast 表的状态信息。 + +**表 1** PG\_STAT\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的 OID 。

+

schemaname

+

name

+

该表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

该表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

该表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(即没有更新所需的单独索引)。

+

n_live_tup

+

bigint

+

估计活跃行数。

+

n_dead_tup

+

bigint

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次该表是手动清理的(不计算VACUUM FULL)。

+

last_autovacuum

+

timestamp with time zone

+

上次被 autovacuum 守护进程清理的表。

+

last_analyze

+

timestamp with time zone

+

上次手动分析这个表。

+

last_autoanalyze

+

timestamp with time zone

+

上次被 autovacuum 守护进程分析的表。

+

vacuum_count

+

bigint

+

这个表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

bigint

+

这个表被 autovacuum 清理的次数。

+

analyze_count

+

bigint

+

这个表被手动分析的次数。

+

autoanalyze_count

+

bigint

+

这个表被 autovacuum 守护进程分析的次数。

+

last_data_changed

+

timestamp with time zone

+

这个表数据最近修改时间。

+
+ + diff --git a/content/zh/docs/Developerguide/PG_STAT_XACT_ALL_TABLES.md b/content/zh/docs/Developerguide/PG_STAT_XACT_ALL_TABLES.md index bbf1860e7..a387f28e8 100644 --- a/content/zh/docs/Developerguide/PG_STAT_XACT_ALL_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STAT_XACT_ALL_TABLES.md @@ -1,95 +1,95 @@ -# PG\_STAT\_XACT\_ALL\_TABLES - -PG\_STAT\_XACT\_ALL\_TABLES视图显示命名空间中所有普通表和toast表的事务状态信息。 - -**表 1** PG\_STAT\_XACT\_ALL\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

表的OID。

-

schemaname

-

name

-

该表的模式名。

-

relname

-

name

-

表名。

-

seq_scan

-

bigint

-

该表发起的顺序扫描数。

-

seq_tup_read

-

bigint

-

顺序扫描抓取的活跃行数。

-

idx_scan

-

bigint

-

该表发起的索引扫描数。

-

idx_tup_fetch

-

bigint

-

索引扫描抓取的活跃行数。

-

n_tup_ins

-

bigint

-

插入行数。

-

n_tup_upd

-

bigint

-

更新行数。

-

n_tup_del

-

bigint

-

删除行数。

-

n_tup_hot_upd

-

bigint

-

HOT更新行数(比如没有更新所需的单独索引)。

-
- +# PG\_STAT\_XACT\_ALL\_TABLES + +PG\_STAT\_XACT\_ALL\_TABLES视图显示命名空间中所有普通表和 toast 表的事务状态信息。 + +**表 1** PG\_STAT\_XACT\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的 OID 。

+

schemaname

+

name

+

该表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

该表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

该表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STAT_XACT_SYS_TABLES.md b/content/zh/docs/Developerguide/PG_STAT_XACT_SYS_TABLES.md index cab52942b..0f3256f12 100644 --- a/content/zh/docs/Developerguide/PG_STAT_XACT_SYS_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STAT_XACT_SYS_TABLES.md @@ -1,95 +1,95 @@ -# PG\_STAT\_XACT\_SYS\_TABLES - -PG\_STAT\_XACT\_SYS\_TABLES视图显示命名空间中系统表的事务状态信息。 - -**表 1** PG\_STAT\_XACT\_SYS\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

表的OID。

-

schemaname

-

name

-

该表的模式名。

-

relname

-

name

-

表名。

-

seq_scan

-

bigint

-

该表发起的顺序扫描数。

-

seq_tup_read

-

bigint

-

顺序扫描抓取的活跃行数。

-

idx_scan

-

bigint

-

该表发起的索引扫描数。

-

idx_tup_fetch

-

bigint

-

索引扫描抓取的活跃行数。

-

n_tup_ins

-

bigint

-

插入行数。

-

n_tup_upd

-

bigint

-

更新行数。

-

n_tup_del

-

bigint

-

删除行数。

-

n_tup_hot_upd

-

bigint

-

HOT更新行数(比如没有更新所需的单独索引)。

-
- +# PG\_STAT\_XACT\_SYS\_TABLES + +PG\_STAT\_XACT\_SYS\_TABLES视图显示命名空间中系统表的事务状态信息。 + +**表 1** PG\_STAT\_XACT\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的 OID 。

+

schemaname

+

name

+

该表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

该表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

该表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STAT_XACT_USER_FUNCTIONS.md b/content/zh/docs/Developerguide/PG_STAT_XACT_USER_FUNCTIONS.md index aebd7ce56..bf48f8430 100644 --- a/content/zh/docs/Developerguide/PG_STAT_XACT_USER_FUNCTIONS.md +++ b/content/zh/docs/Developerguide/PG_STAT_XACT_USER_FUNCTIONS.md @@ -1,60 +1,60 @@ -# PG\_STAT\_XACT\_USER\_FUNCTIONS - -PG\_STAT\_XACT\_USER\_FUNCTIONS视图包含每个函数的执行的统计信息。 - -**表 1** PG\_STAT\_XACT\_USER\_FUNCTIONS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

funcid

-

oid

-

函数标识。

-

schemaname

-

name

-

模式的名称。

-

funcname

-

name

-

函数名称。

-

calls

-

bigint

-

函数被调用的次数。

-

total_time

-

double precision

-

函数的总执行时长。

-

self_time

-

double precision

-

当前线程调用函数的总的时长。

-
- +# PG\_STAT\_XACT\_USER\_FUNCTIONS + +PG\_STAT\_XACT\_USER\_FUNCTIONS视图包含每个函数的执行的统计信息。 + +**表 1** PG\_STAT\_XACT\_USER\_FUNCTIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

funcid

+

oid

+

函数标识。

+

schemaname

+

name

+

模式的名称。

+

funcname

+

name

+

函数名称。

+

calls

+

bigint

+

函数被调用的次数。

+

total_time

+

double precision

+

函数的总执行时长。

+

self_time

+

double precision

+

当前线程调用函数的总的时长。

+
+ diff --git a/content/zh/docs/Developerguide/PG_STAT_XACT_USER_TABLES.md b/content/zh/docs/Developerguide/PG_STAT_XACT_USER_TABLES.md index edc668ff1..bf8935568 100644 --- a/content/zh/docs/Developerguide/PG_STAT_XACT_USER_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STAT_XACT_USER_TABLES.md @@ -1,95 +1,95 @@ -# PG\_STAT\_XACT\_USER\_TABLES - -PG\_STAT\_XACT\_USER\_TABLES视图显示命名空间中用户表的事务状态信息。 - -**表 1** PG\_STAT\_XACT\_USER\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

relid

-

oid

-

表的OID。

-

schemaname

-

name

-

该表的模式名。

-

relname

-

name

-

表名。

-

seq_scan

-

bigint

-

该表发起的顺序扫描数。

-

seq_tup_read

-

bigint

-

顺序扫描抓取的活跃行数。

-

idx_scan

-

bigint

-

该表发起的索引扫描数。

-

idx_tup_fetch

-

bigint

-

索引扫描抓取的活跃行数。

-

n_tup_ins

-

bigint

-

插入行数。

-

n_tup_upd

-

bigint

-

更新行数。

-

n_tup_del

-

bigint

-

删除行数。

-

n_tup_hot_upd

-

bigint

-

HOT更新行数(比如没有更新所需的单独索引)。

-
- +# PG\_STAT\_XACT\_USER\_TABLES + +PG\_STAT\_XACT\_USER\_TABLES视图显示命名空间中用户表的事务状态信息。 + +**表 1** PG\_STAT\_XACT\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的 OID 。

+

schemaname

+

name

+

该表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

该表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

该表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/PG_SYNONYM.md b/content/zh/docs/Developerguide/PG_SYNONYM.md index 2979c1e37..1d2ed808e 100644 --- a/content/zh/docs/Developerguide/PG_SYNONYM.md +++ b/content/zh/docs/Developerguide/PG_SYNONYM.md @@ -1,60 +1,60 @@ -# PG\_SYNONYM - -PG\_SYNONYM系统表存储同义词对象名与其他数据库对象名间的映射信息。 - -**表 1** PG\_SYNONYM字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

数据库对象id。

-

synname

-

name

-

同义词名称。

-

synnamespace

-

oid

-

包含该同义词的名字空间的OID。

-

synowner

-

oid

-

同义词的所有者,通常是创建它的用户OID。

-

synobjschema

-

name

-

关联对象指定的模式名。

-

synobjname

-

name

-

关联对象名。

-
- +# PG\_SYNONYM + +PG\_SYNONYM系统表存储同义词对象名与其他数据库对象名间的映射信息。 + +**表 1** PG\_SYNONYM字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

数据库对象 id 。

+

synname

+

name

+

同义词名称。

+

synnamespace

+

oid

+

包含该同义词的名字空间的 OID 。

+

synowner

+

oid

+

同义词的所有者,通常是创建它的用户 OID 。

+

synobjschema

+

name

+

关联对象指定的模式名。

+

synobjname

+

name

+

关联对象名。

+
+ diff --git a/content/zh/docs/Developerguide/PG_TABLES.md b/content/zh/docs/Developerguide/PG_TABLES.md index b66793f30..bf4dfc192 100644 --- a/content/zh/docs/Developerguide/PG_TABLES.md +++ b/content/zh/docs/Developerguide/PG_TABLES.md @@ -1,110 +1,110 @@ -# PG\_TABLES - -PG\_TABLES视图提供了对数据库中每个表访问的有用信息。 - -**表 1** PG\_TABLES字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

schemaname

-

name

-

PG_NAMESPACE.nspname

-

包含表的模式名。

-

tablename

-

name

-

PG_CLASS.relname

-

表名。

-

tableowner

-

name

-

pg_get_userbyid(PG_CLASS.relowner)

-

表的所有者。

-

tablespace

-

name

-

PG_TABLESPACE.spcname

-

包含表的表空间,默认为NULL。

-

hasindexes

-

Boolean

-

PG_CLASS.relhasindex

-

如果表上有索引(或者最近拥有)则为TRUE,否则为FALSE。

-

hasrules

-

Boolean

-

PG_CLASS.relhasruls

-

如果表上有规则,则为TRUE,否则为FALSE。

-

hastriggers

-

Boolean

-

PG_CLASS.RELHASTRIGGERS

-

如果表上有触发器,则为TRUE,否则为FALSE。

-

tablecreator

-

name

-

pg_get_userbyid(po.creator)

-

创建表的名称。

-

created

-

timestamp with time zone

-

pg_object.ctime

-

对象的创建时间。

-

last_ddl_time

-

timestamp with time zone

-

pg_object.mtime

-

对象的最后修改时间。

-
- +# PG\_TABLES + +PG\_TABLES视图提供了对数据库中每个表访问的有用信息。 + +**表 1** PG\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

schemaname

+

name

+

PG_NAMESPACE.nspname

+

包含表的模式名。

+

tablename

+

name

+

PG_CLASS.relname

+

表名。

+

tableowner

+

name

+

pg_get_userbyid(PG_CLASS.relowner)

+

表的所有者。

+

tablespace

+

name

+

PG_TABLESPACE.spcname

+

包含表的表空间,默认为 NULL 。

+

hasindexes

+

Boolean

+

PG_CLASS.relhasindex

+

如果表上有索引(或者最近拥有)则为 TRUE ,否则为 FALSE 。

+

hasrules

+

Boolean

+

PG_CLASS.relhasruls

+

如果表上有规则,则为 TRUE ,否则为 FALSE 。

+

hastriggers

+

Boolean

+

PG_CLASS.RELHASTRIGGERS

+

如果表上有触发器,则为 TRUE ,否则为 FALSE 。

+

tablecreator

+

name

+

pg_get_userbyid(po.creator)

+

创建表的名称。

+

created

+

timestamp with time zone

+

pg_object.ctime

+

对象的创建时间。

+

last_ddl_time

+

timestamp with time zone

+

pg_object.mtime

+

对象的最后修改时间。

+
+ diff --git a/content/zh/docs/Developerguide/PG_TABLESPACE.md b/content/zh/docs/Developerguide/PG_TABLESPACE.md index b194dc67a..517ffe96b 100644 --- a/content/zh/docs/Developerguide/PG_TABLESPACE.md +++ b/content/zh/docs/Developerguide/PG_TABLESPACE.md @@ -1,68 +1,68 @@ -# PG\_TABLESPACE - -PG\_TABLESPACE系统表存储表空间信息。 - -**表 1** PG\_TABLESPACE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

spcname

-

name

-

表空间名称。

-

spcowner

-

oid

-

表空间的所有者,通常是创建它的人。

-

spcacl

-

aclitem[]

-

GRANTREVOKE

-

spcoptions

-

text[]

-

表空间的选项。

-

spcmaxsize

-

text

-

可使用的最大磁盘空间大小,单位Byte。

-

relative

-

boolean

-

标识表空间指定的存储路径是否为相对路径。

-
- - +# PG\_TABLESPACE + +PG\_TABLESPACE系统表存储表空间信息。 + +**表 1** PG\_TABLESPACE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

spcname

+

name

+

表空间名称。

+

spcowner

+

oid

+

表空间的所有者,通常是创建它的人。

+

spcacl

+

aclitem[]

+

GRANTREVOKE

+

spcoptions

+

text[]

+

表空间的选项。

+

spcmaxsize

+

text

+

可使用的最大磁盘空间大小,单位 Byte 。

+

relative

+

boolean

+

标识表空间指定的存储路径是否为相对路径。

+
+ + diff --git a/content/zh/docs/Developerguide/PG_TDE_INFO.md b/content/zh/docs/Developerguide/PG_TDE_INFO.md index 4806ff774..4363d7513 100644 --- a/content/zh/docs/Developerguide/PG_TDE_INFO.md +++ b/content/zh/docs/Developerguide/PG_TDE_INFO.md @@ -1,41 +1,41 @@ -# PG\_TDE\_INFO - -PG\_TDE\_INFO视图提供了openGauss加密信息。 - -**表 1** PG\_TDE\_INFO字段 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

is_encrypt

-

Boolean

-
是否加密openGauss
  • f:非加密openGauss
  • t:加密openGauss
-
-

g_tde_algo

-

text

-
加密算法。
  • SM4-CTR-128。
  • AES-CTR-128。
-
-

remain

-

text

-

保留字段。

-
- +# PG\_TDE\_INFO + +PG\_TDE\_INFO视图提供了 openGauss 加密信息。 + +**表 1** PG\_TDE\_INFO字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

is_encrypt

+

Boolean

+
是否加密openGauss
  • f:非加密openGauss
  • t:加密openGauss
+
+

g_tde_algo

+

text

+
加密算法。
  • SM4-CTR-128。
  • AES-CTR-128。
+
+

remain

+

text

+

保留字段。

+
+ diff --git a/content/zh/docs/Developerguide/PG_THREAD_WAIT_STATUS.md b/content/zh/docs/Developerguide/PG_THREAD_WAIT_STATUS.md index 82c84b7ce..c304e8e0b 100644 --- a/content/zh/docs/Developerguide/PG_THREAD_WAIT_STATUS.md +++ b/content/zh/docs/Developerguide/PG_THREAD_WAIT_STATUS.md @@ -1,1333 +1,1333 @@ -# PG\_THREAD\_WAIT\_STATUS - -通过PG\_THREAD\_WAIT\_STATUS视图可以检测当前实例中工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况。 - -**表 1** PG\_THREAD\_WAIT\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

当前节点的名称。

-

db_name

-

text

-

数据库名称。

-

thread_name

-

text

-

线程名称。

-

query_id

-

bigint

-

查询ID,对应debug_query_id。

-

tid

-

bigint

-

当前线程的线程号。

-

sessionid

-

bigint

-

当前会话ID。

-

lwtid

-

integer

-

当前线程的轻量级线程号。

-

psessionid

-

bigint

-

父会话ID。

-

tlevel

-

integer

-

streaming线程的层级。

-

smpid

-

integer

-

并行线程的ID。

-

wait_status

-

text

-

当前线程的等待状态。等待状态的详细信息请参见表2

-

wait_event

-

text

-

如果wait_status是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、IO的信息。否则是空。

-

locktag

-

text

-

当前线程正在等待锁的信息。

-

lockmode

-

text

-

当前线程正等待获取的锁模式。包含表级锁、行级锁、页级锁下的各模式。

-

block_sessionid

-

bigint

-

阻塞当前线程获取锁的会话标识。

-

global_sessionid

-

text

-

全局会话ID。

-
- -wait\_status列的等待状态有以下状态。 - -**表 2** 等待状态列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

wait_status值

-

含义

-

none

-

没在等任意事件。

-

acquire lock

-

等待加锁,要么加锁成功,要么加锁等待超时。

-

acquire lwlock

-

等待获取轻量级锁。

-

wait io

-

等待IO完成。

-

wait cmd

-

等待完成读取网络通信包。

-

wait pooler get conn

-

等待pooler完成获取连接。

-

wait pooler abort conn

-

等待pooler完成终止连接。

-

wait pooler clean conn

-

等待pooler完成清理连接。

-

pooler create conn:\[nodename\], total N

-

等待pooler建立连接,当前正在与nodename指定节点建立连接,且仍有N个连接等待建立。

-

get conn

-

获取到其他节点的连接。

-

set cmd: [nodename]

-

在连接上执行SET/RESET/TRANSACTION BLOCK LEVEL PARA SET/SESSION LEVEL PARA SET,当前正在nodename指定节点上执行。

-

cancel query

-

取消某连接上正在执行的SQL语句。

-

stop query

-

停止某连接上正在执行的查询。

-

wait node: \[nodename\](plevel), total N, [phase]

-
等待接收与某节点的连接上的数据,当前正在等待nodename节点plevel线程的数据,且仍有N个连接的数据待返回。如果状态包含phase信息,则可能的阶段状态有:
  • begin:表示处于事务开始阶段。
  • commit:表示处于事务提交阶段。
  • rollback:表示处于事务回滚阶段。
-
-

wait transaction sync: xid

-

等待xid指定事务同步。

-

wait wal sync

-

等待特定LSN的wal log完成到备机的同步。

-

wait data sync

-

等待完成数据页到备机的同步。

-

wait data sync queue

-

等待把行存的数据页或列存的CU放入同步队列。

-

flush data: \[nodename\](plevel), [phase]

-

等待向网络中nodename指定节点的plevel对应线程发送数据。如果状态包含phase信息,则可能的阶段状态为wait quota,即当前通信流正在等待quota值。

-

stream get conn: [nodename], total N

-

初始化stream flow时,等待与nodename节点的consumer对象建立连接,且当前有N个待建连对象。

-

wait producer \ready: [nodename\](plevel), total N

-

初始化stream flow时,等待每个producer都准备好,当前正在等待nodename节点plevel对应线程的producer对象准备好,且仍有N个producer对象处于等待状态。

-

synchronize quit

-

stream plan结束时,等待stream线程组内的线程统一退出。

-

wait stream nodegroup destroy

-

stream plan结束时,等待销毁stream node group。

-

wait active statement

-

等待作业执行,正在资源负载管控中。

-

analyze: [relname], [phase]

-

当前正在对表relname执行analyze。如果状态包含phase信息,则为autovacuum,表示是数据库自动开启AutoVacuum线程执行的analyze分析操作。

-

vacuum: [relname], [phase]

-

当前正在对表relname执行vacuum。如果状态包含phase信息,则为autovacuum,表示是数据库自动开启AutoVacuum线程执行的vacuum清理操作。

-

vacuum full: [relname]

-

当前正在对表relname执行vacuum full清理。

-

create index

-

当前正在创建索引。

-

HashJoin - [ build hash | write file ]

-
当前是HashJoin算子,主要关注耗时的执行阶段。
  • build hash:表示当前HashJoin算子正在建立哈希表。
  • write file:表示当前HashJoin算子正在将数据写入磁盘。
-
-

HashAgg - [ build hash | write file ]

-
当前是HashAgg算子,主要关注耗时的执行阶段。
  • build hash:表示当前HashAgg算子正在建立哈希表。
  • write file:表示当前HashAgg算子正在将数据写入磁盘。
-
-

HashSetop - [build hash | write file ]

-
当前是HashSetop算子,主要关注耗时的执行阶段。
  • build hash:表示当前HashSetop算子正在建立哈希表。
  • write file:表示当前HashSetop算子正在将数据写入磁盘。
-
-

Sort | Sort - write file

-

当前是Sort算子做排序,write file表示Sort算子正在将数据写入磁盘。

-

Material | Material - write file

-

当前是Material算子,write file表示Material算子正在将数据写入磁盘。

-

NestLoop

-

当前是NestLoop算子。

-

wait memory

-

等待内存获取。

-

wait sync consumer next step

-

Stream算子等待消费者执行。

-

wait sync producer next step

-

Stream算子等待生产者执行。

-
- - -当wait\_status为acquire lwlock、acquire lock或者wait io时,表示有等待事件。正在等待获取wait\_event列对应类型的轻量级锁、事务锁,或者正在进行IO。 - -其中,wait\_status值为acquire lwlock(轻量级锁)时对应的wait\_event等待事件类型与描述信息如下。(wait\_event为extension时,表示此时的轻量级锁是动态分配的锁,未被监控。) - -**表 3** 轻量级锁等待事件列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

wait_event类型

-

类型描述

-

ShmemIndexLock

-

用于保护共享内存中的主索引哈希表。

-

OidGenLock

-

用于避免不同线程产生相同的OID。

-

XidGenLock

-

用于避免两个事务获得相同的xid。

-

ProcArrayLock

-

用于避免并发访问或修改ProcArray共享数组。

-

SInvalReadLock

-

用于避免与清理失效消息并发执行。

-

SInvalWriteLock

-

用于避免与其它写失效消息、清理失效消息并发执行。

-

WALInsertLock

-

用于避免与其它WAL插入操作并发执行。

-

WALWriteLock

-

用于避免并发WAL写盘。

-

ControlFileLock

-

用于避免pg_control文件的读写并发、写写并发。

-

CheckpointLock

-

用于避免多个checkpoint并发执行。

-

CLogControlLock

-

用于避免并发访问或者修改Clog控制数据结构。

-

SubtransControlLock

-

用于避免并发访问或者修改子事务控制数据结构。

-

MultiXactGenLock

-

用于串行分配唯一MultiXact id。

-

MultiXactOffsetControlLock

-

用于避免对pg_multixact/offset的写写并发和读写并发。

-

MultiXactMemberControlLock

-

用于避免对pg_multixact/members的写写并发和读写并发。

-

RelCacheInitLock

-

用于失效消息场景对init文件进行操作时加锁。

-

CheckpointerCommLock

-

用于向checkpointer发起文件刷盘请求场景,需要串行的向请求队列插入请求结构。

-

TwoPhaseStateLock

-

用于避免并发访问或者修改两阶段信息共享数组。

-

TablespaceCreateLock

-

用于确定tablespace是否已经存在。

-

BtreeVacuumLock

-

用于防止vacuum清理B-tree中还在使用的页面。

-

AutovacuumLock

-

用于串行化访问autovacuum worker数组。

-

AutovacuumScheduleLock

-

用于串行化分配需要vacuum的table。

-

AutoanalyzeLock

-

用于获取和释放允许执行Autoanalyze的任务资源。

-

SyncScanLock

-

用于确定heap扫描时某个relfilenode的起始位置。

-

NodeTableLock

-

用于保护存放数据库节点信息的共享结构。

-

PoolerLock

-

用于保证两个线程不会同时从连接池里取到相同的连接。

-

RelationMappingLock

-

用于等待更新系统表到存储位置之间映射的文件。

-

AsyncCtlLock

-

用于避免并发访问或者修改共享通知状态。

-

AsyncQueueLock

-

用于避免并发访问或者修改共享通知信息队列。

-

SerializableXactHashLock

-

用于避免对于可串行事务共享结构的写写并发和读写并发。

-

SerializableFinishedListLock

-

用于避免对于已完成可串行事务共享链表的写写并发和读写并发。

-

SerializablePredicateLockListLock

-

用于保护对于可串行事务持有的锁链表。

-

OldSerXidLock

-

用于保护记录冲突可串行事务的结构。

-

FileStatLock

-

用于保护存储统计文件信息的数据结构。

-

SyncRepLock

-

用于在主备复制时保护xlog同步信息。

-

DataSyncRepLock

-

用于在主备复制时保护数据页同步信息。

-

CStoreColspaceCacheLock

-

用于保护列存表的CU空间分配。

-

CStoreCUCacheSweepLock

-

用于列存CU Cache循环淘汰。

-

MetaCacheSweepLock

-

用于元数据循环淘汰。

-

ExtensionConnectorLibLock

-

用于初始化ODBC连接场景,在加载与卸载特定动态库时进行加锁。

-

SearchServerLibLock

-

用于GPU加速场景初始化加载特定动态库时,对读文件操作进行加锁。

-

LsnXlogChkFileLock

-

用于串行更新特定结构中记录的主备机的xlog flush位置点。

-

ReplicationSlotAllocationLock

-

用于主备复制时保护主机端的流复制槽的分配。

-

ReplicationSlotControlLock

-

用于主备复制时避免并发更新流复制槽状态。

-

ResourcePoolHashLock

-

用于避免并发访问或者修改资源池哈希表。

-

WorkloadStatHashLock

-

用于避免并发访问或者修改包含数据库主节点的SQL请求构成的哈希表。

-

WorkloadIoStatHashLock

-

用于避免并发访问或者修改用于统计当前数据库节点的IO信息的哈希表。

-

WorkloadCGroupHashLock

-

用于避免并发访问或者修改Cgroup信息构成的哈希表。

-

OBSGetPathLock

-

用于避免对obs路径的写写并发和读写并发。

-

WorkloadUserInfoLock

-

用于避免并发访问或修改负载管理的用户信息哈希表。

-

WorkloadRecordLock

-

用于避免并发访问或修改在内存自适应管理时对数据库主节点收到请求构成的哈希表。

-

WorkloadIOUtilLock

-

用于保护记录iostat,CPU等负载信息的结构。

-

WorkloadNodeGroupLock

-

用于避免并发访问或者修改内存中的nodegroup信息构成的哈希表。

-

JobShmemLock

-

用于定时任务功能中保护定时读取的全局变量。

-

OBSRuntimeLock

-

用于获取环境变量,如GASSHOME。

-

LLVMDumpIRLock

-

用于导出动态生成函数所对应的汇编语言。

-

LLVMParseIRLock

-

用于在查询开始处从IR文件中编译并解析已写好的IR函数。

-

CriticalCacheBuildLock

-

用于从共享或者本地缓存初始化文件中加载cache的场景。

-

WaitCountHashLock

-

用于保护用户语句计数功能场景中的共享结构。

-

BufMappingLock

-

用于保护对共享缓冲映射表的操作。

-

LockMgrLock

-

用于保护常规锁结构信息。

-

PredicateLockMgrLock

-

用于保护可串行事务锁结构信息。

-

OperatorRealTLock

-

用于避免并发访问或者修改记录算子级实时数据的全局结构。

-

OperatorHistLock

-

用于避免并发访问或者修改记录算子级历史数据的全局结构。

-

SessionRealTLock

-

用于避免并发访问或者修改记录query级实时数据的全局结构。

-

SessionHistLock

-

用于避免并发访问或者修改记录query级历史数据的全局结构。

-

CacheSlotMappingLock

-

用于保护CU Cache全局信息。

-

BarrierLock

-

用于保证当前只有一个线程在创建Barrier。

-

dummyServerInfoCacheLock

-

用于保护缓存加速openGauss连接信息的全局哈希表。

-

RPNumberLock

-

用于加速openGauss的数据库节点对正在执行计划的任务线程的计数。

-

CBMParseXlogLock

-

Cbm解析xlog时的保护锁。

-

RelfilenodeReuseLock

-

避免错误地取消已重用的列属性文件的链接。

-

RcvWriteLock

-

防止并发调用WalDataRcvWrite。

-

PercentileLock

-

用于保护全局PercentileBuffer。

-

CSNBufMappingLock

-

保护csn页面。

-

UniqueSQLMappingLock

-

用于保护uniquesql hash table。

-

DelayDDLLock

-

防止并发ddl。

-

CLOG Ctl

-

用于避免并发访问或者修改Clog控制数据结构。

-

Async Ctl

-

保护Async buffer。

-

MultiXactOffset Ctl

-

保护MultiXact offet的slru buffer。

-

MultiXactMember Ctl

-

保护MultiXact member的slrubuffer。

-

OldSerXid SLRU Ctl

-

保护old xids的slru buffer。

-

ReplicationSlotLock

-

用于保护ReplicationSlot。

-

PGPROCLock

-

用于保护pgproc。

-

MetaCacheLock

-

用于保护MetaCache。

-

DataCacheLock

-

用于保护datacache。

-

InstrUserLock

-

用于保护InstrUserHTAB。

-

BadBlockStatHashLock

-

用于保护global_bad_block_stat hash表。

-

BufFreelistLock

-

用于保证共享缓冲区空闲列表操作的原子性。

-

CUSlotListLock

-

用于控制列存缓冲区槽位的并发操作。

-

AddinShmemInitLock

-

保护共享内存对象的初始化。

-

AlterPortLock

-

保护协调节点更改注册端口号的操作。

-

FdwPartitionCaheLock

-

HDFS分区表缓冲区的管理锁。

-

DfsConnectorCacheLock

-

DFSConnector缓冲区的管理锁。

-

DfsSpaceCacheLock

-

HDFS表空间管理缓冲区的管理锁。

-

FullBuildXlogCopyStartPtrLock

-

用于保护全量Build中Xlog拷贝的操作。

-

DfsUserLoginLock

-

用于HDFS用户登录以及认证。

-

LogicalReplicationSlotPersistentDataLock

-

用于保护逻辑复制过程中复制槽位的数据。

-

WorkloadSessionInfoLock

-

保护负载管理session info内存hash表访问。

-

InstrWorkloadLock

-

保护负载管理统计信息的内存hash表访问。

-

PgfdwLock

-

用于管理实例向Foreign server建立连接。

-

InstanceTimeLock

-

用于获取实例中会话的时间信息。

-

XlogRemoveSegLock

-

保护Xlog段文件的回收操作。

-

DnUsedSpaceHashLock

-

用于更新会话对应的空间使用信息。

-

CsnMinLock

-

用于计算CSNmin。

-

GPCCommitLock

-

用于保护全局Plan Cache hash表的添加操作。

-

GPCClearLock

-

用于保护全局Plan Cache hash表的清除操作。

-

GPCTimelineLock

-

用于保护全局Plan Cache hash表检查Timeline的操作。

-

TsTagsCacheLock

-

用于时序tag缓存管理。

-

InstanceRealTLock

-

用于保护共享实例统计信息hash表的更新操作。

-

CLogBufMappingLock

-

用于提交日志缓存管理。

-

GPCMappingLock

-

用于全局Plan Cache缓存管理。

-

GPCPrepareMappingLock

-

用于全局Plan Cache缓存管理。

-

BufferIOLock

-

保护共享缓冲区页面的IO操作。

-

BufferContentLock

-

保护共享缓冲区页面内容的读取、修改。

-

CSNLOG Ctl

-

用于CSN日志管理。

-

DoubleWriteLock

-

用于双写的管理操作。

-

RowPageReplicationLock

-

用于管理行存储的数据页复制。

-

extension

-

其他轻量锁。

-
- -当wait\_status值为wait io时对应的wait\_event等待事件类型与描述信息如下。 - -**表 4** IO等待事件列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

wait_event类型

-

类型描述

-

BufFileRead

-

从临时文件中读取数据到指定buffer。

-

BufFileWrite

-

向临时文件中写入指定buffer中的内容。

-

ControlFileRead

-

读取pg_control文件。主要在数据库启动、执行checkpoint和主备校验过程中发生。

-

ControlFileSync

-

将pg_control文件持久化到磁盘。数据库初始化时发生。

-

ControlFileSyncUpdate

-

将pg_control文件持久化到磁盘。主要在数据库启动、执行checkpoint和主备校验过程中发生。

-

ControlFileWrite

-

写入pg_control文件。数据库初始化时发生。

-

ControlFileWriteUpdate

-

更新pg_control文件。主要在数据库启动、执行checkpoint和主备校验过程中发生。

-

CopyFileRead

-

copy文件时读取文件内容。

-

CopyFileWrite

-

copy文件时写入文件内容。

-

DataFileExtend

-

扩展文件时向文件写入内容。

-

DataFileFlush

-

将表数据文件持久化到磁盘。

-

DataFileImmediateSync

-

将表数据文件立即持久化到磁盘。

-

DataFilePrefetch

-

异步读取表数据文件。

-

DataFileRead

-

同步读取表数据文件。

-

DataFileSync

-

将表数据文件的修改持久化到磁盘。

-

DataFileTruncate

-

表数据文件truncate。

-

DataFileWrite

-

向表数据文件写入内容。

-

LockFileAddToDataDirRead

-

读取“postmaster.pid”文件。

-

LockFileAddToDataDirSync

-

将“postmaster.pid”内容持久化到磁盘。

-

LockFileAddToDataDirWrite

-

将pid信息写到“postmaster.pid”文件。

-

LockFileCreateRead

-

读取LockFile文件“%s.lock”。

-

LockFileCreateSync

-

将LockFile文件“%s.lock”内容持久化到磁盘。

-

LockFileCreateWRITE

-

将pid信息写到LockFile文件“%s.lock”。

-

RelationMapRead

-

读取系统表到存储位置之间的映射文件。

-

RelationMapSync

-

将系统表到存储位置之间的映射文件持久化到磁盘。

-

RelationMapWrite

-

写入系统表到存储位置之间的映射文件。

-

ReplicationSlotRead

-

读取流复制槽文件。重新启动时发生。

-

ReplicationSlotRestoreSync

-

将流复制槽文件持久化到磁盘。重新启动时发生。

-

ReplicationSlotSync

-

checkpoint时将流复制槽临时文件持久化到磁盘。

-

ReplicationSlotWrite

-

checkpoint时写流复制槽临时文件。

-

SLRUFlushSync

-

将pg_clog、pg_subtrans和pg_multixact文件持久化到磁盘。主要在执行checkpoint和数据库停机时发生。

-

SLRURead

-

读取pg_clog、pg_subtrans和pg_multixact文件。

-

SLRUSync

-

将脏页写入文件pg_clog、pg_subtrans和pg_multixact并持久化到磁盘。主要在执行checkpoint和数据库停机时发生。

-

SLRUWrite

-

写入pg_clog、pg_subtrans和pg_multixact文件。

-

TimelineHistoryRead

-

读取timeline history文件。在数据库启动时发生。

-

TimelineHistorySync

-

将timeline history文件持久化到磁盘。在数据库启动时发生。

-

TimelineHistoryWrite

-

写入timeline history文件。在数据库启动时发生。

-

TwophaseFileRead

-

读取pg_twophase文件。在两阶段事务提交、两阶段事务恢复时发生。

-

TwophaseFileSync

-

将pg_twophase文件持久化到磁盘。在两阶段事务提交、两阶段事务恢复时发生。

-

TwophaseFileWrite

-

写入pg_twophase文件。在两阶段事务提交、两阶段事务恢复时发生。

-

WALBootstrapSync

-

将初始化的WAL文件持久化到磁盘。在数据库初始化发生。

-

WALBootstrapWrite

-

写入初始化的WAL文件。在数据库初始化发生。

-

WALCopyRead

-

读取已存在的WAL文件并进行复制时产生的读操作。在执行归档恢复完后发生。

-

WALCopySync

-

将复制的WAL文件持久化到磁盘。在执行归档恢复完后发生。

-

WALCopyWrite

-

读取已存在WAL文件并进行复制时产生的写操作。在执行归档恢复完后发生。

-

WALInitSync

-

将新初始化的WAL文件持久化磁盘。在日志回收或写日志时发生。

-

WALInitWrite

-

将新创建的WAL文件初始化为0。在日志回收或写日志时发生。

-

WALRead

-

从xlog日志读取数据。两阶段文件redo相关的操作产生。

-

WALSyncMethodAssign

-

将当前打开的所有WAL文件持久化到磁盘。

-

WALWrite

-

写入WAL文件。

-

WALBufferAccess

-

WAL Buffer访问(出于性能考虑,内核代码里只统计访问次数,未统计其访问耗时)。

-

WALBufferFull

-

WAL Buffer满时,写wal文件相关的处理。

-

DoubleWriteFileRead

-

双写 文件读取。

-

DoubleWriteFileSync

-

双写 文件强制刷盘。

-

DoubleWriteFileWrite

-

双写 文件写入。

-

PredoProcessPending

-

并行日志回放中当前记录回放等待其它记录回放完成。

-

PredoApply

-

并行日志回放中等待当前工作线程等待其他线程回放至本线程LSN。

-

DisableConnectFileRead

-

HA锁分片逻辑文件读取。

-

DisableConnectFileSync

-

HA锁分片逻辑文件强制刷盘。

-

DisableConnectFileWrite

-

HA锁分片逻辑文件写入。

-
- - -当wait\_status值为acquire lock(事务锁)时对应的wait\_event等待事件类型与描述信息如下。 - -**表 5** 事务锁等待事件列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

wait_event类型

-

类型描述

-

relation

-

对表加锁。

-

extend

-

对表扩展空间时加锁。

-

partition

-

对分区表加锁。

-

partition_seq

-

对分区表的分区加锁。

-

page

-

对表页面加锁。

-

tuple

-

对页面上的tuple加锁。

-

transactionid

-

对事务ID加锁。

-

virtualxid

-

对虚拟事务ID加锁。

-

object

-

加对象锁。

-

cstore_freespace

-

对列存空闲空间加锁。

-

userlock

-

加用户锁。

-

advisory

-

加advisory锁。

-
+# PG\_THREAD\_WAIT\_STATUS + +通过PG\_THREAD\_WAIT\_STATUS视图可以检测当前实例中工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况。 + +**表 1** PG\_THREAD\_WAIT\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

当前节点的名称。

+

db_name

+

text

+

数据库名称。

+

thread_name

+

text

+

线程名称。

+

query_id

+

bigint

+

查询 ID ,对应 debug_query_id 。

+

tid

+

bigint

+

当前线程的线程号。

+

sessionid

+

bigint

+

当前会话 ID 。

+

lwtid

+

integer

+

当前线程的轻量级线程号。

+

psessionid

+

bigint

+

父会话 ID 。

+

tlevel

+

integer

+

streaming线程的层级。

+

smpid

+

integer

+

并行线程的 ID 。

+

wait_status

+

text

+

当前线程的等待状态。等待状态的详细信息请参见表2

+

wait_event

+

text

+

如果 wait_status 是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、IO的信息。否则是空。

+

locktag

+

text

+

当前线程正在等待锁的信息。

+

lockmode

+

text

+

当前线程正等待获取的锁模式。包含表级锁、行级锁、页级锁下的各模式。

+

block_sessionid

+

bigint

+

阻塞当前线程获取锁的会话标识。

+

global_sessionid

+

text

+

全局会话 ID 。

+
+ +wait\_status列的等待状态有以下状态。 + +**表 2** 等待状态列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

wait_status值

+

含义

+

none

+

没在等任意事件。

+

acquire lock

+

等待加锁,要么加锁成功,要么加锁等待超时。

+

acquire lwlock

+

等待获取轻量级锁。

+

wait io

+

等待 IO 完成。

+

wait cmd

+

等待完成读取网络通信包。

+

wait pooler get conn

+

等待 pooler 完成获取连接。

+

wait pooler abort conn

+

等待 pooler 完成终止连接。

+

wait pooler clean conn

+

等待 pooler 完成清理连接。

+

pooler create conn:\[nodename\], total N

+

等待 pooler 建立连接,当前正在与 nodename 指定节点建立连接,且仍有 N 个连接等待建立。

+

get conn

+

获取到其他节点的连接。

+

set cmd: [nodename]

+

在连接上执行SET/RESET/TRANSACTION BLOCK LEVEL PARA SET/SESSION LEVEL PARA SET,当前正在 nodename 指定节点上执行。

+

cancel query

+

取消某连接上正在执行的 SQL 语句。

+

stop query

+

停止某连接上正在执行的查询。

+

wait node: \[nodename\](plevel), total N , [phase]

+
等待接收与某节点的连接上的数据,当前正在等待 nodename 节点 plevel 线程的数据,且仍有 N 个连接的数据待返回。如果状态包含 phase 信息,则可能的阶段状态有:
  • begin:表示处于事务开始阶段。
  • commit:表示处于事务提交阶段。
  • rollback:表示处于事务回滚阶段。
+
+

wait transaction sync: xid

+

等待 xid 指定事务同步。

+

wait wal sync

+

等待特定 LSN 的 wal log 完成到备机的同步。

+

wait data sync

+

等待完成数据页到备机的同步。

+

wait data sync queue

+

等待把行存的数据页或列存的 CU 放入同步队列。

+

flush data: \[nodename\](plevel), [phase]

+

等待向网络中 nodename 指定节点的 plevel 对应线程发送数据。如果状态包含 phase 信息,则可能的阶段状态为 wait quota ,即当前通信流正在等待 quota 值。

+

stream get conn: [nodename], total N

+

初始化 stream flow 时,等待与 nodename 节点的 consumer 对象建立连接,且当前有 N 个待建连对象。

+

wait producer \ready: [nodename\](plevel), total N

+

初始化 stream flow 时,等待每个 producer 都准备好,当前正在等待 nodename 节点 plevel 对应线程的 producer 对象准备好,且仍有 N 个 producer 对象处于等待状态。

+

synchronize quit

+

stream plan结束时,等待 stream 线程组内的线程统一退出。

+

wait stream nodegroup destroy

+

stream plan结束时,等待销毁 stream node group 。

+

wait active statement

+

等待作业执行,正在资源负载管控中。

+

analyze: [relname], [phase]

+

当前正在对表 relname 执行 analyze 。如果状态包含 phase 信息,则为 autovacuum ,表示是数据库自动开启 AutoVacuum 线程执行的 analyze 分析操作。

+

vacuum: [relname], [phase]

+

当前正在对表 relname 执行 vacuum 。如果状态包含 phase 信息,则为 autovacuum ,表示是数据库自动开启 AutoVacuum 线程执行的 vacuum 清理操作。

+

vacuum full: [relname]

+

当前正在对表 relname 执行 vacuum full 清理。

+

create index

+

当前正在创建索引。

+

HashJoin - [ build hash | write file ]

+
当前是 HashJoin 算子,主要关注耗时的执行阶段。
  • build hash:表示当前 HashJoin 算子正在建立哈希表。
  • write file:表示当前 HashJoin 算子正在将数据写入磁盘。
+
+

HashAgg - [ build hash | write file ]

+
当前是 HashAgg 算子,主要关注耗时的执行阶段。
  • build hash:表示当前 HashAgg 算子正在建立哈希表。
  • write file:表示当前 HashAgg 算子正在将数据写入磁盘。
+
+

HashSetop - [build hash | write file ]

+
当前是 HashSetop 算子,主要关注耗时的执行阶段。
  • build hash:表示当前 HashSetop 算子正在建立哈希表。
  • write file:表示当前 HashSetop 算子正在将数据写入磁盘。
+
+

Sort | Sort - write file

+

当前是 Sort 算子做排序, write file 表示 Sort 算子正在将数据写入磁盘。

+

Material | Material - write file

+

当前是 Material 算子, write file 表示 Material 算子正在将数据写入磁盘。

+

NestLoop

+

当前是 NestLoop 算子。

+

wait memory

+

等待内存获取。

+

wait sync consumer next step

+

Stream算子等待消费者执行。

+

wait sync producer next step

+

Stream算子等待生产者执行。

+
+ + +当wait\_status为acquire lwlock、acquire lock或者 wait io 时,表示有等待事件。正在等待获取wait\_event列对应类型的轻量级锁、事务锁,或者正在进行 IO 。 + +其中,wait\_status值为acquire lwlock(轻量级锁)时对应的wait\_event等待事件类型与描述信息如下。(wait\_event为 extension 时,表示此时的轻量级锁是动态分配的锁,未被监控。) + +**表 3** 轻量级锁等待事件列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

wait_event类型

+

类型描述

+

ShmemIndexLock

+

用于保护共享内存中的主索引哈希表。

+

OidGenLock

+

用于避免不同线程产生相同的 OID 。

+

XidGenLock

+

用于避免两个事务获得相同的 xid 。

+

ProcArrayLock

+

用于避免并发访问或修改 ProcArray 共享数组。

+

SInvalReadLock

+

用于避免与清理失效消息并发执行。

+

SInvalWriteLock

+

用于避免与其它写失效消息、清理失效消息并发执行。

+

WALInsertLock

+

用于避免与其它 WAL 插入操作并发执行。

+

WALWriteLock

+

用于避免并发 WAL 写盘。

+

ControlFileLock

+

用于避免 pg_control 文件的读写并发、写写并发。

+

CheckpointLock

+

用于避免多个 checkpoint 并发执行。

+

CLogControlLock

+

用于避免并发访问或者修改 Clog 控制数据结构。

+

SubtransControlLock

+

用于避免并发访问或者修改子事务控制数据结构。

+

MultiXactGenLock

+

用于串行分配唯一 MultiXact id 。

+

MultiXactOffsetControlLock

+

用于避免对pg_multixact/offset的写写并发和读写并发。

+

MultiXactMemberControlLock

+

用于避免对pg_multixact/members的写写并发和读写并发。

+

RelCacheInitLock

+

用于失效消息场景对 init 文件进行操作时加锁。

+

CheckpointerCommLock

+

用于向 checkpointer 发起文件刷盘请求场景,需要串行的向请求队列插入请求结构。

+

TwoPhaseStateLock

+

用于避免并发访问或者修改两阶段信息共享数组。

+

TablespaceCreateLock

+

用于确定 tablespace 是否已经存在。

+

BtreeVacuumLock

+

用于防止 vacuum 清理B-tree中还在使用的页面。

+

AutovacuumLock

+

用于串行化访问 autovacuum worker 数组。

+

AutovacuumScheduleLock

+

用于串行化分配需要 vacuum 的 table 。

+

AutoanalyzeLock

+

用于获取和释放允许执行 Autoanalyze 的任务资源。

+

SyncScanLock

+

用于确定 heap 扫描时某个 relfilenode 的起始位置。

+

NodeTableLock

+

用于保护存放数据库节点信息的共享结构。

+

PoolerLock

+

用于保证两个线程不会同时从连接池里取到相同的连接。

+

RelationMappingLock

+

用于等待更新系统表到存储位置之间映射的文件。

+

AsyncCtlLock

+

用于避免并发访问或者修改共享通知状态。

+

AsyncQueueLock

+

用于避免并发访问或者修改共享通知信息队列。

+

SerializableXactHashLock

+

用于避免对于可串行事务共享结构的写写并发和读写并发。

+

SerializableFinishedListLock

+

用于避免对于已完成可串行事务共享链表的写写并发和读写并发。

+

SerializablePredicateLockListLock

+

用于保护对于可串行事务持有的锁链表。

+

OldSerXidLock

+

用于保护记录冲突可串行事务的结构。

+

FileStatLock

+

用于保护存储统计文件信息的数据结构。

+

SyncRepLock

+

用于在主备复制时保护 xlog 同步信息。

+

DataSyncRepLock

+

用于在主备复制时保护数据页同步信息。

+

CStoreColspaceCacheLock

+

用于保护列存表的 CU 空间分配。

+

CStoreCUCacheSweepLock

+

用于列存 CU Cache 循环淘汰。

+

MetaCacheSweepLock

+

用于元数据循环淘汰。

+

ExtensionConnectorLibLock

+

用于初始化 ODBC 连接场景,在加载与卸载特定动态库时进行加锁。

+

SearchServerLibLock

+

用于 GPU 加速场景初始化加载特定动态库时,对读文件操作进行加锁。

+

LsnXlogChkFileLock

+

用于串行更新特定结构中记录的主备机的 xlog flush 位置点。

+

ReplicationSlotAllocationLock

+

用于主备复制时保护主机端的流复制槽的分配。

+

ReplicationSlotControlLock

+

用于主备复制时避免并发更新流复制槽状态。

+

ResourcePoolHashLock

+

用于避免并发访问或者修改资源池哈希表。

+

WorkloadStatHashLock

+

用于避免并发访问或者修改包含数据库主节点的 SQL 请求构成的哈希表。

+

WorkloadIoStatHashLock

+

用于避免并发访问或者修改用于统计当前数据库节点的 IO 信息的哈希表。

+

WorkloadCGroupHashLock

+

用于避免并发访问或者修改 Cgroup 信息构成的哈希表。

+

OBSGetPathLock

+

用于避免对 obs 路径的写写并发和读写并发。

+

WorkloadUserInfoLock

+

用于避免并发访问或修改负载管理的用户信息哈希表。

+

WorkloadRecordLock

+

用于避免并发访问或修改在内存自适应管理时对数据库主节点收到请求构成的哈希表。

+

WorkloadIOUtilLock

+

用于保护记录 iostat , CPU 等负载信息的结构。

+

WorkloadNodeGroupLock

+

用于避免并发访问或者修改内存中的 nodegroup 信息构成的哈希表。

+

JobShmemLock

+

用于定时任务功能中保护定时读取的全局变量。

+

OBSRuntimeLock

+

用于获取环境变量,如 GASSHOME 。

+

LLVMDumpIRLock

+

用于导出动态生成函数所对应的汇编语言。

+

LLVMParseIRLock

+

用于在查询开始处从 IR 文件中编译并解析已写好的 IR 函数。

+

CriticalCacheBuildLock

+

用于从共享或者本地缓存初始化文件中加载 cache 的场景。

+

WaitCountHashLock

+

用于保护用户语句计数功能场景中的共享结构。

+

BufMappingLock

+

用于保护对共享缓冲映射表的操作。

+

LockMgrLock

+

用于保护常规锁结构信息。

+

PredicateLockMgrLock

+

用于保护可串行事务锁结构信息。

+

OperatorRealTLock

+

用于避免并发访问或者修改记录算子级实时数据的全局结构。

+

OperatorHistLock

+

用于避免并发访问或者修改记录算子级历史数据的全局结构。

+

SessionRealTLock

+

用于避免并发访问或者修改记录 query 级实时数据的全局结构。

+

SessionHistLock

+

用于避免并发访问或者修改记录 query 级历史数据的全局结构。

+

CacheSlotMappingLock

+

用于保护 CU Cache 全局信息。

+

BarrierLock

+

用于保证当前只有一个线程在创建 Barrier 。

+

dummyServerInfoCacheLock

+

用于保护缓存加速openGauss连接信息的全局哈希表。

+

RPNumberLock

+

用于加速openGauss的数据库节点对正在执行计划的任务线程的计数。

+

CBMParseXlogLock

+

Cbm解析 xlog 时的保护锁。

+

RelfilenodeReuseLock

+

避免错误地取消已重用的列属性文件的链接。

+

RcvWriteLock

+

防止并发调用 WalDataRcvWrite 。

+

PercentileLock

+

用于保护全局 PercentileBuffer 。

+

CSNBufMappingLock

+

保护 csn 页面。

+

UniqueSQLMappingLock

+

用于保护 uniquesql hash table 。

+

DelayDDLLock

+

防止并发 ddl 。

+

CLOG Ctl

+

用于避免并发访问或者修改 Clog 控制数据结构。

+

Async Ctl

+

保护 Async buffer 。

+

MultiXactOffset Ctl

+

保护 MultiXact offet 的 slru buffer 。

+

MultiXactMember Ctl

+

保护 MultiXact member 的 slrubuffer 。

+

OldSerXid SLRU Ctl

+

保护 old xids 的 slru buffer 。

+

ReplicationSlotLock

+

用于保护 ReplicationSlot 。

+

PGPROCLock

+

用于保护 pgproc 。

+

MetaCacheLock

+

用于保护 MetaCache 。

+

DataCacheLock

+

用于保护 datacache 。

+

InstrUserLock

+

用于保护 InstrUserHTAB 。

+

BadBlockStatHashLock

+

用于保护 global_bad_block_stat hash 表。

+

BufFreelistLock

+

用于保证共享缓冲区空闲列表操作的原子性。

+

CUSlotListLock

+

用于控制列存缓冲区槽位的并发操作。

+

AddinShmemInitLock

+

保护共享内存对象的初始化。

+

AlterPortLock

+

保护协调节点更改注册端口号的操作。

+

FdwPartitionCaheLock

+

HDFS分区表缓冲区的管理锁。

+

DfsConnectorCacheLock

+

DFSConnector缓冲区的管理锁。

+

DfsSpaceCacheLock

+

HDFS表空间管理缓冲区的管理锁。

+

FullBuildXlogCopyStartPtrLock

+

用于保护全量 Build 中 Xlog 拷贝的操作。

+

DfsUserLoginLock

+

用于 HDFS 用户登录以及认证。

+

LogicalReplicationSlotPersistentDataLock

+

用于保护逻辑复制过程中复制槽位的数据。

+

WorkloadSessionInfoLock

+

保护负载管理 session info 内存 hash 表访问。

+

InstrWorkloadLock

+

保护负载管理统计信息的内存 hash 表访问。

+

PgfdwLock

+

用于管理实例向 Foreign server 建立连接。

+

InstanceTimeLock

+

用于获取实例中会话的时间信息。

+

XlogRemoveSegLock

+

保护 Xlog 段文件的回收操作。

+

DnUsedSpaceHashLock

+

用于更新会话对应的空间使用信息。

+

CsnMinLock

+

用于计算 CSNmin 。

+

GPCCommitLock

+

用于保护全局 Plan Cache hash 表的添加操作。

+

GPCClearLock

+

用于保护全局 Plan Cache hash 表的清除操作。

+

GPCTimelineLock

+

用于保护全局 Plan Cache hash 表检查 Timeline 的操作。

+

TsTagsCacheLock

+

用于时序 tag 缓存管理。

+

InstanceRealTLock

+

用于保护共享实例统计信息 hash 表的更新操作。

+

CLogBufMappingLock

+

用于提交日志缓存管理。

+

GPCMappingLock

+

用于全局 Plan Cache 缓存管理。

+

GPCPrepareMappingLock

+

用于全局 Plan Cache 缓存管理。

+

BufferIOLock

+

保护共享缓冲区页面的 IO 操作。

+

BufferContentLock

+

保护共享缓冲区页面内容的读取、修改。

+

CSNLOG Ctl

+

用于 CSN 日志管理。

+

DoubleWriteLock

+

用于双写的管理操作。

+

RowPageReplicationLock

+

用于管理行存储的数据页复制。

+

extension

+

其他轻量锁。

+
+ +当wait\_status值为 wait io 时对应的wait\_event等待事件类型与描述信息如下。 + +**表 4** IO等待事件列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

wait_event类型

+

类型描述

+

BufFileRead

+

从临时文件中读取数据到指定 buffer 。

+

BufFileWrite

+

向临时文件中写入指定 buffer 中的内容。

+

ControlFileRead

+

读取 pg_control 文件。主要在数据库启动、执行 checkpoint 和主备校验过程中发生。

+

ControlFileSync

+

将 pg_control 文件持久化到磁盘。数据库初始化时发生。

+

ControlFileSyncUpdate

+

将 pg_control 文件持久化到磁盘。主要在数据库启动、执行 checkpoint 和主备校验过程中发生。

+

ControlFileWrite

+

写入 pg_control 文件。数据库初始化时发生。

+

ControlFileWriteUpdate

+

更新 pg_control 文件。主要在数据库启动、执行 checkpoint 和主备校验过程中发生。

+

CopyFileRead

+

copy文件时读取文件内容。

+

CopyFileWrite

+

copy文件时写入文件内容。

+

DataFileExtend

+

扩展文件时向文件写入内容。

+

DataFileFlush

+

将表数据文件持久化到磁盘。

+

DataFileImmediateSync

+

将表数据文件立即持久化到磁盘。

+

DataFilePrefetch

+

异步读取表数据文件。

+

DataFileRead

+

同步读取表数据文件。

+

DataFileSync

+

将表数据文件的修改持久化到磁盘。

+

DataFileTruncate

+

表数据文件 truncate 。

+

DataFileWrite

+

向表数据文件写入内容。

+

LockFileAddToDataDirRead

+

读取“postmaster.pid”文件。

+

LockFileAddToDataDirSync

+

将“postmaster.pid”内容持久化到磁盘。

+

LockFileAddToDataDirWrite

+

将 pid 信息写到“postmaster.pid”文件。

+

LockFileCreateRead

+

读取 LockFile 文件“%s.lock”。

+

LockFileCreateSync

+

将 LockFile 文件“%s.lock”内容持久化到磁盘。

+

LockFileCreateWRITE

+

将 pid 信息写到 LockFile 文件“%s.lock”。

+

RelationMapRead

+

读取系统表到存储位置之间的映射文件。

+

RelationMapSync

+

将系统表到存储位置之间的映射文件持久化到磁盘。

+

RelationMapWrite

+

写入系统表到存储位置之间的映射文件。

+

ReplicationSlotRead

+

读取流复制槽文件。重新启动时发生。

+

ReplicationSlotRestoreSync

+

将流复制槽文件持久化到磁盘。重新启动时发生。

+

ReplicationSlotSync

+

checkpoint时将流复制槽临时文件持久化到磁盘。

+

ReplicationSlotWrite

+

checkpoint时写流复制槽临时文件。

+

SLRUFlushSync

+

将pg_clog、pg_subtrans和 pg_multixact 文件持久化到磁盘。主要在执行 checkpoint 和数据库停机时发生。

+

SLRURead

+

读取pg_clog、pg_subtrans和 pg_multixact 文件。

+

SLRUSync

+

将脏页写入文件pg_clog、pg_subtrans和 pg_multixact 并持久化到磁盘。主要在执行 checkpoint 和数据库停机时发生。

+

SLRUWrite

+

写入pg_clog、pg_subtrans和 pg_multixact 文件。

+

TimelineHistoryRead

+

读取 timeline history 文件。在数据库启动时发生。

+

TimelineHistorySync

+

将 timeline history 文件持久化到磁盘。在数据库启动时发生。

+

TimelineHistoryWrite

+

写入 timeline history 文件。在数据库启动时发生。

+

TwophaseFileRead

+

读取 pg_twophase 文件。在两阶段事务提交、两阶段事务恢复时发生。

+

TwophaseFileSync

+

将 pg_twophase 文件持久化到磁盘。在两阶段事务提交、两阶段事务恢复时发生。

+

TwophaseFileWrite

+

写入 pg_twophase 文件。在两阶段事务提交、两阶段事务恢复时发生。

+

WALBootstrapSync

+

将初始化的 WAL 文件持久化到磁盘。在数据库初始化发生。

+

WALBootstrapWrite

+

写入初始化的 WAL 文件。在数据库初始化发生。

+

WALCopyRead

+

读取已存在的 WAL 文件并进行复制时产生的读操作。在执行归档恢复完后发生。

+

WALCopySync

+

将复制的 WAL 文件持久化到磁盘。在执行归档恢复完后发生。

+

WALCopyWrite

+

读取已存在 WAL 文件并进行复制时产生的写操作。在执行归档恢复完后发生。

+

WALInitSync

+

将新初始化的 WAL 文件持久化磁盘。在日志回收或写日志时发生。

+

WALInitWrite

+

将新创建的 WAL 文件初始化为 0 。在日志回收或写日志时发生。

+

WALRead

+

从 xlog 日志读取数据。两阶段文件 redo 相关的操作产生。

+

WALSyncMethodAssign

+

将当前打开的所有 WAL 文件持久化到磁盘。

+

WALWrite

+

写入 WAL 文件。

+

WALBufferAccess

+

WAL Buffer访问(出于性能考虑,内核代码里只统计访问次数,未统计其访问耗时)。

+

WALBufferFull

+

WAL Buffer满时,写 wal 文件相关的处理。

+

DoubleWriteFileRead

+

双写 文件读取。

+

DoubleWriteFileSync

+

双写 文件强制刷盘。

+

DoubleWriteFileWrite

+

双写 文件写入。

+

PredoProcessPending

+

并行日志回放中当前记录回放等待其它记录回放完成。

+

PredoApply

+

并行日志回放中等待当前工作线程等待其他线程回放至本线程 LSN 。

+

DisableConnectFileRead

+

HA锁分片逻辑文件读取。

+

DisableConnectFileSync

+

HA锁分片逻辑文件强制刷盘。

+

DisableConnectFileWrite

+

HA锁分片逻辑文件写入。

+
+ + +当wait\_status值为acquire lock(事务锁)时对应的wait\_event等待事件类型与描述信息如下。 + +**表 5** 事务锁等待事件列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

wait_event类型

+

类型描述

+

relation

+

对表加锁。

+

extend

+

对表扩展空间时加锁。

+

partition

+

对分区表加锁。

+

partition_seq

+

对分区表的分区加锁。

+

page

+

对表页面加锁。

+

tuple

+

对页面上的 tuple 加锁。

+

transactionid

+

对事务 ID 加锁。

+

virtualxid

+

对虚拟事务 ID 加锁。

+

object

+

加对象锁。

+

cstore_freespace

+

对列存空闲空间加锁。

+

userlock

+

加用户锁。

+

advisory

+

加 advisory 锁。

+
diff --git a/content/zh/docs/Developerguide/PG_TIMEZONE_ABBREVS.md b/content/zh/docs/Developerguide/PG_TIMEZONE_ABBREVS.md index 704140a8a..f9af631a2 100644 --- a/content/zh/docs/Developerguide/PG_TIMEZONE_ABBREVS.md +++ b/content/zh/docs/Developerguide/PG_TIMEZONE_ABBREVS.md @@ -1,39 +1,39 @@ -# PG\_TIMEZONE\_ABBREVS - -PG\_TIMEZONE\_ABBREVS视图提供了显示了所有可用的时区信息。 - -**表 1** PG\_TIMEZONE\_ABBREVS字段 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

abbrev

-

text

-

时区名缩写。

-

utc_offset

-

interval

-

相对于UTC的偏移量。

-

is_dst

-

Boolean

-

如果当前正处于夏令时范围则为TRUE,否则为FALSE。

-
- +# PG\_TIMEZONE\_ABBREVS + +PG\_TIMEZONE\_ABBREVS视图提供了显示了所有可用的时区信息。 + +**表 1** PG\_TIMEZONE\_ABBREVS字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

abbrev

+

text

+

时区名缩写。

+

utc_offset

+

interval

+

相对于 UTC 的偏移量。

+

is_dst

+

Boolean

+

如果当前正处于夏令时范围则为 TRUE ,否则为 FALSE 。

+
+ diff --git a/content/zh/docs/Developerguide/PG_TIMEZONE_NAMES.md b/content/zh/docs/Developerguide/PG_TIMEZONE_NAMES.md index ef91dc277..e0eb8088a 100644 --- a/content/zh/docs/Developerguide/PG_TIMEZONE_NAMES.md +++ b/content/zh/docs/Developerguide/PG_TIMEZONE_NAMES.md @@ -1,46 +1,46 @@ -# PG\_TIMEZONE\_NAMES - -PG\_TIMEZONE\_NAMES视图提供了显示了所有能够被SET TIMEZONE识别的时区名及其缩写、UTC偏移量、是否夏时制。 - -**表 1** PG\_TIMEZONE\_NAMES字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

name

-

text

-

时区名。

-

abbrev

-

text

-

时区名缩写。

-

utc_offset

-

interval

-

相对于UTC的偏移量。

-

is_dst

-

Boolean

-

如果当前正处于夏令时范围则为TRUE,否则为FALSE。

-
- +# PG\_TIMEZONE\_NAMES + +PG\_TIMEZONE\_NAMES视图提供了显示了所有能够被 SET TIMEZONE 识别的时区名及其缩写、UTC偏移量、是否夏时制。 + +**表 1** PG\_TIMEZONE\_NAMES字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

name

+

text

+

时区名。

+

abbrev

+

text

+

时区名缩写。

+

utc_offset

+

interval

+

相对于 UTC 的偏移量。

+

is_dst

+

Boolean

+

如果当前正处于夏令时范围则为 TRUE ,否则为 FALSE 。

+
+ diff --git a/content/zh/docs/Developerguide/PG_TOTAL_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/PG_TOTAL_MEMORY_DETAIL.md index 58ad34cc5..fe07bed1c 100644 --- a/content/zh/docs/Developerguide/PG_TOTAL_MEMORY_DETAIL.md +++ b/content/zh/docs/Developerguide/PG_TOTAL_MEMORY_DETAIL.md @@ -1,39 +1,39 @@ -# PG\_TOTAL\_MEMORY\_DETAIL - -PG\_TOTAL\_MEMORY\_DETAIL视图显示某个数据库节点内存使用情况。 - -**表 1** PG\_TOTAL\_MEMORY\_DETAIL字段 - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

nodename

-

text

-

节点名称。

-

memorytype

-

text

-

内存的名称。

-

memorymbytes

-

integer

-

内存使用的大小,单位为MB。

-
- +# PG\_TOTAL\_MEMORY\_DETAIL + +PG\_TOTAL\_MEMORY\_DETAIL视图显示某个数据库节点内存使用情况。 + +**表 1** PG\_TOTAL\_MEMORY\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

text

+

节点名称。

+

memorytype

+

text

+

内存的名称。

+

memorymbytes

+

integer

+

内存使用的大小,单位为 MB 。

+
+ diff --git a/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO.md b/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO.md index d6d9a57e9..b593c03bd 100644 --- a/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO.md +++ b/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO.md @@ -1,143 +1,143 @@ -# PG\_TOTAL\_USER\_RESOURCE\_INFO - -PG\_TOTAL\_USER\_RESOURCE\_INFO视图显示所有用户资源使用情况,需要使用管理员用户进行查询。此视图在参数[use\_workload\_manager](负载管理.md)为on时才有效。其中,IO相关监控项在参数enable\_logical\_io\_statistics为on时才有效。 - -**表 1** PG\_TOTAL\_USER\_RESOURCE\_INFO字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

username

-

name

-

用户名。

-

used_memory

-

integer

-

正在使用的内存大小,单位MB。

-

total_memory

-

integer

-

可以使用的内存大小,单位MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。

-

used_cpu

-

double precision

-

正在使用的CPU核数(仅统计复杂作业CPU使用 情况,且该值为相关控制组的CPU使用统计值)。

-

total_cpu

-

integer

-

在该机器节点上,用户关联控制组的CPU核数总和。

-

used_space

-

bigint

-

已使用的永久表存储空间大小,单位KB。

-

total_space

-

bigint

-

可使用的永久表存储空间大小,单位KB,值为-1表示未限制最大存储空间。

-

used_temp_space

-

bigint

-

已使用的临时空间大小,单位KB。

-

total_temp_space

-

bigint

-

可使用的临时空间总大小,单位KB,值为-1表示未限制。

-

used_spill_space

-

bigint

-

已使用的算子落盘空间大小,单位KB。

-

total_spill_space

-

bigint

-

可使用的算子落盘空间总大小,单位KB,值为-1表示未限制。

-

read_kbytes

-

bigint

-

数据库主节点:过去5秒内,该用户在数据库节点上复杂作业read的字节总数(单位KB)。

-

数据库节点:实例启动至当前时间为止,该用户复杂作业read的字节总数(单位KB)。

-

write_kbytes

-

bigint

-

数据库主节点:过去5秒内,该用户在数据库节点上复杂作业write的字节总数(单位KB)。

-

数据库节点:实例启动至当前时间为止,该用户复杂作业write的字节总数(单位KB)。

-

read_counts

-

bigint

-

数据库主节点:过去5秒内,该用户在数据库节点上复杂作业read的次数之和(单位次)。

-

数据库节点:实例启动至当前时间为止,该用户复杂作业read的次数之和(单位次)。

-

write_counts

-

bigint

-

数据库主节点:过去5秒内,该用户在数据库节点上复杂作业write的次数之和(单位次)。

-

数据库节点:实例启动至当前时间为止,该用户复杂作业write的次数之和(单位次)。

-

read_speed

-

double precision

-

数据库主节点:过去5秒内,该用户在单个数据库节点上复杂作业read平均速率(单位KB/s)。

-

数据库节点:过去5秒内,该用户在该数据库节点上复杂作业read平均速率(单位KB/s)。

-

write_speed

-

double precision

-

数据库主节点:过去5秒内,该用户在单个数据库节点上复杂作业write平均速率(单位KB/s)。

-

数据库节点:过去5秒内,该用户在该数据库节点上复杂作业write平均速率(单位KB/s)。

-
- +# PG\_TOTAL\_USER\_RESOURCE\_INFO + +PG\_TOTAL\_USER\_RESOURCE\_INFO视图显示所有用户资源使用情况,需要使用管理员用户进行查询。此视图在参数[use\_workload\_manager](负载管理.md)为 on 时才有效。其中, IO 相关监控项在参数enable\_logical\_io\_statistics为 on 时才有效。 + +**表 1** PG\_TOTAL\_USER\_RESOURCE\_INFO字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

username

+

name

+

用户名。

+

used_memory

+

integer

+

正在使用的内存大小,单位 MB 。

+

total_memory

+

integer

+

可以使用的内存大小,单位 MB 。值为 0 表示未限制最大可用内存,其限制取决于数据库最大可用内存。

+

used_cpu

+

double precision

+

正在使用的 CPU 核数(仅统计复杂作业 CPU 使用 情况,且该值为相关控制组的 CPU 使用统计值)。

+

total_cpu

+

integer

+

在该机器节点上,用户关联控制组的 CPU 核数总和。

+

used_space

+

bigint

+

已使用的永久表存储空间大小,单位 KB 。

+

total_space

+

bigint

+

可使用的永久表存储空间大小,单位 KB ,值为-1表示未限制最大存储空间。

+

used_temp_space

+

bigint

+

已使用的临时空间大小,单位 KB 。

+

total_temp_space

+

bigint

+

可使用的临时空间总大小,单位 KB ,值为-1表示未限制。

+

used_spill_space

+

bigint

+

已使用的算子落盘空间大小,单位 KB 。

+

total_spill_space

+

bigint

+

可使用的算子落盘空间总大小,单位 KB ,值为-1表示未限制。

+

read_kbytes

+

bigint

+

数据库主节点:过去 5 秒内,该用户在数据库节点上复杂作业 read 的字节总数(单位KB)。

+

数据库节点:实例启动至当前时间为止,该用户复杂作业 read 的字节总数(单位KB)。

+

write_kbytes

+

bigint

+

数据库主节点:过去 5 秒内,该用户在数据库节点上复杂作业 write 的字节总数(单位KB)。

+

数据库节点:实例启动至当前时间为止,该用户复杂作业 write 的字节总数(单位KB)。

+

read_counts

+

bigint

+

数据库主节点:过去 5 秒内,该用户在数据库节点上复杂作业 read 的次数之和(单位次)。

+

数据库节点:实例启动至当前时间为止,该用户复杂作业 read 的次数之和(单位次)。

+

write_counts

+

bigint

+

数据库主节点:过去 5 秒内,该用户在数据库节点上复杂作业 write 的次数之和(单位次)。

+

数据库节点:实例启动至当前时间为止,该用户复杂作业 write 的次数之和(单位次)。

+

read_speed

+

double precision

+

数据库主节点:过去 5 秒内,该用户在单个数据库节点上复杂作业 read 平均速率(单位KB/s)。

+

数据库节点:过去 5 秒内,该用户在该数据库节点上复杂作业 read 平均速率(单位KB/s)。

+

write_speed

+

double precision

+

数据库主节点:过去 5 秒内,该用户在单个数据库节点上复杂作业 write 平均速率(单位KB/s)。

+

数据库节点:过去 5 秒内,该用户在该数据库节点上复杂作业 write 平均速率(单位KB/s)。

+
+ diff --git a/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO_OID-0.md b/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO_OID-0.md index 8e434f9a4..4767485fb 100644 --- a/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO_OID-0.md +++ b/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO_OID-0.md @@ -1,136 +1,136 @@ -# PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID - -PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID视图显示所有用户资源使用情况,需要使用管理员用户进行查询。此视图在参数[use\_workload\_manager](负载管理.MD)为on时才有效。 - -**表 1** PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

userid

-

oid

-

用户ID。

-

used_memory

-

integer

-

正在使用的内存大小,单位MB。

-

total_memory

-

integer

-

可以使用的内存大小,单位MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。

-

used_cpu

-

double precision

-

正在使用的CPU核数。

-

total_cpu

-

integer

-

在该机器节点上,用户关联控制组的CPU核数总和。

-

used_space

-

bigint

-

已使用的存储空间大小,单位KB。

-

total_space

-

bigint

-

可使用的存储空间大小,单位KB,值为-1表示未限制最大存储空间。

-

used_temp_space

-

bigint

-

已使用的临时空间大小,单位KB。

-

total_temp_space

-

bigint

-

可使用的临时空间总大小,单位KB,值为-1表示未限制。

-

used_spill_space

-

bigint

-

已使用的下盘空间大小。单位KB。

-

total_spill_space

-

bigint

-

可使用的下盘空间总大小,单位KB,值为-1表示未限制。

-

read_kbytes

-

bigint

-

监视间隔期间读取字节数,单位kilobytes/s。

-

write_kbytes

-

bigint

-

监视间隔期间写入字节数,单位kilobytes/s。

-

read_counts

-

bigint

-

监视间隔期间读取次数。

-

write_counts

-

bigint

-

监视间隔期间写入次数。

-

read_speed

-

double precision

-

读取速度,单位bytes/s。

-

write_speed

-

double precision

-

写入速度,单位bytes/s。

-
+# PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID + +PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID视图显示所有用户资源使用情况,需要使用管理员用户进行查询。此视图在参数[use\_workload\_manager](负载管理.MD)为 on 时才有效。 + +**表 1** PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

userid

+

oid

+

用户 ID 。

+

used_memory

+

integer

+

正在使用的内存大小,单位 MB 。

+

total_memory

+

integer

+

可以使用的内存大小,单位 MB 。值为 0 表示未限制最大可用内存,其限制取决于数据库最大可用内存。

+

used_cpu

+

double precision

+

正在使用的 CPU 核数。

+

total_cpu

+

integer

+

在该机器节点上,用户关联控制组的 CPU 核数总和。

+

used_space

+

bigint

+

已使用的存储空间大小,单位 KB 。

+

total_space

+

bigint

+

可使用的存储空间大小,单位 KB ,值为-1表示未限制最大存储空间。

+

used_temp_space

+

bigint

+

已使用的临时空间大小,单位 KB 。

+

total_temp_space

+

bigint

+

可使用的临时空间总大小,单位 KB ,值为-1表示未限制。

+

used_spill_space

+

bigint

+

已使用的下盘空间大小。单位 KB 。

+

total_spill_space

+

bigint

+

可使用的下盘空间总大小,单位 KB ,值为-1表示未限制。

+

read_kbytes

+

bigint

+

监视间隔期间读取字节数,单位kilobytes/s。

+

write_kbytes

+

bigint

+

监视间隔期间写入字节数,单位kilobytes/s。

+

read_counts

+

bigint

+

监视间隔期间读取次数。

+

write_counts

+

bigint

+

监视间隔期间写入次数。

+

read_speed

+

double precision

+

读取速度,单位bytes/s。

+

write_speed

+

double precision

+

写入速度,单位bytes/s。

+
diff --git a/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO_OID.md b/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO_OID.md index a81ac1b3b..e80a957f7 100644 --- a/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO_OID.md +++ b/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO_OID.md @@ -1,136 +1,136 @@ -# PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID - -PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID视图显示所有用户资源使用情况,需要使用管理员用户进行查询。此视图在参数[use\_workload\_manager](负载管理.md)为on时才有效。 - -**表 1** PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

userid

-

oid

-

用户ID。

-

used_memory

-

integer

-

正在使用的内存大小,单位MB。

-

total_memory

-

integer

-

可以使用的内存大小,单位MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。

-

used_cpu

-

double precision

-

正在使用的CPU核数。

-

total_cpu

-

integer

-

在该机器节点上,用户关联控制组的CPU核数总和。

-

used_space

-

bigint

-

已使用的存储空间大小,单位KB。

-

total_space

-

bigint

-

可使用的存储空间大小,单位KB,值为-1表示未限制最大存储空间。

-

used_temp_space

-

bigint

-

已使用的临时空间大小,单位KB。

-

total_temp_space

-

bigint

-

可使用的临时空间总大小,单位KB,值为-1表示未限制。

-

used_spill_space

-

bigint

-

已使用的下盘空间大小。单位KB。

-

total_spill_space

-

bigint

-

可使用的下盘空间总大小,单位KB,值为-1表示未限制。

-

read_kbytes

-

bigint

-

读磁盘数据量,单位KB。

-

write_kbytes

-

bigint

-

写磁盘数据量,单位KB。

-

read_counts

-

bigint

-

读磁盘次数。

-

write_counts

-

bigint

-

写磁盘次数。

-

read_speed

-

double precision

-

读磁盘速率,单位B/ms。

-

write_speed

-

double precision

-

写磁盘速率,单位B/ms。

-
+# PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID + +PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID视图显示所有用户资源使用情况,需要使用管理员用户进行查询。此视图在参数[use\_workload\_manager](负载管理.md)为 on 时才有效。 + +**表 1** PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

userid

+

oid

+

用户 ID 。

+

used_memory

+

integer

+

正在使用的内存大小,单位 MB 。

+

total_memory

+

integer

+

可以使用的内存大小,单位 MB 。值为 0 表示未限制最大可用内存,其限制取决于数据库最大可用内存。

+

used_cpu

+

double precision

+

正在使用的 CPU 核数。

+

total_cpu

+

integer

+

在该机器节点上,用户关联控制组的 CPU 核数总和。

+

used_space

+

bigint

+

已使用的存储空间大小,单位 KB 。

+

total_space

+

bigint

+

可使用的存储空间大小,单位 KB ,值为-1表示未限制最大存储空间。

+

used_temp_space

+

bigint

+

已使用的临时空间大小,单位 KB 。

+

total_temp_space

+

bigint

+

可使用的临时空间总大小,单位 KB ,值为-1表示未限制。

+

used_spill_space

+

bigint

+

已使用的下盘空间大小。单位 KB 。

+

total_spill_space

+

bigint

+

可使用的下盘空间总大小,单位 KB ,值为-1表示未限制。

+

read_kbytes

+

bigint

+

读磁盘数据量,单位 KB 。

+

write_kbytes

+

bigint

+

写磁盘数据量,单位 KB 。

+

read_counts

+

bigint

+

读磁盘次数。

+

write_counts

+

bigint

+

写磁盘次数。

+

read_speed

+

double precision

+

读磁盘速率,单位B/ms。

+

write_speed

+

double precision

+

写磁盘速率,单位B/ms。

+
diff --git a/content/zh/docs/Developerguide/PG_TRIGGER.md b/content/zh/docs/Developerguide/PG_TRIGGER.md index ab68f3d01..1977a75ad 100644 --- a/content/zh/docs/Developerguide/PG_TRIGGER.md +++ b/content/zh/docs/Developerguide/PG_TRIGGER.md @@ -1,140 +1,140 @@ -# PG\_TRIGGER - -PG\_TRIGGER系统表存储触发器信息。 - -**表 1** PG\_TRIGGER字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

tgrelid

-

oid

-

触发器所在表的OID。

-

tgname

-

name

-

触发器名。

-

tgfoid

-

oid

-

要被触发器调用的函数。

-

tgtype

-

smallint

-

触发器类型。

-

tgenabled

-

"char"

-

O =触发器在“origin”和“local”模式下触发。

-

D =触发器被禁用。

-

R =触发器在“replica”模式下触发。

-

A =触发器始终触发。

-

tgisinternal

-

boolean

-

内部触发器标识,如果为true表示内部触发器。

-

tgconstrrelid

-

oid

-

完整性约束引用的表。

-

tgconstrindid

-

oid

-

完整性约束的索引。

-

tgconstraint

-

oid

-

约束触发器在pg_constraint中的OID。

-

tgdeferrable

-

boolean

-

约束触发器是为DEFERRABLE类型。

-

tginitdeferred

-

boolean

-

约束触发器是否为INITIALLY DEFERRED类型。

-

tgnargs

-

smallint

-

触发器函数入参个数。

-

tgattr

-

int2vector

-

当触发器指定列时的列号,未指定则为空数组。

-

tgargs

-

bytea

-

传递给触发器的参数。

-

tgqual

-

pg_node_tree

-

表示触发器的WHEN条件,如果没有则为null。

-

tgowner

-

oid

-

触发器的所有者。

-
- +# PG\_TRIGGER + +PG\_TRIGGER系统表存储触发器信息。 + +**表 1** PG\_TRIGGER字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

tgrelid

+

oid

+

触发器所在表的 OID 。

+

tgname

+

name

+

触发器名。

+

tgfoid

+

oid

+

要被触发器调用的函数。

+

tgtype

+

smallint

+

触发器类型。

+

tgenabled

+

"char"

+

O =触发器在“origin”和“local”模式下触发。

+

D =触发器被禁用。

+

R =触发器在“replica”模式下触发。

+

A =触发器始终触发。

+

tgisinternal

+

boolean

+

内部触发器标识,如果为 true 表示内部触发器。

+

tgconstrrelid

+

oid

+

完整性约束引用的表。

+

tgconstrindid

+

oid

+

完整性约束的索引。

+

tgconstraint

+

oid

+

约束触发器在 pg_constraint 中的 OID 。

+

tgdeferrable

+

boolean

+

约束触发器是为 DEFERRABLE 类型。

+

tginitdeferred

+

boolean

+

约束触发器是否为 INITIALLY DEFERRED 类型。

+

tgnargs

+

smallint

+

触发器函数入参个数。

+

tgattr

+

int2vector

+

当触发器指定列时的列号,未指定则为空数组。

+

tgargs

+

bytea

+

传递给触发器的参数。

+

tgqual

+

pg_node_tree

+

表示触发器的 WHEN 条件,如果没有则为 null 。

+

tgowner

+

oid

+

触发器的所有者。

+
+ diff --git a/content/zh/docs/Developerguide/PG_TS_CONFIG.md b/content/zh/docs/Developerguide/PG_TS_CONFIG.md index 0e62ed604..70243d19b 100644 --- a/content/zh/docs/Developerguide/PG_TS_CONFIG.md +++ b/content/zh/docs/Developerguide/PG_TS_CONFIG.md @@ -1,76 +1,76 @@ -# PG\_TS\_CONFIG - -PG\_TS\_CONFIG系统表包含表示文本搜索配置的记录。一个配置指定一个特定的文本搜索解析器和一个为了每个解析器的输出类型使用的字典的列表。 - -解析器在PG\_TS\_CONFIG记录中显示,但是字典映射的标记是由[PG\_TS\_CONFIG\_MAP](PG_TS_CONFIG_MAP.md)里面的辅助记录定义的。 - -**表 1** PG\_TS\_CONFIG字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

cfgname

-

name

-

-

-

文本搜索配置名。

-

cfgnamespace

-

oid

-

PG_NAMESPACE.oid

-

包含这个配置的名称空间的OID。

-

cfgowner

-

oid

-

PG_AUTHID.oid

-

配置的所有者。

-

cfgparser

-

oid

-

PG_TS_PARSER.oid

-

这个配置的文本搜索解析器的OID。

-

cfoptions

-

text[]

-

-

-

分词相关配置选项。

-
- +# PG\_TS\_CONFIG + +PG\_TS\_CONFIG系统表包含表示文本搜索配置的记录。一个配置指定一个特定的文本搜索解析器和一个为了每个解析器的输出类型使用的字典的列表。 + +解析器在PG\_TS\_CONFIG记录中显示,但是字典映射的标记是由[PG\_TS\_CONFIG\_MAP](PG_TS_CONFIG_MAP.md)里面的辅助记录定义的。 + +**表 1** PG\_TS\_CONFIG字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

cfgname

+

name

+

-

+

文本搜索配置名。

+

cfgnamespace

+

oid

+

PG_NAMESPACE.oid

+

包含这个配置的名称空间的 OID 。

+

cfgowner

+

oid

+

PG_AUTHID.oid

+

配置的所有者。

+

cfgparser

+

oid

+

PG_TS_PARSER.oid

+

这个配置的文本搜索解析器的 OID 。

+

cfoptions

+

text[]

+

-

+

分词相关配置选项。

+
+ diff --git a/content/zh/docs/Developerguide/PG_TS_CONFIG_MAP.md b/content/zh/docs/Developerguide/PG_TS_CONFIG_MAP.md index 0aecd513d..18ccf0764 100644 --- a/content/zh/docs/Developerguide/PG_TS_CONFIG_MAP.md +++ b/content/zh/docs/Developerguide/PG_TS_CONFIG_MAP.md @@ -1,56 +1,56 @@ -# PG\_TS\_CONFIG\_MAP - -PG\_TS\_CONFIG\_MAP系统表包含为每个文本搜索配置的解析器的每个输出符号类型,显示哪个文本搜索字典应该被咨询、以什么顺序搜索的记录。 - -**表 1** PG\_TS\_CONFIG\_MAP字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

mapcfg

-

oid

-

PG_TS_CONFIG.oid

-

拥有这个映射记录的PG_TS_CONFIG记录的OID。

-

maptokentype

-

integer

-

-

-

由配置的解析器产生的一个符号类型值。

-

mapseqno

-

integer

-

-

-

在相同mapcfg或maptokentype值的情况下,该符号类型的顺序号。

-

mapdict

-

oid

-

PG_TS_DICT.oid

-

要咨询的文本搜索字典的OID。

-
- +# PG\_TS\_CONFIG\_MAP + +PG\_TS\_CONFIG\_MAP系统表包含为每个文本搜索配置的解析器的每个输出符号类型,显示哪个文本搜索字典应该被咨询、以什么顺序搜索的记录。 + +**表 1** PG\_TS\_CONFIG\_MAP字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

mapcfg

+

oid

+

PG_TS_CONFIG.oid

+

拥有这个映射记录的PG_TS_CONFIG记录的 OID 。

+

maptokentype

+

integer

+

-

+

由配置的解析器产生的一个符号类型值。

+

mapseqno

+

integer

+

-

+

在相同 mapcfg 或 maptokentype 值的情况下,该符号类型的顺序号。

+

mapdict

+

oid

+

PG_TS_DICT.oid

+

要咨询的文本搜索字典的 OID 。

+
+ diff --git a/content/zh/docs/Developerguide/PG_TS_DICT.md b/content/zh/docs/Developerguide/PG_TS_DICT.md index a3edb907b..4ea17696a 100644 --- a/content/zh/docs/Developerguide/PG_TS_DICT.md +++ b/content/zh/docs/Developerguide/PG_TS_DICT.md @@ -1,76 +1,76 @@ -# PG\_TS\_DICT - -PG\_TS\_DICT系统表包含定义文本搜索字典的记录。字典取决于文本搜索模板,该模板声明所有需要的实现函数;字典本身提供模板支持的用户可设置的参数的值。 - -这种分工允许字典通过非权限用户创建。参数由文本字符串dictinitoption指定,参数的格式和意义取决于模板。 - -**表 1** PG\_TS\_DICT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

dictname

-

name

-

-

-

文本搜索字典名。

-

dictnamespace

-

oid

-

PG_NAMESPACE.oid

-

包含这个字典的名称空间的OID。

-

dictowner

-

oid

-

PG_AUTHID.oid

-

字典的所有者。

-

dicttemplate

-

oid

-

PG_TS_TEMPLATE.oid

-

这个字典的文本搜索模板的OID。

-

dictinitoption

-

text

-

-

-

该模板的初始化选项字符串。

-
- +# PG\_TS\_DICT + +PG\_TS\_DICT系统表包含定义文本搜索字典的记录。字典取决于文本搜索模板,该模板声明所有需要的实现函数;字典本身提供模板支持的用户可设置的参数的值。 + +这种分工允许字典通过非权限用户创建。参数由文本字符串 dictinitoption 指定,参数的格式和意义取决于模板。 + +**表 1** PG\_TS\_DICT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

dictname

+

name

+

-

+

文本搜索字典名。

+

dictnamespace

+

oid

+

PG_NAMESPACE.oid

+

包含这个字典的名称空间的 OID 。

+

dictowner

+

oid

+

PG_AUTHID.oid

+

字典的所有者。

+

dicttemplate

+

oid

+

PG_TS_TEMPLATE.oid

+

这个字典的文本搜索模板的 OID 。

+

dictinitoption

+

text

+

-

+

该模板的初始化选项字符串。

+
+ diff --git a/content/zh/docs/Developerguide/PG_TS_PARSER.md b/content/zh/docs/Developerguide/PG_TS_PARSER.md index e0624ef38..4d02e8a76 100644 --- a/content/zh/docs/Developerguide/PG_TS_PARSER.md +++ b/content/zh/docs/Developerguide/PG_TS_PARSER.md @@ -1,92 +1,92 @@ -# PG\_TS\_PARSER - -PG\_TS\_PARSER系统表包含定义文本解析器的记录。解析器负责分裂输入文本为词位,并且为每个词位分配标记类型。新解析器必须由数据库系统管理员创建。 - -**表 1** PG\_TS\_PARSER字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

prsname

-

name

-

-

-

文本搜索解析器名。

-

prsnamespace

-

oid

-

PG_NAMESPACE.oid

-

包含这个解析器的名称空间的OID。

-

prsstart

-

regproc

-

PG_PROC.proname

-

解析器的启动函数名。

-

prstoken

-

regproc

-

PG_PROC.proname

-

解析器的下一个标记函数名。

-

prsend

-

regproc

-

PG_PROC.proname

-

解析器的关闭函数名。

-

prsheadline

-

regproc

-

PG_PROC.proname

-

解析器的标题函数名。

-

prslextype

-

regproc

-

PG_PROC.proname

-

解析器的lextype函数名。

-
- +# PG\_TS\_PARSER + +PG\_TS\_PARSER系统表包含定义文本解析器的记录。解析器负责分裂输入文本为词位,并且为每个词位分配标记类型。新解析器必须由数据库系统管理员创建。 + +**表 1** PG\_TS\_PARSER字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

prsname

+

name

+

-

+

文本搜索解析器名。

+

prsnamespace

+

oid

+

PG_NAMESPACE.oid

+

包含这个解析器的名称空间的 OID 。

+

prsstart

+

regproc

+

PG_PROC.proname

+

解析器的启动函数名。

+

prstoken

+

regproc

+

PG_PROC.proname

+

解析器的下一个标记函数名。

+

prsend

+

regproc

+

PG_PROC.proname

+

解析器的关闭函数名。

+

prsheadline

+

regproc

+

PG_PROC.proname

+

解析器的标题函数名。

+

prslextype

+

regproc

+

PG_PROC.proname

+

解析器的 lextype 函数名。

+
+ diff --git a/content/zh/docs/Developerguide/PG_TS_TEMPLATE.md b/content/zh/docs/Developerguide/PG_TS_TEMPLATE.md index 5557a809e..e7e3860d4 100644 --- a/content/zh/docs/Developerguide/PG_TS_TEMPLATE.md +++ b/content/zh/docs/Developerguide/PG_TS_TEMPLATE.md @@ -1,65 +1,65 @@ -# PG\_TS\_TEMPLATE - -PG\_TS\_TEMPLATE系统表包含定义文本搜索模板的记录。模板是文本搜索字典的类的实现框架。因为模板必须通过C语言级别的函数实现,索引新模板的创建必须由数据库系统管理员创建。 - -**表 1** PG\_TS\_TEMPLATE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

tmplname

-

name

-

-

-

文本搜索模板名。

-

tmplnamespace

-

oid

-

PG_NAMESPACE.oid

-

包含这个模板的名称空间的OID。

-

tmplinit

-

regproc

-

PG_PROC.proname

-

模板的初始化函数名。

-

tmpllexize

-

regproc

-

PG_PROC.proname

-

模板的lexize函数名。

-
- +# PG\_TS\_TEMPLATE + +PG\_TS\_TEMPLATE系统表包含定义文本搜索模板的记录。模板是文本搜索字典的类的实现框架。因为模板必须通过 C 语言级别的函数实现,索引新模板的创建必须由数据库系统管理员创建。 + +**表 1** PG\_TS\_TEMPLATE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

tmplname

+

name

+

-

+

文本搜索模板名。

+

tmplnamespace

+

oid

+

PG_NAMESPACE.oid

+

包含这个模板的名称空间的 OID 。

+

tmplinit

+

regproc

+

PG_PROC.proname

+

模板的初始化函数名。

+

tmpllexize

+

regproc

+

PG_PROC.proname

+

模板的 lexize 函数名。

+
+ diff --git a/content/zh/docs/Developerguide/PG_TYPE.md b/content/zh/docs/Developerguide/PG_TYPE.md index b10e82988..9fc3a2eec 100644 --- a/content/zh/docs/Developerguide/PG_TYPE.md +++ b/content/zh/docs/Developerguide/PG_TYPE.md @@ -1,243 +1,243 @@ -# PG\_TYPE - -PG\_TYPE系统表存储数据类型的相关信息。 - -**表 1** PG\_TYPE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

typname

-

name

-

数据类型名称。

-

typnamespace

-

oid

-

包含这个类型的名称空间的OID。

-

typowner

-

oid

-

该类型的所有者。

-

typlen

-

smallint

-
对于定长类型是该类型内部表现形式的字节数目。对于变长类型是负数。
  • -1表示一种“变长”(有长度字属性的数据)。
  • -2表示这是一个NULL结尾的C字符串。
-
-

typbyval

-

Boolean

-

指定内部传递这个类型的数值时是传值(该值为true)还是传引用(该值为false)。如果该类型的TYPLEN不是1、2、4、8, TYPBYVAL最好为false。变长类型通常是传引用。即使TYPLEN允许传值,TYPBYVAL也可以为false。

-

typtype

-

"char"

-
  • 对于基础类型是b。
  • 对于复合类型是c(比如,一个表的行类型)。
  • 对于域类型是d。
  • 对于伪类型是p。
-

参见typrelid和typbasetype。

-

typcategory

-

"char"

-

是数据类型的模糊分类,可用于解析器做为数据转换的依据。

-

typispreferred

-

Boolean

-

如果为真,则数据符合TYPCATEGORY所指定的转换规则时进行转换。

-

typisdefined

-

Boolean

-

如果定义了类型则为真,如果是一种尚未定义的类型的占位符则为假。如果为假,则除了该类型名称,名称空间和OID之外没有可靠的信息。

-

typdelim

-

"char"

-

当分析数组输入时,分隔两个此类型数值的字符请注意该分隔符是与数组元素数据类型相关联的,而不是和数组数据类型关联。

-

typrelid

-

oid

-

如果是复合类型(请参见typtype),则这个字段指向pg_class中定义该表的行。对于自由存在的复合类型,pg_class记录并不表示一个表,但是总需要它来查找该类型连接的pg_attribute记录。对于非复合类型为零。

-

typelem

-

oid

-

如果不为0,则它标识pg_type里面的另外一行。当前类型可以当做一个产生类型为typelem的数组来描述。一个“真正的”数组类型是变长的(typlen= -1),但是一些定长的(typlen > 0)类型也拥有非零的typelem(比如name和point)。如果一个定长类型拥有一个typelem ,则他的内部形式必须是typelem数据类型的某个数目的个数值,不能有其他数据。变长数组类型有一个该数组子过程定义的头(文件)。

-

typarray

-

oid

-

如果不为0,则表示在pg_type中有对应的类型记录。

-

typinput

-

regproc

-

输入转换函数(文本格式)。

-

typoutput

-

regproc

-

输出转换函数(文本格式)。

-

typreceive

-

regproc

-

输入转换函数(二进制格式),如果没有则为0。

-

typsend

-

regproc

-

输出转换函数(二进制格式),如果没有则为0。

-

typmodin

-

regproc

-

输入类型修改符函数,如果为0,则不支持。

-

typmodout

-

regproc

-

输出类型修改符函数,如果为0,则不支持。

-

typanalyze

-

regproc

-

自定义的ANALYZE函数,如果使用标准函数,则为0。

-

typalign

-

"char"

-
当存储此类型的数值时要求的对齐性质。它应用于磁盘存储以及该值在openGauss内部的大多数形式。如果数值是连续存放的,比如在磁盘上以完全的裸数据的形式存放时,则先在此类型的数据前填充空白,这样它就可以按照要求的界限存储。对齐引用是该序列中第一个数据的开头。可能的值包含:
  • c = char对齐,也就是不需要对齐。
  • s = short对齐(在大多数机器上是2字节)。
  • i = int对齐(在大多数机器上是4字节)。
  • d = double对齐(在大多数机器上是8字节,但不一定是全部)。
-
-
须知:

对于在系统表里使用的类型,在pg_type里定义的尺寸和对齐必须和编译器在一个表示表的一行的结构里的布局一样。

-
-

typstorage

-

"char"

-
指明一个变长类型(那些有typlen = -1)是否准备好应付非常规值,以及对这种属性的类型的缺省策略是什么。可能的值包含:
  • p:数值总是以简单方式存储。
  • e:数值可以存储在一个“次要”关系中(如果该关系有这么一个,请参见pg_class.reltoastrelid)。
  • m:数值可以以内联的压缩方式存储。
  • x:数值可以以内联的压缩方式或者在“次要”表里存储。
-
-
须知:

m域也可以移到从属表里存储,但只是最后的解决方法(e和x域先移走)。

-
-

typenotnull

-

Boolean

-

该类型是否存在NOTNULL约束。目前只用于域。

-

typbasetype

-

oid

-

如果这是一个衍生类型(请参见typtype),则该标识作为这个类型的基础的类型。如果不是衍生类型则为零。

-

typtypmod

-

integer

-

域使用typtypmod记录要作用到它们的基础类型上的typmod(如果基础类型不使用typmod则为-1)。如果这种类型不是域,则为-1。

-

typndims

-

integer

-

如果一个域是数组,则typndims是数组维数的数值(也就是说,typbasetype是一个数组类型;域的typelem将匹配基本类型的typelem)。非域非数组域为零。

-

typcollation

-

oid

-

指定类型的排序规则。取值参考PG_COLLATION系统表。如果为0,则表示不支持排序。

-

typdefaultbin

-

pg_node_tree

-

如果为非NULL,则它是该类型缺省表达式的nodeToString()表现形式。目前这个字段只用于域。

-

typdefault

-

text

-

如果某类型没有相关缺省值,则取值是NULL。

-
  • 如果typdefaultbin为非NULL,则typdefault必须包含一个typdefaultbin代表的缺省表达式。
  • 如果typdefaultbin为NULL但typdefault不是,typdefault则是该类型缺省值的外部表现形式,可以把它作为该类型的输入,转换器生成一个常量。
-

typacl

-

aclitem[]

-

访问权限。

-
+# PG\_TYPE + +PG\_TYPE系统表存储数据类型的相关信息。 + +**表 1** PG\_TYPE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

typname

+

name

+

数据类型名称。

+

typnamespace

+

oid

+

包含这个类型的名称空间的 OID 。

+

typowner

+

oid

+

该类型的所有者。

+

typlen

+

smallint

+
对于定长类型是该类型内部表现形式的字节数目。对于变长类型是负数。
  • -1表示一种“变长”(有长度字属性的数据)。
  • -2表示这是一个 NULL 结尾的 C 字符串。
+
+

typbyval

+

Boolean

+

指定内部传递这个类型的数值时是传值(该值为true)还是传引用(该值为false)。如果该类型的 TYPLEN 不是1、2、4、8, TYPBYVAL 最好为 false 。变长类型通常是传引用。即使 TYPLEN 允许传值, TYPBYVAL 也可以为 false 。

+

typtype

+

"char"

+
  • 对于基础类型是 b 。
  • 对于复合类型是c(比如,一个表的行类型)。
  • 对于域类型是 d 。
  • 对于伪类型是 p 。
+

参见 typrelid 和 typbasetype 。

+

typcategory

+

"char"

+

是数据类型的模糊分类,可用于解析器做为数据转换的依据。

+

typispreferred

+

Boolean

+

如果为真,则数据符合 TYPCATEGORY 所指定的转换规则时进行转换。

+

typisdefined

+

Boolean

+

如果定义了类型则为真,如果是一种尚未定义的类型的占位符则为假。如果为假,则除了该类型名称,名称空间和 OID 之外没有可靠的信息。

+

typdelim

+

"char"

+

当分析数组输入时,分隔两个此类型数值的字符请注意该分隔符是与数组元素数据类型相关联的,而不是和数组数据类型关联。

+

typrelid

+

oid

+

如果是复合类型(请参见typtype),则这个字段指向 pg_class 中定义该表的行。对于自由存在的复合类型, pg_class 记录并不表示一个表,但是总需要它来查找该类型连接的 pg_attribute 记录。对于非复合类型为零。

+

typelem

+

oid

+

如果不为 0 ,则它标识 pg_type 里面的另外一行。当前类型可以当做一个产生类型为 typelem 的数组来描述。一个“真正的”数组类型是变长的(typlen= -1),但是一些定长的(typlen > 0)类型也拥有非零的typelem(比如 name 和point)。如果一个定长类型拥有一个 typelem ,则他的内部形式必须是 typelem 数据类型的某个数目的个数值,不能有其他数据。变长数组类型有一个该数组子过程定义的头(文件)。

+

typarray

+

oid

+

如果不为 0 ,则表示在 pg_type 中有对应的类型记录。

+

typinput

+

regproc

+

输入转换函数(文本格式)。

+

typoutput

+

regproc

+

输出转换函数(文本格式)。

+

typreceive

+

regproc

+

输入转换函数(二进制格式),如果没有则为 0 。

+

typsend

+

regproc

+

输出转换函数(二进制格式),如果没有则为 0 。

+

typmodin

+

regproc

+

输入类型修改符函数,如果为 0 ,则不支持。

+

typmodout

+

regproc

+

输出类型修改符函数,如果为 0 ,则不支持。

+

typanalyze

+

regproc

+

自定义的 ANALYZE 函数,如果使用标准函数,则为 0 。

+

typalign

+

"char"

+
当存储此类型的数值时要求的对齐性质。它应用于磁盘存储以及该值在 openGauss 内部的大多数形式。如果数值是连续存放的,比如在磁盘上以完全的裸数据的形式存放时,则先在此类型的数据前填充空白,这样它就可以按照要求的界限存储。对齐引用是该序列中第一个数据的开头。可能的值包含:
  • c = char对齐,也就是不需要对齐。
  • s = short对齐(在大多数机器上是 2 字节)。
  • i = int对齐(在大多数机器上是 4 字节)。
  • d = double对齐(在大多数机器上是 8 字节,但不一定是全部)。
+
+
须知:

对于在系统表里使用的类型,在 pg_type 里定义的尺寸和对齐必须和编译器在一个表示表的一行的结构里的布局一样。

+
+

typstorage

+

"char"

+
指明一个变长类型(那些有typlen = -1)是否准备好应付非常规值,以及对这种属性的类型的缺省策略是什么。可能的值包含:
  • p:数值总是以简单方式存储。
  • e:数值可以存储在一个“次要”关系中(如果该关系有这么一个,请参见pg_class.reltoastrelid)。
  • m:数值可以以内联的压缩方式存储。
  • x:数值可以以内联的压缩方式或者在“次要”表里存储。
+
+
须知:

m域也可以移到从属表里存储,但只是最后的解决方法(e和 x 域先移走)。

+
+

typenotnull

+

Boolean

+

该类型是否存在 NOTNULL 约束。目前只用于域。

+

typbasetype

+

oid

+

如果这是一个衍生类型(请参见typtype),则该标识作为这个类型的基础的类型。如果不是衍生类型则为零。

+

typtypmod

+

integer

+

域使用 typtypmod 记录要作用到它们的基础类型上的typmod(如果基础类型不使用 typmod 则为-1)。如果这种类型不是域,则为-1。

+

typndims

+

integer

+

如果一个域是数组,则 typndims 是数组维数的数值(也就是说, typbasetype 是一个数组类型;域的 typelem 将匹配基本类型的typelem)。非域非数组域为零。

+

typcollation

+

oid

+

指定类型的排序规则。取值参考PG_COLLATION系统表。如果为 0 ,则表示不支持排序。

+

typdefaultbin

+

pg_node_tree

+

如果为非 NULL ,则它是该类型缺省表达式的 nodeToString() 表现形式。目前这个字段只用于域。

+

typdefault

+

text

+

如果某类型没有相关缺省值,则取值是 NULL 。

+
  • 如果 typdefaultbin 为非 NULL ,则 typdefault 必须包含一个 typdefaultbin 代表的缺省表达式。
  • 如果 typdefaultbin 为 NULL 但 typdefault 不是, typdefault 则是该类型缺省值的外部表现形式,可以把它作为该类型的输入,转换器生成一个常量。
+

typacl

+

aclitem[]

+

访问权限。

+
diff --git a/content/zh/docs/Developerguide/PG_USER.md b/content/zh/docs/Developerguide/PG_USER.md index c0c695fdd..a9c9d8e63 100644 --- a/content/zh/docs/Developerguide/PG_USER.md +++ b/content/zh/docs/Developerguide/PG_USER.md @@ -1,130 +1,130 @@ -# PG\_USER - -PG\_USER视图提供了访问数据库用户的信息,默认只有初始化用户和具有sysadmin属性的用户可以查看,其余用户需要赋权后才可以查看。 - -**表 1** PG\_USER字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

usename

-

name

-

用户名。

-

usesysid

-

oid

-

此用户的ID。

-

usecreatedb

-

Boolean

-

用户是否可以创建数据库。

-

usesuper

-

Boolean

-

用户是否是拥有最高权限的初始系统管理员。

-

usecatupd

-

Boolean

-

用户是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。

-

userepl

-

Boolean

-

用户是否可以复制数据流。

-

passwd

-

text

-

密文存储后的用户口令,始终为********。

-

valbegin

-

timestamp with time zone

-

帐户的有效开始时间;如果没有设置有效开始时间,则为NULL。

-

valuntil

-

timestamp with time zone

-

帐户的有效结束时间;如果没有设置有效结束时间,则为NULL。

-

respool

-

name

-

用户所在的资源池。

-

parent

-

oid

-

父用户OID。

-

spacelimit

-

text

-

永久表存储空间限额。

-

tempspacelimit

-

text

-

临时表存储空间限额。

-

spillspacelimit

-

text

-

算子落盘空间限额。

-

useconfig

-

text[]

-

运行时配置参数的会话缺省。

-

nodegroup

-

name

-

用户关联的逻辑openGauss名称,如果该用户没有管理逻辑openGauss,则该字段为空。

-
- +# PG\_USER + +PG\_USER视图提供了访问数据库用户的信息,默认只有初始化用户和具有 sysadmin 属性的用户可以查看,其余用户需要赋权后才可以查看。 + +**表 1** PG\_USER字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

usename

+

name

+

用户名。

+

usesysid

+

oid

+

此用户的 ID 。

+

usecreatedb

+

Boolean

+

用户是否可以创建数据库。

+

usesuper

+

Boolean

+

用户是否是拥有最高权限的初始系统管理员。

+

usecatupd

+

Boolean

+

用户是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。

+

userepl

+

Boolean

+

用户是否可以复制数据流。

+

passwd

+

text

+

密文存储后的用户口令,始终为********。

+

valbegin

+

timestamp with time zone

+

帐户的有效开始时间;如果没有设置有效开始时间,则为 NULL 。

+

valuntil

+

timestamp with time zone

+

帐户的有效结束时间;如果没有设置有效结束时间,则为 NULL 。

+

respool

+

name

+

用户所在的资源池。

+

parent

+

oid

+

父用户 OID 。

+

spacelimit

+

text

+

永久表存储空间限额。

+

tempspacelimit

+

text

+

临时表存储空间限额。

+

spillspacelimit

+

text

+

算子落盘空间限额。

+

useconfig

+

text[]

+

运行时配置参数的会话缺省。

+

nodegroup

+

name

+

用户关联的逻辑openGauss名称,如果该用户没有管理逻辑openGauss,则该字段为空。

+
+ diff --git a/content/zh/docs/Developerguide/PG_USER_MAPPING.md b/content/zh/docs/Developerguide/PG_USER_MAPPING.md index 4500921b2..ce7611e73 100644 --- a/content/zh/docs/Developerguide/PG_USER_MAPPING.md +++ b/content/zh/docs/Developerguide/PG_USER_MAPPING.md @@ -1,58 +1,58 @@ -# PG\_USER\_MAPPING - -PG\_USER\_MAPPING系统表存储从本地用户到远程的映射。 - -需要有系统管理员权限才可以访问此系统表。普通用户可以使用视图[PG\_USER\_MAPPINGS](PG_USER_MAPPINGS.md)进行查询。 - -**表 1** PG\_USER\_MAPPING字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

oid

-

oid

-

-

-

行标识符(隐藏属性,必须明确选择)。

-

umuser

-

oid

-

PG_AUTHID.oid

-

被映射的本地用户的OID,如果用户映射是公共的则为0。

-

umserver

-

oid

-

PG_FOREIGN_SERVER.oid

-

包含这个映射的外部服务器的OID。

-

umoptions

-

text[]

-

-

-

用户映射指定选项,使用“keyword=value”格式的字符串。

-
- +# PG\_USER\_MAPPING + +PG\_USER\_MAPPING系统表存储从本地用户到远程的映射。 + +需要有系统管理员权限才可以访问此系统表。普通用户可以使用视图[PG\_USER\_MAPPINGS](PG_USER_MAPPINGS.md)进行查询。 + +**表 1** PG\_USER\_MAPPING字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

oid

+

oid

+

-

+

行标识符(隐藏属性,必须明确选择)。

+

umuser

+

oid

+

PG_AUTHID.oid

+

被映射的本地用户的 OID ,如果用户映射是公共的则为 0 。

+

umserver

+

oid

+

PG_FOREIGN_SERVER.oid

+

包含这个映射的外部服务器的 OID 。

+

umoptions

+

text[]

+

-

+

用户映射指定选项,使用“keyword=value”格式的字符串。

+
+ diff --git a/content/zh/docs/Developerguide/PG_USER_MAPPINGS.md b/content/zh/docs/Developerguide/PG_USER_MAPPINGS.md index 3912ad519..d68a396e2 100644 --- a/content/zh/docs/Developerguide/PG_USER_MAPPINGS.md +++ b/content/zh/docs/Developerguide/PG_USER_MAPPINGS.md @@ -1,75 +1,75 @@ -# PG\_USER\_MAPPINGS - -PG\_USER\_MAPPINGS视图提供访问关于用户映射的信息的接口。 - -这个视图只是一个[PG\_USER\_MAPPING](PG_USER_MAPPING.md)的可读部分的视图化表现,如果用户无权使用它则查询该表时,有些选项字段会显示为空。普通用户需要授权才可以访问。 - -**表 1** PG\_USER\_MAPPINGS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

umid

-

oid

-

PG_USER_MAPPING.oid

-

用户映射的OID。

-

srvid

-

oid

-

PG_FOREIGN_SERVER.oid

-

包含这个映射的外部服务器的OID。

-

srvname

-

name

-

PG_FOREIGN_SERVER.srvname

-

外部服务器的名称。

-

umuser

-

oid

-

PG_AUTHID.oid

-

被映射的本地角色的OID,如果用户映射是公共的则为0。

-

usename

-

name

-

-

-

被映射的本地用户的名称。

-

umoptions

-

text[ ]

-

-

-

如果当前用户是外部服务器的所有者,则为用户映射指定选项,使用“keyword=value”字符串,否则为null。

-
+# PG\_USER\_MAPPINGS + +PG\_USER\_MAPPINGS视图提供访问关于用户映射的信息的接口。 + +这个视图只是一个[PG\_USER\_MAPPING](PG_USER_MAPPING.md)的可读部分的视图化表现,如果用户无权使用它则查询该表时,有些选项字段会显示为空。普通用户需要授权才可以访问。 + +**表 1** PG\_USER\_MAPPINGS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

umid

+

oid

+

PG_USER_MAPPING.oid

+

用户映射的 OID 。

+

srvid

+

oid

+

PG_FOREIGN_SERVER.oid

+

包含这个映射的外部服务器的 OID 。

+

srvname

+

name

+

PG_FOREIGN_SERVER.srvname

+

外部服务器的名称。

+

umuser

+

oid

+

PG_AUTHID.oid

+

被映射的本地角色的 OID ,如果用户映射是公共的则为 0 。

+

usename

+

name

+

-

+

被映射的本地用户的名称。

+

umoptions

+

text[ ]

+

-

+

如果当前用户是外部服务器的所有者,则为用户映射指定选项,使用“keyword=value”字符串,否则为 null 。

+
diff --git a/content/zh/docs/Developerguide/PG_USER_STATUS.md b/content/zh/docs/Developerguide/PG_USER_STATUS.md index cb51b4642..5935abb52 100644 --- a/content/zh/docs/Developerguide/PG_USER_STATUS.md +++ b/content/zh/docs/Developerguide/PG_USER_STATUS.md @@ -1,76 +1,76 @@ -# PG\_USER\_STATUS - -PG\_USER\_STATUS系统表提供了访问数据库用户的状态。需要有系统管理员权限才可以访问此系统表 - -**表 1** PG\_USER\_STATUS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐含字段,必须明确选择)。

-

roloid

-

oid

-

角色的标识。

-

failcount

-

integer

-

尝试失败次数。

-

locktime

-

timestamp with time zone

-

角色被锁定的时间点。

-

rolstatus

-

smallint

-
角色的状态。
  • 0:正常状态。
  • 1:由于登录失败次数超过阈值被锁定了一定的时间。
  • 2:被管理员锁定。
-
-

permspace

-

bigint

-

角色已经使用的永久表存储空间大小。

-

tempspace

-

bigint

-

角色已经使用的临时表存储空间大小。

-

passwordexpired

-

smallint

-

密码是否失效。

-
  • 0:密码有效。
  • 1:密码失效。
-
- +# PG\_USER\_STATUS + +PG\_USER\_STATUS系统表提供了访问数据库用户的状态。需要有系统管理员权限才可以访问此系统表 + +**表 1** PG\_USER\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐含字段,必须明确选择)。

+

roloid

+

oid

+

角色的标识。

+

failcount

+

integer

+

尝试失败次数。

+

locktime

+

timestamp with time zone

+

角色被锁定的时间点。

+

rolstatus

+

smallint

+
角色的状态。
  • 0:正常状态。
  • 1:由于登录失败次数超过阈值被锁定了一定的时间。
  • 2:被管理员锁定。
+
+

permspace

+

bigint

+

角色已经使用的永久表存储空间大小。

+

tempspace

+

bigint

+

角色已经使用的临时表存储空间大小。

+

passwordexpired

+

smallint

+

密码是否失效。

+
  • 0:密码有效。
  • 1:密码失效。
+
+ diff --git a/content/zh/docs/Developerguide/PG_VARIABLE_INFO.md b/content/zh/docs/Developerguide/PG_VARIABLE_INFO.md index bd68376f6..9a22e067f 100644 --- a/content/zh/docs/Developerguide/PG_VARIABLE_INFO.md +++ b/content/zh/docs/Developerguide/PG_VARIABLE_INFO.md @@ -1,95 +1,95 @@ -# PG\_VARIABLE\_INFO - -PG\_VARIABLE\_INFO视图用于查询openGauss中当前节点的xid、oid的状态。 - -**表 1** PG\_VARIABLE\_INFO字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

node_name

-

text

-

节点名称。

-

next_oid

-

oid

-

该节点下一次生成的oid。

-

next_xid

-

xid

-

该节点下一次生成的事务号。

-

oldest_xid

-

xid

-

该节点最老的事务号。

-

xid_vac_limit

-

xid

-

强制autovacuum的临界点。

-

oldest_xid_db

-

oid

-

该节点datafrozenxid最小的数据库oid。

-

last_extend_csn_logpage

-

xid

-

最后一次扩展csnlog的页面号。

-

start_extend_csn_logpage

-

xid

-

csnlog扩展的起始页面号。

-

next_commit_seqno

-

xid

-

该节点下次生成的csn号。

-

latest_completed_xid

-

xid

-

该节点提交或者回滚后节点上的最新事务号。

-

startup_max_xid

-

xid

-

该节点关机前的最后一个事务号。

-
- +# PG\_VARIABLE\_INFO + +PG\_VARIABLE\_INFO视图用于查询 openGauss 中当前节点的xid、oid的状态。 + +**表 1** PG\_VARIABLE\_INFO字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

节点名称。

+

next_oid

+

oid

+

该节点下一次生成的 oid 。

+

next_xid

+

xid

+

该节点下一次生成的事务号。

+

oldest_xid

+

xid

+

该节点最老的事务号。

+

xid_vac_limit

+

xid

+

强制 autovacuum 的临界点。

+

oldest_xid_db

+

oid

+

该节点 datafrozenxid 最小的数据库 oid 。

+

last_extend_csn_logpage

+

xid

+

最后一次扩展 csnlog 的页面号。

+

start_extend_csn_logpage

+

xid

+

csnlog扩展的起始页面号。

+

next_commit_seqno

+

xid

+

该节点下次生成的 csn 号。

+

latest_completed_xid

+

xid

+

该节点提交或者回滚后节点上的最新事务号。

+

startup_max_xid

+

xid

+

该节点关机前的最后一个事务号。

+
+ diff --git a/content/zh/docs/Developerguide/PG_VIEWS.md b/content/zh/docs/Developerguide/PG_VIEWS.md index 45fd08a85..3c01a6e2a 100644 --- a/content/zh/docs/Developerguide/PG_VIEWS.md +++ b/content/zh/docs/Developerguide/PG_VIEWS.md @@ -1,56 +1,56 @@ -# PG\_VIEWS - -PG\_VIEWS视图提供访问数据库中每个视图的有用信息。 - -**表 1** PG\_VIEWS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

引用

-

描述

-

schemaname

-

name

-

PG_NAMESPACE.nspname

-

包含视图的模式名。

-

viewname

-

name

-

PG_CLASS.relname

-

视图名。

-

viewowner

-

name

-

PG_AUTHID.Erolname

-

视图的所有者。

-

definition

-

text

-

-

-

视图的定义。

-
- +# PG\_VIEWS + +PG\_VIEWS视图提供访问数据库中每个视图的有用信息。 + +**表 1** PG\_VIEWS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

引用

+

描述

+

schemaname

+

name

+

PG_NAMESPACE.nspname

+

包含视图的模式名。

+

viewname

+

name

+

PG_CLASS.relname

+

视图名。

+

viewowner

+

name

+

PG_AUTHID.Erolname

+

视图的所有者。

+

definition

+

text

+

-

+

视图的定义。

+
+ diff --git a/content/zh/docs/Developerguide/PG_WLM_STATISTICS.md b/content/zh/docs/Developerguide/PG_WLM_STATISTICS.md index b6b31ceb5..d23a8e881 100644 --- a/content/zh/docs/Developerguide/PG_WLM_STATISTICS.md +++ b/content/zh/docs/Developerguide/PG_WLM_STATISTICS.md @@ -1,83 +1,83 @@ -# PG\_WLM\_STATISTICS - -PG\_WLM\_STATISTICS视图显示作业结束后或已被处理异常后的负载管理相关信息。查询该视图需要sysadmin权限。 - -**表 1** PG\_WLM\_STATISTICS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

statement

-

text

-

执行了异常处理的语句。

-

block_time

-

bigint

-

语句执行前的阻塞时间。

-

elapsed_time

-

bigint

-

语句的实际执行时间。

-

total_cpu_time

-

bigint

-

语句执行异常处理时数据库实例上CPU使用的总时间。

-

qualification_time

-

bigint

-

语句检查倾斜率的时间周期。

-

cpu_skew_percent

-

integer

-

语句在执行异常处理时数据库实例上CPU使用的倾斜率。

-

control_group

-

text

-

语句执行异常处理时所使用的Cgroups。

-

status

-

text

-
语句执行异常处理后的状态,包括:
  • pending:执行前预备状态。
  • running:执行进行状态。
  • finished:执行正常结束。
  • abort:执行异常终止。
-
-

action

-

text

-
语句执行的异常处理动作,包括:
  • abort:执行终止操作。
  • adjust:执行Cgroups调整操作,目前只有降级操作。
  • finish:正常结束。
-
-
- +# PG\_WLM\_STATISTICS + +PG\_WLM\_STATISTICS视图显示作业结束后或已被处理异常后的负载管理相关信息。查询该视图需要 sysadmin 权限。 + +**表 1** PG\_WLM\_STATISTICS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

statement

+

text

+

执行了异常处理的语句。

+

block_time

+

bigint

+

语句执行前的阻塞时间。

+

elapsed_time

+

bigint

+

语句的实际执行时间。

+

total_cpu_time

+

bigint

+

语句执行异常处理时数据库实例上 CPU 使用的总时间。

+

qualification_time

+

bigint

+

语句检查倾斜率的时间周期。

+

cpu_skew_percent

+

integer

+

语句在执行异常处理时数据库实例上 CPU 使用的倾斜率。

+

control_group

+

text

+

语句执行异常处理时所使用的 Cgroups 。

+

status

+

text

+
语句执行异常处理后的状态,包括:
  • pending:执行前预备状态。
  • running:执行进行状态。
  • finished:执行正常结束。
  • abort:执行异常终止。
+
+

action

+

text

+
语句执行的异常处理动作,包括:
  • abort:执行终止操作。
  • adjust:执行 Cgroups 调整操作,目前只有降级操作。
  • finish:正常结束。
+
+
+ diff --git a/content/zh/docs/Developerguide/PG_WORKLOAD_GROUP.md b/content/zh/docs/Developerguide/PG_WORKLOAD_GROUP.md index aa26c5b8c..0f24f1604 100644 --- a/content/zh/docs/Developerguide/PG_WORKLOAD_GROUP.md +++ b/content/zh/docs/Developerguide/PG_WORKLOAD_GROUP.md @@ -1,46 +1,46 @@ -# PG\_WORKLOAD\_GROUP - -PG\_WORKLOAD\_GROUP系统表提供了数据库负载组的信息。 - -**表 1** PG\_WORKLOAD\_GROUP字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

oid

-

oid

-

行标识符(隐藏属性,必须明确选择)。

-

workload_gpname

-

name

-

负载组名称。

-

respool_oid

-

oid

-

绑定到的资源池的id。

-

act_statements

-

integer

-

负载组内最大的活跃语句数。

-
- +# PG\_WORKLOAD\_GROUP + +PG\_WORKLOAD\_GROUP系统表提供了数据库负载组的信息。 + +**表 1** PG\_WORKLOAD\_GROUP字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

oid

+

oid

+

行标识符(隐藏属性,必须明确选择)。

+

workload_gpname

+

name

+

负载组名称。

+

respool_oid

+

oid

+

绑定到的资源池的 id 。

+

act_statements

+

integer

+

负载组内最大的活跃语句数。

+
+ diff --git "a/content/zh/docs/Developerguide/PL-pgSQL\350\257\255\350\250\200\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/PL-pgSQL\350\257\255\350\250\200\345\207\275\346\225\260.md" index 22f8c9f1b..0c53f78e1 100644 --- "a/content/zh/docs/Developerguide/PL-pgSQL\350\257\255\350\250\200\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/PL-pgSQL\350\257\255\350\250\200\345\207\275\346\225\260.md" @@ -1,20 +1,20 @@ -# PL/pgSQL语言函数 - -PL/pgSQL是一种可载入的过程语言。 - -用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可以创建复杂条件的计算函数并且后面用它们来定义操作符或把它们用于索引表达式。 - -SQL被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个SQL语句必须由数据库服务器单独执行。 - -这意味着客户端应用必须发送每一个查询到数据库服务器、等待它被处理、接收并处理结果、做一些计算,然后发送更多查询给服务器。如果客户端和数据库服务器不在同一台机器上,则会引起进程间通信并且将带来网络负担。 - -通过PL/pgSQL,可以将一整块计算和一系列查询分组在数据库服务器内部,这样就有了一种过程语言的能力并且使SQL更易用,同时能节省客户端/服务器通信开销。 - -- 客户端和服务器之间的额外往返通信被消除。 -- 客户端不需要的中间结果不必被整理或者在服务器和客户端之间传送。 -- 多轮的查询解析可以被避免。 - -PL/pgSQL可以使用SQL中所有的数据类型、操作符和函数。一些常见函数,例如gs_extend_library。 - -应用PL/pgSQL创建函数的语法为[CREATE FUNCTION](CREATE-FUNCTION.md)。PL/pgSQL是一种可载入的过程语言。其应用方法与[存储过程](存储过程.md)相似,只是存储过程无返回值,函数有返回值。 - +# PL/pgSQL语言函数 + +PL/pgSQL是一种可载入的过程语言。 + +用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可以创建复杂条件的计算函数并且后面用它们来定义操作符或把它们用于索引表达式。 + +SQL 被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个 SQL 语句必须由数据库服务器单独执行。 + +这意味着客户端应用必须发送每一个查询到数据库服务器、等待它被处理、接收并处理结果、做一些计算,然后发送更多查询给服务器。如果客户端和数据库服务器不在同一台机器上,则会引起进程间通信并且将带来网络负担。 + +通过PL/pgSQL,可以将一整块计算和一系列查询分组在数据库服务器内部,这样就有了一种过程语言的能力并且使 SQL 更易用,同时能节省客户端/服务器通信开销。 + +- 客户端和服务器之间的额外往返通信被消除。 +- 客户端不需要的中间结果不必被整理或者在服务器和客户端之间传送。 +- 多轮的查询解析可以被避免。 + +PL/pgSQL可以使用 SQL 中所有的数据类型、操作符和函数。一些常见函数,例如 gs_extend_library 。 + +应用PL/pgSQL创建函数的语法为[CREATE FUNCTION](CREATE-FUNCTION.md)。PL/pgSQL是一种可载入的过程语言。其应用方法与[存储过程](存储过程.md)相似,只是存储过程无返回值,函数有返回值。 + diff --git a/content/zh/docs/Developerguide/PLAN_TABLE.md b/content/zh/docs/Developerguide/PLAN_TABLE.md index 7b183db53..76ae3286a 100644 --- a/content/zh/docs/Developerguide/PLAN_TABLE.md +++ b/content/zh/docs/Developerguide/PLAN_TABLE.md @@ -1,88 +1,88 @@ -# PLAN\_TABLE - -PLAN\_TABLE显示用户通过执行EXPLAIN PLAN收集到的计划信息。计划信息的生命周期是session级别,session退出后相应的数据将被清除。同时不同session和不同user间的数据是相互隔离的。 - -**表 1** PLAN\_TABLE字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

statement_id

-

varchar2(30)

-

用户输入的查询标签。

-

plan_id

-

bigint

-

查询标识。

-

id

-

int

-

查询生成的计划中的每一个执行算子的编号。

-

operation

-

varchar2(30)

-

计划中算子的操作描述。

-

options

-

varchar2(255)

-

操作选项。

-

object_name

-

name

-

操作对应的对象名,非查询中使用到的对象别名。来自于用户定义。

-

object_type

-

varchar2(30)

-

对象类型。

-

object_owner

-

name

-

对象所属schema,来自于用户定义。

-

projection

-

varchar2(4000)

-

操作输出的列信息。

-
- ->![](public_sys-resources/icon-note.gif) **说明:** -> ->- object\_type取值范围为[PG\_CLASS](PG_CLASS.md)中定义的relkind类型(TABLE普通表,INDEX索引,SEQUENCE序列,VIEW视图,COMPOSITE TYPE复合类型,TOASTVALUE TOAST表)和计划使用到的rtekind\(SUBQUERY,JOIN,FUNCTION,VALUES,CTE,REMOTE\_QUERY\)。 ->- object\_owner对于RTE来说是计划中使用的对象描述,非用户定义的类型不存在object\_owner。 ->- statement\_id、object\_name、object\_owner、projection字段内容遵循用户定义的大小写存储,其它字段内容采用大写存储。 ->- 支持用户对PLAN\_TABLE进行SELECT和DELETE操作,不支持其它DML操作。 - +# PLAN\_TABLE + +PLAN\_TABLE显示用户通过执行 EXPLAIN PLAN 收集到的计划信息。计划信息的生命周期是 session 级别, session 退出后相应的数据将被清除。同时不同 session 和不同 user 间的数据是相互隔离的。 + +**表 1** PLAN\_TABLE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

statement_id

+

varchar2(30)

+

用户输入的查询标签。

+

plan_id

+

bigint

+

查询标识。

+

id

+

int

+

查询生成的计划中的每一个执行算子的编号。

+

operation

+

varchar2(30)

+

计划中算子的操作描述。

+

options

+

varchar2(255)

+

操作选项。

+

object_name

+

name

+

操作对应的对象名,非查询中使用到的对象别名。来自于用户定义。

+

object_type

+

varchar2(30)

+

对象类型。

+

object_owner

+

name

+

对象所属 schema ,来自于用户定义。

+

projection

+

varchar2(4000)

+

操作输出的列信息。

+
+ +>![](public_sys-resources/icon-note.gif) **说明:** +> +>- object\_type取值范围为[PG\_CLASS](PG_CLASS.md)中定义的 relkind 类型(TABLE普通表, INDEX 索引, SEQUENCE 序列, VIEW 视图, COMPOSITE TYPE 复合类型, TOASTVALUE TOAST 表)和计划使用到的rtekind\(SUBQUERY, JOIN , FUNCTION , VALUES , CTE ,REMOTE\_QUERY\)。 +>- object\_owner对于 RTE 来说是计划中使用的对象描述,非用户定义的类型不存在object\_owner。 +>- statement\_id、object\_name、object\_owner、projection字段内容遵循用户定义的大小写存储,其它字段内容采用大写存储。 +>- 支持用户对PLAN\_TABLE进行 SELECT 和 DELETE 操作,不支持其它 DML 操作。 + diff --git a/content/zh/docs/Developerguide/PLAN_TABLE_DATA.md b/content/zh/docs/Developerguide/PLAN_TABLE_DATA.md index dc5c35199..73cd6300c 100644 --- a/content/zh/docs/Developerguide/PLAN_TABLE_DATA.md +++ b/content/zh/docs/Developerguide/PLAN_TABLE_DATA.md @@ -1,101 +1,101 @@ -# PLAN\_TABLE\_DATA - -PLAN\_TABLE\_DATA存储了用户通过执行EXPLAIN PLAN收集到的计划信息。与PLAN\_TABLE视图不同的是PLAN\_TABLE\_DATA表存储了所有session和user执行EXPLAIN PLAN收集的计划信息。 - -**表 1** PLAN\_TABLE\_DATA字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

session_id

-

text

-

表示插入该条数据的会话,由服务线程启动时间戳和服务线程ID组成。受非空约束限制。

-

user_id

-

oid

-

用户ID,用于标识触发插入该条数据的用户。受非空约束限制。

-

statement_id

-

varchar2(30)

-

用户输入的查询标签。

-

plan_id

-

bigint

-

查询标识。该标识在计划生成阶段自动产生,供内核工程师调试使用。

-

id

-

int

-

计划中的节点编号。

-

operation

-

varchar2(30)

-

操作描述。

-

options

-

varchar2(255)

-

操作选项。

-

object_name

-

name

-

操作对应的对象名,来自于用户定义。

-

object_type

-

varchar2(30)

-

对象类型。

-

object_owner

-

name

-

对象所属schema,来自于用户定义。

-

projection

-

varchar2(4000)

-

操作输出的列信息。

-
- ->![](public_sys-resources/icon-note.gif) **说明:** -> ->- PLAN\_TABLE\_DATA中包含了当前节点所有用户、所有会话的数据,仅管理员有访问权限。普通用户可以通过[PLAN\_TABLE](PLAN_TABLE.md)视图查看属于自己的数据。 ->- PLAN\_TABLE\_DATA中的数据是用户通过执行EXPLAIN PLAN命令后由系统自动插入表中,因此禁止用户手动对数据进行插入或更新,否则会引起表中的数据混乱。需要对表中数据删除时,建议通过[PLAN\_TABLE](PLAN_TABLE.md)视图。 ->- statement\_id、object\_name、object\_owner和projection字段内容遵循用户定义的大小写存储,其它字段内容采用大写存储。 - +# PLAN\_TABLE\_DATA + +PLAN\_TABLE\_DATA存储了用户通过执行 EXPLAIN PLAN 收集到的计划信息。与PLAN\_TABLE视图不同的是PLAN\_TABLE\_DATA表存储了所有 session 和 user 执行 EXPLAIN PLAN 收集的计划信息。 + +**表 1** PLAN\_TABLE\_DATA字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

session_id

+

text

+

表示插入该条数据的会话,由服务线程启动时间戳和服务线程 ID 组成。受非空约束限制。

+

user_id

+

oid

+

用户 ID ,用于标识触发插入该条数据的用户。受非空约束限制。

+

statement_id

+

varchar2(30)

+

用户输入的查询标签。

+

plan_id

+

bigint

+

查询标识。该标识在计划生成阶段自动产生,供内核工程师调试使用。

+

id

+

int

+

计划中的节点编号。

+

operation

+

varchar2(30)

+

操作描述。

+

options

+

varchar2(255)

+

操作选项。

+

object_name

+

name

+

操作对应的对象名,来自于用户定义。

+

object_type

+

varchar2(30)

+

对象类型。

+

object_owner

+

name

+

对象所属 schema ,来自于用户定义。

+

projection

+

varchar2(4000)

+

操作输出的列信息。

+
+ +>![](public_sys-resources/icon-note.gif) **说明:** +> +>- PLAN\_TABLE\_DATA中包含了当前节点所有用户、所有会话的数据,仅管理员有访问权限。普通用户可以通过[PLAN\_TABLE](PLAN_TABLE.md)视图查看属于自己的数据。 +>- PLAN\_TABLE\_DATA中的数据是用户通过执行 EXPLAIN PLAN 命令后由系统自动插入表中,因此禁止用户手动对数据进行插入或更新,否则会引起表中的数据混乱。需要对表中数据删除时,建议通过[PLAN\_TABLE](PLAN_TABLE.md)视图。 +>- statement\_id、object\_name、object\_owner和 projection 字段内容遵循用户定义的大小写存储,其它字段内容采用大写存储。 + diff --git a/content/zh/docs/Developerguide/PLDEBUGGER.md b/content/zh/docs/Developerguide/PLDEBUGGER.md index dee3ec9a7..5d69b1662 100644 --- a/content/zh/docs/Developerguide/PLDEBUGGER.md +++ b/content/zh/docs/Developerguide/PLDEBUGGER.md @@ -1,262 +1,262 @@ -# PLDEBUGGER - -## **工具介绍** - -PLADEBUGGER是一款开源PG存储过程调试工具,经过适配修改,可适用于openGauss。 - -调试的过程需要两个数据库会话,一个用于执行被调试的存储过程(server端),一个通过调试API控制调试过程(client端),两个扮演不同角色的数据库会话,相互协调,进行调试。 - -## **如何获取** - -修改patch、编译脚本以及对应版本源码的获取方式存放在openGauss-third\_party仓库的gpl\_dependency/pldebugger目录下,参照其中的README进行获取、编译、安装此工具。 - -## **接口说明** - -pldebugger提供一系列接口,用于捕获、调试相关的存储过程。接口列表如下。 - -**表 1** 接口说明 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

所属角色

-

接口名称

-

参数

-

功能

-

-

-

pldbg_on

-

-

-

启动一个server,无需显示调用。

-

-

-

pldbg_off

-

-

-

关闭退出pldebugger,会话结束时会自动调用。

-

-

-

pldbg_get_proxy_info

-

-

-

获取版本信息。

-

-

-

pldbg_get_source

-

func oid

-

获取指定oid的存储过程的源代码文本。

-

Server

-

pldbg_oid_debug

-

func oid

-

启动一个server,注册调试指定oid的存储过程。当执行此存储过程的时候,存储过程会被暂停住,并生成一个proxy id。

-

Client

-

pldbg_attach_to_port

-

Proxy id

-

启动一个client,并连接到指定proxy id的server上,同时生成一个session id。

-

Client

-

pldbg_continue

-

Sess id

-

继续执行,直到遇见断点。

-

Client

-

pldbg_abort_target

-

Sess id

-

停止被调试存储过程的执行。

-

Client

-

pldbg_step_into

-

Sess id

-

进入下层调用。

-

Client

-

pldbg_step_over

-

Sess id

-

执行下一句。

-

Client

-

pldbg_set_breakpoint

-

Sess id, func oid, line num

-

在oid存储过程的line num行添加断点。

-

Client

-

pldbg_drop_breakpoint

-

Sess id, func oid, line num

-

删除函数oid在line num行的断点。

-

Client

-

pldbg_get_breakpoints

-

Sess id

-

展示所有断点。

-

Client

-

pldbg_get_stack

-

Sess id

-

展示当前堆栈。

-

Client

-

pldbg_get_variables

-

Sess id

-

展示当前执行中的所有变量。

-
- -## **示例** - -示例1:注册与捕获需要调试的存储过程。 - -``` ---server端,注册并执行需要被调试的存储过程,此处举例存储过程名为compute,其oid为16382。 -openGauss=# select plpgsql_oid_debug(16382); -NOTICE: Pldebugger is started successfully, you are SERVER now. -CONTEXT: referenced column: plpgsql_oid_debug - plpgsql_oid_debug -------------------- - 0 -(1 row) -openGauss=# select * from compute(1); -NOTICE: YOUR PROXY PORT ID IS:0 -CONTEXT: PL/pgSQL function compute(integer) line 3 at assignment - ---client端,根据proxy port id捕获server,并生成一个session id。 -openGauss=# select * from pldbg_attach_to_port(0); -NOTICE: Pldebugger is started successfully, you are CLIENT now. - pldbg_attach_to_port ----------------------- - 1 -(1 row) -``` - -示例2:断点操作,设置、查看、删除断点。 - -``` -openGauss=# select pldbg_set_breakpoint(1, 16382, 6); - pldbg_set_breakpoint ----------------------- - t -(1 row) - -openGauss=# select * from pldbg_get_breakpoints(1); - func | linenumber | targetname --------+------------+------------ - 16382 | 6 | - 16382 | -1 | -(2 rows) - -openGauss=# select * from pldbg_drop_breakpoint(1, 16382, 6); - pldbg_drop_breakpoint ------------------------ - t -(1 row) -``` - -示例3:打印变量、堆栈。 - -``` -openGauss=# select * from pldbg_get_variables(1); - name | varclass | linenumber | isunique | isconst | isnotnull | dtype | value -------------------------------------+----------+------------+----------+---------+-----------+-------+------- - i | A | 0 | t | f | f | 23 | 1 - result_1 | A | 0 | t | f | f | 20 | 2 - result_2 | A | 0 | t | f | f | 20 | NULL - __gsdb_sql_cursor_attri_found__ | L | 0 | t | f | f | 16 | NULL - __gsdb_sql_cursor_attri_notfound__ | L | 0 | t | f | f | 16 | NULL - __gsdb_sql_cursor_attri_isopen__ | L | 0 | t | f | f | 16 | f - __gsdb_sql_cursor_attri_rowcount__ | L | 0 | t | f | f | 23 | NULL -(7 rows) - -openGauss=# select * from pldbg_get_stack(1); - level | targetname | func | linenumber | args --------+-------------------+-------+------------+------ - 0 | compute(integer) | 16382 | 4 | i=1 -(1 row) -``` - -示例4:单步执行、继续执行、停止执行。 - -``` -openGauss=# select pldbg_step_into(1); - pldbg_step_into -------------------------------- - (16382,5,"compute(integer)") -(1 row) - -openGauss=# select pldbg_step_over(1); - pldbg_step_over -------------------------------- - (16382,6,"compute(integer)") -(1 row) - -openGauss=# select * from pldbg_continue(1); - -openGauss=# select * from pldbg_abort_target(1); - pldbg_abort_target --------------------- - t -(1 row) -``` - +# PLDEBUGGER + +## **工具介绍** + +PLADEBUGGER 是一款开源 PG 存储过程调试工具,经过适配修改,可适用于 openGauss 。 + +调试的过程需要两个数据库会话,一个用于执行被调试的存储过程(server端),一个通过调试 API 控制调试过程(client端),两个扮演不同角色的数据库会话,相互协调,进行调试。 + +## **如何获取** + +修改patch、编译脚本以及对应版本源码的获取方式存放在openGauss-third\_party仓库的gpl\_dependency/pldebugger目录下,参照其中的 README 进行获取、编译、安装此工具。 + +## **接口说明** + +pldebugger 提供一系列接口,用于捕获、调试相关的存储过程。接口列表如下。 + +**表 1** 接口说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

所属角色

+

接口名称

+

参数

+

功能

+

-

+

pldbg_on

+

-

+

启动一个 server ,无需显示调用。

+

-

+

pldbg_off

+

-

+

关闭退出 pldebugger ,会话结束时会自动调用。

+

-

+

pldbg_get_proxy_info

+

-

+

获取版本信息。

+

-

+

pldbg_get_source

+

func oid

+

获取指定 oid 的存储过程的源代码文本。

+

Server

+

pldbg_oid_debug

+

func oid

+

启动一个 server ,注册调试指定 oid 的存储过程。当执行此存储过程的时候,存储过程会被暂停住,并生成一个 proxy id 。

+

Client

+

pldbg_attach_to_port

+

Proxy id

+

启动一个 client ,并连接到指定 proxy id 的 server 上,同时生成一个 session id 。

+

Client

+

pldbg_continue

+

Sess id

+

继续执行,直到遇见断点。

+

Client

+

pldbg_abort_target

+

Sess id

+

停止被调试存储过程的执行。

+

Client

+

pldbg_step_into

+

Sess id

+

进入下层调用。

+

Client

+

pldbg_step_over

+

Sess id

+

执行下一句。

+

Client

+

pldbg_set_breakpoint

+

Sess id, func oid , line num

+

在 oid 存储过程的 line num 行添加断点。

+

Client

+

pldbg_drop_breakpoint

+

Sess id, func oid , line num

+

删除函数 oid 在 line num 行的断点。

+

Client

+

pldbg_get_breakpoints

+

Sess id

+

展示所有断点。

+

Client

+

pldbg_get_stack

+

Sess id

+

展示当前堆栈。

+

Client

+

pldbg_get_variables

+

Sess id

+

展示当前执行中的所有变量。

+
+ +## **示例** + +示例1:注册与捕获需要调试的存储过程。 + +``` +--server端,注册并执行需要被调试的存储过程,此处举例存储过程名为 compute ,其 oid 为 16382 。 +openGauss=# select plpgsql_oid_debug(16382); +NOTICE: Pldebugger is started successfully, you are SERVER now. +CONTEXT: referenced column: plpgsql_oid_debug + plpgsql_oid_debug +------------------- + 0 +(1 row) +openGauss=# select * from compute(1); +NOTICE: YOUR PROXY PORT ID IS:0 +CONTEXT: PL/pgSQL function compute(integer) line 3 at assignment + +--client端,根据 proxy port id 捕获 server ,并生成一个 session id 。 +openGauss=# select * from pldbg_attach_to_port(0); +NOTICE: Pldebugger is started successfully, you are CLIENT now. + pldbg_attach_to_port +---------------------- + 1 +(1 row) +``` + +示例2:断点操作,设置、查看、删除断点。 + +``` +openGauss=# select pldbg_set_breakpoint(1, 16382 , 6); + pldbg_set_breakpoint +---------------------- + t +(1 row) + +openGauss=# select * from pldbg_get_breakpoints(1); + func | linenumber | targetname +-------+------------+------------ + 16382 | 6 | + 16382 | -1 | +(2 rows) + +openGauss=# select * from pldbg_drop_breakpoint(1, 16382 , 6); + pldbg_drop_breakpoint +----------------------- + t +(1 row) +``` + +示例3:打印变量、堆栈。 + +``` +openGauss=# select * from pldbg_get_variables(1); + name | varclass | linenumber | isunique | isconst | isnotnull | dtype | value +------------------------------------+----------+------------+----------+---------+-----------+-------+------- + i | A | 0 | t | f | f | 23 | 1 + result_1 | A | 0 | t | f | f | 20 | 2 + result_2 | A | 0 | t | f | f | 20 | NULL + __gsdb_sql_cursor_attri_found__ | L | 0 | t | f | f | 16 | NULL + __gsdb_sql_cursor_attri_notfound__ | L | 0 | t | f | f | 16 | NULL + __gsdb_sql_cursor_attri_isopen__ | L | 0 | t | f | f | 16 | f + __gsdb_sql_cursor_attri_rowcount__ | L | 0 | t | f | f | 23 | NULL +(7 rows) + +openGauss=# select * from pldbg_get_stack(1); + level | targetname | func | linenumber | args +-------+-------------------+-------+------------+------ + 0 | compute(integer) | 16382 | 4 | i=1 +(1 row) +``` + +示例4:单步执行、继续执行、停止执行。 + +``` +openGauss=# select pldbg_step_into(1); + pldbg_step_into +------------------------------- + (16382, 5 ,"compute(integer)") +(1 row) + +openGauss=# select pldbg_step_over(1); + pldbg_step_over +------------------------------- + (16382, 6 ,"compute(integer)") +(1 row) + +openGauss=# select * from pldbg_continue(1); + +openGauss=# select * from pldbg_abort_target(1); + pldbg_abort_target +-------------------- + t +(1 row) +``` + diff --git a/content/zh/docs/Developerguide/PQcancel.md b/content/zh/docs/Developerguide/PQcancel.md index 4bf0cfe08..9dd05a577 100644 --- a/content/zh/docs/Developerguide/PQcancel.md +++ b/content/zh/docs/Developerguide/PQcancel.md @@ -1,54 +1,54 @@ -# PQcancel - -## 功能描述 - -要求服务器放弃处理当前命令。 - -## 原型 - -``` -int PQcancel(PGcancel *cancel, char *errbuf, int errbufsize); -``` - -## 参数 - -**表 1** PQcancel参数 - - - - - - - - - - - - - - - - -

关键字

-

参数说明

-

cancel

-

指向包含cancel信息的对象指针。

-

errbuf

-

出错保存错误信息的buffer。

-

errbufsize

-

保存错误信息的buffer大小。

-
- -## 返回值 - -int:执行结果为1表示成功,0表示失败,失败原因存到errbuf中。 - -## 注意事项 - -- 成功发送并不保证请求将产生任何效果。如果取消有效,当前命令将提前终止并返回错误结果。如果取消失败(例如,因为服务器已经处理完命令),无返回结果。 -- 如果errbuf是信号处理程序中的局部变量,则可以安全地从信号处理程序中调用PQcancel。就PQcancel而言,PGcancel对象是只读的,因此它也可以从一个线程中调用,这个线程与操作PGconn对象线程是分离的。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQcancel + +## 功能描述 + +要求服务器放弃处理当前命令。 + +## 原型 + +``` +int PQcancel(PGcancel *cancel, char *errbuf, int errbufsize); +``` + +## 参数 + +**表 1** PQcancel参数 + + + + + + + + + + + + + + + + +

关键字

+

参数说明

+

cancel

+

指向包含 cancel 信息的对象指针。

+

errbuf

+

出错保存错误信息的 buffer 。

+

errbufsize

+

保存错误信息的 buffer 大小。

+
+ +## 返回值 + +int:执行结果为 1 表示成功, 0 表示失败,失败原因存到 errbuf 中。 + +## 注意事项 + +- 成功发送并不保证请求将产生任何效果。如果取消有效,当前命令将提前终止并返回错误结果。如果取消失败(例如,因为服务器已经处理完命令),无返回结果。 +- 如果 errbuf 是信号处理程序中的局部变量,则可以安全地从信号处理程序中调用 PQcancel 。就 PQcancel 而言, PGcancel 对象是只读的,因此它也可以从一个线程中调用,这个线程与操作 PGconn 对象线程是分离的。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQclear.md b/content/zh/docs/Developerguide/PQclear.md index 8491b61f6..020780c6f 100644 --- a/content/zh/docs/Developerguide/PQclear.md +++ b/content/zh/docs/Developerguide/PQclear.md @@ -1,39 +1,39 @@ -# PQclear - -## 功能描述 - -释放与PGresult相关联的存储空间,任何不再需要的查询结果都应该用PQclear释放掉。 - -## 原型 - -``` -void PQclear(PGresult *res); -``` - -## 参数 - -**表 1** PQclear参数 - - - - - - - - - - -

关键字

-

参数说明

-

res

-

包含查询结果的对象指针。

-
- -## 注意事项 - -PGresult不会自动释放,当提交新的查询时它并不消失,甚至断开连接后也不会。要删除它,必须调用PQclear,否则则会有内存泄漏。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQclear + +## 功能描述 + +释放与 PGresult 相关联的存储空间,任何不再需要的查询结果都应该用 PQclear 释放掉。 + +## 原型 + +``` +void PQclear(PGresult *res); +``` + +## 参数 + +**表 1** PQclear参数 + + + + + + + + + + +

关键字

+

参数说明

+

res

+

包含查询结果的对象指针。

+
+ +## 注意事项 + +PGresult 不会自动释放,当提交新的查询时它并不消失,甚至断开连接后也不会。要删除它,必须调用 PQclear ,否则则会有内存泄漏。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQconnectStart.md b/content/zh/docs/Developerguide/PQconnectStart.md index 0987b9de2..ab238135e 100644 --- a/content/zh/docs/Developerguide/PQconnectStart.md +++ b/content/zh/docs/Developerguide/PQconnectStart.md @@ -1,35 +1,35 @@ -# PQconnectStart - -## 功能描述 - -与数据库服务器建立一次非阻塞的连接。 - -## 原型 - -``` -PGconn* PQconnectStart(const char* conninfo); -``` - -## 参数 - -**表 1** - - - - - - - - - - -

关键字

-

参数说明

-

conninfo

-

连接信息字符串。可以为空,这样将会使用默认参数。也可以包含由空格分隔的一个或多个参数设置,还可以包含一个URI。

-
- -## 返回值 - -PGconn类型指针。 - +# PQconnectStart + +## 功能描述 + +与数据库服务器建立一次非阻塞的连接。 + +## 原型 + +``` +PGconn* PQconnectStart(const char* conninfo); +``` + +## 参数 + +**表 1** + + + + + + + + + + +

关键字

+

参数说明

+

conninfo

+

连接信息字符串。可以为空,这样将会使用默认参数。也可以包含由空格分隔的一个或多个参数设置,还可以包含一个 URI 。

+
+ +## 返回值 + +PGconn 类型指针。 + diff --git a/content/zh/docs/Developerguide/PQconnectdb.md b/content/zh/docs/Developerguide/PQconnectdb.md index d192bc550..c9c74ff76 100644 --- a/content/zh/docs/Developerguide/PQconnectdb.md +++ b/content/zh/docs/Developerguide/PQconnectdb.md @@ -1,44 +1,44 @@ -# PQconnectdb - -## 功能描述 - -与数据库服务器建立一个新的连接。 - -## 原型 - -``` -PGconn *PQconnectdb(const char *conninfo); -``` - -## 参数 - -**表 1** PQconnectdb参数 - - - - - - - - - - -

关键字

-

参数说明

-

conninfo

-

链接字符串,字符串中的字段见链接字符章节。

-
- -## 返回值 - -PGconn \*:指向包含链接的对象指针,内存在函数内部申请。 - -## 注意事项 - -- 这个函数用从一个字符串conninfo来的参数与数据库打开一个新的链接。 -- 传入的参数可以为空,表明使用所有缺省的参数,或者可以包含一个或更多个用空白间隔的参数设置,或者它可以包含一个URL。 - -## 示例 - -请参见[示例](示例-20.md)章节。 - +# PQconnectdb + +## 功能描述 + +与数据库服务器建立一个新的连接。 + +## 原型 + +``` +PGconn *PQconnectdb(const char *conninfo); +``` + +## 参数 + +**表 1** PQconnectdb参数 + + + + + + + + + + +

关键字

+

参数说明

+

conninfo

+

链接字符串,字符串中的字段见链接字符章节。

+
+ +## 返回值 + +PGconn \*:指向包含链接的对象指针,内存在函数内部申请。 + +## 注意事项 + +- 这个函数用从一个字符串 conninfo 来的参数与数据库打开一个新的链接。 +- 传入的参数可以为空,表明使用所有缺省的参数,或者可以包含一个或更多个用空白间隔的参数设置,或者它可以包含一个 URL 。 + +## 示例 + +请参见[示例](示例-20.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQconnectdbParams.md b/content/zh/docs/Developerguide/PQconnectdbParams.md index 80242d1bb..35a8501b9 100644 --- a/content/zh/docs/Developerguide/PQconnectdbParams.md +++ b/content/zh/docs/Developerguide/PQconnectdbParams.md @@ -1,55 +1,55 @@ -# PQconnectdbParams - -## 功能描述 - -与数据库服务器建立一个新的连接。 - -## 原型 - -``` -PGconn *PQconnectdbParams(const char * const *keywords, - const char * const *values, - int expand_dbname); -``` - -## 参数 - -**表 1** PQconnectdbParams参数 - - - - - - - - - - - - - - - - -

关键字

-

参数说明

-

keywords

-

定义为一个字符串的数组,每个都成为一个关键字。

-

values

-

给每个关键字一个值。

-

expand_dbname

-

当expand_dbname是非零的时,允许将dbname的关键字值看做一个连接字符串。只有第一个出现的dbname是这样展开的,任何随后的dbname值作为纯数据库名处理。

-
- -## 返回值 - -PGconn \*:指向包含链接的对象指针,内存在函数内部申请。 - -## 注意事项 - -这个函数用从两个NULL结束的数组中来的参数打开一个新的数据库连接。与PQsetdbLogin不同的是,可以不必更换函数签名(名字)就可以扩展参数集,所以建议应用程序中使用这个函数(或者它的类似的非阻塞变种PQconnectStartParams和PQconnectPoll)。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQconnectdbParams + +## 功能描述 + +与数据库服务器建立一个新的连接。 + +## 原型 + +``` +PGconn *PQconnectdbParams(const char * const *keywords, + const char * const *values, + int expand_dbname); +``` + +## 参数 + +**表 1** PQconnectdbParams参数 + + + + + + + + + + + + + + + + +

关键字

+

参数说明

+

keywords

+

定义为一个字符串的数组,每个都成为一个关键字。

+

values

+

给每个关键字一个值。

+

expand_dbname

+

当 expand_dbname 是非零的时,允许将 dbname 的关键字值看做一个连接字符串。只有第一个出现的 dbname 是这样展开的,任何随后的 dbname 值作为纯数据库名处理。

+
+ +## 返回值 + +PGconn \*:指向包含链接的对象指针,内存在函数内部申请。 + +## 注意事项 + +这个函数用从两个 NULL 结束的数组中来的参数打开一个新的数据库连接。与 PQsetdbLogin 不同的是,可以不必更换函数签名(名字)就可以扩展参数集,所以建议应用程序中使用这个函数(或者它的类似的非阻塞变种 PQconnectStartParams 和PQconnectPoll)。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQconninfoParse.md b/content/zh/docs/Developerguide/PQconninfoParse.md index 5938033a1..a52bb1865 100644 --- a/content/zh/docs/Developerguide/PQconninfoParse.md +++ b/content/zh/docs/Developerguide/PQconninfoParse.md @@ -1,40 +1,40 @@ -# PQconninfoParse - -## 功能描述 - -根据连接,返回已解析的连接选项。 - -## 原型 - -``` -PQconninfoOption* PQconninfoParse(const char* conninfo, char** errmsg); -``` - -## 参数 - -**表 1** - - - - - - - - - - - - - -

关键字

-

参数说明

-

conninfo

-

被传递的字符串。可以为空,这样将会使用默认参数。也可以包含由空格分隔的一个或多个参数设置,还可以包含一个URI。

-

errmsg

-

错误信息。

-
- -## 返回值 - -PQconninfoOption类型指针。 - +# PQconninfoParse + +## 功能描述 + +根据连接,返回已解析的连接选项。 + +## 原型 + +``` +PQconninfoOption* PQconninfoParse(const char* conninfo, char** errmsg); +``` + +## 参数 + +**表 1** + + + + + + + + + + + + + +

关键字

+

参数说明

+

conninfo

+

被传递的字符串。可以为空,这样将会使用默认参数。也可以包含由空格分隔的一个或多个参数设置,还可以包含一个 URI 。

+

errmsg

+

错误信息。

+
+ +## 返回值 + +PQconninfoOption 类型指针。 + diff --git a/content/zh/docs/Developerguide/PQerrorMessage.md b/content/zh/docs/Developerguide/PQerrorMessage.md index 88c860e65..3e24d13e2 100644 --- a/content/zh/docs/Developerguide/PQerrorMessage.md +++ b/content/zh/docs/Developerguide/PQerrorMessage.md @@ -1,39 +1,39 @@ -# PQerrorMessage - -## 功能描述 - -返回连接上的错误信息。 - -## 原型 - -``` -char* PQerrorMessage(const PGconn* conn); -``` - -## 参数 - -**表 1** - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

连接句柄。

-
- -## 返回值 - -char类型指针。 - -## 示例 - -参见:[示例](示例-3.md) - +# PQerrorMessage + +## 功能描述 + +返回连接上的错误信息。 + +## 原型 + +``` +char* PQerrorMessage(const PGconn* conn); +``` + +## 参数 + +**表 1** + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

连接句柄。

+
+ +## 返回值 + +char 类型指针。 + +## 示例 + +参见:[示例](示例-3.md) + diff --git a/content/zh/docs/Developerguide/PQexec.md b/content/zh/docs/Developerguide/PQexec.md index 1dc774b0a..261494434 100644 --- a/content/zh/docs/Developerguide/PQexec.md +++ b/content/zh/docs/Developerguide/PQexec.md @@ -1,51 +1,51 @@ -# PQexec - -## 功能描述 - -向服务器提交一条命令并等待结果。 - -## 原型 - -``` -PGresult *PQexec(PGconn *conn, const char *command); -``` - -## 参数 - -**表 1** PQexec参数 - - - - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

指向包含链接的对象指针。

-

command

-

需要执行的查询字符串。

-
- -## 返回值 - -PGresult:包含查询结果的对象指针。 - -## 注意事项 - -应该调用PQresultStatus函数来检查任何错误的返回值(包括空指针的值,在这种情况下它将返回PGRES\_FATAL\_ERROR)。使用PQerrorMessage获取有关错误的更多信息。 - ->![](public_sys-resources/icon-notice.gif) **须知:** ->命令字符串可以包括多个SQL命令(用分号分隔)。在一个PQexec调用中发送的多个查询是在一个事务里处理的,除非在查询字符串里有明确的BEGIN/COMMIT命令把整个字符串分隔成多个事务。请注意,返回的PGresult结构只描述字符串里执行的最后一条命令的结果,如果有一个命令失败,那么字符串处理的过程就会停止,并且返回的PGresult会描述错误条件。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQexec + +## 功能描述 + +向服务器提交一条命令并等待结果。 + +## 原型 + +``` +PGresult *PQexec(PGconn *conn, const char *command); +``` + +## 参数 + +**表 1** PQexec参数 + + + + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

指向包含链接的对象指针。

+

command

+

需要执行的查询字符串。

+
+ +## 返回值 + +PGresult:包含查询结果的对象指针。 + +## 注意事项 + +应该调用 PQresultStatus 函数来检查任何错误的返回值(包括空指针的值,在这种情况下它将返回PGRES\_FATAL\_ERROR)。使用 PQerrorMessage 获取有关错误的更多信息。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>命令字符串可以包括多个 SQL 命令(用分号分隔)。在一个 PQexec 调用中发送的多个查询是在一个事务里处理的,除非在查询字符串里有明确的BEGIN/COMMIT命令把整个字符串分隔成多个事务。请注意,返回的 PGresult 结构只描述字符串里执行的最后一条命令的结果,如果有一个命令失败,那么字符串处理的过程就会停止,并且返回的 PGresult 会描述错误条件。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQexecParams.md b/content/zh/docs/Developerguide/PQexecParams.md index 6db42bee0..3c51cd92f 100644 --- a/content/zh/docs/Developerguide/PQexecParams.md +++ b/content/zh/docs/Developerguide/PQexecParams.md @@ -1,77 +1,77 @@ -# PQexecParams - -## 功能描述 - -执行一个绑定参数的命令。 - -## 原型 - -``` -PGresult* PQexecParams(PGconn* conn, - const char* command, - int nParams, - const Oid* paramTypes, - const char* const* paramValues, - const int* paramLengths, - const int* paramFormats, - int resultFormat); -``` - -## 参数 - -**表 1** PQexecParams参数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

连接句柄。

-

command

-

SQL文本串。

-

nParams

-

绑定参数的个数。

-

paramTypes

-

绑定参数类型。

-

paramValues

-

绑定参数的值。

-

paramLengths

-

参数长度。

-

paramFormats

-

参数格式(文本或二进制)。

-

resultFormat

-

返回结果格式(文本或二进制)。

-
- -## 返回值 - -PGresult类型指针。 - +# PQexecParams + +## 功能描述 + +执行一个绑定参数的命令。 + +## 原型 + +``` +PGresult* PQexecParams(PGconn* conn, + const char* command, + int nParams , + const Oid* paramTypes, + const char* const* paramValues, + const int* paramLengths, + const int* paramFormats, + int resultFormat); +``` + +## 参数 + +**表 1** PQexecParams参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

连接句柄。

+

command

+

SQL文本串。

+

nParams

+

绑定参数的个数。

+

paramTypes

+

绑定参数类型。

+

paramValues

+

绑定参数的值。

+

paramLengths

+

参数长度。

+

paramFormats

+

参数格式(文本或二进制)。

+

resultFormat

+

返回结果格式(文本或二进制)。

+
+ +## 返回值 + +PGresult 类型指针。 + diff --git a/content/zh/docs/Developerguide/PQexecParamsBatch.md b/content/zh/docs/Developerguide/PQexecParamsBatch.md index 33fd5fc81..df69fe76a 100644 --- a/content/zh/docs/Developerguide/PQexecParamsBatch.md +++ b/content/zh/docs/Developerguide/PQexecParamsBatch.md @@ -1,83 +1,83 @@ -# PQexecParamsBatch - -## 功能描述 - -执行一个批量绑定参数的命令。 - -## 原型 - -``` -PGresult* PQexecParamsBatch(PGconn* conn, - const char* command, - int nParams, - int nBatch, - const Oid* paramTypes, - const char* const* paramValues, - const int* paramLengths, - const int* paramFormats, - int resultFormat); -``` - -## 参数 - -**表 1** PQexecParamsBatch参数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

连接句柄。

-

command

-

SQL文本串。

-

nParams

-

绑定参数的个数。

-

nBatch

-

批量操作数。

-

paramTypes

-

绑定参数类型。

-

paramValues

-

绑定参数的值。

-

paramLengths

-

参数长度。

-

paramFormats

-

参数格式(文本或二进制)。

-

resultFormat

-

返回结果格式(文本或二进制)。

-
- -## 返回值 - -PGresult类型指针。 - +# PQexecParamsBatch + +## 功能描述 + +执行一个批量绑定参数的命令。 + +## 原型 + +``` +PGresult* PQexecParamsBatch(PGconn* conn, + const char* command, + int nParams , + int nBatch , + const Oid* paramTypes, + const char* const* paramValues, + const int* paramLengths, + const int* paramFormats, + int resultFormat); +``` + +## 参数 + +**表 1** PQexecParamsBatch参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

连接句柄。

+

command

+

SQL文本串。

+

nParams

+

绑定参数的个数。

+

nBatch

+

批量操作数。

+

paramTypes

+

绑定参数类型。

+

paramValues

+

绑定参数的值。

+

paramLengths

+

参数长度。

+

paramFormats

+

参数格式(文本或二进制)。

+

resultFormat

+

返回结果格式(文本或二进制)。

+
+ +## 返回值 + +PGresult 类型指针。 + diff --git a/content/zh/docs/Developerguide/PQexecPrepared.md b/content/zh/docs/Developerguide/PQexecPrepared.md index 92bf6f8c7..76d70e8b4 100644 --- a/content/zh/docs/Developerguide/PQexecPrepared.md +++ b/content/zh/docs/Developerguide/PQexecPrepared.md @@ -1,71 +1,71 @@ -# PQexecPrepared - -## 功能描述 - -发送一个请求来用给定参数执行一个预备语句,并且等待结果。 - -## 原型 - -``` -PGresult* PQexecPrepared(PGconn* conn, - const char* stmtName, - int nParams, - const char* const* paramValues, - const int* paramLengths, - const int* paramFormats, - int resultFormat); -``` - -## 参数 - -**表 1** PQexecPrepared参数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

连接句柄。

-

stmtName

-

stmt名称,可以用""或者NULL来引用未命名语句,否则它必须是一个现有预备语句的名字。

-

nParams

-

参数个数。

-

paramValues

-

参数的实际值。

-

paramLengths

-

参数的实际数据长度。

-

paramFormats

-

参数的格式(文本或二进制)。

-

resultFormat

-

结果的格式(文本或二进制)。

-
- -## 返回值 - -PGresult类型指针。 - +# PQexecPrepared + +## 功能描述 + +发送一个请求来用给定参数执行一个预备语句,并且等待结果。 + +## 原型 + +``` +PGresult* PQexecPrepared(PGconn* conn, + const char* stmtName, + int nParams , + const char* const* paramValues, + const int* paramLengths, + const int* paramFormats, + int resultFormat); +``` + +## 参数 + +**表 1** PQexecPrepared参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

连接句柄。

+

stmtName

+

stmt名称,可以用""或者 NULL 来引用未命名语句,否则它必须是一个现有预备语句的名字。

+

nParams

+

参数个数。

+

paramValues

+

参数的实际值。

+

paramLengths

+

参数的实际数据长度。

+

paramFormats

+

参数的格式(文本或二进制)。

+

resultFormat

+

结果的格式(文本或二进制)。

+
+ +## 返回值 + +PGresult 类型指针。 + diff --git a/content/zh/docs/Developerguide/PQexecPreparedBatch.md b/content/zh/docs/Developerguide/PQexecPreparedBatch.md index 076837d8b..21cf30a5f 100644 --- a/content/zh/docs/Developerguide/PQexecPreparedBatch.md +++ b/content/zh/docs/Developerguide/PQexecPreparedBatch.md @@ -1,77 +1,77 @@ -# PQexecPreparedBatch - -## 功能描述 - -发送一个请求来用给定的批量参数执行一个预备语句,并且等待结果。 - -## 原型 - -``` -PGresult* PQexecPreparedBatch(PGconn* conn, - const char* stmtName, - int nParams, - int nBatchCount, - const char* const* paramValues, - const int* paramLengths, - const int* paramFormats, - int resultFormat); -``` - -## 参数 - -**表 1** PQexecPreparedBatch参数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

连接句柄。

-

stmtName

-

stmt名称,可以用""或者NULL来引用未命名语句,否则它必须是一个现有预备语句的名字。

-

nParams

-

参数个数。

-

nBatchCount

-

批量数。

-

paramValues

-

参数的实际值。

-

paramLengths

-

参数的实际数据长度。

-

paramFormats

-

参数的格式(文本或二进制)。

-

resultFormat

-

结果的格式(文本或二进制)。

-
- -## 返回值 - -PGresult类型指针。 - +# PQexecPreparedBatch + +## 功能描述 + +发送一个请求来用给定的批量参数执行一个预备语句,并且等待结果。 + +## 原型 + +``` +PGresult* PQexecPreparedBatch(PGconn* conn, + const char* stmtName, + int nParams , + int nBatchCount , + const char* const* paramValues, + const int* paramLengths, + const int* paramFormats, + int resultFormat); +``` + +## 参数 + +**表 1** PQexecPreparedBatch参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

连接句柄。

+

stmtName

+

stmt名称,可以用""或者 NULL 来引用未命名语句,否则它必须是一个现有预备语句的名字。

+

nParams

+

参数个数。

+

nBatchCount

+

批量数。

+

paramValues

+

参数的实际值。

+

paramLengths

+

参数的实际数据长度。

+

paramFormats

+

参数的格式(文本或二进制)。

+

resultFormat

+

结果的格式(文本或二进制)。

+
+ +## 返回值 + +PGresult 类型指针。 + diff --git a/content/zh/docs/Developerguide/PQfinish.md b/content/zh/docs/Developerguide/PQfinish.md index 6c16dd715..a509a6621 100644 --- a/content/zh/docs/Developerguide/PQfinish.md +++ b/content/zh/docs/Developerguide/PQfinish.md @@ -1,39 +1,39 @@ -# PQfinish - -## 功能描述 - -关闭与服务器的连接,同时释放被PGconn对象使用的存储器。 - -## 原型 - -``` -void PQfinish(PGconn *conn); -``` - -## 参数 - -**表 1** PQfinish参数 - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

指向包含链接的对象指针。

-
- -## 注意事项 - -若PQstatus判断服务器链接尝试失败,应用程序调用PQfinish释放被PGconn对象使用的存储器,PQfinish调用后PGconn指针不可再次使用。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQfinish + +## 功能描述 + +关闭与服务器的连接,同时释放被 PGconn 对象使用的存储器。 + +## 原型 + +``` +void PQfinish(PGconn *conn); +``` + +## 参数 + +**表 1** PQfinish参数 + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

指向包含链接的对象指针。

+
+ +## 注意事项 + +若 PQstatus 判断服务器链接尝试失败,应用程序调用 PQfinish 释放被 PGconn 对象使用的存储器, PQfinish 调用后 PGconn 指针不可再次使用。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQflush.md b/content/zh/docs/Developerguide/PQflush.md index ff8cd5034..8338b90f5 100644 --- a/content/zh/docs/Developerguide/PQflush.md +++ b/content/zh/docs/Developerguide/PQflush.md @@ -1,43 +1,43 @@ -# PQflush - -## 功能描述 - -尝试将任何排队的输出数据刷新到服务器。 - -## 原型 - -``` -int PQflush(PGconn *conn); -``` - -## 参数 - -**表 1** PQflush参数 - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

指向包含链接信息的对象指针

-
- -## 返回值 - -int:如果成功(或者如果发送队列为空),则返回0;如果由于某种原因失败,则返回-1;如果发送队列中的所有数据都发送失败,则返回1。(此情况只有在连接为非阻塞时才能发生),失败原因存到conn-\>error\_message中。 - -## 注意事项 - -在非阻塞连接上发送任何命令或数据之后,调用PQflush。如果返回1,则等待套接字变为读或写就绪。如果为写就绪状态,则再次调用PQflush。如果已经读到,调用PQconsumeInput,然后再次调用PQflush。重复,直到PQflush返回0。(必须检查读就绪,并用PQconsumeInput排出输入,因为服务器可以阻止试图向我们发送数据,例如,通知信息,直到我们读完它才会读我们的数据。)一旦PQflush返回0,就等待套接字准备好,然后按照上面描述读取响应。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQflush + +## 功能描述 + +尝试将任何排队的输出数据刷新到服务器。 + +## 原型 + +``` +int PQflush(PGconn *conn); +``` + +## 参数 + +**表 1** PQflush参数 + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

指向包含链接信息的对象指针

+
+ +## 返回值 + +int:如果成功(或者如果发送队列为空),则返回0;如果由于某种原因失败,则返回-1;如果发送队列中的所有数据都发送失败,则返回 1 。(此情况只有在连接为非阻塞时才能发生),失败原因存到conn-\>error\_message中。 + +## 注意事项 + +在非阻塞连接上发送任何命令或数据之后,调用 PQflush 。如果返回 1 ,则等待套接字变为读或写就绪。如果为写就绪状态,则再次调用 PQflush 。如果已经读到,调用 PQconsumeInput ,然后再次调用 PQflush 。重复,直到 PQflush 返回 0 。(必须检查读就绪,并用 PQconsumeInput 排出输入,因为服务器可以阻止试图向我们发送数据,例如,通知信息,直到我们读完它才会读我们的数据。)一旦 PQflush 返回 0 ,就等待套接字准备好,然后按照上面描述读取响应。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQfname.md b/content/zh/docs/Developerguide/PQfname.md index c30e91037..49f71ef0f 100644 --- a/content/zh/docs/Developerguide/PQfname.md +++ b/content/zh/docs/Developerguide/PQfname.md @@ -1,45 +1,45 @@ -# PQfname - -## 功能描述 - -返回与给定列号相关联的列名。列号从0开始。调用者不应该直接释放该结果。它将在相关的PGresult句柄被传递给PQclear之后被释放。 - -## 原型 - -``` -char *PQfname(const PGresult *res, - int column_number); -``` - -## 参数 - -**表 1** PQfname参数 - - - - - - - - - - - - - -

关键字

-

参数说明

-

res

-

操作结果句柄。

-

column_number

-

列数。

-
- -## 返回值 - -char类型指针。 - -## 示例 - -参见:[示例](示例-3.md) - +# PQfname + +## 功能描述 + +返回与给定列号相关联的列名。列号从 0 开始。调用者不应该直接释放该结果。它将在相关的 PGresult 句柄被传递给 PQclear 之后被释放。 + +## 原型 + +``` +char *PQfname(const PGresult *res, + int column_number); +``` + +## 参数 + +**表 1** PQfname参数 + + + + + + + + + + + + + +

关键字

+

参数说明

+

res

+

操作结果句柄。

+

column_number

+

列数。

+
+ +## 返回值 + +char 类型指针。 + +## 示例 + +参见:[示例](示例-3.md) + diff --git a/content/zh/docs/Developerguide/PQfreeCancel.md b/content/zh/docs/Developerguide/PQfreeCancel.md index 26ab7ecb3..b21391c73 100644 --- a/content/zh/docs/Developerguide/PQfreeCancel.md +++ b/content/zh/docs/Developerguide/PQfreeCancel.md @@ -1,39 +1,39 @@ -# PQfreeCancel - -## 功能描述 - -释放PQgetCancel创建的数据结构。 - -## 原型 - -``` -void PQfreeCancel(PGcancel *cancel); -``` - -## 参数 - -**表 1** PQfreeCancel参数 - - - - - - - - - - -

关键字

-

参数说明

-

cancel

-

指向包含cancel信息的对象指针。

-
- -## 注意事项 - -PQfreeCancel释放一个由前面的PQgetCancel创建的数据对象。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQfreeCancel + +## 功能描述 + +释放 PQgetCancel 创建的数据结构。 + +## 原型 + +``` +void PQfreeCancel(PGcancel *cancel); +``` + +## 参数 + +**表 1** PQfreeCancel参数 + + + + + + + + + + +

关键字

+

参数说明

+

cancel

+

指向包含 cancel 信息的对象指针。

+
+ +## 注意事项 + +PQfreeCancel 释放一个由前面的 PQgetCancel 创建的数据对象。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQgetCancel.md b/content/zh/docs/Developerguide/PQgetCancel.md index 4623e5f8a..0a15fce25 100644 --- a/content/zh/docs/Developerguide/PQgetCancel.md +++ b/content/zh/docs/Developerguide/PQgetCancel.md @@ -1,43 +1,43 @@ -# PQgetCancel - -## 功能描述 - -创建一个数据结构,其中包含取消通过特定数据库连接发出的命令所需的信息。 - -## 原型 - -``` -PGcancel *PQgetCancel(PGconn *conn); -``` - -## 参数 - -**表 1** PQgetCancel参数 - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

指向包含链接信息的对象指针。

-
- -## 返回值 - -PGcancel:指向包含cancel信息对象的指针。 - -## 注意事项 - -PQgetCancel创建一个给定PGconn连接对象的PGcancel对象。如果给定的conn是NULL或无效连接,它将返回NULL。PGcancel对象是一个不透明的结构,应用程序不能直接访问它;它只能传递给PQcancel或PQfreeCancel。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQgetCancel + +## 功能描述 + +创建一个数据结构,其中包含取消通过特定数据库连接发出的命令所需的信息。 + +## 原型 + +``` +PGcancel *PQgetCancel(PGconn *conn); +``` + +## 参数 + +**表 1** PQgetCancel参数 + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

指向包含链接信息的对象指针。

+
+ +## 返回值 + +PGcancel:指向包含 cancel 信息对象的指针。 + +## 注意事项 + +PQgetCancel 创建一个给定 PGconn 连接对象的 PGcancel 对象。如果给定的 conn 是 NULL 或无效连接,它将返回 NULL 。 PGcancel 对象是一个不透明的结构,应用程序不能直接访问它;它只能传递给 PQcancel 或 PQfreeCancel 。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQgetvalue.md b/content/zh/docs/Developerguide/PQgetvalue.md index e0db4555f..62d9dc62c 100644 --- a/content/zh/docs/Developerguide/PQgetvalue.md +++ b/content/zh/docs/Developerguide/PQgetvalue.md @@ -1,55 +1,55 @@ -# PQgetvalue - -## 功能描述 - -返回一个PGresult的一行的单一域值。行和列号从 0 开始。调用者不应该直接释放该结果。它将在相关的PGresult句柄被传递给PQclear之后被释放。 - -## 原型 - -``` -char *PQgetvalue(const PGresult *res, - int row_number, - int column_number); -``` - -## 参数 - -**表 1** PQgetvalue参数 - - - - - - - - - - - - - - - - -

关键字

-

参数说明

-

res

-

操作结果句柄。

-

row_number

-

行数。

-

column_number

-

列数。

-
- -## 返回值 - -对于文本格式的数据,PQgetvalue返回的值是该域值的一种空值结束的字符串表示。 - -对于二进制格式的数据,该值是由该数据类型的typsend和typreceive函数决定的二进制表示。 - -如果该域值为空,则返回一个空串。 - -## 示例 - -参见:[示例](示例-3.md) - +# PQgetvalue + +## 功能描述 + +返回一个 PGresult 的一行的单一域值。行和列号从 0 开始。调用者不应该直接释放该结果。它将在相关的 PGresult 句柄被传递给 PQclear 之后被释放。 + +## 原型 + +``` +char *PQgetvalue(const PGresult *res, + int row_number , + int column_number); +``` + +## 参数 + +**表 1** PQgetvalue参数 + + + + + + + + + + + + + + + + +

关键字

+

参数说明

+

res

+

操作结果句柄。

+

row_number

+

行数。

+

column_number

+

列数。

+
+ +## 返回值 + +对于文本格式的数据, PQgetvalue 返回的值是该域值的一种空值结束的字符串表示。 + +对于二进制格式的数据,该值是由该数据类型的 typsend 和 typreceive 函数决定的二进制表示。 + +如果该域值为空,则返回一个空串。 + +## 示例 + +参见:[示例](示例-3.md) + diff --git a/content/zh/docs/Developerguide/PQnfields.md b/content/zh/docs/Developerguide/PQnfields.md index 95012b00c..6d1239f22 100644 --- a/content/zh/docs/Developerguide/PQnfields.md +++ b/content/zh/docs/Developerguide/PQnfields.md @@ -1,39 +1,39 @@ -# PQnfields - -## 功能描述 - -返回查询结果中每一行的列(域)数。 - -## 原型 - -``` -int PQnfields(const PGresult *res); -``` - -## 参数 - -**表 1** PQnfields参数 - - - - - - - - - - -

关键字

-

参数说明

-

res

-

操作结果句柄。

-
- -## 返回值 - -int类型数字。 - -## 示例 - -参见:[示例](示例-3.md) - +# PQnfields + +## 功能描述 + +返回查询结果中每一行的列(域)数。 + +## 原型 + +``` +int PQnfields(const PGresult *res); +``` + +## 参数 + +**表 1** PQnfields参数 + + + + + + + + + + +

关键字

+

参数说明

+

res

+

操作结果句柄。

+
+ +## 返回值 + +int 类型数字。 + +## 示例 + +参见:[示例](示例-3.md) + diff --git a/content/zh/docs/Developerguide/PQntuples.md b/content/zh/docs/Developerguide/PQntuples.md index 48ea2022c..0f2730a32 100644 --- a/content/zh/docs/Developerguide/PQntuples.md +++ b/content/zh/docs/Developerguide/PQntuples.md @@ -1,39 +1,39 @@ -# PQntuples - -## 功能描述 - -返回查询结果中的行(元组)数。因为它返回一个整数结果,在 32 位操作系统上大型的结果集可能使返回值溢出。 - -## 原型 - -``` -int PQntuples(const PGresult *res); -``` - -## 参数 - -**表 1** PQntuples参数 - - - - - - - - - - -

关键字

-

参数说明

-

res

-

操作结果句柄。

-
- -## 返回值 - -int类型数字。 - -## 示例 - -参见:[示例](示例-3.md) - +# PQntuples + +## 功能描述 + +返回查询结果中的行(元组)数。因为它返回一个整数结果,在 32 位操作系统上大型的结果集可能使返回值溢出。 + +## 原型 + +``` +int PQntuples(const PGresult *res); +``` + +## 参数 + +**表 1** PQntuples参数 + + + + + + + + + + +

关键字

+

参数说明

+

res

+

操作结果句柄。

+
+ +## 返回值 + +int 类型数字。 + +## 示例 + +参见:[示例](示例-3.md) + diff --git a/content/zh/docs/Developerguide/PQprepare.md b/content/zh/docs/Developerguide/PQprepare.md index 1f55de1ae..53bcdd58c 100644 --- a/content/zh/docs/Developerguide/PQprepare.md +++ b/content/zh/docs/Developerguide/PQprepare.md @@ -1,71 +1,71 @@ -# PQprepare - -## 功能描述 - -用给定的参数提交请求,创建一个预备语句,然后等待结束。 - -## 原型 - -``` -PGresult *PQprepare(PGconn *conn, - const char *stmtName, - const char *query, - int nParams, - const Oid *paramTypes); -``` - -## 参数 - -**表 1** PQprepare参数 - - - - - - - - - - - - - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

指向包含链接的对象指针。

-

stmtName

-

需要执行的stmt名称。

-

query

-

需要执行的查询字符串。

-

nParams

-

参数个数。

-

paramTypes

-

声明参数类型的数组。

-
- -## 返回值 - -PGresult:包含查询结果的对象指针。 - -## 注意事项 - -- PQprepare创建一个为PQexecPrepared执行用的预备语句,本特性支持命令的重复执行,不需要每次都进行解析和规划。PQprepare仅在协议3.0及以后的连接中支持,使用协议2.0时,PQprepare将失败。 -- 该函数从查询字符串创建一个名为stmtName的预备语句,该查询字符串必须包含一个SQL命令。stmtName可以是""来创建一个未命名的语句,在这种情况下,任何预先存在的未命名的语句都将被自动替换;否则,如果在当前会话中已经定义了语句名称,则这是一个错误。如果使用了任何参数,那么在查询中将它们称为$1,$2等。nParams是在paramTypes\[\]数组中预先指定类型的参数的数量。(当nParams为0时,数组指针可以为NULL)paramTypes\[\]通过OID指定要分配给参数符号的数据类型。如果paramTypes为NULL ,或者数组中的任何特定元素为零,服务器将按照对非类型化字面字符串的相同方式为参数符号分配数据类型。另外,查询可以使用数字高于nParams的参数符号;还将推断这些符号的数据类型。 - ->![](public_sys-resources/icon-notice.gif) **须知:** ->通过执行SQLPREPARE语句,还可以创建与PQexecPrepared一起使用的预备语句。此外,虽然没有用于删除预备语句的libpq函数,但是SQL DEALLOCATE语句可用于此目的。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQprepare + +## 功能描述 + +用给定的参数提交请求,创建一个预备语句,然后等待结束。 + +## 原型 + +``` +PGresult *PQprepare(PGconn *conn, + const char *stmtName, + const char *query, + int nParams , + const Oid *paramTypes); +``` + +## 参数 + +**表 1** PQprepare参数 + + + + + + + + + + + + + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

指向包含链接的对象指针。

+

stmtName

+

需要执行的stmt名称。

+

query

+

需要执行的查询字符串。

+

nParams

+

参数个数。

+

paramTypes

+

声明参数类型的数组。

+
+ +## 返回值 + +PGresult:包含查询结果的对象指针。 + +## 注意事项 + +- PQprepare创建一个为 PQexecPrepared 执行用的预备语句,本特性支持命令的重复执行,不需要每次都进行解析和规划。 PQprepare 仅在协议3.0及以后的连接中支持,使用协议2.0时, PQprepare 将失败。 +- 该函数从查询字符串创建一个名为 stmtName 的预备语句,该查询字符串必须包含一个 SQL 命令。 stmtName 可以是""来创建一个未命名的语句,在这种情况下,任何预先存在的未命名的语句都将被自动替换;否则,如果在当前会话中已经定义了语句名称,则这是一个错误。如果使用了任何参数,那么在查询中将它们称为$1,$2等。 nParams 是在paramTypes\[\]数组中预先指定类型的参数的数量。(当 nParams 为 0 时,数组指针可以为NULL)paramTypes\[\]通过 OID 指定要分配给参数符号的数据类型。如果 paramTypes 为 NULL ,或者数组中的任何特定元素为零,服务器将按照对非类型化字面字符串的相同方式为参数符号分配数据类型。另外,查询可以使用数字高于 nParams 的参数符号;还将推断这些符号的数据类型。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>通过执行 SQLPREPARE 语句,还可以创建与 PQexecPrepared 一起使用的预备语句。此外,虽然没有用于删除预备语句的 libpq 函数,但是 SQL DEALLOCATE 语句可用于此目的。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQreset.md b/content/zh/docs/Developerguide/PQreset.md index 62058e4db..27dd419e4 100644 --- a/content/zh/docs/Developerguide/PQreset.md +++ b/content/zh/docs/Developerguide/PQreset.md @@ -1,39 +1,39 @@ -# PQreset - -## 功能描述 - -重置与服务器的通讯端口。 - -## 原型 - -``` -void PQreset(PGconn *conn); -``` - -## 参数 - -**表 1** PQreset参数 - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

指向包含链接的对象指针。

-
- -## 注意事项 - -此函数将关闭与服务器的连接并且试图与同一个服务器重建新的连接,并使用所有前面使用过的参数。该函数在链接异常后进行故障恢复时十分有效。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQreset + +## 功能描述 + +重置与服务器的通讯端口。 + +## 原型 + +``` +void PQreset(PGconn *conn); +``` + +## 参数 + +**表 1** PQreset参数 + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

指向包含链接的对象指针。

+
+ +## 注意事项 + +此函数将关闭与服务器的连接并且试图与同一个服务器重建新的连接,并使用所有前面使用过的参数。该函数在链接异常后进行故障恢复时十分有效。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQresultStatus.md b/content/zh/docs/Developerguide/PQresultStatus.md index 343dc6c5b..88a11a0c1 100644 --- a/content/zh/docs/Developerguide/PQresultStatus.md +++ b/content/zh/docs/Developerguide/PQresultStatus.md @@ -1,78 +1,78 @@ -# PQresultStatus - -## 功能描述 - -返回命令的结果状态。 - -## 原型 - -``` -ExecStatusType PQresultStatus(const PGresult *res); -``` - -## 参数 - -**表 1** PQresultStatus参数 - - - - - - - - - - -

关键字

-

参数说明

-

res

-

包含查询结果的对象指针。

-
- -## 返回值 - -PQresultStatus:命令执行结果的枚举,包括: - -``` -PQresultStatus可以返回下面数值之一: -PGRES_EMPTY_QUERY -发送给服务器的字串是空的。 - -PGRES_COMMAND_OK -成功完成一个不返回数据的命令。 - -PGRES_TUPLES_OK -成功执行一个返回数据的查询(比如SELECT或者SHOW)。 - -PGRES_COPY_OUT -(从服务器)Copy Out (拷贝出)数据传输开始。 - -PGRES_COPY_IN -Copy In(拷贝入)(到服务器)数据传输开始。 - -PGRES_BAD_RESPONSE -服务器的响应无法理解。 - -PGRES_NONFATAL_ERROR -发生了一个非致命错误(通知或者警告)。 - -PGRES_FATAL_ERROR -发生了一个致命错误。 - -PGRES_COPY_BOTH -拷贝入/出(到和从服务器)数据传输开始。这个特性当前只用于流复制, 所以这个状态不会在普通应用中发生。 - -PGRES_SINGLE_TUPLE -PGresult包含一个来自当前命令的结果元组。 这个状态只在查询选择了单行模式时发生 -``` - -## 注意事项 - -- 请注意,恰好检索到零行的SELECT命令仍然显示PGRES\_TUPLES\_OK。PGRES\_COMMAND\_OK用于永远不能返回行的命令(插入或更新,不带返回子句等)。PGRES\_EMPTY\_QUERY响应可能表明客户端软件存在bug。 - -- 状态为PGRES\_NONFATAL\_ERROR的结果永远不会由PQexec或其他查询执行函数直接返回,此类结果将传递给通知处理程序。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQresultStatus + +## 功能描述 + +返回命令的结果状态。 + +## 原型 + +``` +ExecStatusType PQresultStatus(const PGresult *res); +``` + +## 参数 + +**表 1** PQresultStatus参数 + + + + + + + + + + +

关键字

+

参数说明

+

res

+

包含查询结果的对象指针。

+
+ +## 返回值 + +PQresultStatus:命令执行结果的枚举,包括: + +``` +PQresultStatus 可以返回下面数值之一: +PGRES_EMPTY_QUERY +发送给服务器的字串是空的。 + +PGRES_COMMAND_OK +成功完成一个不返回数据的命令。 + +PGRES_TUPLES_OK +成功执行一个返回数据的查询(比如 SELECT 或者SHOW)。 + +PGRES_COPY_OUT +(从服务器)Copy Out (拷贝出)数据传输开始。 + +PGRES_COPY_IN +Copy In(拷贝入)(到服务器)数据传输开始。 + +PGRES_BAD_RESPONSE +服务器的响应无法理解。 + +PGRES_NONFATAL_ERROR +发生了一个非致命错误(通知或者警告)。 + +PGRES_FATAL_ERROR +发生了一个致命错误。 + +PGRES_COPY_BOTH +拷贝入/出(到和从服务器)数据传输开始。这个特性当前只用于流复制, 所以这个状态不会在普通应用中发生。 + +PGRES_SINGLE_TUPLE +PGresult 包含一个来自当前命令的结果元组。 这个状态只在查询选择了单行模式时发生 +``` + +## 注意事项 + +- 请注意,恰好检索到零行的 SELECT 命令仍然显示PGRES\_TUPLES\_OK。PGRES\_COMMAND\_OK用于永远不能返回行的命令(插入或更新,不带返回子句等)。PGRES\_EMPTY\_QUERY响应可能表明客户端软件存在 bug 。 + +- 状态为PGRES\_NONFATAL\_ERROR的结果永远不会由 PQexec 或其他查询执行函数直接返回,此类结果将传递给通知处理程序。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQsendPrepare.md b/content/zh/docs/Developerguide/PQsendPrepare.md index 15c8acedb..eb473e6a9 100644 --- a/content/zh/docs/Developerguide/PQsendPrepare.md +++ b/content/zh/docs/Developerguide/PQsendPrepare.md @@ -1,67 +1,67 @@ -# PQsendPrepare - -## 功能描述 - -发送一个请求,创建一个给定参数的预备语句,而不等待结束。 - -## 原型 - -``` -int PQsendPrepare(PGconn *conn, - const char *stmtName, - const char *query, - int nParams, - const Oid *paramTypes); -``` - -## 参数 - -**表 1** PQsendPrepare参数 - - - - - - - - - - - - - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

指向包含链接的对象指针。

-

stmtName

-

需要执行的stmt名称。

-

query

-

需要执行的查询字符串。

-

nParams

-

参数个数。

-

paramTypes

-

声明参数类型的数组。

-
- -## 返回值 - -int:执行结果为1表示成功,0表示失败,失败原因存到conn-\>errorMessage中。 - -## 注意事项 - -该函数为PQprepare的异步版本:如果能够分派请求,则返回1,否则返回0。调用成功后,调用PQgetResult判断服务端是否成功创建了preparedStatement。函数的参数与PQprepare一样处理。与PQprepare一样,它也不能在2.0协议的连接上工作。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQsendPrepare + +## 功能描述 + +发送一个请求,创建一个给定参数的预备语句,而不等待结束。 + +## 原型 + +``` +int PQsendPrepare(PGconn *conn, + const char *stmtName, + const char *query, + int nParams , + const Oid *paramTypes); +``` + +## 参数 + +**表 1** PQsendPrepare参数 + + + + + + + + + + + + + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

指向包含链接的对象指针。

+

stmtName

+

需要执行的stmt名称。

+

query

+

需要执行的查询字符串。

+

nParams

+

参数个数。

+

paramTypes

+

声明参数类型的数组。

+
+ +## 返回值 + +int:执行结果为 1 表示成功, 0 表示失败,失败原因存到conn-\>errorMessage中。 + +## 注意事项 + +该函数为 PQprepare 的异步版本:如果能够分派请求,则返回 1 ,否则返回 0 。调用成功后,调用 PQgetResult 判断服务端是否成功创建了 preparedStatement 。函数的参数与 PQprepare 一样处理。与 PQprepare 一样,它也不能在2.0协议的连接上工作。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQsendQuery.md b/content/zh/docs/Developerguide/PQsendQuery.md index 1c2f284b2..b63ded976 100644 --- a/content/zh/docs/Developerguide/PQsendQuery.md +++ b/content/zh/docs/Developerguide/PQsendQuery.md @@ -1,48 +1,48 @@ -# PQsendQuery - -## 功能描述 - -向服务器提交一个命令而不等待结果。如果查询成功发送则返回1,否则返回0。 - -## 原型 - -``` -int PQsendQuery(PGconn *conn, const char *command); -``` - -## 参数 - -**表 1** PQsendQuery参数 - - - - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

指向包含链接的对象指针。

-

command

-

需要执行的查询字符串。

-
- -## 返回值 - -int:执行结果为1表示成功,0表示失败,失败原因存到conn-\>errorMessage中。 - -## 注意事项 - -在成功调用PQsendQuery后,调用PQgetResult一次或者多次获取结果。PQgetResult返回空指针表示命令已执行完成,否则不能再次调用PQsendQuery(在同一连接上)。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQsendQuery + +## 功能描述 + +向服务器提交一个命令而不等待结果。如果查询成功发送则返回 1 ,否则返回 0 。 + +## 原型 + +``` +int PQsendQuery(PGconn *conn, const char *command); +``` + +## 参数 + +**表 1** PQsendQuery参数 + + + + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

指向包含链接的对象指针。

+

command

+

需要执行的查询字符串。

+
+ +## 返回值 + +int:执行结果为 1 表示成功, 0 表示失败,失败原因存到conn-\>errorMessage中。 + +## 注意事项 + +在成功调用 PQsendQuery 后,调用 PQgetResult 一次或者多次获取结果。 PQgetResult 返回空指针表示命令已执行完成,否则不能再次调用PQsendQuery(在同一连接上)。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQsendQueryParams.md b/content/zh/docs/Developerguide/PQsendQueryParams.md index 79685db93..f60c4e9c2 100644 --- a/content/zh/docs/Developerguide/PQsendQueryParams.md +++ b/content/zh/docs/Developerguide/PQsendQueryParams.md @@ -1,85 +1,85 @@ -# PQsendQueryParams - -## 功能描述 - -给服务器提交一个命令和分隔的参数,而不等待结果。 - -## 原型 - -``` -int PQsendQueryParams(PGconn *conn, - const char *command, - int nParams, - const Oid *paramTypes, - const char * const *paramValues, - const int *paramLengths, - const int *paramFormats, - int resultFormat); -``` - -## 参数 - -**表 1** PQsendQueryParams参数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

指向包含链接的对象指针。

-

command

-

需要执行的查询字符串。

-

nParams

-

参数个数。

-

paramTypes

-

参数类型。

-

paramValues

-

参数值。

-

paramLengths

-

参数长度。

-

paramFormats

-

参数格式。

-

resultFormat

-

结果的格式。

-
- -## 返回值 - -int:执行结果为1表示成功,0表示失败,失败原因存到conn-\>errorMessage中。 - -## 注意事项 - -该函数等效于PQsendQuery,只是查询参数可以和查询字符串分开声明。函数的参数处理和PQexecParams一样,和PQexecParams类似,它不能在2.0版本的协议连接上工作,并且它只允许在查询字符串里出现一条命令。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQsendQueryParams + +## 功能描述 + +给服务器提交一个命令和分隔的参数,而不等待结果。 + +## 原型 + +``` +int PQsendQueryParams(PGconn *conn, + const char *command, + int nParams , + const Oid *paramTypes, + const char * const *paramValues, + const int *paramLengths, + const int *paramFormats, + int resultFormat); +``` + +## 参数 + +**表 1** PQsendQueryParams参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

指向包含链接的对象指针。

+

command

+

需要执行的查询字符串。

+

nParams

+

参数个数。

+

paramTypes

+

参数类型。

+

paramValues

+

参数值。

+

paramLengths

+

参数长度。

+

paramFormats

+

参数格式。

+

resultFormat

+

结果的格式。

+
+ +## 返回值 + +int:执行结果为 1 表示成功, 0 表示失败,失败原因存到conn-\>errorMessage中。 + +## 注意事项 + +该函数等效于 PQsendQuery ,只是查询参数可以和查询字符串分开声明。函数的参数处理和 PQexecParams 一样,和 PQexecParams 类似,它不能在2.0版本的协议连接上工作,并且它只允许在查询字符串里出现一条命令。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQsendQueryPrepared.md b/content/zh/docs/Developerguide/PQsendQueryPrepared.md index 35320927e..ecde36c05 100644 --- a/content/zh/docs/Developerguide/PQsendQueryPrepared.md +++ b/content/zh/docs/Developerguide/PQsendQueryPrepared.md @@ -1,79 +1,79 @@ -# PQsendQueryPrepared - -## 功能描述 - -发送一个请求执行带有给出参数的预备语句,不等待结果。 - -## 原型 - -``` -int PQsendQueryPrepared(PGconn *conn, - const char *stmtName, - int nParams, - const char * const *paramValues, - const int *paramLengths, - const int *paramFormats, - int resultFormat); -``` - -## 参数 - -**表 1** PQsendQueryPrepared参数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

指向包含链接信息的对象指针。

-

stmtName

-

需要执行的stmt名称。

-

nParams

-

参数个数。

-

paramValues

-

参数值。

-

paramLengths

-

参数长度。

-

paramFormats

-

参数格式。

-

resultFormat

-

结果的格式。

-
- -## 返回值 - -int:执行结果为1表示成功,0表示失败,失败原因存到conn-\>error\_message中。 - -## 注意事项 - -该函数类似于PQsendQueryParams,但是要执行的命令是通过命名一个预先准备的语句来指定的,而不是提供一个查询字符串。该函数的参数与PQexecPrepared一样处理。和PQexecPrepared一样,它也不能在2.0协议的连接上工作。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQsendQueryPrepared + +## 功能描述 + +发送一个请求执行带有给出参数的预备语句,不等待结果。 + +## 原型 + +``` +int PQsendQueryPrepared(PGconn *conn, + const char *stmtName, + int nParams , + const char * const *paramValues, + const int *paramLengths, + const int *paramFormats, + int resultFormat); +``` + +## 参数 + +**表 1** PQsendQueryPrepared参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

指向包含链接信息的对象指针。

+

stmtName

+

需要执行的 stmt 名称。

+

nParams

+

参数个数。

+

paramValues

+

参数值。

+

paramLengths

+

参数长度。

+

paramFormats

+

参数格式。

+

resultFormat

+

结果的格式。

+
+ +## 返回值 + +int:执行结果为 1 表示成功, 0 表示失败,失败原因存到conn-\>error\_message中。 + +## 注意事项 + +该函数类似于 PQsendQueryParams ,但是要执行的命令是通过命名一个预先准备的语句来指定的,而不是提供一个查询字符串。该函数的参数与 PQexecPrepared 一样处理。和 PQexecPrepared 一样,它也不能在2.0协议的连接上工作。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQsetdbLogin.md b/content/zh/docs/Developerguide/PQsetdbLogin.md index 1d3dd9aaf..a971abcc3 100644 --- a/content/zh/docs/Developerguide/PQsetdbLogin.md +++ b/content/zh/docs/Developerguide/PQsetdbLogin.md @@ -1,80 +1,80 @@ -# PQsetdbLogin - -## 功能描述 - -与数据库服务器建立一个新的链接。 - -## 原型 - -``` -PGconn *PQsetdbLogin(const char *pghost, - const char *pgport, - const char *pgoptions, - const char *pgtty, - const char *dbName, - const char *login, - const char *pwd); -``` - -## 参数 - -**表 1** PQsetdbLogin参数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

关键字

-

参数说明

-

pghost

-

要链接的主机名,详见链接字符章节描述的host字段。

-

pgport

-

主机服务器的端口号,详见链接字符描述的port字段。

-

pgoptions

-

添加命令行选项以在运行时发送到服务器,详见链接字符描述的options字段。

-

pgtty

-

忽略(以前,这个选项声明服务器日志的输出方向)。

-

dbName

-

要链接的数据库名,详见链接字符描述的dbname字段。

-

login

-

要链接的用户名,详见链接字符章节描述的user字段。

-

pwd

-

如果服务器要求口令认证,所用的口令,详见链接字符描述的password字段。

-
- -## 返回值 - -PGconn \*:指向包含链接的对象指针,内存在函数内部申请。 - -## 注意事项 - -- 该函数为PQconnectdb前身,参数个数固定,未定义参数被调用时使用缺省值,若需要给固定参数设置缺省值,则可赋值NULL或者空字符串。 -- 若dbName中包含“=”或链接URL的有效前缀,则该dbName被看做一个conninfo字符串并传递至PQconnectdb中,其余参数与PQconnectdbParams保持一致。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQsetdbLogin + +## 功能描述 + +与数据库服务器建立一个新的链接。 + +## 原型 + +``` +PGconn *PQsetdbLogin(const char *pghost, + const char *pgport, + const char *pgoptions, + const char *pgtty, + const char *dbName, + const char *login, + const char *pwd); +``` + +## 参数 + +**表 1** PQsetdbLogin参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

关键字

+

参数说明

+

pghost

+

要链接的主机名,详见链接字符章节描述的 host 字段。

+

pgport

+

主机服务器的端口号,详见链接字符描述的 port 字段。

+

pgoptions

+

添加命令行选项以在运行时发送到服务器,详见链接字符描述的 options 字段。

+

pgtty

+

忽略(以前,这个选项声明服务器日志的输出方向)。

+

dbName

+

要链接的数据库名,详见链接字符描述的 dbname 字段。

+

login

+

要链接的用户名,详见链接字符章节描述的 user 字段。

+

pwd

+

如果服务器要求口令认证,所用的口令,详见链接字符描述的 password 字段。

+
+ +## 返回值 + +PGconn \*:指向包含链接的对象指针,内存在函数内部申请。 + +## 注意事项 + +- 该函数为 PQconnectdb 前身,参数个数固定,未定义参数被调用时使用缺省值,若需要给固定参数设置缺省值,则可赋值 NULL 或者空字符串。 +- 若 dbName 中包含“=”或链接 URL 的有效前缀,则该 dbName 被看做一个 conninfo 字符串并传递至 PQconnectdb 中,其余参数与 PQconnectdbParams 保持一致。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PQstatus.md b/content/zh/docs/Developerguide/PQstatus.md index 1088b8294..c8addfff2 100644 --- a/content/zh/docs/Developerguide/PQstatus.md +++ b/content/zh/docs/Developerguide/PQstatus.md @@ -1,69 +1,69 @@ -# PQstatus - -## 功能描述 - -返回链接的状态。 - -## 原型 - -``` -ConnStatusType PQstatus(const PGconn *conn); -``` - -## 参数 - -**表 1** PQstatus参数 - - - - - - - - - - -

关键字

-

参数说明

-

conn

-

指向包含链接的对象指针。

-
- -## 返回值 - -ConnStatusType:链接状态的枚举,包括: - -``` -CONNECTION_STARTED -等待进行连接。 - -CONNECTION_MADE -连接成功;等待发送。 - -CONNECTION_AWAITING_RESPONSE -等待来自服务器的响应。 - -CONNECTION_AUTH_OK -已收到认证;等待后端启动结束。 - -CONNECTION_SSL_STARTUP -协商SSL加密。 - -CONNECTION_SETENV -协商环境驱动的参数设置。 - -CONNECTION_OK -链接正常。 - -CONNECTION_BAD -链接故障。 -``` - -## 注意事项 - -状态可以是多个值之一。但是,在异步连接过程之外只能看到其中两个:CONNECTION\_OK和CONNECTION\_BAD。与数据库的良好连接状态为CONNECTION\_OK。与数据库的连接尝试失败为CONNECTION\_BAD。通常,“正常”状态将一直保持到PQfinish,但通信失败可能会导致状态CONNECTION\_BAD过早变为。在这种情况下,应用程序可以尝试通过调用进行恢复PQreset。 - -## 示例 - -请参见[示例](示例-3.md)章节。 - +# PQstatus + +## 功能描述 + +返回链接的状态。 + +## 原型 + +``` +ConnStatusType PQstatus(const PGconn *conn); +``` + +## 参数 + +**表 1** PQstatus参数 + + + + + + + + + + +

关键字

+

参数说明

+

conn

+

指向包含链接的对象指针。

+
+ +## 返回值 + +ConnStatusType:链接状态的枚举,包括: + +``` +CONNECTION_STARTED +等待进行连接。 + +CONNECTION_MADE +连接成功;等待发送。 + +CONNECTION_AWAITING_RESPONSE +等待来自服务器的响应。 + +CONNECTION_AUTH_OK +已收到认证;等待后端启动结束。 + +CONNECTION_SSL_STARTUP +协商 SSL 加密。 + +CONNECTION_SETENV +协商环境驱动的参数设置。 + +CONNECTION_OK +链接正常。 + +CONNECTION_BAD +链接故障。 +``` + +## 注意事项 + +状态可以是多个值之一。但是,在异步连接过程之外只能看到其中两个:CONNECTION\_OK和CONNECTION\_BAD。与数据库的良好连接状态为CONNECTION\_OK。与数据库的连接尝试失败为CONNECTION\_BAD。通常,“正常”状态将一直保持到 PQfinish ,但通信失败可能会导致状态CONNECTION\_BAD过早变为。在这种情况下,应用程序可以尝试通过调用进行恢复 PQreset 。 + +## 示例 + +请参见[示例](示例-3.md)章节。 + diff --git a/content/zh/docs/Developerguide/PREDICT-BY.md b/content/zh/docs/Developerguide/PREDICT-BY.md index de3e9172d..c3341e6d0 100644 --- a/content/zh/docs/Developerguide/PREDICT-BY.md +++ b/content/zh/docs/Developerguide/PREDICT-BY.md @@ -1,42 +1,42 @@ -# PREDICT BY - -## 功能描述 - -利用完成训练的模型进行推测任务。 - -## 注意事项 - -调用的模型名称在系统表gs\_model\_warehouse中可查看到。 - -## 语法格式 - -``` -PREDICT BY model_name [ (FEATURES attribute [, attribute] +]) ] -``` - -## 参数说明 - -- model\_name - - 用于推测任务的模型名称。 - - 取值范围:字符串,需要符合标识符的命名规则。 - -- attribute - - 推测任务的输入特征列名。 - - 取值范围:字符串,需要符合标识符的命名规则。 - - -## 示例 - -``` -SELECT id, PREDICT BY price_model (FEATURES size,lot), price -FROM houses; -``` - -## 相关链接 - -[CREATE MODEL](CREATE-MODEL.md),[DROP MODEL](DROP-MODEL.md) - +# PREDICT BY + +## 功能描述 + +利用完成训练的模型进行推测任务。 + +## 注意事项 + +调用的模型名称在系统表gs\_model\_warehouse中可查看到。 + +## 语法格式 + +``` +PREDICT BY model_name [ (FEATURES attribute [, attribute] +]) ] +``` + +## 参数说明 + +- model\_name + + 用于推测任务的模型名称。 + + 取值范围:字符串,需要符合标识符的命名规则。 + +- attribute + + 推测任务的输入特征列名。 + + 取值范围:字符串,需要符合标识符的命名规则。 + + +## 示例 + +``` + SELECT id , PREDICT BY price_model (FEATURES size,lot), price +FROM houses; +``` + +## 相关链接 + +[CREATE MODEL](CREATE-MODEL.md),[DROP MODEL](DROP-MODEL.md) + diff --git a/content/zh/docs/Developerguide/PREPARE-TRANSACTION.md b/content/zh/docs/Developerguide/PREPARE-TRANSACTION.md index 2e82c0526..6766ed300 100644 --- a/content/zh/docs/Developerguide/PREPARE-TRANSACTION.md +++ b/content/zh/docs/Developerguide/PREPARE-TRANSACTION.md @@ -1,37 +1,37 @@ -# PREPARE TRANSACTION - -## 功能描述 - -为当前事务做两阶段提交的准备。 - -在命令之后,事务就不再和当前会话关联了;它的状态完全保存在磁盘上,它被提交成功的可能性非常高,即使是在请求提交之前数据库发生了崩溃也如此。 - -一旦准备好了,一个事务就可以在稍后用[COMMIT PREPARED](COMMIT-PREPARED.md)或 [ROLLBACK PREPARED](ROLLBACK-PREPARED.md)命令分别进行提交或者回滚。这些命令可以从任何会话中发出,而不光是最初执行事务的那个会话。 - -从发出命令的会话的角度来看,PREPARE TRANSACTION不同于ROLLBACK:在执行它之后,就不再有活跃的当前事务了,并且预备事务的效果无法见到(在事务提交的时候其效果会再次可见)。 - -如果PREPARE TRANSACTION因为某些原因失败,那么它就会变成一个ROLLBACK,当前事务被取消。 - -## 注意事项 - -- 事务功能由数据库自动维护,不应显式使用事务功能。 -- 在运行PREPARE TRANSACTION命令时,必须在postgresql.conf配置文件中增大max\_prepared\_transactions的数值。建议至少将其设置为等于max\_connections,这样每个会话都可以有一个等待中的预备事务。 - -## 语法格式 - -``` -PREPARE TRANSACTION transaction_id; -``` - -## 参数说明 - -**transaction\_id** - -待提交事务的标识符,用于后面在COMMIT PREPARED或ROLLBACK PREPARED的时候标识这个事务。它不能和任何当前预备事务已经使用了的标识符同名。 - -取值范围:标识符必须以字符串文本的方式书写,并且必须小于200字节长。 - -## 相关链接 - -[COMMIT PREPARED](COMMIT-PREPARED.md),[ROLLBACK PREPARED](ROLLBACK-PREPARED.md) - +# PREPARE TRANSACTION + +## 功能描述 + +为当前事务做两阶段提交的准备。 + +在命令之后,事务就不再和当前会话关联了;它的状态完全保存在磁盘上,它被提交成功的可能性非常高,即使是在请求提交之前数据库发生了崩溃也如此。 + +一旦准备好了,一个事务就可以在稍后用[COMMIT PREPARED](COMMIT-PREPARED.md)或 [ROLLBACK PREPARED](ROLLBACK-PREPARED.md)命令分别进行提交或者回滚。这些命令可以从任何会话中发出,而不光是最初执行事务的那个会话。 + +从发出命令的会话的角度来看, PREPARE TRANSACTION 不同于ROLLBACK:在执行它之后,就不再有活跃的当前事务了,并且预备事务的效果无法见到(在事务提交的时候其效果会再次可见)。 + +如果 PREPARE TRANSACTION 因为某些原因失败,那么它就会变成一个 ROLLBACK ,当前事务被取消。 + +## 注意事项 + +- 事务功能由数据库自动维护,不应显式使用事务功能。 +- 在运行 PREPARE TRANSACTION 命令时,必须在postgresql.conf配置文件中增大max\_prepared\_transactions的数值。建议至少将其设置为等于max\_connections,这样每个会话都可以有一个等待中的预备事务。 + +## 语法格式 + +``` +PREPARE TRANSACTION transaction_id; +``` + +## 参数说明 + +**transaction\_id** + +待提交事务的标识符,用于后面在 COMMIT PREPARED 或 ROLLBACK PREPARED 的时候标识这个事务。它不能和任何当前预备事务已经使用了的标识符同名。 + +取值范围:标识符必须以字符串文本的方式书写,并且必须小于 200 字节长。 + +## 相关链接 + +[COMMIT PREPARED](COMMIT-PREPARED.md),[ROLLBACK PREPARED](ROLLBACK-PREPARED.md) + diff --git a/content/zh/docs/Developerguide/PREPARE.md b/content/zh/docs/Developerguide/PREPARE.md index 27280c99b..80be95dd9 100644 --- a/content/zh/docs/Developerguide/PREPARE.md +++ b/content/zh/docs/Developerguide/PREPARE.md @@ -1,41 +1,41 @@ -# PREPARE - -## 功能描述 - -创建一个预备语句。 - -预备语句是服务端的对象,可以用于优化性能。在执行PREPARE语句的时候,指定的查询被解析、分析、重写。当随后发出EXECUTE语句的时候,预备语句被规划和执行。这种设计避免了重复解析、分析工作。PREPARE语句创建后在整个数据库会话期间一直存在,一旦创建成功,即便是在事务块中创建,事务回滚,PREPARE也不会删除。只能通过显式调用[DEALLOCATE](DEALLOCATE.md)进行删除,会话结束时,PREPARE也会自动删除。 - -## 注意事项 - -无。 - -## 语法格式 - -``` -PREPARE name [ ( data_type [, ...] ) ] AS statement; -``` - -## 参数说明 - -- **name** - - 指定预备语句的名称。它必须在该会话中是唯一的。 - -- **data\_type** - - 参数的数据类型。 - -- **statement** - - 是SELECT INSERT、UPDATE、DELETE、MERGE INTO或VALUES语句之一。 - - -## 示例 - -请参见EXECUTE的[示例](EXECUTE.md#zh-cn_topic_0283137468_zh-cn_topic_0237122161_zh-cn_topic_0059777447_s8a46083a59d940c3aaa2535b2f783645)。 - -## 相关链接 - -[DEALLOCATE](DEALLOCATE.md) - +# PREPARE + +## 功能描述 + +创建一个预备语句。 + +预备语句是服务端的对象,可以用于优化性能。在执行 PREPARE 语句的时候,指定的查询被解析、分析、重写。当随后发出 EXECUTE 语句的时候,预备语句被规划和执行。这种设计避免了重复解析、分析工作。 PREPARE 语句创建后在整个数据库会话期间一直存在,一旦创建成功,即便是在事务块中创建,事务回滚, PREPARE 也不会删除。只能通过显式调用[DEALLOCATE](DEALLOCATE.md)进行删除,会话结束时, PREPARE 也会自动删除。 + +## 注意事项 + +无。 + +## 语法格式 + +``` +PREPARE name [ ( data_type [, ...] ) ] AS statement; +``` + +## 参数说明 + +- **name** + + 指定预备语句的名称。它必须在该会话中是唯一的。 + +- **data\_type** + + 参数的数据类型。 + +- **statement** + + 是SELECT INSERT、UPDATE、DELETE、MERGE INTO或 VALUES 语句之一。 + + +## 示例 + +请参见 EXECUTE 的[示例](EXECUTE.md#zh-cn_topic_0283137468_zh-cn_topic_0237122161_zh-cn_topic_0059777447_s8a46083a59d940c3aaa2535b2f783645)。 + +## 相关链接 + +[DEALLOCATE](DEALLOCATE.md) + diff --git a/content/zh/docs/Developerguide/PURGE.md b/content/zh/docs/Developerguide/PURGE.md index dd155318c..9c4e490fd 100644 --- a/content/zh/docs/Developerguide/PURGE.md +++ b/content/zh/docs/Developerguide/PURGE.md @@ -1,111 +1,111 @@ -# PURGE - -## 功能描述 - -使用PURGE语句可以实现如下功能: - -- 从回收站中清理表或索引,并释放对象相关的全部空间。 -- 清理回收站。 -- 清理回收站中指定表空间的对象。 - -## 注意事项 - -- 清除(PURGE)操作支持:表(PURGE TABLE)、索引(PURGE INDEX)、回收站(PURGE RECYCLEBIN)、表空间(PURGE TABLESPACE)。 - - -- 执行PURGE操作的权限要求如下: - - - PURGE TABLE:用户必须是表的所有者,且用户必须拥有表所在模式的USAGE权限,系统管理员默认拥有此权限。 - - PURGE INDEX:用户必须是索引的所有者,用户必须拥有索引所在模式的USAGE权限,系统管理员默认拥有此权限。 - - PURGE TABLESPACE:用户必须是表空间的所有者,用户必须拥有对象所在模式的USAGE权限,且普通用户只允许删除回收站中指定表空间下所有者为自己的表,系统管理员默认可以删除回收站中指定表空间下所有的对象。 - - PURGE RECYCLEBIN:普通用户只能清理回收站中当前用户拥有的对象,且用户必须拥有对象所在模式的USAGE权限,系统管理员默认可以清理回收站所有对象。 - - -## 语法格式 - -``` -PURGE { TABLE [schema_name.]table_name - | INDEX index_name - | RECYCLEBIN - } -``` - -## 参数说明 - -- _\[ __schema\_name.__ \]_ - - 模式名。 - - -- TABLE _\[ schema\_name. \] table\_name_ - - 清空回收站中指定的表。 - - -- INDEX _index\_name_ - - 清空回收站中指定的索引。 - - -- RECYCLEBIN - - 清空回收站中的对象。 - - -## 示例 - -``` --- 创建表空间reason_table_space -openGauss=# CREATE TABLESPACE REASON_TABLE_SPACE1 owner tpcds RELATIVE location 'tablespace/tsp_reason1'; --- 在表空间创建表tpcds.reason_t1 -openGauss=# CREATE TABLE tpcds.reason_t1 - ( - r_reason_sk integer, - r_reason_id character(16), - r_reason_desc character(100) - ) tablespace reason_table_space1; --- 在表空间创建表tpcds.reason_t2 -openGauss=# CREATE TABLE tpcds.reason_t2 - ( - r_reason_sk integer, - r_reason_id character(16), - r_reason_desc character(100) - ) tablespace reason_table_space1; --- 在表空间创建表tpcds.reason_t3 -openGauss=# CREATE TABLE tpcds.reason_t3 - ( - r_reason_sk integer, - r_reason_id character(16), - r_reason_desc character(100) - ) tablespace reason_table_space1; -openGauss=# CREATE TABLE tpcds.reason_t4 - ( - r_reason_sk integer, - r_reason_id character(16), - r_reason_desc character(100) - ); -openGauss=# DROP TABLE tpcds.reason_t1; -openGauss=# DROP TABLE tpcds.reason_t2; -openGauss=# DROP TABLE tpcds.reason_t3; -openGauss=# DROP TABLE tpcds.reason_t4; ---查看回收站 -openGauss=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN; - rcyname | rcyoriginname | rcytablespace ------------------------+---------------+--------------- - BIN$16409$2CEE988==$0 | reason_t1 | 16408 - BIN$16412$2CF2188==$0 | reason_t2 | 16408 - BIN$16415$2CF2EC8==$0 | reason_t3 | 16408 - BIN$16418$2CF3EC8==$0 | reason_t4 | 0 -(4 rows) ---清空表 -openGauss=# PURGE TABLE tpcds.reason_t1; -openGauss=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN; - rcyname | rcyoriginname | rcytablespace ------------------------+---------------+--------------- - BIN$16412$2CF2188==$0 | reason_t2 | 16408 - BIN$16415$2CF2EC8==$0 | reason_t3 | 16408 - BIN$16418$2CF3EC8==$0 | reason_t4 | 0 -(3 rows) - -``` - +# PURGE + +## 功能描述 + +使用 PURGE 语句可以实现如下功能: + +- 从回收站中清理表或索引,并释放对象相关的全部空间。 +- 清理回收站。 +- 清理回收站中指定表空间的对象。 + +## 注意事项 + +- 清除(PURGE)操作支持:表(PURGE TABLE)、索引(PURGE INDEX)、回收站(PURGE RECYCLEBIN)、表空间(PURGE TABLESPACE)。 + + +- 执行 PURGE 操作的权限要求如下: + + - PURGE TABLE:用户必须是表的所有者,且用户必须拥有表所在模式的 USAGE 权限,系统管理员默认拥有此权限。 + - PURGE INDEX:用户必须是索引的所有者,用户必须拥有索引所在模式的 USAGE 权限,系统管理员默认拥有此权限。 + - PURGE TABLESPACE:用户必须是表空间的所有者,用户必须拥有对象所在模式的 USAGE 权限,且普通用户只允许删除回收站中指定表空间下所有者为自己的表,系统管理员默认可以删除回收站中指定表空间下所有的对象。 + - PURGE RECYCLEBIN:普通用户只能清理回收站中当前用户拥有的对象,且用户必须拥有对象所在模式的 USAGE 权限,系统管理员默认可以清理回收站所有对象。 + + +## 语法格式 + +``` +PURGE { TABLE [schema_name.]table_name + | INDEX index_name + | RECYCLEBIN + } +``` + +## 参数说明 + +- _\[ __schema\_name.__ \]_ + + 模式名。 + + +- TABLE _\[ schema\_name. \] table\_name_ + + 清空回收站中指定的表。 + + +- INDEX _index\_name_ + + 清空回收站中指定的索引。 + + +- RECYCLEBIN + + 清空回收站中的对象。 + + +## 示例 + +``` +-- 创建表空间reason_table_space +openGauss=# CREATE TABLESPACE REASON_TABLE_SPACE1 owner tpcds RELATIVE location 'tablespace/tsp_reason1'; +-- 在表空间创建表tpcds.reason_t1 +openGauss=# CREATE TABLE tpcds.reason_t1 + ( + r_reason_sk integer , + r_reason_id character(16), + r_reason_desc character(100) + ) tablespace reason_table_space1; +-- 在表空间创建表tpcds.reason_t2 +openGauss=# CREATE TABLE tpcds.reason_t2 + ( + r_reason_sk integer , + r_reason_id character(16), + r_reason_desc character(100) + ) tablespace reason_table_space1; +-- 在表空间创建表tpcds.reason_t3 +openGauss=# CREATE TABLE tpcds.reason_t3 + ( + r_reason_sk integer , + r_reason_id character(16), + r_reason_desc character(100) + ) tablespace reason_table_space1; +openGauss=# CREATE TABLE tpcds.reason_t4 + ( + r_reason_sk integer , + r_reason_id character(16), + r_reason_desc character(100) + ); +openGauss=# DROP TABLE tpcds.reason_t1; +openGauss=# DROP TABLE tpcds.reason_t2; +openGauss=# DROP TABLE tpcds.reason_t3; +openGauss=# DROP TABLE tpcds.reason_t4; +--查看回收站 +openGauss=# SELECT rcyname, rcyoriginname ,rcytablespace FROM GS_RECYCLEBIN; + rcyname | rcyoriginname | rcytablespace +-----------------------+---------------+--------------- + BIN$16409$2CEE988==$0 | reason_t1 | 16408 + BIN$16412$2CF2188==$0 | reason_t2 | 16408 + BIN$16415$2CF2EC8==$0 | reason_t3 | 16408 + BIN$16418$2CF3EC8==$0 | reason_t4 | 0 +(4 rows) +--清空表 +openGauss=# PURGE TABLE tpcds.reason_t1; +openGauss=# SELECT rcyname, rcyoriginname ,rcytablespace FROM GS_RECYCLEBIN; + rcyname | rcyoriginname | rcytablespace +-----------------------+---------------+--------------- + BIN$16412$2CF2188==$0 | reason_t2 | 16408 + BIN$16415$2CF2EC8==$0 | reason_t3 | 16408 + BIN$16418$2CF3EC8==$0 | reason_t4 | 0 +(3 rows) + +``` + diff --git "a/content/zh/docs/Developerguide/Plan-Hint\350\260\203\344\274\230\346\246\202\350\277\260.md" "b/content/zh/docs/Developerguide/Plan-Hint\350\260\203\344\274\230\346\246\202\350\277\260.md" index a9c390a0c..b502293e8 100644 --- "a/content/zh/docs/Developerguide/Plan-Hint\350\260\203\344\274\230\346\246\202\350\277\260.md" +++ "b/content/zh/docs/Developerguide/Plan-Hint\350\260\203\344\274\230\346\246\202\350\277\260.md" @@ -1,226 +1,264 @@ -# Plan Hint调优概述 - -Plan Hint为用户提供了直接影响执行计划生成的手段,用户可以通过指定join顺序、join、scan方法、指定结果行数等多个手段来进行执行计划的调优,以提升查询的性能。 - -## 功能描述 - -Plan Hint仅支持在SELECT关键字后通过如下形式指定: - -``` -/*+ */ -``` - -可以同时指定多个hint,之间使用空格分隔。hint只能hint当前层的计划,对于子查询计划的hint,需要在子查询的select关键字后指定hint。 - -例如: - -``` -select /*+ */ * from t1, (select /*+ */ from t2) where 1=1; -``` - -其中为外层查询的hint,为内层子查询的hint。 - ->![](public_sys-resources/icon-notice.gif) **须知:** ->如果在视图定义(CREATE VIEW)时指定hint,则在该视图每次被应用时会使用该hint。 ->当使用random plan功能(参数plan\_mode\_seed不为0)时,查询指定的plan hint不会被使用。 - -## 支持范围 - -当前版本Plan Hint支持的范围如下,后续版本会进行增强。 - -- 指定Join顺序的Hint - leading hint -- 指定Join方式的Hint,仅支持除semi/anti join、unique plan之外的常用hint。 -- 指定结果集行数的Hint -- 指定Scan方式的Hint,仅支持常用的tablescan、indexscan和indexonlyscan的hint。 -- 指定子链接块名的Hint - -## 注意事项 - -不支持Agg、Sort、Setop和Subplan的hint。 - -## 示例 - -本章节使用同一个语句进行示例,便于Plan Hint支持的各方法作对比,示例语句及不带hint的原计划如下所示: - -``` -create table store -( - s_store_sk integer not null, - s_store_id char(16) not null, - s_rec_start_date date , - s_rec_end_date date , - s_closed_date_sk integer , - s_store_name varchar(50) , - s_number_employees integer , - s_floor_space integer , - s_hours char(20) , - s_manager varchar(40) , - s_market_id integer , - s_geography_class varchar(100) , - s_market_desc varchar(100) , - s_market_manager varchar(40) , - s_division_id integer , - s_division_name varchar(50) , - s_company_id integer , - s_company_name varchar(50) , - s_street_number varchar(10) , - s_street_name varchar(60) , - s_street_type char(15) , - s_suite_number char(10) , - s_city varchar(60) , - s_county varchar(30) , - s_state char(2) , - s_zip char(10) , - s_country varchar(20) , - s_gmt_offset decimal(5,2) , - s_tax_precentage decimal(5,2) , - primary key (s_store_sk) -); -create table store_sales -( - ss_sold_date_sk integer , - ss_sold_time_sk integer , - ss_item_sk integer not null, - ss_customer_sk integer , - ss_cdemo_sk integer , - ss_hdemo_sk integer , - ss_addr_sk integer , - ss_store_sk integer , - ss_promo_sk integer , - ss_ticket_number integer not null, - ss_quantity integer , - ss_wholesale_cost decimal(7,2) , - ss_list_price decimal(7,2) , - ss_sales_price decimal(7,2) , - ss_ext_discount_amt decimal(7,2) , - ss_ext_sales_price decimal(7,2) , - ss_ext_wholesale_cost decimal(7,2) , - ss_ext_list_price decimal(7,2) , - ss_ext_tax decimal(7,2) , - ss_coupon_amt decimal(7,2) , - ss_net_paid decimal(7,2) , - ss_net_paid_inc_tax decimal(7,2) , - ss_net_profit decimal(7,2) , - primary key (ss_item_sk, ss_ticket_number) -); -create table store_returns -( - sr_returned_date_sk integer , - sr_return_time_sk integer , - sr_item_sk integer not null, - sr_customer_sk integer , - sr_cdemo_sk integer , - sr_hdemo_sk integer , - sr_addr_sk integer , - sr_store_sk integer , - sr_reason_sk integer , - sr_ticket_number integer not null, - sr_return_quantity integer , - sr_return_amt decimal(7,2) , - sr_return_tax decimal(7,2) , - sr_return_amt_inc_tax decimal(7,2) , - sr_fee decimal(7,2) , - sr_return_ship_cost decimal(7,2) , - sr_refunded_cash decimal(7,2) , - sr_reversed_charge decimal(7,2) , - sr_store_credit decimal(7,2) , - sr_net_loss decimal(7,2) , - primary key (sr_item_sk, sr_ticket_number) -); -create table customer -( - c_customer_sk integer not null, - c_customer_id char(16) not null, - c_current_cdemo_sk integer , - c_current_hdemo_sk integer , - c_current_addr_sk integer , - c_first_shipto_date_sk integer , - c_first_sales_date_sk integer , - c_salutation char(10) , - c_first_name char(20) , - c_last_name char(30) , - c_preferred_cust_flag char(1) , - c_birth_day integer , - c_birth_month integer , - c_birth_year integer , - c_birth_country varchar(20) , - c_login char(13) , - c_email_address char(50) , - c_last_review_date char(10) , - primary key (c_customer_sk) -); -create table promotion -( - p_promo_sk integer not null, - p_promo_id char(16) not null, - p_start_date_sk integer , - p_end_date_sk integer , - p_item_sk integer , - p_cost decimal(15,2) , - p_response_target integer , - p_promo_name char(50) , - p_channel_dmail char(1) , - p_channel_email char(1) , - p_channel_catalog char(1) , - p_channel_tv char(1) , - p_channel_radio char(1) , - p_channel_press char(1) , - p_channel_event char(1) , - p_channel_demo char(1) , - p_channel_details varchar(100) , - p_purpose char(15) , - p_discount_active char(1) , - primary key (p_promo_sk) -); -create table customer_address -( - ca_address_sk integer not null, - ca_address_id char(16) not null, - ca_street_number char(10) , - ca_street_name varchar(60) , - ca_street_type char(15) , - ca_suite_number char(10) , - ca_city varchar(60) , - ca_county varchar(30) , - ca_state char(2) , - ca_zip char(10) , - ca_country varchar(20) , - ca_gmt_offset decimal(5,2) , - ca_location_type char(20) , - primary key (ca_address_sk) -); -create table item -( - i_item_sk integer not null, - i_item_id char(16) not null, - i_rec_start_date date , - i_rec_end_date date , - i_item_desc varchar(200) , - i_current_price decimal(7,2) , - i_wholesale_cost decimal(7,2) , - i_brand_id integer , - i_brand char(50) , - i_class_id integer , - i_class char(50) , - i_category_id integer , - i_category char(50) , - i_manufact_id integer , - i_manufact char(50) , - i_size char(20) , - i_formulation char(20) , - i_color char(20) , - i_units char(10) , - i_container char(10) , - i_manager_id integer , - i_product_name char(50) , - primary key (i_item_sk) -); -explain -select i_product_name product_name -,i_item_sk item_sk -,s_store_name store_name -,s_zip store_zip -,ad2.ca_street_number c_street_number +# Plan Hint调优概述 + +Plan Hint 为用户提供了直接影响执行计划生成的手段,用户可以通过指定 join 顺序、join、scan方法、指定结果行数等多个手段来进行执行计划的调优,以提升查询的性能。 + +## 功能描述 + +Plan Hint 仅支持在 SELECT 关键字后通过如下形式指定: + +``` +/*+ */ +``` + +可以同时指定多个 hint ,之间使用空格分隔。 hint 只能 hint 当前层的计划,对于子查询计划的 hint ,需要在子查询的 select 关键字后指定 hint 。 + +例如: + +``` +select /*+ */ * from t1, (select /*+ */ from t2) where 1=1; +``` + +其中为外层查询的 hint ,为内层子查询的 hint 。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>如果在视图定义(CREATE VIEW)时指定 hint ,则在该视图每次被应用时会使用该 hint 。 +>当使用 random plan 功能(参数plan\_mode\_seed不为0)时,查询指定的 plan hint 不会被使用。 + +## 支持范围 + +当前版本 Plan Hint 支持的范围如下,后续版本会进行增强。 + +- 指定 Join 顺序的Hint - leading hint +- 指定 Join 方式的 Hint ,仅支持除semi/anti join、unique plan之外的常用 hint 。 +- 指定结果集行数的Hint +- 指定 Scan 方式的 Hint ,仅支持常用的tablescan、indexscan和 indexonlyscan 的 hint 。 +- 指定子链接块名的Hint + +## 注意事项 + +不支持Agg、Sort、Setop和 Subplan 的 hint 。 + +## 示例 + +本章节使用同一个语句进行示例,便于 Plan Hint 支持的各方法作对比,示例语句及不带 hint 的原计划如下所示: + +``` +create table store +( + s_store_sk integer not null , + s_store_id char(16) not null, + s_rec_start_date date , + s_rec_end_date date , + s_closed_date_sk integer , + s_store_name varchar(50) , + s_number_employees integer , + s_floor_space integer , + s_hours char(20) , + s_manager varchar(40) , + s_market_id integer , + s_geography_class varchar(100) , + s_market_desc varchar(100) , + s_market_manager varchar(40) , + s_division_id integer , + s_division_name varchar(50) , + s_company_id integer , + s_company_name varchar(50) , + s_street_number varchar(10) , + s_street_name varchar(60) , + s_street_type char(15) , + s_suite_number char(10) , + s_city varchar(60) , + s_county varchar(30) , + s_state char(2) , + s_zip char(10) , + s_country varchar(20) , + s_gmt_offset decimal(5,2) , + s_tax_precentage decimal(5,2) , + primary key (s_store_sk) +); +create table store_sales +( + ss_sold_date_sk integer , + ss_sold_time_sk integer , + ss_item_sk integer not null , + ss_customer_sk integer , + ss_cdemo_sk integer , + ss_hdemo_sk integer , + ss_addr_sk integer , + ss_store_sk integer , + ss_promo_sk integer , + ss_ticket_number integer not null , + ss_quantity integer , + ss_wholesale_cost decimal(7,2) , + ss_list_price decimal(7,2) , + ss_sales_price decimal(7,2) , + ss_ext_discount_amt decimal(7,2) , + ss_ext_sales_price decimal(7,2) , + ss_ext_wholesale_cost decimal(7,2) , + ss_ext_list_price decimal(7,2) , + ss_ext_tax decimal(7,2) , + ss_coupon_amt decimal(7,2) , + ss_net_paid decimal(7,2) , + ss_net_paid_inc_tax decimal(7,2) , + ss_net_profit decimal(7,2) , + primary key (ss_item_sk, ss_ticket_number) +); +create table store_returns +( + sr_returned_date_sk integer , + sr_return_time_sk integer , + sr_item_sk integer not null , + sr_customer_sk integer , + sr_cdemo_sk integer , + sr_hdemo_sk integer , + sr_addr_sk integer , + sr_store_sk integer , + sr_reason_sk integer , + sr_ticket_number integer not null , + sr_return_quantity integer , + sr_return_amt decimal(7,2) , + sr_return_tax decimal(7,2) , + sr_return_amt_inc_tax decimal(7,2) , + sr_fee decimal(7,2) , + sr_return_ship_cost decimal(7,2) , + sr_refunded_cash decimal(7,2) , + sr_reversed_charge decimal(7,2) , + sr_store_credit decimal(7,2) , + sr_net_loss decimal(7,2) , + primary key (sr_item_sk, sr_ticket_number) +); +create table customer +( + c_customer_sk integer not null , + c_customer_id char(16) not null, + c_current_cdemo_sk integer , + c_current_hdemo_sk integer , + c_current_addr_sk integer , + c_first_shipto_date_sk integer , + c_first_sales_date_sk integer , + c_salutation char(10) , + c_first_name char(20) , + c_last_name char(30) , + c_preferred_cust_flag char(1) , + c_birth_day integer , + c_birth_month integer , + c_birth_year integer , + c_birth_country varchar(20) , + c_login char(13) , + c_email_address char(50) , + c_last_review_date char(10) , + primary key (c_customer_sk) +); +create table promotion +( + p_promo_sk integer not null , + p_promo_id char(16) not null, + p_start_date_sk integer , + p_end_date_sk integer , + p_item_sk integer , + p_cost decimal(15,2) , + p_response_target integer , + p_promo_name char(50) , + p_channel_dmail char(1) , + p_channel_email char(1) , + p_channel_catalog char(1) , + p_channel_tv char(1) , + p_channel_radio char(1) , + p_channel_press char(1) , + p_channel_event char(1) , + p_channel_demo char(1) , + p_channel_details varchar(100) , + p_purpose char(15) , + p_discount_active char(1) , + primary key (p_promo_sk) +); +create table customer_address +( + ca_address_sk integer not null , + ca_address_id char(16) not null, + ca_street_number char(10) , + ca_street_name varchar(60) , + ca_street_type char(15) , + ca_suite_number char(10) , + ca_city varchar(60) , + ca_county varchar(30) , + ca_state char(2) , + ca_zip char(10) , + ca_country varchar(20) , + ca_gmt_offset decimal(5,2) , + ca_location_type char(20) , + primary key (ca_address_sk) +); +create table item +( + i_item_sk integer not null , + i_item_id char(16) not null, + i_rec_start_date date , + i_rec_end_date date , + i_item_desc varchar(200) , + i_current_price decimal(7,2) , + i_wholesale_cost decimal(7,2) , + i_brand_id integer , + i_brand char(50) , + i_class_id integer , + i_class char(50) , + i_category_id integer , + i_category char(50) , + i_manufact_id integer , + i_manufact char(50) , + i_size char(20) , + i_formulation char(20) , + i_color char(20) , + i_units char(10) , + i_container char(10) , + i_manager_id integer , + i_product_name char(50) , + primary key (i_item_sk) +); +explain +select i_product_name product_name +,i_item_sk item_sk +,s_store_name store_name +,s_zip store_zip +,ad2.ca_street_number c_street_number +,ad2.ca_street_name c_street_name +,ad2.ca_city c_city +,ad2.ca_zip c_zip +,count(*) cnt +,sum(ss_wholesale_cost) s1 +,sum(ss_list_price) s2 +,sum(ss_coupon_amt) s3 +FROM store_sales +,store_returns +,store +,customer +,promotion +,customer_address ad2 +,item +WHERE ss_store_sk = s_store_sk AND +ss_customer_sk = c_customer_sk AND +ss_item_sk = i_item_sk and +ss_item_sk = sr_item_sk and +ss_ticket_number = sr_ticket_number and +c_current_addr_sk = ad2.ca_address_sk and +ss_promo_sk = p_promo_sk and +i_color in ('maroon','burnished','dim','steel','navajo','chocolate') and +i_current_price between 35 and 35 + 10 and +i_current_price between 35 + 1 and 35 + 15 +group by i_product_name +,i_item_sk +,s_store_name +,s_zip +,ad2.ca_street_number +,ad2.ca_street_name +,ad2.ca_city +,ad2.ca_zip +; +``` + +![](figures/zh-cn_image_0253028833.png) + +number c_street_number ,ad2.ca_street_name c_street_name ,ad2.ca_city c_city ,ad2.ca_zip c_zip diff --git a/content/zh/docs/Developerguide/Psycopg.md b/content/zh/docs/Developerguide/Psycopg.md index dbd8ae3dd..74ca83141 100644 --- a/content/zh/docs/Developerguide/Psycopg.md +++ b/content/zh/docs/Developerguide/Psycopg.md @@ -1,25 +1,25 @@ -# Psycopg - -Psycopg接口是一套提供给用户的API方法,本节将对部分常用接口做具体描述。 - -- **[psycopg2.connect\(\)](psycopg2-connect.md)** - -- **[connection.cursor\(\)](connection-cursor.md)** - -- **[cursor.execute\(query,vars\_list\)](cursor-execute-query-vars_list.md)** - -- **[curosr.executemany\(query,vars\_list\)](curosr-executemany-query-vars_list.md)** - -- **[connection.commit\(\)](connection-commit.md)** - -- **[connection.rollback\(\)](connection-rollback.md)** - -- **[cursor.fetchone\(\)](cursor-fetchone.md)** - -- **[cursor.fetchall\(\)](cursor-fetchall.md)** - -- **[cursor.close\(\)](cursor-close.md)** - -- **[connection.close\(\)](connection-close.md)** - - +# Psycopg + +Psycopg 接口是一套提供给用户的 API 方法,本节将对部分常用接口做具体描述。 + +- **[psycopg2.connect\(\)](psycopg2-connect.md)** + +- **[connection.cursor\(\)](connection-cursor.md)** + +- **[cursor.execute\(query,vars\_list\)](cursor-execute-query-vars_list.md)** + +- **[curosr.executemany\(query,vars\_list\)](curosr-executemany-query-vars_list.md)** + +- **[connection.commit\(\)](connection-commit.md)** + +- **[connection.rollback\(\)](connection-rollback.md)** + +- **[cursor.fetchone\(\)](cursor-fetchone.md)** + +- **[cursor.fetchall\(\)](cursor-fetchall.md)** + +- **[cursor.close\(\)](cursor-close.md)** + +- **[connection.close\(\)](connection-close.md)** + + diff --git "a/content/zh/docs/Developerguide/Psycopg\345\214\205.md" "b/content/zh/docs/Developerguide/Psycopg\345\214\205.md" index 7f6834813..41aaee585 100644 --- "a/content/zh/docs/Developerguide/Psycopg\345\214\205.md" +++ "b/content/zh/docs/Developerguide/Psycopg\345\214\205.md" @@ -1,9 +1,9 @@ -# Psycopg包 - -从发布包中获取,包名为GaussDB-Kernel-VxxxRxxxCxx-操作系统版本号-64bit-Python.tar.gz。 - -解压后有两个文件夹: - -- psycopg2:psycopg2库文件。 -- lib:lib库文件。 - +# Psycopg包 + +从发布包中获取,包名为GaussDB-Kernel-VxxxRxxxCxx-操作系统版本号-64bit-Python.tar.gz。 + +解压后有两个文件夹: + +- psycopg2:psycopg2库文件。 +- lib:lib库文件。 + diff --git "a/content/zh/docs/Developerguide/Psycopg\346\216\245\345\217\243\345\217\202\350\200\203.md" "b/content/zh/docs/Developerguide/Psycopg\346\216\245\345\217\243\345\217\202\350\200\203.md" index bfe3e6b06..cb67c293b 100644 --- "a/content/zh/docs/Developerguide/Psycopg\346\216\245\345\217\243\345\217\202\350\200\203.md" +++ "b/content/zh/docs/Developerguide/Psycopg\346\216\245\345\217\243\345\217\202\350\200\203.md" @@ -1,4 +1,4 @@ -# Psycopg接口参考 - -请参见[Psycopg](Psycopg.md)。 - +# Psycopg接口参考 + +请参见[Psycopg](Psycopg.md)。 + diff --git a/content/zh/docs/Developerguide/Query-22.md b/content/zh/docs/Developerguide/Query-22.md index 9bacc5552..2b244959b 100644 --- a/content/zh/docs/Developerguide/Query-22.md +++ b/content/zh/docs/Developerguide/Query-22.md @@ -1,175 +1,175 @@ -# Query - -## instr\_unique\_sql\_count - -**参数说明:**控制系统中unique sql信息实时收集功能。配置为0表示不启用unique sql信息收集功能。 - -该值由大变小将会清空系统中原有的数据重新统计;从小变大不受影响。 - -当系统中产生的unique sql条目数量大于instr\_unique\_sql\_count时,若开启了unique sql自动淘汰,则系统会按unique sql的更新时间由远到近自动淘汰一定比例的条目,使得新产生的unique sql信息可以继续被统计。若没有开启自动淘汰,则系统产生的新的unique sql信息将不再被统计。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围**:整型,0\~2147483647 - -**默认值**:100 - ->![](public_sys-resources/icon-caution.gif) **注意:** ->- 在开启自动淘汰的情况下,如果该值设置的较小,可能会导致系统频繁的进行自动淘汰,有可能会影响数据库系统性能,所以实际场景中建议不要将该值设置的过小,建议值为200000。 -> ->- 在开启自动淘汰的情况下,如果该值设置的较大(例如38347922),清理过程中可能会引发大内存问题而无法清理。 - -## instr\_unique\_sql\_track\_type - -**参数说明:**unique sql记录SQL方式。 - -该参数属于INTERNAL类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**枚举类型 - -top:代表只记录顶层SQL。 - -**默认值**:top - -## enable\_instr\_rt\_percentile - -**参数说明:**是否开启计算系统中80%和95%的SQL响应时间的功能。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型 - -- on:表示打开SQL响应时间信息计算功能。 -- off:表示关闭SQL响应时间信息计算功能。 - -**默认值**:on - -## percentile - -**参数说明:**SQL响应时间百分比信息,后台计算线程根据设置的值计算相应的百分比信息。 - -该参数属于INTERNAL类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**字符串。 - -**默认值**:80,95 - -## instr\_rt\_percentile\_interval - -**参数说明:**SQL响应时间信息计算间隔,SQL响应时间信息计算功能打开后,后台计算线程每隔设置的时间进行一次计算。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,0~3600,单位为秒。 - -**默认值**:10s - -## enable\_instr\_cpu\_timer - -**参数说明:**是否捕获SQL执行的cpu时间消耗 。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型 - -- on:表示捕获SQL执行的CPU时间消耗。 -- off:表示不捕获SQL执行的CPU时间消耗。 - -**默认值**:on - -## enable\_stmt\_track - -**参数说明:**控制是否启用Full /Slow SQL特性。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型 - -- on:表示开启Full /Slow SQL捕获。 -- off:表示关闭Full /Slow SQL捕获。 - -**默认值:**on - -## track\_stmt\_session\_slot - -**参数说明:**设置一个session缓存的最大的全量/慢SQL的数量,超过这个数量,新的语句执行将不会被跟踪,直到落盘线程将缓存语句落盘,留出空闲的空间。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,0 \~ 2147483647 - -**默认值:**1000 - -## track\_stmt\_details\_size - -**参数说明:**设置单语句可以收集的最大的执行事件的大小(byte)。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,0 \~ 100000000 - -**默认值:**4096 - -## track\_stmt\_retention\_time - -**参数说明:**组合参数,控制全量/慢SQL记录的保留时间。以60秒为周期读取该参数,并执行清理超过保留时间的记录,仅sysadmin用户可以访问。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**字符型 - -该参数分为两部分,形式为'full sql retention time, slow sql retention time' - -full sql retention time为全量SQL的保留时间,取值范围为0 \~ 86400 - -slow sql retention time为慢SQL的保留时间,取值范围为0 \~ 604800 - -**默认值:**3600,604800 - -## track\_stmt\_stat\_level - -**参数说明:**控制语句执行跟踪的级别。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置,不区分英文字母大小写。 - -**取值范围:**字符型 - -该参数分为两部分,形式为'full sql stat level, slow sql stat level' - -full sql stat level为全量SQL跟踪级别,取值范围为OFF、L0、L1、L2 - -slow sql stat level为慢SQL的跟踪级别,取值范围为OFF、L0、L1、L2 - ->![](public_sys-resources/icon-note.gif) **说明:** ->若全量SQL跟踪级别值为非OFF时,当前SQL跟踪级别值为全量SQL和慢SQL的较高级别(L2 \> L1 \> L0),级别说明请参见[表1](STATEMENT_HISTORY.md)。 - -**默认值:**OFF,L0 - -## unique\_sql\_clean\_ratio - -**参数说明:**当系统中产生的unique sql条目数量大于等于instr\_unique\_sql\_count时,每次自动淘汰的unique sql条目数量占总条目数量预设上限instr\_unique\_sql\_count的比例。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**double类型,0\~0.2 - -**默认值:**0.1 - ->![](public_sys-resources/icon-caution.gif) **注意:** ->- 该值设置过小每次清理的条目较少,可能会导致频繁进行清理;设置过大时每次清理的条目较多,可能会导致频繁插入。建议值0.1。 -> ->- unique\_sql\_clean\_ratio设置为0不代表关闭自动淘汰功能,请通过enable\_auto\_clean\_unique\_sql来控制是否开启自动淘汰。当开启自动淘汰,且将unique\_sql\_clean\_ratio设置为0时,将自动把unique\_sql\_clean\_ratio重置为默认值0.1。 - -## enable\_auto\_clean\_unique\_sql - -**参数说明:**当系统中产生的unique sql条目数量大于等于instr\_unique\_sql\_count时,是否启用unique sql自动淘汰功能。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型 - -**默认值:**off - ->![](public_sys-resources/icon-caution.gif) **注意:** ->由于快照有部分信息是来源于unique sql,所以开启自动淘汰的情况下,在生成wdr报告时,如果选择的起始快照和终止快照跨过了淘汰发生的时间,会导致无法生成wdr报告。 - +# Query + +## instr\_unique\_sql\_count + +**参数说明:**控制系统中 unique sql 信息实时收集功能。配置为 0 表示不启用 unique sql 信息收集功能。 + +该值由大变小将会清空系统中原有的数据重新统计;从小变大不受影响。 + +当系统中产生的 unique sql 条目数量大于instr\_unique\_sql\_count时,若开启了 unique sql 自动淘汰,则系统会按 unique sql 的更新时间由远到近自动淘汰一定比例的条目,使得新产生的 unique sql 信息可以继续被统计。若没有开启自动淘汰,则系统产生的新的 unique sql 信息将不再被统计。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:整型,0\~2147483647 + +**默认值**:100 + +>![](public_sys-resources/icon-caution.gif) **注意:** +>- 在开启自动淘汰的情况下,如果该值设置的较小,可能会导致系统频繁的进行自动淘汰,有可能会影响数据库系统性能,所以实际场景中建议不要将该值设置的过小,建议值为 200000 。 +> +>- 在开启自动淘汰的情况下,如果该值设置的较大(例如38347922),清理过程中可能会引发大内存问题而无法清理。 + +## instr\_unique\_sql\_track\_type + +**参数说明:**unique sql记录 SQL 方式。 + +该参数属于 INTERNAL 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**枚举类型 + +top:代表只记录顶层 SQL 。 + +**默认值**:top + +## enable\_instr\_rt\_percentile + +**参数说明:**是否开启计算系统中80%和95%的 SQL 响应时间的功能。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**布尔型 + +- on:表示打开 SQL 响应时间信息计算功能。 +- off:表示关闭 SQL 响应时间信息计算功能。 + +**默认值**:on + +## percentile + +**参数说明:**SQL响应时间百分比信息,后台计算线程根据设置的值计算相应的百分比信息。 + +该参数属于 INTERNAL 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**字符串。 + +**默认值**:80,95 + +## instr\_rt\_percentile\_interval + +**参数说明:**SQL响应时间信息计算间隔, SQL 响应时间信息计算功能打开后,后台计算线程每隔设置的时间进行一次计算。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,0~3600,单位为秒。 + +**默认值**:10s + +## enable\_instr\_cpu\_timer + +**参数说明:**是否捕获 SQL 执行的 cpu 时间消耗 。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**布尔型 + +- on:表示捕获 SQL 执行的 CPU 时间消耗。 +- off:表示不捕获 SQL 执行的 CPU 时间消耗。 + +**默认值**:on + +## enable\_stmt\_track + +**参数说明:**控制是否启用Full /Slow SQL特性。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**布尔型 + +- on:表示开启Full /Slow SQL捕获。 +- off:表示关闭Full /Slow SQL捕获。 + +**默认值:**on + +## track\_stmt\_session\_slot + +**参数说明:**设置一个 session 缓存的最大的全量/慢 SQL 的数量,超过这个数量,新的语句执行将不会被跟踪,直到落盘线程将缓存语句落盘,留出空闲的空间。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,0 \~ 2147483647 + +**默认值:**1000 + +## track\_stmt\_details\_size + +**参数说明:**设置单语句可以收集的最大的执行事件的大小(byte)。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,0 \~ 100000000 + +**默认值:**4096 + +## track\_stmt\_retention\_time + +**参数说明:**组合参数,控制全量/慢 SQL 记录的保留时间。以 60 秒为周期读取该参数,并执行清理超过保留时间的记录,仅 sysadmin 用户可以访问。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**字符型 + +该参数分为两部分,形式为'full sql retention time, slow sql retention time' + +full sql retention time 为全量 SQL 的保留时间,取值范围为0 \~ 86400 + +slow sql retention time 为慢 SQL 的保留时间,取值范围为0 \~ 604800 + +**默认值:**3600,604800 + +## track\_stmt\_stat\_level + +**参数说明:**控制语句执行跟踪的级别。 + +该参数属于 USERSET 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置,不区分英文字母大小写。 + +**取值范围:**字符型 + +该参数分为两部分,形式为'full sql stat level, slow sql stat level' + +full sql stat level 为全量 SQL 跟踪级别,取值范围为OFF、L0、L1、L2 + +slow sql stat level 为慢 SQL 的跟踪级别,取值范围为OFF、L0、L1、L2 + +>![](public_sys-resources/icon-note.gif) **说明:** +>若全量 SQL 跟踪级别值为非 OFF 时,当前 SQL 跟踪级别值为全量 SQL 和慢 SQL 的较高级别(L2 \> L1 \> L0),级别说明请参见[表1](STATEMENT_HISTORY.md)。 + +**默认值:**OFF,L0 + +## unique\_sql\_clean\_ratio + +**参数说明:**当系统中产生的 unique sql 条目数量大于等于instr\_unique\_sql\_count时,每次自动淘汰的 unique sql 条目数量占总条目数量预设上限instr\_unique\_sql\_count的比例。 + +该参数属于 SIGHUP 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**double类型,0\~0.2 + +**默认值:**0.1 + +>![](public_sys-resources/icon-caution.gif) **注意:** +>- 该值设置过小每次清理的条目较少,可能会导致频繁进行清理;设置过大时每次清理的条目较多,可能会导致频繁插入。建议值0.1。 +> +>- unique\_sql\_clean\_ratio设置为 0 不代表关闭自动淘汰功能,请通过enable\_auto\_clean\_unique\_sql来控制是否开启自动淘汰。当开启自动淘汰,且将unique\_sql\_clean\_ratio设置为 0 时,将自动把unique\_sql\_clean\_ratio重置为默认值0.1。 + +## enable\_auto\_clean\_unique\_sql + +**参数说明:**当系统中产生的 unique sql 条目数量大于等于instr\_unique\_sql\_count时,是否启用 unique sql 自动淘汰功能。 + +该参数属于 POSTMASTER 类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**布尔型 + +**默认值:**off + +>![](public_sys-resources/icon-caution.gif) **注意:** +>由于快照有部分信息是来源于 unique sql ,所以开启自动淘汰的情况下,在生成 wdr 报告时,如果选择的起始快照和终止快照跨过了淘汰发生的时间,会导致无法生成 wdr 报告。 + diff --git a/content/zh/docs/Developerguide/Query.md b/content/zh/docs/Developerguide/Query.md index a23d3e7c8..147b5238a 100644 --- a/content/zh/docs/Developerguide/Query.md +++ b/content/zh/docs/Developerguide/Query.md @@ -1,41 +1,41 @@ -# Query - -- **[STATEMENT](statement.md)** - -- **[SUMMARY\_STATEMENT](summary_statement.md)** - -- **[STATEMENT\_COUNT](statement_count.md)** - -- **[GLOBAL\_STATEMENT\_COUNT](global_statement_count.md)** - -- **[SUMMARY\_STATEMENT\_COUNT](summary_statement_count.md)** - -- **[GLOBAL\_STATEMENT\_COMPLEX\_HISTORY](global_statement_complex_history.md)** - -- **[GLOBAL\_STATEMENT\_COMPLEX\_HISTORY\_TABLE](global_statement_complex_history_table.md)** - -- **[GLOBAL\_STATEMENT\_COMPLEX\_RUNTIME](global_statement_complex_runtime.md)** - -- **[STATEMENT\_RESPONSETIME\_PERCENTILE](statement_responsetime_percentile.md)** - -- **[STATEMENT\_USER\_COMPLEX\_HISTORY](statement_user_complex_history.md)** - -- **[STATEMENT\_COMPLEX\_RUNTIME](statement_complex_runtime.md)** - -- **[STATEMENT\_COMPLEX\_HISTORY\_TABLE](statement_complex_history_table.md)** - -- **[STATEMENT\_COMPLEX\_HISTORY](statement_complex_history.md)** - -- **[STATEMENT\_WLMSTAT\_COMPLEX\_RUNTIME](statement_wlmstat_complex_runtime.md)** - -- **[STATEMENT\_HISTORY](statement_history.md)** - -- **[GS\_SLOW\_QUERY\_INFO \(废弃\)](gs_slow_query_info_废弃.md)** - -- **[GS\_SLOW\_QUERY\_HISTORY \(废弃\)](gs_slow_query_history_废弃.md)** - -- **[GLOBAL\_SLOW\_QUERY\_HISTORY \(废弃\)](global_slow_query_history_废弃.md)** - -- **[GLOBAL\_SLOW\_QUERY\_INFO \(废弃\)](global_slow_query_info_废弃.md)** - - +# Query + +- **[STATEMENT](statement.md)** + +- **[SUMMARY\_STATEMENT](summary_statement.md)** + +- **[STATEMENT\_COUNT](statement_count.md)** + +- **[GLOBAL\_STATEMENT\_COUNT](global_statement_count.md)** + +- **[SUMMARY\_STATEMENT\_COUNT](summary_statement_count.md)** + +- **[GLOBAL\_STATEMENT\_COMPLEX\_HISTORY](global_statement_complex_history.md)** + +- **[GLOBAL\_STATEMENT\_COMPLEX\_HISTORY\_TABLE](global_statement_complex_history_table.md)** + +- **[GLOBAL\_STATEMENT\_COMPLEX\_RUNTIME](global_statement_complex_runtime.md)** + +- **[STATEMENT\_RESPONSETIME\_PERCENTILE](statement_responsetime_percentile.md)** + +- **[STATEMENT\_USER\_COMPLEX\_HISTORY](statement_user_complex_history.md)** + +- **[STATEMENT\_COMPLEX\_RUNTIME](statement_complex_runtime.md)** + +- **[STATEMENT\_COMPLEX\_HISTORY\_TABLE](statement_complex_history_table.md)** + +- **[STATEMENT\_COMPLEX\_HISTORY](statement_complex_history.md)** + +- **[STATEMENT\_WLMSTAT\_COMPLEX\_RUNTIME](statement_wlmstat_complex_runtime.md)** + +- **[STATEMENT\_HISTORY](statement_history.md)** + +- **[GS\_SLOW\_QUERY\_INFO \(废弃\)](gs_slow_query_info_废弃.md)** + +- **[GS\_SLOW\_QUERY\_HISTORY \(废弃\)](gs_slow_query_history_废弃.md)** + +- **[GLOBAL\_SLOW\_QUERY\_HISTORY \(废弃\)](global_slow_query_history_废弃.md)** + +- **[GLOBAL\_SLOW\_QUERY\_INFO \(废弃\)](global_slow_query_info_废弃.md)** + + diff --git "a/content/zh/docs/Developerguide/Query\346\211\247\350\241\214\346\265\201\347\250\213.md" "b/content/zh/docs/Developerguide/Query\346\211\247\350\241\214\346\265\201\347\250\213.md" index 01b55cde9..b80fe409a 100644 --- "a/content/zh/docs/Developerguide/Query\346\211\247\350\241\214\346\265\201\347\250\213.md" +++ "b/content/zh/docs/Developerguide/Query\346\211\247\350\241\214\346\265\201\347\250\213.md" @@ -1,76 +1,76 @@ -# Query执行流程 - -SQL引擎从接受SQL语句到执行SQL语句需要经历的步骤如[图1](#zh-cn_topic_0237121508_zh-cn_topic_0073320637_zh-cn_topic_0071158048_fig29880521152348)和[表1](#zh-cn_topic_0237121508_zh-cn_topic_0073320637_zh-cn_topic_0071158048_table11198623152535)所示。其中,红色字体部分为DBA可以介入实施调优的环节。 - -**图 1** SQL引擎执行查询类SQL语句的流程 -![](figures/SQL引擎执行查询类SQL语句的流程.png "SQL引擎执行查询类SQL语句的流程") - -**表 1** SQL引擎执行查询类SQL语句的步骤说明 - - - - - - - - - - - - - - - - - - - - - - -

步骤

-

说明

-

1、语法&词法解析

-

按照约定的SQL语句规则,把输入的SQL语句从字符串转化为格式化结构(Stmt)。

-

2、语义解析

-

将“语法&词法解析”输出的格式化结构转化为数据库可以识别的对象。

-

3、查询重写

-

根据规则把“语义解析”的输出等价转化为执行上更为优化的结构。

-

4、查询优化

-

根据“查询重写”的输出和数据库内部的统计信息规划SQL语句具体的执行方式,也就是执行计划。统计信息和GUC参数对查询优化(执行计划)的影响,请参见调优手段之统计信息调优手段之GUC参数

-

5、查询执行

-

根据“查询优化”规划的执行路径执行SQL查询语句。底层存储方式的选择合理性,将影响查询执行效率。详见调优手段之底层存储

-
- - -## 调优手段之统计信息 - -openGauss优化器是典型的基于代价的优化(Cost-Based Optimization,简称CBO)。在这种优化器模型下,数据库根据表的元组数、字段宽度、NULL记录比率、distinct值、MCV值、HB值等表的特征值,以及一定的代价计算模型,计算出每一个执行步骤的不同执行方式的输出元组数和执行代价(cost),进而选出整体执行代价最小/首元组返回代价最小的执行方式进行执行。这些特征值就是统计信息。从上面的描述可以看出统计信息是查询优化的核心输入,准确的统计信息将帮助规划器选择最合适的查询规划。一般来说我们会通过ANALYZE语法收集整个表或者表的若干个字段的统计信息,周期性地运行ANALYZE,或者在对表的大部分内容做了更改之后马上运行ANALYZE。 - -## 调优手段之GUC参数 - -查询优化的主要目的是为查询语句选择高效的执行方式。 - -如下SQL语句: - -``` -select count(1) -from customer inner join store_sales on (ss_customer_sk = c_customer_sk); -``` - -在执行customer inner join store\_sales的时候,openGauss支持Nested Loop、Merge Join和Hash Join三种不同的Join方式。优化器会根据表customer和表store\_sales的统计信息估算结果集的大小以及每种join方式的执行代价,然后对比选出执行代价最小的执行计划。 - -正如前面所说,执行代价计算都是基于一定的模型和统计信息进行估算,当因为某些原因代价估算不能反映真实的cost的时候,我们就需要通过guc参数设置的方式让执行计划倾向更优规划。 - -## 调优手段之底层存储 - -openGauss的表支持行存表、列存表,底层存储方式的选择严格依赖于客户的具体业务场景。一般来说计算型业务查询场景(以关联、聚合操作为主)建议使用列存表;点查询、大批量UPDATE/DELETE业务场景适合行存表。 - -对于每种存储方式还有对应的存储层优化手段,这部分会在后续的调优章节深入介绍。 - -## 调优手段之SQL重写 - -除了上述干预SQL引擎所生成执行计划的执行性能外,根据数据库的SQL执行机制以及大量的实践发现,有些场景下,在保证客户业务SQL逻辑的前提下,通过一定规则由DBA重写SQL语句,可以大幅度的提升SQL语句的性能。 - -这种调优场景对DBA的要求比较高,需要对客户业务有足够的了解,同时也需要扎实的SQL语句基本功,后续会介绍几个常见的SQL改写场景。 - +# Query执行流程 + +SQL 引擎从接受 SQL 语句到执行 SQL 语句需要经历的步骤如[图1](#zh-cn_topic_0237121508_zh-cn_topic_0073320637_zh-cn_topic_0071158048_fig29880521152348)和[表1](#zh-cn_topic_0237121508_zh-cn_topic_0073320637_zh-cn_topic_0071158048_table11198623152535)所示。其中,红色字体部分为 DBA 可以介入实施调优的环节。 + +**图 1** SQL引擎执行查询类 SQL 语句的流程 +![](figures/SQL引擎执行查询类 SQL 语句的流程.png "SQL引擎执行查询类 SQL 语句的流程") + +**表 1** SQL引擎执行查询类 SQL 语句的步骤说明 + + + + + + + + + + + + + + + + + + + + + + +

步骤

+

说明

+

1、语法&词法解析

+

按照约定的 SQL 语句规则,把输入的 SQL 语句从字符串转化为格式化结构(Stmt)。

+

2、语义解析

+

将“语法&词法解析”输出的格式化结构转化为数据库可以识别的对象。

+

3、查询重写

+

根据规则把“语义解析”的输出等价转化为执行上更为优化的结构。

+

4、查询优化

+

根据“查询重写”的输出和数据库内部的统计信息规划 SQL 语句具体的执行方式,也就是执行计划。统计信息和 GUC 参数对查询优化(执行计划)的影响,请参见调优手段之统计信息调优手段之 GUC 参数

+

5、查询执行

+

根据“查询优化”规划的执行路径执行 SQL 查询语句。底层存储方式的选择合理性,将影响查询执行效率。详见调优手段之底层存储

+
+ + +## 调优手段之统计信息 + +openGauss 优化器是典型的基于代价的优化(Cost-Based Optimization,简称CBO)。在这种优化器模型下,数据库根据表的元组数、字段宽度、NULL记录比率、distinct值、MCV值、HB值等表的特征值,以及一定的代价计算模型,计算出每一个执行步骤的不同执行方式的输出元组数和执行代价(cost),进而选出整体执行代价最小/首元组返回代价最小的执行方式进行执行。这些特征值就是统计信息。从上面的描述可以看出统计信息是查询优化的核心输入,准确的统计信息将帮助规划器选择最合适的查询规划。一般来说我们会通过 ANALYZE 语法收集整个表或者表的若干个字段的统计信息,周期性地运行 ANALYZE ,或者在对表的大部分内容做了更改之后马上运行 ANALYZE 。 + +## 调优手段之 GUC 参数 + +查询优化的主要目的是为查询语句选择高效的执行方式。 + +如下 SQL 语句: + +``` +select count(1) +from customer inner join store_sales on (ss_customer_sk = c_customer_sk); +``` + +在执行customer inner join store\_sales的时候, openGauss 支持Nested Loop、Merge Join和 Hash Join 三种不同的 Join 方式。优化器会根据表 customer 和表store\_sales的统计信息估算结果集的大小以及每种 join 方式的执行代价,然后对比选出执行代价最小的执行计划。 + +正如前面所说,执行代价计算都是基于一定的模型和统计信息进行估算,当因为某些原因代价估算不能反映真实的 cost 的时候,我们就需要通过 guc 参数设置的方式让执行计划倾向更优规划。 + +## 调优手段之底层存储 + +openGauss 的表支持行存表、列存表,底层存储方式的选择严格依赖于客户的具体业务场景。一般来说计算型业务查询场景(以关联、聚合操作为主)建议使用列存表;点查询、大批量UPDATE/DELETE业务场景适合行存表。 + +对于每种存储方式还有对应的存储层优化手段,这部分会在后续的调优章节深入介绍。 + +## 调优手段之 SQL 重写 + +除了上述干预 SQL 引擎所生成执行计划的执行性能外,根据数据库的 SQL 执行机制以及大量的实践发现,有些场景下,在保证客户业务 SQL 逻辑的前提下,通过一定规则由 DBA 重写 SQL 语句,可以大幅度的提升 SQL 语句的性能。 + +这种调优场景对 DBA 的要求比较高,需要对客户业务有足够的了解,同时也需要扎实的 SQL 语句基本功,后续会介绍几个常见的 SQL 改写场景。 + diff --git a/content/zh/docs/Developerguide/REASSIGN-OWNED.md b/content/zh/docs/Developerguide/REASSIGN-OWNED.md index b63465373..fdce17a1d 100644 --- a/content/zh/docs/Developerguide/REASSIGN-OWNED.md +++ b/content/zh/docs/Developerguide/REASSIGN-OWNED.md @@ -1,34 +1,34 @@ -# REASSIGN OWNED - -## 功能描述 - -修改数据库对象的属主。 - -REASSIGN OWNED要求系统将所有old\_roles拥有的数据库对象的属主更改为new\_role。 - -## 注意事项 - -- REASSIGN OWNED常用于在删除角色之前的准备工作。 -- 执行REASSIGN OWNED需要有原角色和目标角色上的权限。 - -## 语法格式 - -``` -REASSIGN OWNED BY old_role [, ...] TO new_role; -``` - -## 参数说明 - -- **old\_role** - - 旧属主的角色名。 - -- **new\_role** - - 将要成为这些对象属主的新角色的名称。 - - -## 示例 - -无。 - +# REASSIGN OWNED + +## 功能描述 + +修改数据库对象的属主。 + +REASSIGN OWNED 要求系统将所有old\_roles拥有的数据库对象的属主更改为new\_role。 + +## 注意事项 + +- REASSIGN OWNED常用于在删除角色之前的准备工作。 +- 执行 REASSIGN OWNED 需要有原角色和目标角色上的权限。 + +## 语法格式 + +``` +REASSIGN OWNED BY old_role [, ...] TO new_role; +``` + +## 参数说明 + +- **old\_role** + + 旧属主的角色名。 + +- **new\_role** + + 将要成为这些对象属主的新角色的名称。 + + +## 示例 + +无。 + diff --git a/content/zh/docs/Developerguide/REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md b/content/zh/docs/Developerguide/REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md index 5c23fd69a..6c466e311 100644 --- a/content/zh/docs/Developerguide/REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md +++ b/content/zh/docs/Developerguide/REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md @@ -1,41 +1,41 @@ -# REFRESH INCREMENTAL MATERIALIZED VIEW - -## 功能描述 - -REFRESH INCREMENTAL MATERIALIZED VIEW会以增量刷新的方式对物化视图进行刷新。 - -## 注意事项 - -- 增量刷新仅支持增量物化视图。 -- 刷新物化视图需要当前用户拥有基表的SELECT权限。 - -## 语法格式 - -``` -REFRESH INCREMENTAL MATERIALIZED VIEW mv_name; -``` - -## 参数说明 - -- **mv\_name** - - 要刷新的物化视图的名称。 - - -## 示例 - -``` ---创建一个普通表 -openGauss=# CREATE TABLE my_table (c1 int, c2 int); ---创建增量物化视图 -openGauss=# CREATE INCREMENTAL MATERIALIZED VIEW my_imv AS SELECT * FROM my_table; ---基表写入数据 -openGauss=# INSERT INTO my_table VALUES(1,1),(2,2); ---对增量物化视图my_imv进行增量刷新 -openGauss=# REFRESH INCREMENTAL MATERIALIZED VIEW my_imv; -``` - -## 相关链接 - -[ALTER MATERIALIZED VIEW](ALTER-MATERIALIZED-VIEW.md),[CREATE INCREMENTAL MATERIALIZED VIEW](CREATE-INCREMENTAL-MATERIALIZED-VIEW.md),[CREATE MATERIALIZED VIEW](CREATE-MATERIALIZED-VIEW.md),[CREATE TABLE](CREATE-TABLE.md), [DROP MATERIALIZED VIEW](DROP-MATERIALIZED-VIEW.md),[REFRESH MATERIALIZED VIEW](REFRESH-MATERIALIZED-VIEW.md) - +# REFRESH INCREMENTAL MATERIALIZED VIEW + +## 功能描述 + +REFRESH INCREMENTAL MATERIALIZED VIEW 会以增量刷新的方式对物化视图进行刷新。 + +## 注意事项 + +- 增量刷新仅支持增量物化视图。 +- 刷新物化视图需要当前用户拥有基表的 SELECT 权限。 + +## 语法格式 + +``` +REFRESH INCREMENTAL MATERIALIZED VIEW mv_name; +``` + +## 参数说明 + +- **mv\_name** + + 要刷新的物化视图的名称。 + + +## 示例 + +``` +--创建一个普通表 +openGauss=# CREATE TABLE my_table (c1 int, c2 int); +--创建增量物化视图 +openGauss=# CREATE INCREMENTAL MATERIALIZED VIEW my_imv AS SELECT * FROM my_table; +--基表写入数据 +openGauss=# INSERT INTO my_table VALUES(1,1),(2,2); +--对增量物化视图 my_imv 进行增量刷新 +openGauss=# REFRESH INCREMENTAL MATERIALIZED VIEW my_imv; +``` + +## 相关链接 + +[ALTER MATERIALIZED VIEW](ALTER-MATERIALIZED-VIEW.md),[CREATE INCREMENTAL MATERIALIZED VIEW](CREATE-INCREMENTAL-MATERIALIZED-VIEW.md),[CREATE MATERIALIZED VIEW](CREATE-MATERIALIZED-VIEW.md),[CREATE TABLE](CREATE-TABLE.md), [DROP MATERIALIZED VIEW](DROP-MATERIALIZED-VIEW.md),[REFRESH MATERIALIZED VIEW](REFRESH-MATERIALIZED-VIEW.md) + diff --git a/content/zh/docs/Developerguide/REFRESH-MATERIALIZED-VIEW.md b/content/zh/docs/Developerguide/REFRESH-MATERIALIZED-VIEW.md index 47cfc009b..bc4f7113d 100644 --- a/content/zh/docs/Developerguide/REFRESH-MATERIALIZED-VIEW.md +++ b/content/zh/docs/Developerguide/REFRESH-MATERIALIZED-VIEW.md @@ -1,45 +1,45 @@ -# REFRESH MATERIALIZED VIEW - -## 功能描述 - -REFRESH MATERIALIZED VIEW会以全量刷新的方式对物化视图进行刷新。 - -## 注意事项 - -- 全量刷新既可以对全量物化视图执行,也可以对增量物化视图执行。 -- 刷新物化视图需要当前用户拥有基表的SELECT权限。 - -## 语法格式 - -``` -REFRESH MATERIALIZED VIEW mv_name; -``` - -## 参数说明 - -- **mv\_name** - - 要刷新的物化视图的名称。 - - -## 示例 - -``` ---创建一个普通表 -openGauss=# CREATE TABLE my_table (c1 int, c2 int); ---创建全量物化视图 -openGauss=# CREATE MATERIALIZED VIEW my_mv AS SELECT * FROM my_table; ---创建增量物化视图 -openGauss=# CREATE INCREMENTAL MATERIALIZED VIEW my_imv AS SELECT * FROM my_table; ---基表写入数据 -openGauss=# INSERT INTO my_table VALUES(1,1),(2,2); ---对全量物化视图my_mv进行全量刷新 -openGauss=# REFRESH MATERIALIZED VIEW my_mv; ---对增量物化视图my_imv进行全量刷新 -openGauss=# REFRESH MATERIALIZED VIEW my_imv; -``` - -## 相关链接 - -[ALTER MATERIALIZED VIEW](ALTER-MATERIALIZED-VIEW.md),[CREATE INCREMENTAL MATERIALIZED VIEW](CREATE-INCREMENTAL-MATERIALIZED-VIEW.md), [CREATE MATERIALIZED VIEW](CREATE-MATERIALIZED-VIEW.md),[CREATE TABLE](CREATE-TABLE.md), [DROP MATERIALIZED VIEW](DROP-MATERIALIZED-VIEW.md),[REFRESH INCREMENTAL MATERIALIZED VIEW](REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md) - +# REFRESH MATERIALIZED VIEW + +## 功能描述 + +REFRESH MATERIALIZED VIEW 会以全量刷新的方式对物化视图进行刷新。 + +## 注意事项 + +- 全量刷新既可以对全量物化视图执行,也可以对增量物化视图执行。 +- 刷新物化视图需要当前用户拥有基表的 SELECT 权限。 + +## 语法格式 + +``` +REFRESH MATERIALIZED VIEW mv_name; +``` + +## 参数说明 + +- **mv\_name** + + 要刷新的物化视图的名称。 + + +## 示例 + +``` +--创建一个普通表 +openGauss=# CREATE TABLE my_table (c1 int, c2 int); +--创建全量物化视图 +openGauss=# CREATE MATERIALIZED VIEW my_mv AS SELECT * FROM my_table; +--创建增量物化视图 +openGauss=# CREATE INCREMENTAL MATERIALIZED VIEW my_imv AS SELECT * FROM my_table; +--基表写入数据 +openGauss=# INSERT INTO my_table VALUES(1,1),(2,2); +--对全量物化视图 my_mv 进行全量刷新 +openGauss=# REFRESH MATERIALIZED VIEW my_mv; +--对增量物化视图 my_imv 进行全量刷新 +openGauss=# REFRESH MATERIALIZED VIEW my_imv; +``` + +## 相关链接 + +[ALTER MATERIALIZED VIEW](ALTER-MATERIALIZED-VIEW.md),[CREATE INCREMENTAL MATERIALIZED VIEW](CREATE-INCREMENTAL-MATERIALIZED-VIEW.md), [CREATE MATERIALIZED VIEW](CREATE-MATERIALIZED-VIEW.md),[CREATE TABLE](CREATE-TABLE.md), [DROP MATERIALIZED VIEW](DROP-MATERIALIZED-VIEW.md),[REFRESH INCREMENTAL MATERIALIZED VIEW](REFRESH-INCREMENTAL-MATERIALIZED-VIEW.md) + diff --git a/content/zh/docs/Developerguide/REINDEX.md b/content/zh/docs/Developerguide/REINDEX.md index dc8fa4ffb..0bb7578d2 100644 --- a/content/zh/docs/Developerguide/REINDEX.md +++ b/content/zh/docs/Developerguide/REINDEX.md @@ -1,172 +1,172 @@ -# REINDEX - -## 功能描述 - -为表中的数据重建索引。 - -在以下几种情况下需要使用REINDEX重建索引: - -- 索引崩溃,并且不再包含有效的数据。 -- 索引变得“臃肿”,包含大量的空页或接近空页。 -- 为索引更改了存储参数(例如填充因子),并且希望这个更改完全生效。 -- 使用CONCURRENTLY选项创建索引失败,留下了一个“非法”索引。 - -## 注意事项 - -REINDEX DATABASE和SYSTEM这种形式的重建索引不能在事务块中执行。 - -REINDEX CONCURRENTLY这种形式的重建索引不能在事务块中执行。 - -## 语法格式 - -- 重建普通索引。 - - ``` - REINDEX { INDEX | [INTERNAL] TABLE | DATABASE | SYSTEM } [CONCURRENTLY] name [ FORCE ]; - ``` - - -- 重建索引分区。 - - ``` - REINDEX { INDEX| [INTERNAL] TABLE} [CONCURRENTLY] name - PARTITION partition_name [ FORCE ]; - ``` - - -## 参数说明 - -- **INDEX** - - 重新建立指定的索引。 - -- **INTERNAL TABLE** - - 重建列存表或Hadoop内表的Desc表的索引,如果表有从属的“TOAST”表,则这个表也会重建索引。 - -- **TABLE** - - 重新建立指定表的所有索引,如果表有从属的“TOAST”表,则这个表也会重建索引。如果表上有索引已经被alter unusable失效,则这个索引无法被重新创建。 - -- **DATABASE** - - 重建当前数据库里的所有索引。 - -- **SYSTEM** - - 在当前数据库上重建所有系统表上的索引。不会处理在用户表上的索引。 - -- **CONCURRENTLY** - - 以不阻塞DML的方式重建索引(加ShareUpdateExclusiveLock锁)。重建索引时,一般会阻塞其他语句对该索引所依赖表的访问。指定此关键字,可以实现重建过程中不阻塞DML。 - - - 此选项只能指定一个索引的名称。 - - 普通REINDEX命令可以在事务内执行,但是REINDEX CONCURRENTLY不可以在事务内执行。 - - 列存表、全局分区表和临时表不支持CONCURRENTLY方式重建索引。 - - REINDEX SYSTEM CONCURRENTLY不会执行任何操作,因为系统表不支持在线重建索引。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 重建索引时指定此关键字,需要执行先后两次对该表的全表扫描来完成build,第一次扫描的时候创建新索引,不阻塞读写操作;第二次扫描的时候合并更新第一次扫描到目前为止发生的变更。 - - >- 因为需要执行两次对表的扫描和build,且必须等待现有的所有可能对该表执行修改的事务结束,所以该索引的重建比正常耗时更长,同时带来的CPU和I/O消耗对其他业务也会造成影响。 - - >- 如果在索引构建时发生失败,那会留下一个“不可用”的索引。这个索引会被查询忽略,但它仍消耗更新开销。这种情况推荐的恢复方法是删除该索引并尝试再次CONCURRENTLY重建索引。 - - >- 由于在第二次扫描之后,索引构建必须等待任何持有早于第二次扫描拿的快照的事务终止,而且建索引时加的ShareUpdateExclusiveLock锁(4级)会和大于等于4级的锁冲突,因此在创建这类索引时,容易引发卡住(hang)或者死锁问题。例如: - - > - 两个会话对同一个表重建CONCURRENTLY索引,会引起死锁问题; - - > - 两个会话,一个对表重建CONCURRENTLY索引,一个drop table,会引起死锁问题; - - > - 三个会话,会话1先对表a加锁,不提交,会话2接着对表b重建CONCURRENTLY索引,会话3接着对表a执行写入操作,在会话1事务未提交之前,会话2会一直被阻塞; - - > - 将事务隔离级别设置成可重复读(默认为读已提交),起两个会话,会话1起事务对表a执行写入操作,不提交,会话2对表b重建CONCURRENTLY索引,在会话1事务未提交之前,会话2会一直被阻塞。 - - -- **name** - - 需要重建索引的索引、表、数据库的名称。表和索引可以有模式修饰。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >REINDEX DATABASE和SYSTEM只能重建当前数据库的索引,所以name必须和当前数据库名称相同。 - -- **FORCE** - - 无效选项,会被忽略。 - -- **partition\_name** - - 需要重建索引的分区的名称或者索引分区的名称。 - - 取值范围: - - - 如果前面是REINDEX INDEX,则这里应该指定索引分区的名称; - - 如果前面是REINDEX TABLE,则这里应该指定分区的名称; - - 如果前面是REINDEX INTERNAL TABLE,则这里应该指定列存分区表的分区的名称。 - - ->![](public_sys-resources/icon-notice.gif) **须知:** ->REINDEX DATABASE和SYSTEM这种形式的重建索引不能在事务块中执行。 - -## 示例 - -``` ---创建一个行存表tpcds.customer_t1,并在tpcds.customer_t1表上的c_customer_sk字段创建索引。 -openGauss=# CREATE TABLE tpcds.customer_t1 -( - c_customer_sk integer not null, - c_customer_id char(16) not null, - c_current_cdemo_sk integer , - c_current_hdemo_sk integer , - c_current_addr_sk integer , - c_first_shipto_date_sk integer , - c_first_sales_date_sk integer , - c_salutation char(10) , - c_first_name char(20) , - c_last_name char(30) , - c_preferred_cust_flag char(1) , - c_birth_day integer , - c_birth_month integer , - c_birth_year integer , - c_birth_country varchar(20) , - c_login char(13) , - c_email_address char(50) , - c_last_review_date char(10) -) -WITH (orientation = row) - -openGauss=# CREATE INDEX tpcds_customer_index1 ON tpcds.customer_t1 (c_customer_sk); - -openGauss=# INSERT INTO tpcds.customer_t1 SELECT * FROM tpcds.customer WHERE c_customer_sk < 10; - ---重建一个单独索引。 -openGauss=# REINDEX INDEX tpcds.tpcds_customer_index1; - ---实时重建一个单独索引。 -openGauss=# REINDEX INDEX CONCURRENTLY tpcds.tpcds_customer_index1; - ---重建表tpcds.customer_t1上的所有索引。 -openGauss=# REINDEX TABLE tpcds.customer_t1; - ---实时重建表tpcds.customer_t1上的所有索引。 -openGauss=# REINDEX TABLE CONCURRENTLY tpcds.customer_t1; - ---删除tpcds.customer_t1表。 -openGauss=# DROP TABLE tpcds.customer_t1; -``` - -## 优化建议 - -- INTERNAL TABLE - - 此种情况大多用于故障恢复,不建议进行并发操作。 - -- DATABASE - - 不能在事务中reindex database。 - -- SYSTEM - - 不能在事务中reindex系统表。 - - +# REINDEX + +## 功能描述 + +为表中的数据重建索引。 + +在以下几种情况下需要使用 REINDEX 重建索引: + +- 索引崩溃,并且不再包含有效的数据。 +- 索引变得“臃肿”,包含大量的空页或接近空页。 +- 为索引更改了存储参数(例如填充因子),并且希望这个更改完全生效。 +- 使用 CONCURRENTLY 选项创建索引失败,留下了一个“非法”索引。 + +## 注意事项 + +REINDEX DATABASE 和 SYSTEM 这种形式的重建索引不能在事务块中执行。 + +REINDEX CONCURRENTLY 这种形式的重建索引不能在事务块中执行。 + +## 语法格式 + +- 重建普通索引。 + + ``` + REINDEX { INDEX | [INTERNAL] TABLE | DATABASE | SYSTEM } [CONCURRENTLY] name [ FORCE ]; + ``` + + +- 重建索引分区。 + + ``` + REINDEX { INDEX| [INTERNAL] TABLE} [CONCURRENTLY] name + PARTITION partition_name [ FORCE ]; + ``` + + +## 参数说明 + +- **INDEX** + + 重新建立指定的索引。 + +- **INTERNAL TABLE** + + 重建列存表或 Hadoop 内表的 Desc 表的索引,如果表有从属的“TOAST”表,则这个表也会重建索引。 + +- **TABLE** + + 重新建立指定表的所有索引,如果表有从属的“TOAST”表,则这个表也会重建索引。如果表上有索引已经被 alter unusable 失效,则这个索引无法被重新创建。 + +- **DATABASE** + + 重建当前数据库里的所有索引。 + +- **SYSTEM** + + 在当前数据库上重建所有系统表上的索引。不会处理在用户表上的索引。 + +- **CONCURRENTLY** + + 以不阻塞 DML 的方式重建索引(加 ShareUpdateExclusiveLock 锁)。重建索引时,一般会阻塞其他语句对该索引所依赖表的访问。指定此关键字,可以实现重建过程中不阻塞 DML 。 + + - 此选项只能指定一个索引的名称。 + - 普通 REINDEX 命令可以在事务内执行,但是 REINDEX CONCURRENTLY 不可以在事务内执行。 + - 列存表、全局分区表和临时表不支持 CONCURRENTLY 方式重建索引。 + - REINDEX SYSTEM CONCURRENTLY不会执行任何操作,因为系统表不支持在线重建索引。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 重建索引时指定此关键字,需要执行先后两次对该表的全表扫描来完成 build ,第一次扫描的时候创建新索引,不阻塞读写操作;第二次扫描的时候合并更新第一次扫描到目前为止发生的变更。 + + >- 因为需要执行两次对表的扫描和 build ,且必须等待现有的所有可能对该表执行修改的事务结束,所以该索引的重建比正常耗时更长,同时带来的 CPU 和I/O消耗对其他业务也会造成影响。 + + >- 如果在索引构建时发生失败,那会留下一个“不可用”的索引。这个索引会被查询忽略,但它仍消耗更新开销。这种情况推荐的恢复方法是删除该索引并尝试再次 CONCURRENTLY 重建索引。 + + >- 由于在第二次扫描之后,索引构建必须等待任何持有早于第二次扫描拿的快照的事务终止,而且建索引时加的 ShareUpdateExclusiveLock 锁(4级)会和大于等于 4 级的锁冲突,因此在创建这类索引时,容易引发卡住(hang)或者死锁问题。例如: + + > - 两个会话对同一个表重建 CONCURRENTLY 索引,会引起死锁问题; + + > - 两个会话,一个对表重建 CONCURRENTLY 索引,一个 drop table ,会引起死锁问题; + + > - 三个会话,会话 1 先对表 a 加锁,不提交,会话 2 接着对表 b 重建 CONCURRENTLY 索引,会话 3 接着对表 a 执行写入操作,在会话 1 事务未提交之前,会话 2 会一直被阻塞; + + > - 将事务隔离级别设置成可重复读(默认为读已提交),起两个会话,会话 1 起事务对表 a 执行写入操作,不提交,会话 2 对表 b 重建 CONCURRENTLY 索引,在会话 1 事务未提交之前,会话 2 会一直被阻塞。 + + +- **name** + + 需要重建索引的索引、表、数据库的名称。表和索引可以有模式修饰。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >REINDEX DATABASE和 SYSTEM 只能重建当前数据库的索引,所以 name 必须和当前数据库名称相同。 + +- **FORCE** + + 无效选项,会被忽略。 + +- **partition\_name** + + 需要重建索引的分区的名称或者索引分区的名称。 + + 取值范围: + + - 如果前面是 REINDEX INDEX ,则这里应该指定索引分区的名称; + - 如果前面是 REINDEX TABLE ,则这里应该指定分区的名称; + - 如果前面是 REINDEX INTERNAL TABLE ,则这里应该指定列存分区表的分区的名称。 + + +>![](public_sys-resources/icon-notice.gif) **须知:** +>REINDEX DATABASE和 SYSTEM 这种形式的重建索引不能在事务块中执行。 + +## 示例 + +``` +--创建一个行存表tpcds.customer_t1,并在tpcds.customer_t1表上的 c_customer_sk 字段创建索引。 +openGauss=# CREATE TABLE tpcds.customer_t1 +( + c_customer_sk integer not null , + c_customer_id char(16) not null, + c_current_cdemo_sk integer , + c_current_hdemo_sk integer , + c_current_addr_sk integer , + c_first_shipto_date_sk integer , + c_first_sales_date_sk integer , + c_salutation char(10) , + c_first_name char(20) , + c_last_name char(30) , + c_preferred_cust_flag char(1) , + c_birth_day integer , + c_birth_month integer , + c_birth_year integer , + c_birth_country varchar(20) , + c_login char(13) , + c_email_address char(50) , + c_last_review_date char(10) +) +WITH (orientation = row) + +openGauss=# CREATE INDEX tpcds_customer_index1 ON tpcds.customer_t1 (c_customer_sk); + +openGauss=# INSERT INTO tpcds.customer_t1 SELECT * FROM tpcds.customer WHERE c_customer_sk < 10; + +--重建一个单独索引。 +openGauss=# REINDEX INDEX tpcds.tpcds_customer_index1; + +--实时重建一个单独索引。 +openGauss=# REINDEX INDEX CONCURRENTLY tpcds.tpcds_customer_index1; + +--重建表tpcds.customer_t1上的所有索引。 +openGauss=# REINDEX TABLE tpcds.customer_t1; + +--实时重建表tpcds.customer_t1上的所有索引。 +openGauss=# REINDEX TABLE CONCURRENTLY tpcds.customer_t1; + +--删除tpcds.customer_t1表。 +openGauss=# DROP TABLE tpcds.customer_t1; +``` + +## 优化建议 + +- INTERNAL TABLE + + 此种情况大多用于故障恢复,不建议进行并发操作。 + +- DATABASE + + 不能在事务中 reindex database 。 + +- SYSTEM + + 不能在事务中 reindex 系统表。 + + diff --git a/content/zh/docs/Developerguide/RELEASE-SAVEPOINT.md b/content/zh/docs/Developerguide/RELEASE-SAVEPOINT.md index cbd42e4d9..cd052d03c 100644 --- a/content/zh/docs/Developerguide/RELEASE-SAVEPOINT.md +++ b/content/zh/docs/Developerguide/RELEASE-SAVEPOINT.md @@ -1,63 +1,63 @@ -# RELEASE SAVEPOINT - -## 功能描述 - -RELEASE SAVEPOINT删除一个当前事务先前定义的保存点。 - -把一个保存点删除就令其无法作为回滚点使用,除此之外它没有其它用户可见的行为。它并不能撤销在保存点建立起来之后执行的命令的影响。要撤销那些命令可以使用ROLLBACK TO SAVEPOINT 。在不再需要的时候删除一个保存点可以令系统在事务结束之前提前回收一些资源。 - -RELEASE SAVEPOINT也删除所有在指定的保存点建立之后的所有保存点。 - -## 注意事项 - -- 不能RELEASE一个没有定义的保存点,语法上会报错。 -- 如果事务在回滚状态,则不能释放保存点。 -- 如果多个保存点拥有同样的名称,只有最近定义的那个才被释放。 - -## 语法格式 - -``` -RELEASE [ SAVEPOINT ] savepoint_name; -``` - -## 参数说明 - -**savepoint\_name** - -要删除的保存点的名称。 - -## 示例 - -``` ---创建一个新表。 -openGauss=# CREATE TABLE tpcds.table1(a int); - ---开启事务。 -openGauss=# START TRANSACTION; - ---插入数据。 -openGauss=# INSERT INTO tpcds.table1 VALUES (3); - ---建立保存点。 -openGauss=# SAVEPOINT my_savepoint; - ---插入数据。 -openGauss=# INSERT INTO tpcds.table1 VALUES (4); - ---删除保存点。 -openGauss=# RELEASE SAVEPOINT my_savepoint; - ---提交事务。 -openGauss=# COMMIT; - ---查询表的内容,会同时看到3和4。 -openGauss=# SELECT * FROM tpcds.table1; - ---删除表。 -openGauss=# DROP TABLE tpcds.table1; -``` - -## 相关链接 - -[SAVEPOINT](SAVEPOINT.md),[ROLLBACK TO SAVEPOINT](ROLLBACK-TO-SAVEPOINT.md) - +# RELEASE SAVEPOINT + +## 功能描述 + +RELEASE SAVEPOINT 删除一个当前事务先前定义的保存点。 + +把一个保存点删除就令其无法作为回滚点使用,除此之外它没有其它用户可见的行为。它并不能撤销在保存点建立起来之后执行的命令的影响。要撤销那些命令可以使用 ROLLBACK TO SAVEPOINT 。在不再需要的时候删除一个保存点可以令系统在事务结束之前提前回收一些资源。 + +RELEASE SAVEPOINT 也删除所有在指定的保存点建立之后的所有保存点。 + +## 注意事项 + +- 不能 RELEASE 一个没有定义的保存点,语法上会报错。 +- 如果事务在回滚状态,则不能释放保存点。 +- 如果多个保存点拥有同样的名称,只有最近定义的那个才被释放。 + +## 语法格式 + +``` +RELEASE [ SAVEPOINT ] savepoint_name; +``` + +## 参数说明 + +**savepoint\_name** + +要删除的保存点的名称。 + +## 示例 + +``` +--创建一个新表。 +openGauss=# CREATE TABLE tpcds.table1(a int); + +--开启事务。 +openGauss=# START TRANSACTION; + +--插入数据。 +openGauss=# INSERT INTO tpcds.table1 VALUES (3); + +--建立保存点。 +openGauss=# SAVEPOINT my_savepoint; + +--插入数据。 +openGauss=# INSERT INTO tpcds.table1 VALUES (4); + +--删除保存点。 +openGauss=# RELEASE SAVEPOINT my_savepoint; + +--提交事务。 +openGauss=# COMMIT; + +--查询表的内容,会同时看到 3 和 4 。 +openGauss=# SELECT * FROM tpcds.table1; + +--删除表。 +openGauss=# DROP TABLE tpcds.table1; +``` + +## 相关链接 + +[SAVEPOINT](SAVEPOINT.md),[ROLLBACK TO SAVEPOINT](ROLLBACK-TO-SAVEPOINT.md) + diff --git a/content/zh/docs/Developerguide/REPLICATION_SLOTS.md b/content/zh/docs/Developerguide/REPLICATION_SLOTS.md index 6ead24fd6..3e33d50c7 100644 --- a/content/zh/docs/Developerguide/REPLICATION_SLOTS.md +++ b/content/zh/docs/Developerguide/REPLICATION_SLOTS.md @@ -1,88 +1,88 @@ -# REPLICATION\_SLOTS - -REPLICATION\_SLOTS视图用于查看复制节点的信息。 - -**表 1** REPLICATION\_SLOTS字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

slot_name

-

text

-

复制节点的名称。

-

plugin

-

text

-

插件名称。

-

slot_type

-

text

-

复制节点的类型。

-

datoid

-

oid

-

复制节点的数据库OID。

-

database

-

name

-

复制节点的数据库名称。

-

active

-

boolean

-

复制节点是否为激活状态。

-

xmin

-

xid

-

复制节点事务标识。

-

catalog_xmin

-

xid

-

逻辑复制槽对应的最早解码事务标识。

-

restart_lsn

-

text

-

复制节点的Xlog文件信息。

-

dummy_standby

-

boolean

-

复制节点是否为假备。

-
- +# REPLICATION\_SLOTS + +REPLICATION\_SLOTS视图用于查看复制节点的信息。 + +**表 1** REPLICATION\_SLOTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

slot_name

+

text

+

复制节点的名称。

+

plugin

+

text

+

插件名称。

+

slot_type

+

text

+

复制节点的类型。

+

datoid

+

oid

+

复制节点的数据库 OID 。

+

database

+

name

+

复制节点的数据库名称。

+

active

+

boolean

+

复制节点是否为激活状态。

+

xmin

+

xid

+

复制节点事务标识。

+

catalog_xmin

+

xid

+

逻辑复制槽对应的最早解码事务标识。

+

restart_lsn

+

text

+

复制节点的 Xlog 文件信息。

+

dummy_standby

+

boolean

+

复制节点是否为假备。

+
+ diff --git a/content/zh/docs/Developerguide/REPLICATION_STAT.md b/content/zh/docs/Developerguide/REPLICATION_STAT.md index b313f45b2..6ecee195d 100644 --- a/content/zh/docs/Developerguide/REPLICATION_STAT.md +++ b/content/zh/docs/Developerguide/REPLICATION_STAT.md @@ -1,133 +1,133 @@ -# REPLICATION\_STAT - -REPLICATION\_STAT用于描述日志同步状态信息,如发起端发送日志位置、收端接收日志位置等。 - -**表 1** REPLICATION\_STAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

pid

-

bigint

-

线程的PID。

-

usesysid

-

oid

-

用户系统ID。

-

usename

-

name

-

用户名。

-

application_name

-

text

-

程序名称。

-

client_addr

-

inet

-

客户端地址。

-

client_hostname

-

text

-

客户端名。

-

client_port

-

integer

-

客户端端口。

-

backend_start

-

timestamp with time zone

-

程序启动时间。

-

state

-

text

-

日志复制的状态: -

    -
  • 追赶状态。
  • -
  • 一致的流状态。
  • -

-

sender_sent_location

-

text

-

发送端发送日志位置。

-

receiver_write_location

-

text

-

接收端write日志位置。

-

receiver_flush_location

-

text

-

接收端flush日志位置。

-

receiver_replay_location

-

text

-

接收端replay日志位置。

-

sync_priority

-

integer

-

同步复制的优先级(0表示异步)。

-

sync_state

-

text

-

同步状态: -

    -
  • 异步复制。
  • -
  • 同步复制。
  • -
  • 潜在同步者。
-

-
- - +# REPLICATION\_STAT + +REPLICATION\_STAT用于描述日志同步状态信息,如发起端发送日志位置、收端接收日志位置等。 + +**表 1** REPLICATION\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

pid

+

bigint

+

线程的 PID 。

+

usesysid

+

oid

+

用户系统 ID 。

+

usename

+

name

+

用户名。

+

application_name

+

text

+

程序名称。

+

client_addr

+

inet

+

客户端地址。

+

client_hostname

+

text

+

客户端名。

+

client_port

+

integer

+

客户端端口。

+

backend_start

+

timestamp with time zone

+

程序启动时间。

+

state

+

text

+

日志复制的状态: +

    +
  • 追赶状态。
  • +
  • 一致的流状态。
  • +

+

sender_sent_location

+

text

+

发送端发送日志位置。

+

receiver_write_location

+

text

+

接收端 write 日志位置。

+

receiver_flush_location

+

text

+

接收端 flush 日志位置。

+

receiver_replay_location

+

text

+

接收端 replay 日志位置。

+

sync_priority

+

integer

+

同步复制的优先级(0表示异步)。

+

sync_state

+

text

+

同步状态: +

    +
  • 异步复制。
  • +
  • 同步复制。
  • +
  • 潜在同步者。
+

+
+ + diff --git a/content/zh/docs/Developerguide/RESET.md b/content/zh/docs/Developerguide/RESET.md index 41d3b0da7..ec3e7f7ad 100644 --- a/content/zh/docs/Developerguide/RESET.md +++ b/content/zh/docs/Developerguide/RESET.md @@ -1,63 +1,63 @@ -# RESET - -## 功能描述 - -RESET将指定的运行时参数恢复为缺省值。这些参数的缺省值是指postgresql.conf配置文件中所描述的参数缺省值。 - -RESET命令与如下命令的作用相同: - -SET configuration\_parameter TO DEFAULT - -## 注意事项 - -RESET的事务性行为和SET相同:它的影响将会被事务回滚撤销。 - -## 语法格式 - -``` -RESET {configuration_parameter | CURRENT_SCHEMA | TIME ZONE | TRANSACTION ISOLATION LEVEL | SESSION AUTHORIZATION | ALL }; -``` - -## 参数说明 - -- **configuration\_parameter** - - 运行时参数的名称。 - - 取值范围:可以使用SHOW ALL命令查看运行时参数。 - -- **CURRENT\_SCHEMA** - - 当前模式。 - -- **TIME ZONE** - - 时区。 - -- **TRANSACTION ISOLATION LEVEL** - - 事务的隔离级别。 - -- **SESSION AUTHORIZATION** - - 当前会话的用户标识符。 - -- **ALL** - - 所有运行时参数。 - - -## 示例 - -``` ---把timezone设为缺省值。 -openGauss=# RESET timezone; - ---把所有参数设置为缺省值。 -openGauss=# RESET ALL; -``` - -## 相关链接 - -[SET](SET.md),[SHOW](SHOW.md) - +# RESET + +## 功能描述 + +RESET 将指定的运行时参数恢复为缺省值。这些参数的缺省值是指postgresql.conf配置文件中所描述的参数缺省值。 + +RESET 命令与如下命令的作用相同: + +SET configuration\_parameter TO DEFAULT + +## 注意事项 + +RESET 的事务性行为和 SET 相同:它的影响将会被事务回滚撤销。 + +## 语法格式 + +``` +RESET {configuration_parameter | CURRENT_SCHEMA | TIME ZONE | TRANSACTION ISOLATION LEVEL | SESSION AUTHORIZATION | ALL }; +``` + +## 参数说明 + +- **configuration\_parameter** + + 运行时参数的名称。 + + 取值范围:可以使用 SHOW ALL 命令查看运行时参数。 + +- **CURRENT\_SCHEMA** + + 当前模式。 + +- **TIME ZONE** + + 时区。 + +- **TRANSACTION ISOLATION LEVEL** + + 事务的隔离级别。 + +- **SESSION AUTHORIZATION** + + 当前会话的用户标识符。 + +- **ALL** + + 所有运行时参数。 + + +## 示例 + +``` +--把 timezone 设为缺省值。 +openGauss=# RESET timezone; + +--把所有参数设置为缺省值。 +openGauss=# RESET ALL; +``` + +## 相关链接 + +[SET](SET.md),[SHOW](SHOW.md) + diff --git "a/content/zh/docs/Developerguide/RETURN-NEXT\345\217\212RETURN-QUERY.md" "b/content/zh/docs/Developerguide/RETURN-NEXT\345\217\212RETURN-QUERY.md" index 1a3bfa5fe..a16a5b18b 100644 --- "a/content/zh/docs/Developerguide/RETURN-NEXT\345\217\212RETURN-QUERY.md" +++ "b/content/zh/docs/Developerguide/RETURN-NEXT\345\217\212RETURN-QUERY.md" @@ -1,64 +1,64 @@ -# RETURN NEXT及RETURN QUERY - -## 语法 - -创建函数时需要指定返回值SETOF datatype。 - -return\_next\_clause::= - -![](figures/zh-cn_image_0253403489.png) - -return\_query\_clause::= - -![](figures/zh-cn_image_0253403490.png) - -对以上语法的解释如下: - -当需要函数返回一个集合时,使用RETURN NEXT或者RETURN QUERY向结果集追加结果,然后继续执行函数的下一条语句。随着后续的RETURN NEXT或RETURN QUERY命令的执行,结果集中会有多个结果。函数执行完成后会一起返回所有结果。 - -RETURN NEXT可用于标量和复合数据类型。 - -RETURN QUERY有一种变体RETURN QUERY EXECUTE,后面还可以增加动态查询,通过USING向查询插入参数。 - -## 示例 - -``` -openGauss=# CREATE TABLE t1(a int); -openGauss=# INSERT INTO t1 VALUES(1),(10); - ---RETURN NEXT -openGauss=# CREATE OR REPLACE FUNCTION fun_for_return_next() RETURNS SETOF t1 AS $$ -DECLARE - r t1%ROWTYPE; -BEGIN - FOR r IN select * from t1 - LOOP - RETURN NEXT r; - END LOOP; - RETURN; -END; -$$ LANGUAGE PLPGSQL; -openGauss=# call fun_for_return_next(); - a ---- - 1 - 10 -(2 rows) - --- RETURN QUERY -openGauss=# CREATE OR REPLACE FUNCTION fun_for_return_query() RETURNS SETOF t1 AS $$ -DECLARE - r t1%ROWTYPE; -BEGIN - RETURN QUERY select * from t1; -END; -$$ -language plpgsql; -openGauss=# call fun_for_return_query(); - a ---- - 1 - 10 -(2 rows) -``` - +# RETURN NEXT及RETURN QUERY + +## 语法 + +创建函数时需要指定返回值 SETOF datatype 。 + +return\_next\_clause::= + +![](figures/zh-cn_image_0253403489.png) + +return\_query\_clause::= + +![](figures/zh-cn_image_0253403490.png) + +对以上语法的解释如下: + +当需要函数返回一个集合时,使用 RETURN NEXT 或者 RETURN QUERY 向结果集追加结果,然后继续执行函数的下一条语句。随着后续的 RETURN NEXT 或 RETURN QUERY 命令的执行,结果集中会有多个结果。函数执行完成后会一起返回所有结果。 + +RETURN NEXT 可用于标量和复合数据类型。 + +RETURN QUERY 有一种变体 RETURN QUERY EXECUTE ,后面还可以增加动态查询,通过 USING 向查询插入参数。 + +## 示例 + +``` +openGauss=# CREATE TABLE t1(a int); +openGauss=# INSERT INTO t1 VALUES(1),(10); + +--RETURN NEXT +openGauss=# CREATE OR REPLACE FUNCTION fun_for_return_next() RETURNS SETOF t1 AS $$ +DECLARE + r t1%ROWTYPE; +BEGIN + FOR r IN select * from t1 + LOOP + RETURN NEXT r; + END LOOP; + RETURN; +END; +$$ LANGUAGE PLPGSQL; +openGauss=# call fun_for_return_next(); + a +--- + 1 + 10 +(2 rows) + +-- RETURN QUERY +openGauss=# CREATE OR REPLACE FUNCTION fun_for_return_query() RETURNS SETOF t1 AS $$ +DECLARE + r t1%ROWTYPE; +BEGIN + RETURN QUERY select * from t1; +END; +$$ +language plpgsql; +openGauss=# call fun_for_return_query(); + a +--- + 1 + 10 +(2 rows) +``` + diff --git a/content/zh/docs/Developerguide/RETURN.md b/content/zh/docs/Developerguide/RETURN.md index ddfb2c42c..4a1c21f0e 100644 --- a/content/zh/docs/Developerguide/RETURN.md +++ b/content/zh/docs/Developerguide/RETURN.md @@ -1,17 +1,17 @@ -# RETURN - -## 语法 - -返回语句的语法请参见[图1](#zh-cn_topic_0237122231_zh-cn_topic_0059778007_f7ff63e01e2a840c69a1c17b91e7dc3eb)。 - -**图 1** return\_clause::= -![](figures/return_clause.jpg "return_clause") - -对以上语法的解释如下: - -用于将控制从存储过程或函数返回给调用者。 - -## 示例 - -请参见调用语句的[示例](调用语句.md#zh-cn_topic_0237122223_zh-cn_topic_0059778001_scfc5c5fdac3e4a11a915ebac95b49f79)。 - +# RETURN + +## 语法 + +返回语句的语法请参见[图1](#zh-cn_topic_0237122231_zh-cn_topic_0059778007_f7ff63e01e2a840c69a1c17b91e7dc3eb)。 + +**图 1** return\_clause::= +![](figures/return_clause.jpg "return_clause") + +对以上语法的解释如下: + +用于将控制从存储过程或函数返回给调用者。 + +## 示例 + +请参见调用语句的[示例](调用语句.md#zh-cn_topic_0237122223_zh-cn_topic_0059778001_scfc5c5fdac3e4a11a915ebac95b49f79)。 + diff --git a/content/zh/docs/Developerguide/REVOKE.md b/content/zh/docs/Developerguide/REVOKE.md index 8729a3963..bf09b7993 100644 --- a/content/zh/docs/Developerguide/REVOKE.md +++ b/content/zh/docs/Developerguide/REVOKE.md @@ -1,243 +1,243 @@ -# REVOKE - -## 功能描述 - -REVOKE用于撤销一个或多个角色的权限。 - -## 注意事项 - -非对象所有者试图在对象上REVOKE权限,命令按照以下规则执行: - -- 如果授权用户没有该对象上的权限,则命令立即失败。 -- 如果授权用户有部分权限,则只撤销那些有授权选项的权限。 -- 如果授权用户没有授权选项,REVOKE ALL PRIVILEGES形式将发出一个错误信息,而对于其他形式的命令而言,如果是命令中指定名称的权限没有相应的授权选项,该命令将发出一个警告。 -- 不允许对表分区进行REVOKE操作,对分区表进行REVOKE操作会引起告警。 - -## 语法格式 - -- 回收指定表或视图上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM }[, ...] - | ALL [ PRIVILEGES ] } - ON { [ TABLE ] table_name [, ...] - | ALL TABLES IN SCHEMA schema_name [, ...] } - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收表上指定字段权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { {{ SELECT | INSERT | UPDATE | REFERENCES | COMMENT } ( column_name [, ...] )}[, ...] - | ALL [ PRIVILEGES ] ( column_name [, ...] ) } - ON [ TABLE ] table_name [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定序列上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { SELECT | UPDATE | ALTER | DROP | COMMENT }[, ...] - | ALL [ PRIVILEGES ] } - ON { [ SEQUENCE ] sequence_name [, ...] - | ALL SEQUENCES IN SCHEMA schema_name [, ...] } - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定数据库上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...] - | ALL [ PRIVILEGES ] } - ON DATABASE database_name [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定域上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { USAGE | ALL [ PRIVILEGES ] } - ON DOMAIN domain_name [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定客户端加密主密钥上的权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { USAGE | DROP } [, ...] | ALL [PRIVILEGES] } - ON CLIENT_MASTER_KEYS client_master_keys_name [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定列加密密钥上的权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { USAGE | DROP } [, ...] | ALL [PRIVILEGES]} - ON COLUMN_ENCRYPTION_KEYS column_encryption_keys_name [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定目录上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { READ | WRITE | ALTER |DROP } [, ...] | ALL [ PRIVILEGES ] } - ON DIRECTORY directory_name [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定外部数据源上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { USAGE | ALL [ PRIVILEGES ] } - ON FOREIGN DATA WRAPPER fdw_name [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定外部服务器上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON FOREIGN SERVER server_name [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定函数上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...] - | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定过程语言上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { USAGE | ALL [ PRIVILEGES ] } - ON LANGUAGE lang_name [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定大对象上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] } - ON LARGE OBJECT loid [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定模式上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { CREATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON SCHEMA schema_name [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定表空间上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { CREATE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON TABLESPACE tablespace_name [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收指定类型上权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } - ON TYPE type_name [, ...] - FROM { [ GROUP ] role_name | PUBLIC } [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收Data Source对象上的权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { USAGE | ALL [PRIVILEGES] } - ON DATA SOURCE src_name [, ...] - FROM {[GROUP] role_name | PUBLIC} [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收package对象的权限。 - - ``` - REVOKE [ GRANT OPTION FOR ] - { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [PRIVILEGES] } - ON PACKAGE package_name [, ...] - FROM {[GROUP] role_name | PUBLIC} [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 按角色回收角色上的权限。 - - ``` - REVOKE [ ADMIN OPTION FOR ] - role_name [, ...] FROM role_name [, ...] - [ CASCADE | RESTRICT ]; - ``` - -- 回收角色上的sysadmin权限。 - - ``` - REVOKE ALL { PRIVILEGES | PRIVILEGE } FROM role_name; - ``` - - -## 参数说明 - -关键字PUBLIC表示一个隐式定义的拥有所有角色的组。 - -权限类别和参数说明,请参见GRANT的[参数说明](GRANT.md#zh-cn_topic_0283137177_zh-cn_topic_0237122166_zh-cn_topic_0059778755_s3557d45c54124d86bc3f619358d806f8)。 - -任何特定角色拥有的特权包括直接授予该角色的特权、从该角色作为其成员的角色中得到的权限以及授予给PUBLIC的权限。因此,从PUBLIC收回SELECT特权并不一定会意味着所有角色都会失去在该对象上的SELECT特权,那些直接被授予的或者通过另一个角色被授予的角色仍然会拥有它。类似地,从一个用户收回SELECT后,如果PUBLIC仍有SELECT权限,该用户还是可以使用SELECT。 - -指定GRANT OPTION FOR时,只撤销对该权限授权的权力,而不撤销该权限本身。 - -如用户A拥有某个表的UPDATE权限,及WITH GRANT OPTION选项,同时A把这个权限赋予了用户B,则用户B持有的权限称为依赖性权限。当用户A持有的权限或者授权选项被撤销时,必须声明CASCADE,将所有依赖性权限都撤销。 - -一个用户只能撤销由它自己直接赋予的权限。例如,如果用户A被指定授权(WITH ADMIN OPTION)选项,且把一个权限赋予了用户B,然后用户B又赋予了用户C,则用户A不能直接将C的权限撤销。但是,用户A可以撤销用户B的授权选项,并且使用CASCADE。这样,用户C的权限就会自动被撤销。另外一个例子:如果A和B都赋予了C同样的权限,则A可以撤销他自己的授权选项,但是不能撤销B的,因此C仍然拥有该权限。 - -如果执行REVOKE的角色持有的权限是通过多层成员关系获得的,则具体是哪个包含的角色执行的该命令是不确定的。在这种场合下,最好的方法是使用SET ROLE成为特定角色,然后执行REVOKE,否则可能导致删除了不想删除的权限,或者是任何权限都没有删除。 - -## 示例 - -请参考GRANT的[示例](GRANT.md#zh-cn_topic_0283137177_zh-cn_topic_0237122166_zh-cn_topic_0059778755_s724dfb1c8978412b95cb308b64dfa447)。 - -## 相关链接 - -[GRANT](GRANT.md) - +# REVOKE + +## 功能描述 + +REVOKE 用于撤销一个或多个角色的权限。 + +## 注意事项 + +非对象所有者试图在对象上 REVOKE 权限,命令按照以下规则执行: + +- 如果授权用户没有该对象上的权限,则命令立即失败。 +- 如果授权用户有部分权限,则只撤销那些有授权选项的权限。 +- 如果授权用户没有授权选项, REVOKE ALL PRIVILEGES 形式将发出一个错误信息,而对于其他形式的命令而言,如果是命令中指定名称的权限没有相应的授权选项,该命令将发出一个警告。 +- 不允许对表分区进行 REVOKE 操作,对分区表进行 REVOKE 操作会引起告警。 + +## 语法格式 + +- 回收指定表或视图上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM }[, ...] + | ALL [ PRIVILEGES ] } + ON { [ TABLE ] table_name [, ...] + | ALL TABLES IN SCHEMA schema_name [, ...] } + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收表上指定字段权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { {{ SELECT | INSERT | UPDATE | REFERENCES | COMMENT } ( column_name [, ...] )}[, ...] + | ALL [ PRIVILEGES ] ( column_name [, ...] ) } + ON [ TABLE ] table_name [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定序列上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { SELECT | UPDATE | ALTER | DROP | COMMENT }[, ...] + | ALL [ PRIVILEGES ] } + ON { [ SEQUENCE ] sequence_name [, ...] + | ALL SEQUENCES IN SCHEMA schema_name [, ...] } + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定数据库上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...] + | ALL [ PRIVILEGES ] } + ON DATABASE database_name [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定域上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { USAGE | ALL [ PRIVILEGES ] } + ON DOMAIN domain_name [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定客户端加密主密钥上的权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { USAGE | DROP } [, ...] | ALL [PRIVILEGES] } + ON CLIENT_MASTER_KEYS client_master_keys_name [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定列加密密钥上的权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { USAGE | DROP } [, ...] | ALL [PRIVILEGES]} + ON COLUMN_ENCRYPTION_KEYS column_encryption_keys_name [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定目录上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { READ | WRITE | ALTER |DROP } [, ...] | ALL [ PRIVILEGES ] } + ON DIRECTORY directory_name [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定外部数据源上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { USAGE | ALL [ PRIVILEGES ] } + ON FOREIGN DATA WRAPPER fdw_name [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定外部服务器上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON FOREIGN SERVER server_name [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定函数上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...] + | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定过程语言上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { USAGE | ALL [ PRIVILEGES ] } + ON LANGUAGE lang_name [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定大对象上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] } + ON LARGE OBJECT loid [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定模式上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { CREATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON SCHEMA schema_name [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定表空间上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { CREATE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON TABLESPACE tablespace_name [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收指定类型上权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } + ON TYPE type_name [, ...] + FROM { [ GROUP ] role_name | PUBLIC } [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收 Data Source 对象上的权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { USAGE | ALL [PRIVILEGES] } + ON DATA SOURCE src_name [, ...] + FROM {[GROUP] role_name | PUBLIC} [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收 package 对象的权限。 + + ``` + REVOKE [ GRANT OPTION FOR ] + { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [PRIVILEGES] } + ON PACKAGE package_name [, ...] + FROM {[GROUP] role_name | PUBLIC} [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 按角色回收角色上的权限。 + + ``` + REVOKE [ ADMIN OPTION FOR ] + role_name [, ...] FROM role_name [, ...] + [ CASCADE | RESTRICT ]; + ``` + +- 回收角色上的 sysadmin 权限。 + + ``` + REVOKE ALL { PRIVILEGES | PRIVILEGE } FROM role_name; + ``` + + +## 参数说明 + +关键字 PUBLIC 表示一个隐式定义的拥有所有角色的组。 + +权限类别和参数说明,请参见 GRANT 的[参数说明](GRANT.md#zh-cn_topic_0283137177_zh-cn_topic_0237122166_zh-cn_topic_0059778755_s3557d45c54124d86bc3f619358d806f8)。 + +任何特定角色拥有的特权包括直接授予该角色的特权、从该角色作为其成员的角色中得到的权限以及授予给 PUBLIC 的权限。因此,从 PUBLIC 收回 SELECT 特权并不一定会意味着所有角色都会失去在该对象上的 SELECT 特权,那些直接被授予的或者通过另一个角色被授予的角色仍然会拥有它。类似地,从一个用户收回 SELECT 后,如果 PUBLIC 仍有 SELECT 权限,该用户还是可以使用 SELECT 。 + +指定 GRANT OPTION FOR 时,只撤销对该权限授权的权力,而不撤销该权限本身。 + +如用户 A 拥有某个表的 UPDATE 权限,及 WITH GRANT OPTION 选项,同时 A 把这个权限赋予了用户 B ,则用户 B 持有的权限称为依赖性权限。当用户 A 持有的权限或者授权选项被撤销时,必须声明 CASCADE ,将所有依赖性权限都撤销。 + +一个用户只能撤销由它自己直接赋予的权限。例如,如果用户 A 被指定授权(WITH ADMIN OPTION)选项,且把一个权限赋予了用户 B ,然后用户 B 又赋予了用户 C ,则用户 A 不能直接将 C 的权限撤销。但是,用户 A 可以撤销用户 B 的授权选项,并且使用 CASCADE 。这样,用户 C 的权限就会自动被撤销。另外一个例子:如果 A 和 B 都赋予了 C 同样的权限,则 A 可以撤销他自己的授权选项,但是不能撤销 B 的,因此 C 仍然拥有该权限。 + +如果执行 REVOKE 的角色持有的权限是通过多层成员关系获得的,则具体是哪个包含的角色执行的该命令是不确定的。在这种场合下,最好的方法是使用 SET ROLE 成为特定角色,然后执行 REVOKE ,否则可能导致删除了不想删除的权限,或者是任何权限都没有删除。 + +## 示例 + +请参考 GRANT 的[示例](GRANT.md#zh-cn_topic_0283137177_zh-cn_topic_0237122166_zh-cn_topic_0059778755_s724dfb1c8978412b95cb308b64dfa447)。 + +## 相关链接 + +[GRANT](GRANT.md) + diff --git a/content/zh/docs/Developerguide/ROLLBACK-PREPARED.md b/content/zh/docs/Developerguide/ROLLBACK-PREPARED.md index dc807afbe..3d9b1f98e 100644 --- a/content/zh/docs/Developerguide/ROLLBACK-PREPARED.md +++ b/content/zh/docs/Developerguide/ROLLBACK-PREPARED.md @@ -1,28 +1,28 @@ -# ROLLBACK PREPARED - -## 功能描述 - -取消一个先前为两阶段提交准备好的事务。 - -## 注意事项 - -- 该功能仅在维护模式\(GUC参数xc\_maintenance\_mode为on时\)下可用。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。 -- 要想回滚一个预备事务,必须是最初发起事务的用户,或者是系统管理员。 -- 事务功能由数据库自动维护,不应显式使用事务功能。 - -## 语法格式 - -``` -ROLLBACK PREPARED transaction_id ; -``` - -## 参数说明 - -**transaction\_id** - -待提交事务的标识符。它不能和任何当前预备事务已经使用了的标识符同名。 - -## 相关链接 - -[COMMIT PREPARED](COMMIT-PREPARED.md),[PREPARE TRANSACTION](PREPARE-TRANSACTION.md)。 - +# ROLLBACK PREPARED + +## 功能描述 + +取消一个先前为两阶段提交准备好的事务。 + +## 注意事项 + +- 该功能仅在维护模式\(GUC参数xc\_maintenance\_mode为 on 时\)下可用。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。 +- 要想回滚一个预备事务,必须是最初发起事务的用户,或者是系统管理员。 +- 事务功能由数据库自动维护,不应显式使用事务功能。 + +## 语法格式 + +``` +ROLLBACK PREPARED transaction_id ; +``` + +## 参数说明 + +**transaction\_id** + +待提交事务的标识符。它不能和任何当前预备事务已经使用了的标识符同名。 + +## 相关链接 + +[COMMIT PREPARED](COMMIT-PREPARED.md),[PREPARE TRANSACTION](PREPARE-TRANSACTION.md)。 + diff --git a/content/zh/docs/Developerguide/ROLLBACK-TO-SAVEPOINT.md b/content/zh/docs/Developerguide/ROLLBACK-TO-SAVEPOINT.md index 58d80b087..d5214ae86 100644 --- a/content/zh/docs/Developerguide/ROLLBACK-TO-SAVEPOINT.md +++ b/content/zh/docs/Developerguide/ROLLBACK-TO-SAVEPOINT.md @@ -1,53 +1,53 @@ -# ROLLBACK TO SAVEPOINT - -## 功能描述 - -ROLLBACK TO SAVEPOINT用于回滚到一个保存点,隐含地删除所有在该保存点之后建立的保存点。 - -回滚所有指定保存点建立之后执行的命令。保存点仍然有效,并且需要时可以再次回滚到该点。 - -## 注意事项 - -- 不能回滚到一个未定义的保存点,语法上会报错。 -- 在保存点方面,游标有一些非事务性的行为。任何在保存点里打开的游标都会在回滚掉这个保存点之后关闭。如果一个前面打开了的游标在保存点里面,并且游标被一个FETCH命令影响,而这个保存点稍后回滚了,那么这个游标的位置仍然在FETCH让它指向的位置(也就是FETCH不会被回滚)。关闭一个游标的行为也不会被回滚给撤消掉。如果一个游标的操作导致事务回滚,那么这个游标就会置于不可执行状态,所以,尽管一个事务可以用ROLLBACK TO SAVEPOINT重新恢复,但是游标不能再使用了。 -- 使用ROLLBACK TO SAVEPOINT回滚到一个保存点。使用RELEASE SAVEPOINT删除一个保存点,但是保留该保存点建立后执行的命令的效果。 - -## 语法格式 - -``` -ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name; -``` - -## 参数说明 - -savepoint\_name。 - -回滚截至的保存点。 - -## 示例 - -``` ---撤销 my_savepoint 建立之后执行的命令的影响。 -openGauss=# START TRANSACTION; -openGauss=# SAVEPOINT my_savepoint; -openGauss=# ROLLBACK TO SAVEPOINT my_savepoint; ---游标位置不受保存点回滚的影响。 -openGauss=# DECLARE foo CURSOR FOR SELECT 1 UNION SELECT 2; -openGauss=# SAVEPOINT foo; -openGauss=# FETCH 1 FROM foo; - ?column? ----------- - 1 -openGauss=# ROLLBACK TO SAVEPOINT foo; -openGauss=# FETCH 1 FROM foo; - ?column? ----------- - 2 -openGauss=# RELEASE SAVEPOINT my_savepoint; -openGauss=# COMMIT; -``` - -## 相关链接 - -[SAVEPOINT](SAVEPOINT.md),[RELEASE SAVEPOINT](RELEASE-SAVEPOINT.md) - +# ROLLBACK TO SAVEPOINT + +## 功能描述 + +ROLLBACK TO SAVEPOINT 用于回滚到一个保存点,隐含地删除所有在该保存点之后建立的保存点。 + +回滚所有指定保存点建立之后执行的命令。保存点仍然有效,并且需要时可以再次回滚到该点。 + +## 注意事项 + +- 不能回滚到一个未定义的保存点,语法上会报错。 +- 在保存点方面,游标有一些非事务性的行为。任何在保存点里打开的游标都会在回滚掉这个保存点之后关闭。如果一个前面打开了的游标在保存点里面,并且游标被一个 FETCH 命令影响,而这个保存点稍后回滚了,那么这个游标的位置仍然在 FETCH 让它指向的位置(也就是 FETCH 不会被回滚)。关闭一个游标的行为也不会被回滚给撤消掉。如果一个游标的操作导致事务回滚,那么这个游标就会置于不可执行状态,所以,尽管一个事务可以用 ROLLBACK TO SAVEPOINT 重新恢复,但是游标不能再使用了。 +- 使用 ROLLBACK TO SAVEPOINT 回滚到一个保存点。使用 RELEASE SAVEPOINT 删除一个保存点,但是保留该保存点建立后执行的命令的效果。 + +## 语法格式 + +``` +ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name; +``` + +## 参数说明 + +savepoint\_name。 + +回滚截至的保存点。 + +## 示例 + +``` +--撤销 my_savepoint 建立之后执行的命令的影响。 +openGauss=# START TRANSACTION; +openGauss=# SAVEPOINT my_savepoint; +openGauss=# ROLLBACK TO SAVEPOINT my_savepoint; +--游标位置不受保存点回滚的影响。 +openGauss=# DECLARE foo CURSOR FOR SELECT 1 UNION SELECT 2; +openGauss=# SAVEPOINT foo; +openGauss=# FETCH 1 FROM foo; + ?column? +---------- + 1 +openGauss=# ROLLBACK TO SAVEPOINT foo; +openGauss=# FETCH 1 FROM foo; + ?column? +---------- + 2 +openGauss=# RELEASE SAVEPOINT my_savepoint; +openGauss=# COMMIT; +``` + +## 相关链接 + +[SAVEPOINT](SAVEPOINT.md),[RELEASE SAVEPOINT](RELEASE-SAVEPOINT.md) + diff --git a/content/zh/docs/Developerguide/ROLLBACK.md b/content/zh/docs/Developerguide/ROLLBACK.md index 0457b475d..03a9b4beb 100644 --- a/content/zh/docs/Developerguide/ROLLBACK.md +++ b/content/zh/docs/Developerguide/ROLLBACK.md @@ -1,38 +1,38 @@ -# ROLLBACK - -## 功能描述 - -回滚当前事务并取消当前事务中的所有更新。 - -在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,数据库状态回到事务开始时。 - -## 注意事项 - -如果不在一个事务内部发出ROLLBACK不会有问题,但是将抛出一个NOTICE信息。 - -## 语法格式 - -``` -ROLLBACK [ WORK | TRANSACTION ]; -``` - -## 参数说明 - -**WORK | TRANSACTION** - -可选关键字。除了增加可读性,没有任何其他作用。 - -## 示例 - -``` ---开启一个事务 -openGauss=# START TRANSACTION; - ---取消所有更改 -openGauss=# ROLLBACK; -``` - -## 相关链接 - -[COMMIT | END](COMMIT-END.md) - +# ROLLBACK + +## 功能描述 + +回滚当前事务并取消当前事务中的所有更新。 + +在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,数据库状态回到事务开始时。 + +## 注意事项 + +如果不在一个事务内部发出 ROLLBACK 不会有问题,但是将抛出一个 NOTICE 信息。 + +## 语法格式 + +``` +ROLLBACK [ WORK | TRANSACTION ]; +``` + +## 参数说明 + +**WORK | TRANSACTION** + +可选关键字。除了增加可读性,没有任何其他作用。 + +## 示例 + +``` +--开启一个事务 +openGauss=# START TRANSACTION; + +--取消所有更改 +openGauss=# ROLLBACK; +``` + +## 相关链接 + +[COMMIT | END](COMMIT-END.md) + diff --git a/content/zh/docs/Developerguide/RTO.md b/content/zh/docs/Developerguide/RTO.md index 8e174715e..8b643f453 100644 --- a/content/zh/docs/Developerguide/RTO.md +++ b/content/zh/docs/Developerguide/RTO.md @@ -1,5 +1,5 @@ -# RTO - -- **[global\_rto\_status](global_rto_status.md)** - - +# RTO + +- **[global\_rto\_status](global_rto_status.md)** + + diff --git "a/content/zh/docs/Developerguide/Retry\347\256\241\347\220\206.md" "b/content/zh/docs/Developerguide/Retry\347\256\241\347\220\206.md" index 1fea5c74b..6dd5e3c12 100644 --- "a/content/zh/docs/Developerguide/Retry\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Developerguide/Retry\347\256\241\347\220\206.md" @@ -1,21 +1,21 @@ -# Retry管理 - -Retry是数据库在SQL或存储过程(包含匿名块)执行失败时,在数据库内部进行重新执行的过程,以提高执行成功率和用户体验。数据库内部通过检查发生错误时的错误码及Retry相关配置,决定是否进行重试。 - -- 失败时回滚之前执行的语句,并重新执行存储过程进行Retry。 - - 示例: - - ``` - openGauss=# CREATE OR REPLACE PROCEDURE retry_basic ( IN x INT) - AS - BEGIN - INSERT INTO t1 (a) VALUES (x); - INSERT INTO t1 (a) VALUES (x+1); - END; - / - - openGauss=# CALL retry_basic(1); - ``` - - +# Retry管理 + +Retry 是数据库在 SQL 或存储过程(包含匿名块)执行失败时,在数据库内部进行重新执行的过程,以提高执行成功率和用户体验。数据库内部通过检查发生错误时的错误码及 Retry 相关配置,决定是否进行重试。 + +- 失败时回滚之前执行的语句,并重新执行存储过程进行 Retry 。 + + 示例: + + ``` + openGauss=# CREATE OR REPLACE PROCEDURE retry_basic ( IN x INT) + AS + BEGIN + INSERT INTO t1 (a) VALUES (x); + INSERT INTO t1 (a) VALUES (x+1); + END; + / + + openGauss=# CALL retry_basic(1); + ``` + + diff --git a/content/zh/docs/Developerguide/SAVEPOINT.md b/content/zh/docs/Developerguide/SAVEPOINT.md index 673ee0b87..388e7f528 100644 --- a/content/zh/docs/Developerguide/SAVEPOINT.md +++ b/content/zh/docs/Developerguide/SAVEPOINT.md @@ -1,92 +1,92 @@ -# SAVEPOINT - -## 功能描述 - -SAVEPOINT用于在当前事务里建立一个新的保存点。 - -保存点是事务中的一个特殊记号,它允许将那些在它建立后执行的命令全部回滚,把事务的状态恢复到保存点所在的时刻。 - -## 注意事项 - -- 使用ROLLBACK TO SAVEPOINT回滚到一个保存点。使用RELEASE SAVEPOINT删除一个保存点,但是保留该保存点建立后执行的命令的效果。 -- 保存点只能在一个事务块里面建立。在一个事务里面可以定义多个保存点。 -- 由于节点故障或者通信故障引起的节点线程或进程退出导致的报错,以及由于COPY FROM操作中源数据与目标表的表结构不一致导致的报错,均不能正常回滚到保存点之前,而是整个事务回滚。 -- SQL标准要求,使用savepoint建立一个同名保存点时,需要自动删除前面那个同名保存点。在openGauss数据库里,我们将保留旧的保存点,但是在回滚或者释放的时候,只使用最近的那个。释放了新的保存点将导致旧的再次成为ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT可以访问的保存点。除此之外,SAVEPOINT是完全符合SQL标准的。 - -## 语法格式 - -``` -SAVEPOINT savepoint_name; -``` - -## 参数说明 - -savepoint\_name - -新建保存点的名称。 - -## 示例 - -``` ---创建一个新表。 -openGauss=# CREATE TABLE table1(a int); - ---开启事务。 -openGauss=# START TRANSACTION; - ---插入数据。 -openGauss=# INSERT INTO table1 VALUES (1); - ---建立保存点。 -openGauss=# SAVEPOINT my_savepoint; - ---插入数据。 -openGauss=# INSERT INTO table1 VALUES (2); - ---回滚保存点。 -openGauss=# ROLLBACK TO SAVEPOINT my_savepoint; - ---插入数据。 -openGauss=# INSERT INTO table1 VALUES (3); - ---提交事务。 -openGauss=# COMMIT; - ---查询表的内容,会同时看到1和3,不能看到2,因为2被回滚。 -openGauss=# SELECT * FROM table1; - ---删除表。 -openGauss=# DROP TABLE table1; - ---创建一个新表。 -openGauss=# CREATE TABLE table2(a int); - ---开启事务。 -openGauss=# START TRANSACTION; - ---插入数据。 -openGauss=# INSERT INTO table2 VALUES (3); - ---建立保存点。 -openGauss=# SAVEPOINT my_savepoint; - ---插入数据。 -openGauss=# INSERT INTO table2 VALUES (4); - ---回滚保存点。 -openGauss=# RELEASE SAVEPOINT my_savepoint; - ---提交事务。 -openGauss=# COMMIT; - ---查询表的内容,会同时看到3和4。 -openGauss=# SELECT * FROM table2; - ---删除表。 -openGauss=# DROP TABLE table2; -``` - -## 相关链接 - -[RELEASE SAVEPOINT](RELEASE-SAVEPOINT.md),[ROLLBACK TO SAVEPOINT](ROLLBACK-TO-SAVEPOINT.md) - +# SAVEPOINT + +## 功能描述 + +SAVEPOINT 用于在当前事务里建立一个新的保存点。 + +保存点是事务中的一个特殊记号,它允许将那些在它建立后执行的命令全部回滚,把事务的状态恢复到保存点所在的时刻。 + +## 注意事项 + +- 使用 ROLLBACK TO SAVEPOINT 回滚到一个保存点。使用 RELEASE SAVEPOINT 删除一个保存点,但是保留该保存点建立后执行的命令的效果。 +- 保存点只能在一个事务块里面建立。在一个事务里面可以定义多个保存点。 +- 由于节点故障或者通信故障引起的节点线程或进程退出导致的报错,以及由于 COPY FROM 操作中源数据与目标表的表结构不一致导致的报错,均不能正常回滚到保存点之前,而是整个事务回滚。 +- SQL标准要求,使用 savepoint 建立一个同名保存点时,需要自动删除前面那个同名保存点。在 openGauss 数据库里,我们将保留旧的保存点,但是在回滚或者释放的时候,只使用最近的那个。释放了新的保存点将导致旧的再次成为 ROLLBACK TO SAVEPOINT 和 RELEASE SAVEPOINT 可以访问的保存点。除此之外, SAVEPOINT 是完全符合 SQL 标准的。 + +## 语法格式 + +``` +SAVEPOINT savepoint_name; +``` + +## 参数说明 + +savepoint\_name + +新建保存点的名称。 + +## 示例 + +``` +--创建一个新表。 +openGauss=# CREATE TABLE table1(a int); + +--开启事务。 +openGauss=# START TRANSACTION; + +--插入数据。 +openGauss=# INSERT INTO table1 VALUES (1); + +--建立保存点。 +openGauss=# SAVEPOINT my_savepoint; + +--插入数据。 +openGauss=# INSERT INTO table1 VALUES (2); + +--回滚保存点。 +openGauss=# ROLLBACK TO SAVEPOINT my_savepoint; + +--插入数据。 +openGauss=# INSERT INTO table1 VALUES (3); + +--提交事务。 +openGauss=# COMMIT; + +--查询表的内容,会同时看到 1 和 3 ,不能看到 2 ,因为 2 被回滚。 +openGauss=# SELECT * FROM table1; + +--删除表。 +openGauss=# DROP TABLE table1; + +--创建一个新表。 +openGauss=# CREATE TABLE table2(a int); + +--开启事务。 +openGauss=# START TRANSACTION; + +--插入数据。 +openGauss=# INSERT INTO table2 VALUES (3); + +--建立保存点。 +openGauss=# SAVEPOINT my_savepoint; + +--插入数据。 +openGauss=# INSERT INTO table2 VALUES (4); + +--回滚保存点。 +openGauss=# RELEASE SAVEPOINT my_savepoint; + +--提交事务。 +openGauss=# COMMIT; + +--查询表的内容,会同时看到 3 和 4 。 +openGauss=# SELECT * FROM table2; + +--删除表。 +openGauss=# DROP TABLE table2; +``` + +## 相关链接 + +[RELEASE SAVEPOINT](RELEASE-SAVEPOINT.md),[ROLLBACK TO SAVEPOINT](ROLLBACK-TO-SAVEPOINT.md) + diff --git a/content/zh/docs/Developerguide/SELECT-INTO.md b/content/zh/docs/Developerguide/SELECT-INTO.md index 60cf69b0b..5cd906ccb 100644 --- a/content/zh/docs/Developerguide/SELECT-INTO.md +++ b/content/zh/docs/Developerguide/SELECT-INTO.md @@ -1,98 +1,98 @@ -# SELECT INTO - -## 功能描述 - -SELECT INTO用于根据查询结果创建一个新表,并且将查询到的数据插入到新表中。 - -数据并不返回给客户端,这一点和普通的SELECT不同。新表的字段具有和SELECT的输出字段相同的名称和数据类型。 - -## 注意事项 - -CREATE TABLE AS的作用和SELECT INTO类似,且提供了SELECT INTO所提供功能的超集。建议使用CREATE TABLE AS语法替代SELECT INTO,因为SELECT INTO不能在存储过程中使用。 - -## 语法格式 - -``` -[ WITH [ RECURSIVE ] with_query [, ...] ] -SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] - { * | {expression [ [ AS ] output_name ]} [, ...] } - INTO [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] [ TABLE ] new_table - [ FROM from_item [, ...] ] - [ WHERE condition ] - [ GROUP BY expression [, ...] ] - [ HAVING condition [, ...] ] - [ WINDOW {window_name AS ( window_definition )} [, ...] ] - [ { UNION | INTERSECT | EXCEPT | MINUS } [ ALL | DISTINCT ] select ] - [ ORDER BY {expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ]} [, ...] ] - [ LIMIT { count | ALL } ] - [ OFFSET start [ ROW | ROWS ] ] - [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] - [ {FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ]} [...] ]; -``` - -## 参数说明 - -- **new\_table** - - new\_table指定新建表的名称。 - - -- **UNLOGGED** - - 指定表为非日志表。在非日志表中写入的数据不会被写入到预写日志中,这样就会比普通表快很多。但是,它也是不安全的,非日志表在冲突或异常关机后会被自动删截。非日志表中的内容也不会被复制到备用服务器中。在该类表中创建的索引也不会被自动记录。 - - - 使用场景:非日志表不能保证数据的安全性,用户应该在确保数据已经做好备份的前提下使用,例如系统升级时进行数据的备份。 - - 故障处理:当异常关机等操作导致非日志表上的索引发生数据丢失时,用户应该对发生错误的索引进行重建。 - - -- **GLOBAL | LOCAL** - - 创建临时表时可以在TEMP或TEMPORARY前指定GLOBAL或LOCAL关键字。如果指定GLOBAL关键字,openGauss会创建全局临时表,否则openGauss会创建本地临时表。 - -- **TEMPORARY | TEMP** - - 如果指定TEMP或TEMPORARY关键字,则创建的表为临时表。临时表分为全局临时表和本地临时表两种类型。创建临时表时如果指定GLOBAL关键字则为全局临时表,否则为本地临时表。 - - 全局临时表的元数据对所有会话可见,会话结束后元数据继续存在。会话与会话之间的用户数据、索引和统计信息相互隔离,每个会话只能看到和更改自己提交的数据。全局临时表有两种模式:一种是基于会话级别的(ON COMMIT PRESERVE ROWS),当会话结束时自动清空用户数据;一种是基于事务级别的(ON COMMIT PRESERVE ROWS),当执行commit或rollback时自动清空用户数据。建表时如果没有指定ON COMMIT选项,则缺省为会话级别。与本地临时表不同,全局临时表建表时可以指定非pg\_temp\_开头的schema。 - - 由于临时表只在当前会话创建,对于涉及对临时表操作的DDL语句,会产生DDL失败的报错。因此,建议DDL语句中不要对临时表进行操作。TEMP和TEMPORARY等价。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - > - >- 本地临时表通过每个会话独立的以pg\_temp开头的schema来保证只对当前会话可见,因此,不建议用户在日常操作中手动删除以pg\_tem、pg\_toast\_temp开头的schema。 - > - >- 如果建表时不指定TEMPORARY/TEMP关键字,而指定表的schema为当前会话的pg\_temp\_开头的schema,则此表会被创建为临时表。 - > - >- ALTER/DROP全局临时表和索引,如果其它会话正在使用它,禁止操作。 - > - >- 全局临时表的DDL只会影响当前会话的用户数据和索引。例如truncate、reindex、analyze只对当前会话有效。 - - ->![](public_sys-resources/icon-note.gif) **说明:** ->SELECT INTO的其它参数可参考SELECT的[参数说明](SELECT.md#zh-cn_topic_0283136463_zh-cn_topic_0237122184_zh-cn_topic_0059777449_sa812f65b8e8c4c638ec7840697222ddc)。 - -## 示例 - -``` ---将tpcds.reason表中r_reason_sk小于5的值加入到新建表中。 -openGauss=# SELECT * INTO tpcds.reason_t1 FROM tpcds.reason WHERE r_reason_sk < 5; -INSERT 0 6 - ---删除tpcds.reason_t1表。 -openGauss=# DROP TABLE tpcds.reason_t1; -``` - -## 相关链接 - -[SELECT](SELECT.md) - -## 优化建议 - -- **DATABASE** - - 不建议在事务中reindex database。 - -- **SYSTEM** - - 不建议在事务中reindex系统表。 - +# SELECT INTO + +## 功能描述 + +SELECT INTO 用于根据查询结果创建一个新表,并且将查询到的数据插入到新表中。 + +数据并不返回给客户端,这一点和普通的 SELECT 不同。新表的字段具有和 SELECT 的输出字段相同的名称和数据类型。 + +## 注意事项 + +CREATE TABLE AS 的作用和 SELECT INTO 类似,且提供了 SELECT INTO 所提供功能的超集。建议使用 CREATE TABLE AS 语法替代 SELECT INTO ,因为 SELECT INTO 不能在存储过程中使用。 + +## 语法格式 + +``` +[ WITH [ RECURSIVE ] with_query [, ...] ] +SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] + { * | {expression [ [ AS ] output_name ]} [, ...] } + INTO [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] [ TABLE ] new_table + [ FROM from_item [, ...] ] + [ WHERE condition ] + [ GROUP BY expression [, ...] ] + [ HAVING condition [, ...] ] + [ WINDOW {window_name AS ( window_definition )} [, ...] ] + [ { UNION | INTERSECT | EXCEPT | MINUS } [ ALL | DISTINCT ] select ] + [ ORDER BY {expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ]} [, ...] ] + [ LIMIT { count | ALL } ] + [ OFFSET start [ ROW | ROWS ] ] + [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] + [ {FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ]} [...] ]; +``` + +## 参数说明 + +- **new\_table** + + new\_table指定新建表的名称。 + + +- **UNLOGGED** + + 指定表为非日志表。在非日志表中写入的数据不会被写入到预写日志中,这样就会比普通表快很多。但是,它也是不安全的,非日志表在冲突或异常关机后会被自动删截。非日志表中的内容也不会被复制到备用服务器中。在该类表中创建的索引也不会被自动记录。 + + - 使用场景:非日志表不能保证数据的安全性,用户应该在确保数据已经做好备份的前提下使用,例如系统升级时进行数据的备份。 + - 故障处理:当异常关机等操作导致非日志表上的索引发生数据丢失时,用户应该对发生错误的索引进行重建。 + + +- **GLOBAL | LOCAL** + + 创建临时表时可以在 TEMP 或 TEMPORARY 前指定 GLOBAL 或 LOCAL 关键字。如果指定 GLOBAL 关键字, openGauss 会创建全局临时表,否则 openGauss 会创建本地临时表。 + +- **TEMPORARY | TEMP** + + 如果指定 TEMP 或 TEMPORARY 关键字,则创建的表为临时表。临时表分为全局临时表和本地临时表两种类型。创建临时表时如果指定 GLOBAL 关键字则为全局临时表,否则为本地临时表。 + + 全局临时表的元数据对所有会话可见,会话结束后元数据继续存在。会话与会话之间的用户数据、索引和统计信息相互隔离,每个会话只能看到和更改自己提交的数据。全局临时表有两种模式:一种是基于会话级别的(ON COMMIT PRESERVE ROWS),当会话结束时自动清空用户数据;一种是基于事务级别的(ON COMMIT PRESERVE ROWS),当执行 commit 或 rollback 时自动清空用户数据。建表时如果没有指定 ON COMMIT 选项,则缺省为会话级别。与本地临时表不同,全局临时表建表时可以指定非pg\_temp\_开头的 schema 。 + + 由于临时表只在当前会话创建,对于涉及对临时表操作的 DDL 语句,会产生 DDL 失败的报错。因此,建议 DDL 语句中不要对临时表进行操作。 TEMP 和 TEMPORARY 等价。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + > + >- 本地临时表通过每个会话独立的以pg\_temp开头的 schema 来保证只对当前会话可见,因此,不建议用户在日常操作中手动删除以pg\_tem、pg\_toast\_temp开头的 schema 。 + > + >- 如果建表时不指定TEMPORARY/TEMP关键字,而指定表的 schema 为当前会话的pg\_temp\_开头的 schema ,则此表会被创建为临时表。 + > + >- ALTER/DROP全局临时表和索引,如果其它会话正在使用它,禁止操作。 + > + >- 全局临时表的 DDL 只会影响当前会话的用户数据和索引。例如truncate、reindex、analyze只对当前会话有效。 + + +>![](public_sys-resources/icon-note.gif) **说明:** +>SELECT INTO的其它参数可参考 SELECT 的[参数说明](SELECT.md#zh-cn_topic_0283136463_zh-cn_topic_0237122184_zh-cn_topic_0059777449_sa812f65b8e8c4c638ec7840697222ddc)。 + +## 示例 + +``` +--将tpcds.reason表中 r_reason_sk 小于 5 的值加入到新建表中。 +openGauss=# SELECT * INTO tpcds.reason_t1 FROM tpcds.reason WHERE r_reason_sk < 5; +INSERT 0 6 + +--删除tpcds.reason_t1表。 +openGauss=# DROP TABLE tpcds.reason_t1; +``` + +## 相关链接 + +[SELECT](SELECT.md) + +## 优化建议 + +- **DATABASE** + + 不建议在事务中 reindex database 。 + +- **SYSTEM** + + 不建议在事务中 reindex 系统表。 + diff --git a/content/zh/docs/Developerguide/SELECT.md b/content/zh/docs/Developerguide/SELECT.md index 73d8c71dc..ee442d23c 100644 --- a/content/zh/docs/Developerguide/SELECT.md +++ b/content/zh/docs/Developerguide/SELECT.md @@ -1,661 +1,661 @@ -# SELECT - -## 功能描述 - -SELECT用于从表或视图中取出数据。 - -SELECT语句就像叠加在数据库表上的过滤器,利用SQL关键字从数据表中过滤出用户需要的数据。 - -## 注意事项 - -- 必须对每个在SELECT命令中使用的字段有SELECT权限。 - -- 使用FOR UPDATE或FOR SHARE还要求UPDATE权限。 - -## 语法格式 - -- 查询数据 - -``` -[ WITH [ RECURSIVE ] with_query [, ...] ] -SELECT [/*+ plan_hint */] [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] -{ * | {expression [ [ AS ] output_name ]} [, ...] } -[ FROM from_item [, ...] ] -[ WHERE condition ] -[ GROUP BY grouping_element [, ...] ] -[ HAVING condition [, ...] ] -[ WINDOW {window_name AS ( window_definition )} [, ...] ] -[ { UNION | INTERSECT | EXCEPT | MINUS } [ ALL | DISTINCT ] select ] -[ ORDER BY {expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ]} [, ...] ] -[ LIMIT { [offset,] count | ALL } ] -[ OFFSET start [ ROW | ROWS ] ] -[ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] -[ {FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ]} [...] ]; -``` - ->![](public_sys-resources/icon-note.gif) **说明:** ->condition和expression中可以使用targetlist中表达式的别名。 -> ->- 只能同一层引用。 -> ->- 只能引用targetlist中的别名。 -> ->- 只能是后面的表达式引用前面的表达式。 -> ->- 不能包含volatile函数。 -> ->- 不能包含Window function函数。 -> ->- 不支持在join on条件中引用别名。 -> ->- targetlist中有多个要应用的别名则报错。 - -- 其中子查询with\_query为: - - ``` - with_query_name [ ( column_name [, ...] ) ] - AS ( {select | values | insert | update | delete} ) - ``` - -- 其中指定查询源from\_item为: - - ``` - {[ ONLY ] table_name [ * ] [ partition_clause ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ] - [ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ] - [TIMECAPSULE {TIMESTAMP|CSN} expression] - |( select ) [ AS ] alias [ ( column_alias [, ...] ) ] - |with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] - |function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ] - |function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] ) - |from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]} - ``` - -- 其中group子句为: - - ``` - ( ) - | expression - | ( expression [, ...] ) - | ROLLUP ( { expression | ( expression [, ...] ) } [, ...] ) - | CUBE ( { expression | ( expression [, ...] ) } [, ...] ) - | GROUPING SETS ( grouping_element [, ...] ) - ``` - -- 其中指定分区partition\_clause为: - - ``` - PARTITION { ( partition_name ) | - FOR ( partition_value [, ...] ) } - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >指定分区只适合普通表。 - -- 其中设置排序方式nlssort\_expression\_clause为: - - ``` - NLSSORT ( column_name, ' NLS_SORT = { SCHINESE_PINYIN_M | generic_m_ci } ' ) - ``` - -- 简化版查询语法,功能相当于select \* from table\_name。 - - ``` - TABLE { ONLY {(table_name)| table_name} | table_name [ * ]}; - ``` - - -## 参数说明 - -- **WITH \[ RECURSIVE \] with\_query \[, ...\]** - - 用于声明一个或多个可以在主查询中通过名称引用的子查询,相当于临时表。 - - 如果声明了RECURSIVE,那么允许SELECT子查询通过名称引用它自己。 - - 其中with\_query的详细格式为:with\_query\_name \[ \( column\_name \[, ...\] \) \] AS\( \{select | values | insert | update | delete\} \) - - - with\_query\_name指定子查询生成的结果集名称,在查询中可使用该名称访问子查询的结果集。 - - column\_name指定子查询结果集中显示的列名。 - - 每个子查询可以是SELECT、VALUES、INSERT、UPDATE或DELETE语句。 - - -- **plan\_hint子句** - - 以/\*+ \*/的形式在SELECT关键字后,用于对SELECT对应的语句块生成的计划进行hint调优,详细用法请参见章节[使用Plan Hint进行调优](使用Plan-Hint进行调优.md)。每条语句中只有第一个/\*+ plan\_hint \*/注释块会作为hint生效,里面可以写多条hint。 - -- **ALL** - - 声明返回所有符合条件的行,是默认行为,可以省略该关键字。 - -- **DISTINCT \[ ON \( expression \[, ...\] \) \]** - - 从SELECT的结果集中删除所有重复的行,使结果集中的每行都是唯一的。 - - ON \( expression \[, ...\] \) 只保留那些在给出的表达式上运算出相同结果的行集合中的第一行。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >DISTINCT ON表达式是使用与ORDER BY相同的规则进行解释的。除非使用了ORDER BY来保证需要的行首先出现,否则,“第一行” 是不可预测的。 - -- **SELECT列表** - - 指定查询表中列名,可以是部分列或者是全部(使用通配符\*表示)。 - - 通过使用子句AS output\_name可以为输出字段取个别名,这个别名通常用于输出字段的显示。支持关键字name、value和type作为列别名。 - - 列名可以用下面几种形式表达: - - - 手动输入列名,多个列之间用英文逗号(,)分隔。 - - 可以是FROM子句里面计算出来的字段。 - -- **FROM子句** - - 为SELECT声明一个或者多个源表。 - - FROM子句涉及的元素如下所示。 - - - table\_name - - 表名或视图名,名称前可加上模式名,如:schema\_name.table\_name。 - - - alias - - 给表或复杂的表引用起一个临时的表别名,以便被其余的查询引用。 - - 别名用于缩写或者在自连接中消除歧义。如果提供了别名,它就会完全隐藏表的实际名称。 - - - TABLESAMPLE _sampling\_method_ \( _argument_ \[, ...\] \) \[ REPEATABLE \( _seed_ \) \] - - _table\_name_之后的TABLESAMPLE子句表示应该用指定的_sampling\_method_来检索表中行的子集。 - - 可选的REPEATABLE子句指定一个用于产生采样方法中随机数的_种子_数。种子值可以是任何非空常量值。如果查询时表没有被更改,指定相同种子和_argument_值的两个查询将会选择该表相同的采样。但是不同的种子值通常将会产生不同的采样。如果没有给出REPEATABLE,则会基于一个系统产生的种子为每一个查询选择一个新的随机采样。 - - - TIMECAPSULE \{ TIMESTAMP | CSN \} expression - - 查询指定CSN点或者指定时间点表的内容。 - - 目前不支持闪回查询的表:系统表、列存表、内存表、DFS表、全局临时表、本地临时表、UNLOGGED表、分区表、视图、序列表、Hbkt表、共享表、继承表、带有PARTIAL CLUSTER KEY约束的表。 - - - TIMECAPSULE TIMESTAMP - - 关键字,闪回查询的标识,根据date日期,闪回查找指定时间点的结果集。date日期必须是一个过去有效的时间戳。 - - - TIMECAPSULE CSN - - 关键字,闪回查询的标识,根据表的CSN闪回查询指定CSN点的结果集。其中CSN可从gs_txn_snapshot记录的snpcsn号查得。 - - > ![img](https://opengauss.org/zh/docs/latest/docs/Developerguide/public_sys-resources/icon-note.gif) **说明:** - > - > - 闪回查询不能跨越影响表结构或物理存储的语句,否则会报错。即闪回点和当前点之间,如果执行过修改表结构或影响物理存储的语句(DDL、DCL、VACUUM FULL),则闪回失败,报错:ERROR: The table definition of T1 has been changed。 - > - 闪回点过旧时,因闪回版本被回收等导致无法获取旧版本会导致闪回失败,报错:Restore point too old。可通过将version_retention_age和vacuum_defer_cleanup_age设置成同值,配置闪回功能旧版本保留期限,取值范围是0~1000000,值为0表示VACUUM不会延迟清除无效的行存记录。 - > - 通过时间方式指定闪回点,闪回数据和实际时间点最多偏差为3秒。 - - - column_alias - - 列别名。 - - - PARTITION - - 查询分区表的某个分区的数据。 - - - partition_name - - 分区名。 - - - partition_value - - 指定的分区键值。在创建分区表时,如果指定了多个分区键,可以通过PARTITION FOR子句指定的这一组分区键的值,唯一确定一个分区。 - - - subquery - - FROM子句中可以出现子查询,创建一个临时表保存子查询的输出。 - - - with_query_name - - WITH子句同样可以作为FROM子句的源,可以通过WITH查询的名称对其进行引用。 - - - function_name - - 函数名称。函数调用也可以出现在FROM子句中。 - - - join_type - - 有5种类型,如下所示。 - - - [ INNER ] JOIN - - 一个JOIN子句组合两个FROM项。可使用圆括弧以决定嵌套的顺序。如果没有圆括弧,JOIN从左向右嵌套。 - - 在任何情况下,JOIN都比逗号分隔的FROM项绑定得更紧。 - - - LEFT [ OUTER ] JOIN - - 返回笛卡尔积中所有符合连接条件的行,再加上左表中通过连接条件没有匹配到右表行的那些行。这样,左边的行将扩展为生成表的全长,方法是在那些右表对应的字段位置填上NULL。请注意,只在计算匹配的时候,才使用JOIN子句的条件,外层的条件是在计算完毕之后施加的。 - - - RIGHT [ OUTER ] JOIN - - 返回所有内连接的结果行,加上每个不匹配的右边行(左边用NULL扩展)。 - - 这只是一个符号上的方便,因为总是可以把它转换成一个LEFT OUTER JOIN,只要把左边和右边的输入互换位置即可。 - - - FULL [ OUTER ] JOIN - - 返回所有内连接的结果行,加上每个不匹配的左边行(右边用NULL扩展),再加上每个不匹配的右边行(左边用NULL扩展)。 - - - CROSS JOIN - - CROSS JOIN等效于INNER JOIN ON(TRUE) ,即没有被条件删除的行。这种连接类型只是符号上的方便,因为它们与简单的FROM和WHERE的效果相同。 - - > ![img](https://opengauss.org/zh/docs/latest/docs/Developerguide/public_sys-resources/icon-note.gif) **说明:** 必须为INNER和OUTER连接类型声明一个连接条件,即NATURAL ON、join_condition、USING (join_column [, …]) 之一。但是它们不能出现在CROSS JOIN中。 - - 其中CROSS JOIN和INNER JOIN生成一个简单的笛卡尔积,和在FROM的顶层列出两个项的结果相同。 - - - ON join_condition - - 连接条件,用于限定连接中的哪些行是匹配的。如:ON left_table.a = right_table.a。 - - - USING(join_column[,…]) - - ON left_table.a = right_table.a AND left_table.b = right_table.b … 的简写。要求对应的列必须同名。 - - - NATURAL - - NATURAL是具有相同名称的两个表的所有列的USING列表的简写。 - - - from item - - 用于连接的查询源对象的名称。 - - -- **WHERE子句** - - WHERE子句构成一个行选择表达式,用来缩小SELECT查询的范围。condition是返回值为布尔型的任意表达式,任何不满足该条件的行都不会被检索。 - - WHERE子句中可以通过指定“\(+\)”操作符的方法将表的连接关系转换为外连接。但是不建议用户使用这种用法,因为这并不是SQL的标准语法,在做平台迁移的时候可能面临语法兼容性的问题。同时,使用“\(+\)”有很多限制: - - 1. “\(+\)”只能出现在where子句中。 - 2. 如果from子句中已经有指定表连接关系,那么不能再在where子句中使用“\(+\)”。 - 3. “\(+\)”只能作用在表或者视图的列上,不能作用在表达式上。 - 4. 如果表A和表B有多个连接条件,那么必须在所有的连接条件中指定“\(+\)”,否则“\(+\)”将不会生效,表连接会转化成内连接,并且不给出任何提示信息。 - 5. “\(+\)”作用的连接条件中的表不能跨查询或者子查询。如果“\(+\)”作用的表,不在当前查询或者子查询的from子句中,则会报错。如果“\(+\)”作用的对端的表不存在,则不报错,同时连接关系会转化为内连接。 - 6. “\(+\)”作用的表达式不能直接通过“OR”连接。 - 7. 如果“\(+\)”作用的列是和一个常量的比较关系, 那么这个表达式会成为join条件的一部分。 - 8. 同一个表不能对应多个外表。 - 9. “\(+\)”只能出现“比较表达式”,“NOT表达式”,“ANY表达式”,“ALL表达式”,“IN表达式”,“NULLIF表达式”,“IS DISTINCT FROM表达式”,“IS OF表达式”。“\(+\)”不能出现在其他类型表达式中,并且这些表达式中不允许出现通过“AND”和“OR”连接的表达式。 - 10. “\(+\)”只能转化为左外连接或者右外连接,不能转化为全连接,即不能在一个表达式的两个表上同时指定“\(+\)”。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >对于WHERE子句的LIKE操作符,当LIKE中要查询特殊字符“%”、“\_”、“\\”的时候需要使用反斜杠“\\”来进行转义。 - -- **START WITH** - - START WITH子句通常与CONNECT BY子句同时出现, 是一种递归语句对数据进行图遍历。START WITH代表递归的初始条数,CONNECT BY条件中可以对列指定PRIOR关键字。代表以这列为递归进行递归。当前约束只能对表中的列指定PRIOR,不支持对表达式、类型转换指定PRIOR关键字。 - -- **GROUP BY子句** - - 将查询结果按某一列或多列的值分组,值相等的为一组。 - - - CUBE \( \{ expression | \( expression \[, ...\] \) \} \[, ...\] \) - - CUBE是自动对group by子句中列出的字段进行分组汇总,结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。它会为每个分组返回一行汇总信息, 用户可以使用CUBE来产生交叉表值。比如,在CUBE子句中给出三个表达式(n = 3),运算结果为2n = 23 = 8组。 以n个表达式的值分组的行称为常规行,其余的行称为超级聚集行。 - - - GROUPING SETS \( grouping\_element \[, ...\] \) - - GROUPING SETS子句是GROUP BY子句的进一步扩展,它可以使用户指定多个GROUP BY选项。 这样做可以通过裁剪用户不需要的数据组来提高效率。 当用户指定了所需的数据组时,数据库不需要执行完整CUBE或ROLLUP生成的聚合集合。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >如果SELECT列表的表达式中引用了那些没有分组的字段,则会报错,除非使用了聚集函数,因为对于未分组的字段,可能返回多个数值。 - -- **HAVING子句** - - 与GROUP BY子句配合用来选择特殊的组。HAVING子句将组的一些属性与一个常数值比较,只有满足HAVING子句中的逻辑表达式的组才会被提取出来。 - -- **WINDOW子句** - - 一般形式为WINDOW window\_name AS \( window\_definition \) \[, ...\],window\_name是可以被随后的窗口定义所引用的名称,window\_definition可以是以下的形式: - - ``` - [ existing\_window\_name \] - - [ PARTITION BY expression \[, ...\] \] - - [ ORDER BY expression \[ ASC | DESC | USING operator \] \[ NULLS \{ FIRST | LAST \} \] \[, ...\] \] - - [ frame\_clause \] - ``` - - frame\_clause为窗函数定义一个窗口框架window frame,窗函数(并非所有)依赖于框架,window frame是当前查询行的一组相关行。frame\_clause可以是以下的形式: - - ``` - [ RANGE | ROWS \] frame\_start - - [ RANGE | ROWS \] BETWEEN frame\_start AND frame\_end - - frame\_start和frame\_end可以是: - - UNBOUNDED PRECEDING - - value PRECEDING - - CURRENT ROW - - value FOLLOWING - - UNBOUNDED FOLLOWING - ``` - - >![](public_sys-resources/icon-notice.gif) **须知:** - >对列存表的查询目前只支持row\_number窗口函数,不支持frame\_clause。 - -- **UNION子句** - - UNION计算多个SELECT语句返回行集合的并集。 - - UNION子句有如下约束条件: - - - 除非声明了ALL子句,否则缺省的UNION结果不包含重复的行。 - - 同一个SELECT语句中的多个UNION操作符是从左向右计算的,除非用圆括弧进行了标识。 - - FOR UPDATE不能在UNION的结果或输入中声明。 - - 一般表达式: - - select\_statement UNION \[ALL\] select\_statement - - - select\_statement可以是任何没有ORDER BY、LIMIT、FOR UPDATE子句的SELECT语句。 - - 如果用圆括弧包围,ORDER BY和LIMIT可以附着在子表达式里。 - -- **INTERSECT子句** - - INTERSECT计算多个SELECT语句返回行集合的交集,不含重复的记录。 - - INTERSECT子句有如下约束条件: - - - 同一个SELECT语句中的多个INTERSECT操作符是从左向右计算的,除非用圆括弧进行了标识。 - - 当对多个SELECT语句的执行结果进行UNION和INTERSECT操作的时候,会优先处理INTERSECT。 - - 一般形式: - - select\_statement INTERSECT select\_statement - - select\_statement可以是任何没有FOR UPDATE子句的SELECT语句。 - -- **EXCEPT子句** - - EXCEPT子句有如下的通用形式: - - select\_statement EXCEPT \[ ALL \] select\_statement - - select\_statement是任何没有FOR UPDATE子句的SELECT表达式。 - - EXCEPT操作符计算存在于左边SELECT语句的输出而不存在于右边SELECT语句输出的行。 - - EXCEPT的结果不包含任何重复的行,除非声明了ALL选项。使用ALL时,一个在左边表中有m个重复而在右边表中有n个重复的行将在结果中出现max\(m-n,0\) 次。 - - 除非用圆括弧指明顺序,否则同一个SELECT语句中的多个EXCEPT操作符是从左向右计算的。EXCEPT和UNION的绑定级别相同。 - - 目前,不能给EXCEPT的结果或者任何EXCEPT的输入声明FOR UPDATE子句。 - -- **MINUS子句** - - 与EXCEPT子句具有相同的功能和用法。 - -- **ORDER BY子句** - - 对SELECT语句检索得到的数据进行升序或降序排序。对于ORDER BY表达式中包含多列的情况: - - - 首先根据最左边的列进行排序,如果这一列的值相同,则根据下一个表达式进行比较,依此类推。 - - 如果对于所有声明的表达式都相同,则按随机顺序返回。 - - 在与DISTINCT关键字一起使用的情况下,ORDER BY中排序的列必须包括在SELECT语句所检索的结果集的列中。 - - 在与GROUP BY子句一起使用的情况下,ORDER BY中排序的列必须包括在SELECT语句所检索的结果集的列中。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >如果要支持中文拼音排序,需要在初始化数据库时指定编码格式为UTF-8或GBK。 命令如下: - >initdb –E UTF8 –D ../data –locale=zh\_CN.UTF-8或initdb –E GBK –D ../data –locale=zh\_CN.GBK。 - -- **LIMIT子句** - - LIMIT子句由两个独立的子句组成: - - LIMIT \{ count | ALL \} - - OFFSET start count声明返回的最大行数,而start声明开始返回行之前忽略的行数。如果两个都指定了,会在开始计算count个返回行之前先跳过start行。 - -- **OFFSET子句** - - SQL:2008开始提出一种不同的语法: - - OFFSET start \{ ROW | ROWS \} - - start声明开始返回行之前忽略的行数。 - -- **FETCH \{ FIRST | NEXT \} \[ count \] \{ ROW | ROWS \} ONLY** - - 如果不指定count,默认值为1,FETCH子句限定返回查询结果从第一行开始的总行数。 - -- **FOR UPDATE子句** - - FOR UPDATE子句将对SELECT检索出来的行进行加锁。这样避免它们在当前事务结束前被其他事务修改或者删除,即其他企图UPDATE、 DELETE、 SELECT FOR UPDATE这些行的事务将被阻塞,直到当前事务结束。 - - 为了避免操作等待其他事务提交,可使用NOWAIT选项,如果被选择的行不能立即被锁住,执行SELECT FOR UPDATE NOWAIT将会立即汇报一个错误,而不是等待。 - - FOR SHARE的行为类似,只是它在每个检索出来的行上要求一个共享锁,而不是一个排他锁。一个共享锁阻塞其它事务执行UPDATE、DELETE、SELECT,不阻塞SELECT FOR SHARE。 - - 如果在FOR UPDATE或FOR SHARE中明确指定了表名称,则只有这些指定的表被锁定,其他在SELECT中使用的表将不会被锁定。否则,将锁定该命令中所有使用的表。 - - 如果FOR UPDATE或FOR SHARE应用于一个视图或者子查询,它同样将锁定所有该视图或子查询中使用到的表。 - - 多个FOR UPDATE和FOR SHARE子句可以用于为不同的表指定不同的锁定模式。 - - 如果一个表中同时出现(或隐含同时出现)在FOR UPDATE和FOR SHARE子句中,则按照FOR UPDATE处理。类似的,如果影响一个表的任意子句中出现了NOWAIT,该表将按照NOWAIT处理。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - >对列存表的查询不支持for update/share。 - -- **NLS\_SORT** - - 指定某字段按照特殊方式排序。目前仅支持中文拼音格式排序和不区分大小写排序。 - - 取值范围: - - - SCHINESE\_PINYIN\_M,按照中文拼音排序。如果要支持此排序方式,在创建数据库时需要指定编码格式为“UTF8”或“GBK”,否则排序无效。 - - generic\_m\_ci,不区分大小写排序。 - -- **PARTITION子句** - - 查询某个分区表中相应分区的数据。 - - -## 示例 - -``` ---先通过子查询得到一张临时表temp_t,然后查询表temp_t中的所有数据。 -openGauss=# WITH temp_t(name,isdba) AS (SELECT usename,usesuper FROM pg_user) SELECT * FROM temp_t; - ---查询tpcds.reason表的所有r_reason_sk记录,且去除重复。 -openGauss=# SELECT DISTINCT(r_reason_sk) FROM tpcds.reason; - ---LIMIT子句示例:获取表中一条记录。 -openGauss=# SELECT * FROM tpcds.reason LIMIT 1; - ---查询所有记录,且按字母升序排列。 -openGauss=# SELECT r_reason_desc FROM tpcds.reason ORDER BY r_reason_desc; - ---通过表别名,从pg_user和pg_user_status这两张表中获取数据。 -openGauss=# SELECT a.usename,b.locktime FROM pg_user a,pg_user_status b WHERE a.usesysid=b.roloid; - ---FULL JOIN子句示例:将pg_user和pg_user_status这两张表的数据进行全连接显示,即数据的合集。 -openGauss=# SELECT a.usename,b.locktime,a.usesuper FROM pg_user a FULL JOIN pg_user_status b on a.usesysid=b.roloid; - ---GROUP BY子句示例:根据查询条件过滤,并对结果进行分组。 -openGauss=# SELECT r_reason_id, AVG(r_reason_sk) FROM tpcds.reason GROUP BY r_reason_id HAVING AVG(r_reason_sk) > 25; - ---GROUP BY CUBE子句示例:根据查询条件过滤,并对结果进行分组汇总。 -openGauss=# SELECT r_reason_id,AVG(r_reason_sk) FROM tpcds.reason GROUP BY CUBE(r_reason_id,r_reason_sk); - ---GROUP BY GROUPING SETS子句示例:根据查询条件过滤,并对结果进行分组汇总。 -openGauss=# SELECT r_reason_id,AVG(r_reason_sk) FROM tpcds.reason GROUP BY GROUPING SETS((r_reason_id,r_reason_sk),r_reason_sk); - ---UNION子句示例:将表tpcds.reason里r_reason_desc字段中的内容以W开头和以N开头的进行合并。 -openGauss=# SELECT r_reason_sk, tpcds.reason.r_reason_desc - FROM tpcds.reason - WHERE tpcds.reason.r_reason_desc LIKE 'W%' -UNION -SELECT r_reason_sk, tpcds.reason.r_reason_desc - FROM tpcds.reason - WHERE tpcds.reason.r_reason_desc LIKE 'N%'; - ---NLS_SORT子句示例:中文拼音排序。 -openGauss=# SELECT * FROM tpcds.reason ORDER BY NLSSORT( r_reason_desc, 'NLS_SORT = SCHINESE_PINYIN_M'); - - ---不区分大小写排序: -openGauss=# SELECT * FROM tpcds.reason ORDER BY NLSSORT( r_reason_desc, 'NLS_SORT = generic_m_ci'); - ---创建分区表tpcds.reason_p -openGauss=# CREATE TABLE tpcds.reason_p -( - r_reason_sk integer, - r_reason_id character(16), - r_reason_desc character(100) -) -PARTITION BY RANGE (r_reason_sk) -( - partition P_05_BEFORE values less than (05), - partition P_15 values less than (15), - partition P_25 values less than (25), - partition P_35 values less than (35), - partition P_45_AFTER values less than (MAXVALUE) -) -; - ---插入数据。 -openGauss=# INSERT INTO tpcds.reason_p values(3,'AAAAAAAABAAAAAAA','reason 1'),(10,'AAAAAAAABAAAAAAA','reason 2'),(4,'AAAAAAAABAAAAAAA','reason 3'),(10,'AAAAAAAABAAAAAAA','reason 4'),(10,'AAAAAAAABAAAAAAA','reason 5'),(20,'AAAAAAAACAAAAAAA','reason 6'),(30,'AAAAAAAACAAAAAAA','reason 7'); - ---PARTITION子句示例:从tpcds.reason_p的表分区P_05_BEFORE中获取数据。 -openGauss=# SELECT * FROM tpcds.reason_p PARTITION (P_05_BEFORE); - r_reason_sk | r_reason_id | r_reason_desc --------------+------------------+------------------------------------ - 4 | AAAAAAAABAAAAAAA | reason 3 - 3 | AAAAAAAABAAAAAAA | reason 1 -(2 rows) - ---GROUP BY子句示例:按r_reason_id分组统计tpcds.reason_p表中的记录数。 -openGauss=# SELECT COUNT(*),r_reason_id FROM tpcds.reason_p GROUP BY r_reason_id; - count | r_reason_id --------+------------------ - 2 | AAAAAAAACAAAAAAA - 5 | AAAAAAAABAAAAAAA -(2 rows) - ---GROUP BY CUBE子句示例:根据查询条件过滤,并对查询结果分组汇总。 -openGauss=# SELECT * FROM tpcds.reason GROUP BY CUBE (r_reason_id,r_reason_sk,r_reason_desc); - ---GROUP BY GROUPING SETS子句示例:根据查询条件过滤,并对查询结果分组汇总。 -openGauss=# SELECT * FROM tpcds.reason GROUP BY GROUPING SETS ((r_reason_id,r_reason_sk),r_reason_desc); - ---HAVING子句示例:按r_reason_id分组统计tpcds.reason_p表中的记录,并只显示r_reason_id个数大于2的信息。 -openGauss=# SELECT COUNT(*) c,r_reason_id FROM tpcds.reason_p GROUP BY r_reason_id HAVING c>2; - c | r_reason_id ----+------------------ - 5 | AAAAAAAABAAAAAAA -(1 row) - ---IN子句示例:按r_reason_id分组统计tpcds.reason_p表中的r_reason_id个数,并只显示r_reason_id值为 AAAAAAAABAAAAAAA或AAAAAAAADAAAAAAA的个数。 -openGauss=# SELECT COUNT(*),r_reason_id FROM tpcds.reason_p GROUP BY r_reason_id HAVING r_reason_id IN('AAAAAAAABAAAAAAA','AAAAAAAADAAAAAAA'); -count | r_reason_id --------+------------------ - 5 | AAAAAAAABAAAAAAA -(1 row) - ---INTERSECT子句示例:查询r_reason_id等于AAAAAAAABAAAAAAA,并且r_reason_sk小于5的信息。 -openGauss=# SELECT * FROM tpcds.reason_p WHERE r_reason_id='AAAAAAAABAAAAAAA' INTERSECT SELECT * FROM tpcds.reason_p WHERE r_reason_sk<5; - r_reason_sk | r_reason_id | r_reason_desc --------------+------------------+------------------------------------ - 4 | AAAAAAAABAAAAAAA | reason 3 - 3 | AAAAAAAABAAAAAAA | reason 1 -(2 rows) - ---EXCEPT子句示例:查询r_reason_id等于AAAAAAAABAAAAAAA,并且去除r_reason_sk小于4的信息。 -openGauss=# SELECT * FROM tpcds.reason_p WHERE r_reason_id='AAAAAAAABAAAAAAA' EXCEPT SELECT * FROM tpcds.reason_p WHERE r_reason_sk<4; -r_reason_sk | r_reason_id | r_reason_desc --------------+------------------+------------------------------------ - 10 | AAAAAAAABAAAAAAA | reason 2 - 10 | AAAAAAAABAAAAAAA | reason 5 - 10 | AAAAAAAABAAAAAAA | reason 4 - 4 | AAAAAAAABAAAAAAA | reason 3 -(4 rows) - ---通过在where子句中指定"(+)"来实现左连接。 -openGauss=# select t1.sr_item_sk ,t2.c_customer_id from store_returns t1, customer t2 where t1.sr_customer_sk = t2.c_customer_sk(+) -order by 1 desc limit 1; - sr_item_sk | c_customer_id -------------+--------------- - 18000 | -(1 row) - ---通过在where子句中指定"(+)"来实现右连接。 -openGauss=# select t1.sr_item_sk ,t2.c_customer_id from store_returns t1, customer t2 where t1.sr_customer_sk(+) = t2.c_customer_sk -order by 1 desc limit 1; - sr_item_sk | c_customer_id -------------+------------------ - | AAAAAAAAJNGEBAAA -(1 row) - ---通过在where子句中指定"(+)"来实现左连接,并且增加连接条件。 -openGauss=# select t1.sr_item_sk ,t2.c_customer_id from store_returns t1, customer t2 where t1.sr_customer_sk = t2.c_customer_sk(+) and t2.c_customer_sk(+) < 1 order by 1 limit 1; - sr_item_sk | c_customer_id -------------+--------------- - 1 | -(1 row) - ---不支持在where子句中指定"(+)"的同时使用内层嵌套AND/OR的表达式。 -openGauss=# select t1.sr_item_sk ,t2.c_customer_id from store_returns t1, customer t2 where not(t1.sr_customer_sk = t2.c_customer_sk(+) and t2.c_customer_sk(+) < 1); -ERROR: Operator "(+)" can not be used in nesting expression. -LINE 1: ...tomer_id from store_returns t1, customer t2 where not(t1.sr_... - ^ ---where子句在不支持表达式宏指定"(+)"会报错。 -openGauss=# select t1.sr_item_sk ,t2.c_customer_id from store_returns t1, customer t2 where (t1.sr_customer_sk = t2.c_customer_sk(+))::bool; -ERROR: Operator "(+)" can only be used in common expression. - ---where子句在表达式的两边都指定"(+)"会报错。 -openGauss=# select t1.sr_item_sk ,t2.c_customer_id from store_returns t1, customer t2 where t1.sr_customer_sk(+) = t2.c_customer_sk(+); -ERROR: Operator "(+)" can't be specified on more than one relation in one join condition -HINT: "t1", "t2"...are specified Operator "(+)" in one condition. - ---删除表。 -openGauss=# DROP TABLE tpcds.reason_p; - ---闪回查询示例 ---创建表tpcds.time_table -openGauss=# create table tpcds.time_table(idx integer, snaptime timestamp, snapcsn bigint, timeDesc character(100)); ---向表tpcds.time_table中插入记录 -openGauss=# INSERT INTO tpcds.time_table select 1, now(),int8in(xidout(next_csn)), 'time1' from gs_get_next_xid_csn(); -openGauss=# INSERT INTO tpcds.time_table select 2, now(),int8in(xidout(next_csn)), 'time2' from gs_get_next_xid_csn(); -openGauss=# INSERT INTO tpcds.time_table select 3, now(),int8in(xidout(next_csn)), 'time3' from gs_get_next_xid_csn(); -openGauss=# INSERT INTO tpcds.time_table select 4, now(),int8in(xidout(next_csn)), 'time4' from gs_get_next_xid_csn(); -openGauss=# select * from tpcds.time_table; - - idx | snaptime | snapcsn | timedesc ------+----------------------------+---------+------------------------------------------------------------------------------------------------------ - 1 | 2021-04-25 17:50:05.360326 | 107322 | time1 - 2 | 2021-04-25 17:50:10.886848 | 107324 | time2 - 3 | 2021-04-25 17:50:16.12921 | 107327 | time3 - 4 | 2021-04-25 17:50:22.311176 | 107330 | time4 -(4 rows) -openGauss=# delete tpcds.time_table; -DELETE 4 -openGauss=# SELECT * FROM tpcds.time_table TIMECAPSULE TIMESTAMP to_timestamp('2021-04-25 17:50:22.311176','YYYY-MM-DD HH24:MI:SS.FF'); - idx | snaptime | snapcsn | timedesc ------+----------------------------+---------+------------------------------------------------------------------------------------------------------ - 1 | 2021-04-25 17:50:05.360326 | 107322 | time1 - 2 | 2021-04-25 17:50:10.886848 | 107324 | time2 - 3 | 2021-04-25 17:50:16.12921 | 107327 | time3 -(3 rows) -openGauss=# SELECT * FROM tpcds.time_table TIMECAPSULE CSN 107330; - idx | snaptime | snapcsn | timedesc ------+----------------------------+---------+------------------------------------------------------------------------------------------------------ - 1 | 2021-04-25 17:50:05.360326 | 107322 | time1 - 2 | 2021-04-25 17:50:10.886848 | 107324 | time2 - 3 | 2021-04-25 17:50:16.12921 | 107327 | time3 -(3 rows) -``` - +# SELECT + +## 功能描述 + +SELECT 用于从表或视图中取出数据。 + +SELECT 语句就像叠加在数据库表上的过滤器,利用 SQL 关键字从数据表中过滤出用户需要的数据。 + +## 注意事项 + +- 必须对每个在 SELECT 命令中使用的字段有 SELECT 权限。 + +- 使用 FOR UPDATE 或 FOR SHARE 还要求 UPDATE 权限。 + +## 语法格式 + +- 查询数据 + +``` +[ WITH [ RECURSIVE ] with_query [, ...] ] +SELECT [/*+ plan_hint */] [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] +{ * | {expression [ [ AS ] output_name ]} [, ...] } +[ FROM from_item [, ...] ] +[ WHERE condition ] +[ GROUP BY grouping_element [, ...] ] +[ HAVING condition [, ...] ] +[ WINDOW {window_name AS ( window_definition )} [, ...] ] +[ { UNION | INTERSECT | EXCEPT | MINUS } [ ALL | DISTINCT ] select ] +[ ORDER BY {expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ]} [, ...] ] +[ LIMIT { [offset,] count | ALL } ] +[ OFFSET start [ ROW | ROWS ] ] +[ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] +[ {FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ]} [...] ]; +``` + +>![](public_sys-resources/icon-note.gif) **说明:** +>condition和 expression 中可以使用 targetlist 中表达式的别名。 +> +>- 只能同一层引用。 +> +>- 只能引用 targetlist 中的别名。 +> +>- 只能是后面的表达式引用前面的表达式。 +> +>- 不能包含 volatile 函数。 +> +>- 不能包含 Window function 函数。 +> +>- 不支持在 join on 条件中引用别名。 +> +>- targetlist中有多个要应用的别名则报错。 + +- 其中子查询with\_query为: + + ``` + with_query_name [ ( column_name [, ...] ) ] + AS ( {select | values | insert | update | delete} ) + ``` + +- 其中指定查询源from\_item为: + + ``` + {[ ONLY ] table_name [ * ] [ partition_clause ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ] + [ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ] + [TIMECAPSULE {TIMESTAMP|CSN} expression] + |( select ) [ AS ] alias [ ( column_alias [, ...] ) ] + |with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] + |function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ] + |function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] ) + |from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]} + ``` + +- 其中 group 子句为: + + ``` + ( ) + | expression + | ( expression [, ...] ) + | ROLLUP ( { expression | ( expression [, ...] ) } [, ...] ) + | CUBE ( { expression | ( expression [, ...] ) } [, ...] ) + | GROUPING SETS ( grouping_element [, ...] ) + ``` + +- 其中指定分区partition\_clause为: + + ``` + PARTITION { ( partition_name ) | + FOR ( partition_value [, ...] ) } + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >指定分区只适合普通表。 + +- 其中设置排序方式nlssort\_expression\_clause为: + + ``` + NLSSORT ( column_name, ' NLS_SORT = { SCHINESE_PINYIN_M | generic_m_ci } ' ) + ``` + +- 简化版查询语法,功能相当于select \* from table\_name。 + + ``` + TABLE { ONLY {(table_name)| table_name} | table_name [ * ]}; + ``` + + +## 参数说明 + +- **WITH \[ RECURSIVE \] with\_query \[, ...\]** + + 用于声明一个或多个可以在主查询中通过名称引用的子查询,相当于临时表。 + + 如果声明了 RECURSIVE ,那么允许 SELECT 子查询通过名称引用它自己。 + + 其中with\_query的详细格式为:with\_query\_name \[ \( column\_name \[, ...\] \) \] AS\( \{select | values | insert | update | delete\} \) + + - with\_query\_name指定子查询生成的结果集名称,在查询中可使用该名称访问子查询的结果集。 + - column\_name指定子查询结果集中显示的列名。 + - 每个子查询可以是SELECT、VALUES、INSERT、UPDATE或 DELETE 语句。 + + +- **plan\_hint子句** + + 以/\*+ \*/的形式在 SELECT 关键字后,用于对 SELECT 对应的语句块生成的计划进行 hint 调优,详细用法请参见章节[使用 Plan Hint 进行调优](使用Plan-Hint进行调优.md)。每条语句中只有第一个/\*+ plan\_hint \*/注释块会作为 hint 生效,里面可以写多条 hint 。 + +- **ALL** + + 声明返回所有符合条件的行,是默认行为,可以省略该关键字。 + +- **DISTINCT \[ ON \( expression \[, ...\] \) \]** + + 从 SELECT 的结果集中删除所有重复的行,使结果集中的每行都是唯一的。 + + ON \( expression \[, ...\] \) 只保留那些在给出的表达式上运算出相同结果的行集合中的第一行。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >DISTINCT ON表达式是使用与 ORDER BY 相同的规则进行解释的。除非使用了 ORDER BY 来保证需要的行首先出现,否则,“第一行” 是不可预测的。 + +- **SELECT列表** + + 指定查询表中列名,可以是部分列或者是全部(使用通配符\*表示)。 + + 通过使用子句AS output\_name可以为输出字段取个别名,这个别名通常用于输出字段的显示。支持关键字name、value和 type 作为列别名。 + + 列名可以用下面几种形式表达: + + - 手动输入列名,多个列之间用英文逗号(,)分隔。 + - 可以是 FROM 子句里面计算出来的字段。 + +- **FROM子句** + + 为 SELECT 声明一个或者多个源表。 + +FROM 子句涉及的元素如下所示。 + + - table\_name + + 表名或视图名,名称前可加上模式名,如:schema\_name.table\_name。 + + - alias + + 给表或复杂的表引用起一个临时的表别名,以便被其余的查询引用。 + + 别名用于缩写或者在自连接中消除歧义。如果提供了别名,它就会完全隐藏表的实际名称。 + + - TABLESAMPLE _sampling\_method_ \( _argument_ \[, ...\] \) \[ REPEATABLE \( _seed_ \) \] + + _table\_name_之后的 TABLESAMPLE 子句表示应该用指定的_sampling\_method_来检索表中行的子集。 + + 可选的 REPEATABLE 子句指定一个用于产生采样方法中随机数的_种子_数。种子值可以是任何非空常量值。如果查询时表没有被更改,指定相同种子和 _argument_ 值的两个查询将会选择该表相同的采样。但是不同的种子值通常将会产生不同的采样。如果没有给出 REPEATABLE ,则会基于一个系统产生的种子为每一个查询选择一个新的随机采样。 + + - TIMECAPSULE \{ TIMESTAMP | CSN \} expression + + 查询指定 CSN 点或者指定时间点表的内容。 + + 目前不支持闪回查询的表:系统表、列存表、内存表、DFS表、全局临时表、本地临时表、UNLOGGED表、分区表、视图、序列表、Hbkt表、共享表、继承表、带有 PARTIAL CLUSTER KEY 约束的表。 + + - TIMECAPSULE TIMESTAMP + + 关键字,闪回查询的标识,根据 date 日期,闪回查找指定时间点的结果集。 date 日期必须是一个过去有效的时间戳。 + + - TIMECAPSULE CSN + + 关键字,闪回查询的标识,根据表的 CSN 闪回查询指定 CSN 点的结果集。其中 CSN 可从 gs_txn_snapshot 记录的 snpcsn 号查得。 + + > ![img](https://opengauss.org/zh/docs/latest/docs/Developerguide/public_sys-resources/icon-note.gif) **说明:** + > + > - 闪回查询不能跨越影响表结构或物理存储的语句,否则会报错。即闪回点和当前点之间,如果执行过修改表结构或影响物理存储的语句(DDL、DCL、VACUUM FULL),则闪回失败,报错:ERROR: The table definition of T1 has been changed。 + > - 闪回点过旧时,因闪回版本被回收等导致无法获取旧版本会导致闪回失败,报错:Restore point too old。可通过将 version_retention_age 和 vacuum_defer_cleanup_age 设置成同值,配置闪回功能旧版本保留期限,取值范围是0~1000000,值为 0 表示 VACUUM 不会延迟清除无效的行存记录。 + > - 通过时间方式指定闪回点,闪回数据和实际时间点最多偏差为 3 秒。 + + - column_alias + + 列别名。 + + - PARTITION + + 查询分区表的某个分区的数据。 + + - partition_name + + 分区名。 + + - partition_value + + 指定的分区键值。在创建分区表时,如果指定了多个分区键,可以通过 PARTITION FOR 子句指定的这一组分区键的值,唯一确定一个分区。 + + - subquery + +FROM 子句中可以出现子查询,创建一个临时表保存子查询的输出。 + + - with_query_name + +WITH 子句同样可以作为 FROM 子句的源,可以通过 WITH 查询的名称对其进行引用。 + + - function_name + + 函数名称。函数调用也可以出现在 FROM 子句中。 + + - join_type + + 有 5 种类型,如下所示。 + + - [ INNER ] JOIN + + 一个 JOIN 子句组合两个 FROM 项。可使用圆括弧以决定嵌套的顺序。如果没有圆括弧, JOIN 从左向右嵌套。 + + 在任何情况下, JOIN 都比逗号分隔的 FROM 项绑定得更紧。 + + - LEFT [ OUTER ] JOIN + + 返回笛卡尔积中所有符合连接条件的行,再加上左表中通过连接条件没有匹配到右表行的那些行。这样,左边的行将扩展为生成表的全长,方法是在那些右表对应的字段位置填上 NULL 。请注意,只在计算匹配的时候,才使用 JOIN 子句的条件,外层的条件是在计算完毕之后施加的。 + + - RIGHT [ OUTER ] JOIN + + 返回所有内连接的结果行,加上每个不匹配的右边行(左边用 NULL 扩展)。 + + 这只是一个符号上的方便,因为总是可以把它转换成一个 LEFT OUTER JOIN ,只要把左边和右边的输入互换位置即可。 + + - FULL [ OUTER ] JOIN + + 返回所有内连接的结果行,加上每个不匹配的左边行(右边用 NULL 扩展),再加上每个不匹配的右边行(左边用 NULL 扩展)。 + + - CROSS JOIN + +CROSS JOIN 等效于INNER JOIN ON(TRUE) ,即没有被条件删除的行。这种连接类型只是符号上的方便,因为它们与简单的 FROM 和 WHERE 的效果相同。 + + > ![img](https://opengauss.org/zh/docs/latest/docs/Developerguide/public_sys-resources/icon-note.gif) **说明:** 必须为 INNER 和 OUTER 连接类型声明一个连接条件,即NATURAL ON、join_condition、USING (join_column [, …]) 之一。但是它们不能出现在 CROSS JOIN 中。 + + 其中 CROSS JOIN 和 INNER JOIN 生成一个简单的笛卡尔积,和在 FROM 的顶层列出两个项的结果相同。 + + - ON join_condition + + 连接条件,用于限定连接中的哪些行是匹配的。如:ON left_table.a = right_table.a。 + + - USING(join_column[,…]) + + ON left_table.a = right_table.a AND left_table.b = right_table.b … 的简写。要求对应的列必须同名。 + + - NATURAL + +NATURAL 是具有相同名称的两个表的所有列的 USING 列表的简写。 + + - from item + + 用于连接的查询源对象的名称。 + + +- **WHERE子句** + +WHERE 子句构成一个行选择表达式,用来缩小 SELECT 查询的范围。 condition 是返回值为布尔型的任意表达式,任何不满足该条件的行都不会被检索。 + +WHERE 子句中可以通过指定“\(+\)”操作符的方法将表的连接关系转换为外连接。但是不建议用户使用这种用法,因为这并不是 SQL 的标准语法,在做平台迁移的时候可能面临语法兼容性的问题。同时,使用“\(+\)”有很多限制: + + 1. “\(+\)”只能出现在 where 子句中。 + 2. 如果 from 子句中已经有指定表连接关系,那么不能再在 where 子句中使用“\(+\)”。 + 3. “\(+\)”只能作用在表或者视图的列上,不能作用在表达式上。 + 4. 如果表 A 和表 B 有多个连接条件,那么必须在所有的连接条件中指定“\(+\)”,否则“\(+\)”将不会生效,表连接会转化成内连接,并且不给出任何提示信息。 + 5. “\(+\)”作用的连接条件中的表不能跨查询或者子查询。如果“\(+\)”作用的表,不在当前查询或者子查询的 from 子句中,则会报错。如果“\(+\)”作用的对端的表不存在,则不报错,同时连接关系会转化为内连接。 + 6. “\(+\)”作用的表达式不能直接通过“OR”连接。 + 7. 如果“\(+\)”作用的列是和一个常量的比较关系, 那么这个表达式会成为 join 条件的一部分。 + 8. 同一个表不能对应多个外表。 + 9. “\(+\)”只能出现“比较表达式”,“NOT表达式”,“ANY表达式”,“ALL表达式”,“IN表达式”,“NULLIF表达式”,“IS DISTINCT FROM表达式”,“IS OF表达式”。“\(+\)”不能出现在其他类型表达式中,并且这些表达式中不允许出现通过“AND”和“OR”连接的表达式。 + 10. “\(+\)”只能转化为左外连接或者右外连接,不能转化为全连接,即不能在一个表达式的两个表上同时指定“\(+\)”。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >对于 WHERE 子句的 LIKE 操作符,当 LIKE 中要查询特殊字符“%”、“\_”、“\\”的时候需要使用反斜杠“\\”来进行转义。 + +- **START WITH** + +START WITH 子句通常与 CONNECT BY 子句同时出现, 是一种递归语句对数据进行图遍历。 START WITH 代表递归的初始条数, CONNECT BY 条件中可以对列指定 PRIOR 关键字。代表以这列为递归进行递归。当前约束只能对表中的列指定 PRIOR ,不支持对表达式、类型转换指定 PRIOR 关键字。 + +- **GROUP BY子句** + + 将查询结果按某一列或多列的值分组,值相等的为一组。 + + - CUBE \( \{ expression | \( expression \[, ...\] \) \} \[, ...\] \) + +CUBE 是自动对 group by 子句中列出的字段进行分组汇总,结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。它会为每个分组返回一行汇总信息, 用户可以使用 CUBE 来产生交叉表值。比如,在 CUBE 子句中给出三个表达式(n = 3),运算结果为2n = 23 = 8组。 以 n 个表达式的值分组的行称为常规行,其余的行称为超级聚集行。 + + - GROUPING SETS \( grouping\_element \[, ...\] \) + +GROUPING SETS 子句是 GROUP BY 子句的进一步扩展,它可以使用户指定多个 GROUP BY 选项。 这样做可以通过裁剪用户不需要的数据组来提高效率。 当用户指定了所需的数据组时,数据库不需要执行完整 CUBE 或 ROLLUP 生成的聚合集合。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >如果 SELECT 列表的表达式中引用了那些没有分组的字段,则会报错,除非使用了聚集函数,因为对于未分组的字段,可能返回多个数值。 + +- **HAVING子句** + + 与 GROUP BY 子句配合用来选择特殊的组。 HAVING 子句将组的一些属性与一个常数值比较,只有满足 HAVING 子句中的逻辑表达式的组才会被提取出来。 + +- **WINDOW子句** + + 一般形式为WINDOW window\_name AS \( window\_definition \) \[, ...\],window\_name是可以被随后的窗口定义所引用的名称,window\_definition可以是以下的形式: + + ``` + [ existing\_window\_name \] + + [ PARTITION BY expression \[, ...\] \] + + [ ORDER BY expression \[ ASC | DESC | USING operator \] \[ NULLS \{ FIRST | LAST \} \] \[, ...\] \] + + [ frame\_clause \] + ``` + + frame\_clause为窗函数定义一个窗口框架 window frame ,窗函数(并非所有)依赖于框架, window frame 是当前查询行的一组相关行。frame\_clause可以是以下的形式: + + ``` + [ RANGE | ROWS \] frame\_start + + [ RANGE | ROWS \] BETWEEN frame\_start AND frame\_end + + frame\_start和frame\_end可以是: + + UNBOUNDED PRECEDING + + value PRECEDING + + CURRENT ROW + + value FOLLOWING + + UNBOUNDED FOLLOWING + ``` + + >![](public_sys-resources/icon-notice.gif) **须知:** + >对列存表的查询目前只支持row\_number窗口函数,不支持frame\_clause。 + +- **UNION子句** + +UNION 计算多个 SELECT 语句返回行集合的并集。 + +UNION 子句有如下约束条件: + + - 除非声明了 ALL 子句,否则缺省的 UNION 结果不包含重复的行。 + - 同一个 SELECT 语句中的多个 UNION 操作符是从左向右计算的,除非用圆括弧进行了标识。 + - FOR UPDATE不能在 UNION 的结果或输入中声明。 + + 一般表达式: + + select\_statement UNION \[ALL\] select\_statement + + - select\_statement可以是任何没有ORDER BY、LIMIT、FOR UPDATE子句的 SELECT 语句。 + - 如果用圆括弧包围, ORDER BY 和 LIMIT 可以附着在子表达式里。 + +- **INTERSECT子句** + +INTERSECT 计算多个 SELECT 语句返回行集合的交集,不含重复的记录。 + +INTERSECT 子句有如下约束条件: + + - 同一个 SELECT 语句中的多个 INTERSECT 操作符是从左向右计算的,除非用圆括弧进行了标识。 + - 当对多个 SELECT 语句的执行结果进行 UNION 和 INTERSECT 操作的时候,会优先处理 INTERSECT 。 + + 一般形式: + + select\_statement INTERSECT select\_statement + + select\_statement可以是任何没有 FOR UPDATE 子句的 SELECT 语句。 + +- **EXCEPT子句** + +EXCEPT 子句有如下的通用形式: + + select\_statement EXCEPT \[ ALL \] select\_statement + + select\_statement是任何没有 FOR UPDATE 子句的 SELECT 表达式。 + +EXCEPT 操作符计算存在于左边 SELECT 语句的输出而不存在于右边 SELECT 语句输出的行。 + +EXCEPT 的结果不包含任何重复的行,除非声明了 ALL 选项。使用 ALL 时,一个在左边表中有 m 个重复而在右边表中有 n 个重复的行将在结果中出现max\(m-n,0\) 次。 + + 除非用圆括弧指明顺序,否则同一个 SELECT 语句中的多个 EXCEPT 操作符是从左向右计算的。 EXCEPT 和 UNION 的绑定级别相同。 + + 目前,不能给 EXCEPT 的结果或者任何 EXCEPT 的输入声明 FOR UPDATE 子句。 + +- **MINUS子句** + + 与 EXCEPT 子句具有相同的功能和用法。 + +- **ORDER BY子句** + + 对 SELECT 语句检索得到的数据进行升序或降序排序。对于 ORDER BY 表达式中包含多列的情况: + + - 首先根据最左边的列进行排序,如果这一列的值相同,则根据下一个表达式进行比较,依此类推。 + - 如果对于所有声明的表达式都相同,则按随机顺序返回。 + - 在与 DISTINCT 关键字一起使用的情况下, ORDER BY 中排序的列必须包括在 SELECT 语句所检索的结果集的列中。 + - 在与 GROUP BY 子句一起使用的情况下, ORDER BY 中排序的列必须包括在 SELECT 语句所检索的结果集的列中。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >如果要支持中文拼音排序,需要在初始化数据库时指定编码格式为UTF-8或 GBK 。 命令如下: + >initdb –E UTF8 –D ../data –locale=zh\_CN.UTF-8或initdb –E GBK –D ../data –locale=zh\_CN.GBK。 + +- **LIMIT子句** + +LIMIT 子句由两个独立的子句组成: + + LIMIT \{ count | ALL \} + +OFFSET start count 声明返回的最大行数,而 start 声明开始返回行之前忽略的行数。如果两个都指定了,会在开始计算 count 个返回行之前先跳过 start 行。 + +- **OFFSET子句** + + SQL:2008开始提出一种不同的语法: + + OFFSET start \{ ROW | ROWS \} + +start 声明开始返回行之前忽略的行数。 + +- **FETCH \{ FIRST | NEXT \} \[ count \] \{ ROW | ROWS \} ONLY** + + 如果不指定 count ,默认值为 1 , FETCH 子句限定返回查询结果从第一行开始的总行数。 + +- **FOR UPDATE子句** + +FOR UPDATE 子句将对 SELECT 检索出来的行进行加锁。这样避免它们在当前事务结束前被其他事务修改或者删除,即其他企图UPDATE、 DELETE、 SELECT FOR UPDATE这些行的事务将被阻塞,直到当前事务结束。 + + 为了避免操作等待其他事务提交,可使用 NOWAIT 选项,如果被选择的行不能立即被锁住,执行 SELECT FOR UPDATE NOWAIT 将会立即汇报一个错误,而不是等待。 + +FOR SHARE 的行为类似,只是它在每个检索出来的行上要求一个共享锁,而不是一个排他锁。一个共享锁阻塞其它事务执行UPDATE、DELETE、SELECT,不阻塞 SELECT FOR SHARE 。 + + 如果在 FOR UPDATE 或 FOR SHARE 中明确指定了表名称,则只有这些指定的表被锁定,其他在 SELECT 中使用的表将不会被锁定。否则,将锁定该命令中所有使用的表。 + + 如果 FOR UPDATE 或 FOR SHARE 应用于一个视图或者子查询,它同样将锁定所有该视图或子查询中使用到的表。 + + 多个 FOR UPDATE 和 FOR SHARE 子句可以用于为不同的表指定不同的锁定模式。 + + 如果一个表中同时出现(或隐含同时出现)在 FOR UPDATE 和 FOR SHARE 子句中,则按照 FOR UPDATE 处理。类似的,如果影响一个表的任意子句中出现了 NOWAIT ,该表将按照 NOWAIT 处理。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >对列存表的查询不支持for update/share。 + +- **NLS\_SORT** + + 指定某字段按照特殊方式排序。目前仅支持中文拼音格式排序和不区分大小写排序。 + + 取值范围: + + - SCHINESE\_PINYIN\_M,按照中文拼音排序。如果要支持此排序方式,在创建数据库时需要指定编码格式为“UTF8”或“GBK”,否则排序无效。 + - generic\_m\_ci,不区分大小写排序。 + +- **PARTITION子句** + + 查询某个分区表中相应分区的数据。 + + +## 示例 + +``` +--先通过子查询得到一张临时表 temp_t ,然后查询表 temp_t 中的所有数据。 +openGauss=# WITH temp_t(name,isdba) AS (SELECT usename,usesuper FROM pg_user) SELECT * FROM temp_t; + +--查询tpcds.reason表的所有 r_reason_sk 记录,且去除重复。 +openGauss=# SELECT DISTINCT(r_reason_sk) FROM tpcds.reason; + +--LIMIT子句示例:获取表中一条记录。 +openGauss=# SELECT * FROM tpcds.reason LIMIT 1; + +--查询所有记录,且按字母升序排列。 +openGauss=# SELECT r_reason_desc FROM tpcds.reason ORDER BY r_reason_desc; + +--通过表别名,从 pg_user 和 pg_user_status 这两张表中获取数据。 +openGauss=# SELECT a.usename,b.locktime FROM pg_user a,pg_user_status b WHERE a.usesysid=b.roloid; + +--FULL JOIN子句示例:将 pg_user 和 pg_user_status 这两张表的数据进行全连接显示,即数据的合集。 +openGauss=# SELECT a.usename,b.locktime,a.usesuper FROM pg_user a FULL JOIN pg_user_status b on a.usesysid=b.roloid; + +--GROUP BY子句示例:根据查询条件过滤,并对结果进行分组。 +openGauss=# SELECT r_reason_id, AVG(r_reason_sk) FROM tpcds.reason GROUP BY r_reason_id HAVING AVG(r_reason_sk) > 25; + +--GROUP BY CUBE子句示例:根据查询条件过滤,并对结果进行分组汇总。 +openGauss=# SELECT r_reason_id,AVG(r_reason_sk) FROM tpcds.reason GROUP BY CUBE(r_reason_id,r_reason_sk); + +--GROUP BY GROUPING SETS子句示例:根据查询条件过滤,并对结果进行分组汇总。 +openGauss=# SELECT r_reason_id,AVG(r_reason_sk) FROM tpcds.reason GROUP BY GROUPING SETS((r_reason_id,r_reason_sk),r_reason_sk); + +--UNION子句示例:将表tpcds.reason里 r_reason_desc 字段中的内容以 W 开头和以 N 开头的进行合并。 +openGauss=# SELECT r_reason_sk, tpcds.reason.r_reason_desc + FROM tpcds.reason + WHERE tpcds.reason.r_reason_desc LIKE 'W%' +UNION + SELECT r_reason_sk , tpcds.reason.r_reason_desc + FROM tpcds.reason + WHERE tpcds.reason.r_reason_desc LIKE 'N%'; + +--NLS_SORT子句示例:中文拼音排序。 +openGauss=# SELECT * FROM tpcds.reason ORDER BY NLSSORT( r_reason_desc, 'NLS_SORT = SCHINESE_PINYIN_M'); + + +--不区分大小写排序: +openGauss=# SELECT * FROM tpcds.reason ORDER BY NLSSORT( r_reason_desc, 'NLS_SORT = generic_m_ci'); + +--创建分区表tpcds.reason_p +openGauss=# CREATE TABLE tpcds.reason_p +( + r_reason_sk integer , + r_reason_id character(16), + r_reason_desc character(100) +) +PARTITION BY RANGE (r_reason_sk) +( + partition P_05_BEFORE values less than (05), + partition P_15 values less than (15), + partition P_25 values less than (25), + partition P_35 values less than (35), + partition P_45_AFTER values less than (MAXVALUE) +) +; + +--插入数据。 +openGauss=# INSERT INTO tpcds.reason_p values(3,'AAAAAAAABAAAAAAA','reason 1'),(10,'AAAAAAAABAAAAAAA','reason 2'),(4,'AAAAAAAABAAAAAAA','reason 3'),(10,'AAAAAAAABAAAAAAA','reason 4'),(10,'AAAAAAAABAAAAAAA','reason 5'),(20,'AAAAAAAACAAAAAAA','reason 6'),(30,'AAAAAAAACAAAAAAA','reason 7'); + +--PARTITION子句示例:从tpcds.reason_p的表分区 P_05_BEFORE 中获取数据。 +openGauss=# SELECT * FROM tpcds.reason_p PARTITION (P_05_BEFORE); + r_reason_sk | r_reason_id | r_reason_desc +-------------+------------------+------------------------------------ + 4 | AAAAAAAABAAAAAAA | reason 3 + 3 | AAAAAAAABAAAAAAA | reason 1 +(2 rows) + +--GROUP BY子句示例:按 r_reason_id 分组统计tpcds.reason_p表中的记录数。 +openGauss=# SELECT COUNT(*),r_reason_id FROM tpcds.reason_p GROUP BY r_reason_id; + count | r_reason_id +-------+------------------ + 2 | AAAAAAAACAAAAAAA + 5 | AAAAAAAABAAAAAAA +(2 rows) + +--GROUP BY CUBE子句示例:根据查询条件过滤,并对查询结果分组汇总。 +openGauss=# SELECT * FROM tpcds.reason GROUP BY CUBE (r_reason_id, r_reason_sk ,r_reason_desc); + +--GROUP BY GROUPING SETS子句示例:根据查询条件过滤,并对查询结果分组汇总。 +openGauss=# SELECT * FROM tpcds.reason GROUP BY GROUPING SETS ((r_reason_id,r_reason_sk),r_reason_desc); + +--HAVING子句示例:按 r_reason_id 分组统计tpcds.reason_p表中的记录,并只显示 r_reason_id 个数大于 2 的信息。 +openGauss=# SELECT COUNT(*) c,r_reason_id FROM tpcds.reason_p GROUP BY r_reason_id HAVING c>2; + c | r_reason_id +---+------------------ + 5 | AAAAAAAABAAAAAAA +(1 row) + +--IN子句示例:按 r_reason_id 分组统计tpcds.reason_p表中的 r_reason_id 个数,并只显示 r_reason_id 值为 AAAAAAAABAAAAAAA 或 AAAAAAAADAAAAAAA 的个数。 +openGauss=# SELECT COUNT(*),r_reason_id FROM tpcds.reason_p GROUP BY r_reason_id HAVING r_reason_id IN('AAAAAAAABAAAAAAA','AAAAAAAADAAAAAAA'); +count | r_reason_id +-------+------------------ + 5 | AAAAAAAABAAAAAAA +(1 row) + +--INTERSECT子句示例:查询 r_reason_id 等于 AAAAAAAABAAAAAAA ,并且 r_reason_sk 小于 5 的信息。 +openGauss=# SELECT * FROM tpcds.reason_p WHERE r_reason_id='AAAAAAAABAAAAAAA' INTERSECT SELECT * FROM tpcds.reason_p WHERE r_reason_sk<5; + r_reason_sk | r_reason_id | r_reason_desc +-------------+------------------+------------------------------------ + 4 | AAAAAAAABAAAAAAA | reason 3 + 3 | AAAAAAAABAAAAAAA | reason 1 +(2 rows) + +--EXCEPT子句示例:查询 r_reason_id 等于 AAAAAAAABAAAAAAA ,并且去除 r_reason_sk 小于 4 的信息。 +openGauss=# SELECT * FROM tpcds.reason_p WHERE r_reason_id='AAAAAAAABAAAAAAA' EXCEPT SELECT * FROM tpcds.reason_p WHERE r_reason_sk<4; +r_reason_sk | r_reason_id | r_reason_desc +-------------+------------------+------------------------------------ + 10 | AAAAAAAABAAAAAAA | reason 2 + 10 | AAAAAAAABAAAAAAA | reason 5 + 10 | AAAAAAAABAAAAAAA | reason 4 + 4 | AAAAAAAABAAAAAAA | reason 3 +(4 rows) + +--通过在 where 子句中指定"(+)"来实现左连接。 +openGauss=# select t1.sr_item_sk ,t2.c_customer_id from store_returns t1, customer t2 where t1.sr_customer_sk = t2.c_customer_sk(+) +order by 1 desc limit 1; + sr_item_sk | c_customer_id +------------+--------------- + 18000 | +(1 row) + +--通过在 where 子句中指定"(+)"来实现右连接。 +openGauss=# select t1.sr_item_sk ,t2.c_customer_id from store_returns t1, customer t2 where t1.sr_customer_sk(+) = t2.c_customer_sk +order by 1 desc limit 1; + sr_item_sk | c_customer_id +------------+------------------ + | AAAAAAAAJNGEBAAA +(1 row) + +--通过在 where 子句中指定"(+)"来实现左连接,并且增加连接条件。 +openGauss=# select t1.sr_item_sk ,t2.c_customer_id from store_returns t1, customer t2 where t1.sr_customer_sk = t2.c_customer_sk(+) and t2.c_customer_sk(+) < 1 order by 1 limit 1; + sr_item_sk | c_customer_id +------------+--------------- + 1 | +(1 row) + +--不支持在 where 子句中指定"(+)"的同时使用内层嵌套AND/OR的表达式。 +openGauss=# select t1.sr_item_sk ,t2.c_customer_id from store_returns t1, customer t2 where not(t1.sr_customer_sk = t2.c_customer_sk(+) and t2.c_customer_sk(+) < 1); +ERROR: Operator "(+)" can not be used in nesting expression. +LINE 1: ...tomer_id from store_returns t1, customer t2 where not(t1.sr_... + ^ +--where子句在不支持表达式宏指定"(+)"会报错。 +openGauss=# select t1.sr_item_sk ,t2.c_customer_id from store_returns t1, customer t2 where (t1.sr_customer_sk = t2.c_customer_sk(+))::bool; +ERROR: Operator "(+)" can only be used in common expression. + +--where子句在表达式的两边都指定"(+)"会报错。 +openGauss=# select t1.sr_item_sk ,t2.c_customer_id from store_returns t1, customer t2 where t1.sr_customer_sk(+) = t2.c_customer_sk(+); +ERROR: Operator "(+)" can't be specified on more than one relation in one join condition +HINT: "t1", "t2"...are specified Operator "(+)" in one condition. + +--删除表。 +openGauss=# DROP TABLE tpcds.reason_p; + +--闪回查询示例 +--创建表tpcds.time_table +openGauss=# create table tpcds.time_table(idx integer, snaptime timestamp , snapcsn bigint , timeDesc character(100)); +--向表tpcds.time_table中插入记录 +openGauss=# INSERT INTO tpcds.time_table select 1, now() ,int8in(xidout(next_csn)), 'time1' from gs_get_next_xid_csn(); +openGauss=# INSERT INTO tpcds.time_table select 2, now() ,int8in(xidout(next_csn)), 'time2' from gs_get_next_xid_csn(); +openGauss=# INSERT INTO tpcds.time_table select 3, now() ,int8in(xidout(next_csn)), 'time3' from gs_get_next_xid_csn(); +openGauss=# INSERT INTO tpcds.time_table select 4, now() ,int8in(xidout(next_csn)), 'time4' from gs_get_next_xid_csn(); +openGauss=# select * from tpcds.time_table; + + idx | snaptime | snapcsn | timedesc +-----+----------------------------+---------+------------------------------------------------------------------------------------------------------ + 1 | 2021-04-25 17:50:05.360326 | 107322 | time1 + 2 | 2021-04-25 17:50:10.886848 | 107324 | time2 + 3 | 2021-04-25 17:50:16.12921 | 107327 | time3 + 4 | 2021-04-25 17:50:22.311176 | 107330 | time4 +(4 rows) +openGauss=# delete tpcds.time_table; +DELETE 4 +openGauss=# SELECT * FROM tpcds.time_table TIMECAPSULE TIMESTAMP to_timestamp('2021-04-25 17:50:22.311176','YYYY-MM-DD HH24:MI:SS.FF'); + idx | snaptime | snapcsn | timedesc +-----+----------------------------+---------+------------------------------------------------------------------------------------------------------ + 1 | 2021-04-25 17:50:05.360326 | 107322 | time1 + 2 | 2021-04-25 17:50:10.886848 | 107324 | time2 + 3 | 2021-04-25 17:50:16.12921 | 107327 | time3 +(3 rows) +openGauss=# SELECT * FROM tpcds.time_table TIMECAPSULE CSN 107330; + idx | snaptime | snapcsn | timedesc +-----+----------------------------+---------+------------------------------------------------------------------------------------------------------ + 1 | 2021-04-25 17:50:05.360326 | 107322 | time1 + 2 | 2021-04-25 17:50:10.886848 | 107324 | time2 + 3 | 2021-04-25 17:50:16.12921 | 107327 | time3 +(3 rows) +``` + diff --git "a/content/zh/docs/Developerguide/SEQUENCE\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/SEQUENCE\345\207\275\346\225\260.md" index aa892e4c5..5eaee8170 100644 --- "a/content/zh/docs/Developerguide/SEQUENCE\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/SEQUENCE\345\207\275\346\225\260.md" @@ -1,126 +1,126 @@ -# SEQUENCE函数 - -序列函数为用户从序列对象中获取后续的序列值提供了简单的多用户安全的方法。 - -- nextval\(regclass\) - - 描述:递增序列并返回新值。 - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >为了避免从同一个序列获取值的并发事务被阻塞,nextval操作不会回滚;也就是说,一旦一个值已经被抓取,那么就认为它已经被用过了,并且不会再被返回。即使该操作处于事务中,当事务之后中断,或者如果调用查询结束不使用该值,也是如此。这种情况将在指定值的顺序中留下未使用的“空洞”。因此,openGauss序列对象不能用于获得“无间隙”序列。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - > - >nextval函数只能在主机上执行,备机不支持执行此函数。 - - 返回类型:bigint - - nextval函数有两种调用方式(其中第二种调用方式目前不支持Sequence命名中有特殊字符"."的情况),如下: - - 示例1: - - ``` - openGauss=# select nextval('seqDemo'); - nextval - --------- - 2 - (1 row) - ``` - - 示例2: - - ``` - openGauss=# select seqDemo.nextval; - nextval - --------- - 2 - (1 row) - ``` - -- currval\(regclass\) - - 返回当前会话里最近一次nextval返回的指定的sequence的数值。如果当前会话还没有调用过指定的sequence的nextval,那么调用currval将会报错。 - - 返回类型:bigint - - currval函数有两种调用方式(其中第二种调用方式目前不支持Sequence命名中有特殊字符"."的情况),如下: - - 示例1: - - ``` - openGauss=# select currval('seq1'); - currval - --------- - 2 - (1 row) - ``` - - 示例2: - - ``` - openGauss=# select seq1.currval; - currval - --------- - 2 - (1 row) - ``` - -- lastval\(\) - - 描述:返回当前会话里最近一次nextval返回的数值。这个函数等效于currval,只是它不用序列名为参数,它抓取当前会话里面最近一次nextval使用的序列。如果当前会话还没有调用过nextval,那么调用lastval将会报错。 - - 返回类型:bigint - - 示例: - - ``` - openGauss=# select lastval(); - lastval - --------- - 2 - (1 row) - ``` - -- setval\(regclass, bigint\) - - 描述:设置序列的当前数值。 - - 返回类型:bigint - - 示例: - - ``` - openGauss=# select setval('seqDemo',1); - setval - -------- - 1 - (1 row) - ``` - -- setval\(regclass, bigint, Boolean\) - - 描述:设置序列的当前数值以及is\_called标志。 - - 返回类型:bigint - - 示例: - - ``` - openGauss=# select setval('seqDemo',1,true); - setval - -------- - 1 - (1 row) - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - > - >Setval后当前会话会立刻生效,但如果其他会话有缓存的序列值,只能等到缓存值用尽才能感知Setval的作用。所以为了避免序列值冲突,setval要谨慎使用。 ->因为序列是非事务的,setval造成的改变不会由于事务的回滚而撤销。 - - >![](public_sys-resources/icon-notice.gif) **须知:** - > - >nextval函数只能在主机上执行,备机不支持执行此函数。 - - +# SEQUENCE函数 + +序列函数为用户从序列对象中获取后续的序列值提供了简单的多用户安全的方法。 + +- nextval\(regclass\) + + 描述:递增序列并返回新值。 + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >为了避免从同一个序列获取值的并发事务被阻塞, nextval 操作不会回滚;也就是说,一旦一个值已经被抓取,那么就认为它已经被用过了,并且不会再被返回。即使该操作处于事务中,当事务之后中断,或者如果调用查询结束不使用该值,也是如此。这种情况将在指定值的顺序中留下未使用的“空洞”。因此, openGauss 序列对象不能用于获得“无间隙”序列。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + > + >nextval函数只能在主机上执行,备机不支持执行此函数。 + + 返回类型:bigint + +nextval 函数有两种调用方式(其中第二种调用方式目前不支持 Sequence 命名中有特殊字符"."的情况),如下: + + 示例1: + + ``` + openGauss=# select nextval('seqDemo'); + nextval + --------- + 2 + (1 row) + ``` + + 示例2: + + ``` + openGauss=# select seqDemo.nextval; + nextval + --------- + 2 + (1 row) + ``` + +- currval\(regclass\) + + 返回当前会话里最近一次 nextval 返回的指定的 sequence 的数值。如果当前会话还没有调用过指定的 sequence 的 nextval ,那么调用 currval 将会报错。 + + 返回类型:bigint + +currval 函数有两种调用方式(其中第二种调用方式目前不支持 Sequence 命名中有特殊字符"."的情况),如下: + + 示例1: + + ``` + openGauss=# select currval('seq1'); + currval + --------- + 2 + (1 row) + ``` + + 示例2: + + ``` + openGauss=# select seq1.currval; + currval + --------- + 2 + (1 row) + ``` + +- lastval\(\) + + 描述:返回当前会话里最近一次 nextval 返回的数值。这个函数等效于 currval ,只是它不用序列名为参数,它抓取当前会话里面最近一次 nextval 使用的序列。如果当前会话还没有调用过 nextval ,那么调用 lastval 将会报错。 + + 返回类型:bigint + + 示例: + + ``` + openGauss=# select lastval(); + lastval + --------- + 2 + (1 row) + ``` + +- setval\(regclass, bigint\) + + 描述:设置序列的当前数值。 + + 返回类型:bigint + + 示例: + + ``` + openGauss=# select setval('seqDemo',1); + setval + -------- + 1 + (1 row) + ``` + +- setval\(regclass, bigint , Boolean\) + + 描述:设置序列的当前数值以及is\_called标志。 + + 返回类型:bigint + + 示例: + + ``` + openGauss=# select setval('seqDemo', 1 ,true); + setval + -------- + 1 + (1 row) + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >Setval后当前会话会立刻生效,但如果其他会话有缓存的序列值,只能等到缓存值用尽才能感知 Setval 的作用。所以为了避免序列值冲突, setval 要谨慎使用。 +>因为序列是非事务的, setval 造成的改变不会由于事务的回滚而撤销。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + > + >nextval函数只能在主机上执行,备机不支持执行此函数。 + + diff --git a/content/zh/docs/Developerguide/SESSION_CPU_RUNTIME.md b/content/zh/docs/Developerguide/SESSION_CPU_RUNTIME.md index 233483849..f2f8abe3b 100644 --- a/content/zh/docs/Developerguide/SESSION_CPU_RUNTIME.md +++ b/content/zh/docs/Developerguide/SESSION_CPU_RUNTIME.md @@ -1,88 +1,88 @@ -# SESSION\_CPU\_RUNTIME - -SESSION\_CPU\_RUNTIME视图显示和当前用户执行复杂作业(正在运行)时的负载管理CPU使用的信息。 - -**表 1** SESSION\_CPU\_RUNTIME字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

连接后端的数据库OID。

-

usename

-

name

-

登录到该后端的用户名。

-

pid

-

bigint

-

后端线程ID。

-

start_time

-

timestamp with time zone

-

语句执行的开始时间。

-

min_cpu_time

-

bigint

-

语句在数据库节点上的最小CPU时间,单位为ms。

-

max_cpu_time

-

bigint

-

语句在数据库节点上的最大CPU时间,单位为ms。

-

total_cpu_time

-

bigint

-

语句在数据库节点上的CPU总时间,单位为ms。

-

query

-

text

-

正在执行的语句。

-

node_group

-

text

-

语句所属用户对应的逻辑openGauss。

-

top_cpu_dn

-

text

-

cpu使用量topN信息。

-
- +# SESSION\_CPU\_RUNTIME + +SESSION\_CPU\_RUNTIME视图显示和当前用户执行复杂作业(正在运行)时的负载管理 CPU 使用的信息。 + +**表 1** SESSION\_CPU\_RUNTIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据库 OID 。

+

usename

+

name

+

登录到该后端的用户名。

+

pid

+

bigint

+

后端线程 ID 。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

min_cpu_time

+

bigint

+

语句在数据库节点上的最小 CPU 时间,单位为 ms 。

+

max_cpu_time

+

bigint

+

语句在数据库节点上的最大 CPU 时间,单位为 ms 。

+

total_cpu_time

+

bigint

+

语句在数据库节点上的 CPU 总时间,单位为 ms 。

+

query

+

text

+

正在执行的语句。

+

node_group

+

text

+

语句所属用户对应的逻辑 openGauss 。

+

top_cpu_dn

+

text

+

cpu使用量 topN 信息。

+
+ diff --git a/content/zh/docs/Developerguide/SESSION_MEMORY.md b/content/zh/docs/Developerguide/SESSION_MEMORY.md index d1ffa20f5..59cbb5df7 100644 --- a/content/zh/docs/Developerguide/SESSION_MEMORY.md +++ b/content/zh/docs/Developerguide/SESSION_MEMORY.md @@ -1,46 +1,46 @@ -# SESSION\_MEMORY - -统计Session级别的内存使用情况,包含执行作业在数据节点上openGauss线程和Stream线程分配的所有内存,单位为MB。 - -**表 1** SESSION\_MEMORY字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sessid

-

text

-

线程启动时间+线程标识。

-

init_mem

-

integer

-

当前正在执行作业进入执行器前已分配的内存。

-

used_mem

-

integer

-

当前正在执行作业已分配的内存。

-

peak_mem

-

integer

-

当前正在执行作业已分配的内存峰值。

-
- +# SESSION\_MEMORY + +统计 Session 级别的内存使用情况,包含执行作业在数据节点上 openGauss 线程和 Stream 线程分配的所有内存,单位为 MB 。 + +**表 1** SESSION\_MEMORY字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

线程启动时间+线程标识。

+

init_mem

+

integer

+

当前正在执行作业进入执行器前已分配的内存。

+

used_mem

+

integer

+

当前正在执行作业已分配的内存。

+

peak_mem

+

integer

+

当前正在执行作业已分配的内存峰值。

+
+ diff --git a/content/zh/docs/Developerguide/SESSION_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/SESSION_MEMORY_DETAIL.md index 8072cc19f..9c4a5f023 100644 --- a/content/zh/docs/Developerguide/SESSION_MEMORY_DETAIL.md +++ b/content/zh/docs/Developerguide/SESSION_MEMORY_DETAIL.md @@ -1,73 +1,73 @@ -# SESSION\_MEMORY\_DETAIL - -统计线程的内存使用情况,以MemoryContext节点来统计。 - -**表 1** SESSION\_MEMORY\_DETAIL字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sessid

-

text

-

线程启动时间+线程标识。

-

sesstype

-

text

-

线程名称。

-

contextname

-

text

-

内存上下文名称。

-

level

-

smallint

-

内存上下文的重要级别。

-

parent

-

text

-

父级内存上下文名称。

-

totalsize

-

bigint

-

总申请内存大小(单位:字节)。

-

freesize

-

bigint

-

空闲内存大小(单位:字节)。

-

usedsize

-

bigint

-

使用内存大小(单位:字节)。

-
+# SESSION\_MEMORY\_DETAIL + +统计线程的内存使用情况,以 MemoryContext 节点来统计。 + +**表 1** SESSION\_MEMORY\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

线程启动时间+线程标识。

+

sesstype

+

text

+

线程名称。

+

contextname

+

text

+

内存上下文名称。

+

level

+

smallint

+

内存上下文的重要级别。

+

parent

+

text

+

父级内存上下文名称。

+

totalsize

+

bigint

+

总申请内存大小(单位:字节)。

+

freesize

+

bigint

+

空闲内存大小(单位:字节)。

+

usedsize

+

bigint

+

使用内存大小(单位:字节)。

+
diff --git a/content/zh/docs/Developerguide/SESSION_MEMORY_RUNTIME.md b/content/zh/docs/Developerguide/SESSION_MEMORY_RUNTIME.md index 294ff753b..5c638c506 100644 --- a/content/zh/docs/Developerguide/SESSION_MEMORY_RUNTIME.md +++ b/content/zh/docs/Developerguide/SESSION_MEMORY_RUNTIME.md @@ -1,89 +1,89 @@ -# SESSION\_MEMORY\_RUNTIME - -SESSION\_MEMORY\_RUNTIME视图显示和当前用户执行复杂作业正在运行时的负载管理内存使用的信息。 - -**表 1** SESSION\_MEMORY\_RUNTIME字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

连接后端的数据库OID。

-

usename

-

name

-

登录到该后端的用户名。

-

pid

-

bigint

-

后端线程ID。

-

start_time

-

timestamp with time zone

-

语句执行的开始时间。

-

min_peak_memory

-

integer

-

语句在数据库节点上的最小内存峰值大小,单位MB。

-

max_peak_memory

-

integer

-

语句在数据库节点上的最大内存峰值大小,单位MB。

-

spill_info

-

text

-
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All:数据库节点均下盘。
  • [a:b]:数量为b个数据库节点中有a个数据库节点下盘。
-
-

query

-

text

-

正在执行的语句。

-

node_group

-

text

-

语句所属用户对应的逻辑openGauss。

-

top_mem_dn

-

text

-

mem使用量topN信息。

-
- +# SESSION\_MEMORY\_RUNTIME + +SESSION\_MEMORY\_RUNTIME视图显示和当前用户执行复杂作业正在运行时的负载管理内存使用的信息。 + +**表 1** SESSION\_MEMORY\_RUNTIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据库 OID 。

+

usename

+

name

+

登录到该后端的用户名。

+

pid

+

bigint

+

后端线程 ID 。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

min_peak_memory

+

integer

+

语句在数据库节点上的最小内存峰值大小,单位 MB 。

+

max_peak_memory

+

integer

+

语句在数据库节点上的最大内存峰值大小,单位 MB 。

+

spill_info

+

text

+
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All:数据库节点均下盘。
  • [a:b]:数量为 b 个数据库节点中有 a 个数据库节点下盘。
+
+

query

+

text

+

正在执行的语句。

+

node_group

+

text

+

语句所属用户对应的逻辑 openGauss 。

+

top_mem_dn

+

text

+

mem使用量 topN 信息。

+
+ diff --git a/content/zh/docs/Developerguide/SESSION_STAT.md b/content/zh/docs/Developerguide/SESSION_STAT.md index 5d716e3a0..80d6d5c38 100644 --- a/content/zh/docs/Developerguide/SESSION_STAT.md +++ b/content/zh/docs/Developerguide/SESSION_STAT.md @@ -1,53 +1,53 @@ -# SESSION\_STAT - -当前节点以会话线程或AutoVacuum线程为单位,统计会话状态信息。 - -**表 1** SESSION\_STAT字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sessid

-

text

-

线程启动时间+线程标识。

-

statid

-

integer

-

统计编号。

-

statname

-

text

-

统计会话名称。

-

statunit

-

text

-

统计会话单位。

-

value

-

bigint

-

统计会话值。

-
- +# SESSION\_STAT + +当前节点以会话线程或 AutoVacuum 线程为单位,统计会话状态信息。 + +**表 1** SESSION\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

线程启动时间+线程标识。

+

statid

+

integer

+

统计编号。

+

statname

+

text

+

统计会话名称。

+

statunit

+

text

+

统计会话单位。

+

value

+

bigint

+

统计会话值。

+
+ diff --git a/content/zh/docs/Developerguide/SESSION_STAT_ACTIVITY.md b/content/zh/docs/Developerguide/SESSION_STAT_ACTIVITY.md index a0ead7f95..9aee16c61 100644 --- a/content/zh/docs/Developerguide/SESSION_STAT_ACTIVITY.md +++ b/content/zh/docs/Developerguide/SESSION_STAT_ACTIVITY.md @@ -1,164 +1,164 @@ -# SESSION\_STAT\_ACTIVITY - -显示当前节点上正在运行的线程相关的信息。 - -**表 1** SESSION\_STAT\_ACTIVITY字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

datid

-

oid

-

用户会话在后台连接到的数据库OID。

-

datname

-

name

-

用户会话在后台连接到的数据库名称。

-

pid

-

bigint

-

后台线程ID。

-

usesysid

-

oid

-

登录该后台的用户OID。

-

usename

-

name

-

登录该后台的用户名。

-

application_name

-

text

-

连接到该后台的应用名。

-

client_addr

-

inet

-

连接到该后台的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

-

client_hostname

-

text

-

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

-

client_port

-

integer

-

客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。

-

backend_start

-

timestampwith time zone

-

该过程开始的时间,即当客户端连接服务器时间。

-

xact_start

-

timestampwith time zone

-

启动当前事务的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。

-

query_start

-

timestampwith time zone

-

开始当前活跃查询的时间,如果state的值不是active,则这个值是上一个查询的开始时间。

-

state_change

-

timestampwith time zone

-

上次状态改变的时间。

-

waiting

-

boolean

-

如果后台当前正等待锁则为true。

-

enqueue

-

text

-

该字段不支持。

-

state

-

text

-
该后台当前总体状态。可能值是:
  • active:后台正在执行一个查询。
  • idle:后台正在等待一个新的客户端命令。
  • idle in transaction:后台在事务中,但是目前无法执行查询。
  • idle in transaction (aborted):这个状态除说明事务中有某个语句导致了错误外,类似于idle in transaction。
  • fastpath function call:后台正在执行一个fast-path函数。
  • disabled:如果后台禁用track_activities,则报告这个状态。
    说明:

    普通用户只能查看到自己帐户所对应的会话状态。即其他帐户的state信息为空。例如以judy用户连接数据库后,在pg_stat_activity中查看到的普通用户joe及初始用户omm的state信息为空:

    -

    openGauss=# SELECT datname, usename, usesysid,state,pid FROM pg_stat_activity;

    -

    datname | usename | usesysid | state | pid

    -

    ----------+---------+----------+--------+-----------------postgres | omm | 10 | |139968752121616

    -

    postgres | omm | 10 | |139968903116560

    -

    db_tpcds | judy | 16398 | active |139968391403280

    -

    postgres | omm | 10 | |139968643069712

    -

    postgres | omm | 10 | |139968680818448

    -

    postgres | joe | 16390 | |139968563377936

    -

    (6 rows)

    -
    -
-
-

resource_pool

-

name

-

用户使用的资源池。

-

query_id

-

bigint

-

查询语句的ID。

-

query

-

text

-

该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

-
- - +# SESSION\_STAT\_ACTIVITY + +显示当前节点上正在运行的线程相关的信息。 + +**表 1** SESSION\_STAT\_ACTIVITY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

用户会话在后台连接到的数据库 OID 。

+

datname

+

name

+

用户会话在后台连接到的数据库名称。

+

pid

+

bigint

+

后台线程 ID 。

+

usesysid

+

oid

+

登录该后台的用户 OID 。

+

usename

+

name

+

登录该后台的用户名。

+

application_name

+

text

+

连接到该后台的应用名。

+

client_addr

+

inet

+

连接到该后台的客户端的 IP 地址。如果此字段是 null ,它表明通过服务器机器上 UNIX 套接字连接客户端或者这是内部进程,如 autovacuum 。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过 client_addr 的反向 DNS 查找得到。这个字段只有在启动 log_hostname 且使用 IP 连接时才非空。

+

client_port

+

integer

+

客户端用于与后台通讯的 TCP 端口号,如果使用 Unix 套接字,则为-1。

+

backend_start

+

timestampwith time zone

+

该过程开始的时间,即当客户端连接服务器时间。

+

xact_start

+

timestampwith time zone

+

启动当前事务的时间,如果没有事务是活跃的,则为 null 。如果当前查询是首个事务,则这列等同于 query_start 列。

+

query_start

+

timestampwith time zone

+

开始当前活跃查询的时间,如果 state 的值不是 active ,则这个值是上一个查询的开始时间。

+

state_change

+

timestampwith time zone

+

上次状态改变的时间。

+

waiting

+

boolean

+

如果后台当前正等待锁则为 true 。

+

enqueue

+

text

+

该字段不支持。

+

state

+

text

+
该后台当前总体状态。可能值是:
  • active:后台正在执行一个查询。
  • idle:后台正在等待一个新的客户端命令。
  • idle in transaction:后台在事务中,但是目前无法执行查询。
  • idle in transaction (aborted):这个状态除说明事务中有某个语句导致了错误外,类似于 idle in transaction 。
  • fastpath function call:后台正在执行一个fast-path函数。
  • disabled:如果后台禁用 track_activities ,则报告这个状态。
    说明:

    普通用户只能查看到自己帐户所对应的会话状态。即其他帐户的 state 信息为空。例如以 judy 用户连接数据库后,在 pg_stat_activity 中查看到的普通用户 joe 及初始用户 omm 的 state 信息为空:

    +

    openGauss=# SELECT datname, usename , usesysid , state ,pid FROM pg_stat_activity;

    +

    datname | usename | usesysid | state | pid

    +

    ----------+---------+----------+--------+-----------------postgres | omm | 10 | |139968752121616

    +

    postgres | omm | 10 | |139968903116560

    +

    db_tpcds | judy | 16398 | active |139968391403280

    +

    postgres | omm | 10 | |139968643069712

    +

    postgres | omm | 10 | |139968680818448

    +

    postgres | joe | 16390 | |139968563377936

    +

    (6 rows)

    +
    +
+
+

resource_pool

+

name

+

用户使用的资源池。

+

query_id

+

bigint

+

查询语句的 ID 。

+

query

+

text

+

该后台的最新查询。如果 state 状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

+
+ + diff --git a/content/zh/docs/Developerguide/SESSION_TIME.md b/content/zh/docs/Developerguide/SESSION_TIME.md index e0c929e79..223a7b8c8 100644 --- a/content/zh/docs/Developerguide/SESSION_TIME.md +++ b/content/zh/docs/Developerguide/SESSION_TIME.md @@ -1,46 +1,46 @@ -# SESSION\_TIME - -用于统计当前节点会话线程的运行时间信息,及各执行阶段所消耗时间。 - -**表 1** SESSION\_TIME字段 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

sessid

-

text

-

线程启动时间+线程标识。

-

stat_id

-

integer

-

统计编号。

-

stat_name

-

text

-

会话类型名称。

-

value

-

bigint

-

会话值。

-
- +# SESSION\_TIME + +用于统计当前节点会话线程的运行时间信息,及各执行阶段所消耗时间。 + +**表 1** SESSION\_TIME字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

线程启动时间+线程标识。

+

stat_id

+

integer

+

统计编号。

+

stat_name

+

text

+

会话类型名称。

+

value

+

bigint

+

会话值。

+
+ diff --git a/content/zh/docs/Developerguide/SET-CONSTRAINTS.md b/content/zh/docs/Developerguide/SET-CONSTRAINTS.md index 6d7059af5..2ec4b2a7d 100644 --- a/content/zh/docs/Developerguide/SET-CONSTRAINTS.md +++ b/content/zh/docs/Developerguide/SET-CONSTRAINTS.md @@ -1,54 +1,54 @@ -# SET CONSTRAINTS - -## 功能描述 - -SET CONSTRAINTS设置当前事务检查行为的约束条件。 - -IMMEDIATE约束是在每条语句后面进行检查。DEFERRED约束一直到事务提交时才检查。每个约束都有自己的模式。 - -从创建约束条件开始,一个约束总是设定为DEFERRABLE INITIALLY DEFERRED、DEFERRABLE INITIALLY IMMEDIATE、NOT DEFERRABLE三个特性之一。第三种总是IMMEDIATE,并且不会受SET CONSTRAINTS影响。前两种以指定的方式启动每个事务,但是其行为可以在事务里用SET CONSTRAINTS改变。 - -带着一个约束名列表的SET CONSTRAINTS改变这些约束的模式(都必须是可推迟的)。如果有多个约束匹配某个名称,则所有都会被影响。SET CONSTRAINTS ALL改变所有可推迟约束的模式。 - -当SET CONSTRAINTS把一个约束从DEFERRED改成IMMEDIATE的时候,新模式反作用式地起作用:任何将在事务结束准备进行的数据修改都将在SET CONSTRAINTS的时候执行检查。如果违反了任何约束,SET CONSTRAINTS都会失败(并且不会修改约束模式)。因此,SET CONSTRAINTS可以用于强制在事务中某一点进行约束检查。 - -检查约束总是不可推迟的。 - -## 注意事项 - -SET CONSTRAINTS只在当前事务里设置约束的行为。因此,如果用户在事务块之外(START TRANSACTION/COMMIT对)执行这个命令,它将没有任何作用。 - -## 语法格式 - -``` -SET CONSTRAINTS { ALL | { name } [, ...] } { DEFERRED | IMMEDIATE } ; -``` - -## 参数说明 - -- **name** - - 约束名。 - - 取值范围:已存在的约束名。可以在系统表pg\_constraint中查到。 - -- **ALL** - - 所有约束。 - -- **DEFERRED** - - 约束一直到事务提交时才检查。 - -- **IMMEDIATE** - - 约束在每条语句后进行检查。 - - -## 示例 - -``` ---设置所有约束在事务提交时检查。 -openGauss=# SET CONSTRAINTS ALL DEFERRED; -``` - +# SET CONSTRAINTS + +## 功能描述 + +SET CONSTRAINTS 设置当前事务检查行为的约束条件。 + +IMMEDIATE 约束是在每条语句后面进行检查。 DEFERRED 约束一直到事务提交时才检查。每个约束都有自己的模式。 + +从创建约束条件开始,一个约束总是设定为DEFERRABLE INITIALLY DEFERRED、DEFERRABLE INITIALLY IMMEDIATE、NOT DEFERRABLE三个特性之一。第三种总是 IMMEDIATE ,并且不会受 SET CONSTRAINTS 影响。前两种以指定的方式启动每个事务,但是其行为可以在事务里用 SET CONSTRAINTS 改变。 + +带着一个约束名列表的 SET CONSTRAINTS 改变这些约束的模式(都必须是可推迟的)。如果有多个约束匹配某个名称,则所有都会被影响。 SET CONSTRAINTS ALL 改变所有可推迟约束的模式。 + +当 SET CONSTRAINTS 把一个约束从 DEFERRED 改成 IMMEDIATE 的时候,新模式反作用式地起作用:任何将在事务结束准备进行的数据修改都将在 SET CONSTRAINTS 的时候执行检查。如果违反了任何约束, SET CONSTRAINTS 都会失败(并且不会修改约束模式)。因此, SET CONSTRAINTS 可以用于强制在事务中某一点进行约束检查。 + +检查约束总是不可推迟的。 + +## 注意事项 + +SET CONSTRAINTS 只在当前事务里设置约束的行为。因此,如果用户在事务块之外(START TRANSACTION/COMMIT对)执行这个命令,它将没有任何作用。 + +## 语法格式 + +``` +SET CONSTRAINTS { ALL | { name } [, ...] } { DEFERRED | IMMEDIATE } ; +``` + +## 参数说明 + +- **name** + + 约束名。 + + 取值范围:已存在的约束名。可以在系统表pg\_constraint中查到。 + +- **ALL** + + 所有约束。 + +- **DEFERRED** + + 约束一直到事务提交时才检查。 + +- **IMMEDIATE** + + 约束在每条语句后进行检查。 + + +## 示例 + +``` +--设置所有约束在事务提交时检查。 +openGauss=# SET CONSTRAINTS ALL DEFERRED; +``` + diff --git a/content/zh/docs/Developerguide/SET-ROLE.md b/content/zh/docs/Developerguide/SET-ROLE.md index ca5d81207..8773014f4 100644 --- a/content/zh/docs/Developerguide/SET-ROLE.md +++ b/content/zh/docs/Developerguide/SET-ROLE.md @@ -1,70 +1,70 @@ -# SET ROLE - -## 功能描述 - -设置当前会话的当前用户标识符。 - -## 注意事项 - -- 当前会话的用户必须是指定的rolename角色的成员,但系统管理员可以选择任何角色。 -- 使用这条命令,它可能会增加一个用户的权限,也可能会限制一个用户的权限。如果会话用户的角色有INHERITS属性,则它自动拥有它能SET ROLE变成的角色的所有权限;在这种情况下,SET ROLE实际上是删除了所有直接赋予会话用户的权限,以及它的所属角色的权限,只剩下指定角色的权限。另一方面,如果会话用户的角色有NOINHERITS属性,SET ROLE删除直接赋予会话用户的权限,而获取指定角色的权限。 - -## 语法格式 - -- 设置当前会话的当前用户标识符。 - - ``` - SET [ SESSION | LOCAL ] ROLE role_name PASSWORD 'password'; - ``` - -- 重置当前用户标识为当前会话用户标识符。 - - ``` - RESET ROLE; - ``` - - -## 参数说明 - -- **SESSION** - - 声明这个命令只对当前会话起作用,此参数为缺省值。 - -- **LOCAL** - - 声明该命令只在当前事务中有效。 - -- **role\_name** - - 角色名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **password** - - 角色的密码。要求符合密码的命名规则。 - -- **RESET ROLE** - - 用于重置当前用户标识。 - - -## 示例 - -``` ---创建角色paul。 -openGauss=# CREATE ROLE paul IDENTIFIED BY 'xxxxxxxxx'; - ---设置当前用户为paul。 -openGauss=# SET ROLE paul PASSWORD 'xxxxxxxxx'; - ---查看当前会话用户,当前用户。 -openGauss=# SELECT SESSION_USER, CURRENT_USER; - ---重置当前用户。 -openGauss=# RESET role; - ---删除用户。 -openGauss=# DROP USER paul; -``` - +# SET ROLE + +## 功能描述 + +设置当前会话的当前用户标识符。 + +## 注意事项 + +- 当前会话的用户必须是指定的 rolename 角色的成员,但系统管理员可以选择任何角色。 +- 使用这条命令,它可能会增加一个用户的权限,也可能会限制一个用户的权限。如果会话用户的角色有 INHERITS 属性,则它自动拥有它能 SET ROLE 变成的角色的所有权限;在这种情况下, SET ROLE 实际上是删除了所有直接赋予会话用户的权限,以及它的所属角色的权限,只剩下指定角色的权限。另一方面,如果会话用户的角色有 NOINHERITS 属性, SET ROLE 删除直接赋予会话用户的权限,而获取指定角色的权限。 + +## 语法格式 + +- 设置当前会话的当前用户标识符。 + + ``` + SET [ SESSION | LOCAL ] ROLE role_name PASSWORD 'password'; + ``` + +- 重置当前用户标识为当前会话用户标识符。 + + ``` + RESET ROLE; + ``` + + +## 参数说明 + +- **SESSION** + + 声明这个命令只对当前会话起作用,此参数为缺省值。 + +- **LOCAL** + + 声明该命令只在当前事务中有效。 + +- **role\_name** + + 角色名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **password** + + 角色的密码。要求符合密码的命名规则。 + +- **RESET ROLE** + + 用于重置当前用户标识。 + + +## 示例 + +``` +--创建角色 paul 。 +openGauss=# CREATE ROLE paul IDENTIFIED BY 'xxxxxxxxx'; + +--设置当前用户为 paul 。 +openGauss=# SET ROLE paul PASSWORD 'xxxxxxxxx'; + +--查看当前会话用户,当前用户。 +openGauss=# SELECT SESSION_USER, CURRENT_USER; + +--重置当前用户。 +openGauss=# RESET role; + +--删除用户。 +openGauss=# DROP USER paul; +``` + diff --git a/content/zh/docs/Developerguide/SET-SESSION-AUTHORIZATION.md b/content/zh/docs/Developerguide/SET-SESSION-AUTHORIZATION.md index 12043297f..3063828f7 100644 --- a/content/zh/docs/Developerguide/SET-SESSION-AUTHORIZATION.md +++ b/content/zh/docs/Developerguide/SET-SESSION-AUTHORIZATION.md @@ -1,74 +1,74 @@ -# SET SESSION AUTHORIZATION - -## 功能描述 - -把当前会话里的会话用户标识和当前用户标识都设置为指定的用户。 - -## 注意事项 - -只有在初始会话用户有系统管理员权限的时候,会话用户标识符才能改变。否则,只有在指定了被认证的用户名的情况下,系统才接受该命令。 - -## 语法格式 - -- 为当前会话设置会话用户标识符和当前用户标识符。 - - ``` - SET [ SESSION | LOCAL ] SESSION AUTHORIZATION role_name PASSWORD 'password'; - ``` - -- 重置会话和当前用户标识符为初始认证的用户名。 - - ``` - {SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT - | RESET SESSION AUTHORIZATION}; - ``` - - -## 参数说明 - -- **SESSION** - - 声明这个命令只对当前会话起作用。 - -- **LOCAL** - - 声明该命令只在当前事务中有效。 - -- **role\_name** - - 用户名。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **password** - - 角色的密码。要求符合密码的命名规则。 - -- **DEFAULT** - - 重置会话和当前用户标识符为初始认证的用户名。 - - -## 示例 - -``` ---创建角色paul。 -openGauss=# CREATE ROLE paul IDENTIFIED BY 'xxxxxxxxx'; - ---设置当前用户为paul。 -openGauss=# SET SESSION AUTHORIZATION paul password 'xxxxxxxxx'; - ---查看当前会话用户,当前用户。 -openGauss=# SELECT SESSION_USER, CURRENT_USER; - ---重置当前用户。 -openGauss=# RESET SESSION AUTHORIZATION; - ---删除用户。 -openGauss=# DROP USER paul; -``` - -## 相关参考 - -[SET ROLE](SET-ROLE.md) - +# SET SESSION AUTHORIZATION + +## 功能描述 + +把当前会话里的会话用户标识和当前用户标识都设置为指定的用户。 + +## 注意事项 + +只有在初始会话用户有系统管理员权限的时候,会话用户标识符才能改变。否则,只有在指定了被认证的用户名的情况下,系统才接受该命令。 + +## 语法格式 + +- 为当前会话设置会话用户标识符和当前用户标识符。 + + ``` + SET [ SESSION | LOCAL ] SESSION AUTHORIZATION role_name PASSWORD 'password'; + ``` + +- 重置会话和当前用户标识符为初始认证的用户名。 + + ``` + {SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT + | RESET SESSION AUTHORIZATION}; + ``` + + +## 参数说明 + +- **SESSION** + + 声明这个命令只对当前会话起作用。 + +- **LOCAL** + + 声明该命令只在当前事务中有效。 + +- **role\_name** + + 用户名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **password** + + 角色的密码。要求符合密码的命名规则。 + +- **DEFAULT** + + 重置会话和当前用户标识符为初始认证的用户名。 + + +## 示例 + +``` +--创建角色 paul 。 +openGauss=# CREATE ROLE paul IDENTIFIED BY 'xxxxxxxxx'; + +--设置当前用户为 paul 。 +openGauss=# SET SESSION AUTHORIZATION paul password 'xxxxxxxxx'; + +--查看当前会话用户,当前用户。 +openGauss=# SELECT SESSION_USER, CURRENT_USER; + +--重置当前用户。 +openGauss=# RESET SESSION AUTHORIZATION; + +--删除用户。 +openGauss=# DROP USER paul; +``` + +## 相关参考 + +[SET ROLE](SET-ROLE.md) + diff --git a/content/zh/docs/Developerguide/SET-TRANSACTION.md b/content/zh/docs/Developerguide/SET-TRANSACTION.md index ae1d5318b..c57adfe43 100644 --- a/content/zh/docs/Developerguide/SET-TRANSACTION.md +++ b/content/zh/docs/Developerguide/SET-TRANSACTION.md @@ -1,59 +1,59 @@ -# SET TRANSACTION - -## 功能描述 - -为事务设置特性。事务特性包括事务隔离级别、事务访问模式\(读/写或者只读\)。可以设置当前事务的特性(LOCAL\),也可以设置会话的默认事务特性\(SESSION\)。 - -## 注意事项 - -设置当前事务特性需要在事务中执行(即执行SET TRANSACTION之前需要执行START TRANSACTION或者BEGIN),否则设置不生效。 - -## 语法格式 - -设置事务的隔离级别、读写模式。 - -``` -{ SET [ LOCAL ] TRANSACTION|SET SESSION CHARACTERISTICS AS TRANSACTION } - { ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } - | { READ WRITE | READ ONLY } } [, ...] -``` - -## 参数说明 - -- **LOCAL** - - 声明该命令只在当前事务中有效。 - -- **SESSION** - - 声明这个命令只对当前会话起作用。 - - 取值范围:字符串,要符合标识符的命名规范。 - -- **ISOLATION\_LEVEL** - - 指定事务隔离级别,该参数决定当一个事务中存在其他并发运行事务时能够看到什么数据。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >在事务中第一个数据修改语句(SELECT、INSERT、DELETE、UPDATE、FETCH、COPY)执行之后,当前事务的隔离级别就不能再次设置。 - - 取值范围: - - - READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 - - REPEATABLE READ:可重复读隔离级别,仅仅能看到事务开始之前提交的数据,不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 - - SERIALIZABLE:openGauss目前功能上不支持此隔离级别,等价于REPEATABLE READ。 - -- **READ WRITE | READ ONLY** - - 指定事务访问模式(读/写或者只读)。 - - -## 示例 - -``` ---开启一个事务,设置事务的隔离级别为READ COMMITTED,访问模式为READ ONLY。 -openGauss=# START TRANSACTION; -openGauss=# SET LOCAL TRANSACTION ISOLATION LEVEL READ COMMITTED READ ONLY; -openGauss=# COMMIT; -``` - +# SET TRANSACTION + +## 功能描述 + +为事务设置特性。事务特性包括事务隔离级别、事务访问模式\(读/写或者只读\)。可以设置当前事务的特性(LOCAL\),也可以设置会话的默认事务特性\(SESSION\)。 + +## 注意事项 + +设置当前事务特性需要在事务中执行(即执行 SET TRANSACTION 之前需要执行 START TRANSACTION 或者BEGIN),否则设置不生效。 + +## 语法格式 + +设置事务的隔离级别、读写模式。 + +``` +{ SET [ LOCAL ] TRANSACTION|SET SESSION CHARACTERISTICS AS TRANSACTION } + { ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } + | { READ WRITE | READ ONLY } } [, ...] +``` + +## 参数说明 + +- **LOCAL** + + 声明该命令只在当前事务中有效。 + +- **SESSION** + + 声明这个命令只对当前会话起作用。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **ISOLATION\_LEVEL** + + 指定事务隔离级别,该参数决定当一个事务中存在其他并发运行事务时能够看到什么数据。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >在事务中第一个数据修改语句(SELECT、INSERT、DELETE、UPDATE、FETCH、COPY)执行之后,当前事务的隔离级别就不能再次设置。 + + 取值范围: + + - READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 + - REPEATABLE READ:可重复读隔离级别,仅仅能看到事务开始之前提交的数据,不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 + - SERIALIZABLE:openGauss目前功能上不支持此隔离级别,等价于 REPEATABLE READ 。 + +- **READ WRITE | READ ONLY** + + 指定事务访问模式(读/写或者只读)。 + + +## 示例 + +``` +--开启一个事务,设置事务的隔离级别为 READ COMMITTED ,访问模式为 READ ONLY 。 +openGauss=# START TRANSACTION; +openGauss=# SET LOCAL TRANSACTION ISOLATION LEVEL READ COMMITTED READ ONLY; +openGauss=# COMMIT; +``` + diff --git a/content/zh/docs/Developerguide/SET.md b/content/zh/docs/Developerguide/SET.md index 3a84afa9f..8e3ddaafd 100644 --- a/content/zh/docs/Developerguide/SET.md +++ b/content/zh/docs/Developerguide/SET.md @@ -1,119 +1,119 @@ -# SET - -## 功能描述 - -用于修改运行时配置参数。 - -## 注意事项 - -大多数运行时参数都可以用SET在运行时设置,但有些则在服务运行过程中或会话开始之后不能修改。 - -## 语法格式 - -- 设置所处的时区。 - - ``` - SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }; - ``` - -- 设置所属的模式。 - - ``` - SET [ SESSION | LOCAL ] - {CURRENT_SCHEMA { TO | = } { schema | DEFAULT } - | SCHEMA 'schema'}; - ``` - -- 设置客户端编码集。 - - ``` - SET [ SESSION | LOCAL ] NAMES encoding_name; - ``` - -- 设置XML的解析方式。 - - ``` - SET [ SESSION | LOCAL ] XML OPTION { DOCUMENT | CONTENT }; - ``` - -- 设置其他运行时参数。 - - ``` - SET [ LOCAL | SESSION ] - { {config_parameter { { TO | = } { value | DEFAULT } - | FROM CURRENT }}}; - ``` - - -## 参数说明 - -- **SESSION** - - 声明的参数只对当前会话起作用。如果SESSION和LOCAL都没出现,则SESSION为缺省值。 - - 如果在事务中执行了此命令,命令的产生影响将在事务回滚之后消失。如果该事务已提交,影响将持续到会话的结束,除非被另外一个SET命令重置参数。 - -- **LOCAL** - - 声明的参数只在当前事务中有效。在COMMIT或ROLLBACK之后,会话级别的设置将再次生效。 - - 不论事务是否提交,此命令的影响只持续到当前事务结束。一个特例是:在一个事务里面,即有SET命令,又有SET LOCAL命令,且SET LOCAL在SET后面,则在事务结束之前,SET LOCAL命令会起作用,但事务提交之后,则是SET命令会生效。 - -- **TIME ZONE timezone** - - 用于指定当前会话的本地时区。 - - 取值范围:有效的本地时区。该选项对应的运行时参数名称为TimeZone,DEFAULT缺省值为PRC。 - -- **CURRENT\_SCHEMA** - - **schema** - - CURRENT\_SCHEMA用于指定当前的模式。 - - 取值范围:已存在模式名称。如果模式名不存在,会导致CURRENT\_SCHEMA值为空。 - -- **SCHEMA schema** - - 同CURRENT\_SCHEMA。此处的schema是个字符串。 - - 例如:set schema 'public'。 - -- **NAMES encoding\_name** - - 用于设置客户端的字符编码。等价于set client\_encoding to encoding\_name。 - - 取值范围:有效的字符编码。该选项对应的运行时参数名称为client\_encoding,默认编码为UTF8。 - -- **XML OPTION option** - - 用于设置XML的解析方式。 - - 取值范围:CONTENT(缺省)、DOCUMENT。 - -- **config\_parameter** - - 可设置的运行时参数的名称。可用的运行时参数可以使用SHOW ALL命令查看。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >部分通过SHOW ALL查看的参数不能通过SET设置。如max\_datanodes。 - -- **value** - - config\_parameter的新值。可以声明为字符串常量、标识符、数字,或者逗号分隔的列表。DEFAULT用于把这些参数设置为它们的缺省值。 - - -## 示例 - -``` ---设置模式搜索路径。 -openGauss=# SET search_path TO tpcds, public; - ---把日期时间风格设置为传统的 POSTGRES 风格(日在月前)。 -openGauss=# SET datestyle TO postgres,dmy; -``` - -## 相关链接 - -[RESET](RESET.md),[SHOW](SHOW.md) - +# SET + +## 功能描述 + +用于修改运行时配置参数。 + +## 注意事项 + +大多数运行时参数都可以用 SET 在运行时设置,但有些则在服务运行过程中或会话开始之后不能修改。 + +## 语法格式 + +- 设置所处的时区。 + + ``` + SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }; + ``` + +- 设置所属的模式。 + + ``` + SET [ SESSION | LOCAL ] + {CURRENT_SCHEMA { TO | = } { schema | DEFAULT } + | SCHEMA 'schema'}; + ``` + +- 设置客户端编码集。 + + ``` + SET [ SESSION | LOCAL ] NAMES encoding_name; + ``` + +- 设置 XML 的解析方式。 + + ``` + SET [ SESSION | LOCAL ] XML OPTION { DOCUMENT | CONTENT }; + ``` + +- 设置其他运行时参数。 + + ``` + SET [ LOCAL | SESSION ] + { {config_parameter { { TO | = } { value | DEFAULT } + | FROM CURRENT }}}; + ``` + + +## 参数说明 + +- **SESSION** + + 声明的参数只对当前会话起作用。如果 SESSION 和 LOCAL 都没出现,则 SESSION 为缺省值。 + + 如果在事务中执行了此命令,命令的产生影响将在事务回滚之后消失。如果该事务已提交,影响将持续到会话的结束,除非被另外一个 SET 命令重置参数。 + +- **LOCAL** + + 声明的参数只在当前事务中有效。在 COMMIT 或 ROLLBACK 之后,会话级别的设置将再次生效。 + + 不论事务是否提交,此命令的影响只持续到当前事务结束。一个特例是:在一个事务里面,即有 SET 命令,又有 SET LOCAL 命令,且 SET LOCAL 在 SET 后面,则在事务结束之前, SET LOCAL 命令会起作用,但事务提交之后,则是 SET 命令会生效。 + +- **TIME ZONE timezone** + + 用于指定当前会话的本地时区。 + + 取值范围:有效的本地时区。该选项对应的运行时参数名称为 TimeZone , DEFAULT 缺省值为 PRC 。 + +- **CURRENT\_SCHEMA** + + **schema** + + CURRENT\_SCHEMA用于指定当前的模式。 + + 取值范围:已存在模式名称。如果模式名不存在,会导致CURRENT\_SCHEMA值为空。 + +- **SCHEMA schema** + + 同CURRENT\_SCHEMA。此处的 schema 是个字符串。 + + 例如:set schema 'public'。 + +- **NAMES encoding\_name** + + 用于设置客户端的字符编码。等价于set client\_encoding to encoding\_name。 + + 取值范围:有效的字符编码。该选项对应的运行时参数名称为client\_encoding,默认编码为 UTF8 。 + +- **XML OPTION option** + + 用于设置 XML 的解析方式。 + + 取值范围:CONTENT(缺省)、DOCUMENT。 + +- **config\_parameter** + + 可设置的运行时参数的名称。可用的运行时参数可以使用 SHOW ALL 命令查看。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >部分通过 SHOW ALL 查看的参数不能通过 SET 设置。如max\_datanodes。 + +- **value** + + config\_parameter的新值。可以声明为字符串常量、标识符、数字,或者逗号分隔的列表。 DEFAULT 用于把这些参数设置为它们的缺省值。 + + +## 示例 + +``` +--设置模式搜索路径。 +openGauss=# SET search_path TO tpcds, public; + +--把日期时间风格设置为传统的 POSTGRES 风格(日在月前)。 +openGauss=# SET datestyle TO postgres,dmy; +``` + +## 相关链接 + +[RESET](RESET.md),[SHOW](SHOW.md) + diff --git a/content/zh/docs/Developerguide/SHOW.md b/content/zh/docs/Developerguide/SHOW.md index 43d156af2..f9b5604bf 100644 --- a/content/zh/docs/Developerguide/SHOW.md +++ b/content/zh/docs/Developerguide/SHOW.md @@ -1,45 +1,45 @@ -# SHOW - -## 功能描述 - -SHOW将显示当前运行时参数的数值。 - -## 注意事项 - -无。 - -## 语法格式 - -``` -SHOW - { - [VARIABLES LIKE] configuration_parameter | - CURRENT_SCHEMA | - TIME ZONE | - TRANSACTION ISOLATION LEVEL | - SESSION AUTHORIZATION | - ALL - }; -``` - -## 参数说明 - -显示变量的参数请参见RESET的[参数说明](RESET.md#zh-cn_topic_0283137385_zh-cn_topic_0237122178_zh-cn_topic_0059779097_s46998dbd2cc84394b47aad2adc8ea141)。 - -## 示例 - -``` ---显示 timezone 参数值。 -openGauss=# SHOW timezone; - ---显示所有参数。 -openGauss=# SHOW ALL; - ---显示参数名中包含”var”的所有参数 -openGauss=# SHOW VARIABLES LIKE var; -``` - -## 相关链接 - -[SET](SET.md),[RESET](RESET.md) - +# SHOW + +## 功能描述 + +SHOW 将显示当前运行时参数的数值。 + +## 注意事项 + +无。 + +## 语法格式 + +``` +SHOW + { + [VARIABLES LIKE] configuration_parameter | + CURRENT_SCHEMA | + TIME ZONE | + TRANSACTION ISOLATION LEVEL | + SESSION AUTHORIZATION | + ALL + }; +``` + +## 参数说明 + +显示变量的参数请参见 RESET 的[参数说明](RESET.md#zh-cn_topic_0283137385_zh-cn_topic_0237122178_zh-cn_topic_0059779097_s46998dbd2cc84394b47aad2adc8ea141)。 + +## 示例 + +``` +--显示 timezone 参数值。 +openGauss=# SHOW timezone; + +--显示所有参数。 +openGauss=# SHOW ALL; + +--显示参数名中包含”var”的所有参数 +openGauss=# SHOW VARIABLES LIKE var; +``` + +## 相关链接 + +[SET](SET.md),[RESET](RESET.md) + diff --git a/content/zh/docs/Developerguide/SHUTDOWN.md b/content/zh/docs/Developerguide/SHUTDOWN.md index 1e5335d73..e0db57ea6 100644 --- a/content/zh/docs/Developerguide/SHUTDOWN.md +++ b/content/zh/docs/Developerguide/SHUTDOWN.md @@ -1,47 +1,47 @@ -# SHUTDOWN - -## 功能描述 - -SHUTDOWN将关闭当前连接的数据库节点。 - -## 注意事项 - -仅拥有管理员权限的用户可以运行此命令。 - -## 语法格式 - -``` -SHUTDOWN - { - | - fast | - immediate - }; -``` - -## 参数说明 - -- **""** - - 不指定关闭模式,默认为fast。 - - -- **fast** - - 不等待客户端中断连接,将所有活跃事务回滚并且强制断开客户端,然后关闭数据库节点。 - -- **immediate** - - 强行关闭,在下次重新启动的时候将导致故障恢复。 - - -## 示例 - -``` ---关闭当前数据库节点。 -openGauss=# SHUTDOWN; - ---使用fast模式关闭当前数据库节点。 -openGauss=# SHUTDOWN FAST; -``` - +# SHUTDOWN + +## 功能描述 + +SHUTDOWN 将关闭当前连接的数据库节点。 + +## 注意事项 + +仅拥有管理员权限的用户可以运行此命令。 + +## 语法格式 + +``` +SHUTDOWN + { + | + fast | + immediate + }; +``` + +## 参数说明 + +- **""** + + 不指定关闭模式,默认为 fast 。 + + +- **fast** + + 不等待客户端中断连接,将所有活跃事务回滚并且强制断开客户端,然后关闭数据库节点。 + +- **immediate** + + 强行关闭,在下次重新启动的时候将导致故障恢复。 + + +## 示例 + +``` +--关闭当前数据库节点。 +openGauss=# SHUTDOWN; + +--使用 fast 模式关闭当前数据库节点。 +openGauss=# SHUTDOWN FAST; +``` + diff --git "a/content/zh/docs/Developerguide/SMP-\344\275\277\347\224\250\345\273\272\350\256\256.md" "b/content/zh/docs/Developerguide/SMP-\344\275\277\347\224\250\345\273\272\350\256\256.md" index a6736ef3d..011f925d4 100644 --- "a/content/zh/docs/Developerguide/SMP-\344\275\277\347\224\250\345\273\272\350\256\256.md" +++ "b/content/zh/docs/Developerguide/SMP-\344\275\277\347\224\250\345\273\272\350\256\256.md" @@ -1,27 +1,27 @@ -# SMP 使用建议 - -## 使用限制 - -想要利用SMP提升查询性能需要满足以下条件: - -系统的CPU、内存、I/O和网络带宽等资源充足。SMP架构是一种利用富余资源来换取时间的方案,计划并行之后必定会引起资源消耗的增加,当上述资源成为瓶颈的情况下,SMP无法提升性能,反而可能导致性能的劣化。在出现资源瓶颈的情况下,建议关闭SMP。 - -## 配置步骤 - -1. 观察当前系统负载情况,如果系统资源充足(资源利用率小于50%),执行[2](#li1174421213171);否则退出。 -2. 设置query\_dop=1(默认值),利用explain打出执行计划,观察计划是否符合[SMP适用场景与限制](SMP适用场景与限制.md)小节中的适用场景。如果符合,进入[3](#li998191911172)。 -3. 设置query\_dop=value,不考虑资源情况和计划特征,强制选取dop为1或value。 -4. 在符合条件的查询语句执行前设置合适的query\_dop值,在语句执行结束后关闭query\_dop。举例如下。 - - ``` - openGauss=# SET query_dop = 4; - openGauss=# SELECT COUNT(*) FROM t1 GROUP BY a; - ...... - openGauss=# SET query_dop = 1; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 资源许可的情况下,并行度越高,性能提升效果越好。 - >- SMP并行度支持会话级设置,推荐客户在执行符合要求的查询前,打开smp,执行结束后,关闭smp。以免在业务峰值时,对业务造成冲击。 - - +# SMP 使用建议 + +## 使用限制 + +想要利用 SMP 提升查询性能需要满足以下条件: + +系统的CPU、内存、I/O和网络带宽等资源充足。 SMP 架构是一种利用富余资源来换取时间的方案,计划并行之后必定会引起资源消耗的增加,当上述资源成为瓶颈的情况下, SMP 无法提升性能,反而可能导致性能的劣化。在出现资源瓶颈的情况下,建议关闭 SMP 。 + +## 配置步骤 + +1. 观察当前系统负载情况,如果系统资源充足(资源利用率小于50%),执行[2](#li1174421213171);否则退出。 +2. 设置query\_dop=1(默认值),利用 explain 打出执行计划,观察计划是否符合[SMP适用场景与限制](SMP适用场景与限制.md)小节中的适用场景。如果符合,进入[3](#li998191911172)。 +3. 设置query\_dop=value,不考虑资源情况和计划特征,强制选取 dop 为 1 或 value 。 +4. 在符合条件的查询语句执行前设置合适的query\_dop值,在语句执行结束后关闭query\_dop。举例如下。 + + ``` + openGauss=# SET query_dop = 4; + openGauss=# SELECT COUNT(*) FROM t1 GROUP BY a; + ...... + openGauss=# SET query_dop = 1; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 资源许可的情况下,并行度越高,性能提升效果越好。 + >- SMP并行度支持会话级设置,推荐客户在执行符合要求的查询前,打开 smp ,执行结束后,关闭 smp 。以免在业务峰值时,对业务造成冲击。 + + diff --git "a/content/zh/docs/Developerguide/SMP\351\200\202\347\224\250\345\234\272\346\231\257\344\270\216\351\231\220\345\210\266.md" "b/content/zh/docs/Developerguide/SMP\351\200\202\347\224\250\345\234\272\346\231\257\344\270\216\351\231\220\345\210\266.md" index 2ce018511..aa8f7672d 100644 --- "a/content/zh/docs/Developerguide/SMP\351\200\202\347\224\250\345\234\272\346\231\257\344\270\216\351\231\220\345\210\266.md" +++ "b/content/zh/docs/Developerguide/SMP\351\200\202\347\224\250\345\234\272\346\231\257\344\270\216\351\231\220\345\210\266.md" @@ -1,42 +1,42 @@ -# SMP适用场景与限制 - -## 背景信息 - -SMP特性通过算子并行来提升性能,同时会占用更多的系统资源,包括CPU、内存、I/O等等。本质上SMP是一种以资源换取时间的方式,在合适的场景以及资源充足的情况下,能够起到较好的性能提升效果;但是如果在不合适的场景下,或者资源不足的情况下,反而可能引起性能的劣化。SMP特性适用于分析类查询场景,这类场景的特点是单个查询时间较长、业务并发度低。通过SMP并行技术能够降低查询时延,提高系统吞吐性能。然而在事务类大并发业务场景下,由于单个查询本身的时延很短,使用多线程并行技术反而会增加查询时延,降低系统吞吐性能。 - -## 适用场景 - -- 支持并行的算子:计划中存在以下算子支持并行。 - - Scan:支持行存普通表和行存分区表顺序扫描 、列存普通表和列存分区表顺序扫描。 - - Join:HashJoin、NestLoop。 - - Agg:HashAgg、SortAgg、PlainAgg、WindowAgg(只支持partition by,不支持order by)。 - - Stream:Local Redistribute、Local Broadcast。 - - 其他:Result、Subqueryscan、Unique、Material、Setop、Append、VectoRow、RowToVec。 - -- SMP特有算子:为了实现并行,新增了并行线程间的数据交换Stream算子供SMP特性使用。这些新增的算子可以看做Stream算子的子类。 - - Local Gather:实现实例内部并行线程的数据汇总。 - - Local Redistribute:在实例内部各线程之间,按照分布键进行数据重分布。 - - Local Broadcast:将数据广播到实例内部的每个线程。 - - Local RoundRobin:在实例内部各线程之间实现数据轮询分发。 - -- 示例说明,以TPCH Q1的并行计划为例。 - - ![](figures/zh-cn_image_0000001156347657.png) - - 在这个计划中,实现了Scan以及HashAgg算子的并行,并新增了Local Gather数据交换算子。其中3号算子为Local Gather算子,上面标有的“dop: 1/4”表明该算子的发送端线程的并行度为4,而接受端线程的并行度为1,即下层的4号HashAggregate算子按照4并行度执行,而上层的1\~2号算子按照串行执行,3号算子实现了实例内并行线程的数据汇总。 - - 通过计划Stream算子上表明的dop信息即可看出各个算子的并行情况。 - - -## 非适用场景 - -1. 索引扫描不支持并行执行。 -2. MergeJoin不支持并行执行。 -3. WindowAgg order by不支持并行执行。 -4. cursor不支持并行执行。 -5. 存储过程和函数内的查询不支持并行执行。 -6. 不支持子查询subplan和initplan的并行,以及包含子查询的算子的并行。 -7. 查询语句中带有median操作的查询不支持并行执行。 -8. 带全局临时表的查询不支持并行执行。 -9. 物化视图的更新不支持并行执行。 - +# SMP适用场景与限制 + +## 背景信息 + +SMP 特性通过算子并行来提升性能,同时会占用更多的系统资源,包括CPU、内存、I/O等等。本质上 SMP 是一种以资源换取时间的方式,在合适的场景以及资源充足的情况下,能够起到较好的性能提升效果;但是如果在不合适的场景下,或者资源不足的情况下,反而可能引起性能的劣化。 SMP 特性适用于分析类查询场景,这类场景的特点是单个查询时间较长、业务并发度低。通过 SMP 并行技术能够降低查询时延,提高系统吞吐性能。然而在事务类大并发业务场景下,由于单个查询本身的时延很短,使用多线程并行技术反而会增加查询时延,降低系统吞吐性能。 + +## 适用场景 + +- 支持并行的算子:计划中存在以下算子支持并行。 + - Scan:支持行存普通表和行存分区表顺序扫描 、列存普通表和列存分区表顺序扫描。 + - Join:HashJoin、NestLoop。 + - Agg:HashAgg、SortAgg、PlainAgg、WindowAgg(只支持 partition by ,不支持order by)。 + - Stream:Local Redistribute、Local Broadcast。 + - 其他:Result、Subqueryscan、Unique、Material、Setop、Append、VectoRow、RowToVec。 + +- SMP特有算子:为了实现并行,新增了并行线程间的数据交换 Stream 算子供 SMP 特性使用。这些新增的算子可以看做 Stream 算子的子类。 + - Local Gather:实现实例内部并行线程的数据汇总。 + - Local Redistribute:在实例内部各线程之间,按照分布键进行数据重分布。 + - Local Broadcast:将数据广播到实例内部的每个线程。 + - Local RoundRobin:在实例内部各线程之间实现数据轮询分发。 + +- 示例说明,以 TPCH Q1 的并行计划为例。 + + ![](figures/zh-cn_image_0000001156347657.png) + + 在这个计划中,实现了 Scan 以及 HashAgg 算子的并行,并新增了 Local Gather 数据交换算子。其中 3 号算子为 Local Gather 算子,上面标有的“dop: 1/4”表明该算子的发送端线程的并行度为 4 ,而接受端线程的并行度为 1 ,即下层的 4 号 HashAggregate 算子按照 4 并行度执行,而上层的1\~2号算子按照串行执行, 3 号算子实现了实例内并行线程的数据汇总。 + + 通过计划 Stream 算子上表明的 dop 信息即可看出各个算子的并行情况。 + + +## 非适用场景 + +1. 索引扫描不支持并行执行。 +2. MergeJoin不支持并行执行。 +3. WindowAgg order by不支持并行执行。 +4. cursor不支持并行执行。 +5. 存储过程和函数内的查询不支持并行执行。 +6. 不支持子查询 subplan 和 initplan 的并行,以及包含子查询的算子的并行。 +7. 查询语句中带有 median 操作的查询不支持并行执行。 +8. 带全局临时表的查询不支持并行执行。 +9. 物化视图的更新不支持并行执行。 + diff --git a/content/zh/docs/Developerguide/SNAPSHOT-SNAPSHOT.md b/content/zh/docs/Developerguide/SNAPSHOT-SNAPSHOT.md index 718e23a73..d2d5aaf6b 100644 --- a/content/zh/docs/Developerguide/SNAPSHOT-SNAPSHOT.md +++ b/content/zh/docs/Developerguide/SNAPSHOT-SNAPSHOT.md @@ -1,47 +1,47 @@ -# SNAPSHOT.SNAPSHOT - -SNAPSHOT表记录当前系统中存储的WDR快照数据的索引信息、开始时间和结束时间。只能在系统库中查询到结果,在用户库中无法查询。 - -**表 1** SNAPSHOT表属性 - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

示例

-

snapshot_id

-

bigint

-

WDR快照序号。

-

1

-

start_ts

-

timestamp

-

WDR快照的开始时间。

-

2019-12-28 17:11:27.423742+08

-

end_ts

-

timestamp

-

WDR快照的结束时间。

-

2019-12-28 17:11:43.67726+08

-
- +# SNAPSHOT.SNAPSHOT + +SNAPSHOT 表记录当前系统中存储的 WDR 快照数据的索引信息、开始时间和结束时间。只能在系统库中查询到结果,在用户库中无法查询。 + +**表 1** SNAPSHOT表属性 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

示例

+

snapshot_id

+

bigint

+

WDR快照序号。

+

1

+

start_ts

+

timestamp

+

WDR快照的开始时间。

+

2019-12-28 17:11:27.423742+08

+

end_ts

+

timestamp

+

WDR快照的结束时间。

+

2019-12-28 17:11:43.67726+08

+
+ diff --git a/content/zh/docs/Developerguide/SNAPSHOT-TABLES_SNAP_TIMESTAMP.md b/content/zh/docs/Developerguide/SNAPSHOT-TABLES_SNAP_TIMESTAMP.md index ac40c5a3d..33029f80e 100644 --- a/content/zh/docs/Developerguide/SNAPSHOT-TABLES_SNAP_TIMESTAMP.md +++ b/content/zh/docs/Developerguide/SNAPSHOT-TABLES_SNAP_TIMESTAMP.md @@ -1,65 +1,65 @@ -# SNAPSHOT.TABLES\_SNAP\_TIMESTAMP - -TABLES\_SNAP\_TIMESTAMP表记录所有存储的WDR snapshot中数据库、表对象、以及数据采集的开始和结束时间。 - -**表 1** TABLES\_SNAP\_TIMESTAMP表属性 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

名称

-

类型

-

描述

-

示例

-

snapshot_id

-

bigint

-

WDR快照序号。

-

1

-

db_name

-

text

-

WDR snapshot对应的database。

-

tpcc1000

-

tablename

-

text

-

WDR snasphot对应的table。

-

snap_xc_statio_all_indexes

-

start_ts

-

timestamp

-

WDR快照的开始时间。

-

2019-12-28 17:11:27.425849+08

-

end_ts

-

timestamp

-

WDR快照的结束时间。

-

2019-12-28 17:11:27.707398+08

-
- +# SNAPSHOT.TABLES\_SNAP\_TIMESTAMP + +TABLES\_SNAP\_TIMESTAMP表记录所有存储的 WDR snapshot 中数据库、表对象、以及数据采集的开始和结束时间。 + +**表 1** TABLES\_SNAP\_TIMESTAMP表属性 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

示例

+

snapshot_id

+

bigint

+

WDR快照序号。

+

1

+

db_name

+

text

+

WDR snapshot对应的 database 。

+

tpcc1000

+

tablename

+

text

+

WDR snasphot对应的 table 。

+

snap_xc_statio_all_indexes

+

start_ts

+

timestamp

+

WDR快照的开始时间。

+

2019-12-28 17:11:27.425849+08

+

end_ts

+

timestamp

+

WDR快照的结束时间。

+

2019-12-28 17:11:27.707398+08

+
+ diff --git a/content/zh/docs/Developerguide/SNAPSHOT.md b/content/zh/docs/Developerguide/SNAPSHOT.md index e76954ba6..e05a3a5d9 100644 --- a/content/zh/docs/Developerguide/SNAPSHOT.md +++ b/content/zh/docs/Developerguide/SNAPSHOT.md @@ -1,126 +1,126 @@ -# SNAPSHOT - -## 功能描述 - -针对多用户情况下,对数据进行统一的版本控制。 - -## 注意事项 - -- 本特性GUC参数db4ai\_snapshot\_mode,快照存储模型分为MSS和CSS两种;GUC参数db4ai\_snapshot\_version\_delimiter,用于设定版本分隔符,默认为“@”;GUC参数db4ai\_snapshot\_version\_separator,用于设定子版本分隔符,默认为“.”。 -- 当快照选用增量存储方式时,各个快照中具有依赖关系。删除快照需要按照依赖顺序进行删除。 -- snapshot特性用于团队不同成员间维护数据,涉及管理员和普通用户之间的数据转写。所以在私有用户、三权分立\(enableSeparationOfDuty=ON\)等状态下,数据库不支持snapshot功能特性。 -- 当需要稳定可用的快照用于AI训练等任务时,用户需要将快照发布。 - -## 语法格式 - -1. 创建快照。 - - 可以采用“CREATE SNAPSHOT … AS”以及“CREATE SNAPSHOT … FROM”语句创建**数据表快照**。 - - - CREATE SNAPSHOT AS - - ``` - CREATE SNAPSHOT [@ ] - [COMMENT IS } - AS query; - ``` - - - CREATE SNAPSHOT FROM - - ``` - CREATE SNAPSHOT [@ ] - FROM @ - [COMMENT IS } - USING ( - { INSERT [INTO SNAPSHOT] … - | UPDATE [SNAPSHOT] [AS ] SET … [FROM …] [WHERE …] - | DELETE [FROM SNAPSHOT] [AS ] [USING …] [WHERE …] - | ALTER [SNAPSHOT] { ADD … | DROP … } [, …] - } [; …] - ); - ``` - -2. 删除快照。 - - PURGE SNAPSHOT - - ``` - PURGE SNAPSHOT @ ; - ``` - -3. 快照采样。 - - SAMPLE SNAPSHOT - - ``` - SAMPLE SNAPSHOT @ - [STRATIFY BY attr_list] - { AS