固态硬盘和机械硬盘的比较和SQLSERVER在两种硬盘上的性能差异
固态硬盘和机械硬盘的比较和SQLSERVER在两种硬盘上的性能差异
在看这篇文章之前可以先看一下下面的文章:
听说固态硬盘是高富帅的必备神器,本人为了提升工作效率和提高工作速度
这个月节衣缩食,终于也决定买了一块三星固态硬盘120G容量
这个固态硬盘拿在手里轻飘飘的, 好像里面什么东西都没有似的
废话少说,先上图

开机速度20秒左右

测试环境:Windows7,SQLSERVER2005个人开发者版 SP4

我这里用旧的硬盘希捷硬盘和新买的固态硬盘三星硬盘来比较
这次测试用到的测试软件:
ASSSDBenchmark_1.7_XiaZaiBa
http://files.cnblogs.com/lyhabc/ASSSDBenchmark_1.7_XiaZaiBa.zip
HDTune 5.0
http://files.cnblogs.com/lyhabc/HDTune5.0.rar
ATTO DiskBenchmark:
由于这篇文章:SSD固态硬盘详解说首次安装不能用GHOST版Windows7来安装
那我只能上网下载装机版镜像,并刻录成光碟,经过一番折腾终于安装好操作系统和SQLSERVER了
网上有很多4KB对齐的文章,例如下面所说:
GHOST11.5版本之前的 Ghost 装 Win7 会导致已有对齐的分区不对齐
Ghost 能用吗?
能用,只是 Ghost 11.5 之前的版本会导致即使原有分区是对齐的,Ghost 后不对齐
11.5 及之后版本 只要镜像创建于对齐的分区,恢复后也是对齐的。如果你不清楚你所使用 Ghost 的版本请最好不要使用。
-------------------------------------------------------------------------------------------------
用鲁大师显示一下硬盘信息
希捷硬盘

三星硬盘

关于性能问题:
由于是Windows7的系统,那么我的笔记本电脑瓶颈就在SATA2.0接口上
AHCI模式、TRIM指令、4KB对齐这些条件都没有问题
至于4KB这个对齐参数是不是可以达到性能最佳这个要看您的固态硬盘的闪存颗粒用的是哪一种
最好咨询一下卖家或者硬盘厂商,由于本人是固态硬盘的小白,为了装好系统尽快上班工作就不研究
这个参数了,直接设置为4KB
说明一下:这篇文章的测试结果仅供参考!!
IOPS
IOPS (Input/Output Operations Per Second),即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。
存储端(例如硬盘,磁盘阵列)的IOPS性能和主机端的IO是不同的,IOPS是指存储每秒可接受多少次主机发出的访问,
主机的一次IO需要多次访问存储才可以完成。
例如,主机写入一个最小的数据块,也要经过“发送写入请求、写入数据、收到写入确认”等三个步骤,也就是3个存储端访问。
4KB对齐是什么?
大家知道Windows是以扇区为读写单位的,一个扇区默认就是4096BYTE(4KB),8个512字节
您们可以看到下面的测试软件,多数以4KB为单位



而固态硬盘是以页为读写单位的,为了兼容机械硬盘,硬盘厂商做了一些设置使兼容机械硬盘,而这个设置就是4KB对齐
但是不同的固态硬盘内存颗粒,不一定就是4KB大小就可以对齐的
因为本人对固态硬盘还是小白,不过原理应该就是这个o(∩_∩)o
HDTune 5.0
HDTUNE只测试了读取忘记了测试写入,不好意思啊各位!
希捷硬盘


三星硬盘


ATTO Disk Benchmark
希捷硬盘

三星硬盘

AS SSD Benchmark
希捷硬盘
由于希捷硬盘测试到中途突然停止了,没有办法继续测试,AS SSD Benchmark这部分我们只测试三星硬盘
而且在下面文章中也提到:机械硬盘在AS SSD和CDM软件下测试意义不大。
参考文章:别低估成绩 和你解读8款硬盘检测软件
Seq:持续测试,AS SSD会先以16MB的尺寸为单位,持续向受测分区写入生成1个达到1GB大小的文件,
然后再以同样的单位尺寸读取这个,最后计算平均成绩而给出结果。测试一完毕,测试文件会立刻删除。
4K:随机单队列深度测试,测试软件会以512KB的单位尺寸生成1GB大小的测试文件,
然后在其地址范围(LBA)内进行随机4KB单位尺寸进行写入及读取测试,直到跑遍这个范围为止,最后同样计算平均成绩给出结果。
由于有生成步骤,本测试对硬盘会产生一共2GB的数据写入量。本测试完毕后,测试文件会暂时保留。
4K-64Thrd(64Thrd 64线程):随机64队列深度测试,软件则会生成64个16MB大小的测试文件(共计1GB),
然后同时以4KB的单位尺寸,同时在这64个文件中进行写入和读取测试,最后依然以平均成绩为结果。
本步骤也同样产生2GB的数据写入量。本测试一完毕,测试文件会立刻删除。
Acc.time(accurate精确的):数据存取时间测试,软件会以4KB为单位尺寸,随机读取全盘地址范围(LBA),
写入则以512B为单位尺寸,随机写入保留的1GB地址范围内,最后以平均成绩给出结果。

三星硬盘

数据库读写比较
先创建数据库和表,使用下面脚本,我们随便建立一个堆表
--测试脚本
USE master
GO
CREATE DATABASE testdisk
GO
USE testdisk
GO
--建立堆表
CREATE TABLE testdisktable(id INT ,NAME VARCHAR(5000))
GO
希捷硬盘
测试插入数据(10000条记录)
--测试插入
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
DBCC freesystemcache('ALL')
GO
SELECT GETDATE()
GO
DECLARE @i INT
SET @i = 1
WHILE ( @i < 10000 )
BEGIN
INSERT INTO [dbo].[testdisktable] ( [id], [name] )
VALUES ( @i, REPLICATE('s', 3000) )
SET @i = @i + 1
END
CHECKPOINT
SELECT GETDATE()
GO

(22:44:35.540) - (22:44:17.583)=大概18秒
两个时刻相减大概18秒
测试读取数据(10000条记录)
--测试读取
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
DBCC freesystemcache('ALL')
GO
SET STATISTICS IO ON
SET STATISTICS TIME ON
GO
SELECT *
FROM testdisktable
SET STATISTICS IO OFF
SET STATISTICS TIME OFF
GO
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 102 毫秒。 (9999 行受影响)
表 'testdisktable'。扫描计数 1,逻辑读取 5004 次,物理读取 0 次,预读 5004 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 SQL Server 执行时间:
CPU 时间 = 78 毫秒,占用时间 = 1108 毫秒。 SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
Logical reads:包含该语句从内存数据缓冲区中访问的页数和从物理磁盘读取的页数
---------------------------------------------------------------------------------------------------------
三星硬盘
测试插入数据(10000条记录)
--测试插入
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
DBCC freesystemcache('ALL')
GO
SELECT GETDATE()
GO
DECLARE @i INT
SET @i = 1
WHILE ( @i < 10000 )
BEGIN
INSERT INTO [dbo].[testdisktable] ( [id], [name] )
VALUES ( @i, REPLICATE('s', 3000) )
SET @i = @i + 1
END
CHECKPOINT
SELECT GETDATE()
GO

(12:50:04.847) - (12:50:02.150) =2秒多一点
两个时刻相减大概2秒多一点
测试读取数据(10000条记录)
--测试读取
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
DBCC freesystemcache('ALL')
GO
SET STATISTICS IO ON
SET STATISTICS TIME ON
GO
SELECT *
FROM testdisktable
SET STATISTICS IO OFF
SET STATISTICS TIME OFF
GO
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 5 毫秒。 (9999 行受影响)
表 'testdisktable'。扫描计数 1,逻辑读取 5004 次,物理读取 0 次,预读 5028 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 SQL Server 执行时间:
CPU 时间 = 125 毫秒,占用时间 = 651 毫秒。 SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

这两个硬盘的时间差异比较就是执行时间的差异比较和分析编译时间的差异比较
因为IO(读取数据页)无论是固态硬盘还是机械硬盘都是需要做的
但是分析编译时间和执行时间不一样
分析编译期间SQLSERVER需要编译中间代码,这个过程也是需要读取磁盘文件的
执行时间里包括从磁盘里读取数据,因为机械硬盘有寻道时间而固态硬盘没有
详细的大家可以看一下我这篇文章:带您理解SQLSERVER是如何执行一个查询的
总结
上面的测试结果有积极的参考意义,如果本人的笔记本电脑接口是原生SATA3.0的速度肯定会更快
打开网页的时候也很快,因为浏览器需要将cookies、缓存文件、图片下载到本地然后显示
自从换了SSD之后多年的老问题解决了,健步如飞了~
小贴士:三星固态硬盘在淘宝天猫买的不用600块,还包邮,卖家对我这种小白的态度也很好
有很多地方不明白也耐心教导o(∩_∩)o
三星 860 QVO 固态硬盘
https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9350764872635181512%22%7D&n_type=0&p_from=1
这款产品的1TB版本京东售价769元,价格低至7毛/GB,还有3年或最高1440TB写入的保修,让大家对其使用寿命和质量拥有极大信心。
正如三星 860 QVO SSD的宣传语写道“让TB容量SSD普及”,这便是该款产品的最大意义。至于读550MB/s,写520MB/s的优秀性能反而不是最重要的事了。
阿里云ECS 1.7TB本地固态盘

如有不对的地方,欢迎大家拍砖o(∩_∩)o
固态硬盘和机械硬盘的比较和SQLSERVER在两种硬盘上的性能差异的更多相关文章
- raid5两块硬盘离线怎么办? 强制上线失败如何恢复数据
服务器故障描述: 客户使用Dell 2850服务器组建了raid5磁盘阵列,阵列中包含有6块硬盘(SCSI硬盘,单盘容量300G),服务器操作系统为linux Redhat4:文件系统为ext3文件系 ...
- 服务器磁盘阵列数据恢复,raid5两块硬盘掉线数据恢复方法
[用户单位信息] 农业科学研究院某研究所 [磁盘阵列故障发生过程描述]客户的DELL MD1000服务器内置15块1TB硬盘搭建为RAID5磁盘阵列阵列,服务器在正常工作中有一块硬盘离线,管理员对磁盘 ...
- Raid5两块硬盘掉线可以恢复数据吗_raid数据恢复案例分享
本案例中发生故障的存储类型是HP P2000,虚拟化平台为vmware exsi,共有10块硬盘组成raid5(硬盘容量为1t,其中6号盘是热备盘),由于某些故障导致阵列中两块硬盘亮黄灯掉线,硬盘无法 ...
- 6块300G SCSI RAID5,两块硬盘损坏的数据恢复总结
[用户单位]XXXX网站[数据恢复故障描述]DELL POWEREDGE 2850服务器,内置6块300G SCSI硬盘 ,组成RAID5,安装LINUX REDHAT 4操作系统,存储大量照片,文件 ...
- 成功案例分享:raid5两块硬盘掉线数据丢失恢复方法
1. 故障描述 本案例是HP P2000的存储vmware exsi虚拟化平台,由RAID-5由10块lT硬盘组成,其中6号盘是热备盘,由于故障导致RAID-5磁盘阵列的两块盘掉线,表现为两块硬 ...
- 如何用两块硬盘做磁盘阵列的教程Raid 1
如今,市面上的大部分服务器都自带有阵列卡.只要有两块以上硬盘,我们就可以利用服务器自带的阵列卡做磁盘阵列.Raid 1 为例.Raid 1 是磁盘阵列的其中一个系列,将两块硬盘构成磁盘阵列,可以保证数 ...
- Windows 8.1硬盘安装Ubuntu 14.04双系统参考教程及多硬盘注意事项
本文来自:http://www.linuxidc.com/Linux/2015-08/122140.htm,此处仅做收藏. Windows 8.1硬盘安装Ubuntu 14.04双系统参考教程及多硬盘 ...
- 固态硬盘与机械硬盘 SQL Server 单表插入性能对比测试
测试环境
- 固态硬盘和机械硬盘双硬盘安装win10,提示无法找到系统
选择兼容模式,自己慢慢找,不同的主板所在的位置不同,大概是cms(兼容的意思)这个选项,选择enable就可以了
随机推荐
- #ifdef、#ifndef、#else、#endif执行条件编译
我们开发的程序不只在pc端运行,也要在移动端运行.这时程序就要根据机器的环境来执行选择性的编译,如对PC端编译PC端的程序,对移动端编译移动端的程序,这里我们就可以用两组条件编译. ...
- Android开发艺术探索学习笔记(四)
第四章 View的工作原理 4.1初识ViewRoot和DecorView ViewRoot是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成 ...
- list string 互转
List转字符串,用逗号隔开 List<string> list = new List<string>();list.Add("a");list.Add(& ...
- chromium浏览器开发系列第三篇:chromium源码目录结构
上两篇介绍了下载源码和编译源码,这次主要介绍chromium的源码目录结构,我也是通过源码和官网结合来跟大家说,如果有说的不准确的,欢迎交流. 另外,官网的不一定准确,他们其实也很懒,所以最主要还是靠 ...
- tomcat 配置文件server.xml 详解 Connector Engine Host Context
目录 一 server.xml 1.1 server 配置 1.2 service 配置 1.3 Executor 1.4 Connector 配置 1.5 Engine 其他tocmat 文章 一 ...
- 详解Java中的final关键字
本文原文地址:https://jiang-hao.com/articles/2019/coding-java-final-keyword.html1 final 简介2 final关键字可用于多个场景 ...
- es-02-elasticsearch安装及遇到的问题
最近因为工作需要, 又使用到了es, 版本已经从当年的2.4 更新到了6.3 基本上解压即用, elasticsearch 5.x 版本, 在 centos6下, 很多性能不能够发挥, 建议 cent ...
- postgresql进程及内存结
一.进程和内存架构图 postgresql数据库启动时,先启动一个postmaster的主进程,然后fork出一些辅助子进程. 二.主进程postmaster -bash-4.2$ which pos ...
- [Python学习笔记-001] 内置函数getattr()
如果某个实例foo有多个方法, 当对foo的每一个方法我们都需要使用try ... except ...进行包装的时候,内置函数getattr()可以用来精简代码. 1. getattr()的用法 # ...
- Deep learning with Python 学习笔记(2)
本节介绍基于Keras的CNN 卷积神经网络接收形状为 (image_height, image_width, image_channels)的输入张量(不包括批量维度),宽度和高度两个维度的尺寸通常 ...