我有一个大约有 120 亿行(行大小 32 B)的表,每个月增加 3 亿行。我每个月都设置了分区,每个月都有 8 个数据文件(因为我目前只有 8 个 CPU),用于存储我连接了 SAN 的数据。这台机器(W2008R2 64 位,MSSQL2008R2)有 192 GB RAM,但我仍然觉得在使用聚集索引检索数据时速度很慢。我计划稍后将这些数据与 SSRS 一起使用。我应该考虑什么来提高性能?
我运行长而复杂的查询,这些查询主要使用一个大表 - 8GB,40M 行。AFAIK,所有/大多数行都用于每个查询。我在活动监视器中看到很多 IO - 对于第一个查询和每个后续查询。服务器当前使用 6.5GB 内存,我想升级。问题是,需要多少内存才能避免所有这些磁盘读取?是在桌子大小的球场内还是更大?
这是 SET STATISTICS IO 输出。BigTable 是我要问的那个,SmallTable 与 BigTable 是一对多的关系。#entrance 保存查询的输出(数百行输出)。
Table 'SmallTable'. Scan count 249005, logical reads 2829948, physical reads 2605, read-ahead reads 10395, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'BigTable'. Scan count 194004, logical reads 13482115, physical reads 33841, read-ahead reads 1181136, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical …Run Code Online (Sandbox Code Playgroud) 数据 1、2、3、4、11、21、99
我想获得第 1、第 2、第 3、第 11、第 21 和第 99 个
我可以推出自己的,但是否有任何内置于 SQL Server 的功能可以为我做到这一点?推论:我还将寻找将数字转换为单词的函数,例如:
72,451 -> 七万二千,四百五十一
并且希望它(如果存在)属于同一系列的格式化方法。
我成功地在两台服务器之间创建了一个带有证书的镜像。其中一台服务器是域控制器。删除域后,镜像中断。经过数小时的搜索,我重新安装了 SQL Server,希望所有可能的域删除问题都消失了,但镜像仍然拒绝工作。我不断收到模糊的错误:
消息 1418,级别 16,状态 1,第 1 行 服务器网络地址“TCP://...”无法访问或不存在。检查网络地址名称以及本地和远程端点的端口是否可操作。
如果我检查镜像服务器的事件日志,我会看到 2 个错误:
任何想法/建议?
一点信息。
我正在运行 SQL SERVER 2008 R2 64 位。我安装了 Microsoft.ACE.OLEDB.12.0 提供程序。
在我的生产服务器上,我使用上面列出的提供程序为访问数据库设置了一个链接服务器,一切正常。
将 Access db 复制到我们的开发环境并尝试使用相同的提供程序设置链接服务器。测试连接成功返回从链接服务器中选择返回
消息 7399,级别 16,状态 1,第 1 行链接服务器“MYdb”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”报告错误。提供者没有提供有关错误的任何信息。消息 7330,级别 16,状态 2,第 1 行无法从链接服务器“MYdb”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”中获取一行。
两台服务器都运行相同版本的 SQL Server。两者都是 Windows NT 6.1 64 位操作系统。
当我将 AllowInProcess 设置为 1 时,测试连接失败。
任何帮助将不胜感激,因为谷歌让我失望。
谢谢,
克里斯
是否可以使用 SQL Server 2008 R2 Management Studio 管理 SQL Server 2008 数据库?
我跑了@@version。
这是它给我的:
Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (X64) 2010 年 9 月 16 日 19:43:16 版权所有 (c) 1988-2008 Microsoft Corporation Enterprise Edition(64 位),Windows NT 6.0(内部版本 6002:Service Pack 2)
我怎么知道这是否是 r2?
我正在测试 4 个数据库之间的事务复制,其中 2 个在一台机器(虚拟)中,2 个在其他(也是虚拟的)中。我的虚拟机都没有运行防病毒软件。
这一切都按预期工作,除非我尝试插入一个相当大的 blob(在这种情况下为 65mb),如果我插入一个 3kb 的 blob 工作得很好。
我遇到以下错误“分发代理未能在‘C:\Program Files\Microsoft SQL Server\100\COM’目录中创建临时文件。系统返回错误代码 5”。
此问题记录在此处。我已经更改了该文件夹的设置,因此不再是只读的(右键单击文件夹-> 属性并更改只读属性)我不确定这是否正确授予权限的方法。
我说我没有运行防病毒软件的原因是因为我也读过这是这个问题的一个来源,因为防病毒软件可能会在检查文件夹时阻止它。
还尝试更改 OLEDB 流的分发配置文件,这也不起作用..
我还能做些什么来解决这个问题?
在夜间计划任务期间,我使用select into然后添加聚集索引从头开始创建一个大表。我想在整个过程中最大限度地减少日志记录量,因为我用于日志备份传送的带宽有限。
如果有帮助,我很乐意考虑另一种方法。
NHibernate 自动使用带有不同参数的 sp_executesql 来执行它的数据。现在我们在生产中注意到的是,我们有时会受到参数嗅探的影响。通过这种方式,查询性能不仅会受到影响,而且实际上会导致超时。
我不是 DBA,所以我有点犹豫,但对我来说,查询似乎正在针对少量数据(10 行)进行优化,然后必须查询大量数据(150000 行),这些数据正在打磨它停止。
现在我发现了 4136 Trace,它完全禁用了 SQL Server 实例的参数嗅探。
现在,由于我们也在升级我们的一些服务器,我想知道 NHibernate 在 SQL Server 2008 上的行为是否与 2005 年有所不同。例如,它是否添加了 OPTIMIZE FOR UNKOWN 点点滴滴。
据我所知,SQL 2008 中添加了一些“工具”,以便更好地处理这些参数嗅探问题。我很好奇 NHibernate 是否采用了这些工具并使用它们,或者如果我们更改为 SQL Server 2008,我们仍然必须使用此跟踪或类似的东西来处理这些问题。
sql-server-2008 ×10
sql-server ×5
logs ×1
mirroring ×1
performance ×1
replication ×1
ssms ×1
ssrs ×1