一. 首先,回顾一下 SSD 的读写特性

(1)有限次数写;
       (2)随机读性能最好;
       (3)顺序读性能好;
       (4)顺序写性能差;
       (5)随机写性能最差。
从存储上来说,SQLServer 不同的内容有其特有的个性。

下面就TempDB,数据,索引,事务日志,分别列举他们各自的特点,分析他们是否适合及如何利用快速存取介质。

二. SQLServer 数据库如何使用快速存储

1. TempDB

特点:

(1)大量顺序写,随机写;
分析:TempDB 大量写操作的特性,可能会让SSD很快的被磨损;对可擦写次数有限的SSD来说,确实不是个好消息;
(2)如果能提升TempDB的读写性能,可以给整个数据库的运行效率带来很大的提升;
分析:TempDB 需要使用高速存储介质。
(3)不需要保证 TempDB 数据的安全,数据在重启后会自动清除;
分析:由于不用考虑其数据的固化及安全,因此,可以选择一些快速读写但无使用次数限制的介质;
            例如:RamDisk(用内存模拟磁盘)

策略:

(1)尽量考虑其他高速存储介质,例如,内存,借助RamDisk技术;
(2)如果用SSD,建议:
         a)单独使用一块SSD存放。即便该盘出故障,换块盘,或修改保存地址,重启SQLS,就可以再提供服务;       
         b)TempDB 分文件,尽量利用SSD的并发特性
                 CPU总核数 < 8  文件数等于CPU总核数;
                 CPU总核数 >= 8 文件数等于8;

2. 数据,索引

特点:

(1)顺序写
(2)随机读
分析:可以利用到SSD的优点

策略:

(1)建议使用SSD;
(2)使用文件组,将数据和索引分开;
(3)创建多个文件组,数据做分区(同样是想充分利用SSD的IO并发)

3. 事务日志

特点:

(1)离散的连续写;
(2)一个数据库只能有一个日志文件;
(3)安全性要求高;
分析:虽然是离散的连续写,但由于有buffer的存在,其实就是连续写。连续写式HDD的强项;

策略:

(1)事务日志建议使用HDD
(2)如果事务日志的写操作有瓶颈,则考虑使用SSD,但必须确保:
        a)使用企业级的SSD,做RAID10;
        b)选择有写缓存且有断电保护电路的SSD;

三. 推荐的使用架构

数据库中保存的毕竟都是重要的信息,有人会担心,万一哪天人品不好,SSD 数据盘真的出故障了,怎么办?

建议,使用读写分离的方式。在读库中使用SSD。这样既能保证数据安全,又能有效利用SSD的高效离散读特性。

 

SSD在SQLServer中的应用的更多相关文章

  1. 我是如何在SQLServer中处理每天四亿三千万记录的

    首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...

  2. SQLSERVER中NULL位图的作用

    SQLSERVER中NULL位图的作用 首先感谢宋沄剑提供的文章和sqlskill网站:www.sqlskills.com,看下面文章之前请先看一下下面两篇文章 SQL Server误区30日谈-Da ...

  3. C#批量插入数据到Sqlserver中的四种方式

    我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...

  4. Sqlserver中一直在用又经常被忽略的知识点一

    已经有快2个月没有更新博客了,实在是因为最近发生了太多的事情,辞了工作,在湘雅医院待了一个多月,然后又新换了工作...... 在平时的工作中,Sqlserver中许多知识点是经常用到的,但是有时候我们 ...

  5. (转)高效的将excel导入sqlserver中

    大部分人都知道用oledb来读取数据到dataset,但是读取之后怎么处理dataset就千奇百怪了.很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,System.Data.SqlClie ...

  6. sqlserver 中数据导入到mysql中的方法以及注意事项

    数据导入从sql server 到mysql (将数据以文本格式从sqlserver中导出,注意编码格式,再将文本文件导入mysql中): 1.若从slqserver中导出的表中不包含中文采用: bc ...

  7. SQLServer中的数据库备份和还原

    更多资源:http://denghejun.github.io 备份 SQLServer中的备份,这里是T-SQL的用法,具体示例代码如下,使用也相对简单,其中TestDatabase 是指所需备份的 ...

  8. SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数

    SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 先来创建一个测试表 USE [tempdb] GO )) GO INSERT INTO [#te ...

  9. SQLSERVER中的假脱机spool

    SQLSERVER中的假脱机spool 我发现网上对于假脱机的解释都非常零散,究竟假脱机是什么? 这几天在家里研究了一下,收集了很多网上的资料 假脱机是中文的翻译,而英文的名字叫做 spool 在徐老 ...

随机推荐

  1. 应该了解的Python模块

    Python很优雅.使用以下模块有助于保持你的代码整洁.易于维护.欢迎补充. Docopt.忘了optparse和argparse吧,使用docstring来构建优雅的.高可读性.复杂(如果你有这个需 ...

  2. Observer设计模式中-委托事件-应用在消息在窗体上显示

    Observer设计模式:监视者模式.在类中的方法中处理的结果或者消息通过事件委托 的方式发送给主窗体. 因为在其它类中直接访问主窗体类,显示内容是不能直接调用控件赋值的,当然也有别的类似查阅控件名, ...

  3. 委托 在其他类中修改form中的控件属性

    通常情况下,我们需要在其他业务类中将提示信息时时显示到主界面上,可以通过以下方式 Form1.cs using System; ; i < ; i++) {                 cb ...

  4. 【Maven】Eclipse 使用Maven创建SpringMVC Web项目

    创建环境 系统:win 10 软件:eclipse,maven. 创建步骤 创建一个Maven Web项目,可以参照:[Maven]Eclipse 使用Maven创建Java Web项目 添加spri ...

  5. UITableViewCell重用的问题

    UITableView中有两种重用Cell的方法: - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; - (id)dequ ...

  6. 将html页改成jsp的两种方式

    将html页改成jsp的两种方式 作者: 字体:[增加 减小] 类型:转载 时间:2013-08-13 将html页改成jsp有两种方法,第一种是直接修改html文件,另一种是新建jsp文件.下面为大 ...

  7. 斯坦福第五课:Octave 教程(Octave Tutorial)

    5.1  基本操作 5.2  移动数据 5.3  计算数据 5.4  绘图数据 5.5  控制语句:for,while,if 语句 5.6  矢量化 5.7  工作和提交的编程练习 5.1 基本操作

  8. Rsync 3.1.0 发布,文件同步工具

    文件同步工具Rsync 3.1.0发布.2013-09-29 上一个版本还是2011-09-23的3.0.9 过了2年多.Rsync基本是Linux上文件同步的标准了,也可以和inotify配合做实时 ...

  9. 使用NHibernate(7)-- 一对一 && 一对多 && 多对多

    1, 一对一. 对于数据量比较大的时候,考虑查询的性能,肯能会把一个对象的属性分到两个表中存放:比如用户和用户资料,经常使用的一般是Id和用户名,用户资料(学校,籍贯等)是不经常被查询的,所以就会分成 ...

  10. Oracle数据创建表空间

    一.直接在服务器端通过sqlplus命令行创建: 如果您用的是Linux系统,那么Oracle用户名为oracle.同时,您是在oracle服务器上操作. 如果是在Windows系统下, 请先点击“开 ...