首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Server 2016 -高页面写入,但正常/低其他一切

Server 2016 -高页面写入,但正常/低其他一切
EN

Database Administration用户
提问于 2019-02-28 23:00:57
回答 1查看 833关注 0票数 0

我是一个系统管理员,我对Server的度量不太熟悉。我一直与我们的一个DB和DBA似乎不太了解测量性能的问题,所以我试图确定为什么我们会有这些问题。

这是一个包含134 GB数据文件和25 GB日志文件的DB。数据库是在rest (TDE)加密的,并使用存储在Azure KeyVault (与服务器相同的区域)中的密钥。它在复制模式下运行,并复制到单个Server实例。主实例运行在Azure (8 vCPU,56 GB RAM)上,并复制到Azure中的备份实例。

我们遇到的主要问题是Page写/秒。目前,它总是在250写/秒或以上,很少下降到200以下。我读过90次写入/秒是一个正常的阈值。有时,存储过程执行会从几毫秒增加到半秒或更多,严重影响应用程序的性能。

同时,PLE为60,766秒,缓存命中率为100%,页面读取/秒为0.2/秒。所以这很可能不是记忆问题,对吧?

那么,在当前的基础上,确定导致最多页面写入量的最佳方法是什么呢?我们如何才能知道它是简单的糟糕的设计,代码需要优化,还是其他问题?

EN

回答 1

Database Administration用户

发布于 2019-03-01 00:24:36

那么,在当前的基础上,确定导致最多页面写入量的最佳方法是什么呢?

问得好。页面写入是由更改数据库引起的。句号。更改在提交之前写入日志文件,但数据库页在内存中更改,而不是在提交时写入。

因此,首先,在没有用户等待的情况下,在后台执行页面写入。如果同时读取页面,这可能是一个问题,但似乎大多数相关页面都是缓存的。因此,页面写入并不一定会导致任何问题。

话虽如此,你怎么确定是什么导致了写作呢?不是超容易的。

有一个DMV,它允许您查询所有缓存的页面,并查看哪些页面是脏的。然而,在内存丰富的系统上运行这个DMV是很昂贵的。类似于:

代码语言:javascript
运行
复制
select schema_name(o.schema_id) schema_name, object_name(p.object_id) table_name,  i.type_desc index_type, i.name index_name, bd.page_type, count(*) page_count
from  sys.dm_os_buffer_descriptors bd
join sys.allocation_units au
  on bd.allocation_unit_id = au.allocation_unit_id
join sys.partitions p
  on (p.hobt_id = au.container_id and au.type in (1,3))
   or(p.partition_id = au.container_id and au.type = 2)
join sys.indexes i
  on p.index_id = i.index_id
  and p.object_id = i.object_id 
join sys.objects o
  on o.object_id = i.object_id
where database_id = db_id()
and is_modified = 1
group by o.schema_id, p.object_id, i.name, i.type_desc, bd.page_type
order by page_count desc
票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/231008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档