12.5 创建表和发送查询

介绍了Postgres-XC以及其底层的思想之后,是时候创建我们的第一个表,看看集群将如何表现。下面的例子演示了一个简单的表。将使用id列的哈希键来分布它:

test=# CREATE TABLE t_test (id int4)

DISTRIBUTE BY HASH (id);

CREATE TABLE

test=# INSERT INTO t_test

SELECT * FROM generate_series(1, 1000);

INSERT 0 1000

一旦表被创建,我们可以给它添加数据。完成后,我们可以检查是否数据已经被正确地写入到集群中:

test=# SELECT count(*) FROM t_test;

count

-------

1000

(1 row)

不奇怪,我们在我们的表中得到了1000条数据。

这里有趣的事情是查看数据是如何被数据库引擎返回的。让我们来看看我们的查询的执行计划:

test=# explain (VERBOSE TRUE, ANALYZE TRUE,

NODES true, NUM_NODES true)

SELECT count(*) FROM t_test;

QUERY PLAN

-------------------------------------------------------

Aggregate (cost=2.50..2.51 rows=1 width=0)

(actual time=5.967..5.970 rows=1 loops=1)

Output: pg_catalog.count(*)

-> Materialize (cost=0.00..0.00 rows=0 width=0)

(actual time=5.840..5.940 rows=3 loops=1)

Output: (count(*))

->Data Node Scan (primary node count=0,

node count=3) on

"__REMOTE_GROUP_QUERY__"

(cost=0.00..0.00 rows=1000 width=0)

(actual time=5.833..5.915 rows=3 loops=1)

Output: count(*)

Node/s: node2, node3, node4

Remote query: SELECT count(*) FROM

(SELECT id FROM ONLY t_test

WHERE true) group_1

Total runtime: 6.033 ms

(9 rows)

PostgreSQL将执行一个所谓的数据节点扫描。这意味着PostgreSQL将从集群中所有相关的节点收集数据。如果您仔细观察,您可以看到,哪些查询将被推到集群内部的这些节点。重要的是,该计总数已经传送到远程节点。所有这些总数来自我们的四个将被折合成一个单一总数的节点。这种方案比简单的本地查询要复杂的多,但是,随着数据量的增长,它会是非常有益的,因为每个节点将只执行操作的一个子集。事实上,当许多东西并行执行的时候,每个节点执行操作的一个子集特别地有用。

Postgres-XC优化器可以在许多情况下把操作推到数据节点,这是很好的表现。但是,您还是应该密切关注您的执行计划,以确保您有合理的计划。

PostgreSQL Replication之第十二章 与Postgres-XC一起工作(5)的更多相关文章

  1. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(7)

    12.7 处理故障转移和删除节点 在本节中,我们将看看故障切换如何处理.我们还将看看如何使用安全可靠的方法添加节点到Postgres-XC设置以及如何从Postgres-XC设置删除节点. 12.7. ...

  2. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(4)

    12.4 性能优化 Postgres-XC不是一个奇特的PostgreSQL版本,而是一个真正的分布式系统.这意味这,您不能只存储数据,希望事情超出服务器之外的快速,高效.如果您想优化速度,思考数据是 ...

  3. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(3)

    12.3 配置一个简单的集群 在本章中,我们要建立一个由三个数据节点组成的集群.一个协调节点,以及管理集群的全局事务管理节点.对于每个组件,我们必须创建一个目录: hs@vm:~/data$ ls - ...

  4. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(1)

    在本章中,我们希望将我们的注意力集中在写可扩展,多主,同步,对称和PostgreSQL的称为Postgres-XC(PostgreSQL eXtensible Cluster)的透明复制方案.该项目的 ...

  5. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(2)

    12.2安装 Postgres-XC 可以从 http://postgres-xc.sourceforge.net/下载Postgres-XC.对于本书,我们使用1.0.3版本的Postgres-XC ...

  6. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(6)

    12.6 添加节点 Postgres-XC允许您在那个过程中的任何一个时间点添加新的服务器到计划中.所有您需要做的是按照我们之前演示的设置一个节点,并在 控制器上调用CREATE NODE.然后,该系 ...

  7. PostgreSQL Replication之第十四章 扩展与BDR

    在这一章中,将向您介绍一个全新的技术,成为BDR.双向复制(BDR),在PostgreSQL的世界里,它绝对是一颗冉冉升起的新星.在不久的将来,许多新的东西将会被看到,并且人们可以期待一个蓬勃发展的项 ...

  8. PostgreSQL Replication之第十五章 与Walbouncer 一起工作

    与Walbouncer 一起工作 在本书的最后一章,将引导您通向2014年发布的一个工具,称为walbouncer.本书中的大多数技巧说明了如何复制整个数据库实例,如何分片,等等.在最后一章,是关于w ...

  9. PRML读书会第十二章 Continuous Latent Variables(PCA,Principal Component Analysis,PPCA,核PCA,Autoencoder,非线性流形)

    主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:00:49 我今天讲PRML的第十二章,连续隐变量.既然有连续隐变量,一定也有离散隐变量,那么离散隐变量是 ...

随机推荐

  1. SQL搜索下划线,like中不能匹配下划线的问题

    最近在检测天气预报15天查询网 站(http://tqybw.net)时的URL时,发现页面中有很些404页,分析发现,是请求地址的能参数中多了下划线“_”,而rewrite规 则中并没有配这样的规则 ...

  2. Flink - DataStream

    先看例子, final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); D ...

  3. Off-heap Memory in Apache Flink and the curious JIT compiler

    https://flink.apache.org/news/2015/09/16/off-heap-memory.html   Running data-intensive code in the J ...

  4. scandir 使用示例

    int filter_fn(const struct dirent * ent) {     if (ent->d_type != DT_REG)         return 0;     r ...

  5. Qt 之 自定义按钮 在鼠标 悬浮、按下、松开后的效果(全部通过QSS实现)

    http://blog.csdn.net/goforwardtostep/article/details/53464925

  6. Dynamics AX Read OLEDB

    static System.Data.DataTable getOLEDB_Record(str _dbPath,str _query) { System.Data.OleDb.OleDbConnec ...

  7. 如何由新特性跳转到App首页

    前一段时间,一个哥们问我怎么跳转. 1.首先,要获取到当前的window,因为是在window层面上显示,所以,在window层面上进行push. 2.参照上面一条. // 显示状态栏 UIAppli ...

  8. TortoiseGit 的使用

    日常用法 (1) 创建新库 在文件夹中按右键, 选择Git Create repository here 就可以创建库了. 在出现的窗口中, 不勾选选项, 直接按OK 在目录中就会出现一个名为.git ...

  9. LeetCode Binary Tree Upside Down

    原题链接在这里:https://leetcode.com/problems/binary-tree-upside-down/ Given a binary tree where all the rig ...

  10. saltstack之(六)配置管理state

    配置管理是saltstack工具最重要的模块之一,也是学习saltstack之后使用最多的一个功能.可以轻松实现上百台上千台甚至上万台服务器的管理工作. 1.使用state模块进行配置管理,编写sls ...