From c197f819d60e9d2c50926c476cf98db6388d560b Mon Sep 17 00:00:00 2001 From: spaceoddity91719 Date: Sat, 7 May 2022 11:10:27 +0800 Subject: [PATCH 1/4] =?UTF-8?q?update(mogdb):=E6=94=AF=E6=8C=81=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1-numeric-data-types.md | 100 +++++++++++------- .../10-text-search-types.md | 54 +++++----- .../supported-data-types/11-uuid-type.md | 4 +- .../supported-data-types/12-json-types.md | 8 +- .../supported-data-types/13-HLL.md | 80 +++++++------- .../14-object-identifier-types.md | 12 +-- .../supported-data-types/15-pseudo-types.md | 14 +-- ...-types-supported-by-column-store-tables.md | 20 +++- .../supported-data-types/17-xml-type.md | 16 +-- ...8-data-type-used-by-the-ledger-database.md | 2 +- .../supported-data-types/2-monetary.md | 4 +- .../3-boolean-data-types.md | 18 ++-- .../4-character-data-types.md | 38 +++---- .../5-binary-data-types.md | 4 +- .../supported-data-types/6-date-time-types.md | 82 +++++++------- .../supported-data-types/7-geometric.md | 16 +-- .../supported-data-types/8-network-address.md | 4 +- .../9-bit-string-types.md | 17 +-- 18 files changed, 266 insertions(+), 227 deletions(-) diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/1-numeric-data-types.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/1-numeric-data-types.md index 92ed639e..4d6d4256 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/1-numeric-data-types.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/1-numeric-data-types.md @@ -18,34 +18,34 @@ date: 2021-04-06 | INTEGER | 常用的整数,别名为INT4。 | 4字节 | -2,147,483,648 ~ +2,147,483,647 | | BINARY_INTEGER | 常用的整数INTEGER的别名。 | 4字节 | -2,147,483,648 ~ +2,147,483,647 | | BIGINT | 大范围的整数,别名为INT8。 | 8字节 | -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807 | -| int16 | 十六字节的大范围证书,目前不支持用户用于建表等使用。 | 16字节 | -170,141,183,460,469,231,731,687,303,715,884,105,728 ~ +170,141,183,460,469,231,731,687,303,715,884,105,727 | +| int16 | 十六字节的大范围整数,目前不支持用户用于建表等使用。 | 16字节 | -170,141,183,460,469,231,731,687,303,715,884,105,728 ~ +170,141,183,460,469,231,731,687,303,715,884,105,727 | 示例: ```sql --创建具有TINYINT类型数据的表。 -mogdb=# CREATE TABLE int_type_t1 +MogDB=# CREATE TABLE int_type_t1 ( IT_COL1 TINYINT ); --向创建的表中插入数据。 -mogdb=# INSERT INTO int_type_t1 VALUES(10); +MogDB=# INSERT INTO int_type_t1 VALUES(10); --查看数据。 -mogdb=# SELECT * FROM int_type_t1; +MogDB=# SELECT * FROM int_type_t1; it_col1 --------- 10 (1 row) --删除表。 -mogdb=# DROP TABLE int_type_t1; +MogDB=# DROP TABLE int_type_t1; ``` ```sql --创建具有TINYINT,INTEGER,BIGINT类型数据的表。 -mogdb=# CREATE TABLE int_type_t2 +MogDB=# CREATE TABLE int_type_t2 ( a TINYINT, b TINYINT, @@ -54,17 +54,17 @@ mogdb=# CREATE TABLE int_type_t2 ); --插入数据。 -mogdb=# INSERT INTO int_type_t2 VALUES(100, 10, 1000, 10000); +MogDB=# INSERT INTO int_type_t2 VALUES(100, 10, 1000, 10000); --查看数据。 -mogdb=# SELECT * FROM int_type_t2; +MogDB=# SELECT * FROM int_type_t2; a | b | c | d -----+----+------+------- 100 | 10 | 1000 | 10000 (1 row) --删除表。 -mogdb=# DROP TABLE int_type_t2; +MogDB=# DROP TABLE int_type_t2; ``` > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** @@ -83,44 +83,44 @@ mogdb=# DROP TABLE int_type_t2; ```sql --创建表。 -mogdb=# CREATE TABLE decimal_type_t1 +MogDB=# CREATE TABLE decimal_type_t1 ( DT_COL1 DECIMAL(10,4) ); --插入数据。 -mogdb=# INSERT INTO decimal_type_t1 VALUES(123456.122331); +MogDB=# INSERT INTO decimal_type_t1 VALUES(123456.122331); --查询表中的数据。 -mogdb=# SELECT * FROM decimal_type_t1; +MogDB=# SELECT * FROM decimal_type_t1; dt_col1 ------------- 123456.1223 (1 row) --删除表。 -mogdb=# DROP TABLE decimal_type_t1; +MogDB=# DROP TABLE decimal_type_t1; ``` ```sql --创建表。 -mogdb=# CREATE TABLE numeric_type_t1 +MogDB=# CREATE TABLE numeric_type_t1 ( NT_COL1 NUMERIC(10,4) ); --插入数据。 -mogdb=# INSERT INTO numeric_type_t1 VALUES(123456.12354); +MogDB=# INSERT INTO numeric_type_t1 VALUES(123456.12354); --查询表中的数据。 -mogdb=# SELECT * FROM numeric_type_t1; +MogDB=# SELECT * FROM numeric_type_t1; nt_col1 ------------- 123456.1235 (1 row) --删除表。 -mogdb=# DROP TABLE numeric_type_t1; +MogDB=# DROP TABLE numeric_type_t1; ``` > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** @@ -141,66 +141,86 @@ mogdb=# DROP TABLE numeric_type_t1; ```sql --创建表。 -mogdb=# CREATE TABLE smallserial_type_tab(a SMALLSERIAL); +MogDB=# CREATE TABLE smallserial_type_tab(a SMALLSERIAL); --插入数据。 -mogdb=# INSERT INTO smallserial_type_tab VALUES(default); +MogDB=# INSERT INTO smallserial_type_tab VALUES(default); --再次插入数据。 -mogdb=# INSERT INTO smallserial_type_tab VALUES(default); +MogDB=# INSERT INTO smallserial_type_tab VALUES(default); --查看数据。 -mogdb=# SELECT * FROM smallserial_type_tab; - a +MogDB=# SELECT * FROM smallserial_type_tab; + a --- 1 2 (2 rows) --创建表。 -mogdb=# CREATE TABLE serial_type_tab(b SERIAL); +MogDB=# CREATE TABLE serial_type_tab(b SERIAL); --插入数据。 -mogdb=# INSERT INTO serial_type_tab VALUES(default); +MogDB=# INSERT INTO serial_type_tab VALUES(default); --再次插入数据。 -mogdb=# INSERT INTO serial_type_tab VALUES(default); +MogDB=# INSERT INTO serial_type_tab VALUES(default); --查看数据。 -mogdb=# SELECT * FROM serial_type_tab; - b +MogDB=# SELECT * FROM serial_type_tab; + b --- 1 2 (2 rows) --创建表。 -mogdb=# CREATE TABLE bigserial_type_tab(c BIGSERIAL); +MogDB=# CREATE TABLE bigserial_type_tab(c BIGSERIAL); --插入数据。 -mogdb=# INSERT INTO bigserial_type_tab VALUES(default); +MogDB=# INSERT INTO bigserial_type_tab VALUES(default); --插入数据。 -mogdb=# INSERT INTO bigserial_type_tab VALUES(default); +MogDB=# INSERT INTO bigserial_type_tab VALUES(default); --查看数据。 -mogdb=# SELECT * FROM bigserial_type_tab; - c +MogDB=# SELECT * FROM bigserial_type_tab; + c +--- + 1 + 2 +(2 rows) + +--创建表。 +MogDB=# CREATE TABLE largeserial_type_tab(c LARGESERIAL); + +--插入数据。 +MogDB=# INSERT INTO largeserial_type_tab VALUES(default); + +--插入数据。 +MogDB=# INSERT INTO largeserial_type_tab VALUES(default); + +--查看数据。 +MogDB=# SELECT * FROM largeserial_type_tab; + c --- 1 2 (2 rows) --删除表。 -mogdb=# DROP TABLE smallserial_type_tab; +MogDB=# DROP TABLE smallserial_type_tab; + +MogDB=# DROP TABLE serial_type_tab; -mogdb=# DROP TABLE serial_type_tab; +MogDB=# DROP TABLE bigserial_type_tab; -mogdb=# DROP TABLE bigserial_type_tab; +MogDB=# DROP TABLE largeserial_type_tab; ``` > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** -> SMALLSERIAL,SERIAL和BIGSERIAL类型不是真正的类型,只是为在表中设置唯一标识做的概念上的便利。因此,创建一个整数字段,并且把它的缺省数值安排为从一个序列发生器读取。应用了一个NOT NULL约束以确保NULL不会被插入。在大多数情况下用户可能还希望附加一个UNIQUE或PRIMARY KEY约束避免意外地插入重复的数值,但这个不是自动的。最后,将序列发生器从属于那个字段,这样当该字段或表被删除的时候也一并删除它。目前只支持在创建表时候指定SERIAL列,不可以在已有的表中,增加SERIAL列。另外临时表也不支持创建SERIAL列。因为SERIAL不是真正的类型,也不可以将表中存在的列类型转化为SERIAL。 +> +> SMALLSERIAL、SERIAL、BIGSERIAL和LARGESERIAL类型不是真正的类型,只是为在表中设置唯一标识做的概念上的便利。因此,创建一个整数字段,并且把它的缺省数值安排为从一个序列发生器读取。应用了一个NOT NULL约束以确保NULL不会被插入。在大多数情况下用户可能还希望附加一个UNIQUE或PRIMARY KEY约束避免意外地插入重复的数值,但这个不是自动的。最后,将序列发生器从属于那个字段,这样当该字段或表被删除的时候也一并删除它。目前只支持在创建表时候指定SERIAL列,不可以在已有的表中,增加SERIAL列。另外临时表也不支持创建SERIAL列。因为SERIAL不是真正的类型,也不可以将表中存在的列类型转化为SERIAL。 **表 4** 浮点类型 @@ -217,7 +237,7 @@ mogdb=# DROP TABLE bigserial_type_tab; ```sql --创建表。 -mogdb=# CREATE TABLE float_type_t2 +MogDB=# CREATE TABLE float_type_t2 ( FT_COL1 INTEGER, FT_COL2 FLOAT4, @@ -229,15 +249,15 @@ mogdb=# CREATE TABLE float_type_t2 ); --插入数据。 -mogdb=# INSERT INTO float_type_t2 VALUES(10,10.365456,123456.1234,10.3214, 321.321, 123.123654, 123.123654); +MogDB=# INSERT INTO float_type_t2 VALUES(10,10.365456,123456.1234,10.3214, 321.321, 123.123654, 123.123654); --查看数据。 -mogdb=# SELECT * FROM float_type_t2 ; +MogDB=# SELECT * FROM float_type_t2 ; ft_col1 | ft_col2 | ft_col3 | ft_col4 | ft_col5 | ft_col6 | ft_col7 ---------+---------+-------------+---------+---------+----------+--------- 10 | 10.3655 | 123456.1234 | 10.3214 | 321.321 | 123.1237 | 123.124 (1 row) --删除表。 -mogdb=# DROP TABLE float_type_t2; +MogDB=# DROP TABLE float_type_t2; ``` diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/10-text-search-types.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/10-text-search-types.md index 554c74f3..1e0f94ec 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/10-text-search-types.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/10-text-search-types.md @@ -13,40 +13,40 @@ MogDB提供了两种数据类型用于支持全文检索。tsvector类型表示 tsvector类型表示一个检索单元,通常是一个数据库表中一行的文本字段或者这些字段的组合,tsvector类型的值是一个标准词位的有序列表,标准词位就是把同一个词的变型体都标准化成相同的,在输入的同时会自动排序和消除重复。to_tsvector函数通常用于解析和标准化文档字符串。 -tsvector的值是唯一分词的分类列表,把一句话的词格式化为不同的词条,在进行分词处理的时候tsvector会自动去掉分词中重复的词条,按照一定的顺序录入。如: +tsvector的值是唯一分词的分类列表,把一句话的词格式化为不同的词条,在进行分词处理的时候tsvector会自动去掉分词中重复的词条,按照一定的顺序录入。如: ```sql -mogdb=# SELECT 'a fat cat sat on a mat and ate a fat rat'::tsvector; +MogDB=# SELECT 'a fat cat sat on a mat and ate a fat rat'::tsvector; tsvector ---------------------------------------------------- 'a' 'and' 'ate' 'cat' 'fat' 'mat' 'on' 'rat' 'sat' (1 row) ``` -从上面的例子可以看出,通过tsvector把一个字符串按照空格进行分词,分词的顺序是按照长短和字母排序的。但是如果词条中需要包含空格或标点符号,可以用引号标记: +从上面的例子可以看出,通过tsvector把一个字符串按照空格进行分词,分词的顺序是按照长短和字母排序的。但是如果词条中需要包含空格或标点符号,可以用引号标记: ```sql -mogdb=# SELECT $$the lexeme ' ' contains spaces$$::tsvector; +MogDB=# SELECT $$the lexeme ' ' contains spaces$$::tsvector; tsvector ------------------------------------------- ' ' 'contains' 'lexeme' 'spaces' 'the' (1 row) ``` -如果在词条中使用引号,可以使用双$$符号作为标记: +如果在词条中使用引号,可以使用双$$符号作为标记: ```sql -mogdb=# SELECT $$the lexeme 'Joe''s' contains a quote$$::tsvector; +MogDB=# SELECT $$the lexeme 'Joe''s' contains a quote$$::tsvector; tsvector ------------------------------------------------ 'Joe''s' 'a' 'contains' 'lexeme' 'quote' 'the' (1 row) ``` -词条位置常量也可以放到词汇中: +词条位置常量也可以放到词汇中: ```sql -mogdb=# SELECT 'a:1 fat:2 cat:3 sat:4 on:5 a:6 mat:7 and:8 ate:9 a:10 fat:11 rat:12'::tsvector; +MogDB=# SELECT 'a:1 fat:2 cat:3 sat:4 on:5 a:6 mat:7 and:8 ate:9 a:10 fat:11 rat:12'::tsvector; tsvector ------------------------------------------------------------------------------- 'a':1,6,10 'and':8 'ate':9 'cat':3 'fat':2,11 'mat':7 'on':5 'rat':12 'sat':4 @@ -55,32 +55,32 @@ mogdb=# SELECT 'a:1 fat:2 cat:3 sat:4 on:5 a:6 mat:7 and:8 ate:9 a:10 fat:11 rat 位置常量通常表示文档中源字的位置。位置信息可以用于进行排名。位置常量的范围是1到16383,最大值默认是16383。相同词的重复位会被忽略掉。 -拥有位置的词汇甚至可以用一个权来标记,这个权可以是A,B,C或D。默认的是D,因此输出中不会出现: +拥有位置的词汇甚至可以用一个权来标记,这个权可以是A、B、C或D。默认的是D,因此输出中不会出现: ```sql -mogdb=# SELECT 'a:1A fat:2B,4C cat:5D'::tsvector; +MogDB=# SELECT 'a:1A fat:2B,4C cat:5D'::tsvector; tsvector ---------------------------- 'a':1A 'cat':5 'fat':2B,4C (1 row) ``` -权可以用来反映文档结构,如: 标记标题与主体文字的区别。全文检索排序函数可以为不同的权标记分配不同的优先级。 +权可以用来反映文档结构,如:标记标题与主体文字的区别。全文检索排序函数可以为不同的权标记分配不同的优先级。 -下面的示例是tsvector类型标准用法。如: +下面的示例是tsvector类型标准用法。如: ```sql -mogdb=# SELECT 'The Fat Rats'::tsvector; +MogDB=# SELECT 'The Fat Rats'::tsvector; tsvector -------------------- 'Fat' 'Rats' 'The' (1 row) ``` -但是对于英文全文检索应用来说,上面的单词会被认为非规范化的,所以需要通过to_tsvector函数对这些单词进行规范化处理: +但是对于英文全文检索应用来说,上面的单词会被认为非规范化的,所以需要通过to_tsvector函数对这些单词进行规范化处理: ```sql -mogdb=# SELECT to_tsvector('english', 'The Fat Rats'); +MogDB=# SELECT to_tsvector('english', 'The Fat Rats'); to_tsvector ----------------- 'fat':2 'rat':3 @@ -92,19 +92,19 @@ mogdb=# SELECT to_tsvector('english', 'The Fat Rats'); tsquery类型表示一个检索条件,存储用于检索的词汇,并且使用布尔操作符&(AND),|(OR)和!(NOT)来组合他们,括号用来强调操作符的分组。to_tsquery函数及plainto_tsquery函数会将单词转换为tsquery类型前进行规范化处理。 ```sql -mogdb=# SELECT 'fat & rat'::tsquery; +MogDB=# SELECT 'fat & rat'::tsquery; tsquery --------------- 'fat' & 'rat' (1 row) -mogdb=# SELECT 'fat & (rat | cat)'::tsquery; +MogDB=# SELECT 'fat & (rat | cat)'::tsquery; tsquery --------------------------- 'fat' & ( 'rat' | 'cat' ) (1 row) -mogdb=# SELECT 'fat & rat & ! cat'::tsquery; +MogDB=# SELECT 'fat & rat & ! cat'::tsquery; tsquery ------------------------ 'fat' & 'rat' & !'cat' @@ -116,17 +116,17 @@ mogdb=# SELECT 'fat & rat & ! cat'::tsquery; tsquery中的词汇可以用一个或多个权字母来标记,这些权字母限制这次词汇只能与带有匹配权的tsvector词汇进行匹配。 ```sql -mogdb=# SELECT 'fat:ab & cat'::tsquery; +MogDB=# SELECT 'fat:ab & cat'::tsquery; tsquery ------------------ 'fat':AB & 'cat' (1 row) ``` -同样,tsquery中的词汇可以用*标记来指定前缀匹配: +同样,tsquery中的词汇可以用*标记来指定前缀匹配: ```sql -mogdb=# SELECT 'super:*'::tsquery; +MogDB=# SELECT 'super:*'::tsquery; tsquery ----------- 'super':* @@ -135,20 +135,20 @@ mogdb=# SELECT 'super:*'::tsquery; 这个查询可以匹配tsvector中以"super"开始的任意单词。 -请注意,前缀首先被文本搜索分词器处理,这也就意味着下面的结果为真: +请注意,前缀首先被文本搜索分词器处理,这也就意味着下面的结果为真: ```sql -mogdb=# SELECT to_tsvector( 'postgraduate' ) @@ to_tsquery( 'postgres:*' ) AS RESULT; +MogDB=# SELECT to_tsvector( 'postgraduate' ) @@ to_tsquery( 'postgres:*' ) AS RESULT; result ---------- t (1 row) ``` -因为postgres经过处理后得到postgr: +因为postgres经过处理后得到postgr: ```sql -mogdb=# SELECT to_tsquery('postgres:*'); +MogDB=# SELECT to_tsquery('postgres:*'); to_tsquery ------------ 'postgr':* @@ -157,10 +157,10 @@ mogdb=# SELECT to_tsquery('postgres:*'); 这样就匹配postgraduate了。 -'Fat:ab & Cats'规范化转为tsquery类型结果如下: +'Fat:ab & Cats'规范化转为tsquery类型结果如下: ```sql -mogdb=# SELECT to_tsquery('Fat:ab & Cats'); +MogDB=# SELECT to_tsquery('Fat:ab & Cats'); to_tsquery ------------------ 'fat':AB & 'cat' diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/11-uuid-type.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/11-uuid-type.md index 0d8700e9..69c28311 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/11-uuid-type.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/11-uuid-type.md @@ -9,13 +9,13 @@ date: 2021-04-06 UUID数据类型用来存储RFC 4122,ISO/IEF 9834-8:2005以及相关标准定义的通用唯一标识符(UUID)。这个标识符是一个由算法产生的128位标识符,确保它不可能使用相同算法在已知的模块中产生的相同标识符。 -UUID是一个小写十六进制数字的序列,由分字符分成几组,一组8位数字+三组4位数字+一组12位数字,总共32个数字代表128位,标准的UUID示例如下: +UUID是一个小写十六进制数字的序列,由分字符分成几组,一组8位数字+三组4位数字+一组12位数字,总共32个数字代表128位,标准的UUID示例如下: ```sql a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 ``` -MogDB同样支持以其他方式输入: 大写字母和数字、由花括号包围的标准格式、省略部分或所有连字符、在任意一组四位数字之后加一个连字符。示例: +MogDB同样支持以其他方式输入:大写字母和数字、由花括号包围的标准格式、省略部分或所有连字符、在任意一组四位数字之后加一个连字符。示例: ```sql A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/12-json-types.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/12-json-types.md index d0ad3a30..57436c24 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/12-json-types.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/12-json-types.md @@ -15,7 +15,7 @@ JSON(JavaScript Object Notation)数据,可以是单独的一个标量, MogDB内存在两种数据类型JSON和JSONB,可以用来存储JSON数据。其中JSON是对输入的字符串的完整拷贝,使用时再去解析,所以它会保留输入的空格,重复键以及顺序等;JSONB解析输入后保存的二进制,它在解析时会删除语义无关的细节和重复的键,对键值也会进行排序,使用时不用再次解析。 -因此可以发现,两者其实都是JSON,它们接受相同的字符串作为输入。它们实际的主要差别是效率。JSON数据类型存储输入文本的精确拷贝,处理函数必须在每个执行上重新解析; 而JSONB数据以分解的二进制格式存储,这使得它由于添加了转换机制而在输入上稍微慢些,但是在处理上明显更快,因为不需要重新解析。同时由于JSONB类型存在解析后的格式归一化等操作,同等的语义下只会有一种格式,因此可以更好更强大的支持很多其他额外的操作,比如按照一定的规则进行大小比较等。JSONB也支持索引,这也是一个明显的优势。 +因此可以发现,两者其实都是JSON,它们接受相同的字符串作为输入。它们实际的主要差别是效率。JSON数据类型存储输入文本的精确拷贝,处理函数必须在每个执行上重新解析;而JSONB数据以分解的二进制格式存储,这使得它由于添加了转换机制而在输入上稍微慢些,但是在处理上明显更快,因为不需要重新解析。同时由于JSONB类型存在解析后的格式归一化等操作,同等的语义下只会有一种格式,因此可以更好更强大的支持很多其他额外的操作,比如按照一定的规则进行大小比较等。JSONB也支持索引,这也是一个明显的优势。 ## 输入格式 @@ -77,7 +77,7 @@ JSON和JSONB的主要差异在于存储方式上的不同,JSONB存储的是解 - 对于输入的object-json字符串,解析成jsonb二进制后,会天然的丢弃语义上无关紧要的细节,比如空格: ``` - mogdb=# select ' [1, " a ", {"a" :1 }] '::jsonb; jsonb + MogDB=# select ' [1, " a ", {"a" :1 }] '::jsonb; jsonb ---------------------- [1, " a ", {"a": 1}](1 row) ``` @@ -85,13 +85,13 @@ JSON和JSONB的主要差异在于存储方式上的不同,JSONB存储的是解 - 对于object-json,会删除重复的键值,只保留最后一个出现的,如: ``` - mogdb=# select '{"a" : 1, "a" : 2}'::jsonb; jsonb---------- {"a": 2}(1 row) + MogDB=# select '{"a" : 1, "a" : 2}'::jsonb; jsonb---------- {"a": 2}(1 row) ``` - 对于object-json,键值会重新进行排序,排序规则:长度长的在后、长度相等则ascii码大的在后,如: ``` - mogdb=# select '{"aa" : 1, "b" : 2, "a" : 3}'::jsonb; jsonb + MogDB=# select '{"aa" : 1, "b" : 2, "a" : 3}'::jsonb; jsonb --------------------------- {"a": 3, "b": 2, "aa": 1}(1 row) ``` diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/13-HLL.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/13-HLL.md index 1878adb1..a324a7b3 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/13-HLL.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/13-HLL.md @@ -37,7 +37,7 @@ HLL中主要的数据结构,请参见[表2](#hyper)。 | :------- | :----------------------------------------------------------- | | 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类型的参数。 +创建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类型的参数。 > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > @@ -47,10 +47,10 @@ HLL中主要的数据结构,请参见[表2](#hyper)。 > - 输入合法范围的入参,对应HLL参数采用输入值。 > - 输入不合法范围的入参,创建HLL类型报错。 -``` +```sql -- 创建hll类型的表,不指定入参 -mogdb=# create table t1 (id integer, set hll); -mogdb=# \d t1 +MogDB=# create table t1 (id integer, set hll); +MogDB=# \d t1 Table "public.t1" Column | Type | Modifiers --------+---------+----------- @@ -58,7 +58,7 @@ mogdb=# \d t1 c2 | hll | -- 创建hll类型的表,指定前两个入参,后两个采用默认值 -mogdb=# create table t2 (id integer, set hll(12,4)); +MogDB=# create table t2 (id integer, set hll(12,4)); Table "public.t2" Column | Type | Modifiers --------+----------------+----------- @@ -66,8 +66,8 @@ mogdb=# create table t2 (id integer, set hll(12,4)); c2 | hll(12,4,12,0) | --创建hll类型的表,指定第三个入参,其余采用默认值 -mogdb=# create table t3(id int, set hll(-1,-1,8,-1)); -mogdb=# \d t3 +MogDB=# create table t3(id int, set hll(-1,-1,8,-1)); +MogDB=# \d t3 Table "public.t3" Column | Type | Modifiers --------+----------------+----------- @@ -75,7 +75,7 @@ mogdb=# \d t3 c2 | hll(14,10,8,0) | --创建hll类型的表,指定入参不合法报错 -mogdb=# create table t4(id int, set hll(5,-1)); +MogDB=# 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 ``` @@ -83,15 +83,15 @@ ERROR: log2m = 5 is out of range, it should be in range 10 to 16, or set -1 as > > 对含有HLL类型的表插入HLL对象时,HLL类型的设定参数须同插入对象的设定参数一致,否则报错。 -``` +```sql -- 创建带有hll类型的表 -mogdb=# create table t1(id integer, set hll(14)); +MogDB=# create table t1(id integer, set hll(14)); -- 向表中插入hll对象,参数一致,成功 -mogdb=# insert into t1 values (1, hll_empty(14,-1)); +MogDB=# insert into t1 values (1, hll_empty(14,-1)); -- 向表中插入hll对象,参数不一致,失败 -mogdb=# insert into t1(id, set) values (1, hll_empty(14,5)); +MogDB=# insert into t1(id, set) values (1, hll_empty(14,5)); ERROR: log2explicit does not match: source is 5 and dest is 10 ``` @@ -101,65 +101,65 @@ HLL的应用场景。 通过下面的示例说明如何使用hll数据类型: - ``` + ```sql -- 创建带有hll类型的表 - mogdb=# create table helloworld (id integer, set hll); + MogDB=# create table helloworld (id integer, set hll); -- 向表中插入空的hll - mogdb=# insert into helloworld(id, set) values (1, hll_empty()); + MogDB=# insert into helloworld(id, set) values (1, hll_empty()); -- 把整数经过哈希计算加入到hll中 - mogdb=# update helloworld set set = hll_add(set, hll_hash_integer(12345)) where id = 1; + MogDB=# update helloworld set set = hll_add(set, hll_hash_integer(12345)) where id = 1; -- 把字符串经过哈希计算加入到hll中 - mogdb=# update helloworld set set = hll_add(set, hll_hash_text('hello world')) where id = 1; + MogDB=# update helloworld set set = hll_add(set, hll_hash_text('hello world')) where id = 1; -- 得到hll中的distinct值 - mogdb=# select hll_cardinality(set) from helloworld where id = 1; + MogDB=# select hll_cardinality(set) from helloworld where id = 1; hll_cardinality ----------------- 2 (1 row) -- 删除表 - mogdb=# drop table helloworld; + MogDB=# drop table helloworld; ``` - 场景2:“网站访客数量统计” 通过下面的示例说明hll如何统计在一段时间内访问网站的不同用户数量: - ``` + ```sql -- 创建原始数据表,表示某个用户在某个时间访问过网站。 - mogdb=# create table facts ( + MogDB=# create table facts ( date date, user_id integer ); -- 构造数据,表示一天中有哪些用户访问过网站。 - mogdb=# insert into facts values ('2019-02-20', generate_series(1,100)); - mogdb=# insert into facts values ('2019-02-21', generate_series(1,200)); - mogdb=# insert into facts values ('2019-02-22', generate_series(1,300)); - mogdb=# insert into facts values ('2019-02-23', generate_series(1,400)); - mogdb=# insert into facts values ('2019-02-24', generate_series(1,500)); - mogdb=# insert into facts values ('2019-02-25', generate_series(1,600)); - mogdb=# insert into facts values ('2019-02-26', generate_series(1,700)); - mogdb=# insert into facts values ('2019-02-27', generate_series(1,800)); + MogDB=# insert into facts values ('2019-02-20', generate_series(1,100)); + MogDB=# insert into facts values ('2019-02-21', generate_series(1,200)); + MogDB=# insert into facts values ('2019-02-22', generate_series(1,300)); + MogDB=# insert into facts values ('2019-02-23', generate_series(1,400)); + MogDB=# insert into facts values ('2019-02-24', generate_series(1,500)); + MogDB=# insert into facts values ('2019-02-25', generate_series(1,600)); + MogDB=# insert into facts values ('2019-02-26', generate_series(1,700)); + MogDB=# insert into facts values ('2019-02-27', generate_series(1,800)); -- 创建表并指定列为hll。 - mogdb=# create table daily_uniques ( + MogDB=# create table daily_uniques ( date date UNIQUE, users hll ); -- 根据日期把数据分组,并把数据插入到hll中。 - mogdb=# insert into daily_uniques(date, users) + MogDB=# insert into daily_uniques(date, users) select date, hll_add_agg(hll_hash_integer(user_id)) from facts group by 1; -- 计算每一天访问网站不同用户数量 - mogdb=# select date, hll_cardinality(users) from daily_uniques order by date; + MogDB=# select date, hll_cardinality(users) from daily_uniques order by date; date | hll_cardinality ------------+------------------ 2019-02-20 | 100 @@ -173,14 +173,14 @@ HLL的应用场景。 (8 rows) -- 计算在2019.02.20到2019.02.26一周中有多少不同用户访问过网站 - mogdb=# select hll_cardinality(hll_union_agg(users)) from daily_uniques where date >= '2019-02-20'::date and date <= '2019-02-26'::date; + MogDB=# 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) -- 计算昨天访问过网站而今天没访问网站的用户数量。 - mogdb=# 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); + MogDB=# 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 @@ -194,17 +194,17 @@ HLL的应用场景。 (8 rows) -- 删除表 - mogdb=# drop table facts; - mogdb=# drop table daily_uniques; + MogDB=# drop table facts; + MogDB=# drop table daily_uniques; ``` - 场景3:“插入数据不满足hll数据结构要求” 当用户给hll类型的字段插入数据的时候,必须保证插入的数据满足hll数据结构要求,如果解析后不满足就会报错。如下示例中: 插入数据'E\\1234'时,该数据不满足hll数据结构,不能解析成功因此失败报错。 - ``` - mogdb=# create table test(id integer, set hll); - mogdb=# insert into test values(1, 'E\\1234'); + ```sql + MogDB=# create table test(id integer, set hll); + MogDB=# insert into test values(1, 'E\\1234'); ERROR: not a hll type, size=6 is not enough - mogdb=# drop table test; + MogDB=# drop table test; ``` diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/14-object-identifier-types.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/14-object-identifier-types.md index bf388d3e..c06c8063 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/14-object-identifier-types.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/14-object-identifier-types.md @@ -28,24 +28,24 @@ MogDB在内部使用对象标识符(OID)作为各种系统表的主键。系 | REGCLASS | pg_class | 关系名。 | pg_type | | REGTYPE | pg_type | 数据类型名。 | integer | -OID类型: 主要作为数据库系统表中字段使用。 +OID类型:主要作为数据库系统表中字段使用。 -示例: +示例: ```sql -mogdb=# SELECT oid FROM pg_class WHERE relname = 'pg_type'; +MogDB=# SELECT oid FROM pg_class WHERE relname = 'pg_type'; oid ------ 1247 (1 row) ``` -OID别名类型REGCLASS: 主要用于对象OID值的简化查找。 +OID别名类型REGCLASS:主要用于对象OID值的简化查找。 -示例: +示例: ```sql -mogdb=# SELECT attrelid,attname,atttypid,attstattarget FROM pg_attribute WHERE attrelid = 'pg_type'::REGCLASS; +MogDB=# SELECT attrelid,attname,atttypid,attstattarget FROM pg_attribute WHERE attrelid = 'pg_type'::REGCLASS; attrelid | attname | atttypid | attstattarget ----------+------------+----------+--------------- 1247 | xc_node_id | 23 | 0 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/15-pseudo-types.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/15-pseudo-types.md index 356e84af..9d0f6743 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/15-pseudo-types.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/15-pseudo-types.md @@ -32,7 +32,7 @@ MogDB数据类型中包含一系列特殊用途的类型,这些类型按照类 声明用C编写的函数(不管是内置的还是动态装载的)都可以接受或者返回任何这样的伪数据类型。当伪类型作为参数类型使用时,用户需要保证函数的正常运行。 -用过程语言编写的函数只能使用实现语言允许的伪类型。目前,过程语言都不允许使用作为参数类型的伪类型,并且只允许使用void和record作为结果类型。一些多态的函数还支持使用anyelement,anyarray,anynonarray anyenum和anyrange类型。 +用过程语言编写的函数只能使用实现语言允许的伪类型。目前,过程语言都不允许使用作为参数类型的伪类型,并且只允许使用void和record作为结果类型。一些多态的函数还支持使用anyelement、anyarray、anynonarray anyenum和anyrange类型。 伪类型internal用于声明那种只能在数据库系统内部调用的函数,他们不能直接在SQL查询里调用。如果函数至少有一个internal类型的参数,则不能从SQL里调用他。建议不要创建任何声明返回internal的函数,除非他至少有一个internal类型的参数。 @@ -40,26 +40,26 @@ MogDB数据类型中包含一系列特殊用途的类型,这些类型按照类 ```sql --创建表 -mogdb=# create table t1 (a int); +MogDB=# create table t1 (a int); --插入两条数据 -mogdb=# insert into t1 values(1),(2); +MogDB=# insert into t1 values(1),(2); --创建函数showall()。 -mogdb=# CREATE OR REPLACE FUNCTION showall() RETURNS SETOF record +MogDB=# CREATE OR REPLACE FUNCTION showall() RETURNS SETOF record AS $$ SELECT count(*) from t1; $$ LANGUAGE SQL; --调用函数showall()。 -mogdb=# SELECT showall(); +MogDB=# SELECT showall(); showall --------- (2) (1 row) --删除函数。 -mogdb=# DROP FUNCTION showall(); +MogDB=# DROP FUNCTION showall(); --删除表 -mogdb=# drop table t1; +MogDB=# drop table t1; ``` diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/16-data-types-supported-by-column-store-tables.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/16-data-types-supported-by-column-store-tables.md index 7eba57cc..248ad2d4 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/16-data-types-supported-by-column-store-tables.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/16-data-types-supported-by-column-store-tables.md @@ -21,7 +21,7 @@ date: 2021-04-06 -

Numeric Types

+

Numeric Types

smallint

@@ -93,6 +93,13 @@ date: 2021-04-06

支持

+

largeerial

+ +

8

+ +

支持

+ +

Monetary Types

money

@@ -102,7 +109,7 @@ date: 2021-04-06

支持

-

Character Types

+

Character Types

character varying(n), varchar(n)

@@ -132,6 +139,13 @@ date: 2021-04-06

支持

+

nvarchar

+ +

-1

+ +

支持

+ +

nvarchar2

-1

@@ -216,4 +230,4 @@ date: 2021-04-06 - + \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/17-xml-type.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/17-xml-type.md index 4e705626..7c713859 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/17-xml-type.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/17-xml-type.md @@ -10,25 +10,25 @@ date: 2021-04-06 MogDB支持XML类型,使用示例如下。 ```sql -mogdb= CREATE TABLE xmltest ( id int, data xml ); -mogdb= INSERT INTO xmltest VALUES (1, 'one'); -mogdb= INSERT INTO xmltest VALUES (2, 'two'); -mogdb= SELECT * FROM xmltest ORDER BY 1; +MogDB=# CREATE TABLE xmltest ( id int, data xml ); +MogDB=# INSERT INTO xmltest VALUES (1, 'one'); +MogDB=# INSERT INTO xmltest VALUES (2, 'two'); +MogDB=# SELECT * FROM xmltest ORDER BY 1; id | data ----+-------------------- 1 | one 2 | two (2 rows) -mogdb= SELECT xmlconcat('', NULL, ''); +MogDB=# SELECT xmlconcat('', NULL, ''); xmlconcat (1 row) -mogdb= SELECT xmlconcat('', NULL, ''); +MogDB=# SELECT xmlconcat('', NULL, ''); xmlconcat (1 row) ``` > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > -> - 该功能默认未开启,如需使用,需要重新使用build.sh脚本编译数据库,修改./configure配置参数,在其中加入-with-libxml参数。 -> - 在执行编译之前,需要先执行yum install -y libxml2-devel,否则会有”configure: error: library 'xml2' (version >= 2.6.23) is required for XML support”的报错。 +> - 该功能默认未开启,如需使用,需要重新使用build.sh脚本编译数据库,修改./configure配置参数,在其中加入--with-libxml参数。 +> - 在执行编译之前,需要先执行`yum install -y libxml2-devel`,否则会有”configure: error: library 'xml2' (version >= 2.6.23) is required for XML support”的报错。 > - 在执行编译之前,需要三方库二进制文件中dependeny操作系统环境/libobs/comm/lib加入到系统环境变量LD_LIBRARY_PATH中,否则会报错”libiconv.so不存在”。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/18-data-type-used-by-the-ledger-database.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/18-data-type-used-by-the-ledger-database.md index 354ebe4f..aa48ba11 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/18-data-type-used-by-the-ledger-database.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/18-data-type-used-by-the-ledger-database.md @@ -9,7 +9,7 @@ date: 2021-10-25 账本数据库使用HASH16数据类型来存储行级hash摘要或表级hash摘要,使用HASH32数据类型来存储全局hash摘要或者历史表校验hash。 -**表 1** 账本数据库HAS +**表 1** 账本数据库HASH类型 | 名称 | 描述 | 存储空间 | 范围 | | :-------------- | :-------------------| :------- | :----------------------------------------- | diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/2-monetary.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/2-monetary.md index 1b3d1b57..74dcc4b3 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/2-monetary.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/2-monetary.md @@ -20,7 +20,7 @@ date: 2021-04-06 numeric、int和bigint类型的值可以转化为money类型。如果从real和double precision类型转换到money类型,可以先转化为numeric类型,再转化为money类型,例如: ```sql -mogdb=# SELECT '12.34'::float8::numeric::money; +MogDB=# SELECT '12.34'::float8::numeric::money; ``` 这种用法是不推荐使用的。浮点数不应该用来处理货币类型,因为小数点的位数可能会导致错误。 @@ -28,7 +28,7 @@ mogdb=# SELECT '12.34'::float8::numeric::money; money类型的值可以转换为numeric类型而不丢失精度。转换为其他类型可能丢失精度,并且必须通过以下两步来完成: ```sql -mogdb=# SELECT '52093.89'::money::numeric::float8; +MogDB=# SELECT '52093.89'::money::numeric::float8; ``` 当一个money类型的值除以另一个money类型的值时,结果是double precision(也就是一个纯数字,而不是money类型);在运算过程中货币单位相互抵消。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/3-boolean-data-types.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/3-boolean-data-types.md index d9e0eeed..64861045 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/3-boolean-data-types.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/3-boolean-data-types.md @@ -13,11 +13,11 @@ date: 2021-04-06 | :------ | :------- | :------- | :----------------------------------------------------- | | BOOLEAN | 布尔类型 | 1字节。 | - true: 真
- false: 假
- null: 未知(unknown) | -- "真"值的有效文本值是: +- “真”值的有效文本值是: - TRUE、't'、'true'、'y'、'yes'、'1'、'TRUE'、true、整数范围内1~2^63-1、整数范围内-1~2^63。 + TRUE、't'、'true'、'y'、'yes'、'1'、'TRUE'、true、整数范围内1\~2^63-1^、整数范围内-1\~-2^63^。 -- "假"值的有效文本值是: +- “假”值的有效文本值是: FALSE、'f'、'false'、'n'、'no'、'0'、0、'FALSE'、false。 @@ -29,31 +29,31 @@ date: 2021-04-06 ```sql --创建表。 -mogdb=# CREATE TABLE bool_type_t1 +MogDB=# CREATE TABLE bool_type_t1 ( BT_COL1 BOOLEAN, BT_COL2 TEXT ); --插入数据。 -mogdb=# INSERT INTO bool_type_t1 VALUES (TRUE, 'sic est'); +MogDB=# INSERT INTO bool_type_t1 VALUES (TRUE, 'sic est'); -mogdb=# INSERT INTO bool_type_t1 VALUES (FALSE, 'non est'); +MogDB=# INSERT INTO bool_type_t1 VALUES (FALSE, 'non est'); --查看数据。 -mogdb=# SELECT * FROM bool_type_t1; +MogDB=# SELECT * FROM bool_type_t1; bt_col1 | bt_col2 ---------+--------- t | sic est f | non est (2 rows) -mogdb=# SELECT * FROM bool_type_t1 WHERE bt_col1 = 't'; +MogDB=# SELECT * FROM bool_type_t1 WHERE bt_col1 = 't'; bt_col1 | bt_col2 ---------+--------- t | sic est (1 row) --删除表。 -mogdb=# DROP TABLE bool_type_t1; +MogDB=# DROP TABLE bool_type_t1; ``` diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/4-character-data-types.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/4-character-data-types.md index 119c43df..f654708e 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/4-character-data-types.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/4-character-data-types.md @@ -13,15 +13,19 @@ MogDB支持的字符类型请参见表1。字符串操作符和相关的内置 | 名称 | 描述 | 存储空间 | | :----------------------------- | :------------------------- | :------------------------- | -| CHAR(n)CHARACTER(n)NCHAR(n) | 定长字符串,不足补空格。n是指字节长度,如不带精度n,默认精度为1。 | 最大为10MB。 | -| VARCHAR(n)CHARACTER VARYING(n) | 变长字符串。n是指字节长度。 | 最大为10MB。 | +| CHAR(n)
CHARACTER(n)
NCHAR(n) | 定长字符串,不足补空格。n是指字节长度,如不带精度n,默认精度为1。 | 最大为10MB。 | +| VARCHAR(n)
CHARACTER VARYING(n) | 变长字符串。PG兼容模式下,n是字符长度。其他兼容模式下,n是指字节长度。 | 最大为10MB。 | | VARCHAR2(n) | 变长字符串。是VARCHAR(n)类型的别名。n是指字节长度。 | 最大为10MB。 | | NVARCHAR2(n) | 变长字符串。n是指字符长度。 | 最大为10MB。 | +| NVARCHAR(n) | 变长字符串。是NVARCHAR2(n)类型的别名。n是指字符长度。 | 最大为10MB。 | | TEXT | 变长字符串。 | 最大为1GB-1,但还需要考虑到列描述头信息的大小, 以及列所在元组的大小限制(也小于1GB-1),因此TEXT类型最大大小可能小于1GB-1。 | | CLOB | 文本大对象。是TEXT类型的别名。 | 最大为1GB-1,但还需要考虑到列描述头信息的大小, 以及列所在元组的大小限制(也小于1GB-1),因此CLOB类型最大大小可能小于1GB-1。 | > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** -> 除了每列的大小限制以外,每个元组的总大小也不可超过1GB-1字节,主要受列的控制头信息、元组控制头信息等、以及元组中是否存在`NULL`字段等影响。 +> +> - 除了每列的大小限制以外,每个元组的总大小也不可超过1GB-1字节,主要受列的控制头信息、元组控制头信息等、以及元组中是否存在`NULL`字段等影响。 +> - NCHAR为bpchar类型的别名,NCHAR(n)为bpchar(n)类型的别名。 +> - 超过1GB的clob只有dbe_lob相关高级包支持,系统函数不支持大于1GB clob。 在MogDB里另外还有两种定长字符类型。在表2里显示。name类型只用在内部系统表中,作为存储标识符,不建议普通用户使用。该类型长度当前定为64字节(63可用字符加结束符)。类型"char"只用了一个字节的存储空间。他在系统内部主要用于系统表,主要作为简单化的枚举类型使用。 @@ -36,48 +40,46 @@ MogDB支持的字符类型请参见表1。字符串操作符和相关的内置 ```sql --创建表。 -mogdb=# CREATE TABLE char_type_t1 +MogDB=# CREATE TABLE char_type_t1 ( CT_COL1 CHARACTER(4) ); --插入数据。 -mogdb=# INSERT INTO char_type_t1 VALUES ('ok'); +MogDB=# INSERT INTO char_type_t1 VALUES ('ok'); --查询表中的数据。 -mogdb=# SELECT ct_col1, char_length(ct_col1) FROM char_type_t1; - ct_col1 | char_length +MogDB=# SELECT ct_col1, char_length(ct_col1) FROM char_type_t1; + ct_col1 | char_length ---------+------------- ok | 4 (1 row) --删除表。 -mogdb=# DROP TABLE char_type_t1; -``` +MogDB=# DROP TABLE char_type_t1; -```sql --创建表。 -mogdb=# CREATE TABLE char_type_t2 +MogDB=# CREATE TABLE char_type_t2 ( CT_COL1 VARCHAR(5) ); --插入数据。 -mogdb=# INSERT INTO char_type_t2 VALUES ('ok'); +MogDB=# INSERT INTO char_type_t2 VALUES ('ok'); -mogdb=# INSERT INTO char_type_t2 VALUES ('good'); +MogDB=# INSERT INTO char_type_t2 VALUES ('good'); --插入的数据长度超过类型规定的长度报错。 -mogdb=# INSERT INTO char_type_t2 VALUES ('too long'); +MogDB=# INSERT INTO char_type_t2 VALUES ('too long'); ERROR: value too long for type character varying(5) CONTEXT: referenced column: ct_col1 --明确类型的长度,超过数据类型长度后会自动截断。 -mogdb=# INSERT INTO char_type_t2 VALUES ('too long'::varchar(5)); +MogDB=# INSERT INTO char_type_t2 VALUES ('too long'::varchar(5)); --查询数据。 -mogdb=# SELECT ct_col1, char_length(ct_col1) FROM char_type_t2; - ct_col1 | char_length +MogDB=# SELECT ct_col1, char_length(ct_col1) FROM char_type_t2; + ct_col1 | char_length ---------+------------- ok | 2 good | 4 @@ -85,5 +87,5 @@ mogdb=# SELECT ct_col1, char_length(ct_col1) FROM char_type_t2; (3 rows) --删除数据。 -mogdb=# DROP TABLE char_type_t2; +MogDB=# DROP TABLE char_type_t2; ``` diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/5-binary-data-types.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/5-binary-data-types.md index 3321a1d7..c2666698 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/5-binary-data-types.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/5-binary-data-types.md @@ -24,9 +24,9 @@ MogDB支持的二进制类型请参见[表1](#biao1)。 > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > > - 除了每列的大小限制以外,每个元组的总大小也不可超过1GB-8203字节(即1073733621字节)。 -> - 不支持直接使用BYTEAWITHOUTORDERWITHEQUALCOL和BYTEAWITHOUTORDERCOL,_BYTEAWITHOUTORDERWITHEQUALCOL,_BYTEAWITHOUTORDERCOL类型创建表。 +> - 不支持直接使用BYTEAWITHOUTORDERWITHEQUALCOL、BYTEAWITHOUTORDERCOL、\_BYTEAWITHOUTORDERWITHEQUALCOL和\_BYTEAWITHOUTORDERCOL类型创建表。 -示例: +示例: ```sql --创建表。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/6-date-time-types.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/6-date-time-types.md index 94c0881d..29633a7c 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/6-date-time-types.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/6-date-time-types.md @@ -7,22 +7,22 @@ date: 2021-06-16 # 日期/时间类型 -MogDB支持的日期/时间类型请参见表1。该类型的操作符和内置函数请参见时间和日期处理函数和操作符。 +MogDB支持的日期/时间类型请参见表1。该类型的操作符和内置函数请参见[时间和日期处理函数和操作符](8-date-and-time-processing-functions-and-operators)。 -> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** 如果其他的数据库时间格式和MogDB的时间格式不一致,可通过修改配置参数DateStyle的值来保持一致。 +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** 如果其他的数据库时间格式和MogDB的时间格式不一致,可通过修改配置参数DateStyle的值来保持一致。 **表 1** 日期/时间类型 | 名称 | 描述 | 存储空间 | | :--------------------------------- | :-------------------------------------- | :------------------------------- | -| DATE | 日期和时间。 | 4字节(实际存储空间大小为8字节) | +| DATE | 日期和时间。 | 4字节(兼容模式A下存储空间大小为8字节) | | TIME [(p)] [WITHOUT TIME ZONE] | 只用于一日内时间。
p表示小数点后的精度,取值范围为0~6。 | 8字节 | | TIME [(p)] [WITH TIME ZONE] | 只用于一日内时间,带时区。
p表示小数点后的精度,取值范围为0~6。 | 12字节 | | TIMESTAMP[(p)] [WITHOUT TIME ZONE] | 日期和时间。
p表示小数点后的精度,取值范围为0~6。 | 8字节 | | TIMESTAMP[(p)][WITH TIME ZONE] | 日期和时间,带时区。TIMESTAMP的别名为TIMESTAMPTZ。
p表示小数点后的精度,取值范围为0~6。 | 8字节 | | SMALLDATETIME | 日期和时间,不带时区。
精确到分钟,秒位大于等于30秒进一位。 | 8字节 | | INTERVAL DAY (l) TO SECOND (p) | 时间间隔,X天X小时X分X秒。
- l: 天数的精度,取值范围为0-6。兼容性考虑,目前未实现具体功能。
- p: 秒数的精度,取值范围为0-6。小数末尾的零不显示。 | 16字节 | -| INTERVAL [FIELDS] [ (p) ] | 时间间隔。
- fields: 可以是YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,DAY TO HOUR,DAY TO MINUTE,DAY TO SECOND,HOUR TO MINUTE,HOUR TO SECOND,MINUTE TO SECOND。
- p: 秒数的精度,取值范围为0-6,且fields为SECOND,DAY TO SECOND,HOUR TO SECOND或MINUTE TO SECOND时,参数p才有效。小数末尾的零不显示。 | 12字节 | +| INTERVAL [FIELDS] [ (p) ] | 时间间隔。
- fields: 可以是YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、DAY TO HOUR、DAY TO MINUTE、DAY TO SECOND、HOUR TO MINUTE、HOUR TO SECOND、MINUTE TO SECOND。
- p: 秒数的精度,取值范围为0-6,且fields为SECOND、DAY TO SECOND、HOUR TO SECOND或MINUTE TO SECOND时,参数p才有效。小数末尾的零不显示。 | 12字节 | | reltime | 相对时间间隔。格式为:
X years X mons X days XX:XX:XX。
采用儒略历计时,规定一年为365.25天,一个月为30天,计算输入值对应的相对时间间隔,输出采用POSTGRES格式。 | 4字节 | | abstime | 日期和时间。格式为:
YYYY-MM-DD hh:mm:ss+timezone
取值范围为1901-12-13 20:45:53 GMT~2038-01-18 23:59:59 GMT,精度为秒。 | 4字节 | @@ -30,68 +30,68 @@ MogDB支持的日期/时间类型请参见表1。该类型的操作符和内置 ```sql --创建表。 -mogdb=# CREATE TABLE date_type_tab(coll date); +MogDB=# CREATE TABLE date_type_tab(coll date); --插入数据。 -mogdb=# INSERT INTO date_type_tab VALUES (date '12-10-2010'); +MogDB=# INSERT INTO date_type_tab VALUES (date '12-10-2010'); --查看数据。 -mogdb=# SELECT * FROM date_type_tab; +MogDB=# SELECT * FROM date_type_tab; coll --------------------- 2010-12-10 00:00:00 (1 row) --删除表。 -mogdb=# DROP TABLE date_type_tab; +MogDB=# DROP TABLE date_type_tab; --创建表。 -mogdb=# CREATE TABLE time_type_tab (da time without time zone ,dai time with time zone,dfgh timestamp without time zone,dfga timestamp with time zone, vbg smalldatetime); +MogDB=# CREATE TABLE time_type_tab (da time without time zone ,dai time with time zone,dfgh timestamp without time zone,dfga timestamp with time zone, vbg smalldatetime); --插入数据。 -mogdb=# INSERT INTO time_type_tab VALUES ('21:21:21','21:21:21 pst','2010-12-12','2013-12-11 pst','2003-04-12 04:05:06'); +MogDB=# INSERT INTO time_type_tab VALUES ('21:21:21','21:21:21 pst','2010-12-12','2013-12-11 pst','2003-04-12 04:05:06'); --查看数据。 -mogdb=# SELECT * FROM time_type_tab; +MogDB=# SELECT * FROM time_type_tab; da | dai | dfgh | dfga | vbg ----------+-------------+---------------------+------------------------+--------------------- 21:21:21 | 21:21:21-08 | 2010-12-12 00:00:00 | 2013-12-11 16:00:00+08 | 2003-04-12 04:05:00 (1 row) --删除表。 -mogdb=# DROP TABLE time_type_tab; +MogDB=# DROP TABLE time_type_tab; --创建表。 -mogdb=# CREATE TABLE day_type_tab (a int,b INTERVAL DAY(3) TO SECOND (4)); +MogDB=# CREATE TABLE day_type_tab (a int,b INTERVAL DAY(3) TO SECOND (4)); --插入数据。 -mogdb=# INSERT INTO day_type_tab VALUES (1, INTERVAL '3' DAY); +MogDB=# INSERT INTO day_type_tab VALUES (1, INTERVAL '3' DAY); --查看数据。 -mogdb=# SELECT * FROM day_type_tab; +MogDB=# SELECT * FROM day_type_tab; a | b ---+-------- 1 | 3 days (1 row) --删除表。 -mogdb=# DROP TABLE day_type_tab; +MogDB=# DROP TABLE day_type_tab; --创建表。 -mogdb=# CREATE TABLE year_type_tab(a int, b interval year (6)); +MogDB=# CREATE TABLE year_type_tab(a int, b interval year (6)); --插入数据。 -mogdb=# INSERT INTO year_type_tab VALUES(1,interval '2' year); +MogDB=# INSERT INTO year_type_tab VALUES(1,interval '2' year); --查看数据。 -mogdb=# SELECT * FROM year_type_tab; +MogDB=# SELECT * FROM year_type_tab; a | b ---+--------- 1 | 2 years (1 row) --删除表。 -mogdb=# DROP TABLE year_type_tab; +MogDB=# DROP TABLE year_type_tab; ``` ## 日期输入 @@ -100,7 +100,9 @@ mogdb=# DROP TABLE year_type_tab; 日期的文本输入需要加单引号包围,语法如下: +``` type [ ( p ) ] 'value' +``` 可选的精度声明中的p是一个整数,表示在秒域中小数部分的位数。表2显示了date类型的输入方式。 @@ -129,34 +131,34 @@ type [ ( p ) ] 'value' ```sql --创建表。 -mogdb=# CREATE TABLE date_type_tab(coll date); +MogDB=# CREATE TABLE date_type_tab(coll date); --插入数据。 -mogdb=# INSERT INTO date_type_tab VALUES (date '12-10-2010'); +MogDB=# INSERT INTO date_type_tab VALUES (date '12-10-2010'); --查看数据。 -mogdb=# SELECT * FROM date_type_tab; +MogDB=# SELECT * FROM date_type_tab; coll --------------------- 2010-12-10 00:00:00 (1 row) --查看日期格式。 -mogdb=# SHOW datestyle; +MogDB=# SHOW datestyle; DateStyle ----------- ISO, MDY (1 row) --设置日期格式。 -mogdb=# SET datestyle='YMD'; +MogDB=# SET datestyle='YMD'; SET --插入数据。 -mogdb=# INSERT INTO date_type_tab VALUES(date '2010-12-11'); +MogDB=# INSERT INTO date_type_tab VALUES(date '2010-12-11'); --查看数据。 -mogdb=# SELECT * FROM date_type_tab; +MogDB=# SELECT * FROM date_type_tab; coll --------------------- 2010-12-10 00:00:00 @@ -164,7 +166,7 @@ mogdb=# SELECT * FROM date_type_tab; (2 rows) --删除表。 -mogdb=# DROP TABLE date_type_tab; +MogDB=# DROP TABLE date_type_tab; ``` ## 时间 @@ -205,19 +207,19 @@ mogdb=# DROP TABLE date_type_tab; 示例: ```sql -mogdb=# SELECT time '04:05:06'; +MogDB=# SELECT time '04:05:06'; time ---------- 04:05:06 (1 row) -mogdb=# SELECT time '04:05:06 PST'; +MogDB=# SELECT time '04:05:06 PST'; time ---------- 04:05:06 (1 row) -mogdb=# SELECT time with time zone '04:05:06 PST'; +MogDB=# SELECT time with time zone '04:05:06 PST'; timetz ------------- 04:05:06-08 @@ -296,18 +298,18 @@ reltime的输入方式可以采用任何合法的时间段文本格式,包括 ```sql --创建表。 -mogdb=# CREATE TABLE reltime_type_tab(col1 character(30), col2 reltime); +MogDB=# CREATE TABLE reltime_type_tab(col1 character(30), col2 reltime); --插入数据。 -mogdb=# INSERT INTO reltime_type_tab VALUES ('90', '90'); -mogdb=# INSERT INTO reltime_type_tab VALUES ('-366', '-366'); -mogdb=# INSERT INTO reltime_type_tab VALUES ('1975.25', '1975.25'); -mogdb=# INSERT INTO reltime_type_tab VALUES ('-2 YEARS +5 MONTHS 10 DAYS', '-2 YEARS +5 MONTHS 10 DAYS'); -mogdb=# INSERT INTO reltime_type_tab VALUES ('30 DAYS 12:00:00', '30 DAYS 12:00:00'); -mogdb=# INSERT INTO reltime_type_tab VALUES ('P-1.1Y10M', 'P-1.1Y10M'); +MogDB=# INSERT INTO reltime_type_tab VALUES ('90', '90'); +MogDB=# INSERT INTO reltime_type_tab VALUES ('-366', '-366'); +MogDB=# INSERT INTO reltime_type_tab VALUES ('1975.25', '1975.25'); +MogDB=# INSERT INTO reltime_type_tab VALUES ('-2 YEARS +5 MONTHS 10 DAYS', '-2 YEARS +5 MONTHS 10 DAYS'); +MogDB=# INSERT INTO reltime_type_tab VALUES ('30 DAYS 12:00:00', '30 DAYS 12:00:00'); +MogDB=# INSERT INTO reltime_type_tab VALUES ('P-1.1Y10M', 'P-1.1Y10M'); --查看数据。 -mogdb=# SELECT * FROM reltime_type_tab; +MogDB=# SELECT * FROM reltime_type_tab; col1 | col2 --------------------------------+------------------------------------- 1975.25 | 5 years 4 mons 29 days @@ -319,5 +321,5 @@ mogdb=# SELECT * FROM reltime_type_tab; (6 rows) --删除表。 -mogdb=# DROP TABLE reltime_type_tab; +MogDB=# DROP TABLE reltime_type_tab; ``` diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/7-geometric.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/7-geometric.md index 5edb3afc..abb7f073 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/7-geometric.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/7-geometric.md @@ -7,7 +7,7 @@ date: 2021-04-06 # 几何类型 -MogDB支持的几何类型请参见表1。最基本的类型: 点,是其它类型的基础。 +MogDB支持的几何类型请参见表1。最基本的类型:点,是其它类型的基础。 **表 1** 几何类型 @@ -21,11 +21,11 @@ MogDB支持的几何类型请参见表1。最基本的类型: 点,是其它类 | polygon | 40+16n字节 | 多边形(与闭合路径相似) | ((x1,y1),…) | | circle | 24 字节 | 圆 | <(x,y),r> (圆心和半径) | -MogDB提供了一系列的函数和操作符用来进行各种几何计算,如拉伸、转换、旋转、计算相交等。详细信息请参考几何函数和操作符。 +MogDB提供了一系列的函数和操作符用来进行各种几何计算,如拉伸、转换、旋转、计算相交等。详细信息请参考[几何函数和操作符](10-geometric-functions-and-operators)。 ## 点 -点是几何类型的基本二维构造单位。用下面语法描述point的数值: +点是几何类型的基本二维构造单位。用下面语法描述point的数值: ``` ( x , y ) @@ -38,7 +38,7 @@ x和y是用浮点数表示的点的坐标。 ## 线段 -线段(lseg)是用一对点来代表的。用下面的语法描述lseg的数值: +线段(lseg)是用一对点来代表的。用下面的语法描述lseg的数值: ``` [ ( x1 , y1 ) , ( x2 , y2 ) ] @@ -53,7 +53,7 @@ x1 , y1 , x2 , y2 ## 矩形 -矩形是用一对对角点来表示的。用下面的语法描述box的值: +矩形是用一对对角点来表示的。用下面的语法描述box的值: ``` ( ( x1 , y1 ) , ( x2 , y2 ) ) @@ -71,7 +71,7 @@ x1 , y1 , x2 , y2 路径由一系列连接的点组成。路径可能是开放的,也就是认为列表中第一个点和最后一个点没有连接,也可能是闭合的,这时认为第一个和最后一个点连接起来。 -用下面的语法描述path的数值: +用下面的语法描述path的数值: ``` [ ( x1 , y1 ) , ... , ( xn , yn ) ] @@ -89,7 +89,7 @@ x1 , y1 , ... , xn , yn 多边形由一系列点代表(多边形的顶点)。多边形可以认为与闭合路径一样,但是存储方式不一样而且有自己的一套支持函数。 -用下面的语法描述polygon的数值: +用下面的语法描述polygon的数值: ``` ( ( x1 , y1 ) , ... , ( xn , yn ) ) @@ -104,7 +104,7 @@ x1 , y1 , ... , xn , yn ## 圆 -圆由一个圆心和半径标识。用下面的语法描述circle的数值: +圆由一个圆心和半径标识。用下面的语法描述circle的数值: ``` < ( x , y ) , r > diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/8-network-address.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/8-network-address.md index 95ea667f..b6497341 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/8-network-address.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/8-network-address.md @@ -9,7 +9,7 @@ date: 2021-04-06 MogDB提供用于存储IPv4、IPv6、MAC地址的数据类型。 -用这些数据类型存储网络地址比用纯文本类型好,因为这些类型提供输入错误检查和特殊的操作和功能。 +用这些数据类型存储网络地址比用纯文本类型好,因为这些类型提供输入错误检查和特殊的操作和功能(请参见[网络地址函数和操作符](11-network-address-functions-and-operators))。 **表 1** 网络地址类型 @@ -53,7 +53,7 @@ inet和cidr类型之间的基本区别是inet接受子网掩码,而cidr不接 ## macaddr -macaddr类型存储MAC地址,也就是以太网卡硬件地址(尽管MAC地址还用于其它用途)。可以接受下列格式: +macaddr类型存储MAC地址,也就是以太网卡硬件地址(尽管MAC地址还用于其它用途)。可以接受下列格式: ``` '08:00:2b:01:02:03' diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/9-bit-string-types.md b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/9-bit-string-types.md index 6c735560..05209228 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/9-bit-string-types.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/supported-data-types/9-bit-string-types.md @@ -14,12 +14,13 @@ MogDB支持两种位串类型: bit(n)和bit varying(n),这里的n是一个正 bit类型的数据必须准确匹配长度n,如果存储短或者长的数据都会报错。bit varying类型的数据是最长为n的变长类型,超过n的类型会被拒绝。一个没有长度的bit等效于bit(1),没有长度的bit varying表示没有长度限制。 > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** -> 如果用户明确地把一个位串值转换成bit(n),则此位串右边的内容将被截断或者在右边补齐零,直到刚好n位,而不会抛出任何错误。 -> 如果用户明确地把一个位串数值转换成bit varying(n),如果它超过了n位,则它的右边将被截断。 +> +> - 如果用户明确地把一个位串值转换成bit(n),则此位串右边的内容将被截断或者在右边补齐零,直到刚好n位,而不会抛出任何错误。 +> - 如果用户明确地把一个位串数值转换成bit varying(n),如果它超过了n位,则它的右边将被截断。 ```sql --创建表。 -mogdb=# CREATE TABLE bit_type_t1 +MogDB=# CREATE TABLE bit_type_t1 ( BT_COL1 INTEGER, BT_COL2 BIT(3), @@ -27,18 +28,18 @@ mogdb=# CREATE TABLE bit_type_t1 ) ; --插入数据。 -mogdb=# INSERT INTO bit_type_t1 VALUES(1, B'101', B'00'); +MogDB=# INSERT INTO bit_type_t1 VALUES(1, B'101', B'00'); --插入数据的长度不符合类型的标准会报错。 -mogdb=# INSERT INTO bit_type_t1 VALUES(2, B'10', B'101'); +MogDB=# INSERT INTO bit_type_t1 VALUES(2, B'10', B'101'); ERROR: bit string length 2 does not match type bit(3) CONTEXT: referenced column: bt_col2 --将不符合类型长度的数据进行转换。 -mogdb=# INSERT INTO bit_type_t1 VALUES(2, B'10'::bit(3), B'101'); +MogDB=# INSERT INTO bit_type_t1 VALUES(2, B'10'::bit(3), B'101'); --查看数据。 -mogdb=# SELECT * FROM bit_type_t1; +MogDB=# SELECT * FROM bit_type_t1; bt_col1 | bt_col2 | bt_col3 ---------+---------+--------- 1 | 101 | 00 @@ -46,5 +47,5 @@ mogdb=# SELECT * FROM bit_type_t1; (2 rows) --删除表。 -mogdb=# DROP TABLE bit_type_t1; +MogDB=# DROP TABLE bit_type_t1; ``` -- Gitee From 53ed76c9c72880318154361051b032bae6f5c36e Mon Sep 17 00:00:00 2001 From: spaceoddity91719 Date: Sat, 7 May 2022 11:11:40 +0800 Subject: [PATCH 2/4] =?UTF-8?q?update(mogdb):=E6=95=85=E9=9A=9C=E8=AF=8A?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...e-dump-occurs-when-removeipc-is-enabled.md | 2 +- .../11-slow-response-to-a-query-statement.md | 2 +- ...alyzing-the-status-of-a-query-statement.md | 2 +- .../13-forcibly-terminating-a-session.md | 8 ++--- ...ng-whether-a-query-statement-is-blocked.md | 4 +-- .../16-lock-wait-timeout-is-displayed.md | 8 ++--- .../19-different-data-is-displayed.md | 6 ++-- .../23-too-many-clients-already.md | 8 ++--- .../24-b-tree-index-faults.md | 6 ++-- ...3-standby-node-in-the-need-repair-state.md | 2 +- .../4-insufficient-memory.md | 2 +- .../5-service-startup-failure.md | 21 +++++++----- ...or-no-space-left-on-device-is-displayed.md | 12 +++---- .../7-after-you-run-the-du-command.md | 6 ++-- ...-file-is-damaged-in-the-xfs-file-system.md | 4 +-- .../common-fault-locating-methods.md | 34 +++++++++---------- 16 files changed, 65 insertions(+), 62 deletions(-) diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/1-core-fault-locating/3-core-dump-occurs-when-removeipc-is-enabled.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/1-core-fault-locating/3-core-dump-occurs-when-removeipc-is-enabled.md index daf6fbf4..bd6ec612 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/1-core-fault-locating/3-core-dump-occurs-when-removeipc-is-enabled.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/1-core-fault-locating/3-core-dump-occurs-when-removeipc-is-enabled.md @@ -11,7 +11,7 @@ date: 2021-05-24 操作系统配置中RemoveIPC参数设置为yes,数据库运行过程中出现宕机,并显示如下日志消息。 -```shell +``` FATAL: semctl(1463124609, 3, SETVAL, 0) failed: Invalid argument ``` diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/11-slow-response-to-a-query-statement.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/11-slow-response-to-a-query-statement.md index 82a5a4b3..38398a34 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/11-slow-response-to-a-query-statement.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/11-slow-response-to-a-query-statement.md @@ -23,7 +23,7 @@ date: 2021-05-24 2. 使用如下命令连接数据库。 ```bash - gsql -d mogdb -p 8000 + gsql -d postgres -p 8000 ``` postgres为需要连接的数据库名称,8000为端口号。 diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/12-analyzing-the-status-of-a-query-statement.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/12-analyzing-the-status-of-a-query-statement.md index 8e6b993e..3c33466a 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/12-analyzing-the-status-of-a-query-statement.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/12-analyzing-the-status-of-a-query-statement.md @@ -18,7 +18,7 @@ date: 2021-05-24 2. 使用如下命令连接数据库。 ```bash - gsql -d mogdb -p 8000 + gsql -d postgres -p 8000 ``` postgres为需要连接的数据库名称,8000为端口号。 diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/13-forcibly-terminating-a-session.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/13-forcibly-terminating-a-session.md index eb9bb7fa..d02b0cd9 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/13-forcibly-terminating-a-session.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/13-forcibly-terminating-a-session.md @@ -31,7 +31,7 @@ date: 2021-05-24 显示类似如下信息,其中pid的值即为该会话的线程ID。 - ```bash + ``` datid | pid | state | query -------+-----------------+--------+------ 13205 | 139834762094352 | active | @@ -41,13 +41,13 @@ date: 2021-05-24 4. 根据线程ID结束会话。 - ``` + ```sql SELECT pg_terminate_backend(139834762094352); ``` 显示类似如下信息,表示结束会话成功。 - ```bash + ``` pg_terminate_backend --------------------- t @@ -56,7 +56,7 @@ date: 2021-05-24 显示类似如下信息,表示用户正在尝试结束当前会话,此时仅会重连会话,而不是结束会话。 - ```bash + ``` FATAL: terminating connection due to administrator command FATAL: terminating connection due to administrator command The connection to the server was lost. Attempting reset: Succeeded. ``` diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/14-analyzing-whether-a-query-statement-is-blocked.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/14-analyzing-whether-a-query-statement-is-blocked.md index 676dcdf2..350cad56 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/14-analyzing-whether-a-query-statement-is-blocked.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/14-analyzing-whether-a-query-statement-is-blocked.md @@ -41,7 +41,7 @@ date: 2021-05-24 显示类似如下信息,表示结束会话成功。 - ```bash + ``` pg_terminate_backend --------------------- t @@ -50,7 +50,7 @@ date: 2021-05-24 显示类似如下信息,表示用户正在尝试结束当前会话,此时仅会重连会话,而不是结束会话。 - ```bash + ``` FATAL: terminating connection due to administrator command FATAL: terminating connection due to administrator command The connection to the server was lost. Attempting reset: Succeeded. ``` diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/16-lock-wait-timeout-is-displayed.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/16-lock-wait-timeout-is-displayed.md index 8ba85522..06e30c47 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/16-lock-wait-timeout-is-displayed.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/16-lock-wait-timeout-is-displayed.md @@ -1,15 +1,15 @@ --- -title: 执行 SQL 语句时,提示 Lock wait timeout -summary: 执行 SQL 语句时,提示 Lock wait timeout +title: 执行SQL语句时,提示Lock wait timeout +summary: 执行SQL语句时,提示Lock wait timeout author: Guo Huan date: 2021-05-24 --- -# 执行 SQL 语句时,提示 Lock wait timeout +# 执行SQL语句时,提示Lock wait timeout ## 问题现象 -执行SQL语句时,提示”Lock wait timeout”。 +执行SQL语句时,提示“Lock wait timeout”。 ``` ERROR: Lock wait timeout: thread 140533638080272 waiting for ShareLock on relation 16409 of database 13218 after 1200000.122 ms ERROR: Lock wait timeout: thread 140533638080272 waiting for AccessExclusiveLock on relation 16409 of database 13218 after 1200000.193 ms diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/19-different-data-is-displayed.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/19-different-data-is-displayed.md index 06103877..545900e8 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/19-different-data-is-displayed.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/19-different-data-is-displayed.md @@ -17,15 +17,15 @@ select count(*) from areas; ## 原因分析 -1. 检查同名表是否是同一张表。在关系型数据库中,确定一张表通常需要3个因素:database,schema,table。从问题现象描述看,database,table已经确定, 分别是human_resource、areas。 -2. 检查同名表的schema是否一致。使用omm,user01分别登录发现,search_path依次是public和”$user”。omm作为数据库管理员,默认不会创建omm同名的schema,即不指定schema的情况下所有表都会建在public下。而对于普通用户如user01,则会在创建用户时,默认创建同名的schema,即不指定schema时表都会创建在user01的schema下。 +1. 检查同名表是否是同一张表。在关系型数据库中,确定一张表通常需要3个因素:database、schema、table。从问题现象描述看,database、table已经确定,分别是human_resource、areas。 +2. 检查同名表的schema是否一致。使用omm、user01分别登录发现,search_path依次是public和“$user”。omm作为数据库管理员,默认不会创建omm同名的schema,即不指定schema的情况下所有表都会建在public下。而对于普通用户如user01,则会在创建用户时,默认创建同名的schema,即不指定schema时表都会创建在user01的schema下。 3. 如果最终判断是同一张表,存在不同用户访问数据不同情况,则需要进一步判断当前该表中对象针对不同的用户是否存在不同的访问策略。 ## 处理办法 - 对于不同schema下同名表的查询,在查询表时加上schema引用。格式如下。 - ```bash + ``` schema.table ``` diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/23-too-many-clients-already.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/23-too-many-clients-already.md index 7ea79796..3a2abb37 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/23-too-many-clients-already.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/23-too-many-clients-already.md @@ -1,15 +1,15 @@ --- -title: 高并发报错”too many clients already”或无法创建线程 -summary: 高并发报错”too many clients already”或无法创建线程Concurrency Scenarios +title: 高并发报错“too many clients already”或无法创建线程 +summary: 高并发报错“too many clients already”或无法创建线程Concurrency Scenarios author: Guo Huan date: 2021-05-24 --- -# 高并发报错”too many clients already”或无法创建线程 +# 高并发报错“too many clients already”或无法创建线程 ## 问题现象 -高并发执行SQL,报错”sorry, too many clients already”;或报无法创建线程、无法fork进程等错误。 +高并发执行SQL,报错“sorry, too many clients already”;或报无法创建线程、无法fork进程等错误。 ## 原因分析 diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/24-b-tree-index-faults.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/24-b-tree-index-faults.md index d76be37d..98882037 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/24-b-tree-index-faults.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/24-b-tree-index-faults.md @@ -1,11 +1,11 @@ --- -title: btree 索引故障情况下应对策略 -summary: btree 索引故障情况下应对策略 +title: btree索引故障情况下应对策略 +summary: btree索引故障情况下应对策略 author: Guo Huan date: 2021-05-24 --- -# btree 索引故障情况下应对策略 +# btree索引故障情况下应对策略 ## 问题现象 diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/3-standby-node-in-the-need-repair-state.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/3-standby-node-in-the-need-repair-state.md index a4b1581b..2560a99c 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/3-standby-node-in-the-need-repair-state.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/3-standby-node-in-the-need-repair-state.md @@ -17,4 +17,4 @@ MogDB备机出现Standby Need repair(WAL)故障。 ## 处理分析 -通过gs_ctl build -D 命令对故障节点进行重建,具体的操作方法请参见MogDB工具参考中的[build参数](4-gs_ctl#build)。 +通过`gs_ctl build -D`命令对故障节点进行重建,具体的操作方法请参见MogDB工具参考中的[build参数](4-gs_ctl#build)。 diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/4-insufficient-memory.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/4-insufficient-memory.md index 9aa3a973..880ff99b 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/4-insufficient-memory.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/4-insufficient-memory.md @@ -9,7 +9,7 @@ date: 2021-05-24 ## 问题现象 -客户端或日志里出现错误: memory usage reach the max_dynamic_memory。 +客户端或日志里出现错误:memory usage reach the max_dynamic_memory。 ## 原因分析 diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/5-service-startup-failure.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/5-service-startup-failure.md index 22902da0..930679cf 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/5-service-startup-failure.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/5-service-startup-failure.md @@ -19,6 +19,7 @@ date: 2021-05-24 - 配置的端口已经被占用。 - 开启了系统防火墙导致数据库启动失败。 - 组成数据库的各台机器之间需要正确建立互信关系,在互信关系出现异常的情况下,数据库将无法启动。 +- 数据库控制文件损坏。 ## 处理办法 @@ -26,19 +27,19 @@ date: 2021-05-24 - 登录启动失败的节点,检查运行日志确认是否因资源不足启动失败或配置参数不满足内部约束。例如出现Out of memory的错误,或如下错误提示均为资源不足启动失败或配置参数不满足内部约束。 - ```bash + ``` FATAL: hot standby is not possible because max_connections = 10 is a lower setting than on the master server (its value was 100) ``` - - 检查GUC参数配置的合理性。例如,shared_buffers、effective_cache_size、 bulk_write_ring_size等消耗资源过大的参数;或max_connections等增加后不容易减少的参数。 GUC参数的查看及设置方法,详情请参见配置运行参数。 + - 检查GUC参数配置的合理性。例如,shared_buffers、effective_cache_size、bulk_write_ring_size等消耗资源过大的参数;或max_connections等增加后不容易减少的参数。详情请参见[推荐参数设置及新建测试库](7-recommended-parameter-settings)。 -- 确认是否由于实例状态不正常,导致数据库启动失败。 通过gs_om -t status -detail工具,查询当前数据库各主备机实例的状态。 +- 确认是否由于实例状态不正常,导致数据库启动失败。通过`gs_om -t status --detail`命令,查询当前数据库各主备机实例的状态。 - 如果某一节点上的所有实例都异常,请进行主机替换。 - 如果发现某一实例状态为Unknown、Pending和Down的状态,则以数据库用户登录到状态不正常的实例所在节点,查看该实例的日志检查状态异常的原 因。例如: - ```bash + ``` 2014-11-27 14:10:07.022 CST 140720185366288 FATAL: database "mogdb" does not exist 2014-11-27 14:10:07.022 CST 140720185366288 DETAIL: The database subdirectory "base/ 13252" is missing. ``` @@ -55,21 +56,21 @@ date: 2021-05-24 - 如果实例进程不存在,则可以通过查看该实例的日志来检查启动异常的原因。例如: - ```bash + ``` 2014-10-17 19:38:23.637 CST 139875904172320 LOG: could not bind IPv4 socket at the 0 time: Address already in use 2014-10-17 19:38:23.637 CST 139875904172320 HINT: Is another postmaster already running on port 40005? If not, wait a few seconds and retry. ``` 如果日志中出现上面这种报错信息,则说明该数据节点的TCP端口已经被占用,该实例无法正常启动。 - ```bash + ``` 2015-06-10 10:01:50 CST 140329975478400 [SCTP MODE] WARNING: (sctp bind) bind(socket=9, [addr:0.0.0.0,port:1024]):Address already in use -- attempt 10/10 2015-06-10 10:01:50 CST 140329975478400 [SCTP MODE] ERROR: (sctp bind) Maximum bind() attempts. Die now... ``` 如果日志中出现上面这种报错信息,则说明该数据节点的SCTP端口已经被占用,该实例无法正常启动。 -- 通过sysctl -a查看net.ipv4.ip_local_port_range,如果该实例配置的端口在系统随机占用端口号的范围内,则可以修改系统随机占用端口号的范围,确保xml文件中所有实例端口号均不在这个范围内。检查某个端口是否被占用的命令如下。 +- 通过`sysctl -a`查看net.ipv4.ip_local_port_range,如果该实例配置的端口在系统随机占用端口号的范围内,则可以修改系统随机占用端口号的范围,确保xml文件中所有实例端口号均不在这个范围内。检查某个端口是否被占用的命令如下。 - ```shell + ``` netstat -anop | grep 端口号 ``` @@ -85,4 +86,6 @@ date: 2021-05-24 - 确认是否是由于开启了系统防火墙导致数据库启动失败。 -- 确认是否由于互信关系出现异常,导致数据库无法启动。 重新配置实例中各台机器的互信关系解决此问题。 +- 确认是否由于互信关系出现异常,导致数据库无法启动。重新配置实例中各台机器的互信关系解决此问题。 + +- 确认是否由于数据库控制文件如mogdb.state损坏或文件被清空,导致数据库无法启动。若主机控制文件损坏,可触发备机failover,然后通过重建恢复原主机;若备机控制文件损坏,可直接通过重建方式恢复备机。 diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/6-error-no-space-left-on-device-is-displayed.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/6-error-no-space-left-on-device-is-displayed.md index bb30c4dd..a2eeedac 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/6-error-no-space-left-on-device-is-displayed.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/6-error-no-space-left-on-device-is-displayed.md @@ -38,13 +38,13 @@ Error:No space left on device 由于业务数据的增长情况不同,对剩余磁盘空间的要求不同。建议如下: - - 持续观察磁盘空间增长情况,确保剩 余空间满足一年以上的增长要求。 - - 数据目录所在磁盘已使用空间>60% 则进行空间清理或者扩容。 + - 持续观察磁盘空间增长情况,确保剩余空间满足一年以上的增长要求。 + - 数据目录所在磁盘已使用空间>60%则进行空间清理或者扩容。 - 使用如下命令查看数据目录大小。 - ```bash - du --max-depth=1 -h /mnt/ + ``` + du --max-depth=1 -h /mnt/ ``` 显示如下信息,其中第一列表示目录或文件的大小,第二列是“/mnt/”目录下的所有子目录或者文件。 @@ -57,8 +57,8 @@ Error:No space left on device 518G /mnt ``` -- 清理磁盘空间。 建议定期将审计日志备份到其他存储设备,推荐的日志保留时长为一个月。pg_log存放数据库各进程的运行日志,运行日志可以帮助数据库管理员定位数据库的问题。如果每日查看错误日志并及时处理错误,则可以删除这些日志。 +- 清理磁盘空间。建议定期将审计日志备份到其他存储设备,推荐的日志保留时长为一个月。pg_log存放数据库各进程的运行日志,运行日志可以帮助数据库管理员定位数据库的问题。如果每日查看错误日志并及时处理错误,则可以删除这些日志。 -- 清理无用的数据。 通过先备份使用频率较低或者一定时间以前的数据至更低成本的存储介质中,然后清理这些已备份的数据来获取更多的磁盘空间。 +- 清理无用的数据。通过先备份使用频率较低或者一定时间以前的数据至更低成本的存储介质中,然后清理这些已备份的数据来获取更多的磁盘空间。 - 如果以上方法无法清理出足够的空间,请对磁盘空间进行扩容。 diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/7-after-you-run-the-du-command.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/7-after-you-run-the-du-command.md index 7a4ccf7e..14f5207d 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/7-after-you-run-the-du-command.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/7-after-you-run-the-du-command.md @@ -11,8 +11,8 @@ date: 2021-05-24 在数据库使用过程中,通过如下du命令查询数据文件大小,查询结果大于文件实际的大小。 -```bash - du -sh file +``` +du -sh file ``` ## 原因分析 @@ -23,7 +23,7 @@ XFS文件系统有预分配机制,预分配的大小由参数allocsize确定 - 将XFS文件系统挂载选项allocsize设置为默认值(64KB)减缓该问题。 -- 使用du命令时,增加-apparent-size选项,查看实际文件的大小。 +- 使用du命令时,增加--apparent-size选项,查看实际文件的大小。 ```bash du -sh file --apparent-size diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/8-file-is-damaged-in-the-xfs-file-system.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/8-file-is-damaged-in-the-xfs-file-system.md index 412aba31..fa9547a2 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/8-file-is-damaged-in-the-xfs-file-system.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-cases/8-file-is-damaged-in-the-xfs-file-system.md @@ -9,7 +9,7 @@ date: 2021-05-24 ## 问题现象 -在数据库使用过程中,有极小的概率出现XFS文件系统的报错 (Input/Output error , structure needs cleaning)。 +在数据库使用过程中,有极小的概率出现XFS文件系统的报错(Input/Output error, structure needs cleaning)。 ## 原因分析 @@ -19,4 +19,4 @@ date: 2021-05-24 首先尝试umount/mount对应文件系统,重试看是否可以规避此问题。 -如果问题重现,则需要参考文件系统相应的文档请系统管理员对文件系统进行修复,例如xfs_repair。文件系统成功修复后,请使用gs_ctl build命令来修复文件受损的数据节点。 +如果问题重现,则需要参考文件系统相应的文档请系统管理员对文件系统进行修复,例如xfs_repair。文件系统成功修复后,请使用`gs_ctl build`命令来修复文件受损的数据节点。 diff --git a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-methods.md b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-methods.md index a9213677..4f8407ce 100644 --- a/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-methods.md +++ b/product/zh/docs-mogdb/v3.0/common-faults-and-identification/common-fault-locating-methods.md @@ -17,7 +17,7 @@ date: 2021-05-24 - 如果ping操作没有回复,则表明这台机器可能存在网络连接故障、处于宕机状态或者正处于重启状态。 - 如果操作系统内核发生panic引起系统崩溃,系统重新启动时间较慢,需经过较长时间(大约20分钟)才能重启。建议每5分钟尝试连接一次,20分钟后不能连接成功,则表明这台机器已宕机或网络连接有问题,需要管理员到现场进行检查处理。 + 如果操作系统内核发生panic引起系统崩溃,系统重新启动时间较慢,需经过较长时间(大约20分钟)才能重启。建议每5分钟尝试连接一次,20分钟后不能连接成功,则表明这台机器已宕机或网络连接有问题,需要管理员到现场进行检查处理。 - 如果网络可以ping通,但在SSH登入时卡住或登入后不能执行任何命令,通常是由系资源不足(如CPU或IO资源过载)引起的机器不响应外部连接。建议重试几次。如果5分钟内仍不能成功,需要管理员到现场进行检查处理。 @@ -36,7 +36,7 @@ date: 2021-05-24 root pts/9 2020-10-20 10:03 (10.70.220.85) ``` - - `cat /etc/openEuler-release`和`uname -a`命 令检查系统的版本和内核信息。 + - `cat /etc/openEuler-release`和`uname -a`命令检查系统的版本和内核信息。 ```bash [root@MogDB36 ~]# cat /etc/openEuler-release @@ -81,9 +81,9 @@ date: 2021-05-24 - `vmstat 1 3`命令查看当前系统中内存的消耗情况,结合`top`命令获得消耗内存较多的进程,处于超出预期的状态。 - - 以root用户查看操作系统日志信息(/var/log/messages)或dmseg信息,检查操作系统是否发生过异常错误。 + - 以root用户查看操作系统日志信息(/var/log/messages)或dmseg信息,检查操作系统是否发生过异常错误。 - - 操作系统的watchdog是为了保证OS系统正常运行,或者从死循环,死锁等状态退出的一种机制,如果watchdog超时(一般默认值为60s),系统将会复位。 + - 操作系统的watchdog是为了保证OS系统正常运行,或者从死循环,死锁等状态退出的一种机制,如果watchdog超时(一般默认值为60s),系统将会复位。 ## 网络故障定位手段 @@ -93,7 +93,7 @@ date: 2021-05-24 - 状态异常,如:节点上所有的实例都是UnKnown或者所有主机都切换为备机。 - 网络连接建立失败。 - 对数据库执行SQL操作时,报网络异常中断的错误。 -- 连接数据库或执行查询时发生进程停止响应。数据库出现了网络故障后,主要通过使用Linux系统提供的网络相关命令工具 (ping、ifconfig、netstat、lsof等),进程堆栈查看工具(gdb、gstack),结合数据库的 日志信息,进行分析定位。本节通过举例介绍常见的网络问题,并进行基本的分析定位。 +- 连接数据库或执行查询时发生进程停止响应。数据库出现了网络故障后,主要通过使用Linux系统提供的网络相关命令工具(ping、ifconfig、netstat、lsof等),进程堆栈查看工具(gdb、gstack),结合数据库的日志信息,进行分析定位。本节通过举例介绍常见的网络问题,并进行基本的分析定位。 常见故障问题如下: @@ -118,13 +118,13 @@ date: 2021-05-24 根据查询结果,强行停止正在占用端口的进程或者更改数据库侦听端口。 - **问题现象2**:使用gs_om -t status -detail 查询状态,如果显示主备间连接未建立。 + **问题现象2**:使用`gs_om -t status --detail`查询状态,如果显示主备间连接未建立。 - **处理办法**:在openEuler操作系统下,使用systemctl status firewalld.service命令,查看节点上是否 开启了防火墙。如果开启,使用systemctl stop firewalld.service关闭防火墙。 + **处理办法**:在openEuler操作系统下,使用`systemctl status firewalld.service`命令,查看节点上是否 开启了防火墙。如果开启,使用`systemctl stop firewalld.service`关闭防火墙。 ```bash [root@MogDB36 mnt]# systemctl status firewalld.service - ●firewalld.service - firewalld - dynamic firewall daemon + firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) @@ -144,7 +144,7 @@ date: 2021-05-24 - 如果ssh不能连接故障机器,在其他机器上使用Ping命令向该机器发数据包。如果可以Ping通,说明可能是该机器上的资源(内存、CPU、磁盘)耗尽导致不能建立连接。 - - 如果ssh可以连接该机器,尝试执行查询,并每隔1s执行/sbin/ifconfig eth?(?代表数字,表示第几个网卡)命令,查看如下信息中的dropped及errors值的变化情况, 如果增长迅速,可能是网卡或网卡驱动故障。 + - 如果ssh可以连接该机器,尝试执行查询,并每隔1s执行`/sbin/ifconfig eth?`(?代表数字,表示第几个网卡)命令,查看如下信息中的dropped及errors值的变化情况, 如果增长迅速,可能是网卡或网卡驱动故障。 ```bash [root@MogDB36 ~]# ifconfig enp125s0f0 @@ -167,12 +167,12 @@ date: 2021-05-24 - 网络连接建立失败 - **问题现象1**: 节点连接其他节点失败,日志中报出“ Connection refused ”错误。 + **问题现象1**:节点连接其他节点失败,日志中报出“Connection refused”错误。 **处理办法**: - 查看端口是否配置错误,导致连接时使用的端口并非对方侦听的端口。查看报错节点配置文件postgresql.conf记录端口号与对方侦听的端口就号是否一致。 - - 查看对方端口侦听是否正常(可以使用`netstat -anp”命令)。 + - 查看对方端口侦听是否正常(可以使用`netstat -anp`命令)。 - 查看对方进程是否存在。 **问题现象2**:对数据库执行SQL操作时,获取连接描述符失败,报错如下。 @@ -193,10 +193,10 @@ date: 2021-05-24 **处理办法:** - - 使用gs_om -t status -detail查询状态,确认是否发生过主备切换。重置实例状态。 + - 使用`gs_om -t status --detail`查询状态,确认是否发生过主备切换。重置实例状态。 - 此外,需要查看连接失败的节点是否发生了core或者重启。通过om日志可以查看到是否发生了重启。 -- 对数据库执行 SQL 操作时,报网络异常中断的错误 +- 对数据库执行SQL操作时,报网络异常中断的错误 **问题现象1**:查询执行失败,报错信息如下。 @@ -225,9 +225,9 @@ date: 2021-05-24 - 对于会导致文件系统损坏的故障,查看状态会显示对应实例状态持续为Unknown,定位方法如下: - - 查看日志,日志中会有类似 “data path disc writable test failed”异常,说明文件系统已损坏。 + - 查看日志,日志中会有类似“data path disc writable test failed”异常,说明文件系统已损坏。 - - 文件系统损坏可能是磁盘未挂载,通过ls -l可以看到该磁盘对应的目录权限异常,如下: + - 文件系统损坏可能是磁盘未挂载,通过`ls -l`可以看到该磁盘对应的目录权限异常,如下: - 也可能是磁盘出现坏块,然后操作系统将文件系统保护起来,拒绝读写,可以使 用磁盘坏块检查工具如badblocks检查磁盘是否有坏块,如下 @@ -240,7 +240,7 @@ date: 2021-05-24 - 对于不会导致文件系统损坏的故障,服务进程访问到故障磁盘会异常退出,定位方法如下。 - 查看日志。日志中会有文件读写错误,例如“No space left on device”、“ invalid page header n block 122838 of relation base/16385/152715”。 文件读写错误可能是磁盘空间不足,通过df -h可以看到磁盘空间已达100%,如下。 + 查看日志。日志中会有文件读写错误,例如“No space left on device”、“invalid page header n block 122838 of relation base/16385/152715”。文件读写错误可能是磁盘空间不足,通过`df -h`可以看到磁盘空间已达100%,如下。 ``` [root@openeuler123 mnt]# df -h @@ -269,7 +269,7 @@ date: 2021-05-24 - pg_thread_wait_status,用于查询该实例上各个线程的等待事件。 - pg_locks,用于查询当前实例上的锁状态。 -- CORE文件。数据库相关进程在运行过程中可能会因为各种意外情况导致数据库崩溃 (Coredump),而崩溃时产生的core文件对于迅速定位程序崩溃的原因及位置非常重要。如果进程运行时出现Coredump现象,建议立即收集core文件便于分析、定位故障。 +- CORE文件。数据库相关进程在运行过程中可能会因为各种意外情况导致数据库崩溃(Coredump),而崩溃时产生的core文件对于迅速定位程序崩溃的原因及位置非常重要。如果进程运行时出现Coredump现象,建议立即收集core文件便于分析、定位故障。 - 对性能有一定的影响,尤其是进程频繁异常时对性能的影响更大。 -- Gitee From d6cb47bd268cfcdf33429e236e6cd83dacb3ef04 Mon Sep 17 00:00:00 2001 From: spaceoddity91719 Date: Sat, 7 May 2022 11:11:56 +0800 Subject: [PATCH 3/4] =?UTF-8?q?update(mogdb):=E6=9C=AF=E8=AF=AD=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- product/zh/docs-mogdb/v3.0/glossary.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/product/zh/docs-mogdb/v3.0/glossary.md b/product/zh/docs-mogdb/v3.0/glossary.md index 5c97342a..c20fb4a8 100644 --- a/product/zh/docs-mogdb/v3.0/glossary.md +++ b/product/zh/docs-mogdb/v3.0/glossary.md @@ -14,19 +14,21 @@ date: 2021-03-04 | **A - E** | | | ACID | 在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。 | | AZ | Available Zone,通常指一个机房。 | -| bgwriter | 数据库启动时创建的一个后台写线程,此线程用于将数据库中脏页面写入到持久性设备(例如磁盘)中。 | -| bit | 比特。计算机处理的最小的信息单位。比特用来表示二进制数字1或0,或者一种逻辑条件真或假。一个单独的比特位所传达的信息很少有意义的。8个bit构成一个byte(字节),可用于表示如一个英文字母,十进制数字,或其它字符等多种类型的信息。 | -| Bloom Filter | 布隆过滤器。由Howard Bloom在1970年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员,这种检测只会对在集合内的数据进行错判,而不会对不是集合内的数据进行错判,这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见Bloom Filter是牺牲了正确率换取时间和空间。 | +| Bgwriter | 数据库启动时创建的一个后台写线程,此线程用于将数据库中脏页面写入到持久性设备(例如磁盘)中。 | +| bit | 比特。计算机处理的最小的信息单位。比特用来表示二进制数字1或0,或者一种逻辑条件真或假。在物理上,比特表示一个电路上高或低的电压点或者磁盘上的磁化单程或其它。一个单独的比特位所传达的信息很少有意义的。然而,一个8位组却构成了一个字节,可用于表示如一个英文字母,十进制数字,或其它字符等多种类型的信息。 | +| Bloom Filter | 布隆过滤器。由Howard Bloom在1970年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员,这种检测只会对在集合内的数据错判,而不会对不是集合内的数据进行错判,这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见Bloom filter是牺牲了正确率换取时间和空间。 | | CEK | Column Encryption Key,列加密密钥。 | | CIDR | Classless Inter-Domain Routing,无类域间路由IP编址方案。CIDR摒弃传统的基于类(A类:8,B类:16,C类:24)的地址分配方式,允许使用任意长度的地址前缀,有效提高地址空间的利用率。CIDR表示方法:IP地址/网络ID的位数。比如192.168.23.35/21,其中“21”表示前面地址中的前21位代表网络部分,其余位代表主机部分。 | | CLI | Command-line Interface,命令行界面。应用程序和用户交互的一种方式,完全基于文本输入和输出。命令通过键盘或类似装置输入,由程序编译并执行。结果是以文本或图形的方式呈现在终端界面。 | -| CMK | 全密态场景:Client Master Key,客户端加密主密钥。透明数据加密场景:Cluster Master Key,集群主密钥。 | +| CM | Cluster Manager,数据库管理模块。管理和监控系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。 | +| CMK | 全密态场景:Client Master Key,客户端加密主密钥。 | | CU | Compression Unit,压缩单元。列存表的最小存储单位。 | | core文件 | 当程序出现内存越界、断言失败或者访问非法内存时,操作系统会中止进程,并将当前内存状态导出到core文件中,以便进一步分析。core文件包含内存转储,支持全二进制和指定端口格式。core文件名称由字符串core以及操作系统进程ID组成。core文件不依赖于任何平台。 | | Core Dump | 通常在程序异常终止时,核心转储(Core Dump)、内存转储或系统转储用于记录特定时间计算机程序工作内存的状态。实际上,其它关键程序的状态经常在同一时间进行转储,例如处理器寄存器,包括程序指标和栈指针、内存管理信息、其它处理器和操作系统标记及信息。Core Dump经常用于辅助诊断和纠错计算机程序问题。 | | DBA | Database Administrator,数据库管理员。指导或执行所有和维护数据库环境相关的操作。 | | DBLINK | DBLINK是定义一个数据库到另一个数据库路径的对象,通过它可以查询远程数据库对象。 | | DBMS | Database Management System,数据库管理系统。数据库管理系统是为了访问数据库中的信息而使用的一个管理系统软件。它包含一组程序使用户可以进入、管理、查询数据库中数据。基于真实数据的位置,可以分为内存数据库管理系统和磁盘数据库管理系统。 | +| DCF | Distributed Consensus Framework,分布式共识框架,基于Paxos算法实现数据同步强一致。 | | DCL | Data Control Language,数据控制语言。 | | DDL | Data Definition Language,数据定义语言。 | | DEK | Data Encryption Key,数据加密密钥。 | @@ -81,7 +83,7 @@ date: 2021-03-04 | 逻辑解码 | 逻辑解码是一种通过对xlog日志的反解实现将数据库表的所有持久更改抽取到一种清晰、易于理解的格式的处理过程。 | | 逻辑复制槽 | 在逻辑复制的环境下,逻辑复制槽用以防止Xlog被系统或Vaccum回收。MogDB中用于记录逻辑解码位置的对象,提供创建、删除、读取、推进等多个SQL接口函数。 | | MVCC | Multi-Version Concurrency Control,多版本并发控制。数据库并发控制协议的一种,它的基本算法是一个元组可以有多个版本,不同的查询可以工作在不同的版本上。一个基本的好处是读和写可以不冲突。 | -| NameNode | NameNode是Hadoop系统中的一个中心服务器,负责管理文件系统的名称空间(namespace)以及客户端对文件的访问。 | +| NameNode | NameNode是Hadoop系统中的一个中心服务器,负责管理文件系统的名称空间(namespace)以及客户端对文件的访问。 | | OM | Operations Management,运维管理模块。提供数据库日常运维、配置管理的管理接口、工具。 | | 客户端 | 连接或请求其它计算机或程序服务的计算机或程序。 | | 空闲空间管理 | 管理表内空闲空间的机制,通过记录每个表内空闲空间信息,并建立易于查找的数据结构,可以加速对空闲空间进行的操作(例如INSERT)。 | @@ -94,7 +96,8 @@ date: 2021-03-04 | Page | MogDB数据库关系对象结构中行存的最小内存单元。一个Page大小默认为8KB。 | | Paxos | 分布式一致性协议。 | | PostgreSQL | PostgreSQL是一个开源的关系数据库管理系统(DBMS),由全球志愿者团队开发。PostgreSQL不受任何公司或个体所控制,源代码免费使用。 | -| postmaster | 数据库服务启动时启动的一个线程。用于侦听来自数据库其它节点或客户端的连接请求。主机上侦听到备机连接请求,并接受后,就会创建一个WAL Sender线程,用于处理与备机的交互。 | +| Postmaster | 数据库服务启动时启动的一个线程。用于侦听来自数据库其它节点或客户端的连接请求。主机上侦听到备机连接请求,并接受后,就会创建一个WAL Sender线程,用于处理与备机的交互。 | +| publication | 发布可以被定义在任何物理复制的主服务器上。定义有发布的节点被称为发布者。发布是从一个表或者一组表生成的改变的集合,也可以被描述为更改集合或者复制集合。每个发布都只存在于一个数据库中。 | | RHEL | Red Hat Enterprise Linux,红帽企业Linux。 | | REDO日志 | 记录对数据库进行操作的日志,这些日志包含重新执行这些操作所需要的信息。当数据库故障时,可以利用REDO日志将数据库恢复到故障前的状态。 | | RK | Root Key,加密根密钥。 | @@ -104,10 +107,10 @@ date: 2021-03-04 | SMP | Symmetric Multi-Processing,对称多处理技术,是指在一台计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。操作系统必须支持多任务和多线程处理,以使得SMP系统发挥高效的性能。数据库领域的SMP并行技术,一般指利用多线程技术实现查询的并行执行,以充分利用CPU资源,从而提升查询性能。 | | SQL | Structure Query Language,结构化查询语言。数据库的标准查询语言。它可以分为数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL)。 | | SSL | Secure Socket Layer,安全套接层。SSL是Netscape公司率先采用的网络安全协议。它是在传输通信协议(TCP/IP)上实现的一种安全协议,采用公开密钥技术。SSL广泛支持各种类型的网络,同时提供三种基本的安全服务,它们都使用公开密钥技术。SSL支持服务通过网络进行通信而不损害安全性。它在客户端和服务器之间创建一个安全连接。然后通过该连接安全地发送任意数据量。 | +| subscription | 订阅是逻辑复制的下游端。订阅被定义在其中的节点被称为订阅者。一个订阅会定义到另一个数据库的连接以及它想要订阅的发布集合(一个或者多个)。 | | 收敛比 | 交换机下行带宽与上行带宽的比值。收敛比越高,流量收敛程度越大,丢包越严重。 | | Table Access Method | 表访问方法层,对执行引擎和存储引擎进行解耦,实现存储引擎的可插拔能力。 | | TCP | Transmission Control Protocol,传输控制协议。用于将数据信息分解成信息包,使之经过IP协议发送;并对利用IP协议接收来的信息包进行校验并将其重新装配成完整的信息。TCP是面向连接的可靠协议,能够确保信息的无误发送。 | -| TDE | Transparent Data Encryption,透明数据加密。 | | trace | 一种特殊的日志记录方法,用来记录程序执行的信息。程序员使用该信息进行纠错。另外,根据trace日志中信息的类型和内容,有经验的系统管理员或技术支持人员以及软件监控工具诊断软件常见问题。 | | 强一致性 | 任何查询不会瞬时的看到一个事务的中间状态。 | | 全备份 | 备份整个数据库。 | @@ -126,7 +129,7 @@ date: 2021-03-04 | 统计信息 | 数据库使用统计信息估算查询代价,以查找代价最小的执行计划,统计信息一般是数据库自动收集的,包括表级信息(元组数、页面数等)和列级信息(列的值域分布直方图)。 | | 停用词 | 在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。 | | **U - Z** | | -| Ustore | In-place Update存储引擎别称,很好的解决了Append update存储引擎空间膨胀和元组较大的问题,高效回滚段的设计是In-place update存储引擎的基础。 | +| Ustore | In-place Update存储引擎别称,很好的解决了Append update存储引擎空间膨胀,元组较大的劣势,高效回滚段的设计是In-place update存储引擎的基础。 | | Undo Record | 撤销记录,用于undo记录的插入、查询以及组织,北向对接ustore,南向对接buffer pool。 | | Undo Space | 管理Undo记录的物理资源,包括增删undo文件等。 | | Undo Zone | 与业务线程绑定,管理每个业务线程的Undo逻辑资源。 | -- Gitee From b5eb8ef5e9167cde520818cffd168e6645328769 Mon Sep 17 00:00:00 2001 From: spaceoddity91719 Date: Sat, 7 May 2022 11:13:02 +0800 Subject: [PATCH 4/4] =?UTF-8?q?update(mogdb):=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../error-code-reference/77-GAUSS-51000-GAUSS-51999.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/error-code-reference/77-GAUSS-51000-GAUSS-51999.md b/product/zh/docs-mogdb/v3.0/reference-guide/error-code-reference/77-GAUSS-51000-GAUSS-51999.md index 5026e9f9..e65bd5f0 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/error-code-reference/77-GAUSS-51000-GAUSS-51999.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/error-code-reference/77-GAUSS-51000-GAUSS-51999.md @@ -463,9 +463,9 @@ GAUSS-51239: "Failed to parse json. gs_collect configuration file (%s) is invali SQLSTATE: 无 -错误原因: 系统内部错误。 +错误原因: 解析JSON文件错误。 -解决办法: 请联系技术支持工程师提供技术支持。 +解决办法: 请检查配置的JSON文件格式是否正确。 GAUSS-51240: "gs_collect configuration file is invalid, TypeName or content must in config file." -- Gitee