openGauss/MogDB的TPCH测试
TPC-H是一个决策支持基准(Decision Support Benchmark),它由一套面向业务的特别查询和并发数据修改组成。查询和填充数据库的数据具有广泛的行业相关性。这个基准测试演示了检查大量数据、执行高度复杂的查询并回答关键业务问题的决策支持系统。TPC-H报告的性能指标称为TPC-H每小时复合查询性能指标(QphH@Size),反映了系统处理查询能力的多个方面。这些方面包括执行查询时
MySQL error 错 误 码
0101 属于其他进程的专用标志。?0102 标志已经设置,无法关闭。0103 无法再次设置该标志。0104 中断时无法请求专用标志。0105 此标志先前的所有权已终止。0106 请将软盘插入驱动器 %1。0107 后续软盘尚未插入,程序停止。0108 磁盘正在使用或已由其他进程锁定。0109 管道已经结束。0110 系统无法打开指定的设备或文件。0111 文件名太长。0112 磁盘空间
MogDB/openGauss误删未归档的xlog日志如何解决
在使用MogDB/openGauss数据库的过程中,有时候大量业务,或者导数据会导致pg_xlog下的日志数量持续增长,此时如果xlog的产生频率太快,而来不及自动清理,极有可能造成pg_xlog目录的打满。如果对数据库的xlog不太了解的时候,可能造成误删未归档的xlog日志,或者更严重地,把对应操作还未写入数据文件的xlog也删除了。本文将讲解了通常情况下pg_xlog下的xlog文件所处状态
MogDB/openGauss的三种函数稳定性关键字
一、ORACLE中的类似的函数稳定性关键字(DETERMINISTIC)在ORACLE里,function有着一个DETERMINISTIC参数,它表示一个函数在输入不变的情况下输出是否确定,只要输入的参数一样,返回的结果一定一样的,以保证函数对于任何输入总是完全相同的方式处理参数,oracle的内置函数 UPPER,TRUNC 等都是 deterministic 函数。具体例子如下:----带D
MogDB/openGauss如何实现自增主键
自增主键是我们在设计数据库表结构时经常使用的主键生成策略,主键的生成可以完全依赖数据库,无需人为干预,在新增数据的时候,我们只需要将主键的值设置为default,数据库就会为我们自动生成一个主键值。MySQL主键自增使用AUTO_INCREMENT关键字,PostgreSQL自增使用SERIAL关键字或者序列。而MogDB/openGauss里兼容两种语法。AUTO_INCREMENT在MogDB
迁移ORACLE数据到MogDB/openGauss时的字符集问题
一、问题概述ORACLE数据库在存储数据的时候,有时候会存在这样一种现象,一张表里的数据,既存在UTF8字符的,也存在GBK字符的,同时还有可能存在乱码数据。NLS_CHARACTERSET是数据库字符集,NLS_NCHAR_CHARACTERSET是国家字符集,NLS_LANG 是 Oracle 数据库客户端的一个环境变量。这种问题在于ORACLE对于规定了一种字符集后,对于插入的数据并没有强校
PostgreSQL-16新特性之普通用户的保留连接个数(reserved_connections)
PostgreSQL数据库为了保证在高并发,高连接数情况下某些用户能够正常连接到数据库里,设立了几个用户连接的保留个数。本文介绍了PostgreSQL16版本前为超级用户保留的连接数(superuser_reserved_connections)以及PostgreSQL16版本新增的为普通用户的保留的连接数(reserved_connections)。一、最大连接数(max_connections
PostgreSQL-16新特性之EXPLAIN的GENERIC_PLAN选项
随着PostgreSQL-16beta1版本的发布,我们可以发现,对于我们时常使用的explain增加了一个GENERIC_PLAN选项。这个选项是允许了包含参数占位符的语句,如select * from tab01 where id=$1;等等这种语句,让其生成不依赖于这些参数值的通用计划。这个补丁具体可见https://git.postgresql.org/gitweb/?p=postgres
[译]Postgres WAL 文件和序列号
Postgres预写日志(Write Ahead Log, WAL)是数据库的一个功能组件。WAL使许多关键功能成为可能,比如时间点恢复备份、从事件中恢复、流复制等等。有时候,深入数据库的人员需要直接使用WAL文件进行诊断或恢复。最近在与Crunchy Data的一位客户合作时,我遇到了一种情况,在这种情况下,理解名称和序列号非常重要。在与几个致力于Postgres项目的同事一起工作时,我收集了一
Python解析json文件并在Linux环境拼接执行
下面是一个Python读取JSON文件并拼接Linux命令执行的简单案例:、
PG如何查看用户拥有的各类对象的操作权限
在PostgreSQL数据库平时会赋予很多的权限,对于这些权限是否真正赋予,并且对于各个对象,用户到底有着什么权限,有着不同的方式去验证,例如\dp+ , 查询视图,查询函数,或者使用extenson(PG_PERMISSIONS)等一、元命令(\dp+)通常可以使用\dp+ 列出用户,schema的默认权限。列出表、视图、序列的权限,但是它读起来比较不太方便。postgres=# \d
常见的导致PG创建索引慢的原因
1.表的大小问题如果表的数据很多,索引建立在大表上的时候,会导致建索引的时间很慢。所以如果表的数据量很多,可以考虑重新设计表结构或拆分表。可以考虑使用分区表,使用分区表来分割数据。这样在建立索引时,可以只对需要建立索引的分区进行操作,从而提高索引建立的速度。2.索引类型不同类型的索引建立的速度可能会有所不同,因为存储的结构不一致。例如,B-tree索引通常比GiST索引建立得更快。不同的索引策略适
PostgreSQL的idle in transaction连接状态
在平时查询pg_stat_activity这个视图的时候,每一行包含了一个进程的相关信息,包含当前正在执行的SQL,或者会话的状态等等,state字段表示当前进程的状态。在PostgreSQL数据库里,其实代码里总共定义了7种BackendState,但是最终给我们展现在pg_stat_activity里显示的只有6种,这个不显示的STATE_UNDEFINED是PostgreSQL中定义的一个连
关于PostgreSQL的系统信息函数的OID
一、自带的OID的相关脚本在PostgreSQL的安装包的src/include/catalog目录下,有着两个脚本,unused_oids和 duplicate_oids。通过这两个可执行脚本,可以查看当前源码包配置里的符合要求的OID。unused_oids可以查看若根据当前源码包初始化产生的数据库,在系统表中未被使用的OID,duplicate_oids可以找到在系统表重复定义的OID。当我
PostgreSQL的"double buffers"刷脏机制和参数
PostgreSQL数据库使用双缓存写数据,shared_buffer + OS page cache,下图是PG与OS内存交互的过程 ,在PostgreSQL中,shared_buffers所代表的内存区域可以看成是一个以8KB的block为单位的数组,即最小的分配单位是8KB。这正好是一个page的大小,每个page以page内部的元数据(Page Header)互相区分。这样,当Postgr
PostgreSQL的wal_buffers
1、什么是wal buffer?wal buffer是预写日志(wal)缓冲区2、wal buffer的作用是什么用于还未写入磁盘的 WAL 数据的共享内存。每次变更事务提交时候,需要将变更事务日志落盘,在PG中为了提高性能,并非采用实时flush到磁盘,而是在PG中提供XLog Buffer空间临时存储提交的事务日志,然后定期flush到磁盘。一旦任何给定的 8kB 缓冲区的内容持久地保存在磁盘
MySQL常用性能指标
这里给大家分享一些MySQL的常用性能指标,可以对此增加一些自定义指标到数据库的监控里,如zabbix或者prometheus,来更好的检测数据库的状态。我的MySQSL版本是5.7.19。因为是自己的测试环境,所以截图的一些指标很低,仅为大家展示查看参数的显示情况。mysql> select version(); +-----------+ | versi
openGauss/MogDB的uncommitted xmin问题解决
一、问题现象在测试openGauss/MogDB的时候,发现主库查询snapshot.tables_snap_timestamp这个表的时候,一select *,数据库就宕机,而备库是正常的。因为是测试环境不存在数据量太多的情况。所以最开始初步怀疑有数据页损坏了。在分析的时候,因为是测试环境使用了vacuum full去测试(正常使用vacuun freeze应该就可以)。报错为ERROR: un
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处理大量连接的问题,因为在连接数很高时计算一个快照的代价是很昂贵的。(对于分析连接可扩展性的局限性可以参考