小编Din*_*ina的帖子

分块删除活动表上的多行 - 无需锁定太长时间(PostgreSQL 9.3)

我是 postgres 的新手,

我在实时服务器上有一个 2000 万行的表 - 我需要删除大部分行但不是全部。我想这样做而不影响访问此表的其他读/写进程(非常频繁)。

我有一种方法可以一次删除大约 100-400K 行块。在每次删除之间,我想让查询休眠 - 以便其他操作可以有机会访问此表。

我有代码,但我相信这个版本,它在查询运行的整个时间(所有睡眠)都锁定表。我怎样才能在进程休眠时真正释放表?谢谢!!

到目前为止我的代码:

CREATE SEQUENCE tmp_sq increment by 1 minvalue 1 maxvalue 53 start with 1;

DO $$

DECLARE 
w_counter integer;

BEGIN
w_counter := (SELECT nextval('tmp_sq')); 

  while w_counter < 53 loop
    raise notice 'Value: %', w_counter ;

    w_counter := (SELECT nextval('tmp_sq')); 

-- this way of breaking up the delete into chunks works for my table because of dates.
    delete from table_a where date_part('week',my_date) = w_counter;

    raise notice ' …
Run Code Online (Sandbox Code Playgroud)

postgresql delete plpgsql

10
推荐指数
1
解决办法
8245
查看次数

将行从一个表移动到另一个表

作为存档过程的一部分,我正在将记录从一个数据库移动到另一个数据库。我想将行复制到目标表,然后从源表中删除相同的行。

我的问题是,在删除行之前检查第一次插入是否成功的最有效方法是什么。

我的想法是这样,但我觉得有更好的方法:

@num_records=select count(ID) from Source_Table where (criteria for eligible rows)

insert * into Destination_Table where (criteria for eligible rows)

if ((select count(ID) from Destination_Table where (criteria) )=@numrecords)

delete * from Source_Table where (criteria)
Run Code Online (Sandbox Code Playgroud)

将它与 RAISERROR 功能结合是否更好/可能?谢谢!

sql-server-2012

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

PostgreSQL 流与基于文件的复制(在服务器行为和配置方面)

我试图了解 PostgreSQL 复制的最佳用途及其工作原理,以便我可以在生产环境中进行故障排除。

我很难理解这 2 种复制类型在(1)配置(2)2 台服务器主/从在每种情况下如何执行方面的差异

PostgreSQL (9.2+) 上的复制本质上是 16MB 大小的 XLOG 文件(取决于创建每个文件的频率设置)在 Master 上创建并通过某种方法发送到 Slave。

我的设置(针对这个问题)

Postgresql.conf 在 Master
archive_command上的配置 = 'rsync -av %p postgres@[SlaveIP]:[wal_archive_folder]/%f'

在 Slave 上配置 Recovery.conf 以读取日志文件
restore_command = 'cp [wal_archive_folder]/%f \"%p\"'
primary_conninfo = 'host=[MasterIP] port=5432 user=postgres'

我的问题是此配置的哪一部分使这种“流式”复制与“日志传送”不同?我的主服务器配置为使用 rsync 将日志发送到从服务器(此日志是否传送?)我的从服务器配置为能够连接到 recovery.conf 中的主服务器(这是流式传输吗?)

问题的第二部分:发生了什么?我知道通过 WAL_sender 和 WAL_receiver 在 PostgreSQL 上还有另一个协议。但我不清楚这是否仅用于流式传输,如果是,那么在 Master 中如何使用 rsync?

:) 谢谢!!对不起,如果这是一个明显的问题。我一直在做一堆阅读博客/书籍,但很难理解。Postgres wiki 非常深入,需要很长时间才能通读(而且我有截止日期)

postgresql postgresql-9.3

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

与全新安装相比,使用 SQL 2012 升级的缺点是什么?

我目前有 SQL Server 2008 R2,我想将其升级到 SQL 2012。我可以卸载 SQL 2008 并安装 SQL Server 的新副本或运行升级。升级工作较少,但我想知道是否有缺点。

我已经尝试过一次升级。遇到问题并且很难同时删除 SQL 2008 和 SQL 2012,所以我可以重新开始。升级成功后,我看到在添加/删除程序中,SQL 2008 R2 和 SQL 2012 之后仍然存在。这可能会使未来的升级/卸载变得复杂。

除此之外,与全新安装相比,使用升级还有其他缺点吗?

sql-server installation upgrade sql-server-2012

7
推荐指数
1
解决办法
4782
查看次数

AdeptSQL Diff 的替代品(适用于 MS SQL Server 2012)

AdeptSQL Diff 似乎与 SQL Server 2012(此时)不兼容。它是我部署更改的首选工具。我意识到这是一个购物清单,但我希望 SE 不会介意。

我想知道什么是最好的选择,并想查询 DBA。

目前我正在评估 RedGate SQL 比较。它不包括数据比较(单独的产品),尽管它确实生成了很好的部署脚本。只是想要一些快速而轻松的东西来启动对生产服务器的架构更改。你有什么建议吗。谢谢!

sql-server-2012

7
推荐指数
1
解决办法
5834
查看次数

PGAdmin III 服务器状态错误:无法读取目录“pg_log”没有这样的文件或目录

在 Ubuntu 14.04 上运行 PostgreSQL 9.3,在 Windows 7 上运行 pgAdmin III 1.18.1。

我尝试过Tools->Server Status,但出现错误:

“无法读取目录“pg_log”没有这样的文件或目录”

我在网上没有看到任何答案。服务器主要设置为默认设置(用于日志记录)。我通过 pgAdmin 连接的用户是超级用户级别的帐户。

使用目的:监控将成为实时系统的内容。

postgresql pgadmin postgresql-9.3

7
推荐指数
1
解决办法
3980
查看次数

如何检测兼容性错误 - SQL Server 2012

我正在将数据库的兼容模式从 90 (SQL Server 2005) 更改为 110 (SQL 2012),我想知道在什么时候我会看到中断更改导致的错误(如果有的话)。

我运行了 Upgrade Advisor 2012,它发现了几个需要更新的存储过程。一个例子是:

“在 SQL Server 2005 或更高版本中,ORDER BY 子句中的列别名不能以表别名为前缀。”

但是,当我在 SQL 2012 中运行这个存储过程(没有做任何更改)时,它没有显示任何错误。此外,当我将数据库兼容性级别从 90 更改为 110 时,也没有错误。当我恢复数据库时也没有。

如果我没有在任何地方看到错误,我希望升级顾问能捕获所有内容。还有其他方法可以检查兼容性错误吗?

此外,即使升级顾问告诉我它会失败,这个存储过程怎么可能成功运行?谢谢 :)

sql-server-2008 sql-server-2012 compatibility-level

6
推荐指数
1
解决办法
4927
查看次数

我应该依靠数据库引擎优化顾问来创建索引吗?

我应该如何依赖 SQL Server 2012 数据库引擎优化顾问来创建索引和统计信息?我经常发现,它生成过于复杂的索引,(我认为)在索引维护方面比拥有这个索引的好处更昂贵。

如果我不能完全依赖数据库引擎优化顾问,是否有一种简单的方法?一本书或许一篇文章?

缺少的索引 DMV 并不是特别有用,因为我正在尝试为全新的表考虑索引。

sql-server sql-server-2012 database-tuning-advisor

6
推荐指数
2
解决办法
1600
查看次数

将所有文件重新定位到文件夹复选框不可用 sql server 2012

使用 SQL 2012 企业版

按照此处的说明恢复备份:http : //msdn.microsoft.com/en-us/library/ms186390.aspx#Restrictions

我需要能够重命名数据库,因为它是实例上的第二个副本(测试目的)。但我无法重命名它,也无法更改它将 MDF/LDF 文件恢复到的文件夹。

无论出于何种原因,“将所有文件重定位到文件夹”复选框都不可用。

从 SQL 2005 备份还原。

sql-server restore sql-server-2012

4
推荐指数
1
解决办法
4761
查看次数

数据库上的 TDE 加密使备份文件的大小增加了三倍

启用 TDE 加密后,我的数据库备份文件 .bak 比以前大 3 倍。有没有办法改善这种情况?这是因为压缩对加密文件的效率不高吗?

sql-server backup transparent-data-encryption

4
推荐指数
1
解决办法
1610
查看次数

Postgres 9.3 安装中缺少 pg_ctl 包

我已经使用“apt-get install postgresql”在 ubuntu 14.04 上安装了 postgresql 9.3。

一切都很顺利,直到我发现我无法访问“pg_ctl”命令。安装 postgres-xc 实际上会破坏 postgresql 服务器。包链接失效。我无法重新安装并且不得不恢复我的 VM 并在没有 pg_ctl 的情况下继续工作。

我的问题是,要访问这个包,我应该从头开始还是卸载并重新安装 postgresql?我应该首先安装什么?或者,我的路径有问题吗?

(我是 postgresql 的新手,出于工作目的已经投入其中)

postgresql postgresql-9.3

3
推荐指数
1
解决办法
1万
查看次数

如何让标识列在 SQL Server 2012 上向前跳(比如 1000)

我正在使用 SQL Server 2012 并且我想保留我预先存在的数据但导致 ID(身份)列跳过 2000 行。

为什么会这样?我有一个场景,我可能会在备用服务器上发生事务,我需要将其复制到当前服务器。我希望 ID 匹配。因此,我不希望此服务器上的任何新事务与我的备用服务器具有相同的 ID。

希望这是有道理的!!谢谢

sql-server t-sql sql-server-2012

3
推荐指数
1
解决办法
1828
查看次数