Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by Pg Ace
PG里常见的字段有索引但未使用索引的原因_ITPUB博客
对于一个系统而言,稳定性、性能、安全是很重要的几点。运维的一些工作也是围绕着这些去做。对于某些时候,业务层可能会向数据库层提出种种质疑:为什么数据库这么慢?为什么数据库挂了?为什么我这么用,SQL走不了索引?诸如此类。 其实对于了解数据库和运维的大家都知道,这些使用关系型数据库的应用系统,SQL语句的好坏会直接影响系统的性能,很多系统性能很差最后发现都是因为SQL写得很烂的缘故。 有时候可能一条SQL在业务设计之初就存在问题,每次跑的时候每次都走全表扫描,耗费大量的系统资源,亦或者在业务运行到现在的期间内数据量猛增,数据量导致SQL的运行结果远远大于原来的,导致业务受影响。甚至设计的一些SQL,他本身存在过多的复杂操作,各种聚合、连接加到一起,这一条SQL跑起来可能就会造成很大的资源占用,甚至严重导致数据库的内存溢出、数据库宕机等等。或者业务层并不了解各种索引的实际原理,并不能在合适的场景选择合适的索引,这可能导致,原本SQL查询对应的想要他走索引的字段,没走索引。从而影响性能。...
PG如何查看用户拥有的各类对象的操作权限_ITPUB博客
在PostgreSQL数据库平时会赋予很多的权限,对于这些权限是否真正赋予,并且对于各个对象,用户到底有着什么权限,有着不同的方式去验证,例如\dp+ , 查询视图,查询函数,或者使用extenson(PG_PERMISSIONS)等 一、元命令(\dp+) 通常可以使用\dp+ 列出用户,schema的默认权限。列出表、视图、序列的权限,但是它读起来比较不太方便。 postgres=# \dp+ Access privileges Schema | Name | Type | Access privileges | Column privileges | Policies --------+--------------------------+----------+-------------------------+-------------------+---------- public | a1 | view | xmaster=arwdDxt/xmaster+| | | | | chpt=r/xmaster | | public | all_permissions |...
常见的导致PG创建索引慢的原因_ITPUB博客
如果表的数据很多,索引建立在大表上的时候,会导致建索引的时间很慢。所以如果表的数据量很多,可以考虑重新设计表结构或拆分表。 可以考虑使用分区表,使用分区表来分割数据。这样在建立索引时,可以只对需要建立索引的分区进行操作,从而提高索引建立的速度。 不同类型的索引建立的速度可能会有所不同,因为存储的结构不一致。例如,B-tree索引通常比GiST索引建立得更快。不同的索引策略适用于不同的场景,选择合适的索引策略可以提高建索引的速度和效率。因此,可以考虑更改索引类型,以便更快地建立索引。 检查系统是否存在其他进程占用了大量的系统资源,如CPU、内存和磁盘IO等。可以使用top和vmstat,iostat等工具查看。 如果磁盘空间不足,可能会导致索引建立速度变慢。因此,可以检查磁盘空间是否充足,并清理不需要的文件。 如果并发连接数过高,可能会导致建索引的速度变慢。可以调整PG的最大并发连接数参数,以避免过多的连接影响建索引的性能。 在建立索引时,可以考虑禁用触发器和约束,以避免对建立索引的影响。完成索引建立后,再重新启用触发器和约束。 禁用触发器 ALTER TABLE...
PostgreSQL的idle in transaction连接状态
在平时查询pg_stat_activity这个视图的时候,每一行包含了一个进程的相关信息,包含当前正在执行的SQL,或者会话的状态等等,state字段表示当前进程的状态。在PostgreSQL数据库里,其实代码里总共定义了7种BackendState,但是最终给我们展现在pg_stat_activity里显示的只有6种,这个不显示的STATE_UNDEFINED是PostgreSQL中定义的一个连接状态。它表示客户端连接到服务器,但服务器无法确定连接的状态。 而其他正常几种能展现给我们的几种分别是: 1、Active(活动): 进程正在执行某个语句,处于活跃状态 2、Idle(空闲): 进程正在等待客户端的指令 3、idle in transaction(事务空闲):进程开启了事务,但当前没有执行任何语句 4、idle in transaction (aborted)(事务空闲-退出):进程开启了事务,但当前没有执行任何语句。并且事务中的一个语句报错退出。(一般整个事物回滚后的状态) 除了事务中声明一个错误外,其余情况与idle in transaction相同...
[译]Postgres WAL 文件和序列号
Postgres预写日志(Write Ahead Log, WAL)是数据库的一个功能组件。WAL使许多关键功能成为可能,比如时间点恢复备份、从事件中恢复、流复制等等。有时候,深入数据库的人员需要直接使用WAL文件进行诊断或恢复。 最近在与Crunchy Data的一位客户合作时,我遇到了一种情况,在这种情况下,理解名称和序列号非常重要。在与几个致力于Postgres项目的同事一起工作时,我收集了一些关于WAL内部细节的笔记。今天的目标是研究WAL的LSN和命名约定,以帮助用户更好地理解WAL文件。 PostgreSQL中的事务创建WAL记录,这些记录最终被附加到WAL日志(文件)中。插入发生的位置称为日志序列号(LSN)。可以比较LSN(类型为 pg_lsn)的值,以确定在两个不同偏移量(以字节为单位)之间生成的WAL的数量。当以这种方式使用时,重要的是要知道,如果使用多个WAL日志,则计算假设使用了完整的WAL段(16MB)。和这里使用的计算类似的计算通常被用于确定replica的延迟。...
PostgreSQL-16新特性之普通用户的保留连接个数(reserved_connections)_ITPUB博客
PostgreSQL数据库为了保证在高并发,高连接数情况下某些用户能够正常连接到数据库里,设立了几个用户连接的保留个数。 本文介绍了PostgreSQL16版本前为超级用户保留的连接数(superuser_reserved_connections)以及PostgreSQL16版本新增的为普通用户的保留的连接数(reserved_connections)。 PostgreSQL数据库里最大的连接数由max_connections控制。通常情况下,用户可以使用的连接数不可以超过这个设置。 最初对于数据库而言,如果会话的释放机制不够合理,没有采用连接池,又恰巧不巧地赶上了业务高峰期,大量并发的情形,是比较棘手的。因为就算我想暂时释放掉部分连接。可能也没有了空余的连接数供我们连接到数据库里进行这番操作。 因此PostgreSQL数据库在7.4版本就为数据库增加了一个superuser_reserved_connections参数,指定为超级用户保留的连接数。这样,当遇到了大量并发连接,甚至不停有新连接产生的时候。我们可以使用超级用户通过这几个保留的连接,进到数据库里,进行一些分析和处理。...
PostgreSQL-16新特性之类型转换测试功能_ITPUB博客
在PostgreSQL里,"::" 符号其实是一个强制类型转换符,作用等同于CAST。 在很多情况下,我们需要将一种数据类型的值转换为另一种数据类型。那么我们就可以使用它来进行转换。 "::"的语法格式为: expression::type 举个例子为: postgres=# select '100'::integer,'100'::varchar; int4 | varchar ------+--------- 100 | 100 (1 row) CAST的语法格式为: CAST ( expression AS target_type ); 举个例子为: postgres=# select CAST('100' as integer),CAST('100' as varchar); int4 | varchar ------+--------- 100 | 100 (1 row) 除此之外类型转换可以使用一些to_开头的格式化函数进行转换,例如to_char,把数字转换成字符串等等。 postgres=# select to_char(125.8,'999D99MMM');...
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with Pg
Contact Pg, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack