数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

1
CPU利用率低但信号等待时间高
我有一台具有16个CPU的服务器,该服务器配置max degree of parallelism为8且max worker threads设置为零。 在给定的一个小时内,我的信号等待时间为20%,但在此期间我的OS CPU利用率从未超过25%。有人可以解释为什么我的信号等待如此之高吗? 我的供应商拥有同类最佳的评分系统,希望我们的信号等待率不超过10%,否则我们会感到不高兴。我该如何解决此问题(不添加其他CPU)? 每个NUMA节点我们的CPU不超过8个,因此跟踪标志8048不适用。 最大实例等待量是CXPACKET(70%),然后是PREEMPTIVE_OS_PIPEOPS(20%) cost threshold for parallelism设置为50。我应该提高它吗?要什么? 这是专用于SQL Server的物理计算机(不是VM)。 我正在使用监视工具来识别最频繁运行的查询和过程。我要查看较高的CPU,较高的I / O或较高的持续时间吗?通常,我们的应用程序是I / O密集型的,因此我会调整高I / O。但是,由于问题是信号等待,我是否需要查看较高的CPU? 我希望避免将Max Vernon的建议降低MAXDOP到4,因为该应用程序会执行一些需要额外线程的仓库样式查询。

1
每秒非常高的交易
我们的生产服务器平均每秒运行4,000个事务。在过去几天中,平均数量已跃升至每秒175,000个事务。那不是打字错误,是每秒175K。 在查看交易的DMV时,我们无法将其直接链接到用户会话,但是我们看到了: SELECT NAME, COUNT(*) FROM sys.dm_tran_active_transactions GROUP BY NAME ORDER BY 2 DESC - +------------------------------+-------+ | Name | Count | +------------------------------+-------+ | WorkFileGroup_fake_worktable | 627 | | LobStorageProviderSession | 217 | | workfile | 171 | +------------------------------+-------+ 谁能阐明这些类型的交易?还是我在这里追鬼?

1
SELECT DISTINCT ON子查询使用效率低下的计划
我有一张桌子progresses(当前包含数十万条记录): Column | Type | Modifiers ---------------+-----------------------------+--------------------------------------------------------- id | integer | not null default nextval('progresses_id_seq'::regclass) lesson_id | integer | user_id | integer | created_at | timestamp without time zone | deleted_at | timestamp without time zone | Indexes: "progresses_pkey" PRIMARY KEY, btree (id) "index_progresses_on_deleted_at" btree (deleted_at) "index_progresses_on_lesson_id" btree (lesson_id) "index_progresses_on_user_id" …

1
如何在pyMongo中获得最小值
我有一个包含多个字段的集合,我想从一个字段中获取最小值。我知道获取最大值的命令: collection.find_one(sort=[("myfield", -1)])["myfield"] 但不是一个获得最低要求的人。有没有办法做到这一点?
8 mongodb  python 

1
大型DB的日志传送-日志呢?
我目前正在设置大型数据库(大约1.5TB)的日志传送,并且想知道如何处理日志文件。 就目前而言,我想执行以下步骤: 将数据库更改为完全恢复 在主数据库上进行完整备份(5-6小时) 将完整备份还原到辅助数据库(保留NORECOVERY) 在主数据库上进行DIFF备份 将DIFF备份还原到辅助(仍处于NORECOVERY) 使用“数据库已初始化”初始化日志传送 问题是,当我进行完整备份时,日志文件的填充速度将比备份可以完成的速度快。 我有什么选择可以防止日志文件填满?我能否仅在FULL备份期间照常进行日志备份,因为DIFF还原将覆盖该时间段内发生的所有事务?以前有人用这种大小的数据库做过此事吗?

1
有关SQL Server中的SGAM&GAM和IAM&PFS的几个问题
对于SQL Server的内部结构有几个问题。 假设我们在数据库中有一个表。 SGAM和GAM页面在单个GAM间隔(〜4GB)内跟踪共享和统一的扩展区,并帮助我们在分配页面/扩展区时找到合适的扩展区类型(最初从混合扩展区中分配前8页,而这些页面的位置是记录到IAM页,然后再从GAM扩展区(统一扩展区)记录此信息,并将此信息存储在下一个链接的IAM页中。 假设已分配了该表的页面,并且表的大小超过了8页,并且稍后,行被删除,留下了一些可重用的空间。SQL Server如何知道扩展区具有可用空间? 页面具有有关可用空间大小的信息,但是检查每个页面都非常耗时。SGAM和GAM页面中的一些内容不会告诉我们分配了扩展的内容或有一些空闲页面(整个页面都是免费的,而不是部分的)。 文件标题,SGAM,GAM和IAM页面位于文件的第一页中。实际上是什么数据结构指向它们?

1
为什么这两个HADR DMV报告不同的状态?
SQL Server 2012(11.0.5058.0)企业版 我们在2(HA)+1(DR)群集中有8个可用性组,而我们的监视DMV正在报告使我感到困惑的结果。为HA和DR配置了6个可用性组,仅为HA配置了1个可用性组,仅为DR配置了1个可用性组。 6个HA / DR可用性组中的每个具有“ SQLB”作为主副本,“ SQLA”作为辅助(同步)HA副本,而“ SQLC”作为辅助(异步)副本。 在两个次级上: SELECT dhags.group_id, dhags.synchronization_health_desc FROM sys.dm_hadr_availability_group_states dhags 报道说,所有可用性组复制同步健康是NOT_HEALTHY和 select replica_id,synchronization_health_desc from sys.dm_hadr_availability_replica_states 报告所有副本的同步运行状况为HEALTHY。 主副本报告所有运行状况为的可用性组和副本HEALTHY。 虽然我了解一个报告有关副本同步运行状况,而另一些报告有关AG同步运行状况,但对我来说,如果更精细的(AG)状态不健康,那将影响更广泛上下文(副本)的整体运行状况,这似乎是合乎逻辑的。我找不到描述如何确定每个级别的运行状况的MSDN文档。 为什么辅助服务器报告NOT_HEALTHY可用性组同步运行状况,而HEALTHY副本服务器同步运行状况,为什么这与主数据库的报告不同?

1
十进制或点数据类型,用于在MySQL中存储地理位置数据
我想将每个地址的地理位置存储在我的MySQL(Innodb)“ tblAddress”表中,我想我有2个选项: 1) 2 columns for Each Address: Latitude DECIMAL(10, 8), Longitude DECIMAL(11, 8) 2) One Column for Each Address: GeoLocation POINT 我的程序需要从当前位置(移动客户端)中查找所有落在1公里半径以内的地址。 同样,下面的命令对我不起作用,不确定我需要什么。 CREATE SPATIAL INDEX GeoLocation ON tblAddress (GeoLocation); 那么,这里建议使用什么方法来存储数据以便更快地进行计算和检索。请指教。

1
具有两种可能的所有者/父类型的实体的数据库架构?
我正在将PostgreSQL与Sequelize用作我的ORM。 我有一种类型User。第二种类型是Group,可以通过GroupMemberships表与任何数量的用户相关联。Users也可以拥有任意数量的Groups。 我的第三种类型Playlist可以属于UserOR或a group。为这种类型设计模式的最佳方法是什么,使其既可以具有所有者的一种,又可以具有所有者的任何一种? 我的第一遍创建了两个关联,但是一次只能填充一个。这可能可行,但似乎很麻烦,并且使查询变得困难。 附加信息 这是我对MDCCL通过评论发布的澄清请求的回复: (1)如果一个播放列表是由给定资集团,可以说,这个播放列表是关系到一个一对多的用户,只要他们是会员这样的小组,对不对? 我相信这在技术上是正确的,但是这种一对多的关联并不明确存在。 (2)因此,一个特定的播放列表是否可以同时由一对多的组拥有? 不,Playlist一对多不可能拥有一个Groups。 (3)一个特定的播放列表是否可能由一对多组拥有,同时又由不是该组成员的一对多用户拥有? 没有,因为在(2)一到,许多从Playlist到Group应该不存在。此外,如果a Playlist由a Group拥有,则不由a拥有User,反之亦然。一次仅一个所有者。 (4)用来唯一标识组,用户和播放列表的属性是什么? 它们每个都有代理主键(id)和自然键(尽管不是主键)。这些是slug用于Group和Playlist,username用于User。 (5)能在特定播放列表遭受所有者的变化? 尽管我不打算将其作为一项功能(至少最初是这样),但我认为这可能会发生。 (6)Group.Slug和Playlist.Slug属性的含义是什么?它们的值是否稳定到足以定义为主键,或者它们经常更改?这两个属性的值以及User.Username必须唯一,对吗? 这些slug是各自实体的唯一,小写,带连字符的版本title。例如,group带有title“测试组”的a将具有slug“测试组”。重复项将附加增量整数。每当他们title改变时,这都会改变。我相信这意味着他们不会做出出色的主键吗?是的,slugs并且usernames在各自的表中是唯一的。

2
如何在SQL Developer中导入export.sql?
在SQL Developer中,从顶部菜单中选择“工具”>“数据导出”。这将启动“数据导出”向导。 这就是出口。它创建export.sql文件。现在怎么做导入?我使用的是SqlDeveloper 3.20。 Trygin遵循了本教程,并创建了新的连接,但是找不到导入。工具->首选项->数据库->实用程序->导入方法,比什么?我试图运行脚本@C:\ locationOfExportFile \ export.sql 而且我越来越害怕 SQL错误:ORA-00942:表或视图不存在00942。00000-“表或视图不存在” *原因: *操作: 顺便说一句,我不知道我在做什么,我只想将该数据库添加到本地主机。其他计算机和我的计算机都具有Oracle 11g Express数据库。模式名称是相同的!


1
我想在不切换数据库的情况下向另一个数据库中的角色添加用户/登录
我在具有角色的“新”数据库中mynewdb具有角色/登录名"emailsender"。我已经编写了一个配置文件的脚本sp_send_dbmail,现在正在尝试编写脚本以将登录名添加到中DatabaseMailUserRole,msdb并且似乎在转圈。重要的是,我想在中运行更新脚本mynewdb。我知道我可以SSMS用来做到这一点。问题是: 如何编写脚本,将用户T-SQL从mynewdb数据库添加到角色中而无需切换到msdb?

2
从文本和图像迁移到varchar(max)和varbinary(max)
我有一个包含许多image和text列的SQL Server数据库,并且我正在研究将它们迁移到未弃用的对varbinary(max)等物和时可能引起的潜在问题varchar(max)。 除了更改应用程序代码外,我主要关心的是与此相关的潜在“陷阱”。例如,旧数据类型是否支持某些功能,而新数据类型不支持这些功能? 至少由于截断而导致的数据丢失似乎不是问题,因为新类型至少与旧类型一样大。

2
优化MySQL SELECT语句中TIMESTAMP字段的WHERE条件
我正在为一个跟踪使用时间的分析系统设计一个模式,并且需要查看特定日期范围内的总使用时间。 举一个简单的例子,这种查询类型将经常运行: select sum(diff_ms) from writetest_table where time_on > ("2015-07-13 15:11:56"); 在人口众多的表上,此查询通常需要7秒钟左右。它有约3500万行,运行在Amazon RDS(db.m3.xlarge)上的MySQL上的MyISAM。 摆脱WHERE子句可以使查询仅花费4秒,而添加第二个子句(time_off> XXX)则需要增加1.5秒,从而使查询时间达到8.5秒。 因为我知道通常会完成这些类型的查询,所以我想优化一些东西,使其更快,最好在5秒以下。 我从在time_on上添加索引开始,尽管它大大加快了WHERE“ =”查询,但对“>”查询没有影响。有没有一种方法可以创建可以加快WHERE“>”或“ <”查询的索引? 或者,如果还有其他建议可以查询此类查询的性能,请告诉我。 注意:我使用“ diff_ms”字段作为非规范化步骤(它等于time_off-time_on),这将聚合的性能提高了大约30%-40%。 我正在使用以下命令创建索引: ALTER TABLE writetest_table ADD INDEX time_on (time_on) USING BTREE; 在原始查询上运行“ explain”(使用“ time_on>”)时,time_on是“ possible_key”,而select_type是“ SIMPLE”。“额外”列显示“在何处使用”,“类型”为“全部”。添加索引后,该表显示“ time_on”是“ MUL”键类型,由于同一时间可以出现两次,因此这似乎是正确的。 这是表模式: CREATE TABLE `writetest_table` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, …

3
SQL Server TDE的替代方法
由于包含透明数据加密功能的SQL Server Enterprise Edition的成本很高,我在寻找替代产品,但只找到了两个选择: DbDefence NetLib加密器 谁能提供上述两种产品的使用经验的详细信息(性能影响,易用性等)? 还有其他替代SQL Server TDE的方法吗? 注意:我们当前正在使用SQL Server 2008 R2 Standard Edition。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.