小编jco*_*and的帖子

删除和vacuum的磁盘文件效果

我有一个非常频繁更新的表,其中包含 2.4 亿行(并且还在增长)。每三小时插入 150 万行,删除 150 万行。当我将集群移动到 SSD 时,批量插入(使用复制)时间从 22 分钟减少到 2.3 分钟。删除时间也得到改善。我计划每两小时或每小时进行一次批量更新。

虽然现在的性能(在 SSD 之后)与更频繁的更新兼容,但我读过一些关于 SSD 死亡的恐怖故事,因为 NAND 耐久性有限加上写放大。由于 SSD 价格昂贵,我想尽可能地将它的消亡推迟到未来。因此我的问题是:在删除和随后的真空中磁盘文件到底发生了什么?我猜有两个磁盘写入,一个将行标记为已删除,另一个在清理时将其标记为可覆盖。如果不是删除和清空,而是在每次批量插入/删除时对表进行分区创建和删除表,我会尽量减少 SSD 的磨损吗?

postgresql delete storage partitioning vacuum

13
推荐指数
1
解决办法
666
查看次数

了解 MS SQL Server 加密和备份

所以我在聊天询问SQL Server 备份文件的安全性。

有人告诉我,如果攻击者可以访问未加密的 .bak 文件,他们就可以访问数据。

所以让我们看看这个场景:

OPEN SYMMETRIC KEY MySymetricKey DECRYPTION
BY CERTIFICATE MyCertificate
Run Code Online (Sandbox Code Playgroud)

注意 - 这里没有密码。

然后我们通过以下方式加密我们的表:

UPDATE tbl1
 SET namePAss = ENCRYPTBYKEY(KEY_GUID('MySymetricKey'),name)
GO
Run Code Online (Sandbox Code Playgroud)

现在假设黑客得到了我的bak文件。为了查看数据(在他自己的计算机和 sql-server 中),他所要做的就是:

SELECT  
       convert( NVARCHAR(max), decryptbykey(namePAss)) 
FROM tbl1
Run Code Online (Sandbox Code Playgroud)

他还能访问数据吗?

security sql-server

13
推荐指数
1
解决办法
1084
查看次数

SQL Server:仅用于系统表的文件组?

我们的企业标准之一是为用户表/索引使用单独的文件组/文件。这被设置为默认值,因此无需限定 CREATE TABLE 语句。

所以它看起来像这样

  • fileid 1 = 系统表,MDF
  • 文件 ID 2 = t-log = LDF
  • fileid 3 = 用户资料 = NDF

这里的任何人都可以帮助我理解为什么强制执行此操作的原始理由吗?


我会坦白说我认为这是巫毒教。上午错了......?

编辑:我知道如何使用文件组来分离索引/分区/存档,以及如何逐步恢复。这个问题是关于在同一卷上为系统表使用单独的文件组。

sql-server filegroups disk-structures

12
推荐指数
2
解决办法
1502
查看次数

如何将数据库/表实现为堆栈

我有一个状态机,它需要为不同的用户推送/弹出一些文件名。我传统上会使用堆栈作为数据结构的选择,但这需要使用数据库来完成,因为我没有办法在传入的 Web 请求之间保留数据结构。

我想知道使用数据库实现堆栈功能的好方法是什么?

我需要支持:

  • push(fileName, user) : 为用户推送一个文件名
  • pop(user) : 为用户弹出最顶层的文件名

编辑

我正在对一个想法进行原型设计,因此我将 sqlite3 与 python 一起使用。

谢谢!

database-design database-recommendation

11
推荐指数
2
解决办法
3154
查看次数

在 SQL 2005 存储过程中添加错误处理的最佳方法是什么?

什么是使存储过程足够健壮以使其可以很好地扩展并包含错误处理的好方法?

此外,在存储过程中处理多个错误场景并拥有一个智能反馈系统来向调用应用程序返回有意义的错误信息的最佳方法是什么?

sql-server-2005 best-practices stored-procedures

11
推荐指数
2
解决办法
3453
查看次数

如何修改 SSMS 中的用户界面语言?

如何在 SQL Server Management Studio 中修改用户界面语言?

例如,如果我用英语安装,但希望用日语查看(仅举一个可能的例子)。

我在非 [English-as-a-first-language] 环境中运行此环境,并且希望我的所有窗口都以我的自然语言阅读。(我特定的自然语言并不重要,是吗?)

sql-server ssms

10
推荐指数
2
解决办法
4万
查看次数

如何为 SQL Server 重写为 Oracle 编写的触发器?

如何为 SQL Server 重写最初为 Oracle 编写的触发器?

这是我的 Oracle 触发器代码:

CREATE OR REPLACE TRIGGER P000KUL_TEST
BEFORE
INSERT
ON P000KUL
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
SELECT TO_CHAR(SYSDATE, 'dd/mm/RRRR') INTO :NEW.SYSTEM_DATE FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'hh:mi') INTO :NEW.SYSTEM_TIME FROM DUAL;
END; 
Run Code Online (Sandbox Code Playgroud)

trigger sql-server-2008 oracle

9
推荐指数
1
解决办法
661
查看次数

NoSQL 数据库会导致偶尔的数据丢失吗?

我目前正在评估用于新项目的数据库,该项目需要插入和查询大量交易数据。我们的团队倾向于使用 Cassandra,但后来我读了这篇文章,似乎建议使用不符合 ACID 的数据库可能会导致偶尔的数据丢失:

http://www.dbms2.com/2010/09/21/acid-compatible-transaction-integrity/

我在网上找不到任何关于此的更多信息,也无法理解非 ACID 合规性如何意味着可能会发生数据丢失。任何人都可以透露一些信息吗?

nosql

9
推荐指数
3
解决办法
3635
查看次数

能否在 SQL Server 2008(或 R2)上禁用 Windows 身份验证登录?

所以我们可以使用 Windows 登录或混合模式,但是我们可以将 SQL Server 配置为仅使用内部登录并阻止所有 Windows 登录吗?

作为预防性(或反应性)过程添加所有潜在的 Windows 登录并将其设置为受限权限的唯一解决方案是什么?

sql-server-2008 security sql-server

8
推荐指数
2
解决办法
8440
查看次数

生成脚本以自动重命名默认约束

背景:我们的一些默认列约束是在没有明确名称的情况下生成的,因此我们得到了因服务器而异的有趣名称,例如: DF__User__TimeZoneIn__5C4D869D

我希望它们都可以使用一致的命名进行管理,DF_Users_TimeZoneInfo这样我们就可以确保未来的目标表存在适当的约束(比如在 RedGate 比较中,甚至只是在视觉上)

我有一个主要适用于我想要的脚本:

select 'sp_rename N''[' + s.name + '].[' + d.name + ']'', 
   N''[DF_' + t.name + '_' + c.name + ']'', ''OBJECT'';'
from sys.tables t
    join
    sys.default_constraints d
        on d.parent_object_id = t.object_id
    join
    sys.columns c
        on c.object_id = t.object_id
        and c.column_id = d.parent_column_id
    join sys.schemas s
        on t.schema_id = s.schema_id
WHERE d.NAME like 'DF[_][_]%'
Run Code Online (Sandbox Code Playgroud)

但这只是给了我一个结果集,而不是我实际上可以传递给 exec 或其他任何东西的东西。

我怎样才能做到这一点,以便我可以只执行这些sp_rename脚本,而不必求助于复制所有返回的元素并将它们粘贴到新的查询窗口中并再次运行它们?尝试尽可能多地保存击键,以便我可以在许多环境中纠正此问题。

在此处输入图片说明

sql-server dynamic-sql sql-server-2008-r2

8
推荐指数
1
解决办法
5309
查看次数