PostgreSQL DBA(88) - Linux(CPU使用率 vs 平均负载)
Linux已成为事实上企业级服务器OS的首选,PostgreSQL在Linux上的”装机量”不在少数,在对数据库的性能进行优化和调整时,同时也必须考虑到Linux的优化和调整.本节简单介绍了Linux性能监控中的两个容易混淆的概念:CPU使用率和平均负载.日常使用中最为常见的性能监控工是top,下面
PostgreSQL 源码解读(217)- A Faster, Lightweight Trigger Function in C
本节介绍了如何使用C语言实现性能更高的轻量级触发器.主要内容翻译自AFaster,LightweightTriggerFunctioninCforPostgreSQL一、实现步骤已在CentOs7.x上使用源码安装了PG,当前用户为PG实例的owner(pg12),已配置好环境变量,可以运行pg_c
Oracle vs PostgreSQL Develop(15) - DISTINCT ON
平时在客户业务的数据分析中,经常有这么一种需求,那就是希望得到某个组里面某些字段最大或最小的记录.比如雇员表: [local]:5432 pg12@testdb=# \d employee Table "public.employee" Column | Type | Collation | Nulla
Oracle vs PostgreSQL Develop(14) - 分析函数KEEP DENSE_RANK
在Oracle中聚合函数KEEP DENSE_RANK用于获取在某个列分组的情况下按某个字段排序得到的聚合函数(如MAX/MIN等)值.
PostgreSQL DBA(81) - Locks(FOR UPDATE SKIP LOCKED)
本节介绍了PostgreSQL中的FOR UPDATE SKIP LOCKED,通过该Option可以提高某些场景下的并发性能.
PostgreSQL DBA(80) - Object Identifier Types
本节介绍了PostgreSQL的OID类型,官方文档的定义是:Objectidentifiers(OIDs)areusedinternallybyPostgreSQLasprimarykeysforvarioussystemtables.Type>oidrepesentsanobjectidenti
PostgreSQL DBA(78) - Locks(When Postgres blocks 7 tips for dealing with locks)
本节介绍了APP在涉及locks时需要注意的地方.测试数据:[local]:5432pg12@testdb=#droptableifexiststbl;DROPTABLETime:36.136ms[local]:5432pg12@testdb=#createtabletbl(idint,c1varc
PostgreSQL DBA(76) - Locks(Advisory Locks):What You Should Know
本文简单介绍了PostgreSQLLocks(AdvisoryLocks)的基础知识,原文详见PostgresLockingRevealed,有所删减和调整.PostgreSQL把锁分为三类,table-level,row-levelandadvisorylocks.Table和Row级锁可以是显式
PostgreSQL DBA(75) - Locks(locktype:transactionid):What You Should Know
本文简单介绍了PostgreSQL Locks(locktype:transactionid)的基础知识.PostgreSQL系统表pg_locks中的locktype,有一种称为transactionid的锁类型,PG文档的说法是: Every transaction holds an exclusive lock on its virtual transaction ID for its
PostgreSQL DBA(74) - Locks(Row-Level):What You Should Know
本文简单介绍了PostgreSQL Locks(Row-Level)的基础知识,原文详见Postgres Locking Revealed,有所删减和调整. PostgreSQL把锁分为三类,table-level, row-level and advisory locks.Table和Row级锁可以是显式或隐式锁,advisory locks通常是显式锁.显式锁在显式用户请求时获得,而隐式锁则
PostgreSQL DBA(72) - Extension(pgplsql_check)
PostgreSQL在创建存储过程/函数时没有执行语义分析/校验,可以用plpgsql_check这个插件进行检查,除此之外,该插件还能发现函数依赖和进行函数性能分析. 本节简单介绍该extension的安装和使用。
PostgreSQL DBA(71) - Locks(Table-Level):What You Should Know
本文简单介绍了PostgreSQLLocks(Table-Level)的基础知识,原文详见PostgresLockingRevealed,有所删减和调整.PostgreSQL把锁分为三类,table-level,row-levelandadvisorylocks.Table和Row级锁可以是显式或隐
PostgreSQL 源码解读(215)- 查询#122(varstrfastcmp_locale)
本节介绍了PostgreSQL在指定执行排序规则collate时的实现逻辑.在指定collate为zh_CN时,排序规则与默认的C大不一致 [local]:5432 pg12@testdb=# SELECT name FROM unnest(ARRAY['MYNAME', 'my-image.jpg', 'my-third-image.jpg']) name ORDER BY name coll
PostgreSQL DBA(69) - Postgres tips for the average and power user
下面是一些有用的tips: In psql, tag your queries and use Ctrl+R [local]:5432 pg12@testdb=# select * from t1 limit 1; id | c1 | c2 ----+----+---- 4 | 4 | 4 (1 row) Time: 1.872 ms [local]:5432 pg
PostgreSQL DBA(68) - 使用DBLink实现自治事务
由于PostgreSQL没有提供类似Oracle的自治事务控制功能,本节介绍了如何使用dblink实现简单的自治事务控制.
Oracle vs PostgreSQL DBA(13)- 拆分(split)分区
直至12版本,PostgreSQL仍没有提供直接拆分分区的功能,暂时只能通过detach&attach实现,相对于Oracle的split支持,PG显得比较的simple&naive.
PostgreSQL DBA(65) - checkpoint_completion_target参数解析
本文介绍了checkpoint_completion_target参数对checkpoint调度的影响.PostgreSQL对checkpoint过程的调度,与数据库在运行过程中产生日志的大小和时间两个维度相关.
PostgreSQL 源码解读(214)- 后台进程#13(checkpointer-IsCheckpointOnSchedule)
本节介绍了checkpoint中用于控制checkpoint刷盘频率的函数:IsCheckpointOnSchedule.
PostgreSQL DBA(64) - Extension(pg_qualstats)
pg_qualstats是PostgreSQL的一个extension,用于统计WHERE/JOIN语句中出现的谓词。 pg_qualstats is a PostgreSQL extension keeping statistics on predicates found in WHERE statements and JOIN clauses.This is useful if you
PostgreSQL DBA(63) - Extension(pg_stat_statements)
pg_stat_statements提供了一种跟踪所有SQL语句的手段。 进入pg_stat_statements目录,执行make/make install [pg12@localhost pg_stat_statements]$ ls expected pg_stat_statements--1.4--1.5.sql pg_stat_s