问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

green是什么意思

发布网友 发布时间:2022-04-23 09:23

我来回答

15个回答

懂视网 时间:2022-04-09 08:38

1. 创建文件空间
[gpadmin@cdha ~]$ gpfilespace -o gpfilespace_config   #当前目录下生成gpfilespace_config文件
Enter a name for this filespace> zhangyun_fs          #手工输入
primary location 1> /dbfast_zhangyun_tbs/primary      #手工输入
primary location 2> /dbfast_zhangyun_tbs/primary      #手工输入
mirror location 1> /dbfast_zhangyun_tbs/mirror        #手工输入
mirror location 2> /dbfast_zhangyun_tbs/mirror        #手工输入
master location> /dbfast_zhangyun_tbs/master          #手工输入


[gpadmin@cdha ~]$ gpfilespace -c gpfilespace_config   #基于gpfilespace_config配置文件创建文件空间




2. 创建表空间
CREATE TABLESPACE zhangyun_tbs FILESPACE zhangyun_fs;
允许普通的DB User来使用该表空间, 可以将CREATE权限授予相应的用户。
GRANT CREATE ON TABLESPACE zhangyun_tbs TO zhangyun;


或创建表空间时直接授权给用户
CREATE TABLESPACE zhangyun_tbs OWNER zhangyun FILESPACE zhangyun_fs;


3. 创建数据库
表空间创建好之后,我们就可以基于表空间来创建数据库
create database zhangyun_db with OWNER zhangyun template template0 encoding ‘utf8‘ tablespace zhangyun_tbs ;


4. 使用表空间存储 DB 对象 
表、索引、甚至整个DB都可以指定在特定的表空间。


若要如此,拥有给定表空间CREATE权限的Role必须通过表空间的名称作为相关命令的参数来实现,下
面是创建一个zhangyun_tbs表空间上的表:
CREATE TABLE test(id int) TABLESPACE zhangyun_tbs;


或者使用缺省表空间参数default_tablespace来设定:
SET default_tablespace = zhangyun_tbs;
CREATE TABLE test(id int);


5. 查看现有的表空间和文件空间
每个GPDB系统都有两个缺省的表空间: pg_global(用以存储系统日志信息)和pg_default(用以存储template1和template0模版DB的缺省表空间)。 
这些表空间使用系统缺省的文件空间pg_system(系统初始化时使用的数据目录data directory)。


要获取文件空间的信息,可以查看系统日志表pg_filespace和pg_filespace_entry。
可通过与pg_tablespace关联查看表空间的完整定义:
SELECT spcname as tblspc, fsname as filespc, fsedbid as seg_dbid, fselocation as datadir
FROM pg_tablespace pgts, pg_filespace pgfs, pg_filespace_entry pgfse
WHERE pgts.spcfsoid=pgfse.fsefsoid AND pgfse.fsefsoid=pgfs.oid ORDER BY tblspc, seg_dbid;


    tblspc    |   filespc   | seg_dbid |             datadir              
--------------+-------------+----------+----------------------------------
 pg_default   | pg_system   |        1 | /dbfast0/master/dg-1
 pg_default   | pg_system   |        2 | /dbfast1/primary/dg0
 pg_default   | pg_system   |        3 | /dbfast2/primary/dg1
 pg_default   | pg_system   |        4 | /dbfast1/primary/dg2
 pg_default   | pg_system   |        5 | /dbfast2/primary/dg3
 pg_default   | pg_system   |        6 | /dbfast1/mirror/dg0
 pg_default   | pg_system   |        7 | /dbfast2/mirror/dg1
 pg_default   | pg_system   |        8 | /dbfast1/mirror/dg2
 pg_default   | pg_system   |        9 | /dbfast2/mirror/dg3
 pg_global    | pg_system   |        1 | /dbfast0/master/dg-1
 pg_global    | pg_system   |        2 | /dbfast1/primary/dg0
 pg_global    | pg_system   |        3 | /dbfast2/primary/dg1
 pg_global    | pg_system   |        4 | /dbfast1/primary/dg2
 pg_global    | pg_system   |        5 | /dbfast2/primary/dg3
 pg_global    | pg_system   |        6 | /dbfast1/mirror/dg0
 pg_global    | pg_system   |        7 | /dbfast2/mirror/dg1
 pg_global    | pg_system   |        8 | /dbfast1/mirror/dg2
 pg_global    | pg_system   |        9 | /dbfast2/mirror/dg3
 zhangyun_tbs | zhangyun_fs |        1 | /dbfast_zhangyun_tbs/master/dg-1
 zhangyun_tbs | zhangyun_fs |        2 | /dbfast_zhangyun_tbs/primary/dg0
 zhangyun_tbs | zhangyun_fs |        3 | /dbfast_zhangyun_tbs/primary/dg1
 zhangyun_tbs | zhangyun_fs |        4 | /dbfast_zhangyun_tbs/primary/dg2
 zhangyun_tbs | zhangyun_fs |        5 | /dbfast_zhangyun_tbs/primary/dg3
 zhangyun_tbs | zhangyun_fs |        6 | /dbfast_zhangyun_tbs/mirror/dg0
 zhangyun_tbs | zhangyun_fs |        7 | /dbfast_zhangyun_tbs/mirror/dg1
 zhangyun_tbs | zhangyun_fs |        8 | /dbfast_zhangyun_tbs/mirror/dg2
 zhangyun_tbs | zhangyun_fs |        9 | /dbfast_zhangyun_tbs/mirror/dg3
(27 rows)




6. 创建与管理模式
模式(Schema)是在DB内组织对象的一种逻辑结构。 模式可以允许用户在一个DB内不同的模式之间使用相同Name的对象(比如Table,View等)。


缺省"Public"模式
每个新创建的DB都有一个缺省的模式public。如果没有创建其他的模式,在创建DB对象时将缺省使用public模式。 缺省情况下所有的ROLE(User)都有public
模式下的CREATE和USAGE权限。而在创建其他模式时,需要将该模式授权给相关的ROLE(User)。


创建模式
CREATE SCHEMA zhangyun_schema;
CREATE SCHEMA zhangyun_schema AUTHORIZATION zhangyun;


模式搜索路径
要知道在DB的哪个模式下搜索需要的对象,可以通过明确指定模式名的方式来实现。
SELECT * FROM zhangyun_schema.mybigtable;
若不想通过指定模式名称的方式来实现,可以通过设置search_path参数来完成。
1) 设置模式搜索路径
该参数可以通过ALTER DATABAST命令修改DB的模式搜索路径
ALTER DATABASE zhangyun_db SET search_path TO zhangyun_schema, public, pg_catalog;


还可以通过ALTER ROLE命令修改特定ROLE(User)的模式搜索路径。例如:
ALTER ROLE zhangyun SET search_path TO zhangyun_schema, public, pg_catalog;


2) 查看当前的模式
SELECT current_schema();
SHOW search_path;


系统模式
下面的这些系统级别的模式在所有的DB中都存在:
1) pg_catalog模式
存储着系统日志表(System Catalog Table)、 内置类型(Type)、函数(Function)和运算符(Operator)。
该模式无论是否在search_path中指明,都存在search_path中。


2) information_schema模式
由一个标准化视图构成,其包含DB中对象的信息。该视图用于以标准化的方法从系统日志表中查看系统信息。


3) pg_toast模式
一个储存大对象的地方(那些超过页面尺寸(page size)的记录)。 该模式仅供GPDB系统内部使用,通常不建议管理员或者任何用户访问。


4) pg_bitmapindex模式
一个储存bitmap index对象的地方(值列表等)。该模式仅供GPDB系统内部使用,通常不建议管理员或者任何用户访问。


5) pg_aoseg模式
一个储存append-only表的地方。该模式仅供GPDB系统内部使用,通常不建议管理员或者任何用户访问。


6) gp_toolkit模式
一个管理用的模式,可以查看和检索系统日志文件和其他的系统信息。 gp_toolkit视图包含一些外部表、视图、函数, 
可以通过SQL的方式访问它们。 gp_toolkit视图对于所有DB User都是可以访问的。




7. 创建与管理表
创建表
1) 选择Column的数据类型
Column的数据类型决定了其可以储存什么类型的数据值。通常都希望用最小的空间储存数据。
对于字符串,在多数情况下,应该选择使用TEXT或者VARCHAR而不是CHAR。
对于Numeric类型来说,应该尽量选择更小的数据类型来适应数据。比如,选择BIGINT类型来存储SMALLINT类型范围内的数值,会造成空间的大量浪费。
对于打算用来做表关联的Column来说,应该考虑选择相同的数据类型。


2) 设置Table和Column的约束
检查约束
CREATE TABLE products ( product_no integer, name text, price numeric CHECK (price > 0) );


非空约束
CREATE TABLE products (product_no integer NOT NULL, name text NOT NULL, price numeric );


唯一约束
在GPDB中使用唯一约束存在强制条件, Table必须是HASH分布的(而不是DISTRIBUTED RANDOMLY),并且唯一约束的Column集合必须完整包含所有的DK Column。
CREATE TABLE products (product_no integer UNIQUE, name text, price numeric)
DISTRIBUTED BY (product_no);


主键约束
在GPDB中使用主键约束存在强制条件, Table必须是HASH分布的(而不是DISTRIBUTED RANDOMLY),并且主键约束的Column集合必须完整包含所有的DK Column。
CREATE TABLE products (product_no integer PRIMARY KEY, name text, price numeric)
DISTRIBUTED BY (product_no);


3) 声明分布键
在创建Table时有一个额外的子句用以指明分布策略。 如果在创建Table时没有指明DISTRIBUTED BY或者DISTRIBUTED RANDOMLY子句, 
GPDB将会依次考虑使用主键(假如该Table有的话)或者第一个字段作为HASH分布的DK。
CREATE TABLE products (name varchar(40), prod_id integer, supplier_id integer)
DISTRIBUTED BY (prod_id);


CREATE TABLE random_stuff (things text, doodads text, etc text)
DISTRIBUTED RANDOMLY;


4) 选择表的存储模式


######选择堆存储或者只追加存储(Heap Storage or Append-Optimized Storage)######
Heap Storage:
缺省情况下GPDB使用与PostgreSQL相同的存储模式为堆存储。堆存储模式在OLTP类型工作负载的DB中很常用,常用于数据在初始装载后经常变化。 
UPDATE和DELETE操作需要对ROW级别做版本控制从而确保DB事务处理的可靠性。堆表更适合一些小表,比如维表,这种表可能会在初始化装载后经常更新数据。
因此,对于经常update,delete,或单行insert操作,或者并行的update,delete和insert操作,都适合堆表存储。


创建堆表
行存堆表是缺省的存储模式:
CREATE TABLE test (id int, name text) DISTRIBUTED BY (id);




Append-Optimized Storage:
GPDB还提供了一种称之为只追加存储模式的表。AO表更适合数据仓库中非规范化事实表,这些表通常都是系统中最大的表。
AO表达到了更精简和优化的页面存储结构。该存储模式强化了批量数据装载的性能。不推荐一行一行的使用INSERT语句来装载数据。
目前版本AO表已经支持DELETE和UPDATE操作。
因此,对于初始数据导入,以及随后的批量insert,而且不频繁update的表适合使用AO表。不要在AO表上执行单条的insert,update或delete操作。
并行的批量insert操作也是可以的,但是不要执行并行批量的update或delte操作。不适合主要的原因是AO表的update或delete后的row占用的空间不能有效地
回收和重用。因此AO只适合数据一次导入的大表,update不频繁,并且多次查询的情况。


** 创建只追加表
CREATE TABLE test (id int, name text) WITH (appendonly=true);
演示delete和update对ao表的操作:
zhangyun_db=# insert into test values(1,‘hello‘);
INSERT 0 1
zhangyun_db=# insert into test values(2,‘spark‘);
INSERT 0 1
zhangyun_db=# update test set name = ‘scala‘ where id = 1;
UPDATE 1
zhangyun_db=# select * from test;
 id | name  
----+-------
  1 | scala
  2 | spark
(2 rows)
zhangyun_db=# delete from test where id = 1;
DELETE 1
zhangyun_db=# select * from test;
 id | name  
----+-------
  2 | spark
(1 row)




######选择行存储或者列存储(Row or Column Orientation)######
考虑行存的情况:
(1) 表数据的更新
如果一张表在装载完之后一定有更新操作,那么就选择行存表。


(2) 经常做INSERT操作
如果经常有数据被INSERT,考虑选择行存表。列存表对于写操作不是最优的,
因为每条数据都需要被写到磁盘的多个位置(列存表的每列存储于不同的磁盘文件,而行存表是存储在同一个磁盘文件)。


(3) 查询涉及的COLUMN数量
若通常在SELECT或者WHERE中涉及TABLE的全部或大部COLUMN,考虑选择行存表。行存适合在WHERE或HAVING中对单列做聚合操作:
SELECT SUM(salary)...
SELECT AVG(salary)... WHERE salary > 10000


或者在WHERE条件中使用单个COLUMN条件且返回相对少量的ROW:
SELECT salary, dept ... WHERE state=‘CA‘


创建行存表
在CREATE TABLE时使用WITH子句来指明TABLE的存储模式。如果没有指明,该表将会是缺省的行存堆表。




考虑列存的情况:
列式存储是对读操作进行优化的,而对写操作没有优化。对于row的列值被放在磁盘的不同位置。列存表在只访问宽表的很少COLUMN的查询中可以表现出更好的性能。
另外一个性能提升的地方是,列式存储的每列都是相同格式的数据值,压缩效率高,占用磁盘空间少,减少磁盘IO。


创建列存表
使用列存的TABLE必须是AO表。
CREATE TABLE test (id int, name text) WITH (appendonly=true, orientation=column)
DISTRIBUTED BY (id);


5) 使用压缩(只可以是AO表)
在GPDB中, AO表有两种库内压缩可选,一种是表级的压缩,另外一种是COLUMN级别的压缩,前者应用到整个TABLE,后者应用到指定的COLUMN。
在选择COLUMN级别压缩时,可以为不同的COLUMN选择不同的压缩算法。下表是可用的压缩算法:


表导向  |  可用压缩类型    |    支持压缩算法
--------|------------------|-------------------------------
行      |  表级别          |    ZLIB 和 QUICKLZ
--------|------------------|---------------------------------
列      | 列级别 和 表级别 |    RLE_TYPE、 ZLIB 和 QUICKLZ


使用库内压缩要求Segment系统具备强劲的CPU来压缩和解压缩数据。不要在压缩文件系统使用压缩AO表。如果Instance数据目录是压缩文件系统,不要压缩使用AO表。


QUICKLZ压缩通常适用于CPU能力一般的情况,其压缩速度比ZLIB快,但压缩率不如ZLIB。 
相反的, ZLIB提供更高的压缩率,但压缩速度较低。 在压缩级别为1时, QUICKLZ与ZLIB可能获得差不多的压缩率(但压缩速度ZLIB可能差一些)。
但在6级以上的ZLIB在压缩率方面的优势显著高于QUICKLZ(但压缩速度也因此显著的低于QUICKLZ)。


QUICKLZ压缩模式只有一种压缩级别,没有级别选项可以选择。而ZLIB压缩模式有1 – 9个压缩级别可选。




创建压缩表
CREATE TABLE foo (a int, b text) WITH (appendonly=true, compresstype=zlib, compresslevel=5);


检查AO表的压缩与分布情况
------------------------------------------------------------------------------------------------------------------------
select get_ao_distribution(name);      |   Set of (dbid, tuplecount) rows | 展示 AO 表的分布情况,每ROW 对应 
select get_ao_distribution(oid);       |                                  | Segment Instance 的dbid 与储存的数据行数。
------------------------------------------------------------------------------------------------------------------------
select get_ao_compression_ratio(name); |   float8                         | 计算出 AO 表的压缩率。
select get_ao_compression_ratio(oid);  |                                  | 如果该信息未得到,将返回-1 值
------------------------------------------------------------------------------------------------------------------------


示例:
select get_ao_distribution(‘foo‘); #每个Instance存储foo表的ROW数量
 get_ao_distribution 
---------------------
 (3,2500037)
 (0,2499970)
 (2,2499974)
 (1,2500033)


select get_ao_compression_ratio(‘foo‘);
 get_ao_compression_ratio 
--------------------------
                     4.76 #意味着foo表未压缩状态下的储存尺寸是压缩下的储存尺寸的4倍多
(1 row)


下面演示通过oid查看:
select oid from pg_class where relname = ‘foo‘;
  oid  
-------
 25626


select get_ao_distribution(25626);
 get_ao_distribution 
---------------------
 (0,2499970)
 (1,2500033)
 (3,2500037)
 (2,2499974)


select get_ao_compression_ratio(25626);
 get_ao_compression_ratio 
--------------------------
                     4.76




支持运行长度编码
GPDB已支持COLUMN级别的运行长度编码(Run-length Encoding /RLE)压缩算法。 RLE是一种将连续重复的数据作为一种计数方式存储的压缩算法。
RLE对于重复元素是很有效的。比如,在一个表中有两个COLUMN,一个日期COLUMN和一个描述COLUMN,其中包含200000个date1和400000个data2,
RLE压缩处理这种数据为类似data1 200000 data2 400000这样的效果。对于那些没有很多重复值的数据RLE是不适合的,而且还可能会显著的增加存储文件的尺寸。
RLE压缩有4种级别。级别越高,压缩效率越高,但压缩速度也会越低。
               
使用列级压缩
在CREATE TABLE、 ALTER TABLE和CREATE TYPE命令中包含对COLUMN设置压缩类型、压缩级别和块尺寸(Block Size)的选项。 这些参数统称为存储参数。
存储参数可用于行导向和列导向的AO表。 下面列举这3种存储参数及每种参数的可选值。


名称                |          解释            |      可选值
COMPRESSTYPE        |        使用的压缩类型    |      ZLIB(更高压缩)
                    |                          |      QUICKLZ(更快压缩)
                    |                          |      RLE_TYPE(运行长度编码)
                    |                          |      none(无压缩、缺省值)
----------------------------------------------------------------------------------------------------------
COMPRESSLEVEL       |        压缩级别          |      ZLIB 为 1-9 级可选
                    |                          |      1 级压缩较快但压缩率较低,9 级压缩较慢但压缩率较高
                    |                          |      QUICKLZ 仅 1 个级别可选(缺省不需指定)
                    |                          |      RLE_TYPE 为 1-4 级可选
                    |                          |      1 级压缩较快但压缩率较低,4 级压缩较慢但压缩率较高
-----------------------------------------------------------------------------------------------------------
BLOCKSIZE           |        表的存储块大小    |      8192 – 209715(8K – 2M)该值必须是 8192 的倍数
-----------------------------------------------------------------------------------------------------------
使用存储参数的格式如下:
[ ENCODING ( storage_directive [,…] ) ]
这里ENCODING关键字是必须的, 存储参数包含3个部分:参数名称、等于号、参数值。
如下面的CREATE TABLE语句所示:
一般用法:
column_name data_type ENCODING ( storage_directive [, … ] ), …
COLUMN column_name ENCODING ( storage_directive [, … ] ), …
DEFAULT COLUMN ENCODING ( storage_directive [, … ] )
例如:
C1 char ENCODING (compresstype=quicklz, blocksize=65536)
COLUMN C1 ENCODING (compresstype=quicklz, blocksize=65536)
DEFAULT COLUMN ENCODING (compresstype=quicklz)


示例:
CREATE TABLE T1 (
    c1 int ENCODING (compresstype=zlib),
    c2 char ENCODING (compresstype=quicklz, blocksize=65536),
    c3 char)
WITH (appendonly=true, orientation=column);


CREATE TABLE T2 (
    c1 int ENCODING (compresstype=zlib),
    c2 char ENCODING (compresstype=quicklz, blocksize=65536),
    c3 char, COLUMN c3 ENCODING (RLE_TYPE) )
WITH (appendonly=true, orientation=column);


CREATE TABLE T3 (
    c1 int ENCODING (compresstype=zlib),
    c2 char ENCODING (compresstype=quicklz, blocksize=65536),
    c3 char,
    COLUMN c3 ENCODING (compresstype=RLE_TYPE))
WITH (appendonly=true, orientation=column)
PARTITION BY RANGE (c3) (
    START (‘1900-01-01‘::DATE) END (‘2100-12-31‘::DATE),
    COLUMN c3 ENCODING (zlib) #实际上c3使用的是ZLIB压缩而非RLE_TYPE压缩
);


CREATE TABLE T4 (
    c1 int ENCODING (compresstype=zlib),
    c2 char,  #将从DEFAULT COLUMN ENCODING子句继承压缩方式(QUICKLZ)和块尺寸(65536)
    c3 char,  #压缩方式(RLE_TYPE), 块尺寸(65536)从DEFAULT COLUMN ENCODING子句继承而来
    c4 smallint ENCODING (compresstype=none), #而块尺寸没有显式的复写设置,因此,其块尺寸为65536.
    DEFAULT COLUMN ENCODING (compresstype=quicklz, blocksize=65536),
    COLUMN c3 ENCODING (compresstype=RLE_TYPE) )
WITH (appendonly=true, orientation=column);




CREATE TABLE T5 (
    i int,
    j int,
    k date,
    DEFAULT COLUMN ENCODING (blocksize=1048576) --1MB
) WITH (appendonly = true, orientation=column)
PARTITION BY RANGE(k)
  SUBPARTITION BY LIST(j)
    SUBPARTITION TEMPLATE
    (
      SUBPARTITION one_two VALUES(1, 2) COLUMN j ENCODING (compresstype=RLE_TYPE),
      SUBPARTITION rest VALUES(3, 4, 5, 6, 7, 8, 9) COLUMN j ENCODING (compresstype=zlib, compresslevel=9),
      DEFAULT COLUMN ENCODING (compresstype=quicklz)
    )
(
    START (date ‘2011-01-01‘) END (date ‘2011-12-31‘)
    EVERY (interval ‘1 day‘)
);




通过TYPE命令的方式设置压缩配置
使用精简的方式创建压缩表:
CREATE TABLE t2 (c1 comptype) WITH (APPENDONLY=true, ORIENTATION=column);
这里的comptype的定义为:
CREATE TYPE comptype (
    internallength = 4,
    input = comptype_in,
    output = comptype_out,
    alignment = int4,
    default = 123,
    passedbyvalue,
    compresstype="quicklz",
    blocksize=65536,
    compresslevel=1
);


不建议使用这种不明显的方式,虽然在定义TABLE时看起来精简了不少,但对于别人来说,阅读和理解可能都存在障碍。另外替代原生TYPE的定义未必适应所有情况。建议慎用。




选择块尺寸
在一个TABLE中,每个块尺寸意味着相应数量byte的存储。块尺寸必须在8192到2097152之间,并且必须是8192的整数倍。缺省值为32768。 
需要注意的是,指定大的块大小会消耗大量的内存资源。块尺寸决定着存储层的尺寸, 在GP中,每个块作为一部分数据来维护,因此多分区表和列存储表都会消耗更多的内存。




6) 改变表的分布
下面的命令在所有Segment之间按照customer_id作为DK重分布sales表:
ALTER TABLE sales SET DISTRIBUTED BY (customer_id);


在修改TABLE的HASH分布时,表数据会自动重新分布。如果将分布策略改为随机分布时也会重新分布数据。例如:


测试:
template1=# d+ foo
            Append-Only Table "public.foo"
 Column |  Type   | Modifiers | Storage  | Description 
--------+---------+-----------+----------+-------------
 a      | integer |           | plain    | 
 b      | text    |           | extended | 
Compression Type: zlib
Compression Level: 5
Block Size: 32768
Checksum: t
Has OIDs: no
Options: appendonly=true, compresstype=zlib, compresslevel=5
Distributed by: (a)


template1=# select get_ao_distribution(‘foo‘);
 get_ao_distribution 
---------------------
 (1,2500033)
 (0,2499970)
 (2,2499974)
 (3,2500037)
(4 rows)


template1=# ALTER TABLE foo SET DISTRIBUTED RANDOMLY; #重新设置分布策略
 
template1=# select get_ao_distribution(‘foo‘);
 get_ao_distribution 
---------------------
 (1,2500003)
 (3,2500004)
 (0,2500002)
 (2,2500005)
(4 rows)


template1=# ALTER TABLE foo SET WITH (REORGANIZE=TRUE); #重分布数据
template1=# select get_ao_distribution(‘foo‘);
 get_ao_distribution 
---------------------
 (3,2500004)
 (0,2500003)
 (1,2500004)
 (2,2500003)
(4 rows)




template1=# ALTER TABLE foo SET DISTRIBUTED BY (a);  #重新设置分布策略
ALTER TABLE
template1=# select get_ao_distribution(‘foo‘);
 get_ao_distribution 
---------------------
 (1,2500033)
 (2,2499974)
 (3,2500037)
 (0,2499970)
(4 rows)


重分布表数据
对于随机分布策略或者不改变分布策略的表,要重分布TABLE的数据,使用REORGANIZW=TRUE。
这在处理数据倾斜问题时可能是很必要的,在添加新的Segment节点资源时也是必要的。
ALTER TABLE sales SET WITH (REORGANIZE=TRUE);
该命令会在Instance之间按照现有的分布策略(包括随机分布策略)重新平衡表中数据。


7) 修改表的存储模式
在TABLE被创建之后,修改表的存储模式是不可能的。存储模式只能在CREATE TABLE时被指定。
如果要修改现有表的存储模式,必须使用正确的存储选项重建该表,重新加载数据到新的表,删除旧的表,修改新表为旧的表名。另外还必须重新授权表的权限。


CREATE TABLE sales2 (LIKE sales)
WITH (appendonly=true, compresstype=quicklz, compresslevel=1, orientation=column);
INSERT INTO sales2 SELECT * FROM sales;
DROP TABLE sales;
ALTER TABLE sales2 RENAME TO sales;
GRANT ALL PRIVILEGES ON sales TO admin;
GRANT SELECT ON sales TO guest;




8) 在现有表上添加压缩列
可以使用ALTER TABLE命令来添加一个压缩列。
ALTER TABLE T1 ADD COLUMN c4 int DEFAULT 0 ENCODING (COMPRESSTYPE=zlib);


9) 继承压缩设置
创建一个带子分区设置的表,然后增加一个分区:
CREATE TABLE ccddl (i int, j int, k int, l int)
WITH (APPENDONLY = TRUE, ORIENTATION=COLUMN)
PARTITION BY range(j)
  SUBPARTITION BY list (k)
    SUBPARTITION template(
      SUBPARTITION sp1 values(1, 2, 3, 4, 5),
      COLUMN i ENCODING(COMPRESSTYPE=ZLIB),
      COLUMN j ENCODING(COMPRESSTYPE=lz4), #Vitesse DeepGreen does not support quicklz.  Please use lz4 or set vitesse.lz4_replace_quicklz. 
      COLUMN k ENCODING(COMPRESSTYPE=ZLIB),
      COLUMN l ENCODING(COMPRESSTYPE=ZLIB))
( PARTITION p1 START(1) END(10), 
  PARTITION p2 START(10) END(20)
);


ALTER TABLE ccddl ADD PARTITION p3 START(20) END(30);






10) 分区大表
表分区用以解决特别大的表的问题,比如事实表,解决办法就是将表分成很多小且更容易管理的部分。
在CREATE TABLE时使用PARTITION BY(以及可选的SUBPARTITION BY)子句来做分区。在GPDB中对一张表做分区,实际上是创建了一张顶层(父级)表和多个低层
(子级)表。 在内部, GPDB在顶级表与低级表之间创建了继承关系(类似于PostgreSQL中的继承/INHERIT功能)。


GPDB支持范围(根据数值型的范围分割数据,比如日期或价格)分区和列表(根据值列表分区,比如区域或生产线)分区,或者两种类型的结合。


表分区是一种大表逻辑切分和数据仓库任务的工具。分区本身不会改变Instance间物理上的数据分布规律。


决定表分区的策略:
表是否足够大? 
对目前的性能不满意?
查询条件是否能匹配分区条件? 
数据仓库是否需要滚动历史数据? 
按照某个规则数据是否可以被均匀的分拆? 


定义日期范围分区表
日期范围分区表使用单个date或者timestamp字段作为分区键。 
可以通过使用START值、 END值和EVERY子句定义分区增量让GPDB自动产生分区。
缺省情况下, START值总是被包含而END值总是被排除。
CREATE TABLE sales (id int, date date, amt decimal(10,2)) 
DISTRIBUTED BY (id)
PARTITION BY RANGE (date)
( START (date ‘2008-01-01‘) INCLUSIVE
END (date ‘2009-01-01‘) EXCLUSIVE
EVERY (INTERVAL ‘1 day‘) );




不过也可以为每个分区单独指定名称。比如:
CREATE TABLE sales (id int, date date, amt decimal(10,2))
DISTRIBUTED BY (id)
PARTITION BY RANGE (date)
(   PARTITION Jan08 START (date ‘2008-01-01‘) INCLUSIVE ,
    PARTITION Feb08 START (date ‘2008-02-01‘) INCLUSIVE ,
    PARTITION Mar08 START (date ‘2008-03-01‘) INCLUSIVE ,
    PARTITION Apr08 START (date ‘2008-04-01‘) INCLUSIVE ,
    PARTITION May08 START (date ‘2008-05-01‘) INCLUSIVE ,
    PARTITION Jun08 START (date ‘2008-06-01‘) INCLUSIVE ,
    PARTITION Jul08 START (date ‘2008-07-01‘) INCLUSIVE ,
    PARTITION Aug08 START (date ‘2008-08-01‘) INCLUSIVE ,
    PARTITION Sep08 START (date ‘2008-09-01‘) INCLUSIVE ,
    PARTITION Oct08 START (date ‘2008-10-01‘) INCLUSIVE ,
    PARTITION Nov08 START (date ‘2008-11-01‘) INCLUSIVE ,
    PARTITION Dec08 START (date ‘2008-12-01‘) INCLUSIVE END (date ‘2009-01-01‘) EXCLUSIVE 
);


上面的分区的范围都是连续的,如果不连续需要指定end值。


定义数字范围分区表
数字范围分区表使用单个数字列作为分区键。例如:
CREATE TABLE rank (id int, rank int, year int, gender char(1), count int)
DISTRIBUTED BY (id)
PARTITION BY RANGE (year)
( START (2001) END (2008) EVERY (1),
  DEFAULT PARTITION extra 
);




定义列表分区表
列表分区表可以使用任何数据类型的列作为分区键,分区规则使用等值比较。
列表分区可以使用多个COLUMN(组合起来)作为分区键,而范围分区只允许使用单独COLUMN作为分区键。对于列表分区,必须为每个分区指定相应的值。


CREATE TABLE rank (id int, rank int, year int, gender char(1), count int )
DISTRIBUTED BY (id)
PARTITION BY LIST (gender)
( PARTITION girls VALUES (‘F‘),
PARTITION boys VALUES (‘M‘),
DEFAULT PARTITION other );




定义多级分区表
使用subpartition template来确保每个分区具有相同的子分区结构,尤其是对那些后增加的分区来说。
CREATE TABLE sales (trans_id int, date date, amount decimal(9,2), region text)
DISTRIBUTED BY (trans_id)
PARTITION BY RANGE (date)
SUBPARTITION BY LIST (region)
  SUBPARTITION TEMPLATE
  ( 
    SUBPARTITION usa VALUES (‘usa‘),
    SUBPARTITION asia VALUES (‘asia‘),
    SUBPARTITION europe VALUES (‘europe‘),
    DEFAULT SUBPARTITION other_regions
  )
( START (date ‘2008-01-01‘) INCLUSIVE END (date ‘2009-01-01‘) EXCLUSIVE
  EVERY (INTERVAL ‘1 month‘), 
  DEFAULT PARTITION outlying_dates 
);




下面是一个3级分区表的例子,这里表sales被分区为年、月、区域。 SUBPARTITION TEMPLATE子句确保每个年分区有相同的子分区结构。
另外,每个级别的分区都有一个默认分区:
CREATE TABLE sales (id int, year int, month int, day int, region text) DISTRIBUTED BY (id)
PARTITION BY RANGE (year)
SUBPARTITION BY RANGE (month)
  SUBPARTITION TEMPLATE 
  (
    START (1) END (13) EVERY (1),
    DEFAULT SUBPARTITION other_months 
  )
SUBPARTITION BY LIST (region)
  SUBPARTITION TEMPLATE 
  (
    SUBPARTITION usa VALUES (‘usa‘),
    SUBPARTITION europe VALUES (‘europe‘),
    SUBPARTITION asia VALUES (‘asia‘),
    DEFAULT SUBPARTITION other_regions 
  )
( START (2002) END (2010) EVERY (1), 
  DEFAULT PARTITION outlying_years 
);




将现有表分区
对已经创建的表是不能分区的。只能在CREATE TABLE的时候做分区。要想对现有的表做分区,只能重新创建一个分区表、重新装载数据到新的分区表中、删
掉旧表然后把新的分区表改为旧表的名称。还必须重新对TABLE做授权。
CREATE TABLE sales2 (LIKE sales)
PARTITION BY RANGE (date)
( START (date ‘2008-01-01‘) INCLUSIVE END (date ‘2009-01-01‘) EXCLUSIVE
  EVERY (INTERVAL ‘1 month‘) 
);
INSERT INTO sales2 SELECT * FROM sales;
DROP TABLE sales;
ALTER TABLE sales2 RENAME TO sales;
GRANT ALL PRIVILEGES ON sales TO admin;
GRANT SELECT ON sales TO guest;


分区表的限制
主键或者唯一约束必须包含表上的所有分区键。而唯一索引可以不包含分区键,
但是,其只对一个分区强制有效,而不是对整个分区表有效。




装载分区表
一旦创建了分区表,顶级表总是空的。数据值储存在最低层的表中。在多级分区表中,仅仅在层级最低的子分区中有数据。
在运行期间,查询规划器会扫描整个TABLE的层级结构并使用CHECK约束适配查询条件来决定哪些子表需要被扫描。
默认分区(只要该层级中存在)总是会被扫描。如果默认分区中包含数据,其会拖慢整体的扫表时间。


如果有必要,还可以直接把数据装载到子表中。还可以先创建一个中间表、装载数据、然后与分区表进行分区交换。这种分区交换的性能高于直接的COPY和INSERT。




查看分区设计
要查看分区表的设计情况,通过pg_partitions视图查看。
SELECT partitionboundary, partitiontablename, partitionname, partitionlevel, partitionrank
FROM pg_partitions WHERE tablename=‘sales2‘;


pg_partition_templates - 用以创建SUBPARTITION的SUBPARTITION template
pg_partition_columns – 用于分区的分区键




维护分区表
必须使用ALTER TABLE命令从顶级表来维护分区。 最常见的场景是根据日期范围的设计来维护数据时,删除旧分区并添加一个新的分区。
还有一种可能就是把旧的分区交换为压缩AO表以节省空间。 若在父表中存在默认分区,添加分区的操作只能是从默认分区拆分出一个新的分区。


由于分区不要求有名称,若分区没有名称,下面的表达式仍可以指定一个分区:
PARTITION FOR (value) or PARTITION FOR(RANK(number))
(1) 添加新分区
如果原有的分区表包含了subpartition template设计,新增的分区将根据该模版创建子分区。
CREATE TABLE sales (trans_id int, date date, amount decimal(9,2), region text)
DISTRIBUTED BY (trans_id)
PARTITION BY RANGE (date)
SUBPARTITION BY LIST (region)
  SUBPARTITION TEMPLATE
  ( 
    SUBPARTITION usa VALUES (‘usa‘),
    SUBPARTITION asia VALUES (‘asia‘),
    SUBPARTITION europe VALUES (‘europe‘),
    DEFAULT SUBPARTITION other_regions
  )
( START (date ‘2008-01-01‘) INCLUSIVE END (date ‘2009-01-01‘) EXCLUSIVE
  EVERY (INTERVAL ‘1 month‘), 
  DEFAULT PARTITION outlying_dates 
);


ALTER TABLE sales ADD PARTITION
START (date ‘2009-02-01‘) INCLUSIVE
END (date ‘2009-03-01‘) EXCLUSIVE;




如果在创建TABLE时没有subpartition template,在新增分区时需要定义子分区:
ALTER TABLE sales ADD PARTITION
START (date ‘2009-02-01‘) INCLUSIVE
END (date ‘2009-03-01‘) EXCLUSIVE
( SUBPARTITION usa VALUES (‘usa‘),
SUBPARTITION asia VALUES (‘asia‘),
SUBPARTITION europe VALUES (‘europe‘) );


子表的名称格式如下:
<父表名称>_<分区层级>_prt_<分区名称>


子表的名称不能通过直接执行ALTER表名来实现。但修改顶级表的名称,该改变将会影响所有相关的分区表。


添加缺省分区
ALTER TABLE sales ADD DEFAULT PARTITION other;
如果是多级分区表, 同一层次中的每个分区都需要一个默认分区。
ALTER TABLE sales ALTER PARTITION FOR (RANK(1)) ADD DEFAULT PARTITION other;
ALTER TABLE sales ALTER PARTITION FOR (RANK(2)) ADD DEFAULT PARTITION other;
ALTER TABLE sales ALTER PARTITION FOR (RANK(3)) ADD DEFAULT PARTITION other;
RANK(partitionrank)指的是范围分区同一层级中的顺序。partitionrank可参见pg_partition表。


(2)删除分区
ALTER TABLE sales DROP PARTITION FOR (RANK(1));


注意: 在将RANK(1)的分区删除后,其余分区的partitionrank值仍然是从1开始的连续编号。 编号的顺序按照分区字段的值由小到大从1开始排序。
不管分区是否连续(中间有值不匹配分区),或者随意的修改分区定义。


(3)清空分区数据
在清空一个包含子分区的分区时,其所有相关子分区的数据都自动被清空。
ALTER TABLE sales TRUNCATE PARTITION FOR (RANK(1));


(4)交换分区:
CREATE TABLE jan08 (LIKE sales) WITH (appendonly=true);
INSERT INTO jan08 SELECT * FROM sales_1_prt_1 ;
ALTER TABLE sales EXCHANGE PARTITION FOR (DATE ‘2008-01-01‘) WITH TABLE jan08




(5)拆分分区
拆分分区是将现有的一个分区分成两个分区。 使用ALTER TABLE命令来拆分分区。只能拆分最低层级的分区表(只有包含数据的分区可以拆分)。
指定的分割值对应的数据将进入后面一个分区(就是STAER为INCLUSIVE)。
ALTER TABLE sales SPLIT PARTITION FOR (‘2008-01-01‘)
AT (‘2008-01-16‘) INTO (PARTITION jan081to15, PARTITION jan0816to31);


如果分区表有默认分区,要添加新的分区只能从默认分区拆分。而且只能从最低层级分区的默认分区拆分(只有包含数据的分区可以拆分)。 
在使用INTO子句时,第2个分区名称必须是已经存在的默认分区。
ALTER TABLE sales SPLIT DEFAULT PARTITION
START (‘2009-01-01‘) INCLUSIVE
END (‘2009-02-01‘) EXCLUSIVE
INTO (PARTITION jan09, default partition);




(6)修改子分区模版
使用ALTER TABLE SET SUBPARTITION TEMPLATE命令来修改现有分区表的子分区模版。 在修改了子分区模版之后添加的分区,
其子分区将按照新的模版产生。已经存在的分区不会被修改。
ALTER TABLE sales SET SUBPARTITION TEMPLATE
(   SUBPARTITION usa VALUES (‘usa‘),
    SUBPARTITION asia VALUES (‘asia‘),
    SUBPARTITION europe VALUES (‘europe‘),
    SUBPARTITION africa VALUES (‘africa‘)
    DEFAULT SUBPARTITION other 
);
ALTER TABLE sales ADD PARTITION sales_prt_3
START (‘2009-03-01‘) INCLUSIVE END (‘2009-04-01‘) EXCLUSIVE;


这个例子在一级分区有默认分区时是不能执行的,要查看效果,先删除默认分区。
要删除子分区模版,使用SET SUBPart TEMPLATE并使用空的参数来完成。
ALTER TABLE sales SET SUBPARTITION TEMPLATE ();




11) 创建与使用序列


(1)创建序列
CREATE SEQUENCE myserial START 101;


(2)使用序列
获取序列的下一个值并插入表中:
INSERT INTO vendors VALUES (nextval(‘myserial‘), ‘acme‘);


可以使用setval函数重置一个序列计数器的值。例如:
SELECT setval(‘myserial‘, 201);


注意,如果启用了镜像功能, nextval函数不允许在UPDATE和DELETE语句中被使用,另外currval和lastval函数目前未被GPDB支持。


检查序列当前的计数设置,可以直接查询该序列表:
SELECT * FROM myserial;


(3)修改序列
ALTER SEQUENCE myserial RESTART WITH 105;




12) 索引


在创建索引时需要综合考虑的问题:
查询工作负载
压缩表
避免在频繁更新的列上使用索引
创建选择性B-tree索引
低选择性列上使用位图索引
索引列用于关联
索引列经常用在查询条件中


(1)创建索引
CREATE INDEX title_idx ON films (title);
CREATE INDEX gender_bmp_idx ON employee USING bitmap (gender);


使用EXPLAIN ANALYZE命令对使用索引前后进行计时比较会很有用。


(2)管理索引
更新和删除操作不更新位图索引。因此在删除或者更新了位图索引列之后,可能需要使用REINDEX命令重建索引。
重建表上的全部索引
REINDEX my_table;
重建特定的索引
REINDEX my_index;


(3)删除索引
在装载数据时,通常先删除索引、再装载数据、然后在重新创建索引,这样比直接装载数据要快很多。

Greenplum或DeepGreen数据库对象的使用和管理

标签:

热心网友 时间:2022-04-09 05:46

意思是:绿色的;长满绿色植物的

一、读音:[ɡriːn] 

二、例句:

he paper turned green as if by magic.
这纸魔术般地变成了绿色。

三、词汇用法:

1、green在表示“在…方面是新手”时,常与介词at搭配。

2、green通常用作不可数名词,当作“绿色蔬菜”解时用作可数名词,常用复数形式。

扩展资料

近义词:unripe

一、读音: [ˌʌn'raɪp] 

二、意思是: 未成熟的;没准备的

三、例句:

Raw fresh part of plant and unripe fruit are poisonous.
生鲜植物体及未成熟的果实有毒。

四、词汇用法:

用作形容词 

Eating the unripe apples made him ill.
吃没熟的苹果使他得了病。

热心网友 时间:2022-04-09 07:04

green表示绿色的意思。

读音:英 [ɡriːn] 美 [ɡriːn]

1、用作形容词(adj.)绿色的;长满绿色植物的;环保的;无经验的;未成熟的

The paper turned green as if by magic.

这纸魔术般地变成了绿色。

2、用作名词(n.)绿色;草地

Green was the predominant color in the forest.

绿色是森林的主色调。

3、用作不及物动词(vi.)变绿

Our lawn grass does not green up until the middle of May.

我们的草坪要到五月中旬才变绿。

扩展资料

一、词源解说

直接源自中古英语的grene,意为绿。

二、词语用法

1、green的基本意思是“绿色”,是一种代表生命的颜色,还可指“绿色的衣服”“绿色蔬菜”或一片长满草的区域,即“草地,绿地”。green还可指“高尔夫球场上的球穴区”。

2、green通常用作不可数名词,当作“绿色蔬菜”解时用作可数名词,常用复数形式。

3、green用作形容词时的意思是“绿色的,青色的”,指事物呈现出绿色的状态。也可用来指某物还“没有成熟”,或人由于年轻而没有社会经验,即“未成熟的,无经验的,易受愚弄的”

4、green在表示“在…方面是新手”时,常与介词at搭配。

热心网友 时间:2022-04-09 08:39

green意思有:

1、形容词:绿色的;长满绿色植物的;环保的;无经验的;未成熟的

如:The paper turned green as if by magic.这纸魔术般地变成了绿色。

2、名词: 绿色;草地

如:Green was the predominant color in the forest.绿色是森林的主色调。

3、动词: 变绿

如:Our lawn grass does not green up until the middle of May.我们的草坪要到五月中旬才变绿。

用法:green的基本意思是“绿色”,是一种代表生命的颜色,还可指“绿色的衣服”“绿色蔬菜”或一片长满草的区域,即“草地,绿地”。green还可指“高尔夫球场上的球穴区”。

green通常用作不可数名词,当作“绿色蔬菜”解时用作可数名词,常用复数形式。

green用作形容词时的意思是“绿色的,青色的”,指事物呈现出绿色的状态。也可用来指某物还“没有成熟”,或人由于年轻而没有社会经验,即“未成熟的,无经验的,易受愚弄的”; 有时也可指某物是“未干的,潮的”。green引申可指“精力旺盛,充满青春活力”。

扩展资料:     

1、give the green light

开绿灯,批准 ,相当于agree

2、give sb the green light

We are ready to build a great bridge over the river. We are just waiting for the municipal government to give us the green light.

我们已做好了在河上建一座大桥的准备,现在正等待市*的批准。

3、give sb the green light to-v

Mother gave us the green light to go on the camping trip.

母亲准许我们野营旅行。

热心网友 时间:2022-04-09 10:30

热心网友 时间:2022-04-09 12:38

green[英][gri:n][美][ɡrin]
adj.绿色的; 未熟的,青春的; 未成熟的; 主张保护环境的;
n.绿色蔬菜; 绿色的衣服; 植物;
vi.绿化,使重视环境保护问题;
复数:greens最高级:greenest比较级:greener
例句:
1.
Ms. mcclung praises the researchers working on green super rice.
麦克朗赞扬了绿色超级稻的研究人员。

祝你英语学习成功!
~~~~~~~~~~~~~~~~~~~~~
如有疑问请继续追问,望采纳,谢谢,您的采纳是我的力量!

热心网友 时间:2022-04-09 15:03

green
生词本
去背诵
英 [gri:n] 美 [ɡrin]
adj.绿色的; 未熟的,青春的; 未成熟的; 主张保护环境的
n.绿色蔬菜; 绿色的衣服; 植物
vi.绿化,使重视环境保护问题
网 络
绿色;绿的
复数: greens 比较级: greener 最高级: greenest
派生词:greenish greenly greenness

双语例句
1. Revenues from "green taxes" could then be channelled back into energy efficiency.
从“绿色税收”得来的收入便可回过头来用于提高能效。
来自柯林斯例句
2. You don't need green fingers to fill your home with lush leaves.
不是园艺大师也可以把自己的家里装点得绿意盎然。
来自柯林斯例句
3. The room remains simple with bare, stippled green walls.
房间仍然很简朴,四面都是饰有圆点的绿色空墙。
来自柯林斯例句
4. The hills rise green and sheer above the broad river.
这些小山碧绿陡峭,矗立在这条宽阔的河流之上。
来自柯林斯例句
5. A light aircraft crash-landed on a putting green yesterday.
一架轻型飞机昨天在一个高尔夫球场的球洞区紧急降落了。
来自柯林斯例句

热心网友 时间:2022-04-09 17:44

green 英[ɡri:n] 美[ɡrin]
adj. 绿色的;未熟的,青春的;未成熟的;主张保护环境的
n. 绿色蔬菜;绿色的衣服;植物
vi. 绿化,使重视环境保护问题
(赠人玫瑰,手留余香。如若,您对我的答复满意,请采纳,O(∩_∩)O谢谢~)

热心网友 时间:2022-04-09 20:42

green
英 [gri:n] 美 [ɡrin]
adj. 绿色的; 未熟的,青春的; 未成熟的; 主张保护环境的
n. 绿色蔬菜; 绿色的衣服; 植物;
vi. 绿化,使重视环境保护问题;
复数: greens

热心网友 时间:2022-04-09 23:57

green意思有
、形容词:绿色的;长满绿色植物的;环保的;无经验的;未成熟的
如:The paper turned green as if by magic.这纸魔术般地变成了绿色。
2、名词: 绿色;草地
如:Green was the predominant color in the forest.绿色是森林的主色调。
3、动词: 变绿
如:Our lawn grass does not green up until the middle of May.我们的草坪要到五月中旬才变绿。
用法:green的基本意思是“绿色”,是一种代表生命的颜色,还可指“绿色的衣服”“绿色蔬菜”或一片长满草的区域,即“草地,绿地”。green还可指“高尔夫球场上的球穴区”。
green通常用作不可数名词,当作“绿色蔬菜”解时用作可数名词,常用复数形式。
green用作形容词时的意思是“绿色的,青色的”,指事物呈现出绿色的状态。也可用来指某物还“没有成熟”,或人由于年轻而没有社会经验,即“未成熟的,无经验的,易受愚弄的”; 有时也可指某物是“未干的,潮的”。green引申可指“精力旺盛,充满青春活力”。
谢谢

热心网友 时间:2022-04-10 03:28

green
绿色的; 未熟的,青春的; 未成熟的; 主张保护环境的

热心网友 时间:2022-04-10 07:16

green的意思是绿色的,未成孰。

热心网友 时间:2022-04-10 11:21

绿色,大写的话是姓氏格林

热心网友 时间:2022-04-10 15:42

We are green 这里的green 是指保护环境的,也就是说,这个句子的翻译是我们应该保护环境。

热心网友 时间:2022-04-10 20:20

绿色的
请采纳
英文单词“green”是什么意思?

英文单词“green”意思是绿色,音标是[griːn]“green”的其他词性及解释:adj. 绿色的;青春的 n. 绿色;青春 vt. 使…变绿色 vi. 变绿色 n. (Green)人名;(英、意)格林;(瑞典、芬)格伦 相关词组:1、in the green 在年富力强时 2、on the green 在果岭上;在草地上 3、green ...

AiPPT好用吗?

随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲、导入文档内容”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包...

green是什么意思译

green作形容词时意思是:绿色的; 草绿色的; 长满青草的; 绿油油的; 青葱的; 未成熟的; 青的; 生的;作名词的意思是:绿色; 草绿色; 绿色蔬菜; 绿叶蔬菜; (尤指城镇或村庄中心的) 草地,草坪,公共绿地;作动词时的意思是:绿化; 使增强环境保护意识; 使善待环境。一、green读音 英 [ɡri?...

green是什么意思

green 英 [gri:n] 美 [ɡrin]adj.绿色的;未熟的,青春的;未成熟的;主张保护环境的 n.绿色蔬菜;绿色的衣服;植物 vi.绿化,使重视环境保护问题

green什么意思

green的意思:n.绿色;草坪;绿色蔬菜;草绿色 v.绿化;使增强环境保护意识;使善待环境 adj.绿色的;草绿色的;长满青草的;绿油油的 green的发音:美 [ɡrin] 英 [ɡriːn]比较级:greener 最高级:greenest 复数:greens 例句:1.Find out an single big head Feng, I lightly b...

green的意思是什么?

意思是:无色绿色的想法在疯狂地睡觉。重点词汇:green 英[ɡri:n]释义:adj.绿色的;青春的 n.绿色;青春 vt.使…变绿色 vi.变绿色 n.(Green)人名;(英、意)格林;(瑞典、芬)格伦 [复数:greens;第三人称单数:greens;现在分词:greening;过去式:greened;过去分词:greened;比较...

green是什么意思

1、green用作形容词时的意思是“绿色的,青色的”,指事物呈现出绿色的状态。也可用来指某物还“没有成熟”,或人由于年轻而没有社会经验,即“未成熟的,无经验的,易受愚弄的”;有时也可指某物是“未干的,潮的”。2、green引申可指“精力旺盛,充满青春活力”。3、green在表示“在?方面是...

green是什么意思译

green作形容词时的意思是绿色、草绿色、长满青草的、绿油油的、青葱的、未成熟的、青的、生的。作为名词,它指的是绿色、草绿色、绿色蔬菜、绿叶蔬菜、(尤指城镇或村庄中心的)草地、草坪、公共绿地。而作为动词,green的意思是绿化、增强环境保护意识、善待环境。1. Green is an adjective that ...

green是什么意思

1、根据词性不同,green的意思有:adj.绿色的; 未熟的,青春的; 未成熟的; 主张保护环境的;n.绿色蔬菜; 绿色的衣服; 植物;vi.绿化,使重视环境保护问题;2、词组搭配:green around the gills 或 green about the gills 面色苍白或不健康 复数:greens 比较级:greener 最高级:greenest 相关单词:...

green是什么意思

Green的意思是绿色。Green是一个英文词汇,其基本含义是绿色。它可以用来描述物体的颜色属性,比如树木、草地、叶子等的颜色。在各种语境中,green也可能有不同的含义和用法:1. 基本含义:green最直接的含义是绿色。例如,当我们说“The tree is green.”,我们就是在描述树的颜色属性。绿色是一种非常...

green是什么意思

Green,这个英文单词,发音为美音[gri:n]与英音[gri:n],含义丰富多样。其主要含义有绿色的、绿的、青葱的,形象描绘出自然界生机勃勃、充满活力的景象。同时,Green也是一个常见的英文姓氏,源自古英语,意指"绿色的",承载着历史的韵味与家族的传承。在英语词汇中,Green不仅是一个简单的颜色描述,更...

Green的所有意思 red是什么意思 green除了绿色还有什么意思 reen是什么意思 green的用法 grain和green的读音 Green翻译成人名 Mr Green怎么读英语 grass是什么意思
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...90千瓦星角起动.60千瓦小容量电机和照明.请问用多大的铝芯线合适... ...星、三角起动,需截面多大的主线和电机负荷线,最好有计公式 梦见有人不断说我是魂古命的人 手相有田字纹代表什么,会越来越富的女人手相 ...旁边有活水流出!同时还梦见一个道士给看手相说过一阵运气就会好,今... 王者荣耀新英雄影如何获得 王者新英雄影怎么获得 说话中气不足锻炼方法 ...里面的油,可以用吸油管子吸出来吗?小车,凯美瑞。不知道有防盗网吗... qq密码忘记我输入现在的qq密码为什么出现以前的qq号呢我想 平时健身时,怎样做深蹲才不会伤膝盖? 锻炼腿部力量,在深蹲时应该怎样保护膝盖? 如何深蹲,才能不伤膝盖? 在微商买的纪梵希口红可以去纪梵希专柜验真假吗? 智能手机怎样安装最新版本? 帮忙鉴定纪梵希散粉是不是真的!谢谢啦 智能手机如何微距拍摄? 淘宝上的纪梵希服装是真的吗? 纪梵希散粉真假问题 excel表格自动计算收益率 excel 怎么设置公式连乘,计算累计收益率? 纪梵希的化妆品盒上面的条码扫不出来,但是二维码能扫出来进去纪梵希官网,是不是假的? Excel收益率 怎样给智能手机安装软件 关于淘宝上纪梵希真假的问题` 求问几何平均收益率在excel中的函数公式是什么? 这是真的纪梵希吗? 第一次用智能手机,请问智能手机怎么安装软件? 如何用excel求两只股票的期望收益率 智能手机为什么不能安装微信 怎么蹲不伤膝盖? green怎么读 怎样进行深蹲锻炼科学又不伤身体? green的意思:绿;绿色? 在进行深蹲训练的时候,如何避免膝盖受伤? GREEN 英文怎么读 深蹲怎么做才能不伤膝盖? 英文单词“green”是什么意思? 深蹲太过伤膝盖不敢练,如何深蹲时避免膝关节疼痛? green是什么意思中文翻译名字 我有膝关节炎症,掌握什么样的徒手深蹲才能不伤膝盖? green的意思是什么? 英语,绿色“green”,怎么读? 膝关节砰砰响,就不要练深蹲,哪4招强化膝盖,深蹲不再受伤? 英语green是什么意思是什么意思 做哑铃深蹲时怎么样避免伤膝盖? Green怎么翻译 眼睛做近视手术恢复需要多少时间? 做深蹲蹲起运动。采取什么方法可以避免伤到膝盖组织? 眼睛做完激光一般多久可以完全恢复