1. greenPlum数据库是一种shared nothing的分析性MPP数据库

shared nothing(SN):是一种分布式计算架构,每一个节点都是独立的,自给的,在系统中不存在单点竞争。更明确地说,没有节点共享存储和硬盘。

MPP: 大规模并行出处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。

        2.greenplum的特征

      2.1 shard-nothing

   2.2 master-Segment结构

       3.greenPlum数据仓库底层采用的是postgresql数据库,它是怎样运行多个数据库实例并且使之可以相互访问的?

    Greenplum 中的核心组件interconnect 实现多个postgreSql实例高效协同和并行计算

       4.green可以实现的功能    

           4.1 外部表并行数据加载

          4.2 可更新数据压缩表

          4.3 行、列混合存储

          4.4 数据表多级分区

          4.5 Bitmap索引

         4.6 Hadoop外部表

         4.7 Gptext 全文索引

         4.8 并行查询计划优化器、orca优化器

         4.9 Primary/Mirror 镜像保护机制

         4.10 资源队列管理

         4.11 Web / Brower监控

     5.greenplum不擅长做什么?

      5.1 大量的小问题高并发请求     

      5.2 不擅长OLTP交易系统,高频的交易型小规模数据插入、修改、删除

 6.Master

    6.1 Master保存着全局的系统目录,全局系统目录氏一族系统表,包含着greenPlum数据库系统本身的元数据,不包含任何用户数据。

            6.2  验证客户端连接->>处理Sql命令—>>分配任务到每个Segment –>> 协调每个Segment返回的结果à>将结果返回给客户端

    6.3 可以使用WAL预写日志进行主/备用主镜像

    7.Segment

      7.1  Segment是GreenPlum存储用户数据的单位

      7.2  当进行查询操作时,Master会在每个Segment创建查询的进程,处理查询工作。

      7.3  Segment运行在(Segment主机)服务器上,一个Segment主机一般可以执行2-8个Segment,依赖与Segment主机的CPU核数、内存、存储、网络接口、工作负载的情况。

      7.4 如何使GreenPlum获取最佳性能? 将数据和工作负载均匀的分布在具有同等功能的Segment中,这样会使所有的段同时开始处理任务并同时完成任务。

 8. 使用greenPlum自带的检测工具Gpcheckperf检测硬件性能

   用户必须使用-d选项指定要测试的文件系统。下面的命令在subnet_1_hosts文件中列出的主机上测试磁盘I/O和内存带宽.

gpcheckperf –f subnet_1_hosts –d /data1 –d /data2 –r ds

     -r选项选择要运行的测试:磁盘I/O(d)、内存带宽(s)、网络并行结对(N)、网络串行结对测试(n)、网络全矩阵测试(M)。每次执行只能选择一种网络模式。

   9.使用GpState检测GreenPlum系统的状态

gpstate –Q     ##得到一个Segment的列表
gpstate –s      ##得到系统的详细状态信息

psql常用命令:

#连接psql
Psql –U gpadmin –h gpserver –p 5432 postgres
psql -U  用户名 -h ip地址 -p 端口号 数据库名

  

\ l:列出所有数据库
\ l +:列出所有数据库并显示扩展信息
\ c  “数据库”:连接到“数据库”    \c ‘databaseName’
\ timing:打开或关闭客户端时序
\ dt:列出所有表格
\ dt +:列出所有表格并显示扩展信息
\ dt public。*:列出公共模式中的所有表
\ dn:列出所有模式
\ df:列出所有功能
\ x:在基于行和列的输出之间切换(非常宽的表格很方便)
\du: 显示角色列表
\q:退出psql
\d tablename:列出表格字段的所有信息

11.怎样确定表是否分布不均匀

#对于普通表
Select gp_segment_id,count(1) from test01 group by 1 order by 1;

  

#对于appendOnly表  通过get_ao_distribution函数获取数据分布

Select * from get_ao_distribution(‘test01’) order by 1;