How to speed up create index on Oracle and PostgreSQL(加速索引创建)?
创建索引是table优化访问的常用手段, 但是通常create index会影响对表上的其他DML执行(非online), oracle和postgresql在该方面提供了online的方法,但是可能会增加索引的创建时间,对于表大小超过GB创建索引你可能希望如何加速创建索引
经典面试题:部门最高工资的的员工在PostgreSQL(或openGuass)有了新SQL语法
子曰:“君子谋道不谋食。耕也,馁在其中矣;学也,禄在其中矣。君子忧道不忧贫。” , 回顾我的DBA生涯,从2006接触管理SQL Server 2000到2009年开始管理Oracle, 只问耕耘,错过了一些跳跃机会,清晰记的2009年1次想跳槽面试的一次经历,当时就有这道笔试题,我写了3种答案
如何最短停机时间在openGauss(和PostgreSQL)更改列类型
在数据库日常运维中难免会随着Table数据量f增加,原来的数据类型需要修改,在Oracle如是加长兼容的列类型可以直接修改元数据,而其它提示列上有数据不允许修改,在MySQL和PG,openGauss中修改列如从int 到bigint时会导致表数据reload, 在之前“alter table ” modify column in Oracle、MySQL、PostGreSQL(数据库比较系列十三) 笔记有记录这一现象,而如果表已经很大,该操作可能从空间与业务连续的影响时间上都比较大,前不久看到一种方法觉的不错简单记录一下。
How to find partition Gap of range table in PostgreSQL database?(缺失分区)
范围分区是大型数据库中常用的Table类型, 如按时间维度划分方便后期的周期清理,在Oracle中range分区只需指定分区的上限(less than),而在PostgreSQL中的分区比较另类,需要指定分区的上限和下限区间,而这种涉及就有可能存在一个问题,超出分区的范围除了表级最小和最大时间,在PostgreSQL中还有可能因为条件不连续存在分区之间的GAP,如以天为分区, 分区界限是2023/03/01, 2023/03/02, 2023/03/04, 缺失 2023/03/03分区
Index Rebuild in Postgresql vs Oracle
在关系型数据库中,索引是SQL查询性能优化的常用技术,mysql可能不会创建太大的数据库,但是pg和oracle表达到100G或TB以上时,慢查询可能会比较明显,需要考虑创建适当的索引,但随着时间的推移,索引可能需要一些维护来保持性能. 通常当涉及到表时更新时,Oracle管理UNDO的方式和PostgreSQL中的MVCC工作方式略有不同,然而索引仍然可能碎片化,因此需要重新构建。
PostgreSQL explain解析(一): buffers
通过扩展EXPLAIN添加值来描述postgresql数据库中SQL的执行计划每个操作读/写的数据,需要使用ANALYZE参数,从Postgres 13开始,它可以额外报告planner的缓冲区使用情况。默认情况下,BUFFERS是关闭的。在更多的情况下,使用BUFFERS将极大地帮助我们理解内部发生了什么
Oracle迁移到PostgreSQL注意事项: to_date
近年来国家xc的推广,现阶段国产或开源库迁移逐渐列上日程,目前看已大势所趋, 在选择部分国产(基于)或开源数据库里安全健康的开源协议需要考虑, PostgreSQL是功能强大最接近Oracle的并有全球客户经过长期磨炼过生态健全的关系型数据库,最近有一个项目在原有一套Oracle的应用数据迁移到PG后,在两个PG环境中双数据源双写数据时,其中一套PG的数据库入库存在问题
PostgreSQL维护索引相关查询
PostgreSQL 具有一组丰富的索引功能,人们开发数据库一段时间后,当需要对软件架构进行更改时,他们忘记了对以前的索引进行清理。这种方法会造成混乱,有时会因为索引过多而减慢数据库的速度。
PostgreSQL所有历史版本列表(时间)
在Github看到这个项目postgres_all_versions,是Greg Sabino Mullane 开发的一个Perl脚本,可以解析在线Postgresql的官方文档,从中把所有PostgreSQL的版本及新特性变化,生成一个大的html文件。
oracle 如何调用 postgresql中的procedure、function?
在去O的过程中或当前多种数据库并存时,有些存在跨DB的调用,如可以使用gateway,dblink或fdw在oracle和postgresql间跨数据库访问数据,当前有个项目存在2个数据库存储过程的依赖调用,如果从oracle调用postgresql中的存储过程呢?
Linux最佳实践for Postgresql/openGauss
Linux 内核提供了各种可能影响性能的配置选项,为了获得最佳性能,PostgreSQL 数据库取决于正确定义的操作系统参数。操作系统内核参数配置不当可能会导致数据库服务器性能下降与系统稳定。因此,必须根据数据库服务器及其工作负载配置这些参数。就像任何其他数据库一样,PostgreSQL依赖于Linux内核进行最佳配置。
“alter table ” modify column in Oracle、MySQL、PostGreSQL(数据库比较系列十三)
‘alter table’ DDL操作后期运维时比较常规的操作,但在oracle,MySQL,PostGreSQL中行为并不相同,Oracle还是三者中代价最低的,但是在Oracle DBA转向其它数据库运维时,以O的经验维护像MySQL、PostGreSQL时修改列的小动作可能会出现故障,比如空间耗尽、持续时间长、锁、执行计划变等现象。这篇分别测试一下三个数据库在ALTER TABLE modify column上的影响。
浅谈数据库与GPU?
最近有客户咨询数据库可不可以使用GPU (Graphics processing unit)来给数据库负载加速, GPU 是专用的高度并行硬件加速器,最初设计用于加速图像的创建。最近,人们一直在寻找GPU来加速其他工作负载, 对于GPU的非显卡使用场景最火的当属对于虚拟货币的挖矿,
How to trace DB processes system calls using Strace -k
当前数据库种类较多,像oracle等闭源数据库在诊断特殊疑难问题时需要分析内部C函数的call stack, 目前的oradebug short_stack或errorstack,linux系统中的pstack只是dump当前的调用, 还有现在的开源数据库虽然可以查看源代码,但是没法较方便的方法在运行的进程过程中持续跟进多个内部调用的call stack. 增加了故障分析的复杂性和诊断时间, 这里看到了一种使用strace跟踪的方法记录一下。
Language SQL和Plpgsql在Postgresql Functions 的区别
上在一篇中测试看到postgresql中的function相同的逻辑,仅是create function时language在sql和plpgsql不同产生了不同的执行计划, 是因为postgresql是选择了不同的 SQL query “engine”, Postgresql支持多种不同的”runtime engines”执行不同的code,在Postgresql中创建function时语言支持SQL, PL/pgSQL, C ,C,Perl, Python, Ruby, Java 等,这是好多其它数据库不具备的,本篇总结一下在create function是的language在SQL和plpgsql之间的不同。
Postgresql 、openGauss系function函数Volatile 属性索引无法使用
最近的一个从oracle到Openguass的项目迁移时,应用反馈SQL在使用列等值右侧function返回值无法使用索引的问题,当把function换成字面量时可以正常使用索引对象,这个问题对PostgreSQL开发者很重要,因为许多数据库开发人员不知道PostgreSQL函数的Volatility(不稳定性)。每个函数都有一个Volatility分类,可能是VOLATILE、STABLE或IMMUTABLE。VOLATILE是默认值。该问题同样适用于openguass系的package中的function.
multi-version read consistency in Oracle、MySQL、PostGreSQL(数据库比较系列十二)
ANSI/ISO SQL 标准定义了4 种事务隔离级别,对于相同的事务,采用不同的隔离级别分别有不同的结果。这些隔离级别是根据3 个“现象”定义的,在Oracle 中READ COMMITTED 则有得到读一致查询所需的所有属性,在其他数据库中的读READ COMMITTED 可能会有不同的答案, 最近有个客户在测试migrate oracle to postgreSQL测试发现一个批处理的结果并非一致,
VIEW dependencies in Oracle、MySQL、PostGreSQL(数据库比较系列十一)
在有些程序员开发习惯中,喜欢为了应用代码的简洁或复用,而在数据库创建一个复杂关连查询的VIEW,甚至是VIEW套VIEW嵌套使用, 这里就有个问题如果上线后如发现依赖的表字段类型或长度不足时,修复一个view依赖的table列时发现在oracle、mysql、postgresql(本篇等同pg)中有不同的表现, 尤其是使用postgresql的用户需要格外注意, 因为pg 不允许直接修改
列顺序占用存储大小的影响 in Oracle、MySQL、PostGreSQL(数据库比较系列十)
在创建表时,如果相同的列类型,不同表列的顺序是否会影响数据库占用空间大小?使用oracle、mysql或postgresql是不是相同的表现呢? 不是的Postgresql近期发现空间使用会因为columns的顺序而占用不同的大小,当然也和实际的数据有关,简单的测试。
How to Kill session or Cancel SQL query on Oracle , MySQL, PostgreSQL(数据库比较系列八)
数据库维护过程中难免会遇到一些不正常的SQL或会话进程正在占用系统大量资源,临时需要终止查询或kill会话,在Oracle, MySQL, Postgresql数据库中不同的操作。