Welcome 微信登录

首页 / 数据库 / MySQL / 存储方式与介质对性能的影响

摘要数据的存储方式对应用程序的整体性能有着极大的影响。对数据的存取,是顺利读写还是随机读写?将数据放磁盘上还将数据放flash卡上?多线程读写对性能影响?面对着多种数据存储方式,我们如何选择?本文给大家提供了一份不同存储模式下的性能测试数据,方便大家在今后的程序开发过程中可以利用这份数据选择合适的数据存储模式。TAG存储性能,innodb性能,存储介质

目录

目录… 1简介… 1存储性能分析… 2测试程序说明:… 2存储测试数据:… 2Mysql innodb性能测试… 4Mysql(InnoDB)刷盘策略… 6c/s模式通信性能… 6直接文件存储… 7文件IO方式… 7完全随机写还是跳跃,5倍的性能差距… 8多线程随机读、处理速度、响应时间… 9系统缓存… 10系统缓存相关的几个内核参数… 10dirty页的write back. 10总结… 11

简介

数据的存储方式对应用程序的整体性能有着极大的影响。对数据的存取,是顺利读写还是随机读写?将数据放磁盘上还将数据放flash卡上?多线程读写对性能影响?面对着多种数据存储方式,www.linuxidc.com 我们如何选择?本文会对不同存储方式做详细的性能测试,以提供给大家一份不同存储方式下的性能测试数据为主,同时会简单介绍各种存储方式之间的性能差异。

存储性能分析

影响储存速度有各个方面的原因,包括存储介质、读写盘方式以及硬件环境对读写盘时的影响。这里主要分享存储速度的一些调研结果。

硬件环境如下:

CPU:      INTER Nehalem E5620 2.4GHZx2内存:     PC-8500 4GB*8硬盘:     300G 10k*2, RAID:1Flash:    SSD 160GB_MLC X25-M G2×6网卡:     千兆数据量:117G

测试程序说明:

测试共分两套程序:
  1. A. 存储测试
a)         存储测试程序均使用pread/pwrite进行存储测试,块链遍历速度采用frs开发的块链库进行。b)         为了减少随机读写时系统缓存带来的影响i.              将数据量增大至117Gii.             每次数据只被测试一次iii.            程序入口处清内存c)         测顺序读写时,一次读写所有数据。d)         测随机读写时,每次读4KB,读381MB。
  1. B. 网络性能测试
a)         采用ub + ubrpc实现压力工具的服务器端和客户端。b)         UBSVR_NODELAYc)         常用的Idl规范d)         对两个不同大小的包请求进行测试

存储测试数据:

磁盘顺序读:145.59MB/s随机读:0.91MB/s  (每次读4KB,读381MB)顺序写:83.1MB/s随机写:0.34MB/s  (每次写4KB,  写381MB)Flash顺序读:61.5MB/s随机读:14.9MB/s  (每次读4KB,读381MB)顺序写:59.8MB/s随机写:1.93MB/s  (每次写4KB,  写381MB)内存顺序写:1655MB/s随机写:1496MB/sEg: 块链遍历速度1000万元素, 565582 us磁盘与flash卡的顺序读写性能对比(单位MB):
磁盘与flash卡的随机读写性能对比(单位MB):
对比磁盘和flash卡的随机读写性能,我们可以看到:对于写操作而言,其在磁盘和flash卡上的性能差异较小,且事实上其性能差异会随着随机写时每次写入的数据量以及flash卡块大小等其它因素而产生波动;同时,在带写优化的flash上,当将数据写入flash卡时,数据会先写到一块buffer中,当满足一定条件(如buffer满)后,会将buffer的数据刷入flash,此时会阻塞写,因此会带来性能抖动。所以,当应用程序的多数操作是写入操作时,若没有flash卡也可以勉强将数据放到磁盘上。但是相反,从测试结果看,在磁盘和flash卡上的随机读性能有着8倍甚至更多的差距,所以当程序读磁盘操作相当多时,把数据放到flash卡上是一个比较好的选择。比如,对于一个随机查询较多数据库应用程序,我们可以考虑把数据库的存储文件放到flash卡上。另一方面,我们可以直观地看到,无论顺序读还是顺序写,在磁盘上的速度都远远高于在flash卡上的速度。所以如果程序所需的数据是从磁盘一次载入,载入后对数据的修改都是内存操作,不直接写盘,当需要写盘时,也是一次将内存中的数据dump到磁盘上时。我们都应该将数据放到磁盘,而不是flash卡上。
  • 1
  • 2
  • 3
  • 4
  • 下一页
MySQL报错:two many connections/two many open files的解决方法MySQL中操作系统级别错误代码与其含义相关资讯      数据库 
  • 数据库范式详解  (06/20/2014 08:59:37)
  • rman 创建catalog实验及说明  (10/07/2012 19:00:24)
  • SYSTEM用户删除后怎么重新创建和原  (09/09/2012 10:00:38)
  • 分布式数据库:dblink  (10/27/2012 15:57:32)
  • AutoMySQLBackup实现数据库定期备  (09/14/2012 08:08:02)
  • 利用dbstart和dbshut脚本自动启动  (08/21/2012 06:16:21)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图