关系型数据库
阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。
为了部落 - 如何通过PostgreSQL基因配对,产生优良下一代
PostgreSQL凭借良好的扩展性,不仅仅是一个数据库,更是一个有非常强大的数据处理能力的数据平台。很多垂直行业的用户拿它来做各种和业务贴合非常紧密的事情。 本文给大家分享的是PostgreSQL在生命科学领域的应用案例 - 基因工程。 通常的思维可能是这样的,把数据存在数据库,需要
PgSQL · 实战经验 · 如何预测Freeze IO风暴
背景和原理 有没有被突发的IO惊到过,有没有见到过大量的autovacuum for prevent wrap。 PostgreSQL 的版本冻结是一个比较蛋疼的事情,为什么要做版本冻结呢? 因为PG的版本号是uint32的,是重复使用的,所以每隔大约20亿个事务后,必须要冻结,否则记录会
MySQL · 特性分析 · innodb 锁分裂继承与迁移
innodb行锁简介 行锁类型 LOCK_S:共享锁 LOCK_X: 排他锁 GAP类型 LOCK_GAP:只锁间隙 LOCK_REC_NO_GAP:只锁记录 LOCK_ORDINARY: 锁记录和记录之前的间隙 LOCK_INSERT_I
Secondary节点为何阻塞请求近一个小时?
看到Secondary节点上的日志,我的内心的崩溃的,鉴权请求居然耗时2977790ms(约50分钟),经详细统计,这个Secondary节点上,所有16:54之后发起的用户请求,都阻塞到17:54左右才返回,处理时间最长的请求约1个小时。 2016-06-17T17:54:57.575+0800
page fault带来的性能问题
Linux进程如何访问内存 Linux下,进程并不是直接访问物理内存,而是通过内存管理单元(MMU)来访问内存资源。原因后面会讲到。 为什么需要虚拟内存地址空间 假设某个进程需要4MB的空间,内存假设是1MB的,如果进程直接使用物理地址,这个进程会因为内存不足跑不起来。既然进程不是直接访问
PostgreSQL plan cache 源码浅析 - 如何确保不会计划倾斜
早上写了一篇文章,可以看到PostgreSQL为开发人员着想的,设计得非常人性化。《为什么用 PostgreSQL 绑定变量 没有 Oracle pin S 等待问题》https://yq.aliyun.com/articles/55698 同时也收到了一些朋友发来的问题,有朋友问我Postg
PostgreSQL 递归SQL 找出对象依赖
在使用数据库时,如果用到了视图,物化视图。在表,视图,物化视图这些对象之间就会产生依赖。例如 create table t(id int); create view v1 as select * from t; create view v2 as select * from v1; cr
PostgreSQL 创建库时如何指定 Collate, Ctype
初始化集群,建库,建表,建索引,sort | compare QUERY时都可以指定COLLATE。用法参考https://www.postgresql.org/docs/9.5/static/sql-createtable.htmlhttps://www.postgresql.org/docs/.
为什么用 PostgreSQL 绑定变量 没有 Oracle pin S 等待问题
早上看到盖国强老师在朋友圈里分享了一篇关于软解析带来的Pin S等待的问题。有感而发,跟大家聊一聊为什么PostgreSQL不存在这个问题。 Oracle 在Oracle中多个会话高并发的执行同一条SQL,如果使用了绑定变量的话,会产生pin s的等待事件。原因如下(取自互联网http://
PostgreSQL 同步流复制原理和代码浅析
数据库ACID中的持久化如何实现 数据库ACID里面的D,持久化。 指的是对于用户来说提交的事务,数据是可靠的,即使数据库crash了,在硬件完好的情况下,也能恢复回来。PostgreSQL是怎么做到的呢,看一幅图,画得比较丑,凑合看吧。假设一个事务,对数据库做了一些操作,并且产生了一些脏数据,
大量使用临时表带来的问题,替代方案,以及如何擦屁股
以前有使用Greenplum的朋友遇到元表膨胀的问题,总结了原因写了一篇文章如下。建议先阅读这篇文档,再阅读本文,里面有些原理我在本文就不讲了。http://blog.163.com/digoal@126/blog/static/1638770402014616113353555 近日,又有使用P
PostgreSQL Oracle 兼容性之 - PL/SQL FORALL, BULK COLLECT
Oracle PL/SQL 开发的童鞋,一定对O家的bulk批量处理的性能很是赞赏吧。但是PostgreSQL用户请不要垂涎,作为学院派和工业界的一颗璀璨明珠。开源数据库PostgreSQL,也有对应的批量处理策略哦。下面是一组LOOP和BULK的性能测试数据 一起来耍耍吧,先看看Oracle怎么
Linux Zombie进程状态介绍 以及 如何清理
Linux 进程有哪些状态 通过ps的帮助手册,能看到进程有几种状态 man ps D uninterruptible sleep (usually IO) R running or runnable (on run
EnterpriseDB (PPAS) Oracle兼容性Virtual Private Database(VPD) 数据隔离以及当前缺陷
不带barrier的视图是不安全的,我在前面写过文章来讲这个,以及如何攻击这种视图。https://yq.aliyun.com/articles/14731PostgreSQL 为了增强视图的安全,增加了barrier的属性,来解决被攻击的问题。PostgreSQL 9.5 则提供了RLS来达到表.
PostgreSQL merge json的正确姿势
json merge是业务常用的功能,例如网络爬虫,更新合并新爬到的内容。PostgreSQL 9.5 对JSON的类型进行了非常大的功能增强,例如支持合并,按KEY删除,更新KEY VALUE等。以合并为例以右边的值为准,支持嵌套值的合并。 postgres=# select jsonb '
SQLServer · 最佳实践 · 数据库实现大容量插入的几种方式
title: SQLServer · 最佳实践 · 数据库实现大容量插入的几种方式 author: 石沫 背景 很多用户在使用阿里云云数据库SQL Server时,为了加快插入速度,都尝试使用大容量插入的方式,大家都知道,对于完整恢复模式下的数据库,大容量导入执行的所有行插入操作都会完整地记录
Linux cgroup资源隔离各个击破之 - cpu隔离1
Linux cgroup 有两个子系统支持CPU隔离。一个是cpu子系统,另一个是cpuset子系统。 cpu子系统包括两种CPU资源隔离方法 .1. 完全公平调度 Completely Fair Scheduler (CFS) .2. 实时调度 Real-Time scheduler (
PostgreSQL的"天气预报" - 如何预测Freeze IO风暴
还记得我写的这篇文档吗? 《PostgreSQL 大表自动 freeze 优化思路》https://yq.aliyun.com/articles/50411 文章主要针对如何优化大表的freeze调度来解决IO风暴的问题。 预测 IO 风暴 那么在没有针对性的调度策略之前,我们如何预测
Linux cgroup资源隔离各个击破之 - io隔离
Linux Cgroup blkio子系统的用法. blkio子系统支持两种IO隔离策略 .1. cfq io调度器,支持按权重分配IO处理的时间片,从而达到IO调度和限制的目的,权重取值范围100-1000。通过以下两个文件进行配置。 blkio.weight
PostgreSQL 如何轻松搞定行驶、运动轨迹合并和切分
物联网兴起,GPS终端也越来越普及,比如车载的终端,带GPS功能的手表,手机等等。比如滴滴打车,出租车都记录了车辆的行驶的位点。位点通常会带有终端ID,经纬度,时间等信息。但是我们如何将这些点的信息合并成车辆的运行轨迹呢?并不是粗暴的聚合这么简单。因为车辆在使用过程中会遇到等红灯,停车等乘客,穿越.
B-Tree和B+Tree
部分内容转载自互联网https://en.wikipedia.org/wiki/B-treehttps://en.wikipedia.org/wiki/B%2B_tree B-Tree 为了描述B-Tree,首先定义一条数据记录为一个二元组[key, data],key为记录的键值,对于不同
精确度量Linux下进程占用多少内存的方法
在Linux中,要了解进程的信息,莫过于从 proc 文件系统中入手去看。proc的详细介绍,可以参考内核文档的解读,里面有很多内容 yum install -y kernel-doc cat /usr/share/doc/kernel-doc-3.10.0/Documentation/
PostgreSQL 并行计算 在 xfs, ext4 下的表现
关于PostgreSQL 9.6 基于CPU并行计算的文章,之前写过几篇,请参考https://yq.aliyun.com/articles/44655https://yq.aliyun.com/articles/44649 本文主要是对EXT4和XFS进行测试比较,两者在并行度上的性能差异。文件
PostgreSQL on ECS 横向版本TPCB性能测试
本文对比的是PostgreSQL 9.4, 9.5, 9.6, 以及某基于9.4的国产数据库在ECS上的性能。 硬件环境和搭配 Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz 32核 128G 内存 500G 高效本地SSD , 15000
PostgreSQL ECPG ifdef include等预处理用法
PostgreSQL 社区版本的ecpg在一些预处理的用法上和Oracle的PROC有一些不一样的地方,使用者需要注意。例如社区版本的ecpg不支持c里面使用的#ifdef或者#ifndef这样的预处理语法,需要用其他写法来替代。所以你如果使用#ifdef这样的写法在.pgc里面,在使用ecpg编.
MySQL · 引擎特性 · InnoDB 软链表随手记
之前一直没去了解这快,这两天正好工作中碰到,这里简单记录下data directory的相关代码,InnoDB不支持INDEX_DIRECTORY,不在本文的讨论范围内. 以下涉及代码部分基于MySQL5.7.12 创建表 在建表时指定DATA DIRECTORY,如下所示: mysql>
PostgreSQL 多维分析 CASE
给企业做BI分析的开发小伙伴,可能经常会遇到这样的痛苦,运营人员今天问你要这样的维度报表,明天换个维度又来折腾你。对于开发的小伙伴,确实是非常痛苦的事情,那么有什么好的应对策略,而且对运营来说可能会显得比较高逼格呢? 多维分析派上用场,比如你的表有10个字段,允许运营人员以任意字段组合,产生报
Oracle迁移到PPAS(PostgreSQL)时的日期计算问题
Oracle中两个日期相减会得到NUMBER类型返回,而在PPAS中同样操作返回的是INTERVAL,通过构建一个函数可以解决此问题。
PostgreSQL ECPG 开发 DEMO
ECPG 是在C中嵌套SQL的一种用法。写好pgc文件后,需要使用ecpg程序将pgc编程成C文件来使用。 详细的用法请参考https://www.postgresql.org/docs/9.5/static/ecpg.html ecpg的用法, 以EXEC SQL开头表示后面是SQL写法
深入浅出PostgreSQL B-Tree索引结构
PostgreSQL 的B-Tree索引页分为几种类别 meta page root page # btpo_flags=2 branch page # btpo_flags=0 leaf page # btpo_flags=1 如果即
MySQL · 5.7新特性 · Query Rewrite Plugin
Query Rewrite Plugin 从MySQL5.7.6版本开始支持Rewrite Plugin,可以将符合条件的SQL进行重写。在真实世界中,这个特性还是非常有用的,例如错误的上线了某个SQL,但由于无法走到索引导致全库; 或者你可能使用某个第三方的已编译好的软件,但SQL可能执行错误,
PostgreSQL Oracle 兼容性之 - 如何篡改插入值(例如NULL纂改为其他值)
Oracle有个功能,可以将用户插入的NULL值替换成指定的值。这个功能和default值的用意并不一样,default是指用户没有指定值时,使用default值代替。例如 postgres=# alter table test alter column id set default 1;
ssh Forward X11 实现远程主机GUI在本地展示 (C/S X)
有些时候,有些程序可能需要依赖图形界面才能启动,例如安装Oracle时(其实oracle支持命令行安装),例如需要启动一个图形界面的浏览器如firefox。作为服务端的系统,通常不会安装臃肿的图形界面。那么如何在不安装图形界面的的情况下启动图形界面的?听起来很矛盾,但是实际上是可行的。 X Win
防止短连接耗尽你的动态TCP端口
用pgbench使用短连接压测一个PostgreSQL数据库(select 1),其他数据库亦如此。 $ vi test.sql select 1; $ export PGPASSWORD=digoal $ pgbench -M simple -C -n -r -P 1 -c 800
PostgreSQL 9.6 支持等待事件统计了
PostgreSQL 9.6 统计信息收集进程pgstat,增加了等待事件信息的收集,并且用户可以获得backend的等待事件信息。 目前支持的等待事件分类如下src/include/pgstat.h /* ---------- * Wait Classes * --------