我听说在不同的文件组和驱动器上存储索引会提高数据库中的性能,因为驱动器不必在索引和索引所引用的数据之间来回切换。我也有听说说这是一个神话。
建议何时将非聚集索引存储在单独的文件组和驱动器上?什么样的perfmon/profiler证据会让我得出这样的结论?硬件是否在决策中起作用(是否在单个驱动器上使用RAID/SAN )?
发布于 2011-05-10 17:34:55
DB系统中最慢的部分是磁盘驱动器。消除磁盘级的瓶颈将提高性能。当查找数据并使用索引时,首先查找索引,然后获取相应的数据。如果索引和数据都位于同一磁盘上,则会发生一些争用。然而,如果数据位于不同的(物理)磁盘上,则会出现更快的IO,从而提高性能。需要注意的主要部分是,数据或索引位于单独的物理磁盘或LUN上。
如果您需要从系统中获得更好的性能,如果您有磁盘,您将使用这样的场景。对于perfmon计数器,可以使用Physical Disk – Avg. Disk sec/Read、Physical Disk – Avg. Disk sec/Write、Physical Disk – Disk Reads/sec、Physical Disk – Disk Writes/sec对更改进行前后比较。
发布于 2011-05-10 13:20:57
的确,在不同驱动器之间同时扩展I/O将提高性能--这不是神话。这是一个神话,是这样做两次将再次提高性能。
如果是相同的,那么将数组分割成两个分区,并将索引放在一个分区上,将表放在另一个分区上,这是浪费时间。
发布于 2011-05-10 22:09:32
将索引从数据中分离到单独的文件组=性能改进是很有争议的。如果您有底层的硬件来支持它,那么性能的改进“可能会发生”,但是仅仅因为将它们分离到不同的文件组并不能提高perf的性能。而且,由于这一点,也不容易测量perf的涨势。
参考文献:http://weblogs.sqlteam.com/dang/archive/2008/08/01/Are-you-a-DBA-Monkey.aspx
你应该先问这个问题。你为什么要这么做?
我看了这个任务,以支持在上面的清单中第5位的需要,这似乎是一个很好的建议,虽然我们还没有采取行动。
注意,这个决定不是那么容易做出,你需要弄清楚你想做什么,并确保你有硬件支持。不要做出这样的改变,除非你测试得很好,而且你看到了perf的显著提升,否则你还是放弃这个想法吧。如果您只需要将索引分离到不同的文件组上,就不值得这么做了。
https://dba.stackexchange.com/questions/2626
复制相似问题