阿里云RDS服务可以解决事务性的交互请求吗?

数据解决方案_大数据技术应用_概念_是什么_...

稳定、安全的数据交易渠道,让数据连接你我他 主要产品 全国天气预报接口 快递查询 图形验证码识别 手机归属地查询 全国车辆违章查询 手机号码实名认证 电子商务 作战大屏 抠图接口 积分会员通 电商工作台 全网CRM ...

混合云态势感知解决方案_核心数据无需上云_享受阿里云...

什么选择混合云安全态势感知整体解决方案 核心数据无需上云 采用混合云解决方案,不仅可以便捷的使用阿里云资源,同时可以使得您的核心数据依然保持在物理数据中心。核心数据不上云的同时,充分享受云所带来的便利...

移动APP解决方案_移动网络加速_移动推送_移动数据分析...

移动APP解决方案 阿里云移动APP解决方案,助力开发者轻松应对移动app中随时可能出现的用户数量的爆发式增长、复杂的移动安全挑战等问题。助力移动开发者实现基于大数据技术的精细化运营、提升产品质量和体验、增强...

阿里解决方案热门场景

无非运维看护,7*24小时持续同步网站数据,安全备份 阿里解决方案 1 原生支持:基于阿里云强大的基础设施,让您的网站具备同城容灾能力 2 自动切换:故障发生后,云产品具备自动切换能力,无需人工干预 3 弹性伸缩...

数据传输解决方案-业务零停机迁移

2.在阿里云的ECS上部署业务应用,并预配置应用到数据库实例的连接,保证应用和数据库的连通性。3.先通过DTS全量迁移将在其他厂商公有云RDS中的存量数据全量迁移至阿里云上的RDS实例中,借助DTS对多对一迁移/同步...

专有云解决方案_阿里

企业级分布式应用服务是企业级互联网架构解决方案的核心产品,充分利用阿里云现有资源管理和服务体系,引入中间件成熟的整套分布式计算框架(包括分布式服务化框架、服务治理、运维管控、链路追踪和稳定性组件等),...

同时,阿里云在云计算、大数据领域丰富的经验和积累,能够满足华大在数据处理、隐私安全以及传输方面极为苛刻的要求。华大基因 服务产品:混合云 推荐文章【DevOps系列1】DevOps与阿里云【DevOps系列2】容器化Ops...

游戏安全解决方案_游戏防ddos_游戏破解处理_防止游戏...

阿里云业务架构师,负责游戏、多媒体、数字营销、企业Saas服务,10年以上的技术解决方案工作,深刻理解行业技术趋势,致力于云计算技术拓展业务价值 量身定制解决方案 1V1咨询,分析上云可行性 成功案例解析 架构...

处理IOT中纷繁的数据与消息_物联网_车联网解决方案_...

阿里云在车联网领域具有成熟的解决方案和产品,每个细化领域的龙头企业都采用阿里巴巴的车联网解决方案,不受传统IT技术的局限,随着规模的扩大而水平扩展。新能源车领先企业 最多监控车辆的城市 新型商业模式 车辆...

数据库RDS_关系型数据库_数据库备份_产品详情_阿里

Server、PostgreSQL和PPAS(高度兼容Oracle)引擎,默认部署主备架构且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼!立即购买 产品价格 数据库专家诊断服务 立即购买 产品...

大健康解决方案 融合云计算、大数据优势,连接用户、医疗设备、医疗机构以及医疗ISV,致力于构建大健康行业云生态。云计算弹性可扩展,帮助大健康行业创新应用更“轻”更高效 在线咨询 4步完成大健康数据分析 业务...

微服务_海量数据处理_消息互通_阿里中间件_企业级...

场景 中间件产品 优势 解决方案 分布式零距离 培训与认证 典型应用场景 全面覆盖微服务、消息、数据等基础技术解决方案 海量数据处理及消息互通 应用启动、发布和管理 应用与业务监控 如何高效处理 IoT 中海量数据及...

阿里云帐号申诉 首页 中国站 International 日本サイト 找回登录名 我们不会向第三方泄露您的信息 手机找回 域名找回 备案信息找回 IP找回 雅虎邮箱找回 企业邮箱域名找回 云服务器IP:云服务器ECS公网IP 云服务器...

医生资源分配、远程监控分析、医疗服务监管等创新需求,基于阿里云的一站式大数据分析平台,可以帮助应用解决方案商降低大数据开发的门槛,真正提升应用的大数据能力。1.大数据计算服务(MaxCompute)提供快速、完全...

应用生态 大量新能源相关应用已构建在阿里云上 数据市场 公共气象数据、地理信息、新能源资源开发、发电预测服务 官方推荐解决方案 新能源光伏云方案 融合云计算、大数据分析优势技术,连接电站终端用户及第三方...

阿里云物流、物联网和智能硬件架构师,兼具传统IT企业与互联网公司从业经验,致力于帮助传统企业实现互联网+,借力云计算平台发挥企业自身业务优势,可以提供从硬件终端,云端架构到大数据平台建设的完整解决方案。...

互联网医疗解决方案 互联网和移动医疗、健康、运动等应用解决方案 生态 阿里集团下阿里健康、支付宝、阿里妈妈等整体的医疗生态进行资源整合 创新 弹性可扩容的云产品、企业级中间件 容器服务等支持业务快速试错和...

借鉴阿里电商技术及厚平台、薄应用设计理念为企业打造专业品采购、备品备件采购、工业品采购、员工生活采购、工程服务采购的一站式企业采购电商解决方案;该方案也将提供供应链金融服务、共享物流等增值服务增加供应...

远程医疗平台解决方案 通过远程医疗平台,实现优势医疗机构对其他医疗机构进行远程诊疗和教育 安全稳定 稳定可靠,轻松应对业务高速发展,阿里云 提供7*24的技术保障,重大活动护航 海量数据存储空间 海量存储按需...

通过阿里云混合云解决方案,为企业提供先进的大数据、云服务、安全可靠的互联网新技术,以及“海量”的计算、存储、网络、CDN、BGP资源,阿里云联合生态伙伴帮助企业快速、弹性、安全、高可靠、低成本的发展自身业务...

专注于汽车行业解决方案、大数据应用等领域,在物联网、音视频、混合云等方面深入的理解和丰富的从业经验,擅长行业解决方案的咨询与落地。量身定制解决方案 1V1咨询,分析上云可行性 成功案例解析 架构解析,深析...

3.阿里云建立“等保合规生态”,联合安全咨询合作厂商、各地测评机构,提供一站式、全流程的等保合规解决方案。建议搭配 VPC 合规 架构售卖 通常配置建议 医院搭建互联网应用通常配置选型 套餐说明:按照购买1年的...

阿里云业务架构师,负责游戏、多媒体、数字营销、企业Saas服务,10年以上的技术解决方案工作,深刻理解行业技术趋势,致力于云计算技术拓展业务价值 阿里云资深业务架构师,具有多年游戏行业从业经历,对游戏架构...

工业控制SCADA系统云上解决方案

阿里云资深架构师、专注于汽车行业解决方案、大数据应用等领域,在物联网、音视频、混合云等方面深入的理解和丰富的从业经验,擅长行业解决方案的咨询与落地。量身定制解决方案 1V1咨询,分析上云可行性 成功案例...

云HRP解决方案 通过构建云HRP全面支持医院综合运营管理 成本可控 云服务按需使用按量付费 成本可控运维方便 安全防护 掌上HRP移动办公 云盾提供全面安全防护 高可用性 集团医院统一云HRP 数据互联互通、弹性伸缩保证...

专注于云计算行业解决方案、大数据应用、等领域,在政务、广电、音视频等行业深入的理解和丰富的从业经验,擅长行业解决方案的咨询与落地。量身定制解决方案 1V1咨询,分析上云可行性 成功案例解析 架构解析,深析...

阿里云高级专家,具有丰富的大型传媒转型行业云计算、大数据项目经验,对云计算、大数据深刻的理解及丰富的应用经验,现致力于传媒、政务行业云计算及大数据应用解决方案设计与项目支持工作。阿里云资深业务架构...

云盾发布企业预防勒索解决方案 保护企业数据安全 打击勒索敲诈病毒 免费下载 1.工作原理:本次发布的修复工具基于wannakiwi项目的研究成果:既通过搜索内存中的数据,获取解密的关键素数来进行数据解密。阿里云安全...

阿里云数加大数据体验馆-构建百亿数据毫秒级响应的...

返回 数加体验馆首页 快速构建百亿数据毫秒级响应的日志分析系统 通过MaxCompute和分析型数据解决海量数据处理性能慢的问题。申请MaxCompute代金券 企业咨询 企业咨询 场景概述 查看大图 准备工作 1)具备阿里云...

阿里云业务架构师,负责游戏、多媒体、数字营销、企业Saas服务,10年以上的技术解决方案工作,深刻理解行业技术趋势,致力于云计算技术拓展业务价值 阿里云资深业务架构师,具有多年游戏行业从业经历,对游戏架构...

阿里云数加大数据体验馆-快速搭建一个BI销售数据分析...

``` 3.3 设置调度属性 首先线将工作流节点连接,表示节点执行先后顺序;然后点击右侧导航栏调度属性,设置整个工作流的调度属性,让每日的数据导入、加工自动执行;3.4 提交任务,并测试工作流 3.4.1 点击顶部菜单...

数加产品首页-大数据-阿里

可帮助不同规模业务的用户搭建安全隔离的云上网络,并帮助用户轻松搭建混合云网络 云上网络解决方案 虚拟网络产品及服务 全局负载均衡 解析 负载均衡 NAT网关 弹性公网IP 公网出入口管理 专有网络VPC 云上虚拟数据...

阿里云数加大数据体验馆-机器学习实现海量新闻自动...

右击*过滤与映射*点击执行后,查看数据 本文只是一个简单的案例,商业合作可以私下联系我们,我们在文本方面我们较完善的解决方案。亲,您的浏览器版本太低,暂时无法加载显示 请您升级到高版本的浏览器,或者切换...

阿里云大健康品牌宣传页面-阿里

阿里云大健康解决方案 让医疗服务行云流水 利用阿里云大数据,迅速搭建自己的医疗行业数据服务,实现互联网+医疗 互联网医疗行业趋势 热门行业分布 新一代技术未来会成为大健康产业重要的动力,为战略发展提供有力...

2016云栖大会深圳-大会嘉宾-阿里

04.21数据库技术 炳烛 阿里云总监 演讲主题:阿里云行业解决方案 04.21解决方案专场 游圣 阿里云技术专家 演讲主题:多媒体解决方案 04.21解决方案专场 重道 阿里云技术专家 演讲主题:大数据创造业务价值 04.21解决...

阿里云数加大数据体验馆-轻松搞定网站日志实时分析及...

如果您已经熟悉使用整套解决方案,可以根据个性化定制如下大屏并对接RDS数据。亲,您的浏览器版本太低,暂时无法加载显示 请您升级到高版本的浏览器,或者切换成chrome浏览器进行查看 常见问题 Q:在使用Logstash向...

数据库MySQL5.7单机版商业化-阿里

数据库 MySQL 5.7 单机版发布 提供全套备份、恢复、监控等运维方案 支持自建MySQL 5.1/5.5/5.6/5.7版本免费全量迁移 全面降价,最低84元/月起 立即购买 概述 引擎特性 产品优势 解决场景 特价售卖 迁移指导 概述 ...

2016云栖大会深圳-大会议程-阿里

阿里混合云是针对企业DT时代产业升级提供的上云解决方案,整合云计算与大数据能力的阿里混合云,即能有效整合优化企业IT基础设施,更能新分布式应用架构和大数据技术促进企业业务创新和升级,DT技术拓展商业边界...

2016云栖大会-深圳-阿里

万物连接皆跨界 物联网整体解决方案全新亮相,物联网先锋业务展示 刷新智能世界。以云端为承载,打通万物连接,实现 数据跨界,引爆新价值无限想象。02 DT生态无国界 阿里云与国际巨头重磅战略发布,推出便捷SaaS平 ...

2016云栖大会-成都-阿里

详解6大安全场景:app安全、防DDoS、防入侵、数据加密、反欺诈、内容安全·详解互联网上云实践:场景化问题、解决方案和实战案例· PostgreSQL独孤九式搞定物联网·如何构建电子商务的“安保系统”·详解:从...

开发者中心_开发平台_开发工具_开发软件_快速...阿里

合规性是阿里云存在和发展的基石,阿里云从架构设计、产品实现、解决方案、运维环境以及数据和隐私保护等多方面入手,将合规性融入管理、技术、流程与操作中,全力为客户构建和运行安全可控、可信赖、兼具灵活性的云...

消息服务_链路监控_性能测试-阿里

中间件技术应用场景全解析 稳定、可靠、好用 阿里云中间件应用场景/全面覆盖微服务、消息、数据等基础技术解决方案/最新 发布 物联网领域的数据解决方案 如何实现高并发写入?如何降低存储成本?高性能时序数据库...

阿里云-客户案例-点点客

上海点客信息技术股份有限公司是移动电商领域的领军企业,致力于科技造就移动电商先锋,提供从移动电商工具、移动电商平台、移动广告服务到移动互联网金融的全方位解决方案。公司产品是2014年初上线,最开始是在某...

云栖大会上海峰会-首页

关于云栖-云栖大会由阿里巴巴集团主办,已经成为全球云计算TOP级峰会,汇聚DT时代最强大脑,描绘云计算发展趋势和蓝图,展现云计算、大数据、人工智能蓬勃发展的技术生态全景。2017云栖大会城市峰会将继续在深圳...

云栖大会议程_2016杭州大会资料介绍_...下载_主题-阿里

共同探讨基于实名、信用、大数据等能力的智慧交通服务产业升级解决方案,共话在新的历史机遇下中国交通服务产业的新未来。13:30-14:00 未来城市与智慧交通新图景 邹亮(律材)蚂蚁金服集团支付事业群副总裁 14:00-14...

金融行业品牌宣传页-阿里

查看详情 查看互联网金融安全解决方案 合规方案 以网络借贷信息中介机构为例,16年银监会颁布《网络借贷信息中介机构业务活动管理暂行办法》,合规方案的整改期不超过18个月 安全方案 政策解读:…开展信息系统定级...

阿里云-移动测试专家服务

App的10项性能检测项进行验证,包括:内存泄漏、内存溢出、内存抖动、界面流畅度、界面卡顿、过渡绘制、启动分析、主进程IO检测、对象泄漏、瘦身分析,同时会针对性的提供专家解决方案。专家测试报告分析 阿里云移动...

阿里云-客户案例-环信

阿里云首页>客户案例>环信>阿里解决燃眉之急 阿里云云计算快速部署、弹性伸缩,大大降低了系统部署的复杂度和成本。解决的问题: 弹性扩展,安全稳定 环信作为一家国内领先的企业级软件服务提供商,选择阿里云确实...

阿里云资深架构师,具有多年互联网架构及政务行业云计算、大数据项目经验,对云计算、大数据深刻的理解及丰富的应用经验,现致力于政务行业云计算及大数据应用解决方案设计与项目支持工作。量身定制解决方案 1V1...

}

阿里云关系型数据库服务,阿里云服务器数据库,阿里云数据库,阿里云 数据库备份,云服务器数据库,阿里云服务器,阿里云服务器怎么用,阿里云服务器价格,阿里云服务器怎么样,阿里云服务

}

阿里云关系型数据库(Relational Database Service,简称 RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。

基于阿里云分布式文件系统和高性能存储,RDS 支持 MySQL、SQL Server、PostgreSQL 和 PPAS(Postgre Plus Advanced Server,一种高度兼容 Oracle 的数据库)引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。

分布式关系型数据库服务(Distributed Relational Database Service,简称 DRDS)是阿里巴巴致力于解决单机数据库服务瓶颈问题而自主研发推出的分布式数据库产品,解决了一些传统单库 RDS 数据库的痛点。

DRDS 高度兼容 MySQL 协议和语法,支持自动化水平拆分、在线平滑扩缩容、弹性扩展、透明读写分离,具备数据库全生命周期运维管控能力。

DRDS 前身为淘宝 TDDL,是近千核心应用首选组件。

DRDS 可以认为是云上的TDDL中间件。DRDS必须依赖RDS。

2.1 DRDS 主要解决的哪些问题?

  • 单机数据库容量瓶颈: 随着数据量和访问量的增长,单机数据库会遇到很大的挑战,依赖硬件升级并不能完全解决问题。
  • 单机数据库扩展困难:传统数据库容量扩展往往意味着服务中断,很难做到业务无感知或者少感知。
  • 传统数据库使用成本高: 当业务数据和访问量增加到一定量时,传统数据库需要依赖特定的高端存储和小型机设备,成本曲线快速上升。

由于 DRDS 是一个分布式关系数据库服务,处理的是分布式关系运算。分布式无疑会带来额外的跨库网络开销,而大家都知道,网络通信的延迟比单机内通信的延迟大得多。

因此分布式环境中优化更应侧重考虑:

  1. 减少 DRDS 计算量,尽量将计算下推到下层的数据节点上,让计算在数据所在的机器上执行;
  2. 充分发挥下层存储的全部能力。

1、数据库 - 表创建优化

数据库表的创建优化是最基本的数据优化,是需要在数据模型建立时就需要确定数据的存储、分片和路由的方式。如果模型设计的不够科学合理,后期通过应用的 SQL 来优化,都是成效甚微的。特别是对 DRDS 分布式数据库而言,一旦数据表建立了,后期的分库分表的拆分方式是无法进行修改的,即便数据表删除重建,数据的恢复相对麻烦。

在 DRDS 的数据库表中,主要存在有以下几种形式:

对于数据量不大的数据表,可以如同普通的单库 RDS 表一样,建立单库单表。但由于 DRDS 上单库单表只存在 0 库上,和其他不在 0 库的表可能存在跨库 JOIN 的风险。

此外,过多的单库单表,容易造成 DRDS 后端分库资源损耗不平衡,0 库的 IO 消耗过大的问题,应尽量予以避免。

对于数据量少,且数据变化不频繁,数据一致性要求不高的单库单表,为了解决上述的跨库问题,可以考虑使用小表广播。小表广播是指将表复制到每个分库上,在分库上通过同步机制实现数据一致,但存在秒级延迟。好处在于,可以将 JOIN 操作下推到底层的分库,来避免跨库 JOIN,提高执行效率。如下所示,建表时使用 BROADCAST 关键字:

除了使用命令,也可以在 DRDS 控制面板上指定广播表。
但需要额外注意,小表广播的使用限定:

  • 表数据量少,尽量不应超过 10 万;
  • 数据的更新不能太频繁;
    过大的表和更新过于频繁,都容易增加 DRDS 数据库底层 IO 压力和网络消耗。

DRDS 在后端将数据量较大的数据表水平拆分到后端的每个 RDS 数据库中,这些拆分到 RDS 中的数据库被称为分库,分库中的表称为分表。

拆分后,每个分库负责每一份数据的读写操作,从而有效的分散了整体访问压力。而分库分表优化的目的在于,重点减轻分布式环境中的网络 IO 开销,尽量将 SQL 中的运算下推到底层各个分库执行,从而减少网络 IO 开销、提升 SQL 执行效率。

1.3.1 如何确定是否分库分表

一般情况下,单个物理分表的容量不超过 500 万行数据。我们通常可以预估未来的数据增长量,用估算出的总数据量除以总的物理分库数,再除以建议的最大数据量 500 万,即可得出每个物理分库上需要创建的物理分表数。阿里公有云环境上,每个 RDS 实例上默认会创建 8 个物理分库,因此公式如下:

如果取得的分表数<=1,可以考虑只分库,不分表。如果>1,则除了分库外,最好在各物理分库上进行分表。

要实现数据表的分库分表的拆分,主要包括 2 个方面,即拆分键和拆分算法(函数)。例如,以下建表语句中对数据表做了分库处理:

1.3.3 选择拆分键的原则

拆分键即分库/分表字段,DRDS 根据拆分键的值将数据表水平拆分到每个 RDS 实例上的物理分库中。

  • DRDS 目前支持数字型、字符型、日期型的字段做拆分键;
  • 尽可能找到数据表中的数据在业务逻辑上的主体,并确定大部分(或核心的)数据库操作都是围绕这个主体的数据进行,然后可使用该主体对应的字段作为拆分键;
  • 根据数据分布和访问的均衡度来考虑拆分键,尽量将数据表中的数据相对均匀地分布在不同的物理分库/分表中;

拆分键的合理选取,对于数据表的性能,起着至关重要的作用。如果未能科学合理的选取拆分键,可能造成:

  • 数据分布不均匀,各底层 RDS 库的 IO 无法有效分摊,造成有的分库空闲,有的分库繁忙;
  • 上层应用查询处理数据时,无法带上拆分键,造成大量数据汇总和计算需要由底层各节点 RDS 汇集到 DRDS 层,大大增加网络 IO 开销和 DRDS 内存资源损耗。同时由于查询执行时间加长,容易造成 DRDS 数据库连接池无法及时释放;
  • 过多的跨库语句也造成增加应用中跨库事务处理的复杂性,降低了系统 TPS。

1.3.4 拆分算法的选择

拆分算法决定了分片数目与路由算法。
目前常用的拆分算法主要有:

    除了 RANGE_HASH 可以同时用2个字段外,其他拆分算法都只支持单字段。

当数据表通过上述的拆分键、拆分算法被拆分为多个分库分表时,数据在分库分表的分布规则就固定了。但是通常数据的业务使用场景非常复杂,如果数据的查询纬度和数据拆分分布的规则一致,单条 SQL 会在一个分库分表上执行;如果数据的查询使用纬度和数据拆分分布的规格不一致,单条 SQL 就很有可能在多个分库分表上执行,出现跨库查询,跨库查询会增加网络 I/O 的成本,查询效率必然下降。

这时候可使用拆分算法RANGE_HASH异构索引来实现。

双字段哈希函数 RANGE_HASH 与其他拆分算法不同,可设定2个拆分键,是根据任一拆分键后 N 位计算哈希值,然后再按分库数去取余,完成路由计算。N 为函数第三个参数。例如:RANGE_HASH(COL1, COL2, N) ,计算时会优先选择 COL1,截取其后N位进行计算。 COL1 不存在时找 COL2。适用于需要有两个拆分键,并且查询时仅有其中一个拆分键值的场景。

  • 两个拆分键的类型必须是字符类型或数字类型;
  • 两个拆分键皆不能修改;
  • 插入数据时如果发现两个拆分键指向不同的分库或分表时,插入会失败。

异构索引 的本质实际采用的方式就是用“空间换效率”的方案,也就是将同一份数据表,冗余存储多份,按照不同的业务使用场景进行拆分,保持拆分纬度和使用纬度统一,而多份数据之间会实时数据复制以解决数据一致性问题。

使用异构索引主要注意的是:

  • 过多的异构索引表会影响同步效率,对源数据表造成同步压力,同时增加数据库底层 IO 压力;
  • 异构索引表之间的同步存在秒级延迟,对实时数据一致性要求较高的存在风险;
  • 异构索引数据的修改更新只能通过主表进行,索引表只读。
    目前公有云上的异构索引仍处于内部测试阶段,建立必须通过后台工单的方式。

1.4 建表语句中的自增长

在我们建数据表时,经常有使用到自增长的字段类型,有时候也拿来做表的ID主键。在传统的RDS单数据库中,将某个字段设置成自增长,可以实现该字段的全局唯一的单调连续递增。但DRDS将数据库表进行了分库分表,是否能够保证此自增长字段也具有上述特性呢。

  • GROUP,是系统默认的,大部分场景下建议选用。全局统一,但非连续的非单调递增的(整体来看),不能循环。优点,速度快,不存在性能问题;
  • TIME,只能用于 BIGINT 类型字段,数值完全随机,全局统一,性能高;
  • SIMPLE,最接近于传统 RDS 的自增长序列,全局唯一、连续、单调递增。但是由于每次产生都需要持久化,效率较低,容易造成性能瓶颈,除非特定业务强制性要求,否则请谨慎使用

DRDS 对 SQL 的优化方法与单机关系数据库有所不同,侧重考虑分布式环境中的网络 IO 开销,应尽量将 SQL 中的运算下推到底层各个分库执行,避免全库扫描,从而减少网络 IO 开销、提升 SQL 执行效率。

虽然本文侧重DRDS的优化,并不等于原有单库的SQL优化策略就不适用。当最终SQL语句下推到下层RDS分库节点执行时,原有MYSQL的优化策略也是起效的。

基于上述核心原则,可以有以下优化方向:

    基本原则是,过滤条件中应尽量包含带有拆分键的条件,可以让 DRDS 根据拆分键对应的值将查询直接下推到特定的分库,避免全表扫描。经测试,在 10 万记录的分库表中,过滤条件中含有拆分键的比不含拆分键的,速度秒数至少提高3个数量级。

含拆分键的过滤条件的取值范围越小,速度越快。例如,执行消耗时间上的对比

以上:区间的记录条数  < 子查询记录条数。
经常有些时候,查询很难明确目前拆分键的值,这时候,可能需要中间表或存储进行转换。例如,查询A表时,过滤条件并不能明确A表的拆分键值或者范围,这时候可先从 B 表(或 REDIS 存放)查出相应的拆分键值或者范围,然后在叠加到 A 表的过滤条件中,以提高语句执行效率。

    WHERE 条件中使用类型转换和列运算,一方面会导致分库中索引无法使用,进行全表扫描,另外也会增加 DRDS 的计算负担。例如:
    NOT IN 无法使用索引,会进行全表扫描,将加重分库的负担。 如果业务上无强制排序要求,尽量不要进行 ORDER BY 排序。如果用的话,最好用在带有索引的列上,或者考虑在应用中进行排序。因为在 DRDS 中,各分库的排序必然是需要推到各个分库中排序并将结果汇集到DRDS内存中进行计算。

基本原则,查询交互和返回的数据量应保持尽量少。

    SELECT * 这种未明确指定返回字段的 SQL 语句应尽量避免。只把需要的字段返回回来,这样不仅可以加快数据读取速度,同时也可以减轻网络 IO 的消耗; 有时业务仅需要返回一条记录,就可以使用 LIMIT 1 来终止数据库引擎继续扫描整个表,减少数据库IO损耗; 可以考虑使用 UNION ALL 替代 UNION。UNION 和 UNION ALL 的差异主要是前者需要将两个(或者多个)结果集合并后再进行唯一性过滤操作,这就会涉及到排序,增加大量的 CPU 运算,加大资源消耗及延迟。所以当我们可以确认不可能出重复结果或者不在乎重复结果的时候,尽量使用 UNION ALL 而不是 UNION。目前,貌似 UNION 在 DRDS 中等于 UNION ALL,尚不具有去重功能;

DRDS 实际上的操作是,从各分库中读取0~的记录,汇集到上层后,再将多余的记录丢弃掉,导致了产生大量无用网络IO。针对上述情况,SQL 优化方向是先查出 ID 集合,再通过 IN 匹配真正的记录内容:

这种优化当返回的_offset_很大,且字段数比较多的时候,效果尤为明显。

原则上,应尽可能将 JOIN 查询优化成能够在分库上执行的可下推的 JOIN 形式。如果一个 JOIN 查询不可下推(即 JOIN 条件和过滤条件中均不带有拆分键),则需要由 DRDS 完成查询中的部分计算。

正如上述条件优化所述,各关联表的过滤条件中应尽量包含拆分键,有利于将查询下推到特定的分库,避免全表扫描。更进一步,如果能达到关联各表中所带的分库拆分键是相同的,则能保证在同一物理分库中,则效率更高。

    小表形成广播表后,当同分库中的表进行 JOIN 时,语句就可以下推到分库中执行,提高执行效率。 应尽量改成 JOIN 的形式。通过 EXPLAIN 可以查看到子查询是一个相关子查询( DEPENDENCE SUBQUERY )。分库是先对外表A执行全表查询,然后根据 ID 逐次执行子查询,如果外层表是一个很大的表,我们可以想象查询性能会表现比这个更加糟糕。 应尽量将数据量较小的表作为驱动表,也即 LEFT JOIN 的左表。如果有过滤条件应当尽量放到驱动表的过滤条件中,将驱动表的数据集尽可能缩少。在此优化规则中,如果驱动表很小,关联表很大,那么优化后的效率将会提高很多。
    建议不能下推到同一个物理分库的 SQL 语句中,表关联尽量不要超过 2 个。超过 2 个以上的语句,可考虑在应用中拆分成多次查询。
  • 用 HINT 限定读取只读实例
    当 DRDS 配置了读写分离时,应用会自动根据配置的读权重来透明地选取是从主实例还是只读实例中读取数据。

而通过显式地在 SQL 语句中使用 HINT,可指定语句是在主实例上执行还是在只读实例上执行。如下所示,指定了只在只读实例中执行:

好处在于,对于应用中数据一致性要求不高的,个别资源消耗较大的或者执行时间较长的 SQL 语句,通过显式指定在只读库上执行,可以避免分配到主实例库上,消耗主库的资源。

  • 定义SQL语句执行超时时间
    在 DRDS 中,DRDS 节点与 RDS 的默认的 SQL 执行超时时间是 900 秒,但是对于某些特定的慢 SQL,其执行时间可能超过了 900 秒 。针对这种慢 SQL,DRDS 提供了调整超时时间的自定义 HINT。通过这个自定义 HINT 可以任意调整 SQL 执行时长。如下所示,设置语句超时时间 30 秒:

注意:超时时间设置得越长,占用数据库资源的时间就会越长。如果同一时间长时间执行的 SQL 过多,可能消耗大量的数据库资源,从而导致无法正常使用数据库服务。


索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找。

EXPLAIN可以帮助开发人员分析SQL问题,explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。

使用方法,在select语句前加上Explain就可以了:

mysql在执行一条查询之前,会对发出的每条SQL进行分析,决定是否使用索引或全表扫描如果发送一条 select * from blog where false,Mysql是不会执行查询操作的,因为经过SQL分析器的分析后MySQL已经清楚不会有任何语句符合操作。

  • 在索引字段尽量不要出现空值,这样将导致用不到索引,可以考虑建表时字段增加默认值以避免空值出现;
  • 创建二级索引时,最好创建在查询相对多,更新相对少的字段上;
  • 创建联合索引要注意字段排列顺序,把过滤最多记录数的字段放在第一位,以此类推;
  • 目前 DRDS 中,PK 和 UK 只能保证在某个分库(分表)是唯一的,并不能保证全局。如果要做到全局唯一,必须同时还是分库键才行。

通过配置 DRDS 读写分离功能,能有效对主实例的读流量进行分流,减轻 RDS 主实例的读压力。同时,从另一个角度来说,从只读实例上进行读取时,也避免了主实例写库时事务锁造成的数据库 IO 问题,加快了数据的读取速度。

由于DRDS 的读写分离功能是对应用透明的设计,应用可以在不修改任何代码的情况下,调整读权重,即可将读流量按配置的比例在主 RDS 实例与多个只读实例之间进行分流;写流量则全部到主实例,不做分流。


工欲善其事,必先利其器。

DRDS为我们提供了一系列的指令,便于我们跟踪数据库表的创建和SQL语句执行情况,方便进行调优。

以下是比较常用的指令:

5.1 查看数据表存储

5.3 查看语句执行计划


本文针对分布式关系型数据库 DRDS 的优化做了一些入门简要介绍,仅仅是冰山上的一角,希望借此能帮助大家快速入门,能逐步挖掘释放 DRDS 效能,扬长避短。

文中部分内容借鉴了阿里官网DRDS的用户指南,更多的实例大家可以参阅。内容如有不正确、不合理的地方,也欢迎大家批评指正。

}

我要回帖

更多关于 天翼云rds连接方式分为哪几种 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信