PostgreSQL之扩展语言
文章平均质量分 57
涉及PostgreSQL数据库扩展语言的PL/Perl、PL/Python等的方方面面。
瀚高PG实验室
瀚高PG实验室(Highgo PG Lab)依托于瀚高DBA运维团队及瀚高数据库PG内核研发团队,旨在深入研究PostgreSQL技术、使用技巧、内核探秘、PG教学等,并进行分享。欢迎大家关注、交流。
展开
-
pg_bulkload
[highgo@hgdb ~]$ pg_config |grep CONFIGCONFIGURE = '--prefix=/opt/HighGo/db/hgdb4_enterprise' '--enable-nls=zh_CN zh_TW' '--with-perl' '--with-python' '--without-tcl' '--without-gssapi' '--without-p原创 2018-01-22 11:20:36 · 538 阅读 · 0 评论 -
pg_test_timing功能简析
pg_test_timingpg_test_timing是测量系统计时开销的工具,并确认系统时间永不倒退。收集时间数据速度慢的系统可能会导致EXPLAIN ANALYZE结果不准确。用法很简单:[highgo@Higtest ~]$ pg_test_timing -?Usage: pg_test_timing [-d DURATION]-d 指定持续时间,通常来讲,持续时间越长,准确度越高,更...原创 2018-02-26 14:38:49 · 652 阅读 · 0 评论 -
在模式上创建扩展
PostgreSQL扩展是向PostgreSQL添加功能的一种很有效的方式。尽管有大量的扩展可以被获取和使用,但是管理它们却是非常困难的。默认情况下,扩展会被加载进search_path上存在的第一个模式中。举个例子:图1从图1的结果可以看出,一共有34个函数被加载进了public模式。但这样会导致管理变得非常困难,特别是当多个扩展被加载进入同一个数据库中的时候。有一个解决办法是把每个扩展放到它自...原创 2018-02-12 14:23:18 · 357 阅读 · 0 评论 -
Postgresql 监控sql之 pg_stat_statements模块
一、pg_stat_statements模块简介pg_stat_statements模块提供一种方法追踪一个服务器所执行的所有 SQL 语句的执行统计信息,可以用于统计数据库的资源开销,分析TOP SQL。该模块必须通过在postgresql.conf的shared_preload_libraries中增加pg_stat_statements来载入,因为它需要额外的共享内存。这意味着增加或移除...原创 2018-03-17 19:15:37 · 27497 阅读 · 3 评论 -
什么是pglogical-功能优点原理与使用场景
pglogicalv2 - PostgreSQL的新一代逻辑复制!pglogical是一个完全作为PostgreSQL扩展实现的逻辑复制系统。完全集成,它不需要触发器或外部程序。这种物理复制的替代方法是使用发布/订阅模型复制数据以进行选择性复制的一种高效方法。pglogical 2有哪些新功能?pglogical 2.2版本带来了新功能,可以用于更多的使用案例,以及下面列出的几个错误修复和改进:...原创 2018-03-23 16:01:56 · 3987 阅读 · 0 评论 -
什么是Postgres-BDR
Postgres-BDRPostgreSQL的双向复制(Postgres-BDR或BDR)是PostgreSQL达到完整生产状态的第一个开源多主复制系统。BDR由2ndQuadrant开发,专门设计用于分布在不同地理位置的集群,使用高效异步逻辑复制,支持分布式数据库中2到48个节点以上的任何节点。具有地理分布的数据库的组织将理解复制的复杂性,以及实现高效和准确的数据副本的目标。与其他解决方案不同,...原创 2018-03-23 16:21:05 · 3333 阅读 · 0 评论 -
Postgresql 之 分页技术(二)
分页技术(一),已经证明limit-offset带来的性能下降,即使增加了order by 和索引,也同样性能下降的问题。稍后我将例子给证明。解决这个问题的方法是:排序+过滤条件分页创建测试表,插入1千万记录,并创建索引:highgo=# drop table testhyl;DROP TABLEhighgo=# create table testhyl(id serial,name var...原创 2018-03-27 09:22:15 · 1188 阅读 · 2 评论 -
PostgreSQL 之 with查询
WITH语句通常被称为通用表表达式(Common Table Expressions)或者CTEs。 WITH提供了一种方式来书写在一个大型查询中使用的辅助语句。 这些语句通常被称为公共表表达式或CTE(Common table expression) 它们可以被看成是定义只在一个查询中存在的临时表。 在WITH子句中的每一个辅助语句可以是一个SELECT、INSERT、UPDATE或DE...原创 2018-05-14 11:45:33 · 9865 阅读 · 1 评论 -
PostgresSQL基准测试工具之Pgbench
概要pgbench是一种在PostgreSQL上运行基准测试的简单程序。它可能在并发的数据库会话中一遍一遍地运行相同序列的 SQL 命令,并且计算平均事务率(每秒的事务数)。默认情况下,pgbench会测试一种基于 TPC-B 但是要更宽松的场景,其中在每个事务中涉及五个SELECT、UPDATE以及INSERT命令。通过编写自己的事务脚本文件很容易用来测试其他情况。初始...原创 2018-10-10 16:05:27 · 1377 阅读 · 0 评论 -
PostgreSQL中bloom的介绍(一)
Bloom 过滤器代表的是一组值。它的作用是检测一个元素是否可能属于集合,它可以允许有一些false positive,但是不允许存在false negative。也就是说,尽管某个元素不在集合中,测试也可能返回true。然而,如果元素在集合中,就不可能返回false。 创建在一组列中的Bloom索引可以被用来加速在这些列的子集上用AND相连的等式的查询。 例如:CREATE EXTENS...原创 2018-05-15 13:59:35 · 1519 阅读 · 0 评论 -
PostgreSQL中bloom的介绍(二)
接下来,我们测试一下使用bloom索引之后的效果。 首先,需要创建一些测试数据。所以,先新建一张表:test=# CREATE TABLE bloomtest(id serial, v1 int, v2 int, v3 int, v4 int, v5 int, v6 int);CREATE TABLE然后向表中插入一些随机值:test=# insert into bloomtest...原创 2018-05-15 14:29:58 · 663 阅读 · 0 评论 -
PostgreSQL中的hstore模块
之前已经介绍过hstore模块的作用和操作符。这次我们继续了解此模块的其他内容。hstore函数这里我们列举一些hstore模块提供的函数。函数 返回值 描述 例子 hstore(record) hstore 从一个记录或行中创建hstore 见图1 hstore(text[]) hstore 从数组中创建hstore hstore(text[], text[]) hstore ...原创 2018-03-19 16:24:05 · 4233 阅读 · 0 评论 -
seg模块
这个模块提供了一种数据类型seg,它用于表示线段或者浮点区间。seg可以表示区间端点中的不确定性,这使得它在表示实验测量的数据时特别有用。 进行几何学测量时,由于不确定性和随机性,测量值可能是表示特定条件的区间,例如一个温度范围区间。 如果按照我们的常识来说,这种数据存储为区间会比存储为一些数字对要更为方便。在进行了实际的操作之后,得到的结果也印证了这一点。 进一步讲,使用传统的numeri...原创 2018-04-24 09:39:44 · 1079 阅读 · 0 评论 -
PostgreSQL额外提供的模块之pg_buffercache
pg_buffercache模块提供了一种实时检测共享缓冲区的方法。这个模块提供了一个C函数:pg_buffercache_pages,它返回一个记录的集合和一个视图:pg_buffercache,它包装了这个函数来更方便的使用。默认情况下,公共访问会从这两者中撤回,来预防潜在的安全问题。pg_buffercache这个视图中各列定义的详细解释如下:名称描述bufferidID,范围是1到...原创 2018-03-27 16:01:37 · 1984 阅读 · 0 评论 -
PostgreSQL之 pgstattuple模块
pgstattuple模块提供多种函数来获得元组层的统计信息。pgstattuple(regclass)pgstattuple返回一个关系的物理长度、"死亡"元组的百分比以及其他信息。这可以帮助用户决定是否需要清理。参数是目标关系的名称(可以有选择地用模式限定)或者 OID。示例:testdb=# create extension pgstattuple;CREATE EXTENSIONte...原创 2018-03-08 21:50:18 · 1999 阅读 · 0 评论 -
auth_delay模块
auth_delay可以使服务器在报告认证失败之前短暂暂停一下,这样就能使对数据库密码的穷举攻击变得困难。但需要注意的是,它不会做任何事情来预防DoS攻击,而且甚至可能会加重这些攻击,这是因为在报告认证失败之前等待的进程仍然会消耗连接槽。 如果想要使用这个模块的功能,必须通过postgresql.conf文件中的shared_preload_libraries来导入。 auth_delay.m...原创 2018-05-15 12:56:07 · 2094 阅读 · 1 评论 -
PostgreSQL之 使用扩展Extension
PostgreSQL被设计为易于扩展。因此,加载到数据库中的扩展功能就可以像内置的特性一样运行。与源代码一起发布的contrib/ 目录包含一些扩展。扩展是独立开发的,比如PostGIS。甚至PostgreSQL复制解决方案也可以在外部开发。例如,Slony-I是一个受欢迎的主/备用复制解决方案,它是独立于核心项目开发的。PG源代码中包含的扩展列表参考:https://www.postgresql...原创 2018-03-08 21:45:35 · 22467 阅读 · 0 评论 -
获取表的ddl
作者:瀚高PG实验室(Highgo PG Lab)-- 张波PostgreSQL中没有像oracle一样获取表ddl的函数,下面提供两种方式获取表的ddl语句。功能比较简单仅实现普通表的ddl,如需其他类型的表或对象,还需要进行修改。直接使用SQL查询,语句如下with t as (select schema_name,table_name,string_agg(column_name||' '||column_type||' '||column_default_value ||' '||colum原创 2021-03-31 06:10:18 · 3779 阅读 · 0 评论