今天,我浏览了一本有关SQL Server优化的书,看来其中有些想法是基于线性存储模型的。由于SSD具有完全不同的存储模型,它们是否会以任何方式改变人们对数据库调优或优化的看法?
今天,我浏览了一本有关SQL Server优化的书,看来其中有些想法是基于线性存储模型的。由于SSD具有完全不同的存储模型,它们是否会以任何方式改变人们对数据库调优或优化的看法?
Answers:
是的,他们确实改变了比赛。基于旋转磁盘的特性(例如寻道时间和旋转延迟)的优化可能与SSD驱动器无关。FITME 2010上发表的最新论文*基于SSD的特性提出了一种新的查询优化算法。
但是,这些更改可能是数据库开发人员可以有效实施的低级更改(例如,针对存储和检索算法)。它们可能不会对数据库用户造成太大影响。
SSD表现出色:它们不必寻找,吞吐量也越来越高。大多数处理磁盘的软件都在优化的程度上进行了优化,以减少同步查找的次数。这样做会引入许多复杂性。随着对持久性存储进行快速,无寻觅的写入的出现,新的数据存储系统将不再需要这种复杂性。
SSD目前故障率很高。您的SSD将失败。您的SSD的故障率要比磁盘高得多。您必须通过复制,备份等解决此问题。这引入了自己的复杂性。
对SSD进行任何优化的主要问题与它们如何写入数据有关。传统的硬盘驱动器通常将数据存储在大约512字节的小扇区中,并且实际上可以直接在该级别甚至更低的级别上操作扇区。
SSD在写入方面有一些缺点:
一种典型的噩梦场景,称为写入放大,是当您要将单个字节写入磁盘上已使用某些块的位置时。为了在那里写,您需要首先将整个256KB页面复制到内存,擦除整个块,更改页面中的单个字节,然后写回整个修改后的256KB页面。因此,为了写入单个字节,大约有半兆字节的“流量”!
在SSD,控制器甚至操作系统级别都实现了许多针对此问题的优化,但是毫无疑问,DBMS可以通过针对特定工作量身定制这些优化而受益。
但是,这不是数据库用户(例如,在其应用程序中使用数据库)所要考虑的事情,因为它将高度依赖于DBMS级别的设计/实现决策。
从ServerFault博客收集的数据来看,数据库服务器必须具有坚固的硬件。堆栈交换站点的数据库服务器正在运行SSD(请参阅http://blog.serverfault.com/post/our-storage-decision/),我想仍然非常需要查询优化。CPU和内存都通过数据库查询以及IO的影响。
但是,数据库性能确实很大程度上取决于IO,因此SSD肯定会有所帮助。
是的,出于每个人都说过的原因。
我在听一个播客说,如果能够正确解决分离问题,那么像Oracle,SQL Server等大型RDBMS就会开始被“淘汰”。检测其是否为SSD驱动器,并进行相应优化。
缓存和写入数据中内置了许多额外的代码,这些代码不再需要了。
更有趣的是RAMSAN及其变体。基本上,这是一个由RAM芯片制成的硬盘驱动器,具有内置的X个小时UPS,并且能够对长期HDD存储进行后台写入。