RDS MySQL空间优化最佳实践

June 16th, 2016 No comments

在前三期介绍了RDS for MySQL参数优化,锁问题以及延迟优化最佳实践之后,本期将介绍存储空间相关的最佳实践。

存储空间是RDS很重要的一个指标,在RDS的工单问题中,空间问题的咨询可以排在top 5,当RDS的实际使用空间超过了购买的空间后,实例就会被锁定了,这样就会导致应用无法再写入,更新数据,造成应用的报错。在RDS的控制台中可以设定空间的报警阀值,当实例空间到达报警阀值后用户就会收到报警短信,这个时候用户则需要对判断当前的空间增长是否合理。如果增长合理则需要对实例的进行弹性升级,这里需要指出的是弹性升级分为两种,一种是本地升降级,该类升级是实例所在的主机磁盘空间充足,足以容[……]

Read more

Categories: database Tags:

一个价值“千万”的秒杀场景参数优化

May 17th, 2016 No comments

秒杀最早来自天猫双11各种商品的促销活动中,现在已经有很多业务场景在使用,比如抢红包,抢票等。其特点有三高:瞬时并发高,数据一致性高,热点更新频度高。这样三高的场景下往往给数据库造成极大的压力,大量更新数据库中的同一行,这样必然会产生锁等待,导致数据库的性能急剧下降的问题,很容易容易出现雪崩效应。笔者记得有一年春节,一个电视台定时在整点发放红包,结果由于压力太高,导致更新数据库红包数额的请求全部堆积,业务全部挂掉,面对这样的情况我们当时也束手无策。
面对秒杀业务的场景,数据库成为了底层系统中最重要的瓶颈点,阿里经过几年的沉淀也诞生了很多的技术手段来进行优化,这里我们就重点讲一下底层数据所做的[……]

Read more

Categories: database Tags:

推荐工作机会

April 25th, 2016 No comments

请赐简历至:xuancan@taobao.com, 感谢您对加入我们公司有兴趣,我们希望能早日和您共事。

阿里云-数据库专家-SQL Server / MySQL / Postgresql
岗位描述:
1.    负责阿里云云产品数据库的设计与规划
2.    负责阿里云数据库产品的改进与建设
3.    负责阿里云数据库产品的自动化运维
4.    负责对客户提供优质的数据库技术服务

岗位要求:
1.    熟悉各个云产品,了解数据库云产品的形态与现状,熟悉AWS,阿里云,AZURE等相关数据库产品。
2.    精通SQL Server/MySQL / Postg[……]

Read more

Categories: database Tags:

MySQL锁问题最佳实践

March 28th, 2016 No comments

最近一段时间处理了较多锁的问题,包括锁等待导致业务连接堆积或超时,死锁导致业务失败等,这类问题对业务可能会造成严重的影响,没有处理经验的用户往往无从下手。下面将从整个数据库设计,开发,运维阶段介绍如何避免锁问题的发生,提供一些最佳实践供RDS的用户参考。

一.设计阶段:在数据库设计阶段,引擎选择和索引设计不当可能导致后期业务上线后出现较为严重的锁或者死锁问题。

(1).表引擎选择使用myisam,引发table level lock wait。

从5.5版本开始,MySQL官方就把默认引擎由myisam转为innodb,这两种引擎的主要区别:

engine

由于myisam引[……]

Read more

Categories: database Tags:

RDS MySQL参数调优最佳实践

January 6th, 2016 No comments

前言

很多时候,RDS用户经常会问如何调优RDS MySQL的参数,为了回答这个问题,写一篇blog来进行解释:

  1. 哪一些参数不能修改,那一些参数可以修改;
  2. 这些提供修改的参数是不是已经是最佳设置,如何才能利用好这些参数;

哪些参数可以改

细心的用户在购买RDS的时候都会看到,不同规格能够提供的最大连接数以及内存是不同的,所以这一些产品规格的限制参数:连接数、内存用户是不能够修改的,如果内存或者连接数出现了瓶颈:

  1. 内存瓶颈:实例会出现OOM,然后导致主备发生切换
  2. 连接数瓶颈:应用不能新建立连接到数据库

则需要进行应用优化、慢SQL优化或者进行弹性升级实例规[……]

Read more

Categories: database Tags:

MySQL update use index merge(Using intersect) increase chances for deadlock

November 20th, 2015 No comments

昨天一同事发现线上系统在并发更新的时候出现了死锁,通过排查定位于update更新使用了两个索引导致,死锁信息如下:

*** (1) TRANSACTION:
TRANSACTION 29285454235, ACTIVE 0.001 sec fetching rows
mysql tables in use 3, locked 3
LOCK WAIT 6 lock struct(s), heap size 1184, 4 row lock(s)
MySQL thread id 6641616, OS thread handle 0x2b165c4b1700, query id 2[……]

Read more

Categories: database Tags:

RDS弹性升级后性能反而下降的案例

November 17th, 2015 Comments off

刚刚结束的2015年双11,天猫以912亿的成交量再次打破去年的记录成为一个奇迹,大家可能不知道,这些天猫的订单最后的处理都是放在阿里云聚石塔的机房完成,从2012年开始,淘宝的ISV,商家就开始把他们的订单,CRM后台系统逐渐迁移到云上,最核心的数据库就是存放在RDS中。

双11之前用户都会进行大批量的弹性升级,期间有较多用户反馈,在弹性升级后性能出现了大幅度的下降,其中由一个用户有两个RDS,一个RDS进行了弹性升级,另外一个RDS没有出现弹性升级,结果弹性升级后的RDS反而出现了性能下降,这让我们反思不得其解。RDS的弹性升级包括了两部分,一部分是磁盘容量的升级,另一部分是内存容量[……]

Read more

Categories: database Tags:

如何将RDS的数据同步到本地自建数据库

November 16th, 2015 Comments off

长期以来有很多的用户咨询如何将RDS的数据同步到本地的数据库环境中,本篇文章以在阿里云的ECS服务器为例来说明如何将RDS的数据同步到本地数据库中。RDS对外提供服务是一个DNS地址+端口3306,这样就屏蔽了RDS后端的主从节点,那么该如何将数据同步到本地?那么我们来看一下RDS的主从架构:

应用连接RDS,流量通过SLB指向主从节点的master,所以如果我们连接RDS的账户具有REPLICATION SLAVE, REPLICATION CLIENT的权限,则就可以把主库master的产生的binlog同步到本地数据库中去,实现数据同步。

但是这种根据binl[……]

Read more

Categories: database Tags:

一次数据库上云迁移性能下降的排查

October 27th, 2015 Comments off

背景介绍:

某客户目前正在将本地的业务系统迁移上云,测试过程中发现后台运营系统,在rds上运行时间明显要比线下PC上自建数据库运行时间要慢1倍,导致客户系统割接延期的风险。用户线下一台PC服务器的性能居然还比顶配的RDS跑的快,这让用户对RDS的性能产生了质疑,需要立刻调查原因。

问题分析:

通常SQL的执行时间在同等数据量的情况下发生变化主要有以下一些场景,其主要原因是由于优化器生成的执行计划发生了改变,这样则会导致SQL的执行时间发生较大的变化,当然可能变慢,也有可能变快,变慢是我们不想看到的场景:

1、  数据库跨平台迁移(PG->MySQL、ORALCE->My[……]

Read more

Categories: database Tags:

关于RDS只读实例延迟分析

June 11th, 2015 Comments off

只读实例是目前RDS用户实现数据读写分离的一种常见架构,用户只需要将业务中的读请求分担到只读节点上,就可以缓解主库查询压力,同时也可以把一些OLAP的分析查询放到另外的只读节点上,减小复杂统计查询对主库的冲击,RDS只读节点架构图如下:

由于RDS只读节点采用原生的MySQL Binlog复制技术,那么延迟必然会成为他成立之初就会存在的问题。延迟会导致只读节点与主库的数据出现不一致,进而可能造成业务上逻辑的混乱或者数据不正确;另外只读实例延迟同样也会触发binlog堆积,导致只读实例的空间迅速消耗完,这样会导致只读实例被锁定,锁定之后应用则无法完成读操作。

最近也收到了很多[……]

Read more

Categories: database Tags: