问题列表 - 第30页

如何禁用异步 IO 或隔离一个会减慢或冻结其他会话的会话?

每天我都有一个会话产生 Avg.Disk Queue Length > 800(5 分钟间隔)。

我发现就在这之前 Sql Server 优化器犯了一个错误:它决定使用一个不合适的计划进行聚集索引扫描,这会产生大约 100Mb-1GB 的 IO 操作。假设我找到了排队的原因,但这不是全部。

恕我直言,巨大的 IO 不一定会冻结其他用户 15 分钟。虽然我不知道谁负责创建过多的异步 IO:Sql Server、Windows 文件系统,或者可能是物理 IO 控制器,但是产生的异步 IO 会导致一个巨大的异常队列,并且没有留下任何机会供其他会话从磁盘读取。

有没有办法控制异步IO?我想如果我能够降低队列长度(顺便说一句,“更真实的”当前队列长度计数器显示队列中有 400 个操作),那些查询计划的问题将不会冻结其他会话。

不过情况比较复杂:

  • 这些 sql 查询是从 NAV 4 生成的,所以我在 t-sql 级别上几乎无法更改任何内容。
  • 服务器(Windows 2003 Data Center)是32位的,sql server(数据中心版)使用AWE额外使用8GB做缓冲;因此,AWE 管理器闪存可能会生成这个巨大的队列。
  • sql server 上最多有 50 个会话。所以我准备好看到 50 个队列长度而不是 800 个!顺便说一句,正常长度是 0.3-4,但这真的很正常,因为我在那里有合适的 RAID。
  • 这个使用 1GB IO 生成查询的疯狂会话还在 sql 优化器出错之前的 40 秒内在同一个表上生成了大约 100000 个“快速”查询。因此,在同一会话中的先前操作期间,索引选择性的变化确实可能以某种方式误导 sql 优化器。

更新:该表一点都不有趣,只是它对于 NAV 来说太大了(1 GB 带索引)。

一些查询的示例:

declare @p1 int  set …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005

5
推荐指数
2
解决办法
597
查看次数

如何实现最大属性数未知的实体?

我正在设计一个棒球模拟程序,但在设计 boxscore 模式时遇到了问题。我的问题是我想跟踪每局得分的次数。我在实际程序中这样做的方法是使用一个动态数组,该数组随着每局比赛而增长。

对于那些不熟悉棒球比赛的人来说,比赛通常是九局,除非比赛在第 9 局结束时仍然打平。因此,棒球比赛的长度不确定,这意味着我不能将数据库设计为每局得分只有 9 列(技术上是 18(9 局 * 2 队)。我的一个想法是序列化数组并将其编码为 Base64,然后再将其存储在数据库中。但是,我不知道这是否是一种很好的技术,我想知道是否有人有更好的主意。

如果重要,我正在开发的数据库是 PostgreSQL。

任何建议都非常感谢!谢谢!

schema postgresql database-design

12
推荐指数
1
解决办法
501
查看次数

数据仓库创建

当谈到这个领域时,我相当绿色。我是一家小医院的数据分析师,现在 8 个月了,我在一个新的职业领域获得了 2 年的学位。

情况

我们有一个 Cobol“数据库”(我使用术语数据库轻轻......)。它是一个专有的分层数据库。我们有一个辅助软件解决方案,它在其上提供 ODBC SQL 层,以便通过标准接口进行外部访问。它有我认为符合 SQL 99 的命令。

COBOL 数据库到 SQL 有很多不足之处。索引是一成不变的。因此,如果我想做任何未在索引的一两个字段上键入的查询(索引 = 患者编号。因此,如果我想查询入院/出院日期......忘记它)......它很慢. 联接将 5 分钟的查询转换为 45 分钟的查询。许多查询会减慢系统的 REST 速度,从而导致不好的事情。

虽然系统确实有一个内部查询系统,但我认为它绝不是完整的。它有优点也有缺点,但主要问题是与外界的合作,我也需要发送报告。

题

我正在尝试构建...是一个 TSQL 数据仓库。我想创建一个过程,将数据拉入我可以控制的 SQL 环境中(添加索引,使用 case 语句等现代东西,“简单”查询不需要 15 分钟)。

我想知道专家会建议哪些好的资源、教程和工具。我的理想情况是将所有数据“历史”加载到 T-SQL 数据库中,然后每周加载新数据。这对于“实时”报告来说并不理想,但我的大部分报告需求都可以通过“稍微”旧的数据来满足。

我一直在搞乱##Temp 表、合并到、更新等,试图看看加载和更新的时间是什么,什么不是......但在我深入之前,我想了解一些一般情况建议。

sql-server-2008 data-warehouse hierarchy

7
推荐指数
1
解决办法
643
查看次数

帮助解决集群问题:[sqsrvres] ODBC sqldriverconnect failed

我有一个 2 节点集群(NODE-A 和 NODE-B),它们之间分布着 2 个 SQL 实例。INST1 更喜欢 NODE-A,INST2 更喜欢 NODE-B。INST1 开始产生错误,然后故障转移到 NODE-B。在记录“恢复完成”后,将 INST1 迁移回节点 A 会生成连接错误。信息。

赢得 2008 R2 Ent。
SQL 2008 R2 Ent。

第一次失败后事件日志中的错误:

[sqsrvres] CheckQueryProcessorAlive: sqlexecdirect failed
[sqsrvres] printODBCError: sqlstate = HYT00; native error = 0; message = [Microsoft][SQL Server Native Client 10.0]Query timeout expired
[sqsrvres] OnlineThread: QP is not online.
[sqsrvres] printODBCError: sqlstate = 08S01; native error = 0; message = [Microsoft][SQL Server Native Client 10.0]The connection is no longer usable because the server …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 clustering

6
推荐指数
1
解决办法
6938
查看次数

如何用连接替换这个 where 子句?

通常,当我看到使用以下内容的 SQL 时:

select * from employees where epmloyeeTypeId in (select id from type where name = 'emp') 
Run Code Online (Sandbox Code Playgroud)

我where用这个替换:

select e.* from employees e 
inner join type t on t.id=e.epmloyeeTypeId and t.name = 'emp'
Run Code Online (Sandbox Code Playgroud)

如果它是一个not in(如下所示)而不是一个in子句,是否可以对逆做同样的事情?

INSERT into Subscriptions(ProjectId, RecordTypeCID, NTID, Active, Added, LastUpdate, UpdateBy)   
 SELECT @ProjectId, RecordTypeCID, @NTID, 1, GETDATE(), GETDATE(), @NTID  
 FROM @Check CHK  
 WHERE CHK.ActiveStatus=1  
        And Not Exists (SELECT SubscriptionId FROM Subscriptions  
                        WHERE ProjectId=@ProjectId           
                        and NTID=@NTID          
                        and RecordTypeCID = CHK.RecordTypeCID
                        ) …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server except

8
推荐指数
2
解决办法
5048
查看次数

为什么我不能直接调用我的 UDF?为什么我需要将它限定为 3 个级别?

我刚刚创建了一个 UDF 并对其进行了测试,我发现只有在使用此语法时才有效

SELECT [PMIS].[dbo].[fnIsReportingTo] (50,1132)
Run Code Online (Sandbox Code Playgroud)

我期待它像这样工作:

select * from fnIsReportingTo (50,1132)
Run Code Online (Sandbox Code Playgroud)

或者

select fnIsReportingTo (50,1132)
Run Code Online (Sandbox Code Playgroud)

这是我的创建 SQL:

create function fnIsReportingTo
(
@BossID int,
@EmployeeID int)
RETURNs bit
AS
begin
declare @ret bit
    if exists (select * from dbo.fnGetEmployeeHierarchy(@BossID) where employeeID=@employeeID)
        select @ret=1
    else
        select @ret=0
return @ret
end
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server syntax functions

7
推荐指数
1
解决办法
377
查看次数

42
推荐指数
2
解决办法
5万
查看次数

如何重命名本地 SQL 开发服务器?

我是一个开发人员,他继承了一个功能齐全的盒子,可以做我需要的大部分工作。除了机器名称仍然是旧开发者的名称(我们将其命名为“{username}-dt”或“{username}-lt”以方便网络上的 id)并且我想将其从 old-username 重命名为我的用户名。

当然,这也会影响 SQL,所以我想在重命名我的机器之前,我会就我需要做的事情征求更有经验的建议。我知道有一些“sp_”sproc 需要运行,但是我什么时候运行它们?我是否需要在之前或之后重新启动我的盒子,我是否需要一定级别的特权?它会破坏盒子上任何现有的基于 Windows 的身份验证(这些帐户无论如何都是 AD 帐户)?

sql-server-2008 sql-server

7
推荐指数
1
解决办法
2023
查看次数

是否可以将 SQL Server Developer Edition 安装为主要开发服务器?

是否可以在 Windows 服务器环境中安装 SQL Server 开发版作为开发服务器?每个开发人员都将拥有相同 SQL Server 版本的本地副本,并将连接到此开发服务器以进行数据/对象同步。

此外,如果您可以参考此产品的完整说明的链接。

sql-server installation

4
推荐指数
2
解决办法
321
查看次数

ADO.NET 实体框架是否因生成性能不佳的查询而闻名?

这个问题的灵感来自发布到最新 ServerFault 博客文章的评论:

你们还在使用 LINQ to SQL 吗?

我知道我可以使用SQL Server Profiler和/或该ToTraceString方法来查看生成的查询和分析他们自己。但是,我正在寻找具有管理由使用实体框架的应用程序访问的数据库的实践经验的人的意见。

实体框架查询是性能问题的常见原因吗?
在这种情况下可以优化 LINQ 查询还是原始 Transact-SQL 是唯一的解决方案?

performance sql-server orm entity-framework ado.net

6
推荐指数
2
解决办法
1532
查看次数