AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-53595

Fandango68's questions

Martin Hope
Fandango68
Asked: 2020-07-01 19:29:11 +0800 CST

一种处理 CTE 一次的方法?

  • 0

我有一个存在严重性能问题的视图,因为我将它链接到使用另一个视图的 CTE,具有相同的表引用。

WITH
  splits(ID, [NEW TEU])
  AS
    (SELECT s.[DTL ID] AS ID, s.[NEW TEU]
     FROM   [POTS].[vwSPLITCARGO] AS s)
     
SELECT *
FROM   [MISNT].[CARGO_MANIFEST_DETAIL_VIEW] AS cmd
       LEFT JOIN splits AS s ON s.ID = cmd.ID

该vwSPLITCARGO视图引用同一个CARGO_MANIFEST_DETAIL_VIEW表来进行计算。

我知道为什么它很慢。这是因为vwSPLITCARGO视图正在从同一CARGO_MANIFEST_DETAIL_VIEW视图中读取 CTE 中已存在的每条记录的所有数据。事实上,vwSPLITCARGO总是返回相同的小记录集(大约 4 或 6 条记录)。我不需要它来获取那些记录。一次会很棒!

有没有办法让 CTE 表现得像一个临时表,因为它只检索一次记录,而不是一遍又一遍地处理?

告诉 CTE:CASE WHEN RunOnce = 0 THEN "do it" ELSE "don't do it" END

sql-server cte
  • 1 个回答
  • 68 Views
Martin Hope
Fandango68
Asked: 2020-05-22 16:41:05 +0800 CST

为什么 SQL Server Backupset 表回溯几个月,而代理日志回溯更远?

  • 1

我运行这个脚本来查看我过去一个月的备份历史。

select * from msdb.dbo.backupset order by backup_start_date

没问题,但如果我想回到 2020 年 1 月,则没有记录。

那么,为什么 Log Type = 'DATABASE' 的代理日志会返回更远呢?

谢谢

sql-server backup
  • 1 个回答
  • 63 Views
Martin Hope
Fandango68
Asked: 2020-05-21 21:34:29 +0800 CST

SQL Server:如何获得一个月内完成的备份总数?

  • 1

我需要为我的老板收集每月的统计数据,关于一个月内完成了多少完整备份,哪些数字成功,哪些失败(如果有)。

有没有一个简单的查询可以给我这个,基于 SQL Server 日志?

谢谢

sql-server backup
  • 1 个回答
  • 62 Views
Martin Hope
Fandango68
Asked: 2020-01-07 17:19:49 +0800 CST

如何比较和合并两个 SQL Server 环境(不仅仅是数据库)

  • 1

之前有人问过许多类似的问题,主要是关于比较数据库模式和数据。这一切都很好,但是整个系统中的所有其他 SQL Server 对象呢?

这是我找到的最接近的答案,但它没有回答我对能够创建差异的 SQL 脚本的工具的查询,该脚本可以轻松应用于另一台服务器 - 包括新用户登录、角色、模式、链接服务器、地图、维护计划等。

我发现的另一个工具是 SQL Server 的 TOAD,但它并不便宜。我希望有一个 SQL 脚本解决方案?特别是从 2008 R2 到 2017 的混合 SQL Server 环境?

谢谢

sql-server sqlcompare
  • 1 个回答
  • 251 Views
Martin Hope
Fandango68
Asked: 2014-12-08 23:09:24 +0800 CST

一种自动清除/重新启动虚拟内存蠕变的方法?

  • 3

我知道这样做不是很好的做法,但我的公司负担不起我试图为我们的问题找到合适的解决方案。我读过这篇文章,我可以对 SQL Server 2005 做同样的事情,但我希望有更好(更快?)的方法。

问题如下:

我们有一个在 Windows Server 2003 上运行的 ASP.net 网站 (ASP2),它还托管我们的 SQL Server 2005 数据库并进行安装。

最近我们注意到我们的 SQL Server 2005 实例的 VM 已提交内存空间增长了,几乎达到了我们设置为 1.7 GB 的 VM 保留空间(嗯,太多了?)。

运行我们的 SQL Server 的 PC 服务器具有 4 GB 的 RAM 和高达 3.5 GB 的可用磁盘空间,用于安装 SQL Server 2005。数据库本身位于 350 GB 的共享空间上(为此有两个分区:分别是 C 和 D 驱动器)。

因此,就虚拟机空间而言,我认为我们有足够的空间并将我们的虚拟机限制设置为 1.7 GB(理想情况下为 2 GB)就足够了。

数据库本身的大小小于 500 MB。

当我们的 VM Committed 值接近 VM Reserved 值时,服务会大大减慢。我知道解决这个问题的唯一方法是停止所有 SQL 服务服务并重新启动它们。但是在 24 小时内,VM Committed 仍然在爬升!

有没有一种方法可以让我试图找出问题的原因,而只需在一夜之间自动重新启动所有服务?或者我真的应该试图找出我们问题的原因吗?

我做了一些调查(但正如我所说,我们现在时间很差),并找到了这个 SQL 查询(见下文),它告诉我什么实际查询似乎最占用 CPU(不确定这是否有什么需要做我上面原来的VM问题)。

它显示了一个查询恰好在一夜之间运行,并且可能是该查询只是占用内存而不将其释放回池中?

有没有办法在 SQL Server 中“关闭”线程/内存分配等,以便释放内存?

这是 CPU “hog search” 查询(由this提供)

select  
    highest_cpu_queries.plan_handle,  
    highest_cpu_queries.total_worker_time, 
    q.dbid, 
    q.objectid, 
    q.number, 
    q.encrypted, 
    q.[text] 
from  
    (select top 50  
        qs.plan_handle,  
        qs.total_worker_time 
    from  
        sys.dm_exec_query_stats qs 
    order by qs.total_worker_time desc) as highest_cpu_queries 
    cross apply sys.dm_exec_sql_text(plan_handle) as q 
order by highest_cpu_queries.total_worker_time desc

编辑,回答 Pathum 的问题:

运行查询的结果:

---------------------------------------------------------------------------------------------------- 
Memory usage details for SQL Server instance SERVER9 (9.00.4053.00 - X86) - Standard Edition)
----------------------------------------------------------------------------------------------------

Memory visible to the Operating System
Physical Memory_MB|Physical Memory_GB|Virtual Memory GB 4091|4|2
Buffer Pool Usage at the Moment
BPool_Committed_MB|BPool_Commit_Tgt_MB|BPool_Visible_MB
519.250000|1599.875000|1599.875000

Total Memory used by SQL Server Buffer Pool as reported by Perfmon counters
Mem_KB|Mem_MB|Mem_GB 531712|519.250000|0.507080078

Memory needed as per current Workload for SQL Server instance    
Mem_KB|Mem_MB|Mem_GB 1638272|1599.875000|1.562377929

Total amount of dynamic memory the server is using for maintaining connections
Mem_KB|Mem_MB|Mem_GB 560|0.546875|0.000534057

Total amount of dynamic memory the server is using for locks
Mem_KB|Mem_MB|Mem_GB 968|0.945312|0.000923156

Total amount of dynamic memory the server is using for the dynamic SQL cache
Mem_KB|Mem_MB|Mem_GB 1120|1.093750|0.001068115

Total amount of dynamic memory the server is using for query optimization
Mem_KB|Mem_MB|Mem_GB 552|0.539062|0.000526428

Total amount of dynamic memory used for hash, sort and create index operations.
Mem_KB|Mem_MB|Mem_GB 0|0.000000|0.000000000

Total Amount of memory consumed by cursors
Mem_KB|Mem_MB|Mem_GB 480|0.468750|0.000457763

Number of pages in the buffer pool (includes database, free, and stolen).
8KB_Pages|Pages_in_KB|Pages_in_MB 66464|531712.000000|519.250000000

Number of Data pages in the buffer pool
8KB_Pages|Pages_in_KB|Pages_in_MB 50135|401080.000000|391.679687500

Number of Free pages in the buffer pool
8KB_Pages|Pages_in_KB|Pages_in_MB 895|7160.000000|6.992187500

Number of Reserved pages in the buffer pool
8KB_Pages|Pages_in_KB|Pages_in_MB 0|0.000000|0.000000000

Number of Stolen pages in the buffer pool
8KB_Pages|Pages_in_KB|Pages_in_MB 15434|123472.000000|120.578125000

Number of Plan Cache pages in the buffer pool
8KB_Pages|Pages_in_KB|Pages_in_MB 11953|95624.000000|93.382812500

Page Life Expectancy - Number of seconds a page will stay in the buffer pool without references
Page Life in seconds|PLE Status 47011|PLE is Healthy

Number of requests per second that had to wait for a free page
Free list stalls/sec 0


Number of pages flushed to disk/sec by a checkpoint or other operation that require all dirty pages to be flushed
Checkpoint pages/sec 572

Number of buffers written per second by the buffer manager"s lazy writer
Lazy writes/sec 0

Total number of processes waiting for a workspace memory grant
Memory Grants Pending 0

Total number of processes that have successfully acquired a workspace memory grant
Memory Grants Outstanding 0

第二次查询,检查内存压力:

SELECT object_name, cntr_value 
FROM sys.dm_os_performance_counters 
WHERE counter_name IN ('Total Server Memory (KB)', 'Target Server Memory (KB)');

结果:

object_name|cntr_value
SQLServer:Memory Manager        |1638272
SQLServer:Memory Manager        |531712
(2 row(s) affected)

  • 我的服务器是 32 位的。我们不会出于任何原因迁移到 64 位。

  • sp_configur无法提供来自电子信息的值,这是保密的。:)

sql-server sql-server-2005
  • 3 个回答
  • 6933 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve