以前学习postgresql的笔记

create table 消耗 OID

  • 如create table my_test_table, 他本身会消耗一个

  • 会在pg_type中插入两条记录_my_test_table和my_test_table会消耗掉两个oid

  • 如果该表需要toast会生成一个改变的toast表和toast index表消耗另外两个,查看过程如下:

  • create table my_test_table(a int, b char(8192));

  • select oid, relname from pg_class where relname='my_test_table';

  • -- oid = 16384

  • select oid, relname from pg_class where relname like '%16384%';

  • select typname, oid from pg_type where typname like '%my_test_table';

OID同步过程

OID同步原因:当创建表、视图、函数等对象时,对象需要分配新的OID。创建对象的OID全

局唯一,因此要在所有的coordinator和datanode上获取一个最大的OID。以create table为例,

具体流程如下:

1)首先和所有的dn及除自己以外的co建立连接。

2)向所有建立连接的节点发送获取OID请求,收到请求的节点,把本节点最大的OID发给coordinator。

3)coordinator节点收到其他几点发来的oid,选一个最大的oid,然后调用SetNextAssignObjectId

函数,使当前co节点下一个要分配的OID为集群中最大的OID。

4)然后才执行create语句,结构体CreateStmt中成员TableOidInfo用来存储获取的最大的

OID,当前coordiator把查询计划下发到其它节点,其它节点获取到最大OID后调用函数

heap_create_with_catalog,在自己节点上创建表

OID同步涉及到的系统表

pg_class

pg_namespace --create schema

pg_constraint

pg_operator

pg_ts_parser

pg_ts_dict

pg_ts_template

pg_ts_config

pg_collation

pg_am

pg_extension

pg_foreign_data_wrapper

pg_foreign_server

pg_user_mapping

pg_type

pg_enum

pg_proc

pg_rewrite

pg_trigger

pg_language

pg_conversion

pg_cast

pg_opfamily

pg_opclass

pg_tablespace

OID同步去除

当前实现可能存在问题是,当有节点或所有节点的OID回绕了,创建对象非常有可能失败。OID同步去除参考

PG-XL的做法,在查询计划中发送对象名,到节点上再转成本地OID。

笔记 postgresql oid同步的更多相关文章

  1. 运维笔记--postgresql占用CPU问题定位

    运维笔记--postgresql占用CPU问题定位 场景描述: 业务系统访问变慢,登陆服务器查看系统负载并不高,然后查看占用CPU较高的进程,发现是连接数据库的几个进程占用系统资源较多. 处理方式: ...

  2. Linux内核设计笔记10——内核同步

    Linux内核同步笔记 几个基本概念 - 临界区(critical region):访问和操作共享数据的代码段: - 原子操作:操作在执行中不被打断,要么不执行,要么执行完: - 竞争条件: 两个线程 ...

  3. 配置ogg从Oracle到PostgreSQL的同步复制json数据

    标签:goldengate postgresql oracle json 测试环境说明 Oracle:Windows 8.1 + Oracle 12.2.0.1.0 + GoldenGate 12.3 ...

  4. PostgreSQL的同步级别与MySQL的半同步after_sync比较

    MySQL的半同步中通过binlog进行流复制,同步级别和PostgreSQL对比可以发现: PostgreSQL                MySQL off local            ...

  5. postgresql主从同步配置

    前言 不久前,公司的一台物理机器硬件坏了,导致运行在其上的虚拟机都挂了.很不凑巧的是,我负责的那台虚拟机的系统盘坏了(ps:感觉老天在玩我),导致里面的数据永远的离我而去(ps:当时我的内心是崩溃的) ...

  6. java笔记--关于线程同步(7种同步方式)

    关于线程同步(7种方式) --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3897440.html"谢谢-- 为何要使用同步? ...

  7. java笔记--关于线程同步(5种同步方式)【转】

    为何要使用同步?     java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),      将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完 ...

  8. ASP.NET MVC5学习笔记之Controller同步执行架构分析

    在开始之前,声明一下,由于ASP.NET MVC5正式发布了,后面的分析将基于ASP.NET MVC5最新的源代码.在前面的内容我们分析了怎样根据路由信息来确定Controller的类型,并最终生成C ...

  9. Android(java)学习笔记68:同步代码块 和 同步方法 的应用

    1. 同步代码块 和 同步方法 代码示例: (1)目标类,如下: package cn.himi.text; public class SellTicket implements Runnable { ...

随机推荐

  1. Oracle转移user表空间位置

    1:登录sqlplus sqlplus /nolog conn sys/bcc@gis as sysdba 2:修改表空间位offline alter tablespace users offline ...

  2. 轻奢当道业绩逆势增长 Kate Spade联手韩国衣恋开拓中国市场_商场报道_中国时尚品牌网

    轻奢当道业绩逆势增长 Kate Spade联手韩国衣恋开拓中国市场_商场报道_中国时尚品牌网 轻奢当道业绩逆势增长 Kate Spade联手韩国衣恋开拓中国市场

  3. jQuery $.each用法比较详细了

    以下内容非原创,来自百度文库http://wenku.baidu.com/view/4796b6145f0e7cd18425368e.html 通过它,你可以遍历对象.数组的属性值并进行处理. 使用说 ...

  4. 2014 Web开发趋势

    本文翻译自:http://www.pixelstech.net/article/1401629232-Web-design-trends-for-2014 如今,已然到了Web横行的时代.越来越多的资 ...

  5. mac电脑批量解压android apk文件图形化工具--apkDecode

    mac电脑apk文件解压软件,简单的用图形界面将apktools包装了下,使用起来非常简单,可以将apk文件批量解压缩,方便大家查看一些东东,仅供学习目的. 使用步骤如下: 1 下载apkDecode ...

  6. iOS 使用Method Swizzling隐藏Status Bar

    在iOS 6中,隐藏Status Bar很的简单. // iOS 6及曾经,隐藏状态栏 [[UIApplication sharedApplication] setStatusBarHidden:YE ...

  7. JavaScript之面向对象学习二(原型属性对象与in操作符)获取对象中所有属性的方法

    1.原型属性对象于in操作符之in单独使用 有两种方式使用in操作符:单独使用和在for-in循环中使用.在单独使用中,代码如下: function Person(){ } Person.protot ...

  8. SQL学习之汇总数据之聚集函数

    一. 1.我们经常需要汇总数据而不用把他们实际检索出来,为此SQL提供了专门的函数,以便于分析数据和报表生成,这些函数的功能有: (1)确定表中行数(或者满足单个条件或多个条件或包含某个特定值的行数) ...

  9. 二、获取AccessToken

    二.获取AccessToken 1.官方文档: access_token是微信官方公众号调用接口的全局唯一票据,开发者调用任何接口都需要使用access_token,由于access_token有效期 ...

  10. VS2010 打包问题汇总

    问题1:打包时:应将msadox28.tlb排除 ,受到windows系统文件保护 解决方案:文件选项上,选择排除即可. 问题2:路径有文件,生成报错,提示找不到文件或文件被锁定. 解决方案:文件被锁 ...