如果我unique
对某个字段进行约束,是否还需要在该字段上创建索引以获得可扩展的插入时间?或者这是为我完成的(即使它使用的索引不可公开访问?)
具体来说,我正在使用 Apache Derby 进行原型设计,尽管我可能会在半不久的将来将其移至 MySQL。我也希望 SQL 标准中可能有一些关于这一点的内容。
我永远不需要按这个字段搜索,所以我宁愿不做一个无用的索引。但我宁愿有一个无用的索引,也不愿有一个O(n)
插入时间。
在 Derby(一种用 Java 编写的嵌入式数据库,主要用于测试或原型设计)中,有“freeze”和“unfreeze”命令可以在在线备份期间使用。“冻结”只会阻止所有数据库访问,直到调用“解冻”。这对于使用外部程序进行备份非常有用,如果外部程序比使用 Derby 的内部备份解决方案快得多,您可能会这样做。对于我的用例,我可以使用一些内置的文件系统实用程序几乎立即拍摄快照,因此它是一个恒定时间操作(不是O(length of DB files)
)。
我正在将一个已经超过 Derby 的应用程序迁移到 PostgreSQL,我想知道那里是否有任何类似的东西可以用来停顿所有连接。另外,我更想知道我的应用程序内部的序列化点是什么,这样我就不会陷入某种尴尬的状态,因此能够暂停/恢复所有其他访问对我来说真的很不错。
由于 PostgreSQL 有一个事务日志,我可以不“冻结”就创建快照,但是快照需要通过 PostgreSQL 的恢复机制运行才能使用它,否则存储在磁盘上的内容将与我拉取的内容相同普通文件系统上的插件。这种解决方案并不理想。
编辑我了解到这pg_start_backup()
是关闭的,但它不会导致传入事务阻塞,直到匹配调用pg_stop_backup()
,迫使我进行时间点恢复,以pg_start_backup()
返回从文件系统快照返回的事务 ID 。不必实际关闭 PostgreSQL 来获得它会很好(也许有一个伪关闭命令可以保持连接打开?)。
我正在通过 JDBC 使用 Apache Derby/JavaDB 数据库。之前我一直在使用 MySQL 并使用 phpMyAdmin 作为一个很好的数据库管理工具。
有没有好的桌面应用程序可以通过 JDBC 管理数据库?
derby ×4
postgresql ×2
constraint ×1
datatypes ×1
jdbc ×1
management ×1
mysql ×1
primary-key ×1