关系型数据库
阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。
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 * --------
PostgreSQL 9.6 水平分库,还差一点点啦
PostgreSQL 持续在基于fdw的sharding技术上深耕,9.6开始,在符合条件的前提下,支持JOIN和SORT下推到数据节点执行。下面是一个测试创建几个shard库 for subfix in 0 1 2 3 do psql -c "create database db$su
PostgreSQL 如何实现upsert与新旧数据自动分离
很多业务也行有这样的需求,新的数据会不断的插入,并且可能会有更新。对于更新的数据,需要记录更新前的记录到历史表。 这个需求有点类似于审计需求,即需要对记录变更前后做审计。我以前有写过使用hstore和触发器来满足审计需求的文档,有兴趣的同学可以参考http://blog.163.com/digoa
通过ODBC连接PostgreSQL和Greenplum
安装驱动 yum install -y unixODBC.x86_64 yum install -y postgresql-odbc.x86_64 查看驱动配置 cat /etc/odbcinst.ini # Example driver definitions
MySQL · 捉虫动态 · left-join多表导致crash
有一天小编胡乱写SQL, left join了30张表, 结果导致了Mysql server gone away… 我们来看看crash堆栈 <signal handler called> base_list_iterator::next update_ref_and_keys make_
PostgreSQL · 特性分析 · 统计信息计算方法
一条SQL在PG中的执行过程是: ----> SQL输入 ----> 解析SQL,获取解析后的语法树 ----> 分析、重写语法树,获取查询树 ----> 根据重写、分析后的查询树计算各路径代价,从而选择一条成本最优的执行树 ----> 根据执行树进行执行 ----> 获取结果并返回
MySQL · TokuDB · 日志子系统和崩溃恢复过程
TokuDB日志子系统 MySQL重启后自动加载InnoDB和其他的动态plugin,包括TokuDB。每一plugin在注册的时候指定init和deinit回调函数。TokuDB的init/deinit函数分别是tokudb_init_func和tokudb_done_func。 MySQL重
SQLServer · 最佳实践 · 透明数据加密在SQLServer的应用
背景 作为云计算的服务提供者,我们在向用户提供优秀的服务能力时会遇到一个合规的问题。在数据库领域,数据是极其敏感和珍贵的,保护好数据,就如保护好企业的生命线。因此,需要采取一些预防措施来帮助保护数据库的安全,如设计一个安全系统、加密机密资产以及在数据库服务器的周围构建防火墙。但是,如果遇到物理介质
PG&GP · 特性分析 · 外部数据导入接口实现分析
背景 社区 PostgreSQL 和 GreenPlum 都提供了读写外部数据源的方法,它们都提供了一套编程接口,用户可以在这上面做二次开发,建立外部数据源和数据库间的数据通道。 本文介绍 PostgreSQL 和 GreenPlum 这部分编程接口的实现和编程方法。结合 RDS 开发的 oss
MySQL · 特性分析 · innodb buffer pool相关特性
背景 innodb buffer pool做为innodb最重要的缓存,其缓存命中率的高低会直接影响数据库的性能。因此在数据库发生变更,比如重启、主备切换实例迁移等等,innodb buffer poll 需要一段时间预热,期间数据库的性能会受到明显影响。 另外mysql 5.7以前innodb
PostgreSQL · 特性分析 · 逻辑结构和权限体系
本文旨在帮助用户理解PostgreSQL的逻辑结构和权限体系,帮助用户快速的理解和管理数据库的权限。 逻辑结构 最上层是实例,实例中允许创建多个数据库,每个数据库中可以创建多个schema,每个schema下面可以创建多个对象。 对象包括表、物化视图、操作符、索引、视图、序列、函数、… 等等。
MySQL · 特性分析 · MySQL 5.7新特性系列一
1. 背景 MySQL 5.7在2015-10-21发布了GA版本,即5.7.9,目前小版本已经到了5.7.12。5.7新增了许多新的feature和优化,接下来一个系列,我们就一起来尝尝鲜。首先这次主要是预览feature的变化以及兼容性问题。后面的系列,会针对重要的feature展开来学习。
MySQL · 引擎特性 · 基于InnoDB的物理复制实现
最近有幸前去美国参加Percona Live 2016会议并分享了我们最近在MySQL复制上所做的工作,也就是基于InnoDB的物理复制。会后很多小伙伴私信我说分享的PPT太内核了,不太容易理解。因此本文主要针对分享的内容进行展开描述,希望能对大家有所帮助。 背景知识 在开始之前,你需要对Inn
MySQL · TokuDB · Savepoint漫谈
问题描述 某TokuDB实例备库发生复制中断,报错信息甚是诡异: Error executing row event: "Can't lock file (errno: 22 - Invalid argument)" 经过gdb core后,大体知道了发生错误的原因: TokuDB在
MySQL · TokuDB · TokuDB索引结构--Fractal Tree
背景介绍 TokuDB采用的是Fractal Tree作为索引的数据组织方式。它是一种面向磁盘I/O优化的数据结构,采用“分期偿还”策略减少在数据插入过程中从root节点到leaf节点的搜索过程。这种搜索过程可以简称为locate_position,就是寻找要插入key在Tree中位置的过程。
MySQL · 最佳实践 · RDS 只读实例延迟分析
前言 只读实例是目前 RDS 用户实现数据读写分离的一种常见架构,用户只需要将业务中的读请求分担到只读节点上,就可以缓解主库查询压力,同时也可以把一些 OLAP 的分析查询放到另外的只读节点上,减小复杂统计查询对主库的冲击,RDS只读节点架构图如下: 由于RDS只读节点采用原生的MySQL
Memcached · 最佳实践 · 热点 Key 问题解决方案
背景 在分布式K-V存储系统中,对某个key进行读写时,会根据该key的hash计算出一台固定的server来存取该K-V,如果集群不发生服务器数量变化,那么这一映射关系就不会变化。 云数据库 memcached 就是这样一种K-V缓存系统。在实际应用中的某些高峰时段,有的云数据库 memcac
PgSQL · 性能优化 · 如何潇洒的处理每天上百TB的数据增量
背景 本文主要介绍PostgreSQL 在中高端x86服务器上的数据插入速度(目标表包含一个时间字段的索引),帮助企业用户了解PostgreSQL在这类场景下的性能表现。 这类场景常见于运营商网关数据和金融行业数据,产生量大,并且要求快速插入大数据库中持久化保存。另外, 用户如果需要流式实时
MySQL · 捉虫动态 · 并行复制外键约束问题二
背景 并行复制可以大大提高备库的 binlog 应用速度,内核月报也多次对并行复制特性进行介绍,感兴趣的朋友可以回顾下:5.6 并行复制实现分析、5.6 并行复制恢复实现 和 5.6并行复制事件分发机制。 在早期的内核月报,有一篇 并行复制外建约束问题,介绍阿里在 5.5 版本中自己实现并行复制
GPDB · 特性分析 · Segment 修复指南
问题背景 GPDB是中央控制节点式的架构,在一个 GreenPlum 集群中,有一个 Master 节点和多个 Segment 节点。Master 是中央控制节点,Segment 是数据存放节点。所有的Segment节点平等,均由Master管理。架构如下图: GreenPlum架构图
GPDB · 特性分析 · Segment事务一致性与异常处理
事务一致性 这篇月报Primary和Mirror同步机制讲了Primary和Mirror之间各种数据和文件的同步过程。这些数据和文件的同步,看似彼此独立。那么如何保证某个时间点Mirror的所有数据是一致的,即任何时间点发生HA切换,Mirror都能达到一致性状态并对外提供服务?正如我们前面提到的
MySQL · 参数故事 · innodb_additional_mem_pool_size
参数简介 innodb_additional_mem_pool_size 是 InnoDB 用来保存数据字典信息和其他内部数据结构的内存池的大小,单位是 byte,参数默认值为8M。数据库中的表数量越多,参数值应该越大,如果 InnoDB 用完了内存池中的内存,就会从操作系统中分配内存,同时在 e
MySQL · 答疑解惑 · MySQL 锁问题最佳实践
前言 最近一段时间处理了较多锁的问题,包括锁等待导致业务连接堆积或超时,死锁导致业务失败等,这类问题对业务可能会造成严重的影响,没有处理经验的用户往往无从下手。下面将从整个数据库设计,开发,运维阶段介绍如何避免锁问题的发生,提供一些最佳实践供RDS的用户参考。 设计阶段 在数据库设计阶段,引擎
MySQL · 答疑解惑 · 备库Seconds_Behind_Master计算
背景 在mysql主备环境下,主备同步过程如下,主库更新产生binlog, 备库io线程拉取主库binlog生成relay log。备库sql线程执行relay log从而保持和主库同步。 理论上主库有更新时,备库都存在延迟,且延迟时间为备库执行时间+网络传输时间即t4-t2。 那
GPDB · 特性分析· GreenPlum FTS 机制
前言 FTS(Fault Tolerance Serve)是GreenPlum中的故障检测服务,是保证GP高可用的核心功能。GreenPlum的Segment的健康检测及HA是由GP Master实现的,GP Master上面有个专门的进程–FTS进程,它可以快速检测到Primary或者Mirro
MySQL · 物理备份 · Percona XtraBackup 备份原理
前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle)、Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心。我们 RDS MySQL 的物理备份就是基于这个
MySQL · BUG分析 · Rename table 死锁分析
背景 InnoDB buffer pool中的page管理牵涉到两个链表,一个是lru链表,一个是flush 脏块链表,由于数据库的特性: 脏块的刷新,是异步操作; page存在两个版本,一个是ibd文件的持久化版本,和buffer pool内存中的当前版本。 所以在对table对象进行dd
SQLServer · BUG分析 · Agent 链接泄露分析
背景 SQLServer Agent作为Windows服务提供给用户定期执行管理任务,这些任务被称为Job;考虑应用镜像的场景如何解决Job同步问题,AWS RDS的做法是不予理会,由用户维护Job,假如发生切换用户需要在新的Principal端创建Job;另一种做法是镜像端保持同步Job,切换后
PgSQL · 源码分析 · 优化器逻辑推理
背景知识 数据库优化器需要具备逻辑推理能力,而且越强越好,为什么呢? 举一些例子, 通过已知的一个人讲的是真话,推理另一个人讲的一定是真话或一定是假话。 例子1: 假设预先提供了 a > 10 是真话 可以推理出 a < 1 一定是假话 例子2: 假设预先提供了 a > 10 是真话
MySQL · TokuDB · 事务子系统和 MVCC 实现
前言 之前有篇月报是关于innodb事务子系统的《MySQL · 引擎特性 · InnoDB 事务子系统介绍》 里面较详细的讲述了 MySQL 如何开启一个事务,感兴趣的同学可以先阅读那篇温习一下。 TokuDB 引擎也支持事务,保证一个事务内的所有操作都执行成功或者都未被执行。TokuDB
MySQL · 答疑解惑 · mysqldump tips 两则
背景 用户在使用mysqldump导数据上云的时候碰到两个“诡异”的问题,简单分析分享下。 TIP 1 --port端口无效? 本地有3306和3307两个端口的实例,执行命令为: mysqldump --host=localhost --port=300x -Ddb1 db1 -r out
MySQL · 特性分析 · 线程池-
概述 MySQL 原有线程调度方式有每个连接一个线程(one-thread-per-connection)和所有连接一个线程(no-threads)。 no-threads一般用于调试,生产环境一般用one-thread-per-connection方式。one-thread-per-conne
MariaDB · 版本特性 · MariaDB 的 GTID 介绍
简介 简单来说,MariaDB(MySQL)的复制机制是这样的: 在Master端所有数据库的变更(包括DML和DDL)都会以 Binlog Event 的方式写入Binlog中。Slave会连上Master然后读取 Binlog Event,再重放这些操作到自身的数据中。一个实例可以既是Mas
PgSQL · 性能优化 · PostgreSQL TPC-C极限优化玩法
简介 本文以工业界测试模型TPC-C为测试模型,介绍PostgreSQL数据库从系统层面的优化到数据库层面的优化方法。 TPmC从 256195.32 提升到 606466.31 是如何做到的。 测试环境介绍 16核开HT共32线程 256G 1600MHz 内存 万兆网卡 3 块 6
MySQL · TokuDB · TokuDB之黑科技工具
TokuDB之黑科技工具 刚过完年,美女程序员静静想学习下 TokuDB 相关技术,从何处入手呢?TokuDB的技术资料可是出了名的少! 本篇就给大家介绍下两个“黑科技”工具,来帮助我们更深入的了解TokuDB。 黑科技之tokuftdump 此工具用来dump一个Fractal-Tree结
PgSQL · 答疑解惑 · PostgreSQL 9.6 并行查询实现分析
背景 随着PG9.5 项目的release,属于PG9.6的代码也陆续进入代码主干,其中最让人激动的特性并行查询终于进入了核心代码。pger们对这个新特性期待了太久的时间,代码刚提交我们就迫不及待的拿到,从设计到性能进行一番探究,并通过本文介绍给大家。 并行技术的过去和未来 这是个很困难的工作