我想真正的问题是:
如果我不关心脏读,将添加with(NOLOCK)提示到SELECT语句会影响性能:
例:
Select *
from aTable with (NOLOCK)
Run Code Online (Sandbox Code Playgroud) 我需要在一个1.2亿记录表中初始化一个值为-1的新字段.
Update table
set int_field = -1;
Run Code Online (Sandbox Code Playgroud)
我让它运行了5个小时才取消它.
我尝试运行它,事务级别设置为读取未提交的相同结果.
Recovery Model = Simple.
MS SQL Server 2005
Run Code Online (Sandbox Code Playgroud)
如何更快地完成这项工作?
据我所知,WITH RECOMPILE选项强制优化器重建存储过程的查询计划但是你希望什么时候发生?
关于何时使用WITH RECOMPILE选项以及何时不使用,有哪些经验法则?
将它放在每个sproc上都有什么有效的开销?
计算上一季度最后一天的最有效方法是什么?
示例:给定日期为11/19/2008,我想返回2008年9月30日.
平台是SQL Server
某些高度敏感的信息(付款信息,用户名,密码等)应该加密后才能保存到我的数据库中.
之后,必须解密该信息,以便从持久性中获取并在以后使用.
如果我使用AES256加密帐单地址,我仍然需要在持久性中存储AES256密钥/密码.
如果加密进入数据库的信息背后的重点是保护该信息,以防有人攻击我的数据库,并且我存储密钥以解密数据库中的相同信息,那么加密数据的重点是什么首先?
如果有人侵入我的数据库,他们将能够找到持久密钥并解密他们想要的任何加密数据.
我在这里错过了什么吗?
我犯了错误,运行应该对我的事实表(200M行)进行快速更新:
update dbo.primary_fact
set count_of_loan_obligors = o.n
from dbo.staging_fact f
-- notice that this is not the same table as the one in the update clause
inner join ##Obligor_Count o
on (f.time_dimension_id = o.time_dimension_id
and f.account_dimension_id = o.account_dimension_id)
Run Code Online (Sandbox Code Playgroud)
应该是:
from dbo.primary_fact f
Run Code Online (Sandbox Code Playgroud)
这样一个正确形成的更新(1天,87k账户)通常在一分钟或2分钟结束.运行12分钟后,我想知道这么长时间内发现了我的错误.
我取消了SQL Server Management Studio中的查询,据我所知,它会回滚所有可怕的(有人确认吗?)
但我更大的问题是:错误形成的查询有什么作用?
更新:取消操作最终完成,一小时39分钟后.DBA在杀戮上的速度太慢 - 同样如此.
正确形成的更新在8秒内完成.
第二次更新:在SSMS中成功取消订单后,原始(错误)更新中未设置任何值.我会解释这意味着任何挂起的更新都会被回滚.
在手动取消之前,在大约2分钟内运行的负载突然变为90分钟运行.
这是一个简单的阴影查询:
select fields
into shadow_table
from table
where date = '8/23/2011'
Run Code Online (Sandbox Code Playgroud)
date 它上面有一个非聚集索引.
如果我将查询更改为选择
top 300000 它在2秒内完成top 400000 它在3分钟内运行top 500000 我无聊等待并取消了它我们的服务器团队在运行时会显示很多自我阻止.
任何人都可以建议可能出现的瓶颈吗?
sql ×6
sql-server ×6
database ×1
date ×1
e-commerce ×1
encryption ×1
locking ×1
options ×1
performance ×1