RDS MySQL空间优化最佳实践

阿里云mysql5.6的一些优化配置参数,直接从阿里云mysql数据库扒的配置 直接将下面参数copy到你的my.ini文件中即可使用。优化得很好。 max_connections=1024 auto_increment_increment = 1 auto_increment_offset = 1 back_log = 3000 binlog_cache_size = 128KB binlog_checksum = CRC32 binlog_row_image 阅读详情
在前三期介绍了RDS for MySQL参数优化,锁问题以及延迟优化最佳实践之后,本期将介绍存储空间相关的最佳实践。

存储空间是RDS很重要的一个指标,在RDS的工单问题中,空间问题的咨询可以排在top 5,当RDS的实际使用空间超过了购买的空间后,实例就会被锁定了,这样就会导致应用无法再写入,更新数据,造成应用的报错。在RDS的控制台中可以设定空间的报警阀值,当实例空间到达报警阀值后用户就会收到报警短信,这个时候用户则需要对判断当前的空间增长是否合理。如果增长合理则需要对实例的进行弹性升级,这里需要指出的是弹性升级分为两种,一种是本地升降级,该类升级是实例所在的主机磁盘空间充足,足以容纳升级所需的空间,这个时候的升级非常迅速,而且对应用毫无影响;第二种是跨机升级,该类升级时实例所在的主机剩余磁盘空间不足以容纳升级所需的空间,那么就需要将实例迁移到其他磁盘资源足够的主机上,这时需要的时间可能会很长,取决于实例的总空间大小,因为迁移过程涉及将备份拷贝还原到新的主机上,同时还要考虑新实例与旧实例的数据同步问题,那么这一些因素都会导致升级时间较长,最后升级结束时候数据库中的已有连接会全部断开(备注:高安全访问链路没有此问题)。如果增长不合理,则需要进行快速的判断问题出现在那,

screenshot

则需要我们了解RDS的空间组成到底包括了哪些。在RDS控制台中可以看到空间的组成分为了5部分,分别为:磁盘总空间,数据空间,日志空间,临时文件空间,系统文件空间。
screenshot

接下来我们将一一介绍一下这些文件组成。
一. 数据文件:
顾名思义该文件空间则是指的存放用数据的文件,对应到数据库中就是一张张的表,表的组成主要包括:数据和索引两类,所以当你看到你的数据文件占用实例的空间非常多的时候,你需要看一下到底是哪一张表占用了我的空间,用户可以通过数据库的数据字典找到系统中占用最大的表:
select TABLE_SCHEMA,TABLE_NAME,INDEX_LENGTH/1024/1024 as index_M,DATA_LENGTH/1024/1024 as data_M from TABLES order by (INDEX_LENGTH+DATA_LENGTH) desc limit 10
凡事预则立,不预则废,我们可以未雨绸缪,在设计应用的初期就考虑好系统的存储:
1. 未来数据的增长趋势,决定磁盘的空间大小;
2. 数据的生命保留周期,决定是否进行数据删除或归档;
3. 设计表选用合理的数据类型,字段大小,存储引擎,进行分区还是分表;
下图的案例中,数据空间占用了实例大量的空间,那么可以通过上述方法定位数据库中到底是那些张表占用空间导致的问题:
screenshot
常见的空间问题:
1. 对表进行数据删除后空间不会进行释放
最佳实践:需要对表进行重建,重建的方法:Optimize table xxxxx,该方法在5.6以下会导致锁表,RDS 5.6支持在线重建。
2. 大表索引占用的空间比数据空间还大
最佳实践:需要将表中无用或者重复的索引删除,删除索引需要特别注意该索引是否还在使用。
3. 大表主要用作日志型业务数据存储,基本都是插入,很少查询
最佳实践:可以使用tokudb引擎将表中的数据进行压缩,通常压缩效率在3倍以上,注意使用tokudb引擎需要调整tokudb的buffer,可参考参数优化loose_tokudb_buffer_pool_ratio。
二. 日志文件:
RDS MySQL采用主从M-M的高可用架构,其主备之间的数据同步依靠binlog日志。为了减少binlog日志对用户的空间的占用,RDS会定时把日志备份到oss中,然后将本地的binlog清除。当日志空间出现异常的时候,如下图,由于应用写入数据压力过大,导致binlog日志增加的速度大于了RDS上传到oss的速度,造成了binlog日志增长迅猛,这时候需要用户对数据库进行优化,减小对数据库的变更操作。
screenshot
1. 曾经看到这样的案例,应用频繁的对表进行更新,但是在该表上有较多的大字段,由于在row格式下,binlog会记录整行记录,这样就导致了binlog增长非常迅猛,详细可以参考Mysql大字段的频繁更新导致binlog暴增。所以在应用的设计初期,就要避免使用大字段:varchar(8000),text,blob,clob等。
2. 还有一种情况可能是主备的复制卡主或者中断,则会导致主库的binlog没有传递到备库,那么这个时候binlog会一直在主库堆积,那么就需要提工单要求尽快处理了。
三. 临时文件:
临时文件通常可以理解为数据库做一个大的操作,由于内存不足,数据库需要将内存中的文件写到磁盘上,这样则有可能导致临时文件写的非常大,通常出现这种情况的时候,数据库在做大的排序操作(order by,group by,distinct)。下图的案例中,由于数据库中一条order by的语句频繁的执行,但是排序sql没有索引,导致了临时文件的频繁写操作:
screenshot
1. 当临时空间上涨原因是SQL排序导致的时候,可以通过show processlist快速找出排序的SQL,然后kill 掉SQL;
2. 同时对排序的sql添加合适的索引,避免排序,这是治根的办法,避免数据库中出现排序的SQL;
3. 为了避免排序消耗的空间过大,可以设置临时空间的大小,具体可以参考RDS参数优化loose_rds_max_tmp_disk_space;
四. 系统文件:
系统文件是每个数据库在安装的时候会初始化一些系统文件,这些系统文件是数据库正常运行的前提,mysql:ibdata1,ib_logfile0,下面的这幅图反映了 “其他文件”占用达到了非常多的问题,可以参考:ibdata1文件持续增加的问题定位
screenshot
1. ibdata1文件中大量的都是undo_log,建议将版本升级到5.6以上有独立的purge线程可以很快的回收掉undo log,可以单独设置undo tablespace文件,避免与ibdata1混用在一起;
2. 同时也可以采用逻辑迁移的方式,重建ibdata1文件;
3. 数据库中要注意未提交的事务对undo的影响,监控数据库中的INNODB_TRX视图。

综上所述,空间问题也是一个比较复杂的问题,但是如果我们能够在系统设计之初遵循一些最佳实践,那么我们还是能够很好的处理掉这些问题,祝你玩得开心,用得放心。

扫我,和云栖在线交流

【云栖快讯】首届阿里巴巴在线技术峰会,将于7月19日-21日20:00-21:30在线举办。峰会邀请到阿里集团9位技术大V,分享电商架构、安全、数据处理、数据库、多应用部署、互动技术、Docker持续交付与微服务等一线实战经验,解读最新技术在阿里集团的应用实践。  详情请点击



本文转自云栖社区:https://yq.aliyun.com

MySQL大表优化方案 背景 阿里云RDS FOR MySQL(MySQL5.7版本)数据库业务表每月新增数据量超过千万,随着数据量持续增加,我们业务出现大表慢查询,在业务高峰期主业务表的慢查询需要几十秒严重影响业务 方案概述 一、数据库设计及索引优化 MySQL数据库本身高度灵活,造成性能不足,严重依赖开发人员的表设计能力以及索引优化能力,在这里给几点优化建议 时间类型转化为时间戳格式,用int类型储存,建索引增加查询效率 建议字段定义not null,null值很难查询优化且占用额外的索引空间 使用TINYINT类型代替枚 阅读详情

相关推荐

5G NR 双连接与载波聚合:PCell、SCell、PScell、SpCell 角色全解析

本文全面解析了5G NR中双连接与载波聚合技术的关键概念,详细介绍了PCell、SCell、PScell和SpCell的角色与功能。通过实际案例和配置示例,帮助读者理解这些小区在提升网络覆盖和速率方面的作用,以及在实际组网中的优化策略。

weixin_33220360的博客 375

如何解决临时空间暴增导致磁盘满问题?

报错信息: Cannot create temp file ...: No space on device 或者 实例因磁盘空间暴增,导致磁盘满而锁定 解决方案: 这种情况可能是由于嵌套SQL、多表关联SQL编写不当,导致的大量内存溢出磁盘。 对于PPAS: 在数据库中执行:rds_set_conf_for_all_roles('temp_file_li...

weixin_33885253的博客 751

linux下docker 部署onlyoffice社区版

Onlyoffice 是一款功能丰富的在线 Office 工具,类似 WPS 和 微软的 Office 套件。OnlyOffice Workspace 是由 OnlyOffice 推出的基于云计算的企业级在线协作办公平台,由文档服务(Document Server)、控制面板(Control Panel)、社区服务(Community Server)和邮件服务(Mail Server)四个组件构成,提供了文档、项目、成员、邮件等功能模块,支持文档多人协作、历史版本控制等功能,旨在帮助用户提高工作效率和工作质

axiaowua的博客 2382

解决阿里云数据库RDS报错The table '/home/mysql/data3015/tmp/#sql_13975_23' is full

查询任何一条语句都显示 The table '/home/mysql/data3015/tmp/#sql_13975_23' is full 查看了下数据库利用磁盘空间没有满, 阿里云的处理方式: 1. 出现这个错误信息的原因 在SQL查询进行 group by、order by、distinct、union、多表更新、group_con...

reblue520的专栏 1641

ThinkPad T14 Gen 2与T14P系列对比

表格您的需求推荐机型日常办公、出差、文档处理、视频会议✅(够用、轻便、便宜)视频剪辑、3D建模、编程编译、AI训练、高色准设计✅(性能强、屏幕好、扩展佳)想要未来 5 年不换机✅T14p预算低于 5000 元✅T14 Gen 2(或考虑 T14 Gen 3/4)T14p 2025 款 ≠ 小改款,而是架构级升级它从“高性能笔记本”进化为“AI 移动工作站”,核心差异在于NPU + Ultra 平台 + 全面屏显 + 超长续航。如果您从事AI 开发、视频创作、工程仿真、多任务编程。

tecoes的博客 2742

基于51单片机的多功能计算器全套设计

当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且人脑比较容易出错。计算器作为一种快速通用的计算工具方便了用户的使用。计算器可谓是我们最亲密的电子伙伴之一。本设计着重在于分析计算器设计开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。 本设计是以STC89C52单片机为核心的计算器模拟系统设计,输入采用5×8矩阵键盘,可以进行加、减、乘、除等十几种数字运算,同时支持括号

runweipa的博客 1743

RDS MySQL 与 普通 MySQL 的区别

RDS MySQL 与 普通 MySQL 的区别

bsklhao的博客 944

时序数据库避坑指南:TDengine与IoTDB在车联网场景的7个关键对比

本文对比了时序数据库TDengine与IoTDB在车联网场景下的7个关键差异,包括数据模型设计、边缘-云端协同能力、车规级函数库、存储压缩算法等。通过真实案例和性能测试,帮助企业在新能源汽车大数据处理中选择合适的时序数据库,优化存储成本和实时告警性能。

rust6ferris的博客 453

mysql存储空间优化_MySQL 最佳实践:空间优化

原标题:MySQL 最佳实践:空间优化原文出处: 阿里云RDS-数据库内核组在前三期介绍了RDS for MySQL参数优化,锁问题以及延迟优化最佳实践之后,本期将介绍存储空间相关的最佳实践。存储空间是RDS很重要的一个指标,在RDS的工单问题中,空间问题的咨询可以排在top 5,当RDS的实际使用空间超过了购买的空间后,实例就会被锁定了,这样就会导致应用无法再写入,更新数据,造成应用的报错。在R...

weixin_33595018的博客 535

R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

data+scenario+science+insight 835

性能测试能力提升-线程、并发、吞吐量、TPS、QPS、响应时间

接着上一篇的知识:性能测试能力提升-关于性能测试,本篇文章,我们将主要介绍以下几方面的知识: 线程数&并发用户数 相对并发&绝对并发 吞吐量 TPS&QPS 响应时间

程序员小杨哥的博客 4589

玄惭 mysql_阿里云数据库专家玄惭的“武功”全记录之最佳实践、双十一特别篇...

原标题:阿里云数据库专家玄惭的“武功”全记录之最佳实践、双十一特别篇专题简介玄惭,真名罗龙九,阿里云DBA专家,负责阿里云RDS线上稳定以及专家服务团队。他经历过阿里历年双11实战考验,积累了7年对阿里云数据库用户的运维、调优、诊断等丰富DBA经验。本专题集结了玄惭排查经验、性能优化心、最佳实践以及其他思考。以下21篇文章只提取了摘要部分,文章详细内容请点击【阅读原文】进入查看。最佳实践1. RD...

weixin_30611667的博客 415

【CANdelaStudio编辑CDD】-1.2-给$10服务SessionControl创建一个新Session会话并修改Session state machine会话状态机(UDS诊断)

前一篇:【UDS诊断描述文件CDD】-1.1-ISO_14229中$10服务理论部分https://blog.csdn.net/qfmzhu/article/details/120375515案例背景: 在CDD中如何给$10服务创建一个新的Session会话; 在CDD中如何给$10服务修改Session state machine会话状态机。 目录 1 查看$10服务中已有的Session会话​ 2 查看$10服务中已有的Session state machine会话状态机 3 在$10...

「汽车电子助手」的博客 6076

macbook服务器文件夹在哪里找,mac找不到mysql数据库文件位置

mac找不到mysql数据库文件位置 内容精选换一换占用云数据库RDS实例的磁盘空间的日志及文件如下表:随着业务数据的增加,原来申请的数据库磁盘容量可能会不够用,您需要为云数据库RDS实例进行扩容。针对数据空间过大,可以删除无用的历史表数据进行释放空间(DROP或TRUNCATE操作,如果是执行DELETE操作,需要使用OPTIMIZE TABLE来释放空间);如果没有可删除的历史数据,需DLV提...

weixin_39883374的博客 797

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

mysql查询所有空间如何优化_MySQL · 最佳实践 · 空间优化

在前三期介绍了RDS for MySQL参数优化,锁问题以及延迟优化最佳实践之后,本期将介绍存储空间相关的最佳实践。存储空间是RDS很重要的一个指标,在RDS的工单问题中,空间问题的咨询可以排在top 5,当RDS的实际使用空间超过了购买的空间后,实例就会被锁定了,这样就会导致应用无法再写入,更新数据,造成应用的报错。在RDS的控制台中可以设定空间的报警阀值,当实例空间到达报警阀值后用户就会收到报...

weixin_39581845的博客 158

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

rds mysql 磁盘空间,RDS MySQL 空间问题的原因和解决

other_size- 系统文件和临时文件使用空间data_size- 数据文件使用空间binlog_size- Binlog 文件占用空间注:获取实例诊断报告的步骤请参考如何访问RDS 实例诊断报告。2. 解决RDS 实例支持单独升级磁盘空间,升级磁盘空间是解决空间问题的有效方式之一。下面说明不升级空间的情况下解决空间问题的方法。2.1 Binlog文件Binlog 文件记录实例的事务信息,是 ...

weixin_42452580的博客 745

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

RDS-MYSQL,这个RDS是什么?和mysql有什么区别?

的中文是关系型数据库服务。它是一种托管式的云数据库服务。云服务商(如阿里云、腾讯云、AWS)在底层物理服务器上帮你安装好数据库软件(如MySQL、PostgreSQL、SQL Server),然后通过网络提供一个数据库实例给你用。你不需要关心底层硬件和软件维护,只需要专注于你的业务和数据库的逻辑操作(建表、SQL查询等)。

qq_15821487的博客 1722

rds mysql 磁盘空间_当 Amazon RDS for MySQL 所用存储超出预期时优化磁盘存储

如何解决 Amazon RDS MySQL 数据库实例使用的存储超出预期的问题?上次更新时间:2019 年 11 月 14 日我在 MySQL 上的 Amazon Relational Database Service (Amazon RDS) 数据库实例使用的空间超出预期。为什么会发生这种情况,我该如何优化磁盘存储?解决方法您可以使用 FreeStorageSpaceAmazon CloudWa...

weixin_39861918的博客 468

阿里云mysql容量_阿里云RDS的mysql数据库占用空间超过90%的处理

阿里云RDS数据库最大支持2T,目前已经占用了90%,如果进行分库或者迁移比较麻烦,思路是找出占用空间过大的日志或不重要的文件进行删除操作查询所有数据库占用磁盘空间大小的SQL语句:show binary logs;show variables like '%log%';set global expire_logs_days = 10;select TABLE_SCHEMA, concat(tru...

weixin_27923353的博客 1795

AWS RDS & ElasticCache 监控可观测最佳实践

本文将深入探讨如何在电商场景下通过观测云对亚马逊云科技 RDS(MySQL) 和 ElasticCache(Redis)进行有效的性能监控和优化。

观测云的博客 1475

空间日志代码_【AWS 案例】RDS MySQL的日志管理

敏捷云是AWS全球核心合作伙伴,我们致力于为企业提供云迁移、成本优化、安全合规及托管运维服务。敏捷云将与AWS一起为中国企业保驾护航,让广大用户拥有优质的云端应用。 今天我们与大家分享AWS的RDS MySQL的日志管理。 数据库日志是分析研究业务状态的参考资料,也是发生事故或审计时,可追溯检查的最具可靠性和权威性的原始记录,是寻找问题根源的重要的证据...

weixin_39782394的博客 891

AWS RDS - MySQL 存储空间占用分析

前言 不论是我们自建的MySQL数据库还是使用云数据库,都会遇到存储空间的相关问题,当存储满了之后,数据库可能会hang住甚至是crash。因此监控存储空间是非常有必要的。对于自建的数据库我们可以登陆到实例上进行排查,对于云数据库来说,由于用户无法接触到底层实例,因此在SQL层面进行排查是非常必要的。 数据库实例上的空间用于以下方面 用户创建的数据库[create database csdn] binlog general log & slow log & error log redo

chuckchen1222的博客 2629

Seelen UI:把 Windows 桌面调成你说了算的样子

会议还有 10 分钟开始,你想把声音从扬声器切到蓝牙耳机。点开开始菜单、翻到设置、再进系统、再到声音输出,5 下点击之后,会已经开始了。这就是 Windows 桌面的日常。Seelen UI 是一个完全自定义的 Windows 桌面环境,把"找应用、切设备、排窗口、看托盘"这些事,全部压到一次按键或一次点击以内。 ## 敲 2 个字符,应用就出来 找应用,默认流程要三步:点开始菜单、找首字母、

gitblog_07580的博客 357

mysql+空间数据+显示不出来_RDS MySQL 空间问题的原因和解决

RDS MySQL 实例日常使用中随着实例的使用,会出现空间使用告警甚至超过实例限额被锁定的情况。比如:1. 原因Binlog 文件占用高数据文件占用高临时文件占用高系统文件占用高实例空间使用情况可以在 DMS 诊断报告中查看:ins_size- 实例整体空间other_size- 系统文件和临时文件使用空间data_size- 数据文件使用空间binlog_size- Binlog 文件占用空间...

weixin_33479485的博客 354
上一篇: 使用GPUImage实现视频滤镜
云栖社区
博客等级 码龄11年 121粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值