数据库管理员

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

4
当包裹在TVF中时,为什么此查询的速度大大降低?
我有一个相当复杂的查询,它仅需几秒钟即可运行,但是当包装到一个表值函数中时,它要慢得多。我实际上并没有完成它,但是它运行了十分钟而没有结束。唯一的变化是用日期参数替换了两个日期变量(用日期文字初始化): 七秒钟内运行 DECLARE @StartDate DATE = '2011-05-21' DECLARE @EndDate DATE = '2011-05-23' DECLARE @Data TABLE (...) INSERT INTO @Data(...) SELECT... SELECT * FROM @Data 至少跑十分钟 CREATE FUNCTION X (@StartDate DATE, @EndDate DATE) RETURNS TABLE AS RETURN SELECT ... SELECT * FROM X ('2011-05-21', '2011-05-23') 之前,我已经使用带有RETURNS @Data TABLE(...)子句的多语句TVF编写了该函数,但是将其替换为内联结构并没有进行明显的更改。TVF的长时间运行是实际SELECT * FROM X时间;实际上创建UDF只需几秒钟。 …

3
mysqldump与mysqlpump
我刚刚听说过mysqlpump-看起来它是与MySQL 5.7一起发布的,但是MySQL 5.7仍然包含mysqldump。它们都是备份程序,但是谁能总结出主要区别?是否存在其中其中一种可能效果更好的方案?mysqldump是否将被mysqlpump淘汰?

2
为什么:r SQLCMD命令在后期部署脚本中标记为错误?
我曾经使用过后期部署脚本工作过几次,并且总是直观地使用构建操作“ PostDeploy”,因为这就是事实。现在,我第一次尝试遵循脚本模板中的内置指令来使用":r somescript.sql"语法。 立即将这一行标记为错误: “ SQL80001':'旁边的语法错误” 我发现了将PDS设置为“无操作”的建议。这没有帮助,错误仍然存​​在。我在这里想念什么?

2
Mongo以管理员身份为任何数据库创建用户都会引发错误
我正在尝试创建一个具有访问所有数据库的权限的简单用户,并且可以执行任何操作。当我尝试执行createUser命令时,出现以下错误: db.createUser({ user: "mongoadmin" , pwd: "mongoadmin", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]}) 2015-08-20T17:09:42.300+0000 E QUERY Error: couldn't add user: No role named userAdminAnyDatabase@new_vehicles_catalog 仅当我启用身份验证配置并且需要它时,才会发生上述问题。 因此,如何为任何数据库创建具有管理员权限的用户。我想要它,因为我将mongo服务配置为使用身份验证连接。如果要执行数据转储,则必须使用此身份验证参数。 请任何帮助? 使用mongo版本3.0.5。 该服务位于Amazon Linux AMI 2015.03(HVM),SSD卷类型上-ami-1ecae776

2
为什么将SQL Server用户添加到“执行卷维护任务”中可以极大地提高数据库大小调整的速度?
如果我想用创建5GB数据库 CREATE DATABASE [test] CONTAINMENT = NONE ON PRIMARY ( NAME = N'test', FILENAME = N'E:\2012\test.mdf' , SIZE = 5529600KB , FILEGROWTH = 1024KB ) LOG ON ( NAME = N'test_log', FILENAME = N'E:\2012\test_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%) 我的SSD 需要1分钟。 但是当我将SQL Server用户添加到 Perform volume maintenance tasks …

1
解决仅通过索引视图相关的2个表的死锁
我遇到了陷入僵局的情况,我想我已经缩小了罪魁祸首的位置,但是我不确定该如何解决。 这是在运行SQL Server 2008 R2的生产环境中。 为了让您对情况略有简化: 我有3个表,定义如下: TABLE activity ( id, -- PK ... ) TABLE member_activity ( member_id, -- PK col 1 activity_id, -- PK col 2 ... ) TABLE follow ( id, -- PK follower_id, member_id, ... ) 该member_activity表具有定义为的复合主键member_id, activity_id,因为我只需要以这种方式在该表上查找数据。 我也有一个非聚集索引follow: CREATE NONCLUSTERED INDEX [IX_follow_member_id_includes] ON follow ( …

1
如何在没有timezome的情况下将unix时间转换为PostgreSQL的Timstamp?
我有一个在其时区设置为印度时区(即UTC +5:30)的服务器上运行的PostgreSQL数据库。 我在这样创建的表中有一些数据: CREATE TABLE "CLOUDDATA" ( "CD_Tm_Obs" timestamp without time zone, "CD_Avg_Cloud" double precision ) 我想查询数据并获取特定时间的值。我的输入将是Unix时间戳(即1970年1月1日的秒数) 我发现将unix时间转换为时间戳的唯一方法是: select to_timestamp(TRUNC(CAST(1395036000 AS bigint)))。但这会创建带有时区的时间戳。我的数据在中timestamp without time zone,因此没有任何结果。 如何在没有timezome的情况下将unix时间转换为PostgreSQL的Timstamp?

2
在SQL Server中,读锁如何工作?
假设我有以下长期运行的查询 UPDATE [Table1] SET [Col1] = 'some value' WHERE [Col2] -- some clause which selects thousands of rows 并假设上面的查询运行时执行了以下查询 SELECT * FROM [Table1] 在第一个查询完成之前,第一个查询是否会阻止第二个查询运行?如果是这样,则第一个查询是否阻止第二个查询在所有行上运行,或者仅在WHERE子句中涉及的行上运行? 编辑: 假设第二个查询是 SELECT [Col1], [Col2] FROM [Table1] WHERE [Col2] -- some clause whose matching elements overlap those from -- the clause in the first query and …

2
在功能/存储过程创建时禁用架构检查
我正在尝试自动化对SQL Server 2008 R2数据库执行更改的过程。我放置的过程会删除并重新创建我的存储过程和函数,以及运行脚本来更改表/列/数据。不幸的是,其中一个脚本需要首先放置其中一个功能。但是我不能先运行所有存储的proc / function更改,因为它首先依赖于从表/列/数据更改脚本中添加的列。 我想知道是否可以在不通过SQL Server验证函数/ SP定义中使用的列的情况下运行存储过程和函数?我尝试查找,但找不到条件或命令来启用此功能。

3
为什么Postgres UPDATE需要39个小时?
我有一个约210万行的Postgres表。我对其进行了以下更新: WITH stops AS ( SELECT id, rank() OVER (ORDER BY offense_timestamp, defendant_dl, offense_street_number, offense_street_name) AS stop FROM consistent.master WHERE citing_jurisdiction=1 ) UPDATE consistent.master SET arrest_id=stops.stop FROM stops WHERE master.id = stops.id; 该查询运行了39个小时。我在4(物理)核心i7 Q720笔记本电脑处理器上运行此程序,有足够的RAM,大多数时间没有其他运行。没有硬盘空间限制。该表最近已被清理,分析和重新索引。 在查询运行的整个过程中,至少在初始WITH完成后,CPU使用率通常较低,并且HDD的使用率为100%。HDD使用非常困难,以至于其他任何应用程序的运行速度都比正常运行慢得多。 笔记本电脑的电源设置为“ 高性能(Windows 7 x64)”。 这是说明: Update on master (cost=822243.22..1021456.89 rows=2060910 width=312) CTE stops -> WindowAgg …
17 postgresql 


3
是否可以限制Postgres服务器上的超时?
我在我的应用程序(客户端)中将连接和命令超时设置为10分钟。 比我的应用程序运行一个简单的查询: SELECT pg_sleep(65) 在某些服务器上,它工作正常,但其他服务器在60秒后关闭了连接。 这可能是某种限制超时并忽略我的客户端设置的PostgreSQL服务器配置吗?

3
MySQL InnoDB page_cleaner设置可能不是最佳的
在mysqld.log中看到此注释: [Note] InnoDB: page_cleaner: 1000ms intended loop took 15888ms. The settings might not be optimal. (flushed=200 and evicted=0, during the time.) 似乎在这里提到了这样的事情: MySQL实例停滞“正在执行SYNC索引” 我的问题是:如果在日志中看到此注释,应该采取什么措施(如果有)? MySQL和OS版本: mysql-community-server- 5.7.9 -1.el7.x86_64 centos-release-7-1.1503.el7.centos.2.8.x86_64 运行显示变量,例如“ innodb%”;如建议显示: innodb_page_cleaners | 1

2
两个会话可以创建具有相同名称的#temp表吗?
我正在创建一个临时表(#myTable)并使用一个游标。当并发用户通过我的应用程序访问游标时,这是否会产生问题?它可以让我创建具有相同名称的单独的临时表吗? 以下是示例代码: Open cursor; Fetch Next from cursor into @Variable_Temp_Table_Name; Create table #myTable(pk int) While @@Fetch_Status = 0 Begin Fetch Next from cursor into @Variable_Temp_Table_Name; End

1
操作员在执行溢出级别2的过程中使用tempdb溢出数据
我正在努力通过警告Operator usedtempdb 将查询计划上的排序操作的成本降至最低to spill data during execution with spill level 2 我发现有几个与泄漏级别为1的执行过程中的泄漏数据有关的帖子,但与级别2无关,而级别1似乎是由于过时的统计信息引起的,级别2呢?我找不到与关联的任何内容level 2。 我发现本文与排序警告有关非常有趣: 永不忽略SQL Server中的排序警告 我的SQL Server? Microsoft SQL Server 2014(SP2)(KB3171021)-12.0.5000.0(X64)2016年6月17日19:14:09版权所有(c)Windows NT 6.3(Build 9600:)上的Microsoft Corporation Enterprise Edition(64位)(系统管理程序) 我的硬件? 运行下面的查询以查找硬件: -来自SQL Server 2012的硬件信息 SELECT cpu_count AS [Logical CPU Count], hyperthread_ratio AS [Hyperthread Ratio], cpu_count/hyperthread_ratio AS [Physical CPU Count], physical_memory_kb/1024 AS …

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.