对于大部分的应用来说,都存在热点数据的访问,即:某些数据在一定时间内的访问频率要远远高于其它数据。
常见的热点数据有“最新的新闻”、“最热门的新闻”、“下载量最大”的电影等。
为了了解MySQL Innodb对热点数据的支持情况,我进行了基准测试,测试环境如下:
【硬件配置】
硬件
|
配置
|
CPU
|
Intel(R)Xeon(R)CPUE5620主频2.40GHz,物理CPU2个,逻辑CPU16个
|
内存
|
24G(6块*4GDDR31333REG)
|
硬盘
|
300G*3个,SAS硬盘15000转,无RAID,有RAID卡,且开了回写功能
|
OS
|
RHEL5
|
MySQL
|
5.1.49/5.1.54
|
【MySQL配置】
配置项
|
配置
|
innodb_buffer_pool_size
|
4G
|
innodb_log_file_size
|
200M
|
innodb_log_files_in_group
|
3
|
sync_binlog
|
100
|
innodb_flush_log_at_trx_commit
|
2
|
【热点数据模型】
为了模拟热点数据主要存储在内存中的情况,使用范围查询将前20%数据作为热点数据加载到内存,例如:SELECTCOUNT(*)FROMBT_KV_SHORT_INT_CHAR_10KWWHEREcol1<20000000
项目
|
模型
|
表记录数
|
1KW(3G),2KW(6G),5KW(15G),10KW(30G)
|
Key
|
INT
|
Value
|
CHAR(250)
|
热点数据
|
占总数据20%
|
性能测试结果如下:
【查询】
详细分析如下:
==>当热点数据小于Innodbbufferpool时(1KW/2KW/5KW),查询操作的性能很高,和表数据小于Innodbbufferpool时的性能相近;
==>当热点数据大于Innodbbufferpool时(10KW),查询的性能下降明显;
==>热点数据访问的总体性能优于随机访问;
【插入】详细分析如下:
==>当热点数据小于Innodbbufferpool时(1KW/2KW/5KW),性能随着热点数据的增长而逐渐下降,原因是当Innodbbufferpool接近饱和时,buffer管理需要进行更多的操作;
==>当热点数据超过Innodbbufferpool后(10KW),性能急剧下降,原因是磁盘IO已经成为性能瓶颈;
【更新】
分析同INSERT。
【删除】
分析如下:
==>和INSERT/UPDATE表现略微不同,当热点数据小于Innodbbufferpool时,性能变化不大,因为DELETE操作不需要生成新的Page,节省了buffer管理的操作;
==>当热点数据大于Innodbbufferpool时,性能下降较大,原因是此时磁盘IO已经成为性能瓶颈。
【总结】
Innodbbufferpool采用LRU的方式管理和淘汰数据,根据LRU算法,热点数据都会优先放入内存,因此热点数据的测试性能比随机访问的要高出不少。
但热点数据超出Innodbbufferpool后,磁盘IO成为性能主要瓶颈,性能会急剧下降。
【应用建议】
实际应用中涉及热点数据访问时,Innodb是一个高性能的较好的选择,但前提是要能够预估热点数据的大小,只有当热点数据小于Innodb buffer pool(即热点数据全部能够放入内存)时,才能够获得高性能。
注:
测试数据只为对比用,不代表一般情况下MySQL的性能就这么高,因为为了能够对比,测试时做了很多准备工作,测试操作也是比较特殊的
分享到:
相关推荐
Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长。 如果在创建数据库的时候设置innodb_file_per_table=1,这样InnoDB会对每个表创建一个数据文件,...
Mysql 的InnoDB引擎的相关笔记 1.0.MySQL架构到innoDB架构.md 1.1.0.InnoDB——简介.md 1.1.1.InnoDB——关键特性.md 1.2.0.InnoDB内存结构——缓冲池.md 1.2.1.InnoDB内存结构——log buffer.md 1.2.2.InnoDB内存...
——老子 这里简单谈谈数据库连接引擎那点事儿 在数据库实际操作过程中,我们很少涉及到数据库引擎对象的事情,一般情况在创建数据库的时候都使用默认的InnoDB数据库引擎,那么到底什么是数据库引擎,有什么样的...
目录网盘文件永久链接 MySQL线上SQL捕获与分析 MySQL数据库运维--第1周.mp4 1.机器选型&系统规划.ppt MySQL数据库运维--第2周.mp4 2.安装部署.ppt MySQL数据库运维文案--第3周.mp4&doc ...MySQL实时数据.....
管中窥豹——MySQL(InnoDB)死锁分析之道 阿里巴巴高级数据库专家
performance_schema:自MySQL 5.5版本引入,用于收集服务器性能数据,帮助诊断和优化系统性能。 test(非必要):默认提供的测试数据库,通常用于学习和实验,生产环境中可考虑删除。 sys(自MySQL 5.7版本):...
数据开发的工程化实践——强化您的数据开发过程.pdf 移动互联网下 DW/BI的转型 应运而生的金山快讯平台.pdf 大数据,商业智能的挑战.pdf 云端漫步——利用Amazon AWS构建可伸缩的数据分析平台.pdf 分享dba团队管理和...
理解 —— MySQL支持的数据类型; 表的字段类型 MySQL支持的类型 MySQL支持多种类型,大致可以分为三类: 数值类型 日期和时间类型 字符串(字符)类型。 数值类型 表的字段类型 MySQL支持所有标准SQL数值数据类型。 ...
数据开发的工程化实践——强化您的数据开发过程.pdf 移动互联网下 DW/BI的转型 应运而生的金山快讯平台.pdf 大数据,商业智能的挑战.pdf 云端漫步——利用Amazon AWS构建可伸缩的数据分析平台.pdf 分享dba团队管理和...
7.MySQL技术内幕InnoDB存储引擎 8.MySQL性能调优与架构设计--全册 9.High.Performance.MySQL.3rd.Edition.Mar.2012 九本合集,全都是pdf文件。(所有文件只需要2分哦,一共分6个文件上传) 分别为: mysql.part1.rar...
数据开发的工程化实践——强化您的数据开发过程.pdf 移动互联网下 DW/BI的转型 应运而生的金山快讯平台.pdf 大数据,商业智能的挑战.pdf 云端漫步——利用Amazon AWS构建可伸缩的数据分析平台.pdf 分享dba团队管理和...
一、正确使用索引 1.索引未命中 并不是说我们创建了索引就一定会加快查询速度,若想利用索引达到预想的提高查询速度的效果,我们在添加索引时,必须遵循以下问题 范围问题,或者说条件不明确,条件中出现这些符号或...
模块四热点问题解答26讲单例模式:如何创建单一对象优化系统性能27讲原型模式与享元模式:提升系统性能的利器32讲MySQL调优之SQL语句:如何写出高性能SQL语句33讲MySQL调优之事务:高并发场景下的数据库事务调优34讲...
15.eXtremeDB内存数据库性能提升方案分享.pdf 16.运用之妙 存乎一心—— Oracle优化器案例与算法解析.pdf 17.DM7 MPP架构——同时满足OLAP与OLTP需求.pdf 18.SAP 让大数据飞翔.pdf 19.阿里数据库关键技术.pdf 20....
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
db.opt:数据库元数据信息 frm:表元数据信息 par:表分区元数据信息 TRN/TRG:触发器元数据信息 ddl_log.log:DDL过程中产生的元数据信息 (2)mysql库下的非InnoDB系统表 mysql> select table_schema,table_name...
MyTopling 是基于 ToplingDB ,兼容 MySQL 的 云原生数据库,ToplingDB 和 MyTopling 的关系,相当于 InnoDB 和 MySQL 的关系。 MyTopling 是真正的云原生数据库,架构上基于存储计算分离,并且实现了前台计算与后台...