=======================================================================

SSD 特性

1、随机读能力非常好,连续读性能一般,但比普通 SAS 磁盘好;2、不存在磁盘寻道的延迟时间,随机写和连续写的响应延迟差异不大。3、erase-before-write 特性,造成写入放大,影响写入的性能;4、写磨损特性,采用 Wear Leveling 算法延长寿命,但同时会影响读的性能;5、读和写的 I/O 响应延迟不对等(读要大大好于写),而普通磁盘读和写的 I/O 响应延迟差异很小;6、连续写比随机写性能好,比如 1M 顺序写比 128 个 8K 的随即写要好很多,因为随即写会带来大量的擦除。

=======================================================================

SSD 基础知识

SSD(Solid State Drives)是固态硬盘,使用闪存颗粒来存储数据,闪存又可分为NAND Flash和NOR Flash,通常所说的SSD硬盘都使用NAND Flash芯片来存放数据。

NOR型存储内容以编码为主,其功能多与运算相关;

NAND型主要功能是存储资料。

Nor Flash:主要用来执行芯片上程序

优点:具有很好的读写性能和随机访问性能,因此它先得到广泛的应用;

缺点:单片容量较小且写入速度较慢,决定了其应用范围较窄。

NAND Flash:主要用在大容量存储场合

优点:优秀的读写性能、较大的存储容量和性价比,因此在大容量存储领域得到了广泛的应用;

缺点:不具备随机访问性能。

=======================================================================

SDD Flash规则

在对SSD中数据进行更改操作时,不能像HDD那样对原有数据进行覆盖更新,需要读取到整个页面的数据到缓存,然后更新缓存中的数据,再将更新后的数据写入到空的页面或已擦除的页面,将原有页面标示为无效。以页为单位进行数据写入,以Block为单位进行数据擦除。通常会将页设置为4KB,将Block设置为512KB。

每个Block的擦除次数有上限,擦除次数过多容易导致Block损坏。

=======================================================================

SSD 映射表(Mapping Table)

数据在实际存储单元的绝对地址被称为物理地址,数据在程序中使用的相对地址被称为逻辑地址,SSD在内部维护一张映射表,用来存储物理地址与逻辑地址的映射关系。

映射表使用DRAM(Dynamic Random Access Memory)来存放,方便快速访问,SSD会同时存放多份映射表,并且定期刷新映射表数据。

如果SSD因为断电等原因导致映射表损坏,就会导致整快SSD数据丢失。

=======================================================================

SSD 垃圾回收(Garbage Collection)

垃圾回收指将多块Block中的有效数据集中搬迁到新的Block上,将原有Block进行擦除以备新数据写入。

垃圾回收策略可分为主动垃圾回收策略和被动垃圾回收策略:

主动垃圾回收策略:通过周期性地任务来检查BLOCK的可用空间,主动对需要的BLOCK进行垃圾回收。

被动垃圾回收策略:当数据写入操作发生时,发现当前可用空间小于临界值,首先进行垃圾回收,然后再写入数据。

=======================================================================

SSD 磨损均衡(Wear Leveling)

由于每个BLOCK的擦除次数是有限的,即擦写寿命(Program/Erase Count,P/E值),为避免少数BLOCK被频繁擦除而导致损坏,因此广泛采用磨损均衡算法将写操作均匀分布到各闪存单元上,使得所有的闪存单元与整块盘的最大使用寿命保持在同以数据量级。

磨损均衡算法可分为两类:

动态WL,在对BLOCK进行擦写操作时,优先选择P/E值较低的BLOCK进行操作

静态WL,将P/E值降低的BLOCK数据移动到P/E值较高的BLOCK中存放。

=======================================================================

SSD 预留空间(Over Provisioning)

垃圾回收的前提是有足够的空闲空间来拷贝原BLOCK中有效数据,为避免因缺少空闲空间导致无法进行垃圾回收操作,需要预留一部分存储空间来备用。

预留空间除保证垃圾回收机制外,还用来存放SSD的系统数据如映射表、SSD固件、以及坏块信息等。

当预留空间值越大时,垃圾回收就会越快,写放大就会变小,整快盘的读写性能就会变得越好,但带来的坏处就是用户可用的空间变小。

另外SSD使用Spare Area(SA)区来标记坏块。

=======================================================================

SSD 写放大原因

假设需要在4K的数据页中追加2K的数据,先将该页现有数据读取到缓存,然后将2K新数据追加到缓存,然后挑选一个空的或者已擦除的页面来写入数据,将原数据页标记为无效。在选择空的活已擦除的页面时,如果触发"被动垃圾回收策略",需要将整个BLOCK中的有效数据读取到缓存,然后对整个BLOCK进行擦除,再将缓存中数据写入到BLOCK中,导致实际写入SSD中数据量远大于需求数据写入量,数据写入操作被放大,即SSD 写放大Write Amplification,简称WA。

容易引发SSD写放大场景:

1、SSD磁盘剩余空间较少,导致需要频繁进行垃圾回收释放资源

2、短时间内进行大量的数据删除和写入操作,SSD上存在大量需要回收的Block。

=======================================================================

SSD 断电保护

通常SSD会使用钽电容或者超级电容用作掉电后的供电设备,当检查到SSD断电后,电容设备提供电力来保证SSD将DRAM中缓存的数据写入闪存。

针对DRAM中数据,保护机制分为三种:

保护DRAM中所有数据

只保护DRAM中的用户数据

只保护DRAM中的映射表

如果断电保护机制失效,则很有可能导致SSD出现数据丢失,严重情况下会丢失所有数据。

=======================================================================

SSD与Linux IO调度

SSD在不同调度下的性能:

=======================================================================

摘抄自:

http://www.cnblogs.com/Christal-R/p/7230304.html

http://www.cnblogs.com/Christal-R/p/7246415.html

http://www.chinastor.com/baike/ssd/0322364312017.html

=======================================================================

mysql ssd 应用_MySQL Disk--SSD 特性相关推荐

  1. mysql 降序_MySQL 8 新特性之降序索引底层实现

    什么是降序索引 大家可能对索引比较熟悉,而对降序索引比较陌生,事实上降序索引是索引的子集. 我们通常使用下面的语句来创建一个索引: create index idx_t1_bcd on t1(b,c, ...

  2. mysql ssd优化_针对 SSD 的 MySQL IO 优化

    现在数据库标配基本都是SSD了,在使用SSD之前,对SSD进行了充分的测试,这其中当然包括最为关键的性能测试部分.下面就跟大家分享一下在SSD性能测试过程中遇到的一个问题和解决问题的思路. 我们的性能 ...

  3. 修改mysql+io算法_MySQL磁盘IO设置问题

    下面的部分内容来自<深入浅出MySQL>.老叶的视频.网上其他人的blog. 这里列出的是MySQL的一些非运行参数的优化部分,具体如下: (对于使用云主机的用户,下文中的部分优化方法是无 ...

  4. 你知道企业级SSD与消费级SSD的区别吗?

    [引语] 前两天,一位从事大数据工作的好朋友问我: "企业级SSD与消费级SSD的区别是什么?" "大数据中心能否采用消费级SSD?" 我想,大部分朋友应该都知 ...

  5. 固态硬盘SSD学习笔记:SSD综述

    一. SSD VS HDD SSD(Solid State Device):闪存介质+主控 HDD(Hard Disk Drive):马达+磁头+磁盘 方式 数据存储介质 读取写入 HDD 机械 磁盘 ...

  6. mysql 5.7_MySQL 5.7新特性介绍

    1. 介绍身处MySQL这个圈子,能够切身地感受到大家对MySQL 5.7的期待和热情,似乎每个人都迫不及待的想要了解.学习和使用MySQL 5.7.那么,我们不禁要问,MySQL 5.7到底做了哪些 ...

  7. mysql 汉编码 的选_peewee连接mysql汉语言数据编码_mysql

    peewee连接mysql中文数据编码 系统是win7 x64 python 2.7.6的site.py里面编码设定为 utf-8 py文件首行指定 #coding:utf-8 mysql 5.5.3 ...

  8. windows 新建mysql权限设置_Windows下设置MySQL安全权限_mysql

    注意:本文的内容涉及到修改NTFS磁盘权限和设置安全策略,请务必在确认您了解操作可能的后果之后再动手进行任何的修改. 文中提及的权限都是在原有权限上附加的权限. [修改步骤] 1.创建用户 创建一个名 ...

  9. mysql函数大全最小,MySQL函数一览_MySQL函数全部汇总

    前言 MySQL提供了众多功能强大.方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,从而更加灵活地满足不同用户的需求.本文将MySQL的函数分类并汇总,以便以后用到的时候可以随时 ...

最新文章

  1. 360浏览器登录_360浏览器登录统一操作系统UOS国产CPU首次实现高清视频在线播放...
  2. 脚本自动配置ssh互信
  3. 信息系统项目管理师-论文专题(四)进度管理论文写作
  4. 数据库SQL,技巧篇
  5. 转转转!java继承中的this和super
  6. jQuery 追加元素的方法如append、prepend、before、after
  7. Vivado生成bit文件布局失败解决
  8. 送货只服京东“特快送”:航空快件可送达近300个城市
  9. 传统新年元旦海报设计,必备高品质吉祥图案背景
  10. 使用WPF和.NET 6将Windows应用程序迁移到Windows on Arm
  11. go token验证_GitHub - goflyfox/gtoken: 基于gf框架的token插件,通过服务端验证方式实现token认证;...
  12. 第五章 单例模式(待续)
  13. 【QGIS】【OsGeo4w】安装方法
  14. cad2020打印样式放在哪个文件夹_打印机故障:打印一直出现乱码,什么原因?...
  15. 【Linux】在终端中粘贴字符时头尾出现“0~“和“1~“的特殊字符
  16. 简单粗暴理解与实现机器学习之聚类算法(四):模型评估、误差平方和SSE、“肘”方法 、轮廓系数法、CH系数
  17. 计算机数据备份到u盘,技术给你说Win10系统怎么把数据备份到U盘的完全处理手段...
  18. 刚生了宝宝后需要及时办理的6个证件
  19. 大数据hadoop新手快速入门视频教程 Hadoop学习视频教程
  20. 使用Python来分离或者直接抓取pcap抓包文件中的HTTP流

热门文章

  1. 用python画星空-用python画星空源代码是什么?
  2. 如何在vue中优雅的使用ocx控件:控件引用
  3. WinEdt教程 表格,图像,公式,段落
  4. mme 服务器位置,NB-IOT的网络架构简介
  5. GCD Expectation ZOJ - 3868 (容斥)
  6. 设计模式之代理模式(第二篇)
  7. ieda-自动引入局部变量(introduce local variable)快捷键
  8. 全屋智能抢占“中控”,华为、海尔、小米们谁离用户最近?
  9. Vue/vant——未登陆时清空购物车以及拦截未登录的状态拒绝进入购物车页面
  10. 前端将0到1的小数值转换成百分比