sql-server – 处理大数据库

我一直在一个网站项目(asp.net)工作了大约六个月.最终产品即将上市.该项目使用sql Server作为数据库.我们已经对一些大量的数据进行了性能测试,结果表明,当数据变得太大时,性能会下降,比如200万行(超时问题,延迟响应等).起初我们正在使用完全规范化的数据库,但是由于性能问题(减少连接),现在我们将其部分归一化.首先,是正确的决定吗?
加上当数据大小变得非常大时,可能的解决方案是什么?客户未来会增加

我想补充一点:

> 200万行是实体表,解析关系的表有更大的行.
>数据编号时性能下降.的用户增加.
>在识别出大量使用的查询后,进行了非规范化.
>我们还使用了大量的xml列和xquery.这可能是原因吗?
>有点偏离这个话题,我项目中的一些人说,动态SQL查询比存储过程方法快.他们做了一些表现测试来证明自己的观点.我认为恰恰相反.一些大量使用的查询是动态创建的,其中大多数其他查询都封装在存储过程中.

解决方法

在事情计划中,几百万行不是一个特别大的数据库.

假设我们正在谈论一个OLTP数据库,那么在不首先确定瓶颈的根本原因的情况下进行非正规化就是一个非常非常糟糕的主意.

您需要做的第一件事是在代表性的时间段内对查询工作负载进行配置,以确定大部分工作正在完成的位置(例如,使用sql Profiler,如果使用sql Server).查看查询执行的逻辑读取次数乘以执行次数.一旦确定了十大表现最差的查询,您需要详细检查查询执行计划.

我会在这里出门(因为通常是这样),但是如果你的问题不是

没有一个代价高昂的查询的“正确”覆盖索引
>配置不佳或指定的磁盘子系统

SO answer描述了如何配置文件以查找工作负载性能最差的查询.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...