我应该使用什么样的计算机规格(CPU,RAM,磁盘速度)在2亿多条logging的数据库上运行查询? 查询是针对研究项目的,所以只有一个“用户”,一次只能运行一个查询。
我试图用自己的笔记本电脑与SQL Server的i3处理器,2GB内存,5400转的磁盘和一个简单的查询甚至没有完成8小时以上。 我有一个选项,通过eSata连接SSD并升级到4GB的RAM,但不知道这是否足够了…
谢谢!
编辑:数据库大约25 GB,索引设置不正确。 当我试图添加一个索引时,我让它运行了大约8个小时,但仍然没有完成,所以我放弃了。 我应该有更多的耐心:)?
一般来说,查询将运行一次,即使需要几个小时才能完成….
此外,查询将产生大约1000万条logging,我需要使用Stata / Matlab进行处理,而且我担心我目前的笔记本电脑不够强大,但不确定瓶颈。
为一个庞大的数据库devise硬件是难以想象的。 我们有几个大型数据库(一些表中有9M +logging)和一个海量数据库(大多数表中有300M +logging),即使对我们来说,这也是一个小小的事情。
但是和硬件规格一样重要的是你的数据库模式,正如Ira所说的,在这种情况下,索引是最重要的。
创build索引需要长于8个小时的时间,并且表必须完全解锁,因为创build索引会locking整个表。 需要很长时间才能创build的索引通常是locking表的标志,因此在尝试执行操作时请确保没有别的东西在使用数据库。
在这种情况下,什么会让你更难为你的磁盘的速度。 一个5400转的硬盘(我看过主轴速度更慢的笔记本电脑,5400对于笔记本电脑来说是相当不错的),比起15000转的硬盘,把数据加载到caching中的时间要长得多。 作为比较,我们的SQL服务器有14x 15,000 RPM磁盘(总共21万转/分,或者是主轴速度快了38倍),而且我估计在现实生活中访问速度可能快50倍。 200M的logging仍然需要一个多小时。
所以,如果可以的话,拿到SSD。 这将有极大的帮助。 一个固态硬盘在5400RPM硬盘上的性能增益几乎是无法衡量的。
如果可以的话,得到4Gb的RAM。 它不仅可以帮助你提高SQL服务器的速度(不像固态硬盘那么多,但它仍然有帮助),但是从我对Matlab的(简短的)经验来看,它也会有帮助。
你没有抱怨用2亿条logging填充数据库需要多长时间,所以我认为你的lapttop足够快。
数据库的工作原理是因为它们存储的数据logging具有索引的某些“关键”字段以提供快速访问。 (否则每个查询将不得不每次读取每个logging,并且25Gb需要很长的时间来读取)。
如果你的查询应该产生适量的结果(比如说10Klogging),那么我猜你的问题是你的logging没有被查询的主要元素索引。