购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.17 其他类型

PostgreSQL中还有一些数据类型没有包括在前面介绍的类型中,本节来介绍这些数据类型。

5.17.1 UUID类型

UUID(Universally Unique Identifier)用于存储一个UUID。UUID定义在RFC 4122和ISO/IEC 9834-8:2005中。它是一个128bit的数字。

PostgreSQL中提供了UUID类型的比较运算符,示例如下:


osdba=# select uuid '1b34eaba-0d59-11e4-bf51-dc85de4d74f3' < uuid '1e0e95b0-0d59-11e4-bf51-dc85de4d74f3';
  ?column? 
----------
  t
(1 row)

虽然PostgreSQL核心源代码中没有提供产生UUID的函数,但contrib下的uuid-ossp模块提供了产生UUID的函数。具体可参见官方手册: http://www.postgresql.org/docs/9.4/static/uuid-ossp.html

5.17.2 pg_lsn类型

pg_lsn类型是PostgreSQL9.4以上版本提供的一种表示LSN(Log Sequence Number)的数据类型。LSN表示WAL日志的位置。一些记录WAL日志信息的系统表中某些字段的类型就是pg_lsn类型,示例如下:


osdba=# \d pg_stat_replication
          View "pg_catalog.pg_stat_replication"
      Column      |           Type           | Modifiers 
------------------+--------------------------+-----------
 pid              | integer                  | 
 usesysid         | oid                      | 
 usename          | name                     | 
 application_name | text                     | 
 client_addr      | inet                     | 
 client_hostname  | text                     | 
 client_port      | integer                  | 
 backend_start    | timestamp with time zone | 
 backend_xmin     | xid                      | 
 state            | text                     | 
 sent_location    | pg_lsn                   | 
 write_location   | pg_lsn                   | 
 flush_location    | pg_lsn                   | 
 replay_location  | pg_lsn                   | 
 sync_priority    | integer                  | 
 sync_state       | text                     | 

osdba=# \d pg_replication_slots
View "pg_catalog.pg_replication_slots"
    Column    |  Type   | Modifiers 
--------------+---------+-----------
 slot_name    | name    | 
 plugin       | name    | 
 slot_type    | text    | 
 datoid       | oid     | 
 database     | name    | 
 active       | boolean | 
 xmin         | xid     | 
 catalog_xmin | xid     | 
 restart_lsn  | pg_lsn  |

在上面的示例中,pg_stat_replication的“sent_location”“write_location”等字段的类型就是pg_lsn类型,而pg_replication_slots视图中的“restart_lsn”字段也是pg_lsn类型。

在数据库内部,LSN是一个64bit的大整数,其输出类似如下格式:


16/B374D848

pg_lsn类型可以使用基本的比较运算符,如“=”“>”“<”等,两个pg_lsn的值可以相减,此时使用“-”运算符,相减所得的结果是两个WAL日志相差的字节数。 kbM43yykfU91qsSbDMuC/scpMPjn+MADHiBUfEC8K+1KyzguQdvtFAqecBCVgzUJ

点击中间区域
呼出菜单
上一章
目录
下一章
×