数据库管理员

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


3
索引VARCHAR列是一个好主意/方法吗?
我们正在使用PostgreSQL v8.2.3。 有涉及的表:EMPLOYEE和EMAILLIST。 Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6) Table 2: EMAILLIST (email) 2个表以这种方式连接,如果EMPLOYEE.EMAIL1或EMPLOYEE.EMAIL2没有匹配的条目,则将返回这些行。 SELECT employee.email1, employee.email2, e1.email IS NOT NULL AS email1_matched, e2.email IS NOT NULL AS email2_matched FROM employee LEFT JOIN emaillist e1 ON e1.email = employee.email1 LEFT JOIN emaillist e2 ON e2.email = employee.email2 …

5
在SQL Server中处理并发访问键表而没有死锁
我有一个表,该表被旧版应用程序用来替代IDENTITY其他各种表中的字段。 表格中的每一行都存储了中LastID名为的字段的最后使用ID IDName。 有时,存储的proc会陷入死锁-我相信我已经构建了适当的错误处理程序;但是我很想知道这种方法是否像我认为的那样起作用,或者我是否在这里树错了树。 我相当确定应该有一种访问该表的方法,而没有任何死锁。 数据库本身配置为READ_COMMITTED_SNAPSHOT = 1。 首先,这是表格: CREATE TABLE [dbo].[tblIDs]( [IDListID] [int] NOT NULL CONSTRAINT PK_tblIDs PRIMARY KEY CLUSTERED IDENTITY(1,1) , [IDName] [nvarchar](255) NULL, [LastID] [int] NULL, ); 以及该IDName字段上的非聚集索引: CREATE NONCLUSTERED INDEX [IX_tblIDs_IDName] ON [dbo].[tblIDs] ( [IDName] ASC ) WITH ( PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF …

14
PostgreSQL在本地运行,但是我无法连接。为什么?
最近将我的计算机从Mac OS X Lion(10.7.4)更新为Mountain Lion(10.8),我认为这使我的PostgreSQL安装感到厌烦。它最初是通过Homebrew安装的。我不是DBA,但希望有人可以告诉我如何解决此问题。 我无法连接(但在前山狮之前能够连接): $ psql -U rails -d myapp_development psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"? 但是Postgres仍然在运行: $ ps aux | grep postgres meltemi 2010 0.0 0.0 2444124 5292 ?? …

3
内联变量时,为什么SQL Server使用更好的执行计划?
我有一个要优化的SQL查询: DECLARE @Id UNIQUEIDENTIFIER = 'cec094e5-b312-4b13-997a-c91a8c662962' SELECT Id, MIN(SomeTimestamp), MAX(SomeInt) FROM dbo.MyTable WHERE Id = @Id AND SomeBit = 1 GROUP BY Id MyTable 有两个索引: CREATE NONCLUSTERED INDEX IX_MyTable_SomeTimestamp_Includes ON dbo.MyTable (SomeTimestamp ASC) INCLUDE(Id, SomeInt) CREATE NONCLUSTERED INDEX IX_MyTable_Id_SomeBit_Includes ON dbo.MyTable (Id, SomeBit) INCLUDE (TotallyUnrelatedTimestamp) 当我完全按照上面的描述执行查询时,SQL Server将扫描第一个索引,从而导致189,703逻辑读取和2-3秒的持续时间。 当我内联@Id变量并再次执行查询时,SQL Server将查找第二个索引,从而导致仅104次逻辑读取和0.001秒的持续时间(基本上是即时的)。 我需要变量,但是我希望SQL使用好的计划。作为一个临时解决方案,我在查询上添加了索引提示,查询基本上是即时的。但是,我尽量避免使用索引提示。我通常假设如果查询优化器无法完成其工作,那么我可以做一些事情(或停止做些事情)来帮助它,而无需明确告诉它该做什么。 …





6
将SqlClient默认设置为ARITHABORT ON
首先,第一件事:我将MS SQL Server 2008与兼容级别为80的数据库一起使用,并使用.Net的数据库进行连接System.Data.SqlClient.SqlConnection。 出于性能原因,我创建了索引视图。结果,需要使用对视图中引用的表进行更新ARITHABORT ON。但是,探查器显示SqlClient正在与进行连接ARITHABORT OFF,因此对这些表的更新失败。 是否有使SqlClient使用的中央配置设置ARITHABORT ON?我能找到的最好的方法是在每次打开连接时手动执行该操作,但是更新现有代码库来执行此操作将是一项相当大的任务,因此我渴望找到一种更好的方法。


9
Oracle DUAL表如何工作?
SQL> desc dual Name Null? Type ----------------------------------------- -------- ---------------------------- DUMMY VARCHAR2(1) SQL> select 4*5 from dual; 4*5 ---------- 20 SQL> 我觉得这很奇怪。如果双对中没有名为4 * 5的列,那么select语句如何工作? 另外,为什么在创建自己的双表时看不到相同的行为? SQL> create table dual2(dummy varchar2(1)); Table created. SQL> desc dual2 Name Null? Type ----------------------------------------- -------- ---------------------------- DUMMY VARCHAR2(1) SQL> select 4*5 from dual2; no rows selected …
32 oracle 


1
为什么执行语句的速度取决于网络连接?
看起来执行T-SQL的速度取决于网络连接到服务器的等待时间。我假设如果SQL Server没有什么要报告给客户端的信息,它将一直执行到完成为止,而测试则显示了另一个故事。 create procedure UselessLoop @I int as declare @D datetime = getdate() while @I > 0 set @I -= 1 print datediff(millisecond, @D, getdate()) exec UselessLoop 100000 Server Milliseconds local 53 nearby 63 faraway 660 exec UselessLoop 1000000 Server Milliseconds local 546 nearby 640 faraway 6183 使用SSMS在不同计算机上针对同一服务器执行测试。本地是从服务器执行的,附近是在同一个本地网络上,而遥远是从500公里外的另一个办公室(使用1千兆位光纤连接)执行的。 显然,SQL Server与客户端之间正在进行某种通信,直接取决于所执行语句的数量。 …
31 sql-server  t-sql 

8
从未知来源恢复备份的安全隐患?
场景:您已经获得了数据库备份,并被告知将其还原到服务器上(该服务器已经托管了其他数据库),但是没有提供有关备份内容或是否应该信任源的有用信息。 问题1:还原很可能是恶意的备份有哪些潜在影响? 问题2:如何保护服务器/其他数据库中的数据免受还原潜在恶意备份的影响?RESTORE VERIFYONLY似乎是一个很好的第一步。最终的答案可能是“将数据库还原到无法访问外部环境的沙箱VM中”,但让我们假设该选项不在桌面上。在这种情况下还应该做什么?

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.