【阿里在线技术峰会】罗龙九:云数据库十大经典案例分析

  • 时间:
  • 浏览:0

直播视频

在使用索引时,大家 时要通过explain(extended)查看SQL的执行计划,判断不是使用了索引以及占据 了隐式转换。是原因分析分析常见的隐式转换是由字段数据类型以及collation定义不当原因分析分析,统统我大家 在设计开发阶段,要防止数据库字段定义,防止老出隐式转换。此外,是原因分析分析MySQL不支持函数索引,在开发时要防止在查询条件加入函数,同类date(gmt_create)。最后,所有上线的SQL后要经过严格的审核,创建离米 的索引。

在使用数据库时,每這個 人這個 后要碰到锁的疑问报告 。在设计开发阶段,大家 时要注意这三点疑问报告 :一是防止使用myisam存储引擎,改用innodb引擎;二是注意防止大事务,这是是原因分析分析长事务原因分析分析事务在数据库中的运行时间加长,造成锁等待的图片 ;三是选折 将数据库升级到支持online ddl的MySQL 5.6版本。

分页优化

大家 通过采用高效的Limit写法,时要将上述说说改写成:

查询时要的字段

从而防止分页查询给数据库带来性能影响。时要注意這個 是,这里时要在t表的sellerid字段上创建索引,id为表的主键。

是原因分析分析数据库架构大多是主备的法律法律法律依据,延迟便成了有有有另有一个常见的疑问报告 。产生延迟的原因分析分析有统统,同类在只读实例架构中,主备节点间MySQL原生基因重组实现数据同步法律法律法律依据会绿帘石原因分析分析延迟的产生。此外,create index、repair等常见DDL操作、大事务、MDL锁以及资源疑问报告 后要原因分析分析延迟的老出。

案例七:Conm 1000%

磁盘空间由数据文件、日志文件和临时文件组成。对于数据空间疑问报告 :是原因分析分析数据文件的索引和数据是中放共同的,当对表删除数据后时要采用optimize table收缩表空间,共同删除不时要的索引;对于写多读少的应用,时要使用tokudb压缩引擎进行表压缩。对于日志空间疑问报告 :首先大家 时要减少大字段的使用;其次时要使用truncate替代delete from。对于临时光英文英文间疑问报告 :一是时要适当地调大sort_buffer_size;二是时要创建离米 索引防止排序。

SQL优化是统统使用者都时要面对的疑问报告 。大家 在不断地优化、调试过程中总结了三类SQL优化的最佳实践,分别是分页优化、子查询优化、查询时要的字段。

Iops 1000%也是有有有另有一个很常见的疑问报告 。原因分析分析Iops 1000%的原因分析分析也时要分为慢SQL疑问报告 、DDL、配置疑问报告 三类。对于慢SQL疑问报告 :防止方案同样同类于防止CPU 1000%疑问报告 ,通过优化索引是原因分析分析通过防止子查询、隐式转换以及进行分页改写等法律法律法律依据从根上防止该疑问报告 。对于DDL疑问报告 :一定要防止并发进行create index、optimze table、alter table add column等操作;共同哪些操作最好在业务低峰期进行。对于配置疑问报告 :时要通过弹性升级RDS的规格配置防止。

这条说说是普通的Limit M、N的翻页写法,在越往后翻页的过程中带宽越慢,这是是原因分析分析MySQL会读取表M+N条数据,M越大,性能越差。

(点击图片查看视频)

本文根据阿里云资深DBA专家罗龙九在首届阿里巴巴在线峰会的《云数据库十大经典案例分析》的分享派发而成。罗龙九以MySQL数据库为例,分析了自RDS成立至今,用户在使用RDS过程中最常见的疑问报告 ,包括:索引、SQL优化、锁、延迟、参数优化、连接数、CPU、Iops、磁盘、内存等。罗龙九通过对十大经典案例的总结,还原疑问报告 原貌,给出分析疑问报告 的思路,旨在帮助用户在使用RDS的路上少這個 弯路,多這個 从容。

当内存使用率达到1000%时,操作系统会kill掉MySQL应用应用进程,从而原因分析分析业务的中断。统统我,大家 时要明确地了解数据库的内存使用详情。数据库内存主要由Buffer pool size 、Dictionary memory、Thread cost memory三要素组成。对于Buffer pool size疑问报告 :首先,大家 时要通过创建离米 的索引,防止几滴 的数据扫描;其次,大家 时要去除不时要的索引,降低内存的消耗。对于Thread cost memory疑问报告 :一方面,大家 时要通过创建离米 的索引防止排序;這個 人面,在查询数据时,大家 只查询应用所需的数据,防止所有数据的查询。对于Dictionary memory疑问报告 :当表被访问打开后其元数据信息是存储在Dictionary memory之中的,过度的分表会原因分析分析内存的几滴 占用,统统我分表时要注意把握分寸,太满过度分表,原来 看一遍有有有另有一个数据库中创建了十几万张表。

是原因分析分析MySQL的防止逻辑是遍历employees表中的每一根记录,代入到子查询中去 。统统当外层employees表越大时,循环次数也随之增多,从而原因分析分析数据库性能的下降。

在访问数据库时,应该尽量防止使用SELECT *查询所有字段数据,只查询时要的字段数据。

原因分析分析CPU 1000%的三大因素分别是:慢SQL、锁和资源。对于慢SQL疑问报告 :大家 时要通过优化索引是原因分析分析通过防止子查询、隐式转换以及进行分页改写等法律法律法律依据从根上防止该疑问报告 。对于锁等待的图片 疑问报告 :时要通过设计开发和管理运维优化锁等待的图片 。对于资源疑问报告 :时要通过参数优化、弹性升级、读写分离、数据库拆分等法律法律法律依据优化。

防止延迟疑问报告 ,时要具有清晰的排除思路:一看资源不是达到瓶颈;二看应用进程状态不是有锁;三判断不是占据 大事务。共同大家 时要通过使用innodb存储引擎、将大事务拆分为小事务、DDL变更期间观察不是有大查询等具体最佳实践降低延迟。

这是大家 改写子查询刚刚的SQL代码:

案例二:SQL优化

幻灯片下载:点此进入

是原因分析分析SQL从云下迁移到云上是原因分析分析从有有有另有一个版本迁移到原来 版本的过程中老出性能疑问报告 时,要保持清晰的排查思路:从SQL执行计划到数据库版本和优化器规则,再到参数(包括Query_cache_size、Temp_table_size)配置和硬件配置等一一进行排查。原来 看一遍原来 有有有另有一个案例,有有有另有一个用户使用默认的mysql配置跑线上应用,db所在的主机的内存有10000G,统统我分配给MySQL的内存确是默认的128M,原因分析分析了整个系统的性能下降。

案例四:延迟

案例一:索引

案例九:disk 1000%

大家 原来 遇到原来 有有有另有一个案例,某金融客户在将本地的业务系统迁移上云后,在最高配置的RDS上运行时间明显要比线下自建数据库运行时间慢1倍,进而原因分析分析客户系统老出割接延期的风险。对于同类案例的分析,根据以往的经验,时要从以下三点出发:

以下为派发内容。

首先将子查询的结果中放临时表内,再去和employees表做关联。此外,使用者也时要选折 使用Mysql 5.6的版本,防止麻烦的子查询改写。

关于分享嘉宾:

子查询在MySQL5.1、5.5版本中都占据 较大的风险。这是一段典型子查询SQL代码:

今天并不一定将索引中放第一位进行分享,是是原因分析分析索引的疑问报告 老出频率是最高的。常见的索引疑问报告 包括:无索引、隐式转换两类。其中隐式转换是由SQL传入的值和表底部形态定义的数据类型不一致引起;是原因分析分析是表字段定义collation不一致原因分析分析多表join的刚刚老出隐式转换。无索引的状态会原因分析分析全表扫描;隐式转换会原因分析分析索引无法正常使用。

案例八:Iops 1000%

案例六:CPU 1000%最佳实践

子查询优化

案例三:锁

案例十:mem 1000%

原因分析分析Conm 1000%的三大因素分别是慢SQL、锁、配置。对于慢SQL疑问报告 :防止方案同类于防止CPU 1000%,同样是通过优化索引是原因分析分析通过防止子查询、隐式转换以及进行分页改写等法律法律法律依据从根上防止该疑问报告 。对于锁等待的图片 疑问报告 :同样时要通过设计开发和管理运维优化锁等待的图片 。对于配置疑问报告 :大家 时要合理规划数据库上的连接数的使用,防止客户端连接池参数配置超过实例最大连接数的状态老出。此外,时要通过弹性升级RDS的规格配置来满足客户端时要的连接数。

罗龙九,阿里云资深DBA专家,有着富有的DBA经验,经历阿里历年双11考验,负责阿里云RDS线上稳定以及专家服务团队,积累了6年对阿里云数据库用户的运维、调优、诊断等富有的经验。

在管理运维阶段,大家 时要从四点出发追到锁的疑问报告 :

案例五:参数优化