我想编写一个检查 PostgreSQL 表中使用的排序规则的脚本,但谷歌搜索Postgresql detect collation
对我来说效果不佳,而且文档并没有让搜索变得容易。
谁能告诉我如何检查这个?
Stack Overflow Q & A Modify OWNER on all table 同时在 PostgreSQL 中描述了一些漂亮的方法来将表和其他对象更改为特定用户,并且它工作得很好,但是所有的建议似乎都忽略了我创建的函数。
是否有一种相当简单的方法来重置数据库中所有对象的所有者,包括函数?手工操作是非常不可取的。
使用PGAdmin III
I 可以右键单击数据库,导航到Variables
选项卡,然后在数据库本身上放置一个变量名-值属性。有没有办法自定义这些?我看到了一个application_name
变量,但我想要一个application_version
变量。
问题与this one类似,但答案似乎没有回答这个问题。
我对聚集列存储表的理解(如果我错了,请纠正我)是每列都以某种物理排序的方式存储,这意味着每列已经有相当于聚集索引的内容。如果是这种情况,那么在表上添加更多索引就没有多大意义了……或者是吗?也许是一个综合指数?
我的想法是否正确?
我有一个安装程序,需要 plpgsql 在 PostgreSQL 8.4 数据库中安装存储过程。我需要确保安装了语言,否则应用程序将失败。我不想放弃语言并重新添加它,因为这可能会搞砸其他一些事情。
有没有办法“轻轻”安装语言?
CREATE LANGUAGE IF NOT EXISTS
似乎无效。
postgresql plpgsql functions postgresql-8.4 postgresql-extensions
这里有点令人头疼。
我有一个数据少于 1GB 的数据库,但有一个 40GB 的日志文件。事务日志每天备份,这个数据库没有很多活动;大约每周一次,它记录新的工资单信息,然后为报告目的反刍这些数据。数据库设置为自动收缩。
运行sp_spaceused @updateusage = true
产生以下信息:
database_name database_size unallocated space
PayrollImports 39412.06 MB 105.00 MB
reserved data index_size unused
321728 KB 278640 KB 42816 KB 272 KB
Run Code Online (Sandbox Code Playgroud)
运行DBCC shrinkfile (N'PayrollImports_log', 1 , notruncate)
产生以下结果:
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
19 2 4991088 3456 4991088 3456
Run Code Online (Sandbox Code Playgroud)
...之间的差异UsedPages
和EstimatedPages
被神秘,但我继续DBCC shrinkfile (N'PayrollImports_log', 1 , truncateonly)
,并得到:
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
19 2 4991088 3456 4991088 3456
Run Code Online (Sandbox Code Playgroud)
在这一点上没有任何改变。日志文件仍然是 40GB。所以我想,也许我有一些公开的交易。运行dbcc …
如果我在 PostgreSql 中声明一列serial
,它将按顺序自动递增。由于回滚等原因,最终结果可能不连续,但或多或少是有序的。
我有一个用户表,其中用户 ID 设置为serial
,因此从 1 开始递增...但我宁愿它们不是,因为这似乎要求某种序列号攻击。
是否有一种相对简单、相对高效的方法可以在 PostgreSQL 中创建自动人工 ID,使 ID 随机间隔开,并且您不应该期望 ID 987654321 位于 ID 987654320 后面?
postgresql ×5
ddl ×2
functions ×2
sql-server ×2
collation ×1
columnstore ×1
dml ×1
maintenance ×1
metadata ×1
owner ×1
plpgsql ×1
primary-key ×1