小编a_h*_*ame的帖子

postgresql 的高可用性

我是 PostgreSQL 数据库的新手。最近我们的开发人员需要对我们的系统进行一些升级。

因此,我们计划实施一些方法来实现数据库故障转移。

根据我在此处阅读 postgresql wiki ,我们正在尝试实现热备用或热备用。所以我的问题是:

  1. 它们之间的主要区别是什么?
  2. 哪一个更好?
  3. 有没有其他方法可以考虑在我们的 Postgres 数据库中实现高可用性?

postgresql linux high-availability

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

查询 PostgreSQL 9 中分组连续行的总和

我有关于在不同国家旅行的人的数据,如下所示:

country | begintimestamp      | distance    

Germany | 2015-01-01 00:00:00 | 100
Germany | 2015-01-01 01:12:13 | 30
France  | 2015-01-01 02:13:14 | 40
France  | 2015-01-01 03:14:15 | 20
Spain   | 2015-01-01 04:15:16 | 10
France  | 2015-01-01 05:16:17 | 30
France  | 2015-01-01 05:17:18 | 5
Germany | 2015-01-01 06:18:19 | 3
Run Code Online (Sandbox Code Playgroud)

我需要的是能够收到这样的结果 -distance与最早的连续行相加begintimestamp

country | begintimestamp      | distance

Germany | 2015-01-01 00:00:00 | 130  // 100+30, the distance of two first rows summed. …
Run Code Online (Sandbox Code Playgroud)

postgresql window-functions

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

组角色和登录角色有什么区别?

看起来对于单个用户,我应该创建一个登录角色而不是相应的组角色,因为我无法直接为登录角色分配权限。这是真的吗?这种分离的目的是什么?

此外,据我所知,只能使用login role进行身份验证。那么组角色中密码字段的目的是什么?或者可以作为组角色进行身份验证?那么为什么有人需要登录角色呢?

看起来我也可以在 pg_hba 中设置登录和组角色。

postgresql security

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

SQL Server 中 LOB 数据的慢速 DELETE

我有一个用于记录的表和一个用于清除DELETE 性能非常慢的旧数据的存储过程,这超出了我的理解。我正在寻找如何修改表或 DELETE 语句以在 LOB 数据上表现得相当好。或者,如果微软确认了这个问题——比如“我们已经用 SQL 服务器版本 x 解决了这个问题”,或者甚至“我们看到这性能很差,但它不是优先事项”——这也可以.

这是在 Microsoft SQL Server 2012 (SP3) 上运行的。下面基本上是我的实际表格和代码,只是稍微简化了:

CREATE TABLE [LOG_VALUE](
 [ID] [int] IDENTITY(1,1) NOT NULL,
 [VALUE] [varchar](max) NOT NULL,
 [CHECKSUM] [int] NOT NULL,
 [VALUE_LEN] [int] NOT NULL,
 CONSTRAINT [PK_LOG_REQUEST] PRIMARY KEY CLUSTERED ([ID] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

有问题的删除是通过以下方式完成的:

WHILE (@@ROWCOUNT > 0)
  DELETE TOP (100) [LOG_VALUE]
  OUTPUT DELETED.[VALUE_LEN] INTO @DELETED_ROWS
  WHERE [ID] IN (SELECT [ID] FROM @DELETE_IDS);
Run Code Online (Sandbox Code Playgroud)

基本的存储过程流程是:

  1. 删除引用要清除的行的值
  2. 从上述日志表中不存在的 LOB 表中选择 [ID] 值,放入表变量 @DELETE_IDS
  3. 一次删除前 …

performance sql-server delete sql-server-2012 blob

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

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

选择代码块的快捷方式/片段

我在 Windows 10 上使用 SQL Server Management Studio 2016。我厌倦了使用 shift/ctrl+up/down/right/left 键来选择我想要运行的代码。我想知道是否有快捷方式/片段来选择由空行与其他代码分隔的代码块?

这是一个代码示例:

select *
from tab1

select *
from tab2

select *
from tab3
Run Code Online (Sandbox Code Playgroud)

说,我的光标在中间块内,选择中间块的最佳方法是什么?

ssms

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

基数与现实相去甚远

我有一张表,其中计划的基数似乎太高了——尽管更新了统计数据,甚至尝试了 Oracle 11gR2 的动态采样。

select count(*) 
from table1 
where col1 = 123 
and col2 = '1';
Run Code Online (Sandbox Code Playgroud)

col1 的一个值的估计基数大约为 29k,当它返回的实际行数为 637 时。对于另一个值,当实际行数为 67k 时,它的计划基数为 460k。一般来说,这会导致它选择非常糟糕的计划。

我试过更新统计信息:

exec DBMS_STATS.gather_table_stats (ownname => 'ME', tabname =>'table1');
Run Code Online (Sandbox Code Playgroud)

或者

exec DBMS_STATS.gather_table_stats (ownname => 'ME', tabname =>'table1',estimate_percent =>100);
Run Code Online (Sandbox Code Playgroud)

我已经尝试了 dynamic_samping (1-10) 的各种值,但没有任何改变它显着:

select /*+ dynamic_sampling(t1 10) */ count(*) 
from table1 t1 
where col1 = 123 
and col2 = '1';
Run Code Online (Sandbox Code Playgroud)

dyanmic_sampling 会改变,但它仍然关闭近 50-100 倍。

我怎样才能得到更好的估计?

oracle oracle-11g-r2

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

PostgreSQL:错误:无法在只读事务中执行 CREATE DATABASE

我安装了 PostgreSQL 及其 GUI,pgAdmin III。
安装程序已经有一个默认的数据库 postgres。

当我尝试创建新表或数据库时,显示错误:

错误:无法在只读事务中执行 CREATE DATABASE

我取消注释default_transaction_read_only = offpostgresql.conf 中的行并执行命令,pg_ctl start -D /home/jaison/progresData -Z datanode -l logfile但它仍然显示相同的错误。

请帮我解决这个问题。

postgresql

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

SQL Server 2014 SSIS 包在作为代理运行时忽略脚本任务

好的,这就是我要做的。SSIS 包,用于从我们的生产系统查询数据并将它们放入 CSV。有一个将它们上传到第三方的 VB 脚本任务。需要一个带有身份验证的多帖子 HTTP 帖子以及在第 3 方的标头中发送的几个特定字段,因此必须执行自定义 VB 脚本而不是使用 Web 目标。

我有一个 ForEach 循环,通过脚本上传每个文件,然后删除它。在 BIDS 中效果很好。但是当我将它上传到 SSIS 包存储时,上传部分不起作用。但不会抛出任何错误,因为文件仍然被删除。

控制流

查询部分工作,吐出 CSV。脚本任务除了删除文件之外什么都不做。

投入各种 SSIS 登录包和脚本。将“Hello World”日志扔到脚本的第一行,它永远不会被触发。

我所做的:

创建具有完全访问权限的代理,将其链接到新的 Creds 和 SQL 登录名。没有。使 SQL 登录对所有内容都拥有权限,什么都没有。作为新的代理执行帐户和服务帐户运行包。甚至更改了运行 SQL AGENT 服务的帐户(新 SQL 服务器,现在允许将其搞砸)。将包作为 32 位运行。认为它与被设置为“Copy Local = True”的 ScriptTask 引用有关,但并没有改变它。

在投标中工作正常,我在另一个客户的环境中使用了相同的脚本,并且在那里工作正常。我不知道还有什么可以尝试的。有任何想法吗?如果需要,我可以上传代码部分。

证书

SQL 帮助历史记录

sql-server ssis visual-studio ssis-2014

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

异步副本上的 SQL Server 2016 AlwaysOn DBCC CHECKDB

我们有一个 AlwaysOn 环境,其中包括我们 DR 站点中的一个副本,该副本设置为异步提交和可读辅助 = 否。

当我们在 SQL Server 2014 SP2 上运行时,我们能够针对 DR 副本上的数据库运行 DBCC CHECKDB。但是自从升级到 SQL Server 2016 后,我们就无法升级,而且我们的每周完整性作业因错误而失败。

'The target database is participating in an availability group and is currently not accessible for queries.
Either data movement is suspended or the availability replica is not enabled for read access. 
To allow read-only access to this and other databases in the availability group, enable read access to one or more secondary availability replicas in the group.  For more …
Run Code Online (Sandbox Code Playgroud)

sql-server availability-groups dbcc-checkdb sql-server-2016

7
推荐指数
2
解决办法
1766
查看次数