我有一个倍数数据库,其总大小约为50GB
。
我必须执行各种操作并显示结果(仅访问或连接,无更新/删除/插入操作)。执行这些操作所需的时间约为8分钟。
如何将时间缩短到不到一分钟。
我正在使用SQL Server 2012,Asp.Net在网页上呈现数据。
答案 0 :(得分:1)
我有一个倍数数据库,总大小约为50GB
好的,那么“大”哪里?通常假设大型数据库是大于低端服务器的内存的数据库。这些天恰好是64gb左右。所以,这是小型数据库。
我必须执行各种操作并显示结果(仅限访问或加入,否 更新/删除/插入操作)。执行这些操作所需的时间约为8 分钟。
一根绳子有多长?
如::什么操作。他们操纵了多少数据?
基本上:
解决这些问题。我没有选择在TABLES中选择daa的问题,因为(a)我有适当的硬件和(b)我有正确的索引,因此在几百毫秒(大约100亿行,大约100行)中选择daa几百千兆字节。我还会在不到一分钟的时间内从该表中删除6400万行。
因此,开始基线调试。查看查询计划,看看你是否遗漏了一些东西,如果计划看起来很好,那就是硬件。数据库严重受IO限制,并且喜欢在SSD上 - 它有大约100个时间硬盘的IO性能,而像你这样的SMALL系统没有足够的内存用于激进的缓存。
答案 1 :(得分:1)
TomTom得到了它。数据库是IO绑定的。在这个问题中你有太多未知变量可以提供任何有价值的帮助。
50 Gb并不大。你应该可以加入,更新,删除等,没有任何问题..即使在较小的机器上。我认为你缺少索引。
我在托管在类似笔记本电脑上的本地服务器上运行了许多较小的操作。我说较小的操作,我仍然可以在几秒钟内选择,加入等数百/数千行。这告诉我你的数据库可能没有正确设计。这是app devs设计数据库以补充其应用程序和sql devs设计数据库以支持其app开发团队之间的争论。为了解释基础知识,我可以整天打字。确保您的数据库具有主键,正确的索引,足够的数据类型(并非所有varchar(max)列)。
http://architects.dzone.com/articles/20-database-design-best