小编Md *_*han的帖子

帮助理解 sys.dm_exec_cached_plans 和 dm_os_memory_clerks 之间的差异

在我们的 SQL Server 2014 实例之一上,根据 sys.dm_exec_cached_plans 用于缓存计划的内存量与根据 sys.dm_os_memory_clerks 查看 CACHESTORE_SQLCP 类型(我理解)的内存量之间存在奇怪的差异用于即席查询缓存计划)。

如果我们查询缓存计划如下:

select cp.cacheobjtype, cp.objtype, 
  sum(cast(cp.size_in_bytes as money))/1024/1024 as sizeMB
from sys.dm_exec_cached_plans as cp
group by cp.cacheobjtype, cp.objtype;
Run Code Online (Sandbox Code Playgroud)

那么我们似乎总共有大约 90 MB 用于缓存计划,只有 2MB 用于临时计划。缓存中也只有 300 个计划。

但是,如果我们查看 dm_os_memory_clerks 视图如下:

select mc.type, mc.pages_kb/1024 as pagesMB
from sys.dm_os_memory_clerks as mc
where mc.type = 'CACHESTORE_SQLCP'
Run Code Online (Sandbox Code Playgroud)

然后它报告大约使用了 12 GB。我们的实例有大约。其中有 300 GB 的 RAM。

我们想了解这种差异,并在理想情况下采取一些措施来确保计划缓存得到有效使用(即其中有 300 多个计划以提高目前非常差的缓存命中率)。能够考虑这个空间将是第一步。

关于差异可能是什么以及为什么这个空间不被用于缓存计划的任何想法?

sql-server dmv sql-server-2014

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

Postgres 刷新物化视图锁

我在 Postgres 中有一个物化视图,想知道刷新该视图时取出了哪些锁(如果有)。

CREATE TABLE people ( name VARCHAR(30) );
INSERT INTO people VALUES ('Alice'), ('Bob'), ('Cher');
CREATE MATERIALIZED VIEW test AS SELECT * FROM people;
REFRESH MATERIALIZED VIEW test;
Run Code Online (Sandbox Code Playgroud)

具体来说,我试图了解该REFRESH MATERIALIZED VIEW命令是否取出ACCESS EXCLUSIVE锁。

我尝试了一个解释但没有成功:

#> EXPLAIN REFRESH MATERIALIZED VIEW test;

                QUERY PLAN                 
-------------------------------------------
Utility statements have no plan structure
Run Code Online (Sandbox Code Playgroud)

postgresql materialized-view

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

如何通过 mongo Shell 查看 MongoDB 中特定数据库集合中的所有文档?

在 MongoDB shell 中,如何查看我正在使用的当前数据库的特定集合中的所有文档?

当我尝试查询时

> db.getCollection().find()
Run Code Online (Sandbox Code Playgroud)

要获得如下所述的错误

2017-10-14T00:57:34.363+0530 E QUERY    [thread1] Error: collection constructor called with undefined argument :
DB.prototype.getCollection@src/mongo/shell/db.js:34:16
@(shell):1:1
Run Code Online (Sandbox Code Playgroud)

我也在此处上传 mongo shell 命令提示符的屏幕截图

在此处输入图片说明

mongodb mongodb-3.4

7
推荐指数
2
解决办法
3万
查看次数

MongoDB:副本集 - 主与从

我们考虑从主从转移到MongoDBwith replica-set。现在我想知道MongoDB副本是否也像主-主农场一样设置,read-only slaves或者每个副本是否都mongos能够写入和同步其他副本?

这可能会减少单一错误源 ( master down) 并平衡write-load缩放与最佳性能(不仅对于读取,而且对于写入...)。

replication mongodb

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

查询处理器耗尽内部资源,无法生成查询计划

这在日志中每晚出现几次。如何找到导致问题的查询?SQL Server 2008 R2 Sp1。

sql-server-2008 sql-server

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

Mongo DB 中的写锁

我读过某个MongoDB持有数据库级写锁的地方,这是否意味着当有人更新任何collection其他人时不允许读取其他人collection或它是如何工作的。此外,当有人向数据库写入任何内容时,如何MongoDB获取写锁以及它的粒度是多少?

mongodb

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

如何在单用户模式下启动 Express SQL Server 实例?

我想在单用户模式下启动我的 SQL Server Express 实例来执行一些故障排除,例如恢复 Master 数据库。

我在 SQL Server 配置管理器中找不到“启动参数”选项。

我发现了一些博客,例如http://mssqlfun.com/2014/09/04/how-to-start-sql-server-in-single-user-mode/,但是我无法将-m参数添加到'启动参数'。

请参阅下面的我的 SQL Server 配置管理器的屏幕截图:

在此处输入图片说明

在此处输入图片说明

我的工作环境是:

  1. MS SQL Server 2012 Express 11.1.3000.0
  2. 视窗服务器 2012 R2
  3. SQL Server 2012 Express 安装在域中
  4. 操作系统在 VMware 下运行

有没有可能通过控制台连接的方法?任何想法或建议将不胜感激。

我可以从这个 T-SQL 中看到启动参数:'select * from sys.dm_server_registry;',但是我看不到 SQL Server 配置管理器中的设置。

sql-server sql-server-2012 troubleshooting startup

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

如何在 Linux 中以非 root 用户身份运行 MongoDB?

我可以将 MongoDB 启动为$sudo service mongod start. 当我开始时没有sudo它给我这个错误:

/etc/init.d/mongod: line 58: ulimit: open files: cannot modify limit: Operation not permitted
/etc/init.d/mongod: line 60: ulimit: max user processes: cannot modify limit: Operation not permitted
Starting mongod: runuser: may not be used by non-root users
Run Code Online (Sandbox Code Playgroud)

1)现在,我已将所有权更改为我能找到的所有 mongo 目录上的非 root 用户,即/var/lib/mongo,,,,var/log/mongodbdata/dbvar/run/mongodb

$sudo chown -R nonRootUser:nonRootUser [directory]
Run Code Online (Sandbox Code Playgroud)

2)我删除了mongod.lock文件

--repair3)我也跑过

它仍然给我同样的错误。

我也尝试过

$mongod --fork --logpath /var/log/mongodb.log

about to fork child process, waiting until server …
Run Code Online (Sandbox Code Playgroud)

mongodb linux amazon-ec2

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

如何让 mongodump --quiet 仍然报告错误?

我想运行,mongodump以便它只输出错误(以避免自动夜间备份脚本的无关日志监视报告)。

我已经尝试过,mongodump --quiet但是通过快速测试,这也抑制了错误消息(未经许可在根文件夹中运行它会抑制我没有得到的“错误创建目录”消息--quiet)。

我如何只得到错误输出mongodump

这是我在没有运行时遇到的错误,--quiet但我没有得到--quiet

2016-04-17T13:50:26.294-0400 失败:错误转储元数据:为元数据文件转储/234-watchdog 创建目录时出错:mkdir 转储:权限被拒绝

MongoDB 在 Ubuntu 上运行。我明白为什么会发生这个错误。我希望这样的错误不会被--quiet选项抑制。

mongodb

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

如何在 MongoDB 中索引属性对象?

我有以下示例文档:

{
    "_id" : ObjectId("556e177ca43da29e040041a7"),
    "user_id" : NumberLong(24),
    "request_datetime" : ISODate("2015-06-02T15:52:12.000-05:00"),
    "total_amount" : 102.62,
    "status" : NumberLong(1),
    "adfields" : {
        "27" : "413703562015060200132",
        "28" : "S003POS4",
        "29" : "HAYLEYS",
        "30" : "1"
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我需要索引“adfields”属性,但它不适用于“多键”索引类型,也不使用“单字段索引”。我尝试使用单个字段索引来索引adfields属性,但是当我查询adfields.27的特定值时,它不使用索引。我无法为adfields.27创建单个字段索引,因为这些数字是动态创建的。

您知道如何执行此操作吗?多谢。

index mongodb

5
推荐指数
1
解决办法
7140
查看次数