`
suoyihen
  • 浏览: 1358961 次
文章分类
社区版块
存档分类
最新评论

MySQL Innodb数据库性能实践——热点数据性能

 
阅读更多

对于大部分的应用来说,都存在热点数据的访问,即:某些数据在一定时间内的访问频率要远远高于其它数据
常见的热点数据有“最新的新闻”、“最热门的新闻”、“下载量最大”的电影等。

为了了解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的性能就这么高,因为为了能够对比,测试时做了很多准备工作,测试操作也是比较特殊的



分享到:
评论

相关推荐

    Mysql InnoDB删除数据后释放磁盘空间的方法

    Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长。 如果在创建数据库的时候设置innodb_file_per_table=1,这样InnoDB会对每个表创建一个数据文件,...

    Mysql 的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内存...

    数据库-Mysql剑谱之数据库引擎.docx

    ——老子 这里简单谈谈数据库连接引擎那点事儿 在数据库实际操作过程中,我们很少涉及到数据库引擎对象的事情,一般情况在创建数据库的时候都使用默认的InnoDB数据库引擎,那么到底什么是数据库引擎,有什么样的...

    MySQL数据库运维视频教程.zip

    目录网盘文件永久链接 MySQL线上SQL捕获与分析 MySQL数据库运维--第1周.mp4 1.机器选型&系统规划.ppt MySQL数据库运维--第2周.mp4 2.安装部署.ppt MySQL数据库运维文案--第3周.mp4&doc ...MySQL实时数据.....

    管中窥豹——MySQL(InnoDB)死锁分析之道

    管中窥豹——MySQL(InnoDB)死锁分析之道 阿里巴巴高级数据库专家

    C++程序设计实践项目——学生信息管理系统,基于Qt+MySQL.zip

    performance_schema:自MySQL 5.5版本引入,用于收集服务器性能数据,帮助诊断和优化系统性能。 test(非必要):默认提供的测试数据库,通常用于学习和实验,生产环境中可考虑删除。 sys(自MySQL 5.7版本):...

    2013中国数据库大会ppt(1)

    数据开发的工程化实践——强化您的数据开发过程.pdf 移动互联网下 DW/BI的转型 应运而生的金山快讯平台.pdf 大数据,商业智能的挑战.pdf 云端漫步——利用Amazon AWS构建可伸缩的数据分析平台.pdf 分享dba团队管理和...

    MySQL数据库:表的字段类型.pptx

    理解 —— MySQL支持的数据类型; 表的字段类型 MySQL支持的类型 MySQL支持多种类型,大致可以分为三类: 数值类型 日期和时间类型 字符串(字符)类型。 数值类型 表的字段类型 MySQL支持所有标准SQL数值数据类型。 ...

    2013中国数据库大会ppt(3)

    数据开发的工程化实践——强化您的数据开发过程.pdf 移动互联网下 DW/BI的转型 应运而生的金山快讯平台.pdf 大数据,商业智能的挑战.pdf 云端漫步——利用Amazon AWS构建可伸缩的数据分析平台.pdf 分享dba团队管理和...

    mysql金典教材——9本经典合集4

    7.MySQL技术内幕InnoDB存储引擎 8.MySQL性能调优与架构设计--全册 9.High.Performance.MySQL.3rd.Edition.Mar.2012 九本合集,全都是pdf文件。(所有文件只需要2分哦,一共分6个文件上传) 分别为: mysql.part1.rar...

    2013中国数据大会ppt(2)

    数据开发的工程化实践——强化您的数据开发过程.pdf 移动互联网下 DW/BI的转型 应运而生的金山快讯平台.pdf 大数据,商业智能的挑战.pdf 云端漫步——利用Amazon AWS构建可伸缩的数据分析平台.pdf 分享dba团队管理和...

    数据库开发——MySQL——慢查询优化

    一、正确使用索引 1.索引未命中 并不是说我们创建了索引就一定会加快查询速度,若想利用索引达到预想的提高查询速度的效果,我们在添加索引时,必须遵循以下问题 范围问题,或者说条件不明确,条件中出现这些符号或...

    Java性能调优实战——覆盖80%以上的Java应用调优场景

    模块四热点问题解答26讲单例模式:如何创建单一对象优化系统性能27讲原型模式与享元模式:提升系统性能的利器32讲MySQL调优之SQL语句:如何写出高性能SQL语句33讲MySQL调优之事务:高并发场景下的数据库事务调优34讲...

    2013年中国数据库大会PPT第一部分

    15.eXtremeDB内存数据库性能提升方案分享.pdf 16.运用之妙 存乎一心—— Oracle优化器案例与算法解析.pdf 17.DM7 MPP架构——同时满足OLAP与OLTP需求.pdf 18.SAP 让大数据飞翔.pdf 19.阿里数据库关键技术.pdf 20....

    PHP程序设计课程大作业——基于PHP、MySQL的数码商城.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    解析MySQL8.0新特性——事务性数据字典与原子DDL

    db.opt:数据库元数据信息 frm:表元数据信息 par:表分区元数据信息 TRN/TRG:触发器元数据信息 ddl_log.log:DDL过程中产生的元数据信息 (2)mysql库下的非InnoDB系统表 mysql&gt; select table_schema,table_name...

    新发布:兼容 MySQL 的云原生数据库 MyTopling 使用教程

    MyTopling 是基于 ToplingDB ,兼容 MySQL 的 云原生数据库,ToplingDB 和 MyTopling 的关系,相当于 InnoDB 和 MySQL 的关系。 MyTopling 是真正的云原生数据库,架构上基于存储计算分离,并且实现了前台计算与后台...

Global site tag (gtag.js) - Google Analytics