存储与数据库中数据相关的二进制文件的最佳位置是什么?你应该:
(1) 的优点是(除其他外)事务的原子性得以保留。代价是您可能会显着增加存储(和相关的流/备份)要求
(3) 的目标是在某种程度上保留原子性 - 如果您可以强制您正在写入的文件系统不允许更改或删除文件,并且始终具有正确的哈希作为文件名。这个想法是在允许引用哈希的插入/更新之前将文件写入文件系统 - 如果此事务在文件系统写入之后但在数据库 DML 之前失败,那很好,因为文件系统“假装”是所有的存储库可能的文件和哈希值 - 是否有一些文件没有被指向并不重要(如果你小心的话,你可以定期清理它们)
编辑:
看起来一些 RDBMS 以各自的方式涵盖了这一点 - 我很想知道其他人是如何做到的 - 特别是在 postgres 的解决方案中
我有一个进程可以抓取一堆记录(1000 条)并对它们进行操作,当我完成后,我需要将其中的大量记录标记为已处理。我可以用一个大的 ID 列表来表明这一点。我试图避免“循环更新”模式,所以我想找到一种更有效的方法来将这个 ID 包发送到 MS SQL Server 2008 存储过程中。
提案#1 - 表值参数。我可以定义一个只有一个 ID 字段的表类型,然后发送一个包含要更新的 ID 的表。
建议 #2 - XML 参数 (varchar) 和 OPENXML() 在 proc 主体中。
建议 #3 - 列表解析。如果可能的话,我宁愿避免这种情况,因为它看起来笨拙且容易出错。
其中有什么偏好,或者我错过了什么想法?
我似乎记得(在 Oracle 上) utteringselect count(*) from any_table和select count(any_non_null_column) from any_table.
如果有的话,这两个陈述之间有什么区别?
dba.se 版本和programmers.se 版本的问题“反对或支持将应用程序逻辑置于数据库层的论据是什么?”的答案和评论。在某些工作场所中,DBA 和程序员之间的鸿沟非常具有启发性。
DBA 可以采取哪些不同的方式来更好地与程序员合作解决此类问题?
我们应该吗:
我可以在桌面上安装 SQL Server Management Studio 以访问 SQL Server 2012 实例上的数据库吗?
如果是这样,我在哪里可以找到安装程序?Google 搜索仅返回“express”版本,而我正在寻找完整的 SQL Server Management Studio。
我了解代理/人工密钥的一个好处 - 它们不会改变,而且非常方便。无论它们是单场还是多场,都是如此——只要它们是“人造的”。
但是,有时将自动递增的整数字段作为每个表的主键似乎是一个策略问题。拥有这样一个单字段键是否总是最好的主意,为什么(或为什么不)?
需要明确的是,这个问题不是关于人工 vs 自然的——而是关于是否所有人工键都应该是单字段的
例如,有一个类似这样的表:
create table foo(bar int identity, chk char(1) check (chk in('Y', 'N')));
Run Code Online (Sandbox Code Playgroud)
标志是否实现为 a char(1)、 abit或其他无关紧要。我只是希望能够强制执行它只能在单行上设置的约束。
我目前正在通过批处理进行调试,该批处理执行大量 DML 语句,但不会立即执行提交。能够在事务未提交的情况下查看来自另一个会话的“待处理”更改会很好。这可能吗?
例子:
Insert into table myTable (col1, col2) values ("col1", "col2");
--Somehow view the pending transaction maybe by system view?....
...other DML statements....
commit;
Run Code Online (Sandbox Code Playgroud) 我希望能够生成bytea任意长度(<1Gb)的随机字段来填充测试数据。
这样做的最佳方法是什么?
我是 Oracle 数据库的新手,想为我们现有的数据库开发数据字典和 ER 图。您有任何提示、脚本和工具吗?
oracle ×3
sql-server ×2
aggregate ×1
blob ×1
bytea ×1
constraint ×1
count ×1
installation ×1
null ×1
oracle-10g ×1
postgresql ×1
primary-key ×1
random ×1
ssms ×1
testing ×1
transaction ×1