PostgreSQL/MogDB/openGauss怎样获取表上依赖于该表的视图
一、实现语句postgres=# select relnamespace,relname,relkind from pg_class where oid in(  
PostgreSQL-14版本snapshot的几点优化
最近在分析PostgreSQL-14版本性能提升的时候,关注到了Snapshots的这一部分。发现在PostgreSQL-14版本,连续合入了好几个和Snapshots相关的patch。并且,Andres Freund也通过这些改进显著减少了已确定的快照可扩展性瓶颈,从而改进了Postgres处理大量连接的问题,因为在连接数很高时计算一个快照的代价是很昂贵的。(对于分析连接可扩展性的局限性可以参考
PostgreSQL的shared_buffers和系统OS cache的关系
一、与ORACLE和MySQL的区别在使用PostgreSQL要设置shared_buffers的大小的时候,我们通常的建议值是操作系统内存的25%,过大或者过小的值都会影响数据库的性能。此时我们有时候会产生一个疑问,为什么类似的参数,ORACLE和MYSQL都分配了操作系统大部分内存,例如ORACLE的sga通常设置为物理内存的80%,或者MySQL的innodb_buffer_pool_siz
Python使用psycopg2三方库操作PostgreSQL的数据
psycopg2,是Python语言的PostgreSQL数据库接口,它的主要优势在于完全支持Python DB API 2.0,以及安全的多线程支持。它适用于随时创建、销毁大量游标的、和产生大量并发INSERT、UPDATE操作的多线程数据库应用。本文简单介绍了使用psycopg2对PostgreSQL增删改查的基本操作,供参考。首先,要安装python,pip以及psycopg2。[xmast
Python的configparser模块读取.ini文件内容并输出
configparser是 Pyhton 标准库中用来解析配置文件的模块,并且内置方法和字典非常接近。Python2.x 中名为 ConfigParser,3.x 已更名小写。下文通过使用python的configparser模块实现解析.ini配置文件并输出的功能。1.编辑.ini文件[xmaster@mogdb-kernel-0005 python]$ cat t
PostgreSQL数据目录下的postmaster.pid详解
在我们启动PostgreSQL数据库的时候,偶尔会遇到如下的打印信息,它提示我们锁文件 “postmaster.pid"存在,并让我们检查是否以”/opt/ysl_pg14/data"为数据目录的已经启动了postmaster进程。那么这个 "postmaster.pid"究竟是做什么的?以及它的内容是如何呢?[xmaster@mogdb-kernel-00
PostgreSQL复制槽相关机制在各版本调整
提到PostgreSQL流复制和逻辑复制这两种复制方式,不得不想到的一个东西,就是复制槽(Replication Slot)。复制槽在PostgreSQL 9.4版本中被引入,引入之初是为了防止备库需要的WAL日志在主库被删除,确保主库在所有的备库收到wal之前不会移除它们,主库会会根据备库返回的信息确认哪些WAL已不再需要,才能进行清理。Replication Slot能够确保在主备断连后主库的
从Oracle的SQL_ID到PG14引入内核的QUERY_ID
对于习惯了ORACLE运维的DBA们,在进行SQL优化以及问题排查的时候,不可避免地会用到SQL_ID,从ORACLE到PostgreSQL过渡的时候,可能在分析问题的时候第一反应可能还是想获取到对应SQL的SQL_ID,然后根据SQL_ID去获取执行计划从而进行分析。而PostgreSQL与ORACLE类似的SQL_ID功能,是PostgreSQL-14版本从pg_stat_statements
PostgreSQL的 \watch命令
在Linux环境需要以一定频率去查看一个结果的时候,我们可能会用到watch命令,例如watch -n 1 date,watch -n 1 ls这种用法,每一秒执行一次并查看其结果。而在PostgreSQL里,我们先执行一个SQL,然后通过\watch 跟上秒数,就可以实现类似于Linux系统本身的watch命令。postgres=# select now(); &
PostgreSQL共享内存里的内容(initCommunication)
共享内存创建在InternalIpcMemoryCreate函数中,底层调用 shmget 和 shmat 来映射共享文件,一般不指定共享文件位置,由操作系统直接提供。创建后存在 ShmemSegHdr 变量中。
PostgreSQL15-beta1版本系统表、系统视图、等待事件变化
系统表变化表名更改方式视图描述pg_parameter_acl新增一个系统表,记录一个或多个角色被授权的配置参数pg_publication_namespace新增记录数据库中模式和发布之间的映射的系统表pg_collation调整更改 collcollate 列和 collctype 列的类型(name → text);添加 colliculocale 列pg_constraint调整添加 co
Kubernetes怎么处理一直在Terminating状态的namespace
今天在测试mogdb operator的时候遇到一个问题,我想删除一个ns的时候发现状态一直是Terminating的,且加上–force强制删除不掉,后网上查询这个问题,顺利解决,如下为具体过程:1.原本状态kubectl get ns2.开启一个代理终端kubectl proxy3.另开一个窗口,生成该ns的json文件其中这个mogdb-operator-sys
MogDB stack之mgo-client安装
一.安装mgo客户端获取mgo的安装脚本 wget https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/client-setup.sh --no-check-certificate安装mgo客户端chmod +x client-setup.sh ./client-setup.sh添加环境变量cat&
使用MogDB Operator在Kubernetes上部署MogDB集群(MogDB Stack)
本文介绍了如何使用MogDB Operator在Kubernetes上部署MogDB集群自动运维系统,包含MogDB Operator部署,Kubernetes上的MogDB集群创建等。一、部署MogDB Operator1.获取Kustomize v3+kustomize 是一种安装应用的方案, 是一个通用的工具,它的作用是对描述 Kubernetes 资源的 YAML 文件进行定制,产生新的
根据openGauss/MogDB的lwtid查看线程堆栈
在openGauss/MogDB数据库THREAD_WAIT_STATUS、PG_THREAD_WAIT_STATUS、GLOBAL_THREAD_WAIT_STATUS、LOCAL_ACTIVE_SESSION的几个视图里都有lwtid这一列,他是当前线程的轻量级线程号。可以根据这一列通过pstack命令去抓取堆栈,供问题的分析。如下所示,可以用pg_stat_activity 和dbe_per
MySQL数据库部署及初始化相关
一、MySQL安装前系统环境检测1.selinux和iptables需要关闭cat /etc/sysconfig/selinux sed -i 's/enable/disable/g' /etc/sysconfig/selinux chkconfig --list|grep iptables
PostgreSQL的 SPI_接口函数
Server Programming Interface(SPI)是PostgreSQL内核中的一个模块,这个模块让内核开发者可以在C函数中执行SQL语句,并具备管理事务的能力。通过它我们可以用C语言去调用数据库里的各种SQL。这个SPI_比较便利的一点在于,我们可以在自定义的Extension中也可以使用它,去用C调用SQL执行,也就是说,如果我们想的话,我们可以在Extension里用C语言定
如何编译openGauss对应版本的wal2json.so
wal2json是逻辑解码插件,使用该插件可以访问由INSERT和UPDATE生成的元组,解析WAL中的内容。本篇文章介绍了如何手动编译openGauss对应版本的wal2json.so。首先,需要一套对应版本数据库的软件和openGauss-server的源码,以及wal2json代码进行编译安装。本篇文章以openGauss 3.0.0为例一、下载openGauss-server源码[mog@
PostgreSQL数据库导入大量数据时如何优化
在使用PostgreSQL的时候,我们某些时候会往库里插入大量数据,例如,导入测试数据,导入业务数据等等。本篇文章介绍了在导入大量数据时的一些可供选择的优化手段。可以结合自己的情况进行选择。一、关闭自动提交关闭自动提交,并且只在每次(数据拷贝)结束的时候做一次提交。如果允许每个插入都独立地提交,那么PostgreSQL会为所增加的每行记录做大量的处理。 而且在一个事务里完成所有插入的动作的最大的好
mysqldump备份单库、部分库、全库、及排除部分库
本文针对MySQL的mysqldump工具在使用时,对于某些场景需要备份多个数据库或者排除部分数据库的场景进行举例。主要针对于备份的库是否符合预期,其余一些备份参数可根据使用场景增加调整。我的环境的mysql的版本为mysql> select version(); +-----------+ | version() | +-----------+