数据库管理员

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

6
相同(?)SQL Server 2005计算机;一个查询需要2秒,而另一个查询需要15分钟
环境: 我们有两台运行SQL Server 2005的32位Windows Server 2003 R2计算机。硬件配置是具有Xeon 5160 CPU,4GB RAM和13GB RAID0的相同服务器。未启用AWE和/ 3GB标志。 使用预定义的安装清单并排设置服务器,并且两台计算机上所有已安装的软件均相同。 我们知道要检查的每个SQL Server安装设置和补丁程序级别都是相同的。一个区别是,TEMPDB在快速计算机上为400MB,在慢速计算机上为1.2GB。但是,在两种情况下,我们都看不到任何TEMPDB分配。 问题: 有一个存储过程,其中一个运行2秒,而另一个运行15分钟。在接下来的15分钟内,几乎没有磁盘活动,没有内存使用情况发生变化,但是一个CPU核心始终固定为100%。 即使数据库从一个备份并还原到另一个数据库,此行为仍然存在。 由于这是一个存储过程,因此活动监视器和事件探查器不会向我们显示有关此高CPU活动在存储过程中何处发生的任何详细信息。 问题: 我们还要看什么? 跟进: 对于以下游标定义,慢速发生在FETCH NEXT语句中: DECLARE C CURSOR FOR SELECT X, Y FROM dbo.A WHERE X NOT IN (SELECT X FROM dbo.B) AND Z <=0 ... <snip> ... FETCH NEXT FROM …

3
快照复制保留
我已经在我的SQL Server 2008生产服务器上设置了快照复制,我只是注意到快照文件夹中存在可追溯到一年前的快照。如何更改这些快照的保留时间?我特别希望它可以将快照保留5天。 这是我正在查看的文件夹的屏幕截图:


2
突变表错误的原因和解决方案是什么?
我了解突变表错误是由设计缺陷或有问题的查询引起的。 最近将一个旧查询投入生产,该查询引发了变异表错误。我们的DBA解决了问题,但我们不知道如何解决。 究竟是什么导致表突变错误?我们的DBA如何解决该问题?
12 oracle  trigger  plsql 

2
主机“ host_name”在MySQL中被阻止的原因是什么?
当我使用不正确的密码连接到mysql服务器,并且测试计数超过时max_connect_errors,我发现Aborted_connects也出现了我测试的计数,但是主机仍未被阻止。 那么Aborted_connectsover the max_connect_errorshost_name是否被阻止?
12 mysql 

2
将7亿行更新为相同的值
我有一个数据仓库(oracle),在这里我需要为所有7亿行的列设置相同的值。 我没有管理员权限,也没有管理员权限,因此需要使用基本sql来完成,并且不会创建临时表。 更复杂的问题是,如果我尝试仅执行一个简单的更新(其中1 = 1),则它会耗尽重做空间。 我现在运行它的方式是这样的循环: loop update mytable set mycolumn = '1' where mycolumn is null and rownum < 50000; commit; end loop 但是我知道这可能很幼稚,必须有一个更快,更优雅的解决方案。

1
为测试数据生成大字符串
我最近试图在此处创建一些包含通用测试数据的大字符串。看来我以前知道一种乘字符串的方法。但是,我不再记得语法。 我正在寻找类似的东西: SELECT 'A' + ('a' * 1000) + 'ha!' 提出“ Aaaaaaaaaaaaaaaaaha!” (当然,要长得多。) 在T-SQL中这可能吗?(或者我在想其他语言吗?)另外,还有其他生成大字符串的技术吗?
12 sql-server  t-sql 

3
查询性能调优
当您完成编写查询/存储的proc /函数时,最快速获取一些性能参数的最有用的方法是什么?您是否运行查询并查看实际的执行计划?如果是这样,您要寻找什么?显然,表/索引扫描很成功,但是还有什么呢?

1
SQL Server中计算列的奇怪行为
在阅读我的70-433考试书的同时,我想到了一些我看不到的东西,但我相信它会起作用。该段内容如下: 该列还必须标记为PERSISTED,这意味着SQL Server会将计算列的表达式的结果物理存储在数据行中,而不是每次在查询中引用它时都对其进行计算。 由此我了解两件事: 阿非持续计算列计算每次它是在查询中引用时间 由于没有为计算列存储任何内容,因此我假设无法为该列创建索引。 阅读它之后,我认为这有点奇怪,因为我设法在上一个项目的非持久列上创建了索引。 如何为不持久的事物创建索引,从长远来看这是否有害? 为了证明这一点,我运行了以下SQL语句: CREATE TABLE testTable ( ID INT IDENTITY(1,1) PRIMARY KEY, telephone VARCHAR(14), c_areaCode AS (SUBSTRING(telephone,0,5)), cp_areaCode AS (SUBSTRING(telephone,0,5)) PERSISTED ) INSERT INTO testTable VALUES('09823 000000'); INSERT INTO testTable VALUES('09824 000000'); INSERT INTO testTable VALUES('09825 000000'); CREATE NONCLUSTERED INDEX IX_NotPersisted ON testTable(c_areaCode); CREATE …
12 sql-server 

2
SQL Server:是否有人使用大页面分配调整选项?
有没有人使用过使用的调整选项TF834 large page allocations。我只是在阅读有关它的MS文章,并且想知道是否有人使用过它并看到了性能提升。有什么需要注意的小窍门,陷阱吗? 该服务器是Windows 2008 64位,128 GB RAM,4个CPU 8核心超大型(总共64核心)SQL2005服务器。我希望调整服务器以更好地使用其规格,而不仅仅是使用当前已在其上完成的默认SQL安装。任何额外的提示都将受到欢迎。

2
正确的技术来存储用户事件数据
在数据库设计方面,我大多是自学成才。我提出这个问题是因为我已经确定了这种通用结构,但是想知道这是最有效还是“行业标准”的方法。 我设计的大多数数据库都有一个用户表,然后在另一个表中跟踪人员活动。我知道数据库的优点是具有这种效率,但是活动表将定期从每个定期使用它的用户中迅速收集许多事件,因此,在中等用户使用率的情况下,活动表将很快成为一个巨大的表。这是让它以这种方式发展的最佳实践吗?是表的层,还是根据日期,用户数量或其他原因拆分为不同的表? +--------------------+ +------------------------+ | UserData | | Activity | +-=------------------+ +------------------------+ | ID (auto uint) | <--1-to-many-+ | ID (auto uint) | | UserName (text) | +--> | UserID (uint) | | Email (text) | | Timestamp (time) | | additional info... | | Type (ID to elsewhere) | …

2
与索引相关的NOT逻辑的使用
根据Microsoft的有关数据库开发的书,考试70-433:Microsoft SQL Server 2008数据库开发: 前导通配符和NOT逻辑都不允许查询优化器使用索引来优化搜索。为了获得最佳性能,应避免使用NOT关键字和前导通配符。 所以我认为是NOT IN,NOT EXISTS等等 现在关于这个SO问题,我认为@GBN选择的解决方案将违反上面给出的声明。 显然,事实并非如此。 所以我的问题是:为什么?

3
视图中ORDER BY子句的替代方案是什么?
这个问题只需要在此站点中即可:) 据我了解,ORDER BY被禁止在视图中使用,因为使用此视图时可能会进行多个排序。 我知道有很多方法可以绕过此限制,例如TOP 99.999999 PERCENT,但是我想知道什么是最佳实践,而不是如何破解它。 因此,如果我想在数据库中创建供个人使用的视图,这意味着我想连接到数据库并仅查看固定和排序的数据,如果无法订购视图,该怎么办? 当前在我的SQL Server数据库中,我有关于该TOPhack的视图,并且我经常使用它们,但是感觉不对。



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.